/*
Theme Name: WNCNA
Theme URI: https://github.com/tommyorndorff/wncna-wp
Author: WNCNA
Description: WordPress port of the wncna-preview.pages.dev design (Blue Ridge navy hero, NA keytag palette, Young Serif / Schibsted Grotesk / Source Serif 4). Classic theme — see AGENTS.md for the design source and rationale for not using a block theme.
Version: 1.9.0
Requires at least: 6.4
Requires PHP: 7.4
License: GPL v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: wncna
*/

/* ------------------------------------------------------------------
   WNCNA — Blue Ridge at dusk + NA keytag colors
   Ported from the Astro reference (wncna-preview.pages.dev) src/styles/global.css.
------------------------------------------------------------------- */

:root {
  /* from the WNCNA banner: navy band, misty ridges, sand band */
  --spruce: #1d3a66;        /* navy (name kept for existing rules) */
  --spruce-deep: #14294b;
  --mist: #eef0f2;          /* misty gray-blue paper */
  --mist-deep: #dfe3e8;
  --ink: #20242b;
  --ink-soft: #4d5563;
  --sand: #e4d7a4;
  --rule: #ccd2d6;

  /* from the NA service symbol rings */
  --brick: #a93a29;
  --ridge: #3f3a85;         /* indigo ring — links (name kept) */
  --indigo-deep: #322e6b;
  --leaf: #36723a;
  --lamplight: #d2b878;     /* sandstone (name kept) */
  --lamplight-deep: #a98d4e;

  /* keytag milestone colors (authentic NA keytags) */
  --tag-white: #f4f1e6;
  --tag-orange: #e8862e;
  --tag-green: #3e8e5a;
  --tag-red: #c0392b;
  --tag-blue: #2e6fa8;
  --tag-yellow: #e2bd35;
  --tag-moonglow: #d9e8d0;
  --tag-gray: #8a8f8c;
  --tag-black: #23211f;

  --font-head: 'Young Serif', Georgia, serif;      /* headings — single 400 weight */
  --font-display: 'Schibsted Grotesk', system-ui, sans-serif; /* nav, labels, buttons */
  --font-body: 'Source Serif 4', Georgia, serif;

  --measure: 60ch;
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
}

* { box-sizing: border-box; }


body {
  margin: 0;
  background: var(--mist);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow-wrap: anywhere;
}

h1, h2, h3, h4 {
  font-family: var(--font-head);
  font-weight: 400; /* Young Serif has no bold; faux-bold looks smeared */
  line-height: 1.14;
  margin: 0 0 0.5em;
  letter-spacing: 0;
  text-wrap: balance;
}

p { margin: 0 0 1em; max-width: var(--measure); }

a { color: var(--ridge); transition: color 0.2s, text-decoration-color 0.2s; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: var(--brick); }
a:hover { color: var(--indigo-deep); text-decoration-thickness: 2px; }

/* indigo on the light paper, sandstone on the navy surfaces — sandstone
   alone is too faint against --mist to be a reliable focus ring */
:focus-visible {
  outline: 3px solid var(--focus, var(--ridge));
  outline-offset: 3px;
  border-radius: 2px;
}

.wrap {
  width: min(1080px, 100% - 3rem);
  margin-inline: auto;
}
/* the hero's inner .wrap needs a positioning context for .hero-mark
   (position:absolute) — scoped so it doesn't affect the header/footer's
   own unrelated .wrap usage. */
.hero .wrap { position: relative; }

/* ----- header -----
   In normal flow on a navy wrapper (not position:absolute over the hero, as
   in the Astro source): the hero/band no longer need a fixed padding-top
   guess at the header's height, which broke whenever the nav wrapped to a
   second line — on phones it ran straight into the hero copy. The wrapper's
   navy matches the top stop of the hero gradient, so it reads the same. */
.site-header-wrap { position: relative; background: #12233f; }
.site-header {
  position: relative;
  z-index: 10;
  padding-block: 1.1rem;
}
.site-header .wrap {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}
.brand {
  --focus: var(--lamplight);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.02rem;
  color: var(--mist);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
/* Keep the wordmark readable on navy instead of inheriting body-link hover ink. */
.brand:hover, .brand:focus-visible { color: var(--mist); }
.brand-mark { display: block; flex: 0 0 auto; width: 160px; height: auto; }
.brand-wordmark { display: flex; flex-direction: column; gap: .3rem; }
.brand-name { font: 400 1.25rem/1.2 var(--font-head); }
.brand-descriptor { color: var(--lamplight); font: 500 .7rem/1.4 var(--font-display); letter-spacing: .06em; }
@media (max-width: 700px) {
  .brand { gap: .4rem; }
  .brand-mark { width: 144px; height: auto; }
  .brand-name { font-size: 1rem; }
  .brand-descriptor { font-size: .6rem; letter-spacing: .025em; }
}
.site-nav {
  order: 1;
  margin-left: auto;
  display: flex;
  gap: 0.25rem;
  align-items: center;
  flex-wrap: wrap;
}
.header-phone { order: 2; }
.site-nav a {
  --pad-x: 0.75rem;
  position: relative;
  font-family: var(--font-display);
  font-size: 0.92rem;
  font-weight: 600;
  color: rgba(242, 245, 241, 0.85);
  text-decoration: none;
  padding: 0.45rem var(--pad-x);
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
/* sandstone underline that draws in from the left */
.site-nav a::after {
  content: "";
  position: absolute;
  left: var(--pad-x);
  right: var(--pad-x);
  bottom: 0.2rem;
  height: 2px;
  background: var(--lamplight);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s var(--ease-out);
}
.site-nav a:hover { color: var(--mist); }
.site-nav a:hover::after { transform: scaleX(0.6); }
.site-nav a[aria-current="page"] { color: var(--mist); }
.site-nav a[aria-current="page"]::after { transform: scaleX(1); }
.nav-phone {
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  background: var(--lamplight);
  color: var(--spruce-deep) !important;
  text-decoration: none;
  padding: 0.55rem 1rem;
  border-radius: 6px;
  margin-left: 0.35rem;
}
.nav-phone { transition: background-color 0.2s; }
.nav-phone:hover { background: #ddc892 !important; text-decoration: none !important; }

/* subpage header band */
.header-band {
  background: var(--spruce);
  position: relative;
}
/* same film grain as the hero, so header and hero read as one surface */
.site-header-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--grain);
  opacity: 0.06;
  pointer-events: none;
}
.header-band .page-title {
  position: relative;
  z-index: 1;
  color: var(--mist);
  padding: 2.4rem 0 2.6rem;
  border-top: 1px solid rgba(242, 245, 241, 0.14);
}
.header-band .page-title h1 { font-size: clamp(1.7rem, 4vw, 2.5rem); max-width: 24ch; }
.header-band .page-title p { color: rgba(242, 245, 241, 0.72); font-size: 1.08rem; margin: 0; }
.header-band .kicker { color: var(--lamplight); }

.kicker {
  font-family: var(--font-display);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--brick);
  margin: 0 0 0.8rem;
  max-width: none;
}

/* ----- hero ----- */
.hero {
  position: relative;
  background: linear-gradient(172deg, #12233f 0%, var(--spruce) 55%, #48597a 100%);
  color: var(--mist);
  overflow: hidden;
}
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  background-image: var(--grain);
  opacity: 0.06;
  pointer-events: none;
}
.hero-inner {
  position: relative;
  z-index: 2;
  padding: 3rem 0 3rem;
  max-width: 740px;
}
.hero .kicker { color: var(--lamplight); }
.hero h1 {
  font-size: clamp(1.9rem, 4.3vw, 3.2rem);
  color: var(--mist);
}
.hero h1 em {
  font-style: normal;
  color: var(--lamplight);
}
.hero-lede {
  font-size: clamp(1.02rem, 1.9vw, 1.18rem);
  color: rgba(242, 245, 241, 0.8);
  max-width: 44ch;
}
.hero-actions {
  display: flex;
  gap: 0.9rem;
  flex-wrap: wrap;
  margin-top: 1.9rem;
  align-items: center;
}
/* NA monogram rising over the ridges, as on the area's banner */
.hero-mark {
  position: absolute;
  z-index: 1;
  right: 0;
  bottom: -3.5rem;
  width: clamp(240px, 30vw, 420px);
  color: var(--lamplight);
  opacity: 0.55;
  pointer-events: none;
}
.hero-mark svg { display: block; width: 100%; height: auto; }

.ridges {
  position: absolute;
  inset: auto 0 0;
  z-index: 1;
  display: block;
  width: 100%;
  height: clamp(130px, 24vw, 280px);
  pointer-events: none;
}

.helpline {
  display: inline-flex;
  flex-direction: column;
  gap: 0.1rem;
  background: var(--lamplight);
  color: var(--spruce-deep);
  text-decoration: none;
  border-radius: 6px;
  padding: 0.8rem 1.35rem;
}
.helpline { transition: background-color 0.2s, transform 0.25s var(--ease-out), box-shadow 0.25s; }
.helpline:hover {
  background: #ddc892;
  color: var(--spruce-deep);
  text-decoration: none;
  box-shadow: 0 8px 22px rgba(10, 20, 38, 0.35);
}
.helpline .label {
  font-family: var(--font-display);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}
.helpline .number {
  font-family: var(--font-display);
  font-size: clamp(1.35rem, 3vw, 1.8rem);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}

.btn {
  display: inline-block;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.98rem;
  text-decoration: none;
  padding: 0.8rem 1.4rem;
  border-radius: 6px;
  border: 1px solid rgba(242, 245, 241, 0.5);
  color: var(--mist);
}
.btn { transition: background-color 0.2s, border-color 0.2s, color 0.2s; }
.btn-arrow { display: inline-block; transition: transform 0.25s var(--ease-out); }
.btn:hover .btn-arrow { transform: translateX(3px); }
.btn:hover { border-color: var(--mist); color: var(--mist); background: rgba(242,245,241,0.07); text-decoration: none; }
.btn-quiet {
  border-color: var(--ink-soft);
  color: var(--spruce);
}
.btn-quiet:hover { border-color: var(--spruce); background: transparent; color: var(--spruce); }

/* ----- asymmetric section scaffold ----- */
.section { padding: 4rem 0; }
.section + .section { border-top: 1px solid var(--rule); padding-top: 3.6rem; }

/* .section/.split/.rail are applied as "Additional CSS class" on WP Group/
   Columns/Column blocks (see scripts/seed-content.php's block-content
   helpers) — plain class selectors, so this works the same regardless of
   the wp-block-* classes WordPress also adds. The !important on the grid
   properties guards against wp-block-library's default flex layout for
   Columns; everything else relies on normal load-order cascade (theme
   styles enqueue after core's, so ties resolve in our favor). */
.split {
  display: grid !important;
  grid-template-columns: 200px minmax(0, 1fr) !important;
  gap: 1rem 3.5rem;
  align-items: start;
}
.split > * { min-width: 0; } /* let scrollers scroll instead of widening the page */
.rail {
  position: sticky;
  top: 1.5rem;
}
.rail .kicker {
  position: relative;
  margin: 0;
  padding-top: calc(0.45rem + 4px);
  display: inline-block;
}
/* the four rings of the NA service symbol — a pseudo-element rather than a
   border-image so it can draw in when the rail is revealed (see Motion) */
.rail .kicker::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 4px;
  background: linear-gradient(
    to right,
    var(--brick) 0 25%,
    var(--indigo-deep) 25% 50%,
    var(--leaf) 50% 75%,
    var(--lamplight) 75% 100%
  );
}
.rail .rail-note {
  font-size: 0.88rem;
  color: var(--ink-soft);
  margin-top: 0.6rem;
  max-width: 24ch;
}

