/* Shared site styles. Responsive overrides are intentional. */
:root {
  --prussian: #2C4F6B;
  --oxide: #A9453A;
  --ink: #262420;
  --cream: #FBF7F2;
  --pale: #D7E3EE;
  --band: var(--prussian);
  --band-ink: var(--cream);
  --accent: var(--prussian);
  --action: var(--oxide);
  --body: #4A463F;
  --rule: rgba(38,36,32,.16);
  color-scheme: light;
  box-sizing: border-box;
  padding-top: env(safe-area-inset-top,0px);
  padding-bottom: env(safe-area-inset-bottom,0px);
}

*, ::before, ::after {
  box-sizing: inherit;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0px;
  background: var(--paper);
  color: var(--body);
  font-family: "DM Sans", Arial, Helvetica, sans-serif;
  font-size: 17px;
  line-height: 1.68;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: Lora, Georgia, serif;
  color: var(--ink);
  margin: 0px;
  line-height: 1.18;
  font-weight: 600;
}

a {
  color: var(--prussian);
}

a:focus-visible, button:focus-visible {
  outline: 2px solid var(--oxide);
  outline-offset: 3px;
}

p {
  margin: 0px 0px 16px;
  max-width: 66ch;
}

p:last-child {
  margin-bottom: 0px;
}

svg {
  max-width: 100%;
}

.wrap {
  width: 100%;
  margin: 0px auto;
  padding: 0px 26px;
}

header.top {
  border-bottom: 1px solid var(--rule);
}

header.top .wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.brand {
  display: flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
}

.brand b {
  font-family: Lora, Georgia, serif;
  line-height: 1.2;
  display: block;
}

.brand i {
  font-style: normal;
  text-transform: uppercase;
  display: block;
}

nav.main {
  display: flex;
  flex-wrap: wrap;
}

nav.main a {
  text-decoration: none;
  font-weight: 500;
}

nav.main a.here {
  color: var(--ink);
}

.hero {
  position: relative;
  overflow: hidden;
  background: var(--paper);
  border-bottom: 1px solid var(--rule);
  min-height: var(--hero-h,auto);
}

.hero .wrap {
  position: relative;
  z-index: 2;
  padding-top: 70px;
  padding-bottom: 70px;
  text-align: center;
}

.hero:not(.hero-home) .wrap::before {
  content: "";
  position: absolute;
  inset: -30px 0px;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(70% 62% at 50% 45%, rgba(215, 227, 238, 0.9) 0%, rgba(215, 227, 238, 0.7) 55%, rgba(215, 227, 238, 0) 84%);
}

.hero-home {
  align-items: center;
}

.hero-home h1, .hero-home .lede {
  margin-left: 0px;
  margin-right: 0px;
}

.hero-home .btns {
  justify-content: flex-start;
}

@media (max-width: 820px) {
  .hero-home {
    min-height: 520px;
  }

  .hero-home .wrap {
    padding-bottom: 110px;
  }
}

.hero-art {
  position: absolute;
  inset: 0px;
  z-index: 1;
  opacity: 0.5;
  pointer-events: none;
}

.kicker {
  font-size: 0.74rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--prussian);
  margin: 0px 0px 14px;
}

h1 {
  font-size: clamp(1.95rem, 4.2vw, 3.1rem);
  max-width: 19ch;
  margin: 0px auto;
}

.lede {
  font-size: 1.14rem;
  max-width: 62ch;
  margin: 22px auto 0px;
}

.btns {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  justify-content: center;
  margin-top: 26px;
}

.btn {
  display: inline-block;
  text-decoration: none;
  cursor: pointer;
  font-family: "DM Sans", Arial, sans-serif;
}

.btn[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

section {
  padding: 58px 0px;
}

.band {
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}

.band.dark {
  border-color: transparent;
}

.band.dark h2, .band.dark h3 {
  color: var(--band-ink);
}

.band.dark p, .band.dark .lede {
  color: rgb(207, 221, 233);
}

.band.dark .btn {
  border-color: var(--band-ink);
  color: var(--band-ink);
}

.band.dark .btn.solid {
  border-color: var(--action);
  color: rgb(255, 255, 255);
}

.band.pale {
  background: var(--pale);
}

.center {
  text-align: center;
}

.center .lede, .center h2 {
  margin-left: auto;
  margin-right: auto;
}

h2 {
  font-size: clamp(1.45rem, 2.7vw, 2.05rem);
}

h3 {
  font-size: 1.16rem;
  margin-bottom: 8px;
}

.eyebrow {
  font-size: 0.74rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--prussian);
  margin: 0px 0px 12px;
}

.cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0px, 1fr));
  gap: 26px;
  margin-top: 34px;
}

@media (max-width: 880px) {
  .cards {
    grid-template-columns: 1fr;
  }
}

.card {
  border: 1px solid var(--rule);
  padding: 26px 24px;
}

.card p {
  font-size: 1rem;
  margin: 0px;
}

.cv-role {
  display: grid;
  grid-template-columns: minmax(0px, 220px) minmax(0px, 1fr);
  gap: 28px;
  padding: 26px 0px;
  border-top: 1px solid var(--rule);
}

@media (max-width: 760px) {
  .cv-role {
    grid-template-columns: 1fr;
    gap: 10px;
  }
}

.cv-role .when {
  font-size: 0.86rem;
  letter-spacing: 0.06em;
  color: var(--prussian);
}

.cv-role h3 {
  margin-bottom: 4px;
}

.cv-role .org {
  font-size: 0.95rem;
  color: var(--ink);
  margin-bottom: 10px;
}

.cv-role ul {
  margin: 0px;
  padding-left: 20px;
}

.cv-role li {
  margin-bottom: 7px;
}

article.post {
  max-width: 760px;
  margin: 0px auto;
}

article.post h2 {
  font-size: 1.4rem;
  margin: 34px 0px 12px;
}

article.post h3 {
  font-size: 1.1rem;
  margin: 26px 0px 8px;
}

article.post .term-source {
  font-size: 0.9rem;
  color: var(--body);
  border-left: 3px solid var(--pale);
  padding-left: 10px;
  margin: 0px 0px 8px;
}

article.post ul {
  padding-left: 22px;
}

article.post li {
  margin-bottom: 8px;
}

article.post blockquote {
  margin: 22px 0px;
  padding: 6px 0px 6px 22px;
  border-left: 3px solid var(--oxide);
  color: var(--ink);
  font-style: italic;
}

article.post .byline {
  font-size: 0.92rem;
  color: var(--prussian);
  margin: 0px 0px 26px;
}

article.post .series-box {
  border-left: 3px solid var(--prussian);
  background: rgba(44,79,107,.06);
  padding: 14px 20px;
  margin: 0px 0px 30px;
}

article.post .series-box .kicker {
  margin-bottom: 8px;
}

article.post .series-box ol {
  margin: 0px;
  padding-left: 22px;
}

article.post .series-box li {
  margin-bottom: 4px;
}

article.post .series-box li[aria-current] {
  color: var(--ink);
  font-weight: 700;
}

article.post .series-box em {
  font-weight: 400;
  font-style: normal;
  color: var(--body);
}

article.post h3.faq-q {
  font-family: inherit;
  font-size: 1.02rem;
  margin: 22px 0px 4px;
}

article.post h3.faq-q + p {
  margin-top: 0px;
}

article.post hr {
  border-right: 0px;
  border-bottom: 0px;
  border-left: 0px;
  border-image: none;
  border-top: 1px solid var(--rule);
  margin: 30px 0px;
}

.tool {
  display: grid;
  gap: 22px;
}

.drop {
  border: 2px dashed var(--prussian);
  padding: 26px;
  text-align: center;
}

.drop.small {
  padding: 18px;
}

textarea {
  width: 100%;
  min-height: 230px;
  padding: 16px;
  border: 1px solid var(--rule);
  background: var(--cream);
  font-family: "DM Sans", Arial, sans-serif;
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink);
  resize: vertical;
}

.fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0px, 1fr));
  gap: 14px;
}

@media (max-width: 760px) {
  .fields {
    grid-template-columns: 1fr;
  }
}

.field label {
  display: block;
  font-size: 0.74rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--prussian);
  margin-bottom: 6px;
}

.field input {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--rule);
  background: var(--cream);
  font-family: "DM Sans", Arial, sans-serif;
  font-size: 15px;
  color: var(--ink);
}

.field input:focus {
  outline: 2px solid var(--prussian);
  outline-offset: -1px;
}

.field input.bad {
  border-color: var(--oxide);
  background: rgb(251, 241, 239);
}

.consent {
  font-size: 0.84rem;
  color: rgb(110, 103, 94);
  margin: 12px 0px 0px;
  max-width: 70ch;
}

.sent {
  border-left: 3px solid rgb(47, 107, 79);
  background: rgb(241, 246, 242);
  padding: 16px 20px;
  margin-top: 16px;
}

.toolbar {
  display: flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
}

.muted {
  font-size: 0.88rem;
  color: rgb(110, 103, 94);
}

.result {
  border: 1px solid var(--rule);
  background: var(--cream);
  padding: 0px;
  margin-top: 8px;
}

.claim {
  padding: 20px 22px;
  border-top: 1px solid var(--rule);
}

.claim:first-child {
  border-top: 0px;
}

.verdict {
  display: inline-block;
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 4px 11px;
  margin-bottom: 10px;
  color: rgb(255, 255, 255);
}

.v-supported {
  background: rgb(47, 107, 79);
}

.v-partly {
  background: rgb(185, 137, 42);
}

.v-unsupported {
  background: var(--oxide);
}

.v-unverifiable {
  background: rgb(110, 103, 94);
}

.claim .quote {
  font-family: Lora, Georgia, serif;
  font-size: 1.02rem;
  color: var(--ink);
  margin: 0px 0px 10px;
}

.claim .cite {
  font-size: 0.86rem;
  color: var(--prussian);
  margin-top: 8px;
}

.spinner {
  display: inline-block;
  width: 15px;
  height: 15px;
  border-top-color: var(--prussian);
  border-radius: 50%;
  animation: 0.8s linear 0s infinite normal none running spin;
  vertical-align: -2px;
}

