:root {
  --springthorpe-color-heading: var(--wp--preset--color--springthorpe-charcoal, #22201d);
  --springthorpe-color-text: var(--wp--preset--color--springthorpe-ink, #2d2a25);
  --springthorpe-color-muted: var(--wp--preset--color--springthorpe-muted, #625b52);
  --springthorpe-color-background: var(--wp--preset--color--springthorpe-paper, #fbfaf6);
  --springthorpe-color-surface: #ffffff;
  --springthorpe-color-soft: var(--wp--preset--color--springthorpe-mist, #eef3ee);
  --springthorpe-color-primary: var(--wp--preset--color--springthorpe-green, #4f6f52);
  --springthorpe-color-primary-hover: #3f5d43;
  --springthorpe-color-accent: var(--wp--preset--color--springthorpe-gold, #b58a2b);
  --springthorpe-color-border: rgba(34, 32, 29, 0.13);
  --springthorpe-radius-control: 4px;
  --springthorpe-shell-padding: clamp(1.25rem, 5vw, 2.5rem);
  --springthorpe-shell-max: var(--wp--style--global--wide-size, 1120px);
  --springthorpe-content-max: var(--wp--style--global--content-size, 760px);
  --springthorpe-charcoal: var(--springthorpe-color-heading);
  --springthorpe-gold: var(--springthorpe-color-accent);
  --springthorpe-green: var(--springthorpe-color-primary);
  --springthorpe-ink: var(--springthorpe-color-text);
  --springthorpe-paper: var(--springthorpe-color-background);
  --springthorpe-mist: var(--springthorpe-color-soft);
  --springthorpe-line: var(--springthorpe-color-border);
  --springthorpe-muted: var(--springthorpe-color-muted);
}

.springthorpe-portal-nav .wp-block-navigation__container {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.95rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.springthorpe-portal-nav a {
  color: var(--springthorpe-color-text);
  font-size: 0.95rem;
  font-weight: 650;
  text-decoration: none;
}

.springthorpe-portal-nav a:hover,
.springthorpe-portal-nav a:focus,
.springthorpe-portal-nav .is-active > a {
  color: var(--springthorpe-color-primary);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.wpcf7-form input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.wpcf7-form select,
.wpcf7-form textarea {
  border: 1px solid color-mix(in srgb, var(--springthorpe-color-heading) 24%, transparent);
  border-radius: var(--springthorpe-radius-control);
  box-sizing: border-box;
  font: inherit;
  max-width: min(100%, 42rem);
  padding: 0.7rem 0.8rem;
  width: 100%;
}

.wpcf7-form label,
.wpcf7-form .wpcf7-form-control-wrap {
  box-sizing: border-box;
  display: block;
  max-width: 100%;
}

/* Fix validation message clipping and spacing.
   Theme applies top:12px/bottom:-12px to .wpcf7-not-valid-tip and a fixed
   height on .wpcf7-form-control-wrap, clipping the error text. Both .line
   and .wpcf7-not-valid-tip are siblings inside .wpcf7-form-control-wrap.
   :has() + :not(:empty) scopes spacing only to containers with active errors,
   avoiding phantom gaps on valid fields. */
.wpcf7-form .wpcf7-form-control-wrap {
  display: block !important;
  height: auto !important;
}

.wpcf7-form .wpcf7-not-valid-tip {
  position: relative !important;
  top: 0 !important;
  bottom: 0 !important;
  display: block !important;
}

.wpcf7-form .wpcf7-not-valid-tip:not(:empty) {
  margin-top: 7px;
  margin-bottom: 7px;
}

.wpcf7-form .wpcf7-form-control-wrap:has(.wpcf7-not-valid-tip:not(:empty)) > .line {
  margin-top: 7px;
  margin-bottom: 7px;
}

body.page-id-10.springthorpe-theme-smash .wpcf7 .form-style-1 .style-line[class*="icon-"]::before {
  left: 0.8rem;
}

body.page-id-10.springthorpe-theme-smash .wpcf7 .form-style-1 .style-line[class*="icon-"] input,
body.page-id-10.springthorpe-theme-smash .wpcf7 .form-style-1 .style-line[class*="icon-"] select,
body.page-id-10.springthorpe-theme-smash .wpcf7 .form-style-1 .style-line[class*="icon-"] textarea {
  padding-left: 2.75rem;
}

body.springthorpe-theme-smash .trx_addons_tabs_title_register[data-disabled="true"] {
  display: none !important;
}

/* ── Contact form: tighten vertical field spacing by ~10pt ────────────────── */

body.page-id-10 .wpcf7 .form-style-1 > label,
body.page-id-10 .wpcf7 .form-style-1 > .columns_wrap {
  margin-bottom: -0.625rem;
}

/* ── Contact form: conditional access-request field group ─────────────────── */

.spt-access-request-fields[hidden],
.spt-standard-fields[hidden] {
  display: none;
}

.spt-standard-fields,
.spt-access-request-fields {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  margin-top: 0.625rem;
}

.spt-access-request-fields > label,
.spt-access-request-fields > p {
  margin: 0;
}

/* Replace paper-plane icon with spinner on submit.
   Only ::before is targeted — the theme uses ::after on .submit-style-in
   for other decoration that must not be disturbed. */
.wpcf7-submit-style[data-sending] .submit-style-in::before {
  animation: spt-spin 0.7s linear infinite !important;
  background: none !important;
  border: 2px solid rgba(255, 255, 255, 0.7) !important;
  border-top-color: transparent !important;
  border-radius: 50% !important;
  box-shadow: none !important;
  content: '' !important;
  display: inline-block !important;
  height: 1em !important;
  width: 1em !important;
}

@keyframes spt-spin {
  to { transform: rotate(360deg); }
}

.springthorpe-button {
  background: var(--springthorpe-color-heading);
  border: 0;
  border-radius: var(--springthorpe-radius-control);
  color: #ffffff;
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-weight: 650;
  margin-top: 1rem;
  padding: 0.75rem 1rem;
  text-decoration: none;
  transition: background-color 160ms ease, box-shadow 160ms ease, color 160ms ease;
}

.springthorpe-button:hover,
.springthorpe-button:focus {
  background: var(--springthorpe-color-primary-hover);
  color: #ffffff;
  text-decoration: none;
}

.springthorpe-button--secondary {
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--springthorpe-color-accent);
  color: var(--springthorpe-color-heading);
}

.springthorpe-button--secondary:hover,
.springthorpe-button--secondary:focus {
  background: color-mix(in srgb, var(--springthorpe-color-accent) 12%, transparent);
  color: var(--springthorpe-color-heading);
}

.springthorpe-action-row,
.springthorpe-member-gate__actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.springthorpe-action-link {
  font-weight: 700;
}

.springthorpe-section-list {
  display: grid;
  gap: 0;
  list-style: none;
  padding-left: 0;
}

.springthorpe-section-list li {
  border-top: 1px solid var(--springthorpe-color-border);
  padding-block: 0.9rem;
}

.springthorpe-section-list strong {
  color: var(--springthorpe-color-heading);
  display: block;
  font-size: 1.12rem;
  font-weight: 750;
  line-height: 1.25;
}

.springthorpe-section-list span {
  color: var(--springthorpe-color-muted);
  display: block;
  font-size: 0.95rem;
  line-height: 1.45;
  margin-top: 0.3rem;
}

.springthorpe-section-list a {
  color: var(--springthorpe-color-primary);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.springthorpe-operator-landing {
  box-sizing: border-box;
  display: grid;
  gap: clamp(1.25rem, 2.5vw, 2rem);
  margin-block: 0 clamp(2rem, 4vw, 3rem);
  max-width: min(100%, 58rem);
}

.springthorpe-operator-landing > p {
  color: var(--springthorpe-color-muted);
  font-size: clamp(1rem, 1.4vw, 1.12rem);
  line-height: 1.55;
  margin: 0;
  max-width: 44rem;
}

.springthorpe-operator-actions {
  display: grid;
  gap: clamp(1.25rem, 2.5vw, 1.75rem);
}

.springthorpe-operator-section {
  border-top: 1px solid var(--springthorpe-color-border);
  display: grid;
  gap: 0.7rem;
  padding-block-start: clamp(1rem, 2vw, 1.35rem);
}

.springthorpe-operator-section h3 {
  color: var(--springthorpe-color-heading);
  font-size: clamp(1.03rem, 1.5vw, 1.18rem);
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.25;
  margin: 0;
}

.springthorpe-operator-link-list {
  display: grid;
  gap: 0;
  list-style: none;
  margin: 0;
  padding: 0;
}

.springthorpe-operator-link-list li {
  align-items: start;
  border-top: 1px solid color-mix(in srgb, var(--springthorpe-color-border) 72%, transparent);
  display: grid;
  gap: 0.2rem clamp(1rem, 2vw, 1.5rem);
  grid-template-columns: minmax(11rem, 0.45fr) minmax(0, 1fr);
  padding-block: 0.82rem;
}

.springthorpe-operator-link-list li:first-child {
  border-top: 0;
}

.springthorpe-operator-link-list a {
  color: var(--springthorpe-color-primary);
  font-weight: 750;
  line-height: 1.35;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.18em;
  transition: color 160ms ease, text-decoration-color 160ms ease;
}

.springthorpe-operator-link-list a:hover,
.springthorpe-operator-link-list a:focus {
  color: var(--springthorpe-color-primary-hover);
  text-decoration-color: currentColor;
}

.springthorpe-operator-link-list span {
  color: var(--springthorpe-color-muted);
  font-size: 0.95rem;
  line-height: 1.45;
}

@media (max-width: 700px) {
  .springthorpe-operator-link-list li {
    grid-template-columns: 1fr;
  }
}

.springthorpe-native-login {
  background: var(--springthorpe-color-surface);
  border-block: 1px solid var(--springthorpe-color-border);
  box-sizing: border-box;
  display: grid;
  gap: 1rem;
  margin-block: 1.5rem;
  max-width: min(100%, 34rem);
  padding: 1.35rem clamp(1.25rem, 3vw, 1.75rem);
}

.springthorpe-native-login__intro {
  display: grid;
  gap: 0.35rem;
}

.springthorpe-native-login__intro h2,
.springthorpe-native-login--signed-in h2 {
  color: var(--springthorpe-color-heading);
  font-size: clamp(1.55rem, 2.4vw, 2rem);
  line-height: 1.1;
  margin: 0;
}

.springthorpe-native-login__intro p:not(.springthorpe-native-login__kicker),
.springthorpe-native-login--signed-in p:not(.springthorpe-native-login__kicker) {
  color: var(--springthorpe-color-muted);
  line-height: 1.5;
  margin: 0;
}

.springthorpe-native-login__kicker {
  color: var(--springthorpe-color-primary);
  font-size: 0.8rem;
  font-weight: 780;
  letter-spacing: 0.08em;
  margin: 0;
  text-transform: uppercase;
}

.springthorpe-native-login__notice {
  border-left: 4px solid var(--springthorpe-color-accent);
  color: var(--springthorpe-color-heading);
  margin: 0;
  padding: 0.15rem 0 0.15rem 0.85rem;
}

.springthorpe-native-login__notice--error {
  border-left-color: #b6432b;
}

.springthorpe-native-login form {
  display: grid;
  gap: 0.85rem;
  margin: 0;
}

.springthorpe-native-login form p {
  margin: 0;
}

.springthorpe-native-login label {
  color: var(--springthorpe-color-heading);
  display: block;
  font-weight: 700;
  margin-bottom: 0.35rem;
}

.springthorpe-native-login input[type="text"],
.springthorpe-native-login input[type="password"] {
  border: 1px solid color-mix(in srgb, var(--springthorpe-color-heading) 24%, transparent);
  border-radius: var(--springthorpe-radius-control);
  box-sizing: border-box;
  color: var(--springthorpe-color-text);
  font: inherit;
  max-width: 100%;
  padding: 0.75rem 0.85rem;
  width: 100%;
}

.springthorpe-native-login .login-remember label {
  align-items: center;
  color: var(--springthorpe-color-muted);
  display: inline-flex;
  gap: 0.5rem;
  font-weight: 600;
  margin: 0;
}

.springthorpe-native-login input[type="checkbox"] {
  margin: 0;
}

.springthorpe-native-login input[type="submit"] {
  background: var(--springthorpe-color-heading);
  border: 0;
  border-radius: var(--springthorpe-radius-control);
  color: #ffffff;
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-weight: 700;
  justify-self: start;
  padding: 0.75rem 1.1rem;
}

.springthorpe-native-login input[type="submit"]:hover,
.springthorpe-native-login input[type="submit"]:focus {
  background: var(--springthorpe-color-primary-hover);
}

.springthorpe-native-login__links {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
}

.springthorpe-native-login__links a {
  color: var(--springthorpe-color-primary);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.springthorpe-kicker,
.springthorpe-booking-kicker,
.springthorpe-member-gate__kicker {
  color: var(--springthorpe-color-primary);
  font-size: 0.8rem;
  font-weight: 780;
  letter-spacing: 0.08em;
  margin: 0 0 0.85rem;
  text-transform: uppercase;
}

.springthorpe-member-hub {
  display: grid;
  gap: 2rem;
  max-width: var(--springthorpe-shell-max);
  width: 100%;
}

.springthorpe-member-hub__media {
  aspect-ratio: 1080 / 304;
  margin: 0;
  overflow: hidden;
  width: 100%;
}

.springthorpe-member-hub__media picture {
  display: block;
  height: 100%;
  width: 100%;
}

.springthorpe-member-hub__media img {
  display: block;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center center;
  width: 100% !important;
}

.springthorpe-member-hub__header {
  align-items: end;
  border-bottom: 1px solid var(--springthorpe-color-border);
  display: grid;
  gap: 0.7rem;
  grid-template-columns: minmax(0, 1fr) auto;
  padding-bottom: 1.25rem;
}

.springthorpe-member-hub__header .springthorpe-kicker,
.springthorpe-member-hub__header h1,
.springthorpe-member-hub__header p {
  grid-column: 1;
}

.springthorpe-member-hub__header h1 {
  color: var(--springthorpe-color-heading);
  font-size: 3.75rem;
  line-height: 0.98;
  margin: 0;
}

.springthorpe-member-hub__header p:last-child {
  color: var(--springthorpe-color-muted);
  margin: 0;
}

.springthorpe-member-hub__tiles {
  display: grid;
  gap: 1px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.springthorpe-member-hub__tile {
  align-content: space-between;
  background: color-mix(in srgb, var(--springthorpe-color-soft) 64%, #ffffff);
  box-shadow: inset 0 0 0 1px var(--springthorpe-color-border);
  color: var(--springthorpe-color-heading);
  display: grid;
  min-height: 16.5rem;
  overflow: hidden;
  padding: 1.25rem;
  position: relative;
  text-decoration: none;
  transition: background-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.springthorpe-member-hub__tile > * {
  position: relative;
  z-index: 1;
}

.springthorpe-member-hub__tile:hover,
.springthorpe-member-hub__tile:focus {
  background: #ffffff;
  color: var(--springthorpe-color-primary);
  transform: translateY(-0.2rem);
}

.springthorpe-member-hub__icon {
  color: var(--springthorpe-color-primary);
  display: block;
  height: 4.5rem;
  width: 4.5rem;
}

.springthorpe-member-hub__icon svg {
  display: block;
  height: 100%;
  width: 100%;
}

.springthorpe-member-hub__tile-text {
  display: grid;
  gap: 0.45rem;
}

.springthorpe-member-hub__tile strong {
  font-size: 1.45rem;
  line-height: 1.05;
}

.springthorpe-member-hub__tile small {
  color: var(--springthorpe-color-muted);
  font-size: 0.94rem;
  line-height: 1.42;
}

.springthorpe-member-gate,
.springthorpe-profile-summary,
.springthorpe-profile-bookings {
  border-block: 1px solid var(--springthorpe-color-border);
  box-sizing: border-box;
  margin-block: 1.5rem;
  max-width: min(100%, var(--springthorpe-content-max));
  padding-block: 1.25rem;
}

.springthorpe-member-gate {
  background: color-mix(in srgb, var(--springthorpe-color-accent) 8%, var(--springthorpe-color-surface));
  display: grid;
  gap: 0.9rem;
}

.springthorpe-public-home-hero {
  align-content: center;
  background:
    linear-gradient(90deg, rgba(9, 15, 18, 0.68) 0%, rgba(9, 15, 18, 0.48) 44%, rgba(9, 15, 18, 0.18) 100%),
    var(--springthorpe-home-hero-image, none) center center / cover no-repeat;
  box-sizing: border-box;
  color: #ffffff;
  display: grid;
  gap: 1.4rem;
  margin: 0 calc(50% - 50vw);
  min-height: clamp(34rem, 76svh, 42rem);
  padding: clamp(4.5rem, 10vw, 7rem) max(7vw, calc((100vw - 1220px) / 2));
  position: relative;
  width: 100vw;
}

.springthorpe-public-home-hero__content {
  display: grid;
  gap: 1rem;
  max-width: 43rem;
}

.springthorpe-public-home-hero__kicker {
  color: #ffffff;
  font-size: 0.86rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1.2;
  margin: 0;
  text-transform: uppercase;
}

.springthorpe-public-home-hero h1 {
  color: #ffffff;
  font-size: clamp(3.4rem, 7vw, 5.4rem);
  font-weight: 800;
  letter-spacing: 0;
  line-height: 0.95;
  margin: 0;
  text-transform: uppercase;
}

.springthorpe-public-home-hero--pre-launch h1 {
  font-size: clamp(1.6rem, 3.2vw, 2.4rem);
  line-height: 1.15;
}

.springthorpe-public-home-hero p:not(.springthorpe-public-home-hero__kicker) {
  color: #ffffff;
  font-size: clamp(1.1rem, 1.7vw, 1.45rem);
  line-height: 1.35;
  margin: 0;
  max-width: 37rem;
}

.springthorpe-public-home-hero__actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem;
}

.springthorpe-public-home-hero .springthorpe-button {
  background: #ffffff;
  color: #151515;
  margin-top: 0;
  padding: 0.9rem 1.2rem;
}

.springthorpe-public-home-hero .springthorpe-button:hover,
.springthorpe-public-home-hero .springthorpe-button:focus {
  background: #f3f8f9;
  color: #151515;
}

.springthorpe-public-home-hero .springthorpe-button--secondary {
  background: transparent;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.82);
  color: #ffffff;
}

.springthorpe-public-home-hero .springthorpe-button--secondary:hover,
.springthorpe-public-home-hero .springthorpe-button--secondary:focus {
  background: rgba(255, 255, 255, 0.12);
  color: #ffffff;
}

.springthorpe-member-gate h2,
.springthorpe-profile-summary h2,
.springthorpe-profile-bookings h2 {
  color: var(--springthorpe-color-heading);
  font-size: clamp(1.35rem, 2.4vw, 1.85rem);
  line-height: 1.12;
  margin: 0;
}

.springthorpe-member-gate p,
.springthorpe-profile-bookings p {
  color: var(--springthorpe-color-muted);
  line-height: 1.55;
  margin: 0;
}

@media (max-width: 767px) {
  .springthorpe-public-home-hero {
    min-height: clamp(30rem, 72svh, 38rem);
    padding-inline: 1.25rem;
  }
}

.springthorpe-booking-hub,
.springthorpe-booking-layout {
  margin-left: 0;
  margin-right: auto;
  max-width: var(--springthorpe-shell-max);
  width: 100%;
}

.springthorpe-booking-hub {
  display: grid;
  gap: clamp(1.4rem, 3vw, 2.35rem);
}

.springthorpe-booking-hub__header {
  border-bottom: 1px solid var(--springthorpe-color-border);
  display: grid;
  gap: 0.65rem;
  padding-bottom: 1.15rem;
}

.springthorpe-booking-hub__header h2 {
  color: var(--springthorpe-color-heading);
  font-size: clamp(2.8rem, 5vw, 4.6rem);
  line-height: 1;
  margin: 0;
}

.springthorpe-booking-summary,
.springthorpe-booking-footnote {
  color: var(--springthorpe-color-muted);
  line-height: 1.55;
  margin: 0;
  max-width: 42rem;
}

.springthorpe-booking-hub--editable > * {
  margin-left: 0 !important;
  margin-right: 0 !important;
  max-width: none !important;
  text-align: left;
}

.springthorpe-booking-hub--editable > .springthorpe-booking-kicker {
  margin-bottom: 0 !important;
}

.springthorpe-booking-hub--editable > .springthorpe-booking-summary {
  border-bottom: 1px solid var(--springthorpe-color-border);
  padding-bottom: 1.15rem;
  width: 100%;
}

.springthorpe-booking-hub--editable > .springthorpe-booking-note {
  background: transparent;
  border: 0;
  padding: 0;
}

.springthorpe-booking-hub--editable > .springthorpe-booking-note > * {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid {
  --springthorpe-booking-grid-border: color-mix(in srgb, var(--springthorpe-color-heading) 22%, var(--springthorpe-color-border));

  background: var(--springthorpe-booking-grid-border);
  border-left: 2px solid var(--springthorpe-booking-grid-border);
  border-right: 2px solid var(--springthorpe-booking-grid-border);
  display: grid !important;
  gap: 2px !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0 !important;
  margin-block-end: 0 !important;
  margin-block-start: 0 !important;
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--top {
  border-top: 2px solid var(--springthorpe-booking-grid-border);
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--bottom {
  border-top: 2px solid var(--springthorpe-booking-grid-border);
  border-bottom: 2px solid var(--springthorpe-booking-grid-border);
  margin-block-start: calc(-1 * clamp(1.4rem, 3vw, 2.35rem)) !important;
}

.springthorpe-booking-hub--editable .springthorpe-booking-card {
  align-content: stretch;
  background: color-mix(in srgb, var(--springthorpe-color-soft) 74%, #ffffff);
  box-sizing: border-box;
  display: grid;
  flex-basis: auto !important;
  grid-template-rows: auto auto auto auto minmax(0, 1fr);
  justify-self: stretch;
  margin: 0 !important;
  max-width: none !important;
  min-height: 21rem;
  padding: 1.25rem !important;
  position: relative;
  transition: background-color 180ms ease, color 180ms ease, transform 180ms ease;
  width: 100% !important;
}

.springthorpe-booking-hub--editable .springthorpe-booking-card:hover,
.springthorpe-booking-hub--editable .springthorpe-booking-card:focus-within {
  background: #ffffff;
  color: var(--springthorpe-color-primary);
  transform: translateY(-0.16rem);
}

.springthorpe-booking-hub--editable .springthorpe-booking-card::before {
  background: currentColor;
  color: var(--springthorpe-color-primary);
  content: "";
  display: block;
  height: 4rem;
  margin: 1.6rem 0 1.1rem;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  width: 4rem;
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--top .springthorpe-booking-card:nth-child(1)::before,
.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--top .springthorpe-booking-card:nth-child(2)::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 19V5h14v14'/%3E%3Cpath d='M8 9h8'/%3E%3Cpath d='M8 13h8'/%3E%3Cpath d='M8 17h5'/%3E%3C/g%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 19V5h14v14'/%3E%3Cpath d='M8 9h8'/%3E%3Cpath d='M8 13h8'/%3E%3Cpath d='M8 17h5'/%3E%3C/g%3E%3C/svg%3E");
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--top .springthorpe-booking-card:nth-child(3)::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h14v16H5z'/%3E%3Cpath d='M12 4v16'/%3E%3Cpath d='M5 12h14'/%3E%3C/g%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h14v16H5z'/%3E%3Cpath d='M12 4v16'/%3E%3Cpath d='M5 12h14'/%3E%3C/g%3E%3C/svg%3E");
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--bottom .springthorpe-booking-card:nth-child(1)::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 19h14'/%3E%3Cpath d='M7 15h10'/%3E%3Cpath d='M9 15V9h6v6'/%3E%3Cpath d='M10 9l2-4 2 4'/%3E%3Cpath d='M8 5h8'/%3E%3C/g%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 19h14'/%3E%3Cpath d='M7 15h10'/%3E%3Cpath d='M9 15V9h6v6'/%3E%3Cpath d='M10 9l2-4 2 4'/%3E%3Cpath d='M8 5h8'/%3E%3C/g%3E%3C/svg%3E");
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--bottom .springthorpe-booking-card:nth-child(2)::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8.5' cy='9.5' r='4.2'/%3E%3Cpath d='M11.5 12.5l5 5'/%3E%3Cpath d='M15 19l3-3'/%3E%3Ccircle cx='17' cy='6' r='1.6'/%3E%3Cpath d='M4 20h16'/%3E%3C/g%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8.5' cy='9.5' r='4.2'/%3E%3Cpath d='M11.5 12.5l5 5'/%3E%3Cpath d='M15 19l3-3'/%3E%3Ccircle cx='17' cy='6' r='1.6'/%3E%3Cpath d='M4 20h16'/%3E%3C/g%3E%3C/svg%3E");
}

.springthorpe-booking-hub--editable .springthorpe-booking-editable-grid--bottom .springthorpe-booking-card:nth-child(3)::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 18h16'/%3E%3Cpath d='M6 14h12'/%3E%3Cpath d='M8 10h8'/%3E%3Cpath d='M10 6h4'/%3E%3Cpath d='M7 18v-4'/%3E%3Cpath d='M17 18v-4'/%3E%3C/g%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 18h16'/%3E%3Cpath d='M6 14h12'/%3E%3Cpath d='M8 10h8'/%3E%3Cpath d='M10 6h4'/%3E%3Cpath d='M7 18v-4'/%3E%3Cpath d='M17 18v-4'/%3E%3C/g%3E%3C/svg%3E");
}

.springthorpe-booking-hub--editable .springthorpe-booking-card h2 {
  color: var(--springthorpe-color-heading);
  font-size: clamp(1.45rem, 2.4vw, 1.85rem);
  letter-spacing: 0;
  line-height: 1.05;
  margin: 0;
  text-transform: none;
}

.springthorpe-booking-hub--editable .springthorpe-booking-card p {
  color: var(--springthorpe-color-muted);
  font-size: 0.94rem;
  line-height: 1.45;
  margin: 0.65rem 0 0;
}

.springthorpe-booking-hub--editable .springthorpe-booking-card__meta {
  align-items: flex-start;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  list-style: none;
  margin: 0.85rem 0 0;
  padding: 0;
}

.springthorpe-booking-hub--editable .springthorpe-booking-card__meta li {
  align-items: center;
  border: 1px solid color-mix(in srgb, var(--springthorpe-color-primary) 28%, transparent);
  color: var(--springthorpe-color-primary);
  display: inline-flex;
  font-size: 0.72rem;
  font-weight: 780;
  letter-spacing: 0.04em;
  line-height: 1;
  padding: 0.34rem 0.46rem;
  text-transform: uppercase;
}

.springthorpe-booking-hub--editable .springthorpe-booking-card .wp-block-buttons {
  position: absolute;
  right: 1.25rem;
  top: 1.25rem;
}

.springthorpe-booking-hub--editable .springthorpe-booking-card .wp-block-button__link {
  background: var(--springthorpe-color-primary);
  border: 1px solid var(--springthorpe-color-primary);
  border-radius: 999px;
  color: #ffffff;
  font-size: 0.9rem;
  font-weight: 750;
  line-height: 1;
  padding: 0.66rem 0.92rem;
  text-transform: uppercase;
}

.springthorpe-booking-layout {
  align-items: start;
  column-gap: clamp(2.25rem, 4vw, 4rem);
  display: grid;
  grid-template-columns: minmax(16rem, 0.62fr) minmax(42rem, 1.38fr);
  row-gap: 2rem;
}

/* Facility booking pages converted off Elementor (Function Room, Tennis,
   Decking, Meeting Room, Chess, Table Tennis). The prod Elementor layout
   used a Grid container with grid_columns_grid:2fr — i.e. two EQUAL columns
   (repeat(2,1fr)), brief left / Amelia right, with the default ~20px gap.
   booking-layout's 30:70 split (above) is the gym/pool design, not this one,
   so override to a true 50:50 and tighten the gap to match prod. All the
   Amelia alignment fixes below still apply via the booking-layout class. */
.springthorpe-facility-grid {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: clamp(1.25rem, 2.5vw, 2rem);
}

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

.springthorpe-booking-brief {
  align-content: start;
  display: grid;
  gap: 0.9rem;
  /* Space between the full-width heading container above and the first content
     element (the photo) inside the left column of the Elementor grid. */
  padding-top: clamp(0.75rem, 1.5vw, 1.25rem);
}

@media (min-width: 761px) {
  .springthorpe-booking-layout .springthorpe-booking-brief {
    padding-top: clamp(0.5rem, 0.9vw, 0.75rem);
  }
}

/* Top-align the Amelia booking column in Elementor grids.
   Root cause: Elementor sets elementor-widget-container { height:100% } inside
   containers, so when the right column stretches to match the left column height
   the widget-container inherits that height and constrains/misaligns the Amelia
   form inside it.  Setting align-self:flex-start on the widget makes the column
   only as tall as its content, removing the constraint entirely.
   The class is added via _css_classes in the Elementor widget JSON data. */
.elementor-widget.springthorpe-amelia-col {
  align-self: flex-start !important;
}

/* Amelia shortcode wrapper — block-level div avoids the invalid-HTML gap
   that occurs when a <div> (Amelia's output) is placed inside a <p>. */
.springthorpe-booking-amelia {
  margin: 0;
  padding: 0;
}

/* #amelia-container carries a 100px top margin by default which pushes the
   booking form down relative to the image in the adjacent left column.
   Reset to zero and replace with a modest padding so the form aligns with
   the top of the neighbouring content image. */
.springthorpe-booking-amelia #amelia-container {
  margin-top: 0 !important;
  padding-top: 30px !important;
}

/* Amelia height, overflow, and footer-overlap fix.
   DevTools analysis (2026-05-25) identified the full constraint chain:
     #amelia-v2-booking-1000 / .am-fs__wrapper  — outer wrappers with fixed height
     .am-fs__main              — height set by a JS reactive Vue inline style;
                                 overflow:hidden clips content beyond that height
     .am-fs__main-inner        — height:100% inherits the JS height; needs explicit
                                 flex-column layout so header/content/footer stack
     .am-fs__main-content      — hardcoded height:444px in Amelia's own CSS
     .am-fs-dt__calendar /
     .am-advsc__wrapper        — internal calendar wrappers, also fixed-height
     .am-fs__main-footer       — position:absolute pins footer to the bottom of the
                                 old fixed container → overlaps content on taller
                                 steps (calendar view, services with custom fields).
   min-height:444px on content prevents collapse when Vue's <Transition> briefly
   sets the leaving step to position:absolute (contributing 0 height). */

.springthorpe-booking-amelia #amelia-v2-booking-1000,
.springthorpe-booking-amelia .am-fs__wrapper,
.springthorpe-booking-amelia .am-fs__main {
  height: auto !important;
  overflow: visible !important;
}

.springthorpe-booking-amelia .am-fs__main-inner {
  display: flex !important;
  flex-direction: column !important;
  height: auto !important;
  overflow: visible !important;
}

.springthorpe-booking-amelia .am-fs__main-content {
  height: auto !important;
  max-height: none !important;
  min-height: 444px;
}

.springthorpe-booking-amelia .am-fs-dt__calendar,
.springthorpe-booking-amelia .am-advsc__wrapper {
  height: auto !important;
  overflow: visible !important;
}

/* Footer overlap fix — position:absolute pins the Continue button to the
   bottom of the old fixed-height container; static puts it back in flow. */
.springthorpe-booking-amelia .am-fs__main-footer {
  margin-top: 1.25rem;
  position: static !important;
}

/* "Get in Touch" contact block in the Amelia sidebar.
   Default Amelia styles centre-align this text and can allow the email
   address to wrap onto a second line. Left-align and reduce font size so
   the label and address sit cleanly on one line each. */
.springthorpe-booking-amelia .am-fs-sb__support,
.springthorpe-booking-amelia .am-fs-sb__support :is(p, span, a, div) {
  text-align: left !important;
}

.springthorpe-booking-amelia :is(.am-fs-sb__support-email, .am-fs-sb__support a) {
  display: block;
  font-size: 0.68rem !important;
  letter-spacing: 0 !important;
  line-height: 1.35 !important;
  overflow-wrap: normal !important;
  white-space: nowrap;
  word-break: normal !important;
}


.springthorpe-booking-feature-image {
  aspect-ratio: 1800 / 1012;
  margin: 0 0 clamp(1.5rem, 3vw, 2.4rem);
  max-width: var(--springthorpe-shell-max);
  overflow: hidden;
  width: 100%;
}

.springthorpe-booking-feature-image img {
  display: block;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  width: 100%;
}

body.springthorpe-theme-smash .springthorpe-booking-feature-image img {
  max-width: none;
  height: 100% !important;
  object-position: center center;
  width: 100% !important;
}

/* Content-level photo — sits inside the left column under the page heading,
   not a full-width hero. */
.springthorpe-booking-content-image {
  aspect-ratio: 16 / 9;
  border-radius: var(--springthorpe-radius-card);
  margin: 0.5rem 0 1.25rem;
  overflow: hidden;
  width: 100%;
}

.springthorpe-booking-content-image img {
  display: block;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  width: 100%;
}

body.springthorpe-theme-smash .springthorpe-booking-content-image img {
  height: 100% !important;
  max-width: none;
  object-position: center center;
  width: 100% !important;
}

.springthorpe-booking-facts {
  display: grid;
  gap: 0;
  margin: 0;
}

.springthorpe-booking-facts div {
  border-top: 1px solid var(--springthorpe-color-border);
  padding-block: 0.9rem;
}

.springthorpe-booking-facts dt {
  color: var(--springthorpe-color-heading);
  font-weight: 760;
}

.springthorpe-booking-facts dd {
  color: var(--springthorpe-color-muted);
  line-height: 1.5;
  margin: 0.25rem 0 0;
}

.springthorpe-booking-courts {
  display: grid;
  gap: 1rem;
  min-width: 0;
}

.springthorpe-booking-action {
  min-width: 0;
  width: 100%;
}

.springthorpe-booking-open-court,
.springthorpe-booking-unavailable {
  background: color-mix(in srgb, var(--springthorpe-color-soft) 52%, #ffffff);
  border-top: 1px solid var(--springthorpe-color-border);
  box-sizing: border-box;
  padding: 1.15rem 1.25rem;
}

.springthorpe-booking-unavailable h2 {
  color: var(--springthorpe-color-heading);
  font-size: 1.25rem;
  line-height: 1.15;
  margin: 0 0 0.45rem;
}

.springthorpe-booking-open-court p,
.springthorpe-booking-unavailable p {
  color: var(--springthorpe-color-muted);
  line-height: 1.5;
  margin: 0;
}

.springthorpe-booking-widget,
.springthorpe-customer-panel {
  --am-c-primary: var(--springthorpe-color-primary);
  --am-c-primary-op03: color-mix(in srgb, var(--springthorpe-color-primary) 5%, transparent);
  --am-c-primary-op05: color-mix(in srgb, var(--springthorpe-color-primary) 8%, transparent);
  --am-c-primary-op10: color-mix(in srgb, var(--springthorpe-color-primary) 12%, transparent);
  --am-c-primary-op20: color-mix(in srgb, var(--springthorpe-color-primary) 22%, transparent);
  --am-c-primary-op30: color-mix(in srgb, var(--springthorpe-color-primary) 30%, transparent);
  --am-c-primary-op60: color-mix(in srgb, var(--springthorpe-color-primary) 60%, transparent);
  --am-c-success: var(--springthorpe-color-primary);
  --am-c-main-bgr: var(--springthorpe-color-surface);
  --am-c-card-bgr: var(--springthorpe-color-surface);
  --am-c-main-heading-text: var(--springthorpe-color-heading);
  --am-c-main-text: var(--springthorpe-color-text);
  --am-c-main-text-op80: color-mix(in srgb, var(--springthorpe-color-text) 80%, transparent);
  --am-c-main-text-op60: color-mix(in srgb, var(--springthorpe-color-text) 60%, transparent);
  --am-c-main-text-op40: color-mix(in srgb, var(--springthorpe-color-text) 40%, transparent);
  --am-c-main-text-op25: color-mix(in srgb, var(--springthorpe-color-text) 25%, transparent);
  --am-c-sb-bgr: var(--springthorpe-color-primary);
  --am-c-sb-text: #ffffff;
  --am-c-msd-bgr: var(--springthorpe-color-primary);
  --am-c-msd-text: #ffffff;
  --am-c-msd-text-op10: rgba(255, 255, 255, 0.14);
  --am-c-msd-text-op60: rgba(255, 255, 255, 0.62);
  --am-c-inp-bgr: #ffffff;
  --am-c-inp-border: color-mix(in srgb, var(--springthorpe-color-heading) 24%, transparent);
  --am-c-inp-text: var(--springthorpe-color-text);
  --am-c-inp-placeholder: color-mix(in srgb, var(--springthorpe-color-text) 55%, transparent);
  --am-c-drop-bgr: #ffffff;
  --am-c-drop-text: var(--springthorpe-color-text);
  --am-c-btn-prim: var(--springthorpe-color-primary);
  --am-c-btn-prim-text: #ffffff;
  --am-c-btn-sec: #ffffff;
  --am-c-btn-sec-text: var(--springthorpe-color-heading);
  color: var(--springthorpe-color-text);
}

.springthorpe-booking-widget {
  margin-left: 0;
  max-width: 100%;
  width: 100%;
}

.springthorpe-booking-widget .amelia-v2-booking,
.springthorpe-booking-widget .amelia-v2-booking #amelia-container.am-fs__wrapper {
  max-width: 100% !important;
  width: 100% !important;
}

.springthorpe-booking-widget .amelia-v2-booking #amelia-container.am-fs__wrapper {
  --am-mw-main: 100%;
  --am-mw-fsm: 100%;
  height: auto !important;
  justify-content: stretch;
  margin: 0 !important;
  min-height: clamp(44rem, 84vh, 58rem);
}

.springthorpe-booking-widget .amelia-v2-booking #amelia-container .am-fs__main {
  --am-mw-fsm: 100%;
  flex: 1 1 auto;
  max-width: none !important;
  min-height: clamp(44rem, 84vh, 58rem);
}

.springthorpe-booking-widget .amelia-v2-booking #amelia-container .am-fs__main-inner {
  display: flex;
  flex-direction: column;
  height: auto !important;
  min-height: inherit;
  overflow: visible !important;
}

.springthorpe-booking-widget .amelia-v2-booking #amelia-container .am-fs__main-content {
  flex: 1 1 auto;
  height: auto !important;
  max-height: none !important;
  overflow-y: visible !important;
}

.springthorpe-booking-widget .amelia-v2-booking #amelia-container .am-fs__main-footer {
  margin-top: auto;
  position: static !important;
}

.springthorpe-customer-panel {
  max-width: 100%;
}

.springthorpe-customer-panel #amelia-container {
  --am-c-primary: var(--springthorpe-color-primary) !important;
  --am-c-sb-bgr: var(--springthorpe-color-primary) !important;
  --am-c-sb-text: #ffffff !important;
  --am-c-msd-bgr: var(--springthorpe-color-primary) !important;
  --am-c-msd-text: #ffffff !important;
  --am-c-msd-text-op10: rgba(255, 255, 255, 0.14) !important;
  --am-c-msd-text-op60: rgba(255, 255, 255, 0.62) !important;
  --am-c-btn-prim: var(--springthorpe-color-primary) !important;
  --am-c-btn-prim-text: #ffffff !important;
}

.springthorpe-booking-widget :is(.am-fs__main, .am-fs__main-content, .am-fs__main-footer, .el-date-picker, .el-picker-panel),
.springthorpe-customer-panel :is([class*="am-"], [class*="el-"], .el-date-picker, .el-picker-panel) {
  --am-c-primary: var(--springthorpe-color-primary) !important;
  --el-color-primary: var(--springthorpe-color-primary) !important;
}

.springthorpe-booking-widget :is(.am-button.am-button--filled, .am-fs__main-footer button, .am-fs__main button.am-button--filled, .el-button--primary),
.springthorpe-customer-panel :is(.am-button.am-button--filled, .am-button--primary, .el-button--primary, button[class*="primary"], button[class*="filled"]) {
  background-color: var(--springthorpe-color-primary) !important;
  border-color: var(--springthorpe-color-primary) !important;
  color: #ffffff !important;
}

.springthorpe-booking-widget :is(.am-button.am-button--filled, .am-fs__main-footer button, .am-fs__main button.am-button--filled, .el-button--primary):hover,
.springthorpe-booking-widget :is(.am-button.am-button--filled, .am-fs__main-footer button, .am-fs__main button.am-button--filled, .el-button--primary):focus,
.springthorpe-customer-panel :is(.am-button.am-button--filled, .am-button--primary, .el-button--primary, button[class*="primary"], button[class*="filled"]):hover,
.springthorpe-customer-panel :is(.am-button.am-button--filled, .am-button--primary, .el-button--primary, button[class*="primary"], button[class*="filled"]):focus {
  background-color: var(--springthorpe-color-primary-hover) !important;
  border-color: var(--springthorpe-color-primary-hover) !important;
}

.springthorpe-customer-panel .am-date-picker__input.am-daterange {
  align-items: center;
  display: flex;
  white-space: nowrap;
}

.springthorpe-customer-panel .am-date-picker__input-end::before {
  content: "-";
  display: inline-block;
  margin-inline: 0.45rem;
}

.springthorpe-booking-widget :is(.am-fs-sb, .am-fs__sidebar, .am-step-booking-catalog__sidebar) {
  background: var(--springthorpe-color-primary) !important;
}

.springthorpe-customer-panel .amelia-v2-booking #amelia-container.am-cap__wrapper .am-msd.am-slide-popup__block-inner {
  background-color: var(--springthorpe-color-primary) !important;
  color: #ffffff !important;
}

.springthorpe-customer-panel .amelia-v2-booking #amelia-container.am-cap__wrapper .am-msd__item {
  color: #ffffff !important;
}

.springthorpe-customer-panel .amelia-v2-booking #amelia-container.am-cap__wrapper .am-msd__item.selected {
  background-color: rgba(255, 255, 255, 0.14) !important;
}

.springthorpe-customer-panel .amelia-v2-booking #amelia-container.am-cap__wrapper .am-cc__heading:has(.am-cc__status-canceled, .am-cc__status-no-show) .am-cc__heading-actions {
  display: none !important;
}

.springthorpe-customer-panel .amelia-v2-booking #amelia-container.am-cap__wrapper .am-cc:has(.am-cc__status-canceled, .am-cc__status-no-show) :is(.am-cc__heading-actions, .am-cc__edit-btn) {
  display: none !important;
}

.springthorpe-customer-panel :is(.am-fs-sb, .am-fs-sb__page, .am-fs__sidebar, .am-msd, .am-cap__wrapper > aside, .am-cap__wrapper > nav, .am-cap__wrapper > div:first-child) {
  background: var(--springthorpe-color-primary) !important;
}

.springthorpe-booking-widget :is(.am-fs-sb__step-checker, .am-fs__sidebar [class*="checker"], .am-step-booking-catalog__sidebar [class*="checker"]) {
  background-color: var(--springthorpe-color-accent) !important;
  color: #ffffff !important;
}

.springthorpe-customer-panel :is(.am-fs-sb__step-checker, .am-fs__sidebar [class*="checker"], .am-step-booking-catalog__sidebar [class*="checker"], .am-msd__item.am-selected, .am-msd__item-wrapper.am-selected, .am-msd__item-wrapper:hover) {
  background-color: color-mix(in srgb, var(--springthorpe-color-primary-hover) 78%, #ffffff) !important;
  color: #ffffff !important;
}

.springthorpe-booking-widget :is(.am-fs-sb__support-email, .am-fs-sb__support a) {
  display: block;
  font-size: 0.72rem !important;
  letter-spacing: 0 !important;
  line-height: 1.35 !important;
  overflow-wrap: normal !important;
  text-align: center;
  white-space: nowrap;
  word-break: normal !important;
}

.springthorpe-booking-widget :is(.am-calendar-picker__day:not(.-disabled-), .c-day-content:not(.disabled), .el-date-table td.available:not(.disabled) span, .el-date-table td.available:not(.disabled) div),
.springthorpe-booking-widget :is(.el-date-table td.available:not(.disabled), .el-date-table td.today:not(.disabled), .el-date-table td.current:not(.disabled)) :is(span, div),
.springthorpe-booking-widget :is(.am-calendar-picker__day, .c-day-content) :is(span, div) {
  border-color: color-mix(in srgb, var(--springthorpe-color-primary) 68%, transparent) !important;
  color: var(--springthorpe-color-primary) !important;
}

.springthorpe-booking-widget :is(.am-calendar-picker__day.-selected-, .am-calendar-picker__day.is-selected, .c-day-content.is-selected, .el-date-table td.current:not(.disabled) span, .el-date-table td.current:not(.disabled) div) {
  background-color: color-mix(in srgb, var(--springthorpe-color-primary) 20%, transparent) !important;
  border-color: var(--springthorpe-color-primary) !important;
  color: var(--springthorpe-color-heading) !important;
}

.springthorpe-booking-widget :is(.am-calendar-picker__day.-selected-, .am-calendar-picker__day.is-selected, .c-day-content.is-selected, .el-date-table td.current:not(.disabled) span, .el-date-table td.current:not(.disabled) div)::after {
  background: var(--springthorpe-color-primary) !important;
}

.springthorpe-booking-widget :is(.am-advsc__slot-wrapper, .am-advsc__slot, .am-advsc__slot-inner, .am-advsc__slots, .am-advsc__slots-wrapper) {
  background-color: color-mix(in srgb, var(--springthorpe-color-primary) 12%, transparent) !important;
  border-color: color-mix(in srgb, var(--springthorpe-color-primary) 48%, transparent) !important;
  color: var(--springthorpe-color-text) !important;
}

.springthorpe-booking-widget :is(a, .am-link, .am-fs__main a),
.springthorpe-customer-panel :is(a, .am-link, .el-link, .el-tabs__item.is-active, .el-tabs__item:hover, [class*="tab"][class*="active"], [class*="tab"][class*="selected"]) {
  color: var(--springthorpe-color-primary);
}

.springthorpe-booking-widget .am-lite-footer,
.springthorpe-booking-widget .am-lite-footer-link,
.springthorpe-booking-widget a[href*="wpamelia.com"],
.springthorpe-booking-widget a[href*="ameliabooking"],
.springthorpe-customer-panel :is(.am-lite-footer, .am-lite-footer-link, a[href*="wpamelia.com"], a[href*="ameliabooking"]) {
  display: none !important;
}

.springthorpe-customer-panel :is(.el-tabs__active-bar, [class*="active-bar"]),
.springthorpe-customer-panel [class*="tab"]::after,
.springthorpe-customer-panel [class*="selected"]::after {
  background-color: var(--springthorpe-color-primary) !important;
}

.springthorpe-customer-panel :is(.el-radio__input.is-checked .el-radio__inner, .el-checkbox__input.is-checked .el-checkbox__inner, .el-switch.is-checked .el-switch__core, [class*="checked"] [class*="inner"]) {
  background-color: var(--springthorpe-color-primary) !important;
  border-color: var(--springthorpe-color-primary) !important;
}

.springthorpe-customer-panel :is(.el-select-dropdown__item.selected, .el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover, [class*="selected"]) {
  color: var(--springthorpe-color-primary) !important;
}

.el-popper.el-popover.am-cc__popper:not(:has(.am-cc__edit-item)) {
  display: none !important;
}

.springthorpe-smash-footer {
  background: #171a17;
  color: #f4f1e8;
  margin: clamp(1.25rem, 3vw, 2.5rem) calc(50% - 50vw) 0;
  overflow: hidden;
  position: relative;
  text-align: left;
  width: 100vw;
}

.springthorpe-smash-footer::before {
  background: var(--springthorpe-color-accent);
  content: "";
  height: 0.28rem;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

.springthorpe-smash-footer a {
  color: inherit;
  text-decoration: none;
}

.springthorpe-smash-footer a:hover,
.springthorpe-smash-footer a:focus {
  color: #ffffff;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.springthorpe-smash-footer :where(.wp-block-group, .wp-block-image, .wp-block-heading, p) {
  margin-block-end: 0 !important;
  margin-block-start: 0 !important;
}

.springthorpe-smash-footer :where(.wp-block-group, .wp-block-image, .wp-block-heading, p, nav) {
  margin-left: 0 !important;
  margin-right: 0 !important;
  max-width: 100% !important;
  text-align: left !important;
}

.springthorpe-smash-footer__inner {
  align-items: start;
  box-sizing: border-box;
  display: grid;
  gap: clamp(0.75rem, 1.5vw, 1.5rem);
  grid-template-columns: minmax(0, 0.43fr) minmax(0, 0.4fr) minmax(0, 0.45fr) minmax(0, 0.65fr) minmax(0, 1fr);
  margin-inline: auto !important;
  max-width: var(--springthorpe-shell-max) !important;
  padding-block: clamp(3rem, 6vw, 5rem);
  padding-inline: var(--theme-var-page_fullwide_extra, 60px);
  width: 100%;
}

.springthorpe-smash-footer__brand {
  align-content: start;
  align-self: start;
  display: grid;
  gap: 1.2rem;
  padding-top: 0.1rem;
}

.springthorpe-smash-footer__brand p,
.springthorpe-smash-footer__contact p {
  color: rgba(244, 241, 232, 0.72);
  line-height: 1.55;
  margin: 0;
}

.springthorpe-smash-footer__wordmark {
  align-items: center;
  display: inline-flex;
  justify-self: start;
  margin-top: 0.15rem;
  max-width: min(12.75rem, 100%);
}

.springthorpe-smash-footer__wordmark img {
  display: block;
  height: auto !important;
  max-width: 100%;
  width: clamp(10.75rem, 13.75vw, 12.75rem) !important;
}

.springthorpe-smash-footer__column {
  align-content: start;
  display: grid;
  gap: 0.7rem;
  justify-items: start;
  text-align: left;
}

.springthorpe-smash-footer__column h2 {
  color: #ffffff;
  font-size: 0.72rem;
  line-height: 1.1;
  margin: 0 0 0.4rem;
  text-transform: uppercase;
}

.springthorpe-smash-footer__column a,
.springthorpe-smash-footer__column p {
  font-size: 0.82rem;
  text-align: left;
}

.springthorpe-smash-footer__column a {
  color: rgba(244, 241, 232, 0.76);
  font-weight: 400;
}

.springthorpe-smash-footer__column:not(.springthorpe-smash-footer__contact) a {
  white-space: nowrap;
}

.springthorpe-smash-footer__contact a,
.springthorpe-smash-footer__contact p {
  overflow-wrap: anywhere;
}

.springthorpe-smash-footer__socials {
  gap: 0.85rem;
}

.springthorpe-smash-footer__social {
  border-top: 1px solid rgba(244, 241, 232, 0.18);
  display: block;
  padding-top: 0.85rem;
}

.springthorpe-smash-footer__social a {
  align-items: center;
  display: grid;
  gap: 0.8rem;
  grid-template-columns: 2.45rem minmax(0, 1fr);
}

.springthorpe-smash-footer__social span {
  align-items: center;
  background: var(--springthorpe-color-primary);
  border-radius: 50%;
  color: #ffffff;
  display: inline-flex;
  font-size: 1.35rem;
  font-weight: 850;
  height: 2.45rem;
  justify-content: center;
  line-height: 1;
  width: 2.45rem;
}

.springthorpe-smash-footer__social strong {
  color: #ffffff;
  font-size: 0.82rem;
  font-weight: 400;
  line-height: 1.2;
}

.springthorpe-smash-footer__bottom {
  align-items: center;
  border-top: 1px solid rgba(244, 241, 232, 0.16);
  box-sizing: border-box;
  color: rgba(244, 241, 232, 0.62);
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 2rem;
  justify-content: space-between;
  margin-inline: auto;
  max-width: var(--springthorpe-shell-max);
  padding-block: 1.1rem 1.25rem;
  padding-inline: var(--theme-var-page_fullwide_extra, 60px);
}

.springthorpe-smash-footer__bottom p,
.springthorpe-smash-footer__bottom a {
  font-size: 0.72rem;
  margin: 0;
}

.spt-portal-version {
  color: rgba(244, 241, 232, 0.42);
  font-size: 0.68rem;
  margin-left: 0.45em;
}

@media (min-width: 1191px) {
  .springthorpe-smash-footer__contact a[href^="mailto:"] {
    font-size: 0.78rem;
  }
}

@media (max-width: 1190px) and (min-width: 761px) {
  .springthorpe-smash-footer__inner {
    gap: 2.25rem 2rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .springthorpe-smash-footer__brand {
    grid-column: 1 / -1;
    max-width: 34rem;
  }
}

body.springthorpe-soft-launch .springthorpe-smash-footer p:has(> a[href*="/member/login"]),
body.springthorpe-soft-launch .springthorpe-smash-footer p:has(> a[href*="/member/signup"]) {
  display: none !important;
}

body.springthorpe-soft-launch .springthorpe-smash-footer [aria-label="Footer booking navigation"] {
  display: none !important;
}

/* With Bookings column removed, rebalance the 4-column grid so Contact
   gets enough width for the email address to sit on one line. */
body.springthorpe-soft-launch .springthorpe-smash-footer__inner {
  grid-template-columns: minmax(0, 0.43fr) minmax(0, 0.4fr) minmax(0, 1.1fr) minmax(0, 1fr);
}

.springthorpe-profile-summary dl {
  display: grid;
  gap: 0;
  margin: 1rem 0 0;
}

.springthorpe-profile-summary--editable {
  max-width: var(--springthorpe-shell-max) !important;
  width: min(100%, var(--springthorpe-shell-max)) !important;
}

.springthorpe-profile-summary--with-bookings {
  display: grid;
  align-items: start;
  gap: clamp(2rem, 5vw, 5rem);
  grid-template-columns: minmax(16rem, 0.62fr) minmax(25rem, 1fr);
  max-width: var(--springthorpe-shell-max);
}

.springthorpe-profile-summary--editable .springthorpe-profile-summary__columns {
  align-items: start;
  column-gap: clamp(2rem, 4vw, 4rem) !important;
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  margin-bottom: 0;
  max-width: var(--springthorpe-shell-max);
  row-gap: clamp(2rem, 4vw, 4rem) !important;
  width: 100%;
}

.springthorpe-profile-summary--editable .springthorpe-profile-summary__columns > .wp-block-column {
  flex-basis: auto !important;
  flex-grow: 0 !important;
  margin: 0;
  min-width: 0;
  width: auto !important;
}
/* The right column isn't the __left grid, so space its sections (My Access Passes →
   Upcoming Bookings) with a matching bottom margin instead of a grid gap. */
.springthorpe-profile-summary__columns > .wp-block-column > .springthorpe-passman {
  margin-bottom: clamp(1.35rem, 3vw, 2rem);
}

.springthorpe-profile-summary__left {
  display: grid;
  gap: clamp(1.35rem, 3vw, 2rem);
}

.springthorpe-profile-summary__intro {
  display: grid;
  gap: 0.95rem;
}

.springthorpe-profile-summary__intro .springthorpe-booking-summary {
  margin: 0;
}

.springthorpe-profile-summary--with-bookings .springthorpe-profile-bookings,
.springthorpe-profile-summary--with-bookings .springthorpe-customer-panel,
.springthorpe-profile-summary--editable .springthorpe-profile-bookings,
.springthorpe-profile-summary--editable .springthorpe-customer-panel {
  margin-block: 0;
  max-width: none;
}

.springthorpe-profile-summary__notice {
  grid-column: 1 / -1;
  margin: 0;
}

.springthorpe-profile-summary__account {
  background: color-mix(in srgb, var(--springthorpe-color-soft) 72%, #ffffff);
  border-top: 3px solid var(--springthorpe-color-primary);
  padding: 1.15rem;
}

.springthorpe-profile-summary dl > div {
  border-top: 1px solid var(--springthorpe-color-border);
  padding-block: 0.8rem;
}

.springthorpe-profile-summary dt {
  color: var(--springthorpe-color-heading);
  font-weight: 760;
}

.springthorpe-profile-summary dd {
  color: var(--springthorpe-color-muted);
  margin: 0.25rem 0 0;
}

.springthorpe-profile-account-actions {
  border-top: 1px solid var(--springthorpe-color-border);
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin-top: 1rem;
  padding-top: 1rem;
}

.springthorpe-profile-account-action {
  border: 1px solid var(--springthorpe-color-border);
  box-sizing: border-box;
  color: var(--springthorpe-color-heading);
  display: inline-flex;
  font-size: 0.9rem;
  font-weight: 760;
  line-height: 1.2;
  padding: 0.72rem 0.85rem;
  text-decoration: none;
}

.springthorpe-profile-account-action:hover,
.springthorpe-profile-account-action:focus,
.springthorpe-profile-account-action.is-active {
  background: var(--springthorpe-color-heading);
  border-color: var(--springthorpe-color-heading);
  color: #ffffff;
  text-decoration: none;
}

.springthorpe-profile-account-form {
  border-top: 1px solid var(--springthorpe-color-border);
  display: grid;
  gap: 0.9rem;
  margin-top: 1rem;
  padding-top: 1rem;
}

.springthorpe-profile-account-form label {
  display: grid;
  gap: 0.4rem;
}

.springthorpe-profile-account-form label span {
  color: var(--springthorpe-color-heading);
  font-size: 0.82rem;
  font-weight: 780;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.springthorpe-profile-account-form input {
  border: 1px solid var(--springthorpe-color-border);
  box-sizing: border-box;
  font: inherit;
  padding: 0.74rem 0.8rem;
  width: 100%;
}

.springthorpe-profile-account-form button {
  background: var(--springthorpe-color-primary);
  border: 0;
  color: #ffffff;
  cursor: pointer;
  font: inherit;
  font-weight: 760;
  justify-self: start;
  padding: 0.78rem 1.05rem;
}

.springthorpe-profile-account-form button:hover,
.springthorpe-profile-account-form button:focus {
  background: var(--springthorpe-color-primary-hover);
}

/* ── Profile self-service: details, subscriptions, security ───────────────── */

.springthorpe-profile-details,
.springthorpe-profile-subscriptions,
.springthorpe-profile-security {
  background: color-mix(in srgb, var(--springthorpe-color-soft) 72%, #ffffff);
  border-top: 3px solid var(--springthorpe-color-primary);
  margin-top: 1.25rem;
  padding: 1.15rem;
}

.springthorpe-profile-details h2,
.springthorpe-profile-subscriptions h2,
.springthorpe-profile-security h2 {
  margin-top: 0;
}

.springthorpe-profile-details__grid {
  display: grid;
  gap: 0.9rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 0.5rem;
}

.springthorpe-profile-field {
  display: grid;
  gap: 0.4rem;
  margin: 0;
}

.springthorpe-profile-field:last-child {
  grid-column: 1 / -1;
}

.springthorpe-profile-field label {
  color: var(--springthorpe-color-heading);
  font-size: 0.82rem;
  font-weight: 780;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.springthorpe-profile-field input {
  border: 1px solid var(--springthorpe-color-border);
  box-sizing: border-box;
  font: inherit;
  padding: 0.74rem 0.8rem;
  width: 100%;
}

.springthorpe-profile-readonly {
  column-gap: 1.25rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 1.25rem 0 0;
}

.springthorpe-profile-readonly > div {
  border-top: 1px solid var(--springthorpe-color-border);
  padding-block: 0.7rem;
}

.springthorpe-profile-readonly__full {
  grid-column: 1 / -1;
}

.springthorpe-profile-readonly dt {
  color: var(--springthorpe-color-heading);
  font-weight: 760;
}

.springthorpe-profile-readonly dd {
  color: var(--springthorpe-color-muted);
  margin: 0.25rem 0 0;
}

.springthorpe-profile-readonly__empty {
  color: var(--springthorpe-color-muted);
  font-style: italic;
}

.springthorpe-profile-details__actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1rem;
}

.springthorpe-profile-details__save {
  background: var(--springthorpe-color-primary);
  border: 0;
  box-sizing: border-box;
  color: #ffffff;
  cursor: pointer;
  font: inherit;
  font-weight: 760;
  padding: 0.78rem 1.05rem;
}

.springthorpe-profile-details__save:hover,
.springthorpe-profile-details__save:focus {
  background: var(--springthorpe-color-primary-hover);
}

.springthorpe-profile-details__note {
  color: var(--springthorpe-color-muted);
  font-size: 0.9rem;
  line-height: 1.45;
  margin: 0.75rem 0 0;
}

/* Inline save-outcome panel shown next to the action button, in the same format
   as the Amelia bookings notice (.springthorpe-profile-bookings__notice). */
.springthorpe-profile-inline-notice {
  border-left: 3px solid var(--springthorpe-color-primary);
  border-radius: var(--springthorpe-radius-control);
  font-size: 0.94rem;
  line-height: 1.45;
  margin-top: 0.85rem;
  padding: 0.85rem 1rem;
  width: 100%;
}

.springthorpe-profile-inline-notice--success {
  background: var(--springthorpe-color-soft);
  border-color: var(--springthorpe-color-primary);
  color: var(--springthorpe-color-heading);
}

.springthorpe-profile-inline-notice--error {
  background: #fdf3f3;
  border-color: #b94040;
  color: #7a2020;
}

.springthorpe-profile-subscriptions__list {
  display: grid;
  gap: 0;
  list-style: none;
  margin: 0.5rem 0 1rem;
  padding: 0;
}

.springthorpe-profile-subscriptions__list li {
  border-top: 1px solid var(--springthorpe-color-border);
  padding-block: 0.6rem;
}

.springthorpe-profile-subscriptions__option {
  align-items: center;
  color: var(--springthorpe-color-heading);
  cursor: pointer;
  display: flex;
  font-weight: 600;
  gap: 0.6rem;
}

.springthorpe-profile-subscriptions__option input {
  flex: 0 0 auto;
}

.springthorpe-profile-subscriptions__option em {
  color: var(--springthorpe-color-muted);
  font-size: 0.85rem;
  font-style: normal;
  font-weight: 600;
}

.springthorpe-profile-subscriptions__empty {
  color: var(--springthorpe-color-muted);
  margin: 0.5rem 0 0;
}

/* Account security panel ---------------------------------------------------- */

.springthorpe-profile-security__group + .springthorpe-profile-security__group {
  border-top: 1px solid var(--springthorpe-color-border);
  margin-top: 1.35rem;
  padding-top: 1.35rem;
}

/* Match WP 2FA's small "Currently configured:" h3 (font-size:1.1em) so the
   Password / 2FA group headings and WP 2FA's own "Two-factor authentication
   settings" h2 are all the same, smaller size. */
.springthorpe-profile-security__group h3,
.springthorpe-profile-security #your-profile h2 {
  font-size: 1.1em;
  margin: 0 0 0.45rem;
}

.springthorpe-profile-security__intro {
  color: var(--springthorpe-color-muted);
  line-height: 1.5;
  margin: 0 0 1rem;
}

.springthorpe-profile-security__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.springthorpe-profile-security__unavailable {
  color: var(--springthorpe-color-muted);
}

/* Restyle WP 2FA's front-end buttons to match the portal template. The
   .wp-2fa-button-* classes are exclusive to the plugin, so they are safe to
   style globally (covers any modal markup that renders outside the card). */
/* WP 2FA ships its own pill button styling (.enable_styling .wp-2fa-button-*)
   at up to 0,4,0 specificity with !important. We beat it with the setup form's
   id (#your-profile — an id outranks any number of classes) for the Account
   security panel, and the .wp2fa-modal.enable_styling scope for the wizard
   modals, using !important on the visual properties. */

/* Shared shape: square, normal case, theme font, auto width. */
.springthorpe-profile-security #your-profile .button,
.springthorpe-profile-security #your-profile .wp-2fa-button-primary,
.springthorpe-profile-security #your-profile .wp-2fa-button-secondary,
.springthorpe-profile-security #your-profile .qr-btn,
.wp2fa-modal.enable_styling .modal__content .button,
.wp2fa-modal.enable_styling .modal__content .modal__btn {
  background-image: none !important;
  border-radius: 0 !important;
  border-style: solid !important;
  border-width: 1px !important;
  box-shadow: none !important;
  cursor: pointer;
  display: inline-block !important;
  font: inherit !important;
  font-weight: 760 !important;
  height: auto !important;
  letter-spacing: normal !important;
  line-height: 1.2 !important;
  margin: 0.3rem 0.45rem 0.3rem 0 !important;
  padding: 0.72rem 1.05rem !important;
  text-decoration: none !important;
  text-shadow: none !important;
  text-transform: none !important;
  width: auto !important;
}

/* Primary = solid green. */
.springthorpe-profile-security #your-profile .wp-2fa-button-primary,
.springthorpe-profile-security #your-profile .button-primary,
.wp2fa-modal.enable_styling .modal__content .button.wp-2fa-button-primary,
.wp2fa-modal.enable_styling .modal__content .modal__btn.button-primary {
  background: #2eac6d !important;
  border-color: #2eac6d !important;
  color: #ffffff !important;
}

.springthorpe-profile-security #your-profile .wp-2fa-button-primary:hover,
.springthorpe-profile-security #your-profile .wp-2fa-button-primary:focus,
.springthorpe-profile-security #your-profile .button-primary:hover,
.springthorpe-profile-security #your-profile .button-primary:focus,
.wp2fa-modal.enable_styling .modal__content .button.wp-2fa-button-primary:hover,
.wp2fa-modal.enable_styling .modal__content .button.wp-2fa-button-primary:focus {
  background: #259a5f !important;
  border-color: #259a5f !important;
  color: #ffffff !important;
}

/* Secondary = outline. */
.springthorpe-profile-security #your-profile .wp-2fa-button-secondary,
.springthorpe-profile-security #your-profile .button-secondary,
.wp2fa-modal.enable_styling .modal__content .button.wp-2fa-button-secondary,
.wp2fa-modal.enable_styling .modal__content .modal__btn.wp-2fa-button-secondary {
  background: transparent !important;
  border-color: var(--springthorpe-color-border) !important;
  color: var(--springthorpe-color-heading) !important;
}

.springthorpe-profile-security #your-profile .wp-2fa-button-secondary:hover,
.springthorpe-profile-security #your-profile .wp-2fa-button-secondary:focus,
.springthorpe-profile-security #your-profile .button-secondary:hover,
.springthorpe-profile-security #your-profile .button-secondary:focus,
.wp2fa-modal.enable_styling .modal__content .button.wp-2fa-button-secondary:hover,
.wp2fa-modal.enable_styling .modal__content .button.wp-2fa-button-secondary:focus {
  background: var(--springthorpe-color-heading) !important;
  border-color: var(--springthorpe-color-heading) !important;
  color: #ffffff !important;
}

/* Backup-codes block relocated (by profile-2fa-arrange.js) to sit directly under
   "Currently configured", before the "2FA configuration" group: the unused-codes
   note sits above the Generate button. */
.springthorpe-2fa-backup-block {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.55rem;
  margin: 0.35rem 0 1.4rem;
}

.springthorpe-2fa-backup-block .description {
  color: var(--springthorpe-color-muted);
  font-size: 0.9rem;
}

/* Make the Reset password action match the other green action buttons. */
.springthorpe-profile-security .springthorpe-profile-account-action {
  background: #2eac6d;
  border: 1px solid #2eac6d;
  color: #ffffff;
  padding: 0.78rem 1.05rem;
}

.springthorpe-profile-security .springthorpe-profile-account-action:hover,
.springthorpe-profile-security .springthorpe-profile-account-action:focus {
  background: #259a5f;
  border-color: #259a5f;
  color: #ffffff;
}

/* Even spacing/grouping for the 2FA action buttons. */
.springthorpe-profile-security #your-profile .button + .button,
.springthorpe-profile-security #your-profile .wp-2fa-button-primary + .wp-2fa-button-primary {
  margin-left: 0 !important;
}

.springthorpe-profile-security input[type="text"],
.springthorpe-profile-security input[type="tel"],
.springthorpe-profile-security input[type="number"] {
  border: 1px solid var(--springthorpe-color-border);
  box-sizing: border-box;
  font: inherit;
  padding: 0.6rem 0.7rem;
}

/* Strip WP 2FA's white form-table backgrounds so the 2FA settings, the
   "Currently configured" rows and the configuration/button area sit flush on the
   panel background — consistent with the rest of the page text. */
.springthorpe-profile-security .wp-2fa-configuration-form,
.springthorpe-profile-security .wp-2fa-configuration-form table,
.springthorpe-profile-security .wp-2fa-configuration-form tbody,
.springthorpe-profile-security .wp-2fa-configuration-form tr,
.springthorpe-profile-security .wp-2fa-configuration-form th,
.springthorpe-profile-security .wp-2fa-configuration-form td,
.springthorpe-profile-security .wp-2fa-user-profile-form,
.springthorpe-profile-security .app-key-wrapper {
  background: transparent !important;
  box-shadow: none !important;
}

@media (max-width: 640px) {
  .springthorpe-profile-details__grid,
  .springthorpe-profile-readonly {
    grid-template-columns: minmax(0, 1fr);
  }
  .springthorpe-profile-field:last-child {
    grid-column: auto;
  }
}

.springthorpe-profile-bookings__list {
  border-bottom: 1px solid var(--springthorpe-color-border);
  display: grid;
  list-style: none;
  margin: 1rem 0 0;
  padding: 0;
}

.springthorpe-profile-bookings__list li {
  border-top: 1px solid var(--springthorpe-color-border);
  align-items: center;
  display: grid;
  gap: 0.45rem;
  grid-template-columns: minmax(0, 1fr) auto;
  padding-block: 0.95rem;
}

.springthorpe-profile-bookings__details,
.springthorpe-profile-bookings__note {
  color: var(--springthorpe-color-muted);
  font-size: 0.95rem;
  line-height: 1.45;
}

.springthorpe-profile-bookings__status {
  color: var(--springthorpe-color-primary);
  font-weight: 760;
}

/* Waitlisted registrations stand out in gold. */
.springthorpe-profile-bookings__status--waiting {
  color: #fcae24;
}

.springthorpe-profile-bookings__notice {
  border-left: 3px solid var(--springthorpe-color-primary);
  border-radius: var(--springthorpe-radius-control);
  font-size: 0.94rem;
  line-height: 1.45;
  margin-bottom: 1.25rem;
  padding: 0.85rem 1rem;
}

.springthorpe-profile-bookings__notice--success {
  background: var(--springthorpe-color-soft);
  border-color: var(--springthorpe-color-primary);
  color: var(--springthorpe-color-heading);
}

.springthorpe-profile-bookings__notice--error {
  background: #fdf3f3;
  border-color: #b94040;
  color: #7a2020;
}

.springthorpe-profile-bookings__cancel {
  justify-self: end;
  margin: 0;
}

.springthorpe-profile-bookings__cancel button {
  align-items: center;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--springthorpe-color-primary) 34%, transparent);
  border-radius: var(--springthorpe-radius-control);
  color: var(--springthorpe-color-primary);
  cursor: pointer;
  display: inline-flex;
  font-size: 0.82rem;
  font-weight: 760;
  justify-content: center;
  line-height: 1.2;
  min-height: 2rem;
  padding: 0.4rem 0.75rem;
}

.springthorpe-profile-bookings__cancel button:hover,
.springthorpe-profile-bookings__cancel button:focus {
  background: var(--springthorpe-color-primary);
  border-color: var(--springthorpe-color-primary);
  color: #ffffff;
}

.springthorpe-profile-summary--with-bookings .springthorpe-customer-panel__embed .am-fs__main,
.springthorpe-profile-summary--editable .springthorpe-customer-panel__embed .am-fs__main {
  border-radius: var(--springthorpe-radius-control);
  box-shadow: 0 1.6rem 3rem rgba(34, 32, 29, 0.08);
}

.springthorpe-profile-summary--with-bookings .springthorpe-customer-panel__embed .am-fs-sb,
.springthorpe-profile-summary--with-bookings .springthorpe-customer-panel__embed .am-fs-sb :is(p, span, div),
.springthorpe-profile-summary--editable .springthorpe-customer-panel__embed .am-fs-sb,
.springthorpe-profile-summary--editable .springthorpe-customer-panel__embed .am-fs-sb :is(p, span, div) {
  color: #ffffff !important;
}

.springthorpe-profile-summary--with-bookings .springthorpe-customer-panel__embed .am-fs-sb__page.selected,
.springthorpe-profile-summary--with-bookings .springthorpe-customer-panel__embed .am-fs-sb__page:hover,
.springthorpe-profile-summary--editable .springthorpe-customer-panel__embed .am-fs-sb__page.selected,
.springthorpe-profile-summary--editable .springthorpe-customer-panel__embed .am-fs-sb__page:hover {
  background: rgba(255, 255, 255, 0.1) !important;
}

body.springthorpe-approved-theme-preview footer .wp-block-group:has(a[href*="wordpress.org"]),
body.springthorpe-approved-theme-preview footer p:has(a[href*="wordpress.org"]) {
  display: none !important;
}

body.springthorpe-theme-smash .menu_main_nav_area .menu_main_nav,
body.springthorpe-theme-smash .menu_mobile_nav_area .menu_mobile_nav {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 1rem;
}

@media (min-width: 1025px) {
  body.springthorpe-theme-smash .top_panel_default .top_panel_navi .columns_wrap {
    align-items: center;
    display: flex;
    flex-wrap: nowrap;
    width: 100%;
  }

  body.springthorpe-theme-smash .top_panel_default .top_panel_navi .sc_layouts_column {
    float: none;
  }

  body.springthorpe-theme-smash .top_panel_default .top_panel_navi .sc_layouts_column_align_right {
    align-items: center;
    display: flex;
    flex-wrap: nowrap;
    gap: clamp(0.65rem, 1vw, 1rem);
    justify-content: flex-end;
    min-width: 0;
  }

  body.springthorpe-theme-smash .top_panel_default .top_panel_navi .sc_layouts_column_align_right > .sc_layouts_item {
    align-items: center;
    display: flex;
    flex: 0 0 auto;
  }

  body.springthorpe-theme-smash .top_panel_default .top_panel_navi .sc_layouts_column_align_right > .sc_layouts_item:first-child {
    flex: 1 1 auto;
    min-width: 0;
  }

  body.springthorpe-theme-smash .top_panel_default .sc_layouts_logo,
  body.springthorpe-theme-smash .top_panel_default .header_search {
    flex: 0 0 auto;
  }

  body.springthorpe-theme-smash .top_panel_default .menu_main_nav_area {
    flex: 1 1 auto;
    min-width: 0;
  }

  body.springthorpe-theme-smash .top_panel_default .menu_main_nav_area .menu_main_nav {
    flex-wrap: nowrap;
    gap: 0.35rem clamp(0.7rem, 1vw, 1rem);
  }

  body.springthorpe-theme-smash .top_panel_default .menu_main_nav_area .menu_main_nav > li > a {
    padding-left: 0;
    padding-right: 0;
    white-space: nowrap;
  }

  body.springthorpe-theme-smash .top_panel_default .header_search {
    box-sizing: border-box;
    margin-inline: clamp(0.45rem, 0.8vw, 0.75rem);
    min-width: 1.75rem;
    width: 1.75rem;
  }

  body.springthorpe-theme-smash .top_panel_default .header_search:not(.search_opened) .search_form_wrap,
  body.springthorpe-theme-smash .top_panel_default .header_search:not(.search_opened) .search_form {
    box-sizing: border-box;
    max-width: 1.75rem;
    overflow: visible;
    width: 1.75rem;
  }

  body.springthorpe-theme-smash .top_panel_default .header_search:not(.search_opened) .search_field {
    max-width: 0;
    opacity: 0;
    width: 0;
  }

  body.springthorpe-theme-smash .top_panel_default .header_search:not(.search_opened) .search_submit {
    display: inline-flex;
    height: 1.75rem;
    justify-content: center;
    line-height: 1;
    position: static;
    width: 1.75rem;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen.search_opened .search_form_wrap {
    align-items: center;
    background: #f2f7f8;
    display: flex;
    inset: 0;
    justify-content: center;
    padding: clamp(2rem, 5vw, 5rem);
    position: fixed;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen.search_opened .search_form_wrap::before {
    background: url("../img/springthorpe-logo@2x.png") left center / contain no-repeat;
    content: "";
    height: clamp(3.25rem, 5vw, 4.5rem);
    left: clamp(2rem, 5vw, 5rem);
    position: absolute;
    top: clamp(1.75rem, 4vw, 3.5rem);
    width: clamp(13rem, 18vw, 18rem);
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen.search_opened .search_form {
    left: auto;
    max-width: 54rem;
    right: auto;
    top: auto;
    transform: none;
    width: min(100%, 54rem);
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen.search_opened .search_field {
    border-bottom-color: rgba(15, 15, 15, 0.2);
    color: #0f0f0f;
    font-size: clamp(2rem, 4vw, 3.5rem);
    line-height: 1.15;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen.search_opened .search_field::placeholder {
    color: rgba(15, 15, 15, 0.46);
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen.search_opened .search_close {
    color: #0f0f0f;
    position: fixed;
    right: clamp(2rem, 5vw, 5rem);
    top: clamp(2rem, 4vw, 3.75rem);
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen.search_opened .search_submit {
    color: #0f0f0f;
  }
}

body.springthorpe-theme-smash .menu_mobile_nav_area .menu_mobile_nav {
  align-items: stretch;
  display: grid;
  gap: 0.65rem;
}

body.springthorpe-theme-smash .menu_main_nav_area .springthorpe-nav-item > a,
body.springthorpe-theme-smash .menu_mobile_nav_area .springthorpe-nav-item > a {
  color: inherit;
  font-weight: 700;
}

body.springthorpe-theme-smash .menu_main_nav_area .springthorpe-nav-item.current-menu-item > a,
body.springthorpe-theme-smash .menu_mobile_nav_area .springthorpe-nav-item.current-menu-item > a {
  color: var(--springthorpe-color-primary, #4f6f52);
}

body.springthorpe-theme-smash .springthorpe-member-hub,
body.springthorpe-theme-smash .springthorpe-booking-hub {
  animation: springthorpe-soft-enter 360ms ease both;
}

body.page-id-10.springthorpe-theme-smash .page_content_wrap,
body.page-id-15.springthorpe-theme-smash .page_content_wrap,
body.parent-pageid-15.springthorpe-theme-smash .page_content_wrap,
body.page-id-21.springthorpe-theme-smash .page_content_wrap,
body.page-id-22.springthorpe-theme-smash .page_content_wrap,
body.page-id-23.springthorpe-theme-smash .page_content_wrap,
body.page-id-24.springthorpe-theme-smash .page_content_wrap,
body.page-id-78.springthorpe-theme-smash .page_content_wrap,
body.post-type-archive-tribe_events.springthorpe-theme-smash .page_content_wrap {
  padding-top: clamp(1rem, 2vw, 1.6rem) !important;
}

body.page-id-10.springthorpe-theme-smash .top_panel_title,
body.page-id-15.springthorpe-theme-smash .top_panel_title,
body.parent-pageid-15.springthorpe-theme-smash .top_panel_title,
body.page-id-21.springthorpe-theme-smash .top_panel_title,
body.page-id-22.springthorpe-theme-smash .top_panel_title,
body.page-id-23.springthorpe-theme-smash .top_panel_title,
body.page-id-24.springthorpe-theme-smash .top_panel_title,
body.page-id-78.springthorpe-theme-smash .top_panel_title,
body.post-type-archive-tribe_events.springthorpe-theme-smash .top_panel_title {
  padding-top: clamp(1.25rem, 2.5vw, 2rem) !important;
  padding-bottom: clamp(1.35rem, 2.75vw, 2.25rem) !important;
}

body.page-id-10.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.page-id-15.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.parent-pageid-15.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.page-id-21.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.page-id-22.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.page-id-23.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.page-id-24.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.page-id-78.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal,
body.post-type-archive-tribe_events.springthorpe-theme-smash .page_wrap .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal {
  padding-top: clamp(1rem, 1.75vw, 1.5rem) !important;
  padding-bottom: clamp(1.1rem, 2vw, 1.65rem) !important;
}

body.springthorpe-theme-smash .top_panel_title.sc_layouts_row.sc_layouts_row_type_normal {
  display: none !important;
}

body.springthorpe-theme-smash .page_content_wrap {
  padding-top: clamp(0.85rem, 1.6vw, 1.25rem) !important;
  padding-bottom: clamp(1.25rem, 3vw, 2.5rem) !important;
}

body.home.springthorpe-theme-smash .page_content_wrap {
  padding-top: 0 !important;
  padding-bottom: clamp(1rem, 2.5vw, 2rem) !important;
}

@keyframes springthorpe-soft-enter {
  from {
    opacity: 0;
    transform: translateY(0.5rem);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.springthorpe-events-operator-actions {
  align-items: center;
  background: #f7fbf7;
  border: 1px solid #d5e4d6;
  border-left: 4px solid #4f8f42;
  display: grid;
  gap: 1rem;
  grid-template-columns: minmax(0, 1fr) auto;
  margin: 0 0 2rem;
  padding: 1rem 1.1rem;
}

.springthorpe-events-operator-actions strong,
.springthorpe-events-operator-actions span {
  display: block;
}

.springthorpe-events-operator-actions strong {
  color: #17212a;
  font-size: 1rem;
  line-height: 1.3;
}

.springthorpe-events-operator-actions span {
  color: #5b6770;
  font-size: 0.94rem;
  margin-top: 0.2rem;
}

.springthorpe-events-operator-actions nav {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  justify-content: end;
}

.springthorpe-events-operator-actions a,
.springthorpe-event-flyers__action a,
.springthorpe-event-flyers__action button,
.springthorpe-past-event-flyers__action a {
  align-items: center;
  background: #ffffff;
  border: 1px solid #b7cfc0;
  border-radius: 4px;
  /* border-box keeps padding inside the box. Without it (the anchor falls back
     to content-box outside Elementor) the old min-height + padding stacked to
     ~70px on the Gutenberg pages; Elementor forced border-box so production
     rendered the slim ~40px button. Size is now defined by padding alone. */
  box-sizing: border-box;
  color: #1e5e31;
  cursor: pointer;
  display: inline-flex;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.2;
  padding: 10px 24px;
  text-decoration: none;
}

.springthorpe-events-operator-actions a:hover,
.springthorpe-events-operator-actions a:focus,
.springthorpe-event-flyers__action a:hover,
.springthorpe-event-flyers__action a:focus,
.springthorpe-event-flyers__action button:hover,
.springthorpe-event-flyers__action button:focus,
.springthorpe-past-event-flyers__action a:hover,
.springthorpe-past-event-flyers__action a:focus {
  background: #eef7ef;
  color: #164824;
}

.springthorpe-event-flyers,
.springthorpe-past-event-flyers {
  animation: springthorpe-soft-enter 360ms ease both;
  /* Pin the flyer typeface so the Gutenberg-rendered component matches the
     Elementor-rendered one. When this block lives inside an Elementor text
     widget the widget applies the global text font (Roboto); in a native
     Gutenberg page it would otherwise inherit the theme body font (DM Sans),
     making the "Open walk" buttons render wider/different. */
  font-family: "Roboto", sans-serif;
  margin: 1.1rem auto 0;
  max-width: 60rem;
}

.springthorpe-event-flyers--future {
  margin-bottom: clamp(2.4rem, 5vw, 4rem);
}

.springthorpe-event-flyers__intro,
.springthorpe-event-flyers__empty,
.springthorpe-past-event-flyers__intro,
.springthorpe-past-event-flyers__empty {
  color: #64717a;
  font-size: 1rem;
  margin: 0 0 1rem;
}

.springthorpe-event-flyers__list,
.springthorpe-past-event-flyers__list {
  display: grid;
  gap: 0.9rem;
}

.springthorpe-event-flyers__item,
.springthorpe-past-event-flyers__item {
  align-items: start;
  background: #ffffff;
  border: 1px solid #e0e7df;
  border-left: 4px solid #4f8f42;
  display: grid;
  gap: clamp(0.95rem, 2vw, 1.4rem);
  grid-template-columns: minmax(9.5rem, 14rem) minmax(0, 1fr) 5.5rem max-content;
  min-height: 11.25rem;
  overflow: hidden;
  padding: clamp(0.8rem, 1.6vw, 1.1rem);
  position: relative;
  transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.springthorpe-event-flyers__item::before,
.springthorpe-past-event-flyers__item::before {
  background: linear-gradient(180deg, rgba(79, 143, 66, 0.12), rgba(79, 143, 66, 0));
  content: "";
  inset: 0;
  opacity: 0;
  pointer-events: none;
  position: absolute;
  transition: opacity 180ms ease;
}

.springthorpe-event-flyers__item:hover,
.springthorpe-event-flyers__item:focus-within,
.springthorpe-past-event-flyers__item:hover,
.springthorpe-past-event-flyers__item:focus-within {
  border-color: #c6d9c6;
  box-shadow: 0 14px 34px rgba(24, 45, 34, 0.1);
  transform: translateY(-2px);
}

.springthorpe-event-flyers__item:hover::before,
.springthorpe-event-flyers__item:focus-within::before,
.springthorpe-past-event-flyers__item:hover::before,
.springthorpe-past-event-flyers__item:focus-within::before {
  opacity: 1;
}

.springthorpe-event-flyers__item > p:empty,
.springthorpe-past-event-flyers__item > p:empty {
  display: none;
}

.springthorpe-event-flyers__thumb,
.springthorpe-past-event-flyers__thumb {
  align-items: center;
  align-self: stretch;
  background: #f6f8f5;
  display: flex;
  grid-column: 1;
  height: 100%;
  justify-content: center;
  margin: 0;
  min-height: 9rem;
  overflow: hidden;
  position: relative;
  width: 100%;
}

.springthorpe-event-flyers__thumb::after,
.springthorpe-past-event-flyers__thumb::after {
  border: 1px solid rgba(255, 255, 255, 0.65);
  content: "";
  inset: 0.45rem;
  pointer-events: none;
  position: absolute;
}

.springthorpe-event-flyers__thumb img,
.springthorpe-past-event-flyers__thumb img {
  display: block;
  height: 100% !important;
  inset: 0;
  object-fit: contain;
  position: absolute;
  transition: transform 220ms ease;
  width: 100% !important;
}

.springthorpe-event-flyers__item:hover .springthorpe-event-flyers__thumb img,
.springthorpe-event-flyers__item:focus-within .springthorpe-event-flyers__thumb img {
  transform: scale(1.035);
}

.springthorpe-event-flyers__thumb--missing::before,
.springthorpe-past-event-flyers__thumb--missing::before {
  color: #7c8990;
  content: "Flyer";
  font-size: 0.8rem;
  font-weight: 700;
}

.springthorpe-event-flyers__body,
.springthorpe-past-event-flyers__body {
  grid-column: 2;
  min-width: 0;
}

.springthorpe-event-flyers__body h3,
.springthorpe-past-event-flyers__body h3 {
  color: #24313a;
  font-size: clamp(1.05rem, 1.5vw, 1.22rem);
  line-height: 1.22;
  margin: 0 0 0.55rem;
}

.springthorpe-event-flyers__meta,
.springthorpe-past-event-flyers__meta {
  color: #66737d;
  display: flex;
  flex-wrap: wrap;
  font-size: 0.94rem;
  gap: 0.4rem 0.85rem;
  line-height: 1.45;
  margin: 0;
}

.springthorpe-event-flyers__summary,
.springthorpe-past-event-flyers__summary {
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  color: #52616b;
  display: -webkit-box;
  font-size: 0.92rem;
  line-clamp: 3;
  line-height: 1.45;
  margin: 0.55rem 0 0;
  max-height: calc(1.45em * 3);
  max-width: 42rem;
  overflow: hidden;
}

.springthorpe-event-flyers__description,
.springthorpe-past-event-flyers__description {
  color: #52616b;
  font-size: 0.94rem;
  line-height: 1.5;
  margin-top: 0.7rem;
  max-width: 44rem;
}

.springthorpe-event-flyers__description :first-child,
.springthorpe-past-event-flyers__description :first-child {
  margin-top: 0;
}

.springthorpe-event-flyers__description :last-child,
.springthorpe-past-event-flyers__description :last-child {
  margin-bottom: 0;
}

.springthorpe-event-flyers__description ul,
.springthorpe-past-event-flyers__description ul {
  margin: 0.4rem 0 0;
  padding-left: 1.15rem;
}

.springthorpe-event-flyers__gallery,
.springthorpe-past-event-flyers__gallery {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-top: 0.8rem;
}

.springthorpe-event-flyers__gallery a,
.springthorpe-past-event-flyers__gallery a {
  aspect-ratio: 4 / 3;
  background: #f6f8f5;
  border: 1px solid #e0e7df;
  display: block;
  overflow: hidden;
  width: clamp(4.5rem, 10vw, 6.5rem);
}

.springthorpe-event-flyers__gallery img,
.springthorpe-past-event-flyers__gallery img {
  display: block;
  height: 100% !important;
  object-fit: cover;
  width: 100% !important;
}

.springthorpe-event-flyers__date,
.springthorpe-past-event-flyers__date,
.springthorpe-event-flyers__price,
.springthorpe-past-event-flyers__price {
  color: #43525d;
  font-weight: 700;
}

.springthorpe-event-flyers__price {
  align-self: center;
  font-size: 0.95rem;
  grid-column: 3;
  justify-self: start;
  min-width: 5.5rem;
}

.springthorpe-event-flyers__location,
.springthorpe-past-event-flyers__location {
  min-width: min(18rem, 100%);
}

.springthorpe-event-flyers__action,
.springthorpe-past-event-flyers__action {
  align-items: flex-end;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  grid-column: 4;
  justify-self: end;
}

.springthorpe-event-flyers__action span,
.springthorpe-past-event-flyers__action span {
  color: #7c8990;
  font-size: 0.86rem;
}

/* Already-registered status replaces the Register button on the Events page. */
.springthorpe-event-flyers__action span.springthorpe-event-flyers__registered {
  color: #1e5e31;
  font-size: 0.9rem;
  font-weight: 600;
  text-align: right;
}

.springthorpe-event-flyers__action span.springthorpe-event-flyers__registered--waiting {
  color: #fcae24;
}

.springthorpe-event-flyers__manage {
  white-space: nowrap;
}

/* Registration CTA (the "Register" button and the logged-out "Login to Register"
   link) — solid darker green so the registration option is unmistakable. */
.springthorpe-event-flyers__action button.springthorpe-event-flyers__register,
.springthorpe-event-flyers__action a.springthorpe-event-flyers__register {
  background: #1e5e31;
  border-color: #1e5e31;
  color: #ffffff;
}

.springthorpe-event-flyers__action button.springthorpe-event-flyers__register:hover,
.springthorpe-event-flyers__action button.springthorpe-event-flyers__register:focus,
.springthorpe-event-flyers__action a.springthorpe-event-flyers__register:hover,
.springthorpe-event-flyers__action a.springthorpe-event-flyers__register:focus {
  background: #164824;
  border-color: #164824;
  color: #ffffff;
}

/* Match the register CTA width to "Open flyer" (and each other): every action
   control fills the column, which is sized to the widest item. */
.springthorpe-event-flyers__action a,
.springthorpe-event-flyers__action button,
.springthorpe-event-flyers__action span.springthorpe-event-flyers__status-pill {
  justify-content: center;
  text-align: center;
  width: 100%;
}

/* "Upcoming" / "Registration closed" pill — a muted, non-interactive button
   shown when Amelia's booking window means registration is not currently open. */
.springthorpe-event-flyers__action span.springthorpe-event-flyers__status-pill {
  align-items: center;
  background: #f1f4f2;
  border: 1px solid #d4ddd6;
  border-radius: 4px;
  box-sizing: border-box;
  color: #5d6b62;
  cursor: default;
  display: inline-flex;
  font-size: 14px;
  font-weight: 700;
  justify-content: center;
  line-height: 1.2;
  padding: 10px 24px;
}

/* ---- Facility Manager: Add New Event ---- */
.springthorpe-events-operator-actions__primary {
  align-items: center;
  background: #1e5e31;
  border: 1px solid #1e5e31;
  border-radius: 4px;
  box-sizing: border-box;
  color: #ffffff;
  cursor: pointer;
  display: inline-flex;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.2;
  padding: 10px 24px;
}

.springthorpe-events-operator-actions__primary:hover,
.springthorpe-events-operator-actions__primary:focus {
  background: #164824;
  border-color: #164824;
  color: #ffffff;
}

.springthorpe-add-event-modal[hidden] {
  display: none;
}

.springthorpe-add-event-modal {
  align-items: flex-start;
  display: flex;
  inset: 0;
  justify-content: center;
  overflow-y: auto;
  padding: 4vh 1rem;
  position: fixed;
  z-index: 100000;
}

.springthorpe-add-event-modal__overlay {
  background: rgba(20, 32, 24, 0.55);
  inset: 0;
  position: fixed;
}

.springthorpe-add-event-modal__dialog {
  background: #fbfaf6;
  border-radius: 8px;
  border-top: 4px solid #1e5e31;
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.28);
  max-width: 560px;
  padding: 1.5rem 1.6rem 1.4rem;
  position: relative;
  width: 100%;
}

.springthorpe-add-event-modal__dialog--wide {
  max-width: 980px;
}

/* Access pass modal form fields. */
.springthorpe-pass-field {
  margin: 0 0 0.85rem;
}
.springthorpe-pass-field input,
.springthorpe-pass-field select {
  max-width: 360px;
  width: 100%;
}
.springthorpe-add-event-modal [data-pass-history-body] {
  max-height: 52vh;
  overflow: auto;
}

/* Access history controls — mirror the Manage Documents bar: single row, boxed
   inputs, a green-text "Filter by type" toggle, a muted "Clear filters" text link,
   and a green "Download CSV" action button. No gold/accent outlines. */
.springthorpe-pass-history-controls {
  align-items: center;
  border-bottom: 1px solid var(--springthorpe-color-border);
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin: 0.25rem 0 1rem;
  padding-bottom: 1rem;
}
.springthorpe-pass-history-date {
  align-items: center;
  color: var(--springthorpe-color-muted);
  display: inline-flex;
  font-size: 0.85rem;
  font-weight: 600;
  gap: 0.4rem;
  margin: 0;
  white-space: nowrap;
}
.springthorpe-pass-history-controls input[type="date"] {
  background: #fff !important;
  border: 1px solid var(--springthorpe-color-border) !important;
  border-radius: var(--springthorpe-radius-control, 6px) !important;
  box-shadow: none !important;
  color: var(--springthorpe-color-text);
  font: inherit;
  font-size: 14px;
  padding: 0.5rem 0.6rem !important;
}
/* Search: magnifier icon + boxed input, flex-grow — like the Documents search. */
.springthorpe-pass-history-search {
  align-items: center;
  display: inline-flex;
  flex: 1 1 14rem;
  min-width: 0;
  position: relative;
}
.springthorpe-pass-history-search__icon {
  color: var(--springthorpe-color-muted);
  height: 1rem;
  left: 0.7rem;
  pointer-events: none;
  position: absolute;
  width: 1rem;
}
.springthorpe-pass-history-search input[type="search"] {
  background: #fff !important;
  border: 1px solid var(--springthorpe-color-border) !important;
  border-radius: var(--springthorpe-radius-control, 6px) !important;
  box-shadow: none !important;
  color: var(--springthorpe-color-text);
  flex: 1 1 auto;
  font: inherit;
  font-size: 14px;
  min-width: 0;
  padding: 0.5rem 0.6rem 0.5rem 2.2rem !important;
  width: 100%;
}
/* Filter-by-type toggle: green text + chevron, mirrors "Document Filters". */
.springthorpe-pass-history-types {
  position: relative;
}
.springthorpe-pass-history-types__toggle {
  align-items: center;
  background: none;
  border: 0;
  color: var(--springthorpe-color-primary);
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-size: 0.9rem;
  font-weight: 650;
  gap: 0.35rem;
  padding: 0.5rem 0.2rem;
  white-space: nowrap;
}
.springthorpe-pass-history-types__chevron {
  height: 1rem;
  transition: transform 0.15s ease;
  width: 1rem;
}
.springthorpe-pass-history-types__toggle[aria-expanded="true"] .springthorpe-pass-history-types__chevron {
  transform: rotate(180deg);
}
/* Clear filters: muted text link. */
.springthorpe-pass-history-clear {
  background: none;
  border: 0;
  color: var(--springthorpe-color-muted);
  cursor: pointer;
  font: inherit;
  font-size: 0.9rem;
  padding: 0.5rem 0.3rem;
  text-decoration: underline;
  white-space: nowrap;
}
.springthorpe-pass-history-clear:hover,
.springthorpe-pass-history-clear:focus {
  color: var(--springthorpe-color-heading);
}
/* Download CSV: green fill, matches the Documents "Search" button. */
.springthorpe-pass-history-controls .springthorpe-pass-history-download {
  background: #2eac6d !important;
  border: 0 !important;
  border-radius: var(--springthorpe-radius-control) !important;
  box-shadow: none !important;
  color: #ffffff !important;
  font-size: 14px !important;
  font-weight: 650 !important;
  margin: 0 0 0 auto !important;
  padding: 0.55rem 0.9rem !important;
  text-decoration: none !important;
  white-space: nowrap;
}
.springthorpe-pass-history-controls .springthorpe-pass-history-download:hover,
.springthorpe-pass-history-controls .springthorpe-pass-history-download:focus {
  background: #269a5f !important;
  color: #ffffff !important;
}
.springthorpe-pass-history-types__menu {
  background: #fff;
  border: 1px solid var(--springthorpe-color-border);
  border-radius: var(--springthorpe-radius-control, 6px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
  left: 0;
  max-height: 20rem;
  min-width: 22rem;
  overflow-y: auto;
  padding: 0.4rem;
  position: absolute;
  top: calc(100% + 4px);
  z-index: 30;
}
.springthorpe-pass-history-types__menu[hidden] {
  display: none;
}
.springthorpe-pass-history-types__actions {
  border-bottom: 1px solid var(--springthorpe-color-border);
  display: flex;
  gap: 0.85rem;
  margin-bottom: 0.35rem;
  padding: 0.15rem 0.35rem 0.4rem;
}
.springthorpe-pass-history-types__actions button {
  background: none;
  border: 0;
  color: var(--springthorpe-color-link, #2271b1);
  cursor: pointer;
  font: inherit;
  font-size: 0.85rem;
  padding: 0;
  text-decoration: underline;
}
.springthorpe-pass-history-types__item {
  align-items: center;
  color: var(--springthorpe-color-text) !important;
  display: flex !important;
  font-weight: 500 !important;
  gap: 0.5rem;
  padding: 0.3rem 0.35rem;
}
.springthorpe-pass-history-types__item:hover {
  background: var(--springthorpe-color-surface, #f4f7f5);
}
.springthorpe-pass-history-types__item input {
  margin: 0;
}
.springthorpe-pass-history-types__item span {
  flex: 1;
}
.springthorpe-pass-history-types__item em {
  color: var(--springthorpe-color-muted);
  font-size: 0.82rem;
  font-style: normal;
}
.springthorpe-add-event-modal [data-pass-history-body] table {
  font-size: 0.92rem;
}
.springthorpe-add-event-modal [data-pass-history-pager] {
  margin-top: 0.75rem;
}

.springthorpe-add-event-modal__close {
  background: transparent;
  border: 0;
  color: #5b6770;
  cursor: pointer;
  font-size: 1.6rem;
  line-height: 1;
  padding: 0.2rem 0.4rem;
  position: absolute;
  right: 0.7rem;
  top: 0.6rem;
}

.springthorpe-add-event-modal__dialog h2 {
  color: #17212a;
  font-size: 1.4rem;
  margin: 0 1.5rem 0.35rem 0;
}

.springthorpe-add-event-modal__intro {
  color: #5b6770;
  font-size: 0.92rem;
  margin: 0 0 1.1rem;
}

.springthorpe-add-event-form__row {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin-bottom: 0.9rem;
}

.springthorpe-add-event-form__row > label {
  color: #2b3640;
  font-size: 0.9rem;
  font-weight: 600;
}

.springthorpe-add-event-form__row input[type="text"],
.springthorpe-add-event-form__row input[type="number"],
.springthorpe-add-event-form__row input[type="datetime-local"],
.springthorpe-add-event-form__row input[type="file"],
.springthorpe-add-event-form__row select,
.springthorpe-add-event-form__row textarea {
  border: 1px solid #c4d0c6;
  border-radius: 4px;
  box-sizing: border-box;
  font-size: 0.95rem;
  padding: 0.5rem 0.6rem;
  width: 100%;
}

.springthorpe-add-event-form__row textarea {
  font-family: inherit;
  min-height: 5.5rem;
  resize: vertical;
}

.springthorpe-add-event-form__row small {
  color: #7c8990;
  font-size: 0.8rem;
}

/* Align the entry boxes in a tidy grid even when labels wrap to two lines. */
.springthorpe-add-event-form__grid {
  align-items: end;
  display: grid;
  gap: 0.9rem;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
}

.springthorpe-add-event-form__grid .springthorpe-add-event-form__row {
  margin-bottom: 0;
}

.springthorpe-add-event-form__grid .springthorpe-add-event-form__row > label {
  align-items: flex-end;
  display: flex;
  min-height: 2.4em;
}

.springthorpe-add-event-form__toggle label {
  align-items: center;
  color: #2b3640;
  cursor: pointer;
  display: flex;
  flex-direction: row;
  font-weight: 600;
  gap: 0.5rem;
}

.springthorpe-add-event-form__registration[hidden] {
  display: none;
}

.springthorpe-add-event-form__registration {
  background: #f3f7f3;
  border: 1px solid #dce8dd;
  border-radius: 6px;
  margin-bottom: 0.9rem;
  padding: 0.9rem 1rem 0.3rem;
}

.springthorpe-add-event-form__fields {
  border: 0;
  margin: 0.4rem 0 0.6rem;
  padding: 0;
}

.springthorpe-add-event-form__fields legend {
  color: #2b3640;
  font-size: 0.9rem;
  font-weight: 600;
  padding: 0;
}

.springthorpe-add-event-form__fields label {
  align-items: baseline;
  color: #2b3640;
  display: flex;
  flex-direction: row;
  font-size: 0.9rem;
  gap: 0.5rem;
  margin-top: 0.4rem;
}

.springthorpe-add-event-form__fields em {
  color: #7c8990;
  font-style: normal;
}

.springthorpe-add-event-form__error {
  background: #fdecea;
  border: 1px solid #f3c4bd;
  border-radius: 4px;
  color: #8a1c10;
  font-size: 0.9rem;
  margin-bottom: 0.9rem;
  padding: 0.55rem 0.7rem;
}

.springthorpe-add-event-form__error[hidden] {
  display: none;
}

.springthorpe-add-event-form__actions {
  display: flex;
  gap: 0.6rem;
  justify-content: flex-end;
  margin-top: 0.4rem;
}

.springthorpe-add-event-form__cancel {
  background: #ffffff;
  border: 1px solid #c4d0c6;
  border-radius: 4px;
  color: #2b3640;
  cursor: pointer;
  font-size: 0.92rem;
  font-weight: 600;
  padding: 0.55rem 1.1rem;
}

.springthorpe-add-event-form__submit {
  background: #1e5e31;
  border: 1px solid #1e5e31;
  border-radius: 4px;
  color: #ffffff;
  cursor: pointer;
  font-size: 0.92rem;
  font-weight: 700;
  padding: 0.55rem 1.3rem;
}

.springthorpe-add-event-form__submit:disabled {
  opacity: 0.65;
  cursor: default;
}

/* ---- Facility Manager: Resource Blockouts (uses the Manage Members chrome) ---- */
.springthorpe-blockout-all {
  border-bottom: 1px solid #e0e6e0;
  display: block;
  font-weight: 600;
  margin-bottom: 0.4rem;
  padding-bottom: 0.4rem;
}
.springthorpe-blockout-empty {
  color: var(--springthorpe-color-muted, #5b6770);
  font-size: 0.95rem;
  margin: 0;
}
/* Compact danger button inside the table (the base .springthorpe-button has a
   top margin meant for forms). */
.springthorpe-blockout-table .springthorpe-button {
  font-size: 0.85rem;
  margin-top: 0;
  padding: 0.4rem 0.85rem;
}
/* Align the From/To date controls on the same line (top-aligned), and move the
   hint to its own line below the grid. */
.springthorpe-add-event-form__grid.springthorpe-blockout-dates-grid {
  align-items: start;
}
.springthorpe-blockout-hint {
  color: var(--springthorpe-color-muted, #7c8990);
  font-size: 0.82rem;
  margin: -0.3rem 0 0.2rem;
}
/* Whole-day / part-day groupings inside the Add Blockout modal. */
.springthorpe-add-event-form__fields.springthorpe-blockout-section {
  margin-top: 1rem;
}
.springthorpe-add-event-form__grid.springthorpe-blockout-time-grid {
  align-items: start;
}
/* The blockout page uses the full content width (wider than the default
   operator-landing 58rem cap) so the intro text and the table — including the
   right-aligned actions menu — reach the right edge of the content area. */
body.springthorpe-fm-blockout-page .springthorpe-operator-landing,
body.springthorpe-fm-blockout-page .springthorpe-operator-landing > p {
  max-width: none;
}
/* Pin the actions column hard to the right (beats .springthorpe-members-table td
   left-align) and give the other columns sensible fixed-layout widths. */
.springthorpe-blockout-table th.springthorpe-members-actions,
.springthorpe-blockout-table td.springthorpe-members-actions {
  text-align: right;
}
.springthorpe-blockout-col--desc {
  width: 28%;
}
.springthorpe-blockout-col--dates {
  width: 22%;
}

/* Stop the theme's global button styling from colouring the TinyMCE toolbar
   buttons green inside the modal. Restore the editor's neutral look. */
.springthorpe-add-event-modal .mce-toolbar .mce-btn,
.springthorpe-add-event-modal .mce-toolbar .mce-btn button,
.springthorpe-add-event-modal .mce-btn button,
.springthorpe-add-event-modal .mce-ico,
.springthorpe-add-event-modal .tox .tox-tbtn {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  color: #3a4750 !important;
}

.springthorpe-add-event-modal .mce-btn button {
  padding: 4px 6px !important;
}

.springthorpe-add-event-modal .mce-btn:hover button,
.springthorpe-add-event-modal .mce-btn.mce-active button,
.springthorpe-add-event-modal .tox .tox-tbtn:hover {
  background: #e7efe7 !important;
}

.springthorpe-add-event-modal .mce-toolbar-grp {
  background: #f5f7f5 !important;
  border-bottom: 1px solid #dce3dc !important;
}

@media (max-width: 760px) {
  html,
  body.springthorpe-theme-smash {
    max-width: 100%;
    overflow-x: hidden;
  }

  body.springthorpe-theme-smash .top_panel_navi,
  body.springthorpe-theme-smash .sc_layouts_row_fixed_marker_on {
    box-sizing: border-box;
    left: 0 !important;
    max-width: 100vw !important;
    right: 0 !important;
    transform: none !important;
    width: 100% !important;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen,
  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen .search_form,
  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen .search_form_wrap {
    box-sizing: border-box;
    max-width: 100vw !important;
    overflow-x: hidden;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen {
    left: 0 !important;
    right: 0 !important;
    width: 100vw !important;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen .search_form {
    left: 1rem !important;
    max-width: calc(100vw - 2rem) !important;
    right: 1rem !important;
    transform: none !important;
    width: auto !important;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen input[type="search"],
  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen input[type="text"],
  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen .search_field {
    box-sizing: border-box;
    left: auto !important;
    max-width: calc(100vw - 2rem) !important;
    right: 1rem !important;
    width: calc(100vw - 2rem) !important;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen:not(.search_opened),
  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen:not(.search_opened) .search_form_wrap,
  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen:not(.search_opened) .search_form {
    left: auto !important;
    max-width: 2rem !important;
    overflow: visible !important;
    right: auto !important;
    width: 2rem !important;
  }

  body.springthorpe-theme-smash .search_wrap.search_style_fullscreen:not(.search_opened) .search_field {
    max-width: 0 !important;
    opacity: 0;
    width: 0 !important;
  }

  .springthorpe-portal-nav {
    width: 100%;
  }

  .springthorpe-member-hub__media {
    aspect-ratio: 16 / 9; /* pool sits in lower portion of photo */
  }

  .springthorpe-member-hub__media img {
    object-position: center center; /* mobile image is already cropped to pool */
  }

  .springthorpe-member-hub__tiles,
  .springthorpe-booking-hub--editable .springthorpe-booking-editable-grid,
  .springthorpe-booking-layout,
  .springthorpe-smash-footer__inner {
    grid-template-columns: 1fr !important;
  }

  .springthorpe-events-operator-actions,
  .springthorpe-event-flyers__item,
  .springthorpe-past-event-flyers__item {
    align-items: stretch;
    grid-template-columns: 1fr;
  }

  .springthorpe-events-operator-actions nav,
  .springthorpe-event-flyers__action,
  .springthorpe-past-event-flyers__action {
    justify-content: start;
    justify-self: start;
  }

  .springthorpe-event-flyers__thumb,
  .springthorpe-past-event-flyers__thumb {
    aspect-ratio: 16 / 9;
    grid-column: 1;
    height: auto;
    width: 100%;
  }

  .springthorpe-event-flyers__body,
  .springthorpe-event-flyers__price,
  .springthorpe-event-flyers__action,
  .springthorpe-past-event-flyers__body,
  .springthorpe-past-event-flyers__action {
    grid-column: 1;
  }

  .springthorpe-event-flyers__price {
    min-width: 0;
  }

  .springthorpe-member-hub__header h1,
  .springthorpe-booking-hub__header h2 {
    font-size: 3rem;
  }

  .springthorpe-booking-hub--editable .springthorpe-booking-card {
    min-height: 0;
  }

  .springthorpe-profile-bookings__list li {
    align-items: start;
    grid-template-columns: 1fr;
  }

  .springthorpe-profile-bookings__cancel,
  .springthorpe-profile-bookings__cancel button {
    justify-self: stretch;
    width: 100%;
  }

  .springthorpe-profile-summary--with-bookings,
  .springthorpe-profile-summary--editable .springthorpe-profile-summary__columns {
    grid-template-columns: 1fr !important;
  }

  .springthorpe-profile-account-action,
  .springthorpe-profile-account-form button {
    justify-content: center;
    width: 100%;
  }

  .springthorpe-smash-footer {
    margin-top: 2rem;
  }

  .springthorpe-smash-footer__bottom {
    align-items: start;
    flex-direction: column;
  }
}

/* ==========================================================================
   Strategic Plan page components
   ========================================================================== */

.springthorpe-sp-eyebrow {
  color: var(--springthorpe-green);
  font-size: 0.78rem !important;
  font-weight: 780;
  letter-spacing: 0.09em;
  margin-bottom: 0.3rem !important;
  text-transform: uppercase;
}

.springthorpe-sp-lead {
  border-left: 4px solid var(--springthorpe-green);
  color: var(--springthorpe-charcoal);
  font-size: 1.1rem;
  line-height: 1.65;
  margin-bottom: 1.4rem !important;
  padding-left: 1.1rem;
}

/* Callout boxes */
.springthorpe-sp-callout {
  background: var(--springthorpe-mist);
  border-left: 5px solid var(--springthorpe-green);
  margin: 1.6rem 0;
  padding: 1.1rem 1.3rem;
}
.springthorpe-sp-callout--gold {
  background: color-mix(in srgb, var(--springthorpe-gold) 8%, #ffffff);
  border-left-color: var(--springthorpe-gold);
}
.springthorpe-sp-callout--dark {
  background: color-mix(in srgb, var(--springthorpe-charcoal) 5%, #ffffff);
  border-left-color: var(--springthorpe-charcoal);
}
.springthorpe-sp-callout p:last-child { margin-bottom: 0; }

/* Principles grid */
.springthorpe-sp-principles {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  margin: 1.4rem 0;
}
.springthorpe-sp-principle {
  background: #ffffff;
  border: 1px solid var(--springthorpe-line);
  color: var(--springthorpe-ink);
  font-size: 0.9rem;
  line-height: 1.45;
  padding: 0.85rem 1rem;
}

/* Four-step cycle */
.springthorpe-sp-cycle {
  background: var(--springthorpe-line);
  border: 1px solid var(--springthorpe-line);
  display: grid;
  gap: 1px;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  margin: 1.8rem 0;
}
.springthorpe-sp-cycle__step {
  background: #ffffff;
  padding: 1.1rem 1rem;
}
.springthorpe-sp-cycle__num {
  align-items: center;
  background: var(--springthorpe-green);
  color: #ffffff;
  display: inline-flex;
  font-size: 0.82rem;
  font-weight: 780;
  height: 2rem;
  justify-content: center;
  margin-bottom: 0.55rem;
  width: 2rem;
}
.springthorpe-sp-cycle__title {
  color: var(--springthorpe-charcoal);
  font-size: 0.8rem;
  font-weight: 780;
  letter-spacing: 0.05em;
  margin-bottom: 0.35rem;
  text-transform: uppercase;
}
.springthorpe-sp-cycle__body {
  color: var(--springthorpe-muted);
  font-size: 0.85rem;
  line-height: 1.45;
  margin: 0;
}

/* Goal area cards */
.springthorpe-sp-goal {
  background: var(--springthorpe-mist);
  border-top: 4px solid var(--springthorpe-green);
  margin-bottom: 1.4rem;
  padding: 1.4rem 1.5rem;
}
.springthorpe-sp-goal--2 { border-top-color: #3d7a63; }
.springthorpe-sp-goal--3 { border-top-color: #5c7a3e; }
.springthorpe-sp-goal--4 { border-top-color: #5a6e30; }
.springthorpe-sp-goal--5 { border-top-color: var(--springthorpe-gold); }

.springthorpe-sp-goal__label {
  color: var(--springthorpe-muted);
  font-size: 0.72rem;
  font-weight: 780;
  letter-spacing: 0.09em;
  margin-bottom: 0.15rem !important;
  text-transform: uppercase;
}
.springthorpe-sp-goal__title {
  color: var(--springthorpe-charcoal);
  font-size: 1.15rem;
  margin-bottom: 0.5rem !important;
}
.springthorpe-sp-goal__pitch {
  border-left: 3px solid var(--springthorpe-green);
  color: var(--springthorpe-ink);
  font-style: italic;
  margin-bottom: 0.9rem !important;
  padding-left: 0.8rem;
}
.springthorpe-sp-goal--5 .springthorpe-sp-goal__pitch {
  border-left-color: var(--springthorpe-gold);
}

/* Get Involved band */
.springthorpe-sp-get-involved {
  background: var(--springthorpe-green);
  margin: 2.5rem 0 2rem;
  padding: 2.2rem 1.8rem;
}
.springthorpe-sp-get-involved h2 {
  border: none !important;
  color: #ffffff !important;
  margin-top: 0 !important;
  padding-top: 0 !important;
}
.springthorpe-sp-get-involved p,
.springthorpe-sp-get-involved li {
  color: rgba(255, 255, 255, 0.92);
}
.springthorpe-sp-get-involved strong {
  color: #ffffff;
}

/* ── Walk Preview Modal ──────────────────────────────────────────────────────
   Thumbnail trigger (.spt-walk-preview) + full-screen modal (.spt-walk-modal)
   ──────────────────────────────────────────────────────────────────────────── */

/* Thumbnail trigger — fills the __thumb container absolutely */
.spt-walk-preview {
  background: none;
  border: none;
  bottom: 0;
  cursor: pointer;
  display: block;
  left: 0;
  overflow: hidden;
  padding: 0;
  position: absolute;
  right: 0;
  top: 0;
}

.spt-walk-preview img {
  display: block;
  height: 100% !important;
  inset: 0;
  object-fit: contain;
  position: absolute;
  transition: transform 220ms ease;
  width: 100% !important;
}

.spt-walk-preview:hover img,
.spt-walk-preview:focus img {
  transform: scale(1.04);
}

.spt-walk-preview__overlay {
  align-items: center;
  background: linear-gradient(to top, rgba(15, 30, 20, 0.76) 0%, rgba(15, 30, 20, 0) 100%);
  bottom: 0;
  color: #ffffff;
  display: flex;
  font-size: 0.77rem;
  font-weight: 600;
  left: 0;
  right: 0;
  justify-content: center;
  letter-spacing: 0.05em;
  opacity: 0;
  padding: 1.1rem 0.5rem 0.6rem;
  pointer-events: none;
  position: absolute;
  text-transform: uppercase;
  transform: translateY(6px);
  transition: opacity 200ms ease, transform 200ms ease;
}

.spt-walk-preview:hover .spt-walk-preview__overlay,
.spt-walk-preview:focus .spt-walk-preview__overlay {
  opacity: 1;
  transform: translateY(0);
}

/* Modal outer wrapper */
.spt-walk-modal {
  align-items: center;
  bottom: 0;
  display: flex;
  justify-content: center;
  left: 0;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 999990;
}

.spt-walk-modal[hidden] {
  display: none;
}

/* Dimmed backdrop */
.spt-walk-modal__backdrop {
  background: rgba(10, 18, 12, 0.72);
  bottom: 0;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

/* Dialog card */
.spt-walk-modal__dialog {
  animation: spt-walk-modal-in 220ms cubic-bezier(0.2, 0, 0.2, 1) both;
  background: #ffffff;
  border-radius: 6px;
  box-shadow: 0 28px 72px rgba(0, 0, 0, 0.38);
  display: flex;
  flex-direction: column;
  height: calc(100vh - 2.5rem);
  height: calc(100dvh - 2.5rem);
  margin: 1.25rem;
  max-height: calc(100vh - 2.5rem);
  max-height: calc(100dvh - 2.5rem);
  max-width: 78rem;
  overflow: hidden;
  position: relative;
  width: 100%;
}

@keyframes spt-walk-modal-in {
  from {
    opacity: 0;
    transform: scale(0.965) translateY(10px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

/* Header bar */
.spt-walk-modal__header {
  align-items: center;
  background: #f7f8f7;
  border-bottom: 1px solid #e4e9e4;
  display: flex;
  flex-shrink: 0;
  gap: 0.55rem;
  padding: 0.65rem 0.8rem 0.65rem 1rem;
}

.spt-walk-modal__header-left {
  align-items: center;
  display: flex;
  flex: 1 1 0;
  gap: 0.45rem;
  min-width: 0;
}

.spt-walk-modal__icon {
  color: #4f6f52;
  flex-shrink: 0;
  line-height: 0;
}

.spt-walk-modal__title {
  color: #22201d;
  font-size: 0.87rem;
  font-weight: 600;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* "Open on Walking Maps" link */
.spt-walk-modal__new-tab {
  align-items: center;
  border: 1px solid #cdd8cd;
  border-radius: 4px;
  color: #4f6f52;
  display: inline-flex;
  flex-shrink: 0;
  font-size: 0.77rem;
  font-weight: 600;
  gap: 0.35rem;
  letter-spacing: 0.01em;
  line-height: 1;
  padding: 0.38rem 0.65rem;
  text-decoration: none;
  transition: background 160ms ease, border-color 160ms ease;
  white-space: nowrap;
}

.spt-walk-modal__new-tab:hover,
.spt-walk-modal__new-tab:focus {
  background: #eef7ef;
  border-color: #4f6f52;
  text-decoration: none;
}

/* Close × button */
.spt-walk-modal__close {
  align-items: center;
  background: none;
  border: 1px solid transparent;
  border-radius: 4px;
  color: #667a66;
  cursor: pointer;
  display: flex;
  flex-shrink: 0;
  height: 2rem;
  justify-content: center;
  line-height: 0;
  padding: 0;
  transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
  width: 2rem;
}

.spt-walk-modal__close:hover,
.spt-walk-modal__close:focus {
  background: #f0f4f0;
  border-color: #c5d4c5;
  color: #22201d;
}

/* Iframe body — fills all space below the header */
.spt-walk-modal__body {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  position: relative;
}

/* Loading overlay (shown while iframe loads) */
.spt-walk-modal__loading {
  align-items: center;
  bottom: 0;
  color: #66747a;
  display: flex;
  font-size: 0.9rem;
  gap: 0.6rem;
  justify-content: center;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

.spt-walk-modal__spinner {
  animation: spt-walk-modal-spin 0.8s linear infinite;
  border: 2.5px solid #d4ddd4;
  border-radius: 50%;
  border-top-color: #4f6f52;
  display: inline-block;
  flex-shrink: 0;
  height: 1.25rem;
  width: 1.25rem;
}

@keyframes spt-walk-modal-spin {
  to {
    transform: rotate(360deg);
  }
}

.spt-walk-modal__iframe {
  border: none;
  display: block;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
  z-index: 1;
}

/* Prevent body scroll when modal is open */
body.spt-walk-modal-open {
  overflow: hidden;
}

/* ── Committee Members page ──────────────────────────────────────────────── */

/* Preamble highlight block */
.spt-committee-preamble {
  background: #fff;
  border-top: 3px solid var(--springthorpe-gold, #b58a2b);
  border-radius: 0 0 4px 4px;
  margin-top: 2rem;
  padding: 1.5rem 1.75rem;
}

.spt-committee-preamble blockquote {
  border-left: 3px solid var(--springthorpe-gold, #b58a2b);
  color: var(--springthorpe-muted, #625b52);
  font-style: italic;
  margin: 1rem 0;
  padding-left: 1rem;
}

/* OC Manager row */
.spt-ocm-grid {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(2, 1fr);
  margin-top: 1.25rem;
}

@media (max-width: 600px) {
  .spt-ocm-grid { grid-template-columns: 1fr; }
}

.spt-ocm-card {
  align-items: flex-start;
  background: #fff;
  border: 1px solid var(--springthorpe-line, rgba(34,32,29,.13));
  border-radius: 6px;
  display: flex;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
}

.spt-ocm-avatar {
  align-items: center;
  background: var(--springthorpe-charcoal, #22201d);
  border-radius: 50%;
  color: var(--springthorpe-gold, #b58a2b);
  display: flex;
  flex-shrink: 0;
  font-size: 1.25rem;
  font-weight: 700;
  height: 64px;
  justify-content: center;
  letter-spacing: .04em;
  width: 64px;
}

.spt-ocm-avatar img {
  border-radius: 50%;
  box-shadow: 0 0 0 2px var(--springthorpe-gold, #b58a2b);
  display: block;
  height: 64px !important;
  object-fit: cover;
  object-position: center 20%;
  width: 64px !important;
}

.spt-ocm-info strong { display: block; font-size: 1rem; margin-bottom: .15rem; }
.spt-ocm-info span   { color: var(--springthorpe-muted, #625b52); font-size: .85rem; }
.spt-ocm-info a      { color: var(--springthorpe-charcoal, #22201d); font-size: .85rem; }

/* Committee member grid */
.spt-committee-grid {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 1.5rem;
}

@media (max-width: 820px) {
  .spt-committee-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 520px) {
  .spt-committee-grid { grid-template-columns: 1fr; gap: 1rem; }
}

.spt-committee-card {
  background: #fff;
  border: 1px solid rgba(34,32,29,.18);
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(0,0,0,.09);
  display: flex;
  flex-direction: column;
  padding: 1.5rem 1.25rem 1.25rem;
  text-align: center;
}

/* Pin the sub-committee membership block to the bottom of the card so the lines
   align across a row regardless of bio length. */
.spt-committee-card__foot {
  margin-top: auto;
}

.spt-committee-card--chair {
  border-top: 3px solid var(--springthorpe-gold, #b58a2b);
}

/*
 * Avatar wrap — plain sizing container, no border or overflow tricks.
 *
 * The gold ring is a box-shadow on the img/initials themselves.
 * box-shadow follows the element's own border-radius:50% so the ring is
 * geometrically perfect with zero gap. Unlike a CSS border, box-shadow does
 * not change the element's layout size so there is nothing for any parent
 * overflow to clip at an awkward edge.
 */
.spt-committee-avatar-wrap {
  height: 110px;
  margin: 0 auto .9rem;
  width: 110px;
}

.spt-committee-avatar-wrap img {
  border-radius: 50%;
  box-shadow: 0 0 0 3px var(--springthorpe-gold, #b58a2b);
  display: block;
  height: 110px !important;
  object-fit: cover;
  object-position: center 20%;
  width: 110px !important;
}

.spt-committee-initials {
  align-items: center;
  background: var(--springthorpe-charcoal, #22201d);
  border-radius: 50%;
  box-shadow: 0 0 0 3px var(--springthorpe-gold, #b58a2b);
  color: var(--springthorpe-gold, #b58a2b);
  display: flex;
  font-size: 1.6rem;
  font-weight: 700;
  height: 110px;
  justify-content: center;
  letter-spacing: .04em;
  width: 110px;
}

.spt-committee-card__name {
  font-size: 1rem;
  font-weight: 700;
  margin-bottom: .2rem !important;
}

/* Post-nominal honours (e.g. OAM) — smaller inline text, baseline-aligned */
.spt-committee-card__name .spt-postnominal {
  font-size: .6em;
  font-weight: 500;
  letter-spacing: .06em;
  vertical-align: baseline;
}

.spt-committee-card__role {
  color: var(--springthorpe-gold, #b58a2b);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .06em;
  margin-bottom: .75rem !important;
  text-transform: uppercase;
}

.spt-committee-card__bio {
  color: var(--springthorpe-muted, #625b52);
  font-size: .88rem;
  line-height: 1.55;
  text-align: left;
}

/* Sub-committee grid */
.spt-subcommittee-grid {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 1.5rem;
}

@media (max-width: 820px) {
  .spt-subcommittee-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 520px) {
  .spt-subcommittee-grid { grid-template-columns: 1fr; gap: .85rem; }
}

.spt-subcommittee-card {
  background: var(--springthorpe-paper, #fbfaf6);
  border-radius: 4px;
  border-top: 3px solid var(--springthorpe-green, #4f6f52);
  padding: 1.1rem 1.25rem;
}

.spt-subcommittee-card h3 {
  color: var(--springthorpe-charcoal, #22201d);
  font-size: .95rem;
  margin-bottom: .5rem !important;
}

.spt-subcommittee-card p {
  color: var(--springthorpe-muted, #625b52);
  font-size: .85rem;
  line-height: 1.5;
  margin-bottom: .6rem !important;
}

.spt-subcommittee-card__members {
  border-top: 1px solid var(--springthorpe-line, rgba(34,32,29,.1));
  color: var(--springthorpe-charcoal, #22201d);
  font-size: .8rem;
  margin-top: .6rem !important;
  padding-top: .6rem;
}

/* Contact block */
.spt-committee-contacts {
  background: #fff;
  border-top: 3px solid var(--springthorpe-gold, #b58a2b);
  margin-top: 1.5rem;
  padding: 1.5rem 1.75rem;
}

.spt-committee-contacts table {
  border-collapse: collapse;
  width: 100%;
}

.spt-committee-contacts td {
  border-bottom: 1px solid var(--springthorpe-line, rgba(34,32,29,.1));
  font-size: .92rem;
  padding: .6rem .5rem;
  vertical-align: top;
}

.spt-committee-contacts td:first-child {
  color: var(--springthorpe-muted, #625b52);
  font-weight: 600;
  padding-right: 1.5rem;
  white-space: nowrap;
  width: 35%;
}

/* Two-card centered variant (used for OCM section) */
.spt-committee-grid--two-up {
  grid-template-columns: repeat(2, minmax(0, 340px));
  justify-content: center;
}

@media (max-width: 640px) {
  .spt-committee-grid--two-up { grid-template-columns: 1fr; }
}


/* Tighten inter-section spacing on the committee page */
.spt-committee-page h2 {
  margin-top: 1.5rem !important;
  margin-bottom: .4rem !important;
}

.spt-committee-page h2:first-child {
  margin-top: 0 !important;
}

/* Prevent paragraph theme styles from bloating card internals */
.spt-committee-card p {
  margin-bottom: 0 !important;
}
.spt-committee-card .spt-committee-card__name  { margin-bottom: .2rem  !important; }
.spt-committee-card .spt-committee-card__role  { margin-bottom: .75rem !important; }
.spt-committee-card .spt-committee-card__bio   { margin-bottom: 0      !important; }

/* Bio is now a div wrapping editor paragraphs — keep them tight and on-style. */
.spt-committee-card .spt-committee-card__bio p {
  font-size: inherit;
  margin: 0 0 .6rem !important;
}
.spt-committee-card .spt-committee-card__bio p:last-child {
  margin-bottom: 0 !important;
}

/* Auto sub-committee membership line at the foot of a tile — a thin rule with a
   small muted line directly beneath, like the sub-committee tiles. */
.spt-committee-card hr.spt-committee-card__rule {
  background: none;
  border: 0;
  border-top: 1px solid rgba(34, 32, 29, .14);
  box-sizing: border-box;
  height: 0;
  margin: .55rem 0 .4rem !important;
  padding: 0 !important;
  width: 100%;
}
.spt-committee-card .spt-committee-card__committees {
  color: #5b6770;
  font-size: .8rem;
  line-height: 1.4;
  margin: 0 !important;
}

/* Committee tile grids rendered by the shortcode. Flex-centred so 1, 2 or 3
   tiles sit centred (not left-aligned with empty columns); larger groups wrap
   and stay centred. Overrides the legacy .spt-committee-grid display:grid. */
.spt-com-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
  justify-content: center;
}
/* Cards are one third of the content width (3 across, two 1.5rem gaps), so a full
   row spans the content area; 1 or 2 tiles stay that same width and centre. */
.spt-com-grid .spt-committee-card {
  box-sizing: border-box;
  flex: 0 1 calc((100% - 3rem) / 3);
  max-width: calc((100% - 3rem) / 3);
}
@media (max-width: 820px) {
  .spt-com-grid .spt-committee-card {
    flex-basis: calc((100% - 1.5rem) / 2);
    max-width: calc((100% - 1.5rem) / 2);
  }
}
@media (max-width: 520px) {
  .spt-com-grid {
    gap: 1rem;
  }
  .spt-com-grid .spt-committee-card {
    flex-basis: 100%;
    max-width: 100%;
  }
}

/* Narrow-viewport padding guard */
@media (max-width: 480px) {
  .spt-committee-page {
    padding-left: .25rem;
    padding-right: .25rem;
  }
}

/* ── Pre-launch status banner ────────────────────────────────────────────── */

.springthorpe-prelaunch-banner {
  background: #3d2d00;
  border-bottom: 1px solid rgba(245, 200, 66, 0.28);
  width: 100%;
  z-index: 9990;
}

.springthorpe-prelaunch-banner__inner {
  align-items: center;
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 1rem;
  margin-inline: auto;
  max-width: var(--springthorpe-shell-max);
  padding-block: 0.6rem;
  padding-inline: max(1.25rem, var(--theme-var-page_fullwide_extra, 60px));
}

.springthorpe-prelaunch-banner__dot {
  animation: springthorpe-prelaunch-pulse 2.4s ease-in-out infinite;
  background: #f5c842;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
  height: 0.5rem;
  width: 0.5rem;
}

@keyframes springthorpe-prelaunch-pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.35; }
}

.springthorpe-prelaunch-banner__text {
  color: rgba(255, 248, 220, 0.88);
  flex: 1 1 0;
  font-size: 0.8rem;
  line-height: 1.4;
  margin: 0;
  min-width: 0;
}

.springthorpe-prelaunch-banner__text strong {
  color: #f5c842;
  font-weight: 700;
}

.springthorpe-prelaunch-banner__action {
  color: rgba(255, 248, 220, 0.72);
  flex-shrink: 0;
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 0.18em;
  white-space: nowrap;
}

.springthorpe-prelaunch-banner__action:hover,
.springthorpe-prelaunch-banner__action:focus {
  color: #ffffff;
}

/* ══════════════════════════════════════════════════════════════════════════════
   Springthorpe Traders Directory
   Cards ([spt_traders]) + detail lightbox (.spt-trader-modal)
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── Shared card base ────────────────────────────────────────────────────────── */

.spt-trader-grid {
  display: grid;
  gap: clamp(1.25rem, 2.5vw, 1.75rem);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.spt-trader-card {
  background: #fff;
  border: 1px solid rgba(34, 32, 29, .14);
  border-radius: 6px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: box-shadow .22s ease, transform .22s ease;
}

.spt-trader-card:hover {
  box-shadow: 0 10px 36px rgba(34, 32, 29, .12);
  transform: translateY(-3px);
}

.spt-trader-card__image {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  position: relative;
}

/* Two-class selector (0,2,0) beats theme's (0,1,1) img resets */
.spt-trader-card__image img,
.spt-trader-card__image .spt-trader-card__main-img-el {
  display: block;
  height: 100%;
  left: 0;
  object-fit: cover;
  object-position: center center;
  position: absolute;
  top: 0;
  transition: transform .4s ease;
  width: 100%;
}

.spt-trader-card:hover .spt-trader-card__image img,
.spt-trader-card:hover .spt-trader-card__image .spt-trader-card__main-img-el {
  transform: scale(1.05);
}

.spt-trader-card__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 1.35rem 1.5rem 1.5rem;
}

.spt-trader-card__tagline {
  color: var(--springthorpe-green, #4f6f52);
  font-size: .72rem;
  font-weight: 780;
  letter-spacing: .09em;
  margin: 0 0 .45rem;
  text-transform: uppercase;
}

.spt-trader-card__name {
  color: var(--springthorpe-charcoal, #22201d);
  font-size: clamp(1.1rem, 1.8vw, 1.35rem);
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.2;
  margin: 0 0 .85rem;
}

.spt-trader-card__address {
  color: var(--springthorpe-muted, #625b52);
  font-size: .875rem;
  margin: -.35rem 0 .85rem;
}

.spt-trader-card__excerpt {
  color: #4a453f;
  flex: 1 1 auto;
  font-size: .9rem;
  line-height: 1.55;
  margin: 0 0 1rem;
}

.spt-trader-card__btn,
.spt-trader-card__overlay-btn {
  align-items: center;
  background: transparent;
  border: 1.5px solid rgba(34, 32, 29, .28);
  border-radius: 4px;
  color: var(--springthorpe-charcoal, #22201d);
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-size: .875rem;
  font-weight: 700;
  gap: .4rem;
  margin-top: auto;
  padding: .55rem 1.1rem;
  text-decoration: none;
  transition: background .16s ease, border-color .16s ease, color .16s ease;
}

.spt-trader-card__btn::after {
  content: '→';
  font-size: .9em;
}

.spt-trader-card__btn:hover,
.spt-trader-card__btn:focus {
  background: var(--springthorpe-green, #4f6f52);
  border-color: var(--springthorpe-green, #4f6f52);
  color: #fff;
}

/* ── V1: Clean cards (default) ───────────────────────────────────────────────── */

.spt-trader-grid--v1 .spt-trader-card {
  border-top: 3px solid transparent;
}

.spt-trader-grid--v1 .spt-trader-card:hover {
  border-top-color: var(--springthorpe-gold, #b58a2b);
}

/* ── V2: Overlay cards ──────────────────────────────────────────────────────── */

.spt-trader-grid--v2 .spt-trader-card__image {
  aspect-ratio: 3 / 4;
}

.spt-trader-card__overlay {
  align-items: flex-start;
  background: linear-gradient(to top, rgba(15, 25, 18, .88) 0%, rgba(15, 25, 18, .15) 60%, transparent 100%);
  bottom: 0;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  justify-content: flex-end;
  left: 0;
  opacity: 0;
  padding: 1.5rem 1.35rem;
  position: absolute;
  right: 0;
  top: 0;
  transform: translateY(6px);
  transition: opacity .25s ease, transform .25s ease;
}

.spt-trader-card:hover .spt-trader-card__overlay,
.spt-trader-card:focus-within .spt-trader-card__overlay {
  opacity: 1;
  transform: translateY(0);
}

.spt-trader-card__overlay-tag {
  color: rgba(255, 255, 255, .75);
  font-size: .72rem;
  font-weight: 780;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.spt-trader-card__overlay-name {
  color: #fff;
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.2;
}

.spt-trader-card__overlay-btn {
  background: #fff;
  border-color: transparent;
  color: var(--springthorpe-charcoal, #22201d);
  margin-top: .65rem;
}

.spt-trader-card__overlay-btn:hover,
.spt-trader-card__overlay-btn:focus {
  background: var(--springthorpe-gold, #b58a2b);
  color: #fff;
}

.spt-trader-grid--v2 .spt-trader-card__body {
  display: none;
}

.spt-trader-card__name--v2 {
  display: none;
}

/* ── V3: Feature list ───────────────────────────────────────────────────────── */

.spt-trader-grid--v3 {
  grid-template-columns: 1fr;
  gap: clamp(1.5rem, 3vw, 2.25rem);
}

.spt-trader-card--v3 {
  align-items: stretch;
  flex-direction: row;
}

/* Left column: stacks main image on top of thumbnail strip */
.spt-trader-card--v3 .spt-trader-card__media {
  display: flex;
  flex: 0 0 clamp(220px, 40%, 360px);
  flex-direction: column;
}

/* Image fills all remaining height in the media column */
.spt-trader-card--v3 .spt-trader-card__image {
  aspect-ratio: auto;
  flex: 1 1 auto;
  min-height: 200px;
}

/* Thumbnail strip — grid fills available width, no scroll */
.spt-trader-card__card-thumbs {
  background: #f2f1ef;
  display: grid;
  flex-shrink: 0;
  gap: 4px;
  grid-auto-rows: 64px;
  grid-template-columns: repeat(auto-fill, minmax(56px, 1fr));
  padding: 6px;
}

.spt-trader-card__card-thumb {
  background: none;
  border: none;
  border-radius: 3px;
  box-shadow: 0 0 0 2.5px transparent;
  cursor: pointer;
  display: block;
  overflow: hidden;
  padding: 0;
  position: relative;
  transition: box-shadow .15s ease;
}

/* Two-class selector (0,2,1) beats theme img resets */
.spt-trader-card__card-thumbs .spt-trader-card__card-thumb img {
  display: block;
  height: 100%;
  left: 0;
  object-fit: cover;
  object-position: center center;
  position: absolute;
  top: 0;
  width: 100%;
}

.spt-trader-card__card-thumb.is-active {
  box-shadow: 0 0 0 2.5px var(--springthorpe-green, #4f6f52);
}

.spt-trader-card__card-thumb:hover,
.spt-trader-card__card-thumb:focus-visible {
  box-shadow: 0 0 0 2.5px rgba(79, 111, 82, .5);
}

/* Right column: content body */
.spt-trader-card--v3 .spt-trader-card__body {
  min-width: 0;
  padding: clamp(1.25rem, 2.5vw, 1.75rem);
}

.spt-trader-card--v3 .spt-trader-card__name {
  font-size: clamp(1.1rem, 2vw, 1.45rem);
}

/* Full description (replaces 22-word excerpt) */
.spt-trader-card__description {
  color: #4a453f;
  flex: 1 1 auto;
  font-size: .9rem;
  line-height: 1.55;
  margin: 0 0 1rem;
}

.spt-trader-card__description p {
  margin: 0 0 .6em;
}

.spt-trader-card__description p:last-child {
  margin-bottom: 0;
}

/* Footer row: pills left (Book Now + socials), View More right */
.spt-trader-card--v3 .spt-trader-card__footer {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  justify-content: space-between;
  margin-top: auto;
  padding-top: .75rem;
}

.spt-trader-card--v3 .spt-trader-card__footer .spt-trader-card__btn {
  flex-shrink: 0;
  margin-top: 0;
}

.spt-trader-card__footer-pills {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
}

/* Book Now pill — filled green, visually distinct from outline social links */
.spt-trader-card__book-pill {
  background: var(--springthorpe-green, #4f6f52);
  border: 1px solid var(--springthorpe-green, #4f6f52);
  border-radius: 100px;
  color: #fff;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .01em;
  padding: .28rem .8rem;
  text-decoration: none;
  transition: background .15s ease, border-color .15s ease;
  white-space: nowrap;
}

.spt-trader-card__book-pill:hover,
.spt-trader-card__book-pill:focus {
  background: var(--springthorpe-gold, #b58a2b);
  border-color: var(--springthorpe-gold, #b58a2b);
  color: #fff;
}

/* Social pills */
.spt-trader-card__socials {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
}

.spt-trader-card__social-link {
  background: transparent;
  border: 1px solid rgba(34, 32, 29, .22);
  border-radius: 100px;
  color: var(--springthorpe-charcoal, #22201d);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .01em;
  padding: .28rem .7rem;
  text-decoration: none;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
  white-space: nowrap;
}

.spt-trader-card__social-link:hover,
.spt-trader-card__social-link:focus {
  background: var(--springthorpe-green, #4f6f52);
  border-color: var(--springthorpe-green, #4f6f52);
  color: #fff;
}

/* ── Mobile ──────────────────────────────────────────────────────────────────── */

@media (max-width: 640px) {
  .spt-trader-card--v3 {
    flex-direction: column;
  }

  .spt-trader-card--v3 .spt-trader-card__media {
    flex: none;
    width: 100%;
  }

  /* Portrait image ratio on mobile stacks nicely */
  .spt-trader-card--v3 .spt-trader-card__image {
    aspect-ratio: 16 / 9;
    flex: none;
    min-height: unset;
  }

  /* Ensure body text doesn't overflow on small screens */
  .spt-trader-card--v3 .spt-trader-card__body {
    min-width: unset;
    width: 100%;
  }

  /* Footer wraps to two rows if needed */
  .spt-trader-card--v3 .spt-trader-card__footer {
    flex-direction: column;
    align-items: flex-start;
    gap: .6rem;
  }

  /* View More right-aligned on mobile */
  .spt-trader-card--v3 .spt-trader-card__footer .spt-trader-card__btn {
    align-self: flex-end;
  }
}

/* ══════════════════════════════════════════════════════════════════════════════
   Trader Detail Modal (.spt-trader-modal)
   ══════════════════════════════════════════════════════════════════════════════ */

.spt-trader-modal {
  bottom: 0;
  display: flex;
  left: 0;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 99990;
}

.spt-trader-modal[hidden] {
  display: none;
}

.spt-trader-modal__backdrop {
  background: rgba(10, 18, 12, .68);
  bottom: 0;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

.spt-trader-modal__dialog {
  animation: spt-trader-modal-in .22s cubic-bezier(.2, 0, .2, 1) both;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 24px 72px rgba(10, 18, 12, .32);
  display: flex;
  flex-direction: column;
  margin: auto;
  max-height: min(90svh, 780px);
  max-width: min(96vw, 920px);
  overflow: hidden;
  position: relative;
  width: 100%;
  z-index: 1;
}

@keyframes spt-trader-modal-in {
  from { opacity: 0; transform: translateY(16px) scale(.97); }
  to   { opacity: 1; transform: translateY(0)    scale(1);   }
}

/* Close button */
.spt-trader-modal__close {
  align-items: center;
  background: rgba(255, 255, 255, .9);
  border: 1px solid rgba(34, 32, 29, .18);
  border-radius: 50%;
  color: #22201d;
  cursor: pointer;
  display: flex;
  height: 32px;
  justify-content: center;
  position: absolute;
  right: .85rem;
  top: .85rem;
  transition: background .16s ease, border-color .16s ease;
  width: 32px;
  z-index: 2;
}

.spt-trader-modal__close:hover,
.spt-trader-modal__close:focus {
  background: #f0f4f0;
  border-color: #b3c7b4;
}

/* Body: two-column gallery + info */
.spt-trader-modal__body {
  display: grid;
  flex: 1 1 auto;
  grid-template-columns: 44% 56%;
  min-height: 0;
  overflow: hidden;
}

/* Gallery column */
.spt-trader-modal__gallery-col {
  background: #f4f6f4;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.spt-trader-modal__main-img {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

.spt-trader-modal__main-img-el {
  display: block;
  height: 100%;
  object-fit: cover;
  transition: opacity .2s ease;
  width: 100%;
}

.spt-trader-modal__thumbs {
  display: flex;
  flex-shrink: 0;
  gap: 4px;
  height: 90px;
  overflow-x: auto;
  scrollbar-width: none;
}

.spt-trader-modal__thumbs::-webkit-scrollbar {
  display: none;
}

.spt-trader-modal__thumb {
  background: none;
  border: none;
  cursor: pointer;
  flex: 1 1 0;
  min-width: 80px;
  overflow: hidden;
  padding: 0;
  position: relative;
  transition: opacity .16s ease;
}

.spt-trader-modal__thumb img {
  display: block;
  height: 100%;
  left: 0;
  object-fit: cover;
  object-position: center center;
  position: absolute;
  top: 0;
  width: 100%;
}

.spt-trader-modal__thumb::after {
  background: rgba(79, 111, 82, .45);
  bottom: 0;
  content: '';
  left: 0;
  opacity: 0;
  position: absolute;
  right: 0;
  top: 0;
  transition: opacity .16s ease;
}

.spt-trader-modal__thumb.is-active::after,
.spt-trader-modal__thumb:hover::after {
  opacity: 1;
}

/* Info column */
.spt-trader-modal__info-col {
  overflow-y: auto;
  padding: clamp(1.5rem, 3vw, 2rem) clamp(1.25rem, 3vw, 1.75rem);
  scroll-behavior: smooth;
}

.spt-trader-modal__tagline {
  color: var(--springthorpe-green, #4f6f52);
  font-size: .72rem;
  font-weight: 780;
  letter-spacing: .09em;
  margin: 0 0 .5rem;
  padding-right: 2.5rem; /* clear close btn */
  text-transform: uppercase;
}

.spt-trader-modal__name {
  color: var(--springthorpe-charcoal, #22201d);
  font-size: clamp(1.3rem, 2.5vw, 1.75rem);
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.15;
  margin: 0 0 1rem;
  padding-right: 2.5rem;
}

.spt-trader-modal__about {
  color: #4a453f;
  font-size: .9375rem;
  line-height: 1.6;
  margin-bottom: 1.25rem;
}

.spt-trader-modal__about p {
  margin-block: 0 .75rem;
}

/* Section label */
.spt-trader-modal__section-label {
  color: var(--springthorpe-muted, #625b52);
  font-size: .68rem;
  font-weight: 780;
  letter-spacing: .09em;
  margin: 0 0 .5rem;
  text-transform: uppercase;
}

/* Hours */
.spt-trader-modal__hours {
  border-top: 1px solid rgba(34, 32, 29, .1);
  margin-bottom: 1.25rem;
  padding-top: 1rem;
}

.spt-trader-modal__hours-list {
  display: grid;
  margin: 0;
}

.spt-trader-modal__hours-row {
  border-top: 1px solid rgba(34, 32, 29, .08);
  display: flex;
  gap: .5rem;
  justify-content: space-between;
  padding: .38rem 0;
}

.spt-trader-modal__hours-row dt {
  color: var(--springthorpe-charcoal, #22201d);
  font-size: .84rem;
  font-weight: 650;
  min-width: 2.2rem;
}

.spt-trader-modal__hours-row dd {
  color: var(--springthorpe-muted, #625b52);
  font-size: .84rem;
  margin: 0;
  text-align: right;
}

.spt-trader-modal__hours-row.is-closed dt,
.spt-trader-modal__hours-row.is-closed dd {
  opacity: .48;
}

/* Contact */
.spt-trader-modal__contact {
  border-top: 1px solid rgba(34, 32, 29, .1);
  margin-bottom: 1rem;
  padding-top: 1rem;
}

.spt-trader-modal__contact-row {
  align-items: baseline;
  display: flex;
  font-size: .9rem;
  gap: .6rem;
  margin-bottom: .45rem;
}

.spt-trader-modal__contact-icon {
  color: var(--springthorpe-green, #4f6f52);
  flex: 0 0 1.1em;
  font-size: .85em;
  text-align: center;
}

.spt-trader-modal__contact-text a {
  color: var(--springthorpe-charcoal, #22201d);
  text-decoration: none;
}

.spt-trader-modal__contact-text a:hover {
  color: var(--springthorpe-green, #4f6f52);
  text-decoration: underline;
}

/* Social links */
.spt-trader-modal__socials {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin-bottom: 1.25rem;
}

.spt-trader-modal__social-link {
  border: 1px solid rgba(34, 32, 29, .22);
  border-radius: 99px;
  color: var(--springthorpe-charcoal, #22201d);
  font-size: .82rem;
  font-weight: 650;
  padding: .28rem .85rem;
  text-decoration: none;
  transition: background .16s ease, border-color .16s ease, color .16s ease;
}

.spt-trader-modal__social-link:hover,
.spt-trader-modal__social-link:focus {
  background: var(--springthorpe-green, #4f6f52);
  border-color: var(--springthorpe-green, #4f6f52);
  color: #fff;
}

/* Book Now button */
.spt-trader-modal__book-btn {
  background: var(--springthorpe-green, #4f6f52);
  border: none;
  border-radius: 4px;
  color: #fff;
  cursor: pointer;
  display: inline-block;
  font: inherit;
  font-size: .9375rem;
  font-weight: 700;
  padding: .7rem 1.5rem;
  text-decoration: none;
  transition: background .16s ease;
}

.spt-trader-modal__book-btn:hover,
.spt-trader-modal__book-btn:focus {
  background: #3f5d43;
  color: #fff;
  text-decoration: none;
}

/* Body scroll lock */
body.spt-trader-modal-open {
  overflow: hidden;
}

/* ── Responsive: stack on mobile ─────────────────────────────────────────────── */

@media (max-width: 600px) {
  .spt-trader-modal__dialog {
    border-radius: 12px 12px 0 0;
    margin: auto 0 0;
    max-height: 92svh;
    max-width: 100%;
  }

  .spt-trader-modal__body {
    grid-template-columns: 1fr;
    overflow-y: auto;
  }

  .spt-trader-modal__gallery-col {
    height: clamp(200px, 50vw, 280px);
    flex-shrink: 0;
  }

  .spt-trader-modal__info-col {
    overflow-y: visible;
  }
}

/* ── Manage Members (Facility Manager front-end CRUD) ─────────────────── */

.springthorpe-members-notice {
  border-radius: var(--springthorpe-radius-control);
  font-size: 0.8rem; /* match the grid text size */
  line-height: 1.4;
  padding: 0.55rem 0.7rem;
}

.springthorpe-members-notice--success {
  background: color-mix(in srgb, var(--springthorpe-color-primary) 12%, transparent);
  color: var(--springthorpe-color-heading);
}

.springthorpe-members-notice--warning {
  background: color-mix(in srgb, #b8860b 16%, transparent);
  color: var(--springthorpe-color-heading);
}

.springthorpe-members-notice--error {
  background: color-mix(in srgb, #b3261e 12%, transparent);
  color: #7a1a14;
}

.springthorpe-members-toolbar {
  align-items: end;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: space-between;
}

.springthorpe-members-search {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.springthorpe-members-search input[type="search"],
.springthorpe-members-search select {
  border: 1px solid var(--springthorpe-color-border);
  border-radius: var(--springthorpe-radius-control);
  font: inherit;
  padding: 0.55rem 0.7rem;
}

.springthorpe-members-toolbar .springthorpe-button,
.springthorpe-members-search .springthorpe-button {
  margin-top: 0;
}

.springthorpe-members-table {
  border-collapse: collapse;
  width: 100%;
}

.springthorpe-members-table th,
.springthorpe-members-table td {
  border-bottom: 1px solid var(--springthorpe-color-border);
  padding: 0.7rem 0.6rem;
  text-align: left;
  vertical-align: top;
}

.springthorpe-members-table th {
  color: var(--springthorpe-color-heading);
  font-size: 0.9rem;
  font-weight: 700;
}

/* Actions cell: keep it a normal table-cell (table-layout: fixed) and right-align
   the "⋯" menu. display:flex here shrank the cell and indented the menu. */
.springthorpe-members-actions {
  text-align: right;
}

.springthorpe-members-delete {
  display: inline;
  margin: 0;
}

.springthorpe-members-action {
  background: none;
  border: 0;
  color: var(--springthorpe-color-primary);
  cursor: pointer;
  font: inherit;
  font-weight: 650;
  padding: 0;
  text-decoration: underline;
}

.springthorpe-members-action--delete {
  color: #b3261e;
}

.springthorpe-members-action--disabled {
  color: var(--springthorpe-color-muted);
  cursor: default;
  text-decoration: none;
}

.springthorpe-members-hint {
  color: var(--springthorpe-color-muted);
  font-size: 0.9rem;
}

.springthorpe-members-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.7rem 1rem;
  align-items: start;
  max-width: 44rem;
}

/* Full-width rows in the two-column form grid. */
.springthorpe-members-field--full,
.springthorpe-members-form .springthorpe-members-submit {
  grid-column: 1 / -1;
}

.springthorpe-members-field {
  border: 0;
  display: grid;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
}

.springthorpe-members-field > label,
.springthorpe-members-field > legend {
  color: var(--springthorpe-color-heading);
  font-weight: 700;
  padding: 0;
}

.springthorpe-members-field input[type="text"],
.springthorpe-members-field input[type="email"],
.springthorpe-members-field input[type="tel"],
.springthorpe-members-field textarea {
  border: 1px solid color-mix(in srgb, var(--springthorpe-color-heading) 22%, transparent);
  border-radius: var(--springthorpe-radius-control);
  box-sizing: border-box;
  font: inherit;
  padding: 0.5rem 0.6rem;
  width: 100%;
}

/* Wrap role/audience checkboxes inline so the fieldsets stay compact. */
.springthorpe-members-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 1.1rem;
}

.springthorpe-members-checks .springthorpe-members-checkbox {
  flex: 0 1 auto;
}

/* Account actions (password reset / 2FA) panel on the edit screen. */
.springthorpe-members-actions-panel {
  border-top: 1px solid var(--springthorpe-color-border);
  margin-top: 1.5rem;
  max-width: 44rem;
  padding-top: 1rem;
}

.springthorpe-members-actions-panel h2 {
  font-size: 1.05rem;
  margin: 0 0 0.2rem;
}

.springthorpe-members-action-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.6rem 0;
}

.springthorpe-members-action-buttons form {
  margin: 0;
}

.springthorpe-members-action-buttons .springthorpe-button {
  margin-top: 0;
}

.springthorpe-members-checkbox {
  align-items: baseline;
  color: var(--springthorpe-color-text);
  display: flex;
  font-weight: 400;
  gap: 0.5rem;
  margin: 0.15rem 0;
}

.springthorpe-members-help {
  color: var(--springthorpe-color-muted);
  display: block;
  font-size: 0.88rem;
}

.springthorpe-members-submit {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.springthorpe-members-submit .springthorpe-button {
  margin-top: 0;
}

.springthorpe-members-danger {
  border: 1px solid color-mix(in srgb, #b3261e 40%, transparent);
  border-radius: var(--springthorpe-radius-control);
  display: grid;
  gap: 0.5rem;
  margin-top: 2rem;
  padding: 1rem 1.1rem;
}

.springthorpe-members-danger h2 {
  color: #7a1a14;
  font-size: 1.1rem;
  margin: 0;
}

.springthorpe-button--danger {
  background: #b3261e;
  margin-top: 0.25rem;
}

.springthorpe-button--danger:hover,
.springthorpe-button--danger:focus {
  background: #8f1e17;
}

@media (max-width: 900px) {
  .springthorpe-members-table thead {
    display: none;
  }

  .springthorpe-members-table,
  .springthorpe-members-table tbody,
  .springthorpe-members-table tr,
  .springthorpe-members-table td {
    display: block;
    width: 100%;
  }

  .springthorpe-members-table tr {
    border-bottom: 2px solid var(--springthorpe-color-border);
    margin-bottom: 0.75rem;
  }

  /* Neutralise the smash theme's per-cell/row backgrounds, which render as staggered
     white patches once the table is stacked. Cards read cleanly on the page background. */
  .springthorpe-members-table tr,
  .springthorpe-members-table td {
    background: transparent !important;
  }

  .springthorpe-members-table td {
    border-bottom: 0;
    display: flex;
    gap: 0.75rem;
    justify-content: space-between;
    padding: 0.35rem 0;
  }

  .springthorpe-members-table td::before {
    color: var(--springthorpe-color-heading);
    content: attr(data-label);
    font-weight: 700;
  }
}

/* ── Manage Members: row "⋯" action menu + pagination ─────────────────── */

.springthorpe-members-toolbar__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.springthorpe-members-actions {
  overflow: visible;
}

.springthorpe-members-menu {
  display: inline-block;
  position: relative;
}

.springthorpe-members-menu > summary {
  align-items: center;
  border-radius: var(--springthorpe-radius-control);
  color: var(--springthorpe-color-heading);
  cursor: pointer;
  display: inline-flex;
  font-size: 1.25rem;
  height: 2rem;
  justify-content: center;
  line-height: 1;
  list-style: none;
  width: 2rem;
}

.springthorpe-members-menu > summary::-webkit-details-marker {
  display: none;
}

.springthorpe-members-menu > summary:hover,
.springthorpe-members-menu > summary:focus {
  background: color-mix(in srgb, var(--springthorpe-color-heading) 8%, transparent);
}

.springthorpe-members-menu[open] > summary {
  background: color-mix(in srgb, var(--springthorpe-color-heading) 12%, transparent);
}

.springthorpe-members-menu__list {
  background: var(--springthorpe-color-surface);
  border: 1px solid var(--springthorpe-color-border);
  border-radius: var(--springthorpe-radius-control);
  box-shadow: 0 8px 24px rgba(34, 32, 29, 0.15);
  display: grid;
  gap: 0.15rem;
  min-width: 9rem;
  padding: 0.3rem;
  position: absolute;
  right: 0;
  top: calc(100% + 0.25rem);
  z-index: 30;
}

.springthorpe-members-menu__item {
  background: none;
  border: 0;
  border-radius: 3px;
  color: var(--springthorpe-color-text);
  cursor: pointer;
  display: block;
  font: inherit;
  padding: 0.5rem 0.6rem;
  text-align: left;
  text-decoration: none;
  width: 100%;
}

.springthorpe-members-menu__item:hover,
.springthorpe-members-menu__item:focus {
  background: color-mix(in srgb, var(--springthorpe-color-primary) 10%, transparent);
}

/* Action-menu items: neutralise the theme's global button styling so the dropdown
   reads as a clean, uniform menu (the Delete <button> was rendering as a big green
   themed button, and links picked up theme colours). */
.springthorpe-members-menu__list .springthorpe-members-menu__item,
.springthorpe-members-menu__list button.springthorpe-members-menu__item {
  align-items: center;
  background: none !important;
  border: 0 !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
  color: var(--springthorpe-color-text) !important;
  display: flex !important;
  font: inherit !important;
  font-weight: 500 !important;
  justify-content: flex-start !important;
  letter-spacing: normal !important;
  margin: 0 !important;
  text-align: left !important;
  text-transform: none !important;
  width: 100% !important;
}
.springthorpe-members-menu__list .springthorpe-members-menu__item:hover,
.springthorpe-members-menu__list .springthorpe-members-menu__item:focus {
  background: color-mix(in srgb, var(--springthorpe-color-primary) 12%, transparent) !important;
}
/* Irreversible actions only (Delete / Report lost) read as a distinct red button —
   soft red fill, red border, red text — held to the SAME treatment on every menu
   (Members, Documents, Access Passes, Profile) and always visible (not hover-only),
   set off from the routine items by a little space above. Reversible actions
   (Deactivate, Link) stay neutral, so red always means "this can't be undone". */
.springthorpe-members-menu__list .springthorpe-members-menu__item--danger,
.springthorpe-members-menu__list button.springthorpe-members-menu__item--danger {
  background: color-mix(in srgb, #b3261e 9%, transparent) !important;
  border: 1px solid color-mix(in srgb, #b3261e 30%, transparent) !important;
  color: #b3261e !important;
  margin-top: 0.3rem !important;
}
.springthorpe-members-menu__list .springthorpe-members-menu__item--danger:hover,
.springthorpe-members-menu__list .springthorpe-members-menu__item--danger:focus {
  background: color-mix(in srgb, #b3261e 18%, transparent) !important;
  color: #b3261e !important;
}

/* Edge-flip: JS adds these when the menu would open past the viewport edge. */
.springthorpe-members-menu__list.is-flip-up {
  bottom: calc(100% + 0.25rem);
  top: auto;
}
.springthorpe-members-menu__list.is-align-left {
  left: 0;
  right: auto;
}

/* Disabled items (e.g. View access history on an unlinked card) read as inert. */
.springthorpe-members-menu__list .springthorpe-members-menu__item:disabled,
.springthorpe-members-menu__list .springthorpe-members-menu__item[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: 0.5;
}
.springthorpe-members-menu__list .springthorpe-members-menu__item:disabled:hover,
.springthorpe-members-menu__list .springthorpe-members-menu__item:disabled:focus {
  background: none !important;
}

/* Comfortable touch targets on coarse pointers (operators on phones/tablets). */
@media (pointer: coarse) {
  .springthorpe-members-menu > summary {
    height: 44px;
    width: 44px;
  }
  .springthorpe-members-menu__list .springthorpe-members-menu__item {
    align-items: center;
    display: flex;
    min-height: 44px;
  }
}

/* POST actions submit a single hidden per-menu form via the button `form=` attribute,
   so every menu item is a uniform direct child (<a>/<button>) — no <form> wrappers to
   pick up the theme's form padding and indent the Deactivate/Delete/Link items. */
.springthorpe-members-menu__form {
  display: none !important;
}

.springthorpe-pass-typeahead {
  position: relative;
}
.springthorpe-pass-typeahead > label {
  display: block;
  margin-bottom: 0.35rem;
}
.springthorpe-pass-typeahead input[type="text"] {
  width: 100%;
}
.springthorpe-pass-typeahead__results {
  background: #fff;
  border: 1px solid var(--springthorpe-color-border);
  border-radius: var(--springthorpe-radius-control, 6px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
  left: 0;
  margin-top: 2px;
  max-height: 15rem;
  overflow-y: auto;
  position: absolute;
  right: 0;
  top: 100%;
  z-index: 40;
}
.springthorpe-pass-typeahead__item {
  background: none;
  border: 0;
  color: var(--springthorpe-color-text);
  cursor: pointer;
  display: block;
  font: inherit;
  padding: 0.5rem 0.6rem;
  text-align: left;
  width: 100%;
}
.springthorpe-pass-typeahead__item:hover,
.springthorpe-pass-typeahead__item:focus {
  background: var(--springthorpe-color-surface, #f4f7f5);
}
.springthorpe-pass-typeahead__empty {
  color: var(--springthorpe-color-muted);
  padding: 0.5rem 0.6rem;
}

/* Key/value table: light row-header cells (was inheriting the theme's dark <th>). */
.springthorpe-passman__refresh th,
.springthorpe-passman__refresh td {
  border-bottom: 1px solid var(--springthorpe-color-border);
  padding: 0.5rem 0.75rem;
}
.springthorpe-passman__refresh th {
  background: var(--springthorpe-color-surface, #f2f5f3) !important;
  color: var(--springthorpe-color-muted) !important;
  font-weight: 600 !important;
  text-align: left;
  text-transform: none !important;
  vertical-align: top;
  white-space: nowrap;
  width: 12rem;
}
.springthorpe-passman__refresh-changes {
  margin: 0.25rem 0 0.5rem 1.25rem;
}
.springthorpe-passman__refresh-changes li {
  margin: 0.15rem 0;
}
.springthorpe-passman__refresh-heading {
  font-size: 1rem;
  margin: 1.25rem 0 0.5rem;
}
/* Recent door-access mini log; denied events highlighted light red. */
.springthorpe-passman__refresh-events {
  font-size: 0.92rem;
}
.springthorpe-passman__refresh-events tr.springthorpe-passman__denied td {
  background: #fceaea !important;
  color: #8a1c17;
}

/* Pin the actions column content hard right. The generic .springthorpe-members-actions
   rule loses to ".springthorpe-members-table td { text-align:left }" on specificity,
   which pushed the "⋯" menu to the left; this wins it back. */
.springthorpe-members-table td.springthorpe-members-actions,
.springthorpe-members-table th.springthorpe-members-col--actions {
  text-align: right;
}
/* Let the kebab dropdown escape the cell — .springthorpe-members-table td sets
   overflow:hidden (more specific than .springthorpe-members-actions), which clipped it. */
.springthorpe-members-table td.springthorpe-members-actions {
  overflow: visible;
}

.springthorpe-members-pagination {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: space-between;
  margin-top: 0.75rem;
}

.springthorpe-members-pagination__summary {
  color: var(--springthorpe-color-muted);
  font-size: 0.9rem;
}

.springthorpe-members-pagination__pages {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

.springthorpe-members-pagination__link {
  border: 1px solid var(--springthorpe-color-border);
  border-radius: var(--springthorpe-radius-control);
  color: var(--springthorpe-color-primary);
  display: inline-flex;
  justify-content: center;
  min-width: 2rem;
  padding: 0.35rem 0.55rem;
  text-decoration: none;
}

.springthorpe-members-pagination__link:hover,
.springthorpe-members-pagination__link:focus {
  background: color-mix(in srgb, var(--springthorpe-color-primary) 10%, transparent);
}

.springthorpe-members-pagination__link.is-current {
  background: var(--springthorpe-color-heading);
  border-color: var(--springthorpe-color-heading);
  color: #ffffff;
}

.springthorpe-members-pagination__gap {
  color: var(--springthorpe-color-muted);
  padding: 0 0.25rem;
}

/* ── Manage Members: compact list (smaller type, full width, sortable) ── */

.springthorpe-members {
  font-size: 0.8rem;          /* ~25% smaller than the page base */
  gap: 0.6rem;
  max-width: none;            /* match the theme content column width */
  width: 100%;
}

/* The WP-CLI-created pages lack ThemeRex's per-page "hide title" meta, so the
   smash theme renders its default dark title band. Suppress it here — the
   shortcode supplies its own title. */
body.springthorpe-manage-members-page .sc_layouts_title,
body.springthorpe-manage-members-page .page_title,
body.springthorpe-fm-documents-page .sc_layouts_title,
body.springthorpe-fm-documents-page .page_title {
  display: none;
}

.springthorpe-members-title {
  background: none;
  color: var(--springthorpe-color-heading);
  font-size: 1.35rem;
  margin: 0 0 0.1rem;
}

.springthorpe-members-back {
  margin: 0;
}

/* Full page width — override .springthorpe-operator-landing's max-width. */
.springthorpe-operator-landing.springthorpe-members {
  max-width: none;
  width: 100%;
}

/* Title left, all controls grouped on the right, on one row. */
.springthorpe-members-bar {
  align-items: center;
  column-gap: 1rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  row-gap: 0.5rem;
}

.springthorpe-members-bar .springthorpe-members-title {
  margin: 0;
}

.springthorpe-members-controls {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.springthorpe-members-search {
  display: flex;
  flex-wrap: nowrap;
  gap: 0.4rem;
}

/* Normalise every control to a 40px row so they align. */
.springthorpe-members .springthorpe-members-bar input[type="search"],
.springthorpe-members .springthorpe-members-bar select,
.springthorpe-members .springthorpe-members-bar .springthorpe-button {
  box-sizing: border-box;
  font-size: 14px;
  height: 40px;
  margin: 0;
}

.springthorpe-members .springthorpe-members-bar .springthorpe-button {
  align-items: center;
  display: inline-flex;
  padding: 0 0.85rem;
}

.springthorpe-members .springthorpe-members-bar input[type="search"] {
  padding: 0 0.6rem;
  width: 15rem;
  max-width: 100%;
}

.springthorpe-members .springthorpe-members-bar select {
  padding: 0 0.5rem;
  width: auto;
  min-width: 9rem;
}

/* Manage Access Passes: collapsible "Access Card Filters" panel (mirrors the
   Documents page's Document Filters, but self-contained in this stylesheet).
   The whole bar is the GET form laid out as two rows; a hidden, unnamed checkbox
   drives the expand/collapse purely in CSS (no JS), and is pre-checked server-side
   when a filter is active so the panel stays open across a filtered reload. */
.springthorpe-passfilters-bar {
  align-items: stretch;
  flex-direction: column;
  gap: 0.35rem;
}
.springthorpe-passfilters-bar__row {
  align-items: center;
  column-gap: 1rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  row-gap: 0.5rem;
}
.springthorpe-passfilters__input {
  height: 1px;
  opacity: 0;
  position: absolute;
  width: 1px;
}
.springthorpe-passfilters__summary {
  align-items: center;
  color: var(--springthorpe-color-primary);
  cursor: pointer;
  display: inline-flex;
  font-size: 12px;
  font-weight: 650;
  gap: 0.35rem;
  white-space: nowrap;
}
.springthorpe-passfilters__chevron {
  height: 1rem;
  transition: transform 150ms ease;
  width: 1rem;
}
.springthorpe-passfilters__input:checked ~ .springthorpe-passfilters-bar__row .springthorpe-passfilters__chevron {
  transform: rotate(180deg);
}
.springthorpe-passfilters__active {
  color: var(--springthorpe-color-muted);
  font-weight: 400;
}
.springthorpe-passfilters__panel {
  border-top: 1px solid var(--springthorpe-color-border);
  display: none;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: 0.2rem;
  padding-top: 0.6rem;
}
.springthorpe-passfilters__input:checked ~ .springthorpe-passfilters__panel {
  align-items: center;
  display: flex;
}
.springthorpe-passfilters__check {
  align-items: center;
  display: inline-flex;
  font-size: 0.9rem;
  gap: 0.4rem;
  white-space: nowrap;
}

/* Search box with an inset magnifying-glass icon that grows to fill the bar, like
   the Documents search — used on Manage Access Passes and Manage Members. */
.springthorpe-passsearch {
  align-items: center;
  display: inline-flex;
  flex: 1 1 18rem;
  min-width: 0;
  position: relative;
}
.springthorpe-passsearch__icon {
  color: var(--springthorpe-color-muted);
  height: 1rem;
  left: 0.65rem;
  pointer-events: none;
  position: absolute;
  width: 1rem;
}
.springthorpe-members .springthorpe-members-bar .springthorpe-passsearch input[type="search"] {
  flex: 1 1 auto;
  min-width: 0;
  padding-left: 2.1rem;
  width: 100%;
}
/* The growing search pushes the other controls to the right (matches the Documents row).
   Members and Access Passes both put their controls in the collapsible filter row. */
.springthorpe-passfilters-bar__row .springthorpe-members-controls {
  flex: 1 1 auto;
  min-width: 0;
}

/* Mobile (<=700px): stack the bar — title, then a full-width search, then the Filters
   toggle + buttons wrap beneath, and the filter panel spans the full width. */
@media (max-width: 700px) {
  .springthorpe-passfilters-bar__row {
    align-items: stretch;
    flex-direction: column;
  }
  .springthorpe-passfilters-bar__row .springthorpe-members-controls {
    width: 100%;
  }
  .springthorpe-passsearch {
    flex-basis: 100%;
  }
  .springthorpe-passfilters__panel {
    width: 100%;
  }
}

/* Respect reduced-motion: don't animate the filter chevron or the tooltip. */
@media (prefers-reduced-motion: reduce) {
  .springthorpe-passfilters__chevron,
  .springthorpe-members-tooltip {
    transition: none !important;
  }
}

/* Slightly smaller, consistent button text across Manage Members, Manage Access
   Passes and Documents (down from 14px). */
body.springthorpe-manage-members-page .springthorpe-members-bar .springthorpe-button,
body.springthorpe-fm-documents-page .springthorpe-members-bar .springthorpe-button {
  font-size: 12px !important;
}

/* Primary <button> actions (e.g. "Add / link a pass") are real <button> elements,
   which the smash theme fills green; force them to the black primary look the anchor
   buttons get, so only the Search submit stays green. */
body.springthorpe-manage-members-page .springthorpe-members-bar button.springthorpe-button:not(.springthorpe-members-search__submit) {
  background: var(--springthorpe-color-heading) !important;
  border: 0 !important;
  border-radius: var(--springthorpe-radius-control) !important;
  box-shadow: none !important;
  color: #ffffff !important;
  font-weight: 650 !important;
  height: 40px !important;
  line-height: 1 !important;
  padding: 0 0.85rem !important;
  text-transform: none !important;
}
body.springthorpe-manage-members-page .springthorpe-members-bar button.springthorpe-button:not(.springthorpe-members-search__submit):hover,
body.springthorpe-manage-members-page .springthorpe-members-bar button.springthorpe-button:not(.springthorpe-members-search__submit):focus {
  background: var(--springthorpe-color-primary-hover) !important;
  color: #ffffff !important;
}

/* Slightly smaller table text across the three operator pages (down from ~16px). */
body.springthorpe-manage-members-page .springthorpe-members-table th,
body.springthorpe-manage-members-page .springthorpe-members-table td,
body.springthorpe-fm-documents-page .springthorpe-members-table th,
body.springthorpe-fm-documents-page .springthorpe-members-table td {
  font-size: 0.85rem;
}

/* The smash theme gives <button type=submit> its own shape; force the Search
   button to match the other (anchor) buttons exactly, keeping only its green. */
body.springthorpe-manage-members-page .springthorpe-members-search__submit,
body.springthorpe-manage-members-page .springthorpe-members-search__submit:hover,
body.springthorpe-manage-members-page .springthorpe-members-search__submit:focus,
body.springthorpe-fm-documents-page .springthorpe-members-search__submit,
body.springthorpe-fm-documents-page .springthorpe-members-search__submit:hover,
body.springthorpe-fm-documents-page .springthorpe-members-search__submit:focus {
  background: #2eac6d !important;
  border: 0 !important;
  border-radius: var(--springthorpe-radius-control) !important;
  box-shadow: none !important;
  color: #ffffff !important;
  font: inherit !important;
  font-size: 14px !important;
  font-weight: 650 !important;
  height: 40px !important;
  letter-spacing: 0 !important;
  line-height: 1 !important;
  padding: 0 0.85rem !important;
  text-transform: none !important;
}

/* Full-width fixed table so Name/Email can ellipsis. */
.springthorpe-members-table {
  table-layout: fixed;
  width: 100%;
}

.springthorpe-members-table th,
.springthorpe-members-table td {
  font-size: 1em;
  overflow: hidden;
  padding: 0.4rem 0.5rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* The smash theme fills table headers dark; reset to a clean header row.
   !important is needed to beat the theme's table-header background/colour. */
body.springthorpe-manage-members-page .springthorpe-members-table thead th,
body.springthorpe-fm-documents-page .springthorpe-members-table thead th,
body.springthorpe-fm-blockout-page .springthorpe-members-table thead th {
  background: transparent !important;
  border-bottom: 1px solid var(--springthorpe-color-border);
  color: var(--springthorpe-color-heading) !important;
}

body.springthorpe-manage-members-page .springthorpe-members-table thead th a,
body.springthorpe-fm-documents-page .springthorpe-members-table thead th a,
body.springthorpe-fm-blockout-page .springthorpe-members-table thead th a {
  color: var(--springthorpe-color-heading) !important;
}

/* Pass grids (FM edit-screen grid + resident /profile/ table) aren't always on a
   page that carries the body class above, so lighten their header directly. */
.springthorpe-passman__grid thead th {
  background: transparent !important;
  border-bottom: 1px solid var(--springthorpe-color-border);
  color: var(--springthorpe-color-heading) !important;
}
/* Smaller 12px type scale for EVERY cell (incl. the muted help spans used for the
   phone number and the "Reported lost" label), and right-align the actions cell. */
.springthorpe-passman__grid th,
.springthorpe-passman__grid td,
.springthorpe-passman__grid td .springthorpe-members-help {
  font-size: 12px;
}
.springthorpe-passman__grid td.springthorpe-members-actions {
  text-align: right;
  white-space: nowrap;
}

.springthorpe-members-table thead th a {
  color: var(--springthorpe-color-heading);
  display: inline-flex;
  gap: 0.2rem;
  text-decoration: none;
}

.springthorpe-members-table thead th a:hover,
.springthorpe-members-table thead th a:focus {
  text-decoration: underline;
}

.springthorpe-members-table thead th.is-sorted a {
  font-weight: 800;
}

/* Column widths (table-layout: fixed). */
.springthorpe-members-col--name    { width: 18%; }
.springthorpe-members-col--email   { width: 22%; }
.springthorpe-members-col--lot     { width: 7%; }
.springthorpe-members-col--phone   { width: 13%; }
.springthorpe-members-col--pass    { width: 16%; }
.springthorpe-members-col--rolesmc { width: 16%; text-align: center; }
.springthorpe-members-col--actions { width: 8%; }

.springthorpe-members-table .springthorpe-members-col--actions {
  overflow: visible;
}

/* Access-card chips: card number in a bordered box, border colour = live status.
   Green = Active · Orange = Expiring within 90 days · Red = Expired / Deactivated / Lost. */
.springthorpe-members-cards {
  white-space: normal;
  overflow: visible;
  line-height: 1.6;
}
.springthorpe-card-chip {
  display: inline-block;
  padding: .12em .5em;
  margin: .1em .25em .1em 0;
  border: 0.5px solid #c3c7cd;
  border-radius: 0;
  background: #fff;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12.5px;
  line-height: 1.35;
  color: #1f2329;
  white-space: nowrap;
}
.springthorpe-card-chip--green  { border-color: #2eac6d; }
.springthorpe-card-chip--orange { border-color: #e0871a; }
.springthorpe-card-chip--red    { border-color: #b32d2e; }
/* Not linked to the access system: no border (the old "Inception" column, folded in). */
.springthorpe-card-chip--unlinked { border-color: transparent; color: var(--springthorpe-color-muted, #6b7280); }
/* Roles / Mailchimp counts: keep the "n | n" on one line with a muted separator. */
.springthorpe-rolesmc {
  align-items: center;
  display: inline-flex;
  flex-wrap: nowrap;
  gap: 0.3rem;
  justify-content: center;
}
.springthorpe-rolesmc__pill {
  background: color-mix(in srgb, var(--springthorpe-color-primary) 12%, #ffffff);
  border: 1px solid color-mix(in srgb, var(--springthorpe-color-primary) 45%, #ffffff);
  border-radius: 999px;
  color: var(--springthorpe-color-heading);
  display: inline-flex;
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1;
  padding: 0.28rem 0.5rem;
  text-transform: uppercase;
  white-space: nowrap;
}
/* Chip is focusable (keyboard/tap access to its detail) — give it a visible ring. */
.springthorpe-card-chip { cursor: default; }
.springthorpe-card-chip:focus-visible {
  outline: 2px solid var(--springthorpe-color-primary, #2eac6d);
  outline-offset: 2px;
}

/* Confirm-delete modal. */
.springthorpe-members-dialog {
  border: 0;
  border-radius: 6px;
  box-shadow: 0 16px 48px rgba(34, 32, 29, 0.3);
  color: var(--springthorpe-color-text);
  font-size: 0.9rem;
  max-width: 26rem;
  padding: 1.25rem;
  width: calc(100% - 2rem);
}

.springthorpe-members-dialog::backdrop {
  background: rgba(0, 0, 0, 0.45);
}

.springthorpe-members-dialog h2 {
  color: #7a1a14;
  font-size: 1.05rem;
  margin: 0 0 0.5rem;
}

.springthorpe-members-dialog__actions {
  align-items: stretch;
  display: flex;
  gap: 0.5rem;
  justify-content: flex-end;
  margin-top: 1rem;
}

/* Keep both dialog buttons the same size (the danger button otherwise inherits
   a top margin + different metrics, rendering taller than Cancel). */
.springthorpe-members-dialog__actions .springthorpe-button {
  box-sizing: border-box;
  font-size: 0.9rem;
  line-height: 1.2;
  margin: 0;
  padding: 0.6rem 1rem;
}

/* Floating tooltip for truncated grid cells + the Mailchimp error button.
   Positioned by JS (below the field) and clamped inside the viewport. */
.springthorpe-members-tooltip {
  position: fixed;
  z-index: 10000;
  max-width: 360px;
  background: var(--springthorpe-color-heading, #22201d);
  color: #ffffff;
  font-size: 0.8rem;
  line-height: 1.45;
  padding: 0.5rem 0.7rem;
  border-radius: 6px;
  box-shadow: 0 8px 24px rgba(34, 32, 29, 0.28);
  white-space: pre-line;
  word-break: break-word;
  pointer-events: none;
  opacity: 0;
  transform: translateY(-2px);
  transition: opacity 120ms ease, transform 120ms ease;
}

.springthorpe-members-tooltip.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* "View error details" trigger inside the Mailchimp warning banner. */
.springthorpe-members-notice__details {
  background: transparent;
  border: 1px solid currentColor;
  border-radius: 4px;
  color: inherit;
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  margin-left: 0.4rem;
  padding: 0.1rem 0.5rem;
  white-space: nowrap;
}

.springthorpe-members-notice__details:hover,
.springthorpe-members-notice__details:focus {
  background: rgba(0, 0, 0, 0.06);
}

.springthorpe-members-dialog--error h2 {
  color: var(--springthorpe-color-heading);
}

.springthorpe-members-error-list {
  margin: 0.5rem 0 0;
  padding-left: 1.1rem;
}

.springthorpe-members-error-list li {
  margin-bottom: 0.35rem;
  word-break: break-word;
}

/* Save-activity log modal. */
.springthorpe-members-dialog--log h2 {
  color: var(--springthorpe-color-heading);
}

.springthorpe-members-dialog--log h3 {
  color: var(--springthorpe-color-heading);
  font-size: 0.8rem;
  letter-spacing: 0.02em;
  margin: 0.85rem 0 0.3rem;
  text-transform: uppercase;
}

.springthorpe-members-log-list {
  margin: 0;
  padding-left: 1.1rem;
}

.springthorpe-members-log-list li {
  margin-bottom: 0.25rem;
  word-break: break-word;
}

.springthorpe-members-log-list li.is-error {
  color: #7a1a14;
  font-weight: 700;
}

.springthorpe-members-log-list li.is-warning {
  color: #8a5a00;
}

/* ── Member import wizard ───────────────────────────────────────────── */
.springthorpe-import-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  list-style: none;
  margin: 0 0 1.1rem;
  padding: 0;
}

.springthorpe-import-steps li {
  background: var(--springthorpe-color-soft, #eef3ee);
  border-radius: 999px;
  color: var(--springthorpe-color-muted, #625b52);
  font-size: 0.8rem;
  font-weight: 700;
  padding: 0.3rem 0.8rem;
}

.springthorpe-import-steps li.is-current {
  background: var(--springthorpe-color-heading, #22201d);
  color: #fff;
}

.springthorpe-import-steps li.is-done {
  background: color-mix(in srgb, var(--springthorpe-color-primary, #4f6f52) 18%, #fff);
  color: var(--springthorpe-color-primary, #4f6f52);
}

.springthorpe-import-panel {
  max-width: 52rem;
}

.springthorpe-import-panel > p {
  margin: 0 0 0.8rem;
}

.springthorpe-import-upload {
  border-top: 1px solid var(--springthorpe-color-border);
  display: grid;
  gap: 0.6rem;
  margin-top: 1rem;
  max-width: 32rem;
  padding-top: 1rem;
}

.springthorpe-import-sample {
  margin: 0.6rem 0 1rem;
  overflow-x: auto;
}

.springthorpe-import-sample .springthorpe-members-table {
  font-size: 0.8rem;
  table-layout: auto;
  width: 100%;
}

.springthorpe-import-sample td,
.springthorpe-import-sample th {
  max-width: 14rem;
}

.springthorpe-import-gap td {
  color: var(--springthorpe-color-muted, #625b52);
  text-align: center;
}

.springthorpe-import-log {
  max-height: 28rem;
  overflow-y: auto;
}

/* Per-row import results (label + grouped detail entries). */
.springthorpe-import-rows {
  list-style: none;
  margin: 0;
  padding: 0;
}

.springthorpe-import-row {
  border-top: 1px solid var(--springthorpe-color-border);
  padding: 0.5rem 0;
}

.springthorpe-import-row__label {
  display: block;
  font-weight: 700;
}

.springthorpe-import-row__label.is-error {
  color: #7a1a14;
}

.springthorpe-import-row__label.is-warning {
  color: #8a5a00;
}

.springthorpe-import-row__label.is-skipped {
  color: var(--springthorpe-color-muted, #625b52);
}

.springthorpe-import-row .springthorpe-members-log-list {
  margin: 0.25rem 0 0;
}

.springthorpe-import-row .springthorpe-members-log-list em {
  color: var(--springthorpe-color-muted, #625b52);
  font-style: normal;
  font-weight: 700;
}

.springthorpe-import-row__label.is-created {
  color: #2eac6d;
}

.springthorpe-import-row__label.is-updated {
  color: var(--springthorpe-color-heading, #22201d);
}

/* Batched import: live progress bar */
.springthorpe-import-run__intro {
  margin-bottom: 1rem;
}

.springthorpe-import-updated {
  border-top: 1px solid color-mix(in srgb, #2eac6d 25%, transparent);
  margin-top: 1.75rem;
  padding-top: 1.5rem;
}

.springthorpe-import-updated .springthorpe-members-table th:first-child,
.springthorpe-import-updated .springthorpe-members-table td:first-child {
  text-align: center;
  width: 2.5rem;
}

.springthorpe-import-updated [data-updated-hint] {
  margin-top: 0.5rem;
}

.springthorpe-import-progress {
  margin: 1rem 0 1.25rem;
}

.springthorpe-import-progress__bar {
  background: color-mix(in srgb, #2eac6d 18%, transparent);
  border-radius: 999px;
  height: 14px;
  overflow: hidden;
  width: 100%;
}

.springthorpe-import-progress__fill {
  background: #2eac6d;
  border-radius: 999px;
  display: block;
  height: 100%;
  transition: width 0.3s ease;
  width: 0;
}

.springthorpe-import-progress__status {
  color: var(--springthorpe-color-heading, #22201d);
  font-weight: 700;
  margin: 0.5rem 0;
}

.springthorpe-import-history {
  margin-top: 1.5rem;
}

.springthorpe-import-pager {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin: 1rem 0;
}

.springthorpe-import-pager span {
  color: var(--springthorpe-color-muted, #625b52);
}

.springthorpe-import-confirm {
  align-items: center;
  display: inline-flex;
  font-weight: 600;
  gap: 0.5rem;
}

@media (max-width: 900px) {
  .springthorpe-members-table th,
  .springthorpe-members-table td {
    overflow: visible;
    white-space: normal;
  }

  .springthorpe-members-col--name,
  .springthorpe-members-col--email,
  .springthorpe-members-col--lot,
  .springthorpe-members-col--phone,
  .springthorpe-members-col--rolesmc,
  .springthorpe-members-col--actions {
    width: auto;
  }
}

/* ── Footer: keep the scroll-to-top button + reCAPTCHA badge off the version ── */

/* Lift the theme's scroll-to-top button so it sits above the footer
   "Private resident portal — Version" line instead of covering it. */
.trx_addons_scroll_to_top,
a.trx_addons_scroll_to_top {
  bottom: 5.5rem !important;
}

/* Hide the Google reCAPTCHA badge (it overlaps the footer version).
   NOTE: Google's terms require the reCAPTCHA attribution text to be shown
   somewhere when the badge is hidden — add that footer line to stay compliant. */
.grecaptcha-badge {
  visibility: hidden !important;
}

/* Booking cancellation confirmation modal (Profile & My Bookings). */
.springthorpe-cancel-modal[hidden] {
  display: none !important;
}
.springthorpe-cancel-modal {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem;
}
.springthorpe-cancel-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(34, 32, 29, 0.55);
}
.springthorpe-cancel-modal__dialog {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 420px;
  background: #ffffff;
  border-radius: 8px;
  padding: 1.5rem 1.6rem 1.4rem;
  box-shadow: 0 12px 40px rgba(34, 32, 29, 0.28);
  font-family: 'DM Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
.springthorpe-cancel-modal__dialog h3 {
  margin: 0 0 0.6rem;
  font-size: 1.25rem;
  color: var(--springthorpe-color-heading, #22201d);
}
.springthorpe-cancel-modal__booking {
  margin: 0 0 0.5rem;
  font-weight: 700;
  color: var(--springthorpe-color-text, #2d2a25);
}
.springthorpe-cancel-modal__warning {
  margin: 0 0 0.5rem;
  font-size: 0.92rem;
  line-height: 1.45;
  color: #8a3a2f;
}
.springthorpe-cancel-modal__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  justify-content: flex-end;
  margin-top: 1.1rem;
}
.springthorpe-cancel-modal__keep,
.springthorpe-cancel-modal__confirm {
  border-radius: var(--springthorpe-radius-control, 4px);
  cursor: pointer;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 700;
  padding: 0.6rem 1.1rem;
}
.springthorpe-cancel-modal__keep {
  background: transparent;
  border: 1px solid var(--springthorpe-color-border, rgba(34, 32, 29, 0.13));
  color: var(--springthorpe-color-text, #2d2a25);
}
.springthorpe-cancel-modal__confirm {
  background: var(--springthorpe-color-primary, #4f6f52);
  border: 1px solid var(--springthorpe-color-primary, #4f6f52);
  color: #ffffff;
}
.springthorpe-cancel-modal__confirm:hover {
  background: var(--springthorpe-color-primary-hover, #3f5d43);
  border-color: var(--springthorpe-color-primary-hover, #3f5d43);
}
body.springthorpe-modal-open {
  overflow: hidden;
}

/* Match the "Upcoming bookings" panel to the "My Details" card:
   soft fill + green top border + padding (same values as .springthorpe-profile-details). */
.springthorpe-profile-bookings {
  background: color-mix(in srgb, var(--springthorpe-color-soft) 72%, #ffffff);
  border-block: 0;
  border-top: 3px solid var(--springthorpe-color-primary);
  padding: 1.15rem;
}

/* Remove the blank space above the first card in each profile-summary column
   (the card keeps its 1.25rem top margin even when it is the column's first child). */
.springthorpe-profile-summary--editable .springthorpe-profile-summary__columns > .wp-block-column > :first-child {
  margin-top: 0;
}
