/* ==========================================================================
   Covent Steel Doors theme styles.
   Implements the Covent design system: hairline surfaces, forest/steel,
   Archivo + IBM Plex Mono, tight radii, 96px section rhythm.
   ========================================================================== */

/* ---- Fluid type scale ----
   Heading tokens become fluid: maxima are the DS values (reached ~1280px+),
   minima suit a 360px phone. This sheet loads after tokens.css, so these
   re-declarations win while tokens.css stays a verbatim DS copy. */
:root {
	--size-display-xl: clamp(32px, 24px + 2.8vw, 64px);
	--size-display-l: clamp(28px, 22px + 1.85vw, 48px);
	--size-display-m: clamp(25px, 21px + 1.2vw, 38px);
	--size-heading-l: clamp(23px, 21px + 0.65vw, 30px);
	--size-heading-m: clamp(20px, 19px + 0.36vw, 24px);
}

/* ---- Base (DS base.css) ---- */
html { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
body { margin: 0; background: var(--surface-page); color: var(--text-body); font-family: var(--font-core); font-size: var(--size-body-m); line-height: var(--lh-body); font-weight: var(--fw-regular); }
h1, h2, h3, h4, h5, h6 { margin: 0; color: var(--text-heading); font-family: var(--font-display); font-weight: var(--fw-semibold); letter-spacing: var(--tracking-heading); line-height: var(--lh-heading); }
h1 { font-size: var(--size-display-l); line-height: var(--lh-tight); letter-spacing: var(--tracking-display); font-weight: var(--fw-bold); }
h2 { font-size: var(--size-display-m); line-height: var(--lh-snug); }
h3 { font-size: var(--size-heading-l); }
h4 { font-size: var(--size-heading-m); font-family: var(--font-core); }
h5, h6 { font-size: var(--size-heading-s); font-family: var(--font-core); }
p { margin: 0 0 var(--space-4); text-wrap: pretty; }
a { color: var(--text-link); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; transition: color var(--dur-fast) var(--ease-standard); }
a:hover { color: var(--text-link-hover); }
img { max-width: 100%; height: auto; display: block; }
small { font-size: var(--size-caption); color: var(--text-muted); }
code, kbd { font-family: var(--font-mono); font-size: .92em; }
hr { border: 0; border-top: var(--border-hairline) solid var(--line-hairline); margin: var(--space-6) 0; }
::selection { background: var(--forest-200); color: var(--forest-900); }
:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.cs-eyebrow { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-muted); }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.cv-shell { max-width: var(--max-width-page); margin: 0 auto; padding-left: var(--gutter-page); padding-right: var(--gutter-page); }

/* ---- Buttons ---- */
.cv-btn { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; gap: 8px; height: var(--control-height-m); padding: 0 var(--space-5); border: none; border-radius: var(--radius-1); font: var(--fw-semibold) var(--size-body-m)/1 var(--font-core); letter-spacing: .005em; cursor: pointer; text-decoration: none; white-space: nowrap; transition: background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard), transform var(--dur-instant) var(--ease-standard); }
.cv-btn:active { transform: scale(var(--press-scale)); }
.cv-btn--s { height: var(--control-height-s); padding: 0 var(--space-3); font-size: var(--size-body-s); gap: 6px; }
.cv-btn--l { height: var(--control-height-l); padding: 0 var(--space-6); font-size: var(--size-body-l); gap: 10px; }
.cv-btn--primary { background: var(--action-primary); color: var(--text-on-inverse); }
.cv-btn--primary:hover { background: var(--action-primary-hover); color: var(--text-on-inverse); }
.cv-btn--primary:active { background: var(--action-primary-press); }
.cv-btn--secondary { background: transparent; color: var(--text-heading); box-shadow: inset 0 0 0 1px var(--line-hairline); }
.cv-btn--secondary:hover { background: var(--surface-sunken); color: var(--text-heading); box-shadow: inset 0 0 0 1px var(--line-strong); }
.cv-btn--ghost { background: transparent; color: var(--text-heading); }
.cv-btn--ghost:hover { background: var(--surface-sunken); color: var(--text-heading); }
.cv-btn--inverse { background: transparent; color: var(--text-on-inverse); box-shadow: inset 0 0 0 1px var(--line-inverse); }
.cv-btn--inverse:hover { background: var(--ghost); color: var(--forest-900); box-shadow: inset 0 0 0 1px var(--ghost); }
.cv-btn--clay { background: var(--action-clay); color: var(--ghost); }
.cv-btn--clay:hover { background: var(--action-clay-hover); color: var(--ghost); }
/* grape = the DS action-secondary tokens: info/support actions (documents, guidance) */
.cv-btn--grape { background: var(--action-secondary); color: var(--ghost); }
.cv-btn--grape:hover { background: var(--action-secondary-hover); color: var(--ghost); }
.cv-btn--grape:active { background: var(--grape-700); }
.cv-btn-row { display: flex; flex-wrap: wrap; gap: var(--space-3); margin: var(--space-5) 0 0; }

/* ---- Badge ---- */
.cv-badge { display: inline-flex; align-items: center; height: 22px; padding: 0 var(--space-2); border-radius: var(--radius-1); font-family: var(--font-mono); font-size: var(--size-micro); font-weight: var(--fw-medium); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; white-space: nowrap; }
.cv-badge--neutral { background: var(--steel-100); color: var(--steel-700); }
.cv-badge--forest { background: var(--forest-050); color: var(--forest-700); }
.cv-badge--leaf { background: var(--leaf-100); color: var(--leaf-700); }
.cv-badge--grape { background: var(--grape-100); color: var(--grape-700); }
.cv-badge--rose { background: var(--rose-100); color: var(--rose-700); }
.cv-badge--brass { background: var(--brass-100); color: var(--brass-700); }

/* ---- Grid + cards ---- */
.cv-grid { display: grid; gap: var(--space-5); }
.cv-grid--2 { grid-template-columns: repeat(2, 1fr); }
.cv-grid--3 { grid-template-columns: repeat(3, 1fr); }
.cv-grid--4 { grid-template-columns: repeat(4, 1fr); }
.cv-card { display: flex; flex-direction: column; background: var(--surface-card); color: var(--text-body); border: 1px solid var(--line-hairline); border-radius: var(--radius-2); box-shadow: var(--shadow-1); overflow: hidden; text-decoration: none; transition: box-shadow var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard); }
.cv-card--interactive:hover { box-shadow: var(--shadow-3); transform: translateY(-2px); color: var(--text-body); }
.cv-card__media { height: 200px; background: var(--surface-sunken); border-bottom: 1px solid var(--line-hairline); overflow: hidden; flex: none; }
.cv-card__media img { width: 100%; height: 100%; object-fit: cover; }
.cv-card__icon { padding: var(--space-5) var(--space-5) 0; color: var(--forest-600); }
.cv-card__body { padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); flex: 1; }
.cv-card__body p { margin: 0; font-size: var(--size-body-s); color: var(--text-muted); }
.cv-card__body h3 { font-size: var(--size-heading-s); font-family: var(--font-core); }
.cv-card__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }
.cv-card__head h5 { flex: 1; min-width: 0; }
.cv-card__cta { margin-top: auto; color: var(--forest-600); }
.cv-card-grid__intro { max-width: 620px; margin-bottom: var(--space-6); }

