/* 701 Begin Again — shared, dependency-free stylesheet.
   Colours, widths and spacing are collected here for easy maintenance. */
:root {
  --ink:#203e37;
  --muted:#5c6b64;
  --paper:#f8f7f2;
  --white:#fff;
  --mist:#e7ece5;
  --line:#d5ddd4;
  --accent:#bdcba9;
  --deep:#19372f;
  --serif:Georgia,'Times New Roman',serif;
  --sans:Arial,Helvetica,sans-serif;
  --width:1200px
}

* {
  box-sizing:border-box
}

html {
  scroll-padding-top:2rem
}

body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font:1rem/1.7 var(--sans);
  -webkit-font-smoothing:antialiased
}

img {
  max-width:100%;
  height:auto;
  display:block
}

a {
  color:inherit;
  text-underline-offset:.24em
}

a:hover {
  text-decoration-thickness:2px
}

a:focus-visible,button:focus-visible {
  outline:3px solid #9d651c;
  outline-offset:5px
}

h1,h2,h3,p {
  margin:0
}

h1,h2,h3 {
  font-weight:400
}

h1,h2 {
  font-family:var(--serif);
  line-height:1.1;
  letter-spacing:-.035em
}

h1 {
  font-size:clamp(2.8rem,5.25vw,4.8rem)
}

h2 {
  font-size:clamp(2rem,3.5vw,3.1rem)
}

h3 {
  font-family:var(--serif);
  font-size:1.65rem;
  line-height:1.25;
  letter-spacing:-.015em
}

p+p {
  margin-top:1rem
}

ul,ol {
  padding-left:1.3rem
}

li+li {
  margin-top:.45rem
}

::selection {
  background:var(--accent);
  color:var(--deep)
}

.wrap {
  width:min(var(--width),calc(100% - 6rem));
  margin-inline:auto
}

.skip-link {
  position:absolute;
  left:1rem;
  top:-8rem;
  z-index:20;
  padding:.7rem 1rem;
  background:var(--deep);
  color:white
}

.skip-link:focus {
  top:1rem
}

.utility {
  background:var(--deep);
  color:#e8eee4;
  font-size:.8rem;
  letter-spacing:.025em
}

.utility .wrap {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  min-height:36px
}

.utility-links {
  display:flex;
  gap:1.5rem
}

.utility a {
  text-decoration:none
}

.site-header {
  background:var(--paper);
  border-bottom:1px solid var(--line)
}

.header-inner {
  min-height:112px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem
}

.nav-toggle {
  display:none
}

.brand {
  display:block;
  flex:0 0 184px
}

.brand img {
  width:184px;
  aspect-ratio:2.032;
  object-fit:contain;
  mix-blend-mode:multiply
}

.main-nav {
  display:flex;
  align-items:center;
  gap:1.7rem;
  font-size:.9rem
}

.main-nav a {
  text-decoration:none;
  white-space:nowrap;
  padding:.5rem 0
}

.main-nav a[aria-current=page] {
  border-bottom:1px solid var(--ink)
}

.main-nav .button {
  padding:.75rem 1.3rem;
  color:white
}

.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:1.3rem;
  padding:.85rem 1.5rem;
  border:1px solid var(--ink);
  background:var(--ink);
  color:var(--white);
  text-decoration:none;
  font:inherit;
  font-size:.9rem;
  line-height:1.5;
  min-height:48px;
  border-radius:3px
}

.button:hover {
  background:#2c5146
}

.button.light {
  background:var(--paper);
  color:var(--ink);
  border-color:var(--paper)
}

.button.outline {
  background:transparent;
  color:var(--ink)
}

.text-link {
  font-size:.95rem;
  font-weight:600
}

.eyebrow {
  font-size:.75rem;
  line-height:1.5;
  letter-spacing:.15em;
  text-transform:uppercase;
  font-weight:600;
  display:block;
  margin-bottom:1.3rem
}

.hero {
  padding:64px 0 62px
}

/* Homepage hero: the supplied river image sits behind a layered colour wash so
   the headline remains comfortably readable across the changing light. */
.hero--image {
  position:relative;
  isolation:isolate;
  min-height:590px;
  padding:0;
  color:var(--white);
  background-image:url('/assets/701-Begin-Again-River-Swallows.webp');
  background-position:center;
  background-size:cover;
  overflow:hidden
}

.hero-video {
  position:absolute;
  inset:0;
  z-index:-2;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:0;
  transition:opacity 1s ease-in-out
}

.hero-video.is-playing {
  opacity:1;
  transition-duration:.4s
}

@media (prefers-reduced-motion:reduce) {
  .hero-video { display:none }
}

.hero--image:before {
  content:'';
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(90deg,rgba(19,43,36,.93) 0%,rgba(25,55,47,.84) 42%,rgba(25,55,47,.54) 66%,rgba(25,55,47,.18) 100%)
}

.hero-image-inner {
  min-height:590px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  padding:4.5rem 0 3rem
}

.hero-content {
  max-width:41rem
}

.hero--image .eyebrow {
  color:#edf1e9
}

.hero--image h1 {
  color:var(--white)
}

.hero--image h1 em {
  color:#d8e4c8
}

.hero--image .lede {
  color:#f3f6f0
}

.hero--image .button {
  background:var(--paper);
  border-color:var(--paper);
  color:var(--ink)
}

.hero--image .button:hover {
  background:#e2eadb;
  border-color:#e2eadb
}

.hero--image .text-link {
  color:var(--white)
}

.hero--image .breadcrumb,
.hero--image .breadcrumb a {
  color:#edf1e9
}

.hero--image .hero-foot {
  color:#eef2eb;
  margin-top:auto
}

