/*
Theme Name: Cumberland Flux v2 (TT25 Child)
Theme URI: https://cumberlandflux.com/
Description: Cleaned rebuild of the Cumberland Flux child theme for Twenty Twenty-Five. 651 lines of dead CSS removed, editor canvas styled to match the front end, and the colours and gradients the CSS was already using promoted into theme.json so they are pickable. Safe to install alongside the original 1.0.9.
Author: Cumberland Flux LLC
Author URI: https://cumberlandflux.com/
Template: twentytwentyfive
Version: 1.3.0
Text Domain: cumberland-flux-v2
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Tags: block-styles, full-site-editing, two-columns, custom-colors, custom-logo
*/

/* ---------------------------------------------------------------------------
   Cumberland Flux v2 — rebuilt from 1.0.9 on 19 August 2026.

   Rendering is intended to be IDENTICAL to 1.0.9. What changed:

   1. Removed 612 lines (old 858-1475) that the browser never parsed. Two
      unclosed { braces at old lines 864 and 1207 made Chrome discard the whole
      remainder of the file. Verified live: Chrome parsed 124 rules and stopped
      at `.fx-hero-content h1, h2, h3, h4`.
   2. Removed 23 declarations that a later rule with the byte-identical selector
      already overrode, plus 3 rules left empty as a result.
   3. Dropped assets/flux-additions.css from the package — it was never enqueued
      by anything, in any version.

   Verified: all 296 winning declarations across 101 selectors resolve to
   byte-identical values in 1.0.9 and here.

   The originals are archived in Theme-Review/_archive/ — nothing was lost.
   Optional fixes that WOULD change rendering are at the bottom of this file,
   commented out.

   1.2.0 — palette and gradients:
     - 8 colours added to theme.json (20 -> 28) and 16 gradients (6 -> 22).
       Almost all of them were already in this stylesheet as raw literals;
       registering them just makes them reachable from the editor, which
       matters because theme.json sets "custom": false.
     - The 10 .flux-bg-* utilities now reference gradient presets instead of
       redeclaring their hex stops, so the class and the picker cannot drift.
     - 10 of the 12 near-identical white->tint card washes were replaced with
       4 named surface gradients. Maximum drift is 0.02 of alpha. The 2 that
       were left alone are the deliberately lighter frost/aurora layers.
   --------------------------------------------------------------------------- */

/* =========================
   Design tokens
   ========================= */
/* `.is-root-container` is the block editor's canvas root. Listing it here as
   well means these tokens resolve in the editor too, where `:root` may not
   survive WordPress's editor-style scoping. It matches nothing on the front
   end, so this is inert there. */
:root,
.is-root-container{
  /* Typography */
  --flux-font-text: var(--wp--preset--font-family--flux-text, system-ui, -apple-system, "Segoe UI", sans-serif);

  /* Radii */
  --flux-radius-lg: 18px;
  --flux-radius-md: 14px;
  --flux-radius-sm: 12px;

  /* Shadows */
  --flux-shadow-1: 0 10px 24px rgba(0,0,0,.06);
  --flux-shadow-2: 0 16px 44px rgba(0,0,0,.10);

  /* Borders */
  --flux-border-soft: 1px solid rgba(0,0,0,.07);

  /* Spacing */
  --flux-pad-x: clamp(1rem, 3vw, 2rem);
  --flux-pad-y: clamp(1.1rem, 2.2vw, 1.8rem);

  /* Text measure */
  --flux-measure: 62ch;

  /* Warm boutique background glows */
  --flux-warm-paper: rgba(245,247,242,.92);
  --flux-warm-cream: rgba(234,234,228,.82);
  --flux-warm-glow: rgba(255,184,71,.14);
  --flux-teal-glow: rgba(40,175,176,.12);
  --flux-rose-glow: rgba(255,126,142,.10);
}

/* =========================
   Global base
   ========================= */
body{
  font-family: var(--flux-font-text);
  background: none; /* TT25 often paints on .wp-site-blocks instead */
}

/* TT25 / block theme background layer (this is what you SEE) */
.wp-site-blocks{
  background:
    radial-gradient(900px 500px at 12% 10%, var(--flux-teal-glow), rgba(0,0,0,0) 60%),
    radial-gradient(900px 500px at 88% 22%, var(--flux-warm-glow), rgba(0,0,0,0) 62%),
    radial-gradient(900px 500px at 70% 92%, var(--flux-rose-glow), rgba(0,0,0,0) 64%),
    linear-gradient(180deg, var(--flux-warm-paper) 0%, var(--flux-warm-cream) 55%, var(--flux-warm-paper) 100%);
}

/* Text tone (reduces “newspaper” look) */
.wp-site-blocks p{
  color: rgba(30,30,28,.88);
}

/* Small premium cue on headings */
.wp-site-blocks h2{
  letter-spacing: -0.012em;
}

/* Reduce overly wide covers on large screens */
.wp-block-cover.alignfull > .wp-block-cover__inner-container{
  max-width: 1120px;
}

/* =========================
   Buttons
   ========================= */
.wp-block-button .wp-block-button__link{
  transition: background-color 0.16s ease-out, color 0.16s ease-out, box-shadow 0.16s ease-out, transform 0.10s ease-out;
}

/* Fill */
.wp-block-button.is-style-fill .wp-block-button__link{
  background-color: var(--wp--preset--color--fx-primary);
  color: var(--wp--preset--color--fx-white);
  box-shadow: 0 12px 28px rgba(0,0,0,.10);
  border-radius: 999px;
}

.wp-block-button.is-style-fill .wp-block-button__link:hover,
.wp-block-button.is-style-fill .wp-block-button__link:focus-visible{
  background-color: var(--wp--preset--color--fx-secondary);
  transform: translateY(-1px);
  box-shadow: 0 16px 40px rgba(0,0,0,.14);
}

/* Outline */
.wp-block-button.is-style-outline .wp-block-button__link{
  background-color: rgba(255,255,255,0.35);
  color: var(--wp--preset--color--fx-neutral-900);
  border-radius: 999px;
  border: 1px solid rgba(30,30,28,0.18);
  box-shadow: none;
}

