/**
 * Earnest Built — What We Do : service detail pages
 *
 * One reusable service-page system (.eb-svc) shared by all four pages, plus a
 * per-page signature block (.eb-svc--{slug}) that only that page owns. Ported
 * from the approved review comps in
 * scratch-deliver/service-page-comps/*.html. Reuses the design tokens
 * (tokens.css) and the shared .eb-display / .eb-eyebrow / .eb-btn* / .accent
 * classes; adds only what is service-specific. Loads after components.css.
 *
 * Each page renders from a single [eb_*] shortcode (one Divi Code module, one
 * .et_pb_section), so the Divi section/row/column/module chrome is neutralised
 * once here and every band controls its own full-bleed background + inner
 * container.
 *
 * Motion: reveal + hero line-drawing are gated on html.eb-anim (added pre-paint
 * in inc/enqueue.php) AND prefers-reduced-motion: no-preference — so with no JS
 * or reduced motion, everything is shown in its final state (no-flash, no-hide).
 */

/* ============================================================
   Divi chrome reset — full-bleed the single Code module
   ============================================================ */
.et_pb_section:has(.eb-svc) { padding: 0; background-color: transparent; }
.et_pb_section:has(.eb-svc) .et_pb_row { width: 100%; max-width: 100%; margin: 0; padding: 0; }
.et_pb_section:has(.eb-svc) .et_pb_column { width: 100% !important; margin: 0; padding: 0; }
.et_pb_section:has(.eb-svc) .et_pb_module { margin: 0; }

/* ============================================================
   .eb-svc base — local token aliases + shared scaffolding
   ============================================================ */
.eb-svc {
	/* comps authored against these three names; map to the theme's tokens
	   so the ported rules below need no find-and-replace. */
	--ease-craft: var(--ease-standard);
	--section-y: clamp(72px, 10vw, 128px);
	--shadow-overlay: 0 24px 64px rgba(23, 21, 20, .24);
	color: var(--text-primary);
	font-family: var(--font-body);
	font-size: var(--type-body);
	line-height: var(--body-line);
	background: var(--surface-page);
}
.eb-svc *, .eb-svc *::before, .eb-svc *::after { box-sizing: border-box; }
.eb-svc h1, .eb-svc h2, .eb-svc h3, .eb-svc p { margin: 0; }
.eb-svc .accent { color: var(--accent); }
.eb-svc__wrap { max-width: var(--container); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.eb-svc__rule { display: block; width: 32px; height: 2px; background: var(--accent); }

/* Section rhythm */
.eb-svc__band { padding: var(--section-y) var(--gutter); }
.eb-svc__band--tint { background: var(--surface-tint); }
.eb-svc__band--pine { background: var(--surface-pine); color: var(--text-inverse); }

/* Shared hero scaffolding (per-page grid overrides live in the --slug blocks) */
.eb-svc__hero { position: relative; overflow: hidden; background: var(--surface-page); }
.eb-svc__hero-in { max-width: var(--container); margin: 0 auto; }
.eb-svc__crumb { font-family: var(--font-body); font-size: var(--type-caption); letter-spacing: .12em; text-transform: uppercase; color: var(--text-tertiary); margin: 0 0 26px; }
.eb-svc__crumb a { text-decoration: none; color: var(--text-tertiary); }
.eb-svc__crumb a:hover { color: var(--accent); }
.eb-svc__hero .eb-eyebrow { margin: 0 0 18px; }
.eb-svc__title { font-size: clamp(40px, 4.4vw, 62px); margin: 0 0 28px; }
.eb-svc__lead { font-size: var(--type-lead); line-height: 1.5; color: var(--text-secondary); max-width: 44ch; margin: 0 0 36px; }
.eb-svc__grow { display: block; width: 96px; height: 2px; background: var(--accent); }

/* Drawing-sheet titleblock (shared) */
.eb-svc__block { border: 1px solid var(--border-strong); background: var(--surface-page); font-family: var(--font-body); }
.eb-svc__block div { padding: 8px 16px; border-bottom: 1px solid var(--border-subtle); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-secondary); white-space: nowrap; }
.eb-svc__block div:last-child { border-bottom: 0; }
.eb-svc__block b { color: var(--text-primary); font-weight: 700; letter-spacing: .05em; }
.eb-svc__block .eb-svc__sheet { color: var(--accent); font-weight: 600; }

/* Credentials strip (real facts only) */
.eb-svc__creds { border-top: var(--rule); border-bottom: var(--rule); background: var(--surface-page); }
.eb-svc__creds-in { max-width: var(--container); margin: 0 auto; display: flex; flex-wrap: wrap; align-items: center; gap: 10px clamp(20px, 3.5vw, 48px); padding: 20px var(--gutter); font-family: var(--font-body); font-size: 14px; letter-spacing: .01em; color: var(--text-tertiary); }
.eb-svc__creds-item b { color: var(--text-secondary); font-weight: 700; }

