/* P4 factory geometry. Theme/Global Styles own typography families, global palette,
   normal heading/body typography, buttons and content/wide alignment. */
.zaco-fe {
  color: var(--zaco-fe-text);
  font-family: var(--zaco-fe-font-family, inherit);
}
.zaco-fe *, .zaco-fe *::before, .zaco-fe *::after { box-sizing: border-box; }
.zaco-fe img { display: block; width: 100%; max-width: 100%; }
.zaco-fe h1, .zaco-fe h2, .zaco-fe h3, .zaco-fe p { margin-top: 0; }
/* Wide means the usable content width, never content + extra inner padding.
   100% respects an already-constrained theme parent; viewport clearance applies
   only when the section approaches the viewport edge. Do not derive clearance
   from unknown theme edge-spacing (the former 0px-width regression). */
.zaco-fe-container {
  box-sizing: border-box;
  min-width: 0;
  width: 100%;
  max-width: min(
    var(--zaco-fe-layout-wide, var(--zaco-fe-fallback-wide-width)),
    calc(100vw - var(--zaco-fe-container-edge-clearance) - var(--zaco-fe-container-edge-clearance))
  );
  padding-inline: 0;
  margin-inline: auto;
}
.zaco-fe-container--reading {
  max-width: min(
    var(--zaco-fe-layout-reading),
    calc(100vw - var(--zaco-fe-container-edge-clearance) - var(--zaco-fe-container-edge-clearance))
  );
}
.zaco-fe-section { padding-block: var(--zaco-fe-section-space-block); }
.zaco-fe-section--soft { background: var(--zaco-fe-surface-subtle); }
.zaco-fe-eyebrow { display: inline-block; margin-bottom: var(--zaco-fe-eyebrow-margin-bottom); font-family: var(--zaco-fe-label-font-family); font-size: var(--zaco-fe-eyebrow-font-size); line-height: var(--zaco-fe-eyebrow-leading); letter-spacing: var(--zaco-fe-eyebrow-tracking); text-transform: uppercase; font-weight: var(--zaco-fe-eyebrow-weight); color: var(--zaco-fe-eyebrow-ink); }
.zaco-fe-lead { max-width: var(--zaco-fe-lead-measure); color: var(--zaco-fe-text-muted); line-height: var(--zaco-fe-leading-body); }
.zaco-fe-section-heading { max-width: var(--zaco-fe-section-heading-max-width); margin-bottom: var(--zaco-fe-space-6); }
.zaco-fe-section-heading :is(h2,.zaco-fe-section-heading__title) { margin-bottom: var(--zaco-fe-space-2); font-size: var(--zaco-fe-section-title-size); line-height: var(--zaco-fe-leading-heading); }
/* Shared heading-to-description rhythm, only when copy actually follows the title. */
.zaco-fe-section-heading :is(h1,h2,h3,h4,h5,h6,.zaco-fe-section-heading__title):has(+ .zaco-fe-section-heading__description) { margin-bottom: var(--zaco-fe-heading-to-copy-gap); }
.zaco-fe-section-heading :is(p:not(.zaco-fe-section-heading__title),.zaco-fe-section-heading__description) { margin-bottom: 0; color: var(--zaco-fe-text-muted); }
.zaco-fe-section-heading__title { font-family: var(--zaco-fe-font-display); color: var(--zaco-fe-heading); }
.zaco-fe-section-heading__description { line-height: var(--zaco-fe-leading-body); }
/* Shared editorial collection section-title role. Match the existing factory
 * editorial headings regardless of whether semantic markup is h2 or p. */
.zaco-fe-featured-content .zaco-fe-section-heading .zaco-fe-section-heading__title {
  font-family: var(--zaco-fe-font-display);
  font-size: var(--zaco-fe-editorial-section-size);
  line-height: var(--zaco-fe-editorial-line-height);
  color: var(--zaco-fe-heading);
}

.zaco-fe-icon { width: var(--zaco-fe-icon-size-default); height: var(--zaco-fe-icon-size-default); object-fit: contain; filter: none; }
.zaco-fe-richtext { color: var(--zaco-fe-text-muted); }
.zaco-fe-richtext > :last-child { margin-bottom: 0; }
.zaco-fe-richtext h2, .zaco-fe-richtext h3 { color: var(--zaco-fe-heading); }
.zaco-fe-richtext p, .zaco-fe-richtext li { max-width: var(--zaco-fe-richtext-measure); }
.zaco-fe-actions { display: flex; flex-wrap: wrap; gap: var(--zaco-fe-actions-gap); align-items: center; margin-top: var(--zaco-fe-actions-offset); }
.zaco-fe-button { min-height: var(--zaco-fe-control-min-height); padding: var(--zaco-fe-control-pad-block) var(--zaco-fe-control-pad-inline); display: inline-flex; align-items: center; justify-content: center; gap: var(--zaco-fe-control-gap); border-radius: var(--zaco-fe-theme-button-radius); border: var(--zaco-fe-control-border) solid var(--zaco-fe-theme-button-bg); font: inherit; font-size: var(--zaco-fe-text-md); font-weight: 600; text-decoration: none; }
.zaco-fe-button--primary { background: var(--zaco-fe-theme-button-bg); color: var(--zaco-fe-theme-button-text) !important; }
.zaco-fe-button--primary:is(:hover,:focus-visible) { background: var(--zaco-fe-theme-button-hover-bg); color: var(--zaco-fe-theme-button-hover-text) !important; }
.zaco-fe-button--ghost { background: transparent; color: var(--zaco-fe-accent); border-color: var(--zaco-fe-accent); }

/* Shared compact form/action row. Consumers opt in when fields and actions must
   share one control height across themes; this prevents host-theme button padding
   from making a submit action taller than adjacent ZACO fields. */
.zaco-fe .zaco-fe-control-row :is(
  input[type="search"], input[type="text"], input[type="email"], input[type="tel"],
  input[type="url"], input[type="number"], select, .zaco-fe-button
) {
  box-sizing: border-box;
  height: var(--zaco-fe-control-min-height);
  min-height: var(--zaco-fe-control-min-height);
  margin-block: 0;
}
.zaco-fe-breadcrumbs { display: flex; flex-wrap: wrap; gap: var(--zaco-fe-space-2); padding-block: var(--zaco-fe-breadcrumb-space-block-start) var(--zaco-fe-breadcrumb-space-block-end); font-size: var(--zaco-fe-text-xs); color: var(--zaco-fe-text-muted); }
.zaco-fe-breadcrumbs a, .zaco-fe-card a, .zaco-fe-back, .zaco-fe-document-link, .zaco-fe-location-card a { color: inherit; }