.wp-block-button.is-style-outline .wp-block-button__link:hover,
.wp-block-button.is-style-outline .wp-block-button__link:focus-visible{
  border-color: var(--wp--preset--color--fx-primary);
  color: var(--wp--preset--color--fx-primary);
  background-color: rgba(255,255,255,0.55);
}

/* Buttons group gap */
.wp-block-buttons{
  gap: .75rem;
}

/* Consistent, designed focus ring */
:where(a, button, .wp-element-button):focus-visible{
  outline: 3px solid rgba(40,175,176,.35);
  outline-offset: 3px;
  border-radius: 999px;
}

/* =========================
   Flux utilities (core-block friendly)
   ========================= */

/* Readability width 
.flux-measure,
.flux-measure > *{
  max-width: var(--flux-measure);
}
*/
/* Section rhythm */
.flux-section{
  padding: var(--flux-pad-y) var(--flux-pad-x);
}
.flux-stack > * + *{
  margin-top: .85rem;
}
.flux-stack-tight > * + *{
  margin-top: .65rem;
}

/* Eyebrow label */

/* Divider */
.flux-divider{
  height: 1px;
  border: none !important;
}

/* Columns spacing helper */
.wp-block-columns.flux-cols{
  gap: 1.25rem;
}

/* =========================
   Flux surfaces + cards
   ========================= */
.flux-surface{
  background: var(--wp--preset--gradient--fx-surface-medium);
  border: 1px solid rgba(0,0,0,.055);
  border-radius: var(--flux-radius-lg);
  box-shadow: var(--flux-shadow-1), 0 1px 0 rgba(255,255,255,.55) inset;
}

.flux-card{
  background: var(--wp--preset--gradient--fx-surface-strong);
  border: 1px solid rgba(0,0,0,.055);
  border-radius: var(--flux-radius-md);
  box-shadow: 0 12px 26px rgba(0,0,0,.07), 0 1px 0 rgba(255,255,255,.62) inset;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.flux-card:hover{
  transform: translateY(-2px); /* softened from -3px */
  box-shadow: 0 18px 52px rgba(0,0,0,.12), 0 1px 0 rgba(255,255,255,.55) inset;
  border-color: rgba(0,0,0,.07);
}

/* Section surface wrapper (homepage + key pages) */
.flux-section-surface{
  position: relative;
  overflow: hidden;

  border-radius: var(--flux-radius-lg);
  box-shadow: var(--flux-shadow-1), 0 1px 0 rgba(255,255,255,.55) inset;
}

/* Subtle top-light to keep sections from feeling flat */
.flux-section-surface::before{
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: radial-gradient(900px 140px at 20% 0%, rgba(255,255,255,.55), rgba(255,255,255,0) 55%);
  opacity: .6;
}

/* Homepage: tighten long-form rhythm slightly (no margin override; stack owns spacing) */

/* Friendly top ribbon accent (works on cards without media) */
.flux-card::before{
  content: "";
  display: block;
  height: 5px;
  border-radius: 999px;
  background: linear-gradient(90deg,
    rgba(40,175,176,.45) 0%,
    rgba(118,196,132,.45) 50%,
    rgba(255,184,71,.40) 100%);
  margin-bottom: .85rem;
}

/* Disable the ribbon when card has media (stable, editor-driven) */
.flux-card.flux-card--has-media::before{
  display: none;
}

/* Padding utilities */
.flux-pad-lg{ padding: clamp(1.25rem, 2.5vw, 2rem); }
.flux-pad-md{ padding: 1.25rem; }

/* Media tile (for image cards) */
.flux-media{
  border-radius: var(--flux-radius-sm);
  overflow: hidden;
  aspect-ratio: 16 / 10;
  background: rgba(0,0,0,.06);
  box-shadow: 0 14px 34px rgba(0,0,0,.14);
  border: 1px solid rgba(255,255,255,.55);
}

/* If card starts with media, keep spacing tidy */
.flux-card > .flux-media:first-child{
  margin-top: .25rem;
}
.flux-card > .flux-media:first-child ~ *{
  margin-top: .9rem;
}

.wp-block-image img{
    border-radius: var(--flux-radius-lg);
}

/* Image fit */
.flux-media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Card heading/link */
.flux-card h4{
  font-size: 1.08rem;
  line-height: 1.25;
}
.flux-card h4 a{
  color: inherit;
  text-decoration: none;
}
.flux-card h4 a:hover{
  text-decoration: underline;
}

/* Learn-more pill */
.flux-learn a{
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .38rem .68rem;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.08);
  background: var(--wp--preset--gradient--fx-surface-medium);
  text-decoration: none;
  font-weight: 600;
}
.flux-learn a:hover{
  background: var(--wp--preset--gradient--fx-surface-strong);
}

/* Frosted overlay (hero) */
.flux-frost{
  background: linear-gradient(180deg, rgba(245,247,242,.70) 0%, rgba(255,255,255,.54) 100%);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.42);
}

/* =========================
   Your existing fx-card block style (kept, but boutique-tuned)
   Applied via block style: "Flux Card" (is-style-fx-card)
   ========================= */
.wp-block-group.is-style-fx-card,
.wp-block-column.is-style-fx-card{
  border-radius: 1rem;
  padding: 1.5rem;
  border: 1px solid rgba(0,0,0,.055);
  background: var(--wp--preset--gradient--fx-surface-strong);
  box-shadow: 0 12px 26px rgba(0,0,0,.07);
}

.wp-block-group.is-style-fx-card > *:first-child,
.wp-block-column.is-style-fx-card > *:first-child{
  margin-top: 0;
}
.wp-block-group.is-style-fx-card > *:last-child,
.wp-block-column.is-style-fx-card > *:last-child{
  margin-bottom: 0;
}

.wp-block-group.is-style-fx-card:hover,
.wp-block-column.is-style-fx-card:hover{
  box-shadow: 0 18px 52px rgba(0,0,0,.12);
}