/* Pine statement band (honesty / philosophy / positioning) */
.eb-svc__statement { text-align: center; }
.eb-svc__statement-in { max-width: 820px; margin: 0 auto; }
.eb-svc__statement .eb-svc__rule { margin: 0 auto 30px; }
.eb-svc__statement-text { font-family: var(--font-display); font-size: var(--type-display-md); line-height: 1.04; letter-spacing: .01em; text-transform: uppercase; color: var(--text-inverse); margin: 0 0 26px; }
.eb-svc__statement-sub { font-size: var(--type-lead); line-height: 1.55; color: var(--text-inverse-secondary); max-width: 60ch; margin: 0 auto; }

/* Full-bleed cover image (lot-evaluation): edge-to-edge photo with the shared
   Ken Burns scroll-zoom (assets/js/scroll-zoom.js targets .eb-lot-cover__img).
   Neutralize the wrapping Divi section so the image bleeds to the viewport. */
.et_pb_section:has(.eb-lot-cover) { padding: 0; background-color: transparent; }
.et_pb_section:has(.eb-lot-cover) .et_pb_row { width: 100%; max-width: 100%; padding: 0; margin: 0; }
.et_pb_section:has(.eb-lot-cover) .et_pb_row .et_pb_column { width: 100%; margin: 0; }
.eb-lot-cover { position: relative; height: clamp(400px, 66vh, 760px); overflow: hidden; }
.eb-lot-cover__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 30%;
  transform: scale(1);
  transform-origin: center;
  will-change: transform;
  display: block;
}

/* Build-sequence gallery (pine band). Real jobsite photos, left to right in
   construction order; each frame falls back to a drafting-style FPO slip until
   its photo exists. */
.eb-svc__site-in { max-width: var(--container); margin: 0 auto; }
.eb-svc__site-head { text-align: center; max-width: 60ch; margin: 0 auto clamp(34px, 4.5vw, 56px); }
.eb-svc__site-head .eb-eyebrow { margin: 0 0 14px; }
.eb-svc__site-title { font-size: var(--type-display-md); line-height: 1.02; color: var(--text-inverse); margin: 0; }
.eb-svc__site-lead { font-size: var(--type-lead); line-height: 1.55; color: var(--text-inverse-secondary); max-width: 54ch; margin: 16px auto 0; }

.eb-svc__site-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 2vw, 26px); }

/* Two-up variant (before/after) — wider, landscape frames, centered. */
.eb-svc__site-grid--pair { grid-template-columns: repeat(2, 1fr); max-width: 980px; margin-inline: auto; gap: clamp(16px, 2.4vw, 32px); }
.eb-svc__site-grid--pair .eb-svc__shot-media { aspect-ratio: 4 / 5; }

.eb-svc__shot { margin: 0; }
.eb-svc__shot-media { position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: #1b271f; border: 1px solid rgba(250, 247, 241, .12); }
.eb-svc__shot-img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.eb-svc__shot:hover .eb-svc__shot-img { transform: scale(1.035); }

/* FPO placeholder — drafting-slip look, shown until a real photo is dropped in. */
.eb-svc__shot-ph { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 20px; text-align: center; }
.eb-svc__shot-ph::before { content: ""; position: absolute; inset: 12px; border: 1px dashed rgba(247, 146, 30, .38); }
.eb-svc__shot-ph-mark { font-family: var(--font-display); font-size: clamp(38px, 6vw, 60px); line-height: 1; color: rgba(247, 146, 30, .5); }
.eb-svc__shot-ph-note { font-family: var(--font-body); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--text-inverse-secondary); }

.eb-svc__shot-cap { display: flex; align-items: center; gap: 10px; margin-top: 14px; }
.eb-svc__shot-tick { flex: 0 0 auto; width: 18px; height: 2px; background: var(--accent); }
.eb-svc__shot-stage { font-family: var(--font-body); font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--text-inverse); }

@media (max-width: 720px) {
	.eb-svc__site-grid { grid-template-columns: 1fr; gap: 22px; max-width: 420px; margin-inline: auto; }
	.eb-svc__shot-media { aspect-ratio: 4 / 3; }
}

/* Pine close CTA */
.eb-svc__cta { text-align: center; }
/* This CTA is the last section on the service pages and flows straight into the
   dark footer, so it needs less bottom padding than a mid-page band — the footer
   supplies the separation. Trims the dark dead-space below the buttons. */
