/* Self-hosted webfonts (latin subset, woff2).
   Files come from the Fontsource packages @fontsource/hepta-slab and
   @fontsource/inter — both fonts are SIL Open Font License 1.1.
   Self-hosting keeps the site off third-party requests and removes the
   render-blocking round trip to fonts.googleapis.com. */

/* ------------------------------------------------------- Hepta Slab (display) */
@font-face {
  font-family: "Hepta Slab";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/hepta-slab-400.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Hepta Slab";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/hepta-slab-600.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Hepta Slab";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/hepta-slab-700.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ------------------------------------------------------------- Inter (text) */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/inter-400.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/inter-500.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/inter-600.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/inter-700.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ==========================================================================
   Lobby Washington, LLC — site styles
   Brand: deep teal + ink navy + cream, Hepta Slab display / Inter text
   ========================================================================== */

/* --------------------------------------------------------------- tokens -- */
:root {
  /* brand */
  --ink:        #111c24;
  --ink-soft:   #1c2a34;
  --teal:       #004953;
  --teal-deep:  #00343b;
  --teal-lift:  #0a6470;
  --brass:      #8f6d39;   /* AA on white for small text */
  --brass-lift: #c8a262;   /* lighter variant for use on dark surfaces */

  /* surfaces */
  --paper:      #ffffff;
  --paper-warm: #faf8f5;
  --cream:      #f1eee7;
  --stone:      #e4e7e8;
  --line:       #dfe3e5;

  /* text */
  --text:       #22303a;
  --text-muted: #5b6b75;
  --text-invert:#ffffff;

  /* type */
  --display: "Hepta Slab", Georgia, "Times New Roman", serif;
  --body:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  /* metrics */
  --header-h: 88px;
  --wrap: 1200px;
  --wrap-narrow: 760px;
  --gutter: clamp(20px, 5vw, 56px);
  --radius: 4px;
  --radius-lg: 10px;

  --shadow-sm: 0 1px 2px rgba(17, 28, 36, .06), 0 2px 8px rgba(17, 28, 36, .05);
  --shadow-md: 0 4px 12px rgba(17, 28, 36, .08), 0 12px 32px rgba(17, 28, 36, .07);

  --ease: cubic-bezier(.22, .61, .36, 1);
}

@media (max-width: 860px) {
  :root { --header-h: 72px; }
}

/* ---------------------------------------------------------------- reset -- */
*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  /* FIX: anchors no longer land under the fixed header */
  scroll-padding-top: calc(var(--header-h) + 24px);
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--text);
  font-family: var(--body);
  font-size: 1.0625rem;      /* 17px — down from the old 19px slab body */
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-wrap: break-word;
}

img, svg, video { display: block; max-width: 100%; height: auto; }
button { font: inherit; }

/* ------------------------------------------------------------ typography -- */
h1, h2, h3, h4, h5 {
  font-family: var(--display);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.005em;
  color: var(--ink);
  margin: 0 0 .5em;
  text-wrap: balance;
}

h1 { font-size: clamp(2.1rem, 1.35rem + 2.6vw, 3.4rem); }
h2 { font-size: clamp(1.6rem, 1.15rem + 1.6vw, 2.4rem); }
h3 { font-size: clamp(1.25rem, 1.05rem + .7vw, 1.6rem); }
h4 { font-size: 1.125rem; }

p  { margin: 0 0 1.15em; }
p:last-child { margin-bottom: 0; }

.lede {
  font-size: clamp(1.125rem, 1.02rem + .45vw, 1.375rem);
  line-height: 1.6;
  color: var(--text-muted);
}

.eyebrow {
  font-family: var(--body);
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--teal);
  margin: 0 0 .9rem;
}
.eyebrow--light { color: rgba(255, 255, 255, .85); }

a { color: var(--teal); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { color: var(--teal-lift); }

:focus-visible {
  outline: 3px solid var(--brass-lift);
  outline-offset: 3px;
  border-radius: 2px;
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 200;
  background: var(--ink);
  color: #fff;
  padding: .75rem 1.25rem;
  border-radius: 0 0 var(--radius) 0;
}
.skip-link:focus { left: 0; }

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

/* ---------------------------------------------------------------- layout -- */
.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.wrap--narrow { max-width: calc(var(--wrap-narrow) + var(--gutter) * 2); }

.section { padding-block: clamp(3.5rem, 2rem + 6vw, 6.5rem); }
.section--tight { padding-block: clamp(2.5rem, 1.5rem + 4vw, 4.5rem); }
.section--cream { background: var(--paper-warm); }
.section--stone { background: var(--cream); }
.section--ink   { background: var(--ink); color: rgba(255, 255, 255, .82); }
.section--ink h2, .section--ink h3 { color: #fff; }
.section--teal  { background: var(--teal); color: rgba(255, 255, 255, .85); }
.section--teal h2, .section--teal h3 { color: #fff; }

.stack > * + * { margin-top: 1.15em; }

/* ---------------------------------------------------------------- header -- */
/* FIX: the old site's translucent header let page copy scroll through it and
   sat above the content it overlapped. This one is opaque, correctly layered,
   and the page reserves space for it. */
.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  height: var(--header-h);
  display: flex;
  align-items: center;
  background: transparent;
  transition: background-color .28s var(--ease), box-shadow .28s var(--ease),
              backdrop-filter .28s var(--ease);
}

/* transparent over a hero, solid everywhere else */
.site-header::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(17, 28, 36, .62), rgba(17, 28, 36, 0));
  opacity: 1;
  transition: opacity .28s var(--ease);
  pointer-events: none;
}

.site-header.is-solid,
body:not(.has-hero) .site-header {
  background: var(--ink);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .06), 0 6px 24px rgba(17, 28, 36, .18);
}
.site-header.is-solid::before,
body:not(.has-hero) .site-header::before { opacity: 0; }