/* Legacy class you used earlier */
.fx-event-card{
  border-radius: 1rem;
  padding: 1.5rem;
  border: 1px solid rgba(0,0,0,.055);
  background: var(--wp--preset--gradient--fx-surface-strong);
}

/* =========================
   Header: frosted sticky
   ========================= */
.flux-frosted-header{
  position: sticky;
  top: 0;
  z-index: 1000;

  background: rgba(245,247,242,0.72);
  -webkit-backdrop-filter: blur(14px) saturate(120%);
  backdrop-filter: blur(14px) saturate(120%);

}

.flux-header-row{
  padding: 14px 0;
  gap: 18px;
}

.flux-header-nav{
  flex: 1 1 auto;
  display: flex;
  justify-content: center;
}

.flux-header-cta{
  flex: 0 0 auto;
  gap: 10px;
}

.flux-header-cta .is-style-outline .wp-block-button__link{
  background: rgba(255,255,255,0.35);
  border: 1px solid rgba(30,30,28,0.18);
}

@media (max-width: 900px){
  .flux-header-row{
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .flux-header-nav{
    order: 3;
    flex-basis: 100%;
    justify-content: flex-start;
  }
  .flux-header-cta{
    order: 2;
  }
}

/* =========================
   Gradient utility classes (kept)
   ========================= */
.flux-bg-mist-ivory { background-image: var(--wp--preset--gradient--fx-mist-ivory); }
.flux-bg-ivory-celadon-wash { background-image: var(--wp--preset--gradient--fx-ivory-celadon-wash); }
.flux-bg-fog-blue-paper { background-image: var(--wp--preset--gradient--fx-fog-blue-paper); }
.flux-bg-fern-dust-fade { background-image: var(--wp--preset--gradient--fx-fern-dust-fade); }
.flux-bg-clay-mist { background-image: var(--wp--preset--gradient--fx-clay-mist); }
.flux-bg-stone-celadon { background-image: var(--wp--preset--gradient--fx-stone-celadon); }
.flux-bg-verdigris-air { background-image: var(--wp--preset--gradient--fx-verdigris-air); }
.flux-bg-midnight-teal-bloom { background-image: var(--wp--preset--gradient--fx-midnight-teal-bloom); }
.flux-bg-solar-amber-mist { background-image: var(--wp--preset--gradient--fx-solar-amber-mist); }
.flux-bg-rose-quartz-whisper { background-image: var(--wp--preset--gradient--fx-rose-quartz-whisper); }

/* =========================
   Frost utilities (kept)
   ========================= */
.flux-frost-a{
  background: rgba(255,255,255,0.55);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.35);
  border-radius: 14px;
}
.flux-frost-b{
  background: rgba(245,247,242,0.60);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(124,133,114,0.25);
  border-radius: 14px;
}
.flux-frost-c{
  background: rgba(216,236,231,0.55);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(40,175,176,0.25);
  border-radius: 16px;
}
.flux-frost-d{
  background: rgba(30,30,28,0.55);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 16px;
}

/* =========================
   Mobile comfort
   ========================= */
@media (max-width: 781px){
  main.wp-block-group > * + *{
    margin-top: 1.8rem;
  }
}

/* === How it works: Pillar cards polish === */
.wp-block-columns.flux-cols .flux-card{
  padding: 1.35rem;
  border-radius: 16px;
  background: var(--wp--preset--gradient--fx-surface-strong);
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 12px 28px rgba(0,0,0,.08);
}

/* Give the heading some breathing room and a more premium scale */
.wp-block-columns.flux-cols .flux-card h4{
  margin-top: .15rem;
  margin-bottom: .65rem;
  font-size: 1.05rem;
  line-height: 1.2;
  letter-spacing: -0.01em;
}

/* Make paragraph inside cards slightly tighter for scannability */
.wp-block-columns.flux-cols .flux-card p{
  margin-top: 1ch;
  line-height: 1.6;
}
/* =========================================================
   Cumberland Flux — Homepage Final Polish
   (Hero emphasis, rhythm tightening, hierarchy, header)
   ========================================================= */

/* 1) Hero: slightly stronger than section cards */
.flux-frost{
  border-radius: 22px;
  border-color: rgba(255,255,255,.55);
  box-shadow: 0 28px 90px rgba(0,0,0,.18);
}

/* 2) Tighten vertical rhythm between sections */
.flux-divider{
  margin: clamp(.8rem, 2.1vw, 1.2rem) 0;
}

/* 3) Section card readability & hierarchy */
.flux-section-surface{
  background: var(--wp--preset--gradient--fx-surface-soft);
  border: 1px solid rgba(0,0,0,.045);
}

.flux-section-surface h2{
  font-size: clamp(1.55rem, 2.2vw, 1.85rem);
}

.flux-section-surface p{
  font-size: 1rem;
  line-height: 1.55;
  margin-top: .55rem;
}

/* 4) Optional eyebrow label (use sparingly, consistently) */
.flux-section-surface .flux-eyebrow{
  margin-bottom: .35rem;
  display: block;
  opacity: .75;
}

/* 5) Header polish — align with card language */
.flux-frosted-header{
  border-bottom: 1px solid rgba(30,30,28,0.06);
}

.flux-frosted-header .wp-block-navigation a{
  opacity: .9;
  transition: opacity .15s ease;
}

.flux-frosted-header .wp-block-navigation a:hover{
  opacity: 1;
}
.wp-block-post-title {
  	display: none;
}
/* =========================================================
   Cumberland Flux — Final Homepage Micro-Refinements
   (Alignment, hierarchy, contrast, CTA balance)
   ========================================================= */

/* 1) Lock hero to same optical center as stacked cards */
.flux-frost{
  margin-left: auto;
  margin-right: auto;
}

/* 2) Give page a clear beginning and end
      (subtle emphasis on first + last section cards) */
 .flux-section-surface:first-of-type,
 .flux-section-surface:last-of-type{
  box-shadow: 0 16px 44px rgba(0,0,0,.10);
}

/* 3) Slightly increase body copy contrast (no size change) */
.flux-section-surface p{
  color: rgba(30,30,28,.86);
}

