/* ==========================================================================
   BV Athenaeum Panels — foundation stylesheet
   --------------------------------------------------------------------------
   Brand tokens are bound to the live Elementor kit-6 Global Colors
   (see wp-content/uploads/elementor/css/post-6.css). They are defined on
   .bvp — a DESCENDANT of body.elementor-kit-6 — so the var(--e-global-color-*)
   lookups resolve against the live kit and propagate when Peter retunes a
   global. If the kit class is ever absent, the documented hex fallbacks apply.
   (Defining these on :root would NOT work: the globals live on body, which is
   not an ancestor of :root, so every token would silently fall back to hex.)
   ========================================================================== */

.bvp {
  /* ---------- brand colors (bound to Elementor Global Colors) ---------- */
  --ac-dark-red:   var(--e-global-color-primary,   #811517); /* burgundy — primary brand */
  --ac-gold:       var(--e-global-color-secondary, #B89434); /* gold — ACCENT ONLY */
  --ac-text:       var(--e-global-color-text,      #000000); /* body copy */
  --ac-cta-red:    var(--e-global-color-accent,    #CF2626); /* bright red — PRIMARY CTA */
  --ac-black:      var(--e-global-color-664ba73,   #000000);
  --ac-white:      var(--e-global-color-e6b8aae,   #FFFFFF);
  --ac-gold-tint:  var(--e-global-color-1001bd2,   #B8943421); /* gold @ ~13% — card fills */
  --ac-cream:      var(--e-global-color-7c3d0a0,   #F5F1E7); /* ACTC Cream — light bg */
  --ac-near-black: #11100D; /* dark-section bg option (not a global) */

  /* ---------- type (Typekit kit ncl7ool, loaded site-wide) ---------- */
  --ac-font-display: "freight-display-pro", Georgia, "Times New Roman", serif;
  --ac-font-body:    "freight-sans-pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --ac-font-label:   "futura-pt", "Futura", "Trebuchet MS", sans-serif;

  /* ---------- layout ---------- */
  --ac-radius-button: 6px;
  --ac-radius-card:   8px;
  --ac-container-max: 1500px;

  /* per-instance vertical padding (overridable by Elementor controls) */
  --bvp-pad-top:    72px;
  --bvp-pad-bottom: 72px;
  /* image overlay: rgb triplet + alpha, driven by the appearance controls */
  --bvp-ov-rgb:     17, 16, 13;
  --bvp-ov-a:       70%;

  position: relative;
  box-sizing: border-box;
  padding-block: var(--bvp-pad-top) var(--bvp-pad-bottom);
  padding-inline: 24px;
  font-family: var(--ac-font-body);
  font-size: 17px;
  line-height: 31px;
}

.bvp *,
.bvp *::before,
.bvp *::after { box-sizing: border-box; }

/* Theme defense: Astra/Elementor style p, li, cite, blockquote, and a with
   DIRECT element rules, and a direct rule always beats a color INHERITED
   from .bvp--dark/--light — which turned dark-scheme text dark-on-dark on
   the live site. Re-assert inherit with class specificity so the scheme
   wins, and strip the theme's blockquote chrome (border/italic/margins). */
.bvp p,
.bvp li,
.bvp cite { color: inherit; }
.bvp blockquote {
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  font-style: normal;
  color: inherit;
}
.bvp .bvp__body a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color .18s ease;
}
.bvp .bvp__body a:hover { color: var(--ac-gold); }

/* Accessibility: visible keyboard focus everywhere; honor reduced motion. */
.bvp a:focus-visible,
.bvp button:focus-visible,
.bvp summary:focus-visible,
.bvp input:focus-visible {
  outline: 2px solid var(--ac-gold);
  outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
  .bvp *, .bvp *::before, .bvp *::after {
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Stacked panels sit flush: neutralize Elementor's default 20px widget gap
   on any widget wrapping a panel, so multiple panels in one full-width
   container have no seams between their backgrounds. */
.elementor-widget:has(> .elementor-widget-container > .bvp) { margin-block-end: 0; }

/* Safety net: force a panel's background to span the full viewport even when
   it is NOT inside a full-width container (opt-in via the "Edge-to-edge"
   toggle). Normal setup — panel inside the Athenaeum Section container —
   does not need this. */
.bvp--bleed {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}

.bvp__container {
  position: relative;
  z-index: 1;
  max-width: var(--ac-container-max);
  margin-inline: auto;
}
.bvp--full   .bvp__container { max-width: none; }
.bvp--narrow .bvp__container { max-width: 1200px; } /* Astra's standard container */
.bvp--align-center { text-align: center; }

/* Optional description copy under a panel header (shared 'intro' control). */
.bvp__intro {
  font-size: 18px;
  line-height: 1.6;
  max-width: 800px;
  margin-top: 14px;
}
.bvp--align-center .bvp__intro { margin-inline: auto; }

/* ---------- color scheme = TEXT treatment (background is separate) ---------- */
/* --bvp-card-bg/bd: shared card/box fill per scheme — gold tint on light
   (the brand's card-fill token), translucent cream on dark (reference look,
   corrected to the official cream). Used by detail boxes, checklists,
   cards, and quotes so every "box" in every panel matches. */
.bvp--light                { color: var(--ac-text);
                             --bvp-card-bg: var(--ac-gold-tint);
                             --bvp-card-bd: rgba(17, 16, 13, .12); }
.bvp--light .bvp__heading  { color: var(--ac-dark-red); }
.bvp--light .bvp__eyebrow  { color: var(--ac-gold); }
.bvp--light .bvp__body     { color: var(--ac-text); }

.bvp--dark                 { color: var(--ac-cream);
                             --bvp-card-bg: rgba(245, 241, 231, .08);
                             --bvp-card-bd: rgba(245, 241, 231, .18); }
.bvp--dark .bvp__heading   { color: var(--ac-white); }
.bvp--dark .bvp__eyebrow   { color: var(--ac-gold); }
.bvp--dark .bvp__body      { color: var(--ac-cream); }

/* ---------- background fill ---------- */
.bvp--bg-cream    { background-color: var(--ac-cream); }
/* Parchment = the gold-tint card token laid over cream: a deeper, warmer
   cream for alternating stacked light panels. */
.bvp--bg-parchment {
  background-color: var(--ac-cream);
  background-image: linear-gradient(var(--ac-gold-tint), var(--ac-gold-tint));
}
.bvp--bg-white         { background-color: var(--ac-white); }
.bvp--bg-burgundy      { background-color: var(--ac-dark-red); }
.bvp--bg-burgundy-deep { background-color: #7B0F12; } /* event-sidebar burgundy (tokens sheet) */
.bvp--bg-black         { background-color: var(--ac-near-black); }

/* Gold hairline — separates stacked panels that share a background.
   color-mix softens the live gold global; the rgba fallback matches the
   documented hex at the same alpha for older browsers. */
.bvp--rule-top    { border-top:    1px solid rgba(184, 148, 52, .45); border-top-color:    color-mix(in srgb, var(--ac-gold) 45%, transparent); }
.bvp--rule-bottom { border-bottom: 1px solid rgba(184, 148, 52, .45); border-bottom-color: color-mix(in srgb, var(--ac-gold) 45%, transparent); }
.bvp--bg-image    { background-size: cover; background-position: center; background-repeat: no-repeat; }
.bvp--bg-image::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background-color: rgba(var(--bvp-ov-rgb), var(--bvp-ov-a));
}
/* Gradient overlay style: solid on the left, fading right so the photo
   shows through beside left-set text (the reference hero treatment). */
.bvp--ov-gradient::before {
  background-color: transparent;
  background-image: linear-gradient(
    90deg,
    rgba(var(--bvp-ov-rgb), var(--bvp-ov-a)) 0%,
    rgba(var(--bvp-ov-rgb), calc(var(--bvp-ov-a) * .78)) 55%,
    rgba(var(--bvp-ov-rgb), calc(var(--bvp-ov-a) * .55)) 100%
  );
}

/* ---------- textures ----------
   A decorative layer over the background fill, under the content. Pure CSS
   (gradients + two inline SVGs) — no extra HTTP requests. Rendered on
   ::after (the photo overlay owns ::before).

   STRENGTH: every texture's opacity multiplies --bvp-tx-mult (0–1).
   The site-wide default is emitted from Settings → Athenaeum Widgets
   (75% out of the box); each panel's "Texture Strength" slider overrides
   it. Gradient/SVG alphas below are the 100% ("maximum") look. */
.bvp--tx-grain::after,
.bvp--tx-pinstripe::after,
.bvp--tx-glow::after,
.bvp--tx-glow-white::after,
.bvp--tx-vignette::after,
.bvp--tx-flourish::after,
.bvp--tx-emblem::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: var(--bvp-tx-mult, .75);
}

/* Paper grain — fine tooth on cream; film grain on dark. */
.bvp--tx-grain::after {
  background-image: 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.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: calc(var(--bvp-tx-mult, .75) * .28);
}
.bvp--dark.bvp--tx-grain::after {
  opacity: calc(var(--bvp-tx-mult, .75) * .38);
  filter: invert(1);
}

/* Pinstripe — hairline diagonal weave, formalwear-quiet. */
.bvp--light.bvp--tx-pinstripe::after {
  background-image: repeating-linear-gradient(135deg, rgba(17, 16, 13, .07) 0 1px, transparent 1px 9px);
}
.bvp--dark.bvp--tx-pinstripe::after {
  background-image: repeating-linear-gradient(135deg, rgba(245, 241, 231, .08) 0 1px, transparent 1px 9px);
}

/* Stage glow, gold — warm light from the rig; strongest on burgundy/night. */
.bvp--tx-glow::after {
  background-image: radial-gradient(ellipse 90% 75% at 50% -10%, rgba(184, 148, 52, .45), transparent 72%);
}
.bvp--light.bvp--tx-glow::after {
  background-image: radial-gradient(ellipse 90% 75% at 50% -10%, rgba(184, 148, 52, .33), transparent 72%);
}

/* Stage glow, white — a neutral spotlight wash. */
.bvp--tx-glow-white::after {
  background-image: radial-gradient(ellipse 90% 75% at 50% -10%, rgba(255, 255, 255, .55), transparent 72%);
}
.bvp--light.bvp--tx-glow-white::after {
  background-image: radial-gradient(ellipse 90% 75% at 50% -10%, rgba(255, 255, 255, .75), transparent 72%);
}

/* Vignette — darkened edges, a photographic hush. */
.bvp--tx-vignette::after {
  background-image: radial-gradient(ellipse 105% 105% at 50% 50%, transparent 42%, rgba(17, 16, 13, .60) 100%);
}
.bvp--light.bvp--tx-vignette::after {
  background-image: radial-gradient(ellipse 105% 105% at 50% 50%, transparent 48%, rgba(17, 16, 13, .38) 100%);
}

/* Brand mark — the Athenaeum logo flourish, applied as a CSS mask so the
   fill comes from the LIVE brand tokens: burgundy on light styles, gold on
   dark. Two placements: corner (bleeds off bottom-right) and centered
   emblem (a watermarked seal behind the content). */
.bvp--tx-flourish::after,
.bvp--tx-emblem::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 299.853 197.819'%3E%3Cpath d='M.002,51.818l-.002-2.439c.979-10.145,7.776-18.527,16.518-23.653,2.68-1.572,5.081-3.069,7.913-4.347,12.699-5.727,27.071-5.754,39.787.016,15.208,6.901,26.256,20.526,32.585,35.808,12.177,29.405,8.027,67.134-13.534,91.166-4.657,5.136-9.898,9.346-15.955,12.607-14.476,7.795-31.753,7.806-46.125-.116,15.335-.695,27.876-8.973,36.889-20.875,14.977-20.173,18.209-47.947,10.532-71.639-4.687-14.464-13.995-27.991-27.391-35.598.616,4.039.154,7.686-1.303,11.366-3.3,8.333-9.957,15.017-18.27,18.378-3.521,1.424-7.11,1.951-10.769,1.457C4.506,63.09.306,58.002.002,51.818Z'/%3E%3Cpath d='M161.439,0c5.83,2.178,6.929,11.134,3.093,16.209-1.075,1.422-2.597,2.208-4.171,2.209-5.084.004-8.245-8.108-5.2-14.576.883-1.876,2.322-3.192,4.118-3.841h2.16Z'/%3E%3Cpath d='M140.319,0c1.79.678,3.228,1.974,4.109,3.846,2.792,5.932.381,13.891-4.68,14.534-1.959.249-3.733-.789-4.882-2.416-2.488-3.523-2.674-8.242-.839-12.133.887-1.881,2.299-3.197,4.132-3.832h2.16Z'/%3E%3Cpath d='M231.866,66.966c-8.539,24.775-4.967,54.255,11.46,74.809,4.58,5.622,9.904,10.293,16.268,13.738,5.917,3.223,12.158,4.959,19.158,5.38-13.564,7.457-29.78,7.879-43.787,1.225-7.262-3.449-13.546-8.408-18.873-14.458-21.652-24.855-25.22-63.82-11.623-93.333,6.625-14.381,17.404-26.869,32.043-33.244,12.909-5.622,27.421-5.3,40.092.78l6.93,3.893c7.924,4.452,15.428,13.41,16.319,22.505l-.011,4.7c-.603,5.99-5.16,10.353-11.064,11.044-4.028.471-7.792-.357-11.568-1.963-10.699-4.827-20.382-16.995-18.4-29.306-12.786,7.253-22.058,20.054-26.944,34.229Z'/%3E%3Cpath d='M143.238,82.799c-.625,2.154-3.415.736-5.688-.838-10.726-7.428-21.566-20.045-28.735-30.985-.922-1.407-1.586-2.759-1.895-4.428-1.092-5.888-.989-11.917.51-17.731.568-2.205,1.42-4.322,2.994-5.91,2.195-2.214,8.472,2.72,11.184,5.207,6.595,6.048,12.375,12.822,17.285,20.32,1.319,2.014,2.683,4.048,3.21,6.406,1.597,7.154,2.058,14.381,2.027,21.703-.009,2.207-.309,4.247-.892,6.257Z'/%3E%3Cpath d='M159.296,83.946c-1.871.502-2.473-4.748-2.459-7.655.035-7.31.409-14.559,2.121-21.688.613-2.551,2.185-4.758,3.628-6.922,4.884-7.326,10.576-13.912,17.071-19.825,2.636-2.399,8.608-7.013,10.778-5.019,1.592,1.464,2.444,3.541,3.018,5.652,1.547,5.685,1.699,11.586.719,17.407-.208,1.235-.494,2.631-1.168,3.706-6.199,9.886-13.707,18.708-22.311,26.575-2.56,2.341-5.115,4.337-7.96,6.235-1.025.683-2.086,1.171-3.436,1.533Z'/%3E%3Cpath d='M125.468,193.434c-2.216,2.008-6.901,5.467-8.638,4.056-1.387-1.126-2.1-2.911-2.584-4.638-1.322-4.706-1.458-9.562-.685-14.399.161-1.009.371-2.304.932-3.196,5.746-9.143,12.773-17.3,20.997-24.284,2.041-1.734,6.329-4.922,7.732-4.332,1.051.443,1.459,4.064,1.458,6.259-.004,6.076-.372,12.046-1.722,17.98-.45,1.979-1.654,3.718-2.768,5.415-4.173,6.357-9.098,12.043-14.721,17.138Z'/%3E%3Cpath d='M125.818,141.942c-2.258,2.07-7.093,5.754-8.934,4.378-1.325-.991-2.027-2.627-2.509-4.229-1.499-4.985-1.62-10.209-.722-15.352.154-.881.41-2.007.901-2.779,5.814-9.156,12.856-17.395,21.159-24.352,1.966-1.647,6.112-4.695,7.433-4.178,1.142.446,1.53,4.07,1.533,6.352.006,6.013-.401,11.907-1.676,17.786-.368,1.698-1.337,3.238-2.278,4.71-4.186,6.55-9.188,12.42-14.907,17.665Z'/%3E%3Cpath d='M183.135,197.482c-2.157,1.591-7.786-3.199-10.186-5.5-4.783-4.588-9.029-9.547-12.721-15.074-1.246-1.866-2.615-3.783-3.142-5.986-1.437-6.008-1.745-12.099-1.749-18.26-.001-2.022.43-5.391,1.34-5.955,1.372-.851,5.997,2.691,8.139,4.518,7.728,6.594,14.319,14.254,19.909,22.736.775,1.176,1.348,2.359,1.596,3.744.901,5.031.838,10.165-.547,15.091-.478,1.699-1.149,3.587-2.639,4.686Z'/%3E%3Cpath d='M183.235,146.266c-1.691,1.511-6.43-1.98-8.622-3.959-5.93-5.353-11.086-11.391-15.4-18.128-.95-1.484-1.875-3.05-2.238-4.759-1.258-5.917-1.671-11.836-1.637-17.88.013-2.265.408-5.774,1.584-6.13,1.422-.43,5.673,2.745,7.672,4.444,8.17,6.941,15.161,15.066,20.883,24.15,2.133,3.387,2.29,18.211-2.242,22.263Z'/%3E%3Cpath d='M154.16,39.3c-1.105,1.464-2.632,2.161-4.12,2.184-1.59.025-3.127-.778-4.201-2.208-3.016-4.019-3.015-9.973-.002-13.993,1.029-1.374,2.499-2.163,3.984-2.216,1.605-.057,3.179.696,4.287,2.127,3.06,3.953,3.132,10.025.052,14.106Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 299.853 197.819'%3E%3Cpath d='M.002,51.818l-.002-2.439c.979-10.145,7.776-18.527,16.518-23.653,2.68-1.572,5.081-3.069,7.913-4.347,12.699-5.727,27.071-5.754,39.787.016,15.208,6.901,26.256,20.526,32.585,35.808,12.177,29.405,8.027,67.134-13.534,91.166-4.657,5.136-9.898,9.346-15.955,12.607-14.476,7.795-31.753,7.806-46.125-.116,15.335-.695,27.876-8.973,36.889-20.875,14.977-20.173,18.209-47.947,10.532-71.639-4.687-14.464-13.995-27.991-27.391-35.598.616,4.039.154,7.686-1.303,11.366-3.3,8.333-9.957,15.017-18.27,18.378-3.521,1.424-7.11,1.951-10.769,1.457C4.506,63.09.306,58.002.002,51.818Z'/%3E%3Cpath d='M161.439,0c5.83,2.178,6.929,11.134,3.093,16.209-1.075,1.422-2.597,2.208-4.171,2.209-5.084.004-8.245-8.108-5.2-14.576.883-1.876,2.322-3.192,4.118-3.841h2.16Z'/%3E%3Cpath d='M140.319,0c1.79.678,3.228,1.974,4.109,3.846,2.792,5.932.381,13.891-4.68,14.534-1.959.249-3.733-.789-4.882-2.416-2.488-3.523-2.674-8.242-.839-12.133.887-1.881,2.299-3.197,4.132-3.832h2.16Z'/%3E%3Cpath d='M231.866,66.966c-8.539,24.775-4.967,54.255,11.46,74.809,4.58,5.622,9.904,10.293,16.268,13.738,5.917,3.223,12.158,4.959,19.158,5.38-13.564,7.457-29.78,7.879-43.787,1.225-7.262-3.449-13.546-8.408-18.873-14.458-21.652-24.855-25.22-63.82-11.623-93.333,6.625-14.381,17.404-26.869,32.043-33.244,12.909-5.622,27.421-5.3,40.092.78l6.93,3.893c7.924,4.452,15.428,13.41,16.319,22.505l-.011,4.7c-.603,5.99-5.16,10.353-11.064,11.044-4.028.471-7.792-.357-11.568-1.963-10.699-4.827-20.382-16.995-18.4-29.306-12.786,7.253-22.058,20.054-26.944,34.229Z'/%3E%3Cpath d='M143.238,82.799c-.625,2.154-3.415.736-5.688-.838-10.726-7.428-21.566-20.045-28.735-30.985-.922-1.407-1.586-2.759-1.895-4.428-1.092-5.888-.989-11.917.51-17.731.568-2.205,1.42-4.322,2.994-5.91,2.195-2.214,8.472,2.72,11.184,5.207,6.595,6.048,12.375,12.822,17.285,20.32,1.319,2.014,2.683,4.048,3.21,6.406,1.597,7.154,2.058,14.381,2.027,21.703-.009,2.207-.309,4.247-.892,6.257Z'/%3E%3Cpath d='M159.296,83.946c-1.871.502-2.473-4.748-2.459-7.655.035-7.31.409-14.559,2.121-21.688.613-2.551,2.185-4.758,3.628-6.922,4.884-7.326,10.576-13.912,17.071-19.825,2.636-2.399,8.608-7.013,10.778-5.019,1.592,1.464,2.444,3.541,3.018,5.652,1.547,5.685,1.699,11.586.719,17.407-.208,1.235-.494,2.631-1.168,3.706-6.199,9.886-13.707,18.708-22.311,26.575-2.56,2.341-5.115,4.337-7.96,6.235-1.025.683-2.086,1.171-3.436,1.533Z'/%3E%3Cpath d='M125.468,193.434c-2.216,2.008-6.901,5.467-8.638,4.056-1.387-1.126-2.1-2.911-2.584-4.638-1.322-4.706-1.458-9.562-.685-14.399.161-1.009.371-2.304.932-3.196,5.746-9.143,12.773-17.3,20.997-24.284,2.041-1.734,6.329-4.922,7.732-4.332,1.051.443,1.459,4.064,1.458,6.259-.004,6.076-.372,12.046-1.722,17.98-.45,1.979-1.654,3.718-2.768,5.415-4.173,6.357-9.098,12.043-14.721,17.138Z'/%3E%3Cpath d='M125.818,141.942c-2.258,2.07-7.093,5.754-8.934,4.378-1.325-.991-2.027-2.627-2.509-4.229-1.499-4.985-1.62-10.209-.722-15.352.154-.881.41-2.007.901-2.779,5.814-9.156,12.856-17.395,21.159-24.352,1.966-1.647,6.112-4.695,7.433-4.178,1.142.446,1.53,4.07,1.533,6.352.006,6.013-.401,11.907-1.676,17.786-.368,1.698-1.337,3.238-2.278,4.71-4.186,6.55-9.188,12.42-14.907,17.665Z'/%3E%3Cpath d='M183.135,197.482c-2.157,1.591-7.786-3.199-10.186-5.5-4.783-4.588-9.029-9.547-12.721-15.074-1.246-1.866-2.615-3.783-3.142-5.986-1.437-6.008-1.745-12.099-1.749-18.26-.001-2.022.43-5.391,1.34-5.955,1.372-.851,5.997,2.691,8.139,4.518,7.728,6.594,14.319,14.254,19.909,22.736.775,1.176,1.348,2.359,1.596,3.744.901,5.031.838,10.165-.547,15.091-.478,1.699-1.149,3.587-2.639,4.686Z'/%3E%3Cpath d='M183.235,146.266c-1.691,1.511-6.43-1.98-8.622-3.959-5.93-5.353-11.086-11.391-15.4-18.128-.95-1.484-1.875-3.05-2.238-4.759-1.258-5.917-1.671-11.836-1.637-17.88.013-2.265.408-5.774,1.584-6.13,1.422-.43,5.673,2.745,7.672,4.444,8.17,6.941,15.161,15.066,20.883,24.15,2.133,3.387,2.29,18.211-2.242,22.263Z'/%3E%3Cpath d='M154.16,39.3c-1.105,1.464-2.632,2.161-4.12,2.184-1.59.025-3.127-.778-4.201-2.208-3.016-4.019-3.015-9.973-.002-13.993,1.029-1.374,2.499-2.163,3.984-2.216,1.605-.057,3.179.696,4.287,2.127,3.06,3.953,3.132,10.025.052,14.106Z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
/* Tinted from the live brand tokens. */
.bvp--light.bvp--tx-flourish::after,
.bvp--light.bvp--tx-emblem::after { background-color: var(--ac-dark-red); }
.bvp--dark.bvp--tx-flourish::after,
.bvp--dark.bvp--tx-emblem::after { background-color: var(--ac-gold); }

/* Corner: large, bleeding off the lower-right. */
.bvp--tx-flourish::after {
  -webkit-mask-position: right -140px bottom -80px;
  mask-position: right -140px bottom -80px;
  -webkit-mask-size: 660px;
  mask-size: 660px;
  opacity: calc(var(--bvp-tx-mult, .75) * .14);
}
.bvp--dark.bvp--tx-flourish::after { opacity: calc(var(--bvp-tx-mult, .75) * .22); }

/* Emblem: centered behind the content, like a watermarked seal. */
.bvp--tx-emblem::after {
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: min(680px, 85%);
  mask-size: min(680px, 85%);
  opacity: calc(var(--bvp-tx-mult, .75) * .11);
}
.bvp--dark.bvp--tx-emblem::after { opacity: calc(var(--bvp-tx-mult, .75) * .17); }

/* ---------- type elements ---------- */
.bvp__eyebrow {
  font-family: var(--ac-font-label);
  text-transform: uppercase;
  letter-spacing: 2px;
  font-weight: 600;
  font-size: 15px;
  margin: 0 0 18px;
}
.bvp__heading {
  font-family: var(--ac-font-display);
  font-weight: 300;
  line-height: 1.08;
  margin: 0 0 22px;
  font-size: clamp(38px, 5vw, 64px);
}
.bvp__body {
  font-family: var(--ac-font-body);
  font-size: 17px;
  line-height: 31px;
  margin: 0 0 16px;
}
.bvp__body:last-child { margin-bottom: 0; }

/* ---------- buttons ---------- */
.bvp__btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 28px;
}
.bvp--align-center .bvp__btn-row { justify-content: center; }

/* .bvp prefix: theme content rules (.entry-content a) outrank a bare class,
   which would repaint button text with the theme link color. */
.bvp .bvp__btn {
  font-family: var(--ac-font-label);
  font-weight: 500;
  letter-spacing: 2px;
  text-transform: uppercase;
  font-size: 14px;
  line-height: 1;
  border-radius: var(--ac-radius-button);
  border: 2px solid transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 15px 26px;
  text-decoration: none;
  cursor: pointer;
  transition: transform .18s ease, background-color .18s ease, color .18s ease;
}
.bvp .bvp__btn:hover { transform: translateY(-2px); }

.bvp .bvp__btn--primary { background-color: var(--ac-cta-red); color: var(--ac-white); }
/* Scheme-aware hover: burgundy works on light backgrounds, but on burgundy
   panels it would vanish — dark schemes hover to gold (the live-site pattern). */
.bvp--light .bvp__btn--primary:hover { background-color: var(--ac-dark-red); color: var(--ac-white); }
.bvp--dark  .bvp__btn--primary:hover { background-color: var(--ac-gold); color: var(--ac-near-black); }

.bvp .bvp__btn--secondary     { background: transparent; }
.bvp--light .bvp__btn--secondary       { border-color: var(--ac-dark-red); color: var(--ac-dark-red); }
.bvp--light .bvp__btn--secondary:hover { background-color: var(--ac-dark-red); color: var(--ac-white); }
.bvp--dark  .bvp__btn--secondary       { border-color: var(--ac-cream); color: var(--ac-cream); }
.bvp--dark  .bvp__btn--secondary:hover { background-color: var(--ac-cream); color: var(--ac-dark-red); }

/* Ghost gold — gold outline + label; hover fills gold. */
.bvp .bvp__btn--gold {
  background: transparent;
  border-color: var(--ac-gold);
  color: var(--ac-gold);
}
.bvp .bvp__btn--gold:hover {
  background-color: var(--ac-gold);
  color: var(--ac-near-black);
}

/* Solid gold — as used on the live site (top-bar buttons: gold fill, white
   label). Scheme-aware hover so it never blends into its own background. */
.bvp .bvp__btn--gold-solid { background-color: var(--ac-gold); color: var(--ac-white); }
.bvp--light .bvp__btn--gold-solid:hover { background-color: var(--ac-dark-red); color: var(--ac-white); }
.bvp--dark  .bvp__btn--gold-solid:hover { background-color: var(--ac-cream); color: var(--ac-dark-red); }

/* ==========================================================================
   PANEL: Hero (.bvp-hero) — maps to reference .dante-hero
   ========================================================================== */
.bvp-hero {
  display: flex;
  align-items: center;
  min-height: var(--bvp-min-height, 760px);
  --bvp-pad-top: 96px;
  --bvp-pad-bottom: 96px;
}

/* Compact size: a short banner-height hero with smaller type for interior
   pages. The Minimum Height slider (per-widget CSS) still overrides it. */
.bvp-hero.bvp-hero--compact {
  --bvp-min-height: 400px;
  --bvp-pad-top: 56px;
  --bvp-pad-bottom: 56px;
}
.bvp-hero--compact .bvp-hero__title   { font-size: clamp(36px, 6vw, 76px); }
.bvp-hero--compact .bvp-hero__subhead { font-size: clamp(18px, 2vw, 26px); }
.bvp-hero--compact .bvp-hero__copy    { font-size: 18px; }

/* The hero is a flex parent, so the container would otherwise shrink-to-fit
   its widest child (e.g. the 980px facts strip) and auto-center as a block —
   drifting off the left gutter. Full width keeps it anchored like every
   other panel; the inner max-widths still keep the text measure tight. */
.bvp-hero .bvp__container { width: 100%; }

.bvp-hero__title {
  font-size: clamp(48px, 9vw, 132px);
  line-height: 1.02;
  margin-bottom: 18px;
}

.bvp-hero__subhead {
  font-family: var(--ac-font-body);
  font-weight: 500;
  font-size: clamp(22px, 3vw, 38px);
  line-height: 1.15;
  max-width: 850px;
  margin: 0 0 24px;
}
.bvp--align-center .bvp-hero__subhead { margin-inline: auto; }

.bvp-hero__copy {
  max-width: 760px;
  font-size: 20px;
  line-height: 1.55;
  margin-bottom: 0;
}
.bvp--align-center .bvp-hero__copy { margin-inline: auto; }

.bvp-hero__facts {
  display: grid;
  grid-template-columns: repeat(var(--bvp-facts-cols, 3), 1fr);
  gap: 18px;
  margin-top: 52px;
  max-width: 980px;
}
.bvp--align-center .bvp-hero__facts { margin-inline: auto; }

.bvp-hero__fact {
  background: rgba(245, 241, 231, .09);
  border: 1px solid rgba(245, 241, 231, .22);
  border-radius: var(--ac-radius-card);
  padding: 24px;
}
/* On light hero schemes, tint the fact cards toward ink instead of cream. */
.bvp--light .bvp-hero__fact {
  background: rgba(17, 16, 13, .05);
  border-color: rgba(17, 16, 13, .14);
}

/* Plain style: strip the card chrome, keep just figure + label. */
.bvp-hero__facts--plain .bvp-hero__fact {
  background: none;
  border: none;
  padding: 0;
}

.bvp-hero__fact strong {
  font-family: var(--ac-font-label);
  font-weight: 700;
  display: block;
  font-size: 26px;
  line-height: 1.1;
  margin-bottom: 8px;
  color: var(--ac-white);
}
.bvp--light .bvp-hero__fact strong { color: var(--ac-dark-red); }

.bvp-hero__fact span {
  font-size: 16px;
  line-height: 1.35;
  opacity: .85;
}

/* ---- Hero split layout (text + image) ---- */
.bvp-hero--split .bvp__container {
  display: grid;
  gap: 54px;
  align-items: center;
}
/* Per-side templates so the image column (--bvp-media-col) keeps its width
   whichever side it's on. Media-left also reorders the image to the first slot. */
.bvp-hero--split.bvp-hero--media-right .bvp__container { grid-template-columns: 1fr var(--bvp-media-col, .95fr); }
.bvp-hero--split.bvp-hero--media-left  .bvp__container { grid-template-columns: var(--bvp-media-col, .95fr) 1fr; }
.bvp-hero--media-left .bvp-hero__media { order: -1; }

.bvp-hero__media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--ac-radius-card);
}

/* ==========================================================================
   PANEL: Section Intro (.bvp-intro) — maps to reference .dante-intro
   ========================================================================== */
.bvp-intro__title { max-width: 980px; }
.bvp--align-center .bvp-intro__title { margin-inline: auto; }

.bvp-intro__body {
  font-size: 21px;
  line-height: 1.6;
  max-width: 900px;
}
.bvp--align-center .bvp-intro__body { margin-inline: auto; }

/* Side-by-side layout: eyebrow + heading left, copy + buttons right —
   an editorial alternative so stacked intros don't all read the same. */
.bvp-intro--split { text-align: left; }
.bvp-intro--split .bvp__container {
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 54px;
  align-items: center;
}
.bvp-intro--split .bvp-intro__title,
.bvp-intro--split .bvp-intro__body { margin-inline: 0; }
.bvp-intro--split .bvp-intro__title { margin-bottom: 0; }

/* ==========================================================================
   PANEL: Feature Split (.bvp-split) — maps to reference .dante-two-col
   ========================================================================== */
.bvp-split--cols .bvp__container {
  display: grid;
  gap: 54px;
  align-items: center;
}
/* Per-side templates so the opposite column keeps its width whichever side
   it's on (same pattern as the hero split). */
.bvp-split--cols.bvp-split--media-right .bvp__container { grid-template-columns: 1fr var(--bvp-media-col, .95fr); }
.bvp-split--cols.bvp-split--media-left  .bvp__container { grid-template-columns: var(--bvp-media-col, .95fr) 1fr; }
.bvp-split--media-left .bvp-split__media { order: -1; }

.bvp-split__copy {
  font-size: 19px;
  line-height: 1.58;
}

/* Detail box — label/value rows in a branded card. */
.bvp-split__detail {
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
  border-radius: var(--ac-radius-card);
  padding: 26px 30px;
  margin-top: 28px;
}
.bvp-split__detail p {
  margin: 0 0 12px;
  font-size: 17px;
  line-height: 1.5;
}
.bvp-split__detail p:last-child { margin-bottom: 0; }
.bvp--light .bvp-split__detail strong { color: var(--ac-dark-red); }
.bvp--dark  .bvp-split__detail strong { color: var(--ac-white); }

/* Poster frame — branded mat around the image. */
.bvp-split__poster {
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
  border-radius: var(--ac-radius-card);
  padding: 16px;
}

/* Soft shadow — a warm ink lift; deeper on dark schemes so it still reads. */
.bvp-media--shadow img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--ac-radius-card);
  box-shadow: 0 22px 48px -16px rgba(17, 16, 13, .38), 0 6px 16px -8px rgba(17, 16, 13, .22);
}
.bvp--dark .bvp-media--shadow img {
  box-shadow: 0 24px 52px -14px rgba(0, 0, 0, .65), 0 6px 16px -8px rgba(0, 0, 0, .4);
}

/* Glass — frosted translucent mat; shows best over photos and textures. */
.bvp-media--glass {
  padding: 14px;
  border-radius: calc(var(--ac-radius-card) + 4px);
  background: rgba(255, 255, 255, .14);
  border: 1px solid rgba(255, 255, 255, .28);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  box-shadow: 0 18px 40px -18px rgba(17, 16, 13, .35);
}
.bvp--light .bvp-media--glass {
  background: rgba(255, 255, 255, .45);
  border-color: rgba(17, 16, 13, .10);
}
.bvp-media--glass img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--ac-radius-card);
}
.bvp-split__media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--ac-radius-card);
}
.bvp-split__poster img { border-radius: calc(var(--ac-radius-card) - 2px); }

