/*
 * Real design direction from Planning/Design Direction.md: trust-first clarity-led minimalism,
 * bold typography over stock imagery, "one trusted dev shop" positioning (Elegant-Themes-style,
 * not a ThemeForest multi-vendor feel). Dark navy + a single accent - deliberately distinct from
 * Tipped2Win's purple/pink and Mimi Joi's pink, since this is its own real business.
 *
 * Rebrand (2026-08-25, Leon's direct request): accent swapped from the original warm gold
 * (#f5a623) to an electric blue with a glow treatment, matching the approved homepage mockup
 * (Claude Artifact "LC Web Design Homepage Build"). Applied site-wide across every real page via
 * this shared stylesheet - deliberately NOT touched on any of the standalone demo pages
 * (Dog Groomer/Silverbark/Willowbrook/Barkers Yard/Vets/Pet Shop/Plumbers/Gardeners/Mobile
 * Detailing/Window Cleaners), which each keep their own separate *-chrome.php identity.
 */
/* Batch 1 (2026-08-05) - homepage/main-site redesign, static mockup approved by Leon at
   Planning/batch-1-mockup.html. Keeps the existing navy/amber identity (Leon explicitly rejected
   the audit's light cream system), adds a formal type scale (Space Grotesk/DM Sans) and two new
   sparing accent tokens (blue for links, dark mint-tinted panel for reassurance content). */
@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400..800&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');
/* 2026-08-27: typeface swapped from Space Grotesk/DM Sans to Bricolage Grotesque/IBM Plex Sans +
   Mono, matching the approved concept exactly (Claude Home BUILD/homepage-redesign-v1.html /
   Claude Artifact "LC Web Design Homepage Build") - Leon's explicit instruction to build the site
   like that concept and no other. Colour tokens below are unchanged from the 2026-08-25 rebrand,
   which already matched. */

/* Real bug fix, 2026-08-09 (found during 0.0.7 mobile verification): Astra's own mobile header row
   (.ast-builder-grid-row-has-sides) renders ~40px wider than the viewport on narrow screens - a
   pre-existing core Astra layout quirk, not something this theme's CSS caused, but it forces a
   site-wide horizontal scroll on every page. Clamping overflow on the two root elements is the
   standard safe fix: it doesn't touch Astra's own layout math, just stops the extra width from
   creating a scrollbar/shift. */
html, body { overflow-x: hidden; max-width: 100%; }

:root {
	/* 2026-08-27: bg/panel/text/muted corrected to the concept's EXACT hex values (was a navy-tinted
	   approximation - #0b1120/#131b2e/#ffffff/#b9c2d6 - that only coincidentally looked "close enough"
	   next to the correct accent blue). These four were the actual source of "still looks different"
	   feedback: concept is a neutral near-black, not a blue-tinted navy, and text is soft off-white,
	   not pure white. Source: Claude Home BUILD/homepage-redesign-v1.html :root block, verbatim. */
	--lcwd-bg: #0a0c10;
	--lcwd-panel: #12151b;
	--lcwd-accent: #4172e8;
	--lcwd-accent-text: #050914;
	--lcwd-text: #eef0f3;
	--lcwd-muted: #9aa3b0;
	--lcwd-accent-blue: #7ba0ff;
	--lcwd-accent-soft: rgba(65, 114, 232, .13);
	--lcwd-accent-line: rgba(65, 114, 232, .4);
	--lcwd-accent-glow: rgba(65, 114, 232, .55);
	--lcwd-accent-mint-bg: #1f3d33;
	--lcwd-accent-mint-text: #7fe0bd;
	--font-heading: 'Bricolage Grotesque', system-ui, sans-serif;
	--font-body: 'IBM Plex Sans', system-ui, sans-serif;
	--font-mono: 'IBM Plex Mono', ui-monospace, monospace;
}

/* Glow utilities, matching the approved mockup's electric-blue treatment. */
.lcwd-glow-ring { box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 32px -6px var(--lcwd-accent-glow); }
.lcwd-glow-pulse { animation: lcwd-pulse 3.2s ease-in-out infinite; }
@keyframes lcwd-pulse {
	0%, 100% { box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 18px -4px var(--lcwd-accent-glow); }
	50% { box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 38px -2px var(--lcwd-accent-glow); }
}
@media (prefers-reduced-motion: reduce) { .lcwd-glow-pulse { animation: none; } }

body { background-color: var(--lcwd-bg) !important; font-family: var(--font-body); }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); }

.lcwd-link-blue { color: var(--lcwd-accent-blue) !important; }
.lcwd-reassure-panel {
	background-color: var(--lcwd-accent-mint-bg) !important;
	border: 1px solid rgba(127, 224, 189, 0.25);
	color: var(--lcwd-accent-mint-text) !important;
}
.lcwd-reassure-panel h2, .lcwd-reassure-panel h3 { color: var(--lcwd-accent-mint-text) !important; }

/* LC Web Design logo uploaded as a wide PNG, but Astra never had a header "Logo Width" set, so left
   unconstrained it renders far too large (same real bug already found and fixed on Tipped2Win's
   logo, same fix here). */
/* Real bug found and fixed 2026-07-31: `width: auto` alone wasn't enough, Astra's own base
   `img { max-width: 100% }` rule was capping the logo to its flex container's own (narrower) width
   before the aspect-ratio could resolve, badly squashing it. Explicit width + `max-width: none`
   defeats that cap so the logo actually renders at its real intended size. */
/* Logo swapped 2026-08-01 for the real brand kit's horizontal lockup (icon + "LC WEB DESIGN" +
   tagline, transparent background) - width recalculated for its actual aspect ratio (468x129,
   ~3.63:1) at the same 60px header height as before (218px, not the old logo's 208px - those 2
   logos weren't quite the same aspect ratio, and reusing the old width would have mildly squashed
   this one). */
.site-logo-img,
.custom-logo-link {
	max-width: none !important;
}
.site-logo-img img.custom-logo,
.ast-site-identity img.custom-logo {
	/* Bumped up 2026-08-05 (Leon's direct request, "logo bit too small") - same 468x129 (~3.63:1)
	   aspect ratio as the 2026-08-01 bump, just larger again. */
	height: 88px !important;
	width: 320px !important;
	max-width: none !important;
	max-height: 88px !important;
}

#masthead, .site-header, .ast-primary-header-bar, .main-header-bar, .ast-above-header, .ast-below-header-bar {
	background-color: var(--lcwd-panel) !important;
	border-color: rgba(255, 255, 255, 0.1) !important;
}

/* Batch 1 - sticky header with a soft blur, matching the approved mockup. Astra's own "Sticky
   Header" module is a Pro-only feature on this install, so this is a plain CSS sticky rule instead
   - scoped to #masthead only, doesn't touch anything else in Astra's layout. */
#masthead {
	position: sticky;
	top: 0;
	z-index: 999;
	background-color: rgba(19, 27, 46, 0.92) !important;
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
}