/* ---- Utility bar (DS SiteHeader UtilityBar) ---- */
.cv-utility { background: var(--surface-inverse-deep); color: var(--text-on-inverse); }
.cv-utility__inner { display: flex; align-items: center; gap: var(--space-5); height: 48px; }
.cv-utility__notice { display: flex; align-items: center; gap: var(--space-3); flex: 1; min-width: 0; }
.cv-utility__notice-label { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--forest-200); flex: none; }
.cv-utility__notice-text { font-size: var(--size-caption); color: var(--ghost); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-utility__dismiss { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; background: none; border: none; border-radius: var(--radius-1); color: var(--forest-200); cursor: pointer; flex: none; }
.cv-utility__dismiss:hover { background: rgba(250, 250, 255, .12); color: var(--ghost); }
.cv-utility__spacer { flex: 1; }
.cv-utility__contact { font-family: var(--font-mono); font-size: 17px; font-weight: var(--fw-semibold); letter-spacing: .02em; color: var(--ghost); text-decoration: none; white-space: nowrap; }
@media (max-width: 900px) { .cv-utility__contact { font-size: var(--size-body-s); font-weight: var(--fw-medium); } }
.cv-utility__contact--muted { color: var(--forest-200); }
.cv-utility__contact:hover { color: var(--ghost); }
.cv-utility__divider { width: 1px; height: 12px; background: var(--line-inverse); flex: none; }
.cv-utility__contact-tag { font-size: 10px; font-weight: var(--fw-semibold); letter-spacing: .12em; text-transform: uppercase; color: var(--forest-200); margin-right: var(--space-2); }
.cv-utility__contact-icon { display: none; }
@media (max-width: 768px) {
	/* narrow screens keep the 24/7 mobile only — office pair hides */
	.cv-utility__office { display: none; }
}
@media (max-width: 640px) {
	/* email collapses to a tappable icon; phone keeps its text */
	.cv-utility__contact-text, .cv-utility__divider { display: none; }
	.cv-utility__contact-icon { display: inline-block; }
	.cv-utility__contact--muted { display: inline-flex; align-items: center; padding: var(--space-2); }
}
@media (max-width: 400px) {
	.cv-utility__contact { font-size: 13px; }
}

/* ---- Header (DS SiteHeader) ---- */
.cv-header { position: sticky; top: 0; z-index: 40; background: var(--surface-card); border-bottom: 1px solid var(--line-hairline); }
.cv-header__inner { position: relative; display: flex; align-items: center; gap: var(--space-5); height: 72px; }
.cv-header__logo { display: inline-flex; align-items: center; gap: 11px; text-decoration: none; flex: none; }
.cv-header__logo--stacked { flex-direction: column; align-items: flex-start; gap: 4px; }
.cv-header__logo-row { display: inline-flex; align-items: center; gap: 11px; }
.cv-header__trading { font-size: 11px; line-height: 1.2; font-weight: var(--fw-bold); color: var(--text-muted); letter-spacing: .01em; white-space: nowrap; }
@media (max-width: 900px) { .cv-header__trading { display: none; } .cv-header__logo--stacked { flex-direction: row; } }
/* DS Logo wordmark: COVENT over a hairline over the tracked descriptor */
.cv-logo-word { display: inline-flex; flex-direction: column; gap: 3px; }
.cv-logo-word__name { font: var(--fw-bold) 16px/1 var(--font-display); letter-spacing: .03em; color: var(--forest-700); white-space: nowrap; }
.cv-logo-word__rule { height: 1px; background: var(--line-strong); }
.cv-logo-word__desc { font: var(--fw-regular) 7px/1 var(--font-core); letter-spacing: .42em; color: var(--text-muted); white-space: nowrap; padding-top: 2px; }
.cv-logo-word--inverse .cv-logo-word__name { color: var(--ghost); }
.cv-logo-word--inverse .cv-logo-word__rule { background: rgba(250, 250, 255, .28); }
.cv-logo-word--inverse .cv-logo-word__desc { color: var(--forest-200); }
.cv-header__spacer { flex: 1; }
.cv-header__toggle { display: none; background: none; border: none; padding: var(--space-2); cursor: pointer; color: var(--text-heading); }

/* ---- Mega menu ---- */
@keyframes csd-panel { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
.cv-nav { display: flex; align-items: center; gap: var(--space-4); height: 100%; }
.cv-nav__item { height: 100%; display: flex; align-items: center; position: relative; }
.cv-nav__link { display: inline-flex; align-items: center; gap: 5px; text-decoration: none; white-space: nowrap; font-size: var(--size-body-s); font-weight: var(--fw-medium); color: var(--text-muted); transition: color var(--dur-fast) var(--ease-standard); }
.cv-nav__link:hover, .cv-nav__link.is-active, .cv-nav__item.is-open > .cv-nav__link { color: var(--text-link-hover); }
.cv-nav__link.is-active, .cv-nav__item.is-open > .cv-nav__link { font-weight: var(--fw-semibold); }
.cv-nav__chevron { opacity: .6; transition: transform var(--dur-base) var(--ease-standard); flex: none; }
.cv-nav__item.is-open .cv-nav__chevron { transform: rotate(180deg); }
.cv-nav__panel { position: absolute; top: 100%; left: 0; margin-top: 1px; width: 300px; background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-2); box-shadow: var(--shadow-2); padding: var(--space-5) var(--space-5) var(--space-4); box-sizing: border-box; z-index: 50; animation: csd-panel var(--dur-base) var(--ease-standard) both; }
.cv-nav__panel--cols-2 { width: 564px; }
.cv-nav__panel--cols-3 { width: 836px; }
.cv-nav__grid { display: grid; gap: var(--space-5) 28px; }
.cv-nav__panel--cols-2 .cv-nav__grid { grid-template-columns: repeat(2, 244px); }
.cv-nav__panel--cols-3 .cv-nav__grid { grid-template-columns: repeat(3, 244px); }
.cv-nav__group-label { display: flex; gap: var(--space-2); align-items: baseline; padding-bottom: var(--space-2); border-bottom: 1px solid var(--line-hairline); margin-bottom: var(--space-2); font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-muted); }
.cv-nav__group-label .cv-nav__note { color: var(--text-faint); }
.cv-nav__panel-link { display: flex; align-items: baseline; gap: var(--space-2); padding: 7px 0; text-decoration: none; color: var(--text-body); font-size: var(--size-body-s); font-weight: var(--fw-regular); transition: color var(--dur-fast) var(--ease-standard); }
.cv-nav__panel-link:hover { color: var(--text-link-hover); }
.cv-nav__panel-link.is-active { color: var(--text-link-hover); font-weight: var(--fw-semibold); }
.cv-nav__panel-link > span:first-child { min-width: 0; }
.cv-nav__note { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-faint); flex: none; }
.cv-nav__all { display: inline-flex; align-items: center; gap: var(--space-2); margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--line-hairline); width: 100%; box-sizing: border-box; text-decoration: none; color: var(--text-link); font-size: var(--size-body-s); font-weight: var(--fw-semibold); }
.cv-nav__all:hover { color: var(--text-link-hover); }