.site-header__inner {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--gutter);
  display: flex;
  align-items: center;
  gap: 1.5rem;
  position: relative;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  text-decoration: none;
  flex: 0 0 auto;
}
.brand img { width: 72px; height: 72px; }
.brand__text {
  display: block;
  font-family: var(--display);
  font-weight: 700;
  font-size: 1.0625rem;
  line-height: 1.1;
  letter-spacing: .01em;
  color: #fff;
}
.brand__text span {
  display: block;
  font-family: var(--body);
  font-size: .625rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .62);
  margin-top: .25rem;
}
@media (max-width: 359px) { .brand__text { display: none; } }
@media (max-width: 860px) { .brand img { width: 56px; height: 56px; } }

.nav { margin-left: auto; display: flex; align-items: center; gap: clamp(.5rem, 1.6vw, 1.75rem); }

.nav__list {
  display: flex;
  align-items: center;
  gap: clamp(.25rem, 1.4vw, 1.5rem);
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav__list a {
  display: block;
  padding: .5rem .7rem;
  border-radius: var(--radius);
  color: rgba(255, 255, 255, .88);
  font-size: .9375rem;
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  transition: color .18s var(--ease), background-color .18s var(--ease);
}
.nav__list a:hover { color: #fff; background: rgba(255, 255, 255, .1); }
.nav__list a[aria-current="page"] {
  color: #fff;
  box-shadow: inset 0 -2px 0 var(--brass-lift);
}

.nav__cta {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .6rem 1.05rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .28);
  color: #fff;
  font-size: .9375rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color .18s var(--ease), border-color .18s var(--ease);
}
.nav__cta:hover { background: rgba(255, 255, 255, .2); border-color: rgba(255, 255, 255, .5); color: #fff; }

.nav__toggle {
  display: none;
  margin-left: auto;
  width: 44px; height: 44px;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, .3);
  border-radius: var(--radius);
  color: #fff;
  cursor: pointer;
}
.nav__toggle svg { width: 22px; height: 22px; }
.nav__toggle .icon-close { display: none; }
.nav__toggle[aria-expanded="true"] .icon-close { display: block; }
.nav__toggle[aria-expanded="true"] .icon-open  { display: none; }

@media (max-width: 940px) {
  .nav__toggle { display: inline-flex; }
  .nav {
    position: absolute;
    top: calc(var(--header-h) - 8px);
    left: var(--gutter);
    right: var(--gutter);
    flex-direction: column;
    align-items: stretch;
    gap: .25rem;
    padding: .75rem;
    background: var(--ink);
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    margin-left: 0;
    display: none;
  }
  .nav.is-open { display: flex; }
  .nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  .nav__list a { padding: .8rem .75rem; font-size: 1rem; }
  .nav__list a[aria-current="page"] { box-shadow: inset 3px 0 0 var(--brass-lift); }
  .nav__cta { justify-content: center; margin-top: .5rem; }
}

/* ------------------------------------------------------------------ hero -- */
/* Follows the original site's treatment: oversized seal top-left, the
   photograph left almost untouched, and the headline in its own panel so the
   copy has contrast without a scrim over the whole picture. */
.hero {
  position: relative;
  min-height: min(92vh, 900px);
  display: flex;
  align-items: flex-end;
  padding-top: var(--header-h);
  padding-bottom: clamp(2rem, 4vw, 4rem);
  background: var(--ink);
  overflow: hidden;
  isolation: isolate;
}
.hero__media { position: absolute; inset: 0; z-index: -2; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }

/* only a soft vignette — top for the nav, bottom to seat the panel */
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(to bottom, rgba(17, 28, 36, .42) 0%, rgba(17, 28, 36, .06) 22%, rgba(17, 28, 36, 0) 42%),
    linear-gradient(to top, rgba(17, 28, 36, .34) 0%, rgba(17, 28, 36, 0) 30%);
}

.hero__inner { width: 100%; display: flex; }

.hero__panel {
  margin-left: auto;
  max-width: 33rem;
  padding: clamp(1.35rem, 1rem + 1.5vw, 2rem);
  background: rgba(17, 28, 36, .8);
  border-radius: var(--radius-lg);
  box-shadow: 0 18px 50px rgba(17, 28, 36, .3);
}
@supports (backdrop-filter: blur(6px)) {
  .hero__panel { background: rgba(17, 28, 36, .68); backdrop-filter: blur(7px); }
}

.hero h1 {
  color: #fff;
  font-size: clamp(1.7rem, 1.15rem + 1.7vw, 2.4rem);
  margin-bottom: .55em;
}
.hero p { color: rgba(255, 255, 255, .88); font-size: clamp(.9375rem, .92rem + .2vw, 1.0625rem); }
.hero__actions { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.35rem; }

@media (max-width: 820px) {
  .hero { min-height: min(86vh, 720px); padding-bottom: 1.5rem; }
  .hero__panel { margin-left: 0; max-width: none; padding: 1.25rem 1.25rem 1.4rem; }
  .hero__media img { object-position: 54% 46%; }
  .hero .eyebrow { margin-bottom: .6rem; }
}

/* interior page banner */
.page-head {
  position: relative;
  padding-top: calc(var(--header-h) + clamp(3.25rem, 6vw, 6rem));
  padding-bottom: clamp(3rem, 5vw, 5rem);
  background: var(--teal-deep);
  overflow: hidden;
  isolation: isolate;
}
.page-head__media { position: absolute; inset: 0; z-index: -2; }
.page-head__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; }
/* Neutral ink scrim rather than a teal one: the teal tinted the marble green.
   Strong enough behind the text column for WCAG AA, then falls away so the
   photograph is actually visible on the right. */