/* Product factory */
.zaco-fe-product-hero { padding: 0 0 36px; background: linear-gradient(90deg,var(--zaco-fe-surface) 0%,var(--zaco-fe-surface-subtle) 100%); }
.zaco-fe-product-hero__grid { display: grid; grid-template-columns: minmax(0,1.08fr) minmax(0,1.33fr) minmax(280px,.63fr); gap: 28px; align-items: stretch; }
.zaco-fe-product-hero__copy { align-self: center; padding: 34px 8px 40px 0; }
.zaco-fe-product-hero__copy h1 { max-width: 720px; color: var(--zaco-fe-heading); margin-bottom: 18px; font-size: var(--zaco-fe-page-title-size); line-height: var(--zaco-fe-leading-tight); }
.zaco-fe-product-hero__media { min-height: 530px; overflow: hidden; border-radius: var(--zaco-fe-radius); background: var(--zaco-fe-soft); }
.zaco-fe-product-hero__media img { height: 100%; object-fit: cover; }
.zaco-fe-hero-benefits { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--zaco-fe-hero-benefit-gap); margin-top: var(--zaco-fe-space-6); }
.zaco-fe-hero-benefit { display: grid; grid-template-columns: 30px minmax(0,1fr); gap: var(--zaco-fe-space-2); min-width: 0; align-items: center; font-size: var(--zaco-fe-text-sm); font-weight: 600; }
.zaco-fe-hero-benefit__icon { display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid var(--zaco-fe-line); border-radius: 50%; }
.zaco-fe-hero-benefit__icon .zaco-fe-icon { width: 18px; height: 18px; }
.zaco-fe-contact-card { padding: var(--zaco-fe-card-padding); border: 1px solid var(--zaco-fe-line); border-radius: var(--zaco-fe-radius); background: color-mix(in srgb,var(--zaco-fe-surface) 96%,transparent); box-shadow: var(--zaco-fe-shadow-card); align-self: stretch; }
.zaco-fe-contact-card h2 { margin-bottom: var(--zaco-fe-space-2); }
.zaco-fe-contact-card__title { font-size: var(--zaco-fe-consultation-title-size); line-height: var(--zaco-fe-leading-heading); overflow-wrap: normal; word-break: normal; hyphens: none; }
.zaco-fe-contact-card p { color: var(--zaco-fe-text-muted); font-size: var(--zaco-fe-text-md); line-height: var(--zaco-fe-leading-body); }
.zaco-fe-contact-card .zaco-fe-actions { display: grid; }
.zaco-fe-contact-card p.zaco-fe-contact-card__note { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--zaco-fe-line); font-size: var(--zaco-fe-text-xs); }
.zaco-fe-overview__grid { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1.9fr); gap: 46px; align-items: start; }
.zaco-fe-benefit-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: var(--zaco-fe-overview-benefit-gap); align-items: stretch; min-width: 0; }
.zaco-fe-product .zaco-fe-benefit-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
.zaco-fe-benefit-tile { min-width: 0; padding: var(--zaco-fe-overview-benefit-pad); border: 1px solid var(--zaco-fe-line); border-radius: var(--zaco-fe-card-radius); }
.zaco-fe-benefit-tile > span { display: inline-grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--zaco-fe-border-strong); border-radius: 50%; margin-bottom: 12px; }
.zaco-fe-benefit-tile h3 { margin-bottom: var(--zaco-fe-space-2); overflow-wrap: normal; font-size: var(--zaco-fe-card-title-size); }
.zaco-fe-benefit-tile p { margin-bottom: 0; overflow-wrap: normal; color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-sm); }

/* Cards */
.zaco-fe-card-grid { display: grid; gap: var(--zaco-fe-card-grid-gap); }
.zaco-fe-card-grid--2 { grid-template-columns: repeat(2,minmax(0,1fr)); }
.zaco-fe-card-grid--3 { grid-template-columns: repeat(3,minmax(0,1fr)); }
.zaco-fe-card-grid--4 { grid-template-columns: repeat(4,minmax(0,1fr)); }
.zaco-fe-card-grid--5 { grid-template-columns: repeat(5,minmax(0,1fr)); }
.zaco-fe-card { border: var(--zaco-fe-stroke-hairline) solid var(--zaco-fe-line); background: var(--zaco-fe-surface-raised); border-radius: var(--zaco-fe-card-radius); overflow: hidden; }
.zaco-fe-card__media { display: block; aspect-ratio: 1.55/1; overflow: hidden; background: var(--zaco-fe-soft); }
.zaco-fe-card__media img { width: 100%; height: 100%; object-fit: cover; }
.zaco-fe-card__body { padding: var(--zaco-fe-card-body-pad-top) var(--zaco-fe-card-body-pad-inline) var(--zaco-fe-card-body-pad-bottom); }
.zaco-fe-card__title-row { display: flex; gap: var(--zaco-fe-actions-gap); align-items: start; justify-content: space-between; }
.zaco-fe-card__title { margin: 0; font-family: var(--zaco-fe-label-font-family); font-size: var(--zaco-fe-card-title-size); font-weight: 600; line-height: var(--zaco-fe-leading-compact); overflow-wrap: anywhere; }
.zaco-fe-card__arrow { flex: 0 0 auto; color: var(--zaco-fe-deep); }
.zaco-fe-card__meta { margin: 5px 0 0; color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-xs); }
.zaco-fe-card__summary { margin: 8px 0 0; color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-sm); }
.zaco-fe-card--compact .zaco-fe-card__body { min-height: var(--zaco-fe-card-compact-min-height); }
.zaco-fe-card--compact .zaco-fe-card__media { aspect-ratio: 1.7/1; }

/* Materials */
.zaco-fe-material-grid { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: var(--zaco-fe-space-4); }
.zaco-fe-material { overflow: hidden; border: var(--zaco-fe-stroke-hairline) solid var(--zaco-fe-line); border-radius: var(--zaco-fe-material-card-radius); background: var(--zaco-fe-surface-raised); }
/* Authored material photos take precedence. CSS typed attr() progressively renders
   validated hexadecimal canonical swatches without per-record inline styles. */
.zaco-fe-material__media, .zaco-fe-material__swatch { height: var(--zaco-fe-material-media-height); background: var(--zaco-fe-material-swatch-fallback); }
.zaco-fe-material__swatch { background-color: attr(data-swatch-color type(<color>), var(--zaco-fe-material-swatch-fallback)); }
.zaco-fe-material__media img { height: 100%; object-fit: cover; }
.zaco-fe-material__body { padding: var(--zaco-fe-space-3); display: grid; gap: var(--zaco-fe-material-body-gap); }
.zaco-fe-material__body strong { font-size: var(--zaco-fe-text-sm); }
.zaco-fe-material__body span { color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-2xs); }