/* ---- Mobile sheet ---- */
@keyframes csd-sheet { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.cv-sheet { position: fixed; inset: 0; z-index: 80; background: var(--surface-card); display: flex; flex-direction: column; animation: csd-sheet var(--dur-base) var(--ease-standard) both; }
body.cv-sheet-open { overflow: hidden; }
.cv-sheet__bar { height: 72px; flex: none; display: flex; align-items: center; justify-content: space-between; padding: 0 var(--gutter-page); border-bottom: 1px solid var(--line-hairline); }
.cv-sheet__close { background: none; border: none; padding: var(--space-2); cursor: pointer; color: var(--text-heading); }
.cv-sheet__body { flex: 1; overflow-y: auto; padding: var(--space-4) var(--gutter-page); }
.cv-sheet__item { border-bottom: 1px solid var(--line-hairline); }
.cv-sheet__row { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: 52px; background: none; border: none; padding: 0; cursor: pointer; font: var(--fw-semibold) var(--size-body-l)/1 var(--font-core); color: var(--text-heading); text-align: left; text-decoration: none; }
.cv-sheet__chev { color: var(--text-faint); transition: transform var(--dur-base) var(--ease-standard); flex: none; }
.cv-sheet__row[aria-expanded="true"] .cv-sheet__chev { transform: rotate(180deg); }
.cv-sheet__panel { padding-bottom: var(--space-4); }
.cv-sheet__group-label { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-muted); margin: var(--space-3) 0 var(--space-1); }
.cv-sheet__link { display: block; padding: 7px 0; text-decoration: none; color: var(--text-body); font-size: var(--size-body-s); }
.cv-sheet__link--all { color: var(--text-link); font-weight: var(--fw-semibold); }
.cv-sheet__foot { flex: none; padding: var(--space-4) var(--gutter-page); border-top: 1px solid var(--line-hairline); background: var(--surface-sunken); display: flex; flex-direction: column; gap: var(--space-3); }
.cv-sheet__foot .cv-btn { width: 100%; }
.cv-sheet[hidden] { display: none; }

/* ---- Tags (DS Tag — the one pill in the system) ---- */
.cv-tag { display: inline-flex; align-items: center; min-height: 28px; padding: 3px var(--space-3); background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-pill); font-size: var(--size-caption); font-weight: var(--fw-medium); color: var(--text-body); cursor: default; transition: border-color var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard); }
button.cv-tag, a.cv-tag { cursor: pointer; text-decoration: none; }
button.cv-tag:hover, a.cv-tag:hover { border-color: var(--line-strong); background: var(--surface-sunken); }
.cv-tag.is-selected { background: var(--forest-700); border-color: var(--forest-700); color: var(--ghost); }