.page-head::after {
  content: "";
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(to right,
      rgba(17, 28, 36, .88) 0%,
      rgba(17, 28, 36, .74) 42%,
      rgba(17, 28, 36, .70) 62%,
      rgba(17, 28, 36, .30) 88%,
      rgba(17, 28, 36, .18) 100%),
    linear-gradient(to bottom, rgba(17, 28, 36, .35) 0%, rgba(17, 28, 36, 0) 45%);
}
@media (max-width: 860px) {
  /* no room for a falloff on a phone — even, lighter scrim across the whole frame */
  .page-head::after {
    background: linear-gradient(to bottom, rgba(17, 28, 36, .8) 0%, rgba(17, 28, 36, .72) 100%);
  }
}
.page-head h1 { color: #fff; margin-bottom: .35em; }
.page-head p { color: rgba(255, 255, 255, .84); max-width: 62ch; margin: 0; }

.breadcrumb {
  display: flex; flex-wrap: wrap; gap: .4rem;
  list-style: none; margin: 0 0 1rem; padding: 0;
  font-size: .8125rem; letter-spacing: .04em;
  color: rgba(255, 255, 255, .6);
}
.breadcrumb a { color: rgba(255, 255, 255, .78); text-decoration: none; }
.breadcrumb a:hover { color: #fff; text-decoration: underline; }
.breadcrumb li + li::before { content: "/"; margin-right: .4rem; opacity: .5; }

/* --------------------------------------------------------------- buttons -- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .85rem 1.6rem;
  border: 1px solid transparent;
  border-radius: 999px;
  font-family: var(--body);
  font-size: .9375rem;
  font-weight: 600;
  letter-spacing: .01em;
  text-decoration: none;
  cursor: pointer;
  transition: transform .18s var(--ease), background-color .18s var(--ease),
              border-color .18s var(--ease), color .18s var(--ease), box-shadow .18s var(--ease);
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.btn--primary { background: var(--teal); color: #fff; box-shadow: var(--shadow-sm); }
.btn--primary:hover { background: var(--teal-lift); color: #fff; }

.btn--light { background: #fff; color: var(--ink); }
.btn--light:hover { background: var(--cream); color: var(--ink); }

.btn--ghost { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .45); }
.btn--ghost:hover { background: rgba(255, 255, 255, .12); border-color: #fff; color: #fff; }

.btn--outline { background: transparent; color: var(--teal); border-color: var(--teal); }
.btn--outline:hover { background: var(--teal); color: #fff; }

/* ----------------------------------------------------------------- cards -- */
.grid { display: grid; gap: clamp(1.25rem, 2.4vw, 2rem); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }

.card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: clamp(1.4rem, 1rem + 1.4vw, 2.1rem);
  box-shadow: var(--shadow-sm);
  transition: transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s var(--ease);
}
.card h3 { margin-bottom: .5rem; }
.card p  { color: var(--text-muted); margin-bottom: 0; }
a.card { display: block; text-decoration: none; color: inherit; }
a.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); border-color: #c9d2d5; }

.card__icon {
  width: 44px; height: 44px;
  display: grid; place-items: center;
  margin-bottom: 1.1rem;
  border-radius: 50%;
  background: var(--cream);
  color: var(--teal);
}
.card__icon svg { width: 22px; height: 22px; }

/* stat strip */
.stats { display: grid; gap: clamp(1.5rem, 3vw, 2.5rem); grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.stat__value {
  font-family: var(--display);
  font-size: clamp(2.1rem, 1.6rem + 1.9vw, 3rem);
  font-weight: 700;
  line-height: 1;
  color: #fff;
}
.stat__label { margin: .6rem 0 0; font-size: .9375rem; color: rgba(255, 255, 255, .72); }

/* --------------------------------------------------------------- content -- */
.prose h2 { margin-top: 2.4em; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { margin-top: 1.9em; color: var(--teal); }
.prose > p + h2 { margin-top: 2.2em; }
.prose ul { padding-left: 1.25em; margin: 0 0 1.15em; }
.prose li { margin-bottom: .45em; }

.service {
  border-top: 1px solid var(--line);
  padding-top: clamp(1.75rem, 3vw, 2.75rem);
  margin-top: clamp(1.75rem, 3vw, 2.75rem);
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .35rem 3rem;
}
.service:first-of-type { border-top: 0; margin-top: 0; padding-top: 0; }
@media (min-width: 900px) {
  .service { grid-template-columns: minmax(220px, 300px) minmax(0, 1fr); }
  .service h2 { margin-bottom: 0; position: sticky; top: calc(var(--header-h) + 1.5rem); }
}
.service h2 { font-size: clamp(1.35rem, 1.1rem + .9vw, 1.75rem); color: var(--teal); }

/* team */
.person {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2.75rem);
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  padding-block: clamp(2rem, 4vw, 3.5rem);
  border-top: 1px solid var(--line);
}
.person:first-of-type { border-top: 0; padding-top: 0; }
@media (min-width: 760px) {
  .person { grid-template-columns: minmax(200px, 270px) minmax(0, 1fr); }
}
.person__photo {
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--cream);
  box-shadow: var(--shadow-sm);
  max-width: 270px;
}
.person__photo img { width: 100%; }
.person__role {
  font-family: var(--body);
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brass);
  margin: 0 0 .55rem;
}
.person h2 { margin-bottom: .75rem; }

/* clients */
.client-group { margin-top: clamp(2.25rem, 4vw, 3.25rem); }
.client-group:first-of-type { margin-top: 0; }
.client-group h2 {
  font-size: 1.25rem;
  color: var(--teal);
  padding-bottom: .6rem;
  border-bottom: 2px solid var(--teal);
  margin-bottom: 0;
}
.client-list { list-style: none; margin: 0; padding: 0; }
@media (min-width: 880px) {
  .client-list { columns: 2; column-gap: clamp(2rem, 4vw, 3.5rem); }
  .client-list li { break-inside: avoid; }
}
.client-list li {
  padding: .85rem .25rem;
  border-bottom: 1px solid var(--line);
  display: flex;
  gap: .5rem;
  align-items: baseline;
}
.client-list .abbr { color: var(--text-muted); font-size: .875rem; white-space: nowrap; }