/* Process */
.zaco-fe-process-layout { display: grid; grid-template-columns: minmax(330px,.75fr) minmax(0,1.65fr); gap: 28px; align-items: stretch; }
.zaco-fe-process-layout__media { border-radius: 5px; overflow: hidden; min-height: 310px; }
.zaco-fe-process-layout__media img { height: 100%; object-fit: cover; }
.zaco-fe-process-layout__content { padding: 30px 28px; background: var(--zaco-fe-soft); border-radius: 5px; }
.zaco-fe-process-steps { list-style: none; margin: 0; padding: 18px 0 0; display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); border-top: 1px solid var(--zaco-fe-line); }
.zaco-fe-process-steps li { padding: 0 18px; border-right: 1px solid var(--zaco-fe-line); }
.zaco-fe-process-steps li:first-child { padding-left: 0; }
.zaco-fe-process-steps li:last-child { border-right: 0; }
.zaco-fe-process-steps li > span { display: block; margin-bottom: 12px; font-size: var(--zaco-fe-text-lg); }
.zaco-fe-process-steps strong { display: block; font-size: var(--zaco-fe-text-sm); }
.zaco-fe-process-steps p { margin: 7px 0 0; color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-xs); line-height: var(--zaco-fe-leading-compact); }

/* FAQ / related */
.zaco-fe-bottom-grid__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 34px; }
.zaco-fe-related-panel { padding: 26px; border-radius: 6px; background: var(--zaco-fe-soft-green); }
/* Optional shared FAQ section tint: section backgrounds are always theme-derived. */
.zaco-fe-section--faq { background: var(--zaco-fe-editorial-surface-mint); }
/* Shared FAQ accordion: one native-details renderer, theme-aware cards and CSS caret.
   Never place plus/caret characters or inline declarations in page templates. */
.zaco-fe-faqs {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--zaco-fe-faq-card-gap);
}
.zaco-fe-faqs details {
  min-width: 0;
  background: var(--zaco-fe-faq-card-surface);
  border: var(--zaco-fe-stroke-hairline) solid var(--zaco-fe-border);
  border-radius: var(--zaco-fe-faq-card-radius);
  box-shadow: var(--zaco-fe-faq-card-shadow);
  overflow: hidden;
}
.zaco-fe-faqs summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--zaco-fe-faq-item-gap);
  padding: var(--zaco-fe-faq-item-pad-block) var(--zaco-fe-faq-item-pad-inline);
  cursor: pointer;
  color: var(--zaco-fe-text);
  font-family: var(--zaco-fe-font-family);
  font-size: var(--zaco-fe-faq-question-size);
  font-weight: var(--zaco-fe-faq-question-weight);
  line-height: var(--zaco-fe-faq-question-leading);
  min-height: var(--zaco-fe-faq-closed-row-min);
  box-sizing: border-box;
}
.zaco-fe-faqs summary::-webkit-details-marker { display: none; }
.zaco-fe-faqs summary::marker { content: ''; }
.zaco-fe-faqs summary::after {
  content: '';
  box-sizing: border-box;
  display: block;
  flex: 0 0 var(--zaco-fe-faq-caret-size);
  width: var(--zaco-fe-faq-caret-size);
  height: var(--zaco-fe-faq-caret-size);
  border-inline-end: var(--zaco-fe-faq-caret-stroke) solid currentColor;
  border-block-end: var(--zaco-fe-faq-caret-stroke) solid currentColor;
  color: var(--zaco-fe-faq-caret-color);
  transform: rotate(45deg);
  transition: transform var(--zaco-fe-motion-fast) var(--zaco-fe-motion-ease);
}
.zaco-fe-faqs details[open] summary::after { transform: rotate(225deg); }
.zaco-fe-faqs summary:focus-visible {
  outline: var(--zaco-fe-focus-ring-width) solid var(--zaco-fe-focus-color);
  outline-offset: calc(-1 * var(--zaco-fe-focus-ring-offset));
  border-radius: var(--zaco-fe-faq-card-radius);
}
.zaco-fe-faqs .zaco-fe-faq__answer {
  padding: 0 var(--zaco-fe-faq-item-pad-inline) var(--zaco-fe-faq-answer-pad-bottom);
  color: var(--zaco-fe-ink-soft);
  font-size: var(--zaco-fe-faq-answer-size);
  line-height: var(--zaco-fe-faq-answer-leading);
  text-align: left;
}
.zaco-fe-faq__answer > :first-child { margin-block-start: 0; }
.zaco-fe-faq__answer > :last-child { margin-block-end: 0; }
/* Kept for optional contextual two-column FAQ use; Project uses full-width rows. */
.zaco-fe-faqs--columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (prefers-reduced-motion: reduce) {
  .zaco-fe-faqs summary::after { transition: none; }
}

/* P4.48: one responsive FAQ-question role, independent of card surface or template.
   summary fills closed rows so a multi-line question and caret remain centred. */
@media (max-width: 620px) {
  .zaco-fe { --zaco-fe-faq-question-size: 1rem; --zaco-fe-faq-question-leading: 1.5; --zaco-fe-faq-closed-row-min: 4.25rem; --zaco-fe-faq-answer-size: .9375rem; --zaco-fe-faq-answer-leading: 1.6; }
}

/* P4.48: shared, role-aware arrow microinteraction for real navigational actions.
   Position and colors belong to components; only the glyph/badge travels.
   Disclosure carets, directional/back/download roles, non-link informational
   icons, and motion-sensitive visitors must not inherit rightward motion. */
.zaco-fe .zaco-fe-arrow-glyph,
.zaco-fe .zaco-fe-home-solution__arrow {
  transition: transform var(--zaco-fe-motion-fast) var(--zaco-fe-motion-ease),
              background-color var(--zaco-fe-motion-fast) var(--zaco-fe-motion-ease),
              color var(--zaco-fe-motion-fast) var(--zaco-fe-motion-ease);
}
@media (hover: hover) {
  .zaco-fe :is(.zaco-fe-home-solution,.zaco-fe-home-view-all,.zaco-fe-visual-card,
      .zaco-fe-product-explore-card,.zaco-fe-product-choice,.zaco-fe-related-item,
      .zaco-fe-card,.zaco-fe-home-hero__button,.zaco-fe-button,
      .zaco-fe-product-section-top__link,.zaco-fe-product-info__view-all,
      .zaco-fe-project-faq__view-all,.zaco-fe-location-card__link,
      .zaco-fe-home-faq-visit__more,.zaco-fe-home-story__link,
      .zaco-fe-back,.zaco-fe-document-link):is(:hover,:focus-within)
      .zaco-fe-arrow-glyph:not(.zaco-fe-arrow-glyph--up-right):not(.zaco-fe-arrow-glyph--left):not(.zaco-fe-arrow-glyph--down) {
    transform: translateX(var(--zaco-fe-arrow-hover-travel));
  }
  .zaco-fe :is(.zaco-fe-home-hero__button,.zaco-fe-home-faq-visit__more,
      .zaco-fe-button,.zaco-fe-home-story__link,.zaco-fe-location-card__link):is(:hover,:focus-within)
      .zaco-fe-arrow-glyph--up-right {
    transform: translate(var(--zaco-fe-arrow-hover-travel), calc(-1 * var(--zaco-fe-arrow-hover-travel)));
  }
  .zaco-fe .zaco-fe-back:is(:hover,:focus-within) .zaco-fe-arrow-glyph--left {
    transform: translateX(calc(-1 * var(--zaco-fe-arrow-hover-travel)));
  }
  .zaco-fe .zaco-fe-document-link:is(:hover,:focus-within) .zaco-fe-arrow-glyph--down {
    transform: translateY(var(--zaco-fe-arrow-hover-travel));
  }
}
/* The accepted Project stylesheet is fingerprint-protected. This higher-specificity
   shared-primitives bridge standardizes its *action* movement without rewriting
   approved Project layout rules or its media-query accessibility fallbacks. */