/* Checklist — gold-check items in branded pills. */
.bvp-split__list {
  display: grid;
  grid-template-columns: repeat(var(--bvp-list-cols, 2), 1fr);
  gap: 14px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.bvp-split__list li {
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
  border-radius: var(--ac-radius-card);
  padding: 15px 18px;
  font-weight: 600;
  font-size: 17px;
  line-height: 1.35;
}
.bvp-split__list li::before {
  content: "✓";
  color: var(--ac-gold);
  font-weight: 700;
  margin-right: 10px;
}

/* ==========================================================================
   PANEL: Card Row (.bvp-cards) — maps to reference .dante-cards
   ========================================================================== */
.bvp-cards__header { margin-bottom: 38px; }
.bvp-cards__header .bvp__heading { margin-bottom: 0; }

.bvp-cards__grid {
  display: grid;
  grid-template-columns: repeat(var(--bvp-cards-cols, 3), 1fr);
  gap: 22px;
  text-align: left; /* cards read left-set even in a centered panel */
}

.bvp-card {
  display: block;
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
  border-radius: var(--ac-radius-card);
  padding: 34px;
  color: inherit;
  text-decoration: none;
}
.bvp-cards__grid--plain .bvp-card {
  background: none;
  border-color: transparent;
  padding: 0;
}
.bvp a.bvp-card { color: inherit; text-decoration: none; transition: transform .18s ease, border-color .18s ease; }
.bvp a.bvp-card:hover { color: inherit; transform: translateY(-4px); border-color: var(--ac-gold); }

.bvp-card__icon { font-size: 34px; line-height: 1; margin-bottom: 18px; }
.bvp-card__icon svg { width: 1em; height: 1em; fill: currentColor; }
.bvp--dark  .bvp-card__icon { color: var(--ac-gold); }
.bvp--light .bvp-card__icon { color: var(--ac-dark-red); }

.bvp-card__title {
  font-family: var(--ac-font-label);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  font-size: 22px;
  line-height: 1.2;
  margin: 0 0 14px;
}
.bvp--dark  .bvp-card__title { color: var(--ac-gold); }
.bvp--light .bvp-card__title { color: var(--ac-dark-red); }

.bvp-card__text {
  font-size: 17px;
  line-height: 1.55;
  margin: 0;
  opacity: .92;
}

/* Staggered: every other card drops for an editorial rhythm (desktop only).
   --bvp-stagger is set by the widget's Stagger Distance slider. */
.bvp-cards__grid--stagger { padding-bottom: var(--bvp-stagger, 26px); }
.bvp-cards__grid--stagger .bvp-card:nth-child(even) { transform: translateY(var(--bvp-stagger, 26px)); }
/* Linked staggered cards keep the hover lift relative to their offset. */
.bvp-cards__grid--stagger a.bvp-card:nth-child(even):hover { transform: translateY(calc(var(--bvp-stagger, 26px) - 4px)); }

/* ==========================================================================
   PANEL: Quotes (.bvp-quotes) — maps to reference .dante-quotes
   ========================================================================== */
.bvp-quotes__header { margin-bottom: 38px; }
.bvp-quotes__header .bvp__heading { margin-bottom: 0; }

.bvp-quotes__grid {
  display: grid;
  grid-template-columns: repeat(var(--bvp-quotes-cols, 3), 1fr);
  gap: 22px;
  text-align: left; /* cards read left-set even in a centered panel */
}

/* .bvp prefix outguns theme content rules like .entry-content blockquote. */
.bvp .bvp-quote {
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
  border-radius: var(--ac-radius-card);
  padding: 30px;
  margin: 0;
}
.bvp-quote__text {
  font-size: 20px;
  line-height: 1.45;
  margin: 0 0 18px;
}
/* Explicit (not inherited) so no theme rule can turn quotes dark-on-dark. */
.bvp--dark  .bvp-quote__text, .bvp--dark  .bvp-quote__cite { color: var(--ac-cream); }
.bvp--light .bvp-quote__text, .bvp--light .bvp-quote__cite { color: var(--ac-text); }
.bvp-quote__cite {
  display: block;
  font-family: var(--ac-font-label);
  font-style: normal;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: .04em;
  opacity: .8;
}
.bvp-quote__detail {
  display: block;
  font-weight: 400;
  font-size: 14px;
  margin-top: 2px;
}

/* Spotlight — one large centered display-serif pull-quote. */
.bvp .bvp-quote--spotlight {
  background: none;
  border: none;
  padding: 0;
  max-width: 900px;
  margin-inline: auto;
  text-align: center;
}
.bvp-quote--spotlight::before {
  content: "\201C";
  display: block;
  font-family: var(--ac-font-display);
  font-size: 84px;
  line-height: .6;
  color: var(--ac-gold);
  margin-bottom: 18px;
}
/* Italic, body-toned, and a step smaller than the panel heading so the
   spotlight reads as a quotation — not a second heading. */
.bvp-quote--spotlight .bvp-quote__text {
  font-family: var(--ac-font-display);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(24px, 2.6vw, 36px);
  line-height: 1.3;
  margin-bottom: 24px;
}
.bvp--light .bvp-quote--spotlight .bvp-quote__text { color: var(--ac-text); }
.bvp--dark  .bvp-quote--spotlight .bvp-quote__text { color: var(--ac-cream); }

/* Spotlight + grid: breathing room between the featured quote and the rest. */
.bvp .bvp-quote--spotlight + .bvp-quotes__grid,
.bvp .bvp-quote--spotlight + .bvp-quotes__row { margin-top: 44px; }

/* Single row: sideways scroll with snap — good for 4+ quotes. */
.bvp-quotes__row {
  display: flex;
  gap: 22px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 14px;
  text-align: left;
  -webkit-overflow-scrolling: touch;
}
.bvp-quotes__row .bvp-quote {
  flex: 0 0 min(360px, 85%);
  scroll-snap-align: start;
}
.bvp-quotes__row::-webkit-scrollbar { height: 6px; }
.bvp-quotes__row::-webkit-scrollbar-thumb { background: rgba(184, 148, 52, .45); border-radius: 3px; }
.bvp-quotes__row::-webkit-scrollbar-track { background: transparent; }

/* ==========================================================================
   PANEL: Content Block (.bvp-content) — general-purpose copy panel.
   Side-by-side modes reuse the Feature Split grid classes.
   ========================================================================== */
.bvp-content__copy {
  font-size: 18px;
  line-height: 1.65;
}
.bvp-content__copy p { margin: 0 0 16px; }
.bvp-content__copy p:last-child { margin-bottom: 0; }

/* Stacked/text layouts keep a comfortable reading measure. */
.bvp-content--stacked-measure { max-width: 900px; }
.bvp-content:not(.bvp-split--cols) .bvp-content__text { max-width: 900px; }
.bvp--align-center .bvp-content__text { margin-inline: auto; }

/* Stacked image follows the text measure so the column reads as one piece. */
.bvp-content:not(.bvp-split--cols) .bvp-content__media-stacked { max-width: 900px; }
.bvp--align-center .bvp-content__media-stacked { margin-inline: auto; }

.bvp-content__media-stacked { margin-bottom: 34px; }
.bvp-content__text + .bvp-content__media-stacked { margin-bottom: 0; margin-top: 34px; }
.bvp-content__media-stacked img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--ac-radius-card);
}