/* news */
.post-card { display: grid; gap: .5rem; }
.post-card time {
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brass);
}
.post-card h2 { font-size: clamp(1.3rem, 1.1rem + .8vw, 1.7rem); margin-bottom: .25rem; }

.notice {
  border-left: 3px solid var(--brass);
  background: var(--paper-warm);
  padding: 1.1rem 1.3rem;
  border-radius: 0 var(--radius) var(--radius) 0;
  color: var(--text-muted);
  font-size: .9375rem;
}

/* ----------------------------------------------------------------- forms -- */
.form { display: grid; gap: 1.15rem; }
.form__row { display: grid; gap: 1.15rem; }
@media (min-width: 620px) { .form__row--2 { grid-template-columns: 1fr 1fr; } }

.field { display: grid; gap: .4rem; }
.field label { font-size: .875rem; font-weight: 600; color: var(--ink); }
.field .req { color: #b3261e; }
.field input,
.field select,
.field textarea {
  width: 100%;
  padding: .75rem .9rem;
  font: inherit;
  font-size: 1rem;
  color: var(--text);
  background: #fff;
  border: 1px solid #c8d0d4;
  border-radius: var(--radius);
  transition: border-color .18s var(--ease), box-shadow .18s var(--ease);
}
.field textarea { min-height: 150px; resize: vertical; }
.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(0, 73, 83, .16);
}
.field__hint { font-size: .8125rem; color: var(--text-muted); }

.form__note { font-size: .875rem; color: var(--text-muted); }

.contact-panel {
  background: var(--ink);
  color: rgba(255, 255, 255, .8);
  border-radius: var(--radius-lg);
  padding: clamp(1.5rem, 1rem + 2vw, 2.25rem);
}
.contact-panel h2 { color: #fff; font-size: 1.35rem; }
.contact-panel a { color: #fff; }
.contact-panel dl { margin: 0; display: grid; gap: 1.1rem; }
.contact-panel dt {
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .5);
  margin-bottom: .2rem;
}
.contact-panel dd { margin: 0; }

/* ---------------------------------------------------------------- footer -- */
.site-footer {
  background: var(--ink);
  color: rgba(255, 255, 255, .68);
  padding-block: clamp(3rem, 5vw, 4.5rem) 2rem;
  font-size: .9375rem;
}
.site-footer a { color: rgba(255, 255, 255, .82); text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }

.footer__grid {
  display: grid;
  gap: clamp(2rem, 4vw, 3rem);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
  align-items: start;
}
.footer__brand img { width: 128px; height: 128px; margin-bottom: 1.25rem; }
.footer__title {
  font-family: var(--body);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .58);
  margin: 0 0 1rem;
}
.footer__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; }
.footer__address { font-style: normal; display: grid; gap: .55rem; }

.social { display: flex; gap: .6rem; margin-top: 1.25rem; }
.social a {
  width: 38px; height: 38px;
  display: grid; place-items: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .14);
  color: #fff;
  transition: background-color .18s var(--ease);
}
.social a:hover { background: var(--teal); }
.social svg { width: 17px; height: 17px; }

.footer__bottom {
  margin-top: clamp(2.5rem, 4vw, 3.5rem);
  padding-top: 1.5rem;
  border-top: 1px solid rgba(255, 255, 255, .12);
  display: flex;
  flex-wrap: wrap;
  gap: .75rem 1.5rem;
  justify-content: space-between;
  font-size: .8125rem;
  color: rgba(255, 255, 255, .5);
}

/* ------------------------------------------------------------------- cta -- */
.cta-band {
  background: var(--teal);
  color: #fff;
  text-align: center;
}
.cta-band h2 { color: #fff; max-width: 24ch; margin-inline: auto; }
.cta-band p { color: rgba(255, 255, 255, .85); max-width: 60ch; margin-inline: auto; }
.cta-band .btn { margin-top: 1.75rem; }

/* ------------------------------------------------------------ animations -- */
/* Progressive enhancement: the reveal animation only engages once the inline
   bootstrap script has added .js to <html>. Without JavaScript every element
   renders normally instead of staying invisible. */
.js .reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
.js .reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js .reveal { opacity: 1; transform: none; }
}

/* ------------------------------------------------------------------ misc -- */
.center { text-align: center; }
.mt-0 { margin-top: 0; }
.measure { max-width: 68ch; }

/* ------------------------------------------------------------ results/wins */
.wins { display: grid; gap: 0; }

.win {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .5rem 2.5rem;
  padding-block: clamp(1.35rem, 2.4vw, 1.9rem);
  border-top: 1px solid var(--line);
}
.win:first-child { border-top: 2px solid var(--teal); }
.win:last-child { border-bottom: 1px solid var(--line); }

@media (min-width: 780px) {
  .win { grid-template-columns: 150px minmax(0, 1fr); align-items: start; }
}

.win__meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: .55rem; }
.win__year {
  font-family: var(--body);
  font-size: .8125rem; font-weight: 600;
  letter-spacing: .1em; color: var(--text-muted);
}
.win__bill {
  font-family: var(--display);
  font-size: 1.0625rem; font-weight: 700; color: var(--teal);
  white-space: nowrap;
}
.win__client {
  font-size: .8125rem; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase;
  color: var(--brass); margin: 0 0 .35rem;
}
.win__body { margin: 0 0 .5rem; }
.win__outcome {
  display: inline-block; margin: 0;
  font-size: .8125rem; font-weight: 600;
  color: var(--teal);
  background: var(--cream);
  padding: .2rem .6rem; border-radius: 999px;
}

/* --------------------------------------------------------------- press */
.press-list { display: grid; gap: 0; }

.press {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .65rem 2.5rem;
  padding-block: clamp(1.6rem, 3vw, 2.4rem);
  border-top: 1px solid var(--line);
}
.press:first-child { border-top: 2px solid var(--teal); }
.press:last-child { border-bottom: 1px solid var(--line); }