@media (hover: hover) {
  .zaco-fe.zaco-fe-stitch-project a.zaco-fe-related-item:is(:hover,:focus-visible) .zaco-fe-related-item__arrow {
    transform: translateX(var(--zaco-fe-arrow-hover-travel));
  }
}
/* Keyboard activation provides the same feedback on non-hover hardware. */
.zaco-fe :is(.zaco-fe-home-solution,.zaco-fe-visual-card,.zaco-fe-product-explore-card,
    .zaco-fe-product-choice,.zaco-fe-related-item,.zaco-fe-card):focus-within
    .zaco-fe-arrow-glyph:not(.zaco-fe-arrow-glyph--up-right):not(.zaco-fe-arrow-glyph--left):not(.zaco-fe-arrow-glyph--down) {
  transform: translateX(var(--zaco-fe-arrow-hover-travel));
}
@media (prefers-reduced-motion: reduce) {
  .zaco-fe .zaco-fe-arrow-glyph, .zaco-fe .zaco-fe-home-solution__arrow {
    transition: none !important; transform: none !important;
  }
  .zaco-fe :is(a,button):is(:hover,:focus-within) .zaco-fe-arrow-glyph,
  .zaco-fe :is(a,button):is(:hover,:focus-within) .zaco-fe-home-solution__arrow {
    transform: none !important;
  }
}

/* CTA */
.zaco-fe-cta { position: relative; min-height: 180px; display: grid; place-items: center; overflow: hidden; background: var(--zaco-fe-theme-button-bg); color: var(--zaco-fe-on-media); }
.zaco-fe-cta__media, .zaco-fe-cta__media img, .zaco-fe-cta__overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.zaco-fe-cta__media img { object-fit: cover; }
.zaco-fe-cta__overlay { background: color-mix(in srgb,var(--zaco-fe-media-scrim-strong) 86%,var(--zaco-fe-accent) 14%); }
.zaco-fe-cta__content { position: relative; z-index: 2; text-align: center; padding: 34px 0; }
.zaco-fe .zaco-fe-cta .zaco-fe-cta__content h2 { margin-bottom: var(--zaco-fe-space-2); color: var(--zaco-fe-editorial-cta-on); }
.zaco-fe-cta__content p { margin: 0 auto; max-width: 720px; color: color-mix(in srgb,var(--zaco-fe-on-media) 78%,transparent); }
.zaco-fe-cta__content .zaco-fe-actions { justify-content: center; }
.zaco-fe-cta__content .zaco-fe-button--primary { background: var(--zaco-fe-theme-button-bg); border-color: var(--zaco-fe-theme-button-bg); color: var(--zaco-fe-theme-button-text) !important; }
.zaco-fe-cta__content .zaco-fe-button--ghost { color: var(--zaco-fe-on-media); border-color: color-mix(in srgb,var(--zaco-fe-on-media) 45%,transparent); }

/* Shared photographic closing-CTA primitive. Product, Layout and future public
   surfaces vary copy/action arrangement but reuse one media/scrim/content shell. */
.zaco-fe-photo-cta {
  --zaco-fe-photo-cta-min-height: 16rem;
  --zaco-fe-photo-cta-pad: clamp(1.5rem, 4vw, 4rem);
  --zaco-fe-photo-cta-measure: 34rem;
  --zaco-fe-photo-cta-scrim: var(--zaco-theme-cta-scrim, var(--zaco-fe-media-scrim-strong));
  display: block; min-height: 0; background: var(--zaco-fe-surface);
}
.zaco-fe-photo-cta__banner {
  position: relative; isolation: isolate; display: flex; align-items: center; justify-content: flex-start;
  min-height: var(--zaco-fe-photo-cta-min-height); overflow: hidden;
  border-radius: var(--zaco-fe-stitch-card-radius);
  background: var(--zaco-fe-editorial-cta-bg); box-shadow: var(--zaco-fe-shadow-card);
}
.zaco-fe-photo-cta {
  --zaco-fe-photo-cta-focus-x: 50%;
  --zaco-fe-photo-cta-focus-y: 50%;
}
.zaco-fe-photo-cta[data-cta-focal-x="left"] { --zaco-fe-photo-cta-focus-x: 0%; }
.zaco-fe-photo-cta[data-cta-focal-x="right"] { --zaco-fe-photo-cta-focus-x: 100%; }
.zaco-fe-photo-cta[data-cta-focal-y="top"] { --zaco-fe-photo-cta-focus-y: 0%; }
.zaco-fe-photo-cta[data-cta-focal-y="bottom"] { --zaco-fe-photo-cta-focus-y: 100%; }
.zaco-fe-photo-cta .zaco-fe-cta__media img { object-position: var(--zaco-fe-photo-cta-focus-x) var(--zaco-fe-photo-cta-focus-y); }
.zaco-fe-photo-cta .zaco-fe-cta__overlay {
  background: linear-gradient(90deg, color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 96%, #000 4%) 0%, color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 82%, transparent) 58%, color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 18%, transparent) 82%, transparent 100%);
}
.zaco-fe-photo-cta[data-cta-scrim="balanced"] .zaco-fe-cta__overlay {
  background: linear-gradient(90deg, color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 88%, transparent) 0%, color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 68%, transparent) 56%, transparent 100%);
}
.zaco-fe-photo-cta[data-cta-scrim="soft"] .zaco-fe-cta__overlay {
  background: linear-gradient(90deg, color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 70%, transparent) 0%, color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 44%, transparent) 54%, transparent 100%);
}
.zaco-fe-photo-cta .zaco-fe-cta__content {
  box-sizing: border-box; min-width: 0; width: min(100%, var(--zaco-fe-photo-cta-measure));
  flex: 0 1 var(--zaco-fe-photo-cta-measure); margin: 0 auto 0 0; padding: var(--zaco-fe-photo-cta-pad); text-align: start;
  max-width: none; color: var(--zaco-fe-editorial-cta-on);
}
.zaco-fe-photo-cta .zaco-fe-cta__content .zaco-fe-eyebrow,
.zaco-fe-photo-cta .zaco-fe-cta__content h2,
.zaco-fe-photo-cta .zaco-fe-cta__content p { color: var(--zaco-fe-editorial-cta-on) !important; }
.zaco-fe-photo-cta .zaco-fe-cta__content p {
  color: var(--zaco-fe-editorial-on-media-soft); margin: var(--zaco-fe-space-3) 0 var(--zaco-fe-space-5);
}
/* Shared photographic CTA alignment: action groups follow the same inline
   start edge as left-aligned editorial copy. Acquisition surfaces elsewhere may
   remain full-width/grid; the closing CTA must not visually re-center controls. */
