/*
Theme Name: Holy Trinity Springfield
Theme URI: https://holytrinityspringfield.org.uk/
Author: Holy Trinity Springfield / RISCTECH Ltd
Description: A lightweight custom block theme for Holy Trinity Springfield. Built around native WordPress blocks with no page-builder dependency.
Version: 3.6.8
Requires at least: 6.6
Requires PHP: 8.1
Text Domain: holy-trinity-springfield
*/

:root {
  --hts-indigo: #7e81be;
  --hts-purple: #b18fc2;
  --hts-blue: #a4d7f4;
  --hts-ink: #2f3440;
  --hts-muted: #667085;
  --hts-cream: #f8f6f2;
  --hts-white: #ffffff;
  --hts-border: #e6e3de;
  --hts-radius: 18px;
  --hts-shadow: 0 14px 40px rgba(47, 52, 64, 0.08);
}

html { scroll-behavior: smooth; }
body { text-rendering: optimizeLegibility; }

/* Clip decorative artwork without creating a scroll container.
   Using overflow:hidden here prevents position:sticky descendants (such as
   the mini events calendar) from sticking to the viewport. */
.wp-site-blocks { overflow: clip; }

.hts-header {
  position: relative;
  z-index: 20;
  border-bottom: 1px solid var(--hts-border);
  background: rgba(255,255,255,.97);
}

.hts-header .wp-block-site-title a {
  text-decoration: none;
  color: var(--hts-ink);
}

.hts-header .wp-block-navigation-item__content {
  text-decoration: none;
  font-weight: 600;
}

.hts-header .wp-block-navigation-item__content:hover,
.hts-header .wp-block-navigation-item__content:focus {
  color: var(--hts-indigo);
}

.hts-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 560px;
  display: flex;
  align-items: center;
  background:
    radial-gradient(circle at 88% 25%, rgba(164,215,244,.42) 0 8%, transparent 8.2%),
    radial-gradient(circle at 88% 25%, transparent 0 13%, rgba(126,129,190,.14) 13.2% 14.3%, transparent 14.5%),
    linear-gradient(135deg, #fff 0%, var(--hts-cream) 100%);
}

.hts-hero::after {
  content: "";
  position: absolute;
  right: -110px;
  bottom: -190px;
  width: 520px;
  height: 520px;
  border: 38px solid rgba(177,143,194,.18);
  border-radius: 50% 50% 8% 8%;
  transform: rotate(45deg);
  z-index: -1;
}

.hts-eyebrow {
  text-transform: uppercase;
  letter-spacing: .14em;
  font-size: .78rem;
  font-weight: 800;
  color: var(--hts-indigo);
}

.hts-intro {
  max-width: 720px;
  color: var(--hts-muted);
}

.hts-button-secondary .wp-block-button__link {
  background: transparent !important;
  color: var(--hts-ink) !important;
  border: 1px solid #c9c6c0;
}

.hts-button-secondary .wp-block-button__link:hover,
.hts-button-secondary .wp-block-button__link:focus {
  border-color: var(--hts-indigo);
  color: var(--hts-indigo) !important;
}

.hts-section {
  padding-top: clamp(64px, 8vw, 108px);
  padding-bottom: clamp(64px, 8vw, 108px);
}

.hts-section-tight {
  padding-top: clamp(42px, 5vw, 68px);
  padding-bottom: clamp(42px, 5vw, 68px);
}

.hts-sunday {
  background: var(--hts-ink);
  color: #fff;
}

.hts-sunday a { color: #fff; }

.hts-card {
  height: 100%;
  border: 1px solid var(--hts-border);
  border-radius: var(--hts-radius);
  background: var(--hts-white);
  box-shadow: 0 1px 0 rgba(47,52,64,.02);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.hts-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--hts-shadow);
  border-color: rgba(126,129,190,.35);
}

.hts-card a { text-decoration: none; }