.hero--image .hero-foot:before {
  background:#eef2eb
}

.hero-grid {
  display:grid;
  grid-template-columns:1.04fr 1fr;
  gap:5rem;
  align-items:center
}

.hero h1 em {
  font-weight:400;
  color:#617858
}

.hero .lede {
  max-width:31rem;
  margin-top:1.6rem
}

.lede {
  font-size:1.1rem;
  line-height:1.8;
  color:var(--muted);
  max-width:45rem
}

.actions {
  display:flex;
  align-items:center;
  gap:1.8rem;
  flex-wrap:wrap;
  margin-top:2rem
}

.hero-visual {
  position:relative;
  margin:0
}

.hero-visual>img {
  width:100%;
  height:495px;
  object-fit:cover;
  border-radius:180px 180px 180px 3px;
  background:var(--mist)
}

.hero-visual figcaption {
  font-family:var(--serif);
  font-size:1.3rem;
  line-height:1.4;
  padding:1.2rem 0 .1rem
}

.hero-foot {
  font-size:.82rem;
  color:var(--muted);
  margin-top:2rem;
  display:flex;
  align-items:center;
  gap:.65rem
}

.hero-foot:before {
  content:'';
  width:22px;
  height:1px;
  background:var(--muted)
}

.intro-strip {
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:1.4rem 0
}

.intro-strip .wrap {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:2rem
}

.intro-strip p {
  font-size:.92rem
}

.section {
  padding:5.5rem 0
}

.acc-strip {
  background:#fff;
  padding:1rem 0
}

.intro-strip.acc-strip .wrap {
  flex-direction:row;
  align-items:center;
  justify-content:flex-start;
  gap:1rem
}

.acc-logo {
  flex-shrink:0;
  height:20px;
  width:auto
}

.acc-logo-toggle,
.acc-read-more {
  background:none;
  border:0;
  padding:0;
  font:inherit;
  color:inherit;
  cursor:pointer
}

.acc-read-more {
  text-decoration:underline;
  white-space:nowrap
}

.intro-strip.acc-strip .wrap.acc-info {
  display:block;
  padding-top:1rem
}

.acc-info[hidden] {
  display:none !important
}

.acc-info-body {
  border-top:1px solid rgba(0,0,0,.12);
  padding-top:1.2rem;
  max-width:46rem
}

.acc-info-body h2 {
  font-size:1.4rem;
  margin-bottom:.4rem
}

.acc-info-body p {
  font-size:1rem;
  margin-bottom:.8rem
}

.acc-info-body .acc-info-lede {
  font-weight:600
}

.urgent-help {
  padding-top:0
}

.urgent-help-panel h2 {
  font-size:1.4rem;
  margin-bottom:.8rem
}

.urgent-help-panel ul {
  margin:.8rem 0 1rem 1.2rem;
  display:grid;
  gap:.5rem
}

.section.tint {
  background:var(--mist)
}

.section-head {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5rem;
  align-items:end;
  margin-bottom:2.7rem
}

.section-head p {
  color:var(--muted);
  max-width:34rem
}

.service-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1.5rem
}

.service-card {
  background:var(--white);
  padding:2.2rem;
  min-height:285px;
  border:1px solid var(--line);
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  border-radius:4px
}

.service-card .number {
  font:italic 1.3rem var(--serif);
  color:#6b7e67;
  margin-bottom:2rem
}

.service-card p {
  color:var(--muted);
  font-size:.96rem;
  margin:1rem 0 1.5rem
}

.service-card .text-link {
  margin-top:auto
}

.section-bottom {
  margin-top:2rem
}

.pathway {
  list-style:none;
  padding:0;
  margin:2.8rem 0 0;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:2rem
}

.pathway li {
  margin:0;
  border-top:1px solid #a5b5a0;
  padding-top:1.3rem
}

.step-number {
  display:block;
  font:italic 1.3rem var(--serif);
  margin-bottom:1.5rem;
  color:#56694f
}

.pathway h3 {
  font-size:1.45rem
}

.pathway p {
  font-size:.95rem;
  color:var(--muted);
  margin-top:.8rem
}

.invitation {
  background:var(--deep);
  color:var(--paper);
  padding:4rem 0
}

.invitation .wrap {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:3rem
}

.invitation h2 {
  font-size:2.6rem
}

.invitation p {
  color:#cbd7c9;
  margin-top:.9rem;
  max-width:39rem
}

.site-footer {
  padding:3.5rem 0 1.4rem
}

.footer-grid {
  display:grid;
  grid-template-columns:1.5fr 1fr 1fr;
  gap:4rem
}

.footer-name {
  font:1.5rem var(--serif);
  margin-bottom:.8rem
}

.footer-grid p {
  max-width:23rem;
  color:var(--muted);
  font-size:.9rem
}

.footer-links {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.45rem;
  font-size:.9rem
}

.footer-links strong {
  font-weight:600;
  margin-bottom:.45rem
}

.footer-links a {
  text-decoration:none
}

.footer-links a:hover {
  text-decoration:underline
}

.footer-bottom {
  display:flex;
  justify-content:space-between;
  gap:2rem;
  border-top:1px solid var(--line);
  padding-top:1.2rem;
  margin-top:2.6rem;
  font-size:.78rem;
  color:var(--muted)
}

.page-hero {
  padding:4rem 0 3.6rem;
  border-bottom:1px solid var(--line)
}

.page-hero .lede {
  margin-top:1.5rem
}

.breadcrumb {
  font-size:.8rem;
  color:var(--muted);
  margin-bottom:2rem
}

.breadcrumb a {
  text-decoration:none
}

.page-hero h1 {
  max-width:57rem
}