.zaco-fe-photo-cta .zaco-fe-actions{width:100%;justify-content:start;justify-items:start;align-items:start}
.zaco-fe-photo-cta .zaco-fe-actions>:is(.zaco-fe-button--primary,.zaco-native-form-surface){width:auto;max-width:100%}
.zaco-fe-photo-cta .zaco-fe-actions>.zaco-native-form-surface .zaco-native-form__button{width:auto;max-width:100%}
.zaco-fe-photo-cta .zaco-fe-actions__channels{width:auto;max-width:100%;justify-self:start}
.zaco-fe-photo-cta .zaco-fe-cta__content .zaco-fe-actions { justify-content: flex-start; }
.zaco-fe-photo-cta .zaco-fe-button--primary {
  display: inline-flex; margin-block-start: var(--zaco-fe-space-3);
  background: var(--zaco-fe-editorial-cta-hover-bg); border-color: transparent; color: var(--zaco-fe-theme-button-hover-text) !important;
}
.zaco-fe-photo-cta:not([data-has-media="1"]) .zaco-fe-cta__overlay {
  background: linear-gradient(110deg, var(--zaco-fe-photo-cta-scrim), color-mix(in srgb, var(--zaco-fe-accent) 32%, var(--zaco-fe-photo-cta-scrim)));
}
@media (max-width: 767px) {
  .zaco-fe-photo-cta .zaco-fe-cta__overlay,
  .zaco-fe-photo-cta[data-cta-scrim="balanced"] .zaco-fe-cta__overlay,
  .zaco-fe-photo-cta[data-cta-scrim="soft"] .zaco-fe-cta__overlay { background: color-mix(in srgb, var(--zaco-fe-photo-cta-scrim) 88%, transparent); }
}


/* Project factory */
/* Intentionally left full-bleed. Desktop right edge aligns with the theme's
 * wide container instead of the viewport; first/media column absorbs the
 * reduction while the overview keeps its own governed inline size. */
.zaco-fe-project-hero {
  display: grid;
  width: 100%;
  max-width: min(100%, calc(50vw + var(--zaco-fe-project-hero-aligned-measure) / 2));
  grid-template-columns: minmax(0, 1fr) minmax(0, var(--zaco-fe-project-hero-sidebar-width));
  min-height: var(--zaco-fe-project-hero-min-height);
  background: var(--zaco-fe-surface);
}
.zaco-fe-project-hero > * { min-width: 0; }
.zaco-fe-project-hero__main { position: relative; min-width: 0; overflow: hidden; color: var(--zaco-fe-on-media); }
.zaco-fe-project-hero__image, .zaco-fe-project-hero__shade { position: absolute; inset: 0; height: 100%; width: 100%; }
.zaco-fe-project-hero__image { object-fit: cover; }
.zaco-fe-project-hero__shade { background: linear-gradient(90deg,var(--zaco-fe-media-scrim-strong) 0%,var(--zaco-fe-media-scrim-medium) 42%,color-mix(in srgb,var(--zaco-fe-media-scrim-light) 22%,transparent) 75%); }
.zaco-fe-project-hero__copy { position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: center; width: min(var(--zaco-fe-project-hero-copy-width),70%); min-height: var(--zaco-fe-project-hero-min-height); padding: var(--zaco-fe-project-hero-copy-top) 0 var(--zaco-fe-project-hero-copy-bottom) var(--zaco-fe-project-hero-gutter); }
.zaco-fe-project-hero__copy h1 { margin: 16px 0 5px; color: var(--zaco-fe-on-media); }
.zaco-fe-project-hero__subtitle { font-size: var(--zaco-fe-text-xl); line-height: var(--zaco-fe-leading-heading); }
.zaco-fe-project-hero__summary { max-width: 500px; font-size: var(--zaco-fe-text-md); line-height: var(--zaco-fe-leading-body); }
.zaco-fe-back { margin-bottom: 38px; font-size: var(--zaco-fe-text-sm); }
.zaco-fe-project-hero__location { display: flex; gap: 8px; align-items: center; font-size: var(--zaco-fe-text-md); font-weight: 600; }
.zaco-fe-project-hero__location .zaco-fe-icon { width: 18px; height: 18px; filter: brightness(0) invert(1); }
.zaco-fe-chip-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.zaco-fe-chip-row span { padding: 6px 13px; border: 1px solid color-mix(in srgb,var(--zaco-fe-on-media) 50%,transparent); border-radius: 999px; font-size: var(--zaco-fe-text-xs); }
.zaco-fe-project-overview { overflow-wrap: anywhere; padding: 26px 30px; background: var(--zaco-fe-surface-subtle); }
.zaco-fe-project-overview h2 { margin-bottom: 12px; font-size: var(--zaco-fe-text-lg); line-height: var(--zaco-fe-leading-compact); }
.zaco-fe-project-overview dl { margin: 0; }
.zaco-fe-project-overview dl > div { padding: 15px 0; border-bottom: 1px solid var(--zaco-fe-line); }
.zaco-fe-project-overview dt { display: grid; grid-template-columns: 30px 1fr; gap: 8px; align-items: center; color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-xs); font-weight: 400; }
.zaco-fe-project-overview dd { margin: 2px 0 0 38px; font-size: var(--zaco-fe-text-sm); }
.zaco-fe-project-overview .zaco-fe-actions { display: grid; margin-top: 20px; }
.zaco-fe-document-link { display: block; padding: 13px 0 0; font-size: var(--zaco-fe-text-sm); font-weight: 600; }
.zaco-fe-project-story__grid { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.3fr); gap: var(--zaco-fe-project-story-column-gap); }
.zaco-fe-project-gallery { display: grid; grid-template-columns: 2fr .75fr; grid-template-rows: 1fr 1fr; gap: 14px; }
.zaco-fe-project-gallery figure { margin: 0; min-height: 190px; overflow: hidden; border-radius: 4px; }
.zaco-fe-project-gallery figure.is-main { grid-row: 1 / span 2; min-height: 430px; }
.zaco-fe-project-gallery img { height: 100%; object-fit: cover; }
.zaco-fe-story-points { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; padding-top: 18px; margin-top: 22px; border-top: 1px solid var(--zaco-fe-line); }
.zaco-fe-story-points > div { display: grid; grid-template-columns: 32px 1fr; column-gap: 8px; }
.zaco-fe-story-points > div > span { grid-row: 1 / span 2; display: grid; place-items: center; width: 31px; height: 31px; border: 1px solid var(--zaco-fe-line); border-radius: 50%; }
.zaco-fe-story-points .zaco-fe-icon { width: 17px; height: 17px; }
.zaco-fe-story-points strong { font-size: var(--zaco-fe-text-xs); }
.zaco-fe-story-points small { color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-2xs); }
.zaco-fe-feature-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 18px; }
.zaco-fe-feature-card { border: 1px solid var(--zaco-fe-line); border-radius: 4px; overflow: hidden; background: var(--zaco-fe-surface-raised); }
.zaco-fe-feature-card__media { aspect-ratio: 1.4/1; overflow: hidden; }
.zaco-fe-feature-card__media img { height: 100%; object-fit: cover; }
.zaco-fe-feature-card__body { position: relative; padding: 13px 14px 16px; }
.zaco-fe-feature-card__icon { position: absolute; right: 10px; top: -31px; display: grid; place-items: center; width: 31px; height: 31px; border-radius: 50%; background: color-mix(in srgb,var(--zaco-fe-accent) 76%,transparent); }
.zaco-fe-feature-card__icon .zaco-fe-icon { width: 16px; height: 16px; filter: brightness(0) invert(1); }
.zaco-fe-feature-card h3 { margin-bottom: 7px; color: var(--zaco-fe-accent); font-size: var(--zaco-fe-text-sm); }
.zaco-fe-feature-card p { margin: 0; color: var(--zaco-fe-ink-soft); font-size: var(--zaco-fe-text-xs); }
.zaco-fe-project-midgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
.zaco-fe-location-testimonial { display: grid; grid-template-columns: .9fr 1.35fr; gap: 24px; }
.zaco-fe-location-card { display: grid; grid-template-columns: 1fr 1.2fr; gap: 24px; align-items: center; }
.zaco-fe-location-card > img { height: 185px; object-fit: cover; }
.zaco-fe-location-card h2 { margin-bottom: 4px; }
.zaco-fe-location-card p, .zaco-fe-location-card a { font-size: var(--zaco-fe-text-xs); }
.zaco-fe-testimonial { margin: 0; padding: 34px; display: grid; align-content: center; background: var(--zaco-fe-soft-green); }
.zaco-fe-testimonial > span { font-family: inherit; font-size: var(--zaco-fe-text-3xl); font-weight: 700; line-height: 1; }
.zaco-fe-testimonial p { font-size: var(--zaco-fe-text-md); }
.zaco-fe-testimonial cite { font-size: var(--zaco-fe-text-xs); color: var(--zaco-fe-ink-soft); }