/* Batch 1 - "Get a Quote" nav CTA. The live menu's real last item is the Get a Quote link (set via
   `wp menu item`), styled here as a filled amber button instead of a plain text link, matching the
   approved mockup. Scoped to :last-child so no menu-item CSS-class plumbing was needed.
   Real bug fixed 2026-08-05 (Leon: "get a quote button is too big"): Astra's own
   `.main-header-menu .menu-item { display:flex; flex-direction:column }` rule made the <li> stretch
   to match the full header row height (driven by the 80px+ logo), and since the anchor filled that
   stretched <li>, the amber button rendered ~100px tall - only visible on this item because it's
   the only nav link with a background box, every plain-text link was stretching the same way but
   invisibly. `align-self: center` on the <li> stops it matching sibling height; the anchor keeps
   its own natural button size. */
.main-header-menu > li:last-child {
	align-self: center;
}
.main-header-menu > li:last-child > a {
	background-color: var(--lcwd-accent) !important;
	color: var(--lcwd-accent-text) !important;
	font-weight: 700;
	padding: 10px 20px !important;
	border-radius: 8px;
	margin-left: 6px;
	line-height: normal;
	box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 20px -6px var(--lcwd-accent-glow);
	transition: filter .15s ease, box-shadow .15s ease;
}
.main-header-menu > li:last-child > a:hover { filter: brightness(1.08); box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 32px -4px var(--lcwd-accent-glow); }

/* Batch 1 - announcement bar, added via functions.php's `lcwd_announcement_bar` (astra_header_before
   hook, guarded to real LC Web Design pages only - never fires on standalone demo pages). */
.lcwd-announce {
	background-color: var(--lcwd-accent) !important;
	color: var(--lcwd-accent-text) !important;
	text-align: center;
	font-weight: 700;
	font-size: 14px;
	padding: 8px 16px;
}
.lcwd-announce a { color: var(--lcwd-accent-text) !important; text-decoration: underline; margin-left: 8px; white-space: nowrap; }
/* Site title text hidden 2026-08-01 (Leon's direct request, "remove the white writing next to my
   logo") - the logo image itself already has the "LC WEB DESIGN" wordmark baked in, so Astra's
   separate site-title text next to it was purely redundant. */
.ast-site-identity .site-title,
.ast-site-identity .site-description {
	display: none !important;
}
.main-header-menu li a, .main-header-menu > li > a, .ast-primary-menu-first > li > a { color: var(--lcwd-text) !important; }
.main-header-menu li a:hover, .main-header-menu li.current-menu-item > a { color: var(--lcwd-accent) !important; }
/* Real bug fix, 2026-08-05 (Leon: "contact page quote button text cant read"): "Get a Quote" and
   "Contact" both link to /contact/, so WordPress's URL-based current-menu-item matching marks the
   Get a Quote button as "current" too when viewing that page - stacking the line above's amber TEXT
   with the button's own amber BACKGROUND (astra-chrome.css line ~94) made it fully invisible.
   :last-child is always the Get a Quote button, exclude it from the current-page colour override. */
.main-header-menu li.current-menu-item:last-child > a { color: var(--lcwd-accent-text) !important; }

/* Mobile menu - real bug found 2026-07-30 (Leon: "colours are messed up... maybe mobile"): the
   hamburger toggle icon and the off-canvas menu panel use Astra's own default styling, which these
   selectors never covered - the toggle rendered in Astra's default blue, and the open panel was a
   plain white box, both clashing hard against this site's dark navy/gold theme. */
.ast-mobile-header-wrap, .ast-mobile-header-content {
	background-color: var(--lcwd-panel) !important;
}
/* Real bug fix, 2026-08-05 (Leon: "text is still white and unreadable on some nav menus"): the
   wrapper above was already dark, but the <ul class="main-header-menu" id="ast-hf-mobile-menu">
   sitting inside it has Astra's own separate white background painted on TOP of that wrapper -
   never targeted before, so white text over that white UL was still invisible on every page this
   wasn't spot-checked on directly (found via a full ancestor-chain walk, not just the wrapper). */
.ast-mobile-header-content .main-header-menu,
.ast-mobile-header-content ul.ast-nav-menu {
	background-color: transparent !important;
}
button.main-header-menu-toggle,
.ast-mobile-menu-trigger-minimal,
.mobile-menu-toggle-icon,
.ast-mobile-svg {
	color: var(--lcwd-text) !important;
	fill: var(--lcwd-text) !important;
}
/* Real bug fix, 2026-08-05 (Leon: "mobile nav menu colours of text looks off"): only `color` was
   ever overridden here, Astra's own default menu-item background (white for plain items, a pale
   blue-grey "current page" highlight for the active one) was never touched, on the site's dark
   navy panel that meant genuinely invisible white-on-white text for every non-active item. */
.ast-mobile-header-content .main-header-menu li a { color: var(--lcwd-text) !important; background: transparent !important; }
.ast-mobile-header-content .main-header-menu li a:hover,
.ast-mobile-header-content .main-header-menu li.current-menu-item > a { color: var(--lcwd-accent) !important; background: transparent !important; }
.ast-mobile-header-content .main-header-menu li:last-child > a { background-color: var(--lcwd-accent) !important; color: var(--lcwd-accent-text) !important; }

#colophon, .site-footer, .ast-small-footer, .footer-widget-area { background-color: var(--lcwd-panel) !important; color: var(--lcwd-muted) !important; }
#colophon a, .site-footer a, .ast-small-footer a { color: var(--lcwd-accent) !important; }
#colophon h1, #colophon h2, #colophon h3, .site-footer h1, .site-footer h2, .site-footer h3 { color: var(--lcwd-text) !important; }

/* Batch 6 - footer columns (Services/Explore/Contact), injected via astra_footer_content_top. */
.lcwd-footer-columns {
	max-width: 1240px; margin: 0 auto; padding: 40px 24px 32px;
	display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 32px;
	border-bottom: 1px solid rgba(255,255,255,0.08);
}
.lcwd-footer-col h4 { font-family: var(--font-heading); color: var(--lcwd-text) !important; font-size: 14px; text-transform: uppercase; letter-spacing: .5px; margin: 0 0 14px; }
.lcwd-footer-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.lcwd-footer-col a { color: var(--lcwd-muted) !important; text-decoration: none; font-size: 14px; }
.lcwd-footer-col a:hover { color: var(--lcwd-accent) !important; }
.lcwd-footer-col span { color: var(--lcwd-muted) !important; font-size: 14px; }
@media (max-width: 700px) { .lcwd-footer-columns { grid-template-columns: 1fr; gap: 24px; text-align: left; } }

/* Mandatory domain/hosting disclosure (2026-08-09 pricing rework, brief section 58). */
.lcwd-footer-disclosure {
	max-width: 1240px; margin: 0 auto; padding: 16px 24px 0; text-align: center;
	color: var(--lcwd-muted) !important; font-size: 12px; line-height: 1.5;
}

