/*
Theme Name:   Astra Child
Theme URI:    https://boehringerlaw.com/
Description:  Child theme for Astra. All custom PHP and CSS for Boehringer Law, PLLC belongs here.
Author:       Daniel Angulo Sanchez
Template:     astra
Version:      1.0.0
Text Domain:  astra-child
*/

/* ==========================================================================
   Boehringer Law — custom CSS

   Rules here exist because the same complaint appeared on several pages in
   Michael's 2026-08-29 notes. A repeated complaint is a RULE, and rules belong
   in one version-controlled place rather than being fixed four times by hand
   in the Elementor editor.

   One-off changes to a single element still belong in the editor
   (Advanced -> Custom CSS). See WORKFLOW.md §4.

   Breakpoints in this install:  mobile <=767 | tablet <=1024 | widescreen >=1600
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */

:root {
	/* Vertical rhythm between paragraphs inside Elementor text widgets.
	   Michael, repeatedly: "the paragraphs are too close together, it's hard
	   to tell they are separate." Raise this one value to loosen every page. */
	--bl-paragraph-gap: 1.25em;
}


/* --------------------------------------------------------------------------
   2. Paragraph rhythm
   Touchup: About, People, Business, IP, Injuries — "spacing is horrible",
   "supposed to be two paragraphs", "too close together".

   ROOT CAUSE, measured 2026-08-29: on most of these pages the "paragraphs" are
   NOT separate <p> elements at all. They are a single <p> containing a <br> —
   the previous builder used Shift+Enter (line break) where Enter (new
   paragraph) was meant. Counts of paragraphs split by <br>:

       Intellectual Property  12      About    1
       Injuries & Accidents    6      People   1
       Employment & Labor      0      Business 1

   Note Employment is the only page with zero, and the only page where Michael
   did NOT complain about spacing. His complaints are exact.

   The rule below is still correct and takes effect the moment the markup is
   real paragraphs — but CSS alone cannot fix a <br>. That is editor work:
   in the text widget use ENTER for a new paragraph, SHIFT+ENTER for a line
   break. About / People / Business fix themselves when Michael's new copy is
   pasted properly; IP and Injuries (18 instances) must be converted.
   -------------------------------------------------------------------------- */

.elementor-widget-text-editor p + p {
	margin-top: var(--bl-paragraph-gap);
}

/* Guard against a trailing empty paragraph adding dead space at the end. */
.elementor-widget-text-editor p:last-child {
	margin-bottom: 0;
}


/* --------------------------------------------------------------------------
   3. Justified body copy
   Touchup: About ("should just be justified so the edges are clean on both
   sides"), People (attorney bio), Employment (bottom section).

   Deliberate deviation from the brief, flagged to the client:
   justification is applied at tablet and above only. On narrow viewports it
   produces large word gaps ("rivers") and measurably hurts readability, so
   mobile stays left-aligned. Say this out loud rather than silently choosing.

   `text-wrap: pretty` and hyphens soften the gaps where supported.
   -------------------------------------------------------------------------- */

@media (min-width: 768px) {

	.page-id-14 .elementor-widget-text-editor p,   /* About                 */
	.page-id-13 .elementor-widget-text-editor p,   /* People — attorney bio */
	.page-id-12 .elementor-widget-text-editor p {  /* Employment & Labor    */
		text-align: justify;
		text-wrap: pretty;
		/* `hyphens: auto` was here to soften justification gaps. Removed 2026-08-29:
		   at tablet it split "discrimination" as "discrim-/ination", which reads worse
		   than the wider word spacing it was avoiding. Wider gaps are the better trade
		   on a law firm site. */
	}
}


/* --------------------------------------------------------------------------
   4. Practice-area bullet lists
   Touchup (Employment & Labor): "I don't know why they made the bullets for
   'Medical Leave and Accommodations' and 'Sexual Harassment and Assault' take
   up two lines. It should only be one line like the rest."

   NOTE: Michael also reports Bri does not see this on her machine, which
   points at a font-fallback or zoom difference rather than a layout bug.
   Confirm his browser/OS/zoom before assuming this rule is the fix — it may
   be treating a symptom that only exists in one environment.
   -------------------------------------------------------------------------- */