.eb-svc__cta { padding-bottom: clamp(48px, 6vw, 72px); }
/* The base .eb-svc__cta-lead margin-bottom (0,1,0) was being zeroed by a
   paragraph-margin reset, leaving the buttons jammed against the sub-heading.
   This 0,2,0 rule restores the gap. Placed BEFORE the .eb-svc--custom-homes
   override so that page keeps its own tuned value. */
.eb-svc__cta .eb-svc__cta-lead { margin-bottom: clamp(40px, 5vw, 56px); }
.eb-svc__cta-in { max-width: 640px; margin: 0 auto; }
.eb-svc__cta .eb-svc__rule { margin: 0 auto 22px; }
.eb-svc__cta-title { font-size: var(--type-display-md); line-height: 1.02; color: var(--text-inverse); margin: 0 0 18px; }
.eb-svc__cta-lead { font-size: var(--type-lead); color: var(--text-inverse-secondary); margin: 0 auto 34px; max-width: 46ch; }
.eb-svc__cta-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

/* Custom Homes close CTA: widen so the sub-heading sits on one line, and open
   up the gap between the sub-heading and the buttons. Scoped to this page. */
.eb-svc--custom-homes .eb-svc__cta-in { max-width: 900px; }
.eb-svc--custom-homes .eb-svc__cta-lead { max-width: none; margin-bottom: 48px; }

/* Project Management "Start a conversation" form section (light band). Reuses
   the shared .eb-field/.eb-field__control styling; fields are underline inputs. */
.eb-pm-form { max-width: 860px; margin: 0 auto; }
.eb-pm-form__head { text-align: center; margin: 0 0 clamp(36px, 5vw, 56px); }
.eb-pm-form__head .eb-svc__rule { margin: 0 auto 22px; }
.eb-pm-form__title { font-size: var(--type-display-md); line-height: 1.02; color: var(--text-primary); margin: 0; }
/* Page-scoped so the centered lead margin beats the paragraph-margin reset that
   was zeroing the `auto` side-margins (which left the sub-heading off-center). */
.eb-svc--project-management .eb-pm-form__lead { font-size: var(--type-lead); line-height: 1.5; color: var(--text-secondary); margin: 16px auto 0; max-width: 48ch; }
.eb-pm-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(20px, 3vw, 32px); }
.eb-pm-form__actions { display: flex; align-items: center; justify-content: center; gap: clamp(16px, 3vw, 28px); flex-wrap: wrap; margin-top: 12px; }
.eb-pm-form__phone { font-family: var(--font-body); font-size: 15px; color: var(--text-tertiary); text-decoration: underline; text-underline-offset: 3px; }
.eb-pm-form__phone:hover { color: var(--text-primary); }
@media (max-width: 639px) { .eb-pm-form__grid { grid-template-columns: 1fr; } }

/* Shared SVG line-work primitives (scoped so they never leak site-wide) */
.eb-svc svg { overflow: visible; }
.eb-svc .draw-label { font-family: var(--font-body); font-size: 11px; letter-spacing: .1em; fill: var(--text-tertiary); }

/* ============================================================
   Reveal + hero line-draw — no-JS / reduced-motion safe
   (mirrors the html.eb-anim gate used on the homepage)
   ============================================================ */
@media (prefers-reduced-motion: no-preference) {
	html.eb-anim .eb-svc__rv {
		transition: opacity 700ms var(--ease-standard) var(--reveal-delay, 0ms), transform 700ms var(--ease-standard) var(--reveal-delay, 0ms);
	}
	html.eb-anim .eb-svc__rv:not(.on) { opacity: 0; transform: translateY(24px); }

	/* hero grow rule draws in once */
	html.eb-anim .eb-svc__grow { width: 0; animation: eb-svc-grow 900ms var(--ease-standard) 600ms forwards; }

	/* hero line-drawing: elements carry inline --len; animate the stroke in */
	html.eb-anim .eb-svc__hero .eb-svc-draw {
		stroke-dasharray: var(--len);
		stroke-dashoffset: var(--len);
		animation: eb-svc-draw 1500ms var(--ease-standard) 400ms forwards;
	}
}
@keyframes eb-svc-grow { to { width: 96px; } }
@keyframes eb-svc-draw { to { stroke-dashoffset: 0; } }

/* ============================================================
   1 — LOT EVALUATION : contour survey + "the read" grid
   ============================================================ */
