/*!
 * SunWorks Energy — main stylesheet (v0.14.0)
 * Single source for tokens, base, layout, components and page sections.
 * Replaces the 19 layered stylesheets and Bootstrap used up to v0.8.0.
 *
 * 1. Fonts      2. Tokens      3. Base        4. Layout
 * 5. Components 6. Header      7. Hero        8. Sections
 * 9. Pages      10. Footer     11. Motion     12. Utilities / print
 */

/* 1. Fonts — self-hosted, Latin subset (licences in assets/fonts/) */
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 200 900; font-display: swap; src: url("../fonts/source-sans-3-var-latin.woff2") format("woff2"), url("../fonts/source-sans-3-var-latin.woff") format("woff"); }
@font-face { font-family: "Ubuntu"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/ubuntu-medium-latin.woff2") format("woff2"), url("../fonts/ubuntu-medium-latin.woff") format("woff"); }
@font-face { font-family: "Ubuntu"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/ubuntu-bold-latin.woff2") format("woff2"), url("../fonts/ubuntu-bold-latin.woff") format("woff"); }

/* 2. Tokens */
:root {
	/* Brand */
	--sw-orange: #f26d27;
	--sw-orange-hover: #ff8040;
	--sw-orange-text: #b8461a;      /* orange for small text on light (≥ 4.5:1) */
	--sw-yellow: #fcce3a;
	--sw-charcoal: #4d4d4d;
	--sw-grey: #989898;
	/* Neutrals */
	/* v0.14.0 background palette: white + the four brand colours only (#f26d27, #989898, #fcce3a, #4d4d4d).
	   Navy is retired: every former navy/ink surface is charcoal. Text stays near-black for contrast. */
	--sw-ink: #4d4d4d;             /* dark surfaces (was navy #0f151c) */
	--sw-navy: #4d4d4d;
	--sw-navy-2: #4d4d4d;
	--sw-black: #141414;           /* text on orange / yellow / grey and on primary buttons */
	--sw-text: #1a1a1a;
	--sw-text-2: #474747;          /* body copy on white (9:1) */
	--sw-text-3: #595959;          /* meta on white (7:1) */
	--sw-paper: #ffffff;
	/* v0.15.0 art direction: warm near-white surface, charcoal depth, and the logo's sun stroke as the one gradient. */
	--sw-warm: #f6f4f0;            /* warm paper surface (alternates with white) */
	--sw-warm-2: #ece8e1;
	--sw-energy: linear-gradient(90deg, #fcce3a 0%, #f7a031 48%, #f26d27 100%);
	--sw-energy-field: linear-gradient(118deg, #fcce3a 0%, #f9b233 34%, #f58a2c 68%, #f26d27 100%);
	--sw-sand: #f3f0eb;            /* light panel (v0.15.0: warm, matches --sw-warm) */
	--sw-sand-2: #e9e5de;
	--sw-line: #dedede;
	--sw-line-strong: #c4c4c4;
	--sw-on-dark: #ffffff;
	--sw-on-dark-2: rgba(255, 255, 255, .88);  /* ≥ 6:1 on charcoal */
	--sw-on-dark-3: rgba(255, 255, 255, .76);  /* ≥ 4.6:1 on charcoal */
	--sw-line-dark: rgba(255, 255, 255, .24);
	/* Type */
	/* Typography system (v0.11.0)
	   Ubuntu         — headlines, navigation, buttons, metrics, service and card titles (500; 700 only where hierarchy needs it)
	   Source Sans 3  — paragraphs, technical descriptions, project details, captions, labels, forms (400; 600 for emphasis)
	   v0.18.0: two families only — the Libre Baskerville accent was removed (launch audit #18). */
	--sw-font-display: "Ubuntu", sans-serif;
	--sw-font-body: "Source Sans 3", sans-serif;
	/* Type scale (v0.12.0) — ten sizes, nothing in between. Desktop values at 1440px in brackets.
	   One body size per section: leads are reserved for hero/page-hero intros. */
	--sw-fs-hero: clamp(2.6rem, min(1.4rem + 4.2vw, 9svh), 5rem); /* [80] hero slides 2–3, stat numerals */
	--sw-fs-display: clamp(3rem, min(1.2rem + 5.4vw, 11svh), 6.75rem); /* [97] homepage hero slide 1 */
	--sw-fs-h1: clamp(2.6rem, 1.5rem + 3.9vw, 5.5rem);       /* [80] page heroes, closing CTA (v0.14.0: larger) */
	--sw-fs-h2: clamp(2.1rem, 1.4rem + 2.3vw, 3.5rem);       /* [56] section headings (v0.14.0: larger, bold) */
	--sw-fs-num: clamp(1.9rem, 1.4rem + 1.75vw, 3rem);       /* [48] metric numerals */
	--sw-fs-h3: clamp(1.4rem, 1.1rem + .9vw, 1.875rem);      /* [30] list titles, stage titles, capacities */
	--sw-fs-h4: clamp(1.2rem, 1.1rem + .3vw, 1.375rem);      /* [22] card titles */
	--sw-fs-lead: clamp(1.125rem, 1.05rem + .3vw, 1.25rem);  /* [20] hero intros, quotes, FAQ questions */
	--sw-fs-base: 1.0625rem;                                 /* [17] all body copy */
	--sw-fs-ui: 1rem;                                        /* [16] navigation, buttons, controls */
	--sw-fs-sm: .9375rem;                                    /* [15] card descriptions, secondary copy */
	--sw-fs-xs: .8125rem;                                    /* [13] meta, captions, labels */
	--sw-fs-md: var(--sw-fs-lead);
	--sw-fs-2xs: var(--sw-fs-xs);
	--sw-fs-body: var(--sw-fs-base);
	--sw-fs-label: var(--sw-fs-xs);
	--sw-lh-display: 1.06;
	--sw-lh-heading: 1.15;
	--sw-lh-body: 1.62;
	--sw-font-ui: var(--sw-font-display);                  /* navigation, buttons, tabs, filters, toggles */
	--sw-font-label: var(--sw-font-body);                  /* eyebrows, counters, captions, small labels */
	/* Space & layout */
	--sw-gutter: clamp(20px, 4.2vw, 56px);
	--sw-max: 1320px;
	--sw-narrow: 780px;
	--sw-section: clamp(64px, 7vw, 104px);
	--sw-fit-pad: clamp(40px, 6.5svh, 80px);                /* vertical padding of viewport-fit sections */
	--sw-header-h: 76px;
	--sw-dur: .25s;
	--sw-radius: 2px;
	--sw-ease: cubic-bezier(.2, .7, .2, 1);
	--sw-shadow: 0 18px 40px -24px rgba(77, 77, 77, .35);
}

/* 3. Base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--sw-header-h) + 16px); }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
body { margin: 0; background: var(--sw-paper); color: var(--sw-text); font-family: var(--sw-font-body); font-size: var(--sw-fs-body); line-height: 1.62; font-weight: 400; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; overflow-x: clip; }
img, svg, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .18em; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
h1, h2, h3, h4, h5, h6 { font-family: var(--sw-font-display); font-weight: 500; line-height: 1.1; letter-spacing: -.018em; margin: 0; color: inherit; text-wrap: balance; }
/* v0.14.0: display headings are bold (Ubuntu 700) — heroes, page heroes, section headings, closing CTA. */
h1, h2, .sw-head__h, .sw-hero__title, .sw-page-hero__title, .sw-cta h2 { font-weight: 700; letter-spacing: -.03em; }
h1 em, h2 em, h3 em { font-style: normal; }
/* Headline accents are bold Ubuntu set apart by colour only (hero: orange); no third typeface. */
.sw-cta h2 em, .sw-accent { font-style: normal; }
.sw-hero__title em { font-style: normal; color: var(--sw-orange); }
/* Interactive controls that are not .sw-btn still use the UI face (Ubuntu 500). */
.sw-hero__chapter-label, .sw-flow__services a, .sw-flow__tab, .sw-panel__all, .sw-map__actions .sw-link { font-family: var(--sw-font-ui); font-weight: 500; }
p { margin: 0 0 1em; text-wrap: pretty; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0; padding: 0; }
table { border-collapse: collapse; width: 100%; }
strong { font-weight: 600; }
:focus-visible { outline: 2px solid var(--sw-orange); outline-offset: 3px; }
::selection { background: var(--sw-orange); color: var(--sw-black); }

/* 3b. Plugin typography normalisation (v0.9.2)
   Elementor's site kit sets `.elementor-kit-N { font-family: "Source Sans Pro" }` on <body> and hard-codes
   "Source Sans Pro" per widget; Popup Maker's "Hello Box" theme uses Montserrat. Everything below maps
   plugin output back to the two-font system: Ubuntu for headings, Source Sans 3 for everything else.
   !important is limited to plugin markup, where per-widget rules carry higher specificity than the theme. */
body[class*="elementor-kit-"] {
	font-family: var(--sw-font-body); line-height: 1.62;
	--e-global-typography-primary-font-family: "Ubuntu"; --e-global-typography-secondary-font-family: "Ubuntu";
	--e-global-typography-text-font-family: "Source Sans 3"; --e-global-typography-accent-font-family: "Source Sans 3";
}
.elementor :is(h1, h2, h3, h4, h5, h6, .elementor-heading-title),
.pum-title { font-family: var(--sw-font-display) !important; }
.elementor :is(p, li, td, th, label, input, select, textarea, button, .elementor-button, .elementor-widget-text-editor, .elementor-tab-title, .e-n-tab-title-text, .e-n-accordion-item-title-text, .elementor-icon-box-description, .elementor-image-box-description, .widget-image-caption, .elementor-field),
.elementor-widget-text-editor :is(span, strong, em, a),
.pum-content, .pum-container :is(p, li, label, input, select, textarea, button) { font-family: var(--sw-font-body) !important; }
[hidden] { display: none !important; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.sw-main { display: block; outline: none; }
.sw-skip { position: absolute; left: 12px; top: -60px; z-index: 1000; padding: 12px 18px; background: var(--sw-ink); color: #fff; font-weight: 600; text-decoration: none; transition: top .2s; }
.sw-skip:focus { top: 12px; }
.sw-icon { width: 1.15em; height: 1.15em; flex: none; }

/* 4. Layout */
.sw-container { width: min(var(--sw-max), 100% - 2 * var(--sw-gutter)); margin-inline: auto; }
.sw-container--narrow { width: min(var(--sw-narrow), 100% - 2 * var(--sw-gutter)); }
.sw-section { padding-block: var(--sw-section); position: relative; }
.sw-section--tight { padding-block: clamp(48px, 6vw, 80px); }
.sw-section--flush-top { padding-top: 0; }
.sw-section--sand { background: var(--sw-sand); }
.sw-section--ink { background: var(--sw-ink); color: var(--sw-on-dark); }
.sw-section__foot { margin-top: clamp(32px, 4vw, 48px); display: flex; justify-content: flex-end; }
.sw-section__foot--start { justify-content: flex-start; }

.sw-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(36px, 6vw, 96px); align-items: center; }
.sw-split--reverse > :first-child { order: 0; }
.sw-split--text { align-items: start; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.sw-split__copy h2 { font-size: var(--sw-fs-h2); margin-bottom: .6em; }
.sw-split__copy p { color: var(--sw-text-2); }
.sw-split__copy .sw-lead { color: var(--sw-text); }
.sw-split__copy .sw-link { margin-top: 1.2em; }
.sw-split--text h2 { font-size: var(--sw-fs-h2); }

/* 5. Components */
.sw-kicker { display: inline-flex; align-items: center; gap: 12px; margin: 0 0 18px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-orange-text); line-height: 1.3; }
.sw-kicker::before { content: ""; width: 28px; height: 2px; background: var(--sw-orange); flex: none; }
.sw-section--ink .sw-kicker, .sw-page-hero .sw-kicker, .sw-cta .sw-kicker, .sw-hero .sw-kicker { color: var(--sw-orange); }
.sw-lead { font-size: var(--sw-fs-lead); line-height: 1.5; color: var(--sw-text); }

.sw-head { margin-bottom: clamp(36px, 5vw, 64px); max-width: 860px; }
.sw-head--split { max-width: none; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(24px, 5vw, 80px); align-items: end; }
/* The lead fills the right-hand column, so its left edge sits on the 7/12 line and its right edge on the
   container edge, the same edge every card grid below it ends on. Bottom-aligned with the heading. */
.sw-head__h { font-size: var(--sw-fs-h2); line-height: 1.08; }
.sw-head__lead { color: var(--sw-text-2); font-size: var(--sw-fs-base); line-height: 1.6; margin: 0; max-width: 62ch; }
.sw-head--split .sw-head__lead { max-width: none; padding-bottom: .2em; }
.sw-head__aside { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; }
.sw-section--ink .sw-head__lead { color: var(--sw-on-dark-2); }

.sw-actions { display: flex; flex-wrap: wrap; gap: 12px 14px; align-items: center; }
/* Buttons (v0.12.0) — one component, three variants, the same four states everywhere:
   rest · hover/focus (colour change, arrow nudges) · active (1px press) · disabled.
   primary  orange  → yellow           (main action; one per view)
   secondary outline → orange fill      (on light backgrounds)
   ghost     outline → orange fill      (on dark backgrounds / photography) */
.sw-btn { --b-bg: var(--sw-orange); --b-fg: var(--sw-black); --b-bd: var(--sw-orange); display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 50px; padding: 12px 22px; border: 1px solid var(--b-bd); border-radius: var(--sw-radius); background: var(--b-bg); color: var(--b-fg); font-family: var(--sw-font-ui); font-size: var(--sw-fs-ui); font-weight: 500; letter-spacing: .01em; line-height: 1.2; text-decoration: none; cursor: pointer; transition: background-color var(--sw-dur) var(--sw-ease), border-color var(--sw-dur) var(--sw-ease), color var(--sw-dur) var(--sw-ease), transform .15s; }
.sw-btn .sw-icon { transition: transform var(--sw-dur) var(--sw-ease); }
.sw-btn:hover .sw-icon, .sw-btn:focus-visible .sw-icon, .sw-link:hover .sw-icon, .sw-link:focus-visible .sw-icon { transform: translateX(4px); }
.sw-btn:active { transform: translateY(1px); }
.sw-btn--primary:hover, .sw-btn--primary:focus-visible { --b-bg: var(--sw-yellow); --b-bd: var(--sw-yellow); --b-fg: var(--sw-black); }
.sw-btn--secondary { --b-bg: transparent; --b-fg: var(--sw-text); --b-bd: var(--sw-text); }
.sw-btn--ghost { --b-bg: transparent; --b-fg: #fff; --b-bd: rgba(255, 255, 255, .55); }
.sw-section--ink .sw-btn--secondary, .sw-section--dark .sw-btn--secondary { --b-fg: #fff; --b-bd: rgba(255, 255, 255, .6); }
/* v0.14.0: transparent CTAs turn white with dark text on hover (on white sections the outline also thickens). */
.sw-btn--secondary:hover, .sw-btn--secondary:focus-visible, .sw-btn--ghost:hover, .sw-btn--ghost:focus-visible { --b-bg: #fff; --b-bd: #fff; --b-fg: var(--sw-black); }
.sw-btn--secondary:hover, .sw-btn--secondary:focus-visible { --b-bd: var(--sw-black); box-shadow: inset 0 0 0 1px var(--sw-black); }
.sw-section--dark .sw-btn--secondary:hover, .sw-section--ink .sw-btn--secondary:hover, .sw-section--dark .sw-btn--secondary:focus-visible { --b-bd: #fff; box-shadow: none; }
.sw-btn:disabled, .sw-btn[aria-disabled="true"] { opacity: .5; cursor: not-allowed; transform: none; }
/* Text link: underline turns orange, arrow nudges. */
.sw-link { font-family: var(--sw-font-ui); display: inline-flex; align-items: center; gap: 10px; padding: 6px 0; border: 0; border-bottom: 1px solid currentColor; background: none; color: var(--sw-text); font-size: var(--sw-fs-ui); font-weight: 500; text-decoration: none; transition: color var(--sw-dur), border-color var(--sw-dur); }
.sw-link .sw-icon { color: var(--sw-orange); transition: transform var(--sw-dur) var(--sw-ease); }
.sw-link:hover, .sw-link:focus-visible { color: var(--sw-orange-text); border-bottom-color: var(--sw-orange); }
.sw-section--ink .sw-link, .sw-footer .sw-link, .sw-cta .sw-link { color: #fff; }
.sw-section--ink .sw-link:hover, .sw-footer .sw-link:hover, .sw-cta .sw-link:hover { color: var(--sw-yellow); border-bottom-color: var(--sw-yellow); }
/* Round icon buttons (hero arrows, carousels, list arrows) share one hover: orange fill. */
.sw-iconbtn, .sw-rail__btn, .sw-hero__arrow { display: grid; place-items: center; width: 48px; height: 48px; padding: 0; border: 1px solid var(--sw-line-strong); border-radius: 50%; background: transparent; color: var(--sw-text); cursor: pointer; transition: background-color var(--sw-dur) var(--sw-ease), border-color var(--sw-dur) var(--sw-ease), color var(--sw-dur) var(--sw-ease), opacity var(--sw-dur); }
.sw-iconbtn .sw-icon, .sw-rail__btn .sw-icon, .sw-hero__arrow .sw-icon { width: 18px; height: 18px; }
.sw-iconbtn:hover:not(:disabled), .sw-rail__btn:hover:not(:disabled), .sw-hero__arrow:hover, .sw-iconbtn:focus-visible, .sw-rail__btn:focus-visible, .sw-hero__arrow:focus-visible { background: var(--sw-orange); border-color: var(--sw-orange); color: var(--sw-black); }
.sw-iconbtn:active:not(:disabled), .sw-rail__btn:active:not(:disabled), .sw-hero__arrow:active { transform: scale(.96); }

.sw-figure { position: relative; margin: 0; background: var(--sw-navy) linear-gradient(135deg, var(--sw-navy-2), var(--sw-ink)); aspect-ratio: 6 / 5; overflow: hidden; }
.sw-figure--tall { aspect-ratio: 5 / 6; }
.sw-figure > img, .sw-figure .sw-img { width: 100%; height: 100%; object-fit: cover; }
.sw-figure figcaption { position: absolute; left: 0; bottom: 0; max-width: 88%; padding: 14px 20px; background: var(--sw-ink); color: var(--sw-on-dark-2); font-size: var(--sw-fs-xs); letter-spacing: .02em; border-top: 2px solid var(--sw-orange); }

/* Service index (homepage + services) */

/* Pillars (numbered principles) */
.sw-pillars { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); counter-reset: pillar; border-top: 1px solid var(--sw-line-strong); }
.sw-pillars--five { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.sw-pillars li { counter-increment: pillar; padding: 28px 28px 8px 0; position: relative; }
.sw-pillars li + li { padding-left: 28px; border-left: 1px solid var(--sw-line); }
.sw-pillars li::before { content: counter(pillar, decimal-leading-zero); display: block; margin-bottom: 40px; font-family: var(--sw-font-label); font-weight: 600; font-size: var(--sw-fs-sm); color: var(--sw-orange-text); font-variant-numeric: tabular-nums; }
.sw-pillars li::after { content: ""; position: absolute; top: -1px; left: 0; width: 40px; height: 2px; background: var(--sw-orange); }
.sw-pillars li + li::after { left: 28px; }
.sw-pillars h3 { font-size: var(--sw-fs-h3); margin-bottom: .6em; }
.sw-pillars p { color: var(--sw-text-2); font-size: var(--sw-fs-sm); }
.sw-section--ink .sw-pillars { border-color: var(--sw-line-dark); }
.sw-section--ink .sw-pillars p { color: var(--sw-on-dark-2); }

/* Metrics */
.sw-metrics { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sw-metric { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 24px 24px 22px 0; }
.sw-metric::before { content: ""; position: absolute; top: -1px; left: 0; width: 28px; height: 2px; background: var(--sw-orange); }
.sw-metric + .sw-metric::before { left: 24px; }
.sw-metric + .sw-metric { padding-left: 24px; border-left: 1px solid var(--sw-line-dark); }
.sw-metric__value { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-num); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.sw-metric__unit { color: var(--sw-orange); }
.sw-metrics--light .sw-metric__unit { color: var(--sw-orange-text); }
.sw-metric__label { font-size: var(--sw-fs-sm); line-height: 1.35; color: var(--sw-on-dark-2); }
.sw-metrics--light { margin-top: clamp(56px, 7vw, 96px); border-top: 1px solid var(--sw-line-strong); }
.sw-metrics--light .sw-metric { padding-top: 28px; }
.sw-metrics--light .sw-metric + .sw-metric { border-left-color: var(--sw-line); }
.sw-metrics--light .sw-metric__label { color: var(--sw-text-2); }
.sw-metrics--light .sw-metric__value { color: var(--sw-text); }

/* Tables */
.sw-table { font-size: var(--sw-fs-sm); }
.sw-table th, .sw-table td { text-align: left; vertical-align: top; padding: 18px 16px 18px 0; border-bottom: 1px solid var(--sw-line-dark); font-weight: 400; }
.sw-table thead th { padding-top: 0; padding-bottom: 12px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-on-dark-3); }
.sw-table tbody th { font-weight: 600; font-size: var(--sw-fs-base); }
.sw-table tbody th small { display: block; margin-top: 4px; font-weight: 400; font-size: var(--sw-fs-xs); color: var(--sw-on-dark-3); }
.sw-table td { color: var(--sw-on-dark-2); }
.sw-table__capacity { font-family: var(--sw-font-display); font-size: var(--sw-fs-h4) !important; font-weight: 500; color: var(--sw-orange) !important; white-space: nowrap; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.sw-table--light th, .sw-table--light td { border-color: var(--sw-line); }
.sw-table--light thead th { color: var(--sw-text-3); }
.sw-table--light td { color: var(--sw-text-2); }
.sw-table--light tbody th small { color: var(--sw-text-3); }
.sw-table--light .sw-table__capacity { color: var(--sw-orange-text) !important; }
.sw-table-wrap { overflow-x: auto; }

/* Lists */
.sw-checklist { list-style: none; display: grid; gap: 10px; }
.sw-checklist li { position: relative; padding-left: 26px; color: var(--sw-text-2); font-size: var(--sw-fs-sm); }
.sw-checklist li::before { content: ""; position: absolute; left: 0; top: .62em; width: 12px; height: 2px; background: var(--sw-orange); }
.sw-taglist { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 1.4em 0 .4em; }
.sw-taglist li { padding: 6px 12px; border: 1px solid var(--sw-line-strong); font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-text-2); }

/* Contact list */
.sw-contact-list { list-style: none; border-top: 1px solid var(--sw-line); margin-top: 28px; }
.sw-contact-list a { display: flex; gap: 16px; align-items: flex-start; padding: 18px 0; border-bottom: 1px solid var(--sw-line); text-decoration: none; transition: color .2s; }
.sw-contact-list .sw-icon { width: 22px; height: 22px; margin-top: 2px; color: var(--sw-orange-text); }
.sw-contact-list small { display: block; font-size: var(--sw-fs-label); letter-spacing: .12em; text-transform: uppercase; color: var(--sw-text-3); font-weight: 600; margin-bottom: 2px; }
.sw-contact-list span { font-weight: 600; line-height: 1.45; }
.sw-contact-list a:hover span { color: var(--sw-orange-text); }

/* Accordion */
.sw-accordion { border-top: 1px solid var(--sw-line-strong); }
.sw-accordion details { border-bottom: 1px solid var(--sw-line-strong); }
.sw-accordion summary { display: flex; justify-content: space-between; gap: 24px; align-items: flex-start; padding: 20px 0; font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-base); transition: color var(--sw-dur); line-height: 1.35; cursor: pointer; list-style: none; }
.sw-accordion summary::-webkit-details-marker { display: none; }
.sw-accordion summary .sw-icon { color: var(--sw-orange-text); margin-top: 2px; transition: transform .25s var(--sw-ease); }
.sw-accordion details[open] summary .sw-icon { transform: rotate(45deg); }
.sw-accordion summary:hover { color: var(--sw-orange-text); }
.sw-accordion details > div { padding: 0 48px 24px 0; color: var(--sw-text-2); }

/* Editor note (rendered only for editors server-side) */
.sw-editor-note { margin: 24px 0 0; padding: 12px 16px; border: 1px dashed #b8461a; background: #fff6ee; color: #5a2a10; font-size: var(--sw-fs-xs); line-height: 1.45; max-width: 860px; }
.sw-editor-note strong { font-weight: 700; }

/* Notices */
.sw-notice { padding: 14px 18px; margin-bottom: 24px; border-left: 3px solid; font-weight: 600; }
.sw-notice--success { background: #edf7ef; border-color: #2e7d46; color: #1d5130; }
.sw-notice--error { background: #fdf0ee; border-color: #b3261e; color: #8a1c16; }

/* Search */
.sw-search { display: flex; max-width: 380px; width: 100%; border: 1px solid var(--sw-line-strong); background: #fff; }
.sw-search input { flex: 1; min-width: 0; border: 0; padding: 12px 14px; background: transparent; }
.sw-search input:focus { outline: none; }
.sw-search:focus-within { outline: 2px solid var(--sw-orange); outline-offset: 2px; }
.sw-search button { border: 0; background: var(--sw-ink); color: #fff; width: 50px; display: grid; place-items: center; }

/* Breadcrumbs */
.sw-crumbs { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 28px; font-size: var(--sw-fs-xs); color: var(--sw-on-dark-3); }
.sw-crumbs a { color: var(--sw-on-dark-2); text-decoration: none; }
.sw-crumbs a:hover { color: #fff; text-decoration: underline; }
.sw-doc__head .sw-crumbs { color: var(--sw-text-3); }
.sw-doc__head .sw-crumbs a { color: var(--sw-text-2); }
.sw-doc__head .sw-crumbs a:hover { color: var(--sw-text); }

/* 6. Header — v0.10.0: logo · five items · one CTA. Transparent over dark heroes, white once scrolled
   or on pages without a hero. One underline treatment for every item: a 2px orange rule that draws in
   from the left on hover/focus and stays for the current section. */
.sw-header { --h-fg: #fff; --h-fg-2: rgba(255, 255, 255, .86); --h-line: rgba(255, 255, 255, .16); position: fixed; inset: 0 0 auto; z-index: 100; height: var(--sw-header-h); color: var(--h-fg); transition: background-color .35s, transform .4s var(--sw-ease), box-shadow .35s, color .35s; }
.sw-header__inner { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 32px; }
.sw-header__logo { display: block; flex: none; }
.sw-logo { width: auto; height: 36px; transition: filter .35s; }
/* One logo file in both header states (v0.12.0): on a transparent header over the hero it is rendered white. */
.sw-header--overlay:not(.is-scrolled):not(.panel-open):not(.nav-is-open) .sw-logo { filter: brightness(0) invert(1); }
.sw-header--overlay { background: none; }
.sw-header--solid, .sw-header.is-scrolled, .sw-header.panel-open { --h-fg: var(--sw-text); --h-fg-2: var(--sw-text-2); --h-line: var(--sw-line); background: rgba(255, 255, 255, .97); box-shadow: 0 1px 0 var(--sw-line); }
@supports (backdrop-filter: blur(8px)) { .sw-header.is-scrolled { background: rgba(255, 255, 255, .9); backdrop-filter: saturate(1.4) blur(14px); } }
.sw-header.is-hidden { transform: translateY(-100%); }
body.has-solid-header .sw-main { padding-top: var(--sw-header-h); }
.sw-nav { display: flex; align-items: center; gap: clamp(20px, 2.4vw, 40px); height: 100%; }
.sw-nav__list { list-style: none; display: flex; align-items: stretch; height: 100%; }
.sw-nav__list > li { position: relative; display: flex; align-items: center; }
.sw-nav__list > li > a { position: relative; display: inline-flex; align-items: center; padding: 10px clamp(10px, 1.1vw, 16px); font-family: var(--sw-font-ui); font-size: var(--sw-fs-ui); font-weight: 500; letter-spacing: .005em; line-height: 1.2; color: var(--h-fg-2); text-decoration: none; transition: color .2s; }
.sw-nav__list > li > a::after { content: ""; position: absolute; left: clamp(10px, 1.1vw, 16px); right: clamp(10px, 1.1vw, 16px); bottom: 2px; height: 2px; background: var(--sw-orange); transform: scaleX(0); transform-origin: right center; transition: transform .35s var(--sw-ease); }
.sw-nav__list > li > a:hover, .sw-nav__list > li > a:focus-visible, .sw-nav__list > li > a[aria-current], .sw-nav__list .current-menu-item > a, .sw-nav__list .current_page_item > a, .sw-nav__has-panel.is-open > a { color: var(--h-fg); }
.sw-nav__list > li > a:hover::after, .sw-nav__list > li > a:focus-visible::after, .sw-nav__has-panel.is-open > a::after, .sw-nav__has-panel:hover > a::after { transform: scaleX(1); transform-origin: left center; }
.sw-nav__list > li > a[aria-current]::after, .sw-nav__list .current-menu-item > a::after, .sw-nav__list .current_page_item > a::after { transform: scaleX(1); }
.sw-nav__has-panel > a { padding-right: 4px; }
.sw-nav__has-panel > a::after { right: 4px; }
.sw-nav__panel-toggle { display: grid; place-items: center; width: 28px; height: 28px; margin-right: clamp(4px, .6vw, 10px); padding: 0; border: 0; border-radius: 50%; background: none; color: var(--h-fg-2); transition: transform .3s var(--sw-ease), color .2s; }
.sw-nav__panel-toggle .sw-icon { width: 16px; height: 16px; }
.sw-nav__has-panel:hover .sw-nav__panel-toggle, .sw-nav__has-panel.is-open .sw-nav__panel-toggle { color: var(--sw-orange); transform: rotate(180deg); }
.sw-nav__panel-toggle:hover { color: var(--sw-orange); }
/* Services panel */
.sw-panel { position: fixed; left: 0; right: 0; top: var(--sw-header-h); z-index: -1; background: #fff; color: var(--sw-text); border-top: 1px solid var(--sw-line); box-shadow: 0 30px 60px -30px rgba(77, 77, 77, .35); opacity: 0; visibility: hidden; transform: translateY(-10px); transition: opacity .25s, transform .35s var(--sw-ease), visibility .25s; }
.sw-nav__has-panel:hover > .sw-panel, .sw-nav__has-panel:focus-within > .sw-panel, .sw-nav__has-panel.is-open > .sw-panel { opacity: 1; visibility: visible; transform: none; }
.sw-nav__has-panel.is-closed > .sw-panel { opacity: 0; visibility: hidden; transform: translateY(-10px); }
.sw-panel__inner { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 7fr) minmax(0, 2.4fr); gap: clamp(28px, 3.5vw, 56px); padding-block: 36px 40px; }
.sw-panel__label { margin: 0 0 14px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-orange-text); }
.sw-panel__title { margin: 0 0 24px; font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-h4); line-height: 1.2; letter-spacing: -.015em; max-width: 16ch; }
.sw-panel__all { display: inline-flex; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid currentColor; font-size: var(--sw-fs-ui); text-decoration: none; color: var(--sw-text); transition: color var(--sw-dur), border-color var(--sw-dur); }
.sw-panel__all:hover { color: var(--sw-orange-text); border-bottom-color: var(--sw-orange); }
.sw-panel__all .sw-icon { color: var(--sw-orange-text); transition: transform .25s var(--sw-ease); }
.sw-panel__all:hover .sw-icon { transform: translateX(3px); }
.sw-panel__services { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 2px 28px; }
.sw-panel__services a { display: grid; grid-template-columns: 34px 1fr; column-gap: 8px; padding: 14px 14px 14px 12px; margin-inline: -12px; border-radius: var(--sw-radius); text-decoration: none; transition: background-color .2s; }
.sw-panel__services a:hover, .sw-panel__services a:focus-visible { background: var(--sw-sand); }
.sw-panel__n { grid-row: span 2; padding-top: 3px; font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-orange-text); font-variant-numeric: tabular-nums; }
.sw-panel__name { font-family: var(--sw-font-ui); font-weight: 500; font-size: var(--sw-fs-base); line-height: 1.3; }
.sw-panel__services a:hover .sw-panel__name { color: var(--sw-orange-text); }
.sw-panel__desc { margin-top: 4px; font-size: var(--sw-fs-xs); line-height: 1.45; color: var(--sw-text-2); }
.sw-panel__aside { padding-left: clamp(20px, 2.5vw, 40px); border-left: 1px solid var(--sw-line); }
.sw-panel__sectors { list-style: none; display: grid; gap: 2px; margin-bottom: 22px; }
.sw-panel__sectors a { display: block; padding: 8px 0; font-weight: 600; font-size: var(--sw-fs-sm); color: var(--sw-text-2); text-decoration: none; }
.sw-panel__sectors a:hover { color: var(--sw-orange-text); }
.sw-submenu-toggle { border: 0; background: none; color: inherit; padding: 4px; margin-left: 2px; }
.sw-submenu-toggle .sw-icon { width: 16px; height: 16px; }
.sw-nav .sub-menu { list-style: none; position: absolute; top: 100%; left: 0; min-width: 260px; padding: 10px 0; background: #fff; border-top: 2px solid var(--sw-orange); box-shadow: var(--sw-shadow); opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .2s, transform .2s, visibility .2s; }
.sw-nav .sub-menu a { display: block; padding: 10px 18px; color: var(--sw-text); text-decoration: none; font-weight: 600; }
.sw-nav li:hover > .sub-menu, .sw-nav li:focus-within > .sub-menu, .sw-nav li.is-open > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.sw-header__cta { min-height: 44px; padding: 10px 18px; }
.sw-header__cta[aria-current] { --b-bg: var(--sw-ink); --b-bd: var(--sw-ink); --b-fg: #fff; }
.sw-menu-toggle { font-family: var(--sw-font-ui); display: none; align-items: center; gap: 12px; border: 1px solid var(--h-line); background: transparent; color: var(--h-fg); padding: 10px 14px; min-height: 44px; border-radius: var(--sw-radius); font-weight: 500; }
.sw-menu-toggle__bars { display: grid; gap: 6px; width: 20px; }
.sw-menu-toggle__bars i { display: block; height: 2px; background: currentColor; transition: transform .3s var(--sw-ease); }
.sw-menu-toggle[aria-expanded="true"] .sw-menu-toggle__bars i:first-child { transform: translateY(4px) rotate(45deg); }
.sw-menu-toggle[aria-expanded="true"] .sw-menu-toggle__bars i:last-child { transform: translateY(-4px) rotate(-45deg); }

/* Session intro screen (shown once per session; JS-only, removed by failsafe) */
.sw-intro-screen { display: none; }
.js.sw-intro .sw-intro-screen { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; align-content: center; gap: 28px; background: var(--sw-ink); animation: sw-intro-out .5s var(--sw-ease) 1.5s forwards; pointer-events: none; }
.sw-intro-screen img { width: 72px; height: 72px; animation: sw-intro-mark 1.2s var(--sw-ease) both; }
.sw-intro-screen__bar { width: 120px; height: 2px; background: rgba(255, 255, 255, .15); position: relative; overflow: hidden; }
.sw-intro-screen__bar::after { content: ""; position: absolute; inset: 0; background: var(--sw-orange); transform-origin: left; animation: sw-intro-bar 1.3s var(--sw-ease) both; }
@keyframes sw-intro-mark { from { opacity: 0; transform: scale(.9); } to { opacity: 1; transform: none; } }
@keyframes sw-intro-bar { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes sw-intro-out { to { opacity: 0; visibility: hidden; } }

/* 7. Homepage hero */
.sw-hero { position: relative; isolation: isolate; min-height: max(680px, 100svh); display: grid; grid-template-rows: 1fr auto; background: var(--sw-ink); color: #fff; overflow: hidden; }
.sw-hero__media { position: absolute; inset: 0; z-index: -1; background: radial-gradient(120% 90% at 80% 20%, var(--sw-navy-2), var(--sw-ink)); }
.sw-hero__frame { position: absolute; inset: 0; opacity: 0; transition: opacity 1.2s ease; }
.sw-hero__frame.is-active { opacity: 1; }
.sw-hero__frame picture { display: contents; } /* v0.18.0: WebP sources wrap the hero <img>. */
.sw-hero__frame .sw-img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.06); transition: transform 8s linear; }
.sw-hero__frame.is-active .sw-img { transform: scale(1); }
.sw-hero__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(77, 77, 77, .92) 0%, rgba(77, 77, 77, .74) 42%, rgba(77, 77, 77, .35) 100%), linear-gradient(0deg, rgba(77, 77, 77, .95) 0%, rgba(77, 77, 77, 0) 42%); }
.sw-hero__inner { padding-top: calc(var(--sw-header-h) + clamp(24px, 5svh, 64px)); padding-bottom: clamp(20px, 3svh, 32px); display: flex; flex-direction: column; justify-content: center; }
.sw-hero__slides { display: grid; }
.sw-hero__slide { grid-area: 1 / 1; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 80px); align-items: end; opacity: 0; visibility: hidden; transition: opacity .7s ease, visibility .7s; }
.sw-hero__slide.is-active { opacity: 1; visibility: visible; }
.sw-hero__copy { max-width: 760px; }
.sw-hero__title { font-size: var(--sw-fs-hero); line-height: 1; letter-spacing: -.035em; margin-bottom: 28px; }
.sw-hero__title--xl { font-size: var(--sw-fs-display); line-height: .94; letter-spacing: -.045em; max-width: 22ch; margin-bottom: clamp(22px, 3svh, 32px); }
.sw-hero__slide--solo { grid-template-columns: minmax(0, 1fr); }
.sw-hero__slide--solo .sw-hero__copy { max-width: 1120px; }
.sw-hero__title em { color: var(--sw-orange); }
.sw-hero__lead { font-size: var(--sw-fs-lead); color: var(--sw-on-dark-2); max-width: 54ch; margin-bottom: 36px; }
.sw-hero__slide .sw-hero__title, .sw-hero__slide .sw-hero__lead, .sw-hero__slide .sw-actions, .sw-hero__slide .sw-hero__panel { transform: translateY(14px); transition: transform .9s var(--sw-ease); }
.sw-hero__slide.is-active .sw-hero__title, .sw-hero__slide.is-active .sw-hero__lead, .sw-hero__slide.is-active .sw-actions, .sw-hero__slide.is-active .sw-hero__panel { transform: none; }
.sw-hero__slide.is-active .sw-hero__lead { transition-delay: .08s; }
.sw-hero__slide.is-active .sw-actions { transition-delay: .14s; }
.sw-hero__panel { align-self: end; background: rgba(77, 77, 77, .78); border: 1px solid var(--sw-line-dark); border-top: 2px solid var(--sw-orange); padding: 22px 26px; }
@supports (backdrop-filter: blur(8px)) { .sw-hero__panel { background: rgba(77, 77, 77, .62); backdrop-filter: blur(12px); } }
.sw-hero__panel-title { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 8px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-on-dark-3); }
.sw-hero__steps, .sw-hero__scale { list-style: none; counter-reset: step; }
.sw-hero__steps li, .sw-hero__scale li { counter-increment: step; border-bottom: 1px solid var(--sw-line-dark); }
.sw-hero__steps a, .sw-hero__scale li { display: grid; grid-template-columns: 34px 1fr; column-gap: 12px; padding: 12px 0; text-decoration: none; }
.sw-hero__steps a::before, .sw-hero__scale li::before { content: counter(step, decimal-leading-zero); grid-row: span 2; font-family: var(--sw-font-label); font-weight: 600; font-size: var(--sw-fs-xs); color: var(--sw-orange); padding-top: 2px; }
.sw-hero__steps strong, .sw-hero__scale strong { font-weight: 600; font-size: var(--sw-fs-base); transition: color var(--sw-dur); }
.sw-hero__steps small, .sw-hero__scale small { color: var(--sw-on-dark-3); font-size: var(--sw-fs-xs); }
.sw-hero__steps a:hover strong { color: var(--sw-orange); }
.sw-hero__panel-foot { margin: 14px 0 0; font-size: var(--sw-fs-xs); color: var(--sw-on-dark-2); }
.sw-hero__panel-foot strong { color: #fff; }
.sw-hero__eyebrow { display: inline-flex; align-items: center; gap: 10px; margin: 0 0 22px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-on-dark-2); }
.sw-hero__eyebrow::before { content: ""; width: 28px; height: 2px; background: var(--sw-yellow); }
.sw-hero__eyebrow .sw-icon { display: none; }
.sw-hero__controls { display: none; align-items: flex-end; justify-content: space-between; gap: 24px; margin-top: clamp(24px, 4svh, 48px); }
.js .sw-hero__controls { display: flex; }
.sw-hero__chapters { display: grid; grid-template-columns: repeat(3, minmax(120px, 190px)); gap: 20px; }
.sw-hero__chapter { position: relative; display: grid; grid-template-columns: auto 1fr; align-items: baseline; column-gap: 10px; padding: 10px 0 16px; border: 0; background: none; color: var(--sw-on-dark-3); text-align: left; transition: color .25s; }
.sw-hero__chapter-n { font-size: var(--sw-fs-xs); font-weight: 600; font-variant-numeric: tabular-nums; color: inherit; }
.sw-hero__chapter-label { font-size: var(--sw-fs-ui); }
.sw-hero__chapter-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: rgba(255, 255, 255, .22); overflow: hidden; }
.sw-hero__chapter-bar::after { content: ""; position: absolute; inset: 0; background: var(--sw-orange); transform: scaleX(0); transform-origin: left; }
.sw-hero__chapter:hover { color: #fff; }
.sw-hero__chapter[aria-current="true"] { color: #fff; }
.sw-hero__chapter[aria-current="true"] .sw-hero__chapter-n { color: var(--sw-orange); }
.sw-hero__chapter[aria-current="true"] .sw-hero__chapter-bar::after { transform: scaleX(1); }
.sw-hero.is-playing .sw-hero__chapter[aria-current="true"] .sw-hero__chapter-bar::after { animation: sw-progress var(--sw-hero-interval, 7s) linear both; }
@keyframes sw-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.sw-hero__buttons { display: flex; align-items: center; gap: 6px; }
.sw-hero__arrow { width: 44px; height: 44px; border-color: rgba(255, 255, 255, .32); color: #fff; }
.sw-hero__metrics { border-top: 1px solid var(--sw-line-dark); background: linear-gradient(180deg, rgba(77, 77, 77, .45), rgba(77, 77, 77, .88)); }
@supports (backdrop-filter: blur(8px)) { .sw-hero__metrics { backdrop-filter: blur(6px); } }
.sw-hero__metrics .sw-metrics { padding-block: 10px 14px; }
.sw-hero__metrics .sw-metric::before { background: var(--sw-yellow); }


/* 8. Homepage sections (v0.10.0) — one composition per section. */

/* About — editorial split with an overlapping image pair */
.sw-about__grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(40px, 6vw, 104px); align-items: center; }
.sw-about__title { font-size: var(--sw-fs-h2); margin-bottom: .55em; max-width: 18ch; }
/* v0.12.0: one body size for every paragraph; the first paragraph leads by colour, not by size. */
.sw-about__lead { font-size: var(--sw-fs-base); line-height: 1.6; color: var(--sw-text); max-width: 62ch; margin-bottom: 20px; }
.sw-about__body { display: grid; gap: 16px; max-width: 62ch; margin-bottom: 28px; padding-top: 20px; border-top: 1px solid var(--sw-line); }
.sw-about__body p { margin: 0; color: var(--sw-text-2); }
.sw-about__media { position: relative; height: min(clamp(440px, 44vw, 620px), calc(100svh - var(--sw-header-h) - 2 * var(--sw-fit-pad))); min-height: 400px; }
.sw-about__img { position: absolute; margin: 0; overflow: hidden; background: var(--sw-navy) linear-gradient(135deg, var(--sw-navy-2), var(--sw-ink)); translate: 0 var(--py, 0px); }
.sw-about__img .sw-img { width: 100%; height: 100%; object-fit: cover; }
.sw-about__img--main { top: 0; right: 0; width: 78%; height: 84%; }
.sw-about__img--inset { left: 0; bottom: 0; width: 46%; aspect-ratio: 4 / 3; border: 8px solid #fff; box-shadow: var(--sw-shadow); }
.sw-about__badge { position: absolute; right: 0; bottom: 0; display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 16px 22px; max-width: 48%; background: var(--sw-ink); color: #fff; border-top: 2px solid var(--sw-orange); font-size: var(--sw-fs-xs); }
.sw-about__badge strong { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-base); }
.sw-about__badge span { color: var(--sw-on-dark-2); }
.sw-motion .sw-about__img { clip-path: inset(0 0 100% 0); transition: clip-path 1.2s var(--sw-ease); }
.sw-motion .sw-about__img--inset { transition-delay: .25s; }
.sw-motion .sw-about__media.is-in .sw-about__img { clip-path: inset(0 0 0 0); }

/* Services — interactive explorer: list on the left, image stage on the right */
.sw-svx-section { padding-block: clamp(56px, 5vw, 72px); }
.sw-svx-section .sw-head { margin-bottom: clamp(28px, 3vw, 40px); }
.sw-svx-section .sw-section__foot { margin-top: 24px; }
.sw-svx { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 88px); align-items: stretch; }
.sw-svx__list { list-style: none; border-top: 1px solid var(--sw-line-strong); }
.sw-svx__item { position: relative; border-bottom: 1px solid var(--sw-line-strong); }
.sw-svx__item::before { content: ""; position: absolute; left: 0; top: -1px; width: 100%; height: 2px; background: var(--sw-orange); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--sw-ease); }
.sw-svx__item.is-active::before { transform: scaleX(1); }
.sw-svx__head { display: grid; grid-template-columns: 52px minmax(0, 1fr) 44px; align-items: center; gap: 12px; padding: 10px 0; text-decoration: none; }
.sw-svx__head:hover .sw-svx__title { color: var(--sw-text); }
.sw-svx__n { font-size: var(--sw-fs-sm); font-weight: 600; color: var(--sw-text-3); font-variant-numeric: tabular-nums; transition: color .3s; }
.sw-svx__title { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-h3); line-height: 1.15; letter-spacing: -.02em; transition: color .3s; }
.sw-svx__go { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--sw-line-strong); border-radius: 50%; color: var(--sw-text); transition: background-color .3s, border-color .3s, color .3s, transform .45s var(--sw-ease); }
.sw-svx__go .sw-icon { width: 18px; height: 18px; }
.sw-svx__item.is-active .sw-svx__n { color: var(--sw-orange-text); }
.sw-svx__item.is-active .sw-svx__go, .sw-svx__head:hover .sw-svx__go { background: var(--sw-orange); border-color: var(--sw-orange); color: var(--sw-black); transform: rotate(45deg); }
.sw-svx__detail { display: grid; grid-template-rows: 1fr; transition: grid-template-rows .55s var(--sw-ease); }
.sw-svx__detail-inner { overflow: hidden; padding-left: 64px; }
.sw-svx__detail p { max-width: 54ch; margin: -6px 0 16px; color: var(--sw-text-2); }
.sw-svx__caps { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; padding-bottom: 20px; }
.sw-svx__caps li { padding: 6px 12px; border: 1px solid var(--sw-line-strong); background: rgba(255, 255, 255, .6); font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-text-2); }
.sw-svx__thumb { display: none; }
.sw-svx__stage { position: relative; min-height: 380px; overflow: hidden; background: var(--sw-navy) linear-gradient(135deg, var(--sw-navy-2), var(--sw-ink)); }
.sw-svx__frame { position: absolute; inset: 0; opacity: 0; transition: opacity .8s ease; }
.sw-svx__frame .sw-img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); transition: transform 1.6s var(--sw-ease); }
.sw-svx__frame.is-active { opacity: 1; }
.sw-svx__frame.is-active .sw-img { transform: scale(1); }
.sw-svx__stage::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(77, 77, 77, .55), rgba(77, 77, 77, 0) 40%); pointer-events: none; }
.sw-svx__stage-n { position: absolute; left: 24px; bottom: 20px; z-index: 1; margin: 0; font-size: var(--sw-fs-sm); font-weight: 600; color: var(--sw-on-dark-2); font-variant-numeric: tabular-nums; }
.sw-svx__stage-n span { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-num); line-height: 1; color: #fff; margin-right: 6px; }
@media (min-width: 1041px) {
	.js .sw-svx__item:not(.is-active) .sw-svx__detail { grid-template-rows: 0fr; }
	.js .sw-svx__item:not(.is-active) .sw-svx__title { color: var(--sw-text-2); }
}

/* Lifecycle — tabbed stage viewer (v0.12.0). One viewport, user-driven (no scroll-jacking, no 2,700px scroll).
   Without JS, and below 1041px, every stage is listed in sequence. */

/* Selected work — horizontal project rail (native scroll-snap; buttons, drag and keyboard enhance it) */
.sw-work__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; }
.sw-work__head .sw-head { flex: 1; }
.sw-rail__nav { display: flex; gap: 10px; margin-bottom: clamp(36px, 5vw, 64px); }
.sw-rail__nav[hidden] { display: none; }
.sw-rail__btn { background: #fff; }
.sw-rail__btn:disabled { opacity: .35; cursor: default; }
.sw-rail { --rail-pad: max(var(--sw-gutter), calc((100% - var(--sw-max)) / 2)); --rail-gap: clamp(16px, 1.6vw, 24px); }
.sw-rail__track { list-style: none; display: flex; gap: var(--rail-gap); overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--rail-pad); padding: 4px var(--rail-pad) 12px; scrollbar-width: none; overscroll-behavior-x: contain; }
.sw-rail__track::-webkit-scrollbar { display: none; }
.sw-rail__track.is-dragging { scroll-snap-type: none; cursor: grabbing; }
.sw-rail__track.is-dragging * { pointer-events: none; }
.sw-work__foot { display: flex; align-items: center; gap: 32px; margin-top: 16px; }
.sw-rail__progress { position: relative; flex: 1; height: 2px; background: var(--sw-line); overflow: hidden; }
.sw-rail__progress span { position: absolute; inset: 0; background: var(--sw-orange); transform-origin: left; transform: scaleX(var(--p, .2)); transition: transform .2s linear; }
.sw-works__note { margin: 0; flex: none; font-size: var(--sw-fs-xs); color: var(--sw-text-3); }

/* Clients — two continuous logo strips in opposite directions (v0.12.0); hold on hover/focus, static under reduced motion */
.sw-logos-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: clamp(28px, 3vw, 40px); }
.sw-logos-head .sw-head { flex: 1; margin-bottom: 0; }
.sw-logos { position: relative; overflow: hidden; border-block: 1px solid var(--sw-line); -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.sw-logos__track { display: flex; width: max-content; animation: sw-logos 60s linear infinite; }
.sw-logos + .sw-logos { border-top: 0; }
.sw-logos--reverse .sw-logos__track { animation-direction: reverse; animation-duration: 72s; }
.sw-logos__set { display: flex; list-style: none; }
/* Each logo carries its optically balanced width (--w, from newsw_client_logo()); height follows the intrinsic ratio. */
.sw-logos__set li { display: grid; place-items: center; height: 104px; padding-inline: clamp(28px, 3vw, 48px); }
.sw-logos__set img { width: calc(var(--w, 140) * 1px * var(--logo-scale, 1)); height: auto; max-width: none; transition: transform .3s var(--sw-ease); }
.sw-logos__set li.is-dark img { box-sizing: content-box; padding: 10px 14px; background: var(--sw-charcoal); border-radius: var(--sw-radius); }
.sw-logos__set li:hover img { transform: scale(1.06); }
.sw-logos-wrap:hover .sw-logos__track, .sw-logos-wrap:focus-within .sw-logos__track { animation-play-state: paused; }
@keyframes sw-logos { from { transform: translateX(-50%); } to { transform: translateX(0); } }
/* No JS or reduced motion: a static, wrapped logo wall instead of motion. */
html:not(.js) .sw-logos__track, .sw-logos--static .sw-logos__track { animation: none; width: auto; }
html:not(.js) .sw-logos__set, .sw-logos--static .sw-logos__set { flex-wrap: wrap; justify-content: center; width: 100%; }
html:not(.js) .sw-logos__set[aria-hidden], .sw-logos--static .sw-logos__set[aria-hidden] { display: none; }
html:not(.js) .sw-logos, .sw-logos--static { -webkit-mask-image: none; mask-image: none; }

/* Why SunWorks — bento: one photo tile with the verified people metric, four principle tiles */

/* Client perspectives — card carousel (v0.12.0): three cards per view, arrows, drag/swipe, gentle auto-advance
   that holds while hovered or focused and stops under reduced motion. Uses the shared rail component. */
.sw-rail--contained .sw-rail__track { padding: 4px 0 12px; scroll-padding-inline: 0; }
.sw-quote { flex: 0 0 calc((100% - 2 * var(--rail-gap)) / 3); scroll-snap-align: start; display: flex; user-select: none; }
.sw-quote figure { position: relative; display: flex; flex-direction: column; width: 100%; margin: 0; padding: clamp(26px, 2.6vw, 36px); background: var(--sw-sand); border-top: 2px solid var(--sw-orange); }
.sw-quote__mark { width: 30px; height: 30px; margin-bottom: 20px; color: var(--sw-orange); flex: none; }
.sw-quote blockquote { flex: 1; margin: 0 0 28px; }
.sw-quote blockquote p { font-size: var(--sw-fs-lead); line-height: 1.5; color: var(--sw-text); }
.sw-quote figcaption { display: flex; flex-direction: column; gap: 2px; padding-top: 16px; border-top: 1px solid var(--sw-line-strong); }
.sw-quote figcaption strong { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-base); }
.sw-quote figcaption span { font-size: var(--sw-fs-xs); color: var(--sw-text-3); }

/* Industry Recognition — ink band; yellow is reserved here for recognition markers */
.sw-awards__featured { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.sw-award { position: relative; display: flex; flex-direction: column; gap: 10px; padding: clamp(24px, 2.6vw, 36px); border: 1px solid var(--sw-line-dark); background: rgba(255, 255, 255, .03); transition: border-color .3s, background-color .3s; }
.sw-award::before { content: ""; position: absolute; left: -1px; top: -1px; width: 48px; height: 2px; background: var(--sw-yellow); transition: width .6s var(--sw-ease); }
.sw-award:hover { border-color: rgba(252, 206, 58, .35); background: rgba(255, 255, 255, .05); }
.sw-award:hover::before { width: calc(100% + 2px); }
.sw-award__icon { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: 18px; border: 1px solid rgba(252, 206, 58, .5); border-radius: 50%; color: var(--sw-yellow); }
.sw-award__icon svg { width: 22px; height: 22px; }
.sw-award__year { position: absolute; top: clamp(24px, 2.6vw, 36px); right: clamp(24px, 2.6vw, 36px); font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-h4); color: var(--sw-yellow); font-variant-numeric: tabular-nums; }
.sw-award__title { font-size: var(--sw-fs-h4); line-height: 1.25; }
.sw-award__event { margin: 0; color: var(--sw-on-dark-2); font-size: var(--sw-fs-sm); }
.sw-awards__list { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; margin-top: clamp(32px, 4vw, 48px); border-top: 1px solid var(--sw-line-dark); }
.sw-awards__list li { position: relative; display: flex; flex-direction: column; gap: 4px; padding: 20px 0 20px 20px; border-bottom: 1px solid var(--sw-line-dark); }
.sw-awards__list li::before { content: ""; position: absolute; left: 0; top: 27px; width: 6px; height: 6px; background: var(--sw-yellow); }
.sw-awards__list strong { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-base); line-height: 1.3; color: #fff; }
.sw-awards__list span { font-size: var(--sw-fs-xs); color: var(--sw-on-dark-2); }

/* Direct access — embedded map */
.sw-map { position: relative; margin: 28px 0 0; aspect-ratio: 16 / 9; background: var(--sw-sand-2); border: 1px solid var(--sw-line); overflow: hidden; }
.sw-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; filter: grayscale(.25) contrast(1.02); }
.sw-map__facade { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; gap: 14px; padding: 24px; background-color: var(--sw-sand); background-image: linear-gradient(var(--sw-line) 1px, transparent 1px), linear-gradient(90deg, var(--sw-line) 1px, transparent 1px); background-size: 32px 32px; }
.sw-map__facade::before { content: ""; position: absolute; left: 0; right: 0; top: 46%; height: 10px; background: #fff; transform: rotate(-8deg); box-shadow: 0 0 0 1px var(--sw-line); }
.sw-map__pin { position: absolute; left: 50%; top: 34%; display: grid; place-items: center; width: 52px; height: 52px; margin-left: -26px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--sw-orange); color: var(--sw-black); box-shadow: var(--sw-shadow); }
.sw-map__pin .sw-icon { transform: rotate(45deg); width: 22px; height: 22px; }
.sw-map__facade p { position: relative; display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 12px 14px; background: rgba(255, 255, 255, .92); font-size: var(--sw-fs-xs); color: var(--sw-text-2); }
.sw-map__facade p strong { font-size: var(--sw-fs-sm); color: var(--sw-text); }
.sw-map__actions { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
.sw-map__actions .sw-btn { min-height: 44px; --b-bg: #fff; }
.sw-map + .sw-contact-list { margin-top: 0; border-top: 0; }




.sw-post-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 2.5vw, 32px); }
.sw-post-card { position: relative; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--sw-line); transition: border-color .25s, box-shadow .25s; }
.sw-post-card::before { content: ""; position: absolute; left: -1px; top: -1px; z-index: 1; width: calc(100% + 2px); height: 2px; background: var(--sw-orange); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--sw-ease); }
.sw-post-card:hover { border-color: var(--sw-line-strong); }
.sw-post-card:hover::before, .sw-post-card:focus-within::before { transform: scaleX(1); }
.sw-post-card:hover .sw-link { color: var(--sw-orange-text); border-bottom-color: var(--sw-orange); }
.sw-post-card__media { display: block; aspect-ratio: 16 / 10; background: var(--sw-navy) linear-gradient(135deg, var(--sw-navy-2), var(--sw-ink)); overflow: hidden; }
.sw-post-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--sw-ease); }
.sw-post-card:hover .sw-post-card__media img { transform: scale(1.03); }
.sw-post-card__body { display: flex; flex-direction: column; gap: 12px; flex: 1; padding: 24px; }
.sw-post-card__meta { display: flex; gap: 14px; margin: 0; font-size: var(--sw-fs-2xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-post-card__meta span { color: var(--sw-orange-text); }
.sw-post-card__title { font-size: var(--sw-fs-h4); line-height: 1.25; }
.sw-post-card__title a { text-decoration: none; }
.sw-post-card__title a::after { content: ""; position: absolute; inset: 0; }
.sw-post-card__excerpt { color: var(--sw-text-2); font-size: var(--sw-fs-sm); flex: 1; }
.sw-post-card .sw-link { align-self: flex-start; margin-top: auto; }
.sw-post-grid--index .sw-post-card--featured { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.sw-post-grid--index .sw-post-card--featured .sw-post-card__media { aspect-ratio: auto; min-height: 340px; }
.sw-post-grid--index .sw-post-card--featured .sw-post-card__body { padding: clamp(24px, 4vw, 48px); justify-content: center; }
.sw-post-grid--index .sw-post-card--featured .sw-link { margin-top: 12px; }
.sw-post-grid--index .sw-post-card--featured .sw-post-card__title { font-size: var(--sw-fs-h3); }

.sw-explore { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); grid-template-rows: repeat(2, minmax(220px, auto)); gap: 16px; }
/* Featured card: the image takes whatever height the two stacked cards beside it define; text sits below. */

.sw-cta { position: relative; isolation: isolate; background: var(--sw-ink); color: #fff; padding-block: clamp(80px, 10vw, 152px); overflow: hidden; border-top: 3px solid var(--sw-orange); }
.sw-cta__media { position: absolute; inset: -8% 0; z-index: -1; translate: 0 var(--py, 0px); }
.sw-cta__media .sw-img { width: 100%; height: 100%; object-fit: cover; opacity: .38; }
.sw-cta__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(77, 77, 77, .95) 0%, rgba(77, 77, 77, .7) 55%, rgba(77, 77, 77, .45) 100%); }
.sw-cta__inner { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(32px, 6vw, 96px); align-items: end; }
.sw-cta h2 { font-size: var(--sw-fs-h1); line-height: 1.04; letter-spacing: -.028em; margin-bottom: 22px; max-width: 18ch; }
.sw-cta h2 em { color: var(--sw-yellow); }
.sw-cta__copy p:not(.sw-kicker) { color: var(--sw-on-dark-2); font-size: var(--sw-fs-base); max-width: 56ch; }
.sw-cta__actions { display: flex; flex-direction: column; align-items: stretch; gap: 4px; }
.sw-cta__actions .sw-btn { margin-bottom: 12px; }
.sw-cta__contact { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--sw-line-dark); color: var(--sw-on-dark-2); text-decoration: none; font-weight: 600; transition: color var(--sw-dur), border-color var(--sw-dur); }
.sw-cta__contact .sw-icon { color: var(--sw-orange); }
.sw-cta__contact:hover { color: #fff; border-bottom-color: var(--sw-orange); }

.sw-faq { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
.sw-faq h2 { font-size: var(--sw-fs-h2); margin-bottom: .5em; }
.sw-faq__contact > p:not(.sw-kicker) { color: var(--sw-text-2); }
.sw-faq__list h2 { margin-bottom: 28px; }

/* 9. Pages */
/* Inner-page hero */
.sw-page-hero { position: relative; isolation: isolate; display: flex; align-items: flex-end; min-height: clamp(460px, 62vh, 620px); padding: calc(var(--sw-header-h) + 56px) 0 clamp(48px, 7vw, 88px); background: var(--sw-ink); color: #fff; overflow: hidden; }
.sw-page-hero--lg { min-height: clamp(520px, 74vh, 760px); }
.sw-page-hero--sm { min-height: clamp(380px, 48vh, 500px); }
.sw-page-hero__media { position: absolute; inset: 0; z-index: -1; background: radial-gradient(120% 100% at 85% 10%, var(--sw-navy-2), var(--sw-ink)); }
.sw-page-hero__media .sw-img { width: 100%; height: 100%; object-fit: cover; }
.sw-page-hero__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(77, 77, 77, .94) 0%, rgba(77, 77, 77, .78) 45%, rgba(77, 77, 77, .42) 100%), linear-gradient(0deg, rgba(77, 77, 77, .7), rgba(77, 77, 77, 0) 50%); }
.sw-page-hero__inner { position: relative; }
.sw-page-hero__title { font-size: var(--sw-fs-h1); line-height: 1.04; letter-spacing: -.024em; max-width: 22ch; margin-bottom: 24px; }
.sw-page-hero__lead { font-size: var(--sw-fs-lead); color: var(--sw-on-dark-2); max-width: 58ch; margin-bottom: 32px; }
.sw-page-hero__lead:last-child { margin-bottom: 0; }
.sw-page-hero__meta { list-style: none; display: flex; flex-wrap: wrap; gap: 10px 28px; margin-top: clamp(36px, 5vw, 56px); padding-top: 20px; border-top: 1px solid var(--sw-line-dark); font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-on-dark-2); }
.sw-page-hero__meta li { display: flex; align-items: center; gap: 28px; }
.sw-page-hero__meta li + li::before { content: ""; width: 6px; height: 6px; background: var(--sw-orange); margin-left: -16px; margin-right: -10px; }