.page-id-12 .elementor-widget-icon-list .elementor-icon-list-text,
.page-id-11 .elementor-widget-icon-list .elementor-icon-list-text,
.page-id-10 .elementor-widget-icon-list .elementor-icon-list-text,
.page-id-8  .elementor-widget-icon-list .elementor-icon-list-text {
	text-wrap: balance;
}


/* --------------------------------------------------------------------------
   5. Footer
   Touchup: "Change color from black to green", "adjust the format of the
   spacing and sizing", "add link for LinkedIn".

   The colour change belongs in Elementor Site Settings (it is a global), and
   the LinkedIn link is a new widget — both are editor work, not CSS.
   Spacing refinements land here once the footer layout is settled.
   -------------------------------------------------------------------------- */

/* (intentionally empty until the footer rebuild is done in the editor) */


/* --------------------------------------------------------------------------
   6. NOT DONE HERE — deliberately

   - Font replacement. 169 widgets declare an explicit font-family, and BOTH
     fonts appear on heading widgets (Newsreader x40, Archivo x21), so no CSS
     selector can distinguish a serif heading from a sans one. Overriding in
     CSS would flatten a deliberate distinction. Use the data-level swap in
     `tools/swap-fonts.php` instead, once a font has been chosen.

   - "Center justified" on the IP and Injuries pages. Michael's wording is
     ambiguous — it may mean centred, or justified. Not guessing. Ask.

   - Any add / remove / reorder of widgets. Structural work is editor-only.
   -------------------------------------------------------------------------- */


/* --------------------------------------------------------------------------
   7. Section colour schemes  —  .bl-dark  /  .bl-light

   WHY THIS EXISTS
   The practice-area pages alternate dark and light sections. Each section
   previously carried its scheme as ~5 separate per-element colour overrides,
   which meant reordering two sections required re-colouring both by hand — and
   the two sections were styled by OPPOSITE mechanisms (one explicit, one
   inheriting), so half the work was adding overrides where none existed.

   USAGE
   Select the SECTION container -> Advanced tab -> CSS Classes -> type:
       bl-dark      dark background, light text
       bl-light     light background, dark text
   Swapping two sections is then a matter of swapping the two class names.

   ON !important
   Elementor writes per-element rules at specificity (0,4,0), e.g.
   `.elementor-11 .elementor-element.elementor-element-3f6e7ad .elementor-heading-title`.
   Beating that without !important would need a contrived 5-class selector. The
   trade is deliberate: these are whole-section schemes, and per-element
   exceptions inside them are not part of the design.

   IF YOU NEED AN EXCEPTION inside a scheme, give that element its own class
   and add a rule below rather than fighting this one in the Elementor panel —
   the panel will appear to have no effect, which is confusing.

   NOTE buttons are deliberately NOT covered. The gold filled button and the
   outlined button behave differently on each background; check those per
   instance.
   -------------------------------------------------------------------------- */

.bl-dark  { background-color: var( --e-global-color-secondary ) !important; }
.bl-light { background-color: var( --e-global-color-bd6ad18 )  !important; }

.bl-dark .elementor-heading-title,
.bl-dark .elementor-widget-text-editor,
.bl-dark .elementor-widget-text-editor p,
.bl-dark .elementor-icon-list-text {
	color: var( --e-global-color-c8292ef ) !important;   /* white */
}

.bl-light .elementor-heading-title,
.bl-light .elementor-widget-text-editor,
.bl-light .elementor-widget-text-editor p,
.bl-light .elementor-icon-list-text {
	color: var( --e-global-color-primary ) !important;   /* black */
}

/* Gold reads correctly on both grounds — it is the constant in this palette. */
.bl-dark  .elementor-icon-list-icon i,
.bl-dark  .elementor-icon-list-icon svg,
.bl-light .elementor-icon-list-icon i,
.bl-light .elementor-icon-list-icon svg {
	color: var( --e-global-color-accent ) !important;
	fill:  var( --e-global-color-accent ) !important;
}