@media (min-width: 860px) {
  .press { grid-template-columns: 190px minmax(0, 1fr); align-items: start; }
}

.press__meta { display: flex; flex-wrap: wrap; gap: .4rem .75rem; align-items: baseline; }
.press__date { font-size: .8125rem; font-weight: 600; letter-spacing: .06em; color: var(--text-muted); }
.press__outlet {
  font-family: var(--display); font-weight: 700;
  font-size: 1rem; color: var(--ink);
  flex-basis: 100%;
}
@media (max-width: 859px) { .press__outlet { flex-basis: auto; } }
.press__kind {
  font-size: .6875rem; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--teal); background: var(--cream);
  padding: .18rem .5rem; border-radius: 999px;
}
.press__title { font-size: clamp(1.15rem, 1rem + .6vw, 1.45rem); margin: 0 0 .6rem; }
.press__title a { color: var(--ink); text-decoration: none; }
.press__title a:hover { color: var(--teal); text-decoration: underline; }
.press__quote {
  margin: 0 0 .75rem;
  padding-left: 1rem;
  border-left: 3px solid var(--brass);
  font-size: 1.0625rem;
  line-height: 1.55;
  color: var(--text-muted);
  font-style: italic;
}
.press__link { margin: 0; font-size: .875rem; }

/* outlet strip */
.outlet-strip {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap;
  justify-content: center;
  gap: .6rem clamp(1.25rem, 3vw, 2.75rem);
}
.outlet-strip li {
  font-family: var(--display);
  font-weight: 700;
  font-size: clamp(.95rem, .85rem + .35vw, 1.2rem);
  color: var(--ink);
  opacity: .68;
}

/* service heading column gets an icon */
.service .card__icon { margin-bottom: .85rem; }

/* ------------------------------------------------------ session results */
.session {
  border-top: 1px solid var(--line);
  padding-top: clamp(1.75rem, 3vw, 2.5rem);
  margin-top: clamp(1.75rem, 3vw, 2.5rem);
}
.session:first-of-type { border-top: 0; margin-top: 0; padding-top: 0; }

.session__year {
  font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.1rem);
  color: var(--teal);
  margin-bottom: 1.25rem;
}
.session__year span {
  display: block;
  font-family: var(--body);
  font-size: .8125rem;
  font-weight: 500;
  letter-spacing: .04em;
  color: var(--text-muted);
  margin-top: .35rem;
}

.session__cols { display: grid; gap: clamp(1.75rem, 3.5vw, 3rem); }
@media (min-width: 860px) { .session__cols { grid-template-columns: 1.15fr 1fr; } }

.session__label {
  font-family: var(--body);
  font-size: .75rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase;
  margin: 0 0 1rem; padding-bottom: .5rem;
  border-bottom: 2px solid currentColor;
}
.session__label--pass { color: var(--teal); }
.session__label--stop { color: var(--brass); }

.session__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.15rem; }
.session__list li { display: grid; gap: .3rem; }
.session__list strong {
  font-family: var(--display);
  font-size: 1.0625rem;
  color: var(--ink);
}
.session__sector {
  font-size: .6875rem; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--brass);
}
.session__desc { color: var(--text-muted); font-size: .9375rem; line-height: 1.55; }
.session__list .win__outcome { justify-self: start; margin-top: .15rem; }

.session__list--stop li { padding-left: 1.15rem; position: relative; }
.session__list--stop li::before {
  content: "";
  position: absolute; left: 0; top: .62em;
  width: 10px; height: 2px;
  background: var(--brass);
}

/* pull quote */
.pull {
  margin: 1.75rem 0;
  padding: 1.5rem 0 1.5rem 1.6rem;
  border-left: 3px solid var(--teal);
}
.pull p {
  font-family: var(--display);
  font-size: clamp(1.2rem, 1.05rem + .7vw, 1.5rem);
  line-height: 1.4;
  color: var(--ink);
  margin: 0 0 .9rem;
}
.pull cite {
  font-family: var(--body);
  font-style: normal;
  font-size: .875rem;
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--text-muted);
}

/* --------------------------------------------------------------- spotlight */
.spotlight { display: grid; gap: clamp(1.75rem, 4vw, 3.5rem); align-items: start; }
@media (min-width: 900px) { .spotlight { grid-template-columns: minmax(200px, 280px) minmax(0, 1fr); } }

.spotlight__figure {
  border-top: 3px solid var(--brass-lift);
  padding-top: 1.1rem;
}
.spotlight__value {
  font-family: var(--display);
  font-size: clamp(3.2rem, 2.2rem + 4vw, 5rem);
  font-weight: 700;
  line-height: .95;
  color: #fff;
  margin: 0;
}
.spotlight__cap {
  margin: .75rem 0 0;
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brass-lift);
}
.spotlight__body p { color: rgba(255, 255, 255, .82); }
.spotlight__body h2 { margin-bottom: .75rem; }
.spotlight__meta {
  margin-top: 1.5rem !important;
  padding-top: 1.1rem;
  border-top: 1px solid rgba(255, 255, 255, .16);
  font-size: .875rem;
  color: rgba(255, 255, 255, .6) !important;
}
.spotlight__body .btn { margin-top: 1.5rem; }

/* ------------------------------------------------------- form states */
.form-success {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: clamp(1.4rem, 1rem + 1.6vw, 2.1rem);
  background: var(--cream);
  border-left: 3px solid var(--teal);
  border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
}
.form-success svg { width: 28px; height: 28px; color: var(--teal); flex: 0 0 auto; margin-top: .15rem; }
.form-success h3 { margin: 0 0 .4rem; font-size: 1.25rem; }
.form-success p { margin: 0; color: var(--text-muted); }