/* Service */
.zaco-fe-service-hero { padding: 54px 0; background: var(--zaco-fe-soft); }
.zaco-fe-service-hero__grid { display: grid; grid-template-columns: 1fr 1.25fr; gap: 48px; align-items: center; }
.zaco-fe-service-hero__grid img { max-height: 550px; object-fit: cover; border-radius: 5px; }

/* P4.39: archive editorial alignment and rhythm share the SAME wide container
 * as the eyebrow, heading and cards. Long prose may use reading measure without
 * centering the entire editorial block independently. */
.zaco-fe-archive-hero { padding-block: var(--zaco-fe-space-12) var(--zaco-fe-space-6); background: var(--zaco-fe-soft); }
.zaco-fe-archive-hero__inner { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 42px; align-items: center; }
.zaco-fe-archive-hero img { max-height: 410px; object-fit: cover; border-radius: 5px; }
.zaco-fe-archive-hero :is(h1,h2,h3,h4,h5,h6,p,span).zaco-fe-semantic-title,
.zaco-fe-archive-hero .zaco-fe-semantic-combined,
.zaco-fe-archive-hero h1 { max-width: 800px; color: var(--zaco-fe-heading); margin-bottom: 0; }
.zaco-fe-archive-hero .zaco-fe-semantic-combined { display: flex; flex-direction: column; align-items: flex-start; }
.zaco-fe-archive-hero .zaco-fe-semantic-title,
.zaco-fe-archive-hero .zaco-fe-semantic-combined { font-family: var(--zaco-fe-font-display, inherit); font-size: var(--zaco-fe-page-title-size); line-height: var(--zaco-fe-theme-h1-leading); font-weight: 400; }
.zaco-fe-archive-hero .zaco-fe-eyebrow { font-size: var(--zaco-fe-eyebrow-font-size); font-family: var(--zaco-fe-label-font-family); font-style: normal; font-weight: var(--zaco-fe-eyebrow-weight); line-height: var(--zaco-fe-eyebrow-leading); letter-spacing: var(--zaco-fe-eyebrow-tracking); color: var(--zaco-fe-eyebrow-ink); }
.zaco-fe-archive-hero--plain { min-height: 0; display: block; }
.zaco-fe-archive-copy { width: 100%; max-width: 100%; text-align: left; margin-inline: 0; }
.zaco-fe-archive-copy > :where(p,h2,h3,h4,ol,ul,blockquote) { margin-inline: 0; }
.zaco-fe-archive-copy > :where(p,ol,ul,blockquote) { max-width: var(--zaco-fe-richtext-measure); }
.zaco-fe-archive-editorial { width: 100%; max-width: 100%; text-align: left; margin-inline: 0; }
.zaco-fe .zaco-fe-archive-top { margin-top: var(--zaco-fe-heading-to-copy-gap); }
.zaco-fe .zaco-fe-archive-term-summary { margin-top: var(--zaco-fe-heading-to-copy-gap); margin-bottom: 0; }
.zaco-fe-archive-results { padding-block: var(--zaco-fe-space-8) var(--zaco-fe-section-space-block); }
/* P4.41: Top and Bottom Description share editorial text, width and alignment;
 * Bottom sits after listings without inheriting marketing-section padding. */
.zaco-fe-archive-bottom {
  padding-block: var(--zaco-fe-space-6);
  text-align: left;
}
.zaco-fe .nav-links { margin-top: 34px; display: flex; gap: 8px; }
.zaco-fe .page-numbers { padding: 8px 12px; border: 1px solid var(--zaco-fe-line); }
.zaco-fe .page-numbers.current { background: var(--zaco-fe-theme-button-bg); color: var(--zaco-fe-theme-button-text); }

@media (max-width: 1200px) {
  .zaco-fe-product-hero__grid { grid-template-columns: 1fr 1.18fr; }
  .zaco-fe-contact-card { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1.2fr; gap: 20px; align-items: center; }
  .zaco-fe-contact-card .zaco-fe-actions { grid-template-columns: repeat(3,auto); }
  .zaco-fe-benefit-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .zaco-fe-product .zaco-fe-benefit-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .zaco-fe-card-grid--5 { grid-template-columns: repeat(3,1fr); }
  .zaco-fe-material-grid { grid-template-columns: repeat(3,1fr); }
  .zaco-fe-process-steps { grid-template-columns: repeat(3,1fr); row-gap: 24px; }
  .zaco-fe-feature-grid { grid-template-columns: repeat(3,1fr); }
  /* Desktop hero keeps one column contract; no competing 1200px ratio. */
}