/* Inline links stay gold on both, so they survive a scheme swap untouched. */
.bl-dark  .elementor-widget-text-editor a:not(.elementor-button),
.bl-light .elementor-widget-text-editor a:not(.elementor-button) {
	color: var( --e-global-color-89eb248 ) !important;
}


/* --------------------------------------------------------------------------
   8. Two-column icon lists  —  .bl-list-2col

   Elementor's Icon List widget has no column control. Add `bl-list-2col` to the
   widget's CSS Classes (Advanced tab) to split it into two columns on desktop.

   `column-count` is used rather than grid on purpose: it fills DOWN the first
   column then continues in the second, so the list still reads top-to-bottom.
   A 2-column grid would alternate left/right and scramble the reading order.

   WIDESCREEN ONLY (>=1600px) — this install's own `viewport_widescreen` value,
   so the rule lines up with Elementor's breakpoints rather than inventing one.
   Below that the right-hand container is too narrow: at 1440 it is roughly 36%
   of the page, so two columns would be ~240px each and the longer items would
   wrap. At 1600+ there is room.
   -------------------------------------------------------------------------- */

@media (min-width: 1600px) {

	.bl-list-2col .elementor-icon-list-items {
		column-count: 2;
		column-gap: 40px;
	}

	/* Stop an item splitting across the column break. */
	.bl-list-2col .elementor-icon-list-item {
		break-inside: avoid;
		page-break-inside: avoid;   /* older engines */
	}
}


/* --------------------------------------------------------------------------
   9. Cards  —  .bl-card

   For widgets that should read as a distinct panel: the About page's four
   icon-boxes, the Business Law industries tiles, and anything similar.

   Use this rather than `.bl-light`. That class is a SECTION colour scheme — it
   also forces text colours with !important, which on a widget either does
   nothing (icon-box titles use .elementor-icon-box-title, not
   .elementor-heading-title) or silently overrides a global binding. Relying on
   a side effect is how a surprise gets built in.

   USAGE: widget -> Advanced -> CSS Classes -> `bl-card`
   -------------------------------------------------------------------------- */

.bl-card {
	background-color: var( --e-global-color-bd6ad18 );   /* bg color, cream */
	border: 1px solid var( --e-global-color-53bff2c );   /* light border */
	padding: 32px;
}

/* Cards sitting in a flex row should match heights rather than hug content. */
.bl-card {
	align-self: stretch;
}

/*
 * Cards go full width on phones. Without this a card keeps whatever percentage
 * width it was given for the desktop grid — at 500px a 48% card is a narrow
 * column with half the screen empty and the title wrapping mid-phrase.
 *
 * Done here rather than as four per-widget overrides so the class is responsive
 * by default: any card added later behaves correctly with no extra settings.
 * `!important` is needed because Elementor writes the per-widget width at
 * higher specificity.
 *
 * Breakpoint is 1024, not 767, because of the arithmetic. At 768 the container
 * has 10px side padding, leaving 748 usable. Two 48% cards are 359 each, plus
 * the 30px gap = 748 exactly — so they wrap, but KEEP their 48% width. The
 * result is half-width cards in a single column with dead space beside them.
 * Two columns only genuinely fit from ~1025 up, which is also this install's
 * desktop breakpoint.
 */
@media (max-width: 1024px) {

	.bl-card {
		width: 100% !important;
		max-width: 100% !important;
		padding: 24px;
	}
}


/* --------------------------------------------------------------------------
   10. White card variant  —  .bl-card-white

   `.bl-card` uses the cream `bg color` token, which works on a white section
   (About) but disappears on a cream one (People) — same colour as the ground,
   so only the border shows.

   Use this variant on cream sections. Everything else about the card is
   identical, including `align-self: stretch` — which is the point of the card
   in the first place: three lists of unequal length sit as one tidy row instead
   of growing raggedly to different heights.

   USAGE: container -> Advanced -> CSS Classes -> `bl-card-white`
   (replaces `bl-card`, do not use both)
   -------------------------------------------------------------------------- */

.bl-card-white {
	background-color: var( --e-global-color-c8292ef );   /* white */
	border: 1px solid var( --e-global-color-53bff2c );   /* light border */
	padding: 32px;
	align-self: stretch;
}