/* About */
.sw-cap-grid { list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1px; background: var(--sw-line); border: 1px solid var(--sw-line); }
.sw-cap { position: relative; display: flex; flex-direction: column; gap: 10px; height: 100%; min-height: 280px; padding: 28px 24px; background: #fff; text-decoration: none; transition: background-color .25s, color .25s; }
.sw-cap__service { min-height: 2.7em; padding-right: 28px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-orange-text); }
.sw-cap__title { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-h4); line-height: 1.2; margin-top: 36px; }
.sw-cap__text { color: var(--sw-text-2); font-size: var(--sw-fs-sm); }
.sw-cap__icon { position: absolute; top: 26px; right: 22px; color: var(--sw-text-3); transition: transform .25s var(--sw-ease), color .25s; }
.sw-cap:hover { background: var(--sw-ink); color: #fff; }
.sw-cap:hover .sw-cap__text { color: var(--sw-on-dark-2); }
.sw-cap:hover .sw-cap__service, .sw-cap:hover .sw-cap__icon { color: var(--sw-orange); }
.sw-cap:hover .sw-cap__icon { transform: translateX(3px); }

.sw-purpose { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--sw-line-dark); border: 1px solid var(--sw-line-dark); margin-top: 24px; }
.sw-purpose article { padding: clamp(28px, 4vw, 48px); background: var(--sw-ink); }
.sw-purpose h3 { font-size: var(--sw-fs-h3); margin-bottom: .6em; }
.sw-purpose p:not(.sw-kicker) { color: var(--sw-on-dark-2); }