@keyframes spin {
  100% { transform: rotate(360deg); }
}

.notice {
  border-left: 3px solid var(--prussian);
  padding: 16px 20px;
  font-size: 0.93rem;
}

footer.foot {
  background: var(--footer);
  color: var(--cream);
  text-align: center;
  padding: 40px 0px 44px;
}

footer.foot .fm {
  font-family: Lora, Georgia, serif;
  font-size: 0.98rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cream);
}

footer.foot p {
  margin: 10px auto 0px;
  font-size: 0.87rem;
  max-width: 62ch;
}

footer.foot a {
  color: var(--cream);
}

footer.foot .tag {
  color: var(--pale);
  font-size: 0.8rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin-top: 14px;
}

:root {
  --surface: #E5EDF4;
  --paper: var(--pale);
}

.wrap {
  max-width: 1440px;
  padding-left: clamp(22px, 4vw, 72px);
  padding-right: clamp(22px, 4vw, 72px);
}

.narrow {
  max-width: 850px;
}

header.top {
  position: relative;
  z-index: 5;
  border: 0px;
  color: var(--cream);
}

header.top .wrap {
  max-width: 1600px;
  min-height: 116px;
  gap: 24px;
  padding-top: 22px;
  padding-bottom: 22px;
  flex-wrap: nowrap;
}

.brand {
  position: relative;
  padding-left: 166px;
  min-height: 64px;
  flex-shrink: 0;
}

.brand .brand-mark {
  position: absolute;
  left: -10px;
  top: -12px;
  width: 164px;
  height: 164px;
  object-fit: contain;
  filter: drop-shadow(rgb(251, 247, 242) 0px 0px 1px);
}

.brand b {
  font-size: clamp(20px, 2.1vw, 32px);
  letter-spacing: -0.025em;
  text-transform: none;
  color: var(--cream);
  font-weight: 700;
}

.brand i {
  color: var(--pale);
  font-size: 10px;
  letter-spacing: 0.18em;
  margin-top: 8px;
}

nav.main {
  gap: 9px;
  justify-content: flex-end;
}

nav.main a {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 40px;
  background: var(--cream);
  color: var(--ink);
  border: 1px solid var(--prussian);
  outline: 1px solid var(--cream);
  outline-offset: 2px;
  padding: 8px 12px;
  text-transform: none;
  letter-spacing: 0px;
  font-size: 13px;
  white-space: nowrap;
}

nav.main a.here {
  font-weight: 700;
  text-decoration-line: underline;
  text-decoration-style: initial;
  text-decoration-color: var(--oxide);
  text-underline-offset: 7px;
  text-decoration-thickness: 2px;
}

nav.main a:hover {
  background: var(--pale);
  color: var(--ink);
}

nav.main a:focus-visible {
  outline: 3px solid var(--oxide);
  outline-offset: 4px;
}

.btn {
  position: relative;
  min-height: 46px;
  padding: 12px 22px;
  border: 1px solid var(--prussian);
  outline: 1px solid var(--prussian);
  outline-offset: 3px;
  color: var(--prussian);
  background: var(--pale);
  text-transform: none;
  font-size: 16px;
  letter-spacing: 0px;
  font-weight: 500;
  line-height: 1.4;
}

.btn.solid {
  background: var(--oxide);
  border-color: var(--cream);
  outline-color: var(--oxide);
  color: var(--cream);
}

.btn span {
  margin-left: 22px;
}

.btn:hover {
  background: rgb(197, 214, 229);
}

.btn.solid:hover {
  background: rgb(145, 60, 50);
}

.hero-home {
  display: block;
  min-height: 0px;
  padding: 0px;
  background: linear-gradient(90deg, rgba(251,247,242,.92) 0%, rgba(251,247,242,.75) 24%, rgba(251,247,242,0) 48%), var(--pale) url('/assets/home-community-clean.webp') right center/cover no-repeat;
  border: 0px;
}

.hero-home .wrap {
  max-width: 1536px;
  padding-top: 86px;
  padding-bottom: 100px;
  text-align: left;
}

.hero-home h1 {
  margin: 0px;
  max-width: 760px;
  font-size: clamp(42px, 4.65vw, 72px);
  line-height: 1.25;
  letter-spacing: -0.045em;
  font-weight: 700;
}

.hero-home h1 > span {
  display: block;
}

.hero-home h1 em {
  color: var(--oxide);
  font-style: normal;
}

.hero-home .lede {
  margin: 18px 0px 24px;
  max-width: 600px;
  font-size: clamp(18px, 1.8vw, 26px);
  line-height: 1.4;
  color: var(--prussian);
}

.hero-home .btns {
  gap: 26px;
  margin-top: 0px;
}

.mission-band {
  padding: 22px 0px;
  color: var(--cream);
}

.mission-band p {
  font-family: Lora, Georgia, serif;
  font-size: clamp(18px, 2.15vw, 31px);
  line-height: 1.6;
  font-weight: 600;
  max-width: none;
  text-align: center;
  margin: 0px;
}

.mission-band span {
  color: var(--oxide);
  padding: 0px 5px;
}

.home-services {
  padding: 35px 0px 40px;
}

.home-services h2 {
  font-size: clamp(29px, 3vw, 43px);
  margin-bottom: 30px;
}

.home-services h2::after {
  content: "";
  display: block;
  width: 65px;
  height: 2px;
  background: var(--oxide);
  margin-top: 13px;
}

.service-columns {
  display: grid;
  grid-template-columns: repeat(3, minmax(0px, 1fr));
  gap: 26px;
}

.service-columns article {
  display: flex;
  gap: 20px;
  align-items: flex-start;
}

.service-columns article + article {
  border-left: 1px solid rgba(44, 79, 107, 0.333);
  padding-left: 26px;
}

.service-columns h3 {
  font-size: clamp(19px, 1.65vw, 24px);
  line-height: 1.35;
}

.service-columns p {
  font-size: 16px;
  line-height: 1.5;
}

.service-icon {
  display: grid;
  place-items: center;
  flex: 0 0 66px;
  height: 66px;
  border-radius: 50%;
  background: var(--prussian);
  color: var(--cream);
  font-size: 42px;
  line-height: 1;
}

.service-icon.oxide {
  background: var(--oxide);
}

footer.foot .brand-mark {
  width: 110px;
  height: 110px;
  object-fit: contain;
  margin-bottom: 12px;
  filter: drop-shadow(rgb(251, 247, 242) 0px 0px 1px);
}

.hero:not(.hero-home) {
  background: linear-gradient(90deg, rgba(215, 227, 238, 0.96), rgba(215, 227, 238, 0.85)), var(--hero-map, url("/assets/home-cartography.webp")) center 35% / cover;
}

.hero:not(.hero-home) .hero-art {
  display: none;
}

.hero:not(.hero-home) .wrap {
  padding-top: 88px;
  padding-bottom: 48px;
}

.hero:not(.hero-home) h1 {
  line-height: 1.3;
}

.hero:not(.hero-home) .wrap::before {
  display: none;
}

.band {
  background: rgb(229, 237, 244);
}

.card {
  background: rgb(229, 237, 244);
  border-right: 0px;
  border-bottom: 0px;
  border-left: 0px;
  border-image: none;
  border-top: 2px solid var(--prussian);
}

.band.dark {
  background: var(--prussian);
}

.band.dark .btn {
  background: transparent;
}

.band.dark .btn.solid {
  background: var(--oxide);
}

.field input, textarea {
  background: rgb(238, 243, 247);
  border-color: rgb(111, 135, 154);
}

.drop {
  background: rgb(229, 237, 244);
}

.notice {
  background: rgb(229, 237, 244);
}

@media (max-width: 1240px) {
  header.top .wrap {
    flex-wrap: wrap;
    justify-content: center;
    padding-bottom: 20px;
  }

  .brand {
    margin-right: auto;
  }

  nav.main {
    margin-left: 166px;
    justify-content: flex-start;
    width: 100%;
    gap: 12px;
  }

  .brand .brand-mark {
    top: -9px;
  }

  .hero-home .wrap {
    padding-top: 60px;
  }

  .service-icon {
    flex-basis: 46px;
    height: 46px;
    font-size: 30px;
  }

  .service-columns article {
    gap: 12px;
  }

  .service-columns article + article {
    padding-left: 18px;
  }
}

@media (max-width: 800px) {
  .hero-home {
    background-position: 58% center;
  }

  .hero-home .wrap {
    background: linear-gradient(90deg, rgba(215, 227, 238, 0.96) 0%, rgba(215, 227, 238, 0.8) 55%, rgba(215, 227, 238, 0.067) 100%);
    padding-bottom: 75px;
  }

  .hero-home h1 {
    font-size: clamp(36px, 6.5vw, 52px);
    max-width: 610px;
  }

  .service-columns {
    grid-template-columns: 1fr;
  }

  .service-columns article + article {
    border-left: 0px;
    border-top: 1px solid rgba(44, 79, 107, 0.333);
    padding: 22px 0px 0px;
  }

  .service-icon {
    flex-basis: 62px;
    height: 62px;
    font-size: 36px;
  }

  .service-columns article {
    gap: 20px;
  }

  .mission-band span {
    padding: 0px 2px;
  }
}