/* Batch 7 (2026-08-05) - footer grew a 4th "Legal" column now that real Privacy/Terms/Cookie pages
   exist. Grid bumped from 3 to 4 columns. */
.lcwd-footer-columns.lcwd-footer-columns-4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
@media (max-width: 700px) { .lcwd-footer-columns.lcwd-footer-columns-4 { grid-template-columns: 1fr; } }

/* Batch 7 - shared styling for standalone content pages (legal pages, and any other plain page
   using the .lcwd-legal wrapper): left-aligned prose instead of the homepage's centred sections. */
.lcwd-legal { max-width: 760px; text-align: left; }
.lcwd-legal h1 { color: var(--lcwd-text) !important; font-size: clamp(28px, 4vw, 40px); margin: 0 0 8px; text-align: left; }
.lcwd-legal .lcwd-lead { text-align: left; margin: 0 0 32px; max-width: none; }
.lcwd-legal h2 { color: var(--lcwd-text) !important; font-size: 20px; text-align: left; margin: 28px 0 10px; }
.lcwd-legal p { color: var(--lcwd-muted) !important; font-size: 15px; text-align: left; max-width: none; margin: 0 0 14px; }
.lcwd-legal a { color: var(--lcwd-accent-blue) !important; }
.lcwd-legal code { background: rgba(255,255,255,0.08); padding: 2px 6px; border-radius: 4px; font-size: 13px; }
.lcwd-legal-list { list-style: disc; padding-left: 20px; margin: 0 0 14px; display: grid; gap: 8px; }
.lcwd-legal-list li { color: var(--lcwd-muted) !important; font-size: 15px; }
.lcwd-legal-list strong { color: var(--lcwd-text) !important; }

.entry-content, .ast-single-post .entry-content, .site-content { background-color: var(--lcwd-bg) !important; color: var(--lcwd-text) !important; }

/* Real bug found and fixed 2026-07-30 (desktop layout audit after Leon's "layout is really bad"
   feedback): Astra's own base CSS sets `.ast-container { display: flex }`. Since front-page.php's
   top-level sections (hero, Design Services, Our Clients) are all direct children of one
   `.ast-container`, they were being laid out as side-by-side flex columns instead of stacked
   vertically - squeezing the whole homepage into a narrow strip on desktop. Scoped to inside
   site-main only, so the header/footer's own `.ast-container` (which legitimately uses flex for
   the logo+menu row) is untouched. */
.site-main .ast-container { display: block !important; }

/* Real hero redesign, 2026-07-30 - was flat centred text only, no image. Per Leon's own
   "colourful, pictures where needed" feedback, now a 2-column layout with a real AI-generated
   hero banner image, matching the same pattern just proven on Tipped2Win's homepage. */
.lcwd-hero-split {
	display: grid;
	grid-template-columns: 1.1fr 1fr;
	gap: 40px;
	align-items: center;
	padding: 48px 0 40px;
	max-width: 1240px;
	margin: 0 auto;
}
.lcwd-hero-text .lcwd-kicker { display: inline-block; color: var(--lcwd-accent) !important; font-family: var(--font-mono); font-weight: 500; letter-spacing: 1px; text-transform: uppercase; font-size: 13px; margin-bottom: 14px; }
.lcwd-hero-text h1 { color: var(--lcwd-text) !important; font-size: clamp(30px, 4.2vw, 46px); margin: 0 0 16px; line-height: 1.15; }
.lcwd-hero-text h1 em { color: var(--lcwd-accent-blue) !important; font-style: normal; text-shadow: 0 0 28px var(--lcwd-accent-glow); }
.lcwd-hero-text p { color: var(--lcwd-muted) !important; font-size: 17px; margin: 0 0 8px; max-width: 480px; }

/* Batch 2 (2026-08-05) - hero rebuilt per the approved mockup at Planning/batch-2-mockup.html:
   two CTAs, a 4-item reassurance list, and a browser-frame/mobile-frame visual composition around
   the existing hero image (same "browser frame" visual language already used for the client cards
   below, kept consistent rather than inventing a new pattern). */
.lcwd-hero-ctas { display: flex; flex-wrap: wrap; gap: 14px; margin: 22px 0 26px; }
.lcwd-hero-ctas .lcwd-btn { margin-top: 0; }
.lcwd-btn.lcwd-btn-secondary { background: transparent !important; color: var(--lcwd-text) !important; border: 1px solid rgba(255,255,255,0.25); margin-top: 0 !important; }
.lcwd-btn.lcwd-btn-secondary:hover { border-color: var(--lcwd-accent); }

.lcwd-reassure-list {
	list-style: none; margin: 0; padding: 0;
	display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px 20px; max-width: 460px;
}
.lcwd-reassure-list li {
	display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--lcwd-muted) !important;
}
.lcwd-reassure-list svg { flex-shrink: 0; color: var(--lcwd-accent); }

.lcwd-hero-image { position: relative; }
.lcwd-hero-browser-frame {
	border-radius: 12px; overflow: hidden; border: 1px solid rgba(255,255,255,0.12);
	box-shadow: 0 30px 60px rgba(0,0,0,0.45), 0 0 0 1px var(--lcwd-accent-line), 0 0 60px -12px var(--lcwd-accent-glow);
	background-color: var(--lcwd-panel) !important;
}
.lcwd-browser-dots { display: flex; gap: 6px; padding: 10px 14px; background: rgba(255,255,255,0.06); }
.lcwd-browser-dots span { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,0.25); }
.lcwd-hero-browser-frame img { display: block; width: 100%; height: auto; }

/* 2026-08-27: minimal CSS-only hero screen content, matching the approved concept exactly
   (Claude Home BUILD/homepage-redesign-v1.html) - replaces the old illustrated laptop/phone/
   pen-tool hero image, which still carried its pre-rebrand gold accents and read as visually
   inconsistent against the rest of the electric-blue system. No image dependency. */
.lcwd-hero-mockscreen { padding: 34px 26px; background: linear-gradient(160deg, rgba(255,255,255,.035), transparent 70%); }
.lcwd-hero-mockscreen-tag { display: block; font-family: var(--font-mono); font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; color: var(--lcwd-accent) !important; }
.lcwd-hero-mockscreen h3 { color: var(--lcwd-text) !important; font-size: 1.3rem; margin: 10px 0 0; }
.lcwd-hero-mockscreen p { color: var(--lcwd-muted) !important; margin-top: 8px; font-size: .85rem; }
.lcwd-hero-mockscreen-row { display: flex; gap: 8px; margin-top: 18px; }
.lcwd-hero-mockscreen-row div { flex: 1; height: 46px; border-radius: 6px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1); }

.lcwd-hero-mobile-frame {
	position: absolute; right: -14px; bottom: -24px; width: 34%;
	border-radius: 18px; overflow: hidden; border: 4px solid var(--lcwd-panel);
	box-shadow: 0 20px 40px rgba(0,0,0,0.5); background-color: var(--lcwd-panel) !important;
}
.lcwd-hero-mobile-frame img { display: block; width: 100%; height: auto; }