@media (max-width: 1024px) {

	.bl-card-white {
		width: 100% !important;
		max-width: 100% !important;
		padding: 24px;
	}
}


/* --------------------------------------------------------------------------
   11. Cards inside a dark section

   `.bl-dark` forces text to white with !important, because it is a whole-section
   scheme. A card placed inside one is a light island in that dark section — its
   own text must go back to dark or it is white-on-white and invisible.

   The extra class in each selector beats the plain `.bl-dark ...` rule above,
   so no further escalation is needed. This is what makes the classes compose:
   the section scheme sets the ground, the card overrides its own interior.
   -------------------------------------------------------------------------- */

.bl-dark .bl-card .elementor-heading-title,
.bl-dark .bl-card .elementor-widget-text-editor,
.bl-dark .bl-card .elementor-widget-text-editor p,
.bl-dark .bl-card .elementor-icon-list-text,
.bl-dark .bl-card-white .elementor-heading-title,
.bl-dark .bl-card-white .elementor-widget-text-editor,
.bl-dark .bl-card-white .elementor-widget-text-editor p,
.bl-dark .bl-card-white .elementor-icon-list-text {
	color: var( --e-global-color-primary ) !important;   /* black */
}

/* Gold stays gold on the card, as everywhere else in the palette. */
.bl-dark .bl-card .elementor-widget-text-editor a:not(.elementor-button),
.bl-dark .bl-card-white .elementor-widget-text-editor a:not(.elementor-button) {
	color: var( --e-global-color-89eb248 ) !important;
}

/* On a dark ground a light card needs no border — the contrast is the edge. */
.bl-dark .bl-card,
.bl-dark .bl-card-white {
	border-color: transparent;
}


/* --------------------------------------------------------------------------
   12. Side gutters for boxed sections below the boxed width
   --------------------------------------------------------------------------
   Every top-level section on the pages sets horizontal padding to 0 and relies
   on the 1280px boxed content width to produce side margins. That only works
   while the viewport is wider than 1280. Between 1025 (the narrowest desktop
   breakpoint) and ~1330 the box is as wide as the screen, so text, cards and
   buttons sit flush against the viewport edge — the About cards were the first
   place it was noticed (2026-09-09) because the section had been narrowed to
   1050 and then widened to match the hero.

   Elementor applies a container's side padding through the --padding-left /
   --padding-right custom properties, set per element with three-class
   specificity. This rule matches that specificity and adds !important so it
   wins regardless of stylesheet order. It is scoped to page content only —
   the header and footer templates manage their own gutters.

   1327 = 1280 boxed width + 2 × 24px. Above that the box already has ≥24px
   of margin on each side, so nothing changes on large screens.
   -------------------------------------------------------------------------- */

@media (max-width: 1327px) {

	[data-elementor-type="wp-page"] > .e-con.e-parent {
		--padding-left:  24px !important;
		--padding-right: 24px !important;
	}
}


/* --------------------------------------------------------------------------
   13. Representative matters  —  .bl-matter-note
   --------------------------------------------------------------------------
   People page, the "Representative Matters" icon list. Each item was one run-on
   line: italic case name, docket, court, then the outcome in parentheses. On
   2026-09-09 the outcome was moved into a <span class="bl-matter-note"> inside
   the same list item (a leaf-string edit; the widget and its items are
   unchanged), so it can sit on its own line under the citation.

   The span lives inside .elementor-icon-list-text, which the widget renders
   through wp_kses_post — spans and classes survive.
   -------------------------------------------------------------------------- */

.elementor-icon-list-text .bl-matter-note {
	display: block;
	margin-top: 0.35em;
	font-size: 0.92em;
	font-style: normal;
	font-weight: 400;
	color: var( --e-global-color-text );        /* the grey body token */
	line-height: 1.5;
}


/* --------------------------------------------------------------------------
   14. Business Law — "We handle cases involving:"
   --------------------------------------------------------------------------
   This heading is an <h3><b>…</b></h3> typed inside a text-editor widget (92da6f5), not
   an Elementor heading widget, so it fell back to Astra's default heading style: navy
   sans-serif, the only heading on the site in that look (QA pass, 2026-10-01). Match it
   to the site's headings: the primary (display) typeface, black, semibold.
   -------------------------------------------------------------------------- */