/* 4) Relax secondary CTA so it doesn’t compete with primary */
.wp-block-button.is-style-outline .wp-block-button__link{
  font-weight: 600;
  opacity: .9;
}

.wp-block-button.is-style-outline .wp-block-button__link:hover{
  opacity: 1;
}

/* =========================================================
   Cumberland Flux — Subtle Life & Warmth Pass
   (Micro-variation, texture, human response)
   ========================================================= */

/* 1) Gentle background variation between section cards */
 .flux-section-surface:nth-of-type(odd){
  background: var(--wp--preset--gradient--fx-surface-soft);
}

 .flux-section-surface:nth-of-type(even){
  background: var(--wp--preset--gradient--fx-surface-warm);
}

/* 2) Add subtle hover “breath” to section cards */
 .flux-section-surface{
  transition: transform .25s ease, box-shadow .25s ease;
}

 .flux-section-surface:hover{
  transform: translateY(-2px);
  box-shadow: 0 18px 52px rgba(0,0,0,.12);
}

/* 3) Introduce a soft ambient divider between narrative sections */
 .flux-divider{
  background: linear-gradient(
    90deg,
    rgba(0,0,0,0) 0%,
    rgba(40,175,176,.25) 50%,
    rgba(0,0,0,0) 100%
  );
  opacity: .6;
}

/* 4) Slight warmth bump on headings for human tone */
 h2{
  color: rgba(30,30,28,.92);
}

/* 5) Make the page feel less static on large screens */
@media (min-width: 900px){
   .flux-section-surface{
    padding-left: clamp(1.2rem, 2vw, 1.6rem);
    padding-right: clamp(1.2rem, 2vw, 1.6rem);
  }
}
/* =========================================================
   Hero color accent — subtle aurora wash (recommended)
   ========================================================= */

/* Make sure the hero can hold a background layer */
.flux-frost{
  position: relative;
  overflow: hidden;
}

/* Soft, brand-tinted glows that stay very light */
.flux-frost::after{
  content: "";
  position: absolute;
  inset: -40px;
  pointer-events: none;
  z-index: 0;

  background:
    radial-gradient(520px 260px at 18% 18%, rgba(40,175,176,.18), rgba(0,0,0,0) 62%),
    radial-gradient(520px 260px at 82% 22%, rgba(255,184,71,.16), rgba(0,0,0,0) 62%),
    radial-gradient(560px 300px at 72% 92%, rgba(255,126,142,.12), rgba(0,0,0,0) 66%);
  opacity: .9;
}

/* Keep hero content above the glow layer */
.flux-frost > *{
  position: relative;
  z-index: 1;
}
/* =========================================================
   Hero aurora — mobile refinement
   ========================================================= */

/* Slightly soften the glow on small screens */
@media (max-width: 780px){
  .flux-frost::after{
    opacity: .65;
    background:
      radial-gradient(420px 220px at 20% 12%, rgba(40,175,176,.16), rgba(0,0,0,0) 64%),
      radial-gradient(420px 220px at 80% 18%, rgba(255,184,71,.14), rgba(0,0,0,0) 64%);
  }
}
/* Legacy alias so older pages match new spacing */
.fx-section-pad{ padding: var(--flux-pad-y) var(--flux-pad-x); }

/* === Flux: Policy / Expectations pages === */

.flux-eyebrow{
  display: block;
  margin-bottom: .35rem;
  font-size: .78rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: 600;
  opacity: .75;
}

/* Slightly tighten long policy stacks */
.flux-section-surface{
  padding: clamp(1.1rem, 2vw, 1.4rem);
}

/* Headings inside policy cards */
.flux-section-surface h2{
  margin-top: 0;
  margin-bottom: .45rem;
}
/* Ensure columns stretch to equal height */
.wp-block-columns.flux-cols {
  align-items: stretch;
}

/* Make cards fill the column height */
.wp-block-columns.flux-cols .wp-block-column {
  display: flex;
}