/* ---- Footer ---- */
.cv-footer { background: var(--surface-inverse-deep); color: var(--text-on-inverse); margin-top: 0; }
.cv-footer a { color: var(--ghost); opacity: .78; text-decoration: none; font-size: var(--size-body-s); }
.cv-footer a:hover { opacity: 1; color: var(--ghost); }
.cv-footer__grid { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: var(--space-7); padding-top: var(--space-9); padding-bottom: var(--space-6); }
.cv-footer__brand { display: flex; flex-direction: column; gap: var(--space-4); align-items: flex-start; }
.cv-footer__brand p { color: var(--text-on-inverse-muted); font-size: var(--size-body-s); margin: 0; max-width: 280px; }
.cv-footer__logo { filter: brightness(0) invert(1); }
.cv-footer__address { font-style: normal; font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: .04em; color: var(--forest-200); line-height: 1.8; }
.cv-footer__col { display: flex; flex-direction: column; gap: var(--space-3); }
.cv-footer__eyebrow { color: var(--forest-200); }
.cv-footer__legal { border-top: 1px solid var(--line-inverse); }
.cv-footer__legal-inner { display: flex; flex-wrap: wrap; gap: var(--space-5); padding-top: var(--space-4); padding-bottom: var(--space-4); font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: .06em; color: var(--forest-200); text-transform: uppercase; }
.cv-footer__legal a { font-size: var(--size-micro); color: var(--forest-200); }
.cv-footer__credit { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.cv-footer__credit img { display: block; opacity: .85; transition: opacity var(--dur-fast) var(--ease-standard); }
.cv-footer__credit:hover img { opacity: 1; }

/* ---- Title band + breadcrumb ---- */
.cv-title-band { background: var(--surface-sunken); border-bottom: 1px solid var(--line-hairline); padding: var(--space-8) 0; }
.cv-title-band h1 { font-size: var(--size-display-m); }
.cv-breadcrumb-band { background: var(--surface-card); border-bottom: 1px solid var(--line-hairline); }
.cv-breadcrumb { display: flex; align-items: center; gap: var(--space-2); padding-top: var(--space-4); padding-bottom: var(--space-4); font-size: var(--size-body-s); color: var(--text-muted); }
.cv-breadcrumb a { color: var(--text-muted); text-decoration: none; }
.cv-breadcrumb a:hover { color: var(--text-heading); }
.cv-breadcrumb span[aria-current] { color: var(--text-heading); }
.cv-breadcrumb .cv-icon { color: var(--text-faint); flex: none; }

/* ---- Hero ---- */
.cv-hero { position: relative; background: var(--surface-inverse-deep) center/cover no-repeat; color: var(--ghost); }
/* trial: dusty-grape wash instead of the forest scrim (client "another colour" note) */
.cv-hero__scrim { position: absolute; inset: 0; background: rgba(51, 54, 74, .6); }
.cv-hero__inner { position: relative; min-height: 480px; display: flex; flex-direction: column; justify-content: flex-end; padding-top: var(--space-11); padding-bottom: var(--space-9); }
.cv-hero__eyebrow { color: var(--forest-200); margin-bottom: var(--space-5); }
.cv-hero__copy { min-width: 0; }
.cv-hero__title { color: var(--ghost); max-width: 760px; font-size: var(--size-display-xl); }
.cv-hero__subtitle { margin: var(--space-5) 0 0; max-width: 560px; font-size: var(--size-body-l); color: var(--forest-200); }
.cv-hero__content { margin-top: var(--space-4); max-width: 560px; color: var(--forest-200); }
.cv-hero__content a { color: var(--ghost); }
.cv-hero__image { max-width: 420px; margin-top: var(--space-5); }
.cv-hero .cv-btn-row { margin-top: var(--space-7); }
.page .cv-hero__title { font-size: var(--size-display-l); }

/* ---- Section block ---- */
.cv-section { padding: var(--section-y) 0; }
.cv-section--tight { padding: var(--section-y-tight) 0; }
.cv-section--page { background: var(--surface-page); }
.cv-section--sunken { background: var(--surface-sunken); }
.cv-section--inverse { background: var(--surface-inverse); color: var(--text-on-inverse); }
.cv-section--inverse h2, .cv-section--inverse h3, .cv-section--inverse h4, .cv-section--inverse h5 { color: var(--ghost); }
.cv-section--inverse .cv-section__intro, .cv-section--inverse p { color: var(--text-on-inverse-muted); }
.cv-section--inverse .cs-eyebrow { color: var(--forest-200); }
.cv-section--inverse .cv-btn--primary { background: var(--ghost); color: var(--forest-900); }
.cv-section--inverse .cv-btn--primary:hover { background: var(--white); color: var(--forest-900); }
.cv-section--inverse a { color: var(--ghost); }
/* DS v3 subject tones: grape reads dark; leaf/rose/brass are light tints */
.cv-section--grape { background: var(--surface-inverse-grape); color: var(--text-on-inverse); }
.cv-section--grape h2, .cv-section--grape h3, .cv-section--grape h4, .cv-section--grape h5 { color: var(--ghost); }
.cv-section--grape .cv-section__intro, .cv-section--grape p { color: var(--grape-300); }
.cv-section--grape .cs-eyebrow { color: var(--grape-300); }
.cv-section--grape a { color: var(--ghost); }
.cv-section--grape .cv-btn--primary { background: var(--ghost); color: var(--grape-700); }
.cv-section--leaf { background: var(--surface-leaf); }
.cv-section--leaf .cs-eyebrow { color: var(--leaf-700); }
.cv-section--rose { background: var(--surface-rose); }
.cv-section--rose .cs-eyebrow { color: var(--rose-700); }
.cv-section--brass { background: var(--surface-brass); }
.cv-section--brass .cs-eyebrow { color: var(--brass-700); }
.cv-section--bg { position: relative; background-size: cover; background-position: center; }
.cv-section--bg .cv-section__scrim { position: absolute; inset: 0; background: var(--scrim-flat); }
.cv-section--bg .cv-section__inner { position: relative; color: var(--ghost); }
.cv-section__title { max-width: 720px; }
.cv-section__intro { margin: var(--space-4) 0 0; max-width: 620px; font-size: var(--size-body-l); color: var(--text-muted); }
.cv-section__eyebrow { margin-bottom: var(--space-4); }
.cv-section__title + .cv-section__content, .cv-section__intro + .cv-section__content { margin-top: var(--space-8); }
.cv-section__content > * + * { margin-top: var(--space-7); }
/* extra breathing room when a card grid or panel follows prose */
.cv-section__content > .cv-prose + .cv-card-grid,
.cv-section__content > .cv-prose + .cv-tabs,
.cv-section__content > .cv-prose + .cv-spec,
.cv-section__content > .cv-prose + .cv-media-text { margin-top: var(--space-8); }
/* consecutive same-tone sections keep rhythm without doubling full padding */
.cv-section--page + .cv-section--page, .cv-section--sunken + .cv-section--sunken { padding-top: var(--space-6); }
.cv-section--inverse + .cv-section--inverse { padding-top: 0; margin-top: calc(-1 * var(--space-6)); }
.cv-section--inverse .cv-section__content > .cv-prose > p:first-child { font-size: var(--size-body-l); }

/* ---- Prose ---- */
.cv-prose { max-width: none; }
.cv-prose > * + * { margin-top: var(--space-4); }
.cv-prose h2 { font-size: var(--size-heading-l); margin-top: var(--space-7); }
.cv-prose h3 { font-size: var(--size-heading-m); margin-top: var(--space-6); }
.cv-prose h4, .cv-prose h5 { margin-top: var(--space-5); }
.cv-prose ul, .cv-prose ol { margin: var(--space-4) 0; padding-left: 1.2em; }
.cv-prose li { margin-bottom: var(--space-2); }
.cv-prose li::marker { color: var(--forest-600); }
.cv-prose--narrow { max-width: var(--max-width-prose); }
.cv-prose table { width: 100%; border-collapse: collapse; border: 1px solid var(--line-hairline); border-radius: var(--radius-2); font-size: var(--size-body-s); display: block; overflow-x: auto; }
.cv-prose table tbody { display: table; width: 100%; min-width: 480px; }
.cv-prose th { text-align: left; background: var(--surface-sunken); font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-muted); font-weight: var(--fw-medium); }
.cv-prose th, .cv-prose td { padding: var(--space-3) var(--space-4); border-top: 1px solid var(--line-hairline); }
/* SpecTable aesthetic: label column muted, data columns mono, first row reads as header */
.cv-prose td { color: var(--text-muted); }
.cv-prose td:not(:first-child) { font-family: var(--font-mono); font-size: var(--size-body-s); letter-spacing: var(--tracking-mono); color: var(--text-heading); }
.cv-prose table { background: var(--surface-card); }
.cv-prose tbody tr:first-child td { background: var(--surface-sunken); font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-muted); border-top: none; }
.cv-page-content > .cv-prose, .cv-page-content > .cv-btn-row, .cv-page-content > .cv-card-grid, .cv-page-content > .cv-tabs, .cv-page-content > .cv-spec, .cv-page-content > .cv-docs, .cv-page-content > .cv-grid, .cv-page-content > .cv-image, .cv-page-content > .cv-gallery, .cv-page-content > .cv-form { max-width: var(--max-width-page); margin-left: auto; margin-right: auto; padding-left: var(--gutter-page); padding-right: var(--gutter-page); margin-top: var(--space-6); margin-bottom: var(--space-6); }

/* ---- Credential strip ---- */
.cv-credentials { background: var(--surface-card); border-bottom: 1px solid var(--line-hairline); }
.cv-credentials__inner { display: grid; grid-template-columns: repeat(var(--cv-cred-count, 4), 1fr); gap: var(--space-6); padding-top: var(--space-5); padding-bottom: var(--space-5); }
.cv-credentials__item { display: flex; align-items: center; gap: var(--space-3); color: var(--text-body); font-size: var(--size-body-s); font-weight: var(--fw-medium); }
.cv-credentials__item .cv-icon { color: var(--forest-600); flex: none; }

/* ---- Process steps ---- */
.cv-steps__step { border-top: 2px solid var(--accent-process); padding-top: var(--space-4); }
.cv-steps__num { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); color: var(--accent-process); }
.cv-steps__step h5 { margin: var(--space-2) 0; }
.cv-steps__step p { margin: 0; font-size: var(--size-body-s); color: var(--text-muted); }
.cv-section--inverse .cv-steps__step { border-top-color: var(--forest-300); }

/* ---- Spec table ---- */
.cv-spec { border: 1px solid var(--line-hairline); border-radius: var(--radius-2); overflow: hidden; background: var(--surface-card); }
.cv-spec__caption { padding: var(--space-3) var(--space-4); background: var(--surface-sunken); border-bottom: 1px solid var(--line-hairline); font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-muted); }
.cv-spec__row { display: grid; grid-template-columns: 1fr auto; gap: var(--space-4); align-items: baseline; padding: var(--space-3) var(--space-4); }
.cv-spec__row + .cv-spec__row { border-top: 1px solid var(--line-hairline); }
.cv-spec__label { font-size: var(--size-body-s); color: var(--text-muted); }
.cv-spec__value { font-family: var(--font-mono); font-size: var(--size-body-s); letter-spacing: var(--tracking-mono); color: var(--text-heading); text-align: right; }