.section h2 {
  font-size: clamp(1.4rem, 2.8vw, 1.9rem);
  max-width: 28ch;
}
.section-intro { font-size: 1.1rem; color: var(--ink-soft); }

.section-deep {
  background: var(--spruce);
  color: var(--mist);
  border-top: none !important;
}
.section-deep h2 { color: var(--mist); }
.section-deep p { color: rgba(242, 245, 241, 0.82); }
.section-deep .kicker { color: var(--lamplight); }
.section-deep .rail .kicker::before { background: var(--lamplight); }
.section-deep .rail .rail-note { color: rgba(242, 245, 241, 0.72); }
.section-deep a { color: var(--mist); text-decoration-color: var(--lamplight); }

/* ruled rows (replaces card grid) */
/* .row-list/.row-item are Group blocks now (see inc block-content helpers
   in scripts/seed-content.php), not <ul>/<li> — plain class selectors, so
   most of this works the same regardless of the underlying tag. Two real
   differences from a plain <ul>/<li>: (1) Gutenberg's Group block wraps
   its content in an extra .wp-block-group__inner-container div, so
   .row-item is a *grandchild* of .row-list, not a direct child — no `>`
   combinators, and ":first-child has no border" is replaced with "only
   items that follow another item get a border" (adjacent-sibling), since
   .row-item is never literally its parent's first-child either way.
   (2) .row-item is *itself* a Group, so its own two children (the title
   paragraph + the row-body group) are ALSO one level deeper, inside
   .row-item's own inner-container — the grid layout has to go there, or
   grid-template-columns has nothing to apply to (only one direct child). */
.row-list {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
}
.row-list .row-item { padding: 0.5rem 0 1.35rem; }
.row-list .row-item > .wp-block-group__inner-container {
  display: grid;
  grid-template-columns: minmax(150px, 220px) minmax(0, 1fr);
  gap: 0.4rem 2.5rem;
}
.row-list .row-item + .row-item {
  border-top: 1px solid var(--rule);
  padding-top: 1.35rem;
}
.section-deep .row-list .row-item + .row-item { border-top-color: rgba(242, 245, 241, 0.16); }
.row-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.08rem;
  line-height: 1.3;
  margin: 0;
}
.row-body p { font-size: 1rem; color: var(--ink-soft); margin-bottom: 0.35rem; }
.section-deep .row-body p { color: rgba(242, 245, 241, 0.78); }
.row-body a {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.92rem;
}
/* a plain link list nested in a row (e.g. the Links page's per-category
   link groups) — no bullets, tight vertical rhythm */
.row-body ul, .row-body ol {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 0.35rem;
}

/* ----- keytag ribbon (signature) ----- */
.keytag-scroller { overflow-x: auto; scrollbar-width: thin; padding: 0.3rem; }
.keytag-scroller:focus-visible { outline-offset: 0; }
.keytag-row {
  display: flex;
  gap: 0.65rem;
  justify-content: space-between;
  align-items: flex-end;
  margin-top: 1.6rem;
  min-width: max-content;
  padding-bottom: 0.5rem;
}
.keytag {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.55rem;
  text-align: center;
}
.keytag-art { width: 108px; height: 196px; overflow: hidden; }
.keytag-art img { display: block; width: 360px; max-width: none; height: 360px; transform: translate(-126px, -84px); mix-blend-mode: multiply; }
.keytag .when {
  font-family: var(--font-display);
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--ink-soft);
  max-width: 72px;
  line-height: 1.25;
}

/* ----- event list ----- */
.event-list {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
}
.event-list .event-item { padding: 0.4rem 0 1.15rem; }
/* see the .row-item comment above — same reason for targeting the
   inner-container (grid) and using adjacent-sibling (border) instead of
   :first-child. */
.event-list .event-item > .wp-block-group__inner-container {
  display: grid;
  grid-template-columns: minmax(130px, 175px) minmax(0, 1fr);
  gap: 0.3rem 2.5rem;
  align-items: baseline;
}
.event-list .event-item + .event-item {
  border-top: 1px solid var(--rule);
  padding-top: 1.15rem;
}
.event-when {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--leaf);
  margin: 0;
}
.event-what strong { font-family: var(--font-display); font-size: 1.05rem; font-weight: 700; }
.event-what span { display: block; color: var(--ink-soft); font-size: 0.97rem; max-width: var(--measure); }

/* prose pages */
.prose { max-width: var(--measure); }
.prose h2 { font-size: 1.5rem; margin-top: 2.4rem; }
.prose h3 { font-size: 1.15rem; margin-top: 1.8rem; }
.prose ul, .prose ol { padding-left: 1.2rem; }
.prose li { margin-bottom: 0.4rem; }

/* blockquote + .wp-block-quote: core's Quote block ships its own
   .wp-block-quote margin/padding/border defaults at higher specificity
   (a class beats a bare tag selector) — repeat the selector with the
   class included so ours wins regardless of load order. */
blockquote,
.wp-block-quote {
  margin: 2.2rem 0;
  padding: 0.4rem 0 0.4rem 1.4rem;
  border-left: 3px solid var(--lamplight-deep);
  font-size: 1.2rem;
  font-style: italic;
  color: var(--spruce);
  max-width: 50ch;
}
blockquote cite,
.wp-block-quote cite {
  display: block;
  margin-top: 0.6rem;
  font-style: normal;
  font-size: 0.8rem;
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.section-deep blockquote { color: var(--mist); border-left-color: var(--lamplight); }
.section-deep blockquote cite { color: rgba(242, 245, 241, 0.72); }

/* ----- crouton meeting finder overrides -----
   Crouton (vendored in assets/crouton/) renders into #bmlt-tabs and ships its
   own skin (dark slate #35414f, red #db4865, teal #93c3cd) with high-specificity
   ID selectors that load after this file. !important is required to win; keep
   every rule scoped under #bmlt-tabs. Vendored files stay untouched so Crouton
   upgrades keep working. See docs/crouton-style-override.md in the design
   source repo for the full rationale. */
#bmlt-tabs {
  font-family: var(--font-body);
  margin-top: 1.5rem;
  color: var(--ink);
}
#bmlt-tabs .bmlt-page,
#bmlt-tabs .tab-content,
#bmlt-tabs .bmlt-header,
#bmlt-tabs .meeting-group,
#bmlt-tabs .group-table-div {
  background-color: transparent !important;
  color: var(--ink) !important;
  border: none !important;
}
#bmlt-tabs .bmlt-header { padding: 0 0 0.75rem !important; }

#bmlt-tabs #day,
#bmlt-tabs .groupingButton,
#bmlt-tabs .map-button {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.9rem;
  border-radius: 6px;
  padding: 0.5rem 0.9rem;
  text-shadow: none;
  box-shadow: none;
  margin: 0 0.15rem 0.35rem 0;
}
#bmlt-tabs #day.buttonLowlight,
#bmlt-tabs .groupingButton.buttonLowlight,
#bmlt-tabs .map-button.buttonLowlight {
  background-color: transparent !important;
  border: 1px solid var(--rule) !important;
  color: var(--spruce) !important;
}
#bmlt-tabs #day.buttonHighlight,
#bmlt-tabs .groupingButton.buttonHighlight,
#bmlt-tabs .map-button.buttonHighlight {
  background-color: var(--spruce) !important;
  border: 1px solid var(--spruce) !important;
  color: var(--mist) !important;
}
#bmlt-tabs .filter-button,
#bmlt-tabs .menu-button {
  font-family: var(--font-display);
  border: 1px solid var(--rule) !important;
  border-radius: 6px;
  background: #fff !important;
  color: var(--ink) !important;
}