.wp-block-columns.flux-cols .flux-card {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.wp-block-columns.flux-cols .flux-card::before {
  margin-bottom: 0.75rem;
}
 .fx-section-pad + .fx-section-pad {
  margin-top: clamp(2rem, 4vw, 3rem);
}
.flux-card.is-wide,
.fx-wide-card {
  background: linear-gradient(
    180deg,
    rgba(245,247,242,.95) 0%,
    rgba(234,234,228,.85) 100%
  );
}
.flux-card h3 {
  letter-spacing: -0.01em;
}
.flux-quote p { margin: 0; }
/* Intentional quote callout */
.wp-block-quote {
  position: relative;
  margin: 1.25rem 0;
  padding: 1.1rem 1.25rem 1.1rem 1.75rem;
  background: linear-gradient(
    180deg,
    rgba(255,255,255,0.65) 0%,
    rgba(245,247,242,0.55) 100%
  );
  border-radius: 14px;
  box-shadow: 0 8px 22px rgba(0,0,0,0.06);
}

/* Soft accent bar on the left */
.wp-block-quote::before {
  content: "";
  position: absolute;
  left: 0.65rem;
  top: 0.9rem;
  bottom: 0.9rem;
  width: 4px;
  border-radius: 999px;
  background: linear-gradient(
    180deg,
    rgba(40,175,176,0.6),
    rgba(255,184,71,0.55)
  );
}

/* Quote text tone */
.wp-block-quote p {
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.5;
  font-weight: 500;
  color: rgba(30,30,28,0.85);
}
/* Quote wrapper — makes quotes intentional, not floaty */
/* Quote wrapper — intentional breathing space */
.flux-quote-wrap{
  margin: clamp(.9rem, 1.6vw, 1.25rem) auto;
}

/* Quote — still calm, but anchored */
.flux-quote{
  padding: .75rem 1rem;
  background: linear-gradient(
    180deg,
    rgba(255,255,255,.72) 0%,
    rgba(245,247,242,.62) 100%
  );
  border-radius: 10px;
  font-style: italic;
  font-size: .95rem;
  box-shadow: 0 6px 18px rgba(0,0,0,.06);
}

/* Kill Gutenberg defaults */
.flux-quote.wp-block-quote{
  margin: 0;
}
.flux-quote {
  border-left: 4px solid var(--fx-accent-soft);
  padding-left: 1rem;
  margin: 0;
}

.flux-quote::before {
  content: none;
}

/* remove card accent bar just for quote cards */
.flux-card:has(.flux-quote) {
  --flux-card-accent: none;
}
/* =========================================================
   TEC Venue Map — allow full-width when alone
   ========================================================= */

.tribe-events .tribe-events-venue-map{
  max-width: 100%;
}

.tribe-events .tribe-events-venue-map iframe{
  width: 100%;
  min-height: 320px;
}

/* If map sits inside a flex/grid wrapper, force it to span */
.tribe-events .tribe-events-venue-map,
.tribe-events .tribe-events-venue-map-wrap{
  flex: 1 1 100%;
}
.tribe-events .tribe-events-venue-map iframe{
  border-radius: 12px;
  box-shadow: 0 10px 24px rgba(0,0,0,.08);
}
/* -------------------------------------------------
   Flux Hero — Text Color Treatment
   Ensures readable, white-leaning text over images
-------------------------------------------------- */

.fx-hero-scrim {
  color: rgba(255, 255, 255, 0.88);
}

/* Headings */
.fx-hero-scrim h1,
.fx-hero-scrim h2,
.fx-hero-scrim h3 {
  color: rgba(255, 255, 255, 0.96);
}

/* ===========================================================================
   OPTIONAL FIXES — all commented out. Rendering is unchanged unless you
   uncomment. Enable them one at a time while testing.
   =========================================================================== */

/* --- 1. Restore the accent bar on quote callouts -------------------------
   The last `.flux-quote` rule in this file sets:
       border-left: 4px solid var(--fx-accent-soft);
   `--fx-accent-soft` is defined nowhere and has no fallback, so the whole
   shorthand goes invalid-at-computed-value-time and border-left-style resolves
   to `none`. Result: quotes render with no left bar at all, and this silently
   overrides a working fx-primary bar declared earlier.

   Uncomment to give the token a value and bring the bar back. Swap in
   fx-primary instead of fx-blue-mist if you want it stronger. */

/*
:root {
  --fx-accent-soft: var(--wp--preset--color--fx-blue-mist);
}
*/


/* --- 2. White headings on image heroes -----------------------------------
   Old line 860 opened this rule and never gave it a body — that unclosed brace
   is what killed the rest of the 1.0.9 stylesheet. Judging by the rule directly
   above it (.fx-hero-scrim h1-h3), this is what it was reaching for. It has
   never rendered, so treat it as new. */

/*
.fx-hero-content h1,
.fx-hero-content h2,
.fx-hero-content h3,
.fx-hero-content h4 {
  color: rgba(255, 255, 255, 0.96);
}
*/


/* =========================================================
   The Events Calendar — token bridge
   =========================================================

   TEC builds every component from its own custom properties. Rather than
   fighting each component with !important, remap those properties onto Flux
   tokens once, here. Buttons, links, accents, icons and the date marks all
   follow, at normal specificity.

   Scoped to .tribe-common so nothing leaks outside the calendar views.
   ========================================================= */
.tribe-common{
  --tec-color-accent-primary:        var(--wp--preset--color--fx-primary);
  --tec-color-accent-primary-hover:  var(--wp--preset--color--fx-secondary);
  --tec-color-accent-primary-active: var(--wp--preset--color--fx-secondary);
  --tec-color-button-primary:        var(--wp--preset--color--fx-primary);

  --tec-color-link-accent:           var(--wp--preset--color--fx-primary);
  --tec-color-link-accent-hover:     var(--wp--preset--color--fx-secondary);
  --tec-color-link-primary:          var(--wp--preset--color--fx-neutral-900);

  --tec-color-text-primary:          var(--wp--preset--color--fx-neutral-900);
  --tec-color-text-event-date:       var(--wp--preset--color--fx-neutral-700);
  --tec-color-border-default:        rgba(0,0,0,.12);

  --tec-border-radius-default:       var(--flux-radius-sm);
  --tec-font-family-sans-serif:      var(--flux-font-text);
}

/* "Subscribe to calendar" — TEC ships it as a full-width slab.
   Note the class is .tribe-common-c-btn-border, NOT .tribe-common-c-btn, so
   the general TEC button overrides never reached it. Three classes deep to
   clear TEC's own .tribe-common .tribe-common-c-btn-border rule without
   resorting to !important. */
.tribe-common .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button{
  width: auto;
  border-radius: 999px;
  padding: .7rem 1.4rem;
  background: rgba(255,255,255,.6);
  border: 1px solid rgba(0,0,0,.12);
  box-shadow: var(--flux-shadow-1);
  transition:
    background-color .16s ease-out,
    border-color .16s ease-out,
    box-shadow .16s ease-out;
}
.tribe-common .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:hover{
  background: var(--wp--preset--color--fx-white);
  border-color: var(--wp--preset--color--fx-primary);
  box-shadow: var(--flux-shadow-2);
}

/* Uncomment to centre it under the Previous / Today / Next row instead of
   leaving it aligned with the card rhythm.
.tribe-events-view .tribe-events-c-subscribe-dropdown{
  display: flex;
  justify-content: center;
}
*/


/* =========================================================
   The Events Calendar — patches merged from FluentSnippets
   =========================================================
   Moved in from the FluentSnippets plugin on 2026-08-19, unchanged apart from
   the three fixes noted below. Once this is live, DELETE the FluentSnippets
   entry — running both means two copies of the same rules.

   Load order checked on the live site before merging:
     theme style.css     index 38
     FluentSnippets      index 45
     TEC common-full     index 53
     TEC views-full      index 54
   Both the theme and the snippet loaded ahead of TEC either way, so this block
   never won on source order — it wins on !important and specificity. Moving it
   from 45 to 38 is order-neutral. Nothing in between targets TEC selectors.

   That is also why the !important is still here. It is holding the line
   against TEC's own stylesheets, which load last. Do not strip it casually.

   Fixed on the way in:
     - .flx-event-time p had `letter-spacing!important:` and
       `line-height!important:` — !important on the wrong side of the colon,
       so both declarations were invalid and silently dropped.
     - --wp--preset--color--charcoal-slate is a retired slug that was falling
       through to its #1E1E1C fallback; now fx-neutral-900.
     - #tribe-tickets__tickets-form was missing a closing semicolon.

   TRADEOFF: this now applies under this theme only. If you ever reactivate
   cumberland-flux 1.0.9, the events pages lose all of it at once. That is the
   one thing the plugin was buying you.

   NOTE: you have both `.fx-event-time-date` and `.flx-event-time` classes in
   play (fx- vs flx-). Not a bug, but easy to mistype later.
   ========================================================= */

/* REVIEW: hardcoded ticket post IDs. When these events roll off and you
   create new ones, this rule silently stops hiding anything and the new
   tickets will show whatever this was suppressing. */
#tribe-block-tickets-item-1649,
#tribe-block-tickets-item-1650,
#tribe-block-tickets-item-1651{
    display:none
}