.lcwd-hero-palette-chip {
	position: absolute; left: -14px; top: -14px; z-index: 2;
	background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.12);
	border-radius: 12px; padding: 10px 12px; display: flex; gap: 6px;
	box-shadow: 0 10px 24px rgba(0,0,0,0.4);
}
.lcwd-hero-palette-chip span { width: 16px; height: 16px; border-radius: 50%; display: block; }

.lcwd-hero-float {
	position: absolute; z-index: 2; background-color: var(--lcwd-panel) !important;
	border: 1px solid rgba(255,255,255,0.12); border-radius: 999px; padding: 6px 14px;
	font-size: 12px; font-weight: 700; color: var(--lcwd-muted) !important;
	box-shadow: 0 8px 18px rgba(0,0,0,0.35);
}
.lcwd-hero-float-responsive { top: 40%; left: -20px; }
.lcwd-hero-float-custom { top: 6%; right: 8%; }

@media (max-width: 860px) {
	.lcwd-hero-split { grid-template-columns: 1fr; text-align: center; padding-top: 30px; }
	.lcwd-hero-text p { margin-inline: auto; }
	.lcwd-hero-image { order: -1; margin-bottom: 20px; }
	.lcwd-hero-ctas, .lcwd-reassure-list { justify-content: center; margin-inline: auto; }
	.lcwd-hero-float, .lcwd-hero-palette-chip { display: none; }
	.lcwd-hero-mobile-frame { width: 28%; right: 8px; bottom: -16px; }
}

/* Batch 2 - trust strip, directly below the hero. */
/* Proof strip - thin dot-separated credibility row directly under the hero, per the approved
   mockup ("LC Web Design Homepage Build" artifact). */
.lcwd-proof-strip {
	max-width: 1240px; margin: 0 auto 56px; padding: 16px 24px;
	border-top: 1px solid rgba(255,255,255,0.08); border-bottom: 1px solid rgba(255,255,255,0.08);
	display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 10px 14px;
	font-size: 13px; color: var(--lcwd-muted);
}
.lcwd-proof-strip b { color: var(--lcwd-accent-blue); }
.lcwd-proof-strip .lcwd-proof-dot { color: var(--lcwd-muted); opacity: .5; }

/* No-agency-bloat spec grid - horizontal stat tiles, per the approved mockup's .spec-grid. */
.lcwd-spec-grid {
	display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap: 1px;
	background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.08);
	border-radius: 12px; overflow: hidden;
}
.lcwd-spec { background-color: var(--lcwd-panel) !important; padding: 26px 18px; text-align: center; }
.lcwd-spec .lcwd-spec-v { font-family: var(--font-heading); color: var(--lcwd-accent-blue); font-size: 1.3rem; font-weight: 700; }
.lcwd-spec .lcwd-spec-l { font-size: 12px; color: var(--lcwd-muted); margin-top: 8px; }
@media (max-width: 760px) { .lcwd-spec-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }

.lcwd-trust-strip {
	background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.08);
	border-radius: 20px; padding: 40px 32px; text-align: center;
}
.lcwd-trust-strip h2 { font-size: clamp(24px, 3vw, 32px); margin: 0 0 32px; }
.lcwd-trust-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 20px; }
.lcwd-trust-item { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.lcwd-trust-icon {
	width: 44px; height: 44px; border-radius: 12px; background: rgba(65,114,232,0.14);
	display: grid; place-items: center; color: var(--lcwd-accent);
}
.lcwd-trust-item span { font-size: 14px; font-weight: 700; color: var(--lcwd-text) !important; }
@media (max-width: 760px) {
	.lcwd-trust-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

/* Batch 3 (2026-08-05) - needs-selector, per the approved mockup at Planning/batch-3-mockup.html.
   Cards route to existing anchors where a matching section already exists, otherwise a real
   mailto: with a pre-filled subject line (no dead links, no invented pages). */
.lcwd-needs-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; }
.lcwd-need-card {
	display: block; background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.1);
	border-radius: 14px; padding: 24px; text-decoration: none;
	transition: transform .15s ease, border-color .15s ease;
}
.lcwd-need-card:hover, .lcwd-need-card:focus-visible { transform: translateY(-3px); border-color: var(--lcwd-accent); outline: none; }
.lcwd-need-card h3 { color: var(--lcwd-text) !important; font-size: 18px; margin: 0 0 6px; }
.lcwd-need-card p { color: var(--lcwd-muted) !important; font-size: 13px; margin: 0 0 10px; }
.lcwd-need-arrow { color: var(--lcwd-accent-blue) !important; font-weight: 700; font-size: 13px; }
@media (max-width: 760px) { .lcwd-needs-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 520px) { .lcwd-needs-grid { grid-template-columns: 1fr; } }

/* Batch 3 - "Not sure which package?" assist strip below the Packages section's existing cards. */
.lcwd-assist-strip {
	margin-top: 28px; display: flex; align-items: center; justify-content: space-between;
	gap: 20px; flex-wrap: wrap; background: rgba(65,114,232,0.08) !important;
	border: 1px solid rgba(65,114,232,0.25); border-radius: 14px; padding: 22px 26px;
}
.lcwd-assist-strip p { margin: 0; color: var(--lcwd-muted) !important; font-size: 15px; }
.lcwd-assist-strip strong { color: var(--lcwd-text) !important; }
.lcwd-assist-strip .lcwd-btn { margin-top: 0; white-space: nowrap; }

/* Batch 4 (2026-08-05) - Featured Work, per the approved mockup at Planning/batch-4-mockup.html.
   Deliberately no invented "challenge/goals/outcome" narrative - only facts already stated
   elsewhere on this site (real client, real WooCommerce shop), per this project's standing rule
   against fabricating client results. */
.lcwd-featured {
	display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center;
	background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.1);
	border-radius: 20px; padding: 32px;
}
.lcwd-featured-frame { border-radius: 12px; overflow: hidden; border: 1px solid rgba(255,255,255,0.12); }
.lcwd-featured-frame img { display: block; width: 100%; }
.lcwd-featured-badge {
	display: inline-block; background: rgba(224,90,134,0.15); color: #e05a86;
	font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px;
	padding: 4px 10px; border-radius: 999px; margin-bottom: 12px;
}
.lcwd-featured-text h3 { color: var(--lcwd-text) !important; font-size: 26px; margin: 0 0 10px; }
.lcwd-featured-text > p { color: var(--lcwd-muted) !important; font-size: 15px; margin: 0 0 10px; text-align: left; max-width: none; }
.lcwd-featured-facts { list-style: none; margin: 16px 0; padding: 0; display: grid; gap: 8px; }
.lcwd-featured-facts li { font-size: 14px; color: var(--lcwd-muted) !important; display: flex; gap: 8px; }
.lcwd-featured-facts li svg { color: var(--lcwd-accent); flex-shrink: 0; }
@media (max-width: 800px) { .lcwd-featured { grid-template-columns: 1fr; } }