#bmlt-tabs .nav-tabs {
  border-bottom: 1px solid var(--rule) !important;
  background: transparent !important;
}
#bmlt-tabs .nav-tabs > li > a {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--ink-soft) !important;
  background-color: transparent !important;
  border: none !important;
  border-bottom: 3px solid transparent !important;
  border-radius: 0 !important;
  margin-right: 0.25rem;
  padding: 0.6rem 0.9rem;
}
#bmlt-tabs .nav-tabs > li > a:hover { color: var(--spruce) !important; }
#bmlt-tabs .nav-tabs > li.active > a,
#bmlt-tabs .nav-tabs > li.active > a:focus,
#bmlt-tabs .nav-tabs > li.active > a:hover {
  color: var(--brick) !important;
  background-color: transparent !important;
  border-bottom: 3px solid var(--brick) !important;
}

#bmlt-tabs .group-header {
  font-family: var(--font-head);
  font-weight: 400 !important;
  font-size: 1.3rem;
  color: var(--ink) !important;
  background: transparent !important;
  border: none !important;
  padding: 1.6rem 0 0.4rem !important;
  text-align: left !important;
}

#bmlt-tabs table.bmlt-table,
#bmlt-tabs .bmlt-table tr,
#bmlt-tabs .bmlt-table td,
#bmlt-tabs .bmlt-table tbody {
  background-color: transparent !important;
  border: none !important;
  color: var(--ink);
}
#bmlt-tabs .bmlt-table tr { border-top: 1px solid var(--rule) !important; }
#bmlt-tabs .bmlt-table td { padding: 0.9rem 0.75rem !important; }
#bmlt-tabs .bmlt-table.table-hover tbody tr:hover td {
  background-color: rgba(63, 58, 133, 0.05) !important;
}
#bmlt-tabs .bmlt-day,
#bmlt-tabs .bmlt-time-2 { font-family: var(--font-display); font-weight: 700; color: var(--leaf) !important; }
#bmlt-tabs .meeting-name,
#bmlt-tabs .meeting-name a,
#bmlt-tabs .meeting-name a:visited {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.02rem;
  color: var(--ridge) !important;
}
#bmlt-tabs .meeting-name a:hover { color: var(--indigo-deep) !important; }
#bmlt-tabs .meeting-address,
#bmlt-tabs .location-text,
#bmlt-tabs .location-information,
#bmlt-tabs .meeting-additional-info,
#bmlt-tabs .bmlt-comments { color: var(--ink-soft) !important; }
#bmlt-tabs a, #bmlt-tabs a:visited { color: var(--ridge); }

#bmlt-tabs td a.btn,
#bmlt-tabs .bmlt-page a.btn.btn-xs,
#bmlt-tabs .bmlt-page a.btn.btn-sm {
  font-family: var(--font-display);
  font-weight: 600;
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid var(--rule) !important;
  border-radius: 6px;
  color: var(--spruce) !important;
  text-shadow: none;
  box-shadow: none;
}
#bmlt-tabs td a.btn:hover { border-color: var(--spruce) !important; }

@media (max-width: 700px) {
  #bmlt-tabs .nav-tabs > li > a { padding: 0.7rem 0.7rem; font-size: 0.98rem; }
  #bmlt-tabs #day, #bmlt-tabs .groupingButton, #bmlt-tabs .map-button { padding: 0.65rem 1rem; }
  #bmlt-tabs td a.btn { padding: 0.55rem 0.9rem; }
}

/* ----- footer ----- */
.site-footer {
  background: var(--spruce-deep);
  color: rgba(242, 245, 241, 0.72);
  padding: 3.2rem 0 2.4rem;
  font-size: 0.95rem;
}
.footer-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 2rem;
}
.site-footer h2 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--mist);
  font-size: 0.82rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.site-footer a { color: rgba(242, 245, 241, 0.85); text-decoration-color: rgba(210, 184, 120, 0.6); }
.site-footer a:hover { color: var(--lamplight); }
.site-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.45rem; }
.footer-note {
  margin-top: 2.6rem;
  padding-top: 1.4rem;
  border-top: 1px solid rgba(242, 245, 241, 0.14);
  font-size: 0.85rem;
  color: rgba(242, 245, 241, 0.72);
  max-width: 72ch;
}
.footer-helpline {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 1.45rem;
  color: var(--lamplight) !important;
  text-decoration: none;
}

.action-bar { display: none; }

/* ----- motion -----
   Everything that moves lives here, behind prefers-reduced-motion. Load-in
   animations are pure CSS; scroll reveals need assets/js/theme.js to add
   .reveal, so the starting (hidden) state never exists without JS — and
   never in the block editor, which loads this file but not the script. */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }

  /* soft cross-fade between pages (Chrome/Safari; others just navigate) */
  @view-transition { navigation: auto; }
  ::view-transition-old(root),
  ::view-transition-new(root) { animation-duration: 0.28s; }

  /* hero: copy rises in line by line, ridges lift from the bottom edge back
     to front, the monogram settles in last */
  .hero-inner .kicker,
  .hero-inner h1,
  .hero-lede,
  .hero-actions { animation: rise 0.9s var(--ease-out) both; }
  .hero-inner h1 { animation-delay: 0.08s; }
  .hero-lede { animation-delay: 0.18s; }
  .hero-actions { animation-delay: 0.28s; }
  .ridges path { animation: ridge-rise 1.6s var(--ease-out) both; }
  .ridges path:nth-child(2) { animation-delay: 0.12s; }
  .ridges path:nth-child(3) { animation-delay: 0.24s; }
  .hero-mark { animation: mark-in 1.8s var(--ease-out) 0.35s both; }

  /* subpage title band */
  .page-title > * { animation: rise 0.7s var(--ease-out) both; }
  .page-title > :nth-child(2) { animation-delay: 0.07s; }
  .page-title > :nth-child(3) { animation-delay: 0.14s; }

  .action-bar { animation: bar-up 0.5s var(--ease-out) 0.4s both; }

  .helpline:hover { transform: translateY(-2px); }


  /* scroll reveals (classes added by theme.js) */
  .reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out);
  }
  .keytag.reveal { transform: translateY(-22px); } /* tags drop onto the ring */
  .reveal.is-in, .reveal:focus-within { opacity: 1; transform: none; }
  .reveal:focus-within { transition: none; }
  .rail.reveal .kicker::before {
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.9s var(--ease-out) 0.2s;
  }
  .rail.reveal.is-in .kicker::before { transform: none; }

  @keyframes rise {
    from { opacity: 0; transform: translateY(14px); }
  }
  @keyframes ridge-rise {
    from { transform: translateY(70px); }
  }
  @keyframes mark-in {
    from { opacity: 0; transform: translateY(24px) rotate(-8deg); }
  }
  @keyframes bar-up {
    from { transform: translateY(100%); }
  }
  @keyframes swing {
    20% { transform: rotate(8deg); }
    45% { transform: rotate(-5deg); }
    70% { transform: rotate(2.5deg); }
    to { transform: rotate(0); }
  }
}

@media print {
  .reveal { opacity: 1 !important; transform: none !important; }
  .action-bar, .site-nav { display: none !important; }
}

@media (max-width: 760px) {
  .split { grid-template-columns: minmax(0, 1fr) !important; gap: 0.4rem; }
  .rail { position: static; margin-bottom: 0.8rem; }
  .row-list .row-item > .wp-block-group__inner-container { grid-template-columns: 1fr; gap: 0.15rem; }
  .event-list .event-item > .wp-block-group__inner-container { grid-template-columns: 1fr; gap: 0.1rem; }
}