.page-hero .eyebrow {
  margin-bottom:1rem
}

.split {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5rem;
  align-items:start
}

.prose {
  max-width:46rem
}

.prose h2 {
  margin-bottom:1.5rem
}

.prose h3 {
  margin:2rem 0 .8rem
}

.prose p,.prose li {
  color:var(--muted)
}

.quote-panel {
  background:var(--mist);
  padding:3rem;
  border-radius:180px 180px 180px 3px;
  text-align:center
}

.quote-panel img {
  width:100%;
  max-width:290px;
  margin:0 auto 2rem;
  mix-blend-mode:multiply
}

.quote-panel blockquote {
  font:1.9rem/1.35 var(--serif);
  margin:0
}

.quote-panel p {
  font-size:.85rem;
  margin-top:1.5rem;
  color:var(--muted)
}

.note {
  background:var(--mist);
  padding:1.5rem 1.8rem;
  border-left:3px solid #899d80;
  font-size:.94rem;
  margin:1.8rem 0
}

.note p {
  color:var(--ink)
}

.note strong {
  display:block;
  margin-bottom:.3rem
}

.note.draft {
  background:#f0eee3;
  border-color:#a99c71
}

.status {
  display:inline-block;
  border:1px solid #b4bda9;
  border-radius:2px;
  padding:.2rem .6rem;
  font-size:.73rem;
  letter-spacing:.04em;
  color:#4b5d46;
  margin-bottom:1rem
}

.service-layout {
  display:grid;
  grid-template-columns:245px 1fr;
  gap:5rem
}

.section-nav {
  position:sticky;
  top:2rem
}

.section-nav h2 {
  font:600 .75rem var(--sans);
  letter-spacing:.14em;
  text-transform:uppercase;
  margin-bottom:1rem
}

.section-nav a {
  display:block;
  padding:.55rem 0;
  border-bottom:1px solid var(--line);
  text-decoration:none;
  font-size:.9rem
}

.service-detail {
  padding:2.6rem 0;
  border-bottom:1px solid var(--line);
  scroll-margin-top:2rem
}

.service-detail:first-child {
  padding-top:0
}

.service-detail h2 {
  font-size:2.15rem;
  margin-bottom:1rem
}

.service-detail p {
  color:var(--muted)
}

.service-detail .text-link {
  display:inline-block;
  margin-top:1rem
}

.service-detail:last-child {
  border-bottom:0
}

.team-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1.8rem
}

.profile-placeholder {
  height:240px;
  background:var(--mist);
  display:flex;
  align-items:center;
  justify-content:center;
  color:#5a6f55;
  font:italic 1.1rem var(--serif);
  border-radius:85px 85px 2px 2px;
  margin-bottom:1.5rem
}

.team-card .profile-placeholder.profile-photo-placeholder {
  width:min(100%, 240px);
  height:auto;
  aspect-ratio:1;
  text-align:center;
  padding:1rem;
  border-radius:50% 50% 50% 3px
}

.profile-photo {
  display:block;
  width:min(100%, 240px);
  aspect-ratio:1;
  object-fit:cover;
  border-radius:5% 5% 5% 5%;
  margin-bottom:1.5rem;
  background:var(--mist)
}

.profile-photo-wrap {
  position:relative;
  width:min(100%, 240px);
  margin-bottom:1.5rem
}

.profile-photo-wrap .profile-photo {
  margin-bottom:0
}

.profile-companion {
  position:absolute;
  right:-12px;
  bottom:-12px;
  width:42%;
  aspect-ratio:1;
  object-fit:cover;
  border-radius:50%;
  border:4px solid var(--paper, #fff);
  box-shadow:0 4px 12px rgba(0,0,0,.15);
  background:var(--mist)
}

.team-card .credentials {
  list-style:none;
  padding:0;
  margin:1rem 0 0;
  font-size:.85rem;
  color:var(--muted);
  border-top:1px solid var(--mist);
  padding-top:.8rem
}

.team-card .credentials li {
  margin:.25rem 0
}

.team-card h3 {
  margin:.3rem 0 1rem
}

.team-card p {
  font-size:.95rem;
  color:var(--muted)
}

.team-card .eyebrow {
  margin-bottom:.5rem;
  font-size:.7rem
}

.two-cards {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2rem;
  margin-top:2rem
}

.info-card {
  padding:2rem;
  border:1px solid var(--line);
  border-radius:3px;
  background:#fff
}

.info-card h3 {
  margin-bottom:1rem
}

.info-card p {
  color:var(--muted)
}

.info-card dl {
  margin:1.5rem 0 0
}

.info-card dt {
  font-size:.8rem;
  font-weight:600;
  color:var(--muted)
}

.info-card dd {
  margin:0 0 .8rem
}

.contact-grid {
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:5rem
}

.contact-details {
  margin:2rem 0
}

.contact-details div {
  padding:1rem 0;
  border-bottom:1px solid var(--line)
}

.contact-details dt {
  font-size:.8rem;
  font-weight:600;
  margin-bottom:.2rem
}

.contact-details dd {
  margin:0;
  color:var(--muted)
}

.location-placeholder {
  padding:2.5rem;
  background:var(--mist);
  border:1px solid var(--line);
  min-height:220px;
  display:flex;
  justify-content:center;
  flex-direction:column
}

.location-placeholder strong {
  font:1.6rem var(--serif)
}

.location-placeholder p {
  font-size:.9rem;
  color:var(--muted);
  margin-top:.8rem
}

.form-panel {
  padding:2.3rem;
  background:white;
  border:1px solid var(--line);
  border-radius:4px
}

.form-panel h2 {
  font-size:2.1rem;
  margin-bottom:.8rem
}

.form-panel>p {
  color:var(--muted);
  font-size:.92rem
}

.form-panel fieldset {
  padding:0;
  border:0;
  margin:1.6rem 0 0;
  min-width:0
}

.form-panel legend {
  font-size:.85rem;
  margin-bottom:1.1rem;
  color:var(--muted)
}

.form-row {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1rem
}

.field {
  display:block;
  margin-bottom:1rem;
  font-size:.88rem;
  font-weight:600
}

.field input,.field select,.field textarea {
  display:block;
  width:100%;
  margin-top:.4rem;
  padding:.8rem;
  background:#f8f9f6;
  border:1px solid #c6d0c5;
  border-radius:2px;
  font:400 1rem/1.5 var(--sans);
  color:#53614f;
  -webkit-text-fill-color:#53614f;
  opacity:1
}

.field textarea {
  resize:none;
  min-height:115px
}

.field input::placeholder,.field textarea::placeholder {
  color:#97a093;
  -webkit-text-fill-color:#97a093;
  font-style:italic;
  opacity:1
}

.check-preview {
  display:flex;
  align-items:flex-start;
  gap:.6rem;
  font-size:.84rem;
  color:var(--muted);
  margin:1rem 0 1.5rem
}

.check-preview input {
  margin-top:.3rem
}

.button:disabled {
  background:#e0e6da;
  border-color:#b9c5b4;
  color:#4b5c46;
  cursor:not-allowed
}

.form-caption {
  font-size:.8rem;
  color:var(--muted);
  margin-top:1rem
}

.list-rows {
  padding:0;
  list-style:none;
  margin-top:2rem
}

.list-rows li {
  display:grid;
  grid-template-columns:3rem 1fr;
  gap:1rem;
  border-top:1px solid var(--line);
  padding:1.5rem 0;
  margin:0
}

.list-rows span {
  font:italic 1.2rem var(--serif);
  color:#6b7e67
}

.list-rows h3 {
  font-size:1.4rem;
  margin-bottom:.5rem
}

.list-rows p {
  color:var(--muted)
}

.resource-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1.5rem;
  margin-top:2rem
}