/* Batch 4 - Before/After, 100% real: LC Web Design's own homepage from this project's git history
   (commit 678da44, the actual first shipped version) vs. today. Not staged, not fabricated. */
.lcwd-ba-shots { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 24px; }
.lcwd-ba-shot { border-radius: 14px; overflow: hidden; border: 1px solid rgba(255,255,255,0.1); }
.lcwd-ba-shot img { display: block; width: 100%; }
.lcwd-ba-shot-label { padding: 12px 16px; background-color: var(--lcwd-panel) !important; font-weight: 700; font-size: 13px; text-transform: uppercase; letter-spacing: .4px; }
.lcwd-ba-before { color: var(--lcwd-muted) !important; }
.lcwd-ba-after { color: var(--lcwd-accent) !important; }
.lcwd-ba-improvements { list-style: none; margin: 24px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px 24px; }
.lcwd-ba-improvements li { font-size: 14px; color: var(--lcwd-muted) !important; display: flex; gap: 8px; }
.lcwd-ba-improvements li svg { color: var(--lcwd-accent); flex-shrink: 0; }
@media (max-width: 760px) { .lcwd-ba-shots { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .lcwd-ba-improvements { grid-template-columns: 1fr; } }

/* Batch 5 (2026-08-05) - services ecosystem (hub + spokes), per the approved mockup at
   Planning/batch-5-mockup.html. Every spoke is a real thing this business already offers
   (sourced from the existing Add-ons/Packages pricing), nothing invented. Replaces the old
   3-card "Design Services" grid at the same #services anchor. */
.lcwd-ecosystem { display: grid; grid-template-columns: 1.1fr 1fr; gap: 24px; align-items: stretch; }
.lcwd-eco-hub {
	background: linear-gradient(155deg, var(--lcwd-panel), #1a2540); border: 1px solid rgba(65,114,232,0.3);
	border-radius: 20px; padding: 32px; display: flex; flex-direction: column; justify-content: center;
}
.lcwd-eco-hub-badge { display: inline-block; color: var(--lcwd-accent) !important; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; font-size: 12px; margin-bottom: 10px; }
.lcwd-eco-hub h3 { color: var(--lcwd-text) !important; font-size: 26px; margin: 0 0 10px; }
.lcwd-eco-hub p { color: var(--lcwd-muted) !important; font-size: 15px; margin: 0 0 18px; text-align: left; max-width: none; }
.lcwd-eco-hub-links { display: flex; flex-wrap: wrap; gap: 10px; }
.lcwd-eco-hub-links a { font-size: 13px; font-weight: 700; color: var(--lcwd-accent-blue) !important; text-decoration: none; }

.lcwd-eco-spokes { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
.lcwd-eco-spoke {
	background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.1); border-radius: 14px;
	padding: 16px; text-decoration: none; display: flex; flex-direction: column; gap: 6px;
	transition: transform .15s ease, border-color .15s ease;
}
.lcwd-eco-spoke:hover, .lcwd-eco-spoke:focus-visible { transform: translateY(-2px); border-color: var(--lcwd-accent); outline: none; }
.lcwd-eco-spoke h4 { font-family: var(--font-heading); font-size: 14px; margin: 0; color: var(--lcwd-text) !important; }
.lcwd-eco-spoke span { font-size: 12px; color: var(--lcwd-muted) !important; }
@media (max-width: 800px) { .lcwd-ecosystem { grid-template-columns: 1fr; } }
@media (max-width: 500px) { .lcwd-eco-spokes { grid-template-columns: 1fr; } }

/* Batch 5 - process ribbon (4 stages). */
.lcwd-process-ribbon { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 20px; margin-top: 10px; }
.lcwd-process-step { position: relative; background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.1); border-radius: 14px; padding: 22px 20px; }
.lcwd-process-num {
	width: 30px; height: 30px; border-radius: 50%; background: var(--lcwd-accent); color: var(--lcwd-accent-text);
	display: grid; place-items: center; font-weight: 800; font-family: var(--font-heading); font-size: 14px; margin-bottom: 14px;
}
.lcwd-process-step h4 { font-family: var(--font-heading); font-size: 16px; margin: 0 0 8px; color: var(--lcwd-text) !important; }
.lcwd-process-step p { color: var(--lcwd-muted) !important; font-size: 13px; margin: 0; }
@media (max-width: 800px) { .lcwd-process-ribbon { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 500px) { .lcwd-process-ribbon { grid-template-columns: 1fr; } }

/* Batch 6 (2026-08-05) - FAQ, per the approved-in-audit structure. Uses native <details>/<summary>
   for a genuinely accessible accordion (native keyboard support, native screen-reader semantics,
   content stays in the DOM/crawlable, no custom JS/ARIA plumbing needed, no hidden-content-trap
   risk - simplest way to satisfy the audit's accordion accessibility requirements). */
.lcwd-faq-list { max-width: 760px; margin: 0 auto; display: grid; gap: 10px; }
.lcwd-faq-item {
	background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.1);
	border-radius: 12px; padding: 4px 20px;
}
.lcwd-faq-item summary {
	color: var(--lcwd-text) !important; font-weight: 700; font-size: 15px;
	padding: 16px 0; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center;
}
.lcwd-faq-item summary::-webkit-details-marker { display: none; }
.lcwd-faq-item summary::after { content: '+'; color: var(--lcwd-accent) !important; font-size: 20px; font-weight: 400; margin-left: 12px; }
.lcwd-faq-item[open] summary::after { content: '\2212'; }
.lcwd-faq-item summary:focus-visible { outline: 2px solid var(--lcwd-accent); outline-offset: 2px; }
.lcwd-faq-item p { color: var(--lcwd-muted) !important; font-size: 14px; margin: 0 0 18px; text-align: left; max-width: none; }
.lcwd-faq-item a { color: var(--lcwd-accent-blue) !important; }

/* Batch 6 - Final CTA, dark conversion band. */
.lcwd-final-cta {
	background-color: var(--lcwd-panel) !important; padding: 64px 24px; text-align: center;
	border-radius: 18px; border: 1px solid var(--lcwd-accent-line);
	box-shadow: 0 0 80px -20px var(--lcwd-accent-glow);
}
.lcwd-final-cta-inner { max-width: 640px; margin: 0 auto; }
.lcwd-final-cta h2 { font-size: clamp(24px, 3.4vw, 36px); margin: 0 0 14px; color: var(--lcwd-text) !important; }
.lcwd-final-cta p { color: var(--lcwd-muted) !important; font-size: 16px; margin: 0 0 8px; }
.lcwd-final-cta-reassure { font-size: 13px; margin-top: 14px !important; }

.lcwd-btn {
	display: inline-flex; align-items: center; justify-content: center;
	padding: 14px 30px; border-radius: 8px; font-weight: 800; text-decoration: none;
	background: var(--lcwd-accent); color: var(--lcwd-accent-text) !important; margin-top: 22px;
	box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 24px -6px var(--lcwd-accent-glow);
	transition: filter .15s ease, box-shadow .15s ease, transform .15s ease;
}
.lcwd-btn:hover { filter: brightness(1.08); box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 42px -4px var(--lcwd-accent-glow); transform: translateY(-1px); }
.lcwd-btn:disabled { cursor: not-allowed; opacity: 0.45; box-shadow: none; }
.lcwd-btn:disabled:hover { filter: none; transform: none; }
button.lcwd-btn { border: none; cursor: pointer; font: inherit; }

.lcwd-nexus-platforms { display: flex; gap: 18px; flex-wrap: wrap; }
@media (max-width: 600px) { .lcwd-nexus-platforms { flex-direction: column; } }

.lcwd-section { max-width: 1240px; margin: 0 auto 56px; }
.lcwd-section h2 { color: var(--lcwd-text) !important; font-size: 28px; text-align: center; margin: 0 0 10px; }
.lcwd-section > p.lcwd-lead { color: var(--lcwd-muted) !important; text-align: center; max-width: 640px; margin: 0 auto 32px; }

.lcwd-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; }
.lcwd-card {
	background-color: var(--lcwd-panel) !important;
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 14px;
	padding: 24px;
}
.lcwd-card h3 { color: var(--lcwd-text) !important; font-size: 19px; margin: 0 0 8px; }
.lcwd-card p { color: var(--lcwd-muted) !important; font-size: 14px; margin: 0 0 14px; }
.lcwd-card a.lcwd-visit { color: var(--lcwd-accent) !important; font-weight: 700; text-decoration: none; }