@media (max-width: 700px) {
  .hero-mark { width: 180px; right: -34px; opacity: 0.3; }

  /* the fixed .action-bar below carries the Call button on phones */
  .header-phone { display: none; }
  .site-header .wrap { gap: 0.6rem; }
  .site-nav { flex-basis: 100%; margin-left: -0.5rem; }

  html { scroll-padding-bottom: calc(var(--action-bar-height, 7rem) + 1rem); }
  body { padding-bottom: var(--action-bar-height, calc(7rem + env(safe-area-inset-bottom))); }
  .action-bar {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: 0.6rem;
    position: fixed;
    inset: auto 0 0;
    z-index: 50;
    background: var(--spruce-deep);
    padding: 0.55rem 0.75rem calc(0.55rem + env(safe-area-inset-bottom));
    box-shadow: 0 -4px 18px rgba(14, 26, 43, 0.35);
  }
  .action-bar a {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 0.98rem;
    text-align: center;
    text-decoration: none;
    padding: 0.75rem 0.5rem;
    border-radius: 6px;
    font-variant-numeric: tabular-nums;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    line-height: 1.3;
  }
  .site-footer li a, .row-body li a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
  .section { padding-block: 2.5rem; }
  .section + .section { padding-top: 2.5rem; }
  .ab-call { background: var(--lamplight); color: var(--spruce-deep); }
  .ab-call:hover { background: #ddc892; color: var(--spruce-deep); }
  .ab-find { border: 1px solid rgba(238, 240, 242, 0.55); color: var(--mist); }
  .ab-find:hover { border-color: var(--mist); color: var(--mist); }
}

@media (max-width: 640px) {
  .site-nav { gap: 0; }
  .site-nav a { --pad-x: 0.5rem; padding: 0.4rem var(--pad-x); font-size: 0.85rem; }
  .hero-inner { padding-top: 1.75rem; }
}

/* ----- WordPress-specific additions (not in the Astro source) ----- */

/* dark surfaces get the sandstone focus ring (see :focus-visible) */
.site-header-wrap, .hero, .section-deep, .site-footer, .action-bar, .notice-bar { --focus: var(--lamplight); }

/* homepage security notice bar — see front-page.php for why this exists */
.notice-bar {
  background: var(--brick);
  color: var(--mist);
}
.notice-bar .wrap { padding: 0.65rem 0; }
.notice-bar p {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.5;
  max-width: none;
}
.notice-bar strong { font-family: var(--font-display); font-weight: 700; }

/* the_content() from wp_editor wraps images in figures/captions; keep them
   from busting the 60ch prose measure */
main img { max-width: 100%; height: auto; }
main iframe, main video { max-width: 100%; }

/* The finder ships its own control resets; retain visible keyboard focus. */
#bmlt-tabs :focus-visible {
  outline: 3px solid var(--ridge) !important;
  outline-offset: 3px !important;
}
#bmlt-tabs button, #bmlt-tabs select, #bmlt-tabs a.btn {
  min-height: 44px !important;
}
#bmlt-tabs select { font-size: 1rem !important; max-width: 100%; }
#bmlt-tabs .select2-selection {
  min-height: 44px !important;
  height: auto !important;
  font-size: 1rem !important;
  display: flex !important;
  align-items: center !important;
}
#bmlt-tabs .select2-selection__arrow { top: 50% !important; transform: translateY(-50%); }
#bmlt-tabs .select2-container { margin-block: 0.2rem !important; max-width: 100%; }
#bmlt-tabs .nav-tabs > li > a { min-height: 44px !important; padding-block: 0.75rem !important; }

/* Crouton mounts its dialogs outside #bmlt-tabs, so scope these separately. */
:is(#meeting_modal, #filter_modal, #geocoding_modal) { z-index: 1000 !important; }
:is(#meeting_modal, #filter_modal, #geocoding_modal) a { color: var(--ridge) !important; }
:is(#meeting_modal, #filter_modal, #geocoding_modal) .modal-content {
  max-width: calc(100% - 2rem) !important;
  overflow-wrap: anywhere;
}
:is(#meeting_modal, #filter_modal, #geocoding_modal) .modal-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  cursor: pointer;
}
:is(#meeting_modal, #filter_modal, #geocoding_modal) .modal-title { display: block; padding-right: 44px; }
:is(#meeting_modal, #filter_modal, #geocoding_modal) :focus-visible {
  outline: 3px solid var(--ridge) !important;
  outline-offset: 2px !important;
}

/* A tall dock at enlarged text sizes must not take over the reading area. */
body.action-bar-in-flow { padding-bottom: 0; }
.action-bar-in-flow .action-bar { position: static; }
html:has(.action-bar-in-flow) { scroll-padding-bottom: 1rem; }
@media (max-width: 700px) and (max-height: 400px) {
  .action-bar { position: static; }
  body { padding-bottom: 0; }
  html { scroll-padding-bottom: 1rem; }
}

@media (prefers-reduced-motion: reduce) {
  .btn:hover .btn-arrow { transform: none; }
  .site-nav a::after, .btn-arrow, .helpline { transition: none; }
}

/* WP core "screen reader text" utility, used for the skip link */
.screen-reader-text {
  border: 0;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute !important;
  width: 1px;
  word-wrap: normal !important;
}
.screen-reader-text:focus {
  background-color: var(--mist);
  color: var(--ink);
  clip: auto !important;
  clip-path: none;
  display: block;
  height: auto;
  left: 5px;
  top: 5px;
  font-size: 0.9rem;
  padding: 0.75rem 1rem;
  text-decoration: none;
  width: auto;
  z-index: 100000;
}

/* gap between .wrap and viewport on very narrow phones where the mobile
   diamond mark + nav wrap to three lines */
@media (max-width: 380px) {
  .hero-mark { display: none; }
}

/* Theme-owned meeting templates; vendor rows become a time rail + details. */
#bmlt-tabs .bmlt-table tr.bmlt-data-row:not(.hide) {
  display: grid !important;
  grid-template-columns: 10.5rem minmax(0, 1fr);
  gap: 1.25rem;
  padding: .8rem 0 !important;
  background: transparent !important;
}
#bmlt-tabs .bmlt-table tr.bmlt-data-row > td {
  display: block !important;
  width: auto !important;
  min-width: 0;
  padding: 0 !important;
  background: transparent !important;
  font-size: 1rem !important;
  line-height: 1.55 !important;
}
#bmlt-tabs .bmlt-table tr.bmlt-data-row > .bmlt-column3 { display: none !important; }
#bmlt-tabs .bmlt-day { font-size: .85rem !important; color: var(--ink-soft) !important; }
#bmlt-tabs .bmlt-time-2 { font-size: 1rem !important; line-height: 1.5 !important; }
#bmlt-tabs h3.meeting-name { margin: 0 !important; padding: 0 !important; }
#bmlt-tabs .meeting-name button {
  padding: 0 !important;
  min-height: 44px;
  border: 0;
  background: transparent;
  color: var(--spruce);
  font: 700 1.2rem/1.35 var(--font-display);
  text-align: left;
  cursor: pointer;
}
#bmlt-tabs .meeting-name button:hover { text-decoration: underline; text-underline-offset: .2em; }
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-formats {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem .9rem;
  padding: 0 !important;
  margin: 0 0 .65rem !important;
  list-style: none;
  font: 500 .82rem/1.5 var(--font-display);
  color: var(--ink-soft);
}
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) :is(.wncna-venue, .wncna-location, .wncna-address, .wncna-note) {
  margin: .2rem 0 !important;
  font-size: 1rem;
  line-height: 1.55;
  overflow-wrap: anywhere;
}
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-venue {
  color: var(--leaf);
  font: 700 .82rem/1.5 var(--font-display);
  margin-bottom: .5rem !important;
}
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-location { color: var(--ink); font-weight: 600; }
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) :is(.wncna-address, .wncna-note) { color: var(--ink-soft); }
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-directions { display: flex; flex-wrap: wrap; gap: .5rem; margin: .85rem 0; }
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-meeting-action {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 44px !important;
  max-width: 100%;
  padding: .55rem .8rem !important;
  border: 1px solid var(--rule) !important;
  border-radius: 4px !important;
  background: white !important;
  color: var(--spruce) !important;
  font: 600 .85rem/1.4 var(--font-display) !important;
  text-decoration: none !important;
  white-space: normal !important;
  cursor: pointer;
}
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-meeting-action:hover { border-color: var(--spruce) !important; background: var(--mist) !important; }
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-online-toggle { background: var(--spruce) !important; color: white !important; border-color: var(--spruce) !important; }
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-online-toggle:hover { background: var(--spruce-deep) !important; }
.wncna-online { margin: .85rem 0 .3rem; }
.wncna-online-panel:not([hidden]) { display: flex; flex-wrap: wrap; gap: .65rem; padding: .85rem 0; }
.wncna-online-panel p { width: 100%; margin: 0 !important; overflow-wrap: anywhere; white-space: pre-line; }
.wncna-online-panel[hidden] { display: none !important; }
:is(#bmlt-tabs, #meeting_modal, .wncna-map-detail) .wncna-details-link {
  min-height: 44px;
  padding: .5rem 0;
  margin-top: .3rem;
  border: none;
  background: transparent;
  color: var(--ridge);
  font: 600 .85rem/1.4 var(--font-display);
  text-decoration: underline;
  text-underline-offset: .2em;
  cursor: pointer;
}
@media (max-width: 700px) {
  #bmlt-tabs .bmlt-table tr.bmlt-data-row:not(.hide) { grid-template-columns: minmax(0, 1fr); gap: .15rem; padding: .8rem 0 !important; }
  #bmlt-tabs .bmlt-table .bmlt-column1 { display: flex !important; flex-wrap: wrap; gap: .2rem .7rem; align-items: baseline; }
  #bmlt-tabs .bmlt-day { font-size: .9rem !important; }
}