.eb-svc--lot-evaluation .eb-svc__hero-grid { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 47ch) 1fr; gap: clamp(24px, 4vw, 56px); align-items: center; padding: clamp(56px, 8vw, 104px) var(--gutter) clamp(72px, 9vw, 120px); position: relative; z-index: 2; }
.eb-svc--lot-evaluation .eb-svc__hero-text { position: relative; z-index: 3; }
.eb-svc--lot-evaluation .eb-svc__title { font-size: clamp(40px, 4.4vw, 62px); max-width: 20ch; }
.eb-svc--lot-evaluation .eb-svc__lead { max-width: 46ch; }
.eb-svc--lot-evaluation .eb-svc__draw { position: relative; min-height: clamp(300px, 32vw, 440px); }
.eb-svc--lot-evaluation .eb-svc__draw svg { position: absolute; top: 50%; left: -2%; transform: translateY(-50%); width: min(54vw, 720px); height: auto; }
.eb-svc--lot-evaluation .eb-svc__draw path, .eb-svc--lot-evaluation .eb-svc__draw rect, .eb-svc--lot-evaluation .eb-svc__draw line { fill: none; }
.eb-svc--lot-evaluation .c-major { stroke: rgba(23, 21, 20, .5); stroke-width: 1.35; vector-effect: non-scaling-stroke; }
.eb-svc--lot-evaluation .c-minor { stroke: rgba(23, 21, 20, .2); stroke-width: 1; vector-effect: non-scaling-stroke; }
.eb-svc--lot-evaluation .c-dash { stroke: var(--text-tertiary); stroke-width: 1.1; stroke-dasharray: 4 6; vector-effect: non-scaling-stroke; }
.eb-svc--lot-evaluation .c-pad { stroke: rgba(23, 21, 20, .55); stroke-width: 1.2; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; }
.eb-svc--lot-evaluation .mark-bm { fill: var(--accent); }
.eb-svc--lot-evaluation .mark-ring { stroke: var(--accent); stroke-width: 1.5; fill: none; }
.eb-svc--lot-evaluation .draw-label--el { font-size: 10px; letter-spacing: .06em; }
.eb-svc--lot-evaluation .draw-label--bm { fill: var(--accent); letter-spacing: .14em; font-weight: 600; }
.eb-svc--lot-evaluation .eb-svc__block { position: absolute; right: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter))); bottom: clamp(22px, 3vw, 40px); z-index: 3; }
@media (max-width: 900px) {
	.eb-svc--lot-evaluation .eb-svc__hero-grid { grid-template-columns: 1fr; }
	.eb-svc--lot-evaluation .eb-svc__draw { min-height: 300px; margin-top: 6px; }
	.eb-svc--lot-evaluation .eb-svc__draw svg { position: relative; top: auto; left: 50%; transform: translateX(-50%); width: min(96%, 520px); }
	.eb-svc--lot-evaluation .eb-svc__block { position: static; display: inline-block; margin-top: 26px; }
}
@media (max-width: 560px) { .eb-svc--lot-evaluation .eb-svc__block { display: none; } }
/* the read */
.eb-svc__read-head { max-width: var(--container); margin: 0 auto clamp(40px, 5vw, 64px); }
.eb-svc__read-title { font-size: var(--type-display-md); line-height: 1.02; max-width: 18ch; margin: 14px 0 0; }
.eb-svc__read-list { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; border-top: var(--rule); }
.eb-svc__read-row { display: block; padding: 36px clamp(28px, 3.4vw, 52px); border-bottom: var(--rule); }
.eb-svc__read-row:nth-child(odd) { padding-left: 0; }
.eb-svc__read-row:nth-child(even) { border-left: var(--rule); }
.eb-svc__read-glyph { display: block; width: 56px; height: 56px; color: var(--accent); margin: 0 0 22px; }
.eb-svc__read-glyph svg { width: 100%; height: 100%; display: block; }
.eb-svc__read-name { display: block; font-family: var(--font-body); font-weight: 700; font-size: 19px; color: var(--text-primary); letter-spacing: .005em; margin: 0 0 8px; }
.eb-svc__read-desc { display: block; color: var(--text-secondary); max-width: 44ch; }
@media (max-width: 720px) {
	.eb-svc__read-list { grid-template-columns: 1fr; }
	.eb-svc__read-row { padding-left: 0; padding-right: 0; border-left: 0; }
}
/* two ways in */
.eb-svc__two-in { max-width: var(--container); margin: 0 auto; }
.eb-svc__two-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: var(--rule); }
.eb-svc__two-col { padding: 44px 48px 44px 0; border-bottom: var(--rule); }
.eb-svc__two-col + .eb-svc__two-col { padding-left: 48px; border-left: var(--rule); }
.eb-svc__two-label { font-family: var(--font-body); font-size: var(--type-caption); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--text-tertiary); margin: 0 0 16px; }
.eb-svc__two-title { font-family: var(--font-display); font-size: 30px; line-height: .98; text-transform: uppercase; letter-spacing: .01em; margin: 0 0 16px; }
.eb-svc__two-body { color: var(--text-secondary); max-width: 42ch; }
@media (max-width: 720px) {
	.eb-svc__two-grid { grid-template-columns: 1fr; }
	.eb-svc__two-col { padding: 34px 0; }
	.eb-svc__two-col + .eb-svc__two-col { padding-left: 0; border-left: 0; }
}

