/* D: Bus. Reset base heading presentation, then apply the sentence-case type scale. */
body { font: 1.0625rem/1.6 var(--font-body); text-align: left; }
h1, h2, h3 { all: unset; display: block; font-family: var(--font-display); color: var(--green-900); overflow-wrap: break-word; }
h1 { font-size: clamp(2.6rem, 6vw, 5rem); line-height: 1.12; font-weight: 300; } /* 1.02 let the p descender in "power" touch the next line */
h2 { font-size: clamp(2rem, 4vw, 3.25rem); line-height: 1.08; font-weight: 300; }
h3 { font-size: 1.375rem; line-height: 1.3; font-weight: 400; }
p, .section-body > p { max-width: 62ch; }
.hero-copy::before, .section-head::before { content: none; }
.hero-copy p, .clean .section-body > p, .cta .section-body p { font-size: 1.0625rem; }
.text-link, .button, .nav-links a, .field label, .form-note, figcaption, .footer-links a, .footer-legal { font-size: .9375rem; }
a, .industry-link { text-decoration: underline; }
:focus-visible { outline: 2px solid var(--green-700); outline-offset: 3px; }
.button, .nav-links .nav-contact { border: 0; border-radius: 2px; background: var(--green-700); color: var(--white); text-decoration: none; }
.button:hover, .nav-links .nav-contact:hover { background: var(--green-800); }
.nav-links a { text-decoration: underline; }
.nav-toggle { border-radius: 2px; }
main { display: grid; grid-template-columns: minmax(0, 1fr); }
main > .hero { grid-area: 1 / 1; }
.page-sections { grid-area: 2 / 1; min-width: 0; }
.hero, .cta, .flow-section { background: var(--green-900); color: var(--green-100); }
.hero h1, .cta h2, .flow-section h2 { color: var(--white); }
.hero-copy p, .cta .section-body p, .flow-section figcaption { color: var(--green-100); }
.hero .button, .cta .button, .flow-section .button { background: var(--gold-400); color: var(--green-900); }
.hero .button:hover, .cta .button:hover, .flow-section .button:hover { opacity: .9; }
.hero .text-link, .flow-section a { color: var(--white); }
.hero :focus-visible, .cta :focus-visible, .flow-section :focus-visible { outline-color: var(--gold-400); }
.hero { min-height: 40vh; display: flex; align-items: center; padding-block: 64px; }
.hero-grid { grid-template-columns: minmax(0, 1fr); gap: 48px; }
.hero-copy { max-width: 62ch; }
.home-hero { min-height: 80vh; }
.hero-schematic { width: 100%; aspect-ratio: 16 / 9; }
.hero-schematic .schematic { width: 100%; height: 100%; }
.hero-legend { margin-top: 16px; color: var(--green-100); font-size: .9375rem; }
.section { position: relative; background: var(--white); }
.how, .clean, .prose:nth-child(even) { background: var(--green-050); }
.buildout.prose { background: var(--white); } /* home: avoids two tinted sections in a row ahead of .clean */
.stack { background: var(--white); }
.stack .section-body > p + p { margin-top: 0; }
.contact-aside h2 { margin-bottom: 20px; } /* round 2 post-review fix 2026-09-08: heading sat flush on its list in the built page */
.section-grid { gap: 32px; }
.section-head { max-width: 62ch; }
.section-body > p, .text-item p { color: var(--ink-600); }
.text-columns, .text-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
.text-item { min-width: 0; }
.text-item h3 { margin-bottom: 1rem; }
.problem .text-columns { border-top: 1px solid var(--line); padding-top: 32px; }
/* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
.how .section-body { display: grid; gap: 32px; }
*/
.how .section-body, .stack .section-body { display: grid; gap: 32px; }
.how .section-body > .media { margin: 0; }
/* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
.how .text-grid { gap: 0; }
*/
.how .text-grid, .stack .text-grid { gap: 0; }
/* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
.how .text-item { display: grid; gap: 16px; padding-block: 28px; border-top: 1px solid var(--line); }
*/
.how .text-item, .stack .text-item { display: grid; gap: 16px; padding-block: 28px; border-top: 1px solid var(--line); }
/* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
.how .text-item h3 { margin: 0; }
*/
.how .text-item h3, .stack .text-item h3 { margin: 0; }
.section-body > .integration { margin: 0; padding: 0 0 0 1rem; border-top: 0; border-left: 2px solid var(--gold-400); }
.visual-grid { grid-template-columns: minmax(0, 1fr); gap: 40px; }
.clean .section-grid { grid-template-columns: minmax(0, 1fr); }
.clean .section-body { display: block; }
.clean .text-link { margin-top: 24px; }
.industries .text-columns { border-block: 1px solid var(--line); padding-block: 32px; }
.industry-link { display: block; }
.industry-link h3 { color: var(--green-700); }
.cta.section, .flow-section.section { background: var(--green-900); }
.cta .section-body p { color: var(--green-100); }
/* Keep media slots quiet. The base mask still resolves through the live token. */
.media { background: var(--green-100); }
.media:has(img[src$="/assets/img/placeholder.svg"])::after { background: var(--green-700); opacity: .16; }
.flow-figure { margin: 0; }
.schematic { width: 100%; height: auto; overflow: visible; }
.schematic .traces, .schematic .source-nodes { fill: none; stroke: var(--gold-400); stroke-width: 1.5; stroke-linecap: round; }
.schematic text { fill: var(--green-100); font-family: var(--font-display); font-size: 22px; font-weight: 400; }
.schematic .draw { stroke-dasharray: 1000; stroke-dashoffset: 1000; animation: draw 1.6s ease-out forwards; }
.schematic .t1 { animation-delay: 0s; }
.schematic .t2 { animation-delay: .15s; }
.schematic .t3 { animation-delay: .3s; }
.schematic .t4 { animation-delay: .45s; }
.schematic .t5 { animation-delay: .6s; }
.schematic .bus { stroke-width: 3; animation-delay: .7s; }
.schematic .sec-ground { animation-delay: .75s; }
.schematic .sec-tie { animation-delay: .85s; }
.schematic .sec-xfmr-a { animation-delay: .95s; }
.schematic .sec-xfmr-b { animation-delay: 1s; }
.schematic .sec-shell { animation-delay: 1.05s; }
.schematic .sec-room-a { animation-delay: 1.2s; }
.schematic .sec-room-b { animation-delay: 1.25s; }
.schematic .sec-floor { animation-delay: 1.3s; }
.schematic .sec-rtu { animation-delay: 1.35s; }
.schematic .sec-bus { animation-delay: 1.4s; }
.schematic .sec-fan { animation-delay: 1.45s; }
.schematic .sec-cab-a { animation-delay: 1.5s; }
.schematic .sec-cab-b { animation-delay: 1.6s; }
.schematic .sec-cab-line { animation-delay: 1.7s; }
.schematic .sec-fibre { animation-delay: 1.75s; }
.schematic .sec-leader { animation-delay: 1.85s; }
.schematic .sec-scope { animation-delay: 1.95s; }
/* orphaned 2026-09-08 by the two-pronged drawing */
.schematic .stubs { animation-delay: 1.1s; }
/* orphaned 2026-09-08 by the two-pronged drawing */
.schematic .hall { animation-delay: 1.3s; }
/* orphaned 2026-09-08 by the two-pronged drawing */
.schematic .racks { stroke: var(--gold-700); opacity: .6; }
/* Reveal the optional dashed trace with a solid animated mask. */
/* orphaned 2026-09-08 by the two-pronged drawing */
.schematic .grid-mask { fill: none; stroke: var(--white); stroke-width: 3; animation-delay: .7s; }
/* orphaned 2026-09-08 by the two-pronged drawing */
.schematic .grid-line { stroke-dasharray: 4 6; }
.schematic .source-nodes circle { opacity: 0; animation: appear .25s ease-out forwards; }
.schematic .n1 { animation-delay: 1.6s; }
.schematic .n2 { animation-delay: 1.75s; }
.schematic .n3 { animation-delay: 1.9s; }
.schematic .n4 { animation-delay: 2.05s; }
.schematic .n5 { animation-delay: 2.2s; }
/* orphaned 2026-09-08 by the two-pronged drawing */
.flow-label { display: none; }
/* orphaned 2026-09-08 by the two-pronged drawing */
.flow-section .flow-label { display: block; }
/* orphaned 2026-09-08 by the two-pronged drawing */
.flow-section .hero-grid-label { display: none; }
.flow-section .flow-caption { font-size: 22px; fill: var(--green-100); }
@keyframes draw { to { stroke-dashoffset: 0; } }
@keyframes appear { to { opacity: 1; } }
.form { max-width: none; }
.form-row { grid-template-columns: minmax(0, 1fr); }
.field input, .field select, .field textarea { border: 1px solid var(--ink-400); border-radius: 2px; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--green-700); }
.site-footer { background: var(--white); color: var(--ink-600); border-top: 1px solid var(--line); }
/* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
.site-footer .logo img { height: 40px; }
*/
.site-footer .logo img { height: 52px; }
.footer-links a { color: var(--green-700); }
.footer-legal { color: var(--ink-600); border-top: 0; }
.site-footer :focus-visible { outline-color: var(--green-700); }
@media (max-width: 1023px) {
  .hero-schematic { aspect-ratio: auto; }
  .hero-schematic .schematic { height: auto; aspect-ratio: 800 / 520; }
  .home-hero .schematic text { display: none; }
}
@media (min-width: 600px) {
  /* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
  .how .text-item { grid-template-columns: minmax(10ch, 14rem) minmax(0, 1fr); gap: 40px; }
  */
  .how .text-item, .stack .text-item { grid-template-columns: minmax(10ch, 14rem) minmax(0, 1fr); gap: 40px; }
  .ai .text-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .hero-legend { display: none; }
  .stack .section-body > p, .stack .section-body > a { grid-column: 1 / 8; }
  .contact .contact-aside { grid-column: 1 / 6; }
  .contact .form { grid-column: 6 / 13; }
  .contact .form { grid-column: 1 / 9; } /* contact simplification 2026-09-09: side column removed, form sits left like Bloom; rule above kept as history */
  main:has(.page-sections)::before { content: ""; grid-area: 2 / 1; position: relative; left: max(var(--pad-x), calc((100% - var(--maxw)) / 2 + var(--pad-x))); width: 2px; background: var(--gold-400); z-index: 2; pointer-events: none; }
  .page-sections .wrap { padding-left: calc(var(--pad-x) + 40px); }
  .page-sections section::before, .page-sections section::after { content: ""; position: absolute; left: max(var(--pad-x), calc((100% - var(--maxw)) / 2 + var(--pad-x))); top: var(--section-y); background: var(--gold-400); z-index: 3; pointer-events: none; }
  .page-sections section::before { width: 24px; height: 2px; }
  .page-sections section::after { width: 6px; height: 6px; border-radius: 50%; margin-left: 24px; margin-top: -2px; }
  .home-hero .hero-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 24px; min-height: calc(80vh - 128px); }
  .home-hero .hero-copy { grid-column: 1 / 6; }
  .hero-schematic { grid-column: 6 / 13; align-self: stretch; aspect-ratio: auto; display: flex; align-items: center; }
  .section-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .section-head { grid-column: 1 / 6; }
  .section-body { grid-column: 1 / -1; }
  .text-columns { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  /* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
  .how .section-body { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  */
  .how .section-body, .stack .section-body { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  @supports (grid-template-columns: subgrid) {
    /* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
    .how .section-body { grid-template-columns: subgrid; }
    */
    .how .section-body, .stack .section-body { grid-template-columns: subgrid; }
  }
  /* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
  .how .section-body > p:first-child { grid-column: 1 / 6; }
  */
  .how .section-body > p:first-child, .stack .section-body > p:first-child { grid-column: 1 / 6; }
  /* Round 2, 2026-09-08: previous rule kept; superseded by §5 below.
  .how .section-body > .media, .how .text-grid, .how .integration { grid-column: 1 / -1; }
  */
  .how .section-body > .media, .how .text-grid, .how .integration, .stack .text-grid { grid-column: 1 / -1; }
  .how .media { aspect-ratio: 21 / 9; }
  .ai .visual-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: center; }
  .ai .media { aspect-ratio: 3 / 2; }
  .ai .text-grid { padding-left: 16px; }
  .clean .section-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 24px; }
  .clean .section-head, .clean .section-body > p, .clean .section-body > a { grid-column: 1 / 7; }
  .clean .section-body { display: contents; }
  .clean .section-body > .media { grid-column: 7 / 13; grid-row: 1 / 4; margin: 0; align-self: center; aspect-ratio: 16 / 9; }
  .prose .section-body { grid-column: 7 / 13; max-width: none; }
  .cta .section-head { grid-column: 1 / 7; }
  .cta .section-body { grid-column: 7 / 13; }
}
@media (prefers-reduced-motion: reduce) {
  .schematic .draw { animation: none; stroke-dashoffset: 0; }
  .schematic .source-nodes circle { animation: none; opacity: 1; }
}

/* Feedback round 1 (2026-09-07): partner logos on Company; solar still crops from the left so the turbines leave first. */
.partner { display: grid; gap: 12px; margin-bottom: 32px; }
.partner-logo { display: block; max-height: 56px; width: auto; height: auto; }
.media img[src$="/assets/img/solar-field.jpg"] { object-position: left center; }
.media img[src$="/assets/img/solar-wind-sunrise.jpg"] { object-position: right center; }

/* Hempcrete, 2026-09-22: source notes, owner photo and dark wall-section copy. */
.source { font-size: 14px; }
.photo { aspect-ratio: 4 / 3; }
.flow-section .section-body > p { color: var(--green-100); }
.flow-figure + p { margin-top: 32px; }