/* REVIEW: this depends on TEC's exact wrapper nesting. Any TEC update that
   adds or removes a div breaks it silently. The class-based rules near the
   bottom of this file do a similar job more robustly. */
body > div.wp-site-blocks > div > div > div > section > ul > li.tribe-common-g-row.tribe-events-calendar-list__event-row > div > article > div.tribe-events-calendar-list__event-details.tribe-common-g-col{
	padding-bottom:1.5em!important;
	padding-left:1.5em!important;
	padding-right:1.5em!important;
}

.flx-event-time span.tribe-events-schedule__separator.tribe-events-schedule__separator--time,
.flx-event-time span.tribe-events-schedule__time.tribe-events-schedule__time--end{
    display: none;
}

/* FIXED: the last two declarations were `letter-spacing!important:` and
   `line-height!important:` — invalid property names, silently dropped. */
.flx-event-time p{
    font-family: var(--wp--preset--font-family--flux-text)!important;
    font-weight: 700!important;
    letter-spacing: -0.1px !important;
    line-height: 1.2 !important;
}

/* ==========================================================
   Cumberland Flux — TEC Event Links + RSVP blend (light touch)
   Scope: single event pages
   ========================================================== */
/* --- A) Make TEC "Event Links" look like Flux pills ------------------ */
/* Container spacing so it feels intentional */
.single-tribe_events .tribe-block__event-links{
  margin-top: .75rem;
}
/* The visible "Add to Calendar" trigger */
/* FIXED: charcoal-slate is a retired slug; now fx-neutral-900. */
.single-tribe_events .tribe-events-c-subscribe-dropdown__button,
.single-tribe_events .tribe-block__event-links a.tribe-common-c-btn,
.single-tribe_events .tribe-block__event-links .tribe-common-c-btn{
  border-radius: 999px !important;
  padding: .62rem 1rem !important;
  border: 1px solid rgba(30,30,28,.14) !important;
  background: rgba(245,247,242,.70) !important;
  color: var(--wp--preset--color--fx-neutral-900, #1E1E1C) !important;
  box-shadow: 0 10px 22px rgba(30,30,28,.06);
  font-weight: 650;
}
/* Hover/focus */
.single-tribe_events .tribe-events-c-subscribe-dropdown__button:hover,
.single-tribe_events .tribe-block__event-links a.tribe-common-c-btn:hover,
.single-tribe_events .tribe-block__event-links .tribe-common-c-btn:hover{
  background: rgba(245,247,242,.88) !important;
  border-color: rgba(30,30,28,.22) !important;
}
/* The little calendar icon (keep it subtle and on-brand) */
.single-tribe_events .tribe-events-c-subscribe-dropdown__button-icon,
.single-tribe_events .tribe-common-c-svgicon{
  opacity: .85;
}
/* Dropdown panel */
.single-tribe_events .tribe-events-c-subscribe-dropdown__content{
  border: 1px solid rgba(30,30,28,.14);
  border-radius: 14px;
  background: rgba(245,247,242,.96);
  box-shadow: 0 18px 44px rgba(30,30,28,.14);
  padding: .4rem;
}
/* Dropdown items */
.single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a{
  border-radius: 12px;
  padding: .55rem .7rem;
  text-decoration: none;
}
.single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a:hover{
  background: rgba(30,30,28,.04);
}
/* --- B) RSVP / Tickets: blend with Flux surfaces (no redesign) ------- */
/* Wrap + rhythm */
.single-tribe_events .tribe-tickets__tickets-form,
.single-tribe_events .tribe-tickets__rsvp-form,
.single-tribe_events .tribe-block__tickets{
  border: 1px solid rgba(30,30,28,.12);
  border-radius: 16px;
  background: rgba(245,247,242,.78);
  box-shadow: 0 10px 26px rgba(30,30,28,.06);
  padding: 1.05rem 1.1rem;
}
/* Field backgrounds and corners */
.single-tribe_events .tribe-tickets__tickets-form input[type="text"],
.single-tribe_events .tribe-tickets__tickets-form input[type="email"],
.single-tribe_events .tribe-tickets__tickets-form input[type="tel"],
.single-tribe_events .tribe-tickets__tickets-form input[type="number"],
.single-tribe_events .tribe-tickets__tickets-form select,
.single-tribe_events .tribe-tickets__tickets-form textarea,
.single-tribe_events .tribe-tickets__rsvp-form input[type="text"],
.single-tribe_events .tribe-tickets__rsvp-form input[type="email"],
.single-tribe_events .tribe-tickets__rsvp-form input[type="tel"],
.single-tribe_events .tribe-tickets__rsvp-form input[type="number"],
.single-tribe_events .tribe-tickets__rsvp-form select,
.single-tribe_events .tribe-tickets__rsvp-form textarea{
  border-radius: 12px;
  border: 1px solid rgba(30,30,28,.14);
  background: rgba(255,255,255,.88);
}
/* Labels: tighten + match Flux tone */
.single-tribe_events .tribe-tickets__tickets-form label,
.single-tribe_events .tribe-tickets__rsvp-form label{
  font-weight: 650;
  color: rgba(30,30,28,.78);
}
/*---------------*/
/* =========================
   Tribe / TEC buttons → Flux buttons (forced)
   =========================

   REVIEW: as of theme v1.2.1, style.css maps TEC's own --tec-* custom
   properties onto Flux tokens, which covers the colour half of this block
   without !important. These rules still do real work (pill radius, width,
   shadows, transitions) and win where they overlap, so they are staying.
   If you ever want to slim this file down, this is the section to look at
   first — but test on staging, not live.
   ========================= */
/* Base button behavior */
.single-tribe_events
:is(
  .tribe-common-c-btn,
  .tribe-events-c-subscribe-dropdown__button,
  .tribe-tickets__rsvp-form button
){
  font-family: var(--flux-font-text) !important;
  border-radius: 999px !important;
  transition:
    background-color 0.16s ease-out,
    color 0.16s ease-out,
    box-shadow 0.16s ease-out,
    transform 0.10s ease-out !important;
}
/* Primary / filled buttons */
.single-tribe_events
:is(
  .tribe-common-c-btn--primary,
  .tribe-tickets__rsvp-form button
){
  background-color: var(--wp--preset--color--fx-primary) !important;
  color: var(--wp--preset--color--fx-white) !important;
  box-shadow: 0 12px 28px rgba(0,0,0,.10) !important;
  border: none !important;
}
.single-tribe_events
:is(
  .tribe-common-c-btn--primary:hover,
  .tribe-common-c-btn--primary:focus-visible,
  .tribe-tickets__rsvp-form button:hover,
  .tribe-tickets__rsvp-form button:focus-visible
){
  background-color: var(--wp--preset--color--fx-secondary) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 16px 40px rgba(0,0,0,.14) !important;
}
/* Secondary / outline-style buttons */
.single-tribe_events .tribe-common-c-btn--secondary,
.single-tribe_events .tribe-events-c-subscribe-dropdown__button{
  background-color: rgba(255,255,255,0.35) !important;
  color: var(--wp--preset--color--fx-neutral-900) !important;
  border: 1px solid rgba(30,30,28,0.18) !important;
  box-shadow: none !important;
}
.single-tribe_events
:is(
  .tribe-common-c-btn--secondary:hover,
  .tribe-common-c-btn--secondary:focus-visible,
  .tribe-events-c-subscribe-dropdown__button:hover,
  .tribe-events-c-subscribe-dropdown__button:focus-visible
){
  background-color: rgba(255,255,255,0.55) !important;
  color: var(--wp--preset--color--fx-primary) !important;
  border-color: var(--wp--preset--color--fx-primary) !important;
}
/* Focus ring */
/* REVIEW: rgba(40,175,176,…) is the retired verdigris. It now has a token
   (fx-verdigris) if you ever want it token-driven, or swap to fx-primary
   to match the rest of the UI. Left as-is — changing it is visible. */
.single-tribe_events
:is(a, button, .tribe-common-c-btn):focus-visible{
  outline: 3px solid rgba(40,175,176,.35) !important;
  outline-offset: 3px !important;
  border-radius: 999px !important;
}
/* TEC primary button override → Flux pill button */
/* REVIEW: this one is unscoped — it hits list view, month view and checkout,
   not just single events. width:100% in particular is worth a look if any
   TEC button ever seems oddly stretched. */
.tribe-common .tribe-common-c-btn,
.tribe-common a.tribe-common-c-btn,
.tribe-common button.tribe-common-c-btn{
  background-color: var(--wp--preset--color--fx-primary) !important;
  border-radius: 999px !important;
  color: var(--wp--preset--color--fx-white) !important;
  /* Keep TEC spacing, but you can swap to your button padding if desired */
  padding: 11px 20px !important;
  text-align: center !important;
  transition:
    background-color 0.16s ease-out,
    color 0.16s ease-out,
    box-shadow 0.16s ease-out,
    transform 0.10s ease-out !important;
  /* TEC sets 100%; choose what you want */
  width: 100% !important;
  box-shadow: 0 12px 28px rgba(0,0,0,.10) !important;
  border: none !important;
}
/* Hover / focus */
.tribe-common .tribe-common-c-btn:hover,
.tribe-common a.tribe-common-c-btn:hover,
.tribe-common button.tribe-common-c-btn:hover,
.tribe-common .tribe-common-c-btn:focus-visible,
.tribe-common a.tribe-common-c-btn:focus-visible,
.tribe-common button.tribe-common-c-btn:focus-visible{
  background-color: var(--wp--preset--color--fx-secondary) !important;
  color: var(--wp--preset--color--fx-white) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 16px 40px rgba(0,0,0,.14) !important;
  outline: 3px solid rgba(40,175,176,.35) !important;
  outline-offset: 3px !important;
  border-radius: 999px !important;
}
div.tribe-tickets__tickets-item-extra > div.tribe-common-b3.tribe-tickets__tickets-item-extra-available{
    display: none;
}
.tec-tickets-commerce-checkout-cart__coupons-add-link {
    display:none;
}
#wp--skip-link--target .tribe-tickets__commerce-checkout-header-links a{
color: var(--wp--preset--color--fx-primary);
    text-decoration: none!important;
    border:none;
}
#wp--skip-link--target .tribe-common-anchor-alt {
color: var(--wp--preset--color--fx-primary);
    text-decoration: none!important;
    border:none;
}
/* FIXED: was missing its closing semicolon. */
#tribe-tickets__tickets-form{
    max-width: 100%;
}
#tribe-events-footer{
    margin-top: 1.7vw;
}
div.tribe-events-calendar-list__event-details.tribe-common-g-col{
    margin-left: .5rem;
    margin-bottom: .6rem;
}
.tribe-events-calendar-list__event-details{
    padding-top: .5em!important;
}
.tribe-events-single-event-title,
.tribe-events-back
{display:none}
.footer-icon-list{
    gap:.6rem;
}
/* Small tweaks to improve footer and map display */
.footer-icon-list div{
    gap:.6rem;
}
#walking_map{
    padding: 0;
}
.ai-summarization-summary{
    display: none;
}
/* ==========================================================================
   Cumberland Flux — Contribute form (Fluent Forms + inline Stripe)
   Paste into Appearance → Customize → Additional CSS.
   Replaces the earlier card-field-only snippet — this file contains both.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Brand the Fluent Forms accent variable
   Fluent Forms ships `--fluentform-primary: #1a7efb` on :root and reuses it
   for the submit button and field focus states. Re-declaring it at form
   scope is cleaner than out-specifying each rule, and it survives a change
   to the form ID (its own rules are written as `form.fluent_form_7 …`).
   -------------------------------------------------------------------------- */