/* ---- Tabs (card panel, RangeScreen band) ---- */
.cv-tabs { background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-2); box-shadow: var(--shadow-1); padding: var(--space-6); }
.cv-tabs__list { display: flex; gap: var(--space-5); border-bottom: 1px solid var(--line-hairline); overflow-x: auto; }
.cv-tabs__list [role="tab"] { background: none; border: none; border-bottom: 2px solid transparent; margin-bottom: -1px; padding: var(--space-3) 0; font: var(--fw-medium) var(--size-body-s)/1 var(--font-core); color: var(--text-muted); cursor: pointer; white-space: nowrap; transition: color var(--dur-fast) var(--ease-standard), border-color var(--dur-base) var(--ease-standard); }
.cv-tabs__list [role="tab"]:hover { color: var(--text-heading); }
.cv-tabs__list [role="tab"][aria-selected="true"] { color: var(--text-heading); font-weight: var(--fw-semibold); border-bottom-color: var(--forest-700); }
.cv-tabs__panel { padding-top: var(--space-6); }

/* ---- Documents ---- */
.cv-docs { border: 1px solid var(--line-hairline); border-radius: var(--radius-2); overflow: hidden; background: var(--surface-card); }
.cv-docs__row { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); text-decoration: none; color: var(--text-heading); font-size: var(--size-body-s); transition: background var(--dur-fast) var(--ease-standard); }
.cv-docs__row + .cv-docs__row { border-top: 1px solid var(--line-hairline); }
.cv-docs__row:hover { background: var(--surface-sunken); color: var(--text-heading); }
.cv-docs__row > .cv-icon { color: var(--text-faint); flex: none; }
.cv-docs__title { flex: 1; }
.cv-docs__meta { font-family: var(--font-mono); font-size: var(--size-micro); color: var(--text-faint); }
.cv-docs__dl { color: var(--forest-600); }

/* ---- Gallery ---- */
.cv-gallery__main { display: block; width: 100%; padding: 0; border: 1px solid var(--line-hairline); border-radius: var(--radius-2); overflow: hidden; background: var(--surface-sunken); }
button.cv-gallery__main--zoom { cursor: zoom-in; }
.cv-gallery__main img { width: 100%; max-height: 560px; object-fit: cover; }
.cv-gallery__rail { display: flex; gap: var(--space-3); margin-top: var(--space-3); }
.cv-gallery__thumb { flex: 1; max-width: 120px; padding: 0; border: 1px solid var(--line-hairline); border-radius: var(--radius-1); overflow: hidden; cursor: pointer; background: none; transition: border-color var(--dur-fast) var(--ease-standard); }
.cv-gallery__thumb img { width: 100%; height: 72px; object-fit: cover; }
.cv-gallery__thumb.is-active, .cv-gallery__thumb:hover { border-color: var(--forest-700); }

/* ---- Image ---- */
.cv-image { margin: 0; }
.cv-image__img { border-radius: var(--radius-2); }
.cv-image__caption { margin-top: var(--space-2); font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: .04em; color: var(--text-faint); }

/* ---- Forms (Gravity Forms restyle) ---- */
.cv-form { max-width: 720px; }
.cv-form .gform_wrapper label, .cv-form .gfield_label { font-size: var(--size-body-s); font-weight: var(--fw-medium); color: var(--text-heading); }
.cv-form input[type="text"], .cv-form input[type="email"], .cv-form input[type="tel"], .cv-form input[type="number"], .cv-form select, .cv-form textarea { width: 100%; box-sizing: border-box; height: var(--control-height-m); padding: 0 var(--space-3); background: var(--surface-card); border: 1px solid var(--line-strong); border-radius: var(--radius-1); font: var(--fw-regular) var(--size-body-m)/1.4 var(--font-core); color: var(--text-body); transition: border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard); }
.cv-form textarea { height: auto; padding: var(--space-3); min-height: 130px; }
.cv-form input:focus, .cv-form select:focus, .cv-form textarea:focus { outline: none; border-color: var(--forest-700); box-shadow: 0 0 0 3px var(--forest-100); }
.cv-form .gfield_required { color: var(--rose-700); }
.cv-form .gform_footer input[type="submit"], .cv-form .gform_button { background: var(--action-primary); color: var(--text-on-inverse); border: none; border-radius: var(--radius-1); height: var(--control-height-m); padding: 0 var(--space-5); font: var(--fw-semibold) var(--size-body-m)/1 var(--font-core); cursor: pointer; }
.cv-form .gform_footer input[type="submit"]:hover { background: var(--action-primary-hover); }
.cv-form .gsection_title { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-muted); }

/* ---- Product template (DS RangeScreen) ---- */
.cv-product-head { display: grid; grid-template-columns: 1.25fr 1fr; gap: var(--space-8); align-items: start; padding-top: var(--space-8); padding-bottom: var(--space-10); }
.cv-product-head > * { min-width: 0; }
.cv-product-head__info { display: flex; flex-direction: column; gap: var(--space-5); }
.cv-product-head__badges { display: flex; gap: var(--space-2); flex-wrap: wrap; }
.cv-product-head__title { font-size: var(--size-display-m); font-family: var(--font-display); }
.cv-product-head__intro { margin: var(--space-4) 0 0; font-size: var(--size-body-l); color: var(--text-muted); }
.cv-product-head__tags { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.cv-product-head__actions { display: flex; gap: var(--space-3); flex-wrap: wrap; padding-top: var(--space-5); border-top: 1px solid var(--line-hairline); }
.cv-product-content { border-top: 1px solid var(--line-hairline); }
/* first content section (overview + tabs) sits on a white band — RangeScreen rhythm */
.cv-product-content > .cv-section--page:first-child { background: var(--surface-card); border-bottom: 1px solid var(--line-hairline); padding-top: var(--space-8); }
.cv-product-content > .cv-section--page:first-child + .cv-section--page { padding-top: var(--section-y); }

/* ---- Category template (DS CategoryScreen) ---- */
.cv-cat-head { background: var(--surface-card); border-bottom: 1px solid var(--line-hairline); }
.cv-cat-head__inner { display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--space-8); align-items: end; padding-top: var(--space-8); padding-bottom: var(--space-8); }
.cv-cat-head__title { margin-top: var(--space-4); font-size: var(--size-display-m); }
.cv-cat-head__intro { margin: var(--space-4) 0 0; max-width: 560px; font-size: var(--size-body-l); color: var(--text-muted); }
.cv-cat-head__chips { display: flex; flex-wrap: wrap; gap: var(--space-2); justify-content: flex-end; }
.cv-cat-groups { display: flex; flex-direction: column; gap: var(--space-8); padding-top: var(--space-8); padding-bottom: var(--space-10); }
.cv-cat-group__head { display: flex; align-items: baseline; gap: var(--space-3); padding-bottom: var(--space-3); border-bottom: 1px solid var(--line-hairline); margin-bottom: var(--space-5); }
.cv-cat-group__head h4 { margin: 0; }
.cv-cat-group__count { margin-left: auto; }
.cv-cat-card__cta { display: inline-flex; align-items: center; gap: 6px; margin-top: var(--space-2); font-size: var(--size-body-s); font-weight: var(--fw-semibold); color: var(--text-link); }
.cv-cat-foot { background: var(--surface-sunken); border-top: 1px solid var(--line-hairline); }
.cv-cat-foot__inner { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: start; padding-top: var(--section-y-tight); padding-bottom: var(--section-y-tight); }
.cv-cat-foot__inner p { color: var(--text-muted); max-width: 480px; }