/* Service card icon badges, 2026-07-30 - cards were previously text-only. */
.lcwd-card-icon {
	width: 48px; height: 48px; border-radius: 12px;
	display: grid; place-items: center; margin-bottom: 14px;
}
.lcwd-card-icon svg { width: 24px; height: 24px; }

/* Client site "browser frame" cards, 2026-07-30. Updated 2026-07-31 (Leon's direct request): now
   shows a real screenshot of each live site's actual homepage inside the frame, taken via a headless
   Playwright container (Docker), instead of the earlier stylised colour-block mockup, real
   screenshots genuinely weren't capturable in this environment when this was first built. The dots
   bar + coloured frame border are kept, still a real, useful "browser window" visual cue. */
.lcwd-cards-clients { margin-top: 8px; }
a.lcwd-client-card {
	display: block;
	background-color: var(--lcwd-panel) !important;
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 14px;
	padding: 18px 24px 24px;
	text-decoration: none;
	transition: transform .15s ease, border-color .15s ease;
}
a.lcwd-client-card:hover, a.lcwd-client-card:focus-visible { transform: translateY(-3px); border-color: var(--frame-color, var(--lcwd-accent)); }
a.lcwd-client-card:focus-visible { outline: 2px solid var(--lcwd-accent); outline-offset: 2px; }
a.lcwd-client-card h3 { color: var(--lcwd-text) !important; font-size: 19px; margin: 0 0 8px; }
a.lcwd-client-card p { color: var(--lcwd-muted) !important; font-size: 14px; margin: 0 0 10px; }
a.lcwd-client-card .lcwd-visit { color: var(--lcwd-accent) !important; font-weight: 700; font-size: 14px; }

.lcwd-browser-frame {
	border-radius: 10px;
	overflow: hidden;
	margin-bottom: 16px;
	border: 1px solid rgba(255, 255, 255, 0.1);
	background-color: rgba(255, 255, 255, 0.03);
}
.lcwd-browser-dots {
	display: flex; gap: 6px; padding: 10px 12px;
	background-color: var(--frame-color, var(--lcwd-accent));
}
.lcwd-browser-dots span {
	width: 8px; height: 8px; border-radius: 50%;
	background-color: rgba(255, 255, 255, 0.85);
}
.lcwd-client-thumb {
	display: block;
	width: 100%;
	aspect-ratio: 8 / 5;
	object-fit: cover;
	object-position: top center;
}

.lcwd-panel-note {
	text-align: center; max-width: 640px; margin: 0 auto 56px; padding: 20px;
	border-radius: 12px; background: rgba(65, 114, 232, 0.08); border: 1px solid rgba(65, 114, 232, 0.25);
	color: var(--lcwd-muted) !important; font-size: 14px;
}

/* Website Packages section, 2026-08-01 - package name + price badge on each demo card. */
.lcwd-package-badge {
	display: inline-block; background: rgba(65, 114, 232, 0.15); color: var(--lcwd-accent) !important;
	font-family: var(--font-mono); font-size: 12px; font-weight: 500; letter-spacing: .3px; text-transform: uppercase;
	padding: 5px 12px; border-radius: 999px; margin-bottom: 12px;
}

/* "Coming soon" cards - not yet built, so deliberately not a link (real rule elsewhere in this
   codebase: never link to a page that doesn't exist yet) and visually dimmed against the 2 real,
   clickable demo cards next to them. */
div.lcwd-client-card-soon {
	opacity: .72; cursor: default;
}
div.lcwd-client-card-soon:hover { transform: none; border-color: rgba(255, 255, 255, 0.1); }
.lcwd-thumb-placeholder {
	aspect-ratio: 8 / 5; display: grid; place-items: center;
	color: var(--lcwd-muted) !important; font-size: 13px; font-weight: 700;
	text-transform: uppercase; letter-spacing: .5px; background: rgba(255, 255, 255, 0.03);
}
span.lcwd-visit-soon { color: var(--lcwd-muted) !important; font-weight: 700; font-size: 14px; }

/* Add-ons & Domain/Hosting sections, 2026-08-01. Alt band just to separate this section visually
   from the plain dark background either side of it, same panel colour already used for cards. */
.lcwd-section-alt {
	background-color: var(--lcwd-panel) !important; border-radius: 20px;
	padding: 48px 32px; border: 1px solid rgba(255, 255, 255, 0.08);
}
.lcwd-addon-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; }
.lcwd-addon {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 14px 18px; border-radius: 10px; background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.08);
}
.lcwd-addon span { color: var(--lcwd-muted) !important; font-size: 14px; }
.lcwd-addon strong { color: var(--lcwd-text) !important; font-size: 14px; white-space: nowrap; }

.lcwd-domain-panel {
	display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap;
	background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 20px; padding: 40px;
}
.lcwd-domain-panel h2 { text-align: left; margin: 0 0 10px; }
.lcwd-domain-panel .lcwd-lead { text-align: left; margin: 0; max-width: 520px; }
.lcwd-domain-panel .lcwd-btn { margin-top: 0; flex-shrink: 0; }
@media (max-width: 640px) {
	.lcwd-domain-panel { flex-direction: column; align-items: flex-start; padding: 28px; }
	.lcwd-domain-panel h2, .lcwd-domain-panel .lcwd-lead { text-align: left; }
}

