/* Reusable VED patterns. These selectors have no page-shell dependency. */
.component-container { width: min(calc(100% - 2 * var(--gutter)), var(--container-width)); margin-inline: auto; }
.component-container--wide { max-width: var(--container-wide); }
.component-container--narrow { max-width: var(--container-narrow); }
.component-section-header { display: grid; grid-template-columns: minmax(10rem, .4fr) minmax(0, 1fr); gap: clamp(1.5rem, 5vw, 5rem); align-items: start; margin-bottom: clamp(2rem, 5vw, 4rem); }
.component-section-header--display { grid-template-columns: minmax(170px, .4fr) minmax(0, 1fr); gap: clamp(1.5rem, 5vw, 5rem); margin-bottom: clamp(2rem, 5vw, 4.2rem); }
.component-section-header--display .component-section-header__eyebrow { margin: .7rem 0 .8rem; }
.component-section-header--display .component-section-header__title { margin-bottom: 1rem; font-size: clamp(2.8rem, 6.2vw, 6.2rem); line-height: .94; letter-spacing: 0; }
.component-section-header--display .component-section-header__title em { color: var(--green); font-weight: 400; }
.component-section-header--display .component-section-header__text { max-width: 1000px; font-size: 1rem; line-height: 1.75; }
.component-section-header__eyebrow,.component-eyebrow { margin: .25rem 0 .8rem; color: var(--muted); font-size: 1rem; font-weight: 700; letter-spacing: .13em; line-height: 1.45; text-transform: uppercase; }
.component-section-header__title,.component-heading--display,.component-heading--section,.component-heading--feature { margin: 0 0 1rem; color: var(--forest-dark); font-family: var(--font-display); font-weight: 400; letter-spacing: -.045em; }
.component-heading--display { font-size: clamp(2.6rem, 5.5vw, 5.4rem); line-height: .98; }
.component-section-header__title,.component-heading--section { font-size: clamp(2.25rem, 4.5vw, 4rem); line-height: 1.06; }
.component-heading--feature { font-size: clamp(1.55rem, 2.8vw, 2.4rem); line-height: 1.15; }
.component-section-header__text,.component-text { margin: 0; max-width: 65ch; color: var(--muted); font-size: 1rem; line-height: 1.7; }
.component-section-header--panel { display: flex; min-width: 0; min-height: 210px; flex-direction: column; justify-content: center; padding: clamp(1.2rem, 3vw, 2rem); border: 1px solid var(--line); background: var(--white); color: var(--ink); }
.component-section-header--panel .component-section-header__eyebrow { margin: 0 0 .8rem; }
.component-section-header--panel .component-section-header__title { margin: 0 0 .6rem; color: var(--forest-dark); font: 400 clamp(1.6rem, 3vw, 2.7rem)/1.05 var(--font-display); letter-spacing: -.045em; }
.component-section-header--panel .component-section-header__title em { color: var(--green); font-weight: 400; }
.component-section-header--panel .component-section-header__text { max-width: 430px; margin: 0; color: var(--muted); font-size: .90rem; line-height: 1.65; }
.component-section-header--center { align-items: center; text-align: center; }
.component-section-header--center .component-section-header__eyebrow { justify-content: center; }
.component-section-header--center .component-section-header__text { margin-inline: auto; }
.component-section-header--with-cta { flex-direction: row; align-items: end; justify-content: space-between; gap: 1rem; }
.component-section-header__copy { min-width: 0; }
.component-section-header__cta { flex: 0 0 auto; }
.component-section-header--split { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); align-items: center; gap: 1.5rem; }
.component-text--large { font-size: 1.125rem; line-height: 1.7; }
.component-text--small { font-size: .875rem; line-height: 1.6; }
.component-text--meta { font-size: .75rem; letter-spacing: .08em; }
.component-button { display: inline-flex; min-height: 48px; align-items: center; justify-content: center; gap: .65rem; padding: .7rem 1.1rem; border: 1px solid var(--forest); border-radius: var(--radius-control); font: 700 .82rem/1.2 var(--font-body); text-decoration: none; transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, transform 180ms ease; }
.component-button--primary { background: var(--forest); color: var(--white); }
.component-button--primary:hover { background: var(--forest-dark); border-color: var(--forest-dark); }
.component-button--secondary { background: transparent; color: var(--forest-dark); }
.component-button--secondary:hover { background: var(--paper-deep); }
.component-button:focus-visible,.component-link:focus-visible { outline: 3px solid var(--forest); outline-offset: 4px; }
.component-button:disabled,.component-button[aria-disabled="true"] { cursor: not-allowed; opacity: .5; transform: none; }
.component-link { display: inline-flex; align-items: center; gap: .5rem; color: var(--forest); font-weight: 700; text-underline-offset: 4px; }
.component-link:hover { color: var(--forest-dark); text-decoration: underline; }
.component-grid { display: grid; min-width: 0; gap: 1rem; }
.component-grid > * { min-width: 0; }
.component-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.component-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.component-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.component-grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.component-card { position: relative; display: flex; min-width: 0; flex-direction: column; padding: 1.25rem; background: var(--surface, var(--white)); border: 1px solid var(--line); color: var(--ink); }
.component-card h3 { margin: 0 0 .55rem; color: var(--forest); font: 400 1.45rem/1.12 var(--font-display); }
.component-card > p:not(.component-card__eyebrow) { color: var(--muted); font-size: .69rem; line-height: 1.65; }
.component-card__eyebrow { margin: 0 0 1rem; color: var(--green); font-size: .58rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.component-card__credit { font-size: .57rem; letter-spacing: .07em; }
.component-card__number { display: block; margin-bottom: 1rem; color: var(--green); font-size: .61rem; letter-spacing: .12em; }
.component-card__title { margin: 0 0 .55rem; color: var(--forest); font: 400 1.45rem/1.12 var(--font-display); }
.component-card__text { margin: 0 0 .7rem; color: var(--muted); font-size: 1rem; line-height: 1.65; }
.component-card__media { display: block; width: 100%; aspect-ratio: 1.6; object-fit: cover; }
.component-card__body { padding: 1rem 1.2rem 1.25rem; }
.component-card--image { padding: 0; overflow: hidden; }
.component-card--image > img { display: block; width: 100%; aspect-ratio: 1.6; object-fit: cover; }
.component-card--image > div { padding: 1rem 1.2rem 1.25rem; }
.component-card--feature,.component-card--cta { background: var(--forest-dark); color: var(--white); }
.component-card--feature .component-card__eyebrow,.component-card--cta .component-card__eyebrow { color: var(--color-lavender-soft); }
.component-card--feature .component-card__title,.component-card--cta .component-card__title,.component-card--feature h3,.component-card--cta h3 { color: var(--white); margin-top: auto; }
.component-card--feature .component-card__text,.component-card--cta .component-card__text,.component-card--feature > p:not(.component-card__eyebrow),.component-card--cta > p:not(.component-card__eyebrow) { color: var(--color-lavender-soft); }
.component-card--stat strong { display: block; color: var(--green); font: 400 clamp(3rem, 5vw, 4.5rem)/1 var(--font-display); }
.component-card--quote blockquote { margin: 0; color: var(--forest); font: 400 1.3rem/1.35 var(--font-display); }
.component-card--editorial .component-card__media { height: 100%; min-height: 190px; }
.component-card--evidence > span { color: var(--muted); font-size: .54rem; letter-spacing: .08em; }
.component-card--stage { background: var(--color-lavender-soft); }
.component-card--stage .inner-link { font-size: .65rem; }
.component-card--compact { padding: 1rem; }
.component-card--compact h3 { font: 600 .85rem/1.4 var(--font-body); }
.component-card--compact .component-card__title { font: 600 .85rem/1.4 var(--font-body); }
.component-card--link { min-height: 210px; justify-content: space-between; text-decoration: none; transition: background-color 180ms ease; }
.component-card--link:hover { background: var(--paper); }
.component-card--link > span { align-self: end; color: var(--green); font-size: 1.3rem; }
.component-card--horizontal { display: grid; grid-template-columns: .7fr 1.3fr; gap: 1rem; padding: 0; overflow: hidden; }
.component-card--horizontal > img { width: 100%; height: 100%; min-height: 190px; object-fit: cover; }
.component-card--horizontal > div { padding: 1rem 1rem 1rem 0; }
.component-card--horizontal .component-card__media { height: 100%; min-height: 190px; }
.component-card--horizontal .component-card__body { padding: 1rem 1rem 1rem 0; }
.component-quote { margin: 0; padding: clamp(1.5rem, 4vw, 3rem); border-left: 3px solid var(--gold); background: var(--paper-deep); color: var(--forest-dark); font: 400 clamp(1.35rem, 2.3vw, 2rem)/1.4 var(--font-display); }
.component-quote cite { display: block; margin-top: 1rem; color: var(--muted); font: 600 .75rem/1.5 var(--font-body); }
.component-cta-block { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; margin-top: 1rem; padding: 1.2rem 1.4rem; background: var(--forest-dark); color: var(--white); }
.component-cta-block h2,.component-cta-block p { margin-top: 0; }
.component-cta-block p,.component-cta-block__text { margin: 0; color: var(--color-lavender-soft); font: 400 1.45rem/1.2 var(--font-display); }
.component-cta-block .component-button--secondary { border-color: var(--white); color: var(--white); }
.component-split { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: clamp(1.5rem, 5vw, 4rem); }
.component-split--50-50 { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.component-split--60-40 { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
.component-split--40-60 { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
.component-split--image-right > :first-child { order: 0; }
.component-split--image-left > :first-child { order: 1; }
.component-feature-layout { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(14rem, 1fr); gap: 1rem; }
.component-image { display: block; width: 100%; height: auto; object-fit: cover; }
.component-image--cover { aspect-ratio: 16 / 10; }
.component-image--portrait { aspect-ratio: 4 / 5; }
.component-image--landscape { aspect-ratio: 3 / 2; }
.component-image-caption { margin-top: .6rem; color: var(--muted); font-size: .72rem; letter-spacing: .06em; }
.component-faq { max-width: 72ch; }
.component-faq details { border-top: 1px solid var(--line); }
.component-faq details:last-child { border-bottom: 1px solid var(--line); }
.component-faq summary { position: relative; cursor: pointer; padding: 1rem 2.5rem 1rem 0; color: var(--forest-dark); font-weight: 700; list-style: none; }
.component-faq summary::-webkit-details-marker { display: none; }
.component-faq summary::after { content: "+"; position: absolute; right: .25rem; color: var(--green); }
.component-faq details[open] summary::after { content: "−"; }
.component-faq details > :not(summary) { padding: 0 1rem 1rem 0; color: var(--muted); }
.component-process { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin: 2rem 0 0; padding: 0; list-style: none; }
.component-process li { display: grid; grid-template-columns: 34px minmax(0, 1fr); align-content: start; gap: .7rem; padding: 1rem 0; border-top: 1px solid var(--line); }
.component-process--compact { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; }
.component-process--compact li { display: block; padding: .8rem 0; }
.component-process--compact h3 { color: inherit; font: 400 1.1rem/1.2 var(--font-display); }
.component-process--compact .component-process__number { color: var(--gold); }
.component-process__number { color: var(--green); font-size: .62rem; }
.component-process h3,.component-process__title { margin: 0; color: var(--forest); font: 400 1.4rem/1.1 var(--font-display); }
.component-process p { grid-column: 2; margin: 0; color: var(--muted); font-size: .67rem; }
.component-contact { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.component-contact > * { min-width: 0; padding: 1.3rem; border: 1px solid var(--line); background: var(--white); }
.component-contact h3,.component-contact__title { color: var(--forest-dark); font: 400 1.8rem/1.05 var(--font-display); }
.component-contact h3 em,.component-contact__title em { color: var(--green); }
.component-contact address,.component-contact > article > a:not(.inner-button),.component-contact > article > p:not(.chapter-label) { display: block; color: var(--muted); font-size: .68rem; font-style: normal; line-height: 1.7; overflow-wrap: anywhere; }
.component-contact > article > a:not(.inner-button) { margin-top: .4rem; }
.component-contact__text { color: var(--muted); font-size: .68rem; line-height: 1.7; overflow-wrap: anywhere; }
.component-process__text { grid-column: 2; margin: 0; color: var(--muted); font-size: .67rem; }
.component-faq__answer { color: var(--muted); }
.ds-layout-row .component-grid { gap: .5rem; }
.ds-layout-row .component-grid > i { min-height: 50px; display: grid; place-items: center; background: var(--white); border: 1px solid var(--line); color: var(--forest); font-size: .62rem; font-style: normal; }
.component-split--image-left > *:first-child { order: 1; }
.component-split--image-left > *:last-child { order: 0; }
@media (max-width: 1000px) {
  .component-section-header--display { grid-template-columns: 150px minmax(0, 1fr); }
  .component-grid--3,.component-grid--4,.component-grid--5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .component-contact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .ds-layout-row .component-grid { gap: .5rem; }
.ds-layout-row .component-grid > i { min-height: 39px; }
  .component-section-header,.component-grid--2,.component-grid--3,.component-grid--4,.component-grid--5,.component-split,.component-feature-layout,.component-process,.component-contact { grid-template-columns: 1fr; }
  .component-section-header { gap: .5rem; }
  .component-section-header--display { display: block; }
  .component-section-header--display .component-section-header__eyebrow { margin: 0 0 1rem; }
  .component-section-header--with-cta { align-items: flex-start; flex-direction: column; }
  .component-section-header--split { grid-template-columns: minmax(0, 1fr); }
  .component-card--horizontal { grid-template-columns: 1fr; }
  .component-card--horizontal > img { width: 100%; height: 100%; min-height: 190px; object-fit: cover; }
.component-card--horizontal > div { padding: 1rem 1rem 1rem 0; }
.component-card--horizontal .component-card__media { max-height: 210px; }
  .component-card--horizontal .component-card__body { padding: 1rem; }
  .component-card--link { min-height: 170px; }
  .component-cta-block { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  .component-button,.component-link,.component-card--link { transition-duration: .01ms; }
}