/* ==========================================================================
   PANEL: CTA Band (.bvp-cta) — maps to reference .dante-final
   ========================================================================== */
.bvp-cta__copy {
  font-size: 21px;
  line-height: 1.6;
  max-width: 800px;
}
.bvp--align-center .bvp-cta__copy { margin-inline: auto; }

.bvp-cta__contact {
  margin-top: 26px;
  font-size: 19px;
  line-height: 1.5;
}
.bvp .bvp-cta__contact a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color .18s ease;
}
.bvp .bvp-cta__contact a:hover { color: var(--ac-gold); }

/* Inline layout: slim banner — text left, buttons right. */
.bvp-cta--inline {
  --bvp-pad-top: 48px;
  --bvp-pad-bottom: 48px;
}
.bvp-cta--inline .bvp__container {
  display: grid;
  grid-template-columns: 1.2fr auto;
  gap: 40px;
  align-items: center;
  text-align: left;
}
.bvp-cta--inline .bvp-cta__title { font-size: clamp(28px, 3.2vw, 42px); margin-bottom: 12px; }
.bvp-cta--inline .bvp-cta__copy  { margin-inline: 0; font-size: 18px; }
.bvp-cta--inline .bvp__btn-row   { margin-top: 0; justify-content: flex-end; }
.bvp-cta--inline .bvp-cta__contact { margin-top: 14px; font-size: 16px; text-align: right; }