@media (max-width: 900px) {
  .zaco-fe-section { padding-block: var(--zaco-fe-section-space-block-compact); }
  .zaco-fe-product-hero__grid, .zaco-fe-overview__grid, .zaco-fe-process-layout, .zaco-fe-bottom-grid__inner, .zaco-fe-project-story__grid, .zaco-fe-project-midgrid, .zaco-fe-location-testimonial, .zaco-fe-service-hero__grid, .zaco-fe-archive-hero__inner { grid-template-columns: 1fr; }
  .zaco-fe-product-hero__copy { padding-bottom: 10px; }
  .zaco-fe-product-hero__media { min-height: 410px; }
  .zaco-fe-contact-card { grid-template-columns: 1fr; }
  .zaco-fe-benefit-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .zaco-fe-card-grid--4, .zaco-fe-card-grid--5 { grid-template-columns: repeat(2,1fr); }
  .zaco-fe-material-grid { grid-template-columns: repeat(3,1fr); }
  .zaco-fe-process-steps { grid-template-columns: repeat(2,1fr); }
  /* Once stacked, hero + overview occupy the full available screen again. */
  .zaco-fe-project-hero { max-width: none; grid-template-columns: minmax(0, 1fr); }
  .zaco-fe-project-hero__main, .zaco-fe-project-hero__copy { min-height: 540px; }
  .zaco-fe-project-hero__copy { width: 78%; }
  .zaco-fe-project-overview { overflow-wrap: anywhere; padding: 30px 24px; }
  .zaco-fe-project-gallery { min-height: 460px; }
  .zaco-fe-feature-grid { grid-template-columns: repeat(2,1fr); }
  .zaco-fe-faqs--columns { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
  .zaco-fe-product-hero__media { min-height: 330px; }
  .zaco-fe-benefit-grid, .zaco-fe-card-grid--2, .zaco-fe-card-grid--3, .zaco-fe-card-grid--4, .zaco-fe-card-grid--5, .zaco-fe-material-grid, .zaco-fe-process-steps, .zaco-fe-feature-grid, .zaco-fe-story-points { grid-template-columns: 1fr; }
  .zaco-fe-product .zaco-fe-benefit-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .zaco-fe-benefit-tile { padding: var(--zaco-fe-overview-benefit-pad); }
  .zaco-fe-contact-card .zaco-fe-actions { grid-template-columns: 1fr; }
  .zaco-fe-project-hero__copy { width: 94%; padding-left: 24px; padding-right: 20px; }
  .zaco-fe-project-gallery { display: grid; grid-template-columns: 1fr; grid-template-rows: auto; min-height: 0; }
  .zaco-fe-project-gallery figure.is-main { grid-row: auto; min-height: 330px; }
  .zaco-fe-project-gallery figure { min-height: 230px; }
  .zaco-fe-location-card { grid-template-columns: 1fr; }
}

@media (max-width: 440px) {
  .zaco-fe-hero-benefits, .zaco-fe-product .zaco-fe-benefit-grid { grid-template-columns: minmax(0,1fr); }
}

/* Shared P4.16 dialog primitive: reusable for all later frontend forms. */
.zaco-fe-modal {
  position: fixed; inset: 0; margin: auto; width: min(var(--zaco-fe-modal-width), calc(100vw - 2 * var(--zaco-fe-modal-viewport-gutter)));
  max-width: none; max-height: var(--zaco-fe-modal-max-block); padding: 0; border: var(--zaco-fe-stroke-hairline) solid var(--zaco-fe-border);
  border-radius: var(--zaco-fe-info-card-radius); background: var(--zaco-fe-faq-card-surface);
  color: var(--zaco-fe-theme-text); box-shadow: var(--zaco-fe-shadow-card);
}
.zaco-fe-modal:not([open]) { display: none; }
.zaco-fe-modal::backdrop { background: var(--zaco-fe-modal-backdrop); }
.zaco-fe-modal__frame { display: flex; flex-direction: column; max-height: var(--zaco-fe-modal-max-block); min-height: 0; }
.zaco-fe-modal__header { display:flex; justify-content:space-between; align-items:flex-start; gap:var(--zaco-fe-space-5); padding:var(--zaco-fe-space-6); border-bottom: var(--zaco-fe-stroke-hairline) solid var(--zaco-fe-border); flex:0 0 auto; }
.zaco-fe-modal__headings h2 { margin:var(--zaco-fe-space-2) 0 0; font-family:var(--zaco-fe-font-display); font-size:var(--zaco-fe-display-md); line-height:var(--zaco-fe-display-leading-md); }
.zaco-fe-modal__close { border: var(--zaco-fe-stroke-hairline) solid var(--zaco-fe-border); border-radius:50%; flex:0 0 var(--zaco-fe-modal-close-size); width:var(--zaco-fe-modal-close-size); height:var(--zaco-fe-modal-close-size); padding:0; display:grid; place-items:center; background:var(--zaco-fe-faq-card-surface); color:var(--zaco-fe-theme-text); cursor:pointer; font-size:var(--zaco-fe-text-xl); }
.zaco-fe-modal__close:hover { background:var(--zaco-fe-editorial-surface-mint); }
.zaco-fe-modal__close:focus-visible { outline: var(--zaco-fe-faq-caret-stroke) solid var(--zaco-fe-accent); outline-offset:2px; }
.zaco-fe-modal__content { flex: 1; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:var(--zaco-fe-space-6); }
@media (max-width:620px) { .zaco-fe-modal__header,.zaco-fe-modal__content { padding:var(--zaco-fe-space-4); } }

/* P4.32: shared ZACO-only entry clearance. Only active Factory templates enqueue
   the measuring script; ordinary theme pages retain their own header spacing. */
.zaco-fe { --zaco-fe-header-clearance: 0px; }
.zaco-fe:not(.zaco-fe-home) { padding-block-start: var(--zaco-fe-header-clearance); }

/* P4.38: Owner-confirmed Stitch archive card title: Manrope 18/26, 600.
   Scoped to Factory archives; Single cards and editorial display titles are unchanged. */
.zaco-fe-archive .zaco-fe-card__title {
  font-family: var(--zaco-fe-label-font-family);
  font-size: var(--zaco-fe-text-lg, 1.125rem);
  font-weight: 600;
  line-height: 26px;
  overflow-wrap: anywhere;
}
/* Archive semantic-tag swaps must preserve the old eyebrow/title rhythm. */
.zaco-fe-archive-hero .zaco-fe-eyebrow { margin-top: 0; margin-bottom: var(--zaco-fe-eyebrow-margin-bottom); }
.zaco-fe-archive-hero .zaco-fe-semantic-title { margin: 0; }

/* P4.42: archive eyebrow semantics may change tags; never adopt display type. */
.zaco-fe-archive-hero .zaco-fe-semantic-combined > .zaco-fe-eyebrow,
.zaco-fe-archive-hero :is(h1,h2,h3,h4,h5,h6,p).zaco-fe-eyebrow {
  font-family: var(--zaco-fe-label-font-family);
  font-style: normal;
  font-weight: 700;
}

/* P4.43: weight by role. Regular Phosphor remains unchanged for semantic / content icons.
   Navigation gets bold geometry in bounded 18-20px sizes, preserving single-template geometry. */
.zaco-fe-card__arrow, .zaco-fe-related-item__arrow, .zaco-fe-visual-card__arrow,
.zaco-fe-product-choice__arrow, .zaco-fe-product-explore-card__arrow { --zaco-fe-nav-arrow-size:18px; }

/* P4.44: unified action arrows; no new card or CTA dimensions. */
.zaco-fe :is(.zaco-fe-button, .zaco-fe-product-section-top__link,
.zaco-fe-product-info__view-all, .zaco-fe-project-faq__view-all,
.zaco-fe-location-card__link) .zaco-fe-arrow-glyph { --zaco-fe-nav-arrow-size:18px; }

/* P4.44: preserve original click geometry; icons are only decorative. */
.zaco-fe .zaco-fe-back { display:inline-flex; align-items:center; gap:6px; }
.zaco-fe .zaco-fe-document-link .zaco-fe-arrow-glyph { --zaco-fe-nav-arrow-size:16px; }

/* P4.49: native Blocksy H1 typography wins over old Factory archive line-height.
   Blocksy defines --theme-line-height on each heading; resolving at the actual
   element (not the Factory root) picks up the editor's Heading 1 setting. */
body.zaco-theme-blocksy .zaco-fe-archive-hero :is(h1.zaco-fe-semantic-title,h1.zaco-fe-semantic-combined,h1:not([class])) {
  line-height: var(--theme-line-height, var(--zaco-fe-theme-h1-leading));
  color: var(--zaco-fe-heading);
}
/* FAQ inner edge is the same left offset for questions and answers. */
.zaco-fe-faqs summary, .zaco-fe-faqs .zaco-fe-faq__answer { text-align: left; }

/* P4.49: theme typography controls own ordinary Single and archive H1 leading.
   The value is read from the element so Blocksy per-heading overrides win.
   The Home cinematic video heading is intentionally excluded. */
body.zaco-theme-blocksy .zaco-fe :is(.zaco-fe-product-hero__copy,.zaco-fe-project-hero__copy) h1 {
  line-height: var(--theme-line-height, var(--zaco-fe-theme-h1-leading));
}

/* COL-3: archive Grid/List/Slider all consume the same canonical card renderer. */
.zaco-fe-archive .zaco-fe-archive-collection.zaco-fe-collection--grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--zaco-fe-card-grid-gap);
}
.zaco-fe-archive .zaco-fe-archive-collection.zaco-fe-collection--list {
  gap: var(--zaco-fe-space-4);
}
.zaco-fe-archive .zaco-fe-archive-collection.zaco-fe-collection--slider .zaco-fe-card { height: 100%; }
@media (max-width: 64rem) {
  .zaco-fe-archive .zaco-fe-archive-collection.zaco-fe-collection--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 42rem) {
  .zaco-fe-archive .zaco-fe-archive-collection.zaco-fe-collection--grid { grid-template-columns: minmax(0, 1fr); }
}