@media (max-width: 520px) {
  header.top .wrap {
    padding: 18px 20px;
    gap: 15px;
  }

  .brand {
    padding-left: 100px;
    min-height: 70px;
    flex-shrink: 1;
  }

  .brand .brand-mark {
    width: 100px;
    height: 100px;
    left: -5px;
    top: -3px;
  }

  .brand b {
    font-size: 22px;
  }

  .brand i {
    font-size: 8px;
    letter-spacing: 0.08em;
    line-height: 1.6;
  }

  nav.main {
    margin-left: 0px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
  }

  nav.main a {
    font-size: 12px;
    padding: 6px;
    min-height: 42px;
  }

  .hero-home .wrap {
    padding-top: 32px;
    padding-bottom: 70px;
  }

  .hero-home h1 {
    font-size: clamp(29px, 8vw, 41px);
    letter-spacing: -0.04em;
    line-height: 1.32;
  }

  .hero-home .lede {
    font-size: 18px;
  }

  .desktop-break {
    display: none;
  }

  .hero-home .btns {
    gap: 18px;
  }

  .btn {
    font-size: 14px;
    padding: 11px 14px;
  }

  .btn span {
    margin-left: 10px;
  }

  .hero:not(.hero-home) .wrap {
    padding-top: 42px;
  }

  .mission-band p {
    font-size: 19px;
  }

  .mission-band span {
    display: block;
    font-size: 14px;
    line-height: 1.1;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .spinner {
    animation: auto ease 0s 1 normal none running none;
  }
}

:root {
  --charcoal-surface: #57534E;
  --footer: var(--charcoal-surface);
}

header.top {
  background: var(--ink);
}

.mission-band {
  background: var(--ink);
}

.work-fields, .work-fields .card {
  background: var(--cream);
}

@media (min-width: 801px) {
  .hero-home .wrap {
    padding-top: 70px;
    padding-bottom: 42px;
  }

  .hero-home h1 {
    font-size: clamp(40px, min(4.2vw, 7.5svh), 65px);
    line-height: 1.25;
  }

  .hero-home .lede {
    font-size: clamp(18px, 1.6vw, 23px);
    margin-top: 16px;
    margin-bottom: 22px;
  }
}

@media (max-width: 520px) {
  header.top .brand {
    min-height: 100px;
    align-items: center;
  }
}

header.top .brand {
  padding-left: 190px;
}

header.top .brand::before {
  content: "";
  position: absolute;
  left: -29px;
  top: -13px;
  width: 202px;
  height: 202px;
  background: rgb(255, 255, 255);
  clip-path: polygon(50% 0px, 100% 50%, 50% 100%, 0px 50%);
}

header.top .brand-mark {
  top: 6px;
  background: transparent;
  padding: 0px;
  border: 0px;
  filter: none;
}

@media (max-width: 1240px) and (min-width: 521px) {
  nav.main {
    margin-left: 190px;
  }
}

@media (max-width: 520px) {
  header.top .brand {
    padding-left: 118px;
    min-height: 124px;
  }

  header.top .brand::before {
    width: 124px;
    height: 124px;
    left: -17px;
    top: 0px;
  }

  header.top .brand-mark {
    top: 12px;
  }
}

.audiences {
  display: grid;
  grid-template-columns: repeat(2, minmax(0px, 1fr));
  background: var(--cream);
}

.audience-panel {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 6;
  gap: 0px;
  padding: 32px clamp(24px, 4vw, 72px) 34px;
  min-width: 0px;
}

.audience-panel.agencies {
  background: var(--cream);
}

.audience-panel.vendors {
  background: var(--pale);
}

.audience-intro h2 {
  font-size: clamp(26px, 2.65vw, 40px);
  line-height: 1.25;
  margin-bottom: 8px;
}

.audience-intro p {
  color: var(--prussian);
  font-size: 18px;
  margin-bottom: 18px;
}

.audience-service {
  border-top: 1px solid rgba(38, 36, 32, 0.25);
  padding: 16px 0px;
}

.audience-service h3 {
  font-size: clamp(20px, 1.65vw, 25px);
  line-height: 1.3;
  margin-bottom: 5px;
}

.audience-service p {
  font-size: 17px;
  line-height: 1.5;
  color: var(--prussian);
  max-width: none;
}

.audience-action {
  padding: 8px 4px 0px;
  align-self: end;
}

.btn.prussian {
  background: var(--prussian);
  border-color: var(--cream);
  color: var(--cream);
}

.btn.prussian:hover {
  background: rgb(32, 61, 84);
}

@media (max-width: 800px) {
  .audiences {
    grid-template-columns: 1fr;
  }

  .audience-panel {
    grid-row: auto;
    grid-template-rows: auto;
  }

  .audience-panel {
    padding: 32px 24px;
  }
}

.contact-cv {
  background: var(--cream);
  scroll-margin-top: 24px;
}

.contact-cv .cv-summary {
  margin: 20px 0px 30px;
}

.contact-cv h3 {
  margin-top: 28px;
}

.contact-cv h4 {
  font-size: 20px;
  line-height: 1.4;
}

.contact-cv .cv-role {
  padding-top: 22px;
  padding-bottom: 22px;
}

.hero-contact .btns {
  justify-content: flex-start;
  gap: 18px;
  margin-top: 28px;
  flex-wrap: wrap;
}

.hero-contact .btn {
  background: var(--cream);
  overflow-wrap: anywhere;
  min-width: 0px;
  max-width: 100%;
}

.hero-contact .btn.solid {
  background: var(--oxide);
}

.contact-start {
  background: var(--prussian);
  color: var(--cream);
  padding: 48px 0px;
}

.contact-start h2, .contact-start h3, .contact-start .kicker, .contact-start .step-number {
  color: var(--cream);
}

.contact-start h2 {
  font-size: clamp(30px, 3vw, 42px);
  line-height: 1.25;
}

.contact-start .kicker {
  margin-bottom: 14px;
}

.contact-steps {
  list-style: none;
  padding: 0px;
  margin: 30px 0px 0px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0px, 1fr));
  gap: 32px;
}

.contact-steps li {
  border-top: 2px solid var(--pale);
  padding-top: 18px;
}

.step-number {
  display: block;
  font-family: Lora, Georgia, serif;
  font-size: 30px;
  color: var(--oxide);
  margin-bottom: 12px;
}

.contact-steps h3 {
  font-size: 23px;
  line-height: 1.35;
  margin-bottom: 10px;
}

.contact-steps p {
  color: var(--cream);
  line-height: 1.6;
}

@media (max-width: 800px) {
  .contact-steps {
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .contact-start {
    padding: 36px 0px;
  }
}

.cv-expanded {
  padding: 60px 0px;
}

.cv-expanded .wrap {
  max-width: 1440px;
}

.cv-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}

.cv-heading h2 {
  font-size: clamp(32px, 3.2vw, 48px);
  line-height: 1.25;
}

.cv-heading .btn {
  flex-shrink: 0;
}

.cv-expanded .cv-summary {
  max-width: 65ch;
  font-size: 19px;
  margin: 18px 0px 0px;
}

.cv-expanded h3 {
  font-size: clamp(26px, 2.2vw, 34px);
  line-height: 1.3;
  margin: 0px 0px 22px;
}

.cv-expanded h4 {
  font-size: 22px;
  margin: 0px 0px 12px;
}

.cv-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  padding: 18px 0px;
  margin: 32px 0px;
}

.cv-nav a {
  font-weight: 500;
  text-underline-offset: 5px;
}

.cv-featured {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 28px;
  scroll-margin-top: 24px;
}

.cv-feature, .cv-credential {
  padding: 30px;
  border-top: 3px solid var(--oxide);
}

.cv-feature {
  background: var(--prussian);
  color: var(--cream);
}

.cv-feature h3, .cv-feature a, .cv-feature .kicker {
  color: var(--cream);
}

.cv-credential {
  background: var(--pale);
  border-color: var(--prussian);
}

.cv-credential .enp-monogram {
  font-family: Lora, Georgia, serif;
  color: var(--oxide);
  font-size: 48px;
  line-height: 1.3;
  margin: 10px 0px;
}

.cv-expanded .kicker {
  margin-bottom: 12px;
}

.cv-block {
  margin-top: 48px;
  padding-top: 32px;
  border-top: 1px solid var(--rule);
  scroll-margin-top: 24px;
}

.cv-timeline .cv-role {
  grid-template-columns: 150px 1fr;
}

.cv-timeline p, .cv-timeline li {
  max-width: 80ch;
}

.cv-project-grid, .cv-two-col {
  display: grid;
  grid-template-columns: repeat(2, minmax(0px, 1fr));
  gap: 28px 40px;
}

.cv-project-grid article {
  padding: 24px;
  background: var(--pale);
  border-top: 2px solid var(--prussian);
}

.cv-meta {
  font-size: 14px;
  color: var(--prussian);
  margin-bottom: 12px;
}

.cv-resource {
  font-size: 15px;
  margin-top: 18px;
}

.cv-expanded a {
  text-underline-offset: 4px;
}

.cv-training-list {
  list-style: none;
  padding: 0px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0px, 1fr));
  gap: 0px 36px;
}

.cv-training-list li {
  display: grid;
  grid-template-columns: 86px 1fr;
  gap: 16px;
  padding: 16px 0px;
  border-top: 1px solid var(--rule);
}

.cv-training-list span {
  color: var(--oxide);
  font-weight: 700;
}

.cv-expanded li {
  margin-bottom: 8px;
}

@media (max-width: 800px) {
  .cv-heading {
    display: block;
  }

  .cv-heading .btn {
    margin-top: 24px;
  }

  .cv-featured, .cv-project-grid, .cv-two-col, .cv-training-list {
    grid-template-columns: 1fr;
  }

  .cv-timeline .cv-role {
    grid-template-columns: 1fr;
  }

  .cv-feature, .cv-credential {
    padding: 24px;
  }

  .cv-expanded {
    padding: 38px 0px;
  }
}

.insight-filter {
  margin-top: 24px;
  max-width: 440px;
}

.insight-filter label {
  display: block;
  color: var(--cream);
  font-size: 14px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.insight-filter select {
  width: 100%;
  padding: 12px 42px 12px 16px;
  background: var(--cream);
  color: var(--ink);
  border: 2px solid var(--prussian);
  outline: 1px solid var(--cream);
  outline-offset: 3px;
  font: inherit;
  cursor: pointer;
}

.insight-filter select:focus-visible {
  outline: 3px solid var(--cream);
  outline-offset: 4px;
}

.insight-library {
  background: var(--cream);
  padding: 48px 0px 64px;
}

.insight-library > .wrap {
  max-width: none;
  padding-inline: clamp(24px, 4vw, 72px);
}

.insight-library-heading {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  border-bottom: 1px solid var(--rule);
  padding-bottom: 26px;
  margin-bottom: 32px;
}

.insight-library-heading h2 {
  font-size: clamp(28px, 2.4vw, 38px);
  line-height: 1.3;
}

.insight-library-heading .kicker {
  margin-bottom: 12px;
}

#insight-count {
  color: var(--prussian);
  font-size: 15px;
  margin: 0px;
}