/* ==========================================================================
   PANEL: Photo Carousel (.bvp-carousel) — Swiper, branded controls
   ========================================================================== */
.bvp-carousel__header { margin-bottom: 38px; }
.bvp-carousel__header .bvp__heading { margin-bottom: 0; }

.bvp-carousel {
  --swiper-theme-color: var(--ac-gold);
  --swiper-navigation-size: 26px;
  --swiper-pagination-bullet-inactive-color: currentColor;
  --swiper-pagination-bullet-inactive-opacity: .35;
  padding-bottom: 8px;
}
.bvp-carousel .swiper-pagination { position: static; margin-top: 18px; }
.bvp-carousel .swiper-button-prev,
.bvp-carousel .swiper-button-next {
  color: var(--ac-gold);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(17, 16, 13, .45);
}
.bvp--light .bvp-carousel .swiper-button-prev,
.bvp--light .bvp-carousel .swiper-button-next { background: rgba(245, 241, 231, .75); }

.bvp-carousel__item { margin: 0; }
.bvp-carousel__item img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--ac-radius-card);
}
.bvp-carousel--ratio-3-2  .bvp-carousel__item img { aspect-ratio: 3 / 2;  object-fit: cover; }
.bvp-carousel--ratio-16-9 .bvp-carousel__item img { aspect-ratio: 16 / 9; object-fit: cover; }
.bvp-carousel--ratio-1-1  .bvp-carousel__item img { aspect-ratio: 1 / 1;  object-fit: cover; }
/* Slide styles. Shadow is tighter than the standard media shadow so the
   swiper container's overflow clipping stays unnoticeable. */