/* ---- Accreditations (DS component — client brand block tiles) ---- */
.cv-accreds { display: flex; flex-direction: column; align-items: center; gap: var(--space-5); }
.cv-accreds--s { gap: var(--space-4); }
.cv-accreds__title { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--text-faint); }
.cv-accreds--inverse .cv-accreds__title { color: var(--forest-200); }
.cv-accreds__row { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-4); }
.cv-accreds--s .cv-accreds__row { gap: var(--space-3); }
.cv-accreds__tile { width: 108px; min-height: 62px; border: 1px solid var(--forest-700); border-radius: var(--radius-1); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: var(--space-3); text-align: center; box-sizing: border-box; }
.cv-accreds--s .cv-accreds__tile { width: 92px; min-height: 52px; }
.cv-accreds--inverse .cv-accreds__tile { border-color: var(--line-inverse); }
.cv-accreds__name { font: var(--fw-bold) 15px/1 var(--font-display); color: var(--forest-700); }
.cv-accreds--s .cv-accreds__name { font-size: 13px; }
.cv-accreds--inverse .cv-accreds__name { color: var(--ghost); }
.cv-accreds__sub { font-size: 10px; color: var(--text-muted); }
.cv-accreds--s .cv-accreds__sub { font-size: 9px; }
.cv-accreds--inverse .cv-accreds__sub { color: var(--forest-200); }
.cv-accreds__caption { font-family: var(--font-core); font-size: 7px; font-weight: var(--fw-medium); letter-spacing: .15em; text-transform: uppercase; color: var(--text-faint); margin-top: 2px; }
.cv-accreds--inverse .cv-accreds__caption { color: var(--forest-200); }
.cv-footer__accreds { border-top: 1px solid var(--line-inverse); padding: var(--space-6) 0; }

/* ---- Product cards (hero signposts: spec / gallery / quote) ---- */
.cv-product-cards { position: relative; z-index: 2; padding-bottom: var(--space-6); }
.cv-product-cards__grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--space-4); }
.cv-pcard { display: flex; flex-direction: column; background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-2); box-shadow: var(--shadow-2); overflow: hidden; }
.cv-pcard__media { display: block; height: 205px; background: var(--surface-sunken); border-bottom: 1px solid var(--line-hairline); }
.cv-pcard__media img { width: 100%; height: 100%; object-fit: cover; }
.cv-pcard__title { margin: 0; padding: var(--space-2) var(--space-3) var(--space-1); font-size: var(--size-body-s); font-weight: var(--fw-semibold); font-family: var(--font-core); }
.cv-pcard__title a { color: var(--text-heading); text-decoration: none; }
.cv-pcard__title a:hover { color: var(--forest-600); }
.cv-pcard__actions { margin-top: auto; padding: 0 var(--space-3) var(--space-2); display: flex; flex-direction: column; }
.cv-pcard__action { display: flex; align-items: center; gap: 7px; padding: 5px 0; border-top: 1px solid var(--line-hairline); font-size: var(--size-caption); font-weight: var(--fw-semibold); color: var(--text-muted); text-decoration: none; transition: color var(--dur-fast) var(--ease-standard); }
.cv-pcard__action:hover { color: var(--text-heading); }
.cv-pcard__action .cv-icon { color: var(--text-faint); flex: none; transition: color var(--dur-fast) var(--ease-standard); }
.cv-pcard__action:hover .cv-icon { color: var(--forest-600); }
.cv-pcard__action--quote { color: var(--forest-600); font-weight: var(--fw-bold); }
.cv-pcard__action--quote .cv-icon { color: var(--forest-600); }
.cv-pcard__action--quote:hover { color: var(--forest-900); }
/* cards sit up IN the hero on the home page: headline left, quote CTA right, cards beneath */
.home .cv-hero__inner { flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-6); padding-top: var(--space-7); padding-bottom: 480px; min-height: 0; }
.home .cv-hero .cv-hero__title { font-size: var(--size-display-l); }
.home .cv-hero .cv-btn-row { margin-top: 0; flex: none; }
@media (max-width: 900px) {
	.home .cv-hero__inner { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 0; }
	.home .cv-hero .cv-btn-row { margin-top: var(--space-5); }
}
.home .cv-hero + .cv-product-cards { margin-top: -455px; }
@media (max-width: 1200px) {
	.cv-product-cards__grid { grid-template-columns: repeat(3, 1fr); }
	.home .cv-hero__inner { padding-bottom: 420px; }
	.home .cv-hero + .cv-product-cards { margin-top: -395px; }
}
@media (max-width: 820px) {
	.cv-product-cards__grid { grid-template-columns: repeat(2, 1fr); }
	.home .cv-hero__inner { padding-bottom: 330px; }
	.home .cv-hero + .cv-product-cards { margin-top: -300px; }
}
@media (max-width: 540px) {
	/* stay 2-up on phones — compact cards */
	.cv-product-cards__grid { gap: var(--space-3); }
	.cv-pcard__media { height: 128px; }
	.cv-pcard__title { font-size: var(--size-caption); padding: var(--space-2) var(--space-3) var(--space-1); }
	.cv-pcard__actions { padding: 0 var(--space-3) var(--space-2); }
	.cv-pcard__action { font-size: 12px; padding: 5px 0; gap: 5px; }
	.home .cv-hero__inner { padding-bottom: 310px; }
	.home .cv-hero + .cv-product-cards { margin-top: -280px; }
}
/* hover: cards lift (DS interactive-card behaviour), actions step forward */
.cv-pcard { transition: box-shadow var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard), border-color var(--dur-base) var(--ease-standard); }
.cv-pcard:hover { box-shadow: var(--shadow-3); transform: translateY(-2px); border-color: var(--line-strong); }
.cv-pcard__media img { transition: opacity var(--dur-base) var(--ease-standard); }
.cv-pcard:hover .cv-pcard__media img { opacity: .92; }
.cv-pcard__action .cv-icon { transition: transform var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard); }
.cv-pcard__action:hover .cv-icon { transform: translateX(2px); }

/* ---- Media + text (two-column feature) ---- */
.cv-media-text { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: start; }
.cv-media-text > * { min-width: 0; }
.cv-media-text--left .cv-media-text__media { order: -1; }
.cv-media-text__media { position: sticky; top: 96px; }
.cv-media-text__media .cv-gallery__main img { max-height: 440px; }
@media (max-width: 900px) {
	.cv-media-text { grid-template-columns: 1fr; }
	.cv-media-text--left .cv-media-text__media, .cv-media-text__media { order: -1; position: static; }
}

