/* Hallmark · macrostructure: Ecosystem Index · tone: editorial · anchor hue: copper
 * The Plumbing Exchange. Homepage only; tokens loaded as a stylesheet dependency.
 * Newsreader / Figtree. One copper junction, numbered chapters, conversation lines,
 * complete directory register. Feedback only; no spatial animation.
 */
body.af-exchange-design.af-exchange-home #wpforo.af-publication #wpforo-wrap {
  color: var(--color-ex-ink);
  background: var(--color-ex-paper);
  .af-workspace--edition { width: 100%; max-width: none; padding: 0; }

  .af-exchange { max-width: var(--layout-ex-width); padding: var(--space-ex-xl) var(--space-ex-xl) var(--space-ex-3xl); margin-inline: auto; font: 400 var(--text-ex-body)/1.5 var(--font-ex-body); }
  .af-exchange * { box-sizing: border-box; }
  .af-exchange :is(h1,h2,h3,h4,h5,h6,p,figure,ul) { margin: 0; padding: 0; }
  .af-exchange :is(h1,h2,h3,h4,h5,h6) { color: var(--color-ex-ink); text-transform: none; font-style: normal; }
  .af-exchange :is(h1,h2) { font-family: var(--font-ex-display) !important; font-weight: 500; letter-spacing: -.025em; }
  .af-exchange :is(h3,h4,h5,h6) { font-family: var(--font-ex-body) !important; letter-spacing: 0; }
  .af-exchange p { font: 400 var(--text-ex-body)/1.5 var(--font-ex-body); color: var(--color-ex-secondary); }
  .af-exchange ul { list-style: none; }
  .af-exchange a { color: inherit; text-decoration: none; white-space: normal; overflow-wrap: anywhere; transition: none; }
  .af-exchange :is(a,button,input):focus-visible { outline: var(--rule-ex-focus) solid var(--color-ex-copper) !important; outline-offset: var(--space-ex-2xs); }
  .af-exchange :is(a,button):active { color: var(--color-ex-copper-pressed); }
  .af-exchange [hidden] { display: none !important; }
  .af-exchange :is(section,aside,[id]) { scroll-margin-top: var(--layout-ex-anchor); }
  .af-ex-layout { display: grid; grid-template-columns: minmax(0,1fr) var(--layout-ex-rail); column-gap: var(--space-ex-xl); align-items: stretch; }
  .af-ex-layout--community { grid-template-columns: minmax(0,1fr); max-width: 72rem; margin-inline: auto; }
  .af-ex-main { min-width: 0; }
  .af-ex-shortcuts { display: none; }

  /* A single, deliberately small construction detail at each structural opening. */
  .af-ex-junction { position: relative; border-top: var(--rule-ex-fine) solid var(--color-ex-rule); padding-top: var(--space-ex-lg); }
  .af-ex-junction::before { content: ''; position: absolute; top: calc(-1 * var(--rule-ex-fine)); left: 0; width: 28px; height: 12px; border-top: var(--rule-ex-focus) solid var(--color-ex-copper); border-left: var(--rule-ex-focus) solid var(--color-ex-copper); pointer-events: none; }
  .af-ex-intro { display: grid; grid-template-columns: minmax(0,1fr) var(--layout-ex-image); gap: var(--space-ex-lg); }
  .af-ex-intro-copy { min-width: 0; }
  .af-ex-intro h1 { max-width: 23ch; font-size: var(--text-ex-intro); line-height: 1.06; text-wrap: balance; }
  .af-ex-intro-copy > p { max-width: 58ch; margin-top: var(--space-ex-sm); }
  .af-ex-image { position: relative; width: var(--layout-ex-chapter-image); flex-shrink: 0; align-self: center; }
  .af-ex-image img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
  .af-ex-image figcaption { padding-top: var(--space-ex-2xs); text-align: right; color: var(--color-ex-secondary); font: 400 var(--text-ex-caption)/1.4 var(--font-ex-body); }
  .af-ex-image--lead { width: var(--layout-ex-image); align-self: start; }
  .af-ex-image--lead img { height: 240px; min-height: 228px; aspect-ratio: auto; object-position: 50% 54%; }
  .af-ex-image--lead figcaption { position: absolute; right: 0; bottom: 0; padding: var(--space-ex-2xs) var(--space-ex-xs); background: var(--color-ex-deep); color: var(--color-ex-paper); }
  .af-ex-search { margin-top: var(--space-ex-md); }
  .af-ex-search label { display: block; margin-bottom: var(--space-ex-xs); font: 600 var(--text-ex-meta)/1.4 var(--font-ex-body); color: var(--color-ex-ink); }
  .af-ex-search-field { display: flex; align-items: stretch; gap: 0; border: var(--rule-ex-fine) solid var(--color-ex-field); border-radius: var(--radius-ex-control); background: var(--color-ex-paper); }
  .af-ex-search-field input { width: 100%; min-width: 0; min-height: var(--control-ex-height); height: var(--control-ex-height); padding: var(--space-ex-xs) var(--space-ex-sm); border: 0 !important; border-radius: 0; background: var(--color-ex-clear); color: var(--color-ex-ink); box-shadow: none; font: 400 var(--text-ex-body)/1.4 var(--font-ex-body); }
  .af-ex-search-field input::placeholder { color: var(--color-ex-secondary); opacity: 1; }
  .af-ex-search-field button { display: grid; place-items: center; flex: 0 0 var(--control-ex-height); min-width: var(--control-ex-height); min-height: var(--control-ex-height); padding: 0; border: 0; border-radius: 0; background: var(--color-ex-copper); color: var(--color-ex-paper); }
  .af-ex-search-field svg { width: 20px; height: 20px; }
  .af-ex-search .af-ex-search-status { min-height: 1.4em; margin-top: var(--space-ex-2xs); font-size: var(--text-ex-meta); color: var(--color-ex-copper); }
  .af-ex-search-status:empty { visibility: hidden; }
  .af-ex-search-field:has(input[aria-invalid="true"]) { border-color: var(--color-ex-copper); }
  .af-exchange :is(input,button):disabled { opacity: .55; cursor: not-allowed; }
  .af-ex-intro-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-ex-xs) var(--space-ex-md); padding-block: var(--space-ex-sm) var(--space-ex-md); }
  .af-ex-intro-bottom .af-ex-scale { font-size: var(--text-ex-meta); font-variant-numeric: tabular-nums; }
  .af-exchange .af-ex-action { display: inline-flex; align-items: center; justify-content: space-between; gap: var(--space-ex-lg); min-height: var(--control-ex-height); padding: var(--space-ex-xs) var(--space-ex-md); border-radius: var(--radius-ex-control); background: var(--color-ex-copper); color: var(--color-ex-paper); font: 600 var(--text-ex-meta)/1.4 var(--font-ex-body); }
  .af-ex-section-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-ex-md); min-height: var(--control-ex-height); margin-bottom: var(--space-ex-xs); }
  .af-ex-section-head h2 { font: 600 var(--text-ex-section)/1.2 var(--font-ex-body) !important; letter-spacing: -.015em; }
  .af-exchange .af-ex-text-action { display: inline-flex; align-items: center; gap: var(--space-ex-sm); min-height: var(--control-ex-height); color: var(--color-ex-copper); font: 600 var(--text-ex-meta)/1.4 var(--font-ex-body); }

  /* Conversation typography is the same in the opening and the complete index. */
  .af-ex-row { display: grid; grid-template-columns: 28px minmax(0,1fr) 68px 16px; align-items: center; gap: var(--space-ex-sm); min-height: 72px; padding: var(--space-ex-sm) var(--space-ex-xs); border-bottom: var(--rule-ex-fine) solid var(--color-ex-row-rule); }
  .af-ex-row:last-child { border-bottom: 0; }
  .af-ex-initial { display: grid; place-items: center; width: 28px; height: 28px; background: var(--color-ex-porcelain); border-radius: 50%; color: var(--color-ex-secondary); font: 500 var(--text-ex-meta)/1 var(--font-ex-body); }
  .af-ex-row-copy { min-width: 0; }
  .af-ex-topic { display: inline; color: var(--color-ex-ink); font: 500 var(--text-ex-topic)/1.4 var(--font-ex-body) !important; overflow-wrap: anywhere; }
  .af-ex-byline { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: var(--space-ex-xs); margin-top: var(--space-ex-2xs); color: var(--color-ex-secondary); font: 400 var(--text-ex-meta)/1.35 var(--font-ex-body); }
  .af-ex-byline > a { color: var(--color-ex-secondary); }
  .af-ex-replies { display: flex; flex-direction: column; align-items: end; color: var(--color-ex-secondary); font: 400 var(--text-ex-meta)/1.25 var(--font-ex-body); font-variant-numeric: tabular-nums; }
  .af-ex-replies strong { color: var(--color-ex-ink); font-weight: 500; }
  .af-ex-row-arrow { color: var(--color-ex-secondary); font-size: var(--text-ex-body); }
  .af-ex-rows--recent .af-ex-row { min-height: 80px; }
  .af-ex-rows--recent .af-ex-row:first-child .af-ex-topic { font-weight: 600 !important; }
  .af-ex-row:focus-within { background: var(--color-ex-hover); }
  .af-ex-row:focus-within .af-ex-topic { color: var(--color-ex-copper); text-decoration: underline; text-underline-offset: .2em; }

  .af-ex-index { padding: var(--space-ex-lg); margin-block: var(--space-ex-xl) var(--space-ex-2xl); background: var(--color-ex-porcelain); }
  .af-ex-index-note { color: var(--color-ex-secondary); font-size: var(--text-ex-meta); }
  .af-ex-contents { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: var(--space-ex-xl); }
  .af-ex-contents a { display: grid; grid-template-columns: 24px minmax(0,1fr) 12px; align-items: center; gap: var(--space-ex-sm); min-height: 52px; padding-block: var(--space-ex-xs); font: 500 var(--text-ex-city)/1.4 var(--font-ex-body); }
  .af-ex-contents-number { color: var(--color-ex-copper); font: 500 var(--text-ex-meta)/1 var(--font-ex-body); font-variant-numeric: tabular-nums; }
  .af-ex-contents-arrow { color: var(--color-ex-secondary); }
  .af-ex-chapter + .af-ex-chapter { margin-top: var(--space-ex-2xl); }
  .af-ex-chapter-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-ex-lg); padding-top: var(--space-ex-md); padding-bottom: var(--space-ex-lg); }
  .af-ex-chapter-head .af-ex-image figcaption { position: absolute; top: 100%; right: 0; }
  .af-ex-chapter-copy { min-width: 0; }
  .af-ex-ordinal { display: block; margin-bottom: var(--space-ex-xs); color: var(--color-ex-copper); font: 600 var(--text-ex-meta)/1 var(--font-ex-body); font-variant-numeric: tabular-nums; }
  .af-ex-chapter h2 { font-size: var(--text-ex-chapter); line-height: 1.1; text-wrap: balance; }
  .af-ex-chapter-copy > p { margin-top: var(--space-ex-xs); font-size: var(--text-ex-city); }
  .af-ex-chapter-body { padding-left: var(--space-ex-md); }
  .af-ex-forum + .af-ex-forum { margin-top: var(--space-ex-lg); }
  .af-ex-forum .af-ex-forum { margin-top: var(--space-ex-lg); margin-left: var(--space-ex-md); }
  .af-ex-forum-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-ex-md); padding: var(--space-ex-xs) 0; }
  .af-ex-forum-head :is(h3,h4,h5,h6), .af-ex-forum-head :is(h3,h4,h5,h6) a { font: 600 var(--text-ex-subforum)/1.3 var(--font-ex-body) !important; }
  .af-ex-forum-count { flex-shrink: 0; color: var(--color-ex-secondary); font: 400 var(--text-ex-meta)/1.4 var(--font-ex-body); font-variant-numeric: tabular-nums; }
  .af-ex-forum .af-ex-rows { margin-left: var(--space-ex-xs); }
  .af-ex-empty { padding: var(--space-ex-sm) var(--space-ex-xs); }
  .af-ex-empty a { color: var(--color-ex-copper); text-decoration: underline; text-underline-offset: .2em; }
  .af-ex-chapter-end { display: flex; justify-content: space-between; gap: var(--space-ex-md); margin-top: var(--space-ex-lg); padding-left: var(--space-ex-md); }
  .af-ex-chapter-end a, .af-ex-back { display: inline-flex; align-items: center; gap: var(--space-ex-xs); min-height: var(--control-ex-height); font: 500 var(--text-ex-meta)/1.4 var(--font-ex-body); color: var(--color-ex-copper); }

  .af-ex-directory { min-width: 0; padding-left: var(--space-ex-lg); border-left: var(--rule-ex-fine) solid var(--color-ex-row-rule); }
  .af-ex-directory-intro .af-ex-kicker { margin-bottom: var(--space-ex-xs); color: var(--color-ex-copper); font: 600 var(--text-ex-meta)/1.4 var(--font-ex-body); }
  .af-ex-directory-intro h2 { font-size: var(--text-ex-directory); line-height: 1.05; }
  .af-ex-directory-intro > p:last-child { margin-top: var(--space-ex-sm); font-size: var(--text-ex-city); }
  .af-ex-country-jumps { display: flex; gap: var(--space-ex-lg); padding-block: var(--space-ex-xs); }
  .af-ex-country-jumps a { display: inline-flex; align-items: center; gap: var(--space-ex-xs); min-height: var(--control-ex-height); font-size: var(--text-ex-meta); color: var(--color-ex-copper); }
  .af-ex-city-feedback { display: flex; align-items: start; justify-content: space-between; gap: var(--space-ex-xs); padding-top: var(--space-ex-xs); }
  .af-ex-city-feedback p { font-size: var(--text-ex-meta); }
  .af-ex-reset { flex-shrink: 0; min-height: var(--control-ex-height); border: 0; padding: 0 var(--space-ex-2xs); background: var(--color-ex-clear); color: var(--color-ex-copper); text-decoration: underline; font: 500 var(--text-ex-meta)/1.4 var(--font-ex-body); }
  .af-ex-business { margin: 0 0 var(--space-ex-lg); padding: var(--space-ex-md); background: var(--color-ex-porcelain); border-left: var(--rule-ex-focus) solid var(--color-ex-copper); }
  .af-ex-business h3 { font: 600 var(--text-ex-body)/1.3 var(--font-ex-body) !important; }
  .af-ex-business p { margin-top: var(--space-ex-xs); font-size: var(--text-ex-meta); }
  .af-ex-business .af-ex-text-action { margin-top: var(--space-ex-2xs); }
  .af-ex-country + .af-ex-country { margin-top: var(--space-ex-xl); padding-top: var(--space-ex-lg); border-top: var(--rule-ex-fine) solid var(--color-ex-rule); }
  .af-ex-country h3 { margin-bottom: var(--space-ex-xs); }
  .af-ex-country h3, .af-ex-country h3 a { font: 600 var(--text-ex-subforum)/1.3 var(--font-ex-body) !important; }
  .af-ex-country h3 > a { display: flex; align-items: center; justify-content: space-between; min-height: var(--control-ex-height); }
  .af-ex-country h3 > a span { color: var(--color-ex-copper); font-size: var(--text-ex-body); }
  .af-ex-state + .af-ex-state { margin-top: var(--space-ex-md); }
  .af-ex-state h4, .af-ex-state h4 a { font: 600 var(--text-ex-meta)/1.4 var(--font-ex-body) !important; }
  .af-ex-state h4 a { display: flex; align-items: center; min-height: var(--control-ex-height); }
  .af-ex-state li > a { display: flex; justify-content: space-between; align-items: center; gap: var(--space-ex-sm); min-height: var(--control-ex-height); padding: var(--space-ex-xs); font: 400 var(--text-ex-city)/1.35 var(--font-ex-body); }
  .af-ex-state li small { display: block; color: var(--color-ex-secondary); font-size: var(--text-ex-caption); line-height: 1.4; margin-top: var(--space-ex-2xs); }
  .af-ex-city-arrow { color: var(--color-ex-secondary); }
  .af-ex-back { margin-top: var(--space-ex-lg); }
  .af-ex-return { position: sticky; top: var(--space-ex-xl); display: grid; grid-template-columns: minmax(0,1fr); margin-top: var(--space-ex-xl); padding-top: var(--space-ex-sm); border-top: var(--rule-ex-fine) solid var(--color-ex-rule); }
  .af-ex-return a { display: flex; align-items: center; justify-content: space-between; min-height: var(--control-ex-height); color: var(--color-ex-secondary); font-size: var(--text-ex-meta); }


}