/* Batch 7 (2026-08-05) - real separate pages (Services/Packages/Work/About/Contact + legal pages).
   Shared page-title style for the non-homepage pages. */
.lcwd-page-title { color: var(--lcwd-text) !important; font-size: clamp(30px, 4.5vw, 46px); text-align: center; margin: 0 0 10px; }

/* Packages comparison grid. */
.lcwd-compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; margin-top: 8px; }
.lcwd-compare-card {
	position: relative; background-color: var(--lcwd-panel) !important; border: 1px solid rgba(255,255,255,0.1);
	border-radius: 14px; padding: 22px; display: flex; flex-direction: column;
}
/* 2026-08-27: reordered to match the approved concept's price hierarchy (tier label -> big price
   -> description -> features) using flex `order` on the existing markup, rather than a large price
   badge sitting after a small tier name - no PHP template change needed. */
.lcwd-compare-card h3 {
	order: 1; color: var(--lcwd-muted) !important; font-family: var(--font-mono); font-size: 12px;
	font-weight: 500; letter-spacing: .08em; text-transform: uppercase; margin: 0 0 10px;
}
.lcwd-compare-card .lcwd-package-badge {
	order: 2; display: block; background: none !important; padding: 0; border-radius: 0;
	font-family: var(--font-heading); font-size: 2.1rem; font-weight: 700; text-transform: none;
	letter-spacing: normal; color: var(--lcwd-accent-blue) !important; margin: 0 0 12px;
}
.lcwd-compare-for { order: 3; color: var(--lcwd-muted) !important; font-size: 13px; margin: 0 0 12px; text-align: left; max-width: none; }
.lcwd-compare-list { order: 4; list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 6px; flex-grow: 1; }
.lcwd-compare-card .lcwd-visit { order: 5; margin-top: auto; }
.lcwd-compare-list li { color: var(--lcwd-muted) !important; font-size: 13px; padding-left: 16px; position: relative; }
.lcwd-compare-list li::before { content: '\2713'; position: absolute; left: 0; color: var(--lcwd-accent); font-weight: 700; }
.lcwd-compare-popular {
	border-color: var(--lcwd-accent); border-width: 2px;
	box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 44px -12px var(--lcwd-accent-glow);
}
.lcwd-compare-new { border-color: var(--lcwd-accent-blue); box-shadow: 0 0 0 1px var(--lcwd-accent-line), 0 0 32px -10px var(--lcwd-accent-glow); }
.lcwd-compare-new-tag {
	position: absolute; top: -12px; right: 20px; background: var(--lcwd-accent-blue); color: var(--lcwd-accent-text);
	font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; padding: 4px 12px; border-radius: 999px;
}
.lcwd-compare-popular-tag {
	position: absolute; top: -12px; left: 20px; background: var(--lcwd-accent); color: var(--lcwd-accent-text);
	font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; padding: 4px 12px; border-radius: 999px;
}

/* Service detail blocks (Services page). */
.lcwd-service-detail { max-width: 760px; margin: 0 auto 28px; padding-bottom: 28px; border-bottom: 1px solid rgba(255,255,255,0.08); }
.lcwd-service-detail:last-child { border-bottom: none; }
.lcwd-service-detail h3 { color: var(--lcwd-text) !important; font-size: 22px; margin: 0 0 6px; }
.lcwd-service-who { color: var(--lcwd-accent) !important; font-size: 13px; font-weight: 700; margin: 0 0 10px; text-align: left; max-width: none; }
.lcwd-service-detail > p:not(.lcwd-service-who) { color: var(--lcwd-muted) !important; font-size: 15px; text-align: left; max-width: none; margin: 0 0 10px; }
.lcwd-service-detail .lcwd-visit { color: var(--lcwd-accent-blue) !important; font-weight: 700; font-size: 14px; text-decoration: none; }

/* About page body. */
.lcwd-about-body { max-width: 700px; margin: 0 auto; }
.lcwd-about-body h2 { color: var(--lcwd-text) !important; font-size: 20px; text-align: left; margin: 26px 0 8px; }
.lcwd-about-body h2:first-child { margin-top: 0; }
.lcwd-about-body p { color: var(--lcwd-muted) !important; font-size: 15px; text-align: left; max-width: none; margin: 0 0 10px; }
.lcwd-about-body a { color: var(--lcwd-accent-blue) !important; }
/* Real bug fix, 2026-08-05 (Leon: "start your project button text is blue make it black"): the
   rule above (0,1,1 specificity) was beating .lcwd-btn's own colour (0,1,0), same cascade-loss
   pattern already hit twice before on this project. Scoped override wins cleanly (0,2,0). */
.lcwd-about-body .lcwd-btn { color: var(--lcwd-accent-text) !important; }