.hts-featured {
  overflow: hidden;
  border-radius: calc(var(--hts-radius) + 6px);
  background: linear-gradient(135deg, var(--hts-indigo), #696cad);
  color: #fff;
  box-shadow: var(--hts-shadow);
}

.hts-featured a { color: #fff; }

.hts-featured .wp-block-button__link {
  background: #fff !important;
  color: var(--hts-ink) !important;
}

.hts-date {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .86rem;
  font-weight: 700;
  color: var(--hts-indigo);
}

.hts-muted { color: var(--hts-muted); }

.hts-link-arrow a::after {
  content: " →";
}

/* Reusable Books We Love callout.  The cover strip is supplied by the Books
   We Love shortcode, while the link and layout belong to the theme. */
.hts-books-callout {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  width: 100% !important;
  max-width: 1180px !important;
  box-sizing: border-box;
  margin: 22px 0;
  margin-left: auto !important;
  margin-right: auto !important;
  padding: 12px 16px;
  border: 1px solid var(--hts-border);
  border-left: 4px solid var(--hts-purple);
  border-radius: 12px;
  background: linear-gradient(135deg, #fbfdfe 0%, #f6f2fb 100%);
}

.hts-books-callout > .wp-block-shortcode {
  margin: 0 !important;
}

.hts-books-strip {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  min-height: 58px;
  margin: 0;
}

.hts-books-strip__cover {
  display: block;
  width: 39px;
  height: 56px;
  overflow: hidden;
  border: 1px solid rgba(47,52,64,.14);
  border-radius: 3px;
  background: var(--hts-cream);
  box-shadow: 0 4px 8px rgba(47,52,64,.15);
}

.hts-books-strip__cover:nth-child(2) {
  transform: translateY(-3px) rotate(-2deg);
}

.hts-books-strip__cover:nth-child(3) {
  transform: translateY(-1px) rotate(1deg);
}

.hts-books-strip__cover:nth-child(4) {
  transform: translateY(-4px) rotate(2deg);
}

.hts-books-strip__cover img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hts-books-callout__copy {
  min-width: 0;
  margin: 0;
}

.hts-books-callout__kicker {
  display: block;
  margin: 0 0 2px !important;
  color: var(--hts-purple);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .09em;
  line-height: 1.25;
  text-transform: uppercase;
}

.hts-books-callout__label {
  margin: 0 !important;
  color: var(--hts-ink);
  font-size: .92rem;
  font-weight: 650;
  line-height: 1.25;
}

.hts-books-callout__actions {
  margin: 0 !important;
}

.hts-books-callout__actions .wp-block-button {
  margin: 0;
}

.hts-books-callout__actions .wp-block-button__link {
  min-height: 42px;
  padding: 9px 16px;
  border-radius: 999px;
  background: var(--hts-purple) !important;
  color: #fff !important;
  font-weight: 800;
  line-height: 1.2;
  text-decoration: none;
  white-space: nowrap;
}

.hts-books-callout__actions .wp-block-button__link:hover,
.hts-books-callout__actions .wp-block-button__link:focus {
  filter: brightness(.94);
}

@media (max-width: 760px) {
  .hts-books-callout {
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
  }

  .hts-books-strip__cover {
    width: 33px;
    height: 48px;
  }

  .hts-books-strip { min-height: 50px; }

  .hts-books-callout__actions {
    grid-column: 1 / -1;
  }

  .hts-books-callout__actions .wp-block-button,
  .hts-books-callout__actions .wp-block-button__link {
    width: 100%;
    box-sizing: border-box;
  }
}

.hts-announcement {
  background: var(--hts-indigo);
  color: #fff;
  font-size: .94rem;
}

.hts-announcement a { color: #fff; font-weight: 700; }

.hts-footer {
  background: #242833;
  color: #eef0f4;
}

.hts-footer a { color: #fff; }

.hts-footer-mark img {
  width: 50px;
  height: auto;
  opacity: .92;
}

.hts-footer .wp-block-navigation {
  color: #fff;
}

.hts-footer-small {
  color: #bac0ca;
  font-size: .86rem;
}

.hts-page-hero {
  background: var(--hts-cream);
  border-bottom: 1px solid var(--hts-border);
}

.wp-block-post-content > *:not(.alignfull):not(.alignwide) {
  margin-top: 1.35em;
  margin-bottom: 1.35em;
}

.wp-block-button__link {
  transition: transform .15s ease, opacity .15s ease;
}

.wp-block-button__link:hover { transform: translateY(-1px); }

@media (max-width: 781px) {
  .hts-hero { min-height: 500px; }
  .hts-hero::after { right: -250px; opacity: .7; }
  .hts-header .wp-block-site-title { font-size: 1.12rem !important; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hts-card,
  .wp-block-button__link { transition: none; }
  .hts-card:hover,
  .wp-block-button__link:hover { transform: none; }
}


/* Homepage live data integrations. */
.hts-home-sunday .hts-next-sunday,
.hts-home-sunday .hts-next-sunday a{color:#fff}
.hts-home-sunday .hts-next-sunday__date{color:var(--hts-blue);font-size:.9rem;text-transform:uppercase;letter-spacing:.08em}
.hts-home-sunday .hts-next-sunday__details,
.hts-home-sunday .hts-next-sunday__empty{color:#dfe3ea}
.hts-home-sunday .hts-next-sunday__service{padding:.7rem 0;border-bottom:1px solid rgba(255,255,255,.15)}
.hts-home-sunday .hts-next-sunday__service:last-child{border-bottom:0}

.hts-home-featured-section:not(:has(.hts-featured-event)){display:none}
.hts-home-featured .hts-featured-event{margin:0;background:linear-gradient(135deg,var(--hts-indigo),#696cad);color:#fff;box-shadow:var(--hts-shadow)}
.hts-home-featured .hts-featured-event__eyebrow{color:#dff3ff}
.hts-home-featured .hts-featured-event__title{color:#fff}
.hts-home-featured .hts-featured-event__date,
.hts-home-featured .hts-featured-event__excerpt{color:#f4f5ff}
.hts-home-featured .hts-events-button{background:#fff;color:var(--hts-ink)!important}

.hts-home-upcoming .hts-events-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;margin:0}
.hts-home-upcoming .hts-event-card{grid-template-columns:64px minmax(0,1fr);height:100%;padding:1.2rem}
.hts-home-upcoming .hts-event-card__date{min-height:64px}
.hts-home-upcoming .hts-event-card__excerpt{display:none}
.hts-home-upcoming .hts-event-card__title{font-size:1.12rem}
.hts-home-upcoming .hts-event-card__meta{font-size:.9rem}
.hts-home-upcoming .hts-events-empty{margin:0}

.hts-sermon-placeholder{border-style:dashed;background:linear-gradient(135deg,#fff,var(--hts-cream))}

@media(max-width:980px){
  .hts-home-upcoming .hts-events-list{grid-template-columns:1fr}
  .hts-home-sunday .wp-block-columns{gap:1.75rem}
}


/* Homepage identity and safeguarding sections */
.hts-about-home {
  background: #fff;
}

.hts-about-home .hts-about-copy {
  max-width: 760px;
}

.hts-about-points {
  margin-top: 1.6rem;
  padding-left: 1.25rem;
}

.hts-about-points li {
  margin-bottom: .75rem;
}

.hts-safeguarding {
  background: var(--hts-cream);
}

.hts-safeguarding-card {
  border-left: 6px solid var(--hts-purple);
  border-radius: var(--hts-radius);
  background: #fff;
  box-shadow: 0 1px 0 rgba(47,52,64,.03);
}

.hts-safeguarding-card p:last-child {
  margin-bottom: 0;
}

.hts-safeguarding-card a {
  font-weight: 650;
}

/* ===== Homepage refresh v0.5 ===== */
.hts-homepage.alignfull {
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
}

.hts-homepage > .alignfull {
  width: 100%;
  max-width: none;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.hts-homepage .alignwide {
  width: min(1180px, calc(100% - 48px));
  max-width: 1180px;
  margin-left: auto !important;
  margin-right: auto !important;
}

.hts-home-section {
  padding-top: clamp(58px, 6vw, 84px);
  padding-bottom: clamp(58px, 6vw, 84px);
  background: #fff;
}

.hts-home-section + .hts-home-section:not(.hts-home-sunday) {
  border-top: 1px solid var(--hts-border);
}

/* Hero: intentionally simple until a good church photograph is available. */
.hts-home-hero {
  position: relative;
  background: linear-gradient(180deg, #fbfaf8 0%, #f8f6f2 100%);
  border-bottom: 1px solid var(--hts-border);
  padding: clamp(72px, 8vw, 112px) 0 clamp(66px, 7vw, 96px);
}

.hts-home-hero::before {
  content: "";
  display: block;
  width: 76px;
  height: 6px;
  border-radius: 999px;
  margin-bottom: 26px;
  background: linear-gradient(90deg, var(--hts-indigo) 0 52%, var(--hts-blue) 52% 100%);
}

.hts-home-hero__inner {
  width: min(1180px, calc(100% - 48px));
}

.hts-home-title {
  max-width: 820px;
  margin: 10px 0 22px;
  font-size: clamp(2.65rem, 5.2vw, 4.8rem);
  line-height: 1.02;
  letter-spacing: -0.045em;
}

.hts-home-tagline {
  max-width: 680px;
  margin: 0 0 10px;
  color: var(--hts-indigo);
  font-size: clamp(1.25rem, 2vw, 1.55rem);
  font-weight: 700;
  line-height: 1.35;
}

.hts-home-intro {
  max-width: 690px;
  margin: 0;
  color: var(--hts-muted);
  font-size: 1.08rem;
  line-height: 1.7;
}

/* Who we are */
.hts-about-grid {
  gap: clamp(36px, 6vw, 78px);
}

.hts-about-heading {
  margin: 8px 0 0;
  max-width: 360px;
  font-size: clamp(1.65rem, 2.7vw, 2.25rem);
  line-height: 1.12;
}

.hts-about-home .hts-about-copy {
  max-width: none;
}

.hts-about-copy .hts-about-lead,
.hts-about-copy > p:first-child {
  margin-top: 0;
  color: var(--hts-ink);
  font-size: 1.08rem !important;
  line-height: 1.72;
  font-weight: 450;
}

.hts-about-points {
  margin: 1.35rem 0 1.35rem;
  padding-left: 1.2rem;
}

.hts-about-points li {
  margin: 0 0 .7rem;
  line-height: 1.6;
}

/* Sunday strip */
.hts-home-sunday {
  background: var(--hts-ink);
  border-top: 0 !important;
  color: #fff;
}

.hts-sunday-grid {
  gap: clamp(34px, 6vw, 72px);
}

.hts-eyebrow-light,
.hts-home-sunday .hts-next-sunday__date {
  color: var(--hts-blue) !important;
}

.hts-light-heading {
  margin: 8px 0 12px;
  color: #fff !important;
}

.hts-light-copy {
  color: #dfe3ea;
}

.hts-sunday-live {
  padding: 2px 0;
}

.hts-home-sunday .hts-next-sunday__service {
  padding: .95rem 0;
}

/* Featured event */
.hts-home-featured-section {
  padding-top: clamp(46px, 5vw, 68px);
  padding-bottom: clamp(46px, 5vw, 68px);
}

/* Coming up */
.hts-section-heading-row {
  align-items: end;
  gap: 20px;
  margin-bottom: 28px;
}

.hts-section-heading-row h2 {
  margin: 5px 0 0;
}

.hts-home-upcoming .hts-events-list {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem;
  margin: 0;
}

.hts-home-upcoming .hts-event-card {
  flex: 1 1 290px;
  width: 100%;
  max-width: calc((100% - 2.5rem) / 3);
  grid-template-columns: 68px minmax(0,1fr);
  gap: 1rem;
  min-height: 132px;
  padding: 1.25rem;
}

.hts-home-upcoming .hts-event-card__date {
  min-height: 68px;
}

.hts-home-upcoming .hts-event-card__excerpt {
  display: none;
}

.hts-home-upcoming .hts-event-card__title {
  font-size: 1.15rem;
}

.hts-home-upcoming .hts-event-card__meta {
  font-size: .92rem;
}

.hts-home-calendar-note {
  margin-top: 22px;
  margin-bottom: 0;
  font-size: .94rem;
}

/* Church life */
.hts-home-life {
  background: #fff !important;
}

.hts-life-grid {
  gap: 22px;
  margin-top: 28px;
}

.hts-life-grid .wp-block-column {
  display: flex;
}

.hts-life-card {
  width: 100%;
  padding: 30px 28px;
}

.hts-life-card h3 {
  margin-top: 0;
}

/* Teaching */
.hts-teaching-grid {
  gap: clamp(38px, 6vw, 76px);
}

.hts-sermon-placeholder {
  padding: clamp(30px, 4vw, 44px);
  border-style: dashed;
  background: #fbfaf8;
}

/* Safeguarding: prominent without changing the whole section background. */
.hts-safeguarding {
  background: #fff !important;
}

.hts-safeguarding-card {
  padding: clamp(30px, 4vw, 46px);
  border: 1px solid #eadfee;
  border-left: 6px solid var(--hts-purple);
  border-radius: var(--hts-radius);
  background: #fcf9fd;
  box-shadow: none;
}

.hts-safeguarding-card h2 {
  margin: 7px 0 20px;
}

/* New here: a card rather than another full-width colour band. */
.hts-home-new {
  padding-top: 0;
  border-top: 0 !important;
}

.hts-home-new-card {
  gap: 28px;
  padding: clamp(30px, 4vw, 46px);
  border-radius: calc(var(--hts-radius) + 4px);
  background: #edf8fe;
}

.hts-home-new-copy {
  max-width: 760px;
}

.hts-home-new-copy h2 {
  margin: 6px 0 10px;
}

.hts-home-new-copy p:last-child {
  margin-bottom: 0;
}

.hts-home-hall-hire {
  background: linear-gradient(135deg, #eef8fd, #f8f6f2);
}

.hts-home-hall-hire-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  padding: clamp(1.5rem, 4vw, 2.5rem);
  border: 1px solid rgba(126,129,190,.25);
  border-radius: var(--hts-radius);
  background: rgba(255,255,255,.8);
  box-shadow: var(--hts-shadow);
}

.hts-home-hall-hire-card h2,
.hts-home-hall-hire-card p:last-child { margin-bottom: 0; }

.hts-home-hall-hire-copy { max-width: 680px; }

.hts-mission-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 24px !important;
}

/* The mission cards used to inherit the generic card border but not its
   spacing, which left the headings hard against the edge of the card.  Give
   this section its own calm, compact treatment and keep the cards equal in
   height within each row. */
.hts-mission-grid .wp-block-column {
  width: auto !important;
  min-width: 0;
  margin: 0 !important;
  flex-basis: auto !important;
}

.hts-mission-grid .wp-block-column:empty {
  display: none;
}

.hts-mission-card {
  position: relative;
  box-sizing: border-box;
  height: 100%;
  padding: 22px 22px 24px;
  border: 1px solid rgba(126,129,190,.22);
  border-radius: 16px;
  background: rgba(255,255,255,.92);
  box-shadow: 0 8px 24px rgba(47,52,64,.045);
}

/* Mission partner cards accept an optional logo or photograph.  The image
   block is already present in the editable pattern, so editors can simply
   choose an image without changing the card structure. */
.hts-mission-card .wp-block-image.hts-mission-logo {
  margin: 0 0 16px !important;
  text-align: left;
}
.hts-mission-card .wp-block-image.hts-mission-logo img {
  display: block;
  width: min(100%, 190px);
  height: 76px;
  object-fit: contain;
  object-position: left center;
}

.hts-mission-card::before {
  content: "";
  display: block;
  width: 42px;
  height: 4px;
  margin-bottom: 16px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--hts-indigo), var(--hts-purple));
}

.hts-mission-card h3 {
  margin: 0 0 9px;
  color: var(--hts-ink);
  font-size: clamp(1.1rem, 1.5vw, 1.28rem);
  line-height: 1.2;
}

.hts-mission-card p {
  margin: 0;
  color: var(--hts-muted);
  line-height: 1.55;
}

.hts-mission-card p:last-child { margin-bottom: 0; }

.hts-tots-social { border-left: 4px solid var(--hts-blue); }

@media (max-width: 781px) {
  .hts-home-hall-hire-card { display: block; }
  .hts-home-hall-hire-card .wp-block-buttons { margin-top: 1.25rem; }
}

@media (max-width: 980px) {
  .hts-mission-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .hts-mission-grid { grid-template-columns: 1fr; gap: 14px; }
  .hts-mission-card { padding: 20px; }
}

/* Make the pattern look correct even when previewed at /home/ before it is set as the site front page. */
.page-template-home-page .hts-page-hero,
.home .hts-page-hero {
  display: none;
}

@media (max-width: 980px) {
  .hts-home-upcoming .hts-event-card {
    max-width: calc((100% - 1.25rem) / 2);
  }
}

@media (max-width: 781px) {
  .hts-homepage .alignwide,
  .hts-home-hero__inner {
    width: min(100% - 32px, 1180px);
  }

  .hts-home-hero {
    padding: 64px 0 58px;
  }

  .hts-home-title {
    font-size: clamp(2.45rem, 12vw, 3.65rem);
  }

  .hts-about-grid,
  .hts-sunday-grid,
  .hts-teaching-grid {
    gap: 28px;
  }

  .hts-about-heading {
    max-width: 520px;
  }

  .hts-home-upcoming .hts-event-card {
    max-width: 100%;
  }

  .hts-life-grid {
    gap: 16px;
  }

  .hts-home-new-card {
    align-items: flex-start;
  }
}

/* ===== Homepage alignment and card interaction refresh v0.6 ===== */
/* Keep the main homepage sections on the same wide grid.  Gutenberg's
   constrained layout otherwise pulls ordinary child blocks back to contentSize. */
.hts-home-coming-up > .wp-block-group.alignwide > *,
.hts-home-life > .wp-block-group.alignwide > * {
  width: 100%;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Balance the two-column homepage sections. */
.hts-sunday-grid > .wp-block-column,
.hts-teaching-grid > .wp-block-column {
  flex-basis: 50% !important;
}

/* Make the Church Life cards behave as one large link while retaining the
   visible 'Find out more' link for clarity and keyboard accessibility. */
.hts-life-card {
  position: relative;
  cursor: pointer;
}
.hts-life-card .hts-link-arrow a::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: var(--hts-radius);
}
.hts-life-card:has(.hts-link-arrow a:focus-visible) {
  outline: 3px solid rgba(126,129,190,.35);
  outline-offset: 3px;
}
.hts-life-card:hover h3 {
  color: var(--hts-indigo);
}

/* The Coming Up shortcode should use the full section width. */
.hts-home-upcoming,
.hts-home-upcoming .hts-events-list {
  width: 100%;
  max-width: none !important;
}

@media (max-width: 781px) {
  .hts-sunday-grid > .wp-block-column,
  .hts-teaching-grid > .wp-block-column {
    flex-basis: 100% !important;
  }
}



/* Homepage latest sermon */
.hts-home-latest-sermon .hts-latest-sermon {
  width: 100%;
  margin: 0;
}

.hts-home-latest-sermon .hts-sermon-card {
  height: 100%;
  box-sizing: border-box;
  box-shadow: var(--hts-shadow);
}

.hts-home-latest-sermon .hts-sermon-browse {
  display: none;
}

@media (max-width: 781px) {
  .hts-home-latest-sermon {
    margin-top: 1rem;
  }
}


/* v0.9: reusable photographic section banner. Uses the native Cover block so
   editors can replace the image, adjust the overlay and choose contrasting
   text colours without editing theme code. */
.hts-photo-banner {
  min-height: clamp(300px, 38vw, 460px);
  display: flex;
  align-items: center;
}
.hts-photo-banner .wp-block-cover__inner-container {
  width: 100%;
}
.hts-photo-banner__inner {
  width: min(1180px, calc(100% - 48px));
  margin-inline: auto;
}
.hts-photo-banner .hts-eyebrow {
  color: var(--hts-blue);
}
.hts-photo-banner h1,
.hts-photo-banner h2,
.hts-photo-banner h3,
.hts-photo-banner p {
  text-shadow: 0 1px 12px rgba(0,0,0,.22);
}
@media (max-width: 600px) {
  .hts-photo-banner__inner { width: min(100% - 32px, 1180px); }
}

/* ===== Content page patterns v1.0 ===== */
.hts-content-page {
  width: min(1180px, calc(100% - 48px));
  max-width: 1180px !important;
  margin-inline: auto;
}
.hts-content-page > * {
  max-width: none !important;
}
.hts-page-lead {
  max-width: 850px !important;
  margin: 0 0 34px;
  font-size: clamp(1.25rem, 2.3vw, 1.75rem);
  line-height: 1.55;
  color: var(--hts-muted);
}
.hts-anchor-nav {
  gap: 10px 12px;
  margin: 0 0 clamp(52px, 7vw, 84px);
}
.hts-anchor-nav p { margin: 0; }
.hts-anchor-nav a {
  display: inline-block;
  padding: 9px 14px;
  border: 1px solid var(--hts-border);
  border-radius: 999px;
  color: var(--hts-ink);
  text-decoration: none;
  font-weight: 650;
  background: #fff;
}
.hts-anchor-nav a:hover {
  border-color: var(--hts-indigo);
  color: var(--hts-indigo);
}
.hts-page-section {
  margin: 0 0 clamp(64px, 8vw, 96px);
}
/* Keep structured page copy on the shared wide content grid.
   Earlier versions capped ordinary section children at 900px, which caused
   pages such as Privacy to inherit a visibly narrower text column. */
.hts-page-section > * {
  max-width: none;
}
.hts-page-section > .wp-block-columns {
  max-width: none;
}
.hts-page-section h2 {
  margin-top: 7px;
}
.hts-feature-list {
  padding-left: 1.25rem;
}
.hts-feature-list li {
  margin-bottom: .7rem;
}
.hts-soft-panel {
  max-width: none !important;
  padding: clamp(30px, 5vw, 52px);
  border: 1px solid #ebe7e1;
  border-radius: calc(var(--hts-radius) + 4px);
  background: var(--hts-cream);
}
.hts-soft-panel > * { max-width: none; }
.hts-pcc-section {
  padding: clamp(30px, 4vw, 48px);
  border: 1px solid var(--hts-border);
  border-radius: calc(var(--hts-radius) + 4px);
  background: var(--hts-cream);
}
.hts-pcc-section > * { max-width: none; }
.hts-pcc-section .hts-muted {
  margin-bottom: 0;
}
.hts-pcc-grid {
  gap: 22px;
  align-items: stretch;
}
.hts-pcc-grid > .wp-block-column {
  display: flex;
}
.hts-pcc-card {
  width: 100%;
}
.hts-team-grid,
.hts-life-detail-grid,
.hts-week-grid,
.hts-monthly-grid {
  gap: 20px;
}
.hts-team-grid .wp-block-column,
.hts-life-detail-grid .wp-block-column,
.hts-week-grid .wp-block-column,
.hts-monthly-grid .wp-block-column {
  display: flex;
}
.hts-team-card,
.hts-group-card,
.hts-day-card {
  width: 100%;
  box-sizing: border-box;
}
.hts-team-card,
.hts-group-card {
  padding: 30px;
}
.hts-team-card h3,
.hts-group-card h3,
.hts-day-card h3 {
  margin-top: 0;
}
.hts-role {
  margin-top: -.35rem;
  color: var(--hts-indigo);
  font-weight: 750;
}
.hts-day-card {
  padding: 28px;
  border: 1px solid var(--hts-border);
  border-radius: var(--hts-radius);
  background: #fff;
}
.hts-schedule-list {
  list-style: none;
  padding-left: 0;
  margin-left: 0;
}
.hts-schedule-list li {
  padding: 14px 0;
  border-top: 1px solid var(--hts-border);
}
.hts-schedule-list li:first-child {
  padding-top: 0;
  border-top: 0;
}
.hts-small-note {
  margin-bottom: 0;
  padding-top: 10px;
  border-top: 1px solid var(--hts-border);
  color: var(--hts-muted);
  font-size: .94rem;
}
.hts-page-cta {
  gap: 30px;
  margin-top: 18px;
  padding: clamp(30px, 5vw, 48px);
  border-radius: calc(var(--hts-radius) + 4px);
  background: #edf8fe;
}
.hts-page-cta h2 { margin-top: 0; }
.hts-page-cta p:last-child { margin-bottom: 0; }

@media (max-width: 781px) {
  .hts-content-page {
    width: min(100% - 32px, 1180px);
  }
  .hts-anchor-nav {
    margin-bottom: 52px;
  }
  .hts-soft-panel {
    padding: 28px 22px;
  }
  .hts-pcc-section {
    padding: 28px 22px;
  }
  .hts-team-grid,
  .hts-life-detail-grid,
  .hts-week-grid,
  .hts-monthly-grid {
    gap: 16px;
  }
}


/* ===== Content page layout refinements v1.2 =====
   Make the page patterns use the full shared content width rather than
   inheriting WordPress' narrow 760px constrained child width. */
.hts-content-page {
  width: min(1180px, calc(100% - 48px));
  max-width: 1180px !important;
  margin-inline: auto !important;
}
.hts-content-page > * {
  width: 100%;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  box-sizing: border-box;
}
.hts-content-page .hts-page-lead {
  width: min(850px, 100%);
  max-width: 850px !important;
}
.hts-content-page .hts-page-section {
  width: 100%;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.hts-content-page .hts-page-section > * {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
/* Structured pages deliberately use the full 1180px content grid.  Do not
   re-introduce the old 900px paragraph cap here: the highly-specific :not()
   selector used in early versions overrode later wide-page rules. */
.hts-content-page .hts-page-section > p:not(.hts-eyebrow):not(.hts-muted):not(.hts-small-note),
.hts-content-page .hts-page-section > h2,
.hts-content-page .hts-page-section > ul:not(.hts-schedule-list) {
  width: 100% !important;
  max-width: none !important;
}
.hts-content-page .hts-page-section > .wp-block-columns,
.hts-content-page .hts-soft-panel,
.hts-content-page .hts-page-cta {
  width: 100%;
  max-width: none !important;
}
.hts-content-page .hts-soft-panel > * {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.hts-about-page .hts-team-grid,
.hts-church-life-page .hts-life-detail-grid,
.hts-church-life-page .hts-week-grid,
.hts-church-life-page .hts-monthly-grid {
  width: 100%;
  max-width: none !important;
  margin-top: 26px;
  margin-bottom: 0;
}
.hts-church-life-page .hts-page-section > .hts-muted {
  margin-top: 24px;
}
.hts-church-life-page .hts-soft-panel {
  padding: clamp(32px, 4vw, 52px);
}
.hts-church-life-page .hts-week-grid {
  gap: 24px;
  align-items: stretch;
}
.hts-church-life-page .hts-week-grid > .wp-block-column {
  min-width: 0;
}
.hts-church-life-page .hts-day-card {
  min-height: 100%;
}
.hts-church-life-page .hts-schedule-list {
  margin-bottom: 0;
}
.hts-church-life-page .hts-monthly-grid {
  gap: 24px;
}

/* Team cards are ready for optional photographs. Add an Image block at the
   top of either card and it will be styled consistently. */
.hts-team-card .wp-block-image.hts-team-photo,
.hts-team-card > .wp-block-image:first-child {
  width: calc(100% + 60px);
  max-width: none !important;
  margin: -30px -30px 24px !important;
}
.hts-team-card .wp-block-image.hts-team-photo img,
.hts-team-card > .wp-block-image:first-child img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--hts-radius) var(--hts-radius) 0 0;
}

/* About-page affiliations and awards. */
.hts-affiliation-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px;
  gap: clamp(28px, 5vw, 64px);
  align-items: center;
  padding: clamp(30px, 4vw, 48px);
  border: 1px solid var(--hts-border);
  border-radius: calc(var(--hts-radius) + 4px);
  background: #fff;
}
.hts-affiliation-card .wp-block-image,
.hts-award-card .wp-block-image {
  margin: 0 !important;
  text-align: center;
}
.hts-affiliation-card .wp-block-image img {
  width: min(190px, 100%);
  height: auto;
}
.hts-award-card {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: clamp(28px, 5vw, 52px);
  align-items: center;
  margin: 0 0 clamp(64px, 8vw, 96px);
  padding: clamp(28px, 4vw, 44px);
  border-radius: calc(var(--hts-radius) + 4px);
  background: var(--hts-cream);
}
.hts-award-card .wp-block-image img {
  width: min(170px, 100%);
  height: auto;
}
.hts-award-card h2,
.hts-affiliation-card h2 { margin-top: 7px; }

@media (max-width: 781px) {
  .hts-content-page {
    width: min(100% - 32px, 1180px);
  }
  .hts-affiliation-card,
  .hts-award-card {
    grid-template-columns: 1fr;
  }
  .hts-affiliation-card .wp-block-image,
  .hts-award-card .wp-block-image {
    text-align: left;
  }
}


/* ===== Page width fix v1.3 =====
   The page template's Post Content block now spans the viewport, allowing
   alignwide page patterns to actually reach the theme's 1180px wide size.
   Ordinary unaligned page blocks retain the readable 760px content width. */
.wp-block-post-content.alignfull {
  width: 100%;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Belt-and-braces: the About and Church Life pattern wrappers should use the
   same wide content grid as the homepage even if WordPress adds a constrained
   wrapper around Post Content. */
.wp-block-post-content .hts-content-page.alignwide {
  width: min(1180px, calc(100% - 48px)) !important;
  max-width: 1180px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Keep ordinary direct page content readable when it is not deliberately
   marked wide/full. */
.wp-block-post-content.alignfull > :not(.alignfull):not(.alignwide):not(.hts-content-page) {
  width: min(760px, calc(100% - 48px));
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
}

@media (max-width: 781px) {
  .wp-block-post-content .hts-content-page.alignwide {
    width: min(100% - 32px, 1180px) !important;
  }
  .wp-block-post-content.alignfull > :not(.alignfull):not(.alignwide):not(.hts-content-page) {
    width: min(100% - 32px, 760px);
  }
}


/* ===== Content page typography and rhythm v1.4 =====
   v1.2/v1.3 widened the page wrapper, but several inner paragraph rules were
   still deliberately capped at 850/900px. On these structured pages that made
   copy look as though it was stuck in the old narrow layout. Let the content
   use the full 1180px page grid, and use spacing rather than arbitrary line
   length caps to create hierarchy. */
.hts-content-page .hts-page-lead,
.hts-content-page .hts-page-section > p,
.hts-content-page .hts-page-section > h2,
.hts-content-page .hts-page-section > ul,
.hts-content-page .hts-page-section > .hts-muted,
.hts-content-page .hts-page-section > .hts-small-note {
  width: 100% !important;
  max-width: none !important;
}

/* A calmer, consistent vertical rhythm between page sections. */
.hts-content-page .hts-page-lead {
  margin: 0 0 26px !important;
}
.hts-content-page .hts-anchor-nav {
  margin-bottom: clamp(42px, 5vw, 62px) !important;
}
.hts-content-page .hts-page-section {
  margin-bottom: clamp(46px, 5.5vw, 72px) !important;
}
.hts-content-page .hts-page-section > * + * {
  margin-block-start: 14px;
}
.hts-content-page .hts-page-section > .hts-eyebrow + h2 {
  margin-block-start: 7px;
}
.hts-content-page .hts-page-section > h2 + p,
.hts-content-page .hts-page-section > h2 + ul {
  margin-block-start: 16px;
}
.hts-content-page .hts-page-section > .wp-block-columns {
  margin-block-start: 24px !important;
}
.hts-church-life-page .hts-page-section > .hts-muted {
  margin-top: 20px !important;
}

/* Card padding was intentionally generous in the first page patterns. Tighten
   it slightly and use one spacing scale throughout so the cards do not feel
   disconnected from the surrounding copy. */
.hts-team-card,
.hts-group-card {
  padding: 26px;
}
.hts-day-card {
  padding: 24px;
}
.hts-team-card .wp-block-image.hts-team-photo,
.hts-team-card > .wp-block-image:first-child {
  width: calc(100% + 52px);
  margin: -26px -26px 22px !important;
}
.hts-church-life-page .hts-soft-panel {
  padding: clamp(28px, 3.5vw, 42px);
}
.hts-content-page .hts-page-cta {
  margin-top: 0;
  padding: clamp(28px, 3.5vw, 40px);
}
.hts-team-grid,
.hts-life-detail-grid,
.hts-week-grid,
.hts-monthly-grid {
  gap: 22px;
}
.hts-schedule-list li {
  padding: 12px 0;
}

@media (max-width: 781px) {
  .hts-content-page .hts-page-section {
    margin-bottom: 48px !important;
  }
  .hts-team-card,
  .hts-group-card,
  .hts-day-card {
    padding: 22px;
  }
  .hts-team-card .wp-block-image.hts-team-photo,
  .hts-team-card > .wp-block-image:first-child {
    width: calc(100% + 44px);
    margin: -22px -22px 20px !important;
  }
}

/* ===== Content page polish v3.6.2 =====
   Keep introductory copy in the same system sans-serif as the rest of the
   site.  The section links remain useful, but read as a simple page index
   rather than a row of unrelated pill buttons. */
.hts-content-page .hts-page-lead {
  font-family: inherit !important;
  font-size: clamp(1rem, 1.15vw, 1.12rem) !important;
  font-weight: 400;
  line-height: 1.65;
  color: var(--hts-ink);
}

.hts-content-page .hts-anchor-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 18px;
  margin: 0 0 clamp(34px, 4.2vw, 52px) !important;
  padding: 12px 0 13px;
  border-top: 1px solid var(--hts-border);
  border-bottom: 1px solid var(--hts-border);
}

.hts-content-page .hts-anchor-nav::before {
  content: "On this page";
  flex: 0 0 100%;
  margin-bottom: 1px;
  color: var(--hts-muted);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .12em;
  line-height: 1.3;
  text-transform: uppercase;
}

.hts-content-page .hts-anchor-nav p {
  margin: 0 !important;
}

.hts-content-page .hts-anchor-nav a {
  display: inline;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--hts-indigo);
  font-size: .92rem;
  font-weight: 700;
  text-decoration: none;
  text-underline-offset: .2em;
}

.hts-content-page .hts-anchor-nav a:hover,
.hts-content-page .hts-anchor-nav a:focus-visible {
  color: var(--hts-ink);
  text-decoration: underline;
}

.hts-content-page .hts-page-section {
  margin-bottom: clamp(40px, 4.5vw, 60px) !important;
}

.hts-content-page .hts-page-section > * + * {
  margin-block-start: 12px;
}

.hts-content-page .hts-page-section > .hts-eyebrow + h2 {
  margin-block-start: 6px;
}

.hts-content-page .hts-page-section > h2 + p,
.hts-content-page .hts-page-section > h2 + ul {
  margin-block-start: 14px;
}

.hts-content-page .hts-page-section > .wp-block-columns {
  margin-block-start: 20px !important;
}

@media (max-width: 781px) {
  .hts-content-page .hts-anchor-nav {
    gap: 7px 14px;
    padding: 11px 0 12px;
  }

  .hts-content-page .hts-page-section {
    margin-bottom: 42px !important;
  }
}

/* ===== Structured-page sidebar experiment v3.6.5 =====
   On wider screens these pages keep their section index in a quiet, sticky
   left column, following the editorial layout used on the clinical
   information site.  The sidebar is zero-height in the grid so its list does
   not push the first content section down.  The existing horizontal link row
   remains the fallback below the breakpoint. */
@media (min-width: 960px) {
  .hts-about-page,
  .hts-im-new-page,
  .hts-church-life-page,
  .hts-sundays-page {
    display: grid !important;
    grid-template-columns: minmax(190px, 220px) minmax(0, 1fr);
    column-gap: clamp(36px, 5.5vw, 78px);
    align-items: start;
  }

  .hts-about-page > .hts-page-lead,
  .hts-im-new-page > .hts-new-intro,
  .hts-church-life-page > .hts-page-lead,
  .hts-sundays-page > .hts-page-lead {
    grid-column: 2;
    grid-row: 1;
    margin-bottom: 30px !important;
    min-width: 0;
  }

  .hts-about-page > .hts-anchor-nav,
  .hts-im-new-page > .hts-anchor-nav,
  .hts-church-life-page > .hts-anchor-nav,
  .hts-sundays-page > .hts-anchor-nav {
    grid-column: 1;
    grid-row: 1;
    display: block !important;
    position: sticky;
    top: 32px;
    align-self: start;
    height: 0;
    min-height: 0;
    overflow: visible;
    margin: 0 !important;
    padding: 0;
    border: 0;
    z-index: 3;
  }

  .hts-about-page > .hts-anchor-nav::before,
  .hts-im-new-page > .hts-anchor-nav::before,
  .hts-church-life-page > .hts-anchor-nav::before,
  .hts-sundays-page > .hts-anchor-nav::before {
    display: block;
    padding: 0 0 16px;
    border-bottom: 1px solid var(--hts-border);
  }

  .hts-about-page > .hts-anchor-nav p,
  .hts-im-new-page > .hts-anchor-nav p,
  .hts-church-life-page > .hts-anchor-nav p,
  .hts-sundays-page > .hts-anchor-nav p {
    display: block;
    padding: 13px 0;
    border-bottom: 1px solid var(--hts-border);
  }

  .hts-about-page > .hts-anchor-nav a,
  .hts-im-new-page > .hts-anchor-nav a,
  .hts-church-life-page > .hts-anchor-nav a,
  .hts-sundays-page > .hts-anchor-nav a {
    display: block;
    color: var(--hts-muted);
    font-size: .95rem;
    font-weight: 650;
    line-height: 1.35;
  }

  .hts-about-page > .hts-anchor-nav a:hover,
  .hts-about-page > .hts-anchor-nav a:focus-visible,
  .hts-im-new-page > .hts-anchor-nav a:hover,
  .hts-im-new-page > .hts-anchor-nav a:focus-visible,
  .hts-church-life-page > .hts-anchor-nav a:hover,
  .hts-church-life-page > .hts-anchor-nav a:focus-visible,
  .hts-sundays-page > .hts-anchor-nav a:hover,
  .hts-sundays-page > .hts-anchor-nav a:focus-visible {
    color: var(--hts-indigo);
  }

  .hts-about-page > .hts-page-section,
  .hts-about-page > .wp-block-columns,
  .hts-about-page > .hts-affiliation-card,
  .hts-about-page > .hts-award-card,
  .hts-about-page > .hts-page-cta,
  .hts-im-new-page > .hts-page-section,
  .hts-im-new-page > .hts-page-cta,
  .hts-church-life-page > .hts-page-section,
  .hts-church-life-page > .hts-page-cta,
  .hts-sundays-page > .hts-page-section,
  .hts-sundays-page > .hts-page-cta {
    grid-column: 2;
    min-width: 0;
    width: 100%;
  }
}

@media (max-width: 959px) {
  .hts-about-page,
  .hts-im-new-page,
  .hts-church-life-page,
  .hts-sundays-page {
    display: block !important;
  }

  .hts-about-page > .hts-anchor-nav,
  .hts-im-new-page > .hts-anchor-nav,
  .hts-church-life-page > .hts-anchor-nav,
  .hts-sundays-page > .hts-anchor-nav {
    position: static;
    height: auto;
    min-height: 0;
    overflow: visible;
  }

  .hts-about-page > .hts-page-section,
  .hts-about-page > .wp-block-columns,
  .hts-about-page > .hts-affiliation-card,
  .hts-about-page > .hts-award-card,
  .hts-about-page > .hts-page-cta,
  .hts-im-new-page > .hts-new-intro,
  .hts-im-new-page > .hts-page-section,
  .hts-im-new-page > .hts-page-cta,
  .hts-church-life-page > .hts-page-section,
  .hts-church-life-page > .hts-page-cta,
  .hts-sundays-page > .hts-page-section,
  .hts-sundays-page > .hts-page-cta {
    min-width: 0;
    width: 100%;
  }
}

/* When the About page uses a manually inserted two-column block for Church
   Society and Eco Church, the original full-width card grids are too wide for
   each half.  Turn those two cards into compact vertical cards so their copy
   remains readable at desktop, tablet and mobile widths. */
.hts-about-page > .wp-block-columns > .wp-block-column {
  min-width: 0;
  display: flex;
  align-items: stretch;
}

.hts-about-page > .wp-block-columns {
  column-gap: clamp(22px, 3vw, 36px);
  row-gap: 22px;
  margin-bottom: clamp(40px, 5vw, 64px) !important;
}

.hts-about-page > .wp-block-columns > .wp-block-column > .hts-affiliation-card,
.hts-about-page > .wp-block-columns > .wp-block-column > .hts-award-card {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: stretch;
  gap: 20px;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  margin: 0 !important;
  padding: clamp(24px, 3vw, 36px);
}

.hts-about-page > .wp-block-columns > .wp-block-column > .hts-affiliation-card > .wp-block-image,
.hts-about-page > .wp-block-columns > .wp-block-column > .hts-award-card > .wp-block-image {
  order: -1;
  width: 100%;
  max-width: none;
  margin: 0 !important;
  text-align: center;
}

.hts-about-page > .wp-block-columns > .wp-block-column > .hts-affiliation-card > .wp-block-group,
.hts-about-page > .wp-block-columns > .wp-block-column > .hts-award-card > .wp-block-group {
  width: 100%;
  max-width: none !important;
  margin: 0 !important;
}

.hts-about-page > .wp-block-columns > .wp-block-column > .hts-affiliation-card .wp-block-image img,
.hts-about-page > .wp-block-columns > .wp-block-column > .hts-award-card .wp-block-image img {
  width: min(170px, 100%);
  height: auto;
}

/* ===== Sundays page v1.5 ===== */
.hts-sundays-page .hts-sunday-live {
  padding: clamp(32px, 4.5vw, 54px);
  border-radius: var(--hts-radius);
  background: linear-gradient(135deg, var(--hts-ink), #3d4352);
  color: var(--hts-white);
  box-shadow: var(--hts-shadow);
}
.hts-sundays-page .hts-sunday-live > * { width: 100% !important; max-width: none !important; }
.hts-sundays-page .hts-sunday-live .hts-eyebrow,
.hts-sundays-page .hts-sunday-live h2,
.hts-sundays-page .hts-sunday-live p,
.hts-sundays-page .hts-sunday-live a { color: var(--hts-white); }
.hts-sundays-page .hts-sunday-live .hts-eyebrow { color: var(--hts-blue); }
.hts-sundays-page .hts-sunday-live .hts-next-sunday__details { color: rgba(255,255,255,.76); }
.hts-sundays-page .hts-sunday-live .hts-next-sunday__service {
  padding: 14px 0;
  border-bottom: 1px solid rgba(255,255,255,.14);
}
.hts-sundays-page .hts-sunday-live .hts-next-sunday__service:last-child { border-bottom: 0; }
.hts-sunday-live-grid { gap: clamp(34px, 6vw, 84px); }

.hts-sunday-expect-grid { gap: 22px; }
.hts-sunday-info-card {
  height: 100%;
  padding: 26px;
  border-top: 4px solid var(--hts-blue);
}
.hts-sunday-expect-grid > .wp-block-column:nth-child(2) .hts-sunday-info-card { border-top-color: var(--hts-purple); }
.hts-sunday-expect-grid > .wp-block-column:nth-child(3) .hts-sunday-info-card { border-top-color: var(--hts-indigo); }
.hts-sunday-info-card h3 { margin-top: 4px; }

.hts-sunday-pattern-panel { padding: clamp(30px, 4vw, 46px); }
.hts-sunday-pattern-panel > * { width: 100% !important; max-width: none !important; }
.hts-sunday-pattern-grid {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 16px;
  margin-top: 26px !important;
}
.hts-service-pattern-card {
  min-width: 0;
  padding: 22px;
  background: var(--hts-white);
  border: 1px solid var(--hts-border);
  border-radius: 14px;
}
.hts-service-pattern-card__number {
  margin: 0 0 12px !important;
  color: var(--hts-indigo);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.hts-service-pattern-card h3 {
  margin: 0 0 10px;
  font-size: 1rem;
  line-height: 1.28;
}
.hts-service-pattern-card h3 + h3 {
  padding-top: 12px;
  border-top: 1px solid var(--hts-border);
}
.hts-service-badges { gap: 7px !important; margin-top: 14px !important; }
.hts-service-badges p {
  margin: 0 !important;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(164,215,244,.25);
  color: var(--hts-ink);
  font-size: .78rem;
  font-weight: 700;
}

.hts-sunday-children > .wp-block-columns { gap: clamp(34px, 6vw, 74px); }
.hts-sunday-groups {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.hts-sunday-group-pill {
  padding: 24px 18px;
  text-align: center;
  background: rgba(164,215,244,.2);
  border: 1px solid rgba(126,129,190,.14);
  border-radius: 14px;
}
.hts-sunday-group-pill:nth-child(2) { background: rgba(177,143,194,.15); }
.hts-sunday-group-pill:nth-child(3) { background: rgba(126,129,190,.12); }
.hts-sunday-group-pill:nth-child(4) { background: rgba(164,215,244,.14); }
.hts-sunday-group-pill h3 { margin: 0 0 5px; font-size: 1.05rem; }
.hts-sunday-group-pill p { margin: 0; color: var(--hts-muted); }

@media (max-width: 1000px) {
  .hts-sunday-pattern-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hts-sunday-pattern-grid > :last-child { grid-column: 1 / -1; }
}
@media (max-width: 781px) {
  .hts-sundays-page .hts-sunday-live { padding: 28px 24px; }
  .hts-sunday-pattern-grid,
  .hts-sunday-groups { grid-template-columns: 1fr; }
  .hts-sunday-pattern-grid > :last-child { grid-column: auto; }
  .hts-sunday-info-card { padding: 22px; }
}

/* ===== Sundays alignment v1.6 =====
   WordPress block flow styles add margin-block-start to sibling Group blocks.
   Inside our CSS grids that causes the later cards to sit lower than the first. */
.hts-sunday-pattern-grid,
.hts-sunday-groups {
  align-items: stretch;
}

.hts-sunday-pattern-grid > .hts-service-pattern-card,
.hts-sunday-groups > .hts-sunday-group-pill {
  margin-block-start: 0 !important;
  margin-top: 0 !important;
  align-self: stretch;
  height: 100%;
  box-sizing: border-box;
}

.hts-sunday-group-pill {
  display: flex;
  flex-direction: column;
  justify-content: center;
}


/* ===== Sundays youth groups v1.7 =====
   Four groups are presented as a balanced 2 × 2 grid on desktop/tablet.
   Any extra groups added later automatically continue in the same two-column grid. */
.hts-sunday-groups {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (max-width: 781px) {
  .hts-sunday-groups { grid-template-columns: 1fr; }
}


/* ===== I'm New page v1.8 ===== */
.hts-im-new-page .hts-new-intro {
  margin-bottom: 26px;
}
.hts-im-new-page .hts-new-intro > * {
  width: 100% !important;
  max-width: none !important;
}

.hts-im-new-page .hts-new-sunday {
  padding: clamp(32px, 4.5vw, 54px);
  border-radius: var(--hts-radius);
  background: linear-gradient(135deg, var(--hts-ink), #3d4352);
  color: var(--hts-white);
  box-shadow: var(--hts-shadow);
}
.hts-im-new-page .hts-new-sunday > * { width: 100% !important; max-width: none !important; }
.hts-im-new-page .hts-new-sunday .hts-eyebrow,
.hts-im-new-page .hts-new-sunday h2,
.hts-im-new-page .hts-new-sunday p,
.hts-im-new-page .hts-new-sunday a { color: var(--hts-white); }
.hts-im-new-page .hts-new-sunday .hts-eyebrow { color: var(--hts-blue); }
.hts-im-new-page .hts-new-sunday .hts-next-sunday__details { color: rgba(255,255,255,.76); }
.hts-im-new-page .hts-new-sunday .hts-next-sunday__service {
  padding: 14px 0;
  border-bottom: 1px solid rgba(255,255,255,.14);
}
.hts-im-new-page .hts-new-sunday .hts-next-sunday__service:last-child { border-bottom: 0; }
.hts-new-sunday-grid { gap: clamp(34px, 6vw, 84px); }

.hts-new-practical-grid,
.hts-new-expect-grid,
.hts-new-course-grid {
  gap: 22px;
  align-items: stretch;
}
.hts-new-practical-grid > .wp-block-column,
.hts-new-expect-grid > .wp-block-column,
.hts-new-course-grid > .wp-block-column {
  display: flex;
}
.hts-new-practical-card,
.hts-new-course-card,
.hts-new-expect-item {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
}
.hts-new-practical-card,
.hts-new-course-card {
  padding: 26px;
}
.hts-new-practical-grid > .wp-block-column:nth-child(1) .hts-new-practical-card { border-top: 4px solid var(--hts-indigo); }
.hts-new-practical-grid > .wp-block-column:nth-child(2) .hts-new-practical-card { border-top: 4px solid var(--hts-blue); }
.hts-new-practical-grid > .wp-block-column:nth-child(3) .hts-new-practical-card { border-top: 4px solid var(--hts-purple); }

.hts-im-new-page #what-happens {
  padding: clamp(28px, 3.5vw, 42px);
}
.hts-new-expect-item {
  padding: 20px 22px 20px 24px;
  border-left: 4px solid var(--hts-blue);
  background: rgba(255,255,255,.7);
  border-radius: 0 12px 12px 0;
}
.hts-new-expect-grid > .wp-block-column:nth-child(2) .hts-new-expect-item { border-left-color: var(--hts-purple); }
.hts-new-expect-grid > .wp-block-column:nth-child(3) .hts-new-expect-item { border-left-color: var(--hts-indigo); }
.hts-new-expect-item h3 { margin: 0 0 8px; }
.hts-new-expect-item p { margin: 0; }

.hts-new-groups-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 24px !important;
  margin-bottom: 24px !important;
}
.hts-new-group-pill {
  margin: 0 !important;
  min-height: 110px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 22px 18px;
  border: 1px solid rgba(126,129,190,.14);
  border-radius: 14px;
  background: rgba(164,215,244,.20);
}
.hts-new-group-pill:nth-child(2) { background: rgba(177,143,194,.15); }
.hts-new-group-pill:nth-child(3) { background: rgba(126,129,190,.12); }
.hts-new-group-pill:nth-child(4) { background: rgba(164,215,244,.14); }
.hts-new-group-pill h3 { margin: 0 0 5px; font-size: 1.05rem; }
.hts-new-group-pill p { margin: 0; color: var(--hts-muted); }

.hts-new-exploring > * { width: 100% !important; max-width: none !important; }
.hts-new-course-card { border-top: 4px solid var(--hts-indigo); }
.hts-new-course-grid > .wp-block-column:nth-child(2) .hts-new-course-card { border-top-color: var(--hts-purple); }

@media (max-width: 781px) {
  .hts-im-new-page .hts-new-sunday { padding: 28px 24px; }
  .hts-new-practical-card,
  .hts-new-course-card { padding: 22px; }
  .hts-new-groups-grid { grid-template-columns: 1fr; }
}


/* ===== Contact page v1.9 ===== */
.hts-contact-page .hts-contact-intro > *,
.hts-contact-page .hts-page-section > * {
  width: 100% !important;
  max-width: none !important;
}
.hts-contact-grid {
  gap: 22px;
  align-items: stretch;
}
.hts-contact-grid > .wp-block-column {
  display: flex;
}
.hts-contact-card {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding: 26px;
  border-top: 4px solid var(--hts-indigo);
}
.hts-contact-grid > .wp-block-column:nth-child(2) .hts-contact-card { border-top-color: var(--hts-blue); }
.hts-contact-grid > .wp-block-column:nth-child(3) .hts-contact-card { border-top-color: var(--hts-purple); }
.hts-contact-card h3 { margin-bottom: 8px; overflow-wrap: anywhere; }
.hts-contact-card h3 a { color: var(--hts-ink); text-decoration: none; }
.hts-contact-card h3 a:hover { color: var(--hts-indigo); }

.hts-contact-visit {
  padding: clamp(28px, 4vw, 44px);
}
.hts-contact-visit-grid { gap: clamp(34px, 6vw, 84px); }
.hts-contact-practical {
  padding: 26px;
  border-left: 4px solid var(--hts-blue);
  background: rgba(255,255,255,.72);
  border-radius: 0 14px 14px 0;
}
.hts-contact-practical ul { margin-bottom: 18px; }

.hts-contact-life-cards {
  gap: 18px;
  margin-top: 22px !important;
  margin-bottom: 24px !important;
}
.hts-contact-life-card {
  margin-block-start: 0 !important;
  margin-top: 0 !important;
  padding: 24px;
  border-top: 4px solid var(--hts-indigo);
}
.hts-contact-life-card:nth-child(2) { border-top-color: var(--hts-purple); }
.hts-contact-life-card:nth-child(3) { border-top-color: var(--hts-blue); }
.hts-contact-life-card h3 { margin-top: 0; }

.hts-contact-hall { margin-top: 44px !important; }
.hts-contact-social {
  margin-top: 28px !important;
  padding: 24px 28px;
  border: 1px solid var(--hts-border);
  border-radius: var(--hts-radius);
  align-items: center;
  gap: 22px;
}
.hts-contact-social h3,
.hts-contact-social p { margin-bottom: 0; }

@media (max-width: 781px) {
  .hts-contact-card { padding: 22px; }
  .hts-contact-visit { padding: 26px 22px; }
  .hts-contact-practical { padding: 22px; }
  .hts-contact-social { padding: 22px; }
}


/* ===== Contact page rhythm v2.0 =====
   Keep the Contact page on the same spacing scale as the other content pages.
   Earlier versions combined the generic section margin with extra top margins
   on Hall Hire and Social, creating noticeably larger gaps in the lower half. */
.hts-contact-page .hts-anchor-nav {
  margin-bottom: 42px !important;
}
.hts-contact-page .hts-page-section {
  margin-top: 0 !important;
  margin-bottom: 48px !important;
}
.hts-contact-page #contact-office .wp-block-buttons {
  margin-top: 18px !important;
}
.hts-contact-page .hts-contact-visit {
  padding: 36px;
}
.hts-contact-page .hts-contact-life-cards {
  margin-top: 20px !important;
  margin-bottom: 20px !important;
}
.hts-contact-page .hts-contact-hall {
  margin-top: 0 !important;
  margin-bottom: 48px !important;
}
.hts-contact-page .hts-contact-social {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

@media (max-width: 781px) {
  .hts-contact-page .hts-anchor-nav { margin-bottom: 36px !important; }
  .hts-contact-page .hts-page-section { margin-bottom: 40px !important; }
  .hts-contact-page .hts-contact-visit { padding: 26px 22px; }
  .hts-contact-page .hts-contact-hall { margin-bottom: 40px !important; }
}

/* ===== Safeguarding page v2.1 ===== */
.hts-safeguarding-page .hts-safeguarding-intro {
  margin-bottom: 34px !important;
}

.hts-safeguarding-page .hts-safeguarding-intro h2 {
  margin-top: 4px;
  margin-bottom: 12px;
}

.hts-safeguarding-policy {
  padding: clamp(26px, 4vw, 42px);
  border-left: 5px solid var(--hts-purple);
  border-radius: var(--hts-radius);
  background: var(--hts-cream);
  margin-bottom: 32px !important;
}

.hts-safeguarding-policy > * {
  width: 100% !important;
  max-width: none !important;
}

.hts-safeguarding-contact-grid {
  gap: 20px;
  align-items: stretch;
  margin-top: 0 !important;
  margin-bottom: 32px !important;
}

.hts-safeguarding-contact-grid > .wp-block-column {
  display: flex;
}

.hts-safeguarding-contact-card {
  width: 100%;
  padding: clamp(24px, 3vw, 34px);
  border: 1px solid var(--hts-border);
  border-top: 4px solid var(--hts-blue);
  border-radius: var(--hts-radius);
  background: #fff;
}

.hts-safeguarding-contact-grid > .wp-block-column:nth-child(2) .hts-safeguarding-contact-card {
  border-top-color: var(--hts-purple);
}

.hts-safeguarding-contact-card > * {
  width: 100% !important;
  max-width: none !important;
}

.hts-safeguarding-contact-card p:last-child {
  margin-bottom: 0;
}

.hts-safeguarding-emergency {
  gap: 24px;
  padding: clamp(24px, 3vw, 34px);
  border-radius: var(--hts-radius);
  background: var(--hts-ink);
  color: #fff;
  margin-top: 0 !important;
}

.hts-safeguarding-emergency .hts-eyebrow {
  color: var(--hts-blue);
}

.hts-safeguarding-emergency h3 {
  margin: 4px 0 0;
  color: #fff;
}

.hts-safeguarding-emergency .wp-block-button__link {
  background: #fff !important;
  color: var(--hts-ink) !important;
}

@media (max-width: 781px) {
  .hts-safeguarding-contact-grid {
    gap: 16px;
  }
  .hts-safeguarding-emergency {
    align-items: flex-start !important;
  }
}


/* ===== Safeguarding refinements v2.2 =====
   The intro group is itself a constrained Gutenberg group, so its children
   otherwise fall back to the theme contentSize even though the outer page is
   wide. Let the intro use the same page grid as the rest of the page. */
.hts-safeguarding-page .hts-safeguarding-intro {
  width: 100% !important;
  max-width: none !important;
}
.hts-safeguarding-page .hts-safeguarding-intro > * {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* The approved Diocese wording already contains the 999 instruction, so a
   second emergency banner is unnecessary. Hide it on pages created from the
   earlier pattern as well as omitting it from new copies. */
.hts-safeguarding-page .hts-safeguarding-emergency {
  display: none !important;
}

/* ===== Hall Hire page v2.3 ===== */
.hts-hall-hire-page .hts-page-intro > *,
.hts-hall-hire-page .hts-page-section > * {
  width: 100% !important;
  max-width: none !important;
}
.hts-hall-intro {
  margin-bottom: 42px !important;
}
.hts-hall-intro .has-large-font-size {
  max-width: none !important;
}
.hts-hall-gallery {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 20px !important;
}
.hts-hall-gallery-image {
  margin: 0 !important;
}
.hts-hall-gallery-image img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 16px;
  box-shadow: var(--hts-shadow);
}
.hts-hall-gallery-image figcaption {
  margin-top: 8px;
  color: var(--hts-muted);
  font-size: .9rem;
  text-align: left;
}
.hts-hall-rates-section {
  padding: clamp(28px, 4vw, 44px);
  background: var(--hts-cream);
  border: 1px solid var(--hts-border);
  border-radius: var(--hts-radius);
}
.hts-hall-rate-grid,
.hts-hall-facilities-grid {
  gap: 18px;
  align-items: stretch;
  margin-top: 22px !important;
}
.hts-hall-rate-grid > .wp-block-column,
.hts-hall-facilities-grid > .wp-block-column {
  display: flex;
}
.hts-hall-rate-card,
.hts-hall-facility-card {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding: 24px;
}
.hts-hall-rate-card {
  border-top: 4px solid var(--hts-indigo);
}
.hts-hall-rate-grid > .wp-block-column:nth-child(2) .hts-hall-rate-card { border-top-color: var(--hts-blue); }
.hts-hall-rate-grid > .wp-block-column:nth-child(3) .hts-hall-rate-card { border-top-color: var(--hts-purple); }
.hts-hall-price {
  margin: 14px 0 0 !important;
  color: var(--hts-ink);
  font-size: clamp(1.7rem, 3vw, 2.3rem);
  font-weight: 800;
  line-height: 1;
}
.hts-hall-price span {
  display: inline-block;
  margin-left: 4px;
  color: var(--hts-muted);
  font-size: 1rem;
  font-weight: 500;
}
.hts-hall-facility-card {
  border-top: 4px solid var(--hts-blue);
}
.hts-hall-facilities-grid > .wp-block-column:nth-child(2) .hts-hall-facility-card { border-top-color: var(--hts-purple); }
.hts-hall-facilities-grid > .wp-block-column:nth-child(3) .hts-hall-facility-card { border-top-color: var(--hts-indigo); }
.hts-hall-enquiry {
  margin-top: 48px !important;
}

@media (max-width: 781px) {
  .hts-hall-gallery { grid-template-columns: 1fr; }
  .hts-hall-rates-section { padding: 26px 22px; }
  .hts-hall-enquiry { margin-top: 40px !important; }
}


/* ===== Mobile spacing and navigation refinements v2.4 ===== */
@media (max-width: 781px) {
  /* Use one consistent 20px page gutter on phones. */
  .hts-homepage .alignwide,
  .hts-home-hero__inner,
  .wp-block-post-content .hts-content-page.alignwide {
    width: min(calc(100% - 40px), 1180px) !important;
  }

  .wp-block-post-content.alignfull > :not(.alignfull):not(.alignwide):not(.hts-content-page) {
    width: min(calc(100% - 40px), 760px);
  }

  .hts-header > .wp-block-group.alignwide,
  .hts-footer > .wp-block-columns.alignwide,
  .hts-footer > .wp-block-separator.alignwide,
  .hts-footer > .wp-block-group.alignwide {
    width: calc(100% - 40px);
    max-width: none;
    margin-left: auto !important;
    margin-right: auto !important;
  }

  /* Make the mobile navigation feel like a primary menu rather than desktop
     navigation squeezed into an overlay. */
  .hts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
    padding: 72px 24px 36px;
  }

  .hts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
    gap: .7rem;
  }

  .hts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
    font-size: 1.3rem;
    line-height: 1.25;
    font-weight: 700;
    padding: .28rem 0;
  }

  .hts-header .wp-block-navigation__responsive-container-open svg,
  .hts-header .wp-block-navigation__responsive-container-close svg {
    width: 28px;
    height: 28px;
  }
}


/* ===== Page title hero refinements v2.5 =====
   Keep the title aligned to the same page gutter on every screen.  When a
   Page has a Featured Image, the image is automatically used as the title
   banner background with a dark overlay and white title for reliable contrast. */
.hts-page-hero > .wp-block-post-title {
  width: min(calc(100% - 40px), 1180px) !important;
  max-width: 1180px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

.hts-page-hero--image {
  background-image:
    linear-gradient(rgba(31, 37, 50, .50), rgba(31, 37, 50, .50)),
    var(--hts-page-hero-image) !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  border-bottom-color: rgba(255,255,255,.18);
}

.hts-page-hero--image .wp-block-post-title {
  color: #fff !important;
  text-shadow: 0 2px 14px rgba(0,0,0,.28);
}

@media (max-width: 781px) {
  .hts-page-hero {
    padding-top: 46px !important;
    padding-bottom: 46px !important;
  }

  .hts-page-hero > .wp-block-post-title {
    width: calc(100% - 40px) !important;
    max-width: none !important;
  }

  .hts-page-hero--image {
    min-height: 150px;
    display: flex;
    align-items: center;
  }
}


/* ===== Homepage Featured Image hero v2.6 =====
   If the static Home page has a Featured Image, use it behind the existing
   homepage welcome block.  The dark overlay and contrast rules are only
   applied in image mode; without a Featured Image the existing cream hero
   remains unchanged. */
.hts-home-hero--image {
  background-image:
    linear-gradient(rgba(29, 35, 48, .58), rgba(29, 35, 48, .58)),
    var(--hts-home-hero-image) !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  border-bottom-color: rgba(255,255,255,.18);
}

.hts-home-hero--image .hts-home-title,
.hts-home-hero--image .hts-home-intro {
  color: #fff !important;
  text-shadow: 0 2px 16px rgba(0,0,0,.30);
}

.hts-home-hero--image .hts-eyebrow,
.hts-home-hero--image .hts-home-tagline {
  color: #d9dcff !important;
  text-shadow: 0 2px 14px rgba(0,0,0,.26);
}

.hts-home-hero--image .hts-button-secondary .wp-block-button__link {
  color: #fff !important;
  border-color: rgba(255,255,255,.78) !important;
  background: rgba(255,255,255,.08) !important;
  backdrop-filter: blur(2px);
}

.hts-home-hero--image .hts-button-secondary .wp-block-button__link:hover,
.hts-home-hero--image .hts-button-secondary .wp-block-button__link:focus-visible {
  color: var(--hts-ink) !important;
  background: #fff !important;
  border-color: #fff !important;
}

.hts-home-hero--image::before {
  box-shadow: 0 1px 8px rgba(0,0,0,.18);
}

@media (max-width: 781px) {
  .hts-home-hero--image {
    background-position: center center !important;
  }
}


/* ===== Privacy page width correction v2.8 =====
   The Privacy pattern is made from constrained inner Groups.  WordPress can
   re-apply the global content-size cap to those children even though the
   outer page wrapper is wide.  Keep this page on the same 1180px grid as the
   other structured content pages. */
.wp-block-post-content .hts-privacy-page,
.wp-block-post-content .hts-privacy-page.alignwide {
  width: min(1180px, calc(100% - 48px)) !important;
  max-width: 1180px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

.hts-privacy-page > .hts-page-lead,
.hts-privacy-page > .hts-page-section,
.hts-privacy-page .hts-page-section > * {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  box-sizing: border-box;
}

@media (max-width: 781px) {
  .wp-block-post-content .hts-privacy-page,
  .wp-block-post-content .hts-privacy-page.alignwide {
    width: min(calc(100% - 40px), 1180px) !important;
  }
}


/* ===== Privacy page constrained-layout reset v3.0 =====
   Gutenberg's constrained Group layout can re-apply the global 760px
   contentSize to nested children.  Reset that behaviour throughout the
   Privacy pattern so ordinary copy uses the full shared page grid. */
.hts-privacy-page.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
.hts-privacy-page .hts-page-section.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
.hts-privacy-page .hts-soft-panel.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.hts-privacy-page .hts-page-section,
.hts-privacy-page .hts-soft-panel {
  width: 100% !important;
  max-width: none !important;
}


/* ===== Wide structured copy correction v3.1 ===== */
.hts-privacy-page {
  --wp--style--global--content-size: 1180px;
}
.hts-privacy-page .hts-page-section > *,
.hts-privacy-page .hts-soft-panel > * {
  max-width: none !important;
}


/* ===== Site-wide structured page width correction v3.2 =====
   Earlier v1.2 CSS used a highly-specific :not() selector with !important,
   which could keep normal copy at 900px even after later wide-page fixes.
   Structured content pages now consistently use the full shared 1180px grid. */
.hts-content-page .hts-page-section.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
.hts-content-page .hts-soft-panel.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Keep the rota heading readable on each dark Sunday panel. */
.hts-home-sunday .hts-next-sunday__title,
.hts-sundays-page .hts-sunday-live .hts-next-sunday__title,
.hts-im-new-page .hts-new-sunday .hts-next-sunday__title{color:#fff !important}
.hts-home-sunday .hts-next-sunday--rota .hts-next-sunday__service:first-child{padding-top:0}

/* ===== Contact page sidebar index v3.6.8 =====
   Keep Contact consistent with the other structured information pages while
   leaving its existing content and responsive fallback unchanged. */
@media (min-width: 960px) {
  .hts-contact-page {
    display: grid !important;
    grid-template-columns: minmax(190px, 220px) minmax(0, 1fr);
    column-gap: clamp(36px, 5.5vw, 78px);
    align-items: start;
  }

  .hts-contact-page > .hts-contact-intro {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    margin-bottom: 30px !important;
  }

  .hts-contact-page > .hts-anchor-nav {
    grid-column: 1;
    grid-row: 1;
    display: block !important;
    position: sticky;
    top: 32px;
    align-self: start;
    height: 0;
    min-height: 0;
    overflow: visible;
    margin: 0 !important;
    padding: 0;
    border: 0;
    z-index: 3;
  }

  .hts-contact-page > .hts-anchor-nav::before {
    display: block;
    padding: 0 0 16px;
    border-bottom: 1px solid var(--hts-border);
  }

  .hts-contact-page > .hts-anchor-nav p {
    display: block;
    padding: 13px 0;
    border-bottom: 1px solid var(--hts-border);
  }

  .hts-contact-page > .hts-anchor-nav a {
    display: block;
    color: var(--hts-muted);
    font-size: .95rem;
    font-weight: 650;
    line-height: 1.35;
  }

  .hts-contact-page > .hts-anchor-nav a:hover,
  .hts-contact-page > .hts-anchor-nav a:focus-visible {
    color: var(--hts-indigo);
  }

  .hts-contact-page > .hts-page-section,
  .hts-contact-page > .hts-contact-social,
  .hts-contact-page > .hts-page-cta {
    grid-column: 2;
    min-width: 0;
    width: 100%;
  }
}

@media (max-width: 959px) {
  .hts-contact-page {
    display: block !important;
  }

  .hts-contact-page > .hts-anchor-nav {
    position: static;
    height: auto;
    min-height: 0;
    overflow: visible;
  }

  .hts-contact-page > .hts-contact-intro,
  .hts-contact-page > .hts-page-section,
  .hts-contact-page > .hts-contact-social,
  .hts-contact-page > .hts-page-cta {
    min-width: 0;
    width: 100%;
  }
}