.elementor-element-92da6f5 h3,
.elementor-element-92da6f5 h3 b {
	font-family: var( --e-global-typography-primary-font-family ), Georgia, serif;
	font-weight: 600;
	color: var( --e-global-color-primary );
}


/* --------------------------------------------------------------------------
   15. Employment closing banner — left-aligned, not justified
   --------------------------------------------------------------------------
   §3 justifies every text editor on Employment, including the closing banner
   (96f6d31). That paragraph ends in a phone number and an email address, which
   cannot break, so justification opened wide gaps between words on desktop.
   Daniel's call 2026-10-02: left-align it. This also matches the closing
   banners on Business Law, IP and Injuries. Phones keep the widget's own centring.
   -------------------------------------------------------------------------- */

@media (min-width: 768px) {
	.page-id-12 .elementor-element-96f6d31 p {
		text-align: left;
	}
}


/* --------------------------------------------------------------------------
   16. Topic side menu — IP and Injuries (approved design B, 2026-10-02)
   --------------------------------------------------------------------------
   js/side-menu.js adds a <nav class="bl-sidenav"> inside the nested-accordion
   widget and marks it .bl-sidemenu. At desktop the widget becomes two columns:
   topics on the left, the open topic's panel on the right. Below 1025px nothing
   here applies and the original accordion shows. Page data is untouched.
   -------------------------------------------------------------------------- */

.bl-sidenav { display: none; }

@media (min-width: 1025px) {
	.bl-sidemenu {
		display: grid;
		grid-template-columns: minmax(220px, 27%) 1fr;
		column-gap: 40px;
		align-items: start;
	}
	.bl-sidemenu .bl-sidenav {
		display: flex;
		flex-direction: column;
		position: sticky;
		top: 150px;
		border-left: 1px solid var( --e-global-color-53bff2c );
	}
	.bl-sidemenu .bl-sidenav button {
		all: unset;
		box-sizing: border-box;
		cursor: pointer;
		margin-left: -1px;
		padding: 11px 16px;
		border-left: 3px solid transparent;
		font: 500 15px/1.3 var( --e-global-typography-text-font-family ), sans-serif;
		color: var( --e-global-color-text );
		transition: color .15s, background-color .15s;
	}
	.bl-sidemenu .bl-sidenav button:hover { color: var( --e-global-color-primary ); }
	.bl-sidemenu .bl-sidenav button[aria-current="true"] {
		color: var( --e-global-color-primary );
		font-weight: 700;
		border-left-color: var( --e-global-color-accent );
		background: var( --e-global-color-c8292ef );
	}
	.bl-sidemenu .bl-sidenav button:focus-visible { outline: 2px solid var( --e-global-color-accent ); outline-offset: 2px; }

	/* Only the chosen topic shows; its gold title bar is replaced by the menu. */
	.bl-sidemenu .e-n-accordion > details:not([open]) { display: none; }
	.bl-sidemenu .e-n-accordion > details > summary { display: none; }
	/* One clean white panel per topic. The panels were built inconsistently in
	   Elementor (extra cream layers, inner borders, 10px padding), so every
	   container inside the panel is flattened... */
	.bl-sidemenu .e-n-accordion > details > .e-con {
		background: var( --e-global-color-c8292ef ) !important;
		border: 1px solid var( --e-global-color-53bff2c ) !important;
		--padding-top: 40px; --padding-bottom: 44px; --padding-left: 48px; --padding-right: 48px;
		padding: 40px 48px 44px !important;
	}
	.bl-sidemenu .e-n-accordion > details > .e-con .e-con,
	.bl-sidemenu .e-n-accordion > details > .e-con .e-con-inner {
		background: transparent !important;
		border-color: transparent !important;
		box-shadow: none !important;
		--padding-left: 0px; --padding-right: 0px;
		padding-left: 0 !important;
		padding-right: 0 !important;
		--min-height: 0px;
		min-height: 0 !important;
	}
	.bl-sidemenu .e-n-accordion > details > .e-con { --min-height: 0px; min-height: 0 !important; justify-content: flex-start !important; }
	/* "Boxed" panels re-apply the panel's padding variables on their inner wrapper; zero that copy. */
	.bl-sidemenu .e-n-accordion > details > .e-con > .e-con-inner { padding-top: 0 !important; padding-bottom: 0 !important; }
	/* ...except the IP trademark step cards, which stay white cards with a gold edge. */
	.bl-sidemenu .e-n-accordion > details > .e-con .e-con:is(.elementor-element-d3eab5b, .elementor-element-6878ae1, .elementor-element-e4fc731,
	                 .elementor-element-37e69ab, .elementor-element-a555894, .elementor-element-7604183) {
		background: var( --e-global-color-c8292ef ) !important;
		border: 1px solid var( --e-global-color-accent ) !important;
		box-shadow: 0 6px 18px rgba(20, 40, 34, .08) !important;
		padding: 28px !important;
	}

	/* Narrow desktops (1025–1199): the three step cards are ~178px wide and long words and the
	   USPTO link overflow. Two columns there, and let links wrap anywhere. */
	.bl-sidemenu .e-con:is(.elementor-element-d3eab5b, .elementor-element-6878ae1, .elementor-element-e4fc731,
	                       .elementor-element-37e69ab, .elementor-element-a555894, .elementor-element-7604183) a { overflow-wrap: anywhere; }

	/* Consistent type: the first heading is the panel title, every other heading a section heading. */
	.bl-sidemenu details .elementor-heading-title,
	.bl-sidemenu details .elementor-widget-text-editor :is(h2, h3) {
		font-size: 28px !important;
		line-height: 1.2 !important;
		margin-top: 8px;
	}
	/* A list ending a text block kept a 22px bottom margin, opening an uneven gap before the next heading. */
	.bl-sidemenu details .elementor-widget-text-editor > :last-child { margin-bottom: 0; }
	.bl-sidemenu details .bl-panel-title {
		font-size: 40px !important;
		line-height: 1.1 !important;
		margin-top: 0;
		margin-bottom: 8px;
	}
}