/* Contact form. */
.lcwd-contact-form { max-width: 600px; margin: 0 auto; display: grid; gap: 18px; }
.lcwd-form-row { display: grid; gap: 6px; }
.lcwd-form-row-split { grid-template-columns: 1fr 1fr; display: grid; gap: 18px; }
.lcwd-form-row-split > div { display: grid; gap: 6px; }
.lcwd-contact-form label { color: var(--lcwd-text) !important; font-size: 14px; font-weight: 700; }
.lcwd-form-optional, .lcwd-form-required { font-weight: 400; color: var(--lcwd-muted) !important; font-size: 12px; }
.lcwd-form-required { color: var(--lcwd-accent) !important; font-weight: 700; }
.lcwd-contact-form input, .lcwd-contact-form select, .lcwd-contact-form textarea {
	background-color: var(--lcwd-bg) !important; color: var(--lcwd-text) !important;
	border: 1px solid rgba(255,255,255,0.15); border-radius: 8px; padding: 12px 14px;
	font-family: var(--font-body); font-size: 15px; width: 100%;
	height: auto; line-height: normal;
}
.lcwd-contact-form input:focus, .lcwd-contact-form select:focus, .lcwd-contact-form textarea:focus {
	outline: 2px solid var(--lcwd-accent); outline-offset: 1px;
}
.lcwd-form-error { display: none; color: #ff8080; font-size: 12px; }
.lcwd-form-row[data-invalid="true"] .lcwd-form-error,
.lcwd-form-row-split > div[data-invalid="true"] .lcwd-form-error { display: block; }
.lcwd-form-row[data-invalid="true"] input, .lcwd-form-row-split > div[data-invalid="true"] input { border-color: #ff8080; }
.lcwd-form-status { display: none; color: var(--lcwd-accent) !important; font-size: 14px; font-weight: 700; margin: 0; }
.lcwd-form-status[data-shown="true"] { display: block; }
@media (max-width: 600px) { .lcwd-form-row-split { grid-template-columns: 1fr; } }

/* Guides section (2026-08-09) - approved style-tile in Planning/guides-section-mockup.html */
.lcwd-guides-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 20px; }
.lcwd-guide-card {
	background: var(--lcwd-panel); border-radius: 14px; overflow: hidden;
	border: 1px solid rgba(255,255,255,0.06); display: block; text-decoration: none;
	transition: transform .15s ease;
}
.lcwd-guide-card:hover { transform: translateY(-3px); }
.lcwd-guide-thumb { height: 140px; background: linear-gradient(135deg, #1a2a4a, var(--lcwd-accent-blue)); }
.lcwd-guide-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lcwd-guide-card-body { padding: 20px; }
.lcwd-guide-tag {
	display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase;
	color: var(--lcwd-accent) !important; background: rgba(65,114,232,0.12); padding: 4px 10px;
	border-radius: 999px; margin-bottom: 12px;
}
.lcwd-guide-card-body h3 { font-family: var(--font-heading); font-size: 18px; margin: 0 0 10px; line-height: 1.3; color: var(--lcwd-text) !important; }
.lcwd-guide-meta { color: var(--lcwd-muted) !important; font-size: 13px; }

.lcwd-guide-article { max-width: 900px; margin: 0 auto; padding: 20px 0 60px; }
.lcwd-guide-article-header { text-align: center; max-width: 720px; margin: 0 auto 30px; }
.lcwd-guide-article-header h1 { font-family: var(--font-heading); font-size: 34px; line-height: 1.25; margin: 14px 0; color: var(--lcwd-text) !important; }
.lcwd-guide-article-meta { color: var(--lcwd-muted) !important; font-size: 14px; }
.lcwd-guide-article-hero { height: 300px; border-radius: 16px; overflow: hidden; margin: 20px 0 40px; background: linear-gradient(135deg, #1a2a4a, var(--lcwd-accent-blue)); }
.lcwd-guide-article-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lcwd-guide-article-body { max-width: 680px; margin: 0 auto; font-size: 17px; line-height: 1.75; color: var(--lcwd-muted) !important; }
.lcwd-guide-article-body h2 { font-family: var(--font-heading); color: var(--lcwd-text) !important; font-size: 26px; margin: 40px 0 16px; }
.lcwd-guide-article-body h3 { font-family: var(--font-heading); color: var(--lcwd-text) !important; font-size: 20px; margin: 30px 0 12px; }
.lcwd-guide-article-body p { margin: 0 0 18px; }
.lcwd-guide-article-body ul { margin: 0 0 18px; padding-left: 22px; }
.lcwd-guide-article-body li { margin-bottom: 8px; }
.lcwd-guide-article-body a { color: var(--lcwd-accent-blue) !important; }
.lcwd-guide-callout {
	background: var(--lcwd-accent-mint-bg) !important; color: var(--lcwd-accent-mint-text) !important;
	border-radius: 12px; padding: 20px 24px; margin: 30px 0; font-size: 15px;
}
.lcwd-guide-callout strong { display: block; margin-bottom: 6px; font-family: var(--font-heading); }
.lcwd-guide-article-body blockquote {
	border-left: 3px solid var(--lcwd-accent); margin: 30px 0; padding: 4px 0 4px 22px;
	font-style: italic; color: var(--lcwd-text) !important;
}
.lcwd-guide-cta { max-width: 680px; margin: 50px auto 0; background: var(--lcwd-panel); border-radius: 14px; padding: 32px; text-align: center; }
.lcwd-guide-cta h3 { font-family: var(--font-heading); font-size: 22px; margin: 0 0 10px; color: var(--lcwd-text) !important; }
.lcwd-guide-cta p { color: var(--lcwd-muted) !important; margin: 0 0 20px; }
.lcwd-guide-related { max-width: 900px; margin: 60px auto 0; }
.lcwd-guide-related h3 { font-family: var(--font-heading); font-size: 20px; margin-bottom: 20px; color: var(--lcwd-text) !important; }
.lcwd-guide-related .lcwd-guides-grid { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 768px) {
	.lcwd-guides-grid, .lcwd-guide-related .lcwd-guides-grid { grid-template-columns: 1fr; }
}

/* Build-Your-Website calculator (2026-08-09 pricing rework, brief section 14). */
.lcwd-calc { max-width: 720px; margin: 20px auto 0; }
.lcwd-calc-step { background: var(--lcwd-panel); border-radius: 14px; padding: 24px; margin-bottom: 18px; border: 1px solid rgba(255,255,255,0.06); }
.lcwd-calc-step h3 { font-family: var(--font-heading); font-size: 17px; color: var(--lcwd-text) !important; margin: 0 0 16px; display: flex; align-items: center; gap: 10px; }
.lcwd-calc-step-num {
	display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px;
	border-radius: 50%; background: var(--lcwd-accent); color: var(--lcwd-accent-text); font-size: 13px; font-weight: 800; flex-shrink: 0;
}
.lcwd-calc-options { display: grid; gap: 10px; }
.lcwd-calc-options-multi { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.lcwd-calc-option {
	display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 10px;
	background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08); cursor: pointer;
	color: var(--lcwd-muted) !important; font-size: 14px;
}
.lcwd-calc-option:has(input:checked) { border-color: var(--lcwd-accent); background: rgba(65,114,232,0.08); color: var(--lcwd-text) !important; }
.lcwd-calc-option input { accent-color: var(--lcwd-accent); flex-shrink: 0; }
.lcwd-calc-products-row { margin-top: 14px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lcwd-calc-products-row label { color: var(--lcwd-muted) !important; font-size: 14px; }
.lcwd-calc-products-row input { width: 90px; background: var(--lcwd-bg) !important; color: var(--lcwd-text) !important; border: 1px solid rgba(255,255,255,0.15); border-radius: 8px; padding: 8px 10px; }
.lcwd-calc-products-note { color: var(--lcwd-muted) !important; font-size: 13px; }
.lcwd-calc-total {
	display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap;
	background: var(--lcwd-bg) !important; border: 2px solid var(--lcwd-accent); border-radius: 14px; padding: 24px 28px;
}
.lcwd-calc-total-label { display: block; color: var(--lcwd-muted) !important; font-size: 13px; text-transform: uppercase; letter-spacing: .5px; }
.lcwd-calc-total-amount { display: block; font-family: var(--font-heading); font-size: 34px; color: var(--lcwd-accent) !important; font-weight: 700; }

/* Client vs. In-House type badge, 2026-08-23 - distinguishes real paying clients from Leon's own
   other businesses on the Work page (Claude Queue q_5401fa61). Same pill shape as
   .lcwd-package-badge, distinct colours so the two badge families stay visually separate. */
.lcwd-type-badge {
	display: inline-block; font-size: 12px; font-weight: 800; letter-spacing: .3px;
	text-transform: uppercase; padding: 5px 12px; border-radius: 999px; margin-bottom: 12px;
}
.lcwd-type-badge--client {
	background: rgba(127, 224, 189, 0.15); color: var(--lcwd-accent-mint-text) !important;
}
.lcwd-type-badge--inhouse {
	background: rgba(79, 124, 255, 0.15); color: var(--lcwd-accent-blue) !important;
}