/* Equal-sized homepage actions, with the meeting finder clearly prominent. */
.hero-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 38rem; align-items: stretch; }
.hero-actions > a { display: flex; justify-content: center; min-height: 5.1rem; padding: .9rem 1rem; text-align: center; }
.hero-actions .hero-find { align-items: center; gap: .6rem; background: var(--mist); border: 1px solid var(--mist); color: var(--spruce-deep); font-size: clamp(1.05rem, 2.2vw, 1.4rem); }
.hero-actions .hero-find:hover { background: white; border-color: white; color: var(--spruce-deep); }
.source-note { margin-top: 1rem; font-size: .85rem; }
@media (max-width: 520px) { .hero-actions { grid-template-columns: minmax(0, 1fr); } }
/* Theme-owned meeting dialog: readable schedule, compact map and touch actions. */
#meeting_modal {
  padding: 1.5rem 1rem !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  background: rgb(20 41 75 / .65) !important;
  scrollbar-color: var(--rule) var(--spruce-deep);
}
#meeting_modal .modal-content {
  position: relative !important;
  inset: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: 54rem !important;
  margin: 0 auto !important;
  padding: 0 !important;
  border: none !important;
  border-radius: 14px !important;
  background: white !important;
  box-shadow: 0 20px 60px rgb(0 0 0 / .25);
  font: 1rem/1.55 var(--font-body) !important;
  color: var(--ink) !important;
  overflow: hidden;
}
#meeting_modal .wncna-dialog-header {
  position: relative;
  padding: 1.75rem 2rem;
  background: var(--spruce-deep);
  color: var(--mist);
}
#meeting_modal .wncna-dialog-header .modal-title {
  margin: 0 !important;
  padding: 0 3rem 0 0 !important;
  color: var(--mist) !important;
  font: 400 clamp(1.5rem, 3vw, 2rem)/1.25 var(--font-head) !important;
  text-wrap: balance;
}
#meeting_modal .wncna-dialog-dismiss {
  position: absolute !important;
  top: 1rem !important;
  right: 1rem !important;
  width: 44px;
  height: 44px;
  padding: 0 !important;
  border: 1px solid rgb(238 240 242 / .4) !important;
  border-radius: 50% !important;
  background: transparent !important;
  color: var(--mist) !important;
}
#meeting_modal .wncna-dialog-dismiss span { pointer-events: none; }
#meeting_modal .wncna-dialog-dismiss::before,
#meeting_modal .wncna-dialog-dismiss::after {
  content: "";
  position: absolute;
  width: 16px;
  height: 2px;
  background: currentColor;
  transform: rotate(45deg);
  pointer-events: none;
}
#meeting_modal .wncna-dialog-dismiss::after { transform: rotate(-45deg); }
#meeting_modal .wncna-dialog-dismiss:hover { background: var(--spruce) !important; }
#meeting_modal .wncna-dialog-header :focus-visible { outline-color: var(--lamplight) !important; }
#meeting_modal .wncna-dialog-schedule {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem 1.5rem;
  margin-top: 1.1rem;
  font: 500 1rem/1.5 var(--font-display);
}
#meeting_modal .wncna-dialog-schedule p { margin: 0 !important; color: inherit !important; }
#meeting_modal .wncna-dialog-schedule p:first-child { display: flex; flex-wrap: wrap; gap: .25rem .75rem; }
#meeting_modal .wncna-dialog-schedule span { font-weight: 700; font-variant-numeric: tabular-nums; }
#meeting_modal .wncna-dialog-schedule .wncna-dialog-venue {
  padding: .2rem .65rem;
  border: 1px solid rgb(238 240 242 / .4);
  border-radius: 4px;
  font-size: .8rem;
}
#meeting_modal .wncna-dialog-body { padding: 1.75rem 2rem; }
#meeting_modal .wncna-meeting-detail { font: 1rem/1.55 var(--font-body); }
#meeting_modal .wncna-meeting-detail h3 {
  margin: 0 0 .75rem !important;
  font: 700 .95rem/1.4 var(--font-display) !important;
  color: var(--spruce-deep) !important;
}
#meeting_modal .wncna-detail-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr); gap: 1.5rem; }
#meeting_modal .wncna-detail-online { grid-template-columns: minmax(0, 1fr); }
#meeting_modal .wncna-detail-location { min-width: 0; }
#meeting_modal .wncna-location { font: 600 1.15rem/1.4 var(--font-display); }
#meeting_modal .wncna-address { margin: .5rem 0 !important; }
#meeting_modal .wncna-note { margin-top: .75rem !important; }
#meeting_modal .wncna-detail-map { min-width: 0; align-self: start; border-radius: 8px; overflow: hidden; background: var(--mist); }
#meeting_modal .bmlt-map { height: 240px !important; min-height: 0 !important; width: 100% !important; margin: 0 !important; }
#meeting_modal .wncna-directions { margin: 1rem 0 0; gap: .5rem; }
#meeting_modal .wncna-meeting-action { min-height: 48px !important; border-radius: 6px !important; }
#meeting_modal .wncna-detail-formats { margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid var(--rule); }
#meeting_modal .wncna-format-descriptions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.75rem; margin: 0; }
#meeting_modal .wncna-format-descriptions dt { color: var(--ink); font: 600 .95rem/1.5 var(--font-display); }
#meeting_modal .wncna-format-descriptions dd { margin: .25rem 0 0; color: var(--ink-soft); }
#meeting_modal .wncna-dialog-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: 1rem 2rem; background: var(--mist); }
#meeting_modal .wncna-dialog-page { display: inline-flex; align-items: center; gap: .5rem; min-height: 48px; font: 600 .9rem/1.4 var(--font-display); text-underline-offset: .2em; }
#meeting_modal .wncna-dialog-done {
  position: static !important;
  float: none !important;
  margin-left: auto;
  min-width: 6.5rem;
  min-height: 48px;
  padding: .6rem 1.25rem !important;
  border: 1px solid var(--spruce) !important;
  border-radius: 6px !important;
  background: var(--spruce) !important;
  color: white !important;
  font: 600 .9rem/1.4 var(--font-display) !important;
}
#meeting_modal .wncna-dialog-done:hover { background: var(--spruce-deep) !important; }
#meeting_modal .swipe-buttons { display: none; }
#meeting_modal .group-modal { padding: 1.2rem !important; }
#meeting_modal .share-button { display: inline-flex; align-items: center; min-height: 48px; margin-top: 1rem; }
@media (max-width: 600px) {
  #meeting_modal { padding: .5rem !important; }
  #meeting_modal .modal-content { max-width: 100% !important; border-radius: 12px !important; }
  #meeting_modal .wncna-dialog-header { padding: 1.25rem; }
  #meeting_modal .wncna-dialog-dismiss { top: .75rem !important; right: .75rem !important; }
  #meeting_modal .wncna-dialog-schedule { gap: .75rem; margin-top: 1rem; }
  #meeting_modal .wncna-dialog-body { padding: 1.25rem; }
  #meeting_modal .wncna-detail-top, #meeting_modal .wncna-format-descriptions { grid-template-columns: minmax(0, 1fr); }
  #meeting_modal .bmlt-map { height: 190px !important; }
  #meeting_modal .wncna-directions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #meeting_modal .wncna-meeting-action { padding: .6rem !important; font-size: .8rem !important; }
  #meeting_modal .wncna-detail-formats { margin-top: 1.25rem; }
  #meeting_modal .wncna-dialog-footer { padding: .75rem 1.25rem; }
}

/* Clean time tools: a tactile keytag display alongside a quiet date form. */
.recovery-tools { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2rem; margin-top: 1.5rem; }
.keytag-display, .clean-time { min-width: 0; }
.keytag-stage { position: relative; height: 300px; display: grid; place-items: center; overflow: hidden; background: var(--mist-deep); border-radius: 50% 50% 8px 8px; touch-action: pan-y; }
.keytag-stage canvas { display: block; width: 100%; height: 100%; cursor: grab; touch-action: pan-y; }
.keytag-stage canvas:active { cursor: grabbing; }
.keytag-stage.is-3d .keytag-fallback { display: none; }
.keytag-caption { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .3rem .8rem; margin-top: .8rem; }
.keytag-caption h3 { margin: 0; font: 700 1.1rem/1.4 var(--font-display); }
.keytag-caption > span { color: var(--ink-soft); font: .75rem/1.4 var(--font-display); }
.keytag-controls:not([hidden]) { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .7rem; }
.keytag-controls button { min-height: 44px; padding: .45rem .55rem; background: transparent; border: 1px solid var(--rule); border-radius: 4px; color: var(--spruce); font: 600 .75rem/1.4 var(--font-display); cursor: pointer; }
.keytag-choices { display: flex; gap: .5rem; padding: .8rem 0 .4rem; width: max-content; }
.keytag-choices button { display: grid; justify-items: center; gap: .45rem; width: 78px; min-height: 76px; padding: .5rem .2rem; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--ink-soft); font: 600 .75rem/1.25 var(--font-display); cursor: pointer; }
.keytag-choices button[aria-pressed="true"] { border-color: var(--spruce); background: white; color: var(--spruce); }
.keytag-swatch { width: 22px; height: 29px; background: var(--keytag-color); border-radius: 50% 50% 38% 38%; box-shadow: inset 0 0 0 1px rgba(0,0,0,.2); }
.clean-time { padding-top: .25rem; }
.clean-time :is(h2, h3) { font-size: 1.4rem; margin: 0 0 .65rem; }
.clean-time > p { margin: 0 0 1.2rem; }
.clean-time fieldset { padding: 0; margin: 0; border: 0; min-width: 0; }
.clean-time label { display: block; font: 600 .9rem/1.4 var(--font-display); margin-bottom: .5rem; }
.clean-time input { display: block; width: 100%; min-width: 0; max-width: 100%; min-height: 48px; padding: .65rem .75rem; border: 1px solid var(--ink-soft); border-radius: 4px; background: white; color: var(--ink); font: 1rem/1.4 var(--font-display); color-scheme: light; }
.clean-time input[aria-invalid="true"] { border: 2px solid var(--brick); }
.clean-time .clean-time-hint, .clean-time .clean-time-method { font-size: .8rem; color: var(--ink-soft); line-height: 1.5; margin: .65rem 0; }
.clean-time .clean-time-method { margin-top: 1.2rem; }
.clean-time-error { color: var(--brick); font-size: .9rem; margin: .5rem 0; }
.clean-time-error:empty { margin: 0; }
.clean-time-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1rem; }
.clean-time-actions button { min-height: 46px; padding: .65rem 1rem; border: 1px solid var(--spruce); border-radius: 4px; background: var(--spruce); color: white; font: 600 .9rem/1.4 var(--font-display); cursor: pointer; }
.clean-time-actions button[type="reset"] { background: transparent; color: var(--spruce); border-color: var(--rule); }
.clean-time-result:not(:empty) { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--rule); }
.clean-time-result p { margin: .35rem 0; }
.clean-time-total { font: 400 1.75rem/1.25 var(--font-head); color: var(--spruce); font-variant-numeric: tabular-nums; }
.clean-time-next { color: var(--ink-soft); font-size: .9rem; }
.recovery-tools button:focus-visible, .clean-time :is(button,input):focus-visible { outline: 3px solid var(--ridge); outline-offset: 3px; }
.recovery-tools button:hover, .clean-time-actions button:hover { filter: brightness(.95); }
@media (max-width: 1000px) { .recovery-tools { grid-template-columns: minmax(0, 1fr); gap: 2rem; } .keytag-stage { height: 320px; } }
@media (prefers-reduced-motion: reduce) { .keytag-stage canvas { cursor: default; } }