.form-error {
  margin: 1rem 0 0;
  padding: .8rem 1rem;
  background: #fdf3f2;
  border-left: 3px solid #b3261e;
  border-radius: 0 var(--radius) var(--radius) 0;
  font-size: .9375rem;
  color: #7a1c15;
}

.ghl-embed { border-radius: var(--radius-lg); overflow: hidden; }

/* footer newsletter */
.footer__signup .signup { display: grid; gap: .6rem; max-width: 320px; }
.footer__signup input[type="email"] {
  width: 100%;
  padding: .7rem .9rem;
  font: inherit;
  font-size: .9375rem;
  color: #fff;
  background: rgba(255, 255, 255, .07);
  border: 1px solid rgba(255, 255, 255, .2);
  border-radius: var(--radius);
}
.footer__signup input[type="email"]::placeholder { color: rgba(255, 255, 255, .42); }
.footer__signup input[type="email"]:focus {
  outline: none;
  border-color: var(--brass-lift);
  background: rgba(255, 255, 255, .12);
}
.footer__signup .btn { justify-content: center; }
.footer__signup .form-success {
  background: rgba(255, 255, 255, .07);
  border-left-color: var(--brass-lift);
  padding: 1rem;
}
.footer__signup .form-success h3 { color: #fff; font-size: 1rem; }
.footer__signup .form-success p { color: rgba(255, 255, 255, .7); font-size: .875rem; }
.footer__signup .form-success svg { width: 20px; height: 20px; color: var(--brass-lift); }

/* inline newsletter band */
.signup-band {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2.5rem);
  align-items: center;
}
@media (min-width: 820px) { .signup-band { grid-template-columns: 1.1fr 1fr; } }
.signup-band .signup { display: grid; gap: .75rem; }
@media (min-width: 520px) {
  .signup-band .signup { grid-template-columns: 1fr auto; align-items: start; }
  .signup-band .signup .form__note { grid-column: 1 / -1; }
}
.signup-band input[type="email"] {
  width: 100%;
  padding: .85rem 1rem;
  font: inherit;
  border: 1px solid #c8d0d4;
  border-radius: var(--radius);
  background: #fff;
}
.signup-band input[type="email"]:focus {
  outline: none; border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(0, 73, 83, .16);
}

/* next steps list */
.steps { counter-reset: step; list-style: none; margin: 0; padding: 0; display: grid; gap: 1.5rem; }
.steps li { counter-increment: step; display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 1rem; }
.steps li::before {
  content: counter(step);
  width: 38px; height: 38px;
  display: grid; place-items: center;
  border-radius: 50%;
  background: var(--cream);
  color: var(--teal);
  font-family: var(--display);
  font-weight: 700;
  font-size: 1rem;
}
.steps h3 { font-size: 1.0625rem; margin: .35rem 0 .3rem; }
.steps p { margin: 0; color: var(--text-muted); font-size: .9375rem; }

/* five footer columns once there is room; the auto-fit default wraps the
   last one onto its own row at desktop widths */