/* ============================================================
   2 — CUSTOM HOMES : front elevation (bottom) + process timeline
   ============================================================ */
.eb-svc--custom-homes .eb-svc__hero { min-height: clamp(600px, 76vh, 800px); display: flex; flex-direction: column; }
.eb-svc--custom-homes .eb-svc__hero-grid { max-width: var(--container); margin: 0 auto; width: 100%; padding: clamp(56px, 8vw, 104px) var(--gutter) 0; position: relative; z-index: 3; }
.eb-svc--custom-homes .eb-svc__hero-text { position: relative; max-width: 640px; }
.eb-svc--custom-homes .eb-svc__title { max-width: 20ch; text-wrap: balance; }
.eb-svc--custom-homes .eb-svc__draw { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; display: flex; justify-content: center; pointer-events: none; }
.eb-svc--custom-homes .eb-svc__draw svg { width: min(var(--container), 100%); height: auto; padding: 0 var(--gutter); }
.eb-svc--custom-homes .eb-svc__draw path, .eb-svc--custom-homes .eb-svc__draw rect, .eb-svc--custom-homes .eb-svc__draw line, .eb-svc--custom-homes .eb-svc__draw polyline { fill: none; }
.eb-svc--custom-homes .c-major { stroke: rgba(23, 21, 20, .5); stroke-width: 1.35; vector-effect: non-scaling-stroke; }
.eb-svc--custom-homes .c-minor { stroke: rgba(23, 21, 20, .22); stroke-width: 1; vector-effect: non-scaling-stroke; }
.eb-svc--custom-homes .c-dash { stroke: var(--text-tertiary); stroke-width: 1.1; stroke-dasharray: 4 6; vector-effect: non-scaling-stroke; }
.eb-svc--custom-homes .c-fill-glass { fill: rgba(23, 21, 20, .035); }
.eb-svc--custom-homes .mark-pitch { stroke: var(--accent); stroke-width: 1.5; vector-effect: non-scaling-stroke; fill: none; }
.eb-svc--custom-homes .draw-label--dim { font-size: 10px; letter-spacing: .06em; }
.eb-svc--custom-homes .draw-label--pitch { fill: var(--accent); letter-spacing: .08em; font-weight: 600; font-size: 11px; }
.eb-svc--custom-homes .eb-svc__block { position: absolute; right: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter))); bottom: clamp(22px, 3vw, 40px); z-index: 4; }
@media (max-width: 900px) {
	.eb-svc--custom-homes .eb-svc__hero { min-height: 0; }
	.eb-svc--custom-homes .eb-svc__hero-grid { padding-bottom: 8px; }
	.eb-svc--custom-homes .eb-svc__draw { position: relative; margin-top: 22px; }
	.eb-svc--custom-homes .eb-svc__draw svg { width: 100%; }
	.eb-svc--custom-homes .eb-svc__block { position: static; display: inline-block; margin: 20px var(--gutter) 0; }
}
@media (max-width: 560px) { .eb-svc--custom-homes .eb-svc__block { display: none; } }
/* process timeline */
.eb-svc__flow-head { max-width: var(--container); margin: 0 auto clamp(40px, 5vw, 64px); }
.eb-svc__flow-title { font-size: var(--type-display-md); line-height: 1.02; max-width: 16ch; margin: 14px 0 0; }
.eb-svc__flow-list { max-width: 920px; margin: 0 auto; }
.eb-svc__flow-row { display: grid; grid-template-columns: 64px 1fr; gap: clamp(20px, 3vw, 40px); position: relative; padding-bottom: clamp(30px, 4vw, 46px); }
.eb-svc__flow-row:last-child { padding-bottom: 0; }
.eb-svc__flow-row::before { content: ""; position: absolute; left: 31px; top: 6px; bottom: -6px; width: 2px; background: var(--accent); opacity: .35; }
.eb-svc__flow-row:last-child::before { display: none; }
.eb-svc__flow-mark { position: relative; z-index: 2; width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background: var(--surface-tint); border: 2px solid var(--accent); border-radius: 50%; font-family: var(--font-display); font-size: 26px; line-height: 1; color: var(--text-primary); letter-spacing: .02em; }
.eb-svc__flow-body { padding-top: 6px; }
.eb-svc__flow-name { font-family: var(--font-body); font-weight: 700; font-size: 20px; color: var(--text-primary); letter-spacing: .005em; margin: 0 0 8px; }
.eb-svc__flow-desc { color: var(--text-secondary); max-width: 52ch; }
@media (max-width: 560px) {
	.eb-svc__flow-row { grid-template-columns: 48px 1fr; gap: 18px; }
	.eb-svc__flow-row::before { left: 23px; }
	.eb-svc__flow-mark { width: 48px; height: 48px; font-size: 21px; }
}
/* the right home — three principles */
.eb-svc__prin-in { max-width: var(--container); margin: 0 auto; }
.eb-svc__prin-head { margin: 0 0 clamp(32px, 4vw, 52px); }
.eb-svc__prin-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: var(--rule); }
.eb-svc__prin-col { padding: 40px 40px 40px 0; border-bottom: var(--rule); }
.eb-svc__prin-col + .eb-svc__prin-col { padding-left: 40px; border-left: var(--rule); }
.eb-svc__prin-num { font-family: var(--font-body); font-size: var(--type-caption); font-weight: 600; letter-spacing: .14em; color: var(--text-tertiary); margin: 0 0 16px; }
.eb-svc__prin-title { font-family: var(--font-display); font-size: 28px; line-height: 1; text-transform: uppercase; letter-spacing: .01em; margin: 0 0 16px; }
.eb-svc__prin-body { color: var(--text-secondary); }
@media (max-width: 820px) {
	.eb-svc__prin-grid { grid-template-columns: 1fr; }
	.eb-svc__prin-col { padding: 32px 0; }
	.eb-svc__prin-col + .eb-svc__prin-col { padding-left: 0; border-left: 0; }
}