.bvp-carousel__item--frame {
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
  border-radius: calc(var(--ac-radius-card) + 4px);
  padding: 10px;
}
.bvp-carousel__item--shadow { padding-bottom: 22px; }
.bvp-carousel__item--shadow img {
  box-shadow: 0 10px 22px -8px rgba(17, 16, 13, .38);
}
.bvp--dark .bvp-carousel__item--shadow img {
  box-shadow: 0 12px 24px -8px rgba(0, 0, 0, .6);
}

.bvp-carousel__item figcaption {
  font-family: var(--ac-font-label);
  text-transform: uppercase;
  letter-spacing: 1px;
  font-size: 13px;
  opacity: .75;
  margin-top: 10px;
}

/* ==========================================================================
   PANEL: Sponsor Logos (.bvp-logos)
   ========================================================================== */
.bvp-logos__header { margin-bottom: 34px; }
.bvp-logos__header .bvp__heading { margin-bottom: 0; }

.bvp-logos__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 36px 56px;
}
.bvp-logos__item { display: inline-flex; }
.bvp-logos__row img {
  display: block;
  width: auto;
  height: 56px; /* overridden by the Logo Height slider */
  object-fit: contain;
}
.bvp-logos__row--gray img {
  filter: grayscale(1);
  opacity: .7;
  transition: filter .18s ease, opacity .18s ease;
}
.bvp-logos__row--gray .bvp-logos__item:hover img {
  filter: none;
  opacity: 1;
}