/* ARC-1: one server-authoritative archive browse row. */
.zaco-fe-archive-browse { margin-bottom: var(--zaco-fe-space-6, 1.5rem); }
.zaco-fe-archive-browse__form {
  display: grid;
  grid-template-columns: minmax(15rem, 1fr) minmax(12rem, auto) auto auto;
  gap: .75rem;
  align-items: center;
}
.zaco-fe-archive-browse :is(input[type="search"], select) {
  width: 100%;
  min-height: 2.75rem;
  border: 1px solid var(--zaco-fe-border, #d9e1db);
  border-radius: var(--zaco-fe-radius-control, .5rem);
  background: var(--zaco-fe-surface, #fff);
  color: var(--zaco-fe-text, inherit);
  padding: .625rem .75rem;
  font: inherit;
}
.zaco-fe-archive-browse__clear { font-weight: 600; text-underline-offset: .2em; }
.zaco-fe-archive-browse__count { margin: .75rem 0 0; color: var(--zaco-fe-text-muted, #65746b); font-size: .9rem; }
@media (max-width: 48rem) {
  .zaco-fe-archive-browse__form { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
  .zaco-fe-archive-browse__search { grid-column: 1 / -1; }
}
@media (max-width: 32rem) {
  .zaco-fe-archive-browse__form { grid-template-columns: minmax(0,1fr); }
  .zaco-fe-archive-browse__search { grid-column: auto; }
}

/* 0.5.63 archive browse chooser: one-row desktop controls + shared browse-on-focus suggestions. */
@media (min-width:78rem){
  .zaco-fe-archive-browse__form{display:flex;flex-wrap:nowrap;align-items:stretch;gap:.75rem}
  .zaco-fe-archive-browse__search{flex:2 1 24rem;min-width:15rem}
  .zaco-fe-archive-browse__select{flex:1 1 9.5rem;min-width:8.5rem}
  .zaco-fe-archive-browse__form>.zaco-fe-button{flex:0 0 auto;min-width:7rem}
  .zaco-fe-archive-browse__clear{align-self:center;flex:0 0 auto}
}
.zaco-fe-archive-browse__search{position:relative;min-width:0}
.zaco-fe-archive-browse__search>label{display:block}
.zaco-fe-archive-browse__suggestions{position:absolute;z-index:30;left:0;right:0;top:calc(100% + .35rem);max-height:25.5rem;overflow-y:auto;padding:.3rem;border:1px solid var(--zaco-fe-border,#d9e1db);border-radius:var(--zaco-fe-radius-control,.5rem);background:var(--zaco-fe-surface,#fff);box-shadow:0 16px 32px rgba(20,35,28,.12)}
.zaco-fe-archive-browse__suggestion{display:block;width:100%;min-height:2.5rem;padding:.55rem .7rem;border:0;border-radius:.35rem;background:transparent;color:var(--zaco-fe-text,inherit);font:inherit;text-align:left;cursor:pointer}
.zaco-fe-archive-browse__suggestion:is(:hover,:focus-visible,.is-active){background:var(--zaco-fe-soft,#f3f7f2);outline:none}
.zaco-fe-archive-browse__suggestion-empty{padding:.75rem;color:var(--zaco-fe-text-muted,#65746b)}
@media (max-width:77.99rem){.zaco-fe-archive-browse__form{grid-template-columns:repeat(2,minmax(0,1fr))}.zaco-fe-archive-browse__search{grid-column:1/-1}}