/* ============================================================
   3 — REMODELS & ADDITIONS : existing/proposed plan + bones cutaway
   ============================================================ */
.eb-svc--remodels-additions .eb-svc__hero-grid { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 46ch); gap: clamp(24px, 4vw, 64px); align-items: center; padding: clamp(52px, 7vw, 96px) var(--gutter); }
.eb-svc--remodels-additions .eb-svc__hero-text { position: relative; z-index: 2; }
.eb-svc--remodels-additions .eb-svc__title { max-width: 16ch; text-wrap: balance; }
.eb-svc--remodels-additions .eb-svc__plan { position: relative; order: -1; }
.eb-svc--remodels-additions .eb-svc__paper { position: relative; border: 1px solid var(--border-subtle); background-color: var(--surface-page); background-image: repeating-linear-gradient(0deg, transparent 0 23px, rgba(23, 21, 20, .05) 23px 24px), repeating-linear-gradient(90deg, transparent 0 23px, rgba(23, 21, 20, .05) 23px 24px); padding: clamp(18px, 2.4vw, 30px); }
.eb-svc--remodels-additions .eb-svc__plan svg { display: block; width: 100%; height: auto; }
.eb-svc--remodels-additions .eb-svc__plan path, .eb-svc--remodels-additions .eb-svc__plan rect, .eb-svc--remodels-additions .eb-svc__plan line { fill: none; }
.eb-svc--remodels-additions .p-wall { stroke: rgba(23, 21, 20, .62); stroke-width: 2.2; vector-effect: non-scaling-stroke; }
.eb-svc--remodels-additions .p-part { stroke: rgba(23, 21, 20, .4); stroke-width: 1.3; vector-effect: non-scaling-stroke; }
.eb-svc--remodels-additions .p-swing { stroke: rgba(23, 21, 20, .28); stroke-width: 1; vector-effect: non-scaling-stroke; }
.eb-svc--remodels-additions .p-label { font-family: var(--font-body); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; fill: var(--text-tertiary); }
.eb-svc--remodels-additions .p-new { stroke: var(--accent); stroke-width: 2; stroke-dasharray: 7 5; vector-effect: non-scaling-stroke; }
.eb-svc--remodels-additions .p-new-fill { fill: rgba(247, 146, 30, .08); stroke: none; }
.eb-svc--remodels-additions .p-open { stroke: var(--accent); stroke-width: 2; stroke-dasharray: 2 5; vector-effect: non-scaling-stroke; }
.eb-svc--remodels-additions .p-new-label { font-family: var(--font-body); font-size: 11px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; fill: var(--accent); }
.eb-svc--remodels-additions .eb-svc__block { position: absolute; right: calc(var(--gutter) * -0.2); bottom: 14px; z-index: 3; }
@media (max-width: 900px) {
	.eb-svc--remodels-additions .eb-svc__hero-grid { grid-template-columns: 1fr; }
	.eb-svc--remodels-additions .eb-svc__hero-text { order: -1; }
	.eb-svc--remodels-additions .eb-svc__plan { order: 0; }
	.eb-svc--remodels-additions .eb-svc__block { position: static; display: inline-block; margin-top: 18px; }
}
@media (max-width: 560px) { .eb-svc--remodels-additions .eb-svc__block { display: none; } }
/* bones cutaway */
.eb-svc__bones-head { max-width: var(--container); margin: 0 auto clamp(40px, 5vw, 64px); }
.eb-svc__bones-title { font-size: var(--type-display-md); line-height: 1.02; max-width: 17ch; margin: 14px 0 0; }
.eb-svc__bones-grid { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 300px) 1fr; gap: clamp(28px, 5vw, 72px); align-items: stretch; }
.eb-svc__bones-draw { position: relative; }
.eb-svc__bones-draw svg { display: block; width: 100%; height: auto; }
.eb-svc__bones-draw path, .eb-svc__bones-draw rect, .eb-svc__bones-draw line, .eb-svc__bones-draw circle { fill: none; }
.eb-svc__bones-draw .s-line { stroke: rgba(23, 21, 20, .5); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.eb-svc__bones-draw .s-thin { stroke: rgba(23, 21, 20, .28); stroke-width: 1; vector-effect: non-scaling-stroke; }
.eb-svc__bones-draw .s-hatch { stroke: rgba(23, 21, 20, .22); stroke-width: 1; vector-effect: non-scaling-stroke; }
.eb-svc__bones-draw .s-lead { stroke: var(--border-strong); stroke-width: 1; stroke-dasharray: 3 4; vector-effect: non-scaling-stroke; }
.eb-svc__bones-draw .s-dot { fill: var(--accent); }
.eb-svc__bones-list { display: flex; flex-direction: column; justify-content: space-between; gap: clamp(22px, 3vw, 34px); border-left: var(--rule); padding-left: clamp(24px, 3vw, 44px); }
.eb-svc__bones-num { font-family: var(--font-body); font-size: var(--type-caption); font-weight: 600; letter-spacing: .14em; color: var(--text-tertiary); margin: 0 0 8px; }
.eb-svc__bones-name { font-family: var(--font-body); font-weight: 700; font-size: 20px; color: var(--text-primary); margin: 0 0 8px; }
.eb-svc__bones-desc { color: var(--text-secondary); max-width: 46ch; }
@media (max-width: 760px) {
	.eb-svc__bones-grid { grid-template-columns: 1fr; gap: clamp(28px, 6vw, 40px); }
	.eb-svc__bones-draw { max-width: 280px; }
	.eb-svc__bones-list { border-left: 0; padding-left: 0; border-top: var(--rule); padding-top: clamp(24px, 6vw, 34px); }
}
/* with you, every step */
.eb-svc__step-in { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 42ch) 1fr; gap: clamp(28px, 5vw, 72px); align-items: start; }
.eb-svc__step-title { font-size: var(--type-display-md); line-height: 1.02; max-width: 14ch; }
.eb-svc__step-lead { color: var(--text-secondary); font-size: var(--type-lead); line-height: 1.55; margin: 14px 0 0; max-width: 44ch; }
.eb-svc__step-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: var(--rule); align-self: center; }
.eb-svc__step-cell { padding: 28px 28px 28px 0; }
.eb-svc__step-cell + .eb-svc__step-cell { padding-left: 28px; border-left: var(--rule); }
.eb-svc__step-k { font-family: var(--font-display); font-size: 26px; line-height: 1; text-transform: uppercase; letter-spacing: .01em; margin: 0 0 12px; }
.eb-svc__step-v { color: var(--text-secondary); }
@media (max-width: 820px) {
	.eb-svc__step-in { grid-template-columns: 1fr; gap: clamp(28px, 6vw, 40px); }
	.eb-svc__step-pair { grid-template-columns: 1fr; }
	.eb-svc__step-cell { padding: 24px 0; }
	.eb-svc__step-cell + .eb-svc__step-cell { padding-left: 0; border-left: 0; border-top: var(--rule); }
}