.sw-leaders { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(24px, 3vw, 40px); }
.sw-leader__photo { aspect-ratio: 4 / 5; margin-bottom: 22px; background: var(--sw-sand-2) linear-gradient(160deg, var(--sw-sand-2), #d7d0c5); overflow: hidden; }
.sw-leader__photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; filter: grayscale(1) contrast(1.04); }
.sw-leader h3 { font-size: var(--sw-fs-h4); margin-bottom: 6px; }
.sw-leader__role { font-weight: 600; font-size: var(--sw-fs-sm); margin-bottom: 14px; }
.sw-leader__role span { display: block; font-weight: 400; color: var(--sw-text-3); }
.sw-leader > p:last-child { color: var(--sw-text-2); font-size: var(--sw-fs-sm); }

/* Services */
.sw-service { padding-block: clamp(56px, 7vw, 104px); border-top: 1px solid var(--sw-line); outline: none; }
.sw-step-label { display: block; margin-bottom: 10px; font-family: var(--sw-font-label); font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-orange-text); }

/* Projects */
.sw-filters { display: grid; gap: 14px; padding: 20px 0; border-top: 1px solid var(--sw-line-strong); border-bottom: 1px solid var(--sw-line); margin-bottom: 20px; }
.sw-filters__group { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.sw-filters__label { width: 84px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-filters button { font-family: var(--sw-font-ui); min-height: 44px; padding: 8px 16px; border: 1px solid var(--sw-line-strong); border-radius: var(--sw-radius); background: #fff; font-weight: 500; font-size: var(--sw-fs-ui); color: var(--sw-text-2); cursor: pointer; transition: background-color var(--sw-dur), color var(--sw-dur), border-color var(--sw-dur); }
.sw-filters button:hover { border-color: var(--sw-orange); color: var(--sw-text); }
.sw-filters button[aria-pressed="true"] { background: var(--sw-ink); border-color: var(--sw-black); color: #fff; }
.sw-results { margin: 0 0 20px; font-size: var(--sw-fs-sm); color: var(--sw-text-3); font-weight: 600; }
/* Borders live on the cards (not a gap-coloured background), so a short last row leaves no grey cell. */
.sw-project-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--sw-line); border-left: 1px solid var(--sw-line); }
.sw-project { display: flex; flex-direction: column; gap: 10px; padding: 26px; background: #fff; border-right: 1px solid var(--sw-line); border-bottom: 1px solid var(--sw-line); }
.sw-project[hidden] { display: none; }
.sw-project__capacity { margin: 0; font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-h3); line-height: 1; color: var(--sw-orange-text); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.sw-project__capacity--text { font-size: var(--sw-fs-h4); line-height: 1.25; color: var(--sw-text-2); }
.sw-project__title { font-size: var(--sw-fs-h4); line-height: 1.25; }
.sw-project__summary { margin: 0; color: var(--sw-text-2); font-size: var(--sw-fs-sm); }
.sw-project__facts { display: grid; gap: 6px; margin: auto 0 0; padding-top: 14px; border-top: 1px solid var(--sw-line); font-size: var(--sw-fs-xs); }
.sw-project__facts div { display: grid; grid-template-columns: 76px 1fr; gap: 8px; }
.sw-project__facts dt { color: var(--sw-text-3); }
.sw-project__facts dd { margin: 0; font-weight: 600; color: var(--sw-text); }
.sw-empty { padding: 32px 0; color: var(--sw-text-2); }
.sw-footnote { margin-top: 24px; font-size: var(--sw-fs-xs); color: var(--sw-text-3); max-width: 80ch; }

/* Industries */
.sw-sectors { display: grid; gap: clamp(20px, 2.5vw, 32px); }
.sw-sector { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(24px, 4vw, 64px); padding: clamp(28px, 4vw, 48px); border: 1px solid var(--sw-line); border-top: 2px solid var(--sw-orange); }
.sw-sector h3 { font-size: var(--sw-fs-h3); margin-bottom: 14px; }
.sw-sector header p { color: var(--sw-text-2); }
.sw-sector__body { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.sw-sector__label { font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-text-3); margin-bottom: 14px; }
.sw-sector__links { list-style: none; margin-bottom: 20px; }
.sw-sector__links a { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--sw-line); font-weight: 600; text-decoration: none; }
.sw-sector__links .sw-icon { color: var(--sw-orange-text); transition: transform .25s var(--sw-ease); }
.sw-sector__links a:hover .sw-icon { transform: translateX(3px); }

/* Careers */
.sw-jobs { border-top: 1px solid var(--sw-line-strong); }
.sw-job { border-bottom: 1px solid var(--sw-line-strong); background: transparent; transition: background-color .2s; }
.sw-job[open] { background: #fff; }
.sw-job summary { display: grid; grid-template-columns: minmax(0, 1fr) auto 24px; gap: 24px; align-items: center; padding: 24px 12px; cursor: pointer; list-style: none; }
.sw-job summary::-webkit-details-marker { display: none; }
.sw-job__title strong { display: block; font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-h4); line-height: 1.25; }
.sw-job__title small { font-size: var(--sw-fs-xs); color: var(--sw-text-3); font-weight: 600; letter-spacing: .04em; }
.sw-job__loc { font-size: var(--sw-fs-xs); color: var(--sw-text-2); }
.sw-job summary .sw-icon { color: var(--sw-orange-text); transition: transform .25s var(--sw-ease); }
.sw-job[open] summary .sw-icon { transform: rotate(45deg); }
.sw-job__body { padding: 0 12px 32px; }
.sw-job__body dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; margin: 0 0 28px; padding-top: 22px; border-top: 1px solid var(--sw-line); }
.sw-job__body dt { font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-text-3); margin-bottom: 8px; }
.sw-job__body dd { margin: 0; color: var(--sw-text-2); font-size: var(--sw-fs-sm); }