/* ---- Lightbox (DS dialog: overlay scrim + blur, shadow-4, 400ms fade) ---- */
@keyframes csd-dialog { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.cv-lightbox { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; padding: var(--space-5); }
.cv-lightbox[hidden] { display: none; }
body.cv-lightbox-open { overflow: hidden; }
.cv-lightbox__overlay { position: absolute; inset: 0; background: var(--surface-overlay); backdrop-filter: blur(2px); }
.cv-lightbox__panel { position: relative; background: var(--surface-card); border-radius: var(--radius-2); box-shadow: var(--shadow-4); max-width: 960px; width: 100%; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; animation: csd-dialog var(--dur-slow, 400ms) var(--ease-standard) both; }
.cv-lightbox__bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line-hairline); }
.cv-lightbox__title { font: var(--fw-semibold) var(--size-body-m)/1.2 var(--font-core); color: var(--text-heading); }
.cv-lightbox__close { background: none; border: none; padding: var(--space-2); cursor: pointer; color: var(--text-muted); font-size: 16px; line-height: 1; border-radius: var(--radius-1); }
.cv-lightbox__close:hover { background: var(--surface-sunken); color: var(--text-heading); }
.cv-lightbox__stage { position: relative; display: flex; align-items: center; justify-content: center; background: var(--surface-sunken); min-height: 0; flex: 1; }
.cv-lightbox__img { max-width: 100%; max-height: 62vh; object-fit: contain; display: block; }
.cv-lightbox__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-1); box-shadow: var(--shadow-1); cursor: pointer; font-size: 16px; color: var(--text-heading); transition: background var(--dur-fast) var(--ease-standard); }
.cv-lightbox__nav:hover { background: var(--surface-sunken); }
.cv-lightbox__nav--prev { left: var(--space-3); }
.cv-lightbox__nav--next { right: var(--space-3); }
.cv-lightbox__rail { display: flex; gap: var(--space-2); padding: var(--space-3) var(--space-4); border-top: 1px solid var(--line-hairline); overflow-x: auto; }
.cv-lightbox__rail button { flex: none; width: 64px; height: 44px; padding: 0; border: 1px solid var(--line-hairline); border-radius: var(--radius-1); overflow: hidden; cursor: pointer; background: none; }
.cv-lightbox__rail button img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cv-lightbox__rail button.is-active, .cv-lightbox__rail button:hover { border-color: var(--forest-700); }

/* ---- Application "typical installations" chips ---- */
.cv-app-uses__title { margin: var(--space-2) 0 var(--space-6); }
.cv-app-uses { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.cv-usechip { display: inline-flex; align-items: center; gap: 8px; min-height: 34px; padding: 5px var(--space-4); background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-pill); font-size: var(--size-body-s); font-weight: var(--fw-medium); color: var(--text-body); }
.cv-usechip .cv-icon { color: var(--forest-600); flex: none; }

/* ---- Application siblings band ---- */
.cv-app-siblings__title { margin: var(--space-2) 0 var(--space-6); }
.cv-app-siblings__all { margin-top: var(--space-5); border-top: none; padding-top: 0; width: auto; }

/* ---- Contact details band ---- */
.cv-contact-band { background: var(--surface-card); border-bottom: 1px solid var(--line-hairline); }
.cv-contact-band__inner { padding-top: var(--space-8); padding-bottom: var(--space-8); }
.cv-contact-band__title { margin-top: var(--space-4); font-size: var(--size-display-m); }
.cv-contact-band__intro { margin: var(--space-4) 0 0; max-width: 560px; font-size: var(--size-body-l); color: var(--text-muted); }
.cv-contact-band__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-5); margin-top: var(--space-7); }
.cv-contact-band__item { border-top: 2px solid var(--forest-700); padding-top: var(--space-3); display: flex; flex-direction: column; gap: var(--space-1); }
.cv-contact-band__value { display: flex; align-items: center; gap: var(--space-2); font-family: var(--font-mono); font-size: var(--size-body-s); color: var(--text-heading); }
.cv-contact-band__value .cv-icon { color: var(--forest-600); flex: none; }

/* ---- Scroll reveals (fade + small translate, --dur-reveal, once) ----
   Gated on .cv-anim (set by JS only when motion is allowed) so content is
   never hidden for no-JS or reduced-motion visitors. */
.cv-anim .cv-reveal { opacity: 0; transform: translateY(16px); transition: opacity var(--dur-reveal) var(--ease-standard), transform var(--dur-reveal) var(--ease-standard); transition-delay: var(--cv-reveal-delay, 0ms); }
.cv-anim .cv-reveal.is-revealed { opacity: 1; transform: none; }
/* interactive cards keep their own hover transition once revealed */
.cv-anim .cv-card.cv-reveal.is-revealed { transition: box-shadow var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard); }

/* ---- Enquiry (DS EnquiryScreen: form card + summary aside) ---- */
.cv-enquiry { display: grid; grid-template-columns: 1.1fr .9fr; gap: var(--space-8); align-items: start; }
.cv-enquiry > * { min-width: 0; }
/* GF renders without its theme framework — contain everything to the card */
.cv-form .gform_wrapper { max-width: 100%; }
.cv-form .gform_wrapper *, .cv-form .gform_wrapper fieldset { max-width: 100%; min-width: 0; box-sizing: border-box; white-space: normal; }
.cv-enquiry__card { background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-2); box-shadow: var(--shadow-1); padding: var(--space-6); }
.cv-enquiry__aside { display: flex; flex-direction: column; gap: var(--space-5); position: sticky; top: 96px; }
.cv-enquiry__talk { background: var(--grape-700); border-radius: var(--radius-2); padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); align-items: flex-start; }
.cv-enquiry__talk h5 { color: var(--ghost); margin: 0; }
.cv-enquiry__talk p { margin: 0; font-size: var(--size-body-s); color: var(--grape-300); }
.cv-enquiry__talk .cv-btn { margin-top: var(--space-3); }
/* GF step rail -> DS numbered progress */
.cv-form .gf_page_steps { display: flex; gap: var(--space-5); border: none; margin: 0 0 var(--space-5); padding: 0; }
.cv-form .gf_step { flex: 1; margin: 0; padding: var(--space-2) 0 0; border-top: 2px solid var(--line-hairline); display: flex; flex-direction: column; gap: 2px; opacity: 1; }
.cv-form .gf_step_active, .cv-form .gf_step_completed { border-top-color: var(--forest-700); }
.cv-form .gf_step_number { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-eyebrow); color: var(--text-faint); background: none; border: none; width: auto; height: auto; line-height: 1.4; }
.cv-form .gf_step_active .gf_step_number, .cv-form .gf_step_completed .gf_step_number { color: var(--forest-700); }
.cv-form .gf_step_label { font-size: var(--size-body-s); font-weight: var(--fw-medium); color: var(--text-faint); }
.cv-form .gf_step_active .gf_step_label { color: var(--text-heading); font-weight: var(--fw-semibold); }
.cv-form .gf_step_completed .gf_step_label { color: var(--text-heading); }
/* GF page nav buttons */
.cv-form .gform_page_footer { display: flex; gap: var(--space-3); margin-top: var(--space-6); padding-top: var(--space-5); border-top: 1px solid var(--line-hairline); }
.cv-form .gform_page_footer .button, .cv-form .gform_footer .button { border: none; border-radius: var(--radius-1); height: var(--control-height-m); padding: 0 var(--space-5); font: var(--fw-semibold) var(--size-body-m)/1 var(--font-core); cursor: pointer; }
.cv-form .gform_next_button, .cv-form .gform_footer input[type="submit"] { background: var(--action-primary); color: var(--text-on-inverse); margin-left: auto; }
.cv-form .gform_next_button:hover, .cv-form .gform_footer input[type="submit"]:hover { background: var(--action-primary-hover); }
.cv-form .gform_previous_button { background: transparent; color: var(--text-heading); box-shadow: inset 0 0 0 1px var(--line-hairline); }
.cv-form .gform_previous_button:hover { background: var(--surface-sunken); }
.cv-form .gfield_description { font-size: var(--size-caption); color: var(--text-faint); }
.cv-form .gfield_radio label, .cv-form .gfield_checkbox label { font-weight: var(--fw-regular); color: var(--text-body); }
.cv-form .gform_fields { display: grid; gap: var(--space-5); }