/* ============================================================
   4 — PROJECT MANAGEMENT : redlined sheet + three-pass review
   ============================================================ */
.eb-svc--project-management .eb-svc__hero-grid { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 44ch) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); align-items: center; padding: clamp(56px, 8vw, 104px) var(--gutter) clamp(64px, 8vw, 110px); }
.eb-svc--project-management .eb-svc__hero-text { position: relative; z-index: 2; }
.eb-svc--project-management .eb-svc__title { max-width: 15ch; text-wrap: balance; }
.eb-svc--project-management .eb-svc__sheet-fig { position: relative; justify-self: center; width: min(100%, 460px); background: var(--surface-page); border: 1px solid var(--border-strong); box-shadow: var(--shadow-overlay); transform: rotate(-2.4deg); padding: 18px 18px 0; }
.eb-svc--project-management .eb-svc__sheet-fig svg { display: block; width: 100%; height: auto; }
.eb-svc--project-management .eb-svc__sheet-fig path, .eb-svc--project-management .eb-svc__sheet-fig rect, .eb-svc--project-management .eb-svc__sheet-fig line, .eb-svc--project-management .eb-svc__sheet-fig circle, .eb-svc--project-management .eb-svc__sheet-fig polyline { fill: none; }
.eb-svc--project-management .d-line { stroke: rgba(23, 21, 20, .5); stroke-width: 1.4; vector-effect: non-scaling-stroke; }
.eb-svc--project-management .d-thin { stroke: rgba(23, 21, 20, .26); stroke-width: 1; vector-effect: non-scaling-stroke; }
.eb-svc--project-management .d-dim { stroke: var(--text-tertiary); stroke-width: 1; vector-effect: non-scaling-stroke; }
.eb-svc--project-management .d-label { font-family: var(--font-body); font-size: 10px; letter-spacing: .08em; fill: var(--text-tertiary); }
.eb-svc--project-management .r-mark { stroke: var(--accent); stroke-width: 2; vector-effect: non-scaling-stroke; }
.eb-svc--project-management .r-thin { stroke: var(--accent); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.eb-svc--project-management .r-fill { fill: var(--accent); }
.eb-svc--project-management .r-note { font-family: var(--font-body); font-size: 12px; font-weight: 700; letter-spacing: .08em; fill: var(--accent); text-transform: uppercase; }
.eb-svc--project-management .eb-svc__sheet-tb { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid var(--border-strong); margin-top: 6px; padding: 9px 4px; font-family: var(--font-body); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-secondary); }
.eb-svc--project-management .eb-svc__sheet-tb b { color: var(--text-primary); font-weight: 700; }
.eb-svc--project-management .eb-svc__sheet-tb .eb-svc__rev-tag { color: var(--accent); font-weight: 700; }
@media (max-width: 900px) {
	.eb-svc--project-management .eb-svc__hero-grid { grid-template-columns: 1fr; }
	.eb-svc--project-management .eb-svc__sheet-fig { order: 0; transform: rotate(-1.6deg); width: min(100%, 380px); justify-self: start; }
	.eb-svc--project-management .eb-svc__hero-text { order: -1; }
}
/* the redlined sheet sits inside .eb-svc__hero, so its .eb-svc-draw cloud
   animates via the shared hero draw-in rule above. */