/* Contact */
.sw-contact { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
.sw-contact__details h2 { font-size: var(--sw-fs-h2); margin-bottom: .5em; }
.sw-contact__details > p { color: var(--sw-text-2); }
.sw-contact__hours { margin-top: 24px; font-size: var(--sw-fs-sm); color: var(--sw-text-2); }
.sw-contact__hours strong { display: block; font-size: var(--sw-fs-label); letter-spacing: .12em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-contact__form { padding: clamp(24px, 4vw, 48px); background: var(--sw-sand); border-top: 3px solid var(--sw-orange); }
.sw-contact__form-title { font-size: var(--sw-fs-h3); margin-bottom: 24px; }
.sw-form { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.sw-field { display: flex; flex-direction: column; gap: 8px; }
.sw-field--full { grid-column: 1 / -1; }
.sw-field label { font-weight: 600; font-size: var(--sw-fs-sm); }
.sw-req { color: var(--sw-orange-text); }
.sw-field input, .sw-field select, .sw-field textarea { width: 100%; min-height: 50px; padding: 12px 14px; border: 1px solid var(--sw-line-strong); border-radius: var(--sw-radius); background: #fff; font-size: var(--sw-fs-sm); transition: border-color .2s, box-shadow .2s; }
.sw-field textarea { resize: vertical; min-height: 150px; }
.sw-field select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231c232b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; background-size: 18px; padding-right: 44px; }
.sw-field input:focus, .sw-field select:focus, .sw-field textarea:focus { outline: none; border-color: var(--sw-black); box-shadow: 0 0 0 3px rgba(242, 109, 39, .35); }
.sw-field.is-invalid input, .sw-field.is-invalid select, .sw-field.is-invalid textarea, .sw-field [aria-invalid="true"] { border-color: #b3261e; }
.sw-field__error { margin: 0; color: #b3261e; font-size: var(--sw-fs-xs); font-weight: 600; }
.sw-field--check { flex-direction: row; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.sw-field--check input { width: 20px; height: 20px; min-height: 0; margin-top: 3px; accent-color: var(--sw-orange-text); flex: none; }
.sw-field--check label { flex: 1; font-weight: 400; color: var(--sw-text-2); }
.sw-field--check .sw-field__error { flex-basis: 100%; }
.sw-form__submit { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.sw-form__submit p { margin: 0; font-size: var(--sw-fs-xs); color: var(--sw-text-3); }
.sw-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Documents (legal pages, articles) */
.sw-doc__head { padding: clamp(56px, 7vw, 96px) 0 clamp(32px, 4vw, 48px); border-bottom: 1px solid var(--sw-line); margin-bottom: clamp(40px, 5vw, 64px); background: var(--sw-sand); }
.sw-doc__head h1 { font-size: var(--sw-fs-h1); line-height: 1.05; }
.sw-doc__updated { margin: 18px 0 0; color: var(--sw-text-3); font-size: var(--sw-fs-sm); }
/* Legal documents (template-legal.php) */
.sw-legal__lead { max-width: 62ch; margin: 18px 0 0; font-size: var(--sw-fs-lead); line-height: 1.5; color: var(--sw-text-2); }
.sw-legal__grid { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 8fr); gap: clamp(32px, 5vw, 88px); align-items: start; }
.sw-legal__toc { position: sticky; top: calc(var(--sw-header-h) + 24px); padding-bottom: 32px; }
.sw-legal__toc-title { margin: 0 0 12px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-legal__toc ol { list-style: none; border-top: 1px solid var(--sw-line); }
.sw-legal__toc a { display: grid; grid-template-columns: 30px 1fr; gap: 6px; padding: 9px 0; border-bottom: 1px solid var(--sw-line); font-size: var(--sw-fs-sm); line-height: 1.35; color: var(--sw-text-2); text-decoration: none; transition: color .2s; }
.sw-legal__toc a span { font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-text-3); font-variant-numeric: tabular-nums; }
.sw-legal__toc a:hover { color: var(--sw-orange-text); }
.sw-legal__toc a { transition: color var(--sw-dur); }
.sw-legal__body { max-width: 760px; font-size: var(--sw-fs-base); }
.sw-legal__section { scroll-margin-top: calc(var(--sw-header-h) + 24px); }
.sw-legal__section + .sw-legal__section { margin-top: 2.2em; padding-top: 2.2em; border-top: 1px solid var(--sw-line); }
.sw-legal .sw-prose h2 { margin-top: 0; margin-bottom: .6em; font-size: var(--sw-fs-h3); }
.sw-legal__n { display: block; margin-bottom: 8px; font-family: var(--sw-font-label); font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .1em; color: var(--sw-orange-text); }
.sw-legal__related { margin-top: 3em !important; padding-top: 1.4em; border-top: 2px solid var(--sw-ink); font-weight: 600; color: var(--sw-text); }
.sw-prose { padding-bottom: var(--sw-section); font-size: var(--sw-fs-base); line-height: 1.7; color: var(--sw-text-2); }
.sw-prose > * + * { margin-top: 1.1em; }
.sw-prose h2 { font-size: var(--sw-fs-h3); color: var(--sw-text); margin-top: 1.8em; }
.sw-prose h3 { font-size: var(--sw-fs-h4); color: var(--sw-text); margin-top: 1.5em; }
.sw-prose a { color: var(--sw-orange-text); }
.sw-prose ul, .sw-prose ol { padding-left: 1.3em; }
.sw-prose li + li { margin-top: .4em; }
.sw-prose blockquote { margin-inline: 0; padding-left: 24px; border-left: 2px solid var(--sw-orange); color: var(--sw-text); font-size: var(--sw-fs-h4); }
.sw-prose img { height: auto; }
.sw-article__figure { margin: 0 auto clamp(40px, 5vw, 64px); }
.sw-article__figure img { width: 100%; max-height: 640px; object-fit: cover; }
.sw-article__foot { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px; padding-bottom: var(--sw-section); }

.sw-empty-state { padding: clamp(40px, 6vw, 72px); background: var(--sw-sand); text-align: left; max-width: 760px; }
.sw-empty-state h2, .sw-empty-state h3 { font-size: var(--sw-fs-h3); margin-bottom: 12px; }
.sw-empty-state p { color: var(--sw-text-2); }
.sw-pagination { margin-top: 48px; }
.sw-pagination ul, .sw-pagination .nav-links { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.sw-pagination a, .sw-pagination span.page-numbers { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 14px; border: 1px solid var(--sw-line-strong); text-decoration: none; font-weight: 600; }
.sw-pagination .current { background: var(--sw-ink); color: #fff; border-color: var(--sw-black); }
.sw-404__search { margin-top: 36px; max-width: 420px; }
.sw-404 .sw-search { border-color: rgba(255, 255, 255, .3); }

/* 10. Footer */
.sw-footer { background: var(--sw-ink); color: var(--sw-on-dark-2); padding-top: clamp(64px, 7vw, 96px); font-size: var(--sw-fs-sm); }
.sw-footer__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 2fr) minmax(0, 3fr) minmax(0, 3fr); gap: clamp(28px, 4vw, 56px); padding-bottom: clamp(48px, 6vw, 72px); }
.sw-footer__logo img { width: 150px; height: auto; margin-bottom: 24px; filter: brightness(0) invert(1); }
.sw-footer__brand p { max-width: 38ch; margin-bottom: 20px; }
.sw-footer h2 { font-family: var(--sw-font-label); font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: #fff; margin-bottom: 20px; }
.sw-footer ul { list-style: none; display: grid; gap: 10px; }
.sw-footer a { text-decoration: none; transition: color .2s; }
.sw-footer a:hover { color: #fff; text-decoration: underline; text-decoration-color: var(--sw-orange); }
.sw-footer address { font-style: normal; display: grid; gap: 12px; }
.sw-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px 32px; padding: 24px 0 32px; border-top: 1px solid var(--sw-line-dark); font-size: var(--sw-fs-xs); color: var(--sw-on-dark-3); }
.sw-footer__bottom p { margin: 0; }
.sw-footer__legal { display: flex !important; gap: 24px !important; }
.sw-footer__top { display: inline-flex; align-items: center; gap: 8px; color: var(--sw-on-dark-2); }
.sw-footer__top .sw-icon { width: 16px; height: 16px; color: var(--sw-orange); }

/* 10a. v0.14.0 layer — section palette, heroes, kinetic band, project cards, services, projects. */

/* v0.15.0 surfaces. Colour is an art-direction system, not a rota: white and warm paper carry most pages;
   charcoal is lit by a faint warm light (the brand's sun, never navy); grey #989898 is a line and meta tone,
   not a background; yellow and orange appear as the logo's gradient — the kicker tick, the hero emphasis,
   the lifecycle conductor and one full field per page (the closing CTA). Each surface re-scopes text tokens. */
.sw-section--paper, .sw-section--sand, .sw-section--grey { background: var(--sw-warm); }
.sw-section--ink, .sw-section--dark { background: radial-gradient(80% 70% at 100% 0%, rgba(242, 109, 39, .16), rgba(242, 109, 39, 0) 62%), radial-gradient(60% 60% at 0% 100%, rgba(252, 206, 58, .07), rgba(252, 206, 58, 0) 60%), var(--sw-charcoal); color: #fff; --sw-text: #fff; --sw-text-2: var(--sw-on-dark-2); --sw-text-3: var(--sw-on-dark-3); --sw-orange-text: var(--sw-yellow); --sw-line: var(--sw-line-dark); --sw-line-strong: rgba(255, 255, 255, .34); }
.sw-section--dark .sw-kicker, .sw-section--ink .sw-kicker { color: var(--sw-yellow); }
.sw-kicker::before, .sw-page-hero__eyebrow::before, .sw-hero__eyebrow::before { background: var(--sw-energy); }
.sw-pcard__link, .sw-quote figure, .sw-bento__tile, .sw-post-card, .sw-contact__form, .sw-scope li, .sw-svc-next__list a, .sw-service__block--panel, .sw-explore__card:not(.sw-explore__card--lead), .sw-map__facade p, .sw-cta__office { --sw-text: #1a1a1a; --sw-text-2: #474747; --sw-text-3: #595959; --sw-orange-text: #b8461a; --sw-line: #dedede; --sw-line-strong: #c4c4c4; color: var(--sw-text); }

/* Photo overlays are charcoal, multiplied into the image (deep, neutral, no navy). */
.sw-hero, .sw-hero__media, .sw-page-hero, .sw-page-hero__media { background: var(--sw-charcoal); }
.sw-hero__media::after { mix-blend-mode: multiply; background: linear-gradient(90deg, rgba(77, 77, 77, .97) 0%, rgba(77, 77, 77, .82) 48%, rgba(77, 77, 77, .4) 100%), linear-gradient(0deg, rgba(77, 77, 77, .96) 0%, rgba(77, 77, 77, 0) 46%), linear-gradient(180deg, rgba(77, 77, 77, .85) 0%, rgba(77, 77, 77, 0) 24%); }
.sw-page-hero__media::after { mix-blend-mode: multiply; background: linear-gradient(90deg, rgba(77, 77, 77, .97) 0%, rgba(77, 77, 77, .8) 50%, rgba(77, 77, 77, .42) 100%), linear-gradient(0deg, rgba(77, 77, 77, .9), rgba(77, 77, 77, 0) 55%), linear-gradient(180deg, rgba(77, 77, 77, .8) 0%, rgba(77, 77, 77, 0) 26%); }
.sw-svx__stage::after, .sw-flow__frames::after, .sw-bento__photo::after, .sw-explore__media::after { mix-blend-mode: multiply; }

/* Homepage hero slide 1: a bold, oversized statement. */
.sw-hero__title--xl em { color: var(--sw-orange); }
.sw-hero__slide--solo .sw-hero__lead { font-size: var(--sw-fs-lead); max-width: 74ch; }

/* Inner-page heroes: taller, bolder, optional sub-navigation strip (services). */
.sw-page-hero { min-height: clamp(540px, 74svh, 780px); }
.sw-page-hero--lg { min-height: clamp(600px, 88svh, 900px); }
.sw-page-hero--sm { min-height: clamp(420px, 56svh, 560px); }
.sw-page-hero__title { font-size: var(--sw-fs-h1); line-height: .98; letter-spacing: -.04em; max-width: 19ch; margin-bottom: 26px; text-wrap: balance; }
.sw-page-hero__eyebrow { display: inline-flex; align-items: center; gap: 12px; margin: 0 0 18px; font-size: var(--sw-fs-label); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-yellow); }
.sw-page-hero__eyebrow::before { content: ""; width: 28px; height: 2px; background: var(--sw-yellow); }
.sw-page-hero.has-subnav { flex-direction: column; align-items: stretch; justify-content: flex-end; padding-bottom: 0; }
.sw-page-hero.has-subnav .sw-page-hero__inner { width: min(var(--sw-max), 100% - 2 * var(--sw-gutter)); padding-bottom: clamp(40px, 6svh, 72px); }
.sw-subnav { position: relative; border-top: 1px solid var(--sw-line-dark); background: rgba(77, 77, 77, .72); }
@supports (backdrop-filter: blur(8px)) { .sw-subnav { background: rgba(77, 77, 77, .55); backdrop-filter: blur(12px); } }
.sw-subnav__list { list-style: none; display: flex; gap: 2px; overflow-x: auto; scrollbar-width: none; }
.sw-subnav__list::-webkit-scrollbar { display: none; }
.sw-subnav a { display: block; padding: 20px 18px 17px; border-bottom: 3px solid transparent; color: var(--sw-on-dark-2); font-family: var(--sw-font-ui); font-size: var(--sw-fs-ui); font-weight: 500; text-decoration: none; white-space: nowrap; transition: color var(--sw-dur), border-color var(--sw-dur); }
.sw-subnav li:first-child a { padding-left: 0; }
.sw-subnav a:hover, .sw-subnav a:focus-visible { color: #fff; border-bottom-color: rgba(255, 255, 255, .45); }
.sw-subnav a[aria-current] { color: #fff; border-bottom-color: var(--sw-orange); }

/* Project card (homepage rail, /projects/, service and project pages). */
.sw-pgrid { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }
.sw-pcard { display: flex; min-width: 0; }
.sw-pcard__link { position: relative; display: flex; flex-direction: column; width: 100%; background: #fff; border: 1px solid var(--sw-line); text-decoration: none; transition: border-color var(--sw-dur); }
.sw-pcard__link::before { content: ""; position: absolute; left: -1px; top: -1px; z-index: 2; width: calc(100% + 2px); height: 3px; background: var(--sw-orange); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--sw-ease); }
.sw-pcard__link:hover, .sw-pcard__link:focus-visible { border-color: var(--sw-line-strong); }
.sw-pcard__link:hover::before, .sw-pcard__link:focus-visible::before { transform: scaleX(1); }
.sw-pcard__media { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--sw-charcoal); }
.sw-pcard__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--sw-ease); -webkit-user-drag: none; }
.sw-pcard__link:hover .sw-pcard__media img { transform: scale(1.05); }
.sw-pcard__tag { position: absolute; left: 14px; top: 14px; padding: 6px 10px; background: #fff; color: var(--sw-black); font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .02em; line-height: 1.2; }
.sw-pcard__rep { position: absolute; right: 10px; bottom: 10px; padding: 3px 8px; background: rgba(77, 77, 77, .88); color: #fff; font-size: var(--sw-fs-xs); line-height: 1.3; }
.sw-pcard__body { position: relative; display: flex; flex-direction: column; gap: 6px; flex: 1; padding: 22px 64px 24px 22px; }
.sw-pcard__name { align-self: flex-start; font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); line-height: 1.22; letter-spacing: -.02em; color: var(--sw-text); background: linear-gradient(transparent 64%, rgba(252, 206, 58, .75) 0); -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.sw-pcard__scale { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-lead); line-height: 1.2; color: var(--sw-orange-text); }
.sw-pcard__meta { font-size: var(--sw-fs-sm); color: var(--sw-text-3); }
.sw-pcard__go { position: absolute; right: 18px; top: 20px; display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--sw-line-strong); border-radius: 50%; color: var(--sw-text); transition: background-color var(--sw-dur), border-color var(--sw-dur), color var(--sw-dur), transform var(--sw-dur) var(--sw-ease); }
.sw-pcard__go .sw-icon { width: 16px; height: 16px; }
.sw-pcard__link:hover .sw-pcard__go, .sw-pcard__link:focus-visible .sw-pcard__go { background: var(--sw-orange); border-color: var(--sw-orange); color: var(--sw-black); transform: rotate(45deg); }
.sw-pcard--rail { flex: 0 0 clamp(280px, 25vw, 360px); scroll-snap-align: start; user-select: none; }
.sw-pcard--rail .sw-pcard__media { aspect-ratio: auto; height: clamp(200px, min(20vw, 28svh), 270px); }

/* Section heads with controls: heading left, lead + controls stacked in the right column. */
.sw-work__head--split { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(24px, 5vw, 80px); align-items: end; margin-bottom: clamp(36px, 5vw, 64px); }
.sw-fit .sw-work__head--split { margin-bottom: clamp(28px, 4.5svh, 48px); }
.sw-work__head--split .sw-head { margin-bottom: 0; }
.sw-work__aside { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; }
.sw-work__aside .sw-work__tools, .sw-work__aside .sw-rail__nav { margin-bottom: 0; }
.sw-work__aside .sw-head__lead { max-width: none; }

/* Minimal "explore all" link (separate from the rail controls). */
.sw-work__head > .sw-explore-link { margin-bottom: clamp(36px, 5vw, 64px); }
.sw-explore-link { display: inline-flex; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 2px solid currentColor; color: var(--sw-text); font-family: var(--sw-font-ui); font-size: var(--sw-fs-ui); font-weight: 500; text-decoration: none; white-space: nowrap; transition: border-color var(--sw-dur), color var(--sw-dur); }
.sw-explore-link .sw-icon { color: var(--sw-orange-text); transition: transform var(--sw-dur) var(--sw-ease); }
.sw-explore-link:hover, .sw-explore-link:focus-visible { border-bottom-color: var(--sw-orange); }
.sw-explore-link:hover .sw-icon, .sw-explore-link:focus-visible .sw-icon { transform: translateX(4px); }
.sw-section--grey .sw-explore-link .sw-icon { color: var(--sw-black); }

/* Projects page: filters side by side, "Load more". */
/* Service and Sector filters sit side by side: two columns, label above each button set. */
.sw-filters { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: start; gap: 16px clamp(24px, 4vw, 56px); padding: 20px 0; margin-bottom: 18px; }
.sw-filters__group { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.sw-filters__group + .sw-filters__group { padding-left: clamp(24px, 4vw, 56px); border-left: 1px solid var(--sw-line); }
.sw-filters__label { width: auto; }
.sw-filters__opts { display: flex; flex-wrap: wrap; gap: 8px; }
.sw-loadmore { display: flex; flex-direction: column; align-items: center; gap: 12px; margin-top: clamp(32px, 4vw, 48px); }
.sw-loadmore__count { margin: 0; font-size: var(--sw-fs-sm); color: var(--sw-text-3); }

/* Individual project page. */
.sw-project-page { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.sw-project-page h2 { font-size: var(--sw-fs-h2); line-height: 1.05; margin-bottom: .45em; }
.sw-project-page__summary { max-width: 56ch; margin-bottom: 28px; font-size: var(--sw-fs-lead); line-height: 1.5; color: var(--sw-text); }
.sw-project-page .sw-footnote { margin: -12px 0 24px; }
.sw-facts { margin: 0; border-top: 2px solid var(--sw-text); }
.sw-facts div { display: grid; grid-template-columns: minmax(120px, 2fr) minmax(0, 3fr); gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--sw-line); }
.sw-facts dt { padding-top: 3px; font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-facts dd { margin: 0; font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-base); color: var(--sw-text); }
.sw-gallery { list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.sw-gallery--1 { grid-template-columns: minmax(0, 1fr); }
.sw-gallery--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sw-gallery li { aspect-ratio: 4 / 3; overflow: hidden; background: var(--sw-charcoal); }
.sw-gallery--1 li { aspect-ratio: 21 / 9; }
.sw-gallery img { width: 100%; height: 100%; object-fit: cover; }

/* Services overview: image cards (two large, three standard) and the lifecycle strip. */
.sw-svc-grid { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; }

/* Service subpage. */

/* Services explorer on charcoal. */
.sw-section--dark .sw-svx__caps li { background: transparent; border-color: var(--sw-line-dark); color: var(--sw-on-dark-2); }
.sw-section--dark .sw-svx__item::before { background: var(--sw-orange); }

@media (max-width: 1040px) {
	.sw-pgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-svc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-service__intro, .sw-project-page { grid-template-columns: minmax(0, 1fr); }
	.sw-work__head--split { grid-template-columns: minmax(0, 1fr); gap: 16px; }
	.sw-gallery--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
	.sw-pgrid, .sw-svc-grid, .sw-connect__steps, .sw-gallery, .sw-gallery--3 { grid-template-columns: minmax(0, 1fr); }
	.sw-pcard--rail { flex-basis: 80vw; }
	.sw-filters { grid-template-columns: minmax(0, 1fr); }
	.sw-filters__group + .sw-filters__group { padding-left: 0; border-left: 0; }
	.sw-subnav a { padding: 16px 14px 13px; }
	.sw-subnav__list { -webkit-mask-image: linear-gradient(90deg, #000 82%, transparent); mask-image: linear-gradient(90deg, #000 82%, transparent); }
	.sw-page-hero.has-subnav .sw-page-hero__inner { padding-top: calc(var(--sw-header-h) + 40px); }
}

/* 10c. v0.15.0 layer — art direction, hero, homepage compositions, services explorer, portfolio. */

/* ---------- Homepage hero: anchored low, three deliberate lines, one gradient emphasis ---------- */
.sw-hero__media::after { display: none; }
.sw-hero__frame::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(0deg, rgba(38, 38, 38, .9) 0%, rgba(38, 38, 38, .55) 34%, rgba(38, 38, 38, .28) 62%, rgba(38, 38, 38, .5) 100%), linear-gradient(90deg, rgba(38, 38, 38, .7) 0%, rgba(38, 38, 38, .2) 60%, rgba(38, 38, 38, 0) 100%); }
.sw-hero__frame--lead::after { background: linear-gradient(0deg, rgba(26, 26, 26, .94) 0%, rgba(26, 26, 26, .66) 30%, rgba(26, 26, 26, .34) 56%, rgba(26, 26, 26, .3) 78%, rgba(26, 26, 26, .55) 100%), radial-gradient(70% 55% at 22% 40%, rgba(26, 26, 26, .62), rgba(26, 26, 26, 0) 75%); }
.sw-hero__title--lead span { text-shadow: 0 2px 30px rgba(0, 0, 0, .35); }
.sw-hero__inner { justify-content: flex-end; padding-bottom: clamp(18px, 2.6svh, 28px); }
.sw-hero__slide--lead { grid-template-columns: minmax(0, 1fr); }
.sw-hero__slide--lead .sw-hero__copy { max-width: none; }
.sw-hero__title--lead { margin: 0; font-size: clamp(3rem, min(1.2rem + 6.1vw, 12.2svh), 7.75rem); line-height: .93; letter-spacing: -.048em; }
.sw-hero__title--lead span, .sw-hero__title--lead em { display: block; }
.sw-hero__title--lead em { font-style: normal; color: var(--sw-orange); }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
	.sw-hero__title--lead em { width: fit-content; padding-bottom: .06em; background: var(--sw-energy); -webkit-background-clip: text; background-clip: text; color: transparent; }
}
.sw-hero__base { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 24px 48px; margin-top: clamp(24px, 3.6svh, 40px); padding-top: clamp(20px, 2.6svh, 28px); border-top: 1px solid rgba(255, 255, 255, .22); }
.sw-hero__base .sw-hero__lead { max-width: 50ch; margin: 0; font-size: var(--sw-fs-lead); color: rgba(255, 255, 255, .9); }
.sw-hero__base .sw-btn { min-height: 56px; padding-inline: 26px; }
.sw-hero__eyebrow { color: rgba(255, 255, 255, .9); }
.sw-hero__metrics { border-top: 1px solid rgba(255, 255, 255, .18); background: rgba(30, 30, 30, .55); }
@supports (backdrop-filter: blur(8px)) { .sw-hero__metrics { background: rgba(30, 30, 30, .38); backdrop-filter: blur(10px); } }
.sw-hero__metrics .sw-metric::before { background: var(--sw-energy); }
.sw-hero__metrics .sw-metric__unit { color: var(--sw-yellow); }
.sw-hero__chapter-bar::after { background: var(--sw-energy); }

/* ---------- Inner-page heroes: one language (crumb · gradient tick · bold title · lead), varied media ---------- */
.sw-page-hero__media::after { mix-blend-mode: normal; background: linear-gradient(90deg, rgba(38, 38, 38, .88) 0%, rgba(38, 38, 38, .62) 46%, rgba(38, 38, 38, .2) 100%), linear-gradient(0deg, rgba(38, 38, 38, .78), rgba(38, 38, 38, 0) 55%), linear-gradient(180deg, rgba(38, 38, 38, .55) 0%, rgba(38, 38, 38, 0) 24%); }
.sw-page-hero__title em { font-style: normal; color: var(--sw-yellow); }
/* Project heroes show SunWorks site photography as evidence: a lighter grade, text protected only where it sits. */
.sw-page-hero--project .sw-page-hero__media::after { background: linear-gradient(0deg, rgba(38, 38, 38, .88) 0%, rgba(38, 38, 38, .4) 42%, rgba(38, 38, 38, 0) 70%), linear-gradient(180deg, rgba(38, 38, 38, .5) 0%, rgba(38, 38, 38, 0) 22%); }
.sw-page-hero__eyebrow { color: rgba(255, 255, 255, .9); }
.sw-page-hero__eyebrow::before { width: 36px; }

/* ---------- Section heads: the kicker tick is the brand stroke ---------- */
.sw-kicker::before { width: 32px; height: 3px; }

/* ---------- How We Work: the lifecycle conductor ---------- */
.sw-cycle { --flow-p: 0; }
.sw-cycle__track { position: relative; margin-bottom: clamp(28px, 4vw, 48px); }
.sw-cycle__rail { position: absolute; left: 0; right: 0; top: 23px; height: 3px; background: var(--sw-warm-2); }
.sw-cycle__fill { position: absolute; inset: 0; background: var(--sw-energy); transform-origin: left; transform: scaleX(calc(.04 + var(--flow-p) * .96)); transition: transform .7s var(--sw-ease); }
html:not(.js) .sw-cycle__track, .sw-cycle:not(.is-enhanced) .sw-cycle__track { display: none; }
.sw-cycle__nodes { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sw-cycle__nodes[hidden] { display: none; }
.sw-cycle__node { display: grid; grid-template-columns: auto 1fr; grid-template-rows: 48px auto; align-items: center; column-gap: 10px; padding: 0 12px 0 0; border: 0; background: none; color: var(--sw-text-3); text-align: left; cursor: pointer; transition: color var(--sw-dur); }
.sw-cycle__dot { grid-column: 1 / -1; justify-self: start; width: 18px; height: 18px; border: 3px solid var(--sw-warm-2); border-radius: 50%; background: #fff; transition: border-color .4s, background-color .4s, transform .4s var(--sw-ease); }
.sw-cycle__n { font-family: var(--sw-font-label); font-size: var(--sw-fs-xs); font-weight: 600; font-variant-numeric: tabular-nums; }
.sw-cycle__name { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h3); letter-spacing: -.02em; line-height: 1.1; }
.sw-cycle__node:hover, .sw-cycle__node:focus-visible { color: var(--sw-text); }
.sw-cycle__node.is-done .sw-cycle__dot { border-color: #f7a031; background: #f7a031; }
.sw-cycle__node[aria-selected="true"] { color: var(--sw-text); }
.sw-cycle__node[aria-selected="true"] .sw-cycle__dot { border-color: var(--sw-orange); background: var(--sw-orange); transform: scale(1.25); box-shadow: 0 0 0 6px rgba(242, 109, 39, .16); }
.sw-cycle__node[aria-selected="true"] .sw-cycle__n { color: var(--sw-orange-text); }
.sw-cycle__steps { list-style: none; display: grid; }
.sw-cycle__step { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(32px, 5vw, 88px); align-items: center; padding-block: 32px; border-top: 1px solid var(--sw-line); }
.sw-cycle__step:first-child { border-top: 0; padding-top: 0; }
.sw-cycle.is-enhanced .sw-cycle__step { grid-area: 1 / 1; padding: 0; border: 0; opacity: 0; visibility: hidden; transform: translateY(12px); transition: opacity .45s ease, transform .6s var(--sw-ease), visibility .45s; }
.sw-cycle.is-enhanced .sw-cycle__step.is-active { opacity: 1; visibility: visible; transform: none; }
.sw-cycle.is-enhanced .sw-cycle__label { display: none; }
.sw-cycle__label { margin: 0 0 12px; font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-orange-text); }
.sw-cycle__copy h3 { font-size: clamp(1.75rem, 1.3rem + 1.3vw, 2.5rem); line-height: 1.06; letter-spacing: -.03em; margin-bottom: 16px; max-width: 18ch; }
.sw-cycle__copy > p:not(.sw-cycle__label):not(.sw-cycle__by) { max-width: 52ch; margin-bottom: 26px; color: var(--sw-text-2); }
.sw-cycle__by { margin: 0 0 10px; font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-cycle__services { list-style: none; display: flex; flex-wrap: wrap; gap: 10px; }
.sw-cycle__services a { display: inline-flex; align-items: center; gap: 10px; min-height: 46px; padding: 10px 16px; border: 1px solid var(--sw-text); border-radius: var(--sw-radius); color: var(--sw-text); font-family: var(--sw-font-ui); font-size: var(--sw-fs-ui); font-weight: 500; text-decoration: none; transition: background-color var(--sw-dur), color var(--sw-dur), border-color var(--sw-dur); }
.sw-cycle__services a .sw-icon { color: var(--sw-orange-text); transition: transform var(--sw-dur) var(--sw-ease), color var(--sw-dur); }
.sw-cycle__services a:hover, .sw-cycle__services a:focus-visible { background: var(--sw-charcoal); border-color: var(--sw-charcoal); color: #fff; }
.sw-cycle__services a:hover .sw-icon, .sw-cycle__services a:focus-visible .sw-icon { color: var(--sw-yellow); transform: translateX(4px); }
.sw-cycle__media { position: relative; margin: 0; aspect-ratio: 16 / 10; max-height: min(440px, 48svh); width: 100%; overflow: hidden; background: var(--sw-charcoal); }
.sw-cycle__media .sw-img { width: 100%; height: 100%; object-fit: cover; }
.sw-cycle__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(30, 30, 30, .7), rgba(30, 30, 30, 0) 50%); }
.sw-cycle__big { position: absolute; left: 24px; bottom: 14px; z-index: 1; font-family: var(--sw-font-display); font-weight: 700; font-size: clamp(3.5rem, 2rem + 4vw, 6.5rem); line-height: 1; letter-spacing: -.05em; color: #fff; }

/* ---------- Why SunWorks: a typographic standard, not icon cards ---------- */
.sw-standard__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 7vw, 120px); align-items: start; }
.sw-standard__intro { position: sticky; top: calc(var(--sw-header-h) + 32px); }
.sw-standard__intro .sw-head__h { margin-bottom: 20px; }
.sw-standard__lead { max-width: 44ch; color: var(--sw-text-2); margin-bottom: clamp(32px, 5vw, 56px); }
.sw-standard__metric { display: flex; flex-direction: column; gap: 6px; margin: 0; padding-top: 18px; border-top: 3px solid transparent; border-image: var(--sw-energy) 1; max-width: 22ch; }
.sw-standard__metric .sw-metric__value { font-family: var(--sw-font-display); font-weight: 700; font-size: clamp(3.5rem, 2.2rem + 3.6vw, 6rem); line-height: .95; letter-spacing: -.05em; color: var(--sw-text); }
.sw-standard__metric .sw-metric__unit { color: var(--sw-orange); }
.sw-standard__metric > span { color: var(--sw-text-3); font-size: var(--sw-fs-sm); }
.sw-standard__list { list-style: none; border-top: 1px solid var(--sw-line-strong); }
.sw-standard__list li { position: relative; display: grid; grid-template-columns: 72px minmax(0, 1fr); column-gap: 24px; padding: clamp(26px, 3vw, 40px) 0; border-bottom: 1px solid var(--sw-line-strong); }
.sw-standard__list li::before { content: ""; position: absolute; left: 0; top: -1px; width: 100%; height: 2px; background: var(--sw-energy); transform: scaleX(0); transform-origin: left; transition: transform .8s var(--sw-ease); }
.sw-standard__list li:hover::before { transform: scaleX(1); }
.sw-standard__n { grid-row: span 2; padding-top: .45em; font-size: var(--sw-fs-sm); font-weight: 600; color: var(--sw-orange-text); font-variant-numeric: tabular-nums; }
.sw-standard__list h3 { font-size: var(--sw-fs-h3); font-weight: 700; line-height: 1.12; letter-spacing: -.025em; margin-bottom: 10px; }
.sw-standard__list p { margin: 0; max-width: 56ch; color: var(--sw-text-2); }

/* ---------- Featured projects: indexed by service ---------- */
.sw-showcase__grid { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 8fr); gap: clamp(28px, 4vw, 64px); align-items: start; }
.sw-showcase:not(.is-enhanced) .sw-showcase__grid { grid-template-columns: minmax(0, 1fr); }
.sw-showcase__tabs { display: flex; flex-direction: column; border-top: 1px solid var(--sw-line-strong); }
.sw-showcase__tabs[hidden] { display: none; }
.sw-showcase__tab { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 18px 16px 18px 20px; border: 0; border-bottom: 1px solid var(--sw-line-strong); background: none; color: var(--sw-text-2); text-align: left; cursor: pointer; transition: background-color var(--sw-dur), color var(--sw-dur); }
.sw-showcase__tab::before { content: ""; position: absolute; left: 0; top: -1px; bottom: 0; width: 3px; background: var(--sw-energy); transform: scaleY(0); transform-origin: top; transition: transform .45s var(--sw-ease); }
.sw-showcase__svc { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); line-height: 1.2; letter-spacing: -.02em; }
.sw-showcase__count { font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .06em; color: var(--sw-text-3); }
.sw-showcase__tab:hover { color: var(--sw-text); background: rgba(255, 255, 255, .6); }
.sw-showcase__tab[aria-selected="true"] { color: var(--sw-text); background: #fff; }
.sw-showcase__tab[aria-selected="true"]::before { transform: scaleY(1); }
.sw-showcase__panel + .sw-showcase__panel { margin-top: 48px; }
.sw-showcase.is-enhanced .sw-showcase__panel + .sw-showcase__panel { margin-top: 0; }
.sw-showcase.is-enhanced .sw-showcase__panel.is-active { animation: sw-fade-up .5s var(--sw-ease) both; }
.sw-showcase__title { margin-bottom: 18px; font-size: var(--sw-fs-h3); }
.sw-showcase.is-enhanced .sw-showcase__title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.sw-showcase__all { margin-top: 22px; }
.sw-pgrid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sw-pcard--feature .sw-pcard__media { aspect-ratio: 4 / 3; }
@keyframes sw-fade-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* ---------- Project card body (v0.15.0): name leads; capacity · industry · place; SunWorks role ---------- */
.sw-pcard__body { gap: 10px; padding: 22px; }
.sw-pcard__name { margin-right: 46px; font-size: var(--sw-fs-h4); }
.sw-pcard__scale { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-base); color: var(--sw-text); }
.sw-pcard__meta { font-size: var(--sw-fs-sm); color: var(--sw-text-2); }
.sw-pcard__role { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--sw-line); font-size: var(--sw-fs-xs); }
.sw-pcard__role-k { font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-pcard__role-v { font-weight: 600; color: var(--sw-text); }
.sw-pcard__link::before { background: var(--sw-energy); }

/* ---------- Testimonials on charcoal: quiet glass cards, the quote carries the weight ---------- */
.sw-voices .sw-quote figure { background: rgba(255, 255, 255, .05); border: 1px solid var(--sw-line-dark); border-top: 0; --sw-text: #fff; --sw-text-3: var(--sw-on-dark-3); --sw-line-strong: var(--sw-line-dark); }
.sw-voices .sw-quote figure::before { content: ""; position: absolute; left: -1px; right: -1px; top: 0; height: 3px; background: var(--sw-energy); }
.sw-voices .sw-quote__mark { color: var(--sw-yellow); }
.sw-voices .sw-rail__btn { background: transparent; border-color: rgba(255, 255, 255, .4); color: #fff; }
.sw-voices .sw-rail__progress { background: var(--sw-line-dark); }
.sw-rail__progress span { background: var(--sw-energy); }

/* ---------- Closing CTA: the one full-colour field (logo gradient, dark text ≥ 6:1) ---------- */
.sw-cta { padding-block: clamp(72px, 9vw, 132px); background: var(--sw-energy-field); color: var(--sw-black); border-top: 0; --sw-on-dark-2: #1f1f1f; --sw-line-dark: rgba(20, 20, 20, .24); }
.sw-cta::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(60% 90% at 88% 10%, rgba(255, 255, 255, .28), rgba(255, 255, 255, 0) 60%), radial-gradient(50% 80% at 0% 100%, rgba(242, 109, 39, .35), rgba(242, 109, 39, 0) 60%); }
.sw-cta__inner { grid-template-columns: minmax(0, 1fr); align-items: start; }
.sw-cta--contact .sw-cta__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: center; }
.sw-cta .sw-kicker { color: var(--sw-black); }
.sw-cta .sw-cta__copy > .sw-kicker { font-size: var(--sw-fs-label); line-height: 1.3; } /* v0.17.0: the lead rule below also matched the kicker */
.sw-cta .sw-kicker::before { background: var(--sw-black); }
.sw-cta h2 { max-width: 16ch; color: var(--sw-black); }
.sw-cta h2 em { color: var(--sw-black); }
.sw-cta__copy > p { max-width: 54ch; color: #1f1f1f; font-size: var(--sw-fs-lead); line-height: 1.5; }
.sw-cta__actions { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 12px 28px; margin-top: 32px; }
.sw-cta__actions .sw-btn { margin: 0 8px 0 0; min-height: 56px; padding-inline: 26px; }
.sw-cta .sw-btn--primary { --b-bg: var(--sw-charcoal); --b-bd: var(--sw-charcoal); --b-fg: #fff; }
.sw-cta .sw-btn--primary:hover, .sw-cta .sw-btn--primary:focus-visible { --b-bg: #fff; --b-bd: #fff; --b-fg: var(--sw-black); }
.sw-cta__contact { padding: 8px 0; border-bottom: 1px solid rgba(20, 20, 20, .35); color: var(--sw-black); font-weight: 600; }
.sw-cta__contact .sw-icon { color: var(--sw-black); }
.sw-cta__contact:hover, .sw-cta__contact:focus-visible { color: var(--sw-black); border-bottom-color: var(--sw-black); }
.sw-cta__office { padding: clamp(24px, 2.6vw, 32px); background: #fff; box-shadow: 0 30px 60px -36px rgba(60, 30, 10, .45); }
.sw-cta__office-label { margin: 0 0 6px; font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-orange-text); }
.sw-cta__office-name { margin: 0 0 4px; font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); letter-spacing: -.02em; }
.sw-cta__office address { margin-bottom: 18px; font-style: normal; color: var(--sw-text-2); font-size: var(--sw-fs-sm); }
.sw-cta__office-note { margin: 10px 0 0; font-size: var(--sw-fs-xs); color: var(--sw-text-3); }
.sw-map--compact { margin: 0; width: 100%; aspect-ratio: auto; height: clamp(180px, 16vw, 220px); }
.sw-cta__office .sw-link { color: var(--sw-text); }
.sw-cta__office .sw-link:hover, .sw-cta__office .sw-link:focus-visible { color: var(--sw-orange-text); border-bottom-color: var(--sw-orange); }
.sw-map--compact .sw-map__facade { justify-content: flex-end; padding: 16px; background-color: var(--sw-warm); }
.sw-map--compact .sw-map__pin { top: 28%; }

/* ---------- FAQ (closes the homepage before the footer) ---------- */
.sw-faq-section { background: #fff; }
.sw-faq__intro { position: sticky; top: calc(var(--sw-header-h) + 32px); }
.sw-faq__intro > p:not(.sw-kicker) { max-width: 40ch; margin-bottom: 20px; color: var(--sw-text-2); }

/* ---------- Services overview: the five services on one lifecycle diagram ---------- */
.sw-sxmap { --cols: 4; }
.sw-sxmap__stages { list-style: none; display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); border-bottom: 3px solid transparent; border-image: var(--sw-energy) 1; }
.sw-sxmap__stages li { display: flex; align-items: baseline; gap: 8px; padding: 0 12px 14px 0; font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); letter-spacing: -.02em; }
.sw-sxmap__stages li span { font-family: var(--sw-font-label); font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-orange-text); }
.sw-sxmap__rows { list-style: none; }
.sw-sxmap__row { position: relative; display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); border-bottom: 1px solid var(--sw-line); background: repeating-linear-gradient(90deg, transparent 0, transparent calc(25% - 1px), var(--sw-line) calc(25% - 1px), var(--sw-line) 25%); }
.sw-sxmap__bar { grid-column: var(--from) / var(--to); position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 4px 16px; margin: 10px 0; padding: 16px 18px; background: var(--sw-warm); border-left: 3px solid var(--sw-orange); color: var(--sw-text); text-decoration: none; transition: background-color var(--sw-dur), color var(--sw-dur); }
.sw-sxmap__text { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.sw-sxmap__text strong { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); letter-spacing: -.02em; line-height: 1.2; }
.sw-sxmap__text span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: var(--sw-fs-sm); color: var(--sw-text-2); line-height: 1.45; }
.sw-sxmap__where { display: none; }
.sw-sxmap__go { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid var(--sw-line-strong); border-radius: 50%; transition: background-color var(--sw-dur), border-color var(--sw-dur), color var(--sw-dur); }
.sw-sxmap__go .sw-icon { width: 16px; height: 16px; }
.sw-sxmap__bar:hover, .sw-sxmap__bar:focus-visible { background: var(--sw-charcoal); color: #fff; }
.sw-sxmap__bar:hover .sw-sxmap__text span, .sw-sxmap__bar:focus-visible .sw-sxmap__text span { color: var(--sw-on-dark-2); }
.sw-sxmap__bar:hover .sw-sxmap__go, .sw-sxmap__bar:focus-visible .sw-sxmap__go { background: var(--sw-orange); border-color: var(--sw-orange); color: var(--sw-black); }

/* ---------- Services detail: sticky service bar + focused view ---------- */
.sw-sx { position: relative; }
.sw-sx__bar { position: sticky; top: var(--sw-header-h); z-index: 20; transition: top .3s var(--sw-ease); background: rgba(255, 255, 255, .94); border-block: 1px solid var(--sw-line); }
@supports (backdrop-filter: blur(8px)) { .sw-sx__bar { background: rgba(255, 255, 255, .82); backdrop-filter: blur(12px); } }
body.header-hidden .sw-sx__bar { top: 0; }
.sw-sx__nav { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; }
.sw-sx__nav::-webkit-scrollbar { display: none; }
.sw-sx__nav a { flex: none; display: inline-flex; align-items: baseline; gap: 8px; padding: 18px 16px 15px; border-bottom: 3px solid transparent; color: var(--sw-text-2); font-family: var(--sw-font-ui); font-size: var(--sw-fs-ui); font-weight: 500; text-decoration: none; white-space: nowrap; transition: color var(--sw-dur), border-color var(--sw-dur); }
.sw-sx__nav a:first-child { padding-left: 0; }
.sw-sx__nav a span { font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-text-3); font-variant-numeric: tabular-nums; }
.sw-sx__nav a:hover, .sw-sx__nav a:focus-visible { color: var(--sw-text); border-bottom-color: var(--sw-line-strong); }
.sw-sx__nav a[aria-current] { color: var(--sw-text); border-bottom-color: var(--sw-orange); }
.sw-sx__nav a[aria-current] span { color: var(--sw-orange-text); }
.sw-sx.is-enhanced .sw-sx__panel:not(.is-active) { display: none; }
.sw-sx.is-enhanced .sw-sx__panel.is-active { animation: sw-fade-up .5s var(--sw-ease) both; }
.sw-sx__panel { padding-top: clamp(48px, 6vw, 88px); }
.sw-sx__panel + .sw-sx__panel { border-top: 1px solid var(--sw-line); }
.sw-sx__panel [data-sx-heading]:focus { outline: none; }
.sw-sx__intro { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.sw-sx__intro h2 { font-size: var(--sw-fs-h2); line-height: 1.04; letter-spacing: -.035em; margin-bottom: 20px; max-width: 18ch; }
.sw-sx__lead { max-width: 58ch; color: var(--sw-text-2); font-size: var(--sw-fs-lead); line-height: 1.55; }
.sw-sx__where { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; max-width: 440px; margin: 28px 0 30px; }
.sw-sx__where span { padding-top: 10px; border-top: 3px solid var(--sw-warm-2); font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-sx__where span.is-on { border-image: var(--sw-energy) 1; color: var(--sw-text); }
.sw-sx__media { margin: 0; width: 100%; height: clamp(360px, 62svh, 620px); overflow: hidden; background: var(--sw-charcoal); }
.sw-sx__media .sw-img { width: 100%; height: 100%; object-fit: cover; }
.sw-sx__brief { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(24px, 4vw, 56px); margin-top: clamp(56px, 7vw, 104px); }
.sw-sx__challenge h3, .sw-sx__role h3, .sw-sx__challenge h2, .sw-sx__role h2 { font-size: var(--sw-fs-h3); line-height: 1.12; letter-spacing: -.025em; margin-bottom: 14px; }
.sw-sx__challenge > p:not(.sw-kicker) { color: var(--sw-text-2); max-width: 60ch; }
.sw-sx__role { align-self: start; padding: clamp(24px, 3vw, 36px); background: var(--sw-warm); border-top: 3px solid transparent; border-image: var(--sw-energy) 1; }
.sw-sx__role > p:not(.sw-kicker) { margin: 0; color: var(--sw-text-2); }
.sw-sx__block { margin-top: clamp(56px, 7vw, 104px); }
.sw-sx__h { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; margin-bottom: clamp(24px, 3vw, 36px); font-size: var(--sw-fs-h2); letter-spacing: -.035em; line-height: 1.05; }
.sw-sx__h .sw-kicker { margin-bottom: 10px; }
.sw-sx__scope { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--sw-line-strong); }
.sw-sx__scope li { display: grid; grid-template-columns: 40px minmax(0, 1fr); column-gap: 12px; row-gap: 6px; padding: 24px 24px 24px 0; border-bottom: 1px solid var(--sw-line); }
.sw-sx__scope-n { grid-row: span 2; padding-top: 3px; font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-orange-text); font-variant-numeric: tabular-nums; }
.sw-sx__scope strong { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); line-height: 1.2; letter-spacing: -.02em; }
.sw-sx__scope span:last-child { color: var(--sw-text-2); font-size: var(--sw-fs-sm); }
.sw-sx__method { margin-top: clamp(56px, 7vw, 104px); padding-block: clamp(56px, 7vw, 96px); background: radial-gradient(80% 70% at 100% 0%, rgba(242, 109, 39, .16), rgba(242, 109, 39, 0) 62%), var(--sw-charcoal); color: #fff; --sw-text: #fff; --sw-text-2: var(--sw-on-dark-2); --sw-text-3: var(--sw-on-dark-3); --sw-line: var(--sw-line-dark); }
.sw-sx__method .sw-kicker { color: var(--sw-yellow); }
.sw-sx__steps { list-style: none; position: relative; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 24px; padding-top: 28px; }
.sw-sx__steps::before { content: ""; position: absolute; left: 0; right: 0; top: 8px; height: 3px; background: var(--sw-energy); }
.sw-sx__steps li { position: relative; display: flex; flex-direction: column; gap: 8px; }
.sw-sx__steps li::before { content: ""; position: absolute; left: 0; top: -28px; width: 18px; height: 18px; margin-top: 0; border-radius: 50%; background: var(--sw-charcoal); border: 3px solid var(--sw-yellow); }
.sw-sx__step-n { font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-yellow); font-variant-numeric: tabular-nums; }
.sw-sx__steps strong { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); line-height: 1.2; letter-spacing: -.02em; }
.sw-sx__steps span:last-child { color: var(--sw-on-dark-2); font-size: var(--sw-fs-sm); }
.sw-sx__principles { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 0 32px; margin-top: clamp(40px, 5vw, 64px); border-top: 1px solid var(--sw-line-dark); }
.sw-sx__principles li { display: flex; flex-direction: column; gap: 6px; padding: 20px 0; border-bottom: 1px solid var(--sw-line-dark); }
.sw-sx__principles strong { font-family: var(--sw-font-display); font-weight: 500; font-size: var(--sw-fs-base); }
.sw-sx__principles span { color: var(--sw-on-dark-2); font-size: var(--sw-fs-sm); }
.sw-sx__evidence-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 32px; margin-bottom: clamp(24px, 3vw, 36px); }
.sw-sx__evidence-head .sw-sx__h { margin-bottom: 0; }
.sw-sx__panel > :last-child { margin-bottom: clamp(64px, 8vw, 112px); }
.sw-sx__panel > .sw-sx__method:last-child { margin-bottom: 0; }

/* ---------- Portfolio filter row ---------- */
.sw-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px 28px; padding: 18px 0 20px; margin-bottom: 28px; border-block: 1px solid var(--sw-line); }
.sw-filters__group { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; min-width: 0; }
.sw-filters__group + .sw-filters__group { padding-left: 0; border-left: 0; }
.sw-filters__group--chips { flex: 1 1 auto; }
.sw-filters__label { font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-filters__opts { display: flex; flex-wrap: nowrap; gap: 6px; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.sw-filters__opts::-webkit-scrollbar { display: none; }
.sw-filters__opts button { flex: none; }
.sw-select { position: relative; display: inline-flex; }
.sw-select select { appearance: none; -webkit-appearance: none; min-width: 240px; min-height: 44px; padding: 10px 44px 10px 14px; border: 1px solid var(--sw-line-strong); border-radius: var(--sw-radius); background: #fff; color: var(--sw-text); font: 500 var(--sw-fs-ui) / 1.2 var(--sw-font-ui); cursor: pointer; transition: border-color var(--sw-dur); }
.sw-select select:hover { border-color: var(--sw-text); }
.sw-select .sw-icon { position: absolute; right: 14px; top: 50%; translate: 0 -50%; width: 18px; height: 18px; pointer-events: none; }
.sw-filters__status { display: flex; align-items: center; gap: 16px; margin-left: auto; min-height: 44px; }
.sw-filters__status .sw-results { margin: 0; font-size: var(--sw-fs-sm); font-weight: 600; color: var(--sw-text); white-space: nowrap; }
.sw-filters__reset { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 4px; border: 0; background: none; color: var(--sw-orange-text); font: 500 var(--sw-fs-ui) / 1 var(--sw-font-ui); cursor: pointer; }
.sw-filters__reset .sw-icon { width: 16px; height: 16px; }
.sw-filters__reset:hover span, .sw-filters__reset:focus-visible span { text-decoration: underline; text-underline-offset: 3px; }
.sw-filters__reset[hidden] { display: none; }
.sw-empty { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 32px; padding: clamp(28px, 4vw, 48px); background: var(--sw-warm); }
.sw-empty[hidden] { display: none; }
.sw-empty p { margin: 0; color: var(--sw-text-2); }
.sw-empty strong { display: block; font-family: var(--sw-font-display); font-size: var(--sw-fs-h4); color: var(--sw-text); }

/* ---------- Project page ---------- */
.sw-project-page h2 { font-size: var(--sw-fs-h2); }
.sw-project-page__scope { margin: 8px 0 28px; padding: 22px 24px; background: var(--sw-warm); border-left: 3px solid var(--sw-orange); }
.sw-project-page__scope .sw-kicker { margin-bottom: 10px; }
.sw-project-page__role { margin: 0 0 6px; font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); letter-spacing: -.02em; color: var(--sw-text); }
.sw-project-page__scope p:last-child { margin: 0; color: var(--sw-text-2); }
.sw-project-page__ca { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin-bottom: 28px; }
.sw-facts { border-top: 3px solid transparent; border-image: var(--sw-energy) 1; }
.sw-gallery-section { background: var(--sw-charcoal); }

@media (max-width: 1040px) {
	.sw-hero__base { flex-direction: column; align-items: flex-start; }
	.sw-cycle__step { grid-template-columns: minmax(0, 1fr); }
	.sw-cycle__media { order: -1; }
	.sw-standard__grid, .sw-showcase__grid, .sw-sx__intro, .sw-sx__brief, .sw-cta--contact .sw-cta__inner { grid-template-columns: minmax(0, 1fr); }
	.sw-standard__intro, .sw-faq__intro { position: static; }
	.sw-showcase__tabs { flex-direction: row; overflow-x: auto; border-top: 0; border-bottom: 1px solid var(--sw-line-strong); scrollbar-width: none; }
	.sw-showcase__tabs::-webkit-scrollbar { display: none; }
	.sw-showcase__tab { flex: none; border-bottom: 0; padding: 14px 18px 14px 0; background: none !important; }
	.sw-showcase__tab::before { left: 0; right: 18px; top: auto; bottom: -1px; width: auto; height: 3px; transform: scaleX(0); transform-origin: left; }
	.sw-showcase__tab[aria-selected="true"]::before { transform: scaleX(1); }
	.sw-sx__media { height: auto; aspect-ratio: 16 / 10; order: -1; }
	.sw-sx__scope { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-sxmap__stages { display: none; }
	.sw-sxmap__row { display: block; background: none; border-bottom: 0; }
	.sw-sxmap__bar { grid-template-columns: minmax(0, 1fr) auto; margin: 0 0 10px; }
	.sw-sxmap__where { display: block; grid-column: 1; grid-row: 2; font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--sw-orange-text); }
	.sw-sxmap__go { grid-column: 2; grid-row: 1 / span 2; }
	.sw-sxmap__bar:hover .sw-sxmap__where { color: var(--sw-yellow); }
	.sw-filters__status { margin-left: 0; }
}
@media (max-width: 720px) {
	.sw-hero__title--lead { font-size: clamp(2.6rem, 11.4vw, 3.4rem); line-height: .96; }
	.sw-hero__base .sw-actions { width: 100%; }
	.sw-hero__base .sw-btn { width: 100%; }
	.sw-cycle__nodes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.sw-cycle__name { font-size: var(--sw-fs-base); }
	.sw-cycle__node { padding-right: 4px; }
	.sw-cycle__copy h3 { font-size: var(--sw-fs-h3); }
	.sw-pgrid--2 { grid-template-columns: minmax(0, 1fr); }
	.sw-standard__list li { grid-template-columns: 44px minmax(0, 1fr); column-gap: 12px; }
	.sw-sx__scope, .sw-project-page__ca { grid-template-columns: minmax(0, 1fr); }
	.sw-sx__steps { grid-template-columns: minmax(0, 1fr); padding-top: 0; padding-left: 32px; }
	.sw-sx__steps::before { left: 8px; right: auto; top: 0; bottom: 0; width: 3px; height: auto; }
	.sw-sx__steps li::before { left: -32px; top: 2px; }
	.sw-sxmap__text span { display: none; }
	.sw-filters { flex-direction: column; flex-wrap: nowrap; align-items: stretch; }
	.sw-filters__group { width: 100%; }
	.sw-select, .sw-select select { width: 100%; }
	.sw-filters__status { justify-content: space-between; }
	.sw-cta__actions { flex-direction: column; align-items: stretch; gap: 8px; }
	.sw-cta__actions .sw-btn { margin: 0 0 8px; }
}

/* Restored from v0.14.0 (Services overview cards, lifecycle strip) and v0.14.0 Why SunWorks bento. */
.sw-bento { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1fr); grid-auto-rows: minmax(min(220px, 26svh), auto); gap: 16px; }
.sw-bento__photo { position: relative; grid-row: span 2; margin: 0; min-height: 420px; overflow: hidden; background: var(--sw-navy) linear-gradient(135deg, var(--sw-navy-2), var(--sw-ink)); color: #fff; }
.sw-bento__photo .sw-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--sw-ease); }
.sw-bento__photo:hover .sw-img { transform: scale(1.04); }
.sw-bento__photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(77, 77, 77, .9) 0%, rgba(77, 77, 77, .2) 55%, rgba(77, 77, 77, 0) 100%); }
.sw-bento__metric { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; display: flex; flex-direction: column; gap: 8px; padding: 32px; }
.sw-bento__metric .sw-metric__value { font-size: var(--sw-fs-hero); }
.sw-bento__metric > span { max-width: 22ch; color: var(--sw-on-dark-2); font-size: var(--sw-fs-sm); }
.sw-bento__metric .sw-metric__unit { color: var(--sw-yellow); }
.sw-bento__tile { position: relative; display: flex; flex-direction: column; padding: clamp(22px, 2.2vw, 30px); background: #fff; border: 1px solid var(--sw-line); transition: transform .45s var(--sw-ease), box-shadow .45s, border-color .3s; }
.sw-bento__tile::before { content: ""; position: absolute; left: -1px; top: -1px; width: calc(100% + 2px); height: 2px; background: var(--sw-orange); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--sw-ease); }
.sw-bento__tile:hover { border-color: var(--sw-line-strong); }
.sw-bento__tile:hover::before { transform: scaleX(1); }
.sw-bento__icon { display: grid; place-items: center; width: 44px; height: 44px; margin-bottom: auto; background: var(--sw-sand); color: var(--sw-orange-text); transition: background-color .3s, color .3s; }
.sw-bento__icon svg { width: 24px; height: 24px; }
.sw-bento__tile:hover .sw-bento__icon { background: var(--sw-orange); color: var(--sw-black); }
.sw-bento__tile h3 { margin: 28px 0 8px; font-size: var(--sw-fs-h4); line-height: 1.25; }
.sw-bento__tile p { margin: 0; color: var(--sw-text-2); font-size: var(--sw-fs-sm); }
.sw-bento__tile { --sw-text: #1a1a1a; --sw-text-2: #474747; --sw-text-3: #595959; --sw-orange-text: #b8461a; --sw-line: #dedede; --sw-line-strong: #c4c4c4; color: var(--sw-text); }
.sw-bento__photo::after { mix-blend-mode: multiply; }
.sw-svc-grid { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; }
.sw-svc-card { grid-column: span 2; display: flex; }
.sw-svc-card:nth-child(-n+2) { grid-column: span 3; }
.sw-svc-card a { position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: flex-end; width: 100%; min-height: clamp(320px, 30vw, 420px); padding: clamp(24px, 2.6vw, 36px); overflow: hidden; background: var(--sw-charcoal); color: #fff; text-decoration: none; }
.sw-svc-card:nth-child(-n+2) a { min-height: clamp(380px, 38vw, 520px); }
.sw-svc-card__media { position: absolute; inset: 0; z-index: -1; }
.sw-svc-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--sw-ease); }
.sw-svc-card__media::after { content: ""; position: absolute; inset: 0; mix-blend-mode: multiply; background: linear-gradient(0deg, rgba(77, 77, 77, .98) 0%, rgba(77, 77, 77, .7) 48%, rgba(77, 77, 77, .2) 100%); }
.sw-svc-card a:hover .sw-svc-card__media img, .sw-svc-card a:focus-visible .sw-svc-card__media img { transform: scale(1.05); }
.sw-svc-card__body { display: flex; flex-direction: column; gap: 10px; max-width: 46ch; }
.sw-svc-card__n { font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .14em; color: var(--sw-yellow); }
.sw-svc-card__title { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h3); line-height: 1.08; letter-spacing: -.03em; }
.sw-svc-card:nth-child(-n+2) .sw-svc-card__title { font-size: clamp(1.8rem, 1.2rem + 1.6vw, 2.75rem); }
.sw-svc-card__text { color: var(--sw-on-dark-2); font-size: var(--sw-fs-sm); }
.sw-svc-card__go { display: inline-flex; align-items: center; gap: 10px; align-self: flex-start; margin-top: 8px; padding: 4px 0; border-bottom: 2px solid var(--sw-orange); font-family: var(--sw-font-ui); font-weight: 500; transition: border-color var(--sw-dur); }
.sw-svc-card__go .sw-icon { transition: transform var(--sw-dur) var(--sw-ease); }
.sw-svc-card a:hover .sw-svc-card__go { border-bottom-color: var(--sw-yellow); }
.sw-svc-card a:hover .sw-svc-card__go .sw-icon { transform: translateX(4px); }
.sw-connect__steps { list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-top: 2px solid var(--sw-black); }
.sw-connect__steps a { display: flex; flex-direction: column; gap: 12px; height: 100%; padding: 24px 20px 26px 0; color: var(--sw-black); text-decoration: none; }
.sw-connect__steps li + li a { padding-left: 20px; border-left: 1px solid rgba(20, 20, 20, .22); }
.sw-connect__n { font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .12em; }
.sw-connect__steps strong { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); line-height: 1.2; letter-spacing: -.02em; }
.sw-connect__steps .sw-icon { margin-top: auto; transition: transform var(--sw-dur) var(--sw-ease); }
.sw-connect__steps a:hover strong { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .18em; }
.sw-connect__steps a:hover .sw-icon { transform: translateX(6px); }
@media (max-width: 1040px) {
	.sw-svc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-svc-card, .sw-svc-card:nth-child(-n+2) { grid-column: span 1; }
	.sw-svc-card:first-child { grid-column: 1 / -1; }
	.sw-connect__steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-connect__steps li + li a { padding-left: 0; border-left: 0; }
	.sw-connect__steps li a { border-bottom: 1px solid rgba(20, 20, 20, .22); }
}
@media (max-width: 720px) {
	.sw-svc-grid, .sw-connect__steps { grid-template-columns: minmax(0, 1fr); }
	.sw-bento { grid-template-columns: 1fr; }
	.sw-bento__photo { min-height: 340px; }
	.sw-bento__tile h3 { margin-top: 28px; }
}
@media (min-width: 1041px) and (max-height: 860px) {
	.sw-bento__tile h3 { margin-top: 20px; }
}
@media (max-width: 1180px) {
	.sw-bento { grid-template-columns: 1fr 1fr; }
	.sw-bento__photo { grid-row: auto; grid-column: 1 / -1; min-height: 380px; }
}

