/* ---- styles.css ---- */
:root { --forest:var(--stone-800); --forest-deep:var(--forest-950); --moss:var(--stone-500); --olive:var(--stone-400); --lime-wash:var(--stone-200); --paper:var(--stone-100); --paper-bright:var(--stone-0); --ink:var(--forest-900); --muted:var(--stone-500); --line:rgba(24,49,36,.19); --max:1240px; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased; }
html { scroll-behavior:smooth; }
[hidden] { display:none!important; }
::selection { background:var(--lime-wash); color:var(--forest-deep); }
a { color:inherit; text-decoration:none; }
button { font:inherit; }
:focus-visible { outline:2px solid var(--moss); outline-offset:5px; }
main:focus,.route-panel:focus { outline:none; }
h1,h2,h3,p,figure { margin:0; }
h1,h2,h3 { font-weight:500; }
h1,h2 { letter-spacing:-.055em; line-height:1.07; }
h2 { font-size:clamp(2rem,3.5vw,3.1rem); }
em { font-family:Georgia,"Times New Roman",serif; font-weight:400; letter-spacing:-.045em; }
.eyebrow { font-size:.65rem; line-height:1.5; text-transform:uppercase; letter-spacing:.16em; font-weight:650; color:var(--moss); margin-bottom:1rem; }
.skip-link { position:fixed; left:1rem; top:-5rem; z-index:100; background:var(--paper-bright); padding:.8rem 1rem; }
.skip-link:focus { top:1rem; }
.site-header { max-width:var(--max); margin:auto; height:96px; padding:0 2rem; display:flex; align-items:center; justify-content:space-between; gap:2rem; position:relative; z-index:20; }
.brand { display:inline-flex; gap:.7rem; align-items:center; font-size:1.5rem; font-weight:600; letter-spacing:-.06em; line-height:1.1; white-space:nowrap; }
.brand-caption { display:block; font-size:.55rem; font-weight:400; letter-spacing:.06em; margin-top:.4rem; }
.brand-mark { width:2.6rem; height:2.6rem; position:relative; display:inline-block; border-radius:50%; background:var(--forest); overflow:hidden; flex-shrink:0; }
.brand-mark i { position:absolute; right:.43rem; top:.42rem; width:.7rem; height:.7rem; border-radius:50%; background:var(--lime-wash); }
.brand-mark b { position:absolute; left:.4rem; right:.4rem; bottom:.47rem; height:.73rem; transform:skew(-18deg); background:var(--olive); }
nav { display:flex; align-items:center; gap:1.7rem; }
nav a { font-size:.8rem; font-weight:500; }
nav a:hover,nav a[aria-current] { text-decoration:underline; text-underline-offset:6px; }
.nav-contact { border:1px solid var(--line); padding:.65rem 1rem; border-radius:4px; }
.nav-contact span { margin-left:1rem; }
.menu-toggle { display:none; background:transparent; color:var(--ink); border:1px solid var(--line); padding:.5rem .8rem; border-radius:4px; }
.hero { max-width:1440px; margin:0 auto; padding:0 1.2rem; display:grid; grid-template-columns:1fr 1.12fr; gap:1.5rem; }
.hero-copy { padding:3rem 1.5rem 2.2rem max(1rem,calc((100vw - 1240px)/2)); display:flex; flex-direction:column; justify-content:center; }
.hero .eyebrow { display:flex; align-items:center; gap:.55rem; font-size:.61rem; }
.status-dot { display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--moss); flex-shrink:0; }
h1 { font-size:clamp(3.3rem,5.5vw,5.2rem); }
h1 em { color:var(--moss); }
.hero-note { max-width:26rem; margin:1.5rem 0; color:var(--muted); font-size:.99rem; }
.hero-actions { display:flex; align-items:center; flex-wrap:wrap; gap:1.3rem; }
.button { display:inline-flex; align-items:center; justify-content:space-between; gap:2rem; min-height:46px; padding:.8rem 1.1rem; font-size:.77rem; font-weight:550; border-radius:4px; transition:background .2s,transform .2s; }
.button span { font-size:1.1rem; font-weight:400; }
.button-dark { color:var(--paper-bright); background:var(--forest); }
.button-primary { background:var(--lime-wash); color:var(--forest-deep); }
.button:hover { transform:translateY(-2px); }
.button-dark:hover { background:var(--stone-700); }
.button-primary:hover { background:var(--stone-150); }
.text-link { font-size:.8rem; display:inline-flex; align-items:center; gap:1.2rem; padding:.6rem 0; border-bottom:1px solid var(--line); }
.text-link:hover { border-color:var(--ink); }
.hero-footnote { display:flex; gap:1.4rem; border-top:1px solid var(--line); margin-top:2.5rem; padding-top:1rem; max-width:27rem; font-size:.7rem; }
.hero-footnote > span { text-transform:uppercase; letter-spacing:.1em; font-size:.6rem; color:var(--moss); padding-top:.15rem; }
.hero-image { position:relative; min-height:520px; overflow:hidden; border-radius:6px; }
.hero-image img { width:100%; height:100%; position:absolute; inset:0; object-fit:cover; object-position:68% center; }
.hero-image figcaption { position:absolute; bottom:1rem; left:1rem; right:1rem; background:rgba(236,239,232,.94); display:flex; justify-content:space-between; padding:.75rem 1rem; border-radius:3px; font-size:.56rem; letter-spacing:.12em; align-items:center; }
.hero-image figcaption > span:last-child { font-size:1.2rem; }
.section-wrap,.intro { max-width:var(--max); margin:auto; padding:3.3rem 2rem; }
.intro { display:grid; grid-template-columns:1fr 1.1fr; gap:.5rem 4rem; padding-top:2.5rem; padding-bottom:2.5rem; align-items:center; }
.intro .eyebrow { grid-column:1; margin:0; }
.intro-statement { grid-column:1; font-size:1.35rem; letter-spacing:-.03em; line-height:1.4; }
.intro-statement span { color:var(--moss); }
.intro-description { grid-column:2; grid-row:1/3; font-size:.91rem; color:var(--muted); }
.businesses { border-top:1px solid var(--line); }
.section-heading { display:grid; grid-template-columns:1fr 1fr; gap:4rem; align-items:end; margin-bottom:1.8rem; }
.section-heading > p { max-width:26rem; color:var(--muted); font-size:.92rem; }
.business-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.business { padding:1.7rem 2rem 0; border-radius:6px; }
.solar-business { background:var(--stone-200); }
.research-business { background:var(--forest); color:var(--paper-bright); }
.business-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; }
.business-label { font-size:.62rem; text-transform:uppercase; letter-spacing:.13em; opacity:.85; }
.business-icon { width:48px; height:48px; stroke:currentColor; stroke-width:1.2; }
.business h3 { font-size:1.9rem; letter-spacing:-.055em; margin-bottom:.65rem; }
.business > p { max-width:31rem; font-size:.87rem; opacity:.9; }
.business-tags { display:flex; gap:.45rem; flex-wrap:wrap; margin:1.25rem 0 1.5rem; }
.business-tags span { border:1px solid currentColor; border-radius:30px; padding:.2rem .65rem; font-size:.59rem; opacity:.85; }
.business-link { display:flex; justify-content:space-between; align-items:center; padding:.9rem 0; border-top:1px solid rgba(24,49,36,.25); font-size:.8rem; }
.research-business .business-link { border-color:rgba(252,253,250,.25); }
.business-link span { font-size:1.4rem; transition:transform .2s; }
.business-link:hover span { transform:translate(3px,-3px); }
.solar-feature { display:grid; grid-template-columns:.9fr 1.1fr; gap:5rem; padding-top:1.5rem; align-items:center; }
.solar-lead > p:not(.eyebrow) { color:var(--muted); font-size:.9rem; max-width:24rem; margin:1.3rem 0 .8rem; }
.service-lines > a { display:grid; grid-template-columns:32px 1fr 20px; gap:1.2rem; align-items:center; border-bottom:1px solid var(--line); padding:1.15rem 0; }
.service-lines > a:first-child { border-top:1px solid var(--line); }
.service-lines h3 { font-size:1rem; margin-bottom:.2rem; }
.service-lines p { color:var(--muted); font-size:.8rem; }
.service-symbol { width:30px; height:30px; stroke:var(--moss); stroke-width:1.1; }
.service-lines a > span:last-child { color:var(--moss); }
.service-lines a:hover h3 { text-decoration:underline; text-underline-offset:4px; }
.research-feature { margin:0 auto; max-width:1440px; display:grid; grid-template-columns:.85fr 1.15fr; background:var(--stone-150); }
.research-art { position:relative; display:grid; place-items:center; min-height:400px; overflow:hidden; background:var(--stone-200); }
.orbit { position:absolute; width:65%; aspect-ratio:1; border:1px solid rgba(71,77,63,.4); border-radius:50%; }
.orbit-one { transform:translate(-15%,-8%); }
.orbit-two { transform:translate(15%,-8%); }
.orbit-three { transform:translateY(17%); }
.orbit-center { font-family:Georgia,serif; font-size:4rem; font-style:italic; color:var(--forest); }
.art-caption { position:absolute; bottom:1.5rem; font-size:.6rem; letter-spacing:.25em; }
.research-copy { padding:3rem clamp(2rem,5vw,5rem); align-self:center; }
.research-copy h2 { font-size:clamp(2rem,3.4vw,3rem); }
.research-copy > p:not(.eyebrow) { color:var(--muted); font-size:.88rem; margin:1.3rem 0; max-width:32rem; }
.research-stage { display:flex; gap:.6rem; align-items:center; font-size:.65rem; margin-bottom:1.5rem; }
.research-copy .button { background:var(--forest); color:var(--paper-bright); }
.directory-heading { margin-bottom:1.7rem; }
.directory-heading .eyebrow { margin-bottom:.5rem; }
.directory-heading h2 { font-size:2.3rem; }
.directory-groups { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2.5rem; }
.directory-group { display:block; }
.directory-group h3 { color:var(--moss); font-size:.61rem; text-transform:uppercase; letter-spacing:.16em; padding-bottom:.8rem; }
.directory-link { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.95rem 0; border-top:1px solid var(--line); transition:color .2s; }
.directory-link strong { font-size:.94rem; font-weight:500; }
.directory-link small { display:block; color:var(--muted); font-size:.69rem; margin-top:.15rem; }
.directory-link .link-arrow { width:27px; height:27px; border-radius:50%; display:grid; place-items:center; color:var(--moss); border:1px solid var(--line); flex-shrink:0; transition:background .2s,color .2s; }
.directory-link:hover .link-arrow { color:var(--paper); background:var(--forest); }
footer { background:var(--forest-deep); color:var(--paper); padding:2.5rem max(2rem,calc((100vw - 1176px)/2)); }
.footer-top { display:flex; justify-content:space-between; align-items:center; gap:2rem; padding-bottom:2rem; }
footer .eyebrow { color:var(--olive); }
.footer-top h2 { font-size:clamp(2rem,3.5vw,3.2rem); }
.footer-top h2 em { color:var(--lime-wash); }
.footer-bottom { display:flex; align-items:center; justify-content:space-between; gap:2rem; padding-top:1.5rem; border-top:1px solid rgba(252,253,250,.2); }
.footer-bottom .brand-mark { border:1px solid rgba(252,253,250,.2); }
.footer-bottom > p { font-size:.64rem; color:var(--stone-300); }
.footer-bottom nav { gap:1.2rem; }
.footer-bottom nav a { font-size:.7rem; }
.footer-note { font-size:.6rem; color:var(--stone-300); margin-top:1.3rem; }
.content-preview:empty { display:none; }
.detail-view .site-header { border-bottom:1px solid var(--line); }
.route-panel { max-width:var(--max); margin:auto; padding:2rem 2rem 3.5rem; }
.breadcrumb { display:inline-flex; color:var(--muted); font-size:.75rem; margin-bottom:1.7rem; }
.route-header { display:grid; grid-template-columns:1.1fr .9fr; gap:3rem; align-items:end; padding:1.7rem 2rem; background:var(--stone-150); border-radius:6px; }
.route-header h1 { font-size:clamp(2rem,3.5vw,3.2rem); }
.route-intro { font-size:.9rem; color:var(--muted); }
.route-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 3rem; margin:1rem 0; }
.route-item { padding:1.6rem 0; border-bottom:1px solid var(--line); }
.route-item h2 { font-size:1.25rem; letter-spacing:-.03em; margin-bottom:.7rem; }
.route-item p,.route-item ul { color:var(--muted); font-size:.9rem; }
.route-item ul { padding-left:1.2rem; margin:.75rem 0 0; }
.route-item li + li { margin-top:.4rem; }
.route-close { display:inline-block; border-bottom:1px solid var(--line); padding:.5rem 0; font-size:.8rem; margin-top:.6rem; }
@media(min-width:1500px) { .hero-copy { padding-left:4rem; } }
@media(max-width:1020px) {
  .site-header { height:80px; }
  .menu-toggle { display:flex; gap:1rem; }
  #main-nav { display:none; position:absolute; top:70px; left:1rem; right:1rem; background:var(--paper-bright); padding:1rem; border:1px solid var(--line); border-radius:5px; box-shadow:0 15px 30px rgba(14,34,24,0.08); }
  #main-nav.open { display:flex; flex-direction:column; align-items:stretch; gap:0; }
  #main-nav a { padding:.85rem; }
  .hero { grid-template-columns:1fr 1fr; gap:.5rem; }
  .hero-copy { padding:2rem 1rem; }
  h1 { font-size:3.5rem; }
  .hero-image { min-height:490px; }
  .hero-actions { gap:.7rem; }
  .hero-footnote { margin-top:1.5rem; }
  .solar-feature { gap:2.5rem; }
  .research-copy { padding:2.5rem 2rem; }
  .directory-groups { gap:1.5rem; }
  .footer-bottom { flex-wrap:wrap; }
  .footer-bottom > p { order:3; flex-basis:100%; }
}
@media(max-width:700px) {
  .site-header { height:76px; padding:0 1.2rem; }
  .brand { font-size:1.3rem; }
  .brand-caption { font-size:.5rem; }
  .hero { grid-template-columns:1fr; padding:0 1rem; gap:1rem; }
  .hero-copy { padding:1.5rem .2rem .5rem; }
  h1 { font-size:clamp(2.9rem,12vw,4.8rem); }
  .hero-note { font-size:.9rem; margin:1rem 0 1.25rem; }
  .hero-footnote { display:none; }
  .hero-image { min-height:280px; }
  .hero-image img { object-position:65% 35%; }
  .hero-image figcaption { bottom:.7rem; left:.7rem; right:.7rem; padding:.4rem .7rem; font-size:.49rem; }
  .hero-actions { gap:1.2rem; }
  .button { font-size:.72rem; gap:1.2rem; }
  .section-wrap,.intro { padding:2rem 1.2rem; }
  .intro { grid-template-columns:1fr; gap:.7rem; }
  .intro-description { grid-column:1; grid-row:auto; font-size:.85rem; }
  .intro-statement { font-size:1.25rem; }
  h2 { font-size:2.15rem; }
  .section-heading { grid-template-columns:1fr; gap:1rem; }
  .section-heading > p { font-size:.85rem; }
  .business-grid { grid-template-columns:1fr; }
  .business { padding:1.3rem 1.4rem 0; }
  .business h3 { font-size:1.65rem; }
  .business-tags { margin:1rem 0; }
  .solar-feature { grid-template-columns:1fr; gap:1.5rem; padding-top:.5rem; }
  .solar-lead > p:not(.eyebrow) { max-width:none; }
  .research-feature { grid-template-columns:1fr; }
  .research-art { min-height:230px; }
  .orbit { width:180px; }
  .orbit-center { font-size:3rem; }
  .art-caption { bottom:1rem; font-size:.5rem; }
  .research-copy { padding:2rem 1.2rem; }
  .research-copy h2 { font-size:2.15rem; }
  .directory-heading h2 { font-size:2rem; }
  .directory-groups { grid-template-columns:1fr; gap:1.6rem; }
  .directory-link { padding:.8rem 0; }
  .directory-link small { font-size:.75rem; }
  footer { padding:2rem 1.2rem; }
  .footer-top { flex-direction:column; align-items:flex-start; gap:1.3rem; }
  .footer-bottom { gap:1.2rem; }
  .footer-bottom nav { gap:1rem; }
  .route-panel { padding:1.3rem 1.2rem 2rem; }
  .route-header { grid-template-columns:1fr; padding:1.4rem; gap:1rem; }
  .route-grid { grid-template-columns:1fr; }
}
.hero { position:relative; isolation:isolate; display:block; max-width:none; padding:0; min-height:660px; color:var(--paper-bright); background:var(--forest); }
.hero-image { position:absolute; inset:0; z-index:-2; min-height:0; border-radius:0; }
.hero-image img { object-position:center 46%; }
.hero::before { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(90deg,rgba(14,34,24,.88) 0%,rgba(14,34,24,.58) 42%,rgba(14,34,24,.02) 76%); }
.hero-copy { max-width:var(--max); margin:auto; padding:3.5rem 2rem; min-height:660px; display:flex; justify-content:center; align-items:flex-start; }
.hero .eyebrow { color:var(--lime-wash); font-size:.75rem; margin-bottom:1.25rem; }
h1 { font-size:clamp(3.8rem,6.6vw,6.2rem); font-weight:750; text-transform:uppercase; line-height:.96; letter-spacing:-.045em; }
.hero h1 em { font-family:inherit; font-style:normal; font-weight:inherit; color:var(--lime-wash); }
.hero-note { color:var(--stone-100); max-width:28rem; margin:1.5rem 0; font-size:1rem; }
.hero .button-dark { background:var(--lime-wash); color:var(--forest-deep); }
.hero .button-dark:hover { background:var(--stone-150); }
.hero .text-link { color:var(--paper-bright); border-color:rgba(214,219,208,0.53); }
.button span,.text-link span,.business-link span,.nav-contact span,.directory-link .link-arrow,.service-lines a > span:last-child { display:none; }
.button { font-size:.875rem; min-height:48px; padding:.85rem 1.2rem; }
.text-link { font-size:.875rem; }
nav a { font-size:.875rem; }
.brand-caption { font-size:.75rem; letter-spacing:0; }
.eyebrow,.business-label,.directory-group h3 { font-size:.75rem; }
h2 { font-weight:550; letter-spacing:-.045em; }
h2 em { font-family:inherit; font-style:normal; font-weight:inherit; color:var(--moss); }
.intro-statement { font-size:1.5rem; }
.intro-description,.section-heading > p,.solar-lead > p:not(.eyebrow),.research-copy > p:not(.eyebrow),.route-intro,.route-item p,.route-item ul { font-size:1rem; }
.business { position:relative; overflow:hidden; background:var(--paper-bright); color:var(--ink); border:1px solid var(--line); padding:1.5rem 2rem 0; }
.business::before { content:""; position:absolute; right:1.3rem; top:.4rem; width:180px; height:100px; background:radial-gradient(circle,var(--olive) 3px,transparent 4px) 0 0 / 15px 15px; mask-image:radial-gradient(ellipse at 50% 100%,transparent 36%,var(--forest-950) 38%,var(--forest-950) 70%,transparent 73%); opacity:.65; pointer-events:none; }
.business-top { min-height:74px; align-items:flex-start; }
.business-icon { width:38px; height:38px; margin:1.5rem 3.2rem 0 0; color:var(--moss); }
.business h3 { font-size:2.1rem; font-weight:650; letter-spacing:-.04em; }
.business > p { font-size:1rem; opacity:1; color:var(--muted); }
.business-label { max-width:50%; }
.business-tags span { font-size:.75rem; }
.business-link { font-size:.875rem; font-weight:600; padding:1.1rem 0; }
.research-business .business-link { border-color:var(--line); }
.business-link:hover { color:var(--moss); text-decoration:underline; text-underline-offset:5px; }
.business-tags { margin-bottom:1.2rem; }
.service-lines > a { grid-template-columns:32px 1fr; }
.service-lines p { font-size:1rem; }
.service-lines h3 { font-size:1.125rem; }
.research-feature { background:var(--forest); color:var(--paper-bright); }
.research-copy h2 em { color:var(--lime-wash); }
.research-copy .eyebrow { color:var(--lime-wash); }
.research-copy > p:not(.eyebrow) { color:var(--stone-200); }
.research-copy .button { background:var(--lime-wash); color:var(--forest-deep); }
.research-stage { font-size:.8rem; color:var(--stone-200); }
.research-stage .status-dot { background:var(--lime-wash); }
.art-caption { font-size:.75rem; color:var(--forest); }
.directory-link strong { font-size:1rem; }
.directory-link small { font-size:.875rem; }
.footer-top h2 em { color:var(--lime-wash); }
.footer-bottom > p,.footer-note { font-size:.75rem; }
.footer-bottom nav a { font-size:.875rem; }
.breadcrumb,.route-close { font-size:.875rem; }
.route-header h1 { text-transform:none; font-weight:600; line-height:1.07; }
@media(max-width:1020px) {
  .hero-copy { padding:3rem 2rem; }
  .business { padding-left:1.5rem; padding-right:1.5rem; }
  .business h3 { font-size:1.8rem; }
}
@media(max-width:700px) {
  .site-header { height:82px; }
  .brand-caption { font-size:.65rem; }
  .hero,.hero-copy { min-height:610px; }
  .hero-copy { padding:2.2rem 1.2rem; justify-content:flex-end; }
  .hero h1 { font-size:clamp(3.1rem,13vw,4.9rem); }
  .hero-image img { object-position:76% top; }
  .hero::before { background:linear-gradient(0deg,rgba(14,34,24,.96),rgba(14,34,24,.62) 48%,rgba(14,34,24,.02) 84%); }
  .hero .eyebrow { font-size:.75rem; max-width:none; }
  .hero-note { font-size:1rem; margin:1.1rem 0; }
  .hero-actions { gap:.8rem 1.2rem; }
  .hero .button,.hero .text-link { font-size:.875rem; }
  .intro-statement { font-size:1.3rem; }
  .business h3 { font-size:1.8rem; }
  .directory-link small { font-size:.875rem; }
  .research-art { min-height:320px; padding-bottom:28px; box-sizing:border-box; }
  .research-copy h2 { font-size:2.15rem; }
  .footer-bottom nav { flex-wrap:wrap; }
}
.directory { padding-top:2.8rem; padding-bottom:2.8rem; }
.directory-heading { display:flex; justify-content:space-between; align-items:end; gap:2rem; margin-bottom:1.8rem; }
.directory-heading h2 { font-size:clamp(2rem,3.2vw,2.8rem); }
.directory-heading > p { font-size:1rem; color:var(--muted); max-width:26rem; }
.directory-groups { display:block; border-top:1px solid var(--line); }
.directory-group { display:grid; grid-template-columns:1fr 3fr; gap:1.5rem; align-items:center; padding:1.35rem 0; border-bottom:1px solid var(--line); }
.directory-group-heading { padding-left:1rem; border-left:3px solid var(--olive); }
.directory-group h3 { font-size:1.2rem; color:var(--ink); text-transform:none; letter-spacing:-.025em; padding:0; margin-bottom:.2rem; }
.directory-group-heading p { font-size:.8rem; color:var(--muted); max-width:22ch; line-height:1.5; }
.directory-group-links { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
.directory-link { display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:.25rem; border:0; border-left:1px solid var(--line); padding:.85rem 1.1rem; min-height:94px; transition:background .18s,color .18s; border-radius:0 4px 4px 0; }
.directory-link strong { font-size:1.05rem; font-weight:550; line-height:1.25; }
.directory-link small { font-size:.875rem; line-height:1.45; max-width:25ch; margin:0; }
.directory-link:hover,.directory-link:focus-visible { background:var(--lime-wash); color:var(--forest-deep); text-decoration:none; }
.directory-link:hover strong,.directory-link:focus-visible strong { text-decoration:underline; text-underline-offset:4px; }
@media(max-width:900px) {
  .directory-heading > p { font-size:.9rem; max-width:20rem; }
  .directory-group { grid-template-columns:1fr; gap:1rem; }
  .directory-group-heading { display:flex; align-items:baseline; gap:1rem; }
  .directory-group-heading p { max-width:none; }
}
@media(max-width:600px) {
  .directory-heading { display:block; margin-bottom:1.4rem; }
  .directory-heading > p { margin-top:.8rem; max-width:none; font-size:1rem; }
  .directory-heading > p br { display:none; }
  .directory-group { padding:1.25rem 0; gap:.65rem; }
  .directory-group-heading { display:block; padding-left:.75rem; }
  .directory-group-heading p { font-size:.8rem; }
  .directory-group-links { grid-template-columns:1fr; }
  .directory-link { border-left:0; border-radius:4px; padding:.75rem; min-height:0; }
  .directory-link + .directory-link { border-top:1px solid rgba(24,49,36,.09); }
  .directory-link small { max-width:none; }
}
.brand { letter-spacing:-.04em; }
.hero,.hero-copy { min-height:620px; }
.hero-copy { padding-top:3rem; padding-bottom:3rem; }
.hero h1 { font-size:clamp(3.6rem,6.2vw,5.8rem); line-height:.99; letter-spacing:-.04em; }
.hero::before { background:linear-gradient(90deg,rgba(14,34,24,.88),rgba(14,34,24,.57) 40%,rgba(14,34,24,.015) 73%); }
.hero-note { line-height:1.65; max-width:27rem; }
.hero-actions { gap:1.5rem; }
.text-link { min-height:44px; }
.business { display:flex; flex-direction:column; }
.business-tags { margin-top:auto; padding-top:1.1rem; }
.business-link { min-height:54px; }
.business h3 { letter-spacing:-.035em; }
.section-heading h2,.solar-lead h2,.research-copy h2 { text-wrap:balance; }
.section-heading > p,.route-intro { text-wrap:pretty; }
.service-lines > a { transition:background .18s; border-radius:4px; }
.service-lines > a:hover { background:rgba(214,219,208,.25); }
.directory-group-heading p { font-size:.875rem; }
.directory-link strong { letter-spacing:-.015em; }
.site-header nav a:focus-visible,.directory-link:focus-visible { outline:2px solid var(--forest); outline-offset:4px; }
.hero a:focus-visible,footer a:focus-visible,.research-copy a:focus-visible { outline-color:var(--lime-wash); }
.footer-bottom nav a { display:inline-flex; align-items:center; min-height:44px; }
@media(max-width:1020px) {
  .menu-toggle { min-height:44px; }
  #main-nav { top:calc(100% - 8px); }
}
@media(max-width:700px) {
  .hero,.hero-copy { min-height:610px; }
  .hero-copy { padding:2rem 1.2rem; }
  .hero h1 { font-size:clamp(2.65rem,12.5vw,4.7rem); line-height:1; }
  .hero::before { background:linear-gradient(0deg,rgba(14,34,24,.96),rgba(14,34,24,.62) 48%,rgba(14,34,24,.02) 84%); }
  .hero-actions { gap:.7rem 1.2rem; }
  .business-label { max-width:48%; }
  .business::before { width:150px; right:.75rem; }
  .business-icon { margin-right:2.5rem; }
  .directory-group-heading p { font-size:.875rem; }
  .brand-caption { font-size:.75rem; }
}
@media(max-width:380px) {
  .site-header { gap:.75rem; }
  .brand-caption { display:none; }
  .menu-toggle { flex-shrink:0; }
}
.intro-statement > span { display:block; }
.intro-statement .intro-first-line { color:var(--ink); }
@media(min-width:701px) {
  .intro { grid-template-columns:1.2fr 1fr; column-gap:clamp(1.5rem,4vw,3rem); }
  .intro-statement { font-size:clamp(1.05rem,2.12vw,1.5rem); }
  .intro-statement > span { white-space:nowrap; }
}
.business-icon { width:48px; height:48px; overflow:visible; }
.tracker-panel { transform-origin:31.5px 50px; animation:solar-track 8s ease-in-out infinite alternate; }
@keyframes solar-track { from { transform:rotate(-13deg); } to { transform:rotate(13deg); } }
.electron { fill:var(--moss); stroke:var(--paper-bright); stroke-width:1; offset-path:path('M59 32 A27 11 0 1 1 5 32 A27 11 0 1 1 59 32'); animation:electron-orbit 7s linear infinite; }
.electron-two { animation-duration:9s; animation-delay:-3s; }
.electron-three { animation-duration:11s; animation-delay:-7s; }
@keyframes electron-orbit { to { offset-distance:100%; } }
.orbit-traveler { position:absolute; inset:-1px; border-radius:50%; animation:atom-orbit 16s linear infinite; }
.orbit-traveler::after { content:""; position:absolute; left:50%; top:0; width:10px; height:10px; transform:translate(-50%,-50%); border-radius:50%; background:var(--forest); box-shadow:0 0 0 4px rgba(214,219,208,0.50); }
.orbit-two .orbit-traveler { animation-duration:20s; animation-delay:-7s; animation-direction:reverse; }
.orbit-three .orbit-traveler { animation-duration:24s; animation-delay:-15s; }
@keyframes atom-orbit { to { transform:rotate(360deg); } }
.motion-toggle { display:block; min-height:44px; margin:0 auto 1rem; padding:.35rem .9rem; border:1px solid var(--line); border-radius:4px; background:transparent; color:var(--muted); font-size:.75rem; cursor:pointer; }
.motion-paused .tracker-panel,.motion-paused .electron,.motion-paused .orbit-traveler { animation-play-state:paused; }
.service-symbol { animation:energy-float 8s ease-in-out infinite; }
.service-lines > a:nth-child(2) .service-symbol { animation-delay:-2s; }
.service-lines > a:nth-child(3) .service-symbol { animation-delay:-4s; }
.service-lines > a:nth-child(4) .service-symbol { animation-delay:-6s; }
@keyframes energy-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-3px); } }
.business::before { animation:energy-glow 10s ease-in-out infinite; }
.research-business::before { animation-delay:-5s; }
@keyframes energy-glow { 0%,100% { opacity:.45; } 50% { opacity:.7; } }
.motion-paused .service-symbol,.motion-paused .business::before { animation-play-state:paused; }
.business { transition:border-color .35s ease,box-shadow .35s ease; }
.business:hover { border-color:rgba(71,77,63,.38); box-shadow:0 8px 28px rgba(24,49,36,.045); }
.hero-copy > .eyebrow,.hero-copy > h1,.hero-copy > .hero-note,.hero-copy > .hero-actions {
  animation:hero-arrive 1s cubic-bezier(.16,1,.3,1) both;
}
.hero-copy > h1 { animation-delay:.08s; }
.hero-copy > .hero-note { animation-delay:.16s; }
.hero-copy > .hero-actions { animation-delay:.24s; }
@keyframes hero-arrive { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }
.solar-tracker > circle { transform-origin:45px 12px; animation:sun-breathe 5.6s ease-in-out infinite; }
@keyframes sun-breathe { 0%,100% { opacity:.7; transform:scale(.92); } 50% { opacity:1; transform:scale(1.08); } }
.motion-paused .hero-copy > *,.motion-paused .solar-tracker > circle { animation-play-state:paused; }
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition:none!important; animation:none!important; }
  .motion-toggle { display:none; }
}
/* ---- content.css ---- */
.document-link { display:inline-flex; align-items:center; min-height:44px; margin-top:.65rem; font-weight:600; text-decoration:underline; text-underline-offset:4px; }
.document-note { margin-top:.75rem; font-size:.9rem!important; }
.route-item time { display:block; color:var(--muted); font-size:.875rem; margin-bottom:.5rem; }
.leadership-heading { grid-column:1/-1; margin-top:1.5rem; font-size:1.8rem; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
:root { --brand-teal:var(--forest-700); --brand-leaf:var(--leaf-500); }
.corporate-logo { display:block; width:174px; height:auto; mix-blend-mode:multiply; }
.site-header { height:88px; }
.site-header .brand { flex-shrink:0; background:var(--paper); isolation:isolate; }
.footer-logo { padding:10px 14px; background:var(--paper); border-radius:4px; }
.footer-logo .corporate-logo { width:144px; }
.division-logo-wrap { height:78px; display:flex; align-items:center; margin:0 0 1.2rem; }
.division-logo { width:190px; max-width:100%; height:auto; max-height:72px; object-fit:contain; object-position:left center; mix-blend-mode:multiply; }
.futricity-logo { width:122px; max-height:84px; }
.business-label,.business-icon { color:var(--brand-teal); }
.business-label { opacity:1; }
.division-logo-wrap { height:84px; }
.service-symbol { stroke:var(--brand-teal); }
.directory-link:hover strong { color:var(--brand-teal); }
.business { padding-top:1.3rem; }
.business-top { min-height:60px; margin-bottom:.6rem; }
.business h3 { font-size:clamp(1.6rem,2.6vw,2rem); }
.business > p { line-height:1.65; }
.business-link { color:var(--brand-teal); }
.research-business .business-icon { color:var(--brand-teal); }
.business-link:hover { color:var(--forest); }
.business-tags span { opacity:1; }
.document-link { color:var(--brand-teal); }
.route-brand { margin:0 0 1.25rem; }
.route-brand img { display:block; max-width:195px; max-height:85px; width:auto; height:auto; mix-blend-mode:multiply; }
.route-grid { align-items:start; }
.route-item p { max-width:65ch; }
.directory-group-links { grid-template-columns:repeat(auto-fit,minmax(0,1fr)); }
.directory-group-heading { border-left-color:var(--brand-leaf); }
.route-item time { color:var(--brand-teal); }
.business::before { opacity:.4; }
.route-role { margin:-.35rem 0 .7rem; font-size:var(--fs-sm); font-weight:600; color:var(--brand-teal); letter-spacing:.01em; }
.route-actions { display:flex; flex-wrap:wrap; gap:0 1.5rem; }
.route-address { font-style:normal; color:var(--muted); line-height:1.6; margin-top:.5rem; }
.fact-list { margin:.25rem 0 0; display:grid; gap:0; }
.fact-list > div { display:grid; grid-template-columns:9.5rem 1fr; gap:1rem; padding:.65rem 0; border-top:1px solid var(--line); }
.fact-list > div:first-child { border-top:0; padding-top:0; }
.fact-list dt { font-size:.75rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); padding-top:.15rem; }
.fact-list dd { margin:0; color:var(--ink, inherit); font-size:.95rem; line-height:1.5; }
.footer-legal { margin-top:1.3rem; display:grid; gap:.8rem; }
.footer-legal .footer-note { margin-top:0; }
.footer-legal a { text-decoration:underline; text-underline-offset:3px; }
.footer-disclaimer { max-width:92ch; font-size:.72rem; line-height:1.6; color:var(--stone-300); }
.footer-disclaimer strong { color:var(--stone-200); font-weight:600; }
@media(max-width:700px) {
  .fact-list > div { grid-template-columns:1fr; gap:.15rem; }
  .site-header { height:78px; }
  .corporate-logo { width:148px; }
  .division-logo-wrap { height:70px; margin-bottom:1rem; }
  .division-logo { width:174px; }
  .futricity-logo { width:112px; max-height:77px; }
  .division-logo-wrap { height:78px; }
  .document-link { overflow-wrap:anywhere; }
}
@media(max-width:600px) { .directory-group-links { grid-template-columns:1fr; } }
/* ---- cards.css ---- */
:root { --brand-teal:var(--stone-600); --brand-leaf:var(--stone-500); }
.business-grid { grid-template-columns:1fr; gap:20px; }
.business { display:grid; grid-template-columns:1fr; grid-template-areas:"art" "title" "logo" "copy" "tags" "link"; padding:0; border:0; border-radius:10px; background:linear-gradient(145deg,var(--stone-100) 0%,var(--stone-150) 100%); color:var(--forest-900); box-shadow:inset 0 0 0 1px rgba(113,119,105,0.07); overflow:hidden; }
.business::before { display:none; }
.business:hover { box-shadow:inset 0 0 0 1px rgba(113,119,105,0.14); border:0; }
.business-top { grid-area:art; min-height:100px; padding:24px 30px 0; margin:0 0 12px; align-items:flex-start; }
.business-label { text-transform:none; letter-spacing:0; font-size:.85rem; max-width:none; color:var(--stone-600); margin-top:8px; font-weight:500; }
.business-icon { width:94px; height:94px; margin:0; color:var(--forest-500); stroke-width:.9; }
.business h3 { grid-area:title; padding:0 30px; margin:0 0 16px; font-size:clamp(2rem,3.3vw,2.65rem); line-height:1.05; font-weight:600; letter-spacing:-.045em; }
.business > p { grid-area:copy; padding:0 30px; margin:0; color:var(--forest-600); font-size:1rem; line-height:1.6; max-width:49ch; text-wrap:pretty; }
.business-tags { grid-area:tags; padding:22px 30px 0; margin:0; gap:0; }
.business-tags span { border:0; border-radius:0; padding:0; color:var(--stone-600); font-size:.75rem; }
.business-tags span + span::before { content:"/"; padding:0 .7rem; color:var(--forest-400); }
.business-link { grid-area:link; margin:20px 30px 0; border-top:1px solid var(--stone-300); padding:18px 0 23px; color:var(--forest-900); font-size:.95rem; min-height:68px; }
.business-link span { display:inline-block; font-size:1.2rem; }
.business-link:hover { color:var(--stone-600); }
.division-logo-wrap { grid-area:logo; justify-self:start; justify-content:center; width:204px; height:104px; padding:7px 16px; margin:0 30px 22px; background:var(--stone-0); border:0; border-radius:6px; isolation:isolate; }
.division-logo { width:172px; max-height:90px; object-position:center; }
.futricity-logo { width:130px; max-height:90px; }
.research-business { background:linear-gradient(145deg,var(--stone-100) 0%,var(--stone-200) 100%); color:var(--forest-800); }
.research-business .business-label { color:var(--stone-600); }
.research-business .business-icon { color:var(--forest-500); }
.research-business .electron { fill:var(--stone-400); stroke:var(--stone-100); }
.research-business > p { color:var(--forest-600); }
.research-business .business-tags span { color:var(--stone-600); }
.research-business .business-tags span + span::before { color:var(--stone-400); }
.research-business .business-link { color:var(--forest-800); border-color:var(--stone-300); }
.research-business .business-link:hover { color:var(--stone-600); }
.research-business a:focus-visible { outline-color:var(--stone-600); }
.solar-feature.section-wrap { padding-bottom:24px; }
.solar-feature .service-lines > a:last-child { border-bottom:0; }
.business { position:relative; border-radius:8px; }
.action-arrow { width:24px; height:24px; flex:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; transition:transform .2s ease; }
.ancillary-arrow { display:none; }
.business-link { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.business-link:hover .action-arrow { transform:translateX(4px); }
@media(min-width:701px) {
 .business { grid-template-columns:44% 56%; grid-template-areas:"art copy" "title copy" "logo tags" "logo link"; min-height:310px; }
 .business-top { padding:30px 36px 0; min-height:0; margin:0 0 12px; }
 .business-label { margin:0; font-size:.8rem; }
 .business-icon { position:absolute; left:calc(44% - 130px); bottom:38px; width:104px; height:104px; }
 .business h3 { padding:0 36px; margin:0 0 24px; font-size:clamp(1.8rem,3vw,2.5rem); letter-spacing:-.04em; }
 .division-logo-wrap { margin:0 36px 32px; }
 .business > p { padding:32px 40px 0; font-size:1.2rem; line-height:1.55; max-width:46ch; align-self:center; }
 .business-tags { padding:18px 40px 0; }
 .business-link { margin:22px 40px 22px; padding:18px 0 6px; min-height:52px; }
 .research-art { padding-bottom:32px; box-sizing:border-box; }
 .research-art .orbit { width:min(60%,260px); }
}
@media(min-width:701px) and (max-width:1020px) {
 .business { grid-template-columns:48% 52%; }
 .business-icon { left:calc(48% - 100px); width:76px; height:76px; bottom:40px; }
 .business-top { padding-left:28px; }
 .business h3 { padding-left:28px; padding-right:24px; }
 .division-logo-wrap { margin-left:28px; width:174px; }
 .division-logo { width:146px; }
 .futricity-logo { width:125px; }
 .business > p { padding-left:24px; padding-right:28px; font-size:1.05rem; }
 .business-tags { padding-left:24px; padding-right:28px; }
 .business-link { margin-left:24px; margin-right:28px; }
}
@media(prefers-reduced-motion:reduce) { .action-arrow { transition:none; } }
@media(max-width:700px) {
 .business-grid { gap:20px; }
 .business-top { padding:22px 24px 0; min-height:90px; margin-bottom:12px; }
 .business h3,.business > p { padding-left:24px; padding-right:24px; }
 .business h3 { font-size:2.2rem; }
 .business-tags { padding-left:24px; padding-right:24px; }
 .business-tags span { font-size:.72rem; }
 .business-link { margin-left:24px; margin-right:24px; }
 .division-logo-wrap { margin-left:24px; margin-right:24px; }
 .solar-feature.section-wrap { padding-bottom:0; }
}
/* ---- palette.css ---- */
:root {
 --paper:var(--stone-50);
 --paper-bright:var(--stone-0);
 --ink:var(--forest-800);
 --muted:var(--stone-600);
 --forest:var(--forest-700);
 --forest-deep:var(--forest-800);
 --moss:var(--stone-600);
 --olive:var(--stone-300);
 --lime-wash:var(--stone-150);
 --line:rgba(43,81,61,.17);
 --brand-teal:var(--stone-600);
 --brand-leaf:var(--stone-500);
 --surface-sage:linear-gradient(145deg,var(--stone-100),var(--stone-150));
 --surface-eucalyptus:linear-gradient(145deg,var(--stone-100),var(--stone-200));
 --surface-forest:linear-gradient(125deg,var(--forest-700),var(--forest-800));
}
.site-header { color:var(--ink); }
.nav-contact { background:var(--stone-100); border-color:transparent; color:var(--forest-deep); }
.nav-contact:hover { background:var(--stone-150); }
.hero { background:var(--forest-deep); }
.hero::before { background:linear-gradient(90deg,rgba(32,64,47,.9),rgba(32,64,47,.62) 40%,rgba(32,64,47,.03) 76%); }
.hero .eyebrow,.hero h1 em { color:var(--lime-wash); }
.hero-note { color:var(--stone-50); }
.hero .button-dark,.button-primary,.research-copy .button { background:var(--lime-wash); color:var(--forest-deep); }
.hero .button-dark:hover,.button-primary:hover,.research-copy .button:hover { background:var(--stone-100); }
.hero .text-link { color:var(--paper-bright); border-color:rgba(226,231,221,0.60); }
.button-dark { background:var(--forest); color:var(--paper-bright); }
.button-dark:hover { background:var(--stone-700); }
.button { transition:background .2s ease; }
.button:hover { transform:none; }
.solar-business { background:var(--surface-sage); color:var(--ink); }
.research-business { background:var(--surface-eucalyptus); color:var(--ink); }
.division-logo-wrap,.footer-logo { background:var(--paper-bright); }
.business > p,.research-business > p { color:var(--forest-600); }
.business-label,.research-business .business-label,.business-tags span,.research-business .business-tags span { color:var(--stone-600); }
.business-link,.research-business .business-link { color:var(--ink); border-color:var(--stone-300); }
.business-link:hover,.research-business .business-link:hover { color:var(--brand-teal); }
.business-icon,.research-business .business-icon,.service-symbol { color:var(--forest-500); }
.service-symbol { stroke:currentColor; }
.service-lines > a:hover { background:rgba(236,239,232,0.50); }
.research-feature { background:var(--surface-forest); color:var(--paper-bright); }
.research-art { background:var(--surface-eucalyptus); }
.orbit { border-color:rgba(79,122,99,0.40); }
.orbit-center,.art-caption { color:var(--forest); }
.orbit-traveler::after { background:var(--stone-600); box-shadow:0 0 0 4px rgba(214,219,208,0.50); }
.research-copy .eyebrow,.research-copy h2 em { color:var(--lime-wash); }
.research-copy > p:not(.eyebrow),.research-stage { color:var(--stone-150); }
.research-stage .status-dot { background:var(--forest-300); }
.directory-link:hover,.directory-link:focus-visible { background:var(--stone-100); color:var(--forest-deep); }
.directory-group-heading { border-left-color:var(--stone-400); }
.route-header { background:var(--surface-eucalyptus); }
footer { background:var(--surface-forest); color:var(--paper-bright); }
footer .eyebrow,.footer-top h2 em { color:var(--lime-wash); }
.footer-bottom { border-color:rgba(226,231,221,0.20); }
.footer-bottom > p,.footer-note { color:var(--stone-200); }
.motion-toggle { background:var(--stone-100); color:var(--muted); border-color:transparent; }
.hero a:focus-visible,footer a:focus-visible,.research-copy a:focus-visible { outline-color:var(--lime-wash); }
@media(max-width:700px) {
 .hero::before { background:linear-gradient(0deg,rgba(32,64,47,.97),rgba(32,64,47,.67) 48%,rgba(32,64,47,.03) 86%); }
}
/* ---- companies.css ---- */
.businesses .section-heading { margin-bottom:40px; }
.business-grid { grid-template-columns:1fr 1fr; gap:0; }
.business-grid .business {
 display:grid; grid-template-columns:minmax(0,1fr) 112px;
 grid-template-areas:"title title" "logo art" "copy copy" "link link";
 grid-template-rows:auto 110px 1fr auto;
 min-height:0; padding:8px 44px 12px 0; overflow:visible;
 background:var(--paper); border:0; border-radius:0; box-shadow:none;
 color:var(--ink); isolation:isolate;
}
.business-grid .business + .business { padding:8px 0 12px 44px; border-left:1px solid var(--line); }
.business-grid .business:hover { background:var(--paper); box-shadow:none; }
.business-grid .business h3 { padding:0; margin:0 0 18px; font-size:clamp(1.8rem,3vw,2.6rem); letter-spacing:-.045em; line-height:1.08; }
.business-grid .division-logo-wrap { width:204px; height:104px; padding:0; margin:0; background:transparent; border-radius:0; isolation:auto; justify-content:flex-start; }
.business-grid .division-logo { width:172px; max-height:90px; object-position:left center; }
.business-grid .futricity-logo { width:130px; }
.business-grid .business-top { padding:0; margin:0; min-height:0; align-self:center; justify-content:flex-end; }
.business-grid .business-label { display:none; }
.business-grid .business-icon { position:static; width:90px; height:90px; margin:0; opacity:.8; }
.business-grid .business > p { padding:22px 0 0; margin:0; max-width:43ch; align-self:start; font-size:1.125rem; line-height:1.6; }
.business-grid .business-tags { display:none; }
.business-grid .business-link { justify-self:start; align-self:end; width:calc(9.53em + 5.375rem); max-width:100%; margin:28px 0 0; padding:12px 18px; min-height:48px; gap:12px; border:0; border-radius:4px; background:var(--forest); color:var(--paper-bright); font-size:.875rem; font-weight:500; text-decoration:none; }
.business-grid .business-link:hover { background:var(--stone-700); color:var(--paper-bright); text-decoration:none; }
.business-grid .business-link:focus-visible { outline-color:var(--forest); }
@media(min-width:701px) and (max-width:1000px) {
 .business-grid .business { padding-right:26px; grid-template-columns:minmax(0,1fr) 80px; }
 .business-grid .business + .business { padding-left:26px; }
 .business-grid .division-logo-wrap { width:164px; }
 .business-grid .division-logo { width:156px; }
 .business-grid .futricity-logo { width:124px; }
 .business-grid .business-icon { width:68.4px; height:68.4px; }
}
@media(max-width:700px) {
 .businesses .section-heading { margin-bottom:30px; }
 .business-grid { grid-template-columns:1fr; gap:30px; }
 .business-grid .business { padding:0 0 30px; grid-template-columns:minmax(0,1fr) 100px; }
 .business-grid .business + .business { padding:30px 0 0; border-left:0; border-top:1px solid var(--line); }
 .business-grid .business h3 { font-size:2rem; margin-bottom:12px; }
 .business-grid .business > p { font-size:1rem; padding-top:18px; }
 .business-grid .business-link { margin-top:22px; }
}
/* ---- editorial.css ---- */
.business-grid .solar-array { opacity:1; }
.solar-array .tracker-panel { transform-origin:32px 48px; animation:solar-array-track 10s ease-in-out infinite; }
.solar-sun { animation:solar-sun-light 10s ease-in-out infinite; }
@keyframes solar-array-track { 0%,100% { transform:rotate(-5deg); } 50% { transform:rotate(5deg); } }
@keyframes solar-sun-light { 0%,100% { opacity:.65; } 50% { opacity:1; } }
.motion-paused .solar-array .tracker-panel,.motion-paused .solar-sun { animation-play-state:paused; }
.intro-description,.hero-note,.business-grid .business > p,
.solar-lead > p,.research-copy > p,.route-item p { text-wrap:pretty; }
.business-grid .business h3 { text-wrap:balance; }
.business-grid .business + .business { min-width:0; }
.business-grid .business-link { line-height:1.35; }
#main-nav a { display:inline-flex; align-items:center; min-height:44px; }
.research-copy .button:focus-visible,.business-link:focus-visible { outline-offset:5px; }
.section-heading > p,.directory-heading > p { text-wrap:pretty; }
.footer-top h2 { text-wrap:balance; }
.footer-logo { background:transparent; padding:0; border-radius:0; }
.service-lines > .service-item { display:grid; grid-template-columns:32px 1fr; gap:1.2rem; align-items:center; border-bottom:1px solid var(--line); padding:1.15rem 0; }
.service-lines > .service-item:first-child { border-top:1px solid var(--line); }
.service-lines > .service-item:last-child { border-bottom:0; }
.service-item:nth-child(2) .service-symbol { animation-delay:-2s; }
.service-item:nth-child(3) .service-symbol { animation-delay:-4s; }
.service-item:nth-child(4) .service-symbol { animation-delay:-6s; }
.footer-logo .corporate-logo { filter:none; mix-blend-mode:normal; opacity:1; }
.route-item li + li { margin-top:.5rem; }
.route-item .document-link { margin-top:.85rem; }
.route-header h1 { text-wrap:balance; }
.route-item { min-width:0; }
.route-item h2 { line-height:1.3; text-wrap:balance; }
.route-item time { line-height:1.5; }
.document-link { line-height:1.5; }
.research-stage { line-height:1.5; align-items:baseline; }
.research-stage .status-dot { align-self:center; }
.breadcrumb { display:inline-flex; align-items:center; gap:8px; min-height:44px; }
.breadcrumb svg { width:18px; height:18px; stroke:currentColor; stroke-width:1.5; fill:none; }
.leadership-heading { margin-top:2rem; padding-top:1rem; }
@media(max-width:700px) {
 .business-grid { gap:0; }
 .business-grid .business { padding-bottom:26px; }
 .business-grid .business + .business { padding-top:26px; padding-bottom:0; }
 .intro-statement { line-height:1.45; }
 .section-heading,.directory-heading { gap:14px; }
 .route-grid { gap:0; }
}
.latest-news { padding-top:3rem; padding-bottom:3.25rem; }
.news-heading { display:flex; justify-content:space-between; align-items:end; gap:2rem; margin-bottom:1.6rem; }
.news-heading h2 { font-size:clamp(2rem,3.2vw,2.8rem); text-wrap:balance; }
.news-heading .eyebrow { margin-bottom:.5rem; }
.news-list { list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
.news-list li { border-bottom:1px solid var(--line); }
.news-row { display:grid; grid-template-columns:11rem minmax(0,1fr) auto; gap:1.5rem; align-items:baseline; padding:1.15rem .75rem; margin:0 -.75rem; border-radius:4px; transition:background .18s ease; }
.news-row time { font-size:.875rem; color:var(--brand-teal); font-variant-numeric:tabular-nums; }
.news-row strong { font-size:1.05rem; font-weight:550; line-height:1.4; letter-spacing:-.012em; text-wrap:pretty; }
.news-kind { font-size:.75rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); white-space:nowrap; }
.news-row:hover,.news-row:focus-visible { background:var(--lime-wash); color:var(--forest-deep); }
.news-row:hover strong,.news-row:focus-visible strong { text-decoration:underline; text-underline-offset:4px; }
.news-row:focus-visible { outline:2px solid var(--forest); outline-offset:2px; }
@media(max-width:700px) {
  .news-heading { flex-direction:column; align-items:flex-start; gap:.75rem; }
  .news-row { grid-template-columns:1fr; gap:.3rem; padding:1rem .5rem; margin:0 -.5rem; }
  .news-kind { order:3; }
}
.research-stage { margin-bottom:0; }
.footer-legal .motion-toggle { justify-self:start; margin:0; min-height:44px; padding:0; border:0; background:none; color:var(--stone-300); font-size:.75rem; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.footer-legal .motion-toggle:hover { color:var(--stone-150); }
.footer-legal .motion-toggle:focus-visible { outline:2px solid var(--lime-wash); outline-offset:3px; }
.service-lines > .service-item:nth-child(2) .service-symbol { animation-delay:-2s; }
.service-lines > .service-item:nth-child(3) .service-symbol { animation-delay:-4s; }
.service-lines > .service-item:nth-child(4) .service-symbol { animation-delay:-6s; }
.news-row-static:hover { background:none; color:inherit; }
.news-row-static:hover strong { text-decoration:none; }
/* ---- Static pages, FAQ and media ---- */
.hero-image picture { display:contents; }
.breadcrumb-nav ol { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; }
.breadcrumb-nav li { display:flex; align-items:center; gap:.5rem; color:var(--muted); font-size:.875rem; }
.breadcrumb-nav li + li::before { content:"/"; color:var(--olive); }
.breadcrumb-nav a { display:inline-flex; align-items:center; min-height:44px; color:var(--muted); }
.breadcrumb-nav a:hover { color:var(--ink); text-decoration:underline; text-underline-offset:4px; }
.breadcrumb-nav { margin-bottom:1.2rem; }
.faq { padding-top:1.5rem; padding-bottom:3.5rem; }
.faq-heading .route-intro { margin-top:.8rem; max-width:34ch; }
.route-panel .faq { padding-left:0; padding-right:0; margin-top:2rem; padding-bottom:0; }
.faq-heading { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:3rem; align-items:start; }
.faq-heading h2 { font-size:clamp(2rem,3.2vw,2.8rem); text-wrap:balance; }
.faq-heading .eyebrow { margin-bottom:.5rem; }
.faq-list { border-top:1px solid var(--line); }
.faq-item { border-bottom:1px solid var(--line); }
.faq-item summary { list-style:none; cursor:pointer; display:flex; justify-content:space-between; gap:1.5rem; align-items:center; padding:1.1rem 0; min-height:44px; font-size:1.05rem; font-weight:550; letter-spacing:-.012em; line-height:1.4; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::after { content:"+"; flex-shrink:0; width:28px; height:28px; display:grid; place-items:center; border:1px solid var(--line); border-radius:50%; color:var(--moss); font-weight:400; transition:transform .2s ease; }
.faq-item[open] summary::after { transform:rotate(45deg); }
.faq-item summary:focus-visible { outline:2px solid var(--forest); outline-offset:3px; }
.faq-item p { margin:0 0 1.2rem; max-width:65ch; color:var(--muted); line-height:1.65; text-wrap:pretty; }
.faq-item p a { color:var(--brand-teal); text-decoration:underline; text-underline-offset:3px; }
@media(max-width:800px) { .faq-heading { grid-template-columns:1fr; gap:1.2rem; } }
.notfound { max-width:var(--max); margin:auto; padding:5rem 2rem; }
.notfound h1 { font-size:clamp(2.2rem,5vw,3.6rem); margin-bottom:1rem; }
.notfound p { color:var(--muted); max-width:46ch; margin-bottom:1.5rem; }
.route-item ol { padding-left:1.4rem; margin:.75rem 0 0; color:var(--muted); font-size:1rem; }
.route-item ol li + li { margin-top:.4rem; }
.route-brand img { width:auto; }
/* ---- Content links: one icon family across the site ---- */
.route-actions { display:flex; flex-direction:column; align-items:flex-start; gap:0; margin-top:.5rem; }
.document-link { display:inline-flex; align-items:center; gap:.5rem; min-height:44px; margin:0; font-weight:600; color:var(--brand-teal); text-decoration:none; line-height:1.4; }
.document-link .link-label { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; text-decoration-color:color-mix(in srgb, currentColor 45%, transparent); transition:text-decoration-color .2s ease; }
.document-link:hover .link-label,.document-link:focus-visible .link-label { text-decoration-color:currentColor; }
.link-icon { width:20px; height:20px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; transition:transform .2s ease; }
.document-link:hover .icon-next { transform:translateX(3px); }
.document-link:hover .icon-out { transform:translate(2px,-2px); }
@media(prefers-reduced-motion:reduce) { .link-icon { transition:none; } }
/* ---- Content groups: equal-height rows so dividers line up ---- */
.route-grid { display:grid; gap:0 3rem; align-items:stretch; margin:.75rem 0 0; }
.route-grid.cols-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.route-grid.cols-3 { grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 2.5rem; }
.route-grid.cols-1 { grid-template-columns:minmax(0,1fr); }
.route-grid.cols-1 .route-item p { max-width:70ch; }
.route-header + .route-grid { margin-top:1.25rem; }
.leadership-heading { margin-top:3rem; padding-top:0; font-size:clamp(1.6rem,2.4vw,2rem); letter-spacing:-.03em; }

/* Call-to-action panel */
.route-cta { display:flex; align-items:center; justify-content:space-between; gap:2rem 3rem; flex-wrap:wrap; margin:3rem 0 0; padding:2rem 2.25rem; border-radius:6px; background:var(--forest); color:var(--paper-bright); }
.route-cta h2 { font-size:clamp(1.5rem,2.2vw,1.9rem); letter-spacing:-.03em; margin-bottom:.5rem; color:var(--paper-bright); }
.route-cta p { max-width:52ch; color:var(--stone-200); font-size:1rem; line-height:1.6; }
.route-cta .button { background:var(--lime-wash); color:var(--forest-deep); flex:none; }
.route-cta .button:hover { background:var(--stone-100); }
.route-cta .button:focus-visible { outline:2px solid var(--lime-wash); outline-offset:3px; }

/* Research roadmap: a real sequence, current phase marked */
.roadmap { margin-top:3rem; padding-top:2rem; border-top:1px solid var(--line); }
.roadmap-head { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:1rem 3rem; align-items:end; margin-bottom:1.75rem; }
.roadmap-head h2 { font-size:clamp(1.6rem,2.4vw,2rem); letter-spacing:-.03em; }
.roadmap-head p { color:var(--muted); max-width:56ch; }
.roadmap-steps { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:.5rem; counter-reset:none; }
.roadmap-steps li { display:flex; flex-direction:column; gap:.6rem; padding:1rem .9rem 1.1rem; border-top:3px solid var(--line); background:rgba(252,253,250,.35); border-radius:0 0 4px 4px; min-height:7.5rem; }
.roadmap-steps li.is-current { border-top-color:var(--brand-leaf); background:var(--stone-150); }
.step-num { font-size:.75rem; font-weight:650; letter-spacing:.12em; color:var(--moss); font-variant-numeric:tabular-nums; }
.is-current .step-num { color:var(--forest); }
.step-name { font-size:.95rem; font-weight:550; line-height:1.35; letter-spacing:-.01em; color:var(--ink); text-wrap:balance; }
.is-planned .step-name { color:var(--muted); }
.roadmap-legend { display:flex; flex-wrap:wrap; gap:.5rem 1.75rem; margin-top:1rem; font-size:.875rem; color:var(--muted); }
.roadmap-legend span { display:inline-flex; align-items:center; gap:.5rem; }
.legend-dot { display:inline-block; width:14px; height:3px; border-radius:2px; background:var(--line); }
.legend-dot.is-current { background:var(--brand-leaf); }

/* News archive: date column + release */
.news-archive .route-item { display:grid; grid-template-columns:11rem minmax(0,1fr); column-gap:2rem; align-content:start; padding:1.6rem 0; scroll-margin-top:1rem; }
.news-archive .route-item > * { grid-column:2; }
.news-archive .route-item > time { grid-column:1; grid-row:1; margin:0; padding-top:.2rem; font-variant-numeric:tabular-nums; }
.news-archive .route-item h2 { font-size:1.2rem; max-width:48ch; }
.news-archive .route-item:target { background:linear-gradient(90deg, var(--stone-150), transparent 70%); }

@media(max-width:1000px) {
  .route-grid.cols-3 { grid-template-columns:minmax(0,1fr); }
  .roadmap-steps { grid-template-columns:repeat(4,minmax(0,1fr)); }
}
@media(max-width:700px) {
  .route-grid.cols-2,.route-grid.cols-3 { grid-template-columns:minmax(0,1fr); gap:0; }
  .leadership-heading { margin-top:2.25rem; }
  .route-cta { padding:1.5rem 1.25rem; margin-top:2.25rem; }
  .route-cta .button { width:100%; justify-content:center; }
  .roadmap-head { grid-template-columns:1fr; }
  .roadmap-steps { grid-template-columns:minmax(0,1fr); gap:0; }
  .roadmap-steps li { flex-direction:row; align-items:baseline; gap:1rem; min-height:0; border-top-width:0; border-left:3px solid var(--line); border-radius:0 4px 4px 0; padding:.85rem 1rem; margin-bottom:.35rem; }
  .roadmap-steps li.is-current { border-left-color:var(--brand-leaf); }
  .news-archive .route-item { grid-template-columns:minmax(0,1fr); }
  .news-archive .route-item > *,.news-archive .route-item > time { grid-column:1; grid-row:auto; }
  .news-archive .route-item > time { order:-1; margin-bottom:.35rem; }
}
.roadmap { border-top:0; padding-top:0; margin-top:3rem; }
.route-actions { margin-top:.25rem; }
.route-item > p:last-of-type + .route-actions { margin-top:.35rem; }
.document-link:focus-visible { outline:2px solid var(--forest); outline-offset:4px; border-radius:2px; }
::selection { background:var(--lime-wash); color:var(--forest-deep); }
/* ---- One logo, top and bottom ---- */
.brand picture { display:block; }
.corporate-logo { mix-blend-mode:normal; height:auto; }
.site-header .brand { background:transparent; }
/* Same logo, same size, top and bottom */
.corporate-logo,.footer-logo .corporate-logo { width:174px; }
@media(max-width:700px) { .corporate-logo,.footer-logo .corporate-logo { width:148px; } }

/* =====================================================================
   Typography system
   Instrument Sans (variable) for headings and text; IBM Plex Mono for
   data: dates, labels, the ticker. One fluid scale from phone (390px)
   to desktop (1440px); every step grows continuously, so tablet sizes
   always sit between the two.
   ===================================================================== */
@font-face { font-family:"Instrument Sans"; src:url("fonts/instrument-sans.woff2") format("woff2-variations"), url("fonts/instrument-sans.woff2") format("woff2"); font-weight:400 700; font-stretch:75% 100%; font-style:normal; font-display:swap; }
@font-face { font-family:"IBM Plex Mono"; src:url("fonts/plex-mono-400.woff2") format("woff2"); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:"IBM Plex Mono"; src:url("fonts/plex-mono-500.woff2") format("woff2"); font-weight:500; font-style:normal; font-display:swap; }

:root {
  --font-sans:"Instrument Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --fs-label:.75rem;                                        /* 12      mono uppercase labels */
  --fs-meta:clamp(.8125rem,.79rem + .1vw,.875rem);          /* 13-14   dates, legal, captions */
  --fs-sm:clamp(.875rem,.85rem + .1vw,.9375rem);            /* 14-15   navigation, buttons, roles */
  --fs-base:clamp(1rem,.96rem + .17vw,1.125rem);            /* 16-18   body text */
  --fs-lead:clamp(1.0625rem,.98rem + .36vw,1.3125rem);      /* 17-21   intros */
  --fs-h5:clamp(1.0625rem,1rem + .27vw,1.25rem);            /* 17-20   list titles, questions */
  --fs-h4:clamp(1.1875rem,1.1rem + .36vw,1.4375rem);        /* 19-23   item titles */
  --fs-h3:clamp(1.5rem,1.3rem + .85vw,2.125rem);            /* 24-34   sub-sections, statements */
  --fs-h2:clamp(2rem,1.5rem + 2.1vw,3.375rem);              /* 32-54   section headings */
  --fs-h1:clamp(2.25rem,1.6rem + 2.75vw,4rem);              /* 36-64   page titles */
  --fs-display:clamp(3rem,1.75rem + 5.2vw,5.75rem);         /* 48-92   homepage hero */
}

html body { font-family:var(--font-sans); font-size:var(--fs-base); line-height:1.6; font-kerning:normal; text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; }
html h1,html h2,html h3,html summary,html button { font-family:var(--font-sans); }
html h1,html h2,html h3 { text-wrap:balance; }
html p,html li,html dd { text-wrap:pretty; }

/* Display and headings */
html .hero h1 { font-size:var(--fs-display); line-height:.92; letter-spacing:-.04em; font-weight:640; font-stretch:92%; }
html .route-header h1,html .notfound h1 { font-size:var(--fs-h1); line-height:1.02; letter-spacing:-.035em; font-weight:600; }
html .section-heading h2,html .solar-lead h2,html .research-copy h2,html .news-heading h2,html .faq-heading h2,html .footer-top h2 { font-size:var(--fs-h2); line-height:1.02; letter-spacing:-.035em; font-weight:560; }
html .leadership-heading,html .roadmap-head h2,html .route-cta h2,html .business h3 { font-size:var(--fs-h3); line-height:1.1; letter-spacing:-.028em; font-weight:580; }
html .route-item h2,html .service-item h3 { font-size:var(--fs-h4); line-height:1.25; letter-spacing:-.018em; font-weight:590; }
html .news-archive .route-item h2,html .faq-item summary,html .news-row strong { font-size:var(--fs-h5); line-height:1.35; letter-spacing:-.012em; font-weight:570; }
html .intro-statement { font-size:var(--fs-h3); line-height:1.22; letter-spacing:-.024em; font-weight:450; }
html .intro-statement span { display:block; }

/* Running text */
html .route-intro,html .hero-note,html .route-cta p,html .roadmap-head p,html .section-heading > p,html .faq-heading .route-intro { font-size:var(--fs-lead); line-height:1.5; letter-spacing:-.006em; }
html .route-item p,html .route-item ul,html .route-item ol,html .route-item address,html .faq-item p,html .business > p,html .solar-lead > p:not(.eyebrow),html .research-copy > p:not(.eyebrow),html .intro-description,html .service-item p,html .fact-list dd { font-size:var(--fs-base); line-height:1.62; }
html .route-item p,html .route-item ul,html .route-item ol,html .faq-item p { max-width:62ch; }
html .route-intro { max-width:46ch; }
html .hero-note { max-width:30rem; }
html .route-item li + li { margin-top:.45rem; }

/* Interface text */
html .site-header nav a,html .menu-toggle,html .button,html .text-link,html .business-link,html .breadcrumb-nav li,html .breadcrumb-nav a { font-size:var(--fs-sm); letter-spacing:-.003em; }
html .button,html .business-link,html .nav-contact { font-weight:560; }
html .document-link { font-size:var(--fs-base); font-weight:580; }
html .route-role { font-size:var(--fs-sm); font-weight:600; letter-spacing:0; line-height:1.45; }
html .step-name { font-size:var(--fs-sm); font-weight:570; }
html .roadmap-legend { font-size:var(--fs-meta); }
html .footer-bottom nav a { font-size:var(--fs-sm); font-weight:500; }
html .footer-bottom > p,html .footer-note,html .motion-toggle { font-size:var(--fs-meta); line-height:1.6; }
html .footer-disclaimer { font-size:var(--fs-meta); line-height:1.65; max-width:96ch; }

/* Data voice: labels, dates and the ticker in Plex Mono */
html .eyebrow,html .business-label,html .fact-list dt,html .news-kind,html .step-num,html .art-caption { font-family:var(--font-mono); font-size:var(--fs-label); font-weight:500; letter-spacing:.1em; text-transform:uppercase; line-height:1.5; }
html .route-item time,html .news-row time { font-family:var(--font-mono); font-size:var(--fs-meta); font-weight:400; letter-spacing:0; font-variant-numeric:tabular-nums; }
html .business-tags span { font-family:var(--font-mono); font-size:var(--fs-label); letter-spacing:.06em; }

/* =====================================================================
   Spacing system
   One side margin (the gutter) shared by header, hero, sections, inner
   pages and footer, so every left edge lines up at every width. One
   fluid vertical scale for section rhythm and heading-to-text gaps.
   ===================================================================== */
:root {
  --content:1176px;
  --gutter:clamp(1.25rem, .6rem + 2.6vw, 2.5rem);            /* 20 / 31 / 40 */
  --max:calc(var(--content) + 2 * var(--gutter));
  --space-3xs:.375rem;
  --space-2xs:.5rem;
  --space-xs:.75rem;
  --space-s:clamp(1rem, .9rem + .4vw, 1.25rem);               /* 16-20 */
  --space-m:clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);           /* 24-36 */
  --space-l:clamp(2rem, 1.5rem + 2vw, 3.25rem);               /* 32-52 */
  --space-xl:clamp(3rem, 2rem + 4vw, 5.5rem);                 /* 48-88 */
  --space-section:clamp(3.5rem, 2.4rem + 4.6vw, 6.5rem);      /* 56-104 between homepage sections */
}

/* Shared side margin */
html .site-header,html .section-wrap,html .intro,html .route-panel,html .hero-copy,html .notfound { max-width:var(--max); margin-inline:auto; padding-inline:var(--gutter); box-sizing:border-box; }
html footer { padding-inline:max(var(--gutter), calc((100% - var(--content)) / 2)); padding-block:var(--space-xl) var(--space-l); }
html .research-copy { padding:var(--space-xl) var(--gutter); }

/* Labels sit close to the heading they introduce */
html .eyebrow { margin:0 0 var(--space-xs); }
html .hero .eyebrow { margin-bottom:var(--space-s); }
html .news-heading .eyebrow,html .faq-heading .eyebrow,html .route-header .eyebrow,html footer .eyebrow { margin-bottom:var(--space-xs); }

/* Homepage rhythm */
html .hero-copy { padding-block:var(--space-xl); }
html .hero-note { margin:var(--space-m) 0 var(--space-m); }
html .hero-actions { gap:var(--space-xs) var(--space-m); }
html .intro { padding-block:var(--space-l); row-gap:var(--space-2xs); }
html .businesses.section-wrap,html .latest-news.section-wrap { padding-block:var(--space-section) calc(var(--space-section) * .6); }
html .businesses .section-heading { margin-bottom:var(--space-l); gap:var(--space-s) var(--space-xl); }
html .section-heading > p { margin:0; }
html .solar-feature.section-wrap { padding-block:calc(var(--space-section) * .6) var(--space-section); gap:var(--space-l) var(--space-xl); }
html .solar-lead > p:not(.eyebrow) { margin:var(--space-s) 0 0; }
html .service-lines > .service-item { padding-block:var(--space-s); gap:var(--space-s); }
html .service-item h3 { margin-bottom:var(--space-3xs); }
html .research-copy > p:not(.eyebrow) { margin:var(--space-s) 0 var(--space-m); }
html .news-heading { margin-bottom:var(--space-m); gap:var(--space-s) var(--space-l); }
html .news-row { padding-block:var(--space-s); }
html .faq.section-wrap { padding-block:calc(var(--space-section) * .4) var(--space-section); }
html .faq-heading { gap:var(--space-m) var(--space-xl); }
html .faq-heading .route-intro { margin-top:var(--space-s); }
html .faq-item summary { padding-block:var(--space-s); }
html .faq-item p { margin:0 0 var(--space-m); }

/* Company cards */
html .business-grid .business h3 { font-size:clamp(1.75rem, 1.4rem + 1.3vw, 2.5rem); line-height:1.06; letter-spacing:-.035em; font-weight:600; margin:0 0 var(--space-s); }
html .business-grid .business > p { font-size:var(--fs-base); line-height:1.62; padding-top:var(--space-s); }
html .business-grid .business-link { font-size:var(--fs-sm); margin-top:var(--space-m); }

/* Inner pages */
html .route-panel { padding-block:var(--space-m) var(--space-xl); }
html .breadcrumb-nav { margin-bottom:var(--space-xs); }
html .route-brand { margin:0 0 var(--space-m); }
html .route-header { padding:var(--space-l) clamp(1.25rem, .6rem + 2.6vw, 2.5rem); gap:var(--space-s) var(--space-xl); }
html .route-header .eyebrow + h1 { margin-top:0; }
html .route-header + .route-grid,html .route-header + .leadership-heading { margin-top:var(--space-m); }
html .route-grid { margin-top:var(--space-2xs); column-gap:var(--space-xl); }
html .route-grid.cols-3 { column-gap:var(--space-l); }
html .route-item { padding-block:var(--space-m); }
html .route-item h2 { margin:0 0 var(--space-2xs); }
html .route-item .route-role { margin:calc(var(--space-3xs) * -1) 0 var(--space-xs); }
html .route-item time { margin:0 0 var(--space-2xs); }
html .route-item ul,html .route-item ol { margin-top:var(--space-xs); }
html .route-item .route-actions { margin-top:var(--space-2xs); }
html .route-address { margin-top:var(--space-xs); }
html .leadership-heading { margin:var(--space-xl) 0 0; padding:0; }
html .route-cta { margin-top:var(--space-xl); padding:var(--space-l) clamp(1.25rem, .6rem + 2.6vw, 2.5rem); gap:var(--space-m) var(--space-xl); }
html .route-cta h2 { margin-bottom:var(--space-2xs); }
html .roadmap { margin-top:var(--space-xl); }
html .roadmap-head { margin-bottom:var(--space-m); gap:var(--space-xs) var(--space-xl); }
html .roadmap-legend { margin-top:var(--space-s); }
html .route-panel .faq { margin-top:var(--space-xl); padding-top:0; }
html .news-archive .route-item { padding-block:var(--space-m); column-gap:var(--space-l); }

/* Footer */
html .footer-top { padding-bottom:var(--space-l); gap:var(--space-m); }
html .footer-bottom { padding-top:var(--space-m); gap:var(--space-s) var(--space-l); }
html .footer-legal { margin-top:var(--space-m); gap:var(--space-xs); }
html .footer-legal .motion-toggle { font-size:var(--fs-meta); margin-top:var(--space-2xs); }

@media(max-width:700px) {
  html .business-grid .business > p { padding-top:var(--space-xs); }
  html .faq-item summary { gap:var(--space-s); }
}

/* Refinements */
html .hero h1 { letter-spacing:-.03em; }
/* Skip link: fully hidden until a keyboard user focuses it */
html .skip-link { top:var(--space-2xs); left:var(--space-2xs); }
html .skip-link:not(:focus) { clip-path:inset(50%); width:1px; height:1px; overflow:hidden; white-space:nowrap; padding:0; }
/* Section dividers stop at the content edges, like everything else */
html .businesses { border-top:0; }
html .intro { background:linear-gradient(var(--line),var(--line)) bottom center / calc(100% - 2 * var(--gutter)) 1px no-repeat; }
/* Tablet: give headings and intros the full width instead of cramped half columns */
@media(max-width:1020px) {
  html .intro { grid-template-columns:minmax(0,1fr); }
  html .intro > * { grid-column:1; grid-row:auto; }
  html .intro-description { max-width:60ch; margin-top:var(--space-xs); }
  html .businesses .section-heading { grid-template-columns:minmax(0,1fr); }
  html .section-heading > p { max-width:52ch; }
  html .fact-list > div { grid-template-columns:minmax(0,1fr); gap:var(--space-3xs); }
  html .faq-heading { grid-template-columns:minmax(0,1fr); }
  html .faq-heading .route-intro { max-width:52ch; }
}
html .hero-label span { white-space:nowrap; }
@media(max-width:560px) { html .hero-label .label-sep { display:none; } html .hero-label span:last-child { display:block; } }
@media(max-width:560px) { html .hero .hero-label { display:block; } }
html .detail-view .site-header { border-bottom:0; background:linear-gradient(var(--line),var(--line)) bottom center / calc(100% - 2 * var(--gutter)) 1px no-repeat; }

/* =====================================================================
   Color system
   Three ramps built in OKLCH so steps look evenly spaced:
   leaf   - anchored on the logo green (#499800, hue 136)
   forest - deep greens for depth: footer, dark panels, buttons
   stone  - neutrals tinted toward the leaf hue, so greys feel related
   Every text pairing below is checked against WCAG AA (4.5:1 text,
   3:1 large text and interface marks).
   ===================================================================== */
:root {
  --stone-0:#fcfdfa;
  --stone-50:#f4f7f2;
  --stone-100:#ecefe8;
  --stone-150:#e2e7dd;
  --stone-200:#d6dbd0;
  --stone-300:#bac0b4;
  --stone-400:#8f9588;
  --stone-500:#717769;
  --stone-600:#5d6356;
  --stone-700:#474d3f;
  --stone-800:#31382a;
  --stone-900:#21261a;
  --forest-300:#a6c7b4;
  --forest-400:#759d87;
  --forest-500:#4f7a63;
  --forest-600:#3a624d;
  --forest-700:#2b513d;
  --forest-800:#20402f;
  --forest-900:#183124;
  --forest-950:#0e2218;
  --leaf-50:#effbea;
  --leaf-100:#e0f7d6;
  --leaf-200:#caf1b8;
  --leaf-300:#a7e688;
  --leaf-400:#7fd052;
  --leaf-500:#499800;
  --leaf-600:#48871e;
  --leaf-700:#3c6c1f;
  --leaf-800:#2e531a;

  /* Roles */
  --bg:var(--stone-50);            --bg-raised:var(--stone-0);     --bg-sunk:var(--stone-100);
  --text:var(--stone-900);         --text-muted:var(--stone-600);  --text-faint:var(--stone-500);
  --label:var(--forest-600);       --accent-text:var(--leaf-700);  --accent:var(--leaf-500);
  --accent-wash:var(--leaf-50);    --accent-soft:var(--leaf-100);
  --link:var(--forest-700);        --link-hover:var(--forest-900);
  --line:rgba(33,38,26,.14);       --line-strong:rgba(33,38,26,.26);
  --dark:var(--forest-900);        --dark-deep:var(--forest-950);
  --on-dark:var(--stone-0);        --on-dark-muted:var(--stone-300); --on-dark-label:var(--leaf-300); --on-dark-accent:var(--leaf-200);
  --on-dark-line:rgba(252,253,250,.14);
  --focus:var(--leaf-600);         --focus-on-dark:var(--leaf-300);

  /* Legacy names used throughout the stylesheet, now pointing at the system */
  --paper:var(--bg); --paper-bright:var(--bg-raised); --ink:var(--text); --muted:var(--text-muted);
  --forest:var(--forest-800); --forest-deep:var(--forest-950); --moss:var(--accent-text); --olive:var(--forest-400);
  --lime-wash:var(--leaf-100); --brand-teal:var(--link); --brand-leaf:var(--accent);
  --surface-eucalyptus:linear-gradient(150deg,var(--stone-100),var(--stone-150));
  --surface-sage:linear-gradient(150deg,var(--stone-50),var(--stone-100));
  --surface-forest:linear-gradient(135deg,var(--forest-800),var(--forest-900) 70%);
}

html body { background:var(--bg); color:var(--text); }
::selection { background:var(--leaf-200); color:var(--forest-950); }
html :focus-visible { outline-color:var(--focus); }

/* Labels and secondary heading lines */
html .eyebrow,html .business-label,html .fact-list dt,html .news-kind,html .step-num,html .art-caption { color:var(--label); }
html h1 em,html h2 em { color:var(--accent-text); }
html .route-intro,html .intro-description,html .section-heading > p,html .route-item p,html .route-item li,html .faq-item p,html .business > p,html .service-item p,html .solar-lead > p:not(.eyebrow),html .route-address,html .roadmap-head p { color:var(--text-muted); }
html .route-item h2,html .service-item h3,html .business h3,html h1,html h2:not(.footer-top h2):not(.research-copy h2):not(.route-cta h2),html .faq-item summary,html .news-row strong,html .fact-list dd { color:var(--text); }
html .route-role { color:var(--accent-text); }
html .route-item time,html .news-row time { color:var(--label); }

/* Header and navigation */
html .site-header nav a { color:var(--text); }
html .site-header nav a:hover { color:var(--accent-text); }
html .site-header nav a[aria-current="page"] { text-decoration-color:var(--accent); text-decoration-thickness:2px; border-color:var(--accent); }
html .nav-contact { background:var(--accent-soft); color:var(--forest-900); border-color:transparent; }
html .nav-contact:hover { background:var(--leaf-200); color:var(--forest-950); }
html .menu-toggle { color:var(--text); border-color:var(--line-strong); }
html #main-nav.open { background:var(--bg-raised); border-color:var(--line); box-shadow:0 18px 40px rgba(14,34,24,.12); }

/* Hero, over the photograph */
html .hero .eyebrow { color:var(--leaf-200); }
html .hero h1 { color:var(--on-dark); }
html .hero h1 em { color:var(--leaf-200); }
html .hero-note { color:rgba(252,253,250,.92); }
html .hero .button-dark { background:var(--leaf-200); color:var(--forest-950); }
html .hero .button-dark:hover { background:var(--leaf-100); }
html .hero .text-link { color:var(--on-dark); border-color:rgba(202,241,184,.55); }
html .hero .text-link:hover { border-color:var(--leaf-200); }

/* Buttons and links */
html .button-dark,html .business-grid .business-link { background:var(--forest-800); color:var(--on-dark); }
html .button-dark:hover,html .business-grid .business-link:hover { background:var(--forest-900); color:var(--on-dark); }
html .text-link { color:var(--text); border-color:var(--line-strong); }
html .text-link:hover { border-color:var(--accent); }
html .document-link { color:var(--link); }
html .document-link .link-label { text-decoration-color:color-mix(in srgb, var(--accent) 70%, transparent); }
html .document-link:hover { color:var(--link-hover); }
html .document-link:hover .link-label { text-decoration-color:var(--accent); }
html .breadcrumb-nav li,html .breadcrumb-nav a { color:var(--text-muted); }
html .breadcrumb-nav a:hover { color:var(--text); }
html .breadcrumb-nav li + li::before { color:var(--stone-300); }

/* Surfaces */
html .route-header { background:var(--surface-eucalyptus); }
html .research-feature { background:var(--stone-100); }
html .research-art { background:linear-gradient(160deg,var(--stone-100),var(--stone-150)); }
html .research-copy { background:var(--surface-forest); color:var(--on-dark); }
html .research-copy h2 { color:var(--on-dark); }
html .research-copy h2 em { color:var(--on-dark-accent); }
html .research-copy .eyebrow { color:var(--on-dark-label); }
html .research-copy > p:not(.eyebrow),html .research-stage { color:var(--on-dark-muted); }
html .research-stage .status-dot { background:var(--leaf-400); box-shadow:0 0 0 4px rgba(127,208,82,.18); }
html .orbit-center { color:var(--forest-800); }
html .orbit-traveler::after { background:var(--forest-700); box-shadow:0 0 0 4px rgba(202,241,184,.6); }

/* Lists, rows and states */
html .news-row:hover,html .news-row:focus-visible { background:var(--accent-wash); color:var(--text); }
html .news-archive .route-item:target { background:linear-gradient(90deg,var(--accent-wash),transparent 70%); }
html .roadmap-steps li { background:var(--bg-sunk); border-color:var(--stone-200); }
html .roadmap-steps li.is-current { background:var(--accent-wash); border-color:var(--accent); }
html .is-current .step-num { color:var(--accent-text); }
html .legend-dot { background:var(--stone-300); }
html .legend-dot.is-current { background:var(--accent); }
html .faq-item summary::after { border-color:var(--line-strong); color:var(--forest-600); }
html .faq-item[open] summary::after { background:var(--accent-soft); border-color:transparent; color:var(--forest-900); }
html .faq-item summary:hover { color:var(--accent-text); }

/* Call to action panel */
html .route-cta { background:var(--surface-forest); color:var(--on-dark); }
html .route-cta h2 { color:var(--on-dark); }
html .route-cta p { color:var(--on-dark-muted); }
html .route-cta .button { background:var(--leaf-200); color:var(--forest-950); }
html .route-cta .button:hover { background:var(--leaf-100); }
html .route-cta .button:focus-visible { outline-color:var(--focus-on-dark); }

/* Footer */
html footer { background:var(--dark); color:var(--on-dark); }
html footer .eyebrow { color:var(--on-dark-label); }
html .footer-top h2 { color:var(--on-dark); }
html .footer-top h2 em { color:var(--on-dark-accent); }
html footer .button-primary { background:var(--leaf-200); color:var(--forest-950); }
html footer .button-primary:hover { background:var(--leaf-100); }
html .footer-bottom { border-color:var(--on-dark-line); }
html .footer-top { border-color:var(--on-dark-line); }
html .footer-bottom > p,html .footer-note,html .footer-disclaimer { color:var(--on-dark-muted); }
html .footer-disclaimer strong { color:var(--on-dark); }
html .footer-bottom nav a,html .footer-legal a { color:var(--on-dark); }
html .footer-bottom nav a:hover,html .footer-legal a:hover { color:var(--leaf-200); }
html .footer-legal .motion-toggle { color:var(--on-dark-muted); }
html .footer-legal .motion-toggle:hover { color:var(--on-dark); }
html footer :focus-visible { outline-color:var(--focus-on-dark); }
html .skip-link { background:var(--bg-raised); color:var(--forest-900); }

/* Tuned accents: calmer, more corporate, same contrast safety */
:root {
  --accent-text:#406637;          /* headline second lines, roles; 6.1:1 on paper */
  --on-dark-accent:#d6eabf;       /* highlights and buttons on dark; 10.9:1 */
  --on-dark-accent-hover:#e6f5d5;
  --on-dark-label:#b7d6a0;        /* labels on dark; 8.7:1 */
}
html .hero .eyebrow { color:var(--on-dark-accent); }
html .hero h1 em { color:var(--on-dark-accent); }
html .hero .button-dark,html .route-cta .button,html footer .button-primary { background:var(--on-dark-accent); color:var(--forest-950); }
html .hero .button-dark:hover,html .route-cta .button:hover,html footer .button-primary:hover { background:var(--on-dark-accent-hover); }
html .hero .text-link { border-color:rgba(214,234,191,.55); }
html .footer-bottom nav a:hover,html .footer-legal a:hover { color:var(--on-dark-accent); }
html .nav-contact { background:var(--leaf-50); box-shadow:inset 0 0 0 1px rgba(64,102,55,.18); }
html .nav-contact:hover { background:var(--leaf-100); }
html .research-stage .status-dot { background:#8fcf6a; }
html .route-item .route-role { color:var(--accent-text); }
html .route-header { background:radial-gradient(120% 150% at 100% 0%, rgba(202,241,184,.42), transparent 58%), var(--surface-eucalyptus); }
/* Hero scrim in the forest palette; on phones it reaches higher so the label stays legible over sky */
html .hero::before { background:linear-gradient(90deg,rgba(14,34,24,.9),rgba(14,34,24,.64) 40%,rgba(14,34,24,.04) 76%); }
@media(max-width:700px) { html .hero::before { background:linear-gradient(0deg,rgba(14,34,24,.96),rgba(14,34,24,.74) 55%,rgba(14,34,24,.38) 78%,rgba(14,34,24,.06) 100%); } }

/* CO2 orbit dots match the atom icon's electrons: same fill, same thin pale rim */
html .orbit-traveler::after { background:var(--stone-400); box-shadow:0 0 0 1.5px var(--stone-100); width:9px; height:9px; }
/* Match the last service row’s bottom gap to the preceding row dividers. */
html .solar-feature.section-wrap { padding-bottom:0; }

/* Phones: the CO2 movement sits exactly centred between the text above it and the
   "P2 CleanTech Labs" text below it. Ring group = 1.25 x ring size (offsets -8% / +17%). */
@media(max-width:700px) {
  html .research-art {
    --orb:180px; --ring-gap:var(--space-s); --cap:1.125rem; --cap-pad:var(--space-m);
    --top:calc(var(--ring-gap) + var(--cap) + var(--cap-pad) + var(--space-xl) - var(--space-section));
    display:block; min-height:0; padding:0;
    height:calc(var(--top) + 1.25 * var(--orb) + var(--ring-gap) + var(--cap) + var(--cap-pad));
  }
  html .research-art .orbit { width:var(--orb); left:calc(50% - var(--orb) / 2); top:calc(var(--top) + .08 * var(--orb)); }
  html .research-art .orbit-center { position:absolute; left:0; right:0; text-align:center; top:calc(var(--top) + .08 * var(--orb) + var(--orb) / 2); transform:translateY(-50%); line-height:1; }
  html .research-art .art-caption { position:absolute; left:0; right:0; bottom:auto; text-align:center; top:calc(var(--top) + 1.25 * var(--orb) + var(--ring-gap)); line-height:1.5; margin:0; }
  html .research-copy { padding-top:var(--space-xl); }
}

/* ==== P2 Solar story film (homepage, right after the hero). Native SVG/DOM animated by p2-film.js.
   Everything is prefixed .p2f. The default (no script, reduced motion) is the final frame: the company
   card. `.is-anim` holds the t = 0 state; GSAP then sets values through the CSSOM (CSP-safe). ==== */
.p2f { max-width:var(--max); margin:0 auto; padding:clamp(1.5rem,4vw,3.3rem) 2rem 1rem; }
.p2f-vh { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.p2f-stage { container-type:inline-size; position:relative; aspect-ratio:16/9; overflow:hidden; border-radius:10px; background:#0b1611; }
.p2f-film { position:absolute; left:0; top:0; width:1920px; height:1080px; overflow:hidden; transform:scale(var(--p2f-k, tan(atan2(100cqw, 1920px)))); transform-origin:0 0; font-family:var(--font-sans); }
.p2f-sky-night,.p2f-sky-day,.p2f-sky-dusk,.p2f-cell-dark,.p2f-vignette,.p2f-dim,.p2f-hud { position:absolute; inset:0; pointer-events:none; }
.p2f-sky-night { background:radial-gradient(120% 90% at 85% 0%,#14271f 0%,#0b1611 60%); }
.p2f-sky-day { background:linear-gradient(180deg,#d9e6e2 0%,#e9eee3 42%,#f5eed8 72%,#f7e6c4 100%); }
.p2f-sun { position:absolute; left:1380px; top:-60px; width:520px; height:520px; border-radius:50%; opacity:1; background:radial-gradient(circle,rgba(255,248,225,1) 0%,rgba(255,233,180,.85) 14%,rgba(255,214,140,.32) 34%,rgba(255,214,140,0) 68%); }
.p2f-sky-dusk { opacity:0; background:linear-gradient(180deg,#0f201c 0%,#1d3833 38%,#5b5340 66%,#c98a4b 84%,#eeb066 100%); }
.p2f-world { position:absolute; left:0; top:0; width:100%; height:100%; display:block; }
.p2f-world .p2f-tr { visibility:hidden; fill:none; stroke-linecap:butt; stroke-linejoin:round; }
.p2f-world .p2f-pulse { visibility:hidden; fill:none; stroke-linecap:round; }
.p2f-world .p2f-lit { opacity:0; }
.p2f-dusktint { opacity:0; }
.p2f-cell-dark { background:#07100c; opacity:0; }
.p2f-bloom { position:absolute; left:1180px; top:-520px; width:1400px; height:1100px; border-radius:50%; opacity:0; mix-blend-mode:screen; pointer-events:none; background:radial-gradient(closest-side,rgba(255,214,150,.75),rgba(255,190,110,.28) 45%,rgba(255,190,110,0)); }
.p2f-beamrot { position:absolute; left:960px; top:410px; width:1900px; height:260px; transform-origin:0 50%; transform:rotate(-29deg); mix-blend-mode:screen; pointer-events:none; }
.p2f-beam { position:absolute; inset:0; opacity:0; background:linear-gradient(90deg,rgba(255,226,170,.55) 0%,rgba(255,206,140,.22) 30%,rgba(255,206,140,.16) 70%,rgba(255,226,170,.6) 100%); -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 38%,#000 62%,transparent 100%); mask-image:linear-gradient(180deg,transparent 0%,#000 38%,#000 62%,transparent 100%); }
.p2f-strike { position:absolute; left:660px; top:240px; width:600px; height:600px; border-radius:50%; opacity:0; mix-blend-mode:screen; pointer-events:none; background:radial-gradient(closest-side,rgba(255,236,196,.8),rgba(255,206,140,.25) 50%,rgba(255,206,140,0)); }
.p2f-sheenrot { position:absolute; left:0; top:-700px; width:700px; height:2500px; transform-origin:50% 50%; transform:rotate(22deg); mix-blend-mode:screen; pointer-events:none; }
.p2f-sheen { position:absolute; inset:0; transform:translateX(2300px); background:linear-gradient(90deg,rgba(255,240,215,0) 0%,rgba(255,240,215,.16) 40%,rgba(255,248,232,.34) 50%,rgba(255,240,215,.16) 60%,rgba(255,240,215,0) 100%); }
.p2f-vignette { background:none; }
.p2f-dim { background:none; opacity:0; }
.p2f-brand { position:absolute; left:96px; top:48px; visibility:hidden; opacity:0; }
.p2f-brand img { display:block; width:312px; height:116px; }
.p2f-hl { position:absolute; left:96px; top:190px; width:1500px; overflow:hidden; visibility:hidden; opacity:0; padding-bottom:6px; }
.p2f-hli { font-size:72px; line-height:1.12; font-weight:650; letter-spacing:-.015em; white-space:nowrap; color:#13261d; }
.p2f-hli--1 { color:#fffdf5; text-shadow:0 1px 2px rgba(3,10,7,.90),0 0 10px rgba(3,10,7,.80),0 0 26px rgba(3,10,7,.65),0 0 56px rgba(3,10,7,.45); }
.p2f-inlay { position:absolute; left:340px; top:150px; width:1240px; height:750px; border-radius:16px; overflow:hidden; background:#13261d; box-shadow:0 28px 80px rgba(10,24,17,.38),0 8px 24px rgba(10,24,17,.20),0 0 0 1px rgba(155,220,90,.50); }
.p2f-cardwrap { position:absolute; inset:0; }
/* t = 0 while the animation runs (GSAP takes over from here) */
.p2f.is-anim .p2f-sky-day { opacity:0; }
.p2f.is-anim .p2f-sun { opacity:1; }
.p2f.is-anim .p2f-sky-dusk,.p2f.is-anim .p2f-dusktint,.p2f.is-anim .p2f-dim { opacity:0; }
.p2f.is-anim .p2f-cell-dark { opacity:.92; }
.p2f.is-anim .p2f-sheen { transform:none; }
.p2f.is-anim .p2f-inlay { visibility:hidden; opacity:0; }
.p2f.is-anim .p2f-cardwrap { clip-path:inset(100% 0 0 0); }
.p2f.is-anim .p2f-card--film [data-p2f-step] { opacity:0; }

/* Company facts remain in the original inlay at every viewport width. */
.p2f-card { color:#1c2a22; }
.p2f-card a { text-decoration:none; }
.p2f-card a:hover { text-decoration:underline; text-underline-offset:.2em; }
.p2f-card a:focus-visible,.p2f-btn:focus-visible { outline:2px solid var(--forest); outline-offset:3px; }
.p2f-card-brand a:focus-visible { outline-color:#9bdc5a; }
.p2f-card-logo { display:block; height:auto; }
.p2f-card-url,.p2f-card-actions,.p2f-card-title,.p2f-facts,.p2f-facts dd { margin:0; }
.p2f-card-url { font-weight:650; color:#9bdc5a; }
.p2f-card-actions { display:flex; flex-direction:column; align-items:flex-start; }
.p2f-card-cta { font-weight:650; color:#efe9d8; }
.p2f-card-link { font-family:var(--font-mono); letter-spacing:.04em; color:#c9d4c0; }
.p2f-card-title { font-weight:650; letter-spacing:-.01em; color:#13261d; }
.p2f-facts { display:grid; }
.p2f-fact--symbol,.p2f-fact--rep { grid-column:1 / -1; }
.p2f-facts dt { font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.16em; line-height:1; color:#3f6b52; }
.p2f-facts dd { font-weight:600; }
.p2f-fact--symbol dd { font-weight:650; line-height:1; letter-spacing:.005em; color:#13261d; }
.p2f-fact--rep dd span { display:block; }
.p2f-card--film { position:absolute; inset:0; display:grid; grid-template-columns:380px 1fr; background:linear-gradient(180deg,#f6f3ea 0%,#f1eee2 100%); }
.p2f-card--film .p2f-card-brand { position:relative; padding:110px 48px 0; background:radial-gradient(120% 70% at 40% 18%,#1a3427 0%,#13261d 55%,#0f1f18 100%); }
.p2f-card--film .p2f-card-logo { width:284px; }
.p2f-card--film .p2f-card-url { position:absolute; left:48px; top:470px; font-size:42px; line-height:1.1; }
.p2f-card--film .p2f-card-url::before { content:""; display:block; width:48px; height:3px; margin-bottom:20px; background:#9bdc5a; }
.p2f-card--film .p2f-card-actions { position:absolute; left:48px; top:562px; width:300px; gap:18px; }
.p2f-card--film .p2f-card-cta { font-size:30px; line-height:1.2; }
.p2f-card--film .p2f-card-link { font-size:20px; }
.p2f-card--film .p2f-card-body { padding:110px 56px 0; }
.p2f-card--film .p2f-card-title { font-size:48px; line-height:1.1; }
.p2f-card--film .p2f-facts { margin-top:24px; grid-template-columns:max-content max-content 1fr; }
.p2f-card--film .p2f-fact { border-top:2px solid #cdd5c6; padding-right:28px; }
.p2f-card--film .p2f-fact--col,.p2f-card--film .p2f-fact--rep { margin-top:24px; }
.p2f-card--film .p2f-facts dt { margin-top:22px; font-size:17px; }
.p2f-card--film .p2f-facts dd { margin-top:12px; font-size:27px; line-height:1.25; }
.p2f-card--film .p2f-fact--symbol dd { font-size:88px; line-height:1; }
.p2f-card--film .p2f-fact--rep dd span { line-height:1.4; }
.p2f-controls { display:flex; flex-wrap:wrap; align-items:center; gap:.6rem 1rem; margin-top:.8rem; }
.p2f-controls[hidden],.p2f-btn[hidden] { display:none; }
.p2f-btn { font:inherit; font-size:.875rem; font-weight:600; line-height:1.2; padding:.6rem 1.05rem; border:1px solid var(--line); border-radius:999px; background:var(--paper-bright); color:var(--forest-deep); cursor:pointer; }
.p2f-btn:hover { background:var(--lime-wash); }
.p2f-btn[disabled] { opacity:.7; cursor:progress; }
.p2f-status { margin:0; font-size:.8rem; color:var(--muted); }
@media (max-width:760px) {
  .p2f { padding:1.5rem 1rem .5rem; }
  .p2f-stage { border-radius:8px; }
}

/* One quiet playback control; fixed row keeps the page steady in every state. */
.p2f-controls { display:grid; grid-template-columns:1fr; align-items:center; height:44px; min-height:44px; }
.p2f-controls[hidden] { display:grid; visibility:hidden; }
.p2f-controls .p2f-status { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0; }
.p2f-controls .p2f-toggle { position:relative; align-self:center; justify-self:start; width:auto; height:auto; min-height:0; margin:0; padding:2px 6px; border:0; border-radius:0; background:transparent; box-shadow:none; font-size:12px; line-height:1.2; font-weight:400; color:var(--muted); white-space:nowrap; }
.p2f-controls .p2f-toggle::after { content:""; position:absolute; top:50%; left:50%; width:max(100%,44px); height:44px; transform:translate(-50%,-50%); }
.p2f-controls .p2f-toggle:hover { text-decoration:underline; text-underline-offset:.2em; }
.p2f-controls .p2f-toggle:focus-visible { outline:2px solid currentColor; outline-offset:3px; }
.p2f-arrow { width:1em; height:1em; display:inline-block; vertical-align:-.125em; margin-left:.15em; fill:none; stroke:currentColor; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; }

/* Persistent website cue on the two linked Futricity logos. */
.brand-site-link { display:inline-flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:.375rem; min-width:44px; min-height:44px; padding:4px 0; color:var(--forest); text-decoration:none; border-radius:4px; }
.business-grid .division-logo-wrap.brand-site-link { height:auto; min-height:120px; gap:.375rem; }
.brand-site-cue { display:inline-flex; align-items:center; gap:.375rem; font-size:.8125rem; font-weight:600; line-height:1.5; color:var(--forest); text-decoration:underline; text-underline-offset:.2em; text-decoration-thickness:1px; }
.brand-site-cue svg { flex:none; width:14px; height:14px; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.brand-site-link:hover .brand-site-cue { text-decoration-thickness:2px; }
.brand-site-link:focus-visible { outline:2px solid var(--forest); outline-offset:5px; }

.futricity-inline { color:inherit; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.18em; border-radius:2px; }
.futricity-inline:hover { text-decoration-thickness:2px; }
.futricity-inline:focus-visible { outline:2px solid currentColor; outline-offset:3px; }