/* ==========================================================================
   PANEL: YouTube Video (.bvp-video)
   ========================================================================== */
.bvp-video__header { margin-bottom: 34px; }
.bvp-video__header .bvp__heading { margin-bottom: 0; }

/* Sizing lives on the box (the Frame Style mat wraps inside it) so mats
   follow the Video Max Width slider too. */
.bvp-video__box {
  max-width: 980px;
  margin-inline: auto;
}
.bvp-video--side .bvp-video__box { max-width: none; }

.bvp-video__frame {
  aspect-ratio: 16 / 9;
  border-radius: var(--ac-radius-card);
  overflow: hidden;
  background: #000;
}
/* Soft shadow works on the video frame as well as images. */
.bvp-media--shadow .bvp-video__frame {
  box-shadow: 0 22px 48px -16px rgba(17, 16, 13, .38), 0 6px 16px -8px rgba(17, 16, 13, .22);
}
.bvp--dark .bvp-media--shadow .bvp-video__frame {
  box-shadow: 0 24px 52px -14px rgba(0, 0, 0, .65), 0 6px 16px -8px rgba(0, 0, 0, .4);
}
.bvp-video__frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}
.bvp-video__frame--empty {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ac-cream);
  font-family: var(--ac-font-label);
  text-transform: uppercase;
  letter-spacing: 1px;
  font-size: 14px;
}

/* Side-by-side: text column + video column (reuses the split grid). */
.bvp-video--side { text-align: left; }
.bvp-video--side .bvp-video__header { margin-bottom: 0; }

/* ==========================================================================
   PANEL: FAQ (.bvp-faq) — native <details> accordion
   ========================================================================== */
.bvp-faq__header { margin-bottom: 34px; }
.bvp-faq__header .bvp__heading { margin-bottom: 0; }

.bvp-faq__list {
  max-width: 900px;
  text-align: left;
}
.bvp--align-center .bvp-faq__list { margin-inline: auto; }

.bvp .bvp-faq__item {
  border-bottom: 1px solid var(--bvp-card-bd);
}
.bvp .bvp-faq__item:first-child { border-top: 1px solid var(--bvp-card-bd); }