/* ---- Responsive ---- */
@media (max-width: 1080px) {
	.cv-nav { display: none; }
	.cv-header__toggle { display: inline-flex; }
	.cv-grid--3, .cv-grid--4 { grid-template-columns: repeat(2, 1fr); }
	.cv-footer__grid { grid-template-columns: 1fr 1fr; }
	.cv-product-head, .cv-cat-head__inner, .cv-cat-foot__inner, .cv-enquiry { grid-template-columns: 1fr; }
	.cv-enquiry__aside { position: static; }
	.cv-cat-head__chips { justify-content: flex-start; }
	:root { --section-y: 64px; --section-y-tight: 40px; }
}
@media (min-width: 1081px) {
	.cv-sheet { display: none; }
}
.cv-header__cta-short { display: none; }
@media (max-width: 640px) {
	:root { --gutter-page: 20px; }
	/* compact header CTA (DS compact mode): "Quote", no arrow */
	.cv-header__cta-full, .cv-header__cta-icon { display: none; }
	.cv-header__cta-short { display: inline; }
	.cv-header__inner { gap: var(--space-3); }
	.cv-header__wordmark { font-size: 15px; }
	.cv-grid--2, .cv-grid--3, .cv-grid--4 { grid-template-columns: 1fr; }
	.cv-credentials__inner { grid-template-columns: 1fr 1fr; gap: var(--space-3); }
	.cv-footer__grid { grid-template-columns: 1fr; }
	.cv-hero__inner { min-height: 380px; }
	.cv-hero .cv-btn { max-width: 100%; white-space: normal; text-align: center; height: auto; min-height: var(--control-height-m); padding-top: 10px; padding-bottom: 10px; font-size: var(--size-body-m); }
	.cv-utility__notice { display: none; }
	.cv-contact-band__grid { grid-template-columns: 1fr 1fr; }
}

/* ---- WhatsApp chat widget (looks like site chat, continues in WhatsApp) ---- */
.cv-chat { position: fixed; right: var(--space-5); bottom: var(--space-5); z-index: 70; display: flex; flex-direction: column; align-items: flex-end; gap: var(--space-3); }
.cv-chat__launcher { width: 56px; height: 56px; border: none; border-radius: 50%; background: var(--action-primary); color: var(--text-on-inverse); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: var(--shadow-3); transition: transform var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard); }
.cv-chat__launcher:hover { transform: translateY(-2px); box-shadow: var(--shadow-3), 0 2px 8px rgba(4, 54, 24, .18); }
.cv-chat__ico-close { display: none; }
.cv-chat.is-open .cv-chat__ico-open { display: none; }
.cv-chat.is-open .cv-chat__ico-close { display: inline-block; }
.cv-chat__panel { width: 340px; max-width: calc(100vw - var(--space-5) * 2); background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-3); box-shadow: var(--shadow-3); overflow: hidden; animation: csd-panel var(--dur-base) var(--ease-standard) both; }
.cv-chat__head { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4) var(--space-5); background: var(--forest-900); color: var(--ghost); }
.cv-chat__id { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cv-chat__id strong { font-family: var(--font-display); font-size: var(--size-body-m); letter-spacing: .01em; }
.cv-chat__id span { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--size-caption); color: var(--forest-200); }
.cv-chat__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--leaf-500, #7bb661); flex: none; }
.cv-chat__close { background: none; border: none; color: var(--forest-200); cursor: pointer; display: inline-flex; padding: var(--space-2); border-radius: var(--radius-1); }
.cv-chat__close:hover { color: var(--ghost); background: rgba(250, 250, 255, .12); }
.cv-chat__body { padding: var(--space-5); background: var(--surface-sunken); }
.cv-chat__bubble { background: var(--surface-card); border: 1px solid var(--line-hairline); border-radius: var(--radius-3); border-bottom-left-radius: var(--radius-1); padding: var(--space-3) var(--space-4); max-width: 90%; box-shadow: var(--shadow-1); }
.cv-chat__bubble p { margin: 0; font-size: var(--size-body-s); color: var(--text-body); }
.cv-chat__foot { display: flex; align-items: stretch; gap: var(--space-2); padding: var(--space-3); border-top: 1px solid var(--line-hairline); background: var(--surface-card); }
.cv-chat__input { flex: 1; min-width: 0; resize: none; border: 1px solid var(--line-hairline); border-radius: var(--radius-2); padding: var(--space-2) var(--space-3); font: inherit; font-size: var(--size-body-s); color: var(--text-body); }
.cv-chat__input:focus { outline: 2px solid var(--forest-300); outline-offset: 0; }
.cv-chat__send { display: inline-flex; align-items: center; gap: var(--space-2); border: none; border-radius: var(--radius-2); padding: 0 var(--space-4); background: var(--action-primary); color: var(--text-on-inverse); font-family: var(--font-core); font-size: var(--size-body-s); font-weight: var(--fw-semibold); cursor: pointer; }
.cv-chat__send:hover { background: var(--forest-600); }
.cv-chat__meta { margin: 0; padding: var(--space-2) var(--space-4) var(--space-3); background: var(--surface-card); font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); text-align: center; }
@media (max-width: 640px) {
	.cv-chat { right: var(--space-4); bottom: var(--space-4); }
	.cv-chat__panel { max-width: calc(100vw - var(--space-4) * 2); }
}
.cv-chat__hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.cv-chat__bubble--out { margin-top: var(--space-3); margin-left: auto; background: var(--forest-900); border-color: var(--forest-900); border-bottom-left-radius: var(--radius-3); border-bottom-right-radius: var(--radius-1); }
.cv-chat__bubble--out p { color: var(--ghost); }
.cv-chat__after { padding: var(--space-4) var(--space-5); border-top: 1px solid var(--line-hairline); background: var(--surface-card); }
.cv-chat__after-note { margin: 0 0 var(--space-3); font-size: var(--size-body-s); color: var(--text-body); }
.cv-chat__start { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-4) var(--space-5); border-top: 1px solid var(--line-hairline); background: var(--surface-card); }
.cv-chat__start-note { margin: 0 0 var(--space-1); font-size: var(--size-caption); color: var(--text-muted); }
.cv-chat__send--start { padding-top: var(--space-2); padding-bottom: var(--space-2); justify-content: center; }
.cv-chat__foot[hidden], .cv-chat__start[hidden] { display: none; }