.insight-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0px, 1fr));
  gap: 32px;
}

.insight-card {
  border-top: 3px solid var(--oxide);
  background: white;
  padding: 30px;
  max-width: 100%;
}

.insight-card h3 {
  font-size: 30px;
  line-height: 1.3;
  margin: 20px 0px 16px;
}

.insight-card h3 a {
  text-decoration: none;
  color: var(--ink);
}

.insight-card h3 a:hover {
  text-decoration: underline;
}

.insight-card > p {
  max-width: 65ch;
}

.insight-meta {
  color: var(--prussian);
  font-size: 14px;
}

.insight-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 20px;
}

.insight-tags a {
  display: inline-block;
  padding: 5px 12px;
  background: var(--prussian);
  color: var(--cream);
  font-size: 13px;
  text-decoration: none;
  border: 1px solid var(--prussian);
}

.insight-tags a:hover {
  background: var(--ink);
  border-color: var(--ink);
}

.insight-card .btn {
  margin-top: 10px;
}

.insight-card[hidden], .insight-filter[hidden], #insight-empty[hidden] {
  display: none;
}

@media (max-width: 800px) {
  .insight-grid {
    grid-template-columns: 1fr;
  }

  .insight-library-heading {
    display: block;
  }

  .insight-library-heading #insight-count {
    margin-top: 18px;
  }

  .insight-card {
    padding: 22px;
  }

  .insight-filter {
    margin-bottom: 8px;
  }
}

@media (min-width: 801px) {
  .hero-home .wrap {
    max-width: none;
    padding: 120px clamp(28px, 4vw, 72px) 24px;
  }

  .hero-home h1 {
    font-size: clamp(40px, min(4.2vw, 6.2svh), 65px);
  }
}

/* Interior title panels: one base layout and explicit responsive variants. */
.hero.hero-services { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); background:var(--ink); color:var(--cream); isolation:isolate; }
.hero.hero-services::after { content:''; display:block; grid-column:2; grid-row:1; background:var(--hero-map, url('/assets/services-cartography.webp')) center/cover no-repeat; border-left:3px solid var(--oxide); }
.hero.hero-services .wrap { grid-column:1; grid-row:1; width:100%; max-width:none; justify-self:stretch; padding:100px clamp(28px,4vw,72px) 38px; text-align:left; }
.hero.hero-services h1 { margin:0; max-width:18ch; font-size:clamp(34px,3.8vw,58px); line-height:1.25; }
.hero.hero-services h1,.hero.hero-services .kicker,.hero.hero-services .lede { color:var(--cream); }
.hero.hero-services .kicker { margin:0 0 20px; max-width:none; }
.hero.hero-services .kicker::after { content:''; display:block; width:62px; height:2px; background:var(--oxide); margin-top:18px; }
.hero.hero-services .lede { max-width:48ch; margin:24px 0 0; font-size:clamp(17px,1.4vw,21px); line-height:1.5; }
@media(min-width:801px) {
 .hero.hero-services h1 { font-size:clamp(32px,3.4vw,52px); }
}
@media(max-width:800px) {
 .hero.hero-services { grid-template-columns:1fr; }
 .hero.hero-services .wrap { padding:40px 24px; }
 .hero.hero-services::after { grid-column:1; grid-row:2; min-height:250px; border-left:0; border-top:3px solid var(--oxide); }
}

/* Keyboard access and readable footer text. */
.skip-link { position:absolute; left:16px; top:8px; z-index:20; padding:10px 18px; background:var(--cream); color:var(--ink); transform:translateY(-200%); }
.skip-link:focus { transform:translateY(0); }
#main-content:focus { outline:none; }