.bvp-faq__q {
  position: relative;
  list-style: none;
  cursor: pointer;
  padding: 18px 48px 18px 0;
  font-family: var(--ac-font-body);
  font-weight: 600;
  font-size: 19px;
  line-height: 1.4;
}
.bvp-faq__q::-webkit-details-marker { display: none; }
.bvp--light .bvp-faq__q { color: var(--ac-dark-red); }
.bvp--dark  .bvp-faq__q { color: var(--ac-white); }

.bvp-faq__q::after {
  content: "+";
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--ac-font-display);
  font-weight: 300;
  font-size: 30px;
  line-height: 1;
  color: var(--ac-gold);
}
.bvp-faq__item[open] > .bvp-faq__q::after { content: "\2212"; } /* − */

.bvp-faq__a {
  padding: 0 0 22px;
  font-size: 17px;
  line-height: 1.6;
  max-width: 820px;
}
.bvp .bvp-faq__a a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.bvp .bvp-faq__a a:hover { color: var(--ac-gold); }

/* ==========================================================================
   PANEL: Stats Band (.bvp-stats)
   ========================================================================== */
.bvp-stats__header { margin-bottom: 38px; }
.bvp-stats__header .bvp__heading { margin-bottom: 0; }

.bvp-stats__grid {
  display: grid;
  grid-template-columns: repeat(var(--bvp-stats-cols, 3), 1fr);
  gap: 32px;
  text-align: center;
}

.bvp-stat__figure {
  display: block;
  font-family: var(--ac-font-display);
  font-weight: 300;
  font-size: clamp(40px, 5vw, 68px);
  line-height: 1.05;
}
.bvp--light .bvp-stat__figure { color: var(--ac-dark-red); }
.bvp--dark  .bvp-stat__figure { color: var(--ac-gold); }

.bvp-stat__label {
  display: block;
  margin-top: 10px;
  font-family: var(--ac-font-label);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  font-size: 13px;
  opacity: .85;
}

.bvp-stats__grid--divided .bvp-stat + .bvp-stat {
  border-left: 1px solid rgba(184, 148, 52, .4);
  border-left-color: color-mix(in srgb, var(--ac-gold) 40%, transparent);
}

/* ==========================================================================
   PANEL: People Grid (.bvp-people)
   ========================================================================== */
.bvp-people__header { margin-bottom: 38px; }
.bvp-people__header .bvp__heading { margin-bottom: 0; }

.bvp-people__grid {
  display: grid;
  grid-template-columns: repeat(var(--bvp-people-cols, 3), 1fr);
  gap: 38px 22px;
}

.bvp .bvp-person {
  display: block;
  color: inherit;
  text-decoration: none;
}
.bvp-person__photo { display: block; }
.bvp-person__photo img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--ac-radius-card);
  object-fit: cover;
}
.bvp-people__grid--shadow .bvp-person__photo img {
  box-shadow: 0 14px 30px -12px rgba(17, 16, 13, .35);
}
.bvp--dark .bvp-people__grid--shadow .bvp-person__photo img {
  box-shadow: 0 16px 32px -12px rgba(0, 0, 0, .6);
}
.bvp-people__grid--portrait .bvp-person__photo img { aspect-ratio: 3 / 4; }
.bvp-people__grid--square   .bvp-person__photo img { aspect-ratio: 1 / 1; }
.bvp-people__grid--circle   .bvp-person__photo img { aspect-ratio: 1 / 1; border-radius: 50%; }

.bvp-person__name {
  display: block;
  margin-top: 16px;
  font-family: var(--ac-font-display);
  font-weight: 300;
  font-size: 24px;
  line-height: 1.15;
}
.bvp--light .bvp-person__name { color: var(--ac-dark-red); }
.bvp--dark  .bvp-person__name { color: var(--ac-white); }

.bvp-person__role {
  display: block;
  margin-top: 6px;
  font-family: var(--ac-font-label);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  font-size: 13px;
  color: var(--ac-gold);
}

a.bvp-person img { transition: opacity .18s ease; }
a.bvp-person:hover img { opacity: .85; }
a.bvp-person:hover .bvp-person__name { text-decoration: underline; text-underline-offset: 3px; }

/* ==========================================================================
   PANEL: Downloads (.bvp-downloads)
   ========================================================================== */
.bvp-downloads__header { margin-bottom: 34px; }
.bvp-downloads__header .bvp__heading { margin-bottom: 0; }

.bvp-downloads__list {
  display: grid;
  grid-template-columns: repeat(var(--bvp-dl-cols, 1), 1fr);
  gap: 14px;
  max-width: 900px;
  text-align: left;
}
.bvp--align-center .bvp-downloads__list { margin-inline: auto; }

.bvp .bvp-download {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 18px 20px;
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
  border-radius: var(--ac-radius-card);
  color: inherit;
  text-decoration: none;
  transition: border-color .18s ease, transform .18s ease;
}
.bvp .bvp-download:hover { border-color: var(--ac-gold); transform: translateY(-2px); }

.bvp-download__icon { flex: 0 0 auto; color: var(--ac-gold); margin-top: 2px; }
.bvp-download__icon svg { width: 22px; height: 22px; }

.bvp-download__title {
  font-weight: 600;
  font-size: 17px;
  line-height: 1.35;
}
.bvp--light .bvp-download__title { color: var(--ac-dark-red); }
.bvp--dark  .bvp-download__title { color: var(--ac-white); }

.bvp-download__meta {
  display: inline-block;
  margin-left: 10px;
  font-family: var(--ac-font-label);
  text-transform: uppercase;
  letter-spacing: 1px;
  font-size: 12px;
  opacity: .65;
}
.bvp-download__desc {
  display: block;
  margin-top: 4px;
  font-size: 15px;
  line-height: 1.5;
  opacity: .85;
}

/* ==========================================================================
   PANEL: Goal Meter (.bvp-progress)
   --------------------------------------------------------------------------
   One horizontal campaign bar. --bvp-pct is written inline by the renderer;
   the fill reads it directly, so the bar is correct with JS off. When the
   panel opts into animation, JS adds .is-inview and the fill transitions
   from 0 to --bvp-pct (see assets/js/bv-panels.js).
   ========================================================================== */
.bvp-progress__header { margin-bottom: 30px; }
.bvp-progress__header .bvp__heading { margin-bottom: 0; }
.bvp-progress__header .bvp__intro { margin-top: 14px; }

/* ---- the headline figure: "$48,250 raised of our $75,000 goal" ---- */
.bvp .bvp-progress__figures {
  margin: 0 0 18px;
  line-height: 1.1;
}
.bvp-progress__current {
  font-family: var(--ac-font-display);
  font-weight: 300;
  font-size: clamp(40px, 5.4vw, 72px);
  line-height: 1.02;
  /* Tabular figures keep the bar from twitching during the count-up. */
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.bvp--light .bvp-progress__current { color: var(--ac-dark-red); }
.bvp--dark  .bvp-progress__current { color: var(--ac-gold); }

.bvp-progress__of {
  display: inline-block;
  margin-left: 6px;
  font-family: var(--ac-font-body);
  font-size: 20px;
  line-height: 1.3;
  opacity: .88;
}

/* ---- the meter ---- */
.bvp-progress__meter {
  --bvp-bar-h: 26px;
  --bvp-bar-r: 40px;
  --bvp-fill: var(--ac-gold);
  width: 100%;
  text-align: left;
}
.bvp--align-center .bvp-progress__meter { margin-inline: auto; }

.bvp-progress__meter--gold     { --bvp-fill: var(--ac-gold); }
.bvp-progress__meter--burgundy { --bvp-fill: var(--ac-dark-red); }
.bvp-progress__meter--red      { --bvp-fill: var(--ac-cta-red); }
.bvp-progress__meter--gradient { --bvp-fill: linear-gradient(90deg, var(--ac-dark-red), var(--ac-gold)); }

/* Burgundy fill on a burgundy panel would vanish — step it to gold. */
.bvp--bg-burgundy .bvp-progress__meter--burgundy,
.bvp--bg-burgundy-deep .bvp-progress__meter--burgundy { --bvp-fill: var(--ac-gold); }

.bvp-progress__ends {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
  font-family: var(--ac-font-label);
  font-size: 15px;
  letter-spacing: .4px;
  font-variant-numeric: tabular-nums;
}
.bvp-progress__ends .bvp-progress__end:last-child { text-align: right; }
.bvp-progress__end-label {
  text-transform: uppercase;
  letter-spacing: 1.5px;
  font-size: 12px;
  opacity: .7;
}

.bvp-progress__track {
  position: relative;
  overflow: hidden;
  height: var(--bvp-bar-h);
  border-radius: var(--bvp-bar-r);
  background: var(--bvp-card-bg);
  border: 1px solid var(--bvp-card-bd);
}

.bvp-progress__fill {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  height: 100%;
  width: var(--bvp-pct, 0%);
  min-width: var(--bvp-bar-h); /* a tiny percentage still reads as a bar */
  border-radius: inherit;
  background: var(--bvp-fill);
}

/* Quarter marks: three hairlines drawn ACROSS the bar, filled part included,
   so 25 and 50 don't disappear as the campaign passes them. Three separate
   1px gradients — a repeating tile lands on 18.75/43.75/68.75 instead, because
   percentage background-position measures the leftover space, not the box. */
.bvp-progress__meter.is-ticked .bvp-progress__track::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2; /* above .bvp-progress__fill */
  pointer-events: none;
  background-image:
    linear-gradient(currentColor, currentColor),
    linear-gradient(currentColor, currentColor),
    linear-gradient(currentColor, currentColor);
  background-size: 1px 100%;
  background-position: 25% 0, 50% 0, 75% 0;
  background-repeat: no-repeat;
  opacity: .26;
}