/* --------------------------------------------------------------------------
   17. Business Law industries — compact list (approved design A, 2026-10-02)
   --------------------------------------------------------------------------
   Michael: the section "reads as the most important thing on the page". The ten
   tiles (5912dad grid, one icon-box each) are restyled as a three-column list
   like the Litigation list: no tiles, shadows or big icons, smaller heading.
   -------------------------------------------------------------------------- */

.elementor-element-2039b1f .elementor-element-1a638c9 .elementor-heading-title {
	font-size: 30px !important;
	line-height: 1.2 !important;
	text-align: left !important;
}
.elementor-element-2039b1f .elementor-element-1a638c9 { padding-left: 10px; }
.elementor-element-2039b1f .elementor-element-5912dad {
	max-width: 920px;
	--e-con-grid-template-columns: repeat(3, 1fr) !important;
	--gap: 6px 32px !important;
	--row-gap: 6px !important;
	--column-gap: 32px !important;
}
.elementor-element-5912dad > .e-con,
.elementor-element-5912dad .elementor-widget-icon-box,
.elementor-element-5912dad .elementor-widget-icon-box > .elementor-widget-container {
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	--padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px;
	--border-top-width: 0px; --border-right-width: 0px; --border-bottom-width: 0px; --border-left-width: 0px;
}
.elementor-element-5912dad .elementor-icon-box-wrapper {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	gap: 10px !important;
	text-align: left !important;
}
.elementor-element-5912dad .elementor-icon-box-icon { margin: 0 !important; display: flex; width: auto !important; flex: none; }
.elementor-element-5912dad .elementor-icon { font-size: 15px !important; line-height: 1 !important; display: flex !important; }
.elementor-element-5912dad .elementor-icon-box-icon { align-self: center !important; }
.elementor-element-5912dad .elementor-icon svg { width: 15px; height: 15px; }
.elementor-element-5912dad .elementor-icon-box-title,
.elementor-element-5912dad .elementor-icon-box-title * {
	margin: 0 !important;
	font: 400 16px/1.9 var( --e-global-typography-text-font-family ), sans-serif !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: var( --e-global-color-primary ) !important;
}
@media (max-width: 767px) {
	.elementor-element-2039b1f .elementor-element-5912dad { --e-con-grid-template-columns: repeat(2, 1fr) !important; }
	.elementor-element-2039b1f .elementor-element-1a638c9 .elementor-heading-title { font-size: 24px !important; }
}