.resource-card {
  padding:1.8rem;
  border:1px solid var(--line);
  background:#fff
}

.resource-card h3 {
  font-size:1.4rem;
  margin-bottom:.8rem
}

.resource-card p {
  font-size:.92rem;
  color:var(--muted)
}

.resource-card .status {
  margin-top:1.5rem;
  margin-bottom:0
}

.small {
  font-size:.88rem;
  color:var(--muted)
}

.content-link-list {
  list-style:none;
  padding:0;
  margin:1.5rem 0
}

.content-link-list li {
  margin:0;
  border-bottom:1px solid var(--line)
}

.content-link-list a {
  display:block;
  padding:.9rem 0
}

.content-link-list.two-col {
  display:grid;
  grid-template-columns:1fr 1fr;
  column-gap:2rem
}

.wide-note {
  max-width:48rem
}

.portrait-note {
  font-size:.8rem;
  color:var(--muted);
  margin-top:2rem
}

.closing-link {
  margin-top:2rem
}

.no-top {
  padding-top:0
}

.footer-grid .footer-name {
  font-size:1.5rem;
  color:var(--ink)
}

@media(min-width:1450px) {
  .hero {
    padding:76px 0
  }
  .hero--image {
    min-height:640px;
    padding:0
  }
  .hero-image-inner {
    min-height:640px
  }
  .hero-visual>img {
    height:525px
  }
}

@media(max-width:1100px) {
  .wrap {
    width:calc(100% - 3rem)
  }
  .header-inner {
    gap:1.5rem
  }
  .brand,.brand img {
    width:154px;
    flex-basis:154px
  }
  .main-nav {
    gap:1rem;
    font-size:.84rem
  }
  .hero-grid {
    gap:3rem
  }
  .hero-visual>img {
    height:450px
  }
  .service-card {
    padding:1.6rem
  }
  .split,.service-layout,.contact-grid {
    gap:3rem
  }
  .section-head {
    gap:3rem
  }
  .footer-grid {
    gap:2rem
  }
}

@media(max-width:800px) {
  .header-inner {
    padding:1rem 0;
    flex-wrap:wrap;
    gap:.5rem
  }
  .nav-toggle {
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:5px;
    width:44px;
    height:44px;
    padding:0 10px;
    background:none;
    border:1px solid var(--ink);
    cursor:pointer
  }
  .nav-toggle span {
    display:block;
    height:2px;
    background:var(--ink)
  }
  .main-nav {
    display:none;
    flex-basis:100%;
    flex-direction:column;
    align-items:stretch;
    gap:0
  }
  .nav-open .main-nav {
    display:flex
  }
  .main-nav a {
    padding:.8rem 0;
    border-top:1px solid var(--line)
  }
  .main-nav .button {
    margin-top:.5rem;
    justify-content:center
  }
  .brand,.brand img {
    width:155px
  }
  .brand {
    flex-basis:auto
  }
  .main-nav .button {
    padding:.55rem .9rem;
    min-height:42px
  }
  .hero {
    padding:3rem 0
  }
  .hero--image {
    min-height:520px;
    padding:0
  }
  .hero-image-inner {
    min-height:520px;
    padding:3.5rem 0 2.4rem
  }
  .hero-grid {
    gap:2.5rem;
    grid-template-columns:1fr 1fr
  }
  .hero h1 {
    font-size:3rem
  }
  .hero-visual>img {
    height:400px;
    border-radius:130px 130px 3px 3px
  }
  .hero .lede {
    font-size:1rem
  }
  .hero .actions {
    gap:1.2rem
  }
  .section {
    padding:4rem 0
  }
  .section-head {
    gap:2rem
  }
  .service-grid {
    gap:1rem
  }
  .service-card {
    padding:1.3rem
  }
  .service-card h3 {
    font-size:1.45rem
  }
  .pathway {
    grid-template-columns:1fr 1fr
  }
  .split,.contact-grid {
    grid-template-columns:1fr;
    gap:3rem
  }
  .quote-panel {
    max-width:520px
  }
  .service-layout {
    grid-template-columns:200px 1fr;
    gap:2rem
  }
  .team-grid {
    gap:1rem
  }
  .profile-placeholder {
    height:200px
  }
  .resource-grid {
    grid-template-columns:1fr 1fr
  }
  .footer-grid {
    grid-template-columns:1.3fr 1fr 1fr
  }
  .invitation h2 {
    font-size:2.1rem
  }
  .utility {
    font-size:.75rem
  }
  .content-link-list.two-col {
    grid-template-columns:1fr
  }
}