/* Sheen: a slow diagonal shimmer over the filled portion only. */
.bvp-progress__meter.is-sheen .bvp-progress__fill::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: repeating-linear-gradient(
    -45deg,
    rgba(255, 255, 255, .11) 0 9px,
    rgba(255, 255, 255, 0)   9px 26px
  );
}

/* "Show over": a gold tail hatched over the last stretch of a full bar. */
.bvp-progress__meter.is-over .bvp-progress__fill::after {
  content: "";
  position: absolute;
  inset-block: 0;
  right: 0;
  width: 14%;
  border-radius: inherit;
  background: repeating-linear-gradient(
    -45deg,
    var(--ac-gold) 0 6px,
    color-mix(in srgb, var(--ac-gold) 55%, #FFFFFF) 6px 12px
  );
}

.bvp-progress__pct {
  position: relative;
  z-index: 3; /* above the sheen and the quarter marks */
  padding-inline: 12px;
  font-family: var(--ac-font-label);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1px;
  line-height: 1;
  color: var(--ac-white);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
/* A gold bar carries dark text; burgundy and red carry white. */
.bvp-progress__meter--gold .bvp-progress__pct { color: var(--ac-near-black); }

.bvp-progress__foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 6px 18px;
  margin-top: 12px;
  font-family: var(--ac-font-label);
  text-transform: uppercase;
  letter-spacing: 1.4px;
  font-size: 13px;
  opacity: .85;
}
/* With only one item present, keep it on the side it belongs to. */
.bvp-progress__foot .bvp-progress__remaining:only-child { margin-left: auto; }
.bvp-progress__pct--under { padding-inline: 0; color: inherit; }
.bvp--light .bvp-progress__pct--under { color: var(--ac-dark-red); }
.bvp--dark  .bvp-progress__pct--under { color: var(--ac-gold); }
.bvp-progress__remaining--met { color: var(--ac-gold); }

.bvp .bvp-progress__note {
  margin: 18px 0 0;
  font-size: 15px;
  line-height: 1.55;
  opacity: .8;
}
.bvp-progress .bvp__btn-row { margin-top: 26px; }

/* ---- animation ---- */
.bvp-progress__meter.is-animated .bvp-progress__fill {
  transition: width 1.1s cubic-bezier(.22, .7, .28, 1);
}
.bvp-progress__meter.is-animated:not(.is-inview) .bvp-progress__fill {
  width: 0;
  min-width: 0; /* no leading nub before the fill runs */
}

@media (prefers-reduced-motion: reduce) {
  .bvp-progress__meter.is-animated:not(.is-inview) .bvp-progress__fill {
    width: var(--bvp-pct, 0%);
    min-width: var(--bvp-bar-h);
  }
  .bvp-progress__meter.is-animated .bvp-progress__fill { transition: none; }
}

/* With scripting off there is nothing to add .is-inview, so an animated bar
   would sit empty. Show the real figure instead. */
@media (scripting: none) {
  .bvp-progress__meter.is-animated:not(.is-inview) .bvp-progress__fill {
    width: var(--bvp-pct, 0%);
    min-width: var(--bvp-bar-h);
  }
}

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  .bvp {
    padding-inline: 22px;
    --bvp-pad-top: 56px;
    --bvp-pad-bottom: 56px;
  }
  .bvp__heading { font-size: clamp(34px, 8vw, 48px); }

  .bvp-hero {
    --bvp-pad-top: 72px;
    --bvp-pad-bottom: 72px;
    /* Responsive default heights (were control defaults pre-1.4.0; the
       compact preset and the Minimum Height slider both outrank these). */
    min-height: var(--bvp-min-height, 560px);
  }
  .bvp-hero__facts { grid-template-columns: 1fr; }

  /* Match the per-side selectors' specificity so this collapse wins. */
  .bvp-hero--split.bvp-hero--media-right .bvp__container,
  .bvp-hero--split.bvp-hero--media-left  .bvp__container { grid-template-columns: 1fr; gap: 32px; }
  /* Text always stacks above the image on mobile, regardless of side choice. */
  .bvp-hero--media-left .bvp-hero__media { order: 0; }

  /* Feature split: single column, text above media, checklist to one column. */
  .bvp-split--cols.bvp-split--media-right .bvp__container,
  .bvp-split--cols.bvp-split--media-left  .bvp__container { grid-template-columns: 1fr; gap: 36px; }
  .bvp-split--media-left .bvp-split__media { order: 0; }
  .bvp-split__list { grid-template-columns: 1fr; }

  /* Card and quote grids collapse to a single column (reference behavior). */
  .bvp-cards__grid,
  .bvp-quotes__grid { grid-template-columns: 1fr; }

  /* Side-by-side intro stacks: heading above copy. */
  .bvp-intro--split .bvp__container { grid-template-columns: 1fr; gap: 24px; }
  .bvp-intro--split .bvp-intro__title { margin-bottom: 0; }

  /* Staggered cards flatten once the grid is a single column. */
  .bvp-cards__grid--stagger { padding-bottom: 0; }
  .bvp-cards__grid--stagger .bvp-card:nth-child(even) { transform: none; }

  /* Inline CTA stacks: text above buttons, everything left-set. */
  .bvp-cta--inline .bvp__container { grid-template-columns: 1fr; gap: 24px; }
  .bvp-cta--inline .bvp__btn-row { justify-content: flex-start; }
  .bvp-cta--inline .bvp-cta__contact { text-align: left; }

  /* Stats: stack; the vertical dividers become horizontal rules. */
  .bvp-stats__grid { grid-template-columns: 1fr; gap: 26px; }
  .bvp-stats__grid--divided .bvp-stat + .bvp-stat {
    border-left: none;
    border-top: 1px solid rgba(184, 148, 52, .4);
    border-top-color: color-mix(in srgb, var(--ac-gold) 40%, transparent);
    padding-top: 26px;
  }

  /* People: two across on tablet. */
  .bvp-people__grid { grid-template-columns: repeat(2, 1fr); }

  /* Downloads: single column. */
  .bvp-downloads__list { grid-template-columns: 1fr; }

  /* Goal Meter: the headline figure wraps, the foot row stacks. */
  .bvp-progress__of { display: block; margin-left: 0; margin-top: 6px; }
  .bvp-progress__foot { flex-direction: column; align-items: flex-start; }
  .bvp--align-center .bvp-progress__foot { align-items: center; }
  .bvp-progress__foot .bvp-progress__remaining:only-child { margin-left: 0; }
  .bvp--align-center .bvp-progress__ends { font-size: 14px; }
}
@media (max-width: 520px) {
  .bvp__btn { width: 100%; }
  .bvp-hero { min-height: var(--bvp-min-height, 460px); }
  .bvp-hero__fact strong { font-size: 23px; }
  .bvp-people__grid { grid-template-columns: 1fr; }
}