/* --------------------------------------------------------------------------
   18. About cards — banner-style lead lines (approved design C, 2026-10-02)
   --------------------------------------------------------------------------
   Michael: "make the copy of each section stick out … like the font in the Home
   page banner". Each card's FIRST SENTENCE is wrapped in <span class="bl-lead">
   in the page data and set large in the display serif; the card title becomes a
   small gold label above it. No words were added or removed.
   -------------------------------------------------------------------------- */

.bl-lead-cards .elementor-icon-box-wrapper,
.bl-lead-cards .elementor-icon-box-content { text-align: left !important; }
.bl-lead-cards .elementor-icon-box-title,
.bl-lead-cards .elementor-icon-box-title * {
	font: 600 12px/1.2 var( --e-global-typography-text-font-family ), sans-serif !important;
	letter-spacing: .16em !important;
	text-transform: uppercase !important;
	color: var( --e-global-color-accent ) !important;
	margin-bottom: 10px !important;
}
.bl-lead-cards .bl-lead {
	display: block;
	margin-bottom: 12px;
	font: italic 600 26px/1.22 var( --e-global-typography-primary-font-family ), Georgia, serif;
	color: var( --e-global-color-secondary );
	text-wrap: balance;
}
@media (max-width: 767px) {
	.bl-lead-cards .bl-lead { font-size: 22px; }
}

@media (min-width: 1025px) and (max-width: 1199px) {
	/* §16 continued: on narrow desktops the three step cards are ~178px wide, so long words
	   ("APPLICATION") and the USPTO link spilled out. Tighter padding and smaller titles there. */
	.bl-sidemenu .e-n-accordion > details > .e-con .e-con:is(.elementor-element-d3eab5b, .elementor-element-6878ae1, .elementor-element-e4fc731,
	                       .elementor-element-37e69ab, .elementor-element-a555894, .elementor-element-7604183) {
		padding: 18px !important;
	}
	.bl-sidemenu :is(.elementor-element-d3eab5b, .elementor-element-6878ae1, .elementor-element-e4fc731,
	                 .elementor-element-37e69ab, .elementor-element-a555894, .elementor-element-7604183) .elementor-icon-box-title {
		font-size: 18px !important;
	}
}


/* --------------------------------------------------------------------------
   19. Header phone bar — no sideways scroll on tablets
   --------------------------------------------------------------------------
   The top bar's inline icon list (55f447c) uses Elementor's negative-margin spacing,
   which pushed the page 6px wider than the screen at 820–1025px (every page). Clip it.
   Found by the independent design review, 2026-10-02.
   -------------------------------------------------------------------------- */

.elementor-element-eb9d89e { overflow-x: clip; }

/* The "Schedule a free consultation" + "Call" row (copied onto six pages, different IDs on
   each) is ~268px wide on tablets and does not wrap, so Call hung 9px off-screen at 768–1024.
   Let any button row wrap there; rows that fit are unaffected. Found 2026-10-02. */
@media (min-width: 768px) and (max-width: 1024px) {
	.e-con:has(> .elementor-widget-button + .elementor-widget-button),
	.e-con-inner:has(> .elementor-widget-button + .elementor-widget-button) {
		flex-wrap: wrap;
		align-content: center; /* keep wrapped lines together instead of spread apart */
		row-gap: 14px;
	}
}


/* --------------------------------------------------------------------------
   20. Home hero — tagline as wide as the name (Michael, 2026-10-02)
   --------------------------------------------------------------------------
   js/hero-fit.js tunes the tagline's letter-spacing so it spans exactly the
   width of "Boehringer Law". On tablets the name was 55px (361px wide) against a
   573px tagline, so matching would have shrunk the tagline to unreadable; the name
   is enlarged there instead. Phones stack the three phrases, widest one matched.
   -------------------------------------------------------------------------- */