@media(max-width:600px) {
  .wrap {
    width:calc(100% - 2.5rem)
  }
  .utility .wrap {
    justify-content:center;
    min-height:34px
  }
  .utility-location {
    display:none
  }
  .utility-links {
    gap:2rem
  }
  .header-inner {
    padding:.8rem 0 1rem
  }
  .brand,.brand img {
    width:144px
  }
  .main-nav {
    font-size:.95rem
  }
  .main-nav a {
    min-height:44px;
    display:flex;
    align-items:center
  }
  .main-nav .button {
    padding:.45rem .8rem
  }
  .hero {
    padding:2.6rem 0
  }
  .hero--image {
    min-height:570px;
    padding:0;
    background-position:56% center
  }
  .hero-image-inner {
    min-height:570px;
    padding:3.5rem 0 2.2rem
  }
  .hero--image:before {
    background:linear-gradient(90deg,rgba(19,43,36,.93) 0%,rgba(25,55,47,.84) 58%,rgba(25,55,47,.59) 100%)
  }
  .hero-grid {
    grid-template-columns:1fr;
    gap:2.2rem
  }
  .hero h1 {
    font-size:clamp(2.65rem,11vw,3.3rem);
    max-width:24rem
  }
  .eyebrow {
    font-size:.69rem;
    letter-spacing:.12em
  }
  .hero .lede {
    font-size:1.03rem
  }
  .hero-visual>img {
    height:350px;
    border-radius:150px 150px 3px 3px
  }
  .hero-visual figcaption {
    font-size:1.2rem
  }
  .hero-foot {
    margin-top:1.5rem
  }
  .intro-strip .wrap {
    align-items:flex-start;
    flex-direction:column;
    gap:.6rem
  }
  .section {
    padding:3.3rem 0
  }
  .section-head {
    grid-template-columns:1fr;
    gap:1.2rem;
    margin-bottom:2rem
  }
  .service-grid,.team-grid,.two-cards,.resource-grid {
    grid-template-columns:1fr
  }
  .service-card {
    padding:1.7rem;
    min-height:auto
  }
  .service-card .number {
    margin-bottom:1.2rem
  }
  .service-card h3 {
    font-size:1.7rem
  }
  .pathway {
    gap:1.7rem 1.2rem;
    margin-top:2rem
  }
  .pathway h3 {
    font-size:1.3rem
  }
  .pathway p {
    font-size:.9rem
  }
  .step-number {
    margin-bottom:1rem
  }
  .invitation {
    padding:3rem 0
  }
  .invitation .wrap {
    align-items:flex-start;
    flex-direction:column;
    gap:1.5rem
  }
  .invitation h2 {
    font-size:2.4rem
  }
  .site-footer {
    padding-top:2.8rem
  }
  .footer-grid {
    grid-template-columns:1fr 1fr;
    gap:2rem
  }
  .footer-grid>div:first-child {
    grid-column:1/-1
  }
  .footer-bottom {
    flex-direction:column;
    gap:.7rem;
    font-size:.78rem
  }
  .page-hero {
    padding:2rem 0 2.7rem
  }
  .breadcrumb {
    margin-bottom:1.8rem
  }
  .page-hero h1 {
    font-size:2.9rem
  }
  .page-hero .lede {
    font-size:1.05rem
  }
  .service-layout {
    grid-template-columns:1fr;
    gap:2.8rem
  }
  .section-nav {
    position:static
  }
  .section-nav div {
    display:grid;
    grid-template-columns:1fr;
    gap:0
  }
  .section-nav a {
    font-size:.83rem
  }
  .service-detail h2 {
    font-size:1.85rem
  }
  .quote-panel {
    padding:2.4rem 1.5rem
  }
  .quote-panel blockquote {
    font-size:1.6rem
  }
  .form-panel {
    padding:1.5rem
  }
  .form-row {
    grid-template-columns:1fr;
    gap:0
  }
  .profile-placeholder {
    height:240px
  }
  .team-grid {
    gap:2.8rem
  }
  .info-card {
    padding:1.5rem
  }
  .note {
    padding:1.2rem 1.3rem
  }
  .footer-links {
    font-size:.85rem
  }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  * {
    transition:none!important;
    animation:none!important
  }
}