.fluentform,
.frm-fluent-form {
  --fluentform-primary: var(--wp--preset--color--fx-primary, hsl(192, 72%, 32%));
}

/* --------------------------------------------------------------------------
   2. Stripe card field
   -------------------------------------------------------------------------- */

/* Soft container so the payment step reads as its own quiet card */
.fluentform .ff_pay_inline_stripe {
  background: linear-gradient(
    180deg,
    hsl(190 38% 82% / 0.20),
    hsl(210 20% 96% / 0.55)
  );
  border: 1px solid hsl(190 38% 82% / 0.95); /* fx-blue-mist */
  border-radius: 14px;
  padding: 14px;
}

/* Quiet reassurance line under the field */
.fluentform .ff_pay_inline_stripe::after {
  content: "Card details are entered securely through Stripe.";
  display: block;
  margin-top: 0.65rem;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--wp--preset--color--fx-neutral-500, hsl(210, 7%, 46%));
}

/* The card input itself — taller, white, brand-tinted border */
.fluentform .ff_stripe_card_element {
  background: var(--wp--preset--color--fx-white, hsl(0, 0%, 100%));
  border: 2px solid hsl(192 72% 32% / 0.35);
  border-radius: 10px;
  padding: 17px 16px;
  min-height: 58px;
  box-shadow: 0 1px 2px hsl(210 10% 12% / 0.05);
  transition: border-color 0.18s ease, box-shadow 0.18s ease;
}