.bl-tag-fit { white-space: nowrap; }

@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-element-74cc5d5 .elementor-heading-title { font-size: 80px !important; line-height: 1.05 !important; }
}

@media (max-width: 767px) {
	.bl-tag-fit { white-space: normal; line-height: 1.6 !important; }
	.bl-tag-fit .bl-tag-part { display: block; }
	.bl-tag-fit .bl-tag-sep { display: none; }
}


/* ==========================================================================
   21. People — credentials cards (Daniel, 2026-10-02)
   --------------------------------------------------------------------------
   The three cards in the dark band read as plain cream rectangles with browser
   bullets — Daniel's word was "boring". Geometry was also off: 33% / 32% / 31%
   (415 / 403 / 391px at 1440) with uneven gutters.

   Fixed with the card treatment the site ALREADY uses, rather than a new one:
   Home's client-review cards (8bd40bc) are a 4px gold top rule over 1px gold
   sides with roomy padding. Borrowing it makes this band look deliberate and
   ties the two pages together.

     - 4px gold top rule, 1px gold elsewhere (was a flat 1px light border)
     - gold headings instead of near-black, so each card leads with colour
     - browser bullets replaced by hairline rules between entries, which reads
       as a credential panel rather than a shopping list
     - equal widths, centred row

   Elementor applies container width as `width: var(--width)`, so one `--width`
   override per card equalises them; the row then centres and the gutters even up.

   Scoped to `.elementor-13` and this band's row, so nothing leaks to the other
   pages that use `.bl-card`.

   ⚠️ Targets hard-coded element IDs — see "Front-end enhancements" in CLAUDE.md.
   Row 5a85a5a; cards e15eb3f / 0d5e2fe / ad823f2; Education column d8c1dce.

   Equal heights are kept deliberately: Awards has two entries and ends with
   space below it, which is the trade for three cards sharing a baseline.
   ========================================================================== */

/* --- equal, centred cards (desktop only; .bl-card already goes full width
       below 1025 — see §9) ------------------------------------------------ */

@media (min-width: 1025px) {

	.elementor-13 .elementor-element.elementor-element-5a85a5a {
		justify-content: center;
	}

	.elementor-13 .elementor-element.elementor-element-5a85a5a > .bl-card {
		--width: 31%;
	}
}

/* --- the card itself: Home's review-card treatment ---------------------- */

.elementor-13 .elementor-element-5a85a5a > .bl-card {
	border: 1px solid var( --e-global-color-accent );
	border-top-width: 4px;
	padding: 34px 32px 30px;
}

/* --- heading: gold, and close to the list it labels --------------------- */

/* `!important` because §10 forces card headings back to near-black with
   `!important`, to undo §7's white-on-dark rule. Same ladder, one rung up. */
.elementor-13 .elementor-element-5a85a5a .bl-card .elementor-heading-title {
	color: var( --e-global-color-accent ) !important;
}

.elementor-13 .elementor-element-5a85a5a .bl-card > .elementor-widget-heading {
	margin-bottom: 10px;
}

/* --- entries: hairline rules, not browser bullets ----------------------- */

.elementor-13 .elementor-element-5a85a5a .bl-card ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.elementor-13 .elementor-element-5a85a5a .bl-card li {
	border-top: 1px solid var( --e-global-color-53bff2c );
	margin: 0;
	padding: 9px 0;
}

.elementor-13 .elementor-element-5a85a5a .bl-card li:first-child {
	border-top: none;
}

.elementor-13 .elementor-element-5a85a5a .bl-card li:last-child {
	padding-bottom: 0;
}

/* --- Education column: even indentation, gold markers ------------------- */

.elementor-13 .elementor-element-d8c1dce .elementor-widget-text-editor ul {
	margin: 2px 0 0;
	padding-left: 1.1em;
}

.elementor-13 .elementor-element-d8c1dce .elementor-widget-text-editor li {
	margin-bottom: 4px;
}

.elementor-13 .elementor-element-d8c1dce .elementor-widget-text-editor li::marker {
	color: var( --e-global-color-accent );
}