@media print {
  .utility,.main-nav,.skip-link,.actions,.invitation {
    display:none
  }
  .wrap {
    width:100%
  }
  .site-header {
    padding-bottom:1rem
  }
  .header-inner {
    min-height:0;
    justify-content:flex-start
  }
  .section,.page-hero {
    padding:1.5rem 0
  }
  .hero-grid,.split,.contact-grid,.service-layout {
    display:block
  }
  .hero-visual {
    max-width:300px;
    margin:1rem auto
  }
  .hero-visual>img {
    height:250px
  }
  .section-nav {
    display:none
  }
  .service-card,.service-detail,.info-card {
    break-inside:avoid
  }
  .site-footer {
    font-size:.8rem
  }
  .form-panel {
    break-inside:avoid
  }
  body {
    background:white;
    color:black
  }
  a {
    color:inherit
  }
}

/* About page: "Why the swallow?" section over the Avon swallows photo,
   with a deep green wash so the copy stays readable. */
.section--swallows {
  position:relative;
  isolation:isolate;
  color:var(--white);
  background:url('/assets/Swallows-on-the-Avon-Christchurch.webp') center/cover no-repeat
}

.section--swallows:before {
  content:'';
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(180deg,rgba(19,43,36,.86) 0%,rgba(25,55,47,.78) 100%)
}

.section--swallows h2,
.section--swallows h3 {
  color:var(--white);
  text-shadow:0 1px 12px rgba(0,0,0,.35)
}

.section--swallows .eyebrow {
  color:#d8e4c8
}

.section--swallows .prose p,
.section--swallows .prose li {
  color:#f3f6f0;
  text-shadow:0 1px 8px rgba(0,0,0,.3)
}

.section--swallows .button {
  background:var(--paper);
  border-color:var(--paper);
  color:var(--ink)
}

.section--swallows .button:hover {
  background:#e2eadb;
  border-color:#e2eadb
}

.page-hero--swallows {
  position:relative;
  isolation:isolate;
  color:var(--white);
  border-bottom:0;
  background:url('/assets/Swallows-on-the-Avon-Christchurch.webp') center/cover no-repeat
}

.page-hero--swallows:before {
  content:'';
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(180deg,rgba(19,43,36,.86) 0%,rgba(25,55,47,.78) 100%)
}

.page-hero--swallows h1 {
  color:var(--white);
  text-shadow:0 1px 12px rgba(0,0,0,.35)
}

.page-hero--swallows h1 em {
  font-weight:400;
  color:#d8e4c8
}

.page-hero--swallows .eyebrow {
  color:#d8e4c8
}

.page-hero--swallows .lede,
.page-hero--swallows .breadcrumb,
.page-hero--swallows .breadcrumb a {
  color:#f3f6f0;
  text-shadow:0 1px 8px rgba(0,0,0,.3)
}
/* Complaints procedure */
.complaint-principles { list-style:none; padding:0; margin:1rem 0 2rem; display:grid; gap:.6rem }
.complaint-principles li { position:relative; padding-left:1.8rem }
.complaint-principles li:before { content:'\2713'; position:absolute; left:0; top:0; color:var(--deep); font-weight:700 }
.complaint-steps { list-style:none; counter-reset:cstep; padding:0; margin:1rem 0 1.5rem; display:grid; gap:.75rem }
.complaint-steps li { counter-increment:cstep; position:relative; padding:1rem 1.2rem 1rem 3.6rem; background:var(--white); border:1px solid var(--line); border-radius:6px }
.complaint-steps li:before { content:counter(cstep); position:absolute; left:1rem; top:50%; transform:translateY(-50%); width:1.9rem; height:1.9rem; border-radius:50%; background:var(--accent); color:var(--deep); font:italic 1.05rem var(--serif); display:flex; align-items:center; justify-content:center }
.complaint-timeline { list-style:none; padding:0 0 0 1.5rem; margin:1rem 0 2rem; border-left:2px solid var(--line) }
.complaint-timeline li { position:relative; padding:0 0 1.2rem 1rem }
.complaint-timeline li:before { content:''; position:absolute; left:calc(-1.5rem - 7px); top:.35rem; width:12px; height:12px; border-radius:50%; background:var(--deep); border:2px solid var(--paper) }
.complaint-timeline li:last-child { padding-bottom:0 }
.complaint-timeline__label { display:block; font-weight:700; color:var(--deep) }
.complaint-timeline__label em { font-weight:400; font-style:italic; color:var(--muted); margin-left:.35rem }
.complaint-timeline p { margin:.25rem 0 0 }