/* 10d. v0.16.0 layer — navigation over the hero, brighter hero, five metrics, restored Why SunWorks and
   Services overview, five-image project mosaic, centred testimonials, scroll-driven How We Work, sticky service list. */

/* ---------- Navigation: transparent over the hero, white letter-spaced labels on a soft top shade ---------- */
@media (min-width: 1041px) {
	.sw-nav__list > li > a { font-size: .875rem; letter-spacing: .12em; text-transform: uppercase; }
	.sw-logo { height: 42px; }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open) { height: 96px; }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open)::before { content: ""; position: absolute; inset: 0 0 -48px; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .22) 55%, rgba(0, 0, 0, 0) 100%); }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-logo { height: 52px; }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-nav__list > li > a { color: #fff; text-shadow: 0 1px 12px rgba(0, 0, 0, .3); }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-nav__list > li > a::after { background: #fff; }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-nav__panel-toggle { color: #fff; }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-header__cta { --b-bg: rgba(255, 255, 255, .1); --b-bd: rgba(255, 255, 255, .75); --b-fg: #fff; }
	@supports (backdrop-filter: blur(6px)) { .sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-header__cta { backdrop-filter: blur(6px); } }
	.sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-header__cta:hover, .sw-header--overlay:not(.is-scrolled):not(.panel-open) .sw-header__cta:focus-visible { --b-bg: #fff; --b-bd: #fff; --b-fg: var(--sw-black); }
	.sw-header { transition: background-color .35s, transform .4s var(--sw-ease), box-shadow .35s, color .35s, height .35s var(--sw-ease); }
	.sw-logo { transition: filter .35s, height .35s var(--sw-ease); }
}

/* ---------- Hero: brighter grade; the overlay only protects the text ---------- */
.sw-hero__frame::after { background: linear-gradient(0deg, rgba(26, 26, 26, .78) 0%, rgba(26, 26, 26, .42) 32%, rgba(26, 26, 26, .12) 60%, rgba(26, 26, 26, .25) 100%), linear-gradient(90deg, rgba(26, 26, 26, .5) 0%, rgba(26, 26, 26, .12) 55%, rgba(26, 26, 26, 0) 100%); }
.sw-hero__frame--lead::after { background: linear-gradient(0deg, rgba(26, 26, 26, .82) 0%, rgba(26, 26, 26, .46) 28%, rgba(26, 26, 26, .1) 52%, rgba(26, 26, 26, 0) 66%, rgba(26, 26, 26, .2) 100%), linear-gradient(90deg, rgba(26, 26, 26, .62) 0%, rgba(26, 26, 26, .34) 38%, rgba(26, 26, 26, 0) 68%); }
.sw-hero__frame--lead .sw-img { filter: brightness(1.1) saturate(1.06); }
.sw-hero__metrics { background: rgba(26, 26, 26, .34); }
@supports (backdrop-filter: blur(8px)) { .sw-hero__metrics { background: rgba(26, 26, 26, .24); } }
.sw-hero__metrics .sw-metrics { grid-template-columns: repeat(5, minmax(0, 1fr)); }

/* ---------- Project names: no highlighter ---------- */
.sw-pcard__name { background: none; }

/* ---------- Featured projects: service tabs above a five-image mosaic ---------- */
.sw-showcase__grid, .sw-showcase:not(.is-enhanced) .sw-showcase__grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
.sw-showcase__tabs { flex-direction: row; overflow-x: auto; margin-bottom: clamp(24px, 3vw, 36px); border-top: 0; border-bottom: 1px solid var(--sw-line-strong); scrollbar-width: none; }
.sw-showcase__tabs::-webkit-scrollbar { display: none; }
.sw-showcase__tab { flex: 1 0 auto; padding: 16px 28px 16px 0; border-bottom: 0; background: none !important; }
@media (min-width: 1041px) { .sw-showcase__tab { flex: 1 1 0; min-width: 0; padding-right: 18px; } .sw-showcase__tab::before { right: 18px; } }
.sw-showcase__tab::before { left: 0; right: 28px; top: auto; bottom: -1px; width: auto; height: 3px; transform: scaleX(0); transform-origin: left; }
.sw-showcase__tab[aria-selected="true"]::before { transform: scaleX(1); }
.sw-mosaic { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: clamp(190px, min(18vw, 26svh), 270px); gap: 12px; }
.sw-mtile { display: flex; min-width: 0; }
.sw-mtile--lead { grid-column: span 2; grid-row: span 2; }
.sw-mosaic--1 .sw-mtile--lead { grid-column: 1 / -1; }
.sw-mosaic--2 .sw-mtile { grid-column: span 2; grid-row: span 2; }
.sw-mosaic--3 .sw-mtile:not(.sw-mtile--lead) { grid-column: span 2; }
.sw-mosaic--4 .sw-mtile:last-child { grid-column: span 2; }
.sw-mtile__link { position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: flex-end; width: 100%; overflow: hidden; background: var(--sw-charcoal); color: #fff; text-decoration: none; }
.sw-mtile__media { position: absolute; inset: 0; z-index: -1; }
.sw-mtile__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s var(--sw-ease); -webkit-user-drag: none; }
.sw-mtile__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(20, 20, 20, .88) 0%, rgba(20, 20, 20, .5) 34%, rgba(20, 20, 20, 0) 62%); }
.sw-mtile__link::before { content: ""; position: absolute; left: 0; top: 0; z-index: 2; width: 100%; height: 3px; background: var(--sw-energy); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--sw-ease); }
.sw-mtile__link:hover::before, .sw-mtile__link:focus-visible::before { transform: scaleX(1); }
.sw-mtile__link:hover .sw-mtile__media img, .sw-mtile__link:focus-visible .sw-mtile__media img { transform: scale(1.05); }
.sw-mtile__body { display: flex; flex-direction: column; gap: 6px; padding: clamp(16px, 1.6vw, 24px); padding-right: 60px; }
.sw-mtile__name { font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-h4); line-height: 1.18; letter-spacing: -.02em; }
.sw-mtile--lead .sw-mtile__name, .sw-mosaic--2 .sw-mtile__name { font-size: var(--sw-fs-h3); }
.sw-mtile__meta { font-size: var(--sw-fs-sm); color: rgba(255, 255, 255, .9); }
.sw-mtile__role { font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--sw-yellow); }
.sw-mtile__rep { position: absolute; right: 10px; top: 10px; padding: 3px 8px; background: rgba(20, 20, 20, .7); color: #fff; font-size: var(--sw-fs-xs); }
.sw-mtile__go { position: absolute; right: 16px; bottom: 18px; display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid rgba(255, 255, 255, .55); border-radius: 50%; transition: background-color var(--sw-dur), border-color var(--sw-dur), color var(--sw-dur), transform var(--sw-dur) var(--sw-ease); }
.sw-mtile__go .sw-icon { width: 16px; height: 16px; }
.sw-mtile__link:hover .sw-mtile__go, .sw-mtile__link:focus-visible .sw-mtile__go { background: var(--sw-orange); border-color: var(--sw-orange); color: var(--sw-black); transform: rotate(45deg); }

/* ---------- Testimonials: centred heading above an autoplay carousel ---------- */
.sw-head--center { max-width: 780px; margin-inline: auto; text-align: center; }
.sw-head--center .sw-kicker { justify-content: center; }
.sw-head--center .sw-head__lead { max-width: 60ch; margin: 14px auto 0; }
.sw-voices .sw-head--center { margin-bottom: clamp(32px, 4vw, 52px); }
.sw-rail--voices .sw-quote { flex: 0 0 clamp(300px, 31vw, 460px); }
.sw-rail--voices .sw-quote figure { border-radius: 6px; }
.sw-rail--voices .sw-quote figure::before { border-radius: 6px 6px 0 0; }
.sw-quote figcaption { flex-direction: row; align-items: center; gap: 14px; }
.sw-quote__avatar { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--sw-energy); color: var(--sw-black); font-family: var(--sw-font-display); font-weight: 700; font-size: var(--sw-fs-base); letter-spacing: .02em; }
.sw-quote__who { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sw-rail__dots { display: flex; justify-content: center; gap: 2px; margin-top: 28px; }
.sw-rail__dots[hidden] { display: none; }
.sw-rail__dot { display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0; background: none; cursor: pointer; }
.sw-rail__dot::before { content: ""; width: 9px; height: 9px; border-radius: 5px; background: rgba(255, 255, 255, .34); transition: width .35s var(--sw-ease), background-color .3s; }
.sw-rail__dot:hover::before { background: rgba(255, 255, 255, .7); }
.sw-rail__dot[aria-current="true"] { width: 44px; }
.sw-rail__dot[aria-current="true"]::before { width: 32px; background: var(--sw-energy); }

/* ---------- How We Work: scroll-driven horizontal sequence (desktop) ---------- */
.sw-cycle:not(.is-pinned) .sw-cycle__track { display: none; }
.sw-cycle.is-pinned .sw-cycle__track { display: block; }
.sw-cycle__node[aria-current="step"] { color: var(--sw-text); }
.sw-cycle__node[aria-current="step"] .sw-cycle__dot { border-color: var(--sw-orange); background: var(--sw-orange); transform: scale(1.25); box-shadow: 0 0 0 6px rgba(242, 109, 39, .16); }
.sw-cycle__node[aria-current="step"] .sw-cycle__n { color: var(--sw-orange-text); }
.sw-cycle__fill { transition: none; }
.sw-cycle.is-pinned { height: calc(var(--n, 4) * 100svh); padding: 0; }
.sw-cycle.is-pinned .sw-cycle__pin { position: sticky; top: 0; display: flex; flex-direction: column; justify-content: center; height: 100svh; padding-top: var(--sw-header-h); overflow: hidden; }
.sw-cycle.is-pinned .sw-head { margin-bottom: clamp(18px, 3svh, 36px); }
.sw-cycle.is-pinned .sw-cycle__track { margin-bottom: clamp(18px, 3svh, 36px); }
.sw-cycle.is-pinned .sw-cycle__viewport { overflow: hidden; }
.sw-cycle.is-pinned .sw-cycle__steps { display: flex; flex-wrap: nowrap; will-change: transform; }
.sw-cycle.is-pinned .sw-cycle__step { flex: 0 0 100%; padding: 0 72px 0 0; border: 0; opacity: .3; transition: opacity .45s ease; }
.sw-cycle.is-pinned .sw-cycle__step.is-active { opacity: 1; }
.sw-cycle.is-pinned .sw-cycle__label { display: none; }
.sw-cycle.is-pinned .sw-cycle__media { max-height: min(420px, 44svh); }

/* ---------- Services: sticky vertical list beside the selected service ---------- */
.sw-sx__layout { display: grid; grid-template-columns: minmax(220px, 3fr) minmax(0, 9fr); gap: clamp(32px, 4vw, 72px); align-items: start; padding-block: clamp(56px, 6vw, 96px) clamp(64px, 8vw, 112px); }
.sw-sx__aside { position: sticky; top: calc(var(--sw-header-h) + 28px); transition: top .3s var(--sw-ease); }
body.header-hidden .sw-sx__aside { top: 28px; }
.sw-sx__aside-label { margin: 0 0 14px; font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-text-3); }
.sw-sx__nav { display: flex; flex-direction: column; gap: 0; margin-bottom: 28px; overflow: visible; border-left: 2px solid var(--sw-line); }
.sw-sx__nav a { position: relative; display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: baseline; margin-left: -2px; padding: 14px 8px 14px 18px; border: 0; border-left: 2px solid transparent; color: var(--sw-text-2); font-family: var(--sw-font-ui); font-size: var(--sw-fs-base); font-weight: 500; line-height: 1.3; white-space: normal; text-decoration: none; transition: color var(--sw-dur), border-color var(--sw-dur), background-color var(--sw-dur); }
.sw-sx__nav a:first-child { padding-left: 18px; }
.sw-sx__nav-n { font-size: var(--sw-fs-xs); font-weight: 600; color: var(--sw-text-3); font-variant-numeric: tabular-nums; }
.sw-sx__nav a:hover, .sw-sx__nav a:focus-visible { color: var(--sw-text); border-left-color: var(--sw-line-strong); }
.sw-sx__nav a[aria-current] { color: var(--sw-text); border-left-color: var(--sw-orange); background: linear-gradient(90deg, rgba(242, 109, 39, .09), rgba(242, 109, 39, 0)); view-transition-name: sw-sx-marker; }
.sw-sx__nav a[aria-current] .sw-sx__nav-n { color: var(--sw-orange-text); }
.sw-sx__panels { min-width: 0; }
.sw-sx__panel { padding-top: 0; }
.sw-sx__panel + .sw-sx__panel { margin-top: clamp(56px, 7vw, 96px); padding-top: clamp(56px, 7vw, 96px); }
.sw-sx.is-enhanced .sw-sx__panel + .sw-sx__panel { margin-top: 0; padding-top: 0; border-top: 0; }
.sw-sx.is-enhanced .sw-sx__panel.is-active { view-transition-name: sw-sx-panel; }
.sw-sx.is-morphing .sw-sx__panel.is-active { animation: none; }
.sw-sx__panel > :last-child { margin-bottom: 0; }
@media (min-width: 1041px) { .sw-sx__intro { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 3.5vw, 56px); } }
.sw-sx__nav a { font-size: 1.0625rem; }
.sw-sx__nav a .sw-sx__nav-t { font-size: inherit; font-weight: 500; color: inherit; }
/* Method as a vertical conductor inside the column (six steps never break across rows). */
.sw-sx .sw-sx__steps { grid-template-columns: minmax(0, 1fr); row-gap: 22px; max-width: 720px; padding: 0 0 0 36px; }
.sw-sx .sw-sx__steps li { display: grid; grid-template-columns: 40px minmax(140px, 3fr) minmax(0, 7fr); column-gap: 16px; align-items: baseline; }
.sw-sx .sw-sx__steps::before { left: 8px; right: auto; top: 0; bottom: 0; width: 3px; height: auto; background: linear-gradient(180deg, #fcce3a, #f26d27); }
.sw-sx .sw-sx__steps li::before { left: -36px; top: 2px; }
.sw-sx__intro h2 { max-width: 16ch; }
@media (min-width: 1041px) { .sw-sx__media { height: clamp(340px, 52svh, 520px); } }
.sw-sx__brief, .sw-sx__block, .sw-sx__method { margin-top: clamp(48px, 5vw, 80px); }
.sw-sx__scope { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sw-sx__method { padding: clamp(32px, 4vw, 56px); }
::view-transition-old(root), ::view-transition-new(root) { animation: none; }
::view-transition-old(sw-sx-panel) { animation: sw-vt-out .22s ease both; }
::view-transition-new(sw-sx-panel) { animation: sw-vt-in .5s var(--sw-ease) both; }
::view-transition-group(sw-sx-marker) { animation-duration: .45s; animation-timing-function: var(--sw-ease); }
@keyframes sw-vt-out { to { opacity: 0; transform: translateY(-10px); } }
@keyframes sw-vt-in { from { opacity: 0; transform: translateY(16px); } }
.sw-connect-section .sw-connect__steps { border-top: 3px solid transparent; border-image: var(--sw-energy) 1; }
.sw-connect__steps a:hover .sw-icon { color: var(--sw-orange-text); }

@media (max-width: 1180px) {
	.sw-hero__metrics .sw-metric { padding-right: 12px; }
	.sw-hero__metrics .sw-metric__label { font-size: var(--sw-fs-xs); }
}
@media (max-width: 1040px) {
	.sw-hero__metrics .sw-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.sw-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 240px; }
	.sw-mosaic .sw-mtile, .sw-mosaic--3 .sw-mtile:not(.sw-mtile--lead), .sw-mosaic--4 .sw-mtile:last-child { grid-column: span 1; grid-row: span 1; }
	.sw-mosaic .sw-mtile--lead { grid-column: 1 / -1; grid-row: span 1; }
	.sw-mosaic--2 .sw-mtile, .sw-mosaic--4 .sw-mtile:last-child { grid-column: 1 / -1; }
	.sw-sx__layout { grid-template-columns: minmax(0, 1fr); gap: 28px; padding-top: 0; }
	.sw-sx__aside { min-width: 0; position: sticky; top: var(--sw-header-h); z-index: 20; margin-inline: calc(-1 * var(--sw-gutter)); padding: 0 var(--sw-gutter); background: rgba(255, 255, 255, .96); border-bottom: 1px solid var(--sw-line); }
	body.header-hidden .sw-sx__aside { top: 0; }
	.sw-sx__aside-label, .sw-sx__aside > .sw-btn { display: none; }
	.sw-sx__nav { flex-direction: row; margin: 0; overflow-x: auto; border-left: 0; scrollbar-width: none; -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); mask-image: linear-gradient(90deg, #000 85%, transparent); }
	.sw-sx__nav::-webkit-scrollbar { display: none; }
	.sw-sx__nav a { flex: none; display: inline-flex; gap: 8px; margin: 0; padding: 16px 14px 13px; border-left: 0; border-bottom: 3px solid transparent; white-space: nowrap; background: none !important; }
	.sw-sx__nav a:first-child { padding-left: 0; }
	.sw-sx__nav a[aria-current] { border-bottom-color: var(--sw-orange); }
}
@media (max-width: 720px) {
	.sw-hero__metrics .sw-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-hero__metrics .sw-metric:last-child { grid-column: 1 / -1; }
	.sw-mosaic { grid-template-columns: minmax(0, 1fr); grid-auto-rows: 250px; }
	.sw-mosaic .sw-mtile, .sw-mosaic .sw-mtile--lead { grid-column: 1 / -1; }
	.sw-rail--voices .sw-quote { flex-basis: 84vw; }
	.sw-sx .sw-sx__steps li { display: flex; }
	.sw-sx__scope { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
	::view-transition-old(sw-sx-panel), ::view-transition-new(sw-sx-panel), ::view-transition-group(sw-sx-marker) { animation: none; }
}

/* 10b. Viewport fit (v0.12.0) — key homepage sections fill exactly one screen below the header on desktop,
   so a section never starts or ends mid-screen. min-height (not height): content can always grow at
   browser zoom or short windows; media inside those sections is sized against svh so it normally fits. */
@media (min-width: 1041px) and (min-height: 680px) {
	.sw-fit { min-height: calc(100svh - var(--sw-header-h)); padding-block: var(--sw-fit-pad); display: flex; flex-direction: column; justify-content: center; }
	.sw-fit .sw-head { margin-bottom: clamp(28px, 4.5svh, 48px); }
	.sw-fit .sw-section__foot { margin-top: clamp(20px, 3svh, 32px); }
}
/* Short desktop screens (1366×768, 1280×800 laptops): one compact tier instead of letting sections spill. */
@media (min-width: 1041px) and (max-height: 860px) {
	:root { --sw-fs-h2: clamp(2rem, 1.3rem + 1.8vw, 3rem); --sw-fit-pad: clamp(32px, 5svh, 48px); }
	.sw-fit .sw-kicker { margin-bottom: 12px; }
	.sw-svx__caps { display: none; }
	.sw-svx__detail p { margin-bottom: 14px; }
	.sw-hero__title { margin-bottom: 20px; }
	.sw-hero__lead { margin-bottom: 26px; }
	.sw-hero__eyebrow { margin-bottom: 16px; }
	.sw-hero__metrics .sw-metric__value { font-size: min(var(--sw-fs-num), 5.4svh); }
	.sw-hero__metrics .sw-metric { padding-block: 16px 14px; }
}

/* 11. Motion — reveal only when JS has initialised (.sw-motion), never hides content otherwise */
.sw-motion [data-reveal]:not(.is-in) { opacity: 0; transform: translateY(22px); }
.sw-motion [data-reveal] { transition: opacity .8s var(--sw-ease), transform .8s var(--sw-ease); transition-delay: calc(var(--d, 0) * 80ms); }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
	.sw-hero__frame .sw-img { transform: none !important; }
	.js.sw-intro .sw-intro-screen { display: none; }
	.sw-logos__track { animation: none !important; width: auto; }
	.sw-logos__set { flex-wrap: wrap; justify-content: center; width: 100%; }
	.sw-logos__set[aria-hidden] { display: none !important; }
	.sw-logos { -webkit-mask-image: none; mask-image: none; }
}

/* Responsive */

@media (max-width: 1180px) {
	.sw-cap-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.sw-pillars--five { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.sw-pillars--five li:nth-child(4) { padding-left: 0; border-left: 0; }
	.sw-pillars--five li:nth-child(4)::after { left: 0; }
	.sw-nav__list > li > a { padding-inline: 10px; }
	.sw-nav__list > li > a::after { left: 10px; right: 10px; }
	.sw-panel__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 2.6fr); }
	.sw-panel__intro { display: none; }
}

@media (max-width: 1040px) {
	:root { --sw-header-h: 68px; }
	.sw-logo { height: 30px; }
	.sw-menu-toggle { display: inline-flex; }
	.sw-nav { position: fixed; inset: var(--sw-header-h) 0 0; z-index: 99; height: auto; flex-direction: column; align-items: stretch; gap: 28px; padding: 16px var(--sw-gutter) 40px; background: #fff; color: var(--sw-text); overflow-y: auto; visibility: hidden; opacity: 0; transform: translateY(-8px); transition: opacity .25s, transform .25s, visibility .25s; }
	.sw-nav.is-open { visibility: visible; opacity: 1; transform: none; transition: opacity .25s, transform .25s, visibility 0s; }
	html:not(.js) .sw-nav { position: static; visibility: visible; opacity: 1; transform: none; background: transparent; padding: 0; height: auto; }
	html:not(.js) .sw-header { position: absolute; height: auto; }
	html:not(.js) .sw-header__inner { flex-wrap: wrap; padding-block: 14px; }
	html:not(.js) .sw-menu-toggle { display: none; }
	.sw-nav__list { flex-direction: column; align-items: stretch; height: auto; }
	.sw-nav__list > li { flex-wrap: wrap; border-bottom: 1px solid var(--sw-line); }
	.sw-nav__list > li > a { flex: 1; padding: 18px 0; font-size: 1.25rem; color: var(--sw-text); }
	.sw-nav__list > li > a::after { left: 0; right: auto; width: 32px; bottom: 10px; }
	.sw-nav__has-panel > a::after { right: auto; }
	.sw-nav__panel-toggle { width: 44px; height: 44px; margin: 0; color: var(--sw-text); border: 1px solid var(--sw-line); }
	.sw-nav__has-panel:hover .sw-nav__panel-toggle { transform: none; color: var(--sw-text); }
	.sw-nav__has-panel.is-open .sw-nav__panel-toggle { transform: rotate(180deg); color: var(--sw-orange-text); }
	.sw-panel, .sw-nav__has-panel:hover > .sw-panel, .sw-nav__has-panel:focus-within > .sw-panel { position: static; flex-basis: 100%; display: none; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; z-index: auto; }
	.sw-nav__has-panel.is-open > .sw-panel { display: block; }
	html:not(.js) .sw-panel { display: block; }
	.sw-panel .sw-container { width: 100%; }
	.sw-panel__inner { grid-template-columns: 1fr; gap: 16px; padding: 0 0 18px; }
	.sw-panel__services { grid-template-columns: 1fr; }
	.sw-panel__services a { padding: 10px 12px; }
	.sw-panel__desc { display: none; }
	.sw-panel__name { font-size: var(--sw-fs-base); }
	.sw-panel__aside { padding-left: 0; border-left: 0; padding-top: 14px; border-top: 1px solid var(--sw-line); }
	.sw-nav .sub-menu { position: static; flex-basis: 100%; display: none; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; padding: 0 0 12px 16px; }
	.sw-nav li.is-open > .sub-menu { display: block; }
	.sw-header__cta { width: 100%; min-height: 52px; }
	body.nav-open { overflow: hidden; }
	.sw-header.nav-is-open { --h-fg: var(--sw-text); --h-fg-2: var(--sw-text-2); --h-line: var(--sw-line); background: #fff; box-shadow: 0 1px 0 var(--sw-line); }

	.sw-hero__slide { grid-template-columns: 1fr; }
	.sw-hero__panel { display: none; }
	.sw-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-metric:nth-child(3) { padding-left: 0; border-left: 0; }
	.sw-hero__metrics .sw-metric:nth-child(n+3) { border-top: 1px solid var(--sw-line-dark); }
	.sw-metrics--light .sw-metric:nth-child(n+3) { border-top: 1px solid var(--sw-line); }

	.sw-split, .sw-split--text, .sw-faq, .sw-contact, .sw-cta__inner, .sw-head--split, .sw-sector, .sw-service__brief, .sw-about__grid, .sw-svx, .sw-flow__grid, .sw-voices__grid { grid-template-columns: minmax(0, 1fr); }
	.sw-split > .sw-figure { max-width: none; aspect-ratio: 16 / 10; order: -1; }
	.sw-head--split { align-items: start; gap: 16px; }
	.sw-head--split .sw-head__lead { padding-top: 0; }
	.sw-pillars { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sw-pillars li:nth-child(3) { padding-left: 0; border-left: 0; }
	.sw-pillars li:nth-child(3)::after { left: 0; }
	.sw-pillars--five li:nth-child(3) { padding-left: 28px; border-left: 1px solid var(--sw-line); }
	.sw-post-grid, .sw-leaders { grid-template-columns: 1fr 1fr; }
	.sw-project-grid, .sw-scope { grid-template-columns: 1fr 1fr; }
	.sw-footer__grid { grid-template-columns: 1fr 1fr; }
	.sw-post-grid--index .sw-post-card--featured { grid-template-columns: 1fr; }
	.sw-cap-grid { grid-template-columns: 1fr 1fr; }

	.sw-about__media { order: -1; height: auto; min-height: 0; aspect-ratio: 6 / 5; }
	.sw-svx__stage { display: none; }
	.sw-svx__thumb { display: block; aspect-ratio: 16 / 9; margin-bottom: 16px; overflow: hidden; background: var(--sw-navy); }
	.sw-svx__thumb .sw-img { width: 100%; height: 100%; object-fit: cover; }
	.sw-svx__detail-inner { padding-left: 64px; }
	.sw-svx__caps { display: none; }
	.sw-quote { flex-basis: calc((100% - var(--rail-gap)) / 2); }
	.sw-explore { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
	.sw-awards__list { grid-template-columns: 1fr 1fr; }
	.sw-legal__grid { grid-template-columns: minmax(0, 1fr); }
	.sw-legal__toc { position: static; }
}

@media (min-width: 721px) and (max-width: 1040px) {
	.sw-svx__detail-inner { display: grid; grid-template-columns: 160px minmax(0, 1fr); column-gap: 24px; align-items: start; padding-bottom: 18px; }
	.sw-svx__thumb { grid-row: span 2; aspect-ratio: 4 / 3; margin: 0; }
	.sw-svx__detail p { margin-top: 0; }
	.sw-svx__caps { padding-bottom: 0; }
}
@media (max-width: 720px) {
	:root { --sw-fs-body: 1.03rem; }
	.sw-hero { min-height: auto; }
	.sw-hero__inner { padding-top: calc(var(--sw-header-h) + 56px); }
	.sw-hero__lead { margin-bottom: 28px; }
	.sw-hero__controls { margin-top: 36px; flex-wrap: wrap; }
	.sw-hero__chapters { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; width: 100%; }
	.sw-hero__chapter { grid-template-columns: 1fr; row-gap: 2px; }
	.sw-hero__chapter-label { font-size: var(--sw-fs-xs); }
	.sw-hero__buttons { width: 100%; justify-content: flex-end; }
	.sw-actions .sw-btn { flex: 1 1 100%; }
	.sw-metric { padding: 18px 14px 18px 0; }
	.sw-metric + .sw-metric { padding-left: 14px; }
	.sw-metric:nth-child(3) { padding-left: 0; }
	.sw-metric__label { font-size: var(--sw-fs-xs); }
	.sw-pillars, .sw-pillars--five, .sw-post-grid, .sw-post-grid--feature, .sw-explore, .sw-leaders, .sw-project-grid, .sw-scope, .sw-principles, .sw-cap-grid, .sw-purpose, .sw-sector__body, .sw-footer__grid, .sw-job__body dl, .sw-bento, .sw-about__body, .sw-awards__list, .sw-awards__featured { grid-template-columns: 1fr; }
	.sw-pillars li, .sw-pillars li + li, .sw-pillars--five li:nth-child(3) { padding: 22px 0 18px; border-left: 0; }
	.sw-pillars li + li { border-top: 1px solid var(--sw-line); }
	.sw-pillars li + li::after, .sw-pillars li::after { left: 0; }
	.sw-pillars li::before { margin-bottom: 16px; }
	.sw-cap { min-height: 0; }
	.sw-cap__title { margin-top: 18px; }
	.sw-about__body { gap: 14px; }
	.sw-about__media { aspect-ratio: 1 / 1; }
	.sw-about__img--main { width: 86%; height: 82%; }
	.sw-about__img--inset { width: 52%; border-width: 5px; }
	.sw-about__badge { max-width: 56%; padding: 12px 14px; }
	.sw-svx__head { grid-template-columns: 36px minmax(0, 1fr) 40px; padding: 20px 0; }
	.sw-svx__go { width: 40px; height: 40px; }
	.sw-svx__detail-inner { padding-left: 0; }
	.sw-svx__thumb { display: none !important; }
	.sw-svx__head { padding: 16px 0; }
	.sw-svx__detail p { margin: -4px 0 18px; font-size: var(--sw-fs-sm); }
	.sw-quote { flex-basis: 86%; }
	.sw-work__head .sw-rail__nav { margin-top: 20px; }
	.sw-work__head { display: block; }
	.sw-rail__nav { margin-bottom: 24px; }
	.sw-work__foot { flex-direction: column; align-items: stretch; gap: 14px; }
	.sw-logos__set li { height: 96px; padding-inline: 22px; }
	.sw-logos { --logo-scale: .8; }
	.sw-logos-head { flex-direction: column; align-items: flex-start; }
	.sw-map { aspect-ratio: 4 / 3; }
	.sw-table thead { display: none; }
	.sw-table tr { display: grid; grid-template-columns: 1fr; padding: 16px 0; border-bottom: 1px solid var(--sw-line-dark); }
	.sw-table--light tr { border-color: var(--sw-line); }
	.sw-table th, .sw-table td { padding: 2px 0; border: 0; }
	.sw-form { grid-template-columns: 1fr; }
	.sw-job summary { grid-template-columns: 1fr 24px; padding-inline: 0; }
	.sw-job__loc { display: none; }
	.sw-job__body { padding-inline: 0; }
	.sw-filters__label { width: 100%; }
	.sw-footer__bottom { flex-direction: column; align-items: flex-start; }
	.sw-figure, .sw-split > .sw-figure { aspect-ratio: auto !important; }
	.sw-figure > .sw-img { aspect-ratio: 16 / 10; height: auto; }
	.sw-figure figcaption { position: static; max-width: none; }
	.sw-page-hero { min-height: 0; padding-top: calc(var(--sw-header-h) + 48px); }
	.sw-page-hero__meta li + li::before { display: none; }
}

/* 10e. v0.17.0 layer — audit fixes (hero handover, project tiles, How We Work, About, mobile hero). */

/* Hero: the outgoing slide clears before the incoming one arrives, so two headlines never overlap. */
.sw-hero__slide { transition: opacity .3s ease, visibility 0s linear .3s; }
.sw-hero__slide.is-active { transition: opacity .6s ease .3s, visibility 0s; }
.sw-hero__slide.is-active .sw-hero__title, .sw-hero__slide.is-active .sw-hero__panel { transition-delay: .3s; }
.sw-hero__slide.is-active .sw-hero__lead { transition-delay: .38s; }
.sw-hero__slide.is-active .sw-actions { transition-delay: .44s; }
.sw-hero__eyebrow { text-wrap: balance; }

/* Slide 1 photograph (daylight aerial, Media Library DJI_0819-1): no brightness lift (the v0.16 lift was for a dusk image).
   The overlay keeps the established bottom and left shading and adds a soft pool behind the headline, where the
   substation's light roof sits under "approach." */
.sw-hero__frame--lead .sw-img { filter: none; }
.sw-hero__frame--lead::after { background: linear-gradient(0deg, rgba(26, 26, 26, .84) 0%, rgba(26, 26, 26, .58) 30%, rgba(26, 26, 26, .16) 54%, rgba(26, 26, 26, 0) 68%, rgba(26, 26, 26, .32) 100%), radial-gradient(54% 44% at 36% 47%, rgba(26, 26, 26, .52), rgba(26, 26, 26, 0) 74%), linear-gradient(90deg, rgba(26, 26, 26, .58) 0%, rgba(26, 26, 26, .36) 42%, rgba(26, 26, 26, 0) 74%); }
@media (orientation: portrait) {
	/* Portrait crops show the module rows rather than the substation, which would sit behind the buttons.
	   !important: the registry focal point is an inline style. */
	.sw-hero__frame--lead .sw-img { object-position: 20% 50% !important; }
}

/* Featured projects: a deeper scrim where the text sits; role label in caps, value in sentence case. */
.sw-mtile__media::after { background: linear-gradient(0deg, rgba(20, 20, 20, .92) 0%, rgba(20, 20, 20, .72) 30%, rgba(20, 20, 20, .28) 55%, rgba(20, 20, 20, 0) 72%); }
.sw-mtile__body { gap: 4px; padding-right: 68px; text-shadow: 0 1px 10px rgba(0, 0, 0, .35); }
.sw-mtile__role { margin-top: 4px; font-size: var(--sw-fs-sm); font-weight: 400; letter-spacing: 0; text-transform: none; color: #fff; line-height: 1.4; }
/* Featured projects hover/focus: a gentle zoom, the brand stroke along the top (existing) and the project name in yellow. */
.sw-mtile__name { transition: color .3s ease; }
.sw-mtile__media img { transition: transform .7s var(--sw-ease); }
.sw-mtile__link:hover .sw-mtile__media img, .sw-mtile__link:focus-visible .sw-mtile__media img { transform: scale(1.04); }
.sw-mtile__link:hover .sw-mtile__name, .sw-mtile__link:focus-visible .sw-mtile__name { color: var(--sw-yellow); }
.sw-featured .sw-head { margin-bottom: clamp(28px, 4vw, 48px); }
@media (prefers-reduced-motion: reduce) { .sw-mtile__link:hover .sw-mtile__media img, .sw-mtile__link:focus-visible .sw-mtile__media img { transform: none; } }
.sw-mtile__role-k { margin-right: 4px; font-size: var(--sw-fs-xs); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--sw-yellow); }

/* How We Work (pinned, desktop): each stage owns 55svh of scroll (one screen plus 2.2 in all for four stages). Stages
   share one grid cell: the outgoing stage leaves in 0.24 s, the incoming one arrives after it from the scroll
   direction, so two stages are never visible together and the cell keeps the tallest stage's height (no jump).
   Only opacity and transform animate. The panel's spacing stays fixed while the header hides and returns. */
.sw-cycle.is-pinned { height: calc(100svh + var(--n, 4) * 55svh); }
.sw-cycle.is-pinned .sw-cycle__steps { display: grid; will-change: auto; }
.sw-cycle.is-pinned .sw-cycle__step { grid-area: 1 / 1; padding: 0; opacity: 0; visibility: hidden; transform: translate3d(32px, 0, 0); transition: opacity .24s ease, transform .24s ease, visibility 0s linear .24s; }
.sw-cycle.is-pinned .sw-cycle__step.is-before { transform: translate3d(-32px, 0, 0); }
.sw-cycle.is-pinned .sw-cycle__step.is-active { opacity: 1; visibility: visible; transform: none; transition: opacity .42s ease .26s, transform .55s var(--sw-ease) .26s, visibility 0s; }
.sw-cycle.is-pinned .sw-cycle__node { transition: color .3s; }
/* Centre the panel in the full screen: the header hides while scrolling down, so reserving its height left the panel low
   (179 px above, 95 px below at 1440 × 900). Centred, the kicker still clears the 76 px header if it returns (86 px at 1100 × 640). */
.sw-cycle.is-pinned .sw-cycle__pin { padding-top: 0; }

/* Hero backing colour: the overlay's near-black, so if a slide photograph fails to load the white and orange headline
   still clears 3:1 (charcoal #4d4d4d gave 2.81:1). Hidden behind the photographs otherwise. */
.sw-hero { background-color: #1a1a1a; }

/* Hero chapter number: yellow (the theme's small-accent colour on dark) instead of orange, which measured 2.81:1. */
.sw-hero__chapter[aria-current="true"] .sw-hero__chapter-n { color: var(--sw-yellow); }
.sw-cycle.is-pinned .sw-cycle__fill { transform: scaleX(0); will-change: transform; }

/* Clients (v0.17.0): two strips of 15 positions, one aria-hidden copy each (so -50% is one set). Empty positions are
   placeholders the size of a balanced logo (logos are capped at 180 × 60), so the rhythm holds as logos arrive.
   Durations keep the drift near the v0.16 speed for the longer sets. */
.sw-logos__track { animation-duration: 96s; }
.sw-logos--reverse .sw-logos__track { animation-duration: 110s; }
.sw-logos__slot span { display: block; width: calc(168px * var(--logo-scale, 1)); height: calc(60px * var(--logo-scale, 1)); border: 1px solid var(--sw-line); border-radius: var(--sw-radius); background: var(--sw-warm); }

/* ---------- v0.17.0 ambient enhancements (approved). Transform/opacity only; every loop pauses off-screen
   ([data-ambient] + .is-offscreen from main.js) and nothing moves under reduced motion. ---------- */

/* 1. Closing CTA: the yellow-to-orange field's light drifts very slowly (the logo's stroke, alive but quiet). The light
   layer is oversized so its edges never show; the base gradient stays put, so text contrast is unchanged. */
.sw-cta::before { inset: -18%; will-change: transform; animation: sw-cta-drift 26s ease-in-out infinite alternate; }
@keyframes sw-cta-drift { from { transform: translate3d(-5%, 4%, 0) scale(1); } to { transform: translate3d(5%, -4%, 0) scale(1.06); } }

/* 2. Section kickers: the gradient tick draws in once as its section arrives (main.js adds .sw-kick-motion / .is-drawn). */
.sw-kick-motion .sw-kicker::before { transform: scaleX(0); transform-origin: left; transition: transform .9s var(--sw-ease) .1s; }
.sw-kick-motion .sw-head--center .sw-kicker::before { transform-origin: center; }
.sw-kick-motion .sw-kicker.is-drawn::before { transform: scaleX(1); }

/* 3. Why SunWorks tiles: the existing hover line becomes the brand gradient (as on the project tiles). */
.sw-bento__tile::before { height: 3px; background: var(--sw-energy); }

/* 4. Services: the section's warm glow moves very slowly. The glow is the dark section's own gradients, moved onto an
   oversized layer for this section only; overflow: clip (not hidden) so nothing inside becomes a scroll container. */
.sw-svx-section { position: relative; isolation: isolate; overflow: clip; background: var(--sw-charcoal); }
.sw-svx-section::before { content: ""; position: absolute; inset: -15%; z-index: -1; pointer-events: none; background: radial-gradient(80% 70% at 100% 0%, rgba(242, 109, 39, .16), rgba(242, 109, 39, 0) 62%), radial-gradient(60% 60% at 0% 100%, rgba(252, 206, 58, .07), rgba(252, 206, 58, 0) 60%); will-change: transform; animation: sw-glow-drift 34s ease-in-out infinite alternate; }
@keyframes sw-glow-drift { from { transform: translate3d(4%, -3%, 0); } to { transform: translate3d(-5%, 4%, 0); } }

[data-ambient].is-offscreen::before { animation-play-state: paused; }

/* 5. Hero metrics: a gradient line draws once across the strip's top edge as the figures count up. */
.sw-hero__metrics { position: relative; }
.sw-hero__metrics::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; height: 2px; background: var(--sw-energy); transform-origin: left; pointer-events: none; }
.sw-kick-motion .sw-hero__metrics::before { transform: scaleX(0); transition: transform 1.6s var(--sw-ease); }
.sw-kick-motion .sw-hero__metrics.is-drawn::before { transform: scaleX(1); }

@media (prefers-reduced-motion: reduce) {
	.sw-cta::before, .sw-svx-section::before { animation: none; transform: none; }
}

/* About (homepage): a wider media column closes the gap; the badge captions the main image, so the
   parallax inset no longer drifts against it. */
@media (min-width: 1041px) {
	.sw-about__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(40px, 5vw, 88px); }
	.sw-about__badge { bottom: 16%; }
}

/* Mobile hero: the lead headline flows as one sentence with the gradient phrase on its own line,
   and the hero is shorter so the metrics arrive sooner. */
@media (max-width: 720px) {
	.sw-hero__inner { padding-top: calc(var(--sw-header-h) + 32px); }
	.sw-hero__title--lead { font-size: clamp(2.5rem, 11vw, 3.25rem); }
	.sw-hero__title--lead span { display: inline; }
	.sw-hero__eyebrow { margin-bottom: 16px; }
	.sw-hero__base { margin-top: 22px; padding-top: 20px; gap: 22px; }
	.sw-hero__base .sw-hero__lead { font-size: var(--sw-fs-base); }
	.sw-hero__base .sw-btn { min-height: 52px; }
	.sw-hero__controls { margin-top: 24px; }
}

/* 12. Print */
@media print {
	.sw-header, .sw-footer, .sw-hero__controls, .sw-cta, .sw-intro-screen, .sw-services__bar, .sw-filters { display: none !important; }
	.sw-hero, .sw-page-hero, .sw-section--ink { background: #fff !important; color: #000 !important; min-height: 0 !important; }
	.sw-hero__media, .sw-page-hero__media { display: none !important; }
	body.has-solid-header .sw-main { padding-top: 0; }
}

/* 10x. v0.18.0 — shorter homepage on phones (launch audit, Day 2). Nothing is removed: the lifecycle stages and
   featured projects become swipe rails (native scroll-snap, next card peeking), and Why SunWorks tiles put the
   icon beside the text. Desktop and tablet are unchanged. */
@media (max-width: 720px) {
	.sw-cycle__viewport { margin-inline: calc(-1 * var(--sw-gutter)); }
	.sw-cycle__steps, .sw-mosaic { display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--sw-gutter); padding: 4px var(--sw-gutter) 12px; scrollbar-width: none; overscroll-behavior-x: contain; }
	.sw-cycle__steps::-webkit-scrollbar, .sw-mosaic::-webkit-scrollbar { display: none; }
	.sw-cycle__step, .sw-cycle__step:first-child { flex: 0 0 86%; display: flex; flex-direction: column; justify-content: flex-start; gap: 20px; padding: 0; border: 0; scroll-snap-align: start; }
	.sw-mosaic { margin-inline: calc(-1 * var(--sw-gutter)); }
	.sw-mosaic .sw-mtile, .sw-mosaic .sw-mtile--lead { flex: 0 0 86%; height: 300px; scroll-snap-align: start; }
	.sw-bento { grid-auto-rows: auto; }
	.sw-bento__tile { display: grid; grid-template-columns: 44px minmax(0, 1fr); column-gap: 16px; align-items: start; }
	.sw-bento__icon { grid-row: span 2; margin-bottom: 0; }
	.sw-bento__tile h3 { margin: 0 0 6px; }
}

/* 10y. v0.18.0 — cookie consent banner (inc/consent.php). Bottom card, non-modal; both choices equally prominent. */
.sw-consent { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; padding: 0 var(--sw-gutter) 16px; pointer-events: none; }
.sw-consent[hidden] { display: none; }
.sw-consent__inner { pointer-events: auto; display: flex; align-items: flex-end; gap: 20px 32px; max-width: 1080px; margin-inline: auto; padding: 22px 24px; background: #fff; color: #1a1a1a; border: 1px solid #dedede; border-top: 3px solid var(--sw-orange); box-shadow: 0 24px 48px -24px rgba(20, 20, 20, .45); }
.sw-consent__copy { flex: 1 1 auto; min-width: 0; }
.sw-consent__title { margin: 0 0 6px; font-size: var(--sw-fs-h4); letter-spacing: -.01em; }
.sw-consent__copy p { margin: 0; color: #474747; font-size: var(--sw-fs-sm); }
.sw-consent__copy a { color: #b8461a; text-decoration: underline; text-underline-offset: 3px; }
.sw-consent__choices { margin: 14px 0 0; padding: 0; border: 0; display: grid; gap: 10px; }
.sw-consent__choices[hidden] { display: none; }
.sw-consent__choices label { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 10px; align-items: start; font-size: var(--sw-fs-sm); color: #474747; cursor: pointer; }
.sw-consent__choices input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--sw-orange); }
.sw-consent__choices strong { display: block; color: #1a1a1a; font-weight: 600; }
.sw-consent__actions { flex: none; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; }
.sw-consent__actions .sw-btn { min-height: 44px; padding-block: 10px; }
.sw-consent__actions .sw-btn--secondary { --b-fg: #1a1a1a; --b-bd: #1a1a1a; }
.sw-consent__actions .sw-btn--secondary:hover, .sw-consent__actions .sw-btn--secondary:focus-visible { --b-bg: #1a1a1a; --b-bd: #1a1a1a; --b-fg: #fff; }
.sw-consent__more { min-height: 44px; padding: 0 6px; border: 0; background: none; color: #1a1a1a; font: 500 var(--sw-fs-ui) / 1 var(--sw-font-ui); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.sw-consent__more[hidden], .sw-consent__actions [hidden] { display: none; }
.sw-footer__consent { padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
.sw-footer__consent:hover, .sw-footer__consent:focus-visible { color: #fff; }
@media (max-width: 720px) {
	.sw-consent { padding: 0 0 0; }
	.sw-consent__inner { flex-direction: column; align-items: stretch; padding: 18px var(--sw-gutter) 20px; border-inline: 0; }
	.sw-consent__actions { justify-content: stretch; }
	.sw-consent__actions .sw-btn { flex: 1 1 140px; }
}
@media print { .sw-consent { display: none !important; } }