/* Searchable reference glossary */
.glossary-back{margin-top:24px;background:var(--cream)}
.glossary-library{background:var(--cream);padding:44px 0 64px}
.glossary-library>.wrap{max-width:1440px}
.glossary-controls{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) auto;align-items:end;gap:22px}
.glossary-controls label{display:block;color:var(--prussian);font-weight:700;font-size:14px;margin-bottom:8px}
.glossary-controls input,.glossary-controls select{width:100%;min-width:0;min-height:50px;border:1px solid var(--prussian);padding:12px;background:white;color:var(--ink);font:inherit}
.glossary-controls :focus-visible,.glossary-term summary:focus-visible,.glossary-alphabet button:focus-visible{outline:3px solid var(--oxide);outline-offset:3px}
.glossary-alphabet{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 34px}
.glossary-alphabet button{min-width:40px;min-height:40px;padding:6px 10px;border:1px solid var(--prussian);color:var(--prussian);background:transparent;font:inherit;cursor:pointer}
.glossary-alphabet button[aria-pressed="true"]{background:var(--prussian);color:var(--cream)}
.glossary-result-header{display:flex;align-items:baseline;justify-content:space-between;gap:20px}
.glossary-result-header h2{font-size:32px}
#glossary-count,.glossary-help{color:var(--prussian);font-size:15px}
.glossary-help{margin:12px 0 24px}
.glossary-term{border-top:1px solid #2c4f6b55;scroll-margin-top:24px}
.glossary-term:last-child{border-bottom:1px solid #2c4f6b55}
.glossary-term summary{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 0;cursor:pointer;list-style:none;font-family:Lora,Georgia,serif;font-size:22px;font-weight:600;color:var(--ink)}
.glossary-term summary::-webkit-details-marker{display:none}
.glossary-term summary::after{content:'+';font-family:'DM Sans',sans-serif;color:var(--oxide);font-size:28px;flex-shrink:0}
.glossary-term[open] summary::after{content:'−'}
.glossary-topic-label{margin-left:auto;font:12px 'DM Sans',sans-serif;color:var(--prussian);border:1px solid #2c4f6b55;padding:7px 10px;text-align:center;max-width:230px}
.glossary-definition{background:var(--pale);padding:26px 30px;margin-bottom:24px;max-width:100%;overflow-wrap:anywhere}
.glossary-definition p{max-width:85ch}
.glossary-definition .term-source{font-size:14px;border-bottom:1px solid #2c4f6b44;padding-bottom:16px;margin-bottom:20px}
.glossary-definition a,.glossary-about a{text-underline-offset:3px}
.glossary-permalink{font-size:14px;font-weight:700}
.glossary-about{margin-top:36px;border-top:2px solid var(--prussian);padding-top:22px}
.glossary-about summary{font-weight:700;cursor:pointer;color:var(--prussian);margin-bottom:16px}
.glossary-request{margin-top:30px}
.glossary-promo{display:flex;align-items:center;justify-content:space-between;gap:28px;background:var(--pale);padding:26px 30px;border-top:3px solid var(--prussian);margin-bottom:32px}
.glossary-promo p{margin:10px 0 0}.glossary-promo .btn{flex-shrink:0}
.glossary-controls[hidden],.glossary-alphabet[hidden],.glossary-term[hidden],#glossary-empty[hidden]{display:none}
@media(max-width:800px){.glossary-controls{grid-template-columns:1fr}.glossary-controls .btn{justify-self:start}.glossary-term summary{font-size:19px;gap:12px;flex-wrap:wrap}.glossary-term summary>span:first-child{flex:1 1 75%}.glossary-topic-label{order:3;margin:0;max-width:none}.glossary-definition{padding:20px}.glossary-promo{display:block}.glossary-promo .btn{margin-top:22px}.glossary-result-header{display:block}}

/* Ground Truth form: hidden bot-trap field. */
.gt-hp { position:absolute; left:-10000px; top:auto; width:1px; height:1px; overflow:hidden; }

/* Long-form Perspectives: editorial reading layout, scoped to this format. */
.hero.perspective-hero h1{font-size:clamp(32px,3.25vw,50px);max-width:22ch;min-height:0}
.perspective-hero .perspective-author{color:var(--cream);margin:22px 0 16px;font-size:15px}
.perspective-hero .insight-tags{justify-content:flex-start;margin:0;gap:8px}
.perspective-hero .insight-tags a{color:var(--cream);border:1px solid #fbf7f280;background:transparent}
.perspective-reading{background:var(--cream);padding:50px 0 80px}
.perspective-reading>.wrap{max-width:1200px}
.perspective-reading article.post{max-width:100%;font-size:18px;line-height:1.8}
.perspective-reading article.post>p,.perspective-reading article.post>h2,.perspective-reading article.post>ul,.perspective-reading article.post>ol{max-width:760px;margin-left:auto;margin-right:auto}
.perspective-reading article.post>h2{font-size:clamp(28px,3vw,36px);line-height:1.3;margin-top:60px;margin-bottom:24px;scroll-margin-top:25px}
.perspective-reading article.post p{margin-bottom:22px}
.perspective-contents{display:flex;gap:12px 24px;flex-wrap:wrap;align-items:center;border-bottom:1px solid #2c4f6b44;padding:0 0 24px;margin-bottom:44px;font-size:14px}
.perspective-contents strong{width:100%;letter-spacing:.08em;text-transform:uppercase;color:var(--prussian)}
.perspective-intro{max-width:760px;margin:0 auto 40px;font-size:22px;line-height:1.65}
.perspective-video{margin:32px 0}
.perspective-video video{display:block;width:100%;max-height:540px;background:var(--ink);object-fit:contain}
.perspective-reading figcaption{font-size:14px;line-height:1.6;color:var(--prussian);margin-top:15px}
.perspective-reading figure{margin-left:0;margin-right:0}
.perspective-transcript{max-width:760px;margin:25px auto 35px;padding:22px;border-top:2px solid var(--prussian);border-bottom:1px solid #2c4f6b44;background:#fff}
.perspective-transcript summary{cursor:pointer;font-weight:700;color:var(--prussian)}
.perspective-transcript .tx{display:grid;grid-template-columns:60px minmax(0,1fr);gap:15px;font-size:16px;margin-top:20px}
.perspective-transcript time{font-weight:700;color:var(--prussian)}
.perspective-transcript .loc{font-weight:700}
.perspective-transcript .nul{color:var(--oxide);font-weight:700}
.perspective-transcript .exhibit-note{font-size:13px;margin-bottom:0}
.perspective-callout{background:var(--prussian);color:var(--cream);padding:38px 48px;margin:46px 0;border-left:5px solid var(--oxide)}
.perspective-callout .kicker,.perspective-callout h3,.perspective-callout a{color:var(--cream)}
.perspective-reading .perspective-callout h3{font-size:30px;line-height:1.35;margin:12px 0 20px;max-width:32ch}
.perspective-callout p{max-width:76ch}
.perspective-diagram{padding:30px;background:var(--pale);border-top:3px solid var(--prussian)}
.assembly-flow{display:grid;grid-template-columns:.8fr 1.3fr 1fr;gap:26px;align-items:stretch;font-size:16px;line-height:1.55}
.assembly-flow>div{background:var(--cream);border:1px solid #2c4f6b66;padding:20px;min-width:0}
.flow-label{font-size:12px;font-weight:700;color:var(--prussian);letter-spacing:.05em;text-transform:uppercase}
.perspective-reading .assembly-flow h3{font-size:21px;line-height:1.35;margin:18px 0 12px}
.assembly-flow ul{padding-left:18px;margin-top:20px}
.flow-arrow{font-size:44px;color:var(--oxide)}
.flow-unknown{border-top:2px dashed var(--oxide);padding-top:2px;margin-top:22px}
.perspective-reading article.post ol.perspective-steps{padding-left:28px}
.perspective-steps li{padding:0 0 18px 12px}
.perspective-steps li::marker{color:var(--oxide);font-size:22px;font-weight:700}
.perspective-reading .perspective-steps h3{font-size:24px;margin:12px 0}
.perspective-closing{margin:50px 0;padding:38px 48px;background:var(--ink);color:var(--cream)}
.perspective-reading .perspective-closing h3{color:var(--cream);font-size:28px;line-height:1.5;margin-top:0}
.perspective-closing .btn{background:var(--oxide);color:var(--cream)}
@media(max-width:800px){.assembly-flow{grid-template-columns:1fr}.flow-arrow{display:none}.perspective-callout,.perspective-closing{padding:28px 24px}.perspective-diagram{padding:22px 16px}.perspective-reading{padding-top:30px}.perspective-reading article.post{font-size:17px}.perspective-intro{font-size:20px}.perspective-reading .perspective-callout h3{font-size:26px}.hero.perspective-hero h1{font-size:34px}}

/* Phone header and home hero (640px and below), September 25, 2026.
   Compact one-row header with a Menu button; the five links open as a stacked list.
   Without JavaScript the button stays hidden and the links show as before. */
.nav-toggle { display: none; }
@media (max-width: 640px) {
  header.top .wrap { flex-wrap: nowrap; align-items: center; justify-content: space-between; min-height: 0; padding: 12px 16px; gap: 12px; }
  header.top .brand { padding-left: 88px; min-height: 80px; margin-right: 0; flex-shrink: 1; min-width: 0; align-items: center; }
  header.top .brand::before { width: 80px; height: 80px; left: 0; top: 0; }
  header.top .brand .brand-mark { width: 64px; height: 64px; left: 8px; top: 8px; }
  header.top .brand b { font-size: 18px; line-height: 1.15; }
  header.top .brand i { font-size: 7.5px; letter-spacing: 0.08em; margin-top: 5px; white-space: normal; line-height: 1.5; }
  header.top.has-toggle .nav-toggle { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; flex-shrink: 0; width: 56px; min-height: 52px; padding: 12px 4px 6px; background: var(--cream); color: var(--ink); border: 1px solid var(--prussian); outline: 1px solid var(--cream); outline-offset: 2px; font: 700 11px/1 "DM Sans", system-ui, sans-serif; letter-spacing: 0.04em; cursor: pointer; }
  .nav-toggle:focus-visible { outline: 3px solid var(--oxide); outline-offset: 3px; }
  .nav-toggle-bars, .nav-toggle-bars::before, .nav-toggle-bars::after { display: block; width: 16px; height: 2px; background: currentColor; }
  .nav-toggle-bars { position: relative; }
  .nav-toggle-bars::before, .nav-toggle-bars::after { content: ""; position: absolute; left: 0; }
  .nav-toggle-bars::before { top: -5px; }
  .nav-toggle-bars::after { top: 5px; }
  header.top.nav-open .nav-toggle-bars { background: transparent; }
  header.top.nav-open .nav-toggle-bars::before { top: 0; transform: rotate(45deg); }
  header.top.nav-open .nav-toggle-bars::after { top: 0; transform: rotate(-45deg); }
  header.top.has-toggle .wrap { flex-wrap: wrap; }
  header.top.has-toggle .brand { flex: 1 1 0; }
  header.top.has-toggle nav.main { display: none; }
  header.top.has-toggle.nav-open nav.main { display: grid; grid-template-columns: 1fr; gap: 8px; width: 100%; margin: 4px 0 4px; }
  header.top.has-toggle.nav-open nav.main a { justify-content: flex-start; font-size: 16px; min-height: 48px; padding: 10px 16px; }
  .hero-home { min-height: 0; background: var(--cream); }
  .hero-home::after { content: ''; display: block; width: 100%; aspect-ratio: 2 / 1; background: url('/assets/home-community-clean-sm.webp') right center / cover no-repeat; }
  .hero-home .wrap { padding-top: 36px; padding-bottom: 64px; }
}
@media (max-width: 360px) {
  header.top .brand { padding-left: 72px; min-height: 64px; }
  header.top .brand::before { width: 64px; height: 64px; }
  header.top .brand .brand-mark { width: 50px; height: 50px; left: 7px; top: 7px; }
  header.top .brand b { font-size: 15px; }
  header.top .brand i { display: none; }
  header.top .wrap { padding: 10px 12px; gap: 10px; }
}

/* Per-page title maps: phones get the lighter copy of the same map. */
@media (max-width: 800px) {
  .hero.hero-services::after { background-image: var(--hero-map-sm, var(--hero-map, url('/assets/services-cartography.webp'))); }
  .hero:not(.hero-home):not(.hero-services) { background-image: linear-gradient(90deg, rgba(215, 227, 238, 0.96), rgba(215, 227, 238, 0.85)), var(--hero-map-sm, var(--hero-map, url("/assets/home-cartography.webp"))); }
}

/* Desktop title panels. From 1600px the map column is twice as wide as the
   panel is tall, matching the maps' 2:1 shape, so each whole route shows edge
   to edge. From 1100px to 1599px the columns are closer to even and the map is
   trimmed slightly at the sides, aimed at the route. Below 1100px the map sits
   under the text at full width and full shape. */
@media (min-width: 801px) {
  .hero.hero-services { min-height: 0; }
  .hero.hero-services .wrap { align-self: center; }
  .hero.hero-services h1 { min-height: 0; }
  .hero.hero-services::after {
    background: var(--hero-map, url('/assets/services-cartography.webp')) var(--hero-map-x, 50%) 50% / cover no-repeat;
  }
}
@media (min-width: 1600px) {
  .hero.hero-services {
    --panel-h: clamp(420px, 27vw, 540px);
    min-height: var(--panel-h);
    grid-template-columns: minmax(0, 1fr) calc(var(--panel-h) * 2);
  }
  .hero.hero-services .wrap { padding: 96px clamp(40px, 4vw, 72px) 48px; }
}
@media (min-width: 1100px) and (max-width: 1599px) {
  .hero.hero-services { min-height: 400px; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); }
  .hero.hero-services h1 { font-size: clamp(30px, 2.9vw, 44px); }
  .hero.hero-services .lede { font-size: 17px; }
  .hero.hero-services .kicker { margin-bottom: 14px; }
  .hero.hero-services .kicker::after { margin-top: 12px; }
  .hero.hero-services .lede { margin-top: 18px; }
  .hero.hero-services .wrap { padding: 96px clamp(28px, 3vw, 48px) 44px; }
}
@media (min-width: 801px) and (max-width: 1099px) {
  .hero.hero-services { grid-template-columns: 1fr; }
  .hero.hero-services .wrap { padding: 100px clamp(28px, 5vw, 64px) 44px; }
  .hero.hero-services h1 { max-width: 22ch; }
  .hero.hero-services::after { grid-column: 1; grid-row: 2; aspect-ratio: 2 / 1; border-left: 0; border-top: 3px solid var(--oxide); }
}

/* What We Do: keyword kicker inside the H1, and the Common questions section. September 29, 2026. */
.hero.hero-services h1 .kicker { display: block; font-family: "DM Sans", system-ui, sans-serif; font-weight: 500; line-height: 1.4; }
/* Keep the label clear of the logo diamond that hangs below the desktop header. */
@media (min-width: 1241px) { .hero.hero-services .kicker { margin-top: 26px; } }
.page-faq { background: var(--cream); }
.page-faq .wrap { max-width: 820px; padding-top: 56px; padding-bottom: 56px; }
.page-faq h2 { margin: 0 0 8px; }
.page-faq h3 { font-size: 21px; margin: 28px 0 8px; }
.page-faq p { margin: 0; max-width: 68ch; }

/* Security overview and other long-form document pages. October 3, 2026. */
.doc-page { background: var(--cream); }
.doc-page .wrap { max-width: 820px; padding-top: 48px; padding-bottom: 64px; }
.doc-page h2 { margin: 48px 0 12px; scroll-margin-top: 24px; }
.doc-page h3 { font-size: 21px; margin: 28px 0 8px; }
.doc-page p, .doc-page li { max-width: 68ch; line-height: 1.5; }
.doc-page p { margin: 0 0 14px; }
.doc-page ul { margin: 0 0 14px; padding-left: 22px; }
.doc-page li { margin: 0 0 10px; }
.doc-page a { color: var(--prussian); }
.doc-status { background: var(--pale); border-left: 3px solid var(--prussian); padding: 18px 22px; margin: 0 0 28px; }
.doc-status p { margin: 0; color: var(--ink); }
.doc-toc { display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 0 0 20px; border-bottom: 1px solid var(--rule); font-size: 15px; }
.doc-toc a { text-decoration: none; }
.doc-toc a:hover, .doc-toc a:focus-visible { text-decoration: underline; }
.doc-page .table-scroll { overflow-x: auto; margin: 8px 0 18px; }
.doc-table { width: 100%; border-collapse: collapse; font-size: 15px; }
.doc-table th, .doc-table td { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid var(--rule); }
.doc-table th { color: var(--ink); font-weight: 700; background: var(--pale); }

/* ---- Ground Truth GIS (/ground-truth/gis). © 2026 Ground Truth Advisors LLC. All rights reserved. ----
   The page runs under a strict content security policy, so it uses classes only:
   no inline style attributes. .sn-* classes style the readiness snapshot. */
.hero-gis { --hero-map:url('/assets/maps/ground-truth-gis-results.webp'); --hero-map-sm:url('/assets/maps/ground-truth-gis-results-sm.webp'); --hero-map-x:50%; }
.gtg { font-style: normal; }
.gtg h2 { font-family: Lora, Georgia, serif; color: var(--prussian); }
.gtg-back { margin: 0 0 18px; }
.gtg-intro { margin-bottom: 28px; }
.gtg-steps-list { padding-left: 22px; }
.gtg-steps-list li { margin: 6px 0; }
.gtg-limit { border-left: 3px solid var(--prussian); background: rgba(44,79,107,.06); padding: 12px 16px; }
.gtg-step { border-top: 1px solid var(--rule); padding-top: 22px; margin-top: 28px; }
.gtg-num { display: inline-flex; align-items: center; justify-content: center; width: 1.7em; height: 1.7em; border-radius: 50%; background: var(--prussian); color: var(--cream); font-family: "DM Sans", Arial, sans-serif; font-size: .8em; margin-right: 8px; vertical-align: .1em; }
.gtg-check { margin: 14px 0 0; }
.gtg-check input { margin-right: 6px; }
.gtg-datasets { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 18px 0; }
@media (max-width: 900px) { .gtg-datasets { grid-template-columns: 1fr; } }
.gtg-ds { border: 1px solid var(--rule); background: var(--cream); padding: 16px; min-width: 0; }
.gtg-ds h3 { margin: 0 0 10px; font-family: Lora, Georgia, serif; color: var(--prussian); }
.gtg-drop p { margin: 4px 0; }
.gtg-drop.over { background: var(--pale); }
.gtg-pick { padding: 6px 14px; position: relative; overflow: hidden; }
.gtg-pick input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; }
.gtg-pick:focus-within { outline: 2px solid var(--prussian); outline-offset: 2px; }
.gtg-file-line { margin: 12px 0 4px; overflow-wrap: anywhere; }
.gtg-link { background: none; border: 0; color: var(--prussian); text-decoration: underline; cursor: pointer; font: inherit; padding: 0 4px; }
.gtg-map { margin-top: 10px; }
.gtg-map h4, .gtg-map-group h4 { margin: 12px 0 6px; font-size: .95rem; }
.gtg-map summary { cursor: pointer; color: var(--prussian); font-weight: 600; }
.gtg-map-table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.gtg-map-table th, .gtg-map-table td { text-align: left; padding: 4px 6px; border-bottom: 1px solid var(--rule); vertical-align: middle; }
.gtg-map-table th { font-weight: 600; width: 45%; overflow-wrap: anywhere; }
.gtg-map-table select { max-width: 100%; width: 100%; padding: 4px; font: inherit; }
.gtg-map-table input[type=number] { width: 5.5em; padding: 3px; margin: 0 8px 0 4px; font: inherit; }
.gtg-map-table th .muted { display: block; font-weight: 400; }
.gtg-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.gtg-pre { max-width: 100%; overflow-x: auto; background: #fff; border: 1px solid var(--rule); padding: 8px; font-size: .8rem; }
.gtg-issues { margin: 0; padding-left: 18px; }
.gtg-issues li { margin: 4px 0; }
.gtg-block strong { color: var(--oxide); }
.gtg-families { padding-left: 20px; }
.gtg-progress { list-style: none; padding: 0; margin: 14px 0; }
.gtg-progress li { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--rule); padding: 6px 0; }
.gtg-state { font-weight: 600; color: var(--prussian); }
.gtg-about { margin-top: 32px; }
.gtg-payload { margin-top: 20px; }
.gtg-payload summary { cursor: pointer; color: var(--prussian); font-weight: 600; }
.gtg-copy { font-size: .84rem; color: rgb(110, 103, 94); margin-top: 28px; }
.gtg-table { border-collapse: collapse; width: 100%; margin: 8px 0; font-size: .9rem; display: block; overflow-x: auto; }
.gtg-table th { text-align: left; border-bottom: 2px solid var(--prussian); padding: 6px 8px; white-space: nowrap; }
.gtg-table td, .gtg-table tbody th { border-bottom: 1px solid var(--rule); padding: 6px 8px; vertical-align: top; text-align: left; }

/* Readiness snapshot (Results Layout Spec v2, section 4.1). Rendered by
   /gis/core/snapshot-render.mjs; bar widths come from data-w, set by app.mjs. */
.gtg-results { background: var(--cream); border-top: 1px solid var(--rule); padding: 0; }
.gtg-results-wrap { max-width: 1100px; margin: 0 auto; padding: 28px 20px 56px; }
.gtg-results-step { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
.gtg-results-step h2 { font-family: Lora, Georgia, serif; color: var(--prussian); margin: 0; }
.gtg-results-step p { margin: 4px 0 0; font-size: .92rem; }
.gtg-results-tools { display: grid; grid-template-columns: auto auto; gap: 6px 10px; justify-content: end; }
.gtg-emailform { border: 1px solid var(--rule); border-left: 4px solid var(--oxide); background: #fff; padding: 18px 20px; margin: 0 0 18px; }
.gtg-emailform h3 { font-family: Lora, Georgia, serif; color: var(--prussian); margin: 0 0 8px; }
.gtg-emailform .consent { font-size: .86rem; }
.gtg-emailform input.bad { outline: 2px solid var(--oxide); }
.gtg-results-tools p { grid-column: 1 / -1; text-align: right; font-size: .83rem; margin: 0; max-width: 46ch; justify-self: end; }
.sn-doc { --sn-p2: #7D97AE; --sn-p3: #C9D6E2; --sn-charcoal: #57534E; --sn-rule: rgba(38,36,32,.14); --sn-rule-strong: rgba(38,36,32,.28); --sn-tint: rgba(38,36,32,.035); --sn-hover: rgba(38,36,32,.04);
  background: var(--cream); color: var(--body); border: 1px solid var(--sn-rule); box-shadow: 0 1px 2px rgba(38,36,32,.08), 0 14px 36px rgba(38,36,32,.16); border-radius: 3px; overflow: hidden; font-family: "DM Sans", Arial, Helvetica, sans-serif; font-size: 15.5px; line-height: 1.5; font-style: normal; }
.sn-doc *, .sn-doc *::before, .sn-doc *::after { box-sizing: border-box; }
.sn-doc a { color: inherit; }
.sn-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.sn-letterhead { background: var(--ink); color: var(--cream); display: grid; grid-template-columns: auto 1fr auto; gap: 22px; align-items: center; padding: 20px 32px; position: relative; }
.sn-letterhead::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--prussian); }
.sn-diamond { width: 84px; height: 84px; background: #FFFFFF; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); display: grid; place-items: center; }
.sn-diamond img { width: 80%; height: 80%; display: block; }
.sn-doc .sn-org { font-size: .85rem; opacity: .8; margin: 0; }
.sn-letterhead h2 { font: 600 1.65rem/1.2 Lora, Georgia, serif; margin: 2px 0 0; color: var(--cream); }
.sn-lhmeta { display: grid; grid-template-columns: max-content max-content; gap: 2px 12px; font-size: .82rem; color: var(--cream); margin: 0; }
.sn-lhmeta dt { opacity: .7; }
.sn-lhmeta dd { margin: 0; }
.sn-inner { padding: 26px 32px 32px; }
.sn-doc h3 { font: 600 1.25rem/1.25 Lora, Georgia, serif; color: var(--prussian); margin: 0 0 14px; }
.sn-doc p { margin: 0 0 10px; max-width: none; }
.sn-status { display: inline-flex; align-items: center; gap: 7px; font-weight: 700; font-size: .86rem; white-space: nowrap; }
.sn-dot { width: 11px; height: 11px; border-radius: 50%; flex: none; }
.sn-st-work { color: var(--oxide); } .sn-st-work .sn-dot { background: var(--oxide); }
.sn-st-none { color: var(--sn-charcoal); font-weight: 500; } .sn-st-none .sn-dot { border: 2px solid var(--sn-charcoal); background: transparent; }
.sn-st-ok { color: var(--prussian); } .sn-st-ok .sn-dot { background: var(--prussian); }
.sn-st-clean { color: var(--prussian); } .sn-st-clean .sn-dot { background: linear-gradient(90deg, var(--prussian) 50%, transparent 50%); border: 2px solid var(--prussian); }
.sn-exec, .sn-section, .sn-card { padding: 0; }
.sn-exec { border: 1px solid var(--sn-rule-strong); border-radius: 3px; }
.sn-exectop, .sn-execbottom { display: grid; grid-template-columns: 1.35fr 1fr; }
.sn-execbottom { border-top: 1px solid var(--sn-rule-strong); }
.sn-verdictcard { padding: 22px 26px; border-left: 6px solid var(--oxide); }
.sn-doc .sn-eyebrow { font-size: .85rem; margin: 0 0 2px; }
.sn-doc .sn-verdict { font: 700 2.2rem/1.1 Lora, Georgia, serif; color: var(--oxide); margin: 0 0 12px; }
.sn-doc .sn-lead { font-size: 1.02rem; line-height: 1.55; color: var(--ink); margin-bottom: 16px; }
.sn-glance { border-left: 1px solid var(--sn-rule-strong); padding: 22px 24px; background: var(--sn-tint); }
.sn-doc h4 { font: 600 1.02rem/1.25 Lora, Georgia, serif; color: var(--prussian); margin: 0 0 10px; }
.sn-glist, .sn-keylist { list-style: none; margin: 0; padding: 0; }
.sn-glist li { border-top: 1px solid var(--sn-rule); }
.sn-glist li:first-child { border-top: none; }
.sn-glist a { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; align-items: center; padding: 10px 2px; text-decoration: none; }
.sn-glist a:hover .sn-gq { text-decoration: underline; }
.sn-gq { font-size: .92rem; color: var(--ink); font-weight: 500; }
.sn-gsub { grid-column: 1 / -1; font-size: .8rem; }
.sn-kpis { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--sn-rule-strong); }
.sn-kpi { padding: 16px 20px; border-left: 1px solid var(--sn-rule); }
.sn-kpi:first-child { border-left: none; }
.sn-big { font: 700 1.7rem/1.1 Lora, Georgia, serif; color: var(--ink); }
.sn-big small { font: 500 .95rem "DM Sans", Arial, sans-serif; color: var(--body); }
.sn-doc .sn-lbl { font-size: .85rem; margin: 4px 0 8px; }
.sn-meter { position: relative; height: 6px; background: var(--sn-rule); border-radius: 3px; }
.sn-meter span { position: absolute; left: 0; top: 0; bottom: 0; width: 0; border-radius: 3px; background: var(--prussian); }
.sn-mark { position: absolute; top: -4px; bottom: -4px; width: 2px; background: var(--ink); }
.sn-doc .sn-note { font-size: .78rem; margin: 6px 0 0; }
.sn-keys { padding: 18px 26px; }
.sn-keylist li { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; padding: 9px 0; border-top: 1px solid var(--sn-rule); }
.sn-keylist li:first-child { border-top: none; padding-top: 2px; }
.sn-kq { font-size: .76rem; font-weight: 700; color: var(--oxide); border: 1px solid var(--oxide); border-radius: 2px; padding: 1px 6px; height: max-content; margin-top: 2px; white-space: nowrap; }
.sn-doc .sn-keylist p { margin: 0; color: var(--ink); font-size: .95rem; }
.sn-take { padding: 18px 24px; border-left: 1px solid var(--sn-rule-strong); }
.sn-take p { font-size: .9rem; }
.sn-mix { display: flex; height: 12px; border-radius: 3px; overflow: hidden; margin: 4px 0 8px; }
.sn-mix span { display: block; height: 100%; width: 0; }
.sn-doc .sn-mixkey { display: grid; gap: 3px; font-size: .85rem; margin: 0 0 10px; }
.sn-mixkey i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 8px; vertical-align: -1px; }
.sn-mix-1 { background: var(--prussian); } .sn-mix-2 { background: var(--sn-p2); } .sn-mix-3 { background: var(--sn-p3); }
.sn-doc .sn-btn-primary { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 22px; background: var(--oxide); color: #FFFFFF; text-decoration: none; font: 500 .98rem "DM Sans", Arial, sans-serif; border-radius: 3px; box-shadow: inset 0 0 0 2px var(--oxide), inset 0 0 0 3.5px var(--cream); white-space: nowrap; }
.sn-btn-primary:hover { filter: brightness(.94); }
.sn-btn-primary:focus-visible, .sn-exbtn:focus-visible, .sn-glist a:focus-visible, .sn-jump:focus-visible { outline: 3px solid var(--prussian); outline-offset: 2px; }
.sn-doc .sn-purpose { font-size: .88rem; margin: 16px 0 0; padding: 10px 14px; border-left: 3px solid var(--prussian); }
.sn-purpose b { color: var(--ink); }
.sn-section { margin-top: 34px; }
.sn-qgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.sn-qtile { border: 1px solid var(--sn-rule-strong); border-radius: 3px; padding: 16px 18px; display: flex; flex-direction: column; gap: 8px; border-top: 4px solid var(--oxide); }
.sn-qtile { background: rgba(169,69,58,.045); }
.sn-qtile.sn-none { border-top-color: var(--sn-charcoal); background: var(--sn-tint); }
.sn-qtile.sn-cleanq { border-top-color: var(--prussian); background: rgba(44,79,107,.05); }
.sn-qhead { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.sn-doc .sn-qtile h4 { color: var(--ink); margin: 0; line-height: 1.3; }
.sn-doc .sn-qtile p { margin: 0; font-size: .9rem; }
.sn-doc .sn-qtile .sn-calls { font-size: .8rem; }
.sn-doc .sn-more { font-size: .86rem; color: var(--prussian); font-weight: 500; margin-top: auto; }
.sn-jumpbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 6px; }
.sn-doc .sn-jump { display: inline-flex; gap: 8px; align-items: baseline; border: 1px solid var(--sn-rule-strong); border-left: 4px solid var(--oxide); border-radius: 3px; padding: 6px 10px; text-decoration: none; font-size: .85rem; color: var(--ink); }
.sn-doc .sn-jump.sn-clean { border-left-color: var(--prussian); }
.sn-jump b { font-weight: 700; font-size: .8rem; color: var(--body); }
.sn-jump:hover { background: var(--sn-hover); }
.sn-doc .sn-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: .8rem; margin: 8px 0 0; }
.sn-legend i { display: inline-block; width: 12px; height: 12px; border-radius: 2px; margin-right: 6px; vertical-align: -2px; }
.sn-lg-go { background: var(--oxide); } .sn-lg-cl { background: var(--prussian); }
.sn-doc .sn-qgroup { display: flex; align-items: center; gap: 12px; margin: 30px 0 12px; font-size: 1.12rem; scroll-margin-top: 16px; }
.sn-qn { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--prussian); color: var(--cream); font: 700 .9rem "DM Sans", Arial, sans-serif; flex: none; }
.sn-card { border: 1px solid var(--sn-rule-strong); border-left: 6px solid var(--oxide); border-radius: 3px; margin: 0 0 16px; background: var(--cream); scroll-margin-top: 16px; }
.sn-card.sn-clean { border-left-color: var(--prussian); }
.sn-card.sn-clean .sn-cardhead { background: rgba(44,79,107,.07); }
.sn-cardhead { background: rgba(169,69,58,.07); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 20px; align-items: flex-end; padding: 16px 20px 12px; border-bottom: 1px solid var(--sn-rule); }
.sn-doc .sn-card h4 { font-size: 1.15rem; color: var(--ink); margin: 0; }
.sn-cardmeta { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; font-size: .86rem; }
.sn-prio { font-weight: 700; padding: 2px 9px; border-radius: 2px; font-size: .8rem; }
.sn-prio.sn-go { color: #FFFFFF; background: var(--oxide); }
.sn-prio.sn-cl { color: var(--cream); background: var(--prussian); }
.sn-meta-item b { color: var(--ink); }
.sn-affects { font-size: .8rem; border: 1px solid var(--sn-rule-strong); background: #FFFFFF; border-radius: 3px; padding: 1px 8px; white-space: nowrap; }
.sn-affects b { color: var(--ink); }
.sn-explain { display: grid; grid-template-columns: 1.6fr 1fr; }
.sn-explain > div { padding: 14px 20px; }
.sn-explain > div + div { border-left: 1px solid var(--sn-rule); background: var(--sn-tint); }
.sn-doc .sn-eh { font-weight: 700; color: var(--ink); font-size: .85rem; margin: 0 0 4px; }
.sn-explain p { font-size: .92rem; line-height: 1.55; }
.sn-doc .sn-sorting { font-size: .86rem; margin: 0 20px 14px; padding: 8px 12px; border-left: 3px solid var(--sn-p2); background: rgba(44,79,107,.05); }
.sn-sublist { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: 0 20px 14px; }
.sn-sublist table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.sn-sublist th { text-align: left; color: var(--ink); border-bottom: 1.5px solid var(--ink); padding: 6px 8px; }
.sn-sublist td { border-bottom: 1px solid var(--sn-rule); padding: 6px 8px; }
.sn-sublist td:last-child, .sn-sublist th:last-child { text-align: right; font-weight: 700; color: var(--ink); }
.sn-tablewrap { overflow-x: auto; }
table.sn-nc { width: 100%; border-collapse: collapse; font-size: .9rem; }
table.sn-nc thead th { text-align: left; font-size: .78rem; font-weight: 700; color: var(--body); padding: 8px 12px; border-top: 1px solid var(--sn-rule); border-bottom: 1.5px solid var(--sn-rule-strong); background: rgba(44,79,107,.08); color: var(--ink); }
table.sn-nc td { padding: 10px 12px; border-bottom: 1px solid var(--sn-rule); vertical-align: middle; }
table.sn-nc tbody tr:not(.sn-exrow):hover { background: var(--sn-hover); }
.sn-nm { color: var(--ink); font-weight: 500; display: block; }
.sn-cid { font-size: .74rem; }
th.sn-c-found, td.sn-c-found { white-space: nowrap; }
.sn-num { font: 700 1.15rem/1 "DM Sans", Arial, sans-serif; color: var(--ink); }
.sn-unit { font-size: .82rem; white-space: normal; }
.sn-c-work { font-size: .85rem; white-space: nowrap; }
.sn-c-ex { text-align: right; white-space: nowrap; }
.sn-layer { display: inline-flex; align-items: center; gap: 6px; font-size: .8rem; white-space: nowrap; }
.sn-layer::before { content: ""; width: 8px; height: 8px; border-radius: 2px; background: var(--prussian); }
.sn-layer.sn-l-pt::before { background: var(--ink); border-radius: 50%; }
.sn-layer.sn-l-ali::before { background: transparent; border: 1.5px solid var(--sn-charcoal); }
.sn-pill { font: 600 .8rem "DM Sans", Arial, sans-serif; color: var(--ink); border: 1px solid var(--sn-rule-strong); background: #FFFFFF; border-radius: 3px; padding: 1px 7px; margin: 0 4px 2px 0; white-space: nowrap; display: inline-block; }
.sn-exbtn { font: 500 .82rem "DM Sans", Arial, sans-serif; color: var(--prussian); background: transparent; border: 1px solid var(--prussian); border-radius: 3px; padding: 5px 10px; cursor: pointer; display: inline-flex; gap: 8px; align-items: center; min-height: 32px; }
.sn-exbtn:hover { background: var(--sn-tint); }
.sn-chev { width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); margin-top: -3px; transition: transform .15s; }
.sn-exbtn[aria-expanded="true"] .sn-chev { transform: rotate(-135deg); margin-top: 3px; }
.sn-noex { font-size: .78rem; }
.sn-exrow td { background: rgba(44,79,107,.06); padding: 0; }
.sn-exwrap { border-left: 3px solid var(--sn-p2); }
.sn-exwrap { padding: 10px 16px 14px 28px; }
.sn-doc .sn-exlabel { font-size: .8rem; margin: 0 0 6px; }
.sn-extable { width: 100%; border-collapse: collapse; font-size: .84rem; background: var(--cream); }
.sn-extable th { background: rgba(44,79,107,.06); text-align: left; font-size: .76rem; color: var(--body); border-bottom: 1px solid var(--sn-rule-strong); padding: 5px 8px; }
.sn-extable td { border-bottom: 1px solid var(--sn-rule); padding: 5px 8px; }
.sn-doc .sn-exmore { font-size: .8rem; margin: 8px 0 0; }
.sn-doc .sn-exmore a { color: var(--prussian); font-weight: 600; }
.sn-trunc { max-width: 26ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-block; vertical-align: bottom; }
.sn-prog { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.sn-prog > div { border: 1px solid var(--sn-rule-strong); border-top: 4px solid var(--prussian); border-radius: 3px; padding: 14px 16px; }
.sn-doc .sn-prog h4 { color: var(--ink); margin: 0 0 8px; }
.sn-doc .sn-prog p { font-size: .9rem; line-height: 1.55; margin: 0; }
.sn-next { margin-top: 30px; padding: 20px 24px; border: 1px solid var(--sn-rule-strong); border-left: 6px solid var(--prussian); border-radius: 3px; display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: center; justify-content: space-between; }
.sn-doc .sn-next p { margin: 0; max-width: 60ch; color: var(--ink); }
details.sn-fold { border-top: 1px solid var(--sn-rule-strong); margin-top: 28px; }
details.sn-fold > summary { cursor: pointer; font: 600 1.1rem/1.25 Lora, Georgia, serif; color: var(--prussian); padding: 16px 0; list-style: none; display: flex; justify-content: space-between; align-items: center; }
details.sn-fold > summary::-webkit-details-marker { display: none; }
details.sn-fold > summary::after { content: "Show"; font: 500 .85rem "DM Sans", Arial, sans-serif; color: var(--body); }
details.sn-fold[open] > summary::after { content: "Hide"; }
.sn-foldbody { padding-bottom: 6px; font-size: .92rem; }
.sn-foldbody ul { padding-left: 20px; margin: 6px 0 12px; }
.sn-foldbody li { margin-bottom: 8px; max-width: 72ch; }
.sn-foldbody table { width: 100%; border-collapse: collapse; font-size: .88rem; margin-bottom: 12px; }
.sn-foldbody th { text-align: left; border-bottom: 1.5px solid var(--ink); color: var(--ink); padding: 6px 8px; }
.sn-foldbody td { border-bottom: 1px solid var(--sn-rule); padding: 7px 8px; vertical-align: top; }
.sn-docfoot { border-top: 3px solid var(--prussian); margin-top: 26px; padding-top: 12px; font-size: .82rem; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 20px; }
.sn-doc .sn-docfoot p { margin: 0; }
@media (max-width: 860px) {
  .sn-exectop, .sn-execbottom, .sn-explain { grid-template-columns: 1fr; }
  .sn-glance, .sn-take { border-left: none; border-top: 1px solid var(--sn-rule-strong); }
  .sn-explain > div + div { border-left: none; border-top: 1px solid var(--sn-rule); }
  .sn-kpis { grid-template-columns: 1fr 1fr; }
  .sn-kpi:nth-child(3) { border-left: none; }
  .sn-kpi:nth-child(n+3) { border-top: 1px solid var(--sn-rule); }
  .sn-qgrid, .sn-prog, .sn-sublist { grid-template-columns: 1fr; }
  .sn-letterhead { grid-template-columns: auto 1fr; }
  .sn-lhmeta { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .gtg-results-wrap { padding: 20px 12px 40px; }
  .gtg-results-tools { justify-content: start; }
  .gtg-results-tools p { text-align: left; justify-self: start; }
  .sn-inner { padding: 18px 16px 24px; }
  .sn-letterhead { padding: 16px; }
  .sn-diamond { width: 64px; height: 64px; }
  .sn-letterhead h2 { font-size: 1.25rem; }
  .sn-doc .sn-verdict { font-size: 1.8rem; }
  table.sn-nc > thead { display: none; }
  table.sn-nc, table.sn-nc > tbody { display: block; width: 100%; }
  table.sn-nc > tbody > tr:not(.sn-exrow) { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; padding: 12px 14px; border-bottom: 1px solid var(--sn-rule); }
  table.sn-nc > tbody > tr:not(.sn-exrow) > td { display: block; border: none; padding: 0; }
  table.sn-nc > tbody > tr > td.sn-c-name, table.sn-nc > tbody > tr > td.sn-c-ex { flex-basis: 100%; }
  table.sn-nc > tbody > tr > td:nth-child(4):empty { display: none; }
  table.sn-nc > tbody > tr.sn-exrow, table.sn-nc > tbody > tr.sn-exrow > td { display: block; }
  .sn-c-ex { text-align: left; }
  .sn-exwrap { padding: 8px 12px; overflow-x: auto; }
}
@media print {
  body.gtg-page main > *:not(.gtg-results), body.gtg-page > *:not(main), .gtg-results-step, .gtg-emailform, .sn-exbtn, .sn-noex { display: none !important; }
  .gtg-results { background: #fff; border: 0; }
  .gtg-results-wrap { padding: 0; max-width: none; }
  .sn-doc { box-shadow: none; border: none; font-size: 12px; }
  .sn-exrow { display: table-row !important; }
  .sn-letterhead, .sn-diamond, .sn-prio, .sn-qn, .sn-dot, .sn-meter span, .sn-mix span, .sn-btn-primary, .sn-card, .sn-qtile, .sn-mixkey i, .sn-legend i { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  /* Large blocks (the executive summary, each area card) may split across pages,
     so a block that doesn't fit doesn't leave the rest of a page blank. Only small
     pieces stay whole, and headings stay with what follows them. */
  .sn-verdictcard, .sn-glance, .sn-kpi, .sn-keylist li, .sn-take, .sn-qtile, .sn-cardhead, .sn-explain > div,
  .sn-sublist table, .sn-exwrap, .sn-prog > div, .sn-next, table tr { break-inside: avoid-page; }
  .sn-doc h3, .sn-doc h4, .sn-qgroup, .sn-cardhead, .sn-legend, .sn-jumpbar,
  table.sn-nc > tbody > tr:not(.sn-exrow) { break-after: avoid-page; }
}

/* ---- Ground Truth hub (/ground-truth). © 2026 Ground Truth Advisors LLC. All rights reserved. ---- */
.gt-hub { font-style: normal; }
.gt-hub-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 0; }
@media (max-width: 880px) { .gt-hub-cards { grid-template-columns: 1fr; } }
.gt-hub-card { display: flex; flex-direction: column; gap: 14px; background: var(--cream); }
.gt-hub-card h2 { margin: 0; font-family: Lora, Georgia, serif; color: var(--prussian); }
.gt-hub-card .kicker { margin: 0; }
.gt-hub-card ul { margin: 0; padding-left: 20px; }
.gt-hub-card li { margin: 4px 0; }
.gt-hub-card .btn { align-self: flex-start; margin-top: auto; }
.gt-hub-note { margin-top: 28px; max-width: 70ch; }

/* Ground Truth checker heroes are infographics, not maps: show the whole image
   rather than cropping its sides, on a cream that matches the artwork. */
.hero.hero-services.hero-infographic::after { background-size: contain; background-position: center; background-color: #F4EFE5; }

/* Decorative motion follows the original homepage map's right/center cover crop.
   The phone map remains the existing ::after image beneath the copy. */
.home-map-animation { position: absolute; inset: 0; z-index: 1; pointer-events: none; mask-image: linear-gradient(90deg, transparent 24%, #000 48%); }
.home-map-animation svg { display: block; width: 100%; height: 100%; }
.home-map-animation[hidden], .home-map-controls[hidden] { display: none; }
.map-response-casing { fill: none; stroke: #fbf7f2; stroke-width: 7; stroke-linecap: round; stroke-linejoin: round; }
.map-response-route { fill: none; stroke: #b54b3d; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.map-tower-pulse { fill: none; stroke: #fbf7f2; stroke-width: 2.5; }
.map-tower-beacon { fill: #fbf7f2; stroke: #2c4f6b; stroke-width: 1.5; }
.map-response-unit { pointer-events: none; }
.map-incident { fill: none; stroke: #a9453a; stroke-width: 2; }
.map-signal { fill: none; stroke: #fbf7f2; stroke-width: 2; stroke-linecap: round; }
.home-map-controls { position: absolute; z-index: 3; right: 16px; bottom: 12px; display: flex; gap: 8px; }
.home-map-controls button { min-height: 36px; padding: 6px 10px; border: 1px solid #2c4f6b66; border-radius: 3px; background: #fbf7f2ed; color: #2c4f6b; font: 500 12px/1.4 "DM Sans", sans-serif; cursor: pointer; }
.home-map-controls button:focus-visible { outline: 3px solid var(--oxide); outline-offset: 3px; }
.home-map-controls button:disabled { cursor: default; opacity: .7; }
@media (max-width: 640px) {
  .home-map-animation { top: auto; height: 50vw; mask-image: none; }
  .home-map-controls { right: 8px; bottom: 8px; gap: 6px; }
  .home-map-controls button { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) { .home-map-animation { display: none; } }