/* Identity (login/register/account) pages */
.utility-links form.logout-form { display:inline; margin:0 }
.utility-links .logout-form button { background:none; border:0; padding:0; font:inherit; color:inherit; cursor:pointer }
.utility-links .logout-form button:hover { text-decoration:underline }
.identity-page h1 { margin-bottom:1.5rem }
.identity-page h2, .identity-page h3 { font-size:1.4rem; margin:0 0 1rem }
.identity-page hr { border:0; border-top:1px solid var(--line); margin:1rem 0 1.5rem }
.identity-page .row { display:flex; flex-wrap:wrap; gap:2rem }
.identity-page .row > [class*="col-"] { flex:1 1 320px; max-width:520px }
.identity-page form { padding:2rem; background:white; border:1px solid var(--line); border-radius:4px }
.identity-page .form-floating, .identity-page .form-group { display:flex; flex-direction:column-reverse; margin-bottom:1rem }
.identity-page label, .identity-page .form-label { font-size:.88rem; font-weight:600; margin-bottom:.4rem }
.identity-page .form-control { display:block; width:100%; padding:.8rem; background:#f8f9f6; border:1px solid #c6d0c5; border-radius:2px; font:400 1rem/1.5 var(--sans); color:#53614f }
.identity-page .form-control::placeholder { color:transparent }
.identity-page .checkbox label, .identity-page .form-check label { display:flex; gap:.5rem; align-items:center; font-weight:400 }
.identity-page .btn { display:inline-block; padding:.85rem 1.4rem; border:1px solid var(--ink, #2f3b2c); background:var(--ink, #2f3b2c); color:white; border-radius:2px; font:600 .95rem var(--sans); cursor:pointer; text-decoration:none }
.identity-page .w-100 { width:100% }
.identity-page .btn-link { background:none; border:0; color:inherit; padding:0; text-decoration:underline }
.identity-page .text-danger, .identity-page .field-validation-error, .identity-page .validation-summary-errors { color:#a23b2a; font-size:.85rem }
.identity-page .validation-summary-valid { display:none }
.identity-page .alert { padding:1rem; border:1px solid var(--line); background:#f8f9f6; margin-bottom:1rem }
.identity-page .nav-pills { list-style:none; padding:0; display:flex; flex-direction:column; gap:.5rem }
.identity-page .nav-pills .active { font-weight:700 }
.identity-page form p a { display:inline-block; margin-top:.5rem }

/* Admin */
.admin-table-wrap { overflow-x:auto; margin-top:1.5rem; background:white; border:1px solid var(--line); border-radius:4px }
.admin-table { width:100%; border-collapse:collapse; font-size:.92rem }
.admin-table th, .admin-table td { padding:.8rem 1rem; text-align:left; border-bottom:1px solid var(--line) }
.admin-table th { font-size:.8rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted) }
.admin-table tbody tr:last-child td { border-bottom:0 }

.admin-menu { display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:1rem; margin-top:1.5rem }
.admin-menu a { display:block; padding:1.25rem 1.5rem; background:white; border:1px solid var(--line); border-radius:4px; text-decoration:none; color:inherit }
.admin-menu a:hover, .admin-menu a:focus-visible { border-color:currentColor }
.admin-menu strong { display:block; font-size:1.1rem; margin-bottom:.35rem }
.admin-menu span { color:var(--muted); font-size:.9rem }
.admin-message { white-space:pre-wrap; min-width:18rem; max-width:32rem }
.admin-table tr.is-clinician td { background:#eef3fb }
.admin-table tr.is-clinician td:first-child { box-shadow:inset 4px 0 0 #3a5f9a }
.admin-badge { display:inline-block; padding:.15rem .55rem; border-radius:999px; background:#3a5f9a; color:white; font-size:.75rem; font-weight:600; letter-spacing:.04em; text-transform:uppercase }

/* Turnstile bot protection */
.identity-page .turnstile-box { margin:0 0 1.25rem }
.identity-page .cf-turnstile { min-height:65px }
.identity-page .turnstile-status { display:flex; align-items:center; gap:.5rem; margin:.5rem 0 0; font-size:.82rem; color:var(--muted) }
.identity-page .turnstile-spinner { width:.85rem; height:.85rem; border:2px solid var(--line); border-top-color:var(--ink); border-radius:50%; animation:turnstile-spin .8s linear infinite }
.identity-page .turnstile-status[data-state="ok"] { color:#2f6b45 }
.identity-page .turnstile-status[data-state="ok"] .turnstile-spinner { animation:none; border:0; width:auto; height:auto }
.identity-page .turnstile-status[data-state="ok"] .turnstile-spinner::before { content:"\2713"; font-weight:700 }
.identity-page .turnstile-status[data-state="error"] { color:#a23b2a }
.identity-page .turnstile-status[data-state="error"] .turnstile-spinner { display:none }
@keyframes turnstile-spin { to { transform:rotate(360deg) } }
.identity-page .btn { transition:background-color .2s, border-color .2s, color .2s, opacity .2s }
.identity-page .btn:hover:not(:disabled) { background:var(--deep); border-color:var(--deep) }
.identity-page .btn:disabled { background:#e0e6da; border-color:#b9c5b4; color:#6b7a66; cursor:not-allowed }

.identity-page .name-row { display:grid; grid-template-columns:1fr 1fr; gap:1rem }
@media (max-width:480px) { .identity-page .name-row { grid-template-columns:1fr } }

/* Contact form */
.form-panel .turnstile-box { margin:0 0 1.25rem }
.form-panel .cf-turnstile { min-height:65px }
.form-panel .turnstile-status { display:flex; align-items:center; gap:.5rem; margin:.5rem 0 0; font-size:.82rem; color:var(--muted) }
.form-panel .turnstile-spinner { width:.85rem; height:.85rem; border:2px solid var(--line); border-top-color:var(--ink); border-radius:50%; animation:turnstile-spin .8s linear infinite }
.form-panel .turnstile-status[data-state="ok"] { color:#2f6b45 }
.form-panel .turnstile-status[data-state="ok"] .turnstile-spinner { animation:none; border:0; width:auto; height:auto }
.form-panel .turnstile-status[data-state="ok"] .turnstile-spinner::before { content:"\2713"; font-weight:700 }
.form-panel .turnstile-status[data-state="error"] { color:#a23b2a }
.form-panel .turnstile-status[data-state="error"] .turnstile-spinner { display:none }
.field-error, .form-errors { display:block; color:#a23b2a; font-size:.85rem; font-weight:400; margin-top:.3rem }
.form-errors ul { margin:0 0 1rem; padding-left:1.1rem }
.validation-summary-valid { display:none }
.form-success { padding:1.2rem; margin-top:1rem; border:1px solid #b9d3bf; background:#f1f7f2; color:#2f6b45 }
.form-success p { margin:.4rem 0 0; color:var(--muted) }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0 }
.admin-detail th[scope=row] { width:1%; white-space:nowrap }
.admin-pager, .pager { display:flex; gap:1.25rem; align-items:center; justify-content:center; margin-top:1.25rem; font-size:.92rem }

/* Admin resources */
.admin-toolbar { display:flex; flex-wrap:wrap; gap:1rem; align-items:center; justify-content:space-between; margin-top:1.5rem }
.admin-filter, .tag-filter { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; margin-top:1rem }
.admin-toolbar .admin-filter { margin-top:0 }
.admin-filter a, .tag-filter a { padding:.35rem .8rem; border:1px solid var(--line); border-radius:999px; background:white; font-size:.88rem; text-decoration:none; color:inherit }
.admin-filter a:hover, .admin-filter a:focus-visible, .tag-filter a:hover, .tag-filter a:focus-visible { border-color:var(--ink) }
.admin-filter a[aria-current="true"], .tag-filter a[aria-current="true"] { background:var(--ink); border-color:var(--ink); color:white }
.admin-filter a.admin-filter-clear { border-style:dashed }
.admin-filter-label, .tag-filter-label { font-size:.85rem; color:var(--muted) }
.admin-table tr.is-archived td { background:#f4f4f1; color:var(--muted) }
.admin-badge--muted { background:#8a948d; margin-left:.4rem }
.resource-description { margin-top:.5rem; font-size:.85rem; color:var(--muted); max-width:36rem }
.resource-description-text { white-space:pre-line }
.admin-table td .tag-chips--static { margin-top:.5rem }
.admin-meta { font-size:.82rem; color:var(--muted) }
.admin-actions { white-space:nowrap }
.admin-actions > * { display:inline-block; margin-right:.75rem }
.admin-actions form { margin:0 }
.link-button { padding:0; border:0; background:none; font:inherit; color:inherit; text-decoration:underline; cursor:pointer }
.form-panel .button + .button { margin-left:.5rem }

/* Contractor resources */
.resource-list { list-style:none; margin:1.5rem 0 0; padding:0; background:white; border:1px solid var(--line); border-radius:4px }
.resource-item { display:flex; gap:1.5rem; justify-content:space-between; align-items:flex-start; padding:1.4rem 1.6rem; border-bottom:1px solid var(--line) }
.resource-item:last-child { border-bottom:0 }
.resource-item-main { min-width:0; flex:1 1 auto }
.resource-item-title { font-size:1.3rem; margin:0 }
.resource-item-title a { color:inherit; text-decoration:none }
.resource-item-title a:hover, .resource-item-title a:focus-visible { text-decoration:underline }
.resource-item .tag-chips--static { margin-top:.6rem }
.resource-item .resource-description { max-width:44rem; font-size:.92rem }
.resource-item-file { flex:0 0 auto; display:flex; flex-direction:column; align-items:flex-end; gap:.3rem; text-align:right }
.resource-item-file .button { min-height:0; padding:.5rem 1.1rem; margin-bottom:.2rem }
.resource-item-meta { font-size:.8rem; color:var(--muted); white-space:nowrap }
.resource-empty { margin-top:1.5rem; color:var(--muted) }
@media (max-width:640px) {
  .resource-item { flex-direction:column; gap:.9rem }
  .resource-item-file { align-items:flex-start; text-align:left }
}

/* Contractor company updates */
.update-list { list-style:none; margin:1.5rem 0 0; padding:0; background:white; border:1px solid var(--line); border-radius:4px }
.update-item { padding:1.5rem 1.6rem; border-bottom:1px solid var(--line) }
.update-item:last-child { border-bottom:0 }
.update-date { margin:0 0 .35rem; font-size:.8rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--muted) }
.update-title { font-size:1.3rem; margin:0 }
.update-body { margin-top:.6rem; max-width:44rem; white-space:pre-line; overflow-wrap:anywhere }
.admin-date { white-space:nowrap }
.update-subscription { display:flex; flex-wrap:wrap; gap:.75rem 1.25rem; align-items:center; justify-content:space-between; margin-top:1rem; padding:1rem 1.6rem; background:white; border:1px solid var(--line); border-radius:4px }
.update-subscription p { margin:0 }
.update-subscription .button { min-height:0; padding:.5rem 1.1rem }

.tag-input { position:relative }
.tag-box { display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; margin-top:.4rem; padding:.4rem .5rem; background:#f8f9f6; border:1px solid #c6d0c5; border-radius:2px }
.tag-box:focus-within { border-color:var(--ink) }
.tag-chips { display:flex; flex-wrap:wrap; gap:.4rem; list-style:none; margin:0; padding:0 }
.tag-chip { display:inline-flex; align-items:center; gap:.35rem; padding:.2rem .6rem; border-radius:999px; background:var(--accent); color:var(--deep); font-size:.85rem; font-weight:600 }
.tag-chip button { padding:0 .1rem; border:0; background:none; color:inherit; font-size:1.1rem; line-height:1; cursor:pointer }
.tag-chip a { color:inherit; text-decoration:none }
.tag-chip a:hover { text-decoration:underline }
.tag-chips--static .tag-chip { padding:.1rem .55rem; font-size:.8rem }
.field .tag-box .tag-entry { flex:1 1 12rem; width:auto; min-width:10rem; margin:0; padding:.4rem; border:0; background:transparent; outline:0 }
.tag-suggestions { position:absolute; z-index:10; left:0; right:0; margin:.2rem 0 0; padding:.25rem 0; list-style:none; background:white; border:1px solid var(--line); border-radius:3px; box-shadow:0 6px 16px rgba(0,0,0,.1); max-height:15rem; overflow-y:auto }
.tag-suggestions li { padding:.5rem .8rem; font-size:.9rem; font-weight:400; cursor:pointer }
.tag-suggestions li.is-active, .tag-suggestions li:hover { background:#eef3ea }
.tag-suggestions li.is-new { font-style:italic }