@media (min-width: 1100px) {
  .footer__grid {
    grid-template-columns: 1.15fr .62fr .82fr .68fr 1.05fr .78fr;
    gap: clamp(1.25rem, 2vw, 2.25rem);
  }
  .footer__grid .footer__list a { font-size: .875rem; }
}
@media (min-width: 700px) and (max-width: 1099px) {
  .footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ------------------------------------------------------------- tagline band
   Echoes the back of the firm's business card: teal ground, cream display
   type, oversized seal bleeding off the right edge. */
.tagline {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background: var(--teal);
  padding-block: clamp(3rem, 2rem + 4.5vw, 5.5rem);
}
.tagline__mark {
  position: absolute;
  z-index: -1;
  top: 50%;
  right: clamp(-320px, -14vw, -80px);
  transform: translateY(-50%);
  width: clamp(360px, 46vw, 640px);
  opacity: .11;
  pointer-events: none;
}
.tagline__mark img { width: 100%; height: auto; }

.tagline__text {
  font-family: var(--display);
  font-weight: 700;
  font-size: clamp(1.9rem, 1.2rem + 3.1vw, 3.4rem);
  line-height: 1.08;
  letter-spacing: -.01em;
  color: var(--cream);
  margin: 0;
  max-width: 16ch;
}
.tagline__sub {
  margin: clamp(1.25rem, 2.5vw, 1.9rem) 0 0;
  max-width: 54ch;
  color: rgba(255, 255, 255, .82);
  font-size: clamp(1rem, .95rem + .3vw, 1.125rem);
  line-height: 1.6;
}

@media (max-width: 640px) {
  .tagline__mark { opacity: .08; right: -34%; width: 78%; }
}

/* quiet brand line in the footer */
.footer__tagline {
  margin: 1.1rem 0 0;
  font-family: var(--display);
  font-weight: 600;
  font-size: .9375rem;
  line-height: 1.35;
  color: var(--brass-lift);
  letter-spacing: .01em;
}

/* ------------------------------------------------------------ cookie notice */
.consent {
  position: fixed;
  left: clamp(12px, 3vw, 24px);
  right: clamp(12px, 3vw, 24px);
  bottom: clamp(12px, 3vw, 24px);
  z-index: 150;
  max-width: 640px;
  margin-inline: auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  padding: 1.1rem 1.3rem;
  background: var(--ink);
  color: rgba(255, 255, 255, .82);
  border: 1px solid rgba(255, 255, 255, .14);
  border-radius: var(--radius-lg);
  box-shadow: 0 12px 40px rgba(17, 28, 36, .35);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .3s var(--ease), transform .3s var(--ease);
}
.consent.is-in { opacity: 1; transform: none; }
.consent__text { margin: 0; flex: 1 1 260px; font-size: .875rem; line-height: 1.5; }
.consent__text a { color: #fff; }
.consent__actions { display: flex; gap: .6rem; flex: 0 0 auto; }
.consent .btn { padding: .6rem 1.15rem; font-size: .875rem; }
.consent .btn--outline { color: #fff; border-color: rgba(255, 255, 255, .4); }
.consent .btn--outline:hover { background: rgba(255, 255, 255, .12); color: #fff; }
@media (prefers-reduced-motion: reduce) { .consent { transition: none; opacity: 1; transform: none; } }

/* ---------------------------------------------------------------- timeline */
.timeline { display: grid; gap: clamp(1.5rem, 3vw, 2.5rem); }
@media (min-width: 860px) { .timeline { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.timeline__item { border-top: 2px solid var(--brass-lift); padding-top: 1.25rem; }
.timeline__when {
  margin: 0 0 .6rem;
  font-size: .8125rem; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--brass-lift);
}
.timeline__item h3 { color: #fff; margin-bottom: .6rem; }
.timeline__item p:last-child { color: rgba(255, 255, 255, .78); font-size: .9375rem; }

/* ------------------------------------------------------------- comparison */
.compare { display: grid; gap: clamp(1rem, 2.5vw, 1.75rem); }
@media (min-width: 720px) { .compare { grid-template-columns: 1fr 1fr; } }
.compare__col {
  padding: clamp(1.4rem, 1rem + 1.4vw, 2rem);
  border-radius: var(--radius-lg);
  background: var(--paper-warm);
  border: 1px solid var(--line);
}
.compare__col--good { background: var(--cream); border-color: #ddd6c6; }
.compare__label {
  margin: 0 0 .75rem;
  font-size: .75rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-muted);
}
.compare__col--good .compare__label { color: var(--teal); }
.compare__col p:last-child { margin: 0; }

/* ------------------------------------------------------------- promo band */
.promo { display: grid; gap: clamp(1.25rem, 3vw, 2.5rem); align-items: center; }
@media (min-width: 880px) { .promo { grid-template-columns: minmax(0, 1fr) auto; } }
.promo .btn { white-space: nowrap; }
@media (max-width: 879px) { .promo .btn { white-space: normal; text-align: center; } }


/* ------------------------------------------- oversized seal over the hero */
body.has-hero .site-header::before {
  background: linear-gradient(to bottom, rgba(17, 28, 36, .34), rgba(17, 28, 36, 0));
}
body.has-hero .site-header:not(.is-solid) .brand img {
  width: clamp(92px, 9.5vw, 150px);
  height: auto;
  filter: drop-shadow(0 6px 18px rgba(17, 28, 36, .45));
  transition: width .28s var(--ease);
}
/* the seal is taller than the header bar, so let it hang below rather than
   clip off the top of the page */
body.has-hero .site-header:not(.is-solid) { overflow: visible; }
body.has-hero .site-header:not(.is-solid) .brand {
  align-items: center;
  transform: translateY(clamp(14px, 2.6vw, 40px));
}
body.has-hero .site-header:not(.is-solid) .brand__text { align-self: center; }
.brand img { transition: width .28s var(--ease); }

@media (max-width: 700px) {
  body.has-hero .site-header:not(.is-solid) .brand img { width: 84px; }
  body.has-hero .site-header:not(.is-solid) .brand { margin-top: 4px; }
}

/* ------------------------------------------------------- principal portrait */
.portrait-block { display: grid; gap: clamp(1.75rem, 4vw, 3.25rem); align-items: center; }
@media (min-width: 900px) { .portrait-block { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.portrait-block__img { margin: 0; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-md); }
.portrait-block__img img { width: 100%; height: auto; }
.portrait-block .pull { margin-top: 0; }

/* image on the right, content on the left */
@media (min-width: 900px) {
  .portrait-block--reverse .portrait-block__img { order: 2; }
  .portrait-block--reverse { align-items: start; }
  .portrait-block--reverse .portrait-block__img { position: sticky; top: calc(var(--header-h) + 2rem); }
}

/* ==========================================================================
   Mobile / touch refinements
   ========================================================================== */

/* iOS Safari zooms the whole page when a focused input is under 16px.
   Every field on the site is therefore at least 16px. */
.field input,
.field select,
.field textarea,
.footer__signup input[type="email"],
.signup-band input[type="email"] {
  font-size: 16px;
}

/* Touch devices get larger hit areas on standalone and list links. Links
   inside running prose are deliberately left alone — padding mid-sentence
   would break the line rhythm. */
@media (pointer: coarse) {
  .footer__list a,
  .footer__address a,
  .breadcrumb a,
  .client-list a,
  .press__link a,
  .post-card p > a,
  .post-card h2 a,
  #main :where(p, li, dd) > a:only-child,
  .footer__bottom a,
  .session__list a {
    display: inline-block;
    padding-block: .5rem;
    min-height: 24px;
  }

  .footer__list { gap: .1rem; }
  .footer__address { gap: .25rem; }
  .breadcrumb { gap: .2rem .4rem; }
  .footer__bottom { gap: .1rem; }

  /* the outlet strip on the home page doubles as a link target */
  .outlet-strip li { padding-block: .25rem; }

  /* comfortable spacing between stacked buttons */
  .hero__actions .btn,
  .cta-band .btn { min-height: 48px; }
}

/* --------------------------------------------------------------------------
   Sponsor line inside the session-by-session lists, and the two-column
   "who carries our bills" block on Results.
   -------------------------------------------------------------------------- */
.session__sponsor {
  display: block;
  margin-top: .35rem;
  font-size: .8125rem;
  line-height: 1.5;
  color: #6b4f26;
}
.session__list li .session__sponsor strong {
  font-family: var(--body);
  font-size: inherit;
  font-weight: 600;
  letter-spacing: 0;
  color: #4a361a;
  display: inline;
}

.aisle__list {
  list-style: none;
  margin: 1rem 0 0;
  padding: 0;
  display: grid;
  gap: .85rem;
}

.aisle__list li {
  position: relative;
  padding-left: 1.1rem;
  font-size: .9375rem;
  line-height: 1.55;
  color: var(--text-muted);
}

.aisle__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .55em;
  width: .4rem;
  height: .4rem;
  border-radius: 50%;
  background: var(--brass, #8f6d39);
}

.aisle__list strong { color: var(--text); }

.card--figure {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: .5rem;
}

.card--figure .stat__value { margin: 0; color: var(--teal); }
.card--figure .stat__label { margin: 0; }

/* ------------------------------------------------- amendment-win case studies */
.narrowed { display: grid; gap: clamp(2rem, 4vw, 3.25rem); }

.narrowed__case {
  padding-top: clamp(1.5rem, 3vw, 2.25rem);
  border-top: 2px solid var(--line);
}
.narrowed__case:first-child { border-top: 0; padding-top: 0; }

.narrowed__bill {
  margin: 0 0 .5rem;
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--teal);
}

.narrowed__case h3 { margin-bottom: clamp(1rem, 2vw, 1.5rem); max-width: 30ch; }

.narrowed__remains {
  margin: clamp(1rem, 2vw, 1.5rem) 0 .75rem;
  font-size: .9375rem;
  color: var(--text-muted);
  max-width: 78ch;
}

/* the "as introduced" column reads as the threat, the second as the result */
.narrowed .compare__col { background: #fbf7f4; border-color: #e6d9cf; }
.narrowed .compare__col .compare__label { color: #8a5a3c; }
.narrowed .compare__col--good { background: #fff; border-color: var(--line); }
.narrowed .compare__col--good .compare__label { color: var(--teal); }

/* ---------------------------------------------- feature list on Services */
.feature-list {
  list-style: none;
  margin: 0 0 1.15em;
  padding: 0;
  display: grid;
  gap: .9rem;
}
.feature-list li {
  position: relative;
  padding-left: 1.6rem;
  max-width: 74ch;
}
.feature-list li::before {
  content: "";
  position: absolute;
  left: .15rem;
  top: .62em;
  width: .5rem;
  height: .5rem;
  border-radius: 1px;
  transform: rotate(45deg);
  background: var(--brass);
}

/* ------------------------------------------------------- testimonials */
/* Rendered only when tools/pages.py TESTIMONIALS has entries. */

.quote-band figure { margin: 0; max-width: 46ch; }
.quote-band blockquote { margin: 0; }
.quote-band blockquote p {
  font-family: var(--display);
  font-size: clamp(1.4rem, 1.05rem + 1.5vw, 2.15rem);
  line-height: 1.3;
  color: #fff;
  margin: 0 0 1.5rem;
  text-wrap: balance;
}
.quote-band figcaption { display: grid; gap: .15rem; }
.quote-band__name {
  font-weight: 600;
  color: #fff;
  letter-spacing: .01em;
}
.quote-band__role {
  font-size: .9375rem;
  color: rgba(255, 255, 255, .78);
}

.quote-grid {
  display: grid;
  gap: clamp(1.25rem, 2.5vw, 2rem);
  grid-template-columns: 1fr;
}
@media (min-width: 760px) {
  .quote-grid { grid-template-columns: repeat(2, 1fr); }
}

.quote-card {
  margin: 0;
  padding: clamp(1.5rem, 1.1rem + 1.5vw, 2.25rem);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.quote-card blockquote { margin: 0; flex: 1; }
.quote-card blockquote p {
  margin: 0;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--text);
}
.quote-card figcaption {
  display: grid;
  gap: .1rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--line);
}
.quote-card__name { font-weight: 600; color: var(--ink); }
.quote-card__role { font-size: .875rem; color: var(--text-muted); }
.quote-card__org {
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--teal);
  margin-top: .25rem;
}

/* ------------------------------------------ permission block on forms */
.permission {
  margin: clamp(1.5rem, 3vw, 2rem) 0;
  padding: clamp(1.25rem, 1rem + 1vw, 1.75rem);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--paper-warm);
}
.permission legend {
  padding: 0 .5rem;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--teal);
}
.check {
  display: flex;
  gap: .75rem;
  align-items: flex-start;
  margin-bottom: 1rem;
  cursor: pointer;
  font-size: .9375rem;
  line-height: 1.55;
}
.check input[type="checkbox"] {
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  margin-top: .05em;
  accent-color: var(--teal);
}
.permission__note {
  margin: 0;
  padding-top: .5rem;
  font-size: .875rem;
  line-height: 1.55;
  color: var(--text-muted);
}

/* candidate event photos on Services */
.photo-pair { display: grid; gap: 1rem; margin-top: 1.5rem; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); align-items: stretch; }
.photo-pair figure { margin: 0; border-radius: var(--radius-lg); overflow: hidden; background: var(--cream); box-shadow: var(--shadow-sm); display: flex; flex-direction: column; }
.photo-pair img { width: 100%; display: block; }
.photo-pair figure:first-child img { aspect-ratio: 3 / 2; object-fit: cover; }
.photo-pair figure:last-child img { flex: 1 1 0; height: 0; min-height: 0; object-fit: cover; object-position: 50% 30%; }
.photo-pair figcaption { font-size: .8125rem; color: var(--text-muted); padding: .55rem .8rem; background: #fff; border-top: 1px solid var(--line); }
@media (max-width: 640px) { .photo-pair { grid-template-columns: 1fr; } .photo-pair figure:last-child img { aspect-ratio: 3 / 2; flex: none; height: auto; } }

\n  @media (min-width: 940px) {\n    .contact-layout { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr) !important; }\n  }\n

/* cookie notice */
.consent { position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 1000; max-width: 640px; margin: 0 auto;
  background: #fff; color: var(--text); border: 1px solid var(--line); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md); padding: 1rem 1.25rem; display: grid; gap: .75rem; font-size: .9375rem; }
.consent p { margin: 0; }
.consent__actions { display: flex; gap: .5rem; justify-content: flex-end; flex-wrap: wrap; }
.consent .btn { padding: .55rem 1.1rem; font-size: .875rem; }