/* three reviews */
.eb-svc__rev-head { max-width: var(--container); margin: 0 auto clamp(40px, 5vw, 64px); }
.eb-svc__rev-title { font-size: var(--type-display-md); line-height: 1.02; max-width: 18ch; margin: 14px 0 0; }
.eb-svc__rev-grid { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: var(--rule); }
.eb-svc__rev-col { padding: 36px clamp(24px, 2.4vw, 40px) 8px 0; border-bottom: var(--rule); }
.eb-svc__rev-col + .eb-svc__rev-col { padding-left: clamp(24px, 2.4vw, 40px); border-left: var(--rule); }
.eb-svc__rev-sheet { display: block; width: 100%; max-width: 220px; border: 1px solid var(--border-subtle); background: var(--surface-page); padding: 12px; margin: 0 0 22px; }
.eb-svc__rev-sheet svg { display: block; width: 100%; height: auto; }
.eb-svc__rev-sheet path, .eb-svc__rev-sheet rect, .eb-svc__rev-sheet line, .eb-svc__rev-sheet circle { fill: none; }
.eb-svc__rev-num { font-family: var(--font-body); font-size: var(--type-caption); font-weight: 600; letter-spacing: .14em; color: var(--text-tertiary); margin: 0 0 8px; }
.eb-svc__rev-name { font-family: var(--font-display); font-size: 26px; line-height: 1; text-transform: uppercase; letter-spacing: .01em; margin: 0 0 12px; }
.eb-svc__rev-desc { color: var(--text-secondary); }
@media (max-width: 820px) {
	.eb-svc__rev-grid { grid-template-columns: 1fr; }
	.eb-svc__rev-col { padding: 32px 0 8px; }
	.eb-svc__rev-col + .eb-svc__rev-col { padding-left: 0; border-left: 0; }
	.eb-svc__rev-sheet { max-width: 200px; }
}
/* works with your team */
.eb-svc__team-in { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 40ch) 1fr; gap: clamp(28px, 5vw, 72px); align-items: center; }
.eb-svc__team-title { font-size: var(--type-display-md); line-height: 1.02; max-width: 15ch; }
.eb-svc__team-body { color: var(--text-secondary); font-size: var(--type-lead); line-height: 1.55; max-width: 52ch; }
.eb-svc__team-body + .eb-svc__team-body { margin-top: 18px; }
@media (max-width: 820px) { .eb-svc__team-in { grid-template-columns: 1fr; gap: clamp(20px, 5vw, 32px); } }