/* Keep weekday choices compact above the homepage's mobile meeting results. */
@media (max-width: 700px) {
  #bmlt-tabs .nav-tabs {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  #bmlt-tabs .nav-tabs::before,
  #bmlt-tabs .nav-tabs::after { display: none !important; }
  #bmlt-tabs .nav-tabs > li {
    float: none !important;
    width: auto !important;
    min-width: 0;
  }
  #bmlt-tabs .nav-tabs > li > a {
    margin: 0 !important;
    padding: 0.65rem 0.25rem !important;
    font-size: 0.875rem;
    text-align: center;
  }
}

@media (max-width: 360px) {
  #bmlt-tabs .nav-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Dense list rhythm; detailed dialogs keep their more spacious reading layout. */
#bmlt-tabs .wncna-list-meeting { display: grid; grid-template-columns: minmax(0, 1fr) 10rem; gap: 1.25rem; }
#bmlt-tabs .wncna-list-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .75rem; margin-bottom: .25rem; }
#bmlt-tabs .wncna-list-meta :is(.wncna-venue, .wncna-formats) { margin: 0 !important; }
#bmlt-tabs .wncna-list-copy :is(.wncna-location, .wncna-address, .wncna-note) { margin: .1rem 0 !important; line-height: 1.4; }
#bmlt-tabs .wncna-list-actions { display: flex; flex-direction: column; align-items: stretch; gap: .25rem; padding-top: .25rem; }
#bmlt-tabs .wncna-list-actions .wncna-directions { display: flex; flex-direction: column; gap: .25rem; margin: 0; }
#bmlt-tabs .wncna-list-actions .wncna-meeting-action { padding: .3rem .65rem !important; }
#bmlt-tabs .wncna-list-actions .wncna-online { margin: 0; }
#bmlt-tabs .wncna-list-actions .wncna-online-toggle { width: 100%; }
#bmlt-tabs .wncna-list-actions .wncna-details-link { margin: 0; padding: .25rem 0; text-align: center; }
.home-meetings.section { padding-block: 2rem; }
.home-meetings h2 { margin-bottom: .6rem; }
.home-meetings .meeting-fallback { margin-block: .5rem 1rem; font-size: .9rem; line-height: 1.5; }
@media (max-width: 1000px) {
  #bmlt-tabs .wncna-list-meeting { grid-template-columns: minmax(0, 1fr); gap: .4rem; }
  #bmlt-tabs .wncna-list-actions, #bmlt-tabs .wncna-list-actions .wncna-directions { flex-direction: row; flex-wrap: wrap; align-items: center; gap: .3rem .5rem; }
  #bmlt-tabs .wncna-list-actions .wncna-details-link { padding-inline: .3rem; }
}


/* Compact overview keeps local news and the live finder near the top. */
.home-area.section { padding-block: 2rem; }
.home-area-grid > .wp-block-group__inner-container { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.3fr); gap: 2.5rem; }
.home-area h2 { font-size: 1.5rem; margin: 0 0 .75rem; }
.home-area p { font-size: 1rem; margin: .5rem 0; }
.home-area .calendar-note { font-size: .85rem; margin-top: 0; }
.home-area .event-list { margin-block: .5rem; }
.home-area .event-item { padding: .65rem 0; }
.home-area .event-item > .wp-block-group__inner-container { grid-template-columns: minmax(8rem, .65fr) minmax(0, 1fr); gap: .75rem; }
.home-area .event-item p, .home-area .event-what strong, .home-area .event-what span { font-size: .9rem; margin: 0; line-height: 1.4; }
.home-area .home-area-links a { display: inline-flex; align-items: center; min-height: 44px; }