.fluentform .ff_stripe_card_element:hover {
  border-color: hsl(192 72% 32% / 0.55);
}

.fluentform .ff_stripe_card_element.StripeElement--focus {
  border-color: var(--wp--preset--color--fx-primary, hsl(192, 72%, 32%));
  box-shadow: 0 0 0 4px hsl(192 72% 32% / 0.15);
}

.fluentform .ff_stripe_card_element.StripeElement--invalid {
  border-color: var(--wp--preset--color--fx-error, hsl(4, 84%, 55%));
  box-shadow: 0 0 0 4px hsl(4 84% 55% / 0.12);
}

/* Label sits a touch heavier than the fields above it */
.fluentform .ff-el-group:has(.ff_pay_inline_stripe) .ff-el-input--label label {
  font-size: 1.0625rem;
  color: var(--wp--preset--color--fx-anchor, hsl(310, 10%, 28%));
}

/* --------------------------------------------------------------------------
   3. Submit button — matches the "Send a message" hero button
   Colour comes from the variable in section 1; this handles shape and type.
   -------------------------------------------------------------------------- */
.fluentform .ff-btn-submit.ff_btn_style {
  color: var(--wp--preset--color--fx-white, hsl(0, 0%, 100%));
  font-family: "avenir-next-lt-pro", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.1px;
  line-height: 1.2;
  padding: 15px 34px;
  border: 0;
  border-radius: 999px;
  box-shadow: 0 12px 28px hsl(210 10% 12% / 0.10);
  transition: background-color 0.16s ease-out,
              box-shadow 0.16s ease-out,
              transform 0.16s ease-out;
  cursor: pointer;
}

.fluentform .ff-btn-submit.ff_btn_style:hover {
  background-color: hsl(192, 72%, 27%);
  box-shadow: 0 14px 32px hsl(210 10% 12% / 0.14);
}

.fluentform .ff-btn-submit.ff_btn_style:active {
  transform: translateY(1px);
  box-shadow: 0 8px 20px hsl(210 10% 12% / 0.12);
}

.fluentform .ff-btn-submit.ff_btn_style:focus-visible {
  outline: none;
  box-shadow: 0 0 0 4px hsl(192 72% 32% / 0.25),
              0 12px 28px hsl(210 10% 12% / 0.10);
}

.fluentform .ff-btn-submit.ff_btn_style:disabled,
.fluentform .ff-btn-submit.ff_btn_style[disabled] {
  background-color: hsl(192, 20%, 62%);
  box-shadow: none;
  cursor: default;
  transform: none;
}
/* ==========================================================================
   Cumberland Flux — Custom contribution amount field
   APPEND to what's already in Additional CSS (section 4 of the form styles).
   ========================================================================== */

/* Indent the field so it reads as belonging to the "Custom Amount" option */
.fluentform .ff-el-group:has(input[name="custom-payment-amount"]) {
  margin-left: 26px;
}

/* Size to the content — an amount, not a sentence */
.fluentform .ff-el-group:has(input[name="custom-payment-amount"]) .ff-el-input--content {
  position: relative;
  max-width: 190px;
}

/* Currency prefix, so the field states its own unit */
.fluentform .ff-el-group:has(input[name="custom-payment-amount"]) .ff-el-input--content::before {
  content: "$";
  position: absolute;
  left: 15px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 14px;
  font-weight: 600;
  line-height: 1;
  pointer-events: none;
  color: var(--wp--preset--color--fx-neutral-500, hsl(210, 7%, 46%));
}

.fluentform input[name="custom-payment-amount"] {
  max-width: 190px;
  padding-left: 30px;
  -moz-appearance: textfield;
  appearance: textfield;
}

/* Drop the number-input spinners — they invite stepping by 1 on a donation */
.fluentform input[name="custom-payment-amount"]::-webkit-outer-spin-button,
.fluentform input[name="custom-payment-amount"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}