@media (hover: hover) {
  body.af-exchange-design.af-exchange-home #wpforo.af-publication #wpforo-wrap {
    .af-exchange a:hover { color: var(--color-ex-copper); text-decoration: underline; text-underline-offset: .2em; }
    .af-ex-row:hover, .af-ex-state li a:hover { background: var(--color-ex-hover); }
    .af-ex-row:hover .af-ex-topic { color: var(--color-ex-copper); text-decoration: underline; text-underline-offset: .2em; }
    .af-exchange .af-ex-action:hover, .af-ex-search-field button:hover { background: var(--color-ex-copper-pressed); color: var(--color-ex-paper); text-decoration: none; }
  }
}
@media (max-width: 75rem) and (min-width: 68rem) {
  body.af-exchange-design.af-exchange-home #wpforo.af-publication #wpforo-wrap {
    .af-ex-intro { grid-template-columns: minmax(0,1fr); }
    .af-ex-image--lead { display: none; }
  }
}
@media (max-width: 67.99rem) {
  body.af-exchange-home { --layout-ex-anchor: var(--space-ex-md); }
  body.af-exchange-design.af-exchange-home #wpforo.af-publication #wpforo-wrap {
    .af-ex-layout { grid-template-columns: minmax(0,1fr); }
    .af-ex-topic, .af-ex-chapter h2 a { display: flex; align-items: center; min-height: var(--control-ex-height); }
    .af-exchange { padding: 0 var(--space-ex-lg) var(--space-ex-2xl); }
    .af-ex-shortcuts { display: flex; align-items: center; justify-content: space-between; gap: var(--space-ex-xs); padding-block: var(--space-ex-xs); }
    .af-ex-shortcuts a { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-ex-xs); min-height: var(--control-ex-height); color: var(--color-ex-copper); font: 600 var(--text-ex-meta)/1.4 var(--font-ex-body); }
    .af-ex-directory { border: 0; padding: 0; margin-top: var(--space-ex-3xl); }
    .af-ex-return { display: none; }
    .af-ex-register { max-width: 40rem; }
    .af-ex-country-jumps { justify-content: start; }
  }
}
@media (max-width: 37.49rem) {
  body.af-exchange-design.af-exchange-home #wpforo.af-publication #wpforo-wrap {
    .af-exchange { padding-inline: var(--space-ex-md); }
    .af-ex-intro { grid-template-columns: minmax(0,1fr); }
    .af-ex-intro h1 { max-width: 21ch; font-size: var(--text-ex-intro-mobile); line-height: 1.08; }
    .af-ex-image--lead { display: none; }
    .af-ex-intro-bottom { gap: var(--space-ex-xs); padding-block: var(--space-ex-md); }
    .af-ex-intro-bottom .af-ex-scale { width: 100%; }
    .af-ex-action { width: 100%; }
    .af-ex-section-head { flex-wrap: wrap; gap: var(--space-ex-2xs) var(--space-ex-sm); }
    .af-ex-section-head h2 { font-size: var(--text-ex-subforum) !important; }
    .af-ex-section-head .af-ex-text-action { font-size: var(--text-ex-meta); }
    .af-ex-row { grid-template-columns: 24px minmax(0,1fr) 48px; gap: 0 var(--space-ex-xs); padding: var(--space-ex-sm) 0; }
    .af-ex-initial { grid-row: 1; width: 24px; height: 24px; align-self: start; margin-top: var(--space-ex-xs); }
    .af-ex-row-copy { display: contents; }
    .af-ex-topic { grid-column: 2 / -1; grid-row: 1; display: flex; align-items: center; min-height: var(--control-ex-height); }
    .af-ex-byline { grid-column: 2; grid-row: 2; column-gap: var(--space-ex-xs); margin-top: 0; font-size: var(--text-ex-meta); }
    .af-ex-byline a { display: inline-flex; align-items: center; min-height: 24px; }
    .af-ex-byline .af-ex-row-forum { flex-basis: 100%; }
    .af-ex-byline:has(.af-ex-row-forum) .af-ex-byline-dot { display: none; }
    .af-ex-replies { grid-column: 3; grid-row: 2; align-self: start; flex-direction: column; align-items: end; padding-top: var(--space-ex-2xs); }
    .af-ex-row-arrow { display: none; }
    .af-ex-index { padding: var(--space-ex-md); margin-top: var(--space-ex-lg); margin-bottom: var(--space-ex-xl); }
    .af-ex-index-note { font-size: var(--text-ex-meta); }
    .af-ex-contents { grid-template-columns: minmax(0,1fr); }
    .af-ex-contents a { min-height: 56px; }
    .af-ex-chapter-head { flex-wrap: wrap; align-items: start; gap: var(--space-ex-md); }
    .af-ex-chapter h2 { font-size: 1.75rem; line-height: 1.12; }
    .af-ex-chapter-head .af-ex-image { width: 112px; }
    .af-ex-chapter-head:has(.af-ex-image) .af-ex-chapter-copy { flex: 1 1 15rem; }
    .af-ex-chapter-head .af-ex-image figcaption { text-align: left; }
    .af-ex-chapter-body, .af-ex-chapter-end { padding-left: 0; }
    .af-ex-forum .af-ex-rows { margin-left: 0; }
    .af-ex-forum-head { flex-wrap: wrap; align-items: start; gap: 0 var(--space-ex-xs); }
    .af-ex-forum-head :is(h3,h4,h5,h6) a { display: inline-flex; align-items: center; min-height: var(--control-ex-height); }
    .af-ex-forum-count { padding-bottom: var(--space-ex-xs); }
    .af-ex-chapter + .af-ex-chapter { margin-top: var(--space-ex-xl); }
    .af-ex-chapter-end { flex-wrap: wrap; gap: 0 var(--space-ex-md); }
    .af-ex-directory-intro h2 { font-size: var(--text-ex-directory); }
    .af-ex-directory-intro > p:last-child { max-width: 36ch; }
    .af-ex-business { margin-top: var(--space-ex-xs); padding: var(--space-ex-lg); }
  }
}
@media (prefers-reduced-motion: reduce) {
  body.af-exchange-design.af-exchange-home #wpforo.af-publication #wpforo-wrap .af-exchange * { scroll-behavior: auto; animation: none; transition: none; }
}