/* A disclosure keeps navigation in flow; it never overlays page content. */
.menu-toggle { display: none; }
@media (max-width: 1000px) {
  .site-header { padding-block: .75rem; }
  .site-header .wrap { gap: .5rem 1rem; }
  .brand { flex: 1; min-width: 0; }
  .brand-mark { width: 112px; }
  .brand-name { font-size: 1rem; }
  .brand-descriptor { font-size: .7rem; }
  .nav-ready .menu-toggle { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 44px; padding: .5rem .65rem; border: 1px solid rgba(238,240,242,.55); border-radius: 4px; background: transparent; color: var(--mist); font: 600 .9rem/1.3 var(--font-display); cursor: pointer; }
  .site-nav { flex-basis: 100%; margin: 0; gap: .25rem; }
  .nav-ready .site-nav { display: none; }
  .nav-ready.nav-open .site-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid rgba(238,240,242,.2); padding-top: .5rem; }
  .site-nav a { min-width: 0; min-height: 44px; display: flex; align-items: center; font-size: 1rem; padding: .5rem; }
}
@media (max-width: 700px) {
  .home-area-grid > .wp-block-group__inner-container { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
  .home-area.section { padding-block: 1.5rem; }
  .hero-inner { padding-block: 1.5rem 2rem; }
  .hero .kicker { display: none; }
  .hero-actions { margin-top: 1.25rem; }
  .header-band .page-title { padding-block: 1.5rem; }
}
@media (max-width: 450px) {
  .brand { width: auto; gap: .2rem; }
  .brand-mark { width: 100px; }
  .brand-name { font-size: .9rem; }
  .brand-descriptor { font-size: .65rem; }
  .nav-ready.nav-open .site-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-area .event-item > .wp-block-group__inner-container { grid-template-columns: minmax(0, 1fr); gap: .25rem; }
}
/* Section labels promoted to headings retain the established rail treatment. */
.rail h2.kicker { font-size: .75rem; line-height: 1.5; color: var(--brick); }
.section-deep .rail h2.kicker { color: var(--lamplight); }
@media (max-width: 700px) {
  .keytag-choices { display: grid; width: 100%; grid-template-columns: repeat(auto-fit, minmax(min(100%, 5rem), 1fr)); }
  .keytag-choices button { width: 100%; }
}

/* Avoid compounded WordPress column margins on long information pages. */
.split.wp-block-columns { margin-bottom: 0; }
.split > .rail { align-self: start; }
body:not(.home) .section { padding-block: 2.5rem; }
@media (max-width: 700px) {
  body:not(.home) .section { padding-block: 1.5rem; }
}

.action-bar[hidden] { display: none !important; }

/* Compact alternative finder link and homepage footer. */
.meeting-fallback { font-family:var(--font-display); font-size:.875rem; line-height:1.5; margin:.5rem 0 1rem; }
@media (min-width: 701px) { .footer-grid-home { grid-template-columns:repeat(3,minmax(0,1fr)); } }

/* Shortcuts replace the old nested menu with destinations inside each page. */
.page-sections { padding-block:1rem; border-bottom:1px solid var(--rule); font:600 .875rem/1.5 var(--font-display); }
.page-sections > span { color:var(--ink-soft); }
.page-sections ul { display:flex; flex-wrap:wrap; gap:.25rem 1.25rem; margin:.25rem 0 0; padding:0; list-style:none; }
.page-sections a { display:inline-flex; align-items:center; min-height:44px; }
.legacy-page-content { padding-block:2rem; overflow-wrap:anywhere; }
.legacy-page-content :is(input,select,textarea) { max-width:100%; }
/* Long contact addresses must reflow even when host plugins reset body wrapping. */
.row-list .row-item > .wp-block-group__inner-container > * { min-width:0; overflow-wrap:anywhere; }
.row-body, .row-body a, .page-sections a { overflow-wrap:anywhere; }
@media (max-width:700px) {
  .row-list .row-item > .wp-block-group__inner-container { grid-template-columns:minmax(0,1fr); }
}

/* Full legacy navigation: desktop columns and mobile disclosures. */
.site-header-wrap { z-index:30; }
.site-header .wrap { position:relative; }
.site-nav .nav-group { min-width:0; }
.site-nav summary { cursor:pointer; list-style:none; font:600 1rem/1.4 var(--font-display); }
.site-nav summary::-webkit-details-marker { display:none; }
.site-nav .nav-group > summary { display:flex; align-items:center; gap:.5rem; min-height:44px; color:var(--mist); padding:.5rem 0; }
.site-nav .nav-group > summary::after { content:'⌄'; font-size:.8em; }
.site-nav .nav-group[open] > summary::after { transform:rotate(180deg); }
.site-nav .nav-panel { position:absolute; z-index:40; top:100%; right:0; width:min(68rem,calc(100vw - 3rem)); max-height:70vh; overflow:auto; padding:1.25rem 1.5rem; border:1px solid var(--rule); border-radius:0 0 8px 8px; background:var(--mist); color:var(--ink); box-shadow:0 12px 24px #12233f26; }
.site-nav .nav-panel a { display:flex; align-items:center; min-height:44px; padding:.35rem 0; color:var(--spruce); font:500 .9rem/1.4 var(--font-display); white-space:normal; overflow-wrap:anywhere; }
.site-nav .nav-panel a::after { display:none; }
.site-nav .nav-panel a:hover { color:var(--ridge); text-decoration:underline; }
.site-nav .nav-panel .nav-overview { width:fit-content; font-weight:700; gap:.5rem; margin-bottom:.75rem; }
.nav-columns { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr)); gap:1.5rem; }
.nav-section { min-width:0; }
.site-nav .nav-section h2, .site-nav .nav-section > summary { font:700 .85rem/1.4 var(--font-display); color:var(--brick); margin:0 0 .35rem; }
.site-nav .nav-section > summary { min-height:44px; display:flex; align-items:center; }
.site-nav .nav-section ul { list-style:none; margin:0; padding:0; }
.site-nav :is(summary,a):focus-visible { outline:3px solid var(--lamplight); outline-offset:3px; }
.site-nav .nav-panel :is(summary,a):focus-visible { outline-color:var(--spruce); }
@media (max-width:1000px) {
 .nav-ready.nav-open .site-nav, .site-nav { grid-template-columns:minmax(0,1fr); }
 .site-nav .nav-group { width:100%; border-top:1px solid #ffffff26; }
 .site-nav .nav-group > summary { padding:.65rem .5rem; justify-content:space-between; }
 .site-nav .nav-panel { position:static; width:100%; max-height:none; padding:.5rem 1rem 1rem; box-shadow:none; border:0; border-radius:4px; }
 .nav-columns { grid-template-columns:minmax(0,1fr); gap:.25rem; }
 .site-nav .nav-section > summary { justify-content:space-between; min-height:48px; margin:0; }
 .site-nav .nav-section > summary::after { content:'+'; margin-left:.5rem; }
 .site-nav .nav-section[open] > summary::after { content:'−'; }
 .site-nav details.nav-section + details.nav-section { border-top:1px solid var(--rule); }
 .site-nav .nav-panel a { font-size:.95rem; }
 .site-nav .nav-section h2 { margin-top:.5rem; }
}
@media (min-width:1001px) {
 .site-nav .nav-group > summary { padding:.5rem .7rem; font-size:.92rem; }
}

/* A two-step directory, with one search entry point on each screen size. */
.site-nav [hidden] { display:none !important; }
.mobile-directory-tools { display:none; }
.site-nav .nav-search > summary { display:flex; gap:.4rem; align-items:center; min-height:44px; padding:.5rem .7rem; color:var(--mist); font-size:.92rem; }
.site-nav .nav-group[open] > summary, .site-nav .nav-search[open] > summary { color:var(--lamplight); background:#ffffff0a; border-radius:4px; }
.site-search { width:100%; max-width:42rem; margin:0; font-family:var(--font-display); }
.site-search label { display:block; margin-bottom:.4rem; font-size:.9rem; font-weight:700; }
.search-input-row { display:flex; flex-wrap:wrap; gap:.5rem; }
.site-search input { flex:1 1 12rem; width:100%; min-width:0; min-height:48px; border:1px solid #667386; border-radius:5px; background:#fff; color:var(--ink); font:400 1rem/1.5 var(--font-display); padding:.6rem .75rem; }
.site-search button { flex:0 1 auto; min-height:48px; border:0; border-radius:5px; background:var(--spruce); color:#fff; font:600 1rem/1.4 var(--font-display); padding:.6rem 1rem; cursor:pointer; }
.site-search :is(input,button):focus-visible { outline:3px solid var(--brick); outline-offset:3px; }
.menu-search-hint, .menu-match-count { margin:.5rem 0 0; font:400 .8rem/1.5 var(--font-display); }
.menu-match-count:empty { margin:0; }
.search-content { max-width:52rem; }
.search-content > h2 { margin-top:2rem; font-size:1.5rem; }
.search-resources { background:#fff; border:1px solid var(--rule); padding:1rem 1.25rem; margin-block:1.5rem; border-radius:6px; }
.search-resources h3 { font:700 1rem/1.4 var(--font-display); margin:0 0 .5rem; }
.search-resources ul { display:flex; gap:.5rem 1.5rem; flex-wrap:wrap; list-style:none; padding:0; margin:0; }
.search-resources a { display:inline-flex; align-items:center; min-height:44px; }
.search-result { padding:1.25rem 0; border-top:1px solid var(--rule); overflow-wrap:anywhere; }
.search-result h3 { font-size:1.35rem; margin:.3rem 0 .6rem; }
.search-result p { margin:0; }
.search-kind, .search-total { font:500 .8rem/1.5 var(--font-display); color:var(--ink-soft); }
.pagination .nav-links { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.5rem; }
.pagination .page-numbers { padding:.5rem .8rem; border:1px solid var(--rule); border-radius:4px; }
@media (prefers-reduced-motion:no-preference) {
 .site-nav .nav-group > summary::after { transition:transform 160ms ease; }
 .site-nav details[open] > .nav-panel { animation:menu-arrive 160ms ease-out; }
 .site-nav .nav-panel a { transition:color 140ms ease, background-color 140ms ease; }
 .nav-ready.nav-open .site-nav { animation:menu-arrive 180ms ease-out; }
 @keyframes menu-arrive { from { opacity:0; transform:translateY(-5px); } to { opacity:1; transform:none; } }
}
@media (min-width:1001px) {
 .site-nav { gap:.15rem; }
 .site-nav .nav-panel a { padding-inline:.4rem; border-radius:3px; }
 .site-nav .nav-panel a:hover { background:#1c3b6010; }
}
@media (max-width:1000px) {
 .nav-ready.nav-open .site-nav { display:block; max-height:70dvh; overflow-y:auto; overscroll-behavior:contain; padding:.75rem; background:var(--mist); color:var(--ink); border-radius:6px; scroll-padding:1rem; }
 .mobile-directory-tools { display:block; margin-bottom:.75rem; }
 .site-nav .nav-search { display:none; }
 .nav-ready .nav-group > summary { display:none; }
 .site-nav .nav-group { border-top:1px solid var(--rule); }
 .site-nav .nav-panel { padding:.6rem 0; }
 .site-nav .nav-meetings { color:var(--spruce); font-weight:700; padding:.5rem 0; }
 .site-nav .nav-panel .nav-overview { margin-bottom:.3rem; }
 .site-nav .nav-section h2 { margin:.65rem 0 .2rem; font-size:.75rem; }
 .site-nav .nav-section ul { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr)); gap:0 .75rem; }
 .site-nav .nav-panel a { font-size:.9rem; padding:.4rem .2rem; }
 .site-nav .nav-panel a:hover { background:#1c3b6010; }
 .site-nav .nav-panel :is(a,input,button):focus-visible, .site-nav .nav-meetings:focus-visible { outline-color:var(--brick); outline-offset:1px; }
}
@media (max-width:1000px) {
 .site-nav a.nav-meetings:hover, .site-nav a.nav-meetings[aria-current="page"] { color:var(--spruce); background:#1c3b6010; }
}

@media (max-width:1000px) {
 .site-header .brand { flex:1 1 12rem; }
 .site-header .menu-toggle { flex:0 0 auto; margin-left:auto; }
 .site-header .brand-wordmark { min-width:0; }
}

/* Preserve control boundaries and selected states in high contrast. */
.meeting-map-hint { color:var(--ink-soft); font:.875rem/1.5 var(--font-display); margin-block:.5rem; }
#bmlt-tabs .wncna-view-buttons [role="button"] { transition:none !important; }
.keytag-controls button, .clean-time-actions button[type="reset"] { border-color:var(--ink-soft); }
.keytag-choices button[aria-pressed="true"] { border-width:2px; }
@media (forced-colors:active) {
  :focus-visible, #bmlt-tabs :focus-visible,
  :is(#meeting_modal, #filter_modal, #geocoding_modal) :focus-visible,
  .site-nav :is(summary,a,input,button):focus-visible {
    outline:3px solid Highlight !important;
  }
  .keytag-choices button[aria-pressed="true"],
  #bmlt-tabs .wncna-view-buttons [aria-pressed="true"] {
    border:2px solid Highlight !important;
    text-decoration:underline;
  }
  .action-bar a, .menu-toggle, .site-search button,
  .wncna-meeting-action, .wncna-filter-reset { border:1px solid ButtonText !important; }
}

/* ----- mobile header + full-screen menu (≤1000px) -----
   Logo and wordmark on the left, Menu on the right, both centred on one row.
   Open, the header becomes a fixed full-screen panel: the brand row stays put
   and only the directory below it scrolls. Desktop dropdowns are unchanged. */
.site-nav .nav-desc { display:none; }
.menu-toggle .menu-icon-close { display:none; }
.menu-toggle[aria-expanded="true"] .menu-icon-open { display:none; }
.menu-toggle[aria-expanded="true"] .menu-icon-close { display:inline; }
@media (max-width:1000px) {
  .site-header .wrap { flex-wrap:nowrap; align-items:center; gap:.75rem; }
  .site-header .brand { flex:1 1 auto; min-width:0; width:auto; flex-direction:row; align-items:center; gap:.65rem; text-align:left; }
  .site-header .brand-mark { width:clamp(64px, 20vw, 112px); }
  .site-header .brand-wordmark { gap:.2rem; }
  .site-header .brand-name { font-size:clamp(.92rem, 3.7vw, 1.1rem); line-height:1.15; }
  .site-header .brand-descriptor { font-size:clamp(.6rem, 2.5vw, .72rem); letter-spacing:.03em; }
  .nav-ready .menu-toggle { flex:0 0 auto; align-self:center; margin-left:auto; gap:.45rem; min-width:44px; min-height:44px; padding:.45rem .75rem; border-color:rgba(238,240,242,.4); border-radius:6px; }
  .nav-ready .menu-toggle:hover { border-color:var(--lamplight); color:var(--lamplight); }
  .nav-ready .menu-toggle:focus-visible { outline:3px solid var(--lamplight); outline-offset:2px; }

  html.menu-open, html.menu-open body { overflow:hidden; }
  html.menu-open .site-header-wrap { z-index:100000; }
  /* Same row position as the closed header, so nothing jumps on open. */
  .nav-ready.nav-open { position:fixed; inset:0; z-index:100000; display:flex; flex-direction:column; padding-bottom:0; background:#12233f; }
  .nav-ready.nav-open > .wrap { flex:1 1 auto; min-height:0; display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:auto minmax(0,1fr); align-items:center; gap:.75rem; }
  .nav-ready.nav-open .site-nav {
    grid-column:1 / -1; align-self:stretch; display:block; max-height:none; height:100%;
    overflow-y:auto; overscroll-behavior:contain; margin:0 -1.5rem; padding:1.25rem 1.5rem calc(2rem + env(safe-area-inset-bottom));
    border-top:1px solid #ffffff1f; border-radius:0; background:var(--mist); color:var(--ink); animation:none;
  }
  .nav-ready.nav-open .site-nav > * { max-width:40rem; margin-inline:auto; }

  /* Search, then the two urgent actions. */
  .mobile-directory-tools { display:block; margin-bottom:1.25rem; }
  .mobile-directory-tools .site-search label { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .mobile-directory-tools .search-input-row { flex-wrap:nowrap; }
  .mobile-directory-tools .site-search input { flex:1 1 auto; }
  .mobile-directory-tools .site-search button { flex:0 0 auto; white-space:nowrap; }
  .menu-match-count { color:var(--ink-soft); }
  .menu-quick-actions { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:.6rem; margin-top:1rem; }
  .site-nav .menu-quick-actions a { display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:.15rem; min-height:64px; padding:.7rem .9rem; border-radius:8px; text-decoration:none; font:500 .82rem/1.35 var(--font-display); }
  .site-nav .menu-quick-actions a::after { display:none; }
  .site-nav .menu-quick-actions strong { font-size:1rem; font-weight:700; }
  .site-nav .menu-quick-find { background:var(--spruce); color:#fff; }
  .site-nav .menu-quick-find span { color:#ffffffcc; }
  .site-nav .menu-quick-call { background:var(--lamplight); color:var(--spruce-deep); }
  .site-nav .menu-quick-call span { font-variant-numeric:tabular-nums; font-weight:700; }
  .site-nav .menu-quick-actions a:hover { filter:brightness(1.07); color:inherit; }
  .site-nav .menu-quick-find:hover { color:#fff; }
  .site-nav.is-filtering .menu-quick-actions { display:none; }
  .site-nav .nav-meetings { display:none !important; }

  /* Sections: one tappable row each, with a short description. */
  .site-nav .nav-group { border:0; border-top:1px solid var(--rule); }
  .site-nav .nav-group:last-of-type { border-bottom:1px solid var(--rule); }
  .nav-ready .site-nav .nav-group > summary { display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"label icon" "desc icon"; align-items:center; gap:.1rem .75rem; min-height:60px; padding:.7rem .5rem; color:var(--spruce); background:none; border-radius:0; }
  .site-nav .nav-group > summary::after { grid-area:icon; content:''; width:.6rem; height:.6rem; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:translateY(-25%) rotate(45deg); margin-right:.35rem; font-size:0; }
  .site-nav .nav-group[open] > summary::after { transform:translateY(25%) rotate(-135deg); }
  .site-nav .nav-group[open] > summary { color:var(--brick); background:none; }
  .site-nav .nav-label { grid-area:label; font:700 1.15rem/1.3 var(--font-display); }
  .site-nav .nav-desc { grid-area:desc; display:block; color:var(--ink-soft); font:400 .85rem/1.4 var(--font-display); }
  .site-nav .nav-group > summary:focus-visible { outline:3px solid var(--brick); outline-offset:-3px; }
  .site-nav .nav-panel { padding:0 .5rem 1rem; background:none; overflow:visible; }
  .site-nav .nav-panel .nav-overview { display:inline-flex; margin:0 0 .25rem; color:var(--spruce); font-weight:700; }
  .site-nav .nav-section h2 { margin:.75rem 0 .15rem; color:var(--brick); font:700 .72rem/1.4 var(--font-display); letter-spacing:.08em; text-transform:uppercase; }
  .site-nav .nav-section ul { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap:0 1rem; }
  .site-nav .nav-panel a { padding:.45rem .5rem; margin-inline:-.5rem; border-radius:4px; font-size:.95rem; }
  .site-nav .nav-panel a[aria-current="page"] { color:var(--brick); font-weight:700; }
}
@media (max-width:1000px) and (prefers-reduced-motion:no-preference) {
  .nav-ready.nav-open { animation:menu-cover 200ms ease-out; }
  .site-nav .nav-group > summary::after { transition:transform 160ms ease; }
  @keyframes menu-cover { from { opacity:0; } to { opacity:1; } }
}
@media (max-width:480px) {
  .nav-ready .menu-toggle { width:48px; height:48px; padding:0; }
  .menu-toggle-label { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .site-header .brand { gap:.5rem; }
  .site-header .brand-mark { width:clamp(56px, 18vw, 84px); }
  .site-header .brand-name { font-size:clamp(.88rem, 4.1vw, 1.05rem); }
}
@media (max-width:359px) {
  .menu-quick-actions { grid-template-columns:minmax(0,1fr); }
}

/* ----- search results ----- */
.search-page .search-content { max-width:46rem; }
.search-page .site-search { max-width:none; }
.search-page .site-search label { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.search-page .search-input-row { flex-wrap:nowrap; }
.search-page .site-search input { flex:1 1 auto; min-height:52px; font-size:1.05rem; }
.search-page .site-search button { flex:0 0 auto; min-height:52px; padding-inline:1.25rem; white-space:nowrap; }
.search-status { margin:1rem 0 0; color:var(--ink-soft); font:500 .9rem/1.5 var(--font-display); }
.search-chips { margin-top:1.75rem; }
.search-chips h2 { margin:0 0 .6rem; color:var(--brick); font:700 .75rem/1.4 var(--font-display); letter-spacing:.08em; text-transform:uppercase; }
.search-chips ul { display:flex; flex-wrap:wrap; gap:.5rem; margin:0; padding:0; list-style:none; }
.search-chips a { display:inline-flex; align-items:center; min-height:44px; padding:.4rem .9rem; border:1px solid var(--rule); border-radius:999px; background:#fff; color:var(--spruce); font:600 .9rem/1.3 var(--font-display); text-decoration:none; }
.search-chips a:hover { border-color:var(--spruce); background:var(--mist); }
.search-results { margin:1.5rem 0 0; padding:0; list-style:none; }
.search-results .search-result { position:relative; padding:1.25rem 0; border-top:1px solid var(--rule); overflow-wrap:anywhere; }
.search-results .search-result:last-child { border-bottom:1px solid var(--rule); }
.search-result h2 { margin:.15rem 0 .4rem; font-size:1.3rem; line-height:1.3; }
.search-result h2 a { text-decoration:none; color:var(--spruce); }
.search-result h2 a::before { content:""; position:absolute; inset:0; }
.search-result:hover h2 a { color:var(--brick); text-decoration:underline; text-underline-offset:.15em; }
.search-result h2 a:focus-visible { outline:none; }
.search-result:focus-within { outline:3px solid var(--brick); outline-offset:4px; border-radius:2px; }
.search-meta { margin:0; color:var(--ink-soft); font:500 .78rem/1.4 var(--font-display); }
.search-kind { color:var(--brick); font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.search-snippet { margin:0; font-size:1rem; line-height:1.6; color:var(--ink); }
.search-snippet mark { background:#e9d9a8; color:inherit; padding:0 .1em; border-radius:2px; }
.search-path { margin:.4rem 0 0; color:var(--ink-soft); font:400 .78rem/1.4 var(--font-display); }
.search-pagination { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.75rem; margin-top:1.5rem; font:600 .9rem/1.4 var(--font-display); }
.search-pagination span { color:var(--ink-soft); font-weight:500; }
.search-pagination a { display:inline-flex; align-items:center; min-height:44px; padding:.4rem 1rem; border:1px solid var(--rule); border-radius:6px; background:#fff; text-decoration:none; }
.search-pagination a[rel="next"] { margin-left:auto; }
.search-empty { margin-top:1.75rem; }
.search-empty h2 { font-size:1.4rem; margin:0 0 .4rem; }
.search-empty p { margin:0; }
@media (forced-colors:active) { .search-snippet mark { background:Mark; color:MarkText; } }
