/** Shopify CDN: Minification failed

Line 10550:3 Unexpected "="
Line 11115:3 Unexpected "="

**/
/*================ Custom CSS ================*/

/* Cart indicator dot - force black fill */
.cart-indicator {
  fill: #000000 !important;
}

/* Book Your Portrait nav button — black pill by default, inverts to
   white-with-black-outline on hover. Desktop + mobile. */
.book-portrait-button .navtext {
  padding: 5px 12px !important;
  border: 1px solid #000 !important;
  border-radius: 30px !important;
  color: #fff !important;
  background-color: #000 !important;
  transition: background 0.2s ease-in-out, color 0.2s ease-in-out !important;
}

/* Suppress the theme's underline slide animation on this button */
.book-portrait-button .navtext::before,
.book-portrait-button .navtext::after {
  display: none !important;
}

/* Hover: white bg, black outline, black text — invert of default */
.no-touch .book-portrait-button .navtext:hover,
.book-portrait-button:hover .navtext {
  padding: 5px 12px !important;
  border: 1px solid #000 !important;
  border-radius: 30px !important;
  color: #000 !important;
  background-color: #fff !important;
}

/* ====== Product Page ====== */

/* Form wrapper max-width.

   This cap + `margin: 0 auto` is what actually centres the
   gallery/variants block on desktop. At 700px the details column
   was wide enough to push the right edge close to the wrapper edge
   and the whole layout read as left-biased; 620px gives the column
   enough breathing room on each side to visually centre.

   If you ever change this, keep in mind it's the primary centring
   mechanism — not the grid-template-columns rule further down. */
@media only screen and (min-width: 768px) {
  .product-single__details .form__wrapper {
    max-width: 620px !important;
    margin: 0 auto !important;
  }
}

/* Variant button size */
.radio__fieldset .radio__label {
  font-size: calc(0.9rem * var(--adjust-button));
}

/* Variant button shadow */
.radio__fieldset .radio__label {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

/* Variant button selected + hover — fill black like V5 */
.radio__fieldset .radio__label:hover,
.radio__fieldset .radio__label:active,
.radio__fieldset .radio__label:focus,
.radio__fieldset .radio__input:checked ~ .radio__label {
  color: var(--bg);
  background-color: var(--text);
  border-color: var(--text);
}

/* Unavailable/sold-out buttons — reduce opacity */
.radio__button.sold-out .radio__label,
.radio__button.unavailable .radio__label {
  opacity: 0.4;
}

/* Variant option + quantity label font size */
.radio__legend__label {
  font-size: calc(1.3rem * var(--adjust-label));
}

/* Quantity — hide +/- buttons, hide browser number spinners */
.selector-wrapper--qty .quantity__btn {
  display: none;
}
.selector-wrapper--qty .quantity__input::-webkit-outer-spin-button,
.selector-wrapper--qty .quantity__input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.selector-wrapper--qty .quantity__input {
  -moz-appearance: textfield;
  text-align: center !important;
  padding: 0 !important;
  background-color: var(--bg) !important;
  box-shadow: none !important;
  border-color: var(--border) !important;
  height: 40px !important;
  width: 85px !important;
  min-width: unset !important;
  max-width: 85px !important;
}

/* Cart bar quantity — remove +/- buttons, arrows, center number, match grey boxes */
.cart-bar__quantity .quantity__btn {
  display: none;
}
.cart-bar__quantity .quantity__input::-webkit-outer-spin-button,
.cart-bar__quantity .quantity__input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.cart-bar__quantity .quantity__input {
  -moz-appearance: textfield;
  text-align: center !important;
  padding: 0 !important;
  background-color: #ffffff !important;
  box-shadow: none !important;
  border: 1px solid #000000 !important;
  border-radius: 999px !important;
  outline: none !important;
  width: 120px !important;
  min-width: 120px !important;
  max-width: 120px !important;
  height: 44px !important;
  font-family: Poppins, -apple-system, sans-serif !important;
  font-size: calc(0.9rem * var(--adjust-button, 1)) !important;
}

/* Sticky cart-bar — pill height 44px to match the ATC button and
   people-field pill. The theme's `.select-popout__toggle` uses
   var(--form-top) padding which renders ~48px on this theme; force
   44px inside the cart-bar only so other pages keep their defaults. */
.cart-bar .select-popout__toggle {
  height: 44px !important;
  min-height: 44px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  display: flex !important;
  align-items: center !important;
}

/* Cart bar — labels at bottom: select first in HTML, label second → column order puts label at bottom */
.cart-bar__select__wrapper {
  display: flex;
  flex-direction: column;
}
.cart-bar__option-label {
  margin-bottom: 0;
  margin-top: 4px;
}

/* Cart bar quantity wrapper — label at bottom (label first in HTML + column-reverse) */
.cart-bar__quantity-wrapper {
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
}
.cart-bar__quantity-label {
  display: block;
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-alpha-50);
  margin-top: 4px;
  white-space: nowrap;
}

/* Cart bar — align all items to top so ATC button top is level with selects */
.cart-bar__form {
  align-items: flex-start !important;
}

/* Cart bar — raise ATC button to match height of option boxes (adds space below = same total height as select+label) */
.cart-bar__submit {
  padding-bottom: 19px;
}

/* Mobile — hide People quantity wrapper when Choose Options is shown */
@media only screen and (max-width: 767px) {
  .has-multiple-options .cart-bar__quantity-wrapper {
    display: none;
  }
}

/* ============================================================
   Cart drawer item card — v2 layout (2026-04 redesign)
   Compact 4-row card: photo+prices | pills | swatch+qty | remove.
   Replaces the theme's stacked image-column + content-column layout
   for cart items rendered from snippets/cart-line-items.liquid.
   ============================================================ */

/* Kill the theme's flex column layout; v2 is row-based.
   Horizontal padding keeps content from sitting flush to the drawer
   edges (matches the wireframe's 16px 20px card padding). `!important`
   on padding because theme's `.cart__items .cart__item { padding: 15px 0 }`
   has equal specificity and can win on load order. */
.cart__item.cart-item-v2 {
  display: block !important;
  padding: 16px 20px !important;
  align-items: initial !important;
  flex-flow: initial !important;
}

/* The HTML `hidden` attribute should render `display: none`, but our
   `.cart-item-v2__per-person { display: flex }` rule overrode that,
   so the "/person" label was showing even when the row had no data.
   Explicitly honor `[hidden]` on all V2 sub-elements. */
.cart-item-v2 [hidden] {
  display: none !important;
}

/* === Row 1: photo (100px circular) + name/per-person | totals === */
.cart-item-v2__row1 {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.cart-item-v2__photo {
  flex-shrink: 0;
  width: 100px;
  height: 100px;
  position: relative;
  overflow: hidden;
  /* Rounded square to match the current theme's image shape
     (user note: "100px in size and shape to stay as is") */
  border-radius: var(--radius-medium, 13px);
  display: block;
  /* Theme's `.cart__item__image { margin-right: var(--inner) }` adds
     ~20px right margin on top of our 12px row gap, pushing the title
     block too far right. Zero it out so the gap alone controls spacing. */
  margin-right: 0 !important;
}
.cart-item-v2__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cart-item-v2__main {
  flex: 1;
  min-width: 0;
  padding-top: 2px;  /* optical alignment with photo top */
}
.cart-item-v2__name {
  font-weight: 600;
  font-size: 14px;
  margin: 0;
  line-height: 1.25;
}
.cart-item-v2__name a {
  color: inherit;
  text-decoration: none;
}
.cart-item-v2__per-person {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-top: 4px;
  flex-wrap: wrap;
}
.cart-item-v2__per-person__old {
  font-size: 12px;
  color: #999;
  text-decoration: line-through;
}
.cart-item-v2__per-person__new {
  font-size: 13px;
  font-weight: 600;
}
.cart-item-v2__per-person__label {
  font-size: 10px;
  color: #999;
  margin-left: -3px;  /* tighten gap between new price and /person */
}

/* Totals column (right side of Row 1).
   Single-part structure: `.cart-item-v2__price-display` is the
   visible V2 breakdown — totals + discount + per-person row.
   Populated by JS in `custom.js → applyGroupDiscount`, which
   computes the discount client-side (mirroring the Shopify
   Function at checkout). See DISCOUNT-APP-HANDOFF.md. */
.cart-item-v2__totals {
  text-align: right;
  flex-shrink: 0;
  padding-top: 2px;
  min-width: 0;
}


/* Visible V2 breakdown — stacked right-aligned */
.cart-item-v2__price-display {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
}
.cart-item-v2__price-display p {
  margin: 0;
  line-height: 1.3;
  text-decoration: none;
}
.cart-item-v2__total-old {
  font-size: 13px;
  color: #999;
  text-decoration: line-through;
}
.cart-item-v2__discount {
  font-size: 13px;
  color: red;  /* match "Applying group discount…" spinner colour */
}
.cart-item-v2__total-new {
  font-weight: 600;
  font-size: 15px;
  color: inherit;
}

/* === Row 2: shortened variant pills (+ optional qty stepper inline) ===
   When a cart item has NO backdrop swatch row (non-backdrop variants like
   White / Concrete / Blurred / In Focus), the qty stepper renders
   inline with the pills instead of on its own row — this removes the
   empty vertical space the stepper-alone row would otherwise create. */
.cart-item-v2__pills-row {
  margin-bottom: 12px;
}
.cart-item-v2__pills-row--with-qty {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.cart-item-v2__pills-row--with-qty .cart-item-v2__pills {
  flex: 1;
  min-width: 0;
  margin-bottom: 0;
}
.cart-item-v2__pills {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.cart-item-v2__pill {
  font-size: 12px;
  padding: 3px 9px;
  background: #f1f1f1;
  border-radius: 99px;
  color: #777;
  line-height: 1.4;
}

/* ===== Separator line between cart items =====
   1px line in light grey (#e5e5e5, matches wireframe card border).
   `+` adjacent-sibling selector means the line only appears BETWEEN
   items: no border above the first, none below the last.
   Override theme's own `.cart__items .cart__item` border-top to keep
   this rule the single source of truth. */
.cart-item-v2 {
  border-top: none !important;
}
.cart-item-v2 + .cart-item-v2 {
  border-top: 1px solid #e5e5e5 !important;
}

/* === Row 3: swatch/select (left) + qty stepper (right) === */
.cart-item-v2__swatch-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-top: 10px;
  border-top: 1px solid #eee;
}
.cart-item-v2__swatch-left {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 0;
}
.cart-item-v2__swatch-left:empty {
  /* keep the qty stepper right-aligned even when swatch-left is empty
     (non-backdrop products). */
  flex: 1;
}
/* Override .backdrop-swatch-dot geometry for the v2 circular swatch */
.cart-item-v2__swatch-circle.backdrop-swatch-dot {
  width: 16px !important;
  height: 16px !important;
  min-width: 16px !important;
  border-radius: 50% !important;
}
.cart-item-v2__swatch-name {
  font-size: 12px;
  color: #777;
}
.cart-item-v2__swatch-action {
  font-size: 11px !important;
  cursor: pointer;
  text-decoration: underline;
  background: none;
  border: none;
  padding: 0 !important;
  line-height: 1;
}
.cart-item-v2__swatch-action--change {
  color: #2d5fa1 !important;
}
.cart-item-v2__swatch-action--remove {
  color: #777 !important;
}

/* SELECT BACKDROP COLOUR — compact version for Row 3 */
.cart-item-v2__select-btn.backdrop-select-button {
  width: auto !important;
  padding: 7px 18px !important;
  font-size: 13px !important;
  letter-spacing: 0.06em !important;
  white-space: nowrap !important;
  line-height: 1.2 !important;
}

/* Quantity stepper — use chained classes (.foo.bar) to beat theme's
   (0,1,0) rules with (0,2,0) specificity. The theme's
   .cart__item__quantity has `position: relative; width: 80px` with
   buttons `position: absolute; left/right: 0` overlaying the input,
   which hides the qty value visually. V2 forces a proper 3-box layout. */
.cart-item-v2__qty.cart__item__quantity {
  position: static;
  width: auto;
  display: flex;
  align-items: center;
  flex-shrink: 0;
  gap: 0;
}
.cart-item-v2__qty.cart__item__quantity button {
  position: static;
  transform: none;
  width: 28px;
  height: 28px;
  border: 1px solid #ddd;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #999;
  cursor: pointer;
  padding: 0;
  box-shadow: none;
  font-size: 0;
  line-height: 1;
}
.cart-item-v2__qty-btn--minus { border-radius: 4px 0 0 4px; }
.cart-item-v2__qty-btn--plus  { border-radius: 0 4px 4px 0; }
.cart-item-v2__qty.cart__item__quantity button .icon {
  width: 10px;
  height: 10px;
}
.cart-item-v2__qty-val.cart__item__quantity-field {
  width: 32px;
  height: 28px;
  border: 1px solid #ddd;
  border-left: none;
  border-right: none;
  border-radius: 0;
  text-align: center;
  font-size: 13px;
  font-weight: 600;
  appearance: textfield;
  -moz-appearance: textfield;
  padding: 0;
  background: #fff;
  color: #000;
  display: block;     /* theme sets display:flex on <input> which hides value */
  line-height: 26px;
}
.cart-item-v2__qty-val.cart__item__quantity-field::-webkit-outer-spin-button,
.cart-item-v2__qty-val.cart__item__quantity-field::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* === Row 4: remove whole item === */
.cart-item-v2__remove {
  display: flex;
  justify-content: flex-end;
  margin-top: 6px;
  padding-right: 7px;  /* align "Remove item" under the centre of the qty stepper */
}
.cart-item-v2__remove-link {
  font-size: 11px;
  color: #999;
  text-decoration: underline;
  opacity: 0.7;
}
.cart-item-v2__remove-link:hover {
  opacity: 1;
  color: #333;
}
.cart-item-v2__remove-link span {
  text-decoration: underline;  /* in case the theme unsets it on <span> */
}

/* ============================================================
   Cart drawer footer — V2 redesign (2026-04)
   Summary row (people count + savings + total) above the terms +
   checkout button. See wireframe: Checkout-Button-Wireframes.html
   (Option A + Option D).
   ============================================================ */

/* Summary row — always visible. No top border (the cart foot already
   has a visible divider above it). */
.cart__summary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}
.cart__summary-people {
  font-size: 12px;
  color: #888;
}
.cart__summary-right {
  display: flex;
  align-items: center;
  gap: 8px;
}
.cart__summary-savings {
  font-size: 12px;
  color: red;  /* same red as the line-item discount for consistency */
}
.cart__summary-total {
  font-size: 16px;
  font-weight: 600;
  color: #000;
}

/* V2 checkout button — pill, title case, centred label.
   Price is always shown in the summary row above the button, so the
   inline price inside the button is permanently hidden. */
.cart__checkout.cart__checkout--v2 {
  display: flex !important;
  align-items: center;
  justify-content: center !important;
  gap: 10px;
  width: 100%;
  background: #1a1a1a !important;
  color: #fff !important;
  border: none !important;
  border-radius: 99px !important;
  padding: 14px 20px !important;
  text-transform: none !important;    /* override theme's uppercase */
  letter-spacing: 0.3px !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  line-height: 1.2 !important;
  cursor: pointer;
}
.cart__checkout.cart__checkout--v2 .cart__checkout__label {
  flex: 0 1 auto;
}
/* Hide the inline price inside the checkout button — summary row
   above the button is the single source of truth for price display. */
.cart__checkout.cart__checkout--v2 .cart__total__money,
.cart__checkout.cart__checkout--v2 .cart__subtotal {
  display: none !important;
}

/* Tighter spacing between terms and button in V2 */
.cart__foot-inner .cart__buttons-wrapper {
  padding-top: 4px;
}

/* ====== Cart drawer — terms checkbox + label, +1px bump ======
   Theme default: checkbox 13x13, label font calc(0.815rem). +1px. */
.cart-drawer .cart__acceptance__input,
.cart__acceptance__input {
  width: 14px !important;
  height: 14px !important;
}
.cart-drawer .cart__acceptance__label,
.cart__acceptance__label {
  font-size: calc(0.88rem * var(--adjust-body)) !important;
}

/* ====== Booking page — "Number of people" label: don't shrink on mobile ======
   Theme rule at theme.css L15940 shrinks `.select__fieldset .select__label`
   from 1.3rem → 0.95rem at ≤767px. That's fine for short labels but
   "Number of people" looks disproportionately small next to the large
   input field on phones. Override only the quantity wrapper so other
   variant labels (Location, Backdrop, etc.) keep their mobile sizing. */
@media only screen and (max-width: 767px) {
  .select__fieldset[data-quantity-wrapper] .select__label,
  #Quantity-Form-product-template .select__label {
    font-size: calc(1.15rem * var(--adjust-label));
  }
}

/* ====== V2 cart card — mobile adjustments ======
   - Thumb from 100px → 60px to save horizontal space in the drawer
   - Per-person row: prevent wrap so "/person" stays on the same line
     as the price (was falling to a second line on narrow viewports) */
@media only screen and (max-width: 767px) {
  .cart-item-v2__photo {
    width: 60px;
    height: 60px;
  }
  /* Chained selector (.foo.bar) to match theme's
     `.body--rounded-corners .cart__item__image { border-radius: var(--radius) }`
     specificity (0,2,0). Our rule loads later in custom.css so it
     wins on equal-specificity tie. Without the chain, theme's 28px
     radius was overriding mine silently. */
  .cart__item__image.cart-item-v2__photo {
    border-radius: 20px;
  }
  .cart-item-v2__per-person {
    flex-wrap: nowrap;
    gap: 4px;
  }
  /* SELECT BACKDROP COLOUR — tighter horizontal padding on mobile */
  .cart-item-v2__select-btn.backdrop-select-button {
    padding: 7px 10px !important;
  }
}

/* ====== Cart Discount Styling ====== */

/* Unit price — smaller, muted */
.cart__item__single-price {
  font-size: calc(0.78rem * var(--adjust-body));
  color: var(--text-alpha-50);
  margin: 2px 0 0;
}

/* Line price — flex column, right-aligned, order: struck → discount → final */
.cart__item__price {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-end !important;
  gap: 1px;
}

/* Discount badge (cart-level code discount) */
.cart__discount {
  background-color: var(--text);
  color: var(--bg);
  padding: 3px 8px;
  font-size: calc(0.72rem * var(--adjust-body));
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* Cart-level discount list */
.cart__discounts {
  margin-top: 8px;
}

/* Subtotal after discount — highlight row */
.cart__subtotal {
  font-weight: var(--FONT-WEIGHT-BODY-BOLD);
}

/* ====== Banner Image — full-image text background overlay ====== */
/* Handled via section-banner-image.liquid: sets background on .banner-image__text-container */
/* Ensure text inside remains readable and centered */
.banner-image__text-container:has(.text-background) .banner-image__text-wrapper {
  background: transparent;
}

/* ====== Cart checkout button layout ====== */
/* Remove the theme's `::before` bullet separator before the price span */
.cart-drawer .cart__total__money::before {
  content: none !important;
}

/* Centre + wrap the checkout button so a multi-line label/price fits */
.cart__checkout {
  justify-content: center !important;
  flex-wrap: wrap !important;
  text-align: center !important;
}

/* ====== Page Gallery (HTML5 lightbox) ====== */
.page-gallery__grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 4px;
  max-width: 1200px;
  margin: 0 auto;
}
.page-gallery__item {
  flex: 0 0 calc(33.333% - 2.667px);
  position: relative;
  overflow: hidden;
  cursor: pointer;
  aspect-ratio: 1;
  display: block;
  background: none;
  border: none;
  padding: 0;
  border-radius: 28px;
}
.page-gallery__item--video { cursor: default; }
.page-gallery__item--video video,
.page-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media (max-width: 767px) {
  .page-gallery__item { flex: 0 0 calc(50% - 2px); }
}
.page-gallery-dialog {
  padding: 0;
  background: rgba(255,255,255,0.97);
  border: none;
  max-width: 100vw;
  max-height: 100vh;
  width: 100%;
  height: 100%;
  display: none;
  align-items: center;
  justify-content: center;
}
.page-gallery-dialog[open] { display: flex; }
.page-gallery-dialog::backdrop { background: rgba(255,255,255,0.97); }
.page-gallery-dialog__inner {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}
.page-gallery-dialog__img {
  max-width: 90vw;
  max-height: 90vh;
  object-fit: contain;
  display: block;
}
.page-gallery-dialog__close,
.page-gallery-dialog__prev,
.page-gallery-dialog__next {
  position: fixed;
  background: transparent;
  border: none;
  padding: 0;
  color: #000;
  width: 40px;
  height: 40px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
  outline: none;
}
.page-gallery-dialog__close { top: 20px; right: 20px; }
.page-gallery-dialog__prev  { top: 50%; left: 20px; transform: translateY(-50%); }
.page-gallery-dialog__next  { top: 50%; right: 20px; transform: translateY(-50%); }
/* Smooth fade for image swap */
.page-gallery-dialog__img {
  transition: opacity 0.15s ease;
}

/* ====== HOME PAGE — Rounded Corners ====== */

/* Raise standard --radius from 8px to 28px for all rounded-corner elements */
.body--rounded-corners {
  --radius: 28px;
  --radius-large: 28px;
}

/* Marquee — remove the top-corner curve the theme applies to whichever section follows
   a card-scrolling-effect slideshow. Theme rule sets border-radius on + .shopify-section;
   we target the marquee by its own class which is always present. */
.body--rounded-corners .main-content > .shopify-section:has(.card-scrolling-effect) + .shopify-section--marquee,
.shopify-section--marquee {
  border-radius: 0 !important;
}

/* "Expert Business Portraits" section — full-section curved appearance with #ecebe7 background */
[id$="__section_image_with_text_Uq6CM9"] .image-with-text__items {
  border-radius: 28px;
  overflow: hidden;
}

/* Toronto banner image — 28px rounded corners */
[id$="__section_banner_image_fi8kz7"] .banner-image {
  border-radius: 28px;
  overflow: hidden;
}

/* "Browse Portfolio" banner image — 28px rounded corners */
[id$="__section_banner_image_hVx3AJ"] .banner-image {
  border-radius: 28px;
  overflow: hidden;
}

/* ====== ABOUT PAGE — Guest Speaking section curved corners ====== */
[id$="__section_custom_html_pPA9JY"] .about-speaking {
  border-radius: 28px;
  overflow: hidden;
}

/* ====== Play button — larger thin icon, remove theme's outer circle ====== */
.icon-play {
  width: 80px !important;
  height: 80px !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

/* ====== SERVICES PAGE — bottom banner curved corners ====== */
[id$="__section_banner_image_ChfTUm"] .banner-image {
  border-radius: 28px;
  overflow: hidden;
}

/* ====== ENTERPRISE PAGE ====== */

/* Annual/Quarterly toggle — remove pill radius so bottom border stays straight */
.bp-toggle-btn {
  border-radius: 0 !important;
}

/* "Choose Your Plan" pricing section — 28px curved corners */
[id$="__section_custom_html_LLk4CC"] .bp-pricing-section {
  border-radius: 28px;
  overflow: hidden;
}

/* Pricing cards (Essential, Growth, Enterprise) — 28px curves */
.bp-pricing-card {
  border-radius: 28px;
}

/* Account Credit — pill shaped */
.bp-account-credit {
  border-radius: 30px !important;
}

/* Request a Quote / all enterprise CTA buttons — pill shaped */
.bp-btn-primary,
.bp-btn-secondary {
  border-radius: 30px !important;
}

/* "Not Sure Which Plan" + "Try Our 90-Day Pilot" boxes — 28px curves */
.bp-cta-box {
  border-radius: 28px;
}

/* Enterprise photo grid background */
[id$="__photo_grid_lightbox_74Ajkz"] .photo-grid__grid {
  background-color: #f7f7f7;
  padding: 5px;
}

/* "Ready to Get Started?" bottom banner — 28px curved corners */
[id$="__section_banner_image_pKKWHD"] .banner-image {
  border-radius: 28px;
  overflow: hidden;
}

/* ====== FAQ PAGE ====== */

/* "Have Additional Questions?" bottom banner — 28px curved corners */
[id$="__section_banner_image_TJNCRU"] .banner-image {
  border-radius: 28px;
  overflow: hidden;
}

/* ====== Shared bottom banner (corporate-headshots / corporate-event-gallery) ====== */
[id$="__section_banner_image_TbPDMf"] .banner-image {
  border-radius: 28px;
  overflow: hidden;
}

/* ====== BOOK YOUR PORTRAIT PAGE ====== */

/* Quantity input — grey border, 40px height, 85px wide, square (not pill) */
.selector-wrapper--qty .quantity__input {
  border-color: #c2c2c2 !important;
  height: 40px !important;
  width: 85px !important;
  min-width: unset !important;
  max-width: 85px !important;
  border-radius: 0 !important;
}
.selector-wrapper--qty .quantity__button {
  border-color: #c2c2c2 !important;
  height: 40px !important;
  border-radius: 0 !important;
}

/* Tighten the space Shopify reserves for the Shop Pay Installments
   widget (empty on our store since Installments aren't enabled). Theme
   sets margin-bottom: var(--grid-gutter) = 20px; trimming to 9px lifts
   the Add-to-Cart button so it sits higher on the product page. */
@media only screen and (min-width: 768px) {
  .shop-pay-terms {
    margin-bottom: 9px !important;
  }
}

/* Product page gallery — cap WIDTH at 570px on desktop. */
@media only screen and (min-width: 768px) {
  .product-gallery {
    max-width: 570px;
  }

  /* Tighten the grid so the two columns hug their caps instead of
     expanding to fill half of the wrapper each.

     Theme default is `repeat(2, minmax(0, 1fr))` overridden by
     --standard to `calc(50% - gutter/2) calc(50% - gutter/2)`
     (template-product.css L140 & L167). Those 50% columns are
     ~690px wide on a 1440 site-width, so even though the gallery
     caps at 570px and form-wrapper caps at 620px, each column had
     ~70-120px of dead space inside it — and all of it collected
     between the gallery and the variants as a visible gap.

     Fixing the tracks to the exact caps (570px + 620px = 1190px
     content, + 60px gutter = 1250px) leaves 70px of free space in
     the 1320px-wide wrapper content area. `justify-content: center`
     distributes that 70px equally, so ~35px sits on each side of
     the two-column block. The columns themselves sit flush against
     the gutter, eliminating the photo-to-variants gap.

     Chained with --carousel for (0,2,0) specificity — template-
     product.css loads after custom.css, so a plain --standard
     selector ties and loses on load order. */
  .product-single__wrapper--carousel.product-single__wrapper--standard,
  .product-single__wrapper--standard.product-single__wrapper--carousel {
    grid-template-columns: 570px 620px;
    justify-content: center;
  }
}

/* Add to cart button — blue, shadow, 200 x 45px
   To remove: delete the rules below up to the next comment */
.product-single__details .product__submit__add {
  background-color: #0b57d0 !important;
  border-color: #0b57d0 !important;
  box-shadow: none !important;
  height: 45px !important;
  min-height: 45px !important;
}
/* Hover — keep same blue, no shadow, no colour darkening */
.product-single__details .product__submit__add:hover {
  background-color: #0b57d0 !important;
  border-color: #0b57d0 !important;
  box-shadow: none !important;
}
@media only screen and (min-width: 768px) {
  .product-single__details .product__submit__add {
    width: 200px !important;
  }
}

/* Remove pre-discount price shown on ATC button */
.product__submit__add .product__price--regular {
  display: none !important;
}

/* ============================================================================
   Product page — Group Discount preview
   Wired up by custom.js → applyProductPagePreview when the people field has
   qty ≥ 2 and a tier matches. Original price gets struck and greyed; the
   discounted price renders inline next to it in the brand ink color.

   The discounted span shares `.product__price--regular` (and the optional
   `--bold` modifier) so the font, weight, and size match the original
   price exactly — only color + line-through change between the two states.
   ============================================================================ */
.product__price [data-product-price].product__price--struck {
  text-decoration: line-through !important;
  color: #888 !important;
  margin-right: 12px;
  /* Don't override font-weight/size — let .product__price--regular keep them */
}

.product__price [data-product-discounted-price] {
  color: #0b0b0b !important;
  /* Font properties are inherited from the .product__price--regular class
     applied on the same element (see snippets/product.liquid) */
}

.product__price [data-product-discounted-price][hidden] {
  display: none !important;
}

/* "Experience the Difference" image section — 28px curves */
[id$="__section_image_with_text_LVg4pX"] .image-with-text__items {
  border-radius: 28px;
  overflow: hidden;
}

/* Sticky add to cart — center product title / price block */
.cart-bar__info {
  align-items: center !important;
  text-align: center !important;
}

/* Sticky add to cart — center the option selector dropdowns (location, backdrop, etc.) */
.cart-bar__options {
  justify-content: center !important;
}
.cart-bar__options .cart-bar__select__wrapper {
  text-align: center !important;
}
.cart-bar__options .select-popout__toggle {
  justify-content: center !important;
}

/* Sticky add to cart — blue ATC button */
.cart-bar .product__submit__add {
  background-color: #0b57d0 !important;
  border-color: #0b57d0 !important;
}

/* ====== DRAWER CART ====== */

/* Price summary — right-aligned, 14px, stacked vertically: original → discount → total */
.cart__price-summary {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  font-size: 14px;
  text-align: right;
  padding: 8px 0 4px;
}
.cart__price-original {
  opacity: 0.5;
  text-decoration: line-through;
}
.cart__price-discount {
  color: #c00;
}
.cart__price-total {
  font-weight: 600;
}

/* "Taxes calculated at checkout" — centred */
.cart__text {
  text-align: center !important;
}

/* Hide the theme's "Items" label injected into the cart footer */
.cart__foot-inner > span {
  display: none !important;
}

/* (Removed) `[data-cart-price-holder] { display: none }` — this
   wrapper was hidden back when the cart was per-item-totals-only,
   but the V2 summary row ("X people | Saving $Y | $Total") was
   later built INSIDE this wrapper. With the hide rule active the
   summary row never showed (was masked by AIOD's injected styles
   until AIOD was uninstalled). The legacy elements inside —
   .cart__discounts, .cart__price-summary, .cart__total — are
   each already hidden by their own inline `style="display:none"`
   or `hidden` attribute, so removing this rule does not reveal
   any unwanted legacy markup. */

/* ====== WHAT TO EXPECT PAGE ====== */

/* #fafafa sections — 28px corner curves */
.wte-jump-nav,
.wte-backdrops,
.wte-preparation,
.wte-lighting,
.wte-preview,
.wte-delivery,
.wte-retouching,
.wte-addons {
  border-radius: 28px;
  overflow: hidden;
}

/* Jump to Section buttons — pill, 44px tall (was 46px).
   Covers both .wte-jump-nav (What-to-Expect + Corporate Headshots
   gallery) and .faq-jump-nav (FAQ page). Inner JSON styles use
   padding: 10px 16px which gives 46px; 9px top/bottom trims to 44px. */
.wte-jump-nav a,
.faq-jump-nav a {
  border-radius: 30px !important;
  padding: 9px 16px !important;
}

/* Flexible Location Options — two cards, 28px */
.wte-locations .wte-col-card {
  border-radius: 28px;
}

/* 100+ Backdrop Choices — four cards, 28px */
.wte-backdrops .wte-col-card {
  border-radius: 28px;
}

/* Explore Our Backdrop Colours button — match the theme's medium
   button dimensions (padding 12px 20px, font-size 1rem). Pill shape
   stays as it was. */
.wte-backdrops .wte-inline-btn {
  border-radius: 30px !important;
  padding: 12px 20px !important;
  font-size: 1rem !important;
}

/* Hero images (outdoor, lighting, preview, retouching) — 28px curves */
.wte-outdoor .wte-container > img,
.wte-lighting .wte-container > img,
.wte-preview .wte-container > img,
.wte-retouching .wte-container > img {
  border-radius: 28px;
  display: block;
  width: 100%;
  margin: 30px 0;
}

/* Group Discounts — pill badges */
.wte-group .wte-discount-badge {
  border-radius: 30px !important;
}

/* Bottom CTA buttons — pill */
.wte-cta-btn {
  border-radius: 30px !important;
}

/* ====== LINKEDIN HEADSHOTS PAGE ====== */

/* Photo grid — already covered by the enterprise rule above:
   [id$="__photo_grid_lightbox_74Ajkz"] shares the same section ID */

/* "Why 800+ Companies Choose Us" feature cards — 28px curves */
[id$="__section_custom_html_FEaHt4"] .feature-card-item {
  border-radius: 28px !important;
}

/* "What's Included" — remove dot background, use #fafafa */
[id$="__section_custom_html_LLk4CC"] .headshot-package-section {
  background: #fafafa !important;
  background-image: none !important;
  box-shadow: none !important;
}
[id$="__section_custom_html_LLk4CC"] .headshot-package-section::before {
  display: none !important;
}

/* "What's Included" feature cards — 28px curves */
[id$="__section_custom_html_LLk4CC"] .headshot-feature-card {
  border-radius: 28px !important;
}

/* Service area location badges — pill */
[id$="__section_custom_html_kqpKBV"] .areas-list span {
  border-radius: 30px !important;
}

/* ====== ENTERPRISE — MOST POPULAR badge pill ====== */
.bp-pricing-card.bp-featured::before {
  border-radius: 30px !important;
}

/* ====== HOME PAGE — Photo grid: hide items 9–12 on mobile ====== */
@media (max-width: 767px) {
  .photo-grid__grid .photo-grid__item:nth-child(n+9) {
    display: none !important;
  }
}

/* ====== WHAT TO EXPECT PAGE ====== */

/* Jump to Section row — remove container curves (buttons stay pill via .wte-jump-nav a) */
.wte-jump-nav {
  border-radius: 0 !important;
}

/* 100+ Backdrop Choices — 6 images: curve each image */
.wte-backdrops img {
  border-radius: 28px;
  overflow: hidden;
}

/* Ready to Book — hover handled by the general btn--solid / btn--solid-border rules */

/* ====== FAQ — inline video curved corners ====== */
.main-page__content video,
.page-width video {
  border-radius: 28px;
  overflow: hidden;
  display: block;
}

/* ====== ADWORDS LANDING PAGES ====== */

/* Feature cards — 28px curves (fix: selector was .feature-card-item, correct class is .feature-card) */
[id$="__section_custom_html_FEaHt4"] .feature-card {
  border-radius: 28px !important;
}

/* Image-with-text buttons — side by side instead of stacked */
[id$="__section_image_with_text_hXN8Pb"] .image-with-text__buttons {
  display: inline-flex !important;
  width: auto !important;
  margin-right: 10px !important;
}

/* ====== CONSISTENT BUTTON HOVER — invert on hover for all non-ATC buttons ======
   Excludes: .product__submit__add (blue ATC button)
   Excludes: .radio__label (variant selectors — they use their own checked/hover states)

   NOTE on .btn--solid: theme sets border-width: 0 on these, so border-color alone
   cannot draw an outline. We use box-shadow: inset instead — it works regardless of
   border-width and never shifts layout.
================================================================ */

/* --- Solid black → outline on hover --- */
.btn--solid.btn--black:not(.product__submit__add) {
  --btn-bg-hover: transparent;
}
.btn--solid.btn--black:not(.product__submit__add):hover {
  background: #fff !important;
  color: #000 !important;
  box-shadow: inset 0 0 0 1px #000 !important;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease !important;
}

/* --- Solid-border black → inverts on hover (white bg, black text) --- */
.btn--black.btn--solid-border:not(.product__submit__add),
.btn--solid-border.btn--black:not(.product__submit__add) {
  --btn-bg-hover: transparent;
}
.btn--black.btn--solid-border:not(.product__submit__add):hover,
.btn--solid-border.btn--black:not(.product__submit__add):hover {
  background: #fff !important;
  color: #000 !important;
  border-color: #000 !important;
  box-shadow: inset 0 0 0 1px #000 !important;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease !important;
}

/* --- Solid white → outline on hover --- */
.btn--solid.btn--white:not(.product__submit__add) {
  --btn-bg-hover: transparent;
}
.btn--solid.btn--white:not(.product__submit__add):hover {
  background: transparent !important;
  color: #fff !important;
  box-shadow: inset 0 0 0 1px #fff !important;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease !important;
}

/* --- Solid-border white → inverts on hover (black bg, white text, white outline) --- */
.btn--white.btn--solid-border:not(.product__submit__add),
.btn--solid-border.btn--white:not(.product__submit__add) {
  --btn-bg-hover: transparent;
}
.btn--white.btn--solid-border:not(.product__submit__add):hover,
.btn--solid-border.btn--white:not(.product__submit__add):hover {
  background: #000 !important;
  color: #fff !important;
  box-shadow: inset 0 0 0 1px #fff !important;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease !important;
}

/* --- Solid primary → outline on hover --- */
.btn--solid.btn--primary:not(.product__submit__add) {
  --btn-bg-hover: transparent;
}
.btn--solid.btn--primary:not(.product__submit__add):hover {
  background: transparent !important;
  color: var(--PRIMARY-BUTTONS-COLOR-BG) !important;
  box-shadow: inset 0 0 0 1px var(--PRIMARY-BUTTONS-COLOR-BG) !important;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease !important;
}

/* --- Outline primary → filled on hover --- */
.btn--primary.btn--solid-border:not(.product__submit__add),
.btn--solid-border.btn--primary:not(.product__submit__add) {
  --btn-bg-hover: transparent;
}
.btn--primary.btn--solid-border:not(.product__submit__add):hover,
.btn--solid-border.btn--primary:not(.product__submit__add):hover {
  background: var(--PRIMARY-BUTTONS-COLOR-BG) !important;
  color: var(--PRIMARY-BUTTONS-COLOR-TEXT) !important;
  box-shadow: inset 0 0 0 1px var(--PRIMARY-BUTTONS-COLOR-BORDER) !important;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease !important;
}

/* ====== STICKY BAR — tablet (769–1025px) compact layout ====== */
@media only screen and (min-width: 769px) and (max-width: 1025px) {
  .cart-bar__media img {
    width: 50px;
    height: 50px;
  }
  .cart-bar__info {
    max-width: 120px;
  }
  .cart-bar__product__title {
    font-size: calc(0.85rem * var(--adjust-body));
    line-height: 1.2;
  }
  .cart-bar__product__price {
    font-size: calc(0.8rem * var(--adjust-body));
  }
  .cart-bar .select-popout__toggle {
    padding: 8px 10px;
    font-size: 0.8rem;
  }
  .cart-bar__quantity .quantity__input {
    width: 50px !important;
    max-width: 50px !important;
    height: 40px !important;
  }
  .cart-bar__form {
    gap: 8px;
  }
  .cart-bar__options {
    gap: 8px;
  }
}

/* ====== MOBILE MENU — pill button for "Book Your Portrait" ======
   Solid black pill with white text — matches the desktop nav pill's
   default state. No hover/active colour swap on mobile: touch devices
   don't have a stable hover state and the theme's red :active flash
   was ugly. Title case. */
.mobile-navlink.mobile-navlink--highlight {
  display: inline-block !important;
  width: auto !important;
  padding: 5px 16px !important;
  border: 1px solid #000 !important;
  border-radius: 30px !important;
  background-color: #000 !important;
  color: #fff !important;
  --text: #fff;
  text-transform: none !important;
}
/* Keep the same black/white treatment on press + visited so the pill
   never flashes red or white mid-tap. */
.mobile-navlink.mobile-navlink--highlight:hover,
.mobile-navlink.mobile-navlink--highlight:focus,
.mobile-navlink.mobile-navlink--highlight:active,
.mobile-navlink.mobile-navlink--highlight:visited {
  background-color: #000 !important;
  color: #fff !important;
  --text: #fff;
}

/* ====== VIEW PACKAGES — sticky button perfectly centred on mobile ====== */
/* The parent .cart-bar__form has margin-left:auto + padding-right:10px which
   creates asymmetric spacing. Override on mobile so the button is truly centred. */
@media only screen and (max-width: 767px) {
  .cart-bar__form {
    margin-left: 0 !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
    justify-content: center !important;
  }
  .cart-bar__mobile-options-btn {
    display: flex;
    justify-content: center;
    padding: 0;
  }
  .cart-bar__mobile-options-btn button {
    width: 100%;
    max-width: 100%;
    text-align: center;
  }
}

/* ====== BUTTON HOVER — outline (btn--outline) variants ======
   These were missing from the solid-border rules above.
   btn--outline has visible border-width so we can use border-color directly.
   ============================================================ */

/* --- Outline black (btn--outline) → filled black on hover --- */
.btn--outline.btn--black:not(.product__submit__add):hover {
  background: #000 !important;
  color: #fff !important;
  border-color: #000 !important;
  transition: background 0.2s ease, color 0.2s ease !important;
}

/* --- Outline white (btn--outline) → filled on hover + white border visible --- */
.btn--outline.btn--white:not(.product__submit__add):hover {
  background: #fff !important;
  color: #000 !important;
  border-color: #fff !important;
  transition: background 0.2s ease, color 0.2s ease !important;
}

/* ====== BUTTON HOVER — kill theme's ::before/::after pseudo-element overlay ======
   The theme layers a semi-transparent overlay via ::before/::after (opacity: 0.3,
   background: --btn-bg-hover) on hover. This conflicts with our full-colour hover
   inversions. Hide them entirely so only our explicit background/color applies.
   ============================================================ */
.btn--solid:not(.product__submit__add)::before,
.btn--solid:not(.product__submit__add)::after,
.btn--solid-border:not(.product__submit__add)::before,
.btn--solid-border:not(.product__submit__add)::after,
.btn--outline:not(.product__submit__add)::before,
.btn--outline:not(.product__submit__add)::after {
  display: none !important;
}

/* ====== MOBILE — centre CTA buttons on small screens ======
   On < 480px the theme switches .main-buttons to flex-flow: column
   but leaves align-items: normal (= left-aligned). Buttons inside
   image-with-text, section-text, and similar sections appear off-centre.
   ============================================================ */
@media only screen and (max-width: 479px) {
  .main-buttons {
    align-items: center !important;
  }
  .main-buttons__item {
    justify-content: center !important;
  }
}

/* ====== MOBILE — centre contact-form Send button ====== */
@media only screen and (max-width: 479px) {
  .form__item--submit {
    display: flex;
    justify-content: center;
  }
}

/* ONLY the middle wrapper grows / gets wider */
.cart-bar__options .cart-bar__select__wrapper:nth-child(2) .select-popout__list--visible{
  min-width: max(240px, 100%);
}


.group-discount-message {
  color:#ff4848; /* change this to whatever you want */
  font-size: 13px !important;
  display: flex !important;
  align-items: center;
  gap: 6px;
}
.group-discount-message .spinner-icon {
  width: 25px;
  height: 25px;
  flex-shrink: 0;
  animation: spin 1s linear infinite;
}
.backdrop-optimistic-saving {
  display: flex !important;
  align-items: center;
  gap: 5px;
  font-size: 13px;
}
.backdrop-optimistic-saving .spinner-icon {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  animation: spin 1s linear infinite;
}
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* ============================================================
   Enterprise — "How It Works" image-with-text + numbered steps
   ============================================================ */
.how-it-works {
  overflow: hidden;
  background: var(--bg);
}
.how-it-works__inner {
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}
@media only screen and (min-width: 768px) {
  .how-it-works__inner {
    flex-wrap: nowrap;
    flex-direction: row-reverse; /* image right, text left */
  }
}

/* --- Image side --- */
.how-it-works__image {
  position: relative;
  width: 100%;
  overflow: hidden;
}
@media only screen and (min-width: 768px) {
  .how-it-works__image {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
.how-it-works__image img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}
.body--rounded-corners .how-it-works__image,
.body--rounded-corners .how-it-works__image img {
  border-radius: var(--radius);
  overflow: hidden;
}

/* Seven-fifty height to match LinkedIn section */
@media only screen and (min-width: 768px) {
  .how-it-works__image img {
    height: 550px;
    object-fit: cover;
  }
}

/* --- Text / content side --- */
.how-it-works__content {
  width: 100%;
  padding: var(--gutter-mobile);
}
@media only screen and (min-width: 768px) {
  .how-it-works__content {
    flex: 0 0 50%;
    max-width: 50%;
    padding: 0 calc(var(--gutter) * 1.5) 0 0;
  }
}
@media only screen and (max-width: 767px) {
  .how-it-works__content {
    padding: 24px var(--gutter-mobile) 0;
  }
}

.how-it-works__heading {
  font-family: var(--FONT-STACK-HEADING);
  font-weight: var(--FONT-WEIGHT-HEADING);
  font-style: var(--FONT-STYLE-HEADING);
  font-size: var(--font-2);
  line-height: 1.15;
  margin: 0 0 10px;
  color: var(--text);
}
@media only screen and (max-width: 767px) {
  .how-it-works__heading {
    font-size: var(--font-3);
  }
}

.how-it-works__intro {
  font-size: calc(1.1rem * var(--adjust-body));
  line-height: 1.6;
  margin: 0 0 28px;
  color: var(--text);
}

/* --- Timeline steps --- */
.how-it-works__steps {
  list-style: none;
  margin: 0;
  padding: 0 0 0 28px;
  position: relative;
}
.how-it-works__steps::before {
  content: '';
  position: absolute;
  left: 7px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: #e0e0e0;
}

.how-it-works__step {
  position: relative;
  padding-bottom: 22px;
}
.how-it-works__step:last-child {
  padding-bottom: 0;
}
.how-it-works__step::before {
  content: '';
  position: absolute;
  left: -25px;
  top: 5px;
  width: 12px;
  height: 12px;
  background: #000;
  border-radius: 50%;
}

.how-it-works__step-number {
  display: none;
}

.how-it-works__step-text {
  flex: 1;
  min-width: 0;
}

.how-it-works__step-title {
  font-size: 1.05rem;
  font-weight: 600;
  color: #000;
  margin: 0 0 6px;
  line-height: 1.4;
}

.how-it-works__step-desc {
  font-size: 0.9rem;
  color: #666;
  line-height: 1.6;
  margin: 0;
}


[id*="section_image_with_text_EHkT3F"] .image-with-text__text ul {
  list-style: none;
  padding-left: 0;
}
[id*="section_image_with_text_EHkT3F"] .image-with-text__text ul li {
  padding-left: 28px;
  position: relative;
  margin-bottom: 6px;
}
[id*="section_image_with_text_EHkT3F"] .image-with-text__text ul li::before {
  content: '\2713';
  position: absolute;
  left: 0;
  font-weight: 700;
  color: #000;
}
[id*="section_columns_C6etVa"] .column-item__heading {
  text-transform: none;
}
[id*="section_multicolumn_gqEhrY"] .column-item__text.subheading-text {
  text-transform: none;
  letter-spacing: normal;
  font-family: var(--FONT-STACK-BODY);
  font-weight: var(--FONT-WEIGHT-BODY);
  font-size: calc(1rem * var(--adjust-body));
}
.body--rounded-corners .parent > .header__dropdown {
  border-bottom-left-radius: 8px;
  border-bottom-right-radius: 8px;
}



/* ====== "Portrait Features & Options" heading — tighten margin ======
   Overrides the theme's default `calc(var(--gutter) / 1.5)` for this
   specific icons-row section only. */
@media only screen and (min-width: 768px) {
  [id$="__section_icons_row_xcNNra"] .icons-row__headings {
    margin-bottom: 20px;
  }
}

/* ====== Gallery nav icons — hover swap + close rotate ======
   Used by: photo-grid-lightbox, main-page-backdrops, and the
   custom-HTML page galleries (corporate-headshots, corporate-event-gallery).
   Any button containing these icons gets the swap.
   Wrapped in `@media (hover: hover)` so the swap only fires on pointer
   devices — on touch devices :hover sticks after a tap until another
   element is touched, which made the arrows look "stuck" on the hover
   state when advancing slides on mobile. */
.gallery-icon--rest, .gallery-icon--hover, .gallery-icon--close {
  vertical-align: middle;
  transition: transform 0.2s ease;
  /* Force 45px across all usages (headshot / artwork / event gallery
     pages + photo-grid-lightbox on homepage, LinkedIn, enterprise pages).
     The SVGs have width/height="40" as HTML attrs; this overrides.
     `!important` because some legacy theme CSS sets different sizes. */
  width: 45px !important;
  height: 45px !important;
}
/* Gallery dialog BUTTONS (the parent containers the SVGs sit in) —
   match the 45px icon size so nothing clips or misaligns. Covers:
     - photo-grid-lightbox.liquid  → .photo-grid__dialog-*
     - main-page-backdrops.liquid  → .backdrops-dialog__*
     - page-gallery templates      → .page-gallery-dialog__*  (headshots / artwork / event) */
.photo-grid__dialog-close,
.photo-grid__dialog-prev,
.photo-grid__dialog-next,
.backdrops-dialog__close,
.backdrops-dialog__prev,
.backdrops-dialog__next,
.page-gallery-dialog__close,
.page-gallery-dialog__prev,
.page-gallery-dialog__next {
  width: 45px !important;
  height: 45px !important;
}
.gallery-icon--hover { display: none; }
/* Hover swap only on REAL hover-capable devices. We combine
   `(hover: hover)` + `(pointer: fine)` — both must be true — so that
   iPads with trackpads, Windows touchscreens, stylus devices etc. that
   report `hover: hover` on a tap don't stick in the hover state after
   advancing a slide. `!important` on the swap rules makes them win
   even if some other CSS reinterprets specificity. */
@media (hover: hover) and (pointer: fine) {
  button:hover > .gallery-icon--rest { display: none !important; }
  button:hover > .gallery-icon--hover { display: inline-block !important; }
  button:hover > .gallery-icon--close { transform: rotate(90deg); }
}
/* Belt & suspenders: force rest icon visible + hover icon hidden on any
   touch-capable device. Overrides sticky-hover behaviour that some
   mobile browsers apply after a tap. */
@media (hover: none), (pointer: coarse) {
  .gallery-icon--rest { display: inline-block !important; }
  .gallery-icon--hover { display: none !important; }
}

/* ====== Site-wide close icon — rotate 90° on hover ======
   Applies to any button/link containing the shared `icon-close` SVG
   (cart drawer close, backdrop modal close, quick-view close, etc.)

   Two non-obvious details:

   1. `will-change: transform` + `translateZ(0)` force GPU compositing
      from the start. Without this, the icon is CPU-rendered at rest and
      switches to GPU mid-animation; the two paths anti-alias slightly
      differently, making a stroke-based icon look "a touch bolder"
      after a hover-rotate finishes.

   2. `pointer-events: none` prevents the SVG itself from receiving mouse
      events — only the button handles hover. At 45° mid-rotation a square
      icon's visual extent grows to √2× (a 59px icon becomes 83px on the
      diagonal), which can stick out past the button's bounding box. If
      the SVG accepted pointer events, the cursor could be over the
      rotated SVG but outside the button's hit zone → button:hover flips
      off → rotation reverses → cursor is back in button → flips on →
      JITTER. Making the SVG invisible to the cursor eliminates that
      feedback loop. */
.icon-close {
  transition: transform 0.2s ease;
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
  pointer-events: none;
}
@media (hover: hover) {
  button:hover > .icon-close,
  a:hover > .icon-close,
  button:hover .icon-close,
  a:hover .icon-close {
    transform: rotate(90deg) translateZ(0);
  }
}
/* Same pointer-events fix for gallery close icons (lightbox close X in
   the headshot / artwork / event galleries + photo-grid-lightbox). */
.gallery-icon--close,
.gallery-icon--rest,
.gallery-icon--hover {
  pointer-events: none;
}

/* ====== Mobile nav expand/collapse — circled down/up arrow ======
   Replaces the default +/- icons ONLY on the mobile nav parent links
   (e.g. "Portfolio"). Other +/- on the site (FAQ, cart qty, filter
   accordions, footer links) keep their theme defaults. Icons come from
   snippets/nav-mobile-arrows.liquid — two SVGs stacked in the button,
   opacity-swapped on `.is-expanded`. */
.mobile-nav__trigger .nav-mobile-arrow {
  width: 38px;
  height: 38px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transition: opacity 0.3s ease;
}
/* Default state: down arrow visible, up arrow hidden */
.mobile-nav__trigger .nav-mobile-arrow--up { opacity: 0; }
/* Expanded state: swap */
.mobile-nav__trigger.is-expanded .nav-mobile-arrow--down { opacity: 0; }
.mobile-nav__trigger.is-expanded .nav-mobile-arrow--up { opacity: 1; }

/* ====== Mobile menu close — 40px visible ======
   Keep the theme's native 54×54 tap target (above the 44×44 mobile
   minimum) and reduce padding so the stroke-based icon-close renders
   at 40px — matches the rest of the site's close-icon scale. */
.drawer--nav .drawer__close-button {
  width: 54px !important;
  height: 54px !important;
  padding: 7px !important; /* 54 − 2×7 = 40px visible */
}
.drawer--nav .drawer__close-button .icon-close {
  width: 100%;
  height: 100%;
}

/* ====== TESTIMONIALS — equal-height cards (pure CSS) ====== */
/* Flickity adds .flickity-enabled BEFORE measuring cells, so
   height:100% collapses them (circular dependency). Instead we
   use min-height:100% — Flickity measures natural height first,
   then after setting viewport height the min-height kicks in.
   Cells become flex containers so inner stretches via flex:1. */

testimonials-slider.flickity-enabled [data-item] {
  min-height: 100% !important;
  display: flex !important;
  flex-direction: column !important;
}
.testimonial__item__inner {
  flex: 1 !important;
  display: flex !important;
  flex-direction: column !important;
}
.testimonial__item__content {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 !important;
}
.testimonial__user {
  margin-top: auto !important;
  padding-top: 16px;
}
/* Image cards have no .testimonial__user wrapper — push name to bottom */
.testimonial__item__image .testimonial__item__content .testimonial__user__name {
  margin-top: auto !important;
  padding-top: 16px;
  font-size: calc(0.8rem * var(--adjust-body)) !important;
}
/* Image card inner has padding:0 (photo edge-to-edge) but text cards
   have padding:var(--inner) all around. Add bottom padding to image
   cards so names align horizontally across both card types. */
.testimonial__item__image .testimonial__item__inner {
  padding-bottom: var(--inner) !important;
}

/* Subheading (location) under person name — darker grey */
.testimonial__subheading {
  color: #6b6b6b !important;
}

/* About page — head-photographer section anchor aliases.

   The "Who is BusinessPortraits.ca's head photographer?" section in
   `templates/page.about.json` (section abt_section3_photographer) has
   two URL fragments that both need to scroll to the same heading:

     - /pages/about#head-photographer  (canonical — H2 id, jump-nav uses it)
     - /pages/about#koby-sirkovich     (alias — matches the sitewide schema
                                        Person @id used in 6 JSON-LD files)

   The alias target is a zero-height <span class="bp-anchor"> stub sitting
   immediately above the H2 inside `.bp-about-koby-sect__inner`. The
   .bp-anchor class itself supplies scroll-margin-top (line ~1944 below),
   so external links to either fragment land the section heading below the
   sticky header rather than buried under the nav. */

/* Jump-nav anchor targets (used by anchor_id setting on theme sections like
   section-image-with-text.liquid). Pushes the jump landing point below the
   sticky header so the section heading isn't hidden under the nav. */
.bp-anchor {
  display: block;
  scroll-margin-top: 90px;
  height: 0;
  overflow: hidden;
}

/* ========================================================================
   BPHOME — Home Page Refinements v3
   --------------------------------------------------------------
   Layout-only styles for section-custom-html blocks on the home
   page. Typography is intentionally NOT set here — every element
   inherits from the theme's configured fonts so these blocks read
   as part of the rest of the site, not as a foreign design.

   Only structural rules: layout, max-widths, spacing, dividers,
   colors that match the existing palette (--bp-line / --bp-mute
   are derived from the theme's neutral grays).
   ======================================================================== */

.bp-services-intro {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 20px;
}

.bp-services-intro__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
  margin-bottom: 48px;
  border-bottom: 1px solid #e5e5e2;
  padding-bottom: 32px;
}

.bp-services-intro__head h2 {
  margin: 0;
  max-width: 680px;
  --adjust-heading: calc(var(--FONT-ADJUST-HEADING) * 1.1);
  /* font-family / size / weight inherit from theme h2 */
}

.bp-services-intro__lede {
  max-width: 360px;
  margin: 0;
  color: #666;
  font-size: 0.95em;
  line-height: 1.6;
}

.bp-services-intro__lede a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.bp-services-intro__body {
  max-width: 1080px;
}

.bp-services-intro__body p {
  margin: 0 0 14px;
  line-height: 1.7;
  color: #333;
}

.bp-services-intro__body p:last-child {
  margin: 0;
}

.bp-services-intro__body a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 3px;
}

@media (max-width: 860px) {
  .bp-services-intro__head {
    flex-direction: column;
    align-items: flex-start;
    gap: 18px;
  }
  .bp-services-intro__head h2,
  .bp-services-intro__lede {
    max-width: none;
  }
}

/* ========================================================================
   Text columns with images — "BP Card" variant
   --------------------------------------------------------------
   ALL rules here are scoped to `.column-item--bp-card`. That class
   is added to a column-item ONLY when at least one of the new
   schema fields is filled (subheading, price label/value, pill).
   Standard "Text columns with images" usages elsewhere on the site
   inherit zero styling from this block.
   ======================================================================== */

/* ----- Equal-height layout -----------------------------------------------
   Grid stretches each .column-item to the tallest in the row, but the
   inner content collapses to its natural height. We rebuild the chain
   as nested flex columns so the content fills the full card height.
   That lets `.column-item__divider { margin-top: auto }` push the
   divider + footer (price + pill) to the bottom of the card.

   Note: the image wrapper's child uses `padding-top: var(--aspect-ratio)`
   for its aspect ratio (theme.css ~line 8037). In a flex-column parent
   that percentage-padding child can collapse to 0 height in some
   browsers — so we explicitly tell flex not to size the wrapper:
   `flex: 0 0 auto` (don't grow, don't shrink, respect natural height). */
.column-item--bp-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 28px;
  overflow: hidden;
  transition: box-shadow 0.3s ease;
}

/* Hover state — matches the .wte-col-card pattern used elsewhere on the
   site (subtle shadow lift, no vertical translate). */
.column-item--bp-card:hover {
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
}

.column-item--bp-card .column-item__inner {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}
.column-item--bp-card .column-item__image-wrapper {
  flex: 0 0 auto;
  width: 100%;
}
.column-item--bp-card .column-item__content {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  padding: 25px;       /* internal padding so content doesn't touch the border */
}

.column-item--bp-card .column-item__subheading {
  font-size: 12px;
  letter-spacing: 0;
  color: #666;
  font-weight: 500;
  line-height: 1.4;
  margin: -6px 0 14px;
}

/* Divider — uses padding-top + border-bottom so the visible line sits at
   the bottom of the hr element with an 18px guaranteed gap above it.
   margin-top: auto pushes it down to the bottom of the flex column. */
.column-item--bp-card .column-item__divider {
  border: none;
  border-bottom: 1px solid #e5e5e2;
  height: 0;
  margin: auto 0 0;
  padding-top: 18px;
  width: 100%;
}

.column-item--bp-card .column-item__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-top: 16px;
}

.column-item--bp-card .column-item__price {
  display: flex;
  flex-direction: column;
  line-height: 1;
  min-width: 0;
}

.column-item--bp-card .column-item__price-label {
  font-size: 12px;
  letter-spacing: 0;
  font-weight: 500;
  color: #666;
  margin-bottom: 10px;
}

.column-item--bp-card .column-item__price-value {
  font-size: 20px;            /* default — overridden per-block by inline style from price_value_size slider */
  font-weight: 500;
  color: #111;
  letter-spacing: -0.005em;
}

/* Pill button — rounded full, three color variants.
   Hover convention matches the site's existing black-button pattern
   (see .book-portrait-button earlier in this file): black → white with
   black outline on hover. No translateY — the rest of the site doesn't
   use vertical-shift hovers, so neither does this. */
.column-item--bp-card .column-item__pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 15px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0;
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1px solid transparent;
  transition: background 160ms ease, color 160ms ease, border-color 160ms ease;
}

/* Black: solid black → white background, black outline, black text */
.column-item--bp-card .column-item__pill.pill--black {
  background: #111;
  color: #fff;
  border-color: #111;
}
.column-item--bp-card .column-item__pill.pill--black:hover {
  background: #fff;
  color: #111;
  border-color: #111;
}

/* White: white background w/ black outline → invert to black */
.column-item--bp-card .column-item__pill.pill--white {
  background: #fff;
  color: #111;
  border-color: #111;
}
.column-item--bp-card .column-item__pill.pill--white:hover {
  background: #111;
  color: #fff;
  border-color: #111;
}

/* Ghost: transparent w/ black outline → fill black on hover */
.column-item--bp-card .column-item__pill.pill--ghost {
  background: transparent;
  color: #111;
  border-color: #111;
}
.column-item--bp-card .column-item__pill.pill--ghost:hover {
  background: #111;
  color: #fff;
  border-color: #111;
}

/* Mobile (<=480px): stack footer vertically — price above pill,
   both centered. Operator preferred this over the desktop's
   row+space-between layout because of inconsistent visual centering
   between short ("From $226.98") and long ("Quote on configuration")
   price text on narrow viewports. Desktop layout above is unchanged. */
@media (max-width: 480px) {
  .column-item--bp-card .column-item__footer {
    flex-direction: column;
    align-items: center;
    gap: 12px;
  }
  .column-item--bp-card .column-item__price {
    align-items: center;
    text-align: center;
  }
  .column-item--bp-card .column-item__pill {
    width: 100%;
    justify-content: center;
  }
}

/* ========================================================================
   Hero buttons — side-by-side
   --------------------------------------------------------------
   The home hero is a section-image-with-text with two button blocks
   (Book a Team Headshot Day + Request a Quote). The theme renders
   each button in its own block-level wrapper, which stacks them.

   We use a partial-match attribute selector ([id*=...]) because
   Shopify prefixes the rendered DOM id with the template id
   (e.g. ImageWithText--template--26316586156075__section_image_with_text_7FKgfj).
   The substring stays the same regardless of the template id, so
   this selector survives most theme/template rebuilds.

   `inline-flex` is used (not inline-block) because .main-buttons is
   already display:flex from the theme — inline-flex preserves the
   inner flex behaviour while making the outer element flow inline.
   ======================================================================== */
[id*="section_image_with_text_7FKgfj"] .image-with-text__buttons {
  display: inline-flex;
  vertical-align: top;
  margin-right: 12px;
}

@media (max-width: 600px) {
  [id*="section_image_with_text_7FKgfj"] .image-with-text__buttons {
    display: flex;
    margin-right: 0;
  }
}

/* Individual booking section (bottom CTAs side-by-side, same as hero) */
[id*="section_image_with_text_Qtkgb6"] .image-with-text__buttons {
  display: inline-flex;
  vertical-align: top;
  margin-right: 12px;
}
@media (max-width: 600px) {
  [id*="section_image_with_text_Qtkgb6"] .image-with-text__buttons {
    display: flex;
    margin-right: 0;
  }
}

/* Portfolio header section (Corporate Headshots Portfolio + Corporate Event Portfolio side-by-side) */
[id*="section_image_with_text_rJHTJe"] .image-with-text__buttons {
  display: inline-flex;
  vertical-align: top;
  margin-right: 12px;
}
@media (max-width: 600px) {
  [id*="section_image_with_text_rJHTJe"] .image-with-text__buttons {
    display: flex;
    margin-right: 0;
  }
}

/* ========================================================================
   Portfolio — header (section 1)
   ======================================================================== */
.bp-portfolio-head {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 20px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
}

.bp-portfolio-head__copy {
  flex: 1;
  min-width: 0;
}

.bp-portfolio-head__eyebrow {
  font-size: 12px;
  color: #666;
  font-weight: 500;
  letter-spacing: 0;
  margin-bottom: 14px;
}

.bp-portfolio-head__copy h2 {
  font-size: clamp(28px, 3vw, 42px);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0 0 14px;
  max-width: 720px;
  color: #111;
}

.bp-portfolio-head__copy p {
  font-size: 15px;
  line-height: 1.65;
  color: #333;
  margin: 0;
  max-width: 680px;
}

.bp-portfolio-head__link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: #111;
  font-weight: 500;
  text-decoration: none;
  flex-shrink: 0;
  transition: gap 160ms ease;
}
.bp-portfolio-head__link:hover { gap: 16px; }
.bp-portfolio-head__link span {
  border-bottom: 1px solid #111;
  padding-bottom: 4px;
}
.bp-portfolio-head__link svg {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  fill: currentColor;
}

@media (max-width: 768px) {
  .bp-portfolio-head {
    flex-direction: column;
    align-items: stretch;
    gap: 24px;
  }
  .bp-portfolio-head__actions {
    justify-content: center;
    flex-wrap: wrap;
  }
}

/* ========================================================================
   Portfolio — grid override (section 2)
   --------------------------------------------------------------
   The photo-grid-lightbox section emits an inline #PhotoGrid--<id>
   style with `grid-template-columns: repeat(6, 1fr)` (12 images = 2
   rows). For the home portfolio we want 8 images on one line desktop
   and 6 on one line mobile (with the last 2 hidden on mobile).

   Inline ID selectors (1,1,0) outrank attribute selectors (0,2,0),
   so !important is needed to override the per-section inline style.
   Scoped via [id*="bphome_portfolio"] so other photo-grid-lightbox
   sections elsewhere on the site keep their default layout.
   ======================================================================== */
[id*="bphome_portfolio"] .photo-grid__grid {
  grid-template-columns: repeat(8, 1fr) !important;
}

@media (max-width: 767px) {
  /* Mobile keeps the theme's default 2-col grid (2 cols × 3 rows for 6 images) */
  [id*="bphome_portfolio"] .photo-grid__grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  /* Still hide the 7th and 8th images so it's exactly 2 × 3 */
  [id*="bphome_portfolio"] .photo-grid__item:nth-child(n+7) {
    display: none !important;
  }
}

/* ========================================================================
   Portfolio — footer caption (section 3)
   ======================================================================== */
.bp-portfolio-foot {
  text-align: center;
  font-size: 0.9rem;
  color: #555;
  padding: 0 20px;
  margin: 0 auto;
  max-width: 880px;
  line-height: 1.6;
}
.bp-portfolio-foot strong {
  color: #111;
  font-weight: 500;
}

/* ========================================================================
   Client roster — 5 rounded boxes side by side (custom_html replacement
   for the icons-row roster)
   ======================================================================== */
/* Editorial-list layout (replaces the previous 5-card roster grid).
   Five rows, three columns: vertical label / italic claim / names list.
   Stacks to a single column under 900px. */
.bp-roster {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 20px;
}

.bp-roster__row {
  display: grid;
  grid-template-columns: 200px 1fr 1.2fr;
  gap: 48px;
  align-items: baseline;
  padding: 32px 0;
  border-top: 1px solid #e5e5e2;
}

.bp-roster__row:last-child {
  border-bottom: 1px solid #e5e5e2;
}

.bp-roster__vert {
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #666;
  font-weight: 600;
  line-height: 1.4;
}

.bp-roster__claim {
  font-weight: 500;
  font-size: 24px;
  letter-spacing: -0.01em;
  color: #111;
  line-height: 1.25;
}

.bp-roster__claim em {
  /* Theme highlight font (Playfair Italic) for the count phrase. */
  font-family: var(--FONT-STACK-HIGHLIGHT);
  font-style: italic;
  font-weight: 400;
  color: #111;
  margin-right: 6px;
}

.bp-roster__names {
  font-size: 13px;
  line-height: 1.6;
  color: #666;
  letter-spacing: 0.01em;
}

@media (max-width: 900px) {
  .bp-roster__row {
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 24px 0;
  }
}

/* ========================================================================
   Feature card grid — 4 simple title + text cards (e.g. team-day cards)
   ======================================================================== */
/* Editorial-row layout for the team-day step list (replaces the previous
   4-card grid).
   Desktop: 2-col grid. Left column stacks the big serif-italic number
   on top of the title; right column holds the description.
   Mobile: collapses to a single column — number first, title under it,
   description below. */
.bp-feature-grid {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 20px;
  display: flex;
  flex-direction: column;
}

.bp-feature-row {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 60px;
  align-items: center;
  padding: 20px 0;
  border-top: 1px solid #e5e5e2;
}

.bp-feature-row:last-child {
  border-bottom: 1px solid #e5e5e2;
}

.bp-feature-row__lead {
  display: block;
}

.bp-feature-row__num {
  /* Theme highlight font (Playfair Italic) — matches the roster italic count. */
  font-family: var(--FONT-STACK-HIGHLIGHT);
  font-style: italic;
  font-weight: 400;
  font-size: 64px;
  line-height: 0.9;
  color: #000;
  letter-spacing: -0.02em;
  margin: 0 0 12px;
}

.bp-feature-row__title {
  font-size: 1.05rem;
  font-weight: 500;
  color: #111;
  margin: 0;
  line-height: 1.3;
}

.bp-feature-row__text {
  font-size: 14px;
  line-height: 1.6;
  color: #333;
  margin: 0;
}

@media (max-width: 700px) {
  .bp-feature-row {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 20px 0;
  }
  .bp-feature-row__num {
    font-size: 40px;
    margin: 0 0 10px;     /* small breathing room above the title on mobile */
  }
}

/* ========================================================================
   Tier card grid — dark variant (white on black)
   ======================================================================== */
.bp-tier-grid {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 20px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.bp-tier-card {
  background: #171717;
  color: #fff;
  border-radius: 28px;
  padding: 28px 26px;
  transition: box-shadow 0.3s ease;
}

.bp-tier-card:hover {
  box-shadow: 0 10px 40px rgba(255, 255, 255, 0.12);
}

/* Title + credit sit together above the grey divider */
.bp-tier-card__head {
  padding-bottom: 14px;
  margin-bottom: 14px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}

.bp-tier-card__title {
  font-size: 1.15rem;
  font-weight: 500;
  color: #fff;
  margin: 0 0 6px;
  line-height: 1.3;
}

.bp-tier-card__text {
  font-size: 14px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.78);
  margin: 0;
}

/* Red credit-percentage subtitle (e.g. "10% Account credit") — sits under
   the tier title, above the grey divider. The red #d43747 is an
   operator-approved exception to the strict-monochrome palette rule
   for the subscription tier cards specifically. PageSpeed/Lighthouse
   flags the contrast against the #171717 card background (~3.6:1)
   but the design is intentional and approved. */
.bp-tier-card__credit {
  color: #d43747;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.02em;
  margin: 0;
}

/* Red "Starting at $X in credit" line inside tier card body —
   same operator-approved exception as bp-tier-card__credit above. */
.bp-tier-card__starting {
  color: #d43747;
  display: inline-block;
  margin-top: 4px;
}

@media (max-width: 900px) {
  .bp-tier-grid { grid-template-columns: 1fr; }
}

/* ========================================================================
   90-Day Pilot — red underline beneath the alternate-font heading.

   Theme renders the <em>...</em> in this heading as a wrapped structure:
     <p id="Text--heading_mRaEpe" class="text-highlight-wrapper--alternate-font">
       <span class="text-highlight__break">
         <text-highlight class="text-highlight" data-highlight-type="alternate-font">
           <span class="text-highlight__string">90-Day Pilot</span>
         </text-highlight>
       </span>
     </p>
   The block's id (`Text--heading_mRaEpe`) is stable across templates because
   it derives from the JSON block key, so we use it to scope this rule to ONLY
   this heading (without leaking to the Thesis or other alternate-font uses).
   The `opacity: 1 !important` overrides theme.css's default opacity:0 on the
   string (which depends on a JS animation that may not fire when
   animations_enabled is false).
   ======================================================================== */
#Text--heading_mRaEpe .text-highlight__string {
  opacity: 1 !important;
  text-decoration: underline;
  text-decoration-color: #d43747;
  text-decoration-thickness: 3px;
  text-underline-offset: 5px;
}

/* ========================================================================
   Photo grid (bphome_portfolio): swap visual positions 3 and 4 on mobile.
   Mobile layout is a 2-column grid; without intervention items render in
   DOM order p1..p8. The user wants p4 in the 3rd visual slot and p3 in
   the 4th. CSS Grid `order` controls visual sequence — but items with
   default order (0) leapfrog explicitly-ordered items, so all 8 items
   need explicit values to keep p1/p2/p5/p6/p7/p8 in place.
   Note: lightbox next/prev navigation still uses DOM order (data-photo-
   grid-item indexes), so navigating from the swapped item won't follow
   the visual sequence — minor UX wart, lightbox click-to-open is fine.
   ======================================================================== */
@media (max-width: 600px) {
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(1) { order: 1; }
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(2) { order: 2; }
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(3) { order: 4; }
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(4) { order: 3; }
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(5) { order: 5; }
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(6) { order: 6; }
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(7) { order: 7; }
  [data-section-id$="bphome_portfolio"] .photo-grid__item:nth-child(8) { order: 8; }
}

/* ========================================================================
   Operator-requested mobile/visual tweaks (round 2026-04-29)
   ======================================================================== */

/* Hero stat line: center on mobile only.
   Block ID is stable from the JSON template (subheading_NiNBND). */
@media (max-width: 600px) {
  #ImageWithText--subheading_NiNBND { text-align: center !important; }
}

/* Service-grid card price block centering moved to the base
   .column-item__footer / .column-item__price rules earlier in this
   file (footer is now flex-direction: column on all viewports so
   price stacks above pill, both centered). */

/* Loading overlay: kill the black-to-white flash on page load.
   The overlay is purely cosmetic (masks FOUC during initial paint).
   Removing it eliminates the flash entirely. If reinstated later,
   change `display: none` to `background: #ffffff !important` to
   keep the overlay but make it white instead of black. */
.loading-overlay { display: none !important; }

/* ============================================================================
   ABOUT PAGE
   ----------------------------------------------------------------------------
   Custom HTML section styling for /pages/about. Loaded sitewide via custom.css
   but selectors are scoped under .bp-about so they only match the About page.

   Class namespace: bp-about-* (sub-namespace within the project bp- prefix).
   Reuses the homepage .bp-jump-nav class verbatim so any future site-wide
   tweak applies here automatically.

   Adopts site palette:
     ink #0b0b0b · mute #666 · hairline #e0e0e0 · surface #fafafa
     warm-cream #fff7f2 NOT used here per operator (greys-only)

   HANDOFF doc compliance:
     - !important on critical layout properties (cache-busting against stale
       inline styles or external rule injection).
     - Mobile-first; every multi-column grid collapses to single column at 768px.
     - Typography weights capped at 500 (theme only loads up to 500).
   ============================================================================ */

/* ---- Tokens (scoped to .bp-about wrapper) ---- */
.bp-about{
  --bp-about-ink:#0b0b0b;
  --bp-about-ink-2:#333333;
  --bp-about-mute:#666666;
  --bp-about-line:#e0e0e0;
  --bp-about-surface:#fafafa;
}
.bp-about *{box-sizing:border-box !important;}

/* Anchored H2s + section anchors — scroll-margin-top so jump-nav clicks don't
   bury the destination heading under the theme's sticky site header.
   `#koby-sirkovich` is the alias stub for the head-photographer section,
   used by external bylines/links and the schema Person @id. */
.bp-about h2[id], .bp-about [id^="how-we-"], .bp-about [id^="brand-"],
.bp-about [id^="head-"], .bp-about [id^="client"],
.bp-about [id^="speak"], .bp-about [id^="award"],
#koby-sirkovich {
  scroll-margin-top:100px !important;
}

/* Empty anchor element next to anchored H2s — invisible, zero-height. */
.bp-anchor{
  display:block !important;
  height:0 !important;
  visibility:hidden !important;
}

/* ---- Universal section header (used on Sections 2/3/4/5/6) ---- */
.bp-about-sect-h{
  font-family:Poppins,sans-serif !important;
  font-size:36px !important;
  font-weight:500 !important;
  letter-spacing:-0.018em !important;
  line-height:1.15 !important;
  margin:0 0 22px !important;
  max-width:880px !important;
  color:var(--bp-about-ink) !important;
}
/* Em tags in custom-HTML headings: Palo Alto's `alternate-font` Liquid
   transform (which wraps em → <text-highlight class="text-highlight" ...>)
   only runs inside native theme sections. Custom-HTML keeps raw <em>, so we
   reach for the same theme CSS variables (--FONT-STACK-HIGHLIGHT etc.) to
   apply Playfair Display italic ourselves. */
.bp-about-sect-h em,
.bp-about-finalcta__h em{
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif) !important;
  font-style:var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight:var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
}
.bp-about-sect-intro p{
  font-family:Poppins,sans-serif !important;
  font-size:16px !important;
  line-height:1.7 !important;
  color:var(--bp-about-ink-2) !important;
  margin:0 0 16px !important;
  max-width:880px !important;
}
.bp-about-sect-intro p:last-child{margin-bottom:0 !important;}
.bp-about-sect-intro a{
  color:var(--bp-about-ink) !important;
  text-decoration:underline !important;
  text-underline-offset:3px !important;
  text-decoration-color:rgba(0,0,0,0.25) !important;
}
.bp-about-sect-intro a:hover{
  color:var(--bp-about-mute) !important;
  text-decoration-color:var(--bp-about-mute) !important;
}
.bp-about-sect-intro strong{font-weight:600 !important;color:var(--bp-about-ink) !important;}
@media (max-width:768px){
  .bp-about-sect-h{font-size:28px !important;}
}

/* ---- bp-jump-nav (mirrors homepage bphome_author rules verbatim so any
        future site-wide tweak applies here automatically) ---- */
.bp-jump-nav{background:#fafafa;padding:25px 20px;border-top:1px solid #e0e0e0;border-bottom:1px solid #e0e0e0;}
.bp-jump-nav-inner{max-width:1280px;margin:0 auto;text-align:center;}
.bp-jump-nav-title{font-size:0.85rem;font-weight:500;margin-bottom:15px;color:#666;letter-spacing:0.5px;}
.bp-jump-nav-buttons{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;}
.bp-jump-nav a{display:inline-block;padding:10px 16px;background:transparent;border:1px solid #666;color:#000;text-decoration:none;font-size:0.95rem;font-weight:500;border-radius:30px;transition:background 0.2s ease,color 0.2s ease;}
.bp-jump-nav a:hover{background:#000;color:#fff;}
@media (min-width:768px){
  .bp-jump-nav-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;}
  .bp-jump-nav-title{margin-bottom:0;white-space:nowrap;flex-shrink:0;}
  .bp-jump-nav-buttons{justify-content:flex-end;}
}

/* ---- Section 1 — roster grid (the bio prose was moved into the native
       section_text_xP6FKT above by the operator 2026-05-04, so this custom
       section now contains only the 9-cell vertical roster grid. Top
       padding reduced to 0 to sit close to the text above. ---- */
.bp-about-story{padding:0 60px 60px !important;background:#ffffff !important;}
.bp-about-story__inner{max-width:1280px !important;margin:0 auto !important;}
.bp-about-story p{
  font-family:Poppins,sans-serif !important;
  font-size:15px !important;line-height:1.7 !important;
  color:var(--bp-about-ink-2) !important;
  margin:0 0 14px !important;
  max-width:880px !important;
}
.bp-about-story a{
  color:var(--bp-about-ink) !important;
  text-decoration:underline !important;
  text-underline-offset:3px !important;
  text-decoration-color:rgba(0,0,0,0.25) !important;
}
.bp-about-story a:hover{color:var(--bp-about-mute) !important;}
.bp-about-story__closing{margin-top:24px !important;}

/* 9-cell roster grid — 3-up desktop, collapses 2-up tablet, 1-up mobile.
   margin-top reduced from 48 → 12 (operator 2026-05-04: raise closer to text). */
.bp-about-roster{margin-top:12px !important;}
.bp-about-roster__label{
  font-family:Poppins,sans-serif !important;
  font-size:11px !important;
  letter-spacing:0.22em !important;
  text-transform:uppercase !important;
  color:var(--bp-about-mute) !important;
  font-weight:600 !important;
  margin-bottom:18px !important;
}
.bp-about-roster-grid{
  display:grid !important;
  grid-template-columns:repeat(3,1fr) !important;
  gap:14px !important;
}
/* Operator update 2026-05-04: roster cell bg flips to #fafafa, pill bg flips
   to white, border dropped (the bg contrast carries the edge against the
   white Section 1 bg behind). */
.bp-about-roster-cell{
  padding:24px 26px 22px !important;
  background:#fafafa !important;
  border-radius:18px !important;
  border:none !important;
}
/* Operator update 2026-05-04 (round 2): drop the visible pill bg, bump
   weight to 700, remove horizontal padding — reads as a tight bold caps
   label rather than a pill shape. */
.bp-about-roster-cell__h{
  display:inline-block !important;
  font-family:Poppins,sans-serif !important;
  font-size:10px !important;
  letter-spacing:0.2em !important;
  text-transform:uppercase !important;
  color:var(--bp-about-mute) !important;
  font-weight:700 !important;
  padding:5px 0px !important;
  border-radius:999px !important;
  margin-bottom:14px !important;
}
.bp-about-roster-cell__count{
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif) !important;
  font-style:var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight:var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  font-size:28px !important;
  letter-spacing:-0.01em !important;
  line-height:1 !important;
  margin-bottom:10px !important;
  color:var(--bp-about-ink) !important;
}
.bp-about-roster-cell__list{
  font-family:Poppins,sans-serif !important;
  font-size:12.5px !important;
  line-height:1.6 !important;
  color:var(--bp-about-ink-2) !important;
}
@media (max-width:1024px){
  .bp-about-roster-grid{grid-template-columns:repeat(2,1fr) !important;}
}
@media (max-width:768px){
  .bp-about-story{padding:24px 24px 48px !important;}
  .bp-about-roster-grid{grid-template-columns:1fr !important;}
}

/* ---- Section 2 — pillars (5 numbered operational pillars) ---- */
.bp-about-pillars-sect{padding:90px 60px !important;background:#fafafa !important;}
.bp-about-pillars-sect__inner{max-width:1280px !important;margin:0 auto !important;}
.bp-about-pillars{margin-top:36px !important;display:grid !important;gap:0 !important;}
.bp-about-pillar{
  display:grid !important;
  grid-template-columns:80px 1fr 2.4fr !important;
  gap:36px !important;
  padding:32px 0 !important;
  border-bottom:1px solid var(--bp-about-line) !important;
  align-items:start !important;
}
.bp-about-pillar:first-child{border-top:1px solid var(--bp-about-line) !important;}
/* Operator #8 (2026-05-03): pillar number badges use alternate font (Playfair italic). */
.bp-about-pillar__num{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:56px !important;
  height:56px !important;
  border-radius:999px !important;
  background:rgba(102,102,102,0.08) !important;
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif) !important;
  font-style:var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight:var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  font-size:22px !important;
  line-height:1 !important;
  color:var(--bp-about-mute) !important;
  letter-spacing:-0.01em !important;
}
.bp-about-pillar__h{
  font-family:Poppins,sans-serif !important;
  font-size:20px !important;
  font-weight:500 !important;
  letter-spacing:-0.01em !important;
  line-height:1.25 !important;
  margin:12px 0 0 !important;
  padding-right:24px !important;
  color:var(--bp-about-ink) !important;
}
.bp-about-pillar__body{
  font-family:Poppins,sans-serif !important;
  font-size:15px !important;
  line-height:1.7 !important;
  color:var(--bp-about-ink-2) !important;
  margin:12px 0 0 !important;
  max-width:660px !important;
}
@media (max-width:768px){
  .bp-about-pillars-sect{padding:60px 24px !important;}
  .bp-about-pillar{grid-template-columns:48px 1fr !important;gap:18px !important;}
  .bp-about-pillar__body{grid-column:1 / -1 !important;margin-top:6px !important;}
  .bp-about-pillar__h{font-size:18px !important;margin-top:0 !important;padding-right:0 !important;}
  .bp-about-pillar__num{width:44px !important;height:44px !important;font-size:18px !important;}
}

/* ---- Section 3 — head photographer (2-col grid: image left, text right)
       Operator update 2026-05-04 (round 5): keep all body text in the right
       column beside the image (no wrapping under). Image is fixed at 528×550
       on desktop; stacks above text on mobile. ---- */
.bp-about-koby-sect{padding:90px 60px !important;background:#ffffff !important;}
.bp-about-koby-sect__inner{max-width:1280px !important;margin:0 auto !important;}
.bp-about-koby{
  display:grid !important;
  grid-template-columns:528px 1fr !important;
  gap:48px !important;
  align-items:start !important;
  margin-top:24px !important;
}
.bp-about-koby__media{
  width:528px !important;
  max-width:100% !important;
  aspect-ratio:528 / 550 !important;
  border-radius:18px !important;
  overflow:hidden !important;
}
.bp-about-koby__media img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  display:block !important;
}
.bp-about-koby__body p{
  font-family:Poppins,sans-serif !important;
  font-size:15px !important;
  line-height:1.7 !important;
  color:var(--bp-about-ink-2) !important;
  margin:0 0 16px !important;
}
.bp-about-koby__body strong{
  color:var(--bp-about-ink) !important;
  font-weight:600 !important;
}
.bp-about-koby__body a{
  color:var(--bp-about-ink) !important;
  text-decoration:underline !important;
  text-underline-offset:3px !important;
  text-decoration-color:rgba(0,0,0,0.25) !important;
}
.bp-about-koby__body a:hover{color:var(--bp-about-mute) !important;}
/* Operator #9 (2026-05-03): creds grid sits OUTSIDE the .bp-about-koby image+body
   2-col grid so it spans the full content width below the bio. */
.bp-about-koby__creds{
  margin-top:48px !important;
  display:grid !important;
  grid-template-columns:repeat(3,1fr) !important;
  gap:14px !important;
  max-width:1280px !important;
}
.bp-about-cred{
  padding:16px 20px !important;
  background:var(--bp-about-surface) !important;
  border-radius:14px !important;
  border:1px solid var(--bp-about-line) !important;
}
.bp-about-cred__l{
  font-family:Poppins,sans-serif !important;
  font-size:10px !important;
  letter-spacing:0.2em !important;
  text-transform:uppercase !important;
  color:var(--bp-about-mute) !important;
  font-weight:600 !important;
  margin-bottom:4px !important;
}
.bp-about-cred__v{
  font-family:Poppins,sans-serif !important;
  font-size:15px !important;
  font-weight:500 !important;
  line-height:1.3 !important;
  letter-spacing:-0.005em !important;
  color:var(--bp-about-ink) !important;
}
@media (max-width:768px){
  .bp-about-koby-sect{padding:60px 24px !important;}
  /* Stack: image above text (single-col grid). */
  .bp-about-koby{
    grid-template-columns:1fr !important;
    gap:24px !important;
  }
  .bp-about-koby__media{
    width:100% !important;
  }
  .bp-about-koby__creds{grid-template-columns:1fr !important;}
}

/* ---- Section 4 — Clients & Publications (V1 grid + V2 Featured-in)
        Existing live class names preserved on individual <a class="client-item">
        elements; new wrapper classes are bp-about-* prefixed. ---- */
/* Operator update 2026-05-04: render whole Clients & Publications section
   as a large rounded card (the #fafafa bg with default square edges read as
   a flat band; rounded corners + horizontal margin make the card metaphor
   visible). */
.bp-about-clients-section{
  padding:60px 60px 80px !important;
  background:#fafafa !important;
  border-radius:32px !important;
  margin:24px 24px !important;
}
@media (max-width:768px){
  .bp-about-clients-section{
    border-radius:18px !important;
    margin:16px 12px !important;
  }
}
/* Operator #11 (2026-05-03): logos centered (was left-aligned auto-fill).
   flex-wrap with justify-content:center centers each row including the
   incomplete final row (grid auto-fill cannot center incomplete rows). */
.bp-about-logos-grid{
  margin-top:40px !important;
  display:flex !important;
  flex-wrap:wrap !important;
  justify-content:center !important;
  gap:8px 12px !important;
  align-items:center !important;
}
.bp-about-logos-grid .client-item{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  height:96px !important;
  width:140px !important;
  flex:0 0 auto !important;
  padding:8px 12px !important;
  text-decoration:none !important;
  border-radius:8px !important;
  transition:background 160ms ease,opacity 160ms ease !important;
  opacity:0.85 !important;
}
/* Hover bg = OPPOSITE of the section it sits in. Clients section has bg
   #fafafa, so client-item hover is white. Operator request 2026-05-04. */
.bp-about-logos-grid .client-item:hover{
  opacity:1 !important;
  background:#ffffff !important;
}
.bp-about-logos-grid .client-item img{
  max-width:100% !important;
  max-height:48px !important;
  width:auto !important;
  height:auto !important;
  object-fit:contain !important;
  margin-bottom:0 !important;
  opacity:0.7 !important;
  transition:opacity 0.2s ease !important;
}
.bp-about-logos-grid .client-item:hover img{opacity:1 !important;}
.bp-about-logos-grid .client-item .client-name{
  font-family:Poppins,sans-serif !important;
  font-size:0.7rem !important;
  font-weight:500 !important;
  color:var(--bp-about-mute) !important;
  opacity:0.85 !important;
  line-height:1.3 !important;
  margin-top:6px !important;
}
.bp-about-featured-in{
  margin-top:48px !important;
  padding-top:28px !important;
  border-top:1px solid var(--bp-about-line) !important;
  display:flex !important;
  flex-wrap:wrap !important;
  align-items:center !important;
  justify-content:center !important;
  gap:18px 28px !important;
}
.bp-about-featured-in__label{
  font-family:Poppins,sans-serif !important;
  font-size:10px !important;
  letter-spacing:0.22em !important;
  text-transform:uppercase !important;
  color:var(--bp-about-mute) !important;
  font-weight:600 !important;
  flex-shrink:0 !important;
}
.bp-about-featured-in .client-item{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  height:auto !important;
  padding:8px 12px !important;
  border-radius:8px !important;
  text-decoration:none !important;
  opacity:0.85 !important;
  transition:background 160ms ease,opacity 160ms ease !important;
  width:auto !important;
}
/* Featured in sits in the same #fafafa section as the main grid → hover white. */
.bp-about-featured-in .client-item:hover{
  opacity:1 !important;
  background:#ffffff !important;
}
.bp-about-featured-in .client-item img{
  max-height:36px !important;
  width:auto !important;
  height:auto !important;
  object-fit:contain !important;
  opacity:0.75 !important;
  transition:opacity 0.2s ease !important;
}
.bp-about-featured-in .client-item:hover img{opacity:1 !important;}
/* Operator update 2026-05-04 (round 5): show the company-name labels under
   featured-in press logos to match the main client grid. */
.bp-about-featured-in .client-item .client-name{
  font-family:Poppins,sans-serif !important;
  font-size:0.65rem !important;
  font-weight:500 !important;
  color:var(--bp-about-mute) !important;
  opacity:0.85 !important;
  line-height:1.3 !important;
  margin-top:6px !important;
  display:block !important;
}
@media (max-width:768px){
  .bp-about-clients-section{padding:40px 20px 60px !important;}

  /* Operator update 2026-05-04: enforce a strict 2-column grid on mobile.
     The desktop layout uses flex-wrap so the last partial row centers, but
     on mobile that produced uneven columns (some rows 2 logos, some 3,
     misaligned). Switching to `display: grid` with `repeat(2, 1fr)` locks
     a fixed 2-column layout matching the speaking grid. ---- */
  .bp-about-logos-grid{
    display:grid !important;
    grid-template-columns:repeat(2, 1fr) !important;
    gap:8px !important;
    justify-content:center !important;
  }
  .bp-about-logos-grid .client-item{
    width:auto !important;
    height:80px !important;
  }
  .bp-about-logos-grid .client-item img{max-height:40px !important;}

  /* Featured-in: same 2-column grid pattern, with the "Featured in" label
     spanning both columns at the top. */
  .bp-about-featured-in{
    display:grid !important;
    grid-template-columns:repeat(2, 1fr) !important;
    gap:8px !important;
    justify-content:center !important;
  }
  .bp-about-featured-in__label{
    grid-column:1 / -1 !important;
    text-align:center !important;
    margin-bottom:8px !important;
  }
  .bp-about-featured-in .client-item{
    width:auto !important;
    height:auto !important;
  }
  .bp-about-featured-in .client-item img{max-height:28px !important;}

  /* Operator update 2026-05-04: center the last logo when it sits alone in
     a partial row. In a 2-col grid:
       - Clients grid (99 items, no label): last alone when count is odd
         → `:last-child:nth-child(odd)` matches the 99th item.
       - Featured-in (label spans both cols + 7 items = 8 DOM children):
         last alone when count is even → `:last-child:nth-child(even)`
         matches the 8th DOM child (the 7th press logo).
     Spanning `grid-column: 1 / -1` makes the lone item occupy the full row;
     its inner flex (logo + name) centers within the spanning cell. ---- */
  .bp-about-logos-grid > :last-child:nth-child(odd),
  .bp-about-featured-in > .client-item:last-child:nth-child(even){
    grid-column:1 / -1 !important;
  }
}

/* ---- Section 5 — Speaking grid (4-over-2 centered, 6 venue logos)
       Operator request 2026-05-03: section centered, 6 logos arranged 4 in row 1
       and 2 centered in row 2. Items 5 & 6 explicitly placed at columns 2 & 3
       so they appear centered below items 1–4. ---- */
.bp-about-speaking-section{padding:60px 60px 80px !important;background:#ffffff !important;text-align:center !important;}
.bp-about-speaking-section > h2,
.bp-about-speaking-section > .bp-about-sect-intro{
  max-width:880px !important;
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:left !important;
}
.bp-about-speaking-grid{
  margin:40px auto 0 !important;
  display:grid !important;
  grid-template-columns:repeat(4, 180px) !important;
  gap:14px !important;
  align-items:center !important;
  justify-items:stretch !important;
  justify-content:center !important;
  max-width:880px !important;
}
.bp-about-speaking-grid > :nth-child(5){grid-column:2 !important;}
.bp-about-speaking-grid > :nth-child(6){grid-column:3 !important;}
.bp-about-speaking-grid .speaking-item{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  width:auto !important;
  height:96px !important;
  padding:8px 12px !important;
  text-decoration:none !important;
  border-radius:8px !important;
  transition:background 160ms ease,opacity 160ms ease !important;
  opacity:0.85 !important;
}
/* Speaking section sits on white → hover #fafafa. */
.bp-about-speaking-grid .speaking-item:hover{
  opacity:1 !important;
  background:#fafafa !important;
}
.bp-about-speaking-grid .speaking-item img{
  max-width:100% !important;
  max-height:48px !important;
  width:auto !important;
  height:auto !important;
  object-fit:contain !important;
  margin-bottom:0 !important;
  opacity:0.7 !important;
  transition:opacity 0.2s ease !important;
}
.bp-about-speaking-grid .speaking-item:hover img{opacity:1 !important;}
.bp-about-speaking-grid .speaking-item .speaking-name{
  font-family:Poppins,sans-serif !important;
  font-size:0.7rem !important;
  font-weight:500 !important;
  color:var(--bp-about-mute) !important;
  opacity:0.85 !important;
  line-height:1.3 !important;
  margin-top:6px !important;
}
@media (max-width:768px){
  .bp-about-speaking-section{padding:40px 20px 60px !important;}
  .bp-about-speaking-grid{grid-template-columns:repeat(2, 150px) !important;}
  .bp-about-speaking-grid > :nth-child(5){grid-column:auto !important;}
  .bp-about-speaking-grid > :nth-child(6){grid-column:auto !important;}
}

/* ---- Section 6 — Awards (live 2-col layout preserved + new pill headers)
       Operator request 2026-05-03 #13: each column h3 carries a small "4 awards"
       pill (in alternate font); the two columns become soft cards with bg + border.
       Section is horizontally centered, text inside left-aligned. ---- */
.bp-about-awards-section{padding:60px 60px 80px !important;background:#fafafa !important;text-align:center !important;}
.bp-about-awards-section > h2,
.bp-about-awards-section > .bp-about-sect-intro{
  max-width:880px !important;
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:left !important;
}
/* Operator update 2026-05-04 (round 2): extra bottom space between the intro
   paragraph and the two award cards. */
.bp-about-awards-section > .bp-about-sect-intro{
  padding-bottom:20px !important;
}
.bp-about-awards-section > .about-awards{
  max-width:1080px !important;
  margin-left:auto !important;
  margin-right:auto !important;
}

/* Operator update 2026-05-04: strip the inner `.about-awards { background:#fff;
   padding:10px 10px }` rule that the LIVE awards <style> block ships with.
   That wrapper was creating a small white frame around the cards on top of
   our #fafafa section bg (visible artifact). Set it transparent so the
   section's #fafafa shows through directly to the white cards inside. */
.bp-about-awards-section .about-awards{
  background:transparent !important;
  padding:0 !important;
}

/* Award rows live inside white card columns → hover bg #fafafa to match the
   site-wide hover pattern (rest of grid logos use the same flip). */
.about-awards .award-item{
  border-radius:8px !important;
  padding:8px !important;
  margin:0 -8px !important;
  transition:background 160ms ease,opacity 160ms ease !important;
}
.about-awards .award-item:hover{
  opacity:1 !important;
  background:#fafafa !important;
}

/* Two soft cards (one per column) — design v3 pattern */
.about-awards .awards-column{
  background:#ffffff !important;
  border-radius:24px !important;
  padding:36px 36px 30px !important;
  border:1px solid var(--bp-about-line) !important;
  text-align:left !important;
}

/* Pill header: drop the live border-bottom + uppercase tracking treatment;
   apply Poppins normal-case heading + small "4 awards" pill on right */
.about-awards .awards-column h3{
  font-family:Poppins,sans-serif !important;
  font-size:1.4rem !important;
  font-weight:500 !important;
  letter-spacing:-0.01em !important;
  text-transform:none !important;
  color:var(--bp-about-ink) !important;
  display:flex !important;
  align-items:center !important;
  gap:12px !important;
  margin:0 0 24px 0 !important;
  padding:0 !important;
  border-bottom:none !important;
  text-align:left !important;
}
/* Operator update 2026-05-04 (round 3): pill text in normal Poppins (drop
   the alternate-font Playfair italic), bg flipped from #f0f0f0 → #fafafa
   so it reads softer against the white card. */
.about-awards .awards-column h3 .bp-about-award-count-pill{
  display:inline-block !important;
  font-family:Poppins,sans-serif !important;
  font-style:normal !important;
  font-weight:500 !important;
  font-size:0.85rem !important;
  letter-spacing:normal !important;
  text-transform:none !important;
  color:var(--bp-about-mute) !important;
  background:#fafafa !important;
  padding:4px 12px !important;
  border-radius:999px !important;
  margin-left:auto !important;
}

/* Operator update 2026-05-04: awards section mobile — reduce padding so
   the 2 cards center properly (was 60px L/R which made cards appear
   shifted right with a left gap on narrow viewports). Card internal
   padding reduced too so content isn't cramped. ---- */
@media (max-width:768px){
  .bp-about-awards-section{padding:40px 16px 60px !important;}
  .bp-about-awards-section > .about-awards{max-width:100% !important;}
  .about-awards .awards-column{padding:24px 20px 22px !important;}
}

/* ---- Final CTA — dark band with radial-gradient overlay ---- */
.bp-about-finalcta{
  padding:100px 60px !important;
  background:#0b0b0b !important;
  color:#ffffff !important;
  text-align:center !important;
  position:relative !important;
  overflow:hidden !important;
}
.bp-about-finalcta::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  background:
    radial-gradient(circle at 20% 30%,rgba(102,102,102,0.18),transparent 50%),
    radial-gradient(circle at 80% 70%,rgba(255,255,255,0.04),transparent 50%) !important;
}
.bp-about-finalcta > *{position:relative !important;}
.bp-about-finalcta__h{
  font-family:Poppins,sans-serif !important;
  font-size:44px !important;
  font-weight:500 !important;
  line-height:1.1 !important;
  letter-spacing:-0.02em !important;
  margin:0 auto 18px !important;
  max-width:920px !important;
  color:#ffffff !important;
}
.bp-about-finalcta__h em{
  font-style:italic !important;
  color:rgba(255,255,255,0.78) !important;
  font-weight:400 !important;
}
.bp-about-finalcta__lead{
  font-family:Poppins,sans-serif !important;
  font-size:16px !important;
  color:rgba(255,255,255,0.7) !important;
  max-width:580px !important;
  margin:0 auto 28px !important;
}
.bp-about-finalcta__actions{
  display:flex !important;
  gap:14px !important;
  justify-content:center !important;
  align-items:center !important;
  flex-wrap:wrap !important;
}
.bp-about-btn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  font-family:Poppins,sans-serif !important;
  padding:18px 32px !important;
  font-weight:500 !important;
  font-size:13px !important;
  letter-spacing:0.12em !important;
  text-transform:uppercase !important;
  text-decoration:none !important;
  border-radius:999px !important;
  transition:background 120ms ease,color 120ms ease,box-shadow 120ms ease !important;
}
.bp-about-btn--white{background:#ffffff !important;color:#0b0b0b !important;}
.bp-about-btn--white:hover{box-shadow:0 6px 18px -6px rgba(0,0,0,0.4) !important;}
.bp-about-btn--ghost{
  background:transparent !important;
  color:#ffffff !important;
  border:1px solid rgba(255,255,255,0.4) !important;
}
.bp-about-btn--ghost:hover{border-color:#ffffff !important;}
.bp-about-finalcta__tertiary{
  display:inline-block !important;
  margin-top:22px !important;
  font-family:Poppins,sans-serif !important;
  font-size:13px !important;
  color:rgba(255,255,255,0.65) !important;
  text-decoration:underline !important;
  text-underline-offset:4px !important;
  letter-spacing:0.04em !important;
}
.bp-about-finalcta__tertiary:hover{color:#ffffff !important;}
@media (max-width:768px){
  .bp-about-finalcta{padding:60px 24px !important;}
  .bp-about-finalcta__h{font-size:30px !important;}
}

/* ---- About hero CTAs side-by-side on desktop. Mirrors the homepage
       pattern (see [id*="section_image_with_text_7FKgfj"] above): the
       attribute-contains selector matches both the Shopify wrapper id
       (`shopify-section-...`) AND the theme's own `ImageWithText--...`
       wrapper, so the rule survives whichever DOM Shopify renders.
       `inline-flex` preserves the .main-buttons inner flex layout while
       making the outer element flow inline with its sibling button block.
       ---- */
[id*="section_image_with_text_rCbEdX"] .image-with-text__buttons {
  display: inline-flex;
  vertical-align: top;
  margin-right: 12px;
}
@media (max-width: 600px) {
  [id*="section_image_with_text_rCbEdX"] .image-with-text__buttons {
    display: flex;
    margin-right: 0;
  }
}

/* ---- Section banding: alternating #fafafa for native sections.
       Operator request 2026-05-03: replace border-top lines with
       background-color alternation for visual rhythm.

       Pattern (top → bottom):
         Hero (native section_image_with_text_rCbEdX): #ffffff (theme default)
         Thesis (native section_text_aQdi4y):           #fafafa
         Jump nav (custom-html):                        #fafafa (existing)
         Section 1 native (section_text_xP6FKT):        #ffffff (theme default)
         Section 1 closing + roster (custom):           #ffffff
         Section 2 pillars (custom):                    #fafafa (set above)
         Section 3 photographer (custom):               #ffffff
         Section 4 clients (custom):                    #fafafa (set above)
         Section 5 speaking (custom):                   #ffffff
         Section 6 awards (custom):                     #fafafa (set above)
         FAQ (native section-accordions):               #ffffff (theme default)
         Pricing (native abt_pricing):                  #fafafa
         Final CTA (custom):                            #0b0b0b (dark, set above) ---- */
#shopify-section-section_text_aQdi4y{background:#fafafa !important;}
#shopify-section-abt_pricing{background:#fafafa !important;}

/* ============================================================================
   END ABOUT PAGE
   ============================================================================ */


/* ============================================================================
   SERVICES PAGE  (page handle: corporate-photography-services-toronto)
   Namespace: bp-services-*
   Source design: /Design System/Services Page v1.html
   Build conventions: monochrome greys (no cream); section banding via #fafafa
   alternation; rounded corners; pill buttons; Playfair italic accent on <em>
   and .accent. All operator-visible copy must be em-dash-free.
   ============================================================================ */

/* ---- design tokens ---- */
.bp-services{
  --bp-svc-ink:#0a0a0a;
  --bp-svc-ink-2:#2a2a2a;
  --bp-svc-mute:#666;
  --bp-svc-hair:#e8e8e8;
  --bp-svc-paper:#ffffff;
  --bp-svc-neutral:#fafafa;
  --bp-svc-red:#d43747;
  --bp-svc-red-soft:rgba(212,55,71,0.08);
  --bp-svc-r-md:20px;
  --bp-svc-r-lg:28px;
  --bp-svc-r-pill:999px;
}

/* Playfair italic accent for <em> and .accent inside services-page custom-html */
.bp-services em,
.bp-services .accent{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important;
  font-weight: 400 !important;
}

/* image placeholder (black box with caption — temporary until operator pulls images) */
.bp-services-imgph{
  position:relative;
  background:#0a0a0a;
  color:rgba(255,255,255,0.7);
  border-radius:var(--bp-svc-r-md);
  overflow:hidden;
  display:flex;align-items:flex-end;justify-content:flex-start;
  width:100%;
  font-family:Poppins,sans-serif;
}
.bp-services-imgph .cap{
  font-size:11px;letter-spacing:0.14em;text-transform:uppercase;
  padding:14px 16px;
  background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 100%);
  width:100%;
  font-weight:500;
}

/* ---- HERO with sidebar ---- */
.bp-services-hero{
  background:#fff;
  padding:20px 60px;
}
.bp-services-hero__inner{max-width:1280px;margin:0 auto;}
.bp-services-hero__crumb{
  font-size:12px;color:var(--bp-svc-mute);
  margin-bottom:24px;letter-spacing:0.02em;
}
.bp-services-hero__crumb .sep{margin:0 8px;color:#bbb;}
.bp-services-hero__crumb .here{color:var(--bp-svc-ink);font-weight:500;}
.bp-services-hero__grid{
  display:grid;
  grid-template-columns: 1.55fr 1fr;
  gap:64px;
  align-items:start;
}
.bp-services-hero__title{
  font-family:Poppins,sans-serif;
  font-weight:500;
  font-size:64px;line-height:1.1;letter-spacing:-0.02em;
  margin:0 0 24px;color:var(--bp-svc-ink);
}
.bp-services-hero__lede{
  font-family:Poppins,sans-serif;
  font-size:16.5px;line-height:1.65;color:var(--bp-svc-ink-2);
  margin:0 0 32px;max-width:640px;
}
.bp-services-hero__cta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:24px;}
.bp-services-hero__cta .bp-svc-btn{margin:0;}
.bp-services-hero__micro{
  font-size:11px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--bp-svc-mute);font-weight:600;
}

/* hero sidebar — replaces the standalone "numbered overview" section */
.bp-services-jumpnav{
  background:var(--bp-svc-neutral);
  border-radius:var(--bp-svc-r-lg);
  padding:24px 28px;
  position:sticky;top:24px;
}
.bp-services-jumpnav__h{
  display:flex;align-items:baseline;justify-content:space-between;
  padding-bottom:14px;border-bottom:1px solid var(--bp-svc-hair);
  margin-bottom:8px;
}
.bp-services-jumpnav__h .label{
  font-size:11px;letter-spacing:0.16em;text-transform:uppercase;
  color:var(--bp-svc-mute);font-weight:600;
}
.bp-services-jumpnav__h .accent{font-size:14px;color:var(--bp-svc-ink);}
.bp-services-jumpnav ol{list-style:none;padding:0;margin:0;counter-reset:bp-svc-jump;}
.bp-services-jumpnav li{
  display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  padding:14px 0;border-bottom:1px solid var(--bp-svc-hair);
  counter-increment:bp-svc-jump;
}
.bp-services-jumpnav li:last-child{border-bottom:none;}
.bp-services-jumpnav li::before{
  content:counter(bp-svc-jump,decimal-leading-zero);
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
  font-size: 18px;
  letter-spacing: 0;
  color: var(--bp-svc-ink);
  flex-shrink: 0;
  padding-top: 2px;
  line-height: 1.2;
}
.bp-services-jumpnav .ttl{
  flex:1;display:flex;flex-direction:column;gap:2px;
  font-size:14px;color:var(--bp-svc-ink);font-weight:500;line-height:1.3;
}
.bp-services-jumpnav .ttl small{
  font-size:11.5px;color:var(--bp-svc-mute);font-weight:400;letter-spacing:0;
}
.bp-services-jumpnav a.anchor{
  font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--bp-svc-ink);text-decoration:none;font-weight:600;
  padding:4px 10px;border:1px solid var(--bp-svc-hair);border-radius:var(--bp-svc-r-pill);
  align-self:center;flex-shrink:0;transition:background 160ms,color 160ms;
}
.bp-services-jumpnav a.anchor:hover{background:var(--bp-svc-ink);color:#fff;border-color:var(--bp-svc-ink);}

/* shared button styles */
.bp-svc-btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 22px;border-radius:var(--bp-svc-r-pill);
  font-family:Poppins,sans-serif;font-size:13.5px;font-weight:600;letter-spacing:0.01em;
  text-decoration:none;cursor:pointer;
  transition:background 160ms ease,color 160ms ease,border-color 160ms ease;
  border:1px solid transparent;
}
.bp-svc-btn--black{background:var(--bp-svc-ink);color:#fff;}
.bp-svc-btn--black:hover{background:#222;color:#fff;}
.bp-svc-btn--ghost{background:transparent;color:var(--bp-svc-ink);border-color:var(--bp-svc-ink);}
.bp-svc-btn--ghost:hover{background:var(--bp-svc-ink);color:#fff;}
.bp-svc-btn .arr{transition:transform 160ms ease;}
.bp-svc-btn:hover .arr{transform:translateX(3px);}

/* ---- TRUST STRIP ---- */
.bp-services-trust{
  background:#fff;
  padding:20px 60px;
  text-align:center;
  border-top:1px solid var(--bp-svc-hair);
  border-bottom:1px solid var(--bp-svc-hair);
}
.bp-services-trust__inner{max-width:1280px;margin:0 auto;}
.bp-services-trust__h{
  font-family:Poppins,sans-serif;font-size:11px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--bp-svc-mute);font-weight:600;margin:0 0 26px;
}
.bp-services-trust__row{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:32px 48px;margin-bottom:24px;
}
.bp-services-trust__row .logo-ph{
  font-family:Poppins,sans-serif;font-weight:600;
  color:#888;letter-spacing:-0.01em;font-size:18px;
  padding:6px 0;
}
.bp-services-trust__caption{
  font-size:13px;line-height:1.6;color:var(--bp-svc-mute);
  max-width:880px;margin:0 auto;
}

/* ---- THESIS ---- */
.bp-services-thesis{
  background:var(--bp-svc-neutral);
  padding:20px 60px;
}
.bp-services-thesis__inner{
  max-width:980px;margin:0 auto;
  text-align:left;
}

.bp-services-thesis blockquote{
  font-family:Poppins,sans-serif;font-weight:500;
  font-size:32px;line-height:1.25;letter-spacing:-0.015em;
  color:var(--bp-svc-ink);margin:0;
}

/* ---- generic SECTION wrapper used by photo/video/team/modes/pricing/industries ---- */
.bp-services-sect{
  padding:20px 60px;background:#fff;
}
.bp-services-sect.bp-services-sect--alt{background:var(--bp-svc-neutral);}
.bp-services-sect__inner{max-width:1280px;margin:0 auto;}
.bp-services-sect__kicker{
  font-size:11px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--bp-svc-red);font-weight:600;margin-bottom:18px;
}
.bp-services-sect__h{
  font-family:Poppins,sans-serif;font-weight:500;
  font-size:44px;line-height:1.1;letter-spacing:-0.02em;
  color:var(--bp-svc-ink);margin:0 0 22px;
}
.bp-services-sect__intro{
  font-size:16px;line-height:1.7;color:var(--bp-svc-ink-2);
  max-width:920px;margin:0 0 28px;
}
.bp-services-sect__intro a{color:var(--bp-svc-ink);text-decoration:underline;text-underline-offset:3px;}

/* ---- PHOTO + VIDEO CATALOG cards (shared .bp-services-svc-grid) ---- */
.bp-services-svc-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:24px;
}
.bp-services-svc-grid--video{grid-template-columns:repeat(3,1fr);gap:20px;}

.bp-services-svc-card{
  background:#fff;border:1px solid var(--bp-svc-hair);
  border-radius:var(--bp-svc-r-md);padding:0 0 28px;
  display:flex;flex-direction:column;overflow:hidden;
  transition:border-color 160ms ease, box-shadow 160ms ease;
}
.bp-services-sect--alt .bp-services-svc-card{background:#fff;}
.bp-services-svc-card:hover{border-color:#bbb;box-shadow:0 12px 40px -20px rgba(0,0,0,0.18);}

/* video-grid override — no card chrome (operator request: image only, no white card around the text) */
.bp-services-svc-grid--video .bp-services-svc-card{
  background:transparent !important;
  border:none !important;
  border-radius:0 !important;
  box-shadow:none !important;
  padding:0 0 16px;
  overflow:visible;
}
.bp-services-svc-grid--video .bp-services-svc-card:hover{
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
}
/* make image media still rounded since the card no longer clips it */
.bp-services-svc-grid--video .bp-services-svc-card__media{
  border-radius:var(--bp-svc-r-md);
  overflow:hidden;
}
/* reset internal padding since the card no longer provides side padding */
.bp-services-svc-grid--video .bp-services-svc-card__h-row,
.bp-services-svc-grid--video .bp-services-svc-card__sub,
.bp-services-svc-grid--video .bp-services-svc-card__bullets{
  padding-left:0;
  padding-right:0;
}
.bp-services-svc-grid--video .bp-services-svc-card__cta{
  margin-left:0;
  margin-right:0;
}
.bp-services-svc-card__media{
  position:relative;
  aspect-ratio:1.5/1;
  background:#fff;
  margin-bottom:22px;
  overflow:hidden;
}
/* photo fills its media container with proper aspect-cropping (NOT the .play
   SVG — that's targeted via `.play img` further down). > img matches direct
   children only so it scopes correctly. */
.bp-services-svc-card__media > img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.bp-services-svc-card__media .cap{
  width:100%;padding:14px 18px;font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(255,255,255,0.7);font-weight:500;
  background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,0.5) 100%);
}
.bp-services-svc-card__media .play{
  /* bare SVG centered on the thumbnail (no backdrop). z-index:2 puts it above
     the photo, which is also position:absolute. */
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:65px;height:65px;
  pointer-events:none;
  z-index:2;
  transition:transform 200ms ease;
}
.bp-services-svc-card__media .play img{
  width:100%;height:100%;display:block;
}

.bp-services-svc-card__h-row{
  display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  padding:0 24px;margin-bottom:8px;
}
.bp-services-svc-card__h-row h3{
  font-family:Poppins,sans-serif;font-weight:500;
  font-size:24px;line-height:1.15;letter-spacing:-0.015em;
  color:var(--bp-svc-ink);margin:0;
}
.bp-services-svc-card__h-row .price{
  font-size:11px;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--bp-svc-ink);font-weight:600;
  background:var(--bp-svc-neutral);padding:6px 12px;border-radius:var(--bp-svc-r-pill);
  white-space:nowrap;flex-shrink:0;align-self:flex-start;
}
.bp-services-svc-card__sub{
  padding:0 24px;font-size:13px;color:var(--bp-svc-mute);
  margin:0 0 18px;letter-spacing:0.02em;
}
.bp-services-svc-card__bullets{
  list-style:none;padding:0 24px;margin:0 0 22px;
}
.bp-services-svc-card__bullets li{
  font-size:14px;line-height:1.6;color:var(--bp-svc-ink-2);
  padding:8px 0;border-top:1px solid var(--bp-svc-hair);
}
.bp-services-svc-card__bullets li:first-child{border-top:none;}
.bp-services-svc-card__bullets a{color:var(--bp-svc-ink);text-decoration:underline;text-underline-offset:2px;}
/* card CTA — uses native theme btn classes (btn btn--solid btn--black btn--medium)
   for size + hover behavior (matches homepage / about CTAs). This rule handles
   ONLY flex positioning so the button sits at bottom-left of the card and is
   shrink-to-fit instead of stretching across the card width. */
.bp-services-svc-card__cta{
  margin:auto 24px 24px 24px;
  align-self:flex-start;
  width:auto;
}

/* ---- TEAM HEADSHOT DAY (4-step time-pill grid) ---- */
.bp-services-team{
  display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start;
}
.bp-services-team__media{
  aspect-ratio:1/1.05;
}

/* 9-cell team day grid (replaces single media; matches the blog hero pattern
   from /pages/how-often-refresh-team-headshots) */
.bp-services-team__media-card{
  background:var(--bp-svc-neutral);
  border-radius:var(--bp-svc-r-md);
  padding:16px;
  align-self:start;
}
.bp-services-team__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:6px;
}
.bp-services-team__cell{
  width:100%;
  aspect-ratio:1 / 1;
  border-radius:20px;
  position:relative;
  /* override the larger .bp-services-imgph caption sizing for these tiny cells */
}
.bp-services-team__cell .cap{
  font-size:9px;
  letter-spacing:0.10em;
  padding:6px 8px;
}
/* When real <img> tags replace the placeholder divs, swap each
   <div class="bp-services-team__cell bp-services-imgph"><span class="cap">...</span></div>
   for: <img src="..." alt="..." width="600" height="600"> */
.bp-services-team__grid img{
  width:100%;
  height:auto;
  aspect-ratio:1 / 1;
  object-fit:cover;
  border-radius:20px;
  display:block;
  align-self:start;  /* prevent CSS Grid from stretching to row height */
}
.bp-services-team__grid{align-items:start;}  /* belt + suspenders */
@media (max-width:768px){
  .bp-services-team__media-card{padding:12px;}
  .bp-services-team__grid{gap:6px;}
}
.bp-services-team__steps{display:flex;flex-direction:column;gap:8px;}
.bp-services-team__step{
  display:grid;grid-template-columns:120px 1fr;gap:24px;
  padding:22px 0;border-top:1px solid var(--bp-svc-hair);
  align-items:start;
}
.bp-services-team__step:last-child{border-bottom:1px solid var(--bp-svc-hair);}
.bp-services-team__time{
  font-family:Poppins,sans-serif;font-weight:600;
  font-size:11px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--bp-svc-ink);
  background:var(--bp-svc-neutral);
  border:1px solid var(--bp-svc-hair);
  padding:6px 12px;border-radius:var(--bp-svc-r-pill);
  white-space:nowrap;justify-self:start;
}
.bp-services-team__step h4{
  font-family:Poppins,sans-serif;font-weight:600;
  font-size:17px;line-height:1.25;letter-spacing:-0.005em;
  color:var(--bp-svc-ink);margin:0 0 6px;
}
.bp-services-team__step p{
  font-size:14px;line-height:1.65;color:var(--bp-svc-ink-2);margin:0;
}
.bp-services-team__foot{
  margin-top:36px;font-size:14px;line-height:1.65;color:var(--bp-svc-ink-2);max-width:920px;
}
.bp-services-team__foot a{color:var(--bp-svc-ink);text-decoration:underline;text-underline-offset:3px;}

/* ---- DELIVERY MODES (3-panel layout, aligned rows via grid) ---- */
/* The whole 3-panel block uses one parent grid so each row aligns across all 3 panels.
   Rows: media | header | sub | row1..row6 (Lighting / Backdrops / Setup / Best for / Travel / Pricing) */
.bp-services-modes{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  /* 9 rows: media, head, sub, then 6 criteria rows. Subgrid in each panel
     inherits these tracks so the row dividers line up across all 3 columns
     even when content lengths vary. */
  grid-template-rows: auto auto auto repeat(6, auto);
  column-gap: 20px;
  row-gap: 0;
  margin-bottom:36px;
}
.bp-services-modes__panel{
  display:grid;
  grid-template-rows: subgrid;
  grid-row: 1 / -1;
  background:#fff;
  border-radius:var(--bp-svc-r-lg);
  padding:24px;
}
.bp-services-modes__media{
  position:relative;
  aspect-ratio:1.4/1;
  background:#fff;
  margin-bottom:18px;
  border-radius:var(--bp-svc-r-md);
  overflow:hidden;
}
.bp-services-modes__media > img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.bp-services-modes__head{
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:8px;
}
.bp-services-modes__head h3{
  font-family:Poppins,sans-serif;font-weight:500;
  font-size:22px;line-height:1.15;letter-spacing:-0.015em;
  color:var(--bp-svc-ink);margin:0;
}
.bp-services-modes__sub{
  font-size:13px;line-height:1.55;color:var(--bp-svc-mute);
  padding-bottom:14px;border-bottom:2px solid var(--bp-svc-ink);
  margin-bottom:0;
}
.bp-services-modes__row{
  display:grid;grid-template-columns:1fr;gap:4px;
  padding:14px 0;border-bottom:1px solid var(--bp-svc-hair);
  align-content:start;
}
.bp-services-modes__row .k{
  font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--bp-svc-mute);font-weight:600;
}
.bp-services-modes__row .v{
  font-size:14px;line-height:1.5;color:var(--bp-svc-ink-2);
}
/* (per-panel grid-row positioning removed — each panel is now a self-contained flex card) */

.bp-services-modes-foot{
  font-size:14px;line-height:1.65;color:var(--bp-svc-ink-2);
  max-width:920px;margin:0;
}

/* ---- PRICING PILLS ---- */
.bp-services-pricing{display:flex;flex-direction:column;gap:14px;margin-bottom:30px;}
.bp-services-pricing__row{
  display:grid;grid-template-columns:240px 1fr auto;gap:32px;
  align-items:center;
  background:#fff;border:1px solid var(--bp-svc-hair);
  border-radius:80px;
  padding:26px 36px;
}
.bp-services-sect--alt .bp-services-pricing__row{background:#fff;}
.bp-services-pricing__name{display:flex;align-items:baseline;gap:14px;}
.bp-services-pricing__name .accent{
  font-size:32px;color:var(--bp-svc-red);font-weight:400;
}
.bp-services-pricing__name .h{
  font-family:Poppins,sans-serif;font-weight:500;font-size:22px;letter-spacing:-0.015em;
  color:var(--bp-svc-ink);
}
.bp-services-pricing__desc{
  font-size:14px;line-height:1.65;color:var(--bp-svc-ink-2);
}
.bp-services-pricing__desc strong{font-weight:600;color:var(--bp-svc-ink);}
.bp-services-pricing__cta{
  font-size:11px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--bp-svc-ink);text-decoration:none;font-weight:600;
  white-space:nowrap;display:inline-flex;align-items:center;gap:8px;
}
.bp-services-pricing__cta .arr{transition:transform 160ms ease;}
.bp-services-pricing__cta:hover .arr{transform:translateX(4px);}
.bp-services-pricing-foot{
  font-size:13.5px;line-height:1.65;color:var(--bp-svc-mute);
  max-width:920px;margin:30px 0 0;
}
.bp-services-pricing-foot a{color:var(--bp-svc-ink);text-decoration:underline;text-underline-offset:3px;}

/* ---- INDUSTRIES (compact pill-tagged list, no per-row links yet) ---- */
.bp-services-industries{
  border-top:1px solid var(--bp-svc-hair);
}
.bp-services-industries__row{
  display:grid;grid-template-columns:280px 1fr;
  gap:32px;
  padding:26px 0;border-bottom:1px solid var(--bp-svc-hair);
  align-items:start;
}
.bp-services-industries__h{
  font-family:Poppins,sans-serif;font-weight:600;
  font-size:18px;line-height:1.25;color:var(--bp-svc-ink);
}
.bp-services-industries__clients{
  font-size:13.5px;line-height:1.6;color:var(--bp-svc-ink-2);
}
.bp-services-industries__clients strong{color:var(--bp-svc-ink);font-weight:600;}

/* ---- responsive ---- */
@media (max-width: 1024px){
  .bp-services-hero__title{font-size:48px;}
  .bp-services-sect__h{font-size:36px;}
  .bp-services-thesis blockquote{font-size:26px;}
  .bp-services-svc-grid--video{grid-template-columns:repeat(2,1fr);}
}
@media (max-width: 768px){
  .bp-services-hero{padding:20px 24px;}
  .bp-services-hero__grid{grid-template-columns:1fr;gap:32px;}
  .bp-services-hero__title{font-size:36px;}
  .bp-services-hero__lede{font-size:15px;}
  .bp-services-jumpnav{position:static;padding:18px 20px;}
  .bp-services-trust{padding:40px 24px;}
  .bp-services-trust__row{gap:18px 28px;}
  .bp-services-trust__row .logo-ph{font-size:14px;}
  .bp-services-thesis{padding:20px 24px;}
  .bp-services-thesis blockquote{font-size:22px;}
  .bp-services-sect{padding:20px 24px;}
  .bp-services-sect__h{font-size:28px;}
  .bp-services-sect__intro{font-size:15px;margin-bottom:36px;}
  .bp-services-svc-grid{grid-template-columns:1fr;gap:18px;}
  .bp-services-svc-grid--video{grid-template-columns:1fr;}
  .bp-services-svc-card__h-row h3{font-size:20px;}
  .bp-services-team{grid-template-columns:1fr;gap:24px;}
  .bp-services-team__media{aspect-ratio:4/3;}
  .bp-services-team__step{grid-template-columns:1fr;gap:8px;padding:18px 0;}
  /* delivery modes — stack panels (each is its own white card on mobile too).
     Drop the subgrid + parent-defined rows at this breakpoint; each panel
     becomes a self-contained flex column. */
  .bp-services-modes{
    grid-template-columns:1fr;
    grid-template-rows:auto;
    column-gap:0;
    row-gap:16px;
  }
  .bp-services-modes__panel{
    display:flex;
    flex-direction:column;
    grid-template-rows:none;
    grid-row:auto;
    padding:20px;
  }
  .bp-services-modes__panel{display:flex;flex-direction:column;gap:0;}
  /* Mobile: portrait subjects need a taller aspect-ratio + face-up object-position
     so heads don't get cropped (was 1.6/1 landscape — cropped heads on tall subjects). */
  .bp-services-modes__media{aspect-ratio:4/5;margin-bottom:14px;}
  .bp-services-modes__media > img{object-position:center 25%;}
  /* pricing pills — stack columns */
  .bp-services-pricing__row{grid-template-columns:1fr;gap:14px;padding:20px 22px;}
  .bp-services-pricing__name{align-items:center;}
  .bp-services-pricing__name .accent{font-size:24px;}
  .bp-services-pricing__name .h{font-size:18px;}
  /* industries — stack heading above clients */
  .bp-services-industries__row{grid-template-columns:1fr;gap:8px;padding:18px 0;}
  .bp-services-industries__h{font-size:16px;}
  .bp-services-industries__clients{font-size:13px;}
}

/* ---- per-section background banding (alternate #fafafa / #fff) ---- */
/* The Shopify section IDs are set via section keys in page.corporate-photography-services-toronto.json:
     services_hero            -> #fff
     services_trust           -> #fff
     services_thesis          -> #fafafa
     services_photo_catalog   -> #fff
     services_video_catalog   -> #fafafa
     services_team_day        -> #fff
     services_modes           -> #fafafa
     services_pricing         -> #fff
     services_industries      -> #fafafa
   Native FAQ + closing CTA carry their own bg.
*/



/* ---- closing CTA eyebrow ::before pseudo-element removed in round 4.
        The headline now carries "Need a service customized to your team?"
        directly (with "your team" in Playfair italic via <em>), so no
        injection needed. ---- */

/* ---- thesis section is now native section-text (was custom-html). Keep the
        #fafafa banding and re-apply Playfair italic to <em> since the native
        wrapper no longer carries the .bp-services namespace class. ---- */
#shopify-section-services_thesis{background:#fafafa !important;}
#shopify-section-services_thesis em{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important;
  font-weight: 400 !important;
}

/* ---- trust strip logo treatment (matches homepage bphome_logos) ---- */
.bp-services-trust__row > img{
  max-height:40px;width:auto;display:inline-block;
  opacity:0.7;filter:grayscale(100%);
  transition:opacity 200ms ease, filter 200ms ease;
}
.bp-services-trust__row > img:hover{opacity:1;filter:none;}
@media (max-width:600px){
  .bp-services-trust__row > img{max-height:28px;}
}


/* ---- video popup modal (used by services_video_catalog cards 5 + 6) ---- */
.bp-svc-video-modal{
  position:fixed;inset:0;z-index:9999;
  display:none;
}
.bp-svc-video-modal[aria-hidden="false"]{display:block;}
.bp-svc-video-modal__overlay{
  position:absolute;inset:0;
  background:rgba(10,10,10,0.88);
  cursor:pointer;
}
.bp-svc-video-modal__inner{
  position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);
  width:min(92vw,1180px);
  background:#000;
  border-radius:var(--bp-svc-r-md,20px);
  overflow:hidden;
  box-shadow:0 30px 80px rgba(0,0,0,0.6);
}
.bp-svc-video-modal__close{
  position:absolute;top:-44px;right:0;
  background:transparent;border:none;cursor:pointer;
  color:#fff;font-size:34px;line-height:1;
  padding:4px 14px;font-family:Poppins,sans-serif;font-weight:300;
  transition:opacity 160ms ease;
}
.bp-svc-video-modal__close:hover{opacity:0.7;}
.bp-svc-video-modal__frame{
  position:relative;width:100%;aspect-ratio:16/9;
}
.bp-svc-video-modal__frame iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;display:block;
}
/* clickable media indicator on cards with data-video */
.bp-services-svc-card__media[data-video]{cursor:pointer;}
.bp-services-svc-card__media[data-video]:focus-visible{outline:2px solid #fff;outline-offset:2px;}
.bp-services-svc-card__media[data-video]:hover .play{
  transform:translate(-50%,-50%) scale(1.10);
}
@media (max-width: 600px){
  .bp-svc-video-modal__inner{width:94vw;}
  .bp-svc-video-modal__close{top:-38px;font-size:30px;}
}

/* ============================================================================
   END SERVICES PAGE
   ============================================================================ */


/* ============================================================================
   BP LIGHTBOX GRID
   --------------------------------------------------------------
   Reusable click-to-enlarge image grid. Drop the markup pattern
   below into any section-custom-html block:

     <div class="bp-lightbox-grid" data-bp-lightbox>
       <button type="button" data-full="LARGE.jpg">
         <img src="THUMB.jpg" alt="...">
       </button>
       ... × N ...
     </div>
     <script src="..."> ... include the bp-lightbox JS once ... </script>

   The JS is initialized via window.__bpLightboxInited so the dialog
   is appended to <body> just once even if multiple custom-html blocks
   include the script. Click delegation reads the closest .bp-lightbox-grid
   and builds the prev/next sequence from its buttons.
   ============================================================================ */

.bp-lightbox-grid > button {
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  display: block;
  width: 100%;
  height: 100%;
  font: inherit;
  color: inherit;
  border-radius: inherit;
  overflow: hidden;
  position: relative;
}
.bp-lightbox-grid > button img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.bp-lightbox-grid > button:focus-visible {
  outline: 2px solid #111;
  outline-offset: 2px;
}

/* Standalone 3×3 layout for use outside the existing services-team grid */
.bp-lightbox-grid--3x3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  width: 100%;
}
.bp-lightbox-grid--3x3 > button {
  aspect-ratio: 1;
  border-radius: 20px;
}
@media (max-width: 600px) {
  .bp-lightbox-grid--3x3 { gap: 4px; }
}

/* Lightbox dialog (injected once into <body> by JS) */
.bp-lightbox-dialog {
  padding: 0;
  background: rgba(255, 255, 255, 0.97);
  border: none;
  max-width: 100vw;
  max-height: 100vh;
  width: 100%;
  height: 100%;
}
.bp-lightbox-dialog::backdrop { background: rgba(255, 255, 255, 0.97); }
.bp-lightbox-dialog .bp-lightbox-inner {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}
.bp-lightbox-img {
  max-width: 92vw;
  max-height: 92vh;
  object-fit: contain;
  display: block;
  transition: opacity 0.18s ease;
}
.bp-lightbox-close,
.bp-lightbox-prev,
.bp-lightbox-next {
  position: fixed;
  background: transparent;
  border: none;
  color: #000;
  cursor: pointer;
  font-family: inherit;
  font-size: 36px;
  line-height: 1;
  padding: 0;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: background 160ms ease;
}
/* No hover background — icons rotate / swap visuals on hover instead. */
.bp-lightbox-close { top: 18px; right: 18px; }
.bp-lightbox-prev { left: 18px; top: 50%; transform: translateY(-50%); }
.bp-lightbox-next { right: 18px; top: 50%; transform: translateY(-50%); }

/* On the services team grid, button reset + pointer cursor (no zoom hover) */
.bp-services-team__grid[data-bp-lightbox] > button {
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  position: relative;
}

/* About hero — heading/text/buttons LEFT, 9-image lightbox grid RIGHT
   on desktop; stacks on mobile. Type sizes match the original
   image-with-text section's H1 (3rem × 0.8 × 1.4 ≈ 3.36rem) and body
   (1rem × 1.05 ≈ 1.05rem) at 100% scale. */
.bp-about-hero {
  max-width: 1440px;
  margin: 0 auto;
  padding: 24px 60px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
}
.bp-about-hero__copy h1 {
  font-family: Poppins, sans-serif;
  font-size: clamp(34px, 4.2vw, 46px);
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: 0;
  margin: 0 0 0.5em;
  color: #0b0b0b;
}
.bp-about-hero__copy h1 em {
  font-style: italic;
  font-family: 'Playfair Display', Georgia, serif;
}
.bp-about-hero__copy p {
  font-size: 1.05rem;
  line-height: 1.5625;
  color: #0b0b0b;
  margin: 0 0 24px;
}
.bp-about-hero__actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.bp-about-hero__actions .btn { white-space: nowrap; }

/* Rounded #fafafa container around the 9-image grid (about page only) */
.bp-about-hero .bp-lightbox-grid--3x3 {
  background: #fafafa;
  border-radius: 28px;
  padding: 16px;
}

@media (max-width: 900px) {
  .bp-about-hero {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 16px 20px;
  }
  .bp-about-hero .bp-lightbox-grid--3x3 { padding: 12px; }
}

/* ----- bp-lightbox dialog: gallery-style nav + loading spinner ----- */
/* Match the home page photo-grid-lightbox: 45px buttons, rest/hover SVG
   swap on arrows, close X rotates 90° on hover. */
.bp-lightbox-dialog .bp-lightbox-close,
.bp-lightbox-dialog .bp-lightbox-prev,
.bp-lightbox-dialog .bp-lightbox-next {
  font-size: 0;
  width: 45px;
  height: 45px;
}
.bp-lightbox-dialog .gallery-icon {
  width: 45px !important;
  height: 45px !important;
  vertical-align: middle;
  transition: transform 0.2s ease;
  pointer-events: none;
}
/* Inline-block wrappers (we use spans inside the JS-injected buttons
   to host the rest/hover SVGs). Hide hover variant by default. */
.bp-lightbox-dialog .gallery-icon--hover { display: none; }
@media (hover: hover) and (pointer: fine) {
  .bp-lightbox-dialog button:hover > .gallery-icon--rest { display: none !important; }
  .bp-lightbox-dialog button:hover > .gallery-icon--hover { display: inline-block !important; }
  .bp-lightbox-dialog button:hover > .gallery-icon--close { transform: rotate(90deg); }
}
@media (hover: none), (pointer: coarse) {
  .bp-lightbox-dialog .gallery-icon--rest { display: inline-block !important; }
  .bp-lightbox-dialog .gallery-icon--hover { display: none !important; }
}

/* Loading state — black spinning circle + "Loading..." text shown
   while the full-size image fetches. Hidden once the image is decoded.
   Shared by every lightbox dialog on the site (bp-lightbox, photo-grid,
   page-gallery, backdrops).

   Instant show / instant hide: spinner appears the moment data-loading
   is set true and vanishes the moment it flips false. No fade.

   For fast image loads (under ~50 ms, e.g. cached images or small
   sources on the portfolio galleries), the spinner flashes too briefly
   to register — which is the correct UX outcome: the user gets the
   loaded image with no perceived delay. For slow loads (the original
   services team-day case with retina source images), the spinner
   stays visible for the whole fetch and disappears the moment the
   image is decoded. No lingering overlay. */
.bp-lightbox-loading,
.page-gallery-dialog__loading,
.photo-grid__dialog-loading,
.backdrops-dialog__loading {
  position: absolute;
  display: none;
  pointer-events: none;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: #000;
  font-family: Poppins, sans-serif;
  font-weight: 500;
  letter-spacing: 0.02em;
  z-index: 5;
}
.bp-lightbox-dialog[data-loading="true"] .bp-lightbox-loading,
.page-gallery-dialog[data-loading="true"] .page-gallery-dialog__loading,
.backdrops-dialog[data-loading="true"] .backdrops-dialog__loading,
dialog[id^="BackdropsDialog"][data-loading="true"] .backdrops-dialog__loading,
dialog[id^="PageGalleryDialog"][data-loading="true"] .page-gallery-dialog__loading,
dialog.page-gallery-dialog[data-loading="true"] .page-gallery-dialog__loading,
dialog[id^="PhotoGridDialog"][data-loading="true"] .photo-grid__dialog-loading {
  display: flex;
}
.bp-lightbox-loading .spinner-icon,
.page-gallery-dialog__loading .spinner-icon,
.photo-grid__dialog-loading .spinner-icon,
.backdrops-dialog__loading .spinner-icon {
  width: 22px;
  height: 22px;
  flex-shrink: 0;
  animation: spin 1s linear infinite;
}

/* Hide the image element while a new src is being fetched.
   Couples image visibility to the same `data-loading` signal the
   spinner uses, so the moment the spinner disappears the image
   appears — no overlap, no "loading text over visible image", no
   "previous image flashes briefly while new one is loading".

   Without this rule, browser default behaviour kept the prior image
   visible (or showed a broken-image placeholder) while the new one
   loaded, so users saw:
     - Click thumbnail (first open): spinner over the empty dialog
       background, image fades in.   ✓ correct
     - Click NEXT/PREV: spinner overlay appears OVER the previous
       still-visible image until the new one loads.   ✗ glitch
     - Close dialog + click another thumbnail: the prior image
       flashes for one frame, then spinner shows over it until new
       image loads.   ✗ glitch

   With this rule, on every src change the image is hidden via
   `opacity: 0` for the duration of `data-loading="true"`, and
   becomes visible the instant `data-loading` flips back to "false"
   (which the global observer in custom.js does on the `load` event).

   `transition` is a hair fast (0.12s) so cached images that decode
   in one frame still look smooth, and slow loads have a quick
   fade-in rather than appearing abruptly. */
.bp-lightbox-img,
.page-gallery-dialog__img,
.photo-grid__dialog-img,
.backdrops-dialog__img {
  /* Fade-in transition for when the JS clears inline opacity:0 after
     a new image loads. Image visibility is now controlled by INLINE
     style on the img element (set by section JS + the unified
     loading-state controller in custom.js), not by CSS attribute
     selectors. Inline `style.opacity` has higher specificity than
     any CSS rule and applies synchronously — fixed the timing race
     that previously left the previous image visible while the
     spinner overlay was already rendered. */
  transition: opacity 0.12s ease;
}


/* ============================================================================
   FAQ PAGE  (page handle: faq)
   Built 2026-05-08. Namespace: bp-faq-*. Palette: monochrome greys + ink only
   (no cream, no red — site is monochrome per operator brief).
   ============================================================================ */

/* ---- Section banding: alternating #fafafa via Shopify section IDs ---- */
[id$="__bp_intro"]           { background:#ffffff; }
[id$="__bp_thesis"]          { background:#fafafa; }
/* (orphan rules for bp_hero / bp_statbar / bp_jumpnav removed — those elements
   are now sub-blocks inside bp_intro, not standalone sections.) */

/* Lede sections (custom-html) — outer wrapper background. */
[id$="__bp_lede_pricing"]      { background:#ffffff; }
[id$="__bp_lede_subscription"] { background:#fafafa; }
[id$="__bp_lede_teamday"]      { background:#ffffff; }
[id$="__bp_lede_sessions"]     { background:#fafafa; }
[id$="__bp_lede_deliverables"] { background:#ffffff; }
[id$="__bp_lede_industries"]   { background:#fafafa; }
[id$="__bp_lede_events"]       { background:#ffffff; }
[id$="__bp_lede_individual"]   { background:#fafafa; }
[id$="__bp_lede_edge"]         { background:#ffffff; }

/* Mid-CTA sections (custom-html) — outer wrapper background. */
[id$="__bp_midcta_quote"]      { background:#ffffff; }

/* Accordion sections — theme's .accordions-section inner element has its own
   `background: var(--bg)` rule (from section-accordions.css) that paints over
   the outer wrapper. Target the inner instead so the band color actually
   shows behind the questions. */
[id$="__bp_acc_pricing"]      .accordions-section { background:#ffffff; }
[id$="__bp_acc_subscription"] .accordions-section { background:#fafafa; }
[id$="__bp_acc_teamday"]      .accordions-section { background:#ffffff; }
[id$="__bp_acc_sessions"]     .accordions-section { background:#fafafa; }
[id$="__bp_acc_deliverables"] .accordions-section { background:#ffffff; }
[id$="__bp_acc_industries"]   .accordions-section { background:#fafafa; }
[id$="__bp_acc_events"]       .accordions-section { background:#ffffff; }
[id$="__bp_acc_individual"]   .accordions-section { background:#fafafa; }
[id$="__bp_acc_edge"]         .accordions-section { background:#ffffff; }
/* (orphan rule removed — bp_askbanner section was consolidated into bp_close;
   ask-banner background now lives on the .bp-faq-askbanner class itself.) */

/* Reset section-accordions wrapper padding on FAQ page so banding is contiguous */
[id^="shopify-section-"][id*="__bp_acc_"] .accordions-section { padding-top:0; padding-bottom:40px; }
[id^="shopify-section-"][id*="__bp_acc_"] .section__header { display:none; }
[id^="shopify-section-"][id*="__bp_acc_"] .accordion__header { display:none; }

/* ---- HERO ---- */
.bp-faq-hero { padding:20px 32px 0px; }
.bp-faq-hero__inner { max-width:1080px; margin:0 auto; }
.bp-faq-hero__title {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-weight:400;
  font-size: clamp(40px, 6.4vw, 84px);
  line-height:1.02;
  letter-spacing:-0.02em;
  color:#0b0b0b;
  margin:0 0 28px;
}
.bp-faq-hero__lede {
  font-size: clamp(15px, 1.15vw, 17px);
  line-height:1.7;
  color:#333;
  max-width:720px;
  margin:0 0 32px;
}
.bp-faq-hero__cta { display:flex; gap:14px; flex-wrap:wrap; }

/* ---- STATBAR ---- */
.bp-faq-statbar { padding:30px 32px; }
.bp-faq-statbar__inner {
  max-width:1080px; margin:0 auto;
  display:grid; grid-template-columns:repeat(4, 1fr); gap:14px;
}
.bp-faq-statbar__cell {
  display:flex; flex-direction:column; gap:6px;
  padding:20px 24px;
  background:#fafafa;
  border-radius:20px;
}
.bp-faq-statbar__n {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-size: clamp(22px, 2.2vw, 30px);
  font-weight:400;
  letter-spacing:-0.02em;
  color:#0b0b0b;
  line-height:1;
}
.bp-faq-statbar__l {
  font-size:11px; letter-spacing:0.12em; text-transform:uppercase;
  color:#666; font-weight:600; line-height:1.4;
}

/* ---- THESIS — now native section-text; class rules removed.
   Section banding lives on [id$="__bp_thesis"] above. */

/* ---- JUMP NAV (chips, NOT sticky) ----
   Lives inside the hero (above the CTA buttons) per design pattern.
   Visible at all viewports (catrail on desktop is supplementary, not a replacement).
*/
.bp-faq-jumpnav {
  display:flex; flex-direction:column; gap:12px;
  margin:0 0 28px;
}
.bp-faq-jumpnav--hero {
  /* In the hero, chips come AFTER the CTA buttons — add top spacing. */
  margin-top:32px;
}
.bp-faq-jumpnav__title {
  font-size:10px; letter-spacing:0.22em; text-transform:uppercase;
  color:#666; font-weight:600;
}
.bp-faq-jumpnav__chips {
  display:flex; flex-wrap:wrap; gap:6px;
}
.bp-faq-jumpnav__chip {
  display:inline-flex; align-items:baseline; gap:6px;
  padding:8px 14px;
  background:#ffffff; border:1px solid #e0e0e0;
  border-radius:999px;
  font-size:13px; font-weight:500; color:#0b0b0b;
  text-decoration:none; letter-spacing:-0.005em;
  transition:all 140ms ease;
}
.bp-faq-jumpnav__chip .n {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-size:11px; color:#666;
  line-height:1;
}
.bp-faq-jumpnav__chip .c {
  font-size:10px; letter-spacing:0.08em; color:#666; font-weight:600;
  padding-left:2px;
  display:none;  /* per-section question counts hidden — operator decision 2026-05-08 */
}
.bp-faq-jumpnav__chip:hover { background:#0b0b0b; color:#ffffff; border-color:#0b0b0b; }
.bp-faq-jumpnav__chip:hover .n,
.bp-faq-jumpnav__chip:hover .c { color:#ffffff; }

/* ---- SECTION LEDE ----
   Stacked: small italic kicker number → H2 (with rule) → lede paragraph.
   All left-aligned with the question column below (matched via 40px inner
   padding on desktop to mimic wrapper--narrow). */
.bp-faq-lede { padding:32px 32px 4px; scroll-margin-top:100px; }
.bp-faq-lede__inner { max-width:1080px; margin:0 auto; }
.bp-faq-lede__num {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic;
  font-size:14px; color:#666;
  line-height:1; letter-spacing:0.04em;
  margin:0 0 8px;
}
.bp-faq-lede__h2 {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight:400;
  letter-spacing:-0.018em;
  line-height:1.1;
  margin:0 0 14px;
  color:#0b0b0b;
  padding-bottom:14px;
  border-bottom:1px solid #0b0b0b;
}
.bp-faq-lede__h2 em { font-style:italic; }
.bp-faq-lede__copy {
  font-size:14.5px; line-height:1.7; color:#333;
  max-width:760px;
  margin:0;
}

/* ---- ACCORDION OVERRIDES (FAQ page only) — match native FAQ feel
   Q-numbering chrome (Q1.01 etc.) was removed per operator decision 2026-05-08
   — questions render as plain titles like the rest of the site's FAQ blocks. */
[id^="shopify-section-"][id*="__bp_acc_"] .accordion__title-text {
  font-size:16px; font-weight:500; letter-spacing:-0.005em;
  line-height:1.4;
}
[id^="shopify-section-"][id*="__bp_acc_"] .accordion__text p { font-size:14.5px; line-height:1.7; color:#333; }

/* Zero the theme's default 20px UL left margin (theme.css ~line 482) so the
   question titles align flush-left with the lede H2 + paragraph above. */
[id^="shopify-section-"][id*="__bp_acc_"] .accordion__list { margin:0; }

/* ---- MID-CTA PILL ---- */
.bp-faq-midcta { padding:8px 32px 56px; }
.bp-faq-midcta__inner {
  max-width:1080px; margin:0 auto;
  display:grid; grid-template-columns:auto 1fr auto;
  gap:24px; align-items:center;
  padding:22px 28px;
  background:#fafafa;
  border:1px solid #e0e0e0;
  border-radius:24px;
}
.bp-faq-midcta__icon {
  width:44px; height:44px;
  background:#0b0b0b; color:#ffffff;
  border-radius:999px;
  display:flex; align-items:center; justify-content:center;
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-size:20px;
  flex-shrink:0;
}
.bp-faq-midcta__h {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-size:18px; font-weight:400;
  margin:0 0 4px; letter-spacing:-0.005em;
  color:#0b0b0b;
}
.bp-faq-midcta__h em { font-style:italic; }
.bp-faq-midcta__p { margin:0; font-size:13px; color:#333; line-height:1.55; }

/* ---- ASK BANNER ("Didn't find your question?") ---- */
.bp-faq-askbanner { padding:80px 32px; background:#fafafa; }
.bp-faq-askbanner__inner {
  max-width:1080px; margin:0 auto;
  display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center;
}
.bp-faq-askbanner__h {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-size: clamp(28px, 3.2vw, 40px);
  font-weight:400; line-height:1.1; letter-spacing:-0.018em;
  margin:0 0 16px; color:#0b0b0b;
}
.bp-faq-askbanner__h em { font-style:italic; }
.bp-faq-askbanner__p {
  font-size:15px; line-height:1.7; color:#333;
  margin:0; max-width:480px;
}
.bp-faq-askbanner__list {
  list-style:none; padding:0; margin:0;
  display:flex; flex-direction:column; gap:10px;
}
.bp-faq-askbanner__item { margin:0; }
.bp-faq-askbanner__link {
  display:grid; grid-template-columns:36px 1fr auto;
  gap:14px; align-items:center;
  padding:16px 22px;
  background:#ffffff; border:1px solid #e0e0e0;
  border-radius:18px;
  text-decoration:none;
  transition:transform 120ms ease, border-color 120ms ease;
}
.bp-faq-askbanner__link:hover { transform:translateX(4px); border-color:#0b0b0b; }
.bp-faq-askbanner__ico {
  width:36px; height:36px; border-radius:999px;
  background:#fafafa;
  display:flex; align-items:center; justify-content:center;
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-size:14px;
  color:#0b0b0b;
}
.bp-faq-askbanner__t {
  font-size:14px; font-weight:500; letter-spacing:-0.005em; color:#0b0b0b;
  display:block;
}
.bp-faq-askbanner__t small {
  display:block; font-weight:400; color:#666; font-size:11.5px;
  letter-spacing:0; margin-top:2px;
}
.bp-faq-askbanner__arr { font-size:13px; color:#666; }

/* ---- CLOSING DARK BAND ---- */
.bp-faq-closing {
  padding:96px 32px;
  background:#0b0b0b;
  color:#ffffff; text-align:center;
}
.bp-faq-closing__inner { max-width:920px; margin:0 auto; }
.bp-faq-closing__h {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-size: clamp(32px, 4vw, 48px);
  font-weight:400; line-height:1.05; letter-spacing:-0.018em;
  margin:0 0 18px; color:#ffffff;
}
.bp-faq-closing__h em { font-style:italic; }
.bp-faq-closing__p {
  font-size:16px; line-height:1.7;
  color:rgba(255,255,255,0.7);
  max-width:640px; margin:0 auto 32px;
}
.bp-faq-closing__cta {
  display:flex; gap:14px; justify-content:center; flex-wrap:wrap;
}
.bp-faq-closing__btn {
  white-space:nowrap;
}

/* "On this page" list inside the closing dark band */
.bp-faq-closing__onpage {
  margin-top:48px;
  padding-top:32px;
  border-top:1px solid rgba(255,255,255,0.15);
  max-width:560px;
  margin-left:auto;
  margin-right:auto;
}
.bp-faq-closing__onpage-label {
  font-size:10px;
  letter-spacing:0.24em;
  text-transform:uppercase;
  color:rgba(255,255,255,0.55);
  font-weight:600;
  margin-bottom:18px;
}
.bp-faq-closing__onpage-list {
  list-style:none; padding:0; margin:0;
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:10px 24px;
}
.bp-faq-closing__onpage-list li { margin:0; padding:0; }
.bp-faq-closing__onpage-list a {
  display:flex; gap:8px; align-items:baseline;
  color:rgba(255,255,255,0.8);
  text-decoration:none;
  font-size:13px;
  padding:4px 0;
  transition:color 120ms ease;
}
.bp-faq-closing__onpage-list a:hover { color:#ffffff; }
.bp-faq-closing__onpage-list a .n {
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic;
  font-size:12px;
  color:rgba(255,255,255,0.5);
  flex-shrink:0;
  min-width:22px;
}
.bp-faq-closing__onpage-list a .t { color:inherit; }
@media (max-width: 800px) {
  .bp-faq-closing__onpage-list { grid-template-columns:repeat(2, 1fr); }
}
@media (max-width: 460px) {
  .bp-faq-closing__onpage-list { grid-template-columns:1fr; }
}

/* ---- MOBILE ---- */
@media (max-width: 800px) {
  .bp-faq-hero { padding:48px 20px 36px; }
  .bp-faq-statbar { padding:24px 20px; }
  .bp-faq-statbar__inner { grid-template-columns:repeat(2, 1fr); }
  .bp-faq-jumpnav { padding:20px 20px; }
  .bp-faq-jumpnav__inner { flex-direction:column; align-items:flex-start; gap:12px; }
  .bp-faq-lede { padding:28px 20px 4px; }
  .bp-faq-midcta { padding:8px 20px 36px; }
  .bp-faq-midcta__inner { grid-template-columns:1fr; gap:14px; padding:20px; text-align:left; }
  .bp-faq-midcta__btn { justify-self:start; }
  .bp-faq-askbanner { padding:48px 20px; }
  .bp-faq-askbanner__inner { grid-template-columns:1fr; gap:24px; }
  .bp-faq-closing { padding:64px 20px; }
}

/* ---- CATRAIL (desktop sticky sidebar; hidden < 1280px) ----
   Layout math (>= 1280px viewport):
     Sidebar:      left = max(32px, (vw - 1280) / 2 + 32),  width = 240px
     Content body: margin-left = sidebar-left + 240 (sidebar) + 32 (gap) = sidebar-left + 272
                   max-width = 880px
   The sidebar "anchors" to the left edge of a 1280px-wide centered rail
   when the viewport is wider, so it grows symmetrically with the page.
   Below 1280px the sidebar is hidden; chip bar in the hero is the only nav.
   Visibility is gated by the `.is-active` class, toggled by inline JS:
   shown as soon as Pricing lede starts entering the viewport from the bottom,
   hidden once the ask-banner reaches the top.
   The black "active" indicator is a single absolutely-positioned element that
   slides between link positions via top/height transitions.
*/
.bp-faq-catrail { display:none; }

@media (min-width: 1280px) {
  /* Outer aside is position:absolute, document-anchored to span just the FAQ
     body region (pricing-lede.docY → askbanner.docY - bottomGap). JS moves
     the aside to be a direct child of <body> at init so absolute positioning
     uses the initial containing block (no positioned ancestor in the way).
     Inner .__sticky uses position:sticky to stay visible during the FAQ body. */
  .bp-faq-catrail {
    display:block;
    position:absolute;
    top:0;     /* set inline by JS — pricing-lede.docY */
    height:0;  /* set inline by JS — endY - startY - bottomGap */
    left:max(32px, calc((100vw - 1280px) / 2 + 32px));
    width:240px;
    z-index:5;
    pointer-events:none;
  }
  .bp-faq-catrail__sticky {
    position:sticky;
    top:60px;  /* parks just below the sticky theme header */
    pointer-events:auto;
    max-height:calc(100vh - 80px);
    overflow-y:auto;
    overflow-x:hidden;
    /* Hide the vertical scrollbar — only relevant on very short viewports
       where the catrail content overflows. Scrolling still works. */
    scrollbar-width:none;
    -ms-overflow-style:none;
  }
  .bp-faq-catrail__sticky::-webkit-scrollbar { display:none; }

  .bp-faq-catrail__inner { padding:0; }
  .bp-faq-catrail__h {
    font-size:10px; letter-spacing:0.24em; text-transform:uppercase;
    color:#666; font-weight:600;
    margin:0 0 18px;
    padding-bottom:14px;
    border-bottom:1px solid #e0e0e0;
  }
  .bp-faq-catrail__list-wrap { position:relative; }
  .bp-faq-catrail__indicator {
    position:absolute;
    left:0; right:0;
    top:0; height:0;
    background:#0b0b0b;
    border-radius:8px;
    z-index:0;
    pointer-events:none;
    opacity:0;
    transition: top 280ms cubic-bezier(0.4, 0, 0.2, 1),
                height 280ms cubic-bezier(0.4, 0, 0.2, 1),
                opacity 200ms ease;
  }
  .bp-faq-catrail__indicator.is-set { opacity:1; }
  .bp-faq-catrail__list { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:2px; position:relative; z-index:1; }
  .bp-faq-catrail__list a {
    display:grid;
    grid-template-columns:24px 1fr auto;
    gap:10px; align-items:baseline;
    padding:9px 12px;
    text-decoration:none; color:#333;
    font-size:13px; letter-spacing:-0.005em;
    border-radius:8px;
    transition:color 200ms ease;
    position:relative;
  }
  .bp-faq-catrail__list a .n {
    font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
    font-style:italic; font-size:12px; color:#666;
    line-height:1;
    transition:color 200ms ease;
  }
  .bp-faq-catrail__list a .t { color:inherit; line-height:1.3; }
  .bp-faq-catrail__list a .c {
    font-size:10px; letter-spacing:0.1em; text-transform:uppercase;
    color:#666; font-weight:600;
    transition:color 200ms ease;
    display:none;  /* per-section question counts hidden — operator decision 2026-05-08 */
  }
  .bp-faq-catrail__list a:hover { color:#0b0b0b; }
  .bp-faq-catrail__list a.is-active { color:#ffffff; }
  .bp-faq-catrail__list a.is-active .n,
  .bp-faq-catrail__list a.is-active .c { color:rgba(255,255,255,0.7); }

  .bp-faq-catrail__foot {
    margin-top:24px; padding-top:18px;
    border-top:1px solid #e0e0e0;
    display:flex; flex-direction:column; gap:8px;
  }
  .bp-faq-catrail__foot a {
    display:flex; align-items:center; justify-content:space-between;
    padding:9px 12px;
    background:#fafafa; border-radius:8px;
    text-decoration:none; color:#0b0b0b;
    font-size:12px; font-weight:500;
    transition:background 120ms ease;
  }
  .bp-faq-catrail__foot a:hover { background:#e0e0e0; }
  .bp-faq-catrail__foot a small {
    color:#666; font-size:10px; letter-spacing:0.1em; text-transform:uppercase; font-weight:600;
  }

  /* Only the FAQ body content (ledes + accordions + mid-CTAs) shifts right of
     the catrail. Hero, statbar, native thesis, ask-banner, and closing dark
     band stay centered / full-width — they live above and below the catrail's
     bounded region, so no overlap. */
  .bp-faq-lede__inner,
  .bp-faq-midcta__inner {
    margin-left:max(304px, calc((100vw - 1280px) / 2 + 304px));
    max-width:880px;
    margin-right:auto;
  }
  [id^="shopify-section-"][id*="__bp_acc_"] .wrapper--narrow {
    margin-left:max(304px, calc((100vw - 1280px) / 2 + 304px)) !important;
    max-width:880px !important;
    margin-right:auto !important;
  }

  /* Lede on desktop: drop section padding so inner aligns with accordion
     wrapper. The theme's --gutter is 60px (not 40), so wrapper--narrow's
     content-left = 304 + 60 = 364. Inner is positioned 20px left of the
     wrapper outer (margin-left:284, max-width:900) with padding-left:80 to
     host the big italic number, so:
       inner content-left  = 284 + 80 = 364 (matches wrapper)
       inner content-right = (284+900) - 60 = 1124 (matches wrapper) */
  .bp-faq-lede { padding-left:0; padding-right:0; }
  .bp-faq-lede__inner {
    position:relative;
    margin-left:max(284px, calc((100vw - 1280px) / 2 + 284px));
    max-width:900px;
    padding-left:80px;
    padding-right:60px;
    box-sizing:border-box;
  }
  /* "01" now sits at content-left (the same x as the paragraph + questions
     below). The H2 gets padding-left to push "Pricing" right of "01" on the
     same row. The H2 border-bottom spans the full H2 box, so the underline
     runs under both "01" and "Pricing". */
  .bp-faq-lede__num {
    position:absolute;
    left:80px;       /* = inner padding-left → "01" sits at content-left */
    top:-18px;       /* compensates for the bigger glyph so "01" baseline lines up with "Pricing" */
    font-size:clamp(40px, 4vw, 54px);
    font-style:italic;
    font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
    font-weight:400;
    color:#0b0b0b;
    line-height:1;
    letter-spacing:-0.01em;
    margin:0;
  }
  .bp-faq-lede__h2 {
    margin-left:0;
    padding-left:80px;   /* room for "01" — "Pricing" text starts after it */
  }

  /* Mid-CTA: drop the section-level horizontal padding (32px L/R) so the
     pill's outer border-edge sits exactly under wrapper--narrow's outer edge. */
  .bp-faq-midcta { padding-left:0; padding-right:0; }
}

/* ============================================================================
   END FAQ PAGE
   ============================================================================ */


/* ============================================================================
   FOOTER  (sitewide; rendered via sections/group-footer.json section-custom-html)
   Built 2026-05-12 per /handoffs-to-claude-code/footer-spec-week-04-faq.md
   Namespace: bp-footer-*. Palette: ink #070707 + monochrome whites.

   Structure:
     - Top row: brand block (left) + 2-column nav (right)
     - Bottom row: policy strip (left) + © line (right), stacked on mobile

   The HTML lives in the custom-html section's `custom_code` field so the
   operator can edit links in the Shopify theme editor without a code deploy.
   ============================================================================ */
.bp-footer{
  background:#070707;
  color:#fff;
  padding:40px 20px;
}
.bp-footer a{
  color:inherit;
  text-decoration:none;
  transition:color 0.2s ease, opacity 0.2s ease;
}
.bp-footer__inner{
  max-width:1200px;
  margin:0 auto;
}

/* Top row: brand left, two-column nav right */
.bp-footer__top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  flex-wrap:wrap;
  gap:40px;
}

/* Brand block */
.bp-footer__brand{
  display:flex;
  flex-direction:column;
  gap:15px;
  max-width:420px;
}
.bp-footer__logo img{
  max-width:200px;
  height:auto;
  display:block;
}
.bp-footer__tagline{
  font-size:14px;
  line-height:1.8;
  opacity:0.7;
  margin:5px 0;
}
.bp-footer__contact{
  font-size:14px;
  line-height:1.8;
}
.bp-footer__contact a{color:#fff;}
.bp-footer__contact a:hover{opacity:0.7;}

/* 2-column nav (right side) */
.bp-footer__nav{
  display:flex;
  gap:60px;
  align-items:flex-start;
}
.bp-footer__group{
  display:flex;
  flex-direction:column;
  gap:10px;
  min-width:140px;
}
.bp-footer__group-header{
  font-size:14px;
  font-weight:600;
  color:#fff;
  margin:0 0 8px 0;
  letter-spacing:0;
  text-transform:none;
  line-height:1.2;
}

/* Link lists — reset theme's stock ul/li bullets + padding */
.bp-footer__links,
.bp-footer__policy-strip{
  list-style:none !important;
  margin:0;
  padding:0;
}
.bp-footer__links{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.bp-footer__links li,
.bp-footer__policy-strip li{
  list-style:none !important;
  padding-left:0 !important;
  margin-left:0 !important;
}
.bp-footer__links li::before,
.bp-footer__links li::marker,
.bp-footer__policy-strip li::before,
.bp-footer__policy-strip li::marker{
  content:none !important;
  display:none !important;
}
.bp-footer__links a{
  font-size:14px;
  color:rgba(255,255,255,0.65);
}
.bp-footer__links a:hover{
  color:#fff;
  opacity:1;
}

/* Bottom bar: policy strip + © */
.bp-footer__bottom{
  margin-top:36px;
  padding-top:20px;
  border-top:1px solid rgba(255,255,255,0.1);
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:12px;
}
.bp-footer__policy-strip{
  display:flex;
  flex-wrap:wrap;
  gap:6px 14px;
  font-size:12px;
}
.bp-footer__policy-strip a{color:rgba(255,255,255,0.5);}
.bp-footer__policy-strip a:hover{color:rgba(255,255,255,0.9);}
.bp-footer__policy-strip li:not(:last-child)::after{
  content:"\2022";
  margin-left:14px;
  color:rgba(255,255,255,0.25);
}
.bp-footer__copyright{
  font-size:12px;
  color:rgba(255,255,255,0.5);
}

/* Mobile — stack everything */
@media (max-width:768px){
  .bp-footer{padding:30px 20px;}
  .bp-footer__top{flex-direction:column; gap:30px;}
  .bp-footer__brand{width:100%; max-width:none;}
  .bp-footer__nav{width:100%; flex-direction:column; gap:24px;}
  .bp-footer__bottom{flex-direction:column; align-items:flex-start; gap:14px;}
  .bp-footer__policy-strip{gap:6px 12px;}
}
/* ============================================================================
   END FOOTER
   ============================================================================ */


/* ============================================================================
   POLICY PAGES   (Settings → Policies → all 5: privacy, terms, refund,
                   shipping, contact-information)
   Built 2026-05-14 from /handoffs-to-claude-code/policy-pages-v2-ship-handoff.md
   Two namespaces:
     - .bp-policy       — article body (lifted from v2 file's #policy-css)
     - .bp-policy-*     — page chrome (frame wrapper, ptabs, related-grid, final-CTA)
   Modifications from the v2 source:
     - Button rules stripped from article (`.bp-head-cta a`) — pages use the
       site's standard .btn btn--solid btn--black btn--medium classes instead
     - --bp-cream swapped from #eceae6 → #fafafa (site palette is monochrome
       greys; no cream per master handoff §6)
     - Original red accents already swapped to mute grey upstream in the v2
       source (--bp-red: #666666, --bp-red-soft: #fafafa)
   ============================================================================ */
.bp-policy{
  --bp-ink:#111111;
  --bp-ink-2:#333333;
  --bp-mute:#666666;
  --bp-mute-2:#8a8a85;
  --bp-line:#e5e5e2;
  --bp-line-2:#efeee9;
  --bp-paper:#ffffff;
  --bp-cream:#fafafa;
  --bp-canvas:#fafafa;
  --bp-red:#666666;
  --bp-red-soft:#fafafa;
  --bp-serif:"Playfair Display", Georgia, serif;
  --bp-sans:"Poppins", ui-sans-serif, system-ui, sans-serif;

  container-type: inline-size;
  container-name: bp;
  font-family: var(--bp-sans);
  color: var(--bp-ink);
  background: var(--bp-paper);
  line-height: 1.55;
  font-weight: 400;
}
.bp-policy *{ box-sizing:border-box; }
.bp-policy a{ color: var(--bp-ink); text-decoration: underline; text-underline-offset:3px; text-decoration-color:rgba(0,0,0,0.25); }
.bp-policy a:hover{ color: var(--bp-red); text-decoration-color: var(--bp-red); }
.bp-policy em, .bp-policy i{ font-family: var(--bp-serif); font-style:italic; font-weight:400; }
.bp-policy strong, .bp-policy b{ font-weight:600; color: var(--bp-ink); }

/* bp-head — visible in all contexts (the article's hero is the only page title).
   2-column layout: H1 + lede + head-cta on the left, .bp-meta card on the right.
   Stacks to a single column when the container is < 900px wide. */
.bp-policy .bp-head{
  background: #fafafa;
  border-radius: 24px;
  padding: 48px 56px;
  margin: 32px 0;
  position:relative;
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr);
  grid-template-rows: auto auto 1fr;
  gap: 0 48px;
  align-items: start;
}
.bp-policy .bp-head > .bp-h1       { grid-column: 1; grid-row: 1; }
.bp-policy .bp-head > .bp-lede     { grid-column: 1; grid-row: 2; }
.bp-policy .bp-head > .bp-head-cta { grid-column: 1; grid-row: 3; align-self: start; margin-top: 16px; }
.bp-policy .bp-head > .bp-meta     { grid-column: 2; grid-row: 1 / span 3; align-self: start; margin: 0; max-width: none; }
/* Eyebrow + crumb, if present, also pin to the left column */
.bp-policy .bp-head > .bp-eyebrow,
.bp-policy .bp-head > .bp-crumb    { grid-column: 1; }
.bp-policy .bp-crumb{
  display:flex; align-items:center; gap:10px;
  font-size:11px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--bp-mute); font-weight:600; margin:0 0 36px;
  list-style:none; padding:0;
}
.bp-policy .bp-crumb li{ display:inline-flex; align-items:center; gap:10px; }
.bp-policy .bp-crumb li + li::before{ content:"/"; color:#bbb; }
.bp-policy .bp-crumb [aria-current="page"]{ color:var(--bp-red); }

.bp-policy .bp-eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-size:11px; letter-spacing:0.22em; text-transform:uppercase;
  color: var(--bp-red); font-weight:600; margin:0 0 28px;
}
.bp-policy .bp-eyebrow::before{ content:""; width:28px; height:1px; background: var(--bp-red); }

.bp-policy .bp-h1{
  font-family: var(--bp-serif);
  font-size: 88px; font-weight: 400;
  letter-spacing:-0.025em; line-height:0.96;
  margin: 0 0 28px; max-width: 14ch;
}
.bp-policy .bp-h1 em{
  font-style:italic; font-weight:400; color: var(--bp-red);
  position:relative;
}
.bp-policy .bp-h1 em::after{
  content:""; position:absolute; left:-2px; right:-2px; bottom:8px; height:14px;
  background:rgba(102,102,102,0.16); z-index:-1; transform:skew(-6deg); border-radius:2px;
}
.bp-policy .bp-lede{
  font-size: 17px; line-height:1.65;
  color: var(--bp-ink-2);
  margin: 0 0 36px; max-width: 620px;
}

.bp-policy .bp-meta{
  display: block;
  background: #ffffff;
  border: 1px solid #e0e0e0;
  border-radius: 16px;
  padding: 22px 28px;
  margin: 28px 0 32px;
  max-width: 480px;
}
.bp-policy .bp-meta > div{
  padding: 12px 0;
  border-bottom: 1px dashed #e0e0e0;
  display: grid;
  grid-template-columns: 130px 1fr;
  gap: 16px;
  align-items: baseline;
}
.bp-policy .bp-meta > div:last-child{ border-bottom: none; padding-bottom: 4px; }
.bp-policy .bp-meta > div.bp-meta-head{
  display: flex; align-items: center; justify-content: space-between;
  padding: 4px 0 12px;
  border-bottom: 1px solid #e0e0e0; margin-bottom: 4px;
}
.bp-policy .bp-meta > div.bp-meta-head + div{ padding-top: 12px; }
.bp-policy .bp-meta-label{
  font-size: 10.5px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--bp-mute, #666); font-weight: 600;
}
.bp-policy .bp-meta-badge{
  font-size: 9.5px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--bp-ink-2, #333); font-weight: 600;
  background: #fff; border: 1px solid #e0e0e0;
  padding: 4px 10px; border-radius: 999px;
}
.bp-policy .bp-meta dt{
  font-size: 10.5px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--bp-mute, #666); font-weight: 600; margin: 0;
}
.bp-policy .bp-meta dd{
  margin: 0; font-size: 14px; color: var(--bp-ink, #0b0b0b); font-weight: 500;
}
.bp-policy .bp-meta dd em{ font-style: italic; color: var(--bp-mute, #666); }
.bp-policy .bp-meta dd small{
  display: block; font-size: 11.5px; color: var(--bp-mute-2, #888);
  font-weight: 400; margin-top: 2px;
}
.bp-policy .bp-meta dd a{ color: var(--bp-ink, #0b0b0b); text-decoration: none; }
.bp-policy .bp-meta dd a:hover{ color: var(--bp-ink, #0b0b0b); text-decoration: underline; }

@media (max-width: 560px){
  .bp-policy .bp-meta{ padding: 18px 22px; max-width: 100%; }
  .bp-policy .bp-meta > div{ grid-template-columns: 1fr; gap: 4px; padding: 10px 0; }
}

/* bp-head-cta — the two CTAs in the policy hero block. The pasted
   article body uses plain <a> tags (no site btn classes), so styling
   is scoped here to mimic the site's medium buttons:
     - first child  = primary (.btn btn--solid btn--black btn--medium)
     - second child = outline (.btn btn--outline btn--black btn--medium)
   Both invert on hover, matching the sitewide convention. */
.bp-policy .bp-head-cta{ display:flex; gap:14px; flex-wrap:wrap; margin: 36px 0 36px; }
.bp-policy .bp-head-cta a{
  display:inline-flex; align-items:center; gap:8px;
  padding:14px 28px;
  font-family: var(--bp-sans);
  font-weight:500; font-size:13px; letter-spacing:0.08em;
  text-transform:uppercase;
  text-decoration:none !important;
  border-radius:999px;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
  cursor:pointer;
}
.bp-policy .bp-head-cta a:first-child{
  background: var(--bp-ink); color:#fff !important;
  box-shadow: inset 0 0 0 1px var(--bp-ink);
}
.bp-policy .bp-head-cta a:first-child:hover{
  background:#fff; color: var(--bp-ink) !important;
  box-shadow: inset 0 0 0 1px var(--bp-ink);
}
.bp-policy .bp-head-cta a:nth-child(2){
  background:transparent; color: var(--bp-ink) !important;
  box-shadow: inset 0 0 0 1px var(--bp-ink);
}
.bp-policy .bp-head-cta a:nth-child(2):hover{
  background: var(--bp-ink); color:#fff !important;
  box-shadow: inset 0 0 0 1px var(--bp-ink);
}

/* bp-tldr */
.bp-policy .bp-tldr{ background: var(--bp-cream); padding: 96px 80px; }
.bp-policy .bp-tldr-head{
  margin: 0 0 40px;
  display:grid; grid-template-columns: 200px 1fr; gap: 48px; align-items: start;
}
.bp-policy .bp-tldr-head .bp-eyebrow{
  padding-top:14px; border-top:1px solid var(--bp-ink); margin: 0; color: var(--bp-red);
}
.bp-policy .bp-tldr-head .bp-eyebrow::before{ display:none; }
.bp-policy .bp-h2{
  font-family: var(--bp-serif);
  font-size: 42px; font-weight:400; line-height:1.1;
  letter-spacing:-0.018em; margin: 0; max-width: 720px;
}
.bp-policy .bp-h2 em{ font-style:italic; color: var(--bp-red); }
.bp-policy .bp-tldr ol{
  list-style:none; padding:0; margin:0;
  display:grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
  counter-reset: tldr;
}
.bp-policy .bp-tldr li{
  counter-increment: tldr;
  background: #fff; border-radius: 22px; padding: 28px 28px 26px;
  position:relative;
}
.bp-policy .bp-tldr li::before{
  content: "0" counter(tldr);
  display:block;
  font-family: var(--bp-serif); font-style:italic;
  font-size: 22px; color: var(--bp-red);
  margin-bottom: 18px;
}
.bp-policy .bp-tldr li h3{
  font-family: var(--bp-serif);
  font-size: 22px; font-weight:400; letter-spacing:-0.012em;
  margin: 0 0 12px; line-height:1.2;
}
.bp-policy .bp-tldr li h3 em{ color: var(--bp-red); }
.bp-policy .bp-tldr li p{ margin: 0; font-size: 13.5px; line-height: 1.65; color: var(--bp-ink-2); }
.bp-policy .bp-tldr li.bp-read{ background: var(--bp-ink); color: #fff; }
.bp-policy .bp-tldr li.bp-read::before{ content: "+"; color:#fff; font-size:36px; line-height:1; margin-bottom:14px; }
.bp-policy .bp-tldr li.bp-read h3{ color: #fff; }
.bp-policy .bp-tldr li.bp-read h3 em{ color: #fff; }
.bp-policy .bp-tldr li.bp-read p{ color: rgba(255,255,255,0.72); }
.bp-policy .bp-tldr li.bp-read a{ color:#fff; text-decoration-color:rgba(255,255,255,0.4); }
.bp-policy .bp-tldr li.bp-read a:hover{ color:#fff; text-decoration-color:#fff; }

/* bp-doc-shell */
.bp-policy .bp-doc-shell{ background: #fff; padding: 80px 80px 100px; }
.bp-policy .bp-toc{ margin: 0 0 56px; }
.bp-policy .bp-toc-h{
  display:flex; align-items:baseline; justify-content:space-between;
  font-size:11px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--bp-mute); font-weight:600;
  padding: 0 0 16px; margin: 0 0 20px;
  border-bottom:1px solid var(--bp-ink);
}
.bp-policy .bp-toc-h .bp-toc-count{
  font-family: var(--bp-serif); font-style:italic;
  text-transform: none; letter-spacing: 0;
  color: var(--bp-ink-2); font-size: 14px; font-weight:400;
}
.bp-policy .bp-toc ol{ list-style:none; padding:0; margin:0; columns: 2; column-gap: 56px; }
.bp-policy .bp-toc li{ break-inside: avoid; padding: 0; }
.bp-policy .bp-toc li.bp-toc-part{
  column-span: all; -webkit-column-span: all;
  font-family: var(--bp-serif); font-style: italic;
  font-size: 16px; color: var(--bp-ink);
  margin: 16px 0 8px; padding: 10px 0 0;
  border-top: 1px solid var(--bp-line);
}
.bp-policy .bp-toc li.bp-toc-part:first-child{ border-top:none; margin-top:0; padding-top:0; }
.bp-policy .bp-toc a{
  display:grid; grid-template-columns: 32px 1fr; gap: 12px; align-items:baseline;
  padding: 9px 0; text-decoration: none;
  color: var(--bp-ink-2); font-size: 13.5px; line-height:1.4;
  border-bottom: 1px dashed var(--bp-line-2);
}
.bp-policy .bp-toc a:hover{ color: var(--bp-red); }
.bp-policy .bp-toc-n{
  font-family: var(--bp-serif, Georgia, serif);
  font-style: italic;
  color: var(--bp-red, #666666);
  margin-right: 4px;
}

.bp-policy .bp-doc{ max-width: 880px; }
.bp-policy .bp-doc > section.bp-part{ margin: 0 0 56px; }
.bp-policy .bp-doc > section.bp-part:last-child{ margin-bottom: 0; }
.bp-policy .bp-part-h{
  display:grid; grid-template-columns: 80px 1fr; gap: 18px; align-items:baseline;
  margin: 0 0 32px; padding: 18px 0 0;
  font-family: var(--bp-serif);
  font-size: 32px; font-weight: 400; letter-spacing: -0.013em;
  line-height: 1.1;
  border-top: 1px solid var(--bp-ink);
}
.bp-policy .bp-part-h .bp-part-n{ font-style: italic; font-size: 16px; color: var(--bp-red); padding-top: 8px; }
.bp-policy .bp-part-h em{ font-style: italic; color: var(--bp-red); }

/* Scroll-margin so TOC jump links (#bp-s-1, #bp-p-2, etc.) don't
   land buried under the sticky theme header. Applies to the
   <section class="bp-sect"> / <section class="bp-part"> wrappers
   built by the JS auto-rebuild — these get their ids derived from
   the original H2/H3 -h-suffixed ids in the paste. */
.bp-policy [id^="bp-s-"],
.bp-policy [id^="bp-p-"]{
  scroll-margin-top: 100px;
}

.bp-policy .bp-sect{
  padding: 36px 0 32px;
  border-bottom: 1px solid var(--bp-line);
}
.bp-policy .bp-sect:last-child{ border-bottom: none; padding-bottom: 0; }
.bp-policy .bp-sect-h{
  display:grid; grid-template-columns: 80px 1fr; gap: 18px; align-items: baseline;
  margin: 0 0 20px;
  font-family: var(--bp-serif);
  font-size: 30px; font-weight: 400; letter-spacing:-0.014em;
  line-height: 1.16;
}
.bp-policy .bp-sect-h .bp-sect-n{
  font-style: italic; font-size: 38px; color: var(--bp-red);
  line-height: 1; padding-top: 4px;
}
.bp-policy .bp-sect-h em{ font-style: italic; color: var(--bp-red); }

.bp-policy .bp-sub-h{
  display:grid; grid-template-columns: 80px 1fr; gap: 18px; align-items: baseline;
  margin: 22px 0 10px;
  font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--bp-ink); font-weight: 600;
  font-family: var(--bp-sans);
}
.bp-policy .bp-sub-h .bp-sub-n{
  font-family: var(--bp-serif); font-style: italic;
  text-transform: none; letter-spacing: 0;
  color: var(--bp-red); font-size: 16px;
  font-weight:400; text-align: right;
}
.bp-policy .bp-sect p,
.bp-policy .bp-sect ul,
.bp-policy .bp-sect ol{
  margin: 0 0 14px; padding-left: 98px;
  font-size: 14.5px; line-height: 1.7;
  color: var(--bp-ink-2);
}
.bp-policy .bp-sect ul, .bp-policy .bp-sect ol{ padding-left: 118px; }
.bp-policy .bp-sect ul li, .bp-policy .bp-sect ol li{ padding: 2px 0; }
.bp-policy .bp-sect p:last-child{ margin-bottom: 0; }

.bp-policy .bp-callout{
  margin: 18px 0 18px 98px;
  background: var(--bp-red-soft);
  border-left: 3px solid var(--bp-ink);
  padding: 18px 22px; border-radius: 16px;
  font-size: 14px; line-height: 1.65; color: var(--bp-ink);
}
.bp-policy .bp-callout h4{
  font-family: var(--bp-sans);
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--bp-red); font-weight: 600; margin: 0 0 8px;
}
.bp-policy .bp-callout p{ margin: 0; padding-left: 0; font-size: 14px; color: var(--bp-ink); }
.bp-policy .bp-callout em{ font-family: var(--bp-serif); font-style: italic; color: var(--bp-red); }
.bp-policy .bp-callout--ink{ background: var(--bp-canvas); border-left-color: var(--bp-ink); }
.bp-policy .bp-callout--ink h4{ color: var(--bp-ink); }
.bp-policy .bp-callout--ink em{ color: var(--bp-ink); }

/* bp-contact */
.bp-policy .bp-contact{
  background: #fafafa;
  border-radius: 24px;
  padding: 48px 56px;
  margin: 32px 0;
  display:grid; grid-template-columns: 1fr 1fr; gap: 64px;
  align-items:start;
}
.bp-policy .bp-contact > div:first-child .bp-eyebrow{
  padding-top:14px; border-top:1px solid var(--bp-ink); margin: 0 0 20px;
}
.bp-policy .bp-contact > div:first-child .bp-eyebrow::before{ display:none; }
.bp-policy .bp-contact h2{
  font-family: var(--bp-serif);
  font-size: 44px; font-weight: 400; letter-spacing: -0.018em;
  line-height: 1.08; margin: 0 0 18px;
  max-width: 480px;
}
.bp-policy .bp-contact h2 em{ font-style: italic; color: var(--bp-red); }
.bp-policy .bp-contact-intro{
  font-size: 15px; line-height: 1.65; color: var(--bp-ink-2);
  max-width: 480px; margin: 0;
}
.bp-policy .bp-contact dl{
  background: #ffffff;
  border: 1px solid #e0e0e0;
  border-radius: 16px;
  padding: 24px 28px;
  margin: 24px 0 0;
  overflow: hidden;
}
.bp-policy .bp-contact dl > div{
  display: grid; grid-template-columns: 160px 1fr;
  gap: 18px; align-items: center;
  padding: 18px 26px;
  border-bottom: 1px solid var(--bp-line-2);
}
.bp-policy .bp-contact dl > div:last-child{ border-bottom: none; }
.bp-policy .bp-contact dt{
  font-size: 10.5px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--bp-mute); font-weight: 600; margin: 0;
}
.bp-policy .bp-contact dd{
  margin: 0; font-size: 14.5px; color: var(--bp-ink); font-weight: 500;
  letter-spacing: -0.005em;
}
.bp-policy .bp-contact dd a{ color: var(--bp-ink); text-decoration: none; }
.bp-policy .bp-contact dd a:hover{ color: var(--bp-red); }

/* Narrow widths */
@container bp (max-width: 900px){
  .bp-policy .bp-head{
    padding: 56px 36px 48px;
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .bp-policy .bp-head > .bp-h1,
  .bp-policy .bp-head > .bp-lede,
  .bp-policy .bp-head > .bp-head-cta,
  .bp-policy .bp-head > .bp-meta,
  .bp-policy .bp-head > .bp-eyebrow,
  .bp-policy .bp-head > .bp-crumb{
    grid-column: 1;
    grid-row: auto;
  }
  .bp-policy .bp-head > .bp-meta{ margin: 24px 0 0; max-width: 100%; }
  .bp-policy .bp-h1{ font-size: 58px; }
  .bp-policy .bp-tldr{ padding: 56px 36px; }
  .bp-policy .bp-tldr-head{ grid-template-columns: 1fr; gap: 18px; }
  .bp-policy .bp-h2{ font-size: 32px; }
  .bp-policy .bp-tldr ol{ grid-template-columns: repeat(2, 1fr); }
  .bp-policy .bp-doc-shell{ padding: 56px 36px 72px; }
  .bp-policy .bp-toc ol{ columns: 1; }
  .bp-policy .bp-contact{ grid-template-columns: 1fr; padding: 56px 36px 64px; gap: 32px; }
  .bp-policy .bp-contact h2{ font-size: 32px; }
}
@container bp (max-width: 560px){
  .bp-policy .bp-head{ padding: 36px 22px 32px; }
  .bp-policy .bp-h1{ font-size: 40px; margin-bottom: 18px; }
  .bp-policy .bp-lede{ font-size: 15px; margin-bottom: 24px; }
  .bp-policy .bp-head-cta{ flex-direction: column; align-items: stretch; gap: 10px; }
  .bp-policy .bp-tldr{ padding: 40px 22px; }
  .bp-policy .bp-h2{ font-size: 24px; }
  .bp-policy .bp-tldr ol{ grid-template-columns: 1fr; gap: 10px; }
  .bp-policy .bp-tldr li{ padding: 20px 20px 18px; border-radius: 16px; }
  .bp-policy .bp-tldr li h3{ font-size: 18px; }
  .bp-policy .bp-tldr li p{ font-size: 13px; }
  .bp-policy .bp-doc-shell{ padding: 36px 22px 56px; }
  .bp-policy .bp-toc-h{ font-size: 10.5px; }
  .bp-policy .bp-toc a{ grid-template-columns: 28px 1fr; font-size: 13px; }
  .bp-policy .bp-part-h{ grid-template-columns: 44px 1fr; gap: 12px; font-size: 22px; padding-top: 12px; }
  .bp-policy .bp-part-h .bp-part-n{ font-size: 13px; padding-top: 4px; }
  .bp-policy .bp-sect-h{ grid-template-columns: 44px 1fr; gap: 12px; font-size: 20px; }
  .bp-policy .bp-sect-h .bp-sect-n{ font-size: 26px; }
  .bp-policy .bp-sub-h{ grid-template-columns: 44px 1fr; gap: 12px; }
  .bp-policy .bp-sect p, .bp-policy .bp-sect ul, .bp-policy .bp-sect ol{ padding-left: 56px; font-size: 13.5px; }
  .bp-policy .bp-sect ul, .bp-policy .bp-sect ol{ padding-left: 76px; }
  .bp-policy .bp-callout{ margin-left: 56px; padding: 14px 18px; font-size: 13px; }
  .bp-policy .bp-contact{ padding: 40px 22px 48px; }
  .bp-policy .bp-contact h2{ font-size: 26px; }
  .bp-policy .bp-contact dl > div{ grid-template-columns: 1fr; gap: 2px; padding: 14px 18px; }
}

@supports not (container-type: inline-size){
  @media (max-width: 900px){
    .bp-policy .bp-head{ padding: 56px 36px 48px; }
    .bp-policy .bp-h1{ font-size: 58px; }
    .bp-policy .bp-tldr{ padding: 56px 36px; }
    .bp-policy .bp-tldr ol{ grid-template-columns: repeat(2, 1fr); }
    .bp-policy .bp-doc-shell{ padding: 56px 36px 72px; }
    .bp-policy .bp-contact{ grid-template-columns: 1fr; padding: 56px 36px 64px; }
  }
}

/* ---- POLICY PAGE CHROME ----------------------------------------------------
   Wraps the article body on /policies/<slug>. Lifted + namespaced from
   the v2 design's #chrome-css block.
     .bp-policy-canvas    — outer max-width container (1440px)
     .bp-policy-frame     — white inner frame with rounded top corners + shadow
     .bp-policy-ptabs     — pill nav above article (5 tabs, current = is-active)
     .bp-policy-related   — sister-policy grid below article (5 cards)
     .bp-policy-relcard   — individual card; --current variant for current page
     .bp-policy-final-cta — black "Read the policies. Then book the day." block
   No red glow, no cream backgrounds (monochrome greys only per master handoff). */
/* Canvas spans the full viewport with #fafafa so the page background
   reads as the design's "canvas" surface. The frame is the centered
   white container with rounded top corners + shadow — that's the
   visual envelope for all the chrome (ptabs, article body, related-grid,
   final-CTA). Operator clarified 2026-05-15: the frame is wanted; the
   earlier "remove the container" note was about the inset feel, not
   the structure. */
.bp-policy-canvas{
  background:#ffffff;
  padding:40px 0 60px;
}
.bp-policy-frame{
  max-width:1440px;
  margin:0 auto;
  background:#ffffff;
  overflow:hidden;
  border-radius: 24px;
}
@media (max-width: 1500px){
  .bp-policy-frame{ margin: 0 32px; max-width: none; }
}
@media (max-width: 720px){
  .bp-policy-canvas{ padding: 20px 0 40px; }
  .bp-policy-frame{ margin: 0 16px; border-radius: 18px; }
}

/* ptabs */
.bp-policy-ptabs{
  background:#fff; padding:22px 32px;
  border-bottom:1px solid #e5e5e2;
  display:flex; align-items:center; gap:24px;
}
.bp-policy-ptabs__label{ font-size:10.5px; letter-spacing:0.22em; text-transform:uppercase; color:#666; font-weight:600; flex-shrink:0; }
.bp-policy-ptabs__list{
  display:flex; gap:6px; background:#fafafa; padding:5px; border-radius:999px; list-style:none; margin:0;
  overflow-x:auto; -webkit-overflow-scrolling:touch;
  scrollbar-width:none;       /* Firefox */
}
.bp-policy-ptabs__list::-webkit-scrollbar{ display:none; } /* WebKit */
.bp-policy-ptabs__list li{ margin:0; padding:0; list-style:none; flex-shrink:0; }
.bp-policy-ptabs__list li::before, .bp-policy-ptabs__list li::marker{ content:none !important; display:none !important; }
.bp-policy-ptabs__list a{
  display:inline-flex; align-items:center; gap:8px;
  padding:10px 20px; font-size:12.5px; font-weight:500;
  color:#333; text-decoration:none; border-radius:999px;
  letter-spacing:-0.002em;
  white-space:nowrap;
  transition: background 140ms ease, color 140ms ease;
}
.bp-policy-ptabs__list a:hover{ background:rgba(255,255,255,0.6); color:#111; }
.bp-policy-ptabs__list a.is-active{ background:#111; color:#fff; }
.bp-policy-ptabs__list a .num{ font-family:"Playfair Display", Georgia, serif; font-style:italic; font-size:12px; opacity:0.55; }
.bp-policy-ptabs__list a.is-active .num{ color:#fff; opacity:1; }
.bp-policy-ptabs__aside{
  margin-left:auto; font-size:11.5px; color:#666;
  display:flex; align-items:center; gap:8px;
  flex-shrink:0; white-space:nowrap;
}
.bp-policy-ptabs__aside a{ color:#111; text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(0,0,0,0.25); }
.bp-policy-ptabs__aside a:hover{ color:#666; text-decoration-color:#666; }
@media (max-width: 900px){
  .bp-policy-ptabs{ padding:16px 18px; flex-direction:column; align-items:flex-start; gap:12px; }
  .bp-policy-ptabs__list{ max-width:100%; width:100%; }
  .bp-policy-ptabs__aside{ margin-left:0; }
}

/* related-grid — rounded top corners so the #fafafa block reads
   as a distinct section when the surrounding canvas is white */
.bp-policy-related{
  background:#fafafa;
  padding:80px 80px 90px;
  border-radius: 24px 24px 0 0;
}
.bp-policy-related__head{ display:grid; grid-template-columns: 1fr 1fr; gap:64px; align-items:end; margin-bottom:36px; }
.bp-policy-related__h{ font-family:"Playfair Display", Georgia, serif; font-size:36px; font-weight:400; letter-spacing:-0.018em; line-height:1.1; margin:14px 0 0; max-width:520px; }
.bp-policy-related__h em{ font-style:italic; color:#111; font-family:"Playfair Display", Georgia, serif; }
.bp-policy-related__grid{ display:grid; grid-template-columns: repeat(5, 1fr); gap:14px; }
@media (max-width: 1280px){ .bp-policy-related__grid{ grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px){ .bp-policy-related__grid{ grid-template-columns: 1fr; } .bp-policy-related{ padding:48px 24px 56px; } .bp-policy-related__head{ grid-template-columns:1fr; gap:24px; } }

.bp-policy-relcard{
  background:#ffffff; border:1px solid #e5e5e2; border-radius:22px; padding:28px 28px 26px;
  text-decoration:none; color:#111; display:flex; flex-direction:column;
  transition: background 200ms ease; position:relative;
}
.bp-policy-relcard:hover{ background:#fafafa; }
.bp-policy-relcard--current{ background:#111; color:#fff; border-color:#111; }
.bp-policy-relcard--current:hover{ background:#0d0d0d; }
.bp-policy-relcard__num{ font-family:"Playfair Display", Georgia, serif; font-style:italic; font-size:13px; color:#666; margin-bottom:10px; }
.bp-policy-relcard--current .bp-policy-relcard__num{ color:rgba(255,255,255,0.7); }
.bp-policy-relcard__h{ font-family:"Playfair Display", Georgia, serif; font-size:22px; font-weight:400; letter-spacing:-0.012em; line-height:1.2; margin:0 0 10px; color:#111; }
.bp-policy-relcard--current .bp-policy-relcard__h{ color:#fff; }
.bp-policy-relcard__h em{ font-style:italic; color:#111; font-family:"Playfair Display", Georgia, serif; }
.bp-policy-relcard--current .bp-policy-relcard__h em{ color:rgba(255,255,255,0.85); }
.bp-policy-relcard__d{ font-size:13.5px; line-height:1.6; color:#333; margin:0 0 18px; flex:1; }
.bp-policy-relcard--current .bp-policy-relcard__d{ color:rgba(255,255,255,0.78); }
.bp-policy-relcard__cta{
  display:inline-flex; align-items:center; gap:6px;
  font-size:11px; letter-spacing:0.16em; text-transform:uppercase;
  font-weight:600; color:#111;
}
.bp-policy-relcard--current .bp-policy-relcard__cta{ color:rgba(255,255,255,0.5); pointer-events:none; }
.bp-policy-relcard__cta .arr{ transition:transform 160ms ease; display:inline-block; }
.bp-policy-relcard:hover .bp-policy-relcard__cta .arr{ transform:translateX(3px); }
.bp-policy-relcard__pill{
  position:absolute; top:18px; right:18px;
  font-size:9.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:#000; font-weight:600; background:#fafafa;
  padding:4px 9px; border-radius:999px;
}

/* final-CTA */
.bp-policy-final-cta{ padding:120px 80px; background:#111; color:#fff; text-align:center; position:relative; overflow:hidden; }
.bp-policy-final-cta > *{ position:relative; }
.bp-policy-final-cta h2{ font-family:"Playfair Display", Georgia, serif; font-size:54px; font-weight:400; line-height:1.05; letter-spacing:-0.02em; margin:0 auto 20px; max-width:920px; color:#fff; }
.bp-policy-final-cta h2 em{ font-style:italic; color:rgba(255,255,255,0.78); font-family:"Playfair Display", Georgia, serif; }
.bp-policy-final-cta p{ font-size:16px; color:rgba(255,255,255,0.7); max-width:620px; margin:0 auto 32px; line-height:1.65; }
.bp-policy-final-cta__actions{ display:flex; gap:14px; justify-content:center; align-items:center; flex-wrap:wrap; }
@media (max-width: 720px){
  .bp-policy-final-cta{ padding:72px 24px; }
  .bp-policy-final-cta h2{ font-size:34px; }
}
/* Fallback when Shopify renders the policy with its built-in
   default markup (.shopify-policy__container) instead of our
   custom templates/policy.json + sections/main-policy.liquid.
   Hides the Shopify default <h1> so the article's own <h1 class="bp-h1">
   isn't a duplicate; the bp-policy class gets added to .rte by JS in
   custom.js so the article-body styling applies. When the JS fallback
   wraps the Shopify container in our .bp-policy-frame, we strip the
   Shopify default's own width/padding so the article uses the frame
   width and its own internal section padding (.bp-head, .bp-doc-shell,
   .bp-contact each have their own 48–80px padding). */
.shopify-policy__title { display: none !important; }
.bp-policy-frame .shopify-policy__container {
  background: transparent;
  padding: 0;
  max-width: none;
  margin: 0;
}
.bp-policy-frame .shopify-policy__body {
  max-width: none;
  margin: 0;
  padding: 0;
}
.bp-policy-frame .shopify-policy__body > .rte {
  max-width: none;
  margin: 0;
  padding: 0;
}

/* ============================================================================
   END POLICY PAGES
   ============================================================================ */


/* ============================================================================
   CONTACT PAGE   (page handle: contact-us)
   Built 2026-05-15. Namespace: bp-contactpg-* (avoids collision with the
   .bp-policy .bp-contact selector used on policy pages).
   Palette: monochrome greys + ink only. Green/red used only as functional
   status indicators on the inbox-open pill (not decorative).
   Em italic = Playfair.
   ============================================================================ */

/* ---- Section banding: alternating #fafafa via Shopify section IDs ---- */
[id$="__bp_contact_hero"]     { background:#ffffff; }
[id$="__bp_contact_thesis"]   { background:#fafafa; padding:5px; }
[id$="__bp_contact_tracks"]   { background:#ffffff; }
[id$="__bp_contact_nap"]      { background:#fafafa; }
[id$="__bp_contact_map"]      { background:#ffffff; }
[id$="__bp_contact_form"]     { background:#fafafa; }
[id$="__bp_contact_faq"]      .accordions-section { background:#ffffff; }

/* ---- Shared section heading. v1.5 tweak: base is Poppins (the body font);
   only the em-wrapped portion renders in Playfair italic (the "alt font").
   This applies to Tracks / NAP / Map / Form H2s via .bp-contactpg-h2. ---- */
.bp-contactpg-h2 {
  font-family: 'Poppins', system-ui, sans-serif;
  font-weight:500;
  font-style:normal;
  font-size: clamp(26px, 3vw, 38px);
  line-height:1.18;
  letter-spacing:-0.015em;
  color:#0b0b0b;
  margin:0 0 18px;
  max-width:640px;
  overflow-wrap: anywhere;
}
.bp-contactpg-h2 em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  color:#0b0b0b;
}
.bp-contactpg-intro {
  font-size: clamp(15px, 1.1vw, 16px);
  line-height:1.7;
  color:#333;
  max-width:560px;
  margin:0 0 32px;
}
.bp-contactpg-intro strong { color:#0b0b0b; font-weight:600; }
.bp-contactpg-intro a {
  color:#0b0b0b; font-weight:500;
  text-decoration:underline; text-underline-offset:3px;
  text-decoration-color:rgba(0,0,0,0.25);
}
.bp-contactpg-intro a:hover { text-decoration-color:#0b0b0b; }

/* ---- HERO ---- */
.bp-contactpg-hero { padding:64px 32px 64px; }
.bp-contactpg-hero__inner {
  max-width:1280px; margin:0 auto;
  display:grid; grid-template-columns: 1.35fr 1fr; gap:64px; align-items:end;
}
.bp-contactpg-hero__title {
  font-family: 'Poppins', system-ui, sans-serif;
  font-weight:500;
  font-style:normal;
  font-size: clamp(28px, 5.5vw, 60px);
  line-height:1.08;
  letter-spacing:-0.02em;
  color:#0b0b0b;
  margin:0 0 24px;
  overflow-wrap: anywhere;
}
.bp-contactpg-hero__title em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  color:#0b0b0b;
}
/* Let grid children shrink so the H1 can wrap inside its column instead of
   forcing the whole grid wider than the viewport. */
.bp-contactpg-hero__inner > * { min-width: 0; }
/* Live card values: allow shrinking inside the row's grid, but
   do NOT break mid-word. `overflow-wrap: anywhere` (the previous
   value) was producing "info@businessportrai / ts.ca" on mobile
   because the row's 90px key + 14px gap left only ~184px for the
   value column on a 384px-wide viewport — narrower than the
   email's ~207px width. With `normal` the email stays whole; the
   key-column tightening below (60px + 10px gap) reclaims the
   missing space so the address fits on one line at mid-size
   phones. Sub-480px viewports get an additional livecard-padding
   reduction further below. */
.bp-contactpg-livecard__row { min-width: 0; }
.bp-contactpg-livecard__v { min-width: 0; overflow-wrap: normal; }
.bp-contactpg-hero__lede {
  font-size: clamp(15px, 1.15vw, 17px);
  line-height:1.7;
  color:#333;
  max-width:600px;
  margin:0 0 28px;
}
.bp-contactpg-hero__cta { display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:24px; }
.bp-contactpg-hero__trust {
  display:flex; align-items:center; gap:10px;
  font-size:11.5px; letter-spacing:0.16em; text-transform:uppercase;
  color:#666; font-weight:600;
}
.bp-contactpg-hero__trust .dot { width:5px; height:5px; border-radius:999px; background:#0b0b0b; }

/* Hero right column — labeled-fact "right now" card */
.bp-contactpg-livecard {
  background:#fafafa;
  border:1px solid #e0e0e0;
  border-radius:20px;
  padding:24px 28px 20px;
}
.bp-contactpg-livecard__top {
  display:flex; align-items:center; justify-content:space-between;
  padding-bottom:16px; border-bottom:1px solid #e0e0e0;
  margin-bottom:14px;
  gap:12px; flex-wrap:wrap;
}
.bp-contactpg-livecard__title {
  font-size:10.5px; letter-spacing:0.22em; text-transform:uppercase;
  color:#666; font-weight:600;
}

/* Status pill — white background with state-based dot. Generic class used both
   in the hero live card AND inline in the NAP Phone row (v1.5 spec). JS toggles
   .is-open / .is-closed based on America/Toronto time (Mon-Fri 9:00 to 18:00 ET).
   Default grey state until JS runs. Green / red are functional state indicators.
   Offline red = #d43747 (Claude Design red; operator override of the strict
   monochrome palette specifically for this functional status indicator). */
.bp-contactpg-pulse {
  display:inline-flex; align-items:center; gap:8px;
  padding:5px 12px;
  background:#ffffff;
  border:1px solid #e0e0e0;
  border-radius:999px;
  font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase;
  color:#666; font-weight:600;
  line-height:1;
  white-space:nowrap;
}
.bp-contactpg-pulse .pulse-dot {
  width:7px; height:7px; border-radius:999px;
  background:#999; flex-shrink:0;
  box-shadow: 0 0 0 0 rgba(0,0,0,0);
}
.bp-contactpg-pulse.is-open { color:#2f7a4a; }
.bp-contactpg-pulse.is-open .pulse-dot {
  background:#2f7a4a;
  animation: bp-contactpg-pulse-open 2s ease-out infinite;
}
.bp-contactpg-pulse.is-closed { color:#d43747; }
.bp-contactpg-pulse.is-closed .pulse-dot { background:#d43747; }
@keyframes bp-contactpg-pulse-open {
  0%   { box-shadow: 0 0 0 0 rgba(47,122,74,0.5); }
  70%  { box-shadow: 0 0 0 10px rgba(47,122,74,0); }
  100% { box-shadow: 0 0 0 0 rgba(47,122,74,0); }
}
/* Backward-compat alias for the live-card-scoped class used in earlier builds */
.bp-contactpg-livecard__pulse { /* now equivalent to .bp-contactpg-pulse via the rules above when both classes are applied */ }

.bp-contactpg-livecard__row {
  display:grid; grid-template-columns: 90px 1fr;
  gap:14px; align-items:baseline;
  padding:10px 0;
}
.bp-contactpg-livecard__row + .bp-contactpg-livecard__row { border-top:1px dashed #e0e0e0; }
.bp-contactpg-livecard__k {
  font-size:10.5px; letter-spacing:0.16em; text-transform:uppercase;
  color:#666; font-weight:600;
}
.bp-contactpg-livecard__v {
  font-size:14.5px; color:#0b0b0b; font-weight:500;
}
.bp-contactpg-livecard__v em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  color:#0b0b0b;
}
.bp-contactpg-livecard__v a { color:#0b0b0b; text-decoration:none; }
.bp-contactpg-livecard__v a:hover { text-decoration:underline; text-underline-offset:3px; }
.bp-contactpg-livecard__foot {
  margin-top:14px; padding-top:12px;
  border-top:1px solid #e0e0e0;
  font-size:11.5px; color:#666; font-weight:500;
}
.bp-contactpg-livecard__foot strong {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-weight:400;
  color:#0b0b0b; font-size:13px;
}

/* ---- THESIS ---- (v1.5: switched from custom-html to native section-text
   so the operator can edit the thesis prose via the Shopify theme editor.
   Styling now scoped to the section ID so it applies regardless of how
   the native section structures its inner HTML.) */
[id$="__bp_contact_thesis"] .text-section,
[id$="__bp_contact_thesis"] .rte,
[id$="__bp_contact_thesis"] .text-block,
[id$="__bp_contact_thesis"] .rte > p {
  max-width:880px; margin-left:auto; margin-right:auto;
}
[id$="__bp_contact_thesis"] p {
  font-family:'Poppins', sans-serif;
  font-size: clamp(18px, 1.8vw, 24px);
  line-height:1.55;
  color:#0b0b0b;
  text-align:center;
  font-weight:400;
  max-width:880px; margin-left:auto; margin-right:auto;
}
[id$="__bp_contact_thesis"] em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  color:#0b0b0b;
}
/* Legacy custom-html thesis rules left in place but no longer rendered. */

/* ---- TRACKS — three-card grid ---- */
.bp-contactpg-tracks { padding:40px 32px 72px; scroll-margin-top:90px; }
.bp-contactpg-tracks__inner { max-width:1280px; margin:0 auto; }
.bp-contactpg-tracks__head {
  display:block;
  max-width:none;
  margin:0 0 32px;
}
.bp-contactpg-tracks__grid {
  display:grid; grid-template-columns: repeat(3, 1fr); gap:16px;
  align-items:stretch;
}
.bp-contactpg-track {
  background:#fafafa;
  border:1px solid #e0e0e0;
  border-radius:20px;
  padding:32px 28px 26px;
  display:flex; flex-direction:column;
  transition: background 200ms ease, border-color 200ms ease;
}
.bp-contactpg-track:hover { background:#ffffff; }
.bp-contactpg-track--featured {
  background:#0b0b0b; color:#fff;
  border-color:#0b0b0b;
}
.bp-contactpg-track--featured:hover { background:#1a1a1a; }
/* Track num + icon dropped per v1.5 operator spec; CSS rules kept harmless
   in case future content blocks reference them. */
.bp-contactpg-track__num { display:none; }
.bp-contactpg-track__icon { display:none; }
.bp-contactpg-track__h {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-size:24px; font-weight:400;
  letter-spacing:-0.012em; line-height:1.2;
  margin:0;
  color:inherit;
}
.bp-contactpg-track__h em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  color:inherit;
}
.bp-contactpg-track__h .sub {
  display:block;
  font-family: 'Poppins', sans-serif;
  font-size:13px; font-weight:500;
  font-style:normal;
  letter-spacing:0;
  margin-top:6px;
  color:#666;
}
.bp-contactpg-track--featured .bp-contactpg-track__h .sub { color:rgba(255,255,255,0.62); }
.bp-contactpg-track__body {
  font-size:14.5px; line-height:1.7;
  color:#333;
  margin:18px 0 0;
  flex:1;
}
.bp-contactpg-track--featured .bp-contactpg-track__body { color:rgba(255,255,255,0.78); }
/* Email-as-hero block — v1.5 layout: appears DIRECTLY UNDER the headline,
   between dashed dividers. Body comes after, route line at bottom.
   No arrow in the email label (operator tweak). */
.bp-contactpg-track__email {
  display:block;
  margin-top:18px;
  padding:16px 0;
  border-top:1px dashed #e0e0e0;
  border-bottom:1px dashed #e0e0e0;
  text-decoration:none;
}
.bp-contactpg-track--featured .bp-contactpg-track__email {
  border-top-color:rgba(255,255,255,0.16);
  border-bottom-color:rgba(255,255,255,0.16);
}
.bp-contactpg-track__email-lbl {
  display:block;
  font-size:10px; letter-spacing:0.22em; text-transform:uppercase;
  color:#666; font-weight:600;
  margin-bottom:10px;
}
.bp-contactpg-track--featured .bp-contactpg-track__email-lbl { color:rgba(255,255,255,0.5); }
.bp-contactpg-track__email-addr {
  display:block;
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-size:24px; line-height:1.1;
  letter-spacing:-0.018em;
  color:#0b0b0b;
  overflow-wrap:break-word;
  font-weight:400;
}
.bp-contactpg-track__email-addr em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  color:#0b0b0b;
}
.bp-contactpg-track__email-addr .at { color:#999; font-style:normal; padding:0 1px; }
.bp-contactpg-track--featured .bp-contactpg-track__email-addr { color:#fff; }
.bp-contactpg-track--featured .bp-contactpg-track__email-addr em { color:#fff; }
.bp-contactpg-track--featured .bp-contactpg-track__email-addr .at { color:rgba(255,255,255,0.45); }

/* Route line: "Or [action] [small pill button]" — bottom of card */
.bp-contactpg-track__route {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  margin-top:18px; padding-top:14px;
  border-top:1px solid #f0f0f0;
  font-size:11.5px; letter-spacing:0.04em;
  color:#666; font-weight:500;
}
.bp-contactpg-track--featured .bp-contactpg-track__route {
  border-top-color:rgba(255,255,255,0.10);
  color:rgba(255,255,255,0.55);
}

/* Small pill button — black on light cards, white on featured-dark card */
.bp-contactpg-track__pill {
  display:inline-flex; align-items:center; justify-content:center;
  padding:8px 16px;
  background:#0b0b0b; color:#fff;
  border:1px solid #0b0b0b;
  border-radius:999px;
  font-family:'Poppins', sans-serif;
  font-size:11px; letter-spacing:0.1em;
  text-transform:uppercase; font-weight:600;
  text-decoration:none;
  white-space:nowrap;
  transition: background 140ms ease, color 140ms ease;
}
.bp-contactpg-track__pill:hover { background:#fff; color:#0b0b0b; }
.bp-contactpg-track--featured .bp-contactpg-track__pill {
  background:#fff; color:#0b0b0b; border-color:#fff;
}
.bp-contactpg-track--featured .bp-contactpg-track__pill:hover {
  background:transparent; color:#fff;
}

/* ---- NAP — labeled-fact table ---- */
.bp-contactpg-nap { padding:88px 32px; scroll-margin-top:90px; }
.bp-contactpg-nap__inner { max-width:1280px; margin:0 auto; }
.bp-contactpg-nap__grid {
  display:grid; grid-template-columns: 1.05fr 1fr; gap:64px;
  align-items:stretch;
}
.bp-contactpg-nap__left { display:flex; flex-direction:column; min-width:0; }
.bp-contactpg-nap__table { flex:1; display:flex; flex-direction:column; }
.bp-contactpg-nap__row { flex:1; }
.bp-contactpg-nap__table {
  background:#ffffff;
  border-radius:20px;
  overflow:hidden;
  border:1px solid #e0e0e0;
  margin-top:8px;
}
.bp-contactpg-nap__row {
  display:grid;
  /* Fixed column-3 width so pill right edges land at the same x across
     rows. minmax(0,1fr) on column 2 lets it shrink below the email's
     natural width (the email is one un-wrappable token, so without
     minmax(0,...) the row's effective width exceeded the card and
     overflow:hidden clipped the pill at 1315–1465px viewports —
     operator 2026-05-25). column-gap reduced from 24px to 16px to free
     ~16px for col 2 so the full "enterprise@businessportraits.ca"
     address fits at 15px font without ellipsis at intermediate
     viewports — operator 2026-05-25. */
  grid-template-columns: 180px minmax(0, 1fr) 110px;
  column-gap:16px;
  row-gap:24px;
  align-items:center;
  padding:18px 24px;
  border-bottom:1px solid #f0f0f0;
}
.bp-contactpg-nap__row .bp-contactpg-nap__pill,
.bp-contactpg-nap__row .bp-contactpg-pulse {
  justify-self:end;
}
.bp-contactpg-nap__row:last-child { border-bottom:none; }
.bp-contactpg-nap__row:hover { background:#fafafa; }
.bp-contactpg-nap__k {
  display:flex; align-items:center; gap:10px;
  font-size:10.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:#666; font-weight:600;
}
.bp-contactpg-nap__k svg { width:14px; height:14px; color:#0b0b0b; stroke-width:1.6; flex-shrink:0; }
.bp-contactpg-nap__v {
  font-size:15px; color:#0b0b0b; font-weight:500;
  letter-spacing:-0.005em;
  min-width:0;  /* allow flex/grid shrink so the email's ellipsis kicks in */
}
.bp-contactpg-nap__v a {
  color:#0b0b0b;
  text-decoration:none;
  /* Truncate the email with ellipsis when col 2 is too narrow to hold
     the full address (intermediate viewports between desktop and tablet
     where the right-side city image leaves the table card narrow). */
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.bp-contactpg-nap__v a:hover { text-decoration:underline; text-underline-offset:3px; }
.bp-contactpg-nap__v small {
  display:block;
  margin-top:3px;
  color:#666; font-size:11.5px; font-weight:500;
}
.bp-contactpg-nap__pill {
  font-size:10px; letter-spacing:0.16em; text-transform:uppercase;
  color:#666; font-weight:600;
  background:#fafafa;
  padding:5px 10px; border-radius:999px;
  white-space:nowrap;
  border:1px solid #e0e0e0;
}
.bp-contactpg-nap__pill--ink {
  color:#fff; background:#0b0b0b; border-color:#0b0b0b;
}

/* Right column — brand image wrapper. Stretches to match table height (v2 design). */
.bp-contactpg-nap__brand {
  align-self:stretch;
  min-height:560px;
  border-radius:20px;
  overflow:hidden;
  background:#fafafa;
  position:relative;
}
.bp-contactpg-nap__brand img {
  width:100%; height:100%; object-fit:cover; display:block;
}
.bp-contactpg-nap__brand-tag {
  position:absolute; top:18px; left:18px;
  display:inline-flex; align-items:center; gap:8px;
  padding:7px 14px;
  background:rgba(11,11,11,0.7);
  backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,0.18);
  border-radius:999px;
  font-size:10px; letter-spacing:0.18em; text-transform:uppercase;
  color:#fff; font-weight:600;
}
.bp-contactpg-nap__brand-tag .dot {
  width:5px; height:5px; border-radius:999px; background:#fff;
}

/* ---- MAP — v2 layout: left (H2 + intro + meta) + right (city tiers) ---- */
.bp-contactpg-map { padding:88px 32px; scroll-margin-top:90px; }
.bp-contactpg-map__inner { max-width:1280px; margin:0 auto; }
.bp-contactpg-map__head {
  display:grid; grid-template-columns: 0.95fr 1.15fr; gap:80px;
  align-items:start;
}
.bp-contactpg-map__left { display:flex; flex-direction:column; min-width:0; }
/* Map meta — v1.5 tweak: two rows side by side (Region on left, Coordinates on right) */
.bp-contactpg-map__meta {
  display:grid; grid-template-columns: 1fr 1fr; gap:32px;
  border-top:1px solid #e0e0e0;
  margin-top:0px;
  padding-top:0;
}
.bp-contactpg-map__meta-row {
  display:flex; flex-direction:column; gap:6px;
  padding:0; border-bottom:none;
}
.bp-contactpg-map__meta-row--right { text-align:right; }
.bp-contactpg-map__meta-k {
  font-size:10.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:#666; font-weight:600;
}
.bp-contactpg-map__meta-v {
  font-size:13.5px; color:#333; line-height:1.55;
}

/* Right column — cities grouped by tier (no SLA times) */
.bp-contactpg-map__cities {
  display:flex; flex-direction:column; gap:30px;
}
.bp-contactpg-tier__head {
  display:flex; align-items:center; gap:12px;
  margin-bottom:14px;
  padding-bottom:10px;
  border-bottom:1px solid #e0e0e0;
}
.bp-contactpg-tier__dot {
  width:10px; height:10px; border-radius:999px;
  background:#0b0b0b; flex-shrink:0;
}
.bp-contactpg-tier--anchor .bp-contactpg-tier__dot { background:#0b0b0b; }
.bp-contactpg-tier--core   .bp-contactpg-tier__dot { background:#0b0b0b; }
.bp-contactpg-tier--ext    .bp-contactpg-tier__dot { background:#8a8a85; }
.bp-contactpg-tier__lbl {
  font-size:11px; letter-spacing:0.22em; text-transform:uppercase;
  color:#0b0b0b; font-weight:600;
}
.bp-contactpg-tier__list {
  display:flex; flex-wrap:wrap; align-items:baseline;
  column-gap:22px; row-gap:6px;
}
.bp-contactpg-city {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-weight:400;
  color:#0b0b0b; letter-spacing:-0.018em;
  white-space:nowrap; line-height:1.1;
}
.bp-contactpg-city--xl {
  font-size:clamp(46px, 6vw, 64px);
  font-style:italic;
  letter-spacing:-0.025em; line-height:0.95;
}
.bp-contactpg-city--lg { font-size:clamp(24px, 2.6vw, 30px); }
.bp-contactpg-city--md { font-size:clamp(18px, 2vw, 22px); color:#333; }
.bp-contactpg-city--more {
  font-size:16px; color:#666; font-style:italic; align-self:center;
}
.bp-contactpg-city--more em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
}

/* ---- FORM ---- */
.bp-contactpg-form { padding:88px 32px; scroll-margin-top:90px; }
.bp-contactpg-form__inner { max-width:880px; margin:0 auto; }
/* v1.4 head: H2 + intro paragraph stacked full-width above the form panel.
   No 2-col grid; intro takes the full inner width so it doesn't read as
   half-column "too tall" copy beside an empty void. */
.bp-contactpg-form__head { margin-bottom:36px; }
.bp-contactpg-form__head .bp-contactpg-intro { max-width:none; margin-bottom:0; }
.bp-contactpg-form__panel {
  background:#ffffff;
  border:1px solid #e0e0e0;
  border-radius:22px;
  padding:36px 40px 32px;
}
.bp-contactpg-form__row { margin-bottom:20px; }
.bp-contactpg-form__row--inline {
  display:grid; grid-template-columns:1fr 1fr; gap:18px;
}
.bp-contactpg-form__label {
  display:flex; align-items:baseline; gap:8px;
  font-size:11px; letter-spacing:0.16em; text-transform:uppercase;
  color:#666; font-weight:600;
  margin-bottom:10px;
}
.bp-contactpg-form__label .req { color:#0b0b0b; font-weight:700; }
.bp-contactpg-form__label .opt {
  color:#999; font-size:10px; letter-spacing:0.12em; font-weight:500;
  text-transform:uppercase;
}
.bp-contactpg-form__panel input[type="text"],
.bp-contactpg-form__panel input[type="email"],
.bp-contactpg-form__panel input[type="tel"],
.bp-contactpg-form__panel textarea {
  width:100%;
  padding:14px 18px;
  background:#fafafa;
  border:1px solid transparent;
  border-radius:12px;
  font-family:'Poppins', sans-serif;
  font-size:15px; font-weight:500;
  color:#0b0b0b;
  transition: border-color 120ms ease, background 120ms ease;
  box-sizing:border-box;
}
.bp-contactpg-form__panel input:focus,
.bp-contactpg-form__panel textarea:focus {
  outline:none;
  border-color:#0b0b0b;
  background:#ffffff;
}
.bp-contactpg-form__panel textarea { resize:vertical; min-height:140px; line-height:1.6; }
/* Placeholder text in light grey so it visually reads as hint, not content */
.bp-contactpg-form__panel input::placeholder,
.bp-contactpg-form__panel textarea::placeholder {
  color:#b5b5b5; opacity:1;
}

/* "Send to" radio group — v2 layout: vertical stack with horizontal rows.
   Each row: check on left, name + sub in middle, inbox pill on right. */
.bp-contactpg-form__radios {
  display:flex; flex-direction:column; gap:10px;
}
.bp-contactpg-form__radios input[type="radio"] {
  position:absolute; opacity:0; pointer-events:none;
}
.bp-contactpg-form__radios label {
  display:flex; align-items:center; gap:18px;
  padding:12px 22px;
  background:#fafafa;
  border:1px solid transparent;
  border-radius:12px;
  cursor:pointer;
  transition: background 140ms ease, border-color 140ms ease, box-shadow 140ms ease;
}
.bp-contactpg-form__radios label:hover { background:#ffffff; border-color:#e0e0e0; }
.bp-contactpg-form__radios input:checked + label {
  background:#ffffff; border-color:#0b0b0b;
  box-shadow: 0 0 0 1px #0b0b0b;
}
.bp-contactpg-form__radios .check {
  width:18px; height:18px; border-radius:999px;
  border:1px solid #666;
  display:flex; align-items:center; justify-content:center;
  background:#fff; flex-shrink:0;
}
.bp-contactpg-form__radios .check::after {
  content:""; width:8px; height:8px; border-radius:999px; background:transparent;
}
.bp-contactpg-form__radios input:checked + label .check { border-color:#0b0b0b; }
.bp-contactpg-form__radios input:checked + label .check::after { background:#0b0b0b; }
.bp-contactpg-form__radios .body { flex:1; min-width:0; }
/* name + sub are spans inside the body — force block so they stack with
   visible gap (without display:block they render inline and run together) */
.bp-contactpg-form__radios .name {
  display:block;
  font-size:15px; font-weight:600; letter-spacing:-0.005em;
  color:#0b0b0b; line-height:1.2;
}
.bp-contactpg-form__radios .sub {
  display:block;
  font-size:12.5px; color:#666;
  margin-top:4px; line-height:1.4;
}
.bp-contactpg-form__radios .inbox {
  font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase;
  font-weight:600; color:#666;
  white-space:nowrap;
  background:#fff; padding:6px 11px; border-radius:999px;
  border:1px solid #e0e0e0;
  flex-shrink:0;
  transition: background 140ms ease, color 140ms ease, border-color 140ms ease;
}
.bp-contactpg-form__radios input:checked + label .inbox {
  background:#0b0b0b; color:#fff; border-color:#0b0b0b;
}
.bp-contactpg-form__foot {
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  margin-top:24px; padding-top:22px;
  border-top:1px solid #e0e0e0;
  flex-wrap:wrap;
}
.bp-contactpg-form__note {
  font-size:11.5px; color:#666;
  max-width:340px; line-height:1.5;
}
/* On successful submit, the note swaps to a green confirmation badge so the
   click feels acknowledged. Same row as the (now hidden / replaced) submit. */
.bp-contactpg-form__note--success {
  background: #fafafa;
  color: #279239;
  font-weight: 600;
  padding: 8px 14px;
  border-radius: 20px;
  max-width: none;
  font-size: 12.5px;
  border: 1px solid #279239;
}
.bp-contactpg-form__submit {
  /* Sized to match the theme's `.btn--medium` buttons used elsewhere
     on the page (e.g. the hero "Book Online" / "Send a Message"
     pair and the final-CTA buttons at page bottom). Theme medium
     uses `--top-bottom-padding: 12px; --left-right-padding: 20px`
     — copying those values directly here so the submit button reads
     as part of the same size family.

     Previously had `padding: 14px 28px` which made the submit
     button visibly larger than the medium buttons around it. */
  display:inline-flex; align-items:center; gap:8px;
  padding:12px 20px;
  background:#0b0b0b; color:#fff;
  border:1px solid #0b0b0b;
  border-radius:999px;
  font-family:'Poppins', sans-serif;
  font-size:12px; font-weight:600;
  letter-spacing:0.12em; text-transform:uppercase;
  cursor:pointer;
  transition: background 140ms ease, color 140ms ease;
}
.bp-contactpg-form__submit:hover { background:#fff; color:#0b0b0b; }

/* Shopify-rendered form messages */
.bp-contactpg-form .contact-form__message {
  margin:0 0 18px;
  padding:14px 18px;
  border-radius:12px;
  font-size:14px;
  border:1px solid #e0e0e0;
  background:#fafafa;
}
.bp-contactpg-form .contact-form__message--success {
  border-color:#0b0b0b; background:#fff; color:#0b0b0b; font-weight:500;
}

/* ---- Section-accordions tuning on Contact page ---- */
[id^="shopify-section-"][id*="__bp_contact_faq"] .accordions-section { padding:64px 32px 72px; }
[id^="shopify-section-"][id*="__bp_contact_faq"] .section__header {
  max-width:1080px; margin:0 auto 24px;
  text-align:left;
}
/* FAQ H2: same Poppins-base + em-italic pattern as section H2s */
[id^="shopify-section-"][id*="__bp_contact_faq"] .section__header h2 {
  font-family: 'Poppins', system-ui, sans-serif !important;
  font-weight:500 !important;
  font-style:normal !important;
  font-size: clamp(26px, 3vw, 38px) !important;
  line-height:1.18;
  letter-spacing:-0.015em;
  color:#0b0b0b;
  margin:0;
}
[id^="shopify-section-"][id*="__bp_contact_faq"] .section__header h2 em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important;
  font-weight: 400 !important;
}

/* ---- Final-CTA dark band ---- */
.bp-contactpg-finalcta {
  padding:96px 32px;
  background:#0b0b0b; color:#fff;
  text-align:center;
}
.bp-contactpg-finalcta__inner { max-width:920px; margin:0 auto; }
.bp-contactpg-finalcta h2 {
  font-family: 'Poppins', system-ui, sans-serif;
  font-size: clamp(28px, 3.6vw, 44px);
  font-weight:500; font-style:normal;
  line-height:1.15;
  letter-spacing:-0.015em;
  margin:0 auto 20px;
  color:#fff;
  overflow-wrap: anywhere;
}
.bp-contactpg-finalcta h2 em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
  color:#fff;
}
.bp-contactpg-finalcta p {
  font-size:16px; line-height:1.65;
  color:rgba(255,255,255,0.7);
  max-width:620px; margin:0 auto 30px;
}
.bp-contactpg-finalcta__actions {
  display:flex; gap:14px; justify-content:center; align-items:center; flex-wrap:wrap;
}
.bp-contactpg-finalcta__micro {
  margin-top:24px;
  font-size:11px; color:rgba(255,255,255,0.45);
  letter-spacing:0.18em; text-transform:uppercase;
}

/* ---- Responsive ---- */

/* NAP needs a wider breakpoint than the rest of the page. The 2-col
   layout (180px label + value column + auto pill, with a stretched
   landscape brand image on the right) only fits cleanly above
   ~1200px. Below that, the value column squeezes
   "enterprise@businessportraits.ca" to overflow and the image stripe
   stretches tall + narrow. Stacking at 1200px keeps the table at
   full width and gives the landscape photo a proper aspect. */
@media (max-width: 1200px) {
  .bp-contactpg-nap__grid { grid-template-columns: 1fr; gap:40px; align-items:start; }
  .bp-contactpg-nap__brand { min-height:480px; }
}

@media (max-width: 1024px) {
  .bp-contactpg-hero__inner { grid-template-columns: 1fr; gap:40px; }
  .bp-contactpg-tracks__head { grid-template-columns: 1fr; gap:24px; }
  .bp-contactpg-map__head { grid-template-columns: 1fr; gap:32px; }
  .bp-contactpg-tracks__grid { grid-template-columns: 1fr; gap:16px; }
}

@media (max-width: 720px) {
  .bp-contactpg-hero { padding:48px 20px 48px; }
  .bp-contactpg-thesis { padding:56px 20px; }
  .bp-contactpg-tracks,
  .bp-contactpg-nap,
  .bp-contactpg-map,
  .bp-contactpg-form { padding:64px 20px; }
  .bp-contactpg-form__panel { padding:28px 22px 24px; }
  .bp-contactpg-form__row--inline { grid-template-columns: 1fr; gap:0; }
  .bp-contactpg-form__row--inline > * { margin-bottom:20px; }
  /* Mobile: hide the inbox pill (the ENTERPRISE@ / EVENTS@ / INFO@
     visual hint) so the .body text gets the full row width. With the
     pill present, "Enterprise & Teams" was wrapping word-by-word
     into 3 lines and the sub-description was breaking awkwardly.
     The track value still submits with the form. */
  .bp-contactpg-form__radios label { gap:14px; }
  .bp-contactpg-form__radios .inbox { display:none; }
  .bp-contactpg-form__radios .name { white-space:nowrap; }
  .bp-contactpg-form__foot { flex-direction:column; align-items:stretch; gap:14px; }
  .bp-contactpg-form__submit { width:100%; justify-content:center; }
  /* Mobile NAP row: label + pill on top row (pill top-right next to label),
     value spans full width on the row below. */
  .bp-contactpg-nap__row {
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    column-gap: 12px;
    row-gap: 6px;
    padding: 18px 20px;
  }
  .bp-contactpg-nap__row .bp-contactpg-nap__k { grid-column: 1; grid-row: 1; }
  .bp-contactpg-nap__row .bp-contactpg-nap__pill,
  .bp-contactpg-nap__row .bp-contactpg-pulse {
    grid-column: 2; grid-row: 1; justify-self: end; align-self: center;
  }
  .bp-contactpg-nap__row .bp-contactpg-nap__v { grid-column: 1 / -1; grid-row: 2; }
  .bp-contactpg-nap__brand { min-height:360px; }
  .bp-contactpg-finalcta { padding:72px 20px; }
  .bp-contactpg-map__meta-row { grid-template-columns:1fr; gap:4px; }
  .bp-contactpg-tier__head { flex-wrap:wrap; }
}

@media (max-width: 480px) {
  /* Hero live-card: mobile-only tightening so the value column has
     room to fit the longest email ("info@businessportraits.ca",
     ~207px at 14.5px Inter) on a single line without wrapping.
     Desktop keeps its original spacious 90px / 14px-gap layout
     and 28px padding — both look better there per operator
     feedback. The three changes here:
       1. Card horizontal padding 28px → 18px (+20px row width)
       2. Row key column 90px → 60px (+30px value width)
       3. Row gap 14px → 10px (+4px value width)
     Net: +54px of width for the value column on phones, which is
     enough to fit the email plus a small safety margin. */
  .bp-contactpg-livecard {
    padding: 24px 18px 20px;
  }
  .bp-contactpg-livecard__row {
    grid-template-columns: 60px 1fr;
    gap: 10px;
  }
}

@media (max-width: 720px) {
  /* Auto-scaling Playfair-italic email size that fits the longest
     address ("enterprise@businessportraits.ca", 31 chars) on a single
     line at every common phone width:
        320px iPhone SE   →  ~13px
        360px Galaxy S    →  ~14px
        412px Pixel       →  ~16px   (vs prior fixed 15px — "a bit larger")
        480px (cutoff)    →  ~18px   (matches the prior @720 size)
        720px tablet      →  22px    (clamp ceiling)
     The card content area at each width is just wide enough to fit
     the email at the scaled size without overflowing.

     Replaces the previous two-stage media-query approach (@720: 18px,
     @480: 15px). The hard step at 480px left a no-man's-land where
     `overflow-wrap: break-word` produced mid-word breaks like
     "businessportr / aits.ca" on devices that fell just below the
     content-width threshold at the chosen size. clamp() removes the
     step; removing break-word prevents mid-word splits as a safety
     net even if a future device pushes past the floor (failure mode
     becomes a single-line horizontal overflow instead of a broken
     address, which the operator prefers). */
  .bp-contactpg-track__email-addr {
    font-size: clamp(13px, calc(2.7vw + 11px), 22px);
    line-height: 1.2;
    letter-spacing: -0.025em;
    overflow-wrap: normal;
    word-break: normal;
  }
}

@media (max-width: 480px) {
  .bp-contactpg-hero__cta .btn { width:100%; justify-content:center; }
  /* (Removed `.bp-contactpg-track__email-addr` override — clamp()
     in the @720 rule above handles all widths smoothly with no
     step-discontinuity.) */
}

/* ============================================================================
   END CONTACT PAGE
   ============================================================================ */


/* ============================================================================
   PRICING PAGE  (page handle: corporate-headshot-pricing-toronto)
   Namespace: bp-pricing-*
   Source design: /Design System/pages/Pricing Page v1.html  (translated)
   Plus 3 dev-handoffs in /Website Optimization/pages-in-progress/page-06-pricing/:
     - Statbar Editorial - Dev Handoff.html
     - Group Discount - Dev Handoff.html
     - Comparison Table - Dev Handoff.html
   Build conventions: monochrome greys (no cream, no design-red); section banding
   via #fafafa alternation; rounded corners; pill buttons; Playfair italic accent
   on <em>. Customer-visible copy is em-dash-free and "up to"-free.
   ============================================================================ */

.bp-pricing{
  --bp-pr-ink:#0b0b0b;
  --bp-pr-ink-2:#2a2a2a;
  --bp-pr-mute:#666;
  --bp-pr-mute-2:#999;
  --bp-pr-hair:#e0e0e0;
  --bp-pr-hair-2:#ececec;
  --bp-pr-paper:#ffffff;
  --bp-pr-neutral:#fafafa;
  --bp-pr-neutral-2:#f0f0f0;
  --bp-pr-r-md:18px;
  --bp-pr-r-lg:24px;
  --bp-pr-r-pill:999px;
  color:var(--bp-pr-ink);
}

/* Playfair italic for <em> inside pricing custom-html.
   Operator note: applied per-word so spaces stay in the regular font
   and do not pick up italic spacing metrics. */
.bp-pricing em{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important;
  font-weight: 400 !important;
}

/* Direct-answer paragraph styling — picked up by Speakable cssSelector */
.bp-pricing .bp-pricing-da{
  background:var(--bp-pr-neutral);
  border-radius:14px;
  padding:18px 22px;
  font-size:15px; line-height:1.7;
  color:var(--bp-pr-ink-2);
  margin:0 0 24px;
  border-left:3px solid var(--bp-pr-ink);
}
.bp-pricing .bp-pricing-da strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing .bp-pricing-da--ink{
  background:rgba(255,255,255,0.05);
  border-left-color:#fff;
  color:rgba(255,255,255,0.92);
}
.bp-pricing .bp-pricing-da--ink strong{ color:#fff; }

/* Generic section wrapper (white default) */
.bp-pricing-sect{
  background:#fff;
  padding:80px 60px;
}
.bp-pricing-sect--alt{ background:var(--bp-pr-neutral); }
.bp-pricing-sect__inner{ max-width:1280px; margin:0 auto; }
.bp-pricing-sect__head{
  margin-bottom:36px;
}
.bp-pricing-sect__head--ink h2.bp-pricing-sect__h{ color:#fff; }
.bp-pricing-sect__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:40px; font-weight:400; letter-spacing:-0.018em; line-height:1.08;
  margin:0; max-width:920px; color:var(--bp-pr-ink);
}
.bp-pricing-sect__foot{
  font-size:13.5px; color:var(--bp-pr-mute);
  margin:24px 0 0; line-height:1.65;
}
.bp-pricing-sect__foot a, .bp-pricing-da a, .bp-pricing-indiv__text a, .bp-pricing-subs-detail a, .bp-pricing-math a{
  color:var(--bp-pr-ink); text-decoration:underline;
  text-underline-offset:3px; text-decoration-color:rgba(0,0,0,0.25);
}
.bp-pricing-sect__foot a:hover, .bp-pricing-da a:hover,
.bp-pricing-indiv__text a:hover, .bp-pricing-subs-detail a:hover, .bp-pricing-math a:hover{
  text-decoration-color:var(--bp-pr-ink);
}

/* ---- HERO ---- */
.bp-pricing-hero{
  background:#fff;
  padding:50px 60px 56px;
}
.bp-pricing-hero__inner{ max-width:1280px; margin:0 auto; }
.bp-pricing-hero__grid{
  display:grid; grid-template-columns: 1.35fr 1fr;
  gap:56px; align-items:end;
}
.bp-pricing-hero__title{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:72px; line-height:0.98;
  font-weight:400; letter-spacing:-0.024em;
  margin:0 0 24px; color:var(--bp-pr-ink);
}
.bp-pricing-hero__lede{
  font-size:17px; line-height:1.65;
  color:var(--bp-pr-ink-2);
  max-width:600px; margin:0 0 28px;
  background:transparent; border-left:none; padding:0;
}
.bp-pricing-hero__lede strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing-hero__cta{
  display:flex; gap:12px; flex-wrap:wrap;
  margin-bottom:24px;
}
.bp-pricing-hero__micro{
  font-size:11px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
}

/* Hero ledger card (RHS at-a-glance summary, monochrome) */
.bp-pricing-ledger{
  background:var(--bp-pr-neutral);
  border-radius:var(--bp-pr-r-lg);
  padding:22px 28px 24px;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-ledger__top{
  display:flex; align-items:center; justify-content:space-between;
  padding-bottom:14px; border-bottom:1px solid var(--bp-pr-hair);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:500;
}
.bp-pricing-ledger__top-r{
  color:var(--bp-pr-mute-2); letter-spacing:0.08em;
}
.bp-pricing-ledger__row{
  display:grid; grid-template-columns: 28px 1fr auto;
  gap:14px; align-items:center;
  padding:16px 0;
  border-bottom:1px dashed var(--bp-pr-hair);
}
.bp-pricing-ledger__row:last-child{ border-bottom:none; padding-bottom:4px; }
.bp-pricing-ledger__n{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:14px; color:var(--bp-pr-mute);
  line-height:1;
}
.bp-pricing-ledger__l{ min-width:0; }
.bp-pricing-ledger__l .k{
  display:block;
  font-size:13px; font-weight:600;
  color:var(--bp-pr-ink); line-height:1.2;
}
.bp-pricing-ledger__l .s{
  display:block;
  font-size:11.5px; color:var(--bp-pr-mute);
  margin-top:3px; line-height:1.4;
}
.bp-pricing-ledger__p{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:22px; font-weight:400; letter-spacing:-0.012em;
  color:var(--bp-pr-ink); line-height:1;
  white-space:nowrap;
  text-align:right;
}
.bp-pricing-ledger__p .pre{
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-size:10px; font-weight:500;
  letter-spacing:0.12em; text-transform:uppercase;
  color:var(--bp-pr-mute-2); display:block;
  margin-bottom:4px;
}
.bp-pricing-ledger__p .dec{
  font-size:14px; color:var(--bp-pr-ink-2);
}
.bp-pricing-ledger__p .unit{
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-size:11px; color:var(--bp-pr-mute-2);
  letter-spacing:0.04em; font-weight:500;
}
.bp-pricing-ledger__p--text{
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-size:14px; font-weight:500;
  color:var(--bp-pr-mute);
  letter-spacing:0.02em;
}

/* ---- TRUST STRIP (Statbar Editorial layout) ---- */
.bp-pricing-statbar{
  background:#fff;
  padding:36px 60px;
  border-top:1px solid var(--bp-pr-hair);
  border-bottom:1px solid var(--bp-pr-hair);
}
.bp-pricing-statbar__inner{
  max-width:1440px; margin:0 auto;
  display:grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1.6fr;
  gap:0;
  align-items:center;
}
.bp-pricing-statbar__cell{
  padding:0 32px;
  border-right:1px solid var(--bp-pr-hair);
  min-width:0;
}
.bp-pricing-statbar__cell:first-child{ padding-left:0; }
.bp-pricing-statbar__cell:last-child{ padding-right:0; border-right:none; }
.bp-pricing-statbar__n{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:44px; font-weight:400;
  line-height:0.95; letter-spacing:-0.025em;
  color:var(--bp-pr-ink);
  margin-bottom:8px;
}
.bp-pricing-statbar__n em{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif) !important;
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
}
.bp-pricing-statbar__l{
  font-size:10.5px; font-weight:600;
  letter-spacing:0.18em; text-transform:uppercase;
  color:var(--bp-pr-mute);
  line-height:1.35;
}
.bp-pricing-statbar__cell--caption{
  padding-left:36px;
}
.bp-pricing-statbar__caption-eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-size:10px; font-weight:600;
  letter-spacing:0.22em; text-transform:uppercase;
  color:var(--bp-pr-ink);
  margin-bottom:10px;
}
.bp-pricing-statbar__caption-eyebrow::before{
  content:"";
  width:6px; height:6px; border-radius:999px;
  background:var(--bp-pr-ink);
}
.bp-pricing-statbar__caption-text{
  font-size:13px; line-height:1.5;
  color:var(--bp-pr-ink-2);
}
.bp-pricing-statbar__caption-text strong{
  color:var(--bp-pr-ink); font-weight:600;
}

/* ---- OVERVIEW (numbered structural overview) ---- */
.bp-jumpnav-cards{
  background:#fff;
  padding:48px 32px;            /* was 48px 60px — reduce side padding so the grid runs closer to the edges */
  border-bottom:1px solid var(--bp-pr-hair);
  /* Token scoping fix (operator 2026-05-31): when this shell was scoped
     to .bp-pricing, the --bp-pr-* tokens resolved via that parent. Now
     it's a shared shell, so the same tokens must live on the shell
     itself — otherwise the column hairlines (--bp-pr-hair-2) render in
     the inherited currentColor (dark text colour) instead of the light
     grey, which read as "no dividers" on every non-Pricing page. */
  --bp-pr-ink:#0b0b0b;
  --bp-pr-mute:#666;
  --bp-pr-hair:#e0e0e0;
  --bp-pr-hair-2:#ececec;
  --bp-pr-neutral:#fafafa;
}
.bp-jumpnav-cards__inner{
  max-width:1600px; margin:0 auto;  /* was 1280px — operator 2026-05-31: span the whole page so 6 cards fit in one row */
}
.bp-jumpnav-cards__grid{
  display:grid;
  /* auto-fit minmax(180px,1fr) lets the grid:
       - fit 6 cards in one row on wide desktops (Homepage/About/Exec/MS/LI)
       - fit 4 cards expanded for Pricing (no empty tracks — auto-fit collapses them)
       - wrap FAQ's 9 cards to multiple rows
     Replaces the old fixed repeat(4,1fr). */
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  border-top:1px solid var(--bp-pr-hair);
}
/* FAQ has 9 cards and wraps — centre the wrapped last row so the partial
   row doesn't sit flush-left (operator 2026-05-31). Use flex layout for
   this variant since CSS Grid can't centre a partial last row with 1fr
   tracks. Trade-off: the per-item border-right separator pattern no
   longer applies cleanly on row breaks, so the variant uses no separators
   and relies on the card padding for visual rhythm. */
.bp-jumpnav-cards--center .bp-jumpnav-cards__grid{
  display:flex; flex-wrap:wrap; justify-content:center;
}
/* Operator 2026-06-01 (try 2): pack all 9 onto a single row. Trim the
   wrapper's side padding from 32px to 12px and tighten each card's
   internal horizontal padding from 28px to 12px so the 9 cards have
   the most possible content area. */
.bp-jumpnav-cards--center{
  padding-left:12px;
  padding-right:12px;
  /* Full-bleed break-out (operator 2026-06-01): on the FAQ page this
     nav sits inside .bp-faq-hero__inner which caps content at 1080px,
     so 9 cards were getting ~93px of content area each. The negative
     side-margin trick pulls the nav out to full viewport width even
     though its parent column is narrow. At a 1440 viewport this
     widens each card's content area from ~93px to ~133px. */
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  width: 100vw;
}
.bp-jumpnav-cards--center .bp-jumpnav-cards__item{
  /* 100%/9 ≈ 11.11% — pins the row to exactly 9 cards across at every
     viewport ≥ tablet width. flex-grow:0 / shrink:0 so they don't
     re-wrap mid-row at odd sizes. */
  flex: 0 0 calc(100% / 9);
  max-width:none;
  /* Restore the column divider that the original .bp-jumpnav-cards__item
     rule provides. Operator 2026-06-01: dividers were dropped when the
     --center variant could wrap (border-right looked broken on
     mid-row breaks). Now that the variant is locked to 9-on-one-row,
     the per-item right hairline is clean again. */
  border-right:1px solid var(--bp-pr-hair-2);
  padding-right:12px;
}
/* Last card in the row has no divider on the trailing side. */
.bp-jumpnav-cards--center .bp-jumpnav-cards__item:last-child{
  border-right:none;
}
/* Lighter inter-card gutter than the 5+4 layout used. */
.bp-jumpnav-cards--center .bp-jumpnav-cards__item + .bp-jumpnav-cards__item{
  padding-left:12px;
}
/* Mobile (≤760px): the parent --center grid is flex (not grid), so the
   global mobile `.bp-jumpnav-cards__grid { grid-template-columns:1fr }`
   rule doesn't apply. Stack manually for narrow viewports. */
@media (max-width:760px){
  .bp-jumpnav-cards--center{
    padding-left:32px;
    padding-right:32px;
  }
  .bp-jumpnav-cards--center .bp-jumpnav-cards__item{
    flex-basis:100%;
    padding:18px 0;
    border-bottom:1px solid var(--bp-pr-hair-2);
  }
  .bp-jumpnav-cards--center .bp-jumpnav-cards__item + .bp-jumpnav-cards__item{
    padding-left:0;
  }
  .bp-jumpnav-cards--center .bp-jumpnav-cards__item:last-child{
    border-bottom:none;
  }
}
.bp-jumpnav-cards__item{
  padding:24px 28px 22px 0;
  border-right:1px solid var(--bp-pr-hair-2);
  /* Vertical flex so the .jump link can be pushed to the bottom of
     every card (operator 2026-06-01: align jump links across the row,
     the way they sit in the preferred layout). The grid already
     stretches all items in a row to the height of the tallest, so
     this gives every "Jump to section →" the same baseline. */
  display:flex; flex-direction:column;
}
/* Breathing room: items 2-4 get left padding so the divider line from
   the previous item's border-right isn't kissing the number/title text.
   Operator-reported 2026-05-22: lines were sitting right against text. */
.bp-jumpnav-cards__item + .bp-jumpnav-cards__item{ padding-left:28px; }
.bp-jumpnav-cards__item:last-child{ border-right:none; padding-right:0; }
.bp-jumpnav-cards__item .n{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:14px; color:var(--bp-pr-mute);
  margin-bottom:10px;
}
.bp-jumpnav-cards__item .t{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:20px; line-height:1.22; font-weight:400;
  letter-spacing:-0.012em;
  margin-bottom:12px;
  color:var(--bp-pr-ink);
}
/* <em> inside the card title must render in Playfair italic, not
   browser-default-italic-Poppins. The site's FONT-STACK-HEADING resolves
   to Poppins, so without an explicit override the em inherits Poppins
   and the operator sees plain italic instead of the alt font
   (operator 2026-05-31). Same pattern used on the team-headshots H2
   overrides earlier in this file. */
.bp-jumpnav-cards__item .t em{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important;
  font-weight: 400 !important;
}
.bp-jumpnav-cards__item .jump{
  font-size:11.5px; letter-spacing:0.04em;
  color:var(--bp-pr-ink); text-decoration:none; font-weight:500;
  display:inline-flex; align-items:center; gap:6px;
  transition: gap 160ms ease;
  margin-top:auto;   /* push to the bottom of the card (operator 2026-06-01) */
  align-self:flex-start;  /* keep the jump link narrow, not stretched */
}
.bp-jumpnav-cards__item .jump:hover{ gap:10px; color:var(--bp-pr-mute); }

/* ---- SECTION 1 (Individual) ---- */
.bp-pricing-indiv__body{
  display:grid; grid-template-columns: 1.05fr 1fr;
  gap:56px; align-items:start;
  margin-top:32px;
}
/* Left column wraps the price-anchor card + the direct-answer paragraph
   below it. Stacks naturally; the DA paragraph carries its own padding
   and a left border, so it reads as a second card below the price block. */
.bp-pricing-indiv__left{
  display:flex; flex-direction:column;
  gap:20px;
}
.bp-pricing-indiv__left .bp-pricing-da{
  margin:0;
}
.bp-pricing-price-anchor{
  background:var(--bp-pr-neutral);
  border-radius:var(--bp-pr-r-lg);
  padding:44px 40px;
}
.bp-pricing-price-anchor__from{
  font-size:11px; letter-spacing:0.2em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
  margin-bottom:14px;
}
/* Large price number — alt font (Playfair italic) per operator 5.4 */
.bp-pricing-price-anchor__number{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style: italic;
  font-size:104px; line-height:0.9; font-weight:400;
  letter-spacing:-0.04em;
  margin:0 0 18px;
  color:var(--bp-pr-ink);
  display:flex; align-items:flex-start;
}
.bp-pricing-price-anchor__number .currency{
  font-style:italic;
  font-size:42px; color:var(--bp-pr-mute);
  margin-right:6px; margin-top:14px;
}
.bp-pricing-price-anchor__number .dec{
  font-size:48px; color:var(--bp-pr-ink-2);
  align-self:flex-end; margin-bottom:12px;
}
.bp-pricing-price-anchor__unit{
  font-size:13px; color:var(--bp-pr-ink-2);
  line-height:1.55; margin:0 0 22px;
  max-width:380px;
}
.bp-pricing-price-anchor__divider{
  border-top:1px solid var(--bp-pr-hair); margin:6px 0 22px;
}
.bp-pricing-price-anchor__inc-h{
  font-size:10.5px; letter-spacing:0.2em; text-transform:uppercase;
  color:var(--bp-pr-ink); font-weight:600;
  margin-bottom:14px;
}
.bp-pricing-price-anchor__list{
  list-style:none; padding:0; margin:0;
  display:flex; flex-direction:column; gap:10px;
}
.bp-pricing-price-anchor__list li{
  position:relative; padding-left:24px;
  font-size:13.5px; color:var(--bp-pr-ink-2); line-height:1.5;
}
.bp-pricing-price-anchor__list li::before{
  content:"\2713";
  position:absolute; left:0; top:0;
  color:var(--bp-pr-ink); font-weight:600;
  font-size:13px; line-height:1.5;
}
.bp-pricing-price-anchor__list strong{ color:var(--bp-pr-ink); font-weight:600; }

.bp-pricing-indiv__text h3{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:23px; font-weight:400; letter-spacing:-0.012em; line-height:1.22;
  margin:32px 0 12px;
}
.bp-pricing-indiv__text h3:first-child{ margin-top:0; }
.bp-pricing-indiv__text p{
  font-size:14.5px; line-height:1.75; color:var(--bp-pr-ink-2);
  margin:0 0 16px;
}
.bp-pricing-indiv__text p strong{ color:var(--bp-pr-ink); font-weight:600; }

/* ---- SECTION 2 (Team day) ---- */

/* Group Discount — outlined-bars-on-paper banner (replaces the earlier
   dark dataviz variant). Drop-in design per /Design System/blog/
   Group Discount - Outlined Bars _handoff_.html, translated to the
   site's monochrome palette (no red-soft wash, no red border). Keeps
   all 10 bracket layers, not the dev-handoff's 5.

   Animation: each bar grows from height 0 to its --h value when the
   gdisc enters the viewport (IntersectionObserver in the section's
   inline script). The percentage label fades in after its bar
   finishes drawing. Respects prefers-reduced-motion. */
.bp-pricing-gdisc{
  background: var(--bp-pr-paper);
  color: var(--bp-pr-ink);
  border:1px solid var(--bp-pr-hair);
  border-radius:var(--bp-pr-r-lg);
  padding:40px 44px 32px;
  position:relative;
  overflow:hidden;
  margin:24px 0;
}
.bp-pricing-gdisc__top{
  display:flex; align-items:baseline; justify-content:space-between;
  margin-bottom:28px;
  gap:24px; flex-wrap:wrap;
}
.bp-pricing-gdisc__eyebrow{
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10px; font-weight:600;
  letter-spacing:0.22em; text-transform:uppercase;
  color:var(--bp-pr-ink);
  display:inline-flex; align-items:center; gap:10px;
}
.bp-pricing-gdisc__eyebrow::before{
  content:""; width:28px; height:1px;
  background:var(--bp-pr-ink);
}
.bp-pricing-gdisc__meta{
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--bp-pr-mute);
}
.bp-pricing-gdisc__meta em{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif) !important;
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
  font-size:13px;
  text-transform:none; letter-spacing:0;
}
.bp-pricing-gdisc__main{
  display:grid; grid-template-columns: 0.95fr 1.7fr;
  gap:48px; align-items:center;
}
.bp-pricing-gdisc__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:34px; font-weight:400;
  line-height:1.1; letter-spacing:-0.018em;
  color:var(--bp-pr-ink);
  margin:0 0 14px;
  text-wrap:balance;
}
.bp-pricing-gdisc__h em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
}
.bp-pricing-gdisc__body{
  font-size:13.5px; line-height:1.7;
  color:var(--bp-pr-ink-2);
  margin:0; max-width:360px;
}
.bp-pricing-gdisc__body strong{ color:var(--bp-pr-ink); font-weight:600; }

/* Outlined-bars chart. 10 bars, equal-step 10% rank staircase. */
.bp-pricing-gdisc__bars{
  display:grid; grid-template-columns: repeat(10, 1fr);
  gap:6px; align-items:end;
  height:240px;
  margin-bottom:34px;
  position:relative;
}
/* Baseline rule sitting under all 10 bars. */
.bp-pricing-gdisc__bars::after{
  content:"";
  position:absolute; left:0; right:0; bottom:-1px;
  height:1px; background:var(--bp-pr-hair);
}
.bp-pricing-gdisc__bar{
  position:relative;
  height:100%;
  display:flex; flex-direction:column; justify-content:flex-end;
}
.bp-pricing-gdisc__bar-fill{
  width:100%;
  background:transparent;
  border:1.5px solid var(--bp-pr-ink);
  border-bottom:none;
  border-radius:6px 6px 0 0;
  /* Default state — bars start collapsed at 0 height, ready to animate. */
  height:0;
  transition: height 1100ms cubic-bezier(0.7, 0, 0.2, 1);
}
.bp-pricing-gdisc.is-played .bp-pricing-gdisc__bar-fill{
  /* --h carries each bar's target height (set inline per bar). */
  height:var(--h, 30%);
}
/* Staggered fill start per bar — 70ms cascade, with an extra emphasis
   pause before the accent bar (bar 10). */
.bp-pricing-gdisc__bar:nth-child(1) .bp-pricing-gdisc__bar-fill{ transition-delay:0ms; }
.bp-pricing-gdisc__bar:nth-child(2) .bp-pricing-gdisc__bar-fill{ transition-delay:70ms; }
.bp-pricing-gdisc__bar:nth-child(3) .bp-pricing-gdisc__bar-fill{ transition-delay:140ms; }
.bp-pricing-gdisc__bar:nth-child(4) .bp-pricing-gdisc__bar-fill{ transition-delay:210ms; }
.bp-pricing-gdisc__bar:nth-child(5) .bp-pricing-gdisc__bar-fill{ transition-delay:280ms; }
.bp-pricing-gdisc__bar:nth-child(6) .bp-pricing-gdisc__bar-fill{ transition-delay:350ms; }
.bp-pricing-gdisc__bar:nth-child(7) .bp-pricing-gdisc__bar-fill{ transition-delay:420ms; }
.bp-pricing-gdisc__bar:nth-child(8) .bp-pricing-gdisc__bar-fill{ transition-delay:490ms; }
.bp-pricing-gdisc__bar:nth-child(9) .bp-pricing-gdisc__bar-fill{ transition-delay:560ms; }
.bp-pricing-gdisc__bar:nth-child(10) .bp-pricing-gdisc__bar-fill{ transition-delay:750ms; }

/* Accent bar (80+ / 65% bracket): thicker outline + soft grey wash, the
   monochrome equivalent of the dev-handoff's red treatment. */
.bp-pricing-gdisc__bar--accent .bp-pricing-gdisc__bar-fill{
  background: var(--bp-pr-neutral);
  border-width:2px;
}

.bp-pricing-gdisc__bar-pct{
  position:absolute; left:0; right:0; top:-26px;
  text-align:center;
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:14px; font-weight:400;
  letter-spacing:-0.012em;
  color:var(--bp-pr-ink);
  /* Default — labels hidden until the bars finish drawing. */
  opacity:0; transform:translateY(6px);
  transition: opacity 320ms ease, transform 320ms ease;
}
.bp-pricing-gdisc.is-played .bp-pricing-gdisc__bar-pct{
  opacity:1; transform:translateY(0);
}
.bp-pricing-gdisc__bar-pct em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
}
/* Pct labels fade in 500ms after their bar's fill starts. */
.bp-pricing-gdisc__bar:nth-child(1) .bp-pricing-gdisc__bar-pct{ transition-delay:500ms; }
.bp-pricing-gdisc__bar:nth-child(2) .bp-pricing-gdisc__bar-pct{ transition-delay:570ms; }
.bp-pricing-gdisc__bar:nth-child(3) .bp-pricing-gdisc__bar-pct{ transition-delay:640ms; }
.bp-pricing-gdisc__bar:nth-child(4) .bp-pricing-gdisc__bar-pct{ transition-delay:710ms; }
.bp-pricing-gdisc__bar:nth-child(5) .bp-pricing-gdisc__bar-pct{ transition-delay:780ms; }
.bp-pricing-gdisc__bar:nth-child(6) .bp-pricing-gdisc__bar-pct{ transition-delay:850ms; }
.bp-pricing-gdisc__bar:nth-child(7) .bp-pricing-gdisc__bar-pct{ transition-delay:920ms; }
.bp-pricing-gdisc__bar:nth-child(8) .bp-pricing-gdisc__bar-pct{ transition-delay:990ms; }
.bp-pricing-gdisc__bar:nth-child(9) .bp-pricing-gdisc__bar-pct{ transition-delay:1060ms; }
.bp-pricing-gdisc__bar:nth-child(10) .bp-pricing-gdisc__bar-pct{
  transition-delay:1250ms;
  font-size:16px; font-weight:500;
}

.bp-pricing-gdisc__bar-people{
  /* Positioned absolutely BELOW the bar so the bar-fill can use the full
     240px of the chart container without being squeezed by the label
     inside the flex flow (the bug that made 90% and 100% bars look
     identical before commit 1cbd290). */
  position:absolute;
  bottom:-22px;
  left:0; right:0;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:9px; font-weight:500;
  letter-spacing:0.04em;
  color:var(--bp-pr-ink-2);
  text-align:center;
  white-space:nowrap;
}
.bp-pricing-gdisc__bar--accent .bp-pricing-gdisc__bar-people{
  color:var(--bp-pr-ink); font-weight:600;
}

.bp-pricing-gdisc__foot{
  margin-top:24px; padding-top:18px;
  border-top:1px solid var(--bp-pr-hair);
  display:flex; align-items:center; gap:32px;
  flex-wrap:wrap;
  font-size:11.5px; color:var(--bp-pr-mute);
}
.bp-pricing-gdisc__foot strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing-gdisc__foot-item{
  display:inline-flex; align-items:center; gap:8px;
}
.bp-pricing-gdisc__foot-item::before{
  content:""; width:6px; height:6px;
  border-radius:999px;
  background:var(--bp-pr-ink);
}

/* Reduced motion — render the chart fully drawn, no transitions.
   Same behaviour as the dev-handoff. */
@media (prefers-reduced-motion: reduce){
  .bp-pricing-gdisc__bar-fill,
  .bp-pricing-gdisc__bar-pct{ transition:none !important; }
  .bp-pricing-gdisc .bp-pricing-gdisc__bar-fill{ height:var(--h, 30%); }
  .bp-pricing-gdisc .bp-pricing-gdisc__bar-pct{ opacity:1; transform:none; }
}

/* Group-discount table (operator's real 10-bracket table, replaces the
   designer's invented 5-bar histogram). Two-column compound layout: 5 rows
   each showing two bracket entries side by side. */
.bp-pricing-disctable{
  background:#fff;
  border:1px solid var(--bp-pr-hair);
  border-radius:var(--bp-pr-r-md);
  padding:28px 32px 22px;
  margin:24px 0;
}
.bp-pricing-disctable__top{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:24px; flex-wrap:wrap;
  padding-bottom:16px;
  border-bottom:1px solid var(--bp-pr-hair);
  margin-bottom:8px;
}
.bp-pricing-disctable__eyebrow{
  font-size:10.5px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--bp-pr-ink); font-weight:600;
}
.bp-pricing-disctable__meta{
  font-size:12px; color:var(--bp-pr-mute);
}
.bp-pricing-disctable__grid{
  display:grid; grid-template-columns: 1fr 1fr;
  column-gap:48px;
}
.bp-pricing-disctable__row{
  display:grid; grid-template-columns: 1fr auto;
  gap:14px; align-items:baseline;
  padding:11px 0;
  border-bottom:1px dashed var(--bp-pr-hair);
}
.bp-pricing-disctable__row:nth-last-child(-n+2){ border-bottom:none; }
.bp-pricing-disctable__row--accent .bp-pricing-disctable__pct em{
  color:var(--bp-pr-ink) !important;
  font-weight:600;
}
.bp-pricing-disctable__people{
  font-size:13px; color:var(--bp-pr-ink-2);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing:0.02em;
}
.bp-pricing-disctable__pct{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:22px; font-weight:400; letter-spacing:-0.012em;
  color:var(--bp-pr-ink); line-height:1;
  text-align:right;
}
.bp-pricing-disctable__pct em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
}
.bp-pricing-disctable__foot{
  font-size:12px; color:var(--bp-pr-mute);
  line-height:1.55;
  margin-top:14px; padding-top:14px;
  border-top:1px solid var(--bp-pr-hair);
}

/* Express format callout — placed below the worked-math cards.
   Operator-supplied entry rate ($52.48/person, 50-person minimum). */
.bp-pricing-express{
  background:var(--bp-pr-ink);
  color:#fff;
  border-radius:var(--bp-pr-r-lg);
  padding:32px 36px;
  margin-top:24px;
  display:grid; grid-template-columns: 1.4fr 1fr;
  gap:32px; align-items:center;
}
.bp-pricing-express__head{ min-width:0; }
.bp-pricing-express__eyebrow{
  display:block;
  font-size:10.5px; letter-spacing:0.22em; text-transform:uppercase;
  color:rgba(255,255,255,0.7); font-weight:600;
  margin-bottom:10px;
}
.bp-pricing-express__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:28px; font-weight:400; letter-spacing:-0.016em; line-height:1.15;
  color:#fff;
  margin:0;
}
.bp-pricing-express__h em{
  font-style:italic !important;
  color:#fff !important;
}
.bp-pricing-express__body{
  font-size:13.5px; line-height:1.65;
  color:rgba(255,255,255,0.78);
  margin:0; grid-column: 1 / 2;
}
.bp-pricing-express__cta{
  justify-self:end;
}
.bp-pricing-express .btn--solid.btn--black{
  background:#ffffff !important;
  color:var(--bp-pr-ink) !important;
  border:1px solid #ffffff !important;
}
.bp-pricing-express .btn--solid.btn--black:hover{
  background:transparent !important;
  color:#ffffff !important;
  border-color:#ffffff !important;
}

/* Math cards (worked examples visual) */
.bp-pricing-math-grid{
  display:grid; grid-template-columns: 1fr 1fr;
  gap:18px;
}
.bp-pricing-math{
  background:#fff;
  border-radius:var(--bp-pr-r-md);
  padding:28px 32px;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-math__hdr{
  padding-bottom:14px;
  border-bottom:1px solid var(--bp-pr-hair);
  margin-bottom:14px;
}
.bp-pricing-math__chip{
  font-size:10.5px; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
}
.bp-pricing-math__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:22px; font-weight:400; letter-spacing:-0.012em;
  line-height:1.2; margin:0 0 14px;
  color:var(--bp-pr-ink);
}
.bp-pricing-math__rows{
  display:flex; flex-direction:column;
}
.bp-pricing-math__row{
  display:grid; grid-template-columns: 1fr auto;
  gap:14px; align-items:baseline;
  padding:11px 0;
  border-bottom:1px dashed var(--bp-pr-hair);
}
.bp-pricing-math__row:last-of-type{ border-bottom:none; }
.bp-pricing-math__row--total{
  border-bottom:none !important;
  margin-top:10px; padding-top:18px;
  border-top:1px solid var(--bp-pr-ink) !important;
}
.bp-pricing-math__rk{
  font-size:13px; color:var(--bp-pr-ink-2);
  line-height:1.4;
}
.bp-pricing-math__rk small{
  display:block; color:var(--bp-pr-mute-2);
  font-size:11px; margin-top:2px;
}
.bp-pricing-math__rv{
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:14px; font-weight:500;
  color:var(--bp-pr-ink); letter-spacing:-0.005em;
  white-space:nowrap;
}
.bp-pricing-math__rv--minus{ color:var(--bp-pr-mute); }
.bp-pricing-math__row--total .bp-pricing-math__rk{
  font-size:13.5px; font-weight:600; color:var(--bp-pr-ink);
}
.bp-pricing-math__row--total .bp-pricing-math__rv{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:26px; font-weight:400; letter-spacing:-0.015em;
}
.bp-pricing-math__foot{
  font-size:11.5px; color:var(--bp-pr-mute);
  margin-top:16px; line-height:1.55;
  padding-top:14px; border-top:1px solid var(--bp-pr-hair-2);
}

/* Writer prose paragraphs below the math cards (operator 6.4 — keep both) */
.bp-pricing-math-prose{
  margin-top:24px;
  max-width:920px;
}
.bp-pricing-math-prose p{
  font-size:14.5px; line-height:1.75;
  color:var(--bp-pr-ink-2);
  margin:0 0 16px;
}
.bp-pricing-math-prose p:last-child{ margin-bottom:0; }
.bp-pricing-math-prose p strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing-math-prose a{
  color:var(--bp-pr-ink); text-decoration:underline;
  text-underline-offset:3px; text-decoration-color:rgba(0,0,0,0.25);
}

.bp-pricing-includes{
  background:#fff;
  border-radius:var(--bp-pr-r-md);
  padding:24px 32px;
  margin-top:24px;
  margin-bottom:32px;  /* breathe room before the two worked-example cards (operator 2026-05-30) */
  display:grid; grid-template-columns: 240px 1fr;
  gap:32px; align-items:center;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-includes__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:21px; font-weight:400; letter-spacing:-0.01em; line-height:1.25;
  margin:0; color:var(--bp-pr-ink);
}
.bp-pricing-includes__list{
  list-style:none; padding:0; margin:0;
  display:grid; grid-template-columns: repeat(2, 1fr);
  gap:10px 32px;
}
.bp-pricing-includes__list li{
  position:relative; padding-left:18px;
  font-size:12.5px; color:var(--bp-pr-ink-2); line-height:1.5;
}
.bp-pricing-includes__list li::before{
  content:""; position:absolute; left:0; top:8px;
  width:6px; height:6px; border-radius:999px;
  background:var(--bp-pr-ink);
}

/* ---- SECTION 3 (Subscription tiers + mechanic) ---- */
.bp-pricing-tiers{
  display:grid; grid-template-columns: repeat(3, 1fr); gap:16px;
  align-items:stretch;
  margin-top:8px;
  padding-top:18px; /* room for the Most Popular pill on the featured tier */
}
.bp-pricing-tier{
  background:var(--bp-pr-neutral);
  border-radius:var(--bp-pr-r-lg);
  padding:32px 32px 28px;
  display:flex; flex-direction:column;
  border:1px solid var(--bp-pr-hair);
  position:relative;
}
.bp-pricing-tier--featured{
  background:var(--bp-pr-ink); color:#fff;
  border-color:var(--bp-pr-ink);
}
/* "Most Popular" pill on the featured (Growth) tier — matches enterprise page convention */
.bp-pricing-tier--featured::before{
  content:'Most Popular';
  position:absolute;
  top:-12px;
  left:50%;
  transform:translateX(-50%);
  background:var(--bp-pr-ink);
  color:#fff;
  padding:5px 18px;
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-size:11px;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:0.1em;
  border-radius:var(--bp-pr-r-pill);
  border:1px solid var(--bp-pr-ink);
  /* Pill sits on top of a dark tier card (ink on ink). A 2 px solid white
     drop-shadow gives the pill a hairline base so it reads as a separate
     layer floating above the card edge. */
  box-shadow:0 2px 0 #fff;
  white-space:nowrap;
  z-index:1;
}
.bp-pricing-tier--featured .bp-pricing-tier__name,
.bp-pricing-tier--featured .bp-pricing-tier__price,
.bp-pricing-tier--featured .bp-pricing-tier__credit .v,
.bp-pricing-tier--featured .bp-pricing-tier__perks li{ color:#fff; }
.bp-pricing-tier__hdr{
  display:flex; align-items:baseline; justify-content:space-between;
  margin-bottom:12px;
}
.bp-pricing-tier__name{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:30px; font-weight:400; letter-spacing:-0.016em;
  color:var(--bp-pr-ink);
}
.bp-pricing-tier__num{
  font-size:11px; color:var(--bp-pr-mute);
  letter-spacing:0.06em;
}
.bp-pricing-tier--featured .bp-pricing-tier__num{ color:rgba(255,255,255,0.4); }
.bp-pricing-tier__buyer{
  font-size:13px; color:var(--bp-pr-mute); line-height:1.55;
  margin:0 0 20px;
  min-height:56px;
}
.bp-pricing-tier--featured .bp-pricing-tier__buyer{ color:rgba(255,255,255,0.7); }
.bp-pricing-tier__price-block{
  padding:18px 0;
  border-top:1px solid var(--bp-pr-hair);
  border-bottom:1px solid var(--bp-pr-hair);
  margin-bottom:20px;
}
.bp-pricing-tier--featured .bp-pricing-tier__price-block{
  border-top-color:rgba(255,255,255,0.14);
  border-bottom-color:rgba(255,255,255,0.14);
}
.bp-pricing-tier__price-label{
  font-size:10px; letter-spacing:0.2em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
  margin-bottom:6px;
}
.bp-pricing-tier--featured .bp-pricing-tier__price-label{ color:rgba(255,255,255,0.45); }
.bp-pricing-tier__price{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  /* Smaller display per operator — was 48px, the original looked imposing
     next to the $-sign treatment. */
  font-size:34px; font-weight:400; line-height:1; letter-spacing:-0.022em;
  color:var(--bp-pr-ink);
  display:flex; align-items:baseline;
}
.bp-pricing-tier__price .cur{
  /* Straight (not italic) per operator — the italic Playfair $ read childish.
     Same heading font, normal style, slightly smaller than the number. */
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-style:normal;
  font-size:22px; color:var(--bp-pr-mute);
  margin-right:2px;
}
.bp-pricing-tier--featured .bp-pricing-tier__price .cur{ color:rgba(255,255,255,0.5); }
.bp-pricing-tier__price .per{
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-size:13px; font-weight:500; color:var(--bp-pr-mute);
  margin-left:8px; align-self:flex-end; padding-bottom:7px;
  letter-spacing:0;
}
.bp-pricing-tier--featured .bp-pricing-tier__price .per{ color:rgba(255,255,255,0.5); }
.bp-pricing-tier__credit{
  display:flex; align-items:baseline; justify-content:space-between;
  margin-top:14px;
}
.bp-pricing-tier__credit .k{
  font-size:11px; color:var(--bp-pr-mute);
  letter-spacing:0.04em;
}
.bp-pricing-tier--featured .bp-pricing-tier__credit .k{ color:rgba(255,255,255,0.55); }
.bp-pricing-tier__credit .v{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:22px; color:var(--bp-pr-ink);
  letter-spacing:-0.012em;
}
.bp-pricing-tier__credit .v .total{
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-style:normal; font-size:11px;
  color:var(--bp-pr-mute); margin-left:6px; font-weight:500;
}
.bp-pricing-tier--featured .bp-pricing-tier__credit .v .total{ color:rgba(255,255,255,0.5); }
.bp-pricing-tier__qtr{
  font-size:11px; color:var(--bp-pr-mute-2);
  margin-top:4px; line-height:1.4;
}
.bp-pricing-tier--featured .bp-pricing-tier__qtr{ color:rgba(255,255,255,0.45); }
.bp-pricing-tier__perks-h{
  font-size:10.5px; letter-spacing:0.2em; text-transform:uppercase;
  color:var(--bp-pr-ink); font-weight:600;
  margin-bottom:12px;
}
.bp-pricing-tier--featured .bp-pricing-tier__perks-h{ color:#fff; }
.bp-pricing-tier__perks{
  list-style:none; padding:0; margin:0 0 22px;
  display:flex; flex-direction:column; gap:9px;
  flex:1;
}
.bp-pricing-tier__perks li{
  position:relative; padding-left:18px;
  font-size:13px; color:var(--bp-pr-ink-2); line-height:1.5;
}
.bp-pricing-tier__perks li::before{
  content:""; position:absolute; left:0; top:9px;
  width:6px; height:6px; border-radius:999px;
  background:var(--bp-pr-ink);
}
.bp-pricing-tier--featured .bp-pricing-tier__perks li{ color:rgba(255,255,255,0.88); }
.bp-pricing-tier--featured .bp-pricing-tier__perks li::before{ background:#fff; }
.bp-pricing-tier__cta{
  padding-top:18px;
  border-top:1px solid var(--bp-pr-hair);
  margin-top:auto;
}
.bp-pricing-tier--featured .bp-pricing-tier__cta{ border-top-color:rgba(255,255,255,0.14); }
.bp-pricing-tier__cta a{
  font-size:11.5px; letter-spacing:0.04em;
  color:var(--bp-pr-ink); text-decoration:none; font-weight:600;
  display:inline-flex; align-items:center; gap:6px;
  transition: gap 160ms ease;
}
.bp-pricing-tier__cta a:hover{ gap:10px; }
.bp-pricing-tier--featured .bp-pricing-tier__cta a{ color:#fff; }

/* Subs detail TEXT (operator 7.5 — goes ABOVE the mechanic strip design) */
.bp-pricing-subs-detail{
  margin-top:32px;
  max-width:920px;
}
.bp-pricing-subs-detail p{
  font-size:14.5px; line-height:1.75;
  color:var(--bp-pr-ink-2);
  margin:0 0 16px;
}
.bp-pricing-subs-detail p:last-child{ margin-bottom:0; }
.bp-pricing-subs-detail p strong{ color:var(--bp-pr-ink); font-weight:600; }

/* Mechanic strip (deposit/deduct/bonus) — visual aid placed below the subs-detail text */
.bp-pricing-mechanic{
  background:var(--bp-pr-neutral);
  border-radius:var(--bp-pr-r-md);
  padding:28px 36px;
  margin-top:28px;
  display:grid;
  grid-template-columns: 200px 1fr 1fr 1fr;
  gap:32px; align-items:center;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-mechanic__label{
  font-size:11px; letter-spacing:0.2em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
  line-height:1.45;
}
.bp-pricing-mechanic__label strong{
  display:block; color:var(--bp-pr-ink);
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic; font-size:14px;
  letter-spacing:0; text-transform:none;
  font-weight:400; margin-top:6px;
}
.bp-pricing-mech-step{
  border-left:1px solid var(--bp-pr-hair);
  padding-left:24px;
}
.bp-pricing-mech-step .op{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:30px; color:var(--bp-pr-ink);
  line-height:1; margin-bottom:8px;
}
.bp-pricing-mech-step .k{
  font-size:13px; font-weight:600; color:var(--bp-pr-ink);
  margin-bottom:4px;
}
.bp-pricing-mech-step .v{
  font-size:12px; color:var(--bp-pr-mute); line-height:1.5;
}

/* ---- SECTION 4 (Pilot, dark) ---- */
.bp-pricing-pilot{
  background:var(--bp-pr-ink);
  color:#fff;
  padding:80px 60px;
}
.bp-pricing-pilot__inner{ max-width:1280px; margin:0 auto; }
.bp-pricing-pilot__body{
  display:grid; grid-template-columns: 1.05fr 1fr;
  gap:56px; align-items:start;
  margin-top:32px;
}
.bp-pricing-pilot__text p{
  font-size:14.5px; line-height:1.75; color:rgba(255,255,255,0.78);
  margin:0 0 16px;
}
.bp-pricing-pilot__text p strong{ color:#fff; font-weight:600; }
.bp-pricing-pilot__text a{
  color:#fff; text-decoration:underline;
  text-underline-offset:3px; text-decoration-color:rgba(255,255,255,0.4);
}
.bp-pricing-pilot__cta{
  display:flex; gap:12px; flex-wrap:wrap;
  margin-top:24px;
}
/* Operator 8.5 — explicit button styles on dark pilot section so the
   theme's btn-class cascade doesn't render white text on white background. */
.bp-pricing-pilot .btn--solid.btn--white{
  background:#ffffff !important;
  color:var(--bp-pr-ink) !important;
  border:1px solid #ffffff !important;
}
.bp-pricing-pilot .btn--solid.btn--white:hover{
  background:transparent !important;
  color:#ffffff !important;
  border-color:#ffffff !important;
}
.bp-pricing-pilot .btn--outline.btn--white{
  background:transparent !important;
  color:#ffffff !important;
  border:1px solid #ffffff !important;
}
.bp-pricing-pilot .btn--outline.btn--white:hover{
  background:#ffffff !important;
  color:var(--bp-pr-ink) !important;
}

.bp-pricing-convert{
  list-style:none; padding:28px 32px; margin:0;
  background:rgba(255,255,255,0.04);
  border-radius:var(--bp-pr-r-lg);
  border:1px solid rgba(255,255,255,0.1);
}
.bp-pricing-convert__step{
  display:grid; grid-template-columns: 56px 1fr;
  gap:16px;
  padding:18px 0;
  border-bottom:1px solid rgba(255,255,255,0.08);
  position:relative;
}
.bp-pricing-convert__step:last-child{ border-bottom:none; }
/* Operator 8.6 — vertical line connecting the step circles */
.bp-pricing-convert__step::after{
  content:"";
  position:absolute;
  left:28px;
  top:74px;
  bottom:-8px;
  width:1px;
  background:rgba(255,255,255,0.14);
}
.bp-pricing-convert__step:last-child::after{ display:none; }
.bp-pricing-convert__step .circle{
  width:56px; height:56px; border-radius:999px;
  background:rgba(255,255,255,0.05);
  border:1px solid rgba(255,255,255,0.2);
  display:flex; align-items:center; justify-content:center;
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:20px; color:#fff;
  flex-shrink:0;
  position:relative;
  z-index:1;
}
.bp-pricing-convert__step--pop .circle{
  background:#fff; color:var(--bp-pr-ink);
  border-color:#fff;
}
.bp-pricing-convert__step .k{
  font-size:14.5px; font-weight:600; color:#fff;
  line-height:1.3; margin-bottom:6px;
}
.bp-pricing-convert__step .v{
  font-size:12.5px; color:rgba(255,255,255,0.65); line-height:1.55;
}
.bp-pricing-convert__step .v em{
  color:#fff !important;
  font-size:13.5px;
}

/* ---- SECTION 5 (SLA cards) ---- */
.bp-pricing-sla-grid{
  display:grid; grid-template-columns: 1fr 1fr;
  gap:20px;
  margin-top:8px;
}
.bp-pricing-sla-card{
  background:#fff;
  border-radius:var(--bp-pr-r-lg);
  padding:32px 36px 28px;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-sla-card__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:22px; font-weight:400; letter-spacing:-0.012em; line-height:1.22;
  margin:0 0 18px;
  color:var(--bp-pr-ink);
}
.bp-pricing-sla-row{
  display:grid; grid-template-columns: 1fr auto 78px;
  gap:14px; align-items:baseline;
  padding:14px 0;
  border-bottom:1px dashed var(--bp-pr-hair);
}
.bp-pricing-sla-row:last-of-type{ border-bottom:none; padding-bottom:0; }
.bp-pricing-sla-row .k{
  font-size:13.5px; color:var(--bp-pr-ink); font-weight:500;
  line-height:1.35;
}
.bp-pricing-sla-row .k small{
  display:block; color:var(--bp-pr-mute);
  font-weight:400; font-size:11.5px; margin-top:2px;
}
.bp-pricing-sla-row .v{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:30px; font-weight:400; letter-spacing:-0.016em;
  color:var(--bp-pr-ink); line-height:1;
}
.bp-pricing-sla-row .u{
  font-size:11px; letter-spacing:0.04em;
  color:var(--bp-pr-mute); line-height:1.3;
  text-align:right;
}
.bp-pricing-sla-card__foot{
  margin-top:16px; padding-top:14px;
  border-top:1px solid var(--bp-pr-hair);
  font-size:12px; color:var(--bp-pr-mute);
  line-height:1.6;
}
.bp-pricing-sla-card__foot strong{ color:var(--bp-pr-ink); font-weight:600; }

/* ---- SECTION 6 (Delivery modes) ---- */
.bp-pricing-modes{
  display:grid; grid-template-columns: repeat(3, 1fr);
  gap:18px;
  margin-top:8px;
}
.bp-pricing-mode{
  display:flex; flex-direction:column;
}
.bp-pricing-mode__imgph{
  position:relative;
  /* Fallback matches the Section 6 (delivery modes) container background
     so the lazy-load flash blends into the page instead of flashing
     black-on-white. Section 6 has no --alt modifier, so it's paper. */
  background:var(--bp-pr-paper);
  color:rgba(255,255,255,0.85);
  border-radius:var(--bp-pr-r-md);
  /* aspect-ratio locks the slot to the source image's 3:2 frame at every
     viewport. A fixed height (240px) was creating a slot that drifted to
     ~1.56-1.73 aspect depending on card width, which forced object-fit:
     cover to crop ~10-36px off the top/bottom of the 1440x960 source.
     With aspect-ratio:3/2, the slot scales proportionally with width and
     the source fills it edge-to-edge with no crop at all. */
  aspect-ratio:3/2;
  margin-bottom:20px;
  display:flex; align-items:flex-end; justify-content:flex-start;
  overflow:hidden;
}
.bp-pricing-mode__imgph > img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  /* Anchor the crop to the top so portraits keep the head/torso in view
     when the source aspect (e.g. 2:3 portrait) doesn't match the slot
     (3:2 landscape). Symmetric crops chop heads off; top-anchoring
     preserves them. */
  object-position:center top;
  display:block;
  z-index:0;
}
.bp-pricing-mode__imgph .cap{
  /* Black-on-white pill horizontally centered at the bottom of the
     image — matches the pill pattern used elsewhere on the site
     (small caps, ink on paper). */
  position:absolute;
  bottom:14px;
  left:50%;
  transform:translateX(-50%);
  z-index:1;
  background:#fff;
  color:var(--bp-pr-ink);
  padding:6px 14px;
  border-radius:999px;
  font-size:10px; font-weight:600;
  letter-spacing:0.16em; text-transform:uppercase;
  white-space:nowrap;
  /* Subtle hairline shadow lifts the pill off the photo on busy or
     light image areas. */
  box-shadow:0 2px 12px rgba(0,0,0,0.18);
}
.bp-pricing-mode__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:26px; font-weight:400; letter-spacing:-0.012em; line-height:1.18;
  margin:0 0 12px;
  color:var(--bp-pr-ink);
}
.bp-pricing-mode__body{
  font-size:13.5px; line-height:1.7; color:var(--bp-pr-ink-2);
  margin:0 0 16px;
}
.bp-pricing-mode__meta{
  display:flex; flex-direction:column;
  margin-top:auto;
  border-top:1px solid var(--bp-pr-hair);
}
.bp-pricing-mode__meta .row{
  display:grid; grid-template-columns: 1fr auto;
  gap:14px; align-items:baseline;
  padding:10px 0;
  border-bottom:1px dashed var(--bp-pr-hair-2);
  font-size:12.5px;
}
.bp-pricing-mode__meta .row:last-child{ border-bottom:none; }
.bp-pricing-mode__meta .k{
  color:var(--bp-pr-mute); letter-spacing:0.04em;
}
.bp-pricing-mode__meta .v{
  font-weight:600; color:var(--bp-pr-ink);
  font-size:12px;
}

/* ---- SECTION 7 (Named clients — density-weighted grid) ----
   Source: /Website Optimization/pages-in-progress/page-06-pricing/Named Clients - Dev Handoff.html
   Translated to monochrome. Chips removed; client names ride as Playfair
   type at three weight tiers (marquee / feature / default).
   Card sizing on a 12-column grid:
     --xl / --l   → 6 cols     --m / --s    → 4 cols
     --w8         → 8 cols     --w          → 12 cols
     --ink                     → dark inverted card
*/
.bp-pricing-clients{
  /* tighter section padding per dev-handoff (64px vs the generic 80px). */
  padding:64px 60px;
}

.bp-pricing-clients__grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap:14px;
  margin-top:8px;
}

.bp-pricing-clients__card{
  background:#fff;
  border-radius:16px;
  padding:22px 26px;
  display:flex;
  flex-direction:column;
  position:relative;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-clients__card--xl{ grid-column: span 6; }
.bp-pricing-clients__card--l { grid-column: span 6; }
.bp-pricing-clients__card--m { grid-column: span 4; }
.bp-pricing-clients__card--s { grid-column: span 4; }
.bp-pricing-clients__card--w { grid-column: span 12; }
.bp-pricing-clients__card--w8{ grid-column: span 8; }
.bp-pricing-clients__card--ink{
  background: var(--bp-pr-ink);
  color: #fff;
  border-color: var(--bp-pr-ink);
}

.bp-pricing-clients__card-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:14px;
  padding-bottom:10px;
  border-bottom:1px solid var(--bp-pr-hair);
  margin-bottom:10px;
}
.bp-pricing-clients__card--ink .bp-pricing-clients__card-head{
  border-bottom-color: rgba(255,255,255,0.14);
}
.bp-pricing-clients__card-name{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:22px;
  font-weight:400;
  letter-spacing:-0.012em;
  line-height:1.15;
  margin:0;
  color:var(--bp-pr-ink);
}
.bp-pricing-clients__card--ink .bp-pricing-clients__card-name{ color:#fff; }
.bp-pricing-clients__card--ink .bp-pricing-clients__card-name em{
  color:#fff !important;
}

.bp-pricing-clients__card-meta{
  display:inline-flex;
  align-items:baseline;
  gap:8px;
  white-space:nowrap;
  padding-top:2px;
}
.bp-pricing-clients__card-count{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:16px;
  color: var(--bp-pr-ink);
  line-height:1;
}
.bp-pricing-clients__card--ink .bp-pricing-clients__card-count{ color:#fff; }
.bp-pricing-clients__card-count-l{
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10px;
  letter-spacing:0.08em;
  color: var(--bp-pr-mute);
  font-weight:500;
}
.bp-pricing-clients__card--ink .bp-pricing-clients__card-count-l{
  color: rgba(255,255,255,0.55);
}

.bp-pricing-clients__names{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  column-gap:12px;
  row-gap:4px;
  margin:0;
}
/* Prose modifier — used on Insurance card which renders count-only,
   no named-firm chips, per page-architect locked rule 3 (no partial
   selection of an aggregate). */
.bp-pricing-clients__names--prose{
  display:block;
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-size:14.5px;
  color: var(--bp-pr-ink-2);
  line-height:1.5;
  letter-spacing:0;
}
.bp-pricing-clients__names--prose::after{ display:none; }
.bp-pricing-clients__name{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  color:var(--bp-pr-ink-2);
  font-weight:400;
  letter-spacing:-0.005em;
  line-height:1.25;
  position:relative;
  padding-right:12px;
}
.bp-pricing-clients__name::after{
  content:"\00b7";
  position:absolute;
  right:0;
  top:50%;
  transform: translateY(-45%);
  color: var(--bp-pr-mute-2);
}
.bp-pricing-clients__name:last-child{ padding-right:0; }
.bp-pricing-clients__name:last-child::after{ display:none; }
.bp-pricing-clients__card--ink .bp-pricing-clients__name{ color: rgba(255,255,255,0.78); }
.bp-pricing-clients__card--ink .bp-pricing-clients__name::after{ color: rgba(255,255,255,0.3); }

/* Three weight tiers — operator-set via class. marquee = headline name,
   feature = well-known but not lede, default = everything else. */
.bp-pricing-clients__name--marquee{
  font-size:24px;
  color:var(--bp-pr-ink);
  letter-spacing:-0.018em;
}
.bp-pricing-clients__card--ink .bp-pricing-clients__name--marquee{ color:#fff; }

.bp-pricing-clients__name--feature{
  font-size:18px;
  color:var(--bp-pr-ink);
  letter-spacing:-0.012em;
}
.bp-pricing-clients__card--ink .bp-pricing-clients__name--feature{ color:#fff; }

.bp-pricing-clients__name--default{
  font-size:14.5px;
  color: var(--bp-pr-ink-2);
}
.bp-pricing-clients__card--ink .bp-pricing-clients__name--default{
  color: rgba(255,255,255,0.75);
}

.bp-pricing-clients__name--more{
  color: var(--bp-pr-mute-2);
  font-style:italic;
  font-size:13px;
}
.bp-pricing-clients__card--ink .bp-pricing-clients__name--more{
  color: rgba(255,255,255,0.45);
}

.bp-pricing-clients__foot{
  grid-column: span 12;
  background: #fff;
  border-radius:16px;
  padding:16px 24px;
  display:flex;
  justify-content:space-between;
  gap:24px;
  flex-wrap:wrap;
  align-items:center;
  font-size:12px;
  color: var(--bp-pr-mute);
  line-height:1.55;
  margin-top:4px;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-clients__foot strong{ color: var(--bp-pr-ink); font-weight:600; }
.bp-pricing-clients__foot em{
  font-style:italic !important;
  color: var(--bp-pr-ink) !important;
  font-size:14px;
}
.bp-pricing-clients__foot-r{
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10.5px;
  letter-spacing:0.12em;
  text-transform:uppercase;
  color: var(--bp-pr-mute-2);
}

/* ---- INTERACTIVE CALCULATOR ---- */
.bp-pricing-calc{
  background:#fff;
  padding:80px 60px;
  border-top:1px solid var(--bp-pr-hair);
}
.bp-pricing-calc__grid{
  display:grid; grid-template-columns: 1fr 1.45fr;
  gap:24px;
  align-items:stretch;
  margin-top:8px;
}
.bp-pricing-calc__panel{
  background:var(--bp-pr-neutral);
  border-radius:var(--bp-pr-r-lg);
  padding:32px 32px;
  display:flex; flex-direction:column;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-calc__control{ margin-bottom:24px; }
.bp-pricing-calc__control:last-child{ margin-bottom:0; }
.bp-pricing-calc__label{
  display:flex; align-items:baseline; justify-content:space-between;
  margin-bottom:12px;
}
.bp-pricing-calc__label > span:first-child{
  font-size:11px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
}
.bp-pricing-calc__label-static{
  display:block;
  margin-bottom:12px;
  font-size:11px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
}
.bp-pricing-calc__val{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:36px; line-height:1; font-weight:400;
  letter-spacing:-0.022em;
  color:var(--bp-pr-ink);
}
.bp-pricing-calc__val em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
}
.bp-pricing-calc__val .unit{
  font-family: var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-size:12px; font-weight:500;
  color:var(--bp-pr-mute); letter-spacing:0.04em;
  margin-left:6px;
}
.bp-pricing-calc__slider{
  -webkit-appearance:none; appearance:none;
  width:100%; height:6px;
  background:#fff;
  border-radius:999px;
  outline:none; cursor:pointer;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-calc__slider::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width:22px; height:22px;
  border-radius:999px;
  background:var(--bp-pr-ink);
  border:3px solid #fff;
  box-shadow: 0 0 0 1px var(--bp-pr-ink), 0 2px 6px rgba(0,0,0,0.25);
  cursor:grab;
  transition: transform 120ms ease;
}
.bp-pricing-calc__slider::-moz-range-thumb{
  width:22px; height:22px;
  border-radius:999px;
  background:var(--bp-pr-ink);
  border:3px solid #fff;
  box-shadow: 0 0 0 1px var(--bp-pr-ink), 0 2px 6px rgba(0,0,0,0.25);
  cursor:grab;
}
.bp-pricing-calc__scale{
  display:flex; justify-content:space-between;
  margin-top:10px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10px; color:var(--bp-pr-mute-2);
  letter-spacing:0.06em;
}
.bp-pricing-calc__radios{ display:flex; flex-direction:column; gap:8px; }
.bp-pricing-calc__radios--inline{ flex-direction:row; gap:8px; flex-wrap:wrap; }
.bp-pricing-calc__radio{ position:relative; cursor:pointer; }
.bp-pricing-calc__radio input{ position:absolute; opacity:0; pointer-events:none; }
.bp-pricing-calc__radio-body{
  display:block;
  padding:14px 18px;
  background:#fff;
  border:1px solid var(--bp-pr-hair);
  border-radius:14px;
  transition: border-color 120ms ease, background 120ms ease;
}
.bp-pricing-calc__radio:hover .bp-pricing-calc__radio-body{ background:var(--bp-pr-neutral); }
.bp-pricing-calc__radio input:checked + .bp-pricing-calc__radio-body{
  background:#fff; border-color:var(--bp-pr-ink);
  box-shadow: 0 0 0 1px var(--bp-pr-ink);
}
.bp-pricing-calc__radio-name{
  display:block;
  font-size:14px; font-weight:600; color:var(--bp-pr-ink);
  letter-spacing:-0.005em; line-height:1.2;
  margin-bottom:3px;
}
.bp-pricing-calc__radio-sub{
  display:block;
  font-size:11.5px; color:var(--bp-pr-mute); line-height:1.4;
}
/* Switched flex-basis from 0 to auto + dropped min-width:0 so chips size
   to their content first, then share extra space equally via flex-grow.
   Combined with white-space:nowrap below, "One-off" can no longer break
   across the hyphen and balloon the chip into a tall two-line button. */
.bp-pricing-calc__radio--chip{ flex:1 1 auto; }
.bp-pricing-calc__radio-chip{
  display:block; text-align:center;
  padding:12px 16px;
  background:#fff;
  border:1px solid var(--bp-pr-hair);
  border-radius:999px;
  font-size:13px; font-weight:500;
  color:var(--bp-pr-ink-2);
  transition: all 120ms ease;
  cursor:pointer;
  white-space:nowrap;
}
.bp-pricing-calc__radio--chip:hover .bp-pricing-calc__radio-chip{ background:var(--bp-pr-neutral); }
.bp-pricing-calc__radio--chip input:checked + .bp-pricing-calc__radio-chip{
  background:var(--bp-pr-ink); color:#fff; border-color:var(--bp-pr-ink);
  font-weight:600;
}
.bp-pricing-calc__output{ display:flex; flex-direction:column; }
.bp-pricing-calc__cards{
  display:grid; grid-template-columns: repeat(3, 1fr);
  gap:14px;
  margin-bottom:18px;
}
.bp-pricing-calc-card{
  background:var(--bp-pr-neutral);
  border-radius:var(--bp-pr-r-md);
  padding:24px 22px 20px;
  display:flex; flex-direction:column;
  position:relative;
  border:1px solid var(--bp-pr-hair);
  transition: background 200ms ease, transform 200ms ease;
  /* Fixed-ish card height. Each internal region reserves enough space
     for its longest possible content so cards don't grow/shrink when
     the slider changes and the buttons below stop jumping
     (operator 2026-05-27). */
  min-height:300px;
}
.bp-pricing-calc-card__hdr{
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:18px;
}
.bp-pricing-calc-card__title{
  font-size:12px; font-weight:600;
  color:var(--bp-pr-ink); letter-spacing:-0.005em;
}
.bp-pricing-calc-card__total{
  display:flex; flex-direction:column;
  margin-bottom:14px;
}
.bp-pricing-calc-card__pre{
  font-size:10.5px; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--bp-pr-mute); font-weight:600;
  margin-bottom:8px;
}
.bp-pricing-calc-card__num{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:32px; font-weight:400; letter-spacing:-0.02em;
  line-height:1.05; color:var(--bp-pr-ink);
  /* Reserve 2 lines of headline space so cards stay the same height
     when the headline alternates between short ($3,688.50) and long
     wrapped strings (Below the $5,000 floor). */
  min-height:68px;
  display:flex; align-items:flex-start;
}
.bp-pricing-calc-card__num em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
}
.bp-pricing-calc-card__note{
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:11px; color:var(--bp-pr-mute);
  line-height:1.5;
  margin-top:auto;
  padding-top:14px;
  border-top:1px dashed var(--bp-pr-hair);
  /* Reserve 4 lines so the dashed rule + note position stay constant
     across all slider states (e.g. 25 x $226.98 per individual session
     [1 line] vs Estimated annual spend ... is under the Essential tier
     minimum. Pay per team day. [3-4 lines]). */
  min-height:80px;
}
.bp-pricing-calc-card__chip{
  position:absolute; top:-10px; right:18px;
  background:var(--bp-pr-ink); color:#fff;
  font-size:9.5px; letter-spacing:0.18em; text-transform:uppercase;
  font-weight:600;
  padding:6px 11px; border-radius:999px;
  /* Same trick as the tier card's Most Popular pill — the calculator's
     featured card is also ink-on-ink, so the chip needs a hairline
     white base shadow to read as a layer floating above the card. */
  box-shadow:0 2px 0 #fff;
  display:none;
}
.bp-pricing-calc-card--featured{
  background:var(--bp-pr-ink); color:#fff;
  border-color:var(--bp-pr-ink);
}
.bp-pricing-calc-card--featured .bp-pricing-calc-card__title,
.bp-pricing-calc-card--featured .bp-pricing-calc-card__num{ color:#fff; }
.bp-pricing-calc-card--featured .bp-pricing-calc-card__num em{ color:#fff !important; }
.bp-pricing-calc-card--featured .bp-pricing-calc-card__pre{ color:rgba(255,255,255,0.55); }
.bp-pricing-calc-card--featured .bp-pricing-calc-card__note{
  color:rgba(255,255,255,0.6);
  border-top-color:rgba(255,255,255,0.16);
}
.bp-pricing-calc-card--featured .bp-pricing-calc-card__chip{ display:inline-block; }
.bp-pricing-calc__disclaimer{
  background:var(--bp-pr-neutral);
  border-radius:14px;
  padding:16px 20px;
  font-size:12px; line-height:1.6;
  color:var(--bp-pr-ink-2);
  margin-bottom:24px;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-calc__disclaimer em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
}
.bp-pricing-calc__actions{
  display:flex; gap:12px; align-items:center; flex-wrap:wrap;
}

/* ---- COMPARISON TABLE (new grouped + condensed design) ---- */
.bp-pricing-compare{
  background:#fff;
  padding:80px 60px;
}
.bp-pricing-compare__caption{
  font-size:13px; color:var(--bp-pr-mute);
  font-style:italic;
  margin:8px 0 28px;
}
.bp-pricing-ctable{
  background:#fff;
  border-radius:var(--bp-pr-r-lg);
  overflow:hidden;
  border:1px solid var(--bp-pr-hair);
}
.bp-pricing-ctable__banner{
  background:var(--bp-pr-neutral);
  padding:18px 32px;
  display:flex; align-items:center; gap:24px;
  flex-wrap:wrap;
  justify-content:center;  /* centre both the items line and the legend row (operator 2026-05-30) */
  border-bottom:1px solid var(--bp-pr-hair);
  font-size:12px;
  color:var(--bp-pr-ink-2);
}
.bp-pricing-ctable__banner-label{
  font-size:10.5px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--bp-pr-ink); font-weight:600;
  display:inline-flex; align-items:center; gap:10px;
}
.bp-pricing-ctable__banner-label::before{
  content:"=";
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:18px; color:var(--bp-pr-ink);
}
.bp-pricing-ctable__banner-item{
  display:inline-flex; align-items:baseline; gap:8px;
  font-size:12px;
}
.bp-pricing-ctable__banner-item strong{ color:var(--bp-pr-ink); font-weight:600; }
/* Subscription-tier key — lives INSIDE the same-across-all-three banner.
   flex-basis:100% forces it onto its own row below the banner items;
   the banner's justify-content:center then centres BOTH the items
   row and the legend row. Hairline divider + top padding put visible
   breathing space between the two rows (operator 2026-05-30). */
.bp-pricing-ctable__legend{
  flex-basis:100%;
  display:flex; align-items:center; justify-content:center;
  gap:18px;
  flex-wrap:wrap;
  font-size:12px;
  color:var(--bp-pr-ink-2);
  margin-top:0;
  padding-top:14px;
  border-top:1px solid var(--bp-pr-hair);
}
.bp-pricing-ctable__legend-item{
  display:inline-flex; align-items:center; gap:8px;
}
.bp-pricing-ctable__legend-eq{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  font-size:14px; color:var(--bp-pr-ink);
}
.bp-pricing-ctable__banner-item::before{
  content:"\00b7";
  color:var(--bp-pr-mute-2);
  margin-right:4px;
}
.bp-pricing-ctable__banner-item:first-of-type::before{ display:none; }
.bp-pricing-ctable__head{
  display:grid; grid-template-columns: 1.2fr 1fr 1fr 1fr;
  border-bottom:1px solid var(--bp-pr-ink);
}
.bp-pricing-ctable__head-cell{
  padding:26px 28px 22px;
  border-right:1px solid var(--bp-pr-hair-2);
}
.bp-pricing-ctable__head-cell:last-child{ border-right:none; }
.bp-pricing-ctable__head-cell--label{
  background:var(--bp-pr-neutral);
  display:flex; align-items:flex-end;
}
.bp-pricing-ctable__head-h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:24px; font-weight:400; letter-spacing:-0.012em;
  line-height:1.18; color:var(--bp-pr-ink);
}
.bp-pricing-ctable__head-h--label{ font-size:18px; }
.bp-pricing-ctable__head-price{
  font-size:12px; color:var(--bp-pr-mute);
  margin-top:8px;
}
.bp-pricing-ctable__head-price strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing-ctable__head-bestfor{
  margin-top:14px;
  padding-top:12px;
  border-top:1px dashed var(--bp-pr-hair);
  font-size:11.5px;
  color:var(--bp-pr-ink-2);
  line-height:1.5;
}
.bp-pricing-ctable__head-bestfor::before{
  content:"Pick this if";
  display:block;
  margin-bottom:4px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10px;
  color:var(--bp-pr-mute-2);
  letter-spacing:0.08em;
  text-transform:uppercase;
  font-weight:500;
}
.bp-pricing-ctable__head-bestfor strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing-ctable__group-label{
  grid-column: 1 / -1;
  padding:16px 32px 10px;
  background:var(--bp-pr-neutral);
  border-bottom:1px solid var(--bp-pr-hair);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10.5px;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:var(--bp-pr-ink); font-weight:600;
  display:flex; align-items:baseline; gap:10px;
}
.bp-pricing-ctable__group-name{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", serif);
  font-style:italic;
  color:var(--bp-pr-mute-2);
  font-size:12px;
  letter-spacing:0.02em;
  text-transform:none;
}
.bp-pricing-ctable__row{
  display:grid; grid-template-columns: 1.2fr 1fr 1fr 1fr;
  border-bottom:1px solid var(--bp-pr-hair-2);
}
.bp-pricing-ctable__row:last-of-type{ border-bottom:none; }
.bp-pricing-ctable__row:hover{ background:var(--bp-pr-neutral); }
.bp-pricing-ctable__row .cell{
  padding:16px 28px;
  border-right:1px solid var(--bp-pr-hair-2);
  font-size:13px; color:var(--bp-pr-ink-2); line-height:1.55;
  display:flex; align-items:center;
  gap:8px;
}
.bp-pricing-ctable__row .cell:last-child{ border-right:none; }
.bp-pricing-ctable__row .cell.cell--label{
  background:var(--bp-pr-neutral);
  color:var(--bp-pr-ink); font-weight:500;
  font-size:13px;
}
.bp-pricing-ctable__row:hover .cell.cell--label{ background:var(--bp-pr-neutral-2); }
.bp-pricing-ctable__row .cell strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing-ctable__row .cell em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
  font-size:14px;
}
.bp-pricing-ctable__row .cell.cell--na{
  color:var(--bp-pr-mute-2);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:11px;
  letter-spacing:0.04em;
}
/* Tier chips inside the Subscription column */
.bp-pricing-ctable .chip-stack{
  display:flex; flex-direction:column;
  gap:6px;
}
.bp-pricing-ctable .chip-line{
  display:flex; align-items:center; gap:8px;
  font-size:12px;
  color:var(--bp-pr-ink-2);
}
.bp-pricing-ctable .chip-line strong{ color:var(--bp-pr-ink); font-weight:600; }
.bp-pricing-ctable .chip-line em{
  font-style:italic !important;
  color:var(--bp-pr-ink) !important;
  font-size:13.5px;
}
.bp-pricing-ctable .chip{
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:22px;
  border-radius:6px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:9.5px; font-weight:600;
  letter-spacing:0.04em;
  flex-shrink:0;
  /* override the vertical-chip styles inherited from the named-clients section */
  border:1px solid var(--bp-pr-hair);
  padding:0;
}
.bp-pricing-ctable .chip--ess{ background:var(--bp-pr-neutral); color:var(--bp-pr-ink); }
.bp-pricing-ctable .chip--gro{ background:var(--bp-pr-hair); color:var(--bp-pr-ink); }
.bp-pricing-ctable .chip--ent{ background:var(--bp-pr-ink); color:#fff; border-color:var(--bp-pr-ink); }
.bp-pricing-ctable__cta{
  display:grid; grid-template-columns: 1.2fr 1fr 1fr 1fr;
  background:var(--bp-pr-neutral);
  border-top:1px solid var(--bp-pr-ink);
}
.bp-pricing-ctable__cta .cell{
  padding:22px 28px;
  border-right:1px solid var(--bp-pr-hair-2);
  display:flex; align-items:center;
  font-size:12.5px;
}
.bp-pricing-ctable__cta .cell:last-child{ border-right:none; }
.bp-pricing-ctable__cta .cell.cell--label{
  background:var(--bp-pr-neutral);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size:10.5px;
  color:var(--bp-pr-mute);
  letter-spacing:0.1em;
  text-transform:uppercase;
  font-weight:600;
}
.bp-pricing-ctable__cta .cell a{
  font-size:12px; letter-spacing:0.04em;
  color:var(--bp-pr-ink); text-decoration:none; font-weight:600;
  display:inline-flex; align-items:center; gap:6px;
  transition: gap 160ms ease;
}
.bp-pricing-ctable__cta .cell a:hover{ gap:10px; }

/* ---- CTA STRIP (above FAQ) ---- */
.bp-pricing-cta-strip{
  background:var(--bp-pr-neutral);
  padding:44px 60px;
  border-top:1px solid var(--bp-pr-hair);
  border-bottom:1px solid var(--bp-pr-hair);
}
.bp-pricing-cta-strip__inner{
  max-width:1280px; margin:0 auto;
  display:grid; grid-template-columns: 1.4fr 1fr;
  gap:40px; align-items:center;
}
.bp-pricing-cta-strip__h{
  font-family: var(--FONT-STACK-HEADING, "Playfair Display", Georgia, serif);
  font-size:30px; font-weight:400; letter-spacing:-0.016em; line-height:1.18;
  margin:0;
  color:var(--bp-pr-ink);
}
.bp-pricing-cta-strip__actions{
  display:flex; gap:12px; flex-wrap:wrap;
  justify-self:end;
}

/* ============================================================================
   PRICING PAGE — MOBILE BREAKPOINTS
   ============================================================================ */

@media (max-width: 1100px) {
  .bp-pricing-statbar__inner{
    grid-template-columns: 1fr 1fr 1fr 1fr;
    row-gap:28px;
  }
  .bp-pricing-statbar__cell--caption{
    grid-column: 1 / -1;
    padding-left:0;
    border-right:none;
    border-top:1px solid var(--bp-pr-hair);
    padding-top:24px;
  }
}

@media (max-width: 1024px) {
  .bp-pricing-hero__grid,
  .bp-pricing-indiv__body,
  .bp-pricing-pilot__body,
  .bp-pricing-gdisc__main,
  .bp-pricing-calc__grid{
    grid-template-columns: 1fr; gap:36px;
  }
  .bp-pricing-tiers{
    grid-template-columns: 1fr; gap:16px;
  }
  .bp-pricing-tier--featured{ order: -1; }
  .bp-pricing-modes{
    grid-template-columns: 1fr; gap:18px;
  }
  /* Pill captions shrink at narrower viewports so the longest descriptor
     ("In-studio · controlled private-studio space") still fits inside
     the centered pill without overflowing the image edges. */
  .bp-pricing-mode__imgph .cap{
    font-size:9px; letter-spacing:0.10em;
    padding:5px 12px;
  }
  .bp-pricing-sla-grid{
    grid-template-columns: 1fr; gap:18px;
  }
  .bp-jumpnav-cards__grid{
    grid-template-columns: repeat(2, 1fr);
  }
  .bp-jumpnav-cards__item{
    padding:20px 20px 18px 0;
  }
  /* Tablet 2-col: items in column 2 (2n) get left padding so the
     border-right from column 1 doesn't sit against their text. */
  .bp-jumpnav-cards__item:nth-child(2n){
    border-right:none; padding-right:0; padding-left:20px;
  }
  .bp-pricing-mechanic{
    grid-template-columns: 1fr; gap:20px;
    padding:24px 24px;
  }
  .bp-pricing-mech-step{
    border-left:none; padding-left:0;
    border-top:1px solid var(--bp-pr-hair); padding-top:16px;
  }
  .bp-pricing-math-grid{
    grid-template-columns: 1fr; gap:16px;
  }
  /* Discount table: keep 2-column layout on tablets; drop to 1-col on phones below. */
  .bp-pricing-disctable{ padding:24px 24px 18px; }
  /* Express callout collapses to single-column stack. */
  .bp-pricing-express{
    grid-template-columns: 1fr; gap:18px;
    padding:24px 24px;
  }
  .bp-pricing-express__cta{ justify-self:start; }
  /* Named clients (Section 7): collapse 12-col to 6-col so paired cards
     keep their rough size relationships (xl/l side by side; m/s/m/m two-per-row). */
  .bp-pricing-clients{ padding:56px 40px; }
  .bp-pricing-clients__card--xl,
  .bp-pricing-clients__card--l,
  .bp-pricing-clients__card--m,
  .bp-pricing-clients__card--s{ grid-column: span 6; }
  .bp-pricing-clients__card--w,
  .bp-pricing-clients__card--w8{ grid-column: span 12; }
  .bp-pricing-includes{
    grid-template-columns: 1fr; gap:16px;
    padding:24px 24px;
  }
  .bp-pricing-cta-strip__inner{
    grid-template-columns: 1fr; gap:20px;
  }
  .bp-pricing-cta-strip__actions{ justify-self:start; }
  .bp-pricing-calc__cards{
    grid-template-columns: 1fr; gap:14px;
  }

  /* comparison table: stack to single-column row-per-row */
  .bp-pricing-ctable__head,
  .bp-pricing-ctable__row,
  .bp-pricing-ctable__cta{
    grid-template-columns: 1fr;
  }
  .bp-pricing-ctable__head-cell,
  .bp-pricing-ctable__row .cell,
  .bp-pricing-ctable__cta .cell{
    border-right:none;
    border-bottom:1px solid var(--bp-pr-hair-2);
    padding:12px 24px;
  }
  .bp-pricing-ctable__head-cell:last-child,
  .bp-pricing-ctable__row .cell:last-child,
  .bp-pricing-ctable__cta .cell:last-child{ border-bottom:none; }
  .bp-pricing-ctable__row .cell.cell--label{
    font-size:11px; letter-spacing:0.16em; text-transform:uppercase;
    padding:14px 24px 6px;
    color:var(--bp-pr-mute);
    background:var(--bp-pr-neutral);
    font-weight:600;
  }
  .bp-pricing-ctable__head-cell{ padding:22px 24px 18px; }
}

@media (max-width: 768px) {
  .bp-pricing-hero{ padding:32px 20px 40px; }
  .bp-pricing-hero__title{ font-size:44px; }
  .bp-pricing-hero__lede{ font-size:15.5px; }
  .bp-pricing-statbar{ padding:28px 20px; }
  .bp-pricing-statbar__inner{ grid-template-columns: 1fr 1fr; row-gap:24px; }
  .bp-pricing-statbar__cell{ padding:0 16px; border-right:1px solid var(--bp-pr-hair); }
  .bp-pricing-statbar__cell:nth-child(2n){ border-right:none; padding-right:0; }
  .bp-pricing-statbar__cell:nth-child(2n+1){ padding-left:0; }
  .bp-pricing-statbar__n{ font-size:34px; }
  .bp-jumpnav-cards{ padding:36px 20px; }
  .bp-pricing-sect,
  .bp-pricing-pilot,
  .bp-pricing-compare,
  .bp-pricing-calc{ padding:50px 20px; }
  .bp-pricing-sect__h{ font-size:30px; }
  .bp-pricing-price-anchor{ padding:32px 28px; }
  .bp-pricing-price-anchor__number{ font-size:84px; }
  .bp-pricing-tier{ padding:28px 26px 24px; }
  .bp-pricing-tier__price{ font-size:30px; }
  .bp-pricing-tier__price .cur{ font-size:20px; }
  .bp-pricing-cta-strip{ padding:36px 20px; }
  .bp-pricing-cta-strip__h{ font-size:24px; }
  .bp-pricing-includes__list{ grid-template-columns: 1fr; gap:8px; }
  /* Group-discount histogram at phone widths.
     Operator instruction: hide the 5%-step brackets on mobile so only the
     20 / 30 / 40 / 50 / 60% bars (the 10%-step decades) render. That keeps
     the chart a single row of 5 bars at narrow widths instead of a wrapped
     2-row mess, and the bracket labels stay legible.
     Hidden: nth-child(2) 25%, (4) 35%, (6) 45%, (8) 55%, (10) 65% accent.
     Note the 65% accent bar is hidden too — the climax is desktop-only. */
  .bp-pricing-gdisc{ padding:28px 24px; }
  .bp-pricing-gdisc__main{ grid-template-columns:1fr; gap:28px; }
  .bp-pricing-gdisc__bar:nth-child(2n){ display:none; }
  .bp-pricing-gdisc__bars{
    grid-template-columns: repeat(5, 1fr);
    grid-auto-rows: auto;
    height:180px;
    row-gap:0;
    margin-bottom:26px;
  }
  /* Single row again on mobile, so the baseline hairline comes back. */
  .bp-pricing-gdisc__bars::after{ display:block; }
  .bp-pricing-gdisc__bar-pct{ font-size:14px; top:-24px; }
  .bp-pricing-gdisc__h{ font-size:24px; }
  /* Express callout at phone widths. */
  .bp-pricing-express__h{ font-size:22px; }
  .bp-pricing-express .btn{ width:100%; justify-content:center; }
}

@media (max-width: 480px) {
  .bp-pricing-hero__cta .btn,
  .bp-pricing-pilot__cta .btn,
  .bp-pricing-cta-strip__actions .btn,
  .bp-pricing-calc__actions .btn{
    width:100%; justify-content:center;
  }
  .bp-jumpnav-cards__grid{ grid-template-columns: 1fr; }
  .bp-jumpnav-cards__item{
    border-right:none; border-bottom:1px solid var(--bp-pr-hair-2);
    padding:18px 0;
  }
  /* Override desktop adjacent-sibling padding + tablet 2n padding so all
     items align flush-left at ≤480px (was: item 1 at 0, item 2 at
     20px, item 3 at 28px, item 4 at 20px due to cascading overrides). */
  .bp-jumpnav-cards__item + .bp-jumpnav-cards__item,
  .bp-jumpnav-cards__item:nth-child(2n){
    padding-left:0;
  }
  .bp-jumpnav-cards__item:last-child{ border-bottom:none; }
  /* Named clients at narrow phones — every card stacks full-width and the
     marquee/feature tiers drop a step so they don't blow out the row. */
  .bp-pricing-clients{ padding:48px 24px; }
  .bp-pricing-clients__card--xl,
  .bp-pricing-clients__card--l,
  .bp-pricing-clients__card--m,
  .bp-pricing-clients__card--s,
  .bp-pricing-clients__card--w,
  .bp-pricing-clients__card--w8{ grid-column: span 12; }
  .bp-pricing-clients__name--marquee{ font-size:20px; }
  .bp-pricing-clients__name--feature{ font-size:16px; }
  .bp-pricing-statbar__inner{ grid-template-columns: 1fr; }
  .bp-pricing-statbar__cell{ border-right:none; padding:0; padding-bottom:18px; border-bottom:1px solid var(--bp-pr-hair); }
  .bp-pricing-statbar__cell:last-child{ border-bottom:none; padding-bottom:0; }
}

/* ============================================================================
   END PRICING PAGE
   ============================================================================ */

/* ============================================================================
   Cart drawer — "Applying group discount…" loader
   ============================================================================
   While Shopify's /cart/change AJAX is in flight (~200–500ms), the cart
   drawer carries `.is-loading` on the <cart-element>. During that window
   the customer's quantity change has been submitted but the cart hasn't
   re-rendered yet, so the existing per-person price is stale.

   We inject a red spinner + "Applying group discount…" message into
   each cart line's per-person row via custom.js (showCartLoadingState).
   The MutationObserver in custom.js watches for `.is-loading` toggling
   and adds/removes the loader element. No 10-second hang — the loader
   disappears the moment Shopify completes the AJAX and the cart re-renders.

   Styles below are the spinner's rotation animation + the inline-flex
   layout of icon + text.
   ============================================================================ */
/* The loader has two distinct injection sites chosen by JS in
   custom.js → appendLoader() based on viewport:

   Desktop (>767px): injected INSIDE `.cart-item-v2__per-person`,
   which is a `flex-wrap: wrap` flex container holding the prices.
   `flex-basis: 100%` here forces the loader onto its own line
   directly below the per-person prices — no margin-top tuning
   needed; the flex layout places it exactly where it belongs.
   Block layout with `padding-left: 26px` (icon + gap) and an
   absolutely-positioned spinner gives the hanging-indent column
   so "Applying group / discount…" wraps with the second line
   aligned under "Applying", not under the icon. The two-line
   wrap is induced naturally by the narrow main column width on
   most desktop cart drawers (~200px) — no `max-width` needed.

   Mobile (≤767px): injected as a sibling of `.cart-item-v2__row1`.
   The per-person column is too narrow (~100px) on phones so the
   loader can't live inside it without overlapping the totals
   column. The @media block below overrides almost every property
   to a centred flex layout that spans the full card width. */
.group-discount-loader {
  display: block;
  position: relative;
  flex-basis: 100%;          /* break onto own line inside per-person */
  padding-left: 26px;
  margin-top: 2px;
  font-size: 12px;
  color: #ff4848;
  line-height: 1.4;
}
.group-discount-loader .bp-loader-spinner {
  position: absolute;
  left: 0;
  top: 1px;                  /* nudge to align with the first text line */
  flex-shrink: 0;
  animation: bp-discount-loader-spin 0.8s linear infinite;
}
/* Mobile: switch from the desktop in-per-person layout to a
   centred flex that lives as a sibling of row 1. Resets every
   desktop property so the centred flex starts from a clean slate. */
@media only screen and (max-width: 767px) {
  .group-discount-loader {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 6px;
    position: static;
    flex-basis: auto;
    padding-left: 0;
    margin-top: -8px;
    margin-bottom: 4px;
  }
  .group-discount-loader .bp-loader-spinner {
    position: static;
  }
}
@keyframes bp-discount-loader-spin {
  to { transform: rotate(360deg); }
}
/* ============================================================================
   END Cart drawer loading state
   ============================================================================ */

/* ============================================================================
   Cart drawer — show a visible scrollbar
   ============================================================================
   The theme's `cart-drawer.css` deliberately hides the scrollbar on
   `.cart-drawer__body`:
       scrollbar-width: none;
       -ms-overflow-style: none;
       ::-webkit-scrollbar { display: none; }
   Scrolling still WORKS (overflow-y: auto is set), but customers with
   3+ cart items can't tell there's more content below — the third
   item just appears "cut off" because there's no scrollbar to hint
   at the overflow. Operator reported this on real-device testing.

   Override with a thin, subtle scrollbar that's visible but doesn't
   dominate the drawer chrome. Firefox uses `scrollbar-width: thin`
   + `scrollbar-color`; WebKit/Blink uses the `::-webkit-scrollbar*`
   pseudo-elements. Both rules together cover every modern browser.

   Thumb colour: 30%-opacity black so it reads against both light
   (white drawer) and dark backgrounds, and stays subtle when the
   customer isn't actively scrolling. */
.cart-drawer .cart-drawer__body {
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.3) transparent;
}
.cart-drawer .cart-drawer__body::-webkit-scrollbar {
  display: block;
  width: 8px;
}
.cart-drawer .cart-drawer__body::-webkit-scrollbar-track {
  background: transparent;
}
.cart-drawer .cart-drawer__body::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.3);
  border-radius: 4px;
}
.cart-drawer .cart-drawer__body::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 0, 0, 0.5);
}
/* ============================================================================
   END Cart drawer scrollbar
   ============================================================================ */

/* ============================================================================
   STICKY CART-BAR — hide while cart drawer or backdrop modal is open
   ============================================================================
   When the customer clicks the sticky cart-bar's "Add to Cart" (or the
   one inside the main product form), the theme opens the cart drawer
   and adds `js-drawer-open-cart` to <body>. Without this rule, the
   cart-bar stays pinned to the bottom of the viewport while the drawer
   is open, overlapping the drawer's footer and showing a redundant
   "Add to Cart" button for the product that's already in the cart.

   The backdrop-colour modal (`assets/backdrop-selector.js` lines 466
   & 493) toggles `backdrop-modal-open` on <body> when the customer
   picks a colour. Opening that modal also seems to flip the cart
   drawer's `js-drawer-open-cart` class off (the drawer stays visible
   underneath but the class lifecycle gets disrupted mid-interaction).
   Without explicitly listing `backdrop-modal-open` here, the cart-bar
   pops back up between "open backdrop picker" and "pick a colour" —
   the operator reported this exact flicker on Firefox.

   Both selectors slide the cart-bar back down (off-screen) for as
   long as either body class is present. When the customer closes
   the drawer / picks a colour the class is removed, this rule stops
   applying, and the existing `.cart-bar.is-visible` rule in
   `cart-bar.css` resumes — the IntersectionObserver in
   `cart-bar.js → initObserver()` keeps `.is-visible` on the class
   list if the customer is still scrolled past the main form, so the
   cart-bar slides back up automatically. No JS required.

   Transition timings (0.25s) intentionally a hair faster than the
   in-rule 0.3s / 0.5s on cart-bar.css so the cart-bar is fully gone
   by the time the drawer's slide-in animation completes — no overlap
   blink. */
body.js-drawer-open-cart .cart-bar.is-visible,
body.backdrop-modal-open .cart-bar.is-visible {
  opacity: 0;
  visibility: hidden;
  transform: translateY(100%);
  transition: opacity 0.25s ease, transform 0.25s ease, visibility 0s linear 0.25s;
}
/* ============================================================================
   END STICKY CART-BAR
   ============================================================================ */

/* ============================================================================
   COOKIE CONSENT NOTICE   (snippet: cookie-notice.liquid, JS: cookie-consent.js)
   Fixed bottom-right card on desktop, full-width pinned to bottom on mobile.
   Radio buttons + Save preferences submit. X close uses gallery-nav-icons
   (icon: 'close') with the same 90° rotate-on-hover already wired site-wide.
   ============================================================================ */
.bp-cookie-notice {
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 400px;
  max-width: calc(100vw - 48px);
  z-index: 9999;
  background: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 20px;
  box-shadow: 0 12px 32px -8px rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.06);
  padding: 24px 24px 20px;
  font-family: var(--FONT-STACK-BODY, -apple-system, BlinkMacSystemFont, sans-serif);
  color: #0b0b0b;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity 200ms ease, transform 200ms ease, visibility 0s linear 200ms;
}
.bp-cookie-notice.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity 200ms ease, transform 200ms ease, visibility 0s;
}

/* Close X — uses gallery-nav-icons; inherits the 90deg hover-rotate from site-wide CSS */
.bp-cookie-notice__close {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 32px;
  height: 32px;
  padding: 0;
  background: transparent;
  border: none;
  cursor: pointer;
  color: #0b0b0b;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bp-cookie-notice__close .gallery-icon--close {
  width: 24px;
  height: 24px;
  transition: transform 200ms ease;
}
.bp-cookie-notice__close:hover .gallery-icon--close {
  transform: rotate(90deg);
}
.bp-cookie-notice__close:focus-visible {
  outline: 2px solid #0b0b0b;
  outline-offset: 2px;
  border-radius: 4px;
}

/* Heading + body */
.bp-cookie-notice__title {
  font-family: var(--FONT-STACK-BODY, -apple-system, sans-serif);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.005em;
  margin: 0 28px 10px 0;
  color: #0b0b0b;
  line-height: 1.3;
}
.bp-cookie-notice__body {
  font-size: 14px;
  line-height: 1.5;
  color: #333;
  margin: 0 0 18px;
}

/* Two CTA buttons — primary (black filled) left, secondary (outlined) right.
   Uses native theme classes (.btn .btn--solid/outline .btn--black .btn--medium)
   for site-wide button consistency; invert-on-hover inherits from theme.
   Layout-only rules here. */
.bp-cookie-notice__actions {
  margin: 0 0 16px;
  display: flex;
  flex-direction: row;
  gap: 8px;
  flex-wrap: nowrap;
}

/* Buttons stay at their natural medium-padding width (theme's 12px/20px)
   so the inner left/right space matches the homepage / hero CTA pairs.
   `nowrap` above keeps them on one row inside the 400px card.

   The theme's base .btn has `min-width:120px` at >=480px and `min-width:180px`
   at >=1440px. The homepage CTAs ("Book a Team Headshot Day", "Request a
   Quote") have long labels that already exceed 180px so the min-width
   never visibly engages. "Accept all" / "Essential only" are short, so
   the min-width pads their interior with empty space and makes the
   horizontal gap around the text read wider than the homepage CTAs.
   Killing min-width here lets them sit at true natural width. */
.bp-cookie-notice__actions .btn {
  min-width: 0;
}

/* Mobile: stack the buttons vertically per writer's spec section 2. */
@media (max-width: 480px) {
  .bp-cookie-notice__actions {
    flex-direction: column;
  }
  .bp-cookie-notice__actions .btn {
    width: 100%;
  }
}

/* "Read about cookies" link */
.bp-cookie-notice__link {
  display: inline-block;
  font-size: 12.5px;
  color: #666;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: rgba(0,0,0,0.25);
  transition: color 160ms ease;
}
.bp-cookie-notice__link:hover {
  color: #0b0b0b;
  text-decoration-color: #0b0b0b;
}

/* Mobile — pin to bottom edge with 16px margins, buttons stack */
@media (max-width: 480px) {
  .bp-cookie-notice {
    right: 16px;
    bottom: 16px;
    left: 16px;
    width: auto;
    max-width: none;
    padding: 20px 20px 18px;
  }
  .bp-cookie-notice__title {
    font-size: 14.5px;
    margin-right: 32px;
  }
  .bp-cookie-notice__body {
    font-size: 13px;
  }
}
/* ============================================================================
   END COOKIE CONSENT NOTICE
   ============================================================================ */

/* ============================================================================
   EXECUTIVE PORTRAITS PAGE   (page handle: executive-portraits-toronto)
   v4 design ported under the bp-execp scope. Overrides the live
   bp-services-* / bp-jump-nav rules for this page only.
   ============================================================================ */

.bp-execp {
  --bp-svc-ink:#0a0a0a;
  --bp-svc-ink-2:#2a2a2a;
  --bp-svc-mute:#666;
  --bp-svc-hair:#e8e8e8;
  --bp-svc-paper:#ffffff;
  --bp-svc-neutral:#fafafa;
  --bp-svc-r-md:20px;
  --bp-svc-r-lg:28px;
  --bp-svc-r-pill:999px;
  --bp-execp-serif: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
}
.bp-execp em,
.bp-execp [class*="bp-execp"] em,
.bp-execp [class*="bp-services"] em,
.bp-execp [class*="bp-jump-nav"] em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style:  var(--FONT-STYLE-HIGHLIGHT, italic) !important;
  font-weight: var(--FONT-WEIGHT-HIGHLIGHT, 400) !important;
}
.bp-execp[id] { scroll-margin-top: 90px; }


/* ===== HERO ================================================================
   Section bg + padding cascade from the live .bp-services-hero baseline
   (#fff, 20px 60px) and the sitewide H1 standardization block at the end
   of this file (padding-top:10px !important). No exec-specific override
   needed for those — was dead code overridden by !important. The grid +
   inner layout below IS exec-specific and stays. */
.bp-execp .bp-services-hero__inner { max-width:1280px; margin:0 auto; }
.bp-execp .bp-services-hero__grid {
  display:grid;
  grid-template-columns: 1.15fr 1fr;
  gap:56px;
  align-items:stretch;
}
.bp-execp .bp-services-hero__left { display:flex; flex-direction:column; }
/* H1 typography cascades from the sitewide H1 standardization block at the
   end of this file (.bp-services-hero__title — clamp(28-60), Poppins 500,
   line-height 1.08, ink, all !important). No exec-specific override needed —
   was dead code overridden by !important. */
.bp-execp .bp-services-hero__lede {
  font-family:Poppins, sans-serif;
  font-size:16.5px;
  line-height:1.65;
  color:var(--bp-svc-ink-2);
  margin:0 0 32px;
  max-width:640px;
}
.bp-execp .bp-services-hero__lede strong { font-weight:600; color:var(--bp-svc-ink); }
.bp-execp .bp-services-hero__cta { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:24px; }

/* Hero portrait aside — bg transparent so the section bg shows through (no
   dark outline around light photos). */
.bp-execp-hero__portrait {
  position:relative;
  align-self:stretch;
  width:100%;
  aspect-ratio: 1 / 1;
  border-radius: var(--bp-svc-r-lg);
  overflow:hidden;
  background: transparent;
}
.bp-execp-hero__portrait-figure {
  position:absolute; left:50%; top:55%;
  transform:translate(-50%, -50%);
  width:62%; aspect-ratio: 1 / 1;
  border-radius: 50% 50% 8% 8% / 38% 38% 12% 12%;
  background:
    radial-gradient(ellipse at 50% 26%, rgba(255,255,255,0.20) 0%, transparent 30%),
    radial-gradient(ellipse at 50% 65%, rgba(40,40,40,0.55) 0%, transparent 60%),
    linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
  box-shadow:
    0 0 80px 10px rgba(0,0,0,0.6) inset,
    0 30px 60px -10px rgba(0,0,0,0.5);
}
.bp-execp-hero__portrait-sheen {
  position:absolute; right:-12%; top:-10%;
  width:55%; height:120%;
  background: linear-gradient(135deg, rgba(255,255,255,0.05) 0%, transparent 50%);
  transform: rotate(8deg);
  pointer-events:none;
}


/* ===== BY-THE-NUMBERS ATTRIBUTE STRIP (v5 design — replaces logo trust strip
        on this page only; logos still live on Services / Home where they
        belong. Em italic via the sitewide .bp-execp em rule; color stays ink
        per operator §6 "minimal red like all other pages" — v5's red on em
        intentionally dropped.) ===================================== */
.bp-execp-attrs {
  background:#fff;
  padding:32px 60px;
  border-top:1px solid var(--bp-svc-hair);
  border-bottom:1px solid var(--bp-svc-hair);
}
.bp-execp-attrs__inner { max-width:1280px; margin:0 auto; }
.bp-execp-attrs__row {
  display:grid;
  grid-template-columns: repeat(5, 1fr);
  gap:32px;
  align-items:start;
}
.bp-execp-attrs__cell {
  padding-left:14px;
  border-left:2px solid var(--bp-svc-ink);
  font-family:Poppins, sans-serif;
  font-weight:500;
  font-size:15px;
  line-height:1.4;
  letter-spacing:-0.005em;
  color:var(--bp-svc-ink);
}


/* ===== JUMP NAV ============================================================ */
.bp-execp.bp-jump-nav,
nav.bp-execp.bp-jump-nav {
  background:#fafafa;
  padding:25px 60px;
  border-top:1px solid #e0e0e0;
  border-bottom:1px solid #e0e0e0;
}
.bp-execp .bp-jump-nav-inner,
nav.bp-execp .bp-jump-nav-inner { max-width:1280px; margin:0 auto; text-align:center; }


/* ===== THESIS BAND ========================================================= */


/* ===== SECTION SHELL ======================================================= */
.bp-execp.bp-services-sect { padding:88px 60px; background:#fff; }
.bp-execp.bp-services-sect.bp-services-sect--alt { background:var(--bp-svc-neutral); }
.bp-execp .bp-services-sect__inner { max-width:1280px; margin:0 auto; }
.bp-execp .bp-services-sect__h {
  font-family:Poppins, sans-serif;
  font-weight:500;
  font-size:44px;
  line-height:1.1;
  letter-spacing:-0.02em;
  color:var(--bp-svc-ink);
  margin:0 0 22px;
  max-width:980px;
}
.bp-execp .bp-services-sect__intro {
  font-size:16px; line-height:1.7;
  color:var(--bp-svc-ink-2);
  max-width:920px;
  margin:0 0 28px;
}
.bp-execp .bp-services-sect__intro a {
  color:var(--bp-svc-ink);
  text-decoration:underline; text-underline-offset:3px;
  text-decoration-color:rgba(0,0,0,0.25);
}
.bp-execp .bp-services-sect__intro a:hover { text-decoration-color:var(--bp-svc-ink); }
.bp-execp .bp-services-sect__intro strong { font-weight:600; color:var(--bp-svc-ink); }
.bp-execp .bp-services-sect__intro p + p { margin-top:14px; }


/* ===== §1 COMPARE — 2-up service cards (live svc-card chrome) ============== */
.bp-execp-compare {
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:20px;
  margin-top:8px;
}
.bp-execp .bp-services-svc-card {
  background:#fff;
  border:1px solid var(--bp-svc-hair);
  border-radius:var(--bp-svc-r-md);
  padding:0 0 28px;
  display:flex; flex-direction:column;
  overflow:hidden;
  transition: border-color 160ms ease, box-shadow 160ms ease;
}
.bp-execp .bp-services-svc-card:hover {
  border-color:#bbb;
  box-shadow:0 12px 40px -20px rgba(0,0,0,0.18);
}
.bp-execp .bp-services-svc-card__media {
  position:relative; aspect-ratio: 1 / 1;
  overflow:hidden;
  background: transparent;
}
.bp-execp-compare__media--std,
.bp-execp-compare__media--exec {
  background: transparent;
}
.bp-execp-compare__media-figure {
  position:absolute; left:50%; top:55%; transform:translate(-50%, -50%);
  width:62%; aspect-ratio: 1 / 1;
  border-radius: 50% 50% 8% 8% / 50% 50% 8% 8%;
}
.bp-execp-compare__media--std .bp-execp-compare__media-figure {
  background:
    radial-gradient(ellipse at 50% 26%, rgba(255,255,255,0.55) 0%, transparent 30%),
    linear-gradient(180deg, #c0c0c0 0%, #888 100%);
  box-shadow: 0 0 60px 5px rgba(255,255,255,0.4) inset;
}
.bp-execp-compare__media--exec .bp-execp-compare__media-figure {
  background:
    radial-gradient(ellipse at 50% 25%, rgba(255,255,255,0.35) 0%, transparent 35%),
    linear-gradient(180deg, #4a4a4a 0%, #1a1a1a 100%);
  box-shadow: 0 0 60px 8px rgba(0,0,0,0.55) inset;
}
.bp-execp .bp-services-svc-card__h-row {
  display:flex; align-items:flex-start; justify-content:space-between; gap:14px;
  padding:24px 24px 0; margin-bottom:8px;
}
.bp-execp .bp-services-svc-card__h-row h3 {
  font-family:Poppins, sans-serif; font-weight:500;
  font-size:24px; line-height:1.15; letter-spacing:-0.015em;
  color:var(--bp-svc-ink); margin:0;
}
.bp-execp .bp-services-svc-card__h-row .price {
  font-size:11px; letter-spacing:0.12em; text-transform:uppercase;
  color:var(--bp-svc-ink); font-weight:600;
  background:var(--bp-svc-neutral);
  padding:6px 12px; border-radius:var(--bp-svc-r-pill);
  white-space:nowrap; flex-shrink:0; align-self:flex-start;
}
.bp-execp .bp-services-svc-card__sub {
  padding:0 24px; font-size:13px; color:var(--bp-svc-mute);
  margin:0 0 18px; letter-spacing:0.02em;
}
.bp-execp .bp-services-svc-card__bullets {
  list-style:none; padding:0 24px; margin:0 0 22px;
}
.bp-execp .bp-services-svc-card__bullets li {
  font-size:14px; line-height:1.6; color:var(--bp-svc-ink-2);
  padding:10px 0;
  border-top:1px solid var(--bp-svc-hair);
  display:grid;
  grid-template-columns: 96px 1fr;
  gap:16px;
}
.bp-execp .bp-services-svc-card__bullets li:first-child { border-top:none; }
.bp-execp .bp-services-svc-card__bullets .k {
  font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--bp-svc-mute); font-weight:600;
}
.bp-execp .bp-services-svc-card__bullets strong { font-weight:600; color:var(--bp-svc-ink); }


/* ===== §2 LOOKBOOK ========================================================= */
.bp-execp-lookbook {
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:14px;
  margin:32px 0 48px;
}
/* Card + photo placeholder both match the section background
   (--bp-svc-neutral, #fafafa) so the only visible elements are the
   loaded image and the body copy. Decorative dark gradients on the
   placeholder created a visible thin edge around bright photos —
   replaced with the section-bg colour (operator 2026-05-25; rule
   added to master handoff §15 #18). */
.bp-execp-look-card {
  background:var(--bp-svc-neutral);
  border-radius:var(--bp-svc-r-md);
  overflow:hidden;
  color:var(--bp-svc-ink);
  display:flex; flex-direction:column;
  transition: transform 200ms ease;
}
.bp-execp-look-card:hover { transform: translateY(-3px); }
.bp-execp-look-card__img {
  position:relative;
  aspect-ratio: 1 / 1;
  overflow:hidden;
  background:var(--bp-svc-neutral);
}
.bp-execp-look-card__img--formal,
.bp-execp-look-card__img--env,
.bp-execp-look-card__img--candid {
  background:var(--bp-svc-neutral);
}
.bp-execp-look-card__figure {
  position:absolute; left:50%; top:50%;
  transform:translate(-50%, -50%);
  width:65%; aspect-ratio: 1 / 1;
  border-radius: 50% 50% 8% 8% / 50% 50% 8% 8%;
  background:
    radial-gradient(ellipse at 50% 25%, rgba(255,255,255,0.25) 0%, transparent 30%),
    linear-gradient(180deg, #4a4a4a 0%, #1a1a1a 100%);
  box-shadow: 0 0 60px 5px rgba(0,0,0,0.55) inset;
}
.bp-execp-look-card__body { padding:22px 22px 26px; }
.bp-execp-look-card__name {
  font-family:Poppins, sans-serif;
  font-weight:500;
  font-size:22px;
  letter-spacing:-0.015em;
  line-height:1.2;
  margin:0 0 6px;
  color:var(--bp-svc-ink);
}
.bp-execp-look-card__name em { color:var(--bp-svc-ink); }
.bp-execp-look-card__desc {
  font-size:13px;
  line-height:1.65;
  color:var(--bp-svc-ink-2);
  margin:0;
}
.bp-execp-look-card__meta {
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid var(--bp-svc-hair);
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:10px;
}
.bp-execp-look-card__meta > div { display:block; }
.bp-execp-look-card__meta dt {
  font-size:9.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--bp-svc-mute);
  font-weight:600;
  margin-bottom:3px;
}
.bp-execp-look-card__meta dd {
  margin:0; font-size:12px; color:var(--bp-svc-ink-2);
  line-height:1.4;
}


/* ===== §2 TEAM STEPS (process timeline) ==================================== */
.bp-execp .bp-services-team__steps {
  display:flex; flex-direction:column; gap:8px;
  margin-top:40px;
}
.bp-execp .bp-services-team__step {
  display:grid;
  grid-template-columns:160px 1fr;
  gap:24px;
  padding:22px 0;
  border-top:1px solid var(--bp-svc-hair);
  align-items:start;
}
.bp-execp .bp-services-team__step:last-child { border-bottom:1px solid var(--bp-svc-hair); }
.bp-execp .bp-services-team__time {
  font-family:Poppins, sans-serif; font-weight:600;
  font-size:11px; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--bp-svc-mute);
  padding:6px 14px;
  background:#fff;
  border:1px solid var(--bp-svc-hair);
  border-radius:var(--bp-svc-r-pill);
  white-space:nowrap; justify-self:start;
}
.bp-execp .bp-services-team__step h4 {
  font-family:Poppins, sans-serif; font-weight:600;
  font-size:17px; line-height:1.25; letter-spacing:-0.005em;
  color:var(--bp-svc-ink); margin:0 0 6px;
}
.bp-execp .bp-services-team__step p {
  font-size:14px; line-height:1.65;
  color:var(--bp-svc-ink-2); margin:0;
}
.bp-execp .bp-services-team__step p strong { font-weight:600; color:var(--bp-svc-ink); }


/* ===== §3 SURFACES — 3-col grid, 3 rows (operator revision 2026-05-24).
        Cols: 1fr 1fr 1.3fr (Press col widened for more breathing room).
        Row 1: Feature (cols 1-2)
        Row 2: Board (col 1) + Conference (col 2)
        Row 3: Investor decks (cols 1-3, full width with internal text+mock)
        Press: col 3, rows 1-2 only (shorter — investor takes the freed
               space underneath via full-width row 3) ===== */
.bp-execp-surfaces {
  display:grid;
  grid-template-columns: 1fr 1fr 1.3fr;
  grid-template-rows: auto auto auto;
  gap:14px;
  margin-top:8px;
}
.bp-execp-surface--press {
  grid-column: 3;
  grid-row: 1 / span 2;
  display: flex;
  flex-direction: column;
}
.bp-execp-surface:nth-of-type(3) { grid-column: 1; grid-row: 2; }
.bp-execp-surface:nth-of-type(4) { grid-column: 2; grid-row: 2; }
.bp-execp-surface:nth-of-type(5) { grid-column: 1 / span 3; grid-row: 3; }
.bp-execp-surface {
  background:#fff;
  border:1px solid var(--bp-svc-hair);
  border-radius:var(--bp-svc-r-md);
  padding:24px;
  display:flex; flex-direction:column;
  position:relative;
}
.bp-execp-surface--feature {
  grid-column: 1 / span 2;
  grid-row: 1;
  background:transparent;
  color:var(--bp-svc-ink);
  border-color:var(--bp-svc-hair);
  padding:20px;  /* tightened from 28px so mock-report fills more of the right side */
  display:grid;
  /* Fixed mock-col width restores slot 10 (annual-report portrait) to its
     pre-layout-change size. Title column takes the remainder. */
  grid-template-columns: 1fr 353px;
  grid-template-rows: auto auto;
  column-gap:20px;  /* tightened from 32px */
  align-items:start;
}
.bp-execp-surface--feature .bp-execp-surface__h { grid-column:1; grid-row:1; }
.bp-execp-surface--feature .bp-execp-surface__sub { grid-column:1; grid-row:2; margin-bottom:0; }
.bp-execp-surface--feature .bp-execp-surface__mock {
  /* Span rows 1+2 so the mock's top aligns with the H3 title — removes
     the empty space below the body paragraph that appeared when the
     mock was taller than the text column (operator request 2026-05-25). */
  grid-column:2; grid-row: 1 / span 2;
  margin-top:0;
  align-self:start;
}

/* Wide card (Investor) — full-width row 3 with internal text-left + mock-right
   layout. "Q4 · Investor Update" etc. is inside the IR mock on the right;
   the card's own H3 + sub paragraph sit on the left. */
.bp-execp-surface--wide {
  grid-column: 1 / span 3;
  grid-row: 3;
  /* Constrain the card to 700px and center it under the others on
     desktop. Spans the full 3-col area, but justify-self:center +
     max-width keeps the visible card narrow and centered. */
  max-width: 700px;
  width: 100%;
  justify-self: center;
  padding:20px;
  display:grid;
  /* Fixed mock-col width keeps slot 18 (IR portrait) at its target
     size; remaining ~298px of inner space goes to the text column,
     which intentionally condenses the body copy. */
  grid-template-columns: 1fr 342px;
  grid-template-rows: auto auto;
  column-gap:20px;
  align-items:start;
}
.bp-execp-surface--wide .bp-execp-surface__h { grid-column:1; grid-row:1; }
.bp-execp-surface--wide .bp-execp-surface__sub { grid-column:1; grid-row:2; margin-bottom:0; }
.bp-execp-surface--wide .bp-execp-surface__mock {
  grid-column:2; grid-row: 1 / span 2;
  margin-top:0;
  align-self:start;
}
.bp-execp-surface__h {
  font-family:Poppins, sans-serif;
  font-weight:500;
  font-size:20px;
  letter-spacing:-0.012em;
  line-height:1.2;
  margin:0 0 8px;
  color:var(--bp-svc-ink);
}
.bp-execp-surface--feature .bp-execp-surface__h { font-size:26px; color:var(--bp-svc-ink); }
.bp-execp-surface__h em { color:inherit; }
.bp-execp-surface__sub {
  font-size:13px;
  line-height:1.6;
  color:var(--bp-svc-ink-2);
  margin:0 0 18px;
}
.bp-execp-surface__mock {
  margin-top: auto;  /* push mock to bottom of card so mocks align across
                        side-by-side cards (Board + Conference in row 2) */
  background:var(--bp-svc-neutral);
  border-radius: calc(var(--bp-svc-r-md) - 8px);
  padding:12px;  /* tightened from 16px */
  position:relative;
  overflow:hidden;
}

/* Board (3rd) + Conference (4th) — row 2 cards. Replace the default
   margin-top:auto (which left a big variable gap when the stretched
   card was taller than the content) with a small fixed gap, and give
   the body paragraph a min-height matching the longer of the two
   bodies so both mocks start at the same Y-position. */
.bp-execp-surface:nth-of-type(3) .bp-execp-surface__sub,
.bp-execp-surface:nth-of-type(4) .bp-execp-surface__sub {
  min-height: 148px;  /* ~7 lines at 13px × 1.6 line-height */
  margin-bottom: 14px;
}
.bp-execp-surface:nth-of-type(3) .bp-execp-surface__mock,
.bp-execp-surface:nth-of-type(4) .bp-execp-surface__mock {
  margin-top: 0;
}

/* Press card mock fills the remaining vertical space (so the gray
   container shows how much room is left for more thumbs), but the
   thumb rows themselves pack at their natural spacing (gap:8 +
   padding:8px 0 from the .bp-execp-mock-press base rules) — operator
   can count empty rows below to see how many more images to add. */
.bp-execp-surface--press .bp-execp-surface__mock {
  flex: 1;
  display: flex;
  flex-direction: column;
}

/* Annual report mockup — softer corners on internals per operator feedback */
.bp-execp-mock-report {
  aspect-ratio: 16/10;
  display:flex;
  position:relative;
  background:#fff;
  border-radius:10px;
  overflow:hidden;
}
.bp-execp-mock-report__page {
  flex:1; background:#f5f5f5;
  margin:14px; border-radius:10px;
  padding:18px 16px; position:relative;
  display:flex; flex-direction:column;
}
.bp-execp-mock-report__page:first-child { margin-right:6px; }
.bp-execp-mock-report__page:last-child { margin-left:6px; }
.bp-execp-mock-report__crease {
  position:absolute; top:0; bottom:0; left:50%;
  width:2px;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,0.08), transparent);
  transform:translateX(-1px);
}
.bp-execp-mock-report__portrait {
  aspect-ratio: 4/5; width:60%;
  background: transparent;
  border-radius:8px;
  margin:0 auto;
  position:relative;
  overflow:hidden;
}
.bp-execp-mock-report__portrait::after {
  content:""; position:absolute; left:50%; top:30%;
  transform: translate(-50%, 0);
  width:38%; aspect-ratio:1;
  border-radius:50%;
  background: radial-gradient(circle at 40% 40%, rgba(255,255,255,0.35) 0%, transparent 65%);
}
.bp-execp-mock-report__lines { display:flex; flex-direction:column; gap:4px; flex:1; }
.bp-execp-mock-report__lines i { display:block; height:3px; background:#d0d0d0; border-radius:1px; }
.bp-execp-mock-report__lines i:nth-child(1) { width:80%; }
.bp-execp-mock-report__lines i:nth-child(2) { width:95%; }
.bp-execp-mock-report__lines i:nth-child(3) { width:88%; }
.bp-execp-mock-report__lines i:nth-child(4) { width:75%; }
.bp-execp-mock-report__lines i:nth-child(5) { width:60%; }
.bp-execp-mock-report__hd {
  font-family:Poppins, sans-serif;
  font-size:8px; letter-spacing:0.2em; text-transform:uppercase;
  color:#888; font-weight:600; margin-bottom:6px;
}
.bp-execp-mock-report__title {
  font-family: var(--FONT-STACK-HIGHLIGHT);
  font-style:italic;
  font-size:14px;
  color:#1c1c1c;
  margin-bottom:8px; line-height:1.1;
}
.bp-execp-mock-report__caption {
  font-family: var(--FONT-STACK-HIGHLIGHT);
  font-style:italic;
  font-size:9px;
  color:#999;
  margin:6px auto 10px;
  text-align:center;
  width:60%;
}

/* Leadership grid mockup */
.bp-execp-mock-leaders { display:grid; grid-template-columns: repeat(4, 1fr); gap:6px; }
.bp-execp-mock-leaders__cell {
  aspect-ratio: 3/4;
  background: transparent;
  border-radius:10px; position:relative; overflow:hidden;
}
.bp-execp-mock-leaders__cell::after {
  content:""; position:absolute; left:50%; top:30%;
  transform: translateX(-50%);
  width:46%; aspect-ratio:1;
  border-radius:50%;
  background: radial-gradient(circle at 40% 40%, rgba(255,255,255,0.32) 0%, transparent 65%);
}

/* Press kit mockup */
.bp-execp-mock-press { display:flex; flex-direction:column; gap:8px; }
.bp-execp-mock-press__row {
  display:grid; grid-template-columns: 60px 1fr;
  gap:12px; align-items:center;
  padding:8px 0;
  border-bottom:1px solid var(--bp-svc-hair);
}
.bp-execp-mock-press__row:last-child { border-bottom:none; }
.bp-execp-mock-press__thumb {
  aspect-ratio:1; border-radius:50%;
  background: transparent;
  position:relative; overflow:hidden;
}
.bp-execp-mock-press__thumb::after {
  content:""; position:absolute; left:50%; top:32%;
  transform: translateX(-50%);
  width:50%; aspect-ratio:1;
  border-radius:50%;
  background: radial-gradient(circle at 40% 40%, rgba(255,255,255,0.4) 0%, transparent 60%);
}
.bp-execp-mock-press__lines { display:flex; flex-direction:column; gap:4px; }
.bp-execp-mock-press__lines i { display:block; height:5px; background:#d0d0d0; border-radius:1px; }
.bp-execp-mock-press__lines i:nth-child(1) { width:60%; height:7px; background:#1c1c1c; }
.bp-execp-mock-press__lines i:nth-child(2) { width:80%; }
.bp-execp-mock-press__lines i:nth-child(3) { width:50%; }

/* IR cover slide mockup — 4/3 restored (was 16/9 briefly under Layout E).
   The Investor card now spans the full row 3 width with internal text+mock
   split, so the mock isn't pressed against the previous row and 4/3 keeps
   the portrait from being cropped. */
.bp-execp-mock-ir {
  aspect-ratio: 4/3;
  background:#0a0a0a;
  position:relative; overflow:hidden;
  border-radius:10px;
}
.bp-execp-mock-ir__portrait {
  position:absolute; right:0; top:0; bottom:0; width:55%;
  background: linear-gradient(180deg, #3a3a3a 0%, #0a0a0a 100%);
  border-radius:8px 10px 10px 8px;
}
.bp-execp-mock-ir__copy {
  position:absolute; left:18px; top:18px; right:58%; color:#fff;
}
.bp-execp-mock-ir__hd {
  font-family:Poppins, sans-serif;
  font-size:7px; letter-spacing:0.2em; text-transform:uppercase;
  color:rgba(255,255,255,0.55);
  font-weight:600; margin-bottom:8px;
}
.bp-execp-mock-ir__name {
  font-family: var(--FONT-STACK-HIGHLIGHT);
  font-style:italic;
  font-size:18px;
  line-height:1.05;
  margin-bottom:6px;
}
.bp-execp-mock-ir__title {
  font-size:9px;
  color: rgba(255,255,255,0.6);
  letter-spacing:0.06em;
  line-height:1.4;
}
.bp-execp-mock-ir__brand {
  position:absolute; left:18px; bottom:14px;
  font-family:Poppins, sans-serif;
  font-size:8px; letter-spacing:0.22em; text-transform:uppercase;
  color: rgba(255,255,255,0.5);
  font-weight:600;
}
.bp-execp-mock-ir__portrait::after {
  content:""; position:absolute; left:50%; top:30%;
  transform: translateX(-50%);
  width:50%; aspect-ratio:1;
  border-radius:50%;
  background: radial-gradient(circle at 40% 40%, rgba(255,255,255,0.32) 0%, transparent 65%);
}

/* Conference speaker mockup — light bg per operator preference
   "card backgrounds match the section, not a CSS design fill".
   No aspect-ratio: row content drives the height so there isn't a big
   block of empty padding above/below the keynote/title/eyebrow text. */
.bp-execp-mock-conf {
  background: var(--bp-svc-neutral);
  position:relative; overflow:hidden;
  padding:10px 16px;
  border-radius:10px;
}
.bp-execp-mock-conf__row {
  display:grid;
  grid-template-columns: 80px 1fr;
  gap:14px; align-items:center;
}
.bp-execp-mock-conf__thumb {
  aspect-ratio:1; border-radius:50%;
  background: transparent;
  border:2px solid var(--bp-svc-hair);
  position:relative; overflow:hidden;
}
.bp-execp-mock-conf__thumb::after {
  content:""; position:absolute; left:50%; top:34%;
  transform: translateX(-50%);
  width:50%; aspect-ratio:1;
  border-radius:50%;
  background: radial-gradient(circle at 40% 40%, rgba(255,255,255,0.35) 0%, transparent 60%);
}
.bp-execp-mock-conf__copy { color:var(--bp-svc-ink); }
.bp-execp-mock-conf__eyebrow {
  font-family:Poppins, sans-serif;
  font-size:7px; letter-spacing:0.2em; text-transform:uppercase;
  color:var(--bp-svc-mute);
  font-weight:600; margin-bottom:6px;
}
.bp-execp-mock-conf__name {
  font-family:Poppins, sans-serif; font-weight:500;
  font-size:14px;
  letter-spacing:-0.005em;
  margin-bottom:4px;
  color:var(--bp-svc-ink);
}
.bp-execp-mock-conf__t {
  font-size:9px;
  color: var(--bp-svc-mute);
  letter-spacing:0.04em;
}


/* ===== §4 VERTICAL LEDGER + FIRMS BODY ===================================== */
.bp-execp-verticals {
  margin:28px 0 32px;
  list-style:none;
  padding:0;
  background:#fff;
  border:1px solid var(--bp-svc-hair);
  border-radius:var(--bp-svc-r-md);
  overflow:hidden;
}
.bp-execp-vertical {
  display:grid;
  grid-template-columns: 60px 1fr;
  gap:18px;
  padding:20px 32px;
  border-top:1px solid var(--bp-svc-hair);
  align-items:baseline;
}
.bp-execp-vertical:first-child { border-top:none; }
.bp-execp-vertical__idx {
  font-family: var(--bp-execp-serif);
  font-style: italic;
  font-size:22px;
  color:var(--bp-svc-ink);
  font-weight:400;
}
.bp-execp-vertical__line {
  margin:0;
  font-size:15.5px; line-height:1.6;
  color:var(--bp-svc-ink-2);
}
.bp-execp-firms__body p {
  margin:0 0 14px;
  font-size:15px; line-height:1.75;
  color:var(--bp-svc-ink-2);
  max-width:920px;
}
.bp-execp-firms__body p:last-child { margin-bottom:0; }
.bp-execp-firms__body a {
  color:var(--bp-svc-ink);
  text-decoration:underline; text-underline-offset:3px;
}


/* ===== COMPARISON — 3-panel modes (with portrait media at top) ============= */
.bp-execp-compare3 .bp-services-modes {
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:16px;
}
.bp-execp .bp-services-modes__panel {
  background:#fff;
  border:1px solid var(--bp-svc-hair);
  border-radius:var(--bp-svc-r-md);
  padding:24px;
  display:flex; flex-direction:column;
}
/* Executive panel uses the same light treatment as the other two panels
   per operator preference (background matches the section, not a CSS
   design fill). The H3 + lock-faithful row content carries the
   "premium tier" framing; no dark fill needed. */
.bp-execp .bp-services-modes__media {
  position:relative; aspect-ratio: 1 / 1;
  overflow:hidden;
  border-radius: calc(var(--bp-svc-r-md) - 8px);
  margin-bottom:18px;
  background: transparent;
}
.bp-execp .bp-services-modes__head {
  display:flex; align-items:center; justify-content:space-between;
  padding-bottom:8px;
}
.bp-execp .bp-services-modes__head h3 {
  font-family:Poppins, sans-serif; font-weight:500;
  font-size:22px; line-height:1.15; letter-spacing:-0.015em;
  color:var(--bp-svc-ink); margin:0;
}
.bp-execp .bp-services-modes__sub {
  font-size:13px; line-height:1.55; color:var(--bp-svc-mute);
  padding-bottom:14px;
  border-bottom:2px solid var(--bp-svc-ink);
  margin:0 0 0;
}
.bp-execp .bp-services-modes__row {
  display:grid; grid-template-columns:1fr; gap:4px;
  padding:14px 0;
  border-bottom:1px solid var(--bp-svc-hair);
  align-content:start;
}
.bp-execp .bp-services-modes__row .k {
  font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--bp-svc-mute); font-weight:600;
}
.bp-execp .bp-services-modes__row .v {
  font-size:14px; line-height:1.5; color:var(--bp-svc-ink-2);
}

/* Comparison-panel portrait media variants */
.bp-execp-look--formal {
  background:
    radial-gradient(ellipse at 50% 28%, rgba(255,255,255,0.22) 0%, transparent 40%),
    linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%);
}
.bp-execp-look--standard {
  background: linear-gradient(180deg, #d0d0d0 0%, #888 100%);
}
.bp-execp-look--individual {
  background: linear-gradient(180deg, #2a2a2a 0%, #0c0c0c 100%);
}
.bp-execp-look-figure {
  position:absolute; left:50%; top:55%;
  transform:translate(-50%, -50%);
  width:58%; aspect-ratio: 1 / 1;
  border-radius: 50% 50% 8% 8% / 50% 50% 8% 8%;
  background:
    radial-gradient(ellipse at 50% 25%, rgba(255,255,255,0.32) 0%, transparent 32%),
    linear-gradient(180deg, #4a4a4a 0%, #1a1a1a 100%);
  box-shadow: 0 0 60px 6px rgba(0,0,0,0.55) inset;
}
.bp-execp-look-figure--standard {
  background:
    radial-gradient(ellipse at 50% 26%, rgba(255,255,255,0.45) 0%, transparent 30%),
    linear-gradient(180deg, #b0b0b0 0%, #6a6a6a 100%);
  box-shadow:none;
}
.bp-execp-look-figure--individual {
  width:42%;
  background:
    radial-gradient(ellipse at 50% 24%, rgba(255,255,255,0.30) 0%, transparent 32%),
    linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%);
}

.bp-execp .bp-services-pricing-foot {
  font-size:14px; line-height:1.65; color:var(--bp-svc-ink-2);
  max-width:920px; margin:30px 0 0;
}
.bp-execp .bp-services-pricing-foot strong { color:var(--bp-svc-ink); font-weight:600; }


/* ===== PRICING BAND ======================================================== */
.bp-execp.bp-execp-priceband {
  padding:74px 60px;
  background:#fff;
  border-top:1px solid var(--bp-svc-hair);
  border-bottom:1px solid var(--bp-svc-hair);
}
.bp-execp-priceband__inner {
  max-width:1280px; margin:0 auto;
  display:grid;
  grid-template-columns: 1.2fr 1fr;
  gap:64px;
  align-items:center;
}
.bp-execp-priceband__h {
  font-family:Poppins, sans-serif;
  font-weight:500;
  font-size:36px;
  letter-spacing:-0.018em;
  line-height:1.1;
  margin:0 0 16px;
  max-width:540px;
  color:var(--bp-svc-ink);
}
.bp-execp-priceband__p {
  margin:0;
  font-size:15px; line-height:1.7;
  color:var(--bp-svc-ink-2);
  max-width:520px;
}
.bp-execp-priceband__p a {
  color:var(--bp-svc-ink);
  text-decoration:underline; text-underline-offset:3px;
}
.bp-execp-priceband__right {
  display:flex; flex-direction:column;
  align-items:flex-start;
  gap:18px;
  padding:30px 32px;
  background:var(--bp-svc-neutral);
  border-radius:var(--bp-svc-r-md);
}
.bp-execp-priceband__floor {
  font-family:Poppins, sans-serif;
  font-size:11px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--bp-svc-mute); font-weight:600;
}
.bp-execp-priceband__amt {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
  font-size: 64px;
  letter-spacing: -0.025em;
  line-height: 1;
  color: var(--bp-svc-ink);
}
.bp-execp-priceband__amt small {
  font-family: Poppins, sans-serif;
  font-style: normal;
  font-weight: 500;
  font-size: 18px;
  color: var(--bp-svc-mute);
  margin-left: 8px;
  letter-spacing: 0;
}
.bp-execp-priceband__note {
  font-size:13px;
  color:var(--bp-svc-ink-2);
  line-height:1.65;
  margin:0;
}


/* ===== EXPERTISE ANCHOR ==================================================== */
.bp-execp.bp-execp-expertise {
  padding:48px 60px;
  background:#fff;
  border-top:1px solid var(--bp-svc-hair);
}
.bp-execp-expertise__inner {
  max-width:1080px; margin:0 auto;
  display:grid;
  grid-template-columns: 200px 1fr;
  gap:48px;
  align-items:start;
}
.bp-execp-expertise__l {
  font-size:11px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--bp-svc-ink); font-weight:600;
  padding-top:12px;
  border-top:1px solid var(--bp-svc-ink);
  width:140px;
}
.bp-execp-expertise__p {
  margin:0;
  font-size:15px; line-height:1.75; color:var(--bp-svc-ink-2);
}
.bp-execp-expertise__p strong { color:var(--bp-svc-ink); font-weight:600; }
.bp-execp-expertise__p a {
  color:var(--bp-svc-ink);
  text-decoration:underline; text-underline-offset:3px;
}


/* ===== FINAL CTA (dark band — matches sitewide closing CTA pattern) ======== */
.bp-execp.bp-execp-finalcta {
  padding:80px 60px;
  background:var(--bp-svc-ink);
  color:#fff;
  text-align:center;
  border-bottom:1px solid var(--bp-svc-ink);
}
.bp-execp-finalcta__inner { max-width:880px; margin:0 auto; }
.bp-execp-finalcta__h {
  font-family:Poppins, sans-serif;
  font-weight:500;
  font-size:36px;
  line-height:1.1;
  letter-spacing:-0.018em;
  margin:0 auto 14px;
  max-width:760px;
  color:#fff;
}
.bp-execp-finalcta__h em { color:#fff; }
.bp-execp-finalcta__p {
  margin:0 auto 28px;
  max-width:640px;
  font-size:16px;
  line-height:1.7;
  color:rgba(255,255,255,0.72);
}
.bp-execp-finalcta__actions {
  display:flex; gap:14px;
  justify-content:center; align-items:center; flex-wrap:wrap;
}
.bp-execp-finalcta__tertiary {
  margin-top:22px;
  font-size:11px; letter-spacing:0.16em; text-transform:uppercase;
  font-weight:600;
}
.bp-execp-finalcta__tertiary a {
  color:rgba(255,255,255,0.55);
  text-decoration:none;
  display:inline-flex; align-items:center; gap:8px;
}
.bp-execp-finalcta__tertiary a:hover { color:#fff; }


/* ============================================================================
   MOBILE — Executive Portraits
   ============================================================================ */
@media (max-width: 1100px) {
  .bp-execp .bp-services-hero__grid { grid-template-columns: 1fr; gap:36px; }
  .bp-execp-hero__portrait { min-height:auto; max-width:520px; }
  .bp-execp-compare { grid-template-columns: 1fr; }
  .bp-execp-lookbook { grid-template-columns: 1fr; }
  .bp-execp-surfaces { grid-template-columns: 1fr; grid-template-rows: auto; }
  .bp-execp-surface--feature,
  .bp-execp-surface--press,
  .bp-execp-surface:nth-of-type(n) {
    grid-row: auto;
    grid-column: auto;
  }
  .bp-execp-surface--feature,
  .bp-execp-surface--press {
    display: flex;
    flex-direction: column;
  }
  .bp-execp-surface--feature .bp-execp-surface__h,
  .bp-execp-surface--feature .bp-execp-surface__sub,
  .bp-execp-surface--feature .bp-execp-surface__mock {
    grid-column: auto;
    grid-row: auto;
  }
  .bp-execp-compare3 .bp-services-modes { grid-template-columns: 1fr; }
  .bp-execp-priceband__inner { grid-template-columns: 1fr; gap:32px; }
  .bp-execp-expertise__inner { grid-template-columns: 1fr; gap:18px; }
}

@media (max-width: 1023px) {
  .bp-execp.bp-services-hero { padding:32px 24px 16px; }
  .bp-execp .bp-services-hero__title { font-size:48px; }
  .bp-execp.bp-jump-nav { padding:18px 24px; }
  .bp-execp.bp-services-sect { padding:56px 24px; }
  .bp-execp .bp-services-sect__h { font-size:34px; }

  .bp-execp-attrs { padding:24px 20px; }
  .bp-execp-attrs__row { grid-template-columns: repeat(2, 1fr); gap:18px; }

  .bp-execp .bp-services-team__step { grid-template-columns: 1fr; gap:12px; }

  .bp-execp.bp-execp-priceband { padding:56px 24px; }
  .bp-execp-priceband__amt { font-size:44px; }

  .bp-execp.bp-execp-expertise { padding:40px 24px; }
  .bp-execp.bp-execp-finalcta { padding:64px 24px; }
}

/* CTA button text — default shows the full phrase; the short variant is
   swapped in under the mobile breakpoint (see below). Both spans render
   inside every "Request a Quote" anchor on this page. */
.bp-execp-cta-text--full { display: inline; }
.bp-execp-cta-text--short { display: none; }

@media (max-width: 600px) {
  .bp-execp .bp-services-hero__title { font-size:34px; }
  .bp-execp .bp-services-sect__h { font-size:28px; }
  .bp-execp-attrs__row { grid-template-columns: 1fr; gap:14px; }
  .bp-execp-vertical { grid-template-columns: 40px 1fr; padding:14px 20px; }
  .bp-execp .bp-services-svc-card__bullets li { grid-template-columns: 1fr; gap:4px; }

  /* Swap the CTA text to the short variant so it fits one line on phones. */
  .bp-execp-cta-text--full { display: none; }
  .bp-execp-cta-text--short { display: inline; }

  /* §3 SURFACES — stack to a single column so Feature, Board, Conference,
     Press, and Investor each get full mobile width. Internal grids inside
     Feature and Investor (--wide) also stack: title/sub on top, mock below. */
  .bp-execp-surfaces {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .bp-execp-surface--feature,
  .bp-execp-surface--wide,
  .bp-execp-surface--press,
  .bp-execp-surface:nth-of-type(3),
  .bp-execp-surface:nth-of-type(4),
  .bp-execp-surface:nth-of-type(5) {
    grid-column: 1;
    grid-row: auto;
  }
  /* Feature + Investor stack their internal text/mock columns vertically. */
  .bp-execp-surface--feature,
  .bp-execp-surface--wide {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    row-gap: 12px;
  }
  .bp-execp-surface--feature .bp-execp-surface__h,
  .bp-execp-surface--wide .bp-execp-surface__h { grid-column: 1; grid-row: 1; }
  .bp-execp-surface--feature .bp-execp-surface__sub,
  .bp-execp-surface--wide .bp-execp-surface__sub { grid-column: 1; grid-row: 2; }
  .bp-execp-surface--feature .bp-execp-surface__mock,
  .bp-execp-surface--wide .bp-execp-surface__mock {
    grid-column: 1; grid-row: 3;
    margin-top: 0;
  }

  /* On mobile the Board + Conf cards stand on their own so the min-height
     used to align mocks horizontally on desktop is unnecessary and
     creates a visible gap. Reset to natural height. */
  .bp-execp-surface:nth-of-type(3) .bp-execp-surface__sub,
  .bp-execp-surface:nth-of-type(4) .bp-execp-surface__sub {
    min-height: 0;
  }

  /* Press mock: cap visible thumb rows to 3 on mobile. Additional rows
     added later are hidden under the breakpoint. */
  .bp-execp-mock-press__row:nth-child(n+4) { display: none; }

  /* Press mock no longer needs to fill the card's full vertical height
     when stacked single-column, so let it sit at natural height. */
  .bp-execp-surface--press .bp-execp-surface__mock {
    flex: 0 0 auto;
  }

  /* Annual-report mock: stack the two "pages" vertically on mobile so
     the portrait page gets full mobile width (instead of ~95px squashed
     into a half column where the subject's head gets visually clipped).
     Drop the explicit 16/10 aspect-ratio so the mock takes natural
     height from the stacked content. */
  .bp-execp-mock-report {
    aspect-ratio: auto;
    flex-direction: column;
  }
  .bp-execp-mock-report__page:first-child {
    margin: 14px 14px 0;
  }
  .bp-execp-mock-report__page:last-child {
    margin: 6px 14px 14px;
  }
  .bp-execp-mock-report__crease { display: none; }
  .bp-execp-mock-report__portrait {
    /* Cap portrait width so it doesn't dominate the mobile mock card. */
    width: 50%;
    max-width: 200px;
  }
}

/* ============================================================================
   IMAGE FILLS  (real <img> tags in placeholder slots — §11 pattern)
   Every image slot is an aspect-ratio container with overflow:hidden.
   <img> direct-child fills it with object-fit:cover so any source aspect
   displays cleanly. border-radius:inherit makes circular thumb slots
   (press, conference) clip the photo to the parent's border-radius:50%.
   ============================================================================ */
.bp-execp-hero__portrait > img,
.bp-execp .bp-services-svc-card__media > img,
.bp-execp-look-card__img > img,
.bp-execp .bp-services-modes__media > img,
.bp-execp-mock-report__portrait > img,
.bp-execp-mock-leaders__cell > img,
.bp-execp-mock-press__thumb > img,
.bp-execp-mock-ir__portrait > img,
.bp-execp-mock-conf__thumb > img {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  /* Bias the crop toward the upper portion so faces in business
     portraits aren't clipped at the forehead when the slot's
     aspect-ratio differs from the source's. */
  object-position: 50% 20%;
  display:block;
  border-radius:inherit;
}

/* Hide the placeholder face-glow ::after pseudo on §3 mockup slots
   when a real <img> is present — otherwise the radial-gradient
   highlight sits over the photo's actual face. */
.bp-execp-mock-report__portrait:has(> img)::after,
.bp-execp-mock-leaders__cell:has(> img)::after,
.bp-execp-mock-press__thumb:has(> img)::after,
.bp-execp-mock-ir__portrait:has(> img)::after,
.bp-execp-mock-conf__thumb:has(> img)::after {
  display:none;
}

/* ============================================================================
   END EXECUTIVE PORTRAITS PAGE
   ============================================================================ */

/* ============================================================================
   SITEWIDE H1 HERO STANDARDIZATION (operator request 2026-05-23)
   ----------------------------------------------------------------------------
   All 6 page heroes use Contact's H1 sizing (clamp 28-60px) and the sitewide
   heading-font pattern (Poppins 500 base + Playfair Display Italic <em>).
   Top padding capped at 10px so the H1 sits close to the menu, matching the
   homepage rhythm. Targets: Contact, Master Service, FAQ, About, Pricing,
   and the Homepage hero (native section_image_with_text_7FKgfj).
   See master handoff §11 (heading font pattern) and §21 (operator
   preferences) for the pattern this implements.
   ============================================================================ */

.bp-contactpg-hero__title,
.bp-services-hero__title,
.bp-faq-hero__title,
.bp-about-hero__copy h1,
.bp-pricing-hero__title,
[id*="section_image_with_text_7FKgfj"] h1,
[id*="section_image_with_text_7FKgfj"] .h1 {
  font-family: 'Poppins', system-ui, sans-serif !important;
  font-weight: 500 !important;
  font-style: normal !important;
  font-size: clamp(28px, 5.5vw, 60px) !important;
  line-height: 1.08 !important;
  letter-spacing: -0.02em !important;
  color: #0b0b0b !important;
  margin: 0 0 24px !important;
  overflow-wrap: anywhere;
}

.bp-contactpg-hero__title em,
.bp-services-hero__title em,
.bp-faq-hero__title em,
.bp-about-hero__copy h1 em,
.bp-pricing-hero__title em,
[id*="section_image_with_text_7FKgfj"] h1 em,
[id*="section_image_with_text_7FKgfj"] .h1 em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important;
  font-weight: 400 !important;
  color: #0b0b0b !important;
}

/* Hero top padding capped at 10px from menu (desktop + mobile) */
.bp-services-hero,
.bp-faq-hero,
.bp-about-hero,
.bp-contactpg-hero,
.bp-pricing-hero {
  padding-top: 10px !important;
}
/* ============================================================================
   END SITEWIDE H1 HERO STANDARDIZATION
   ============================================================================ */


/* ============================================================================
   ACTIVE-PAGE INDICATOR ON TOP-LEVEL NAV
   ============================================================================

   When a top-level nav item matches the current page (Shopify sets the
   wrapping div to `.menu-item--active`), draw a permanent underline
   under that item — reusing the theme's existing .navtext::before
   pseudo-element so it visually matches the hover animation exactly.

   Hover interaction:
     - Mouse outside the nav  → active underline visible
     - Mouse hovers ANY other item in the nav → active underline
       retracts (scaleX 1 → 0). The hovered item plays its normal
       hover-draw animation.
     - Mouse hovers the active item itself → existing hover rule wins,
       underline stays/redraws via the standard animation.
     - Mouse leaves the nav → active underline draws back in.

   Specificity note: the rule that retracts the underline uses
   `.menu__items:hover .menu-item--active:not(:hover)` so it ONLY
   fires when a non-active item is being hovered, leaving the
   theme's `.navlink--toplevel > .navtext:hover::before` rule to
   handle the case where the active item itself is hovered.

   Book Your Portrait / Book a Session is excluded because that
   item is styled as a black pill (.book-portrait-button), not the
   underlined-text treatment — an underline under a pill would
   look wrong.
   ============================================================================ */

.menu-item--active > .navlink--toplevel:not(.book-portrait-button) > .navtext::before {
  transform: scaleX(1);
  transform-origin: left;
  transition: transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);
}

.menu__items:hover .menu-item--active:not(:hover) > .navlink--toplevel:not(.book-portrait-button) > .navtext::before {
  transform: scaleX(0);
  transform-origin: right;
}
/* ============================================================================
   END ACTIVE-PAGE INDICATOR
   ============================================================================ */
   ============================================================================ */

   ============================================================================ */

/* ============================================================================
   BLOG INDEX   (page handle: /blogs/blog)
   Editorial layout, hero with featured post, 2-column paginated grid,
   filter rail at the bottom. V1 designer mockup (Design System/blog/Blog
   Index/v1.jsx) translated into the master handoff's strict monochrome
   palette:
     - #d43747 design-red    -> ink #0b0b0b (blog index is not on the
                                 five-red-exceptions list, §6)
     - #eceae6 / #f4f3ef cream -> surface #fafafa
     - whole-heading Playfair  -> Poppins 500 base; Playfair italic restricted
                                 to <em> per §6 heading-font pattern (matches
                                 the .bp-hero--banner h1 pattern used on
                                 individual articles in blog.css)
   Cover images render at aspect-ratio 5/4 to honour the 1600x1280 standard.
   Stats strip + newsletter wedge from the original V1 are removed per
   operator review (2026-05-25); per-card blurb is now a metafield
   (article.metafields.custom.blurb) with a visible placeholder until the
   operator inserts copy. Pagination is left in the theme's stock styling.
   ============================================================================ */

.bp-blog-index {
  --bp-blog-ink: #0b0b0b;
  --bp-blog-ink-2: #333;
  --bp-blog-mute: #666;
  --bp-blog-line: #e0e0e0;
  --bp-blog-surface: #fafafa;
  --bp-blog-surface-2: #f5f5f5;
  --bp-blog-paper: #ffffff;
  background: var(--bp-blog-paper);
  color: var(--bp-blog-ink);
  /* Section is full-bleed; content inside is constrained to 1440 via
     .bp-blog-index-hero__inner and .bp-blog-index-gridwrap rules below
     (operator 2026-05-26, "full black width, but the 1440px is not
     applied" → full-bleed dark hero band, 1440-constrained content). */
}

.bp-blog-index a {
  text-decoration: none;
  color: inherit;
}

.bp-blog-index .visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* -------- HERO: split intro + featured post card on dark ink -------- */
.bp-blog-index-hero {
  /* Full-bleed dark band. Runs edge-to-edge across the viewport.
     The split-column content (intro + featured card) is constrained
     to 1440 via the .bp-blog-index-hero__inner child below. */
  background: #0b0b0b;
  color: #fff;
}
.bp-blog-index-hero__inner {
  /* Constrained 1440-wide content box inside the full-bleed band.
     Split layout: H1 + lede on the left (top-aligned), featured
     post card on the right (vertically centred for visual balance). */
  max-width: 1440px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  min-height: 560px;
  overflow: hidden;
}
.bp-blog-index-hero__intro {
  padding: 72px 56px 64px 64px;
  /* Block flow → H1 sits at the top of the column naturally; no
     vertical-centring flex/grid here. */
}
.bp-blog-index-hero__featured-wrap {
  padding: 48px 64px 48px 24px;
  display: flex; align-items: center;
  background: linear-gradient(160deg, #161616 0%, #0a0a0a 100%);
}
.bp-blog-index-hero__title {
  /* Sitewide H1 pattern per master handoff §6: Poppins 500 base; alt
     font (Playfair italic) only on <em>-wrapped words. Reverted from a
     brief whole-Playfair experiment per operator (2026-05-26) so the
     accent reads as a single editorial italic inside a sans headline. */
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-weight: 500;
  font-size: clamp(34px, 4.2vw, 56px);
  line-height: 1.06;
  letter-spacing: -0.02em;
  margin: 0 0 22px;
  color: #fff;
}
.bp-blog-index-hero__title em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
  color: #fff;
}
.bp-blog-index-hero__lede {
  font-size: 16px; line-height: 1.65;
  color: rgba(255,255,255,0.78);
  margin: 0;
  max-width: 540px;
}

/* Featured post card */
.bp-blog-index-featured {
  display: grid;
  grid-template-rows: auto 1fr;
  background: var(--bp-blog-paper);
  color: var(--bp-blog-ink);
  border-radius: 18px;
  overflow: hidden;
  width: 100%;
  box-shadow: 0 30px 70px -20px rgba(0,0,0,0.55);
}
.bp-blog-index-featured__media {
  position: relative;
  display: block;
  aspect-ratio: 5/4;
  overflow: hidden;
  background: var(--bp-blog-surface);
  /* 28px corner radius, matches card media + CTA for visual rhythm
     (operator 2026-05-27). */
  border-radius: 28px;
}
.bp-blog-index-featured__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.bp-blog-index-featured__pin {
  position: absolute; top: 16px; left: 16px;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  /* Hex literal; operator reported the pill disappeared on live
     (2026-05-26). var(--bp-blog-ink) wasn't resolving in their render
     (same issue as the hero background). */
  background: #0b0b0b;
  color: #fff;
  font-size: 10px; letter-spacing: 0.2em;
  text-transform: uppercase; font-weight: 600;
  border-radius: 999px;
  z-index: 2;  /* sit above the image */
}
/* Pulse on the inner dot only, not the whole pill (operator
   2026-05-28: "i meant the little dot only"). The dot is the
   ::before pseudo, recoloured white so the halo reads on the
   ink pill. Same animation pattern as the contact page status
   pulse, sized down for the smaller dot. */
.bp-blog-index-featured__pin::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 0 0 rgba(255,255,255,0);
  animation: bp-blog-index-featured-pin-dot-pulse 2s ease-out infinite;
}
@keyframes bp-blog-index-featured-pin-dot-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(255,255,255,0.55); }
  70%  { box-shadow: 0 0 0 8px rgba(255,255,255,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); }
}
.bp-blog-index-featured__body {
  padding: 26px 30px 28px;
  display: flex; flex-direction: column; gap: 12px;
}
.bp-blog-index-featured__meta {
  display: flex; align-items: center; gap: 10px;
  font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--bp-blog-mute); font-weight: 600;
}
.bp-blog-index-featured__meta .cat { color: var(--bp-blog-ink); }
.bp-blog-index-featured__meta .dot { color: rgba(0,0,0,0.2); }
.bp-blog-index-featured__title {
  /* Sitewide pattern: Poppins 500 base; Playfair italic only on <em>.
     When a title has no <em>, the alt font does not appear; that's
     the intended convention per master handoff §6 + writer note. */
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-weight: 500;
  font-size: clamp(22px, 1.9vw, 30px);
  line-height: 1.14;
  letter-spacing: -0.012em;
  margin: 0;
  color: var(--bp-blog-ink);
}
.bp-blog-index-featured__title em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
}
.bp-blog-index-featured__title a:hover { text-decoration: underline; }
/* .bp-blog-index-featured__dek is styled in the shared dek rule below
   alongside .bp-blog-index-card__dek (same treatment, single source). */
.bp-blog-index-featured__foot {
  padding-top: 12px; margin-top: 4px;
  border-top: 1px solid var(--bp-blog-line);
}
.bp-blog-index-featured__cta {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--bp-blog-ink); font-weight: 600;
}
.bp-blog-index-featured__cta svg { width: 14px; height: 14px; }
.bp-blog-index-featured__cta:hover { gap: 12px; }

/* Filter rail (tag chips + search) removed 2026-05-26 per operator;
   styles for .bp-blog-index-filters / -chip / -search are gone too.
   Tag-filtered /blogs/blog/tagged/<tag> URLs still resolve via Shopify
   auto-routing; the noindex,follow meta is in layout/theme.liquid. */

/* -------- GRID -------- */
.bp-blog-index-gridwrap {
  /* Constrained content box matching the hero's __inner width
     (operator 2026-05-26, section content capped at 1440 wide). */
  max-width: 1440px;
  margin: 0 auto;
  padding: 72px 64px 56px;
  background: var(--bp-blog-paper);
}
.bp-blog-index-gridhead {
  display: flex; align-items: end; justify-content: space-between;
  gap: 32px;
  margin-bottom: 40px;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--bp-blog-line);
}
.bp-blog-index-gridhead__title {
  /* Sitewide pattern: Poppins 500 base; Playfair italic only on <em>. */
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-weight: 500;
  font-size: clamp(28px, 3vw, 36px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
  color: var(--bp-blog-ink);
}
.bp-blog-index-gridhead__title em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
}
.bp-blog-index-gridhead__sub {
  font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--bp-blog-mute); font-weight: 600;
  white-space: nowrap;
}
.bp-blog-index-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 56px 40px;
}
.bp-blog-index-card {
  display: flex; flex-direction: column;
  color: var(--bp-blog-ink);
}
.bp-blog-index-card__media {
  position: relative;
  aspect-ratio: 5/4;
  border-radius: 28px;
  overflow: hidden;
  margin-bottom: 18px;
  background: var(--bp-blog-surface);
}
.bp-blog-index-card__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
/* Card media intentionally has no hover transform. Operator (2026-05-25)
   asked to disable the "jumps up on hover" animation. */
.bp-blog-index-card__cat {
  position: absolute; top: 14px; left: 14px;
  display: inline-block;
  padding: 6px 12px;
  background: rgba(255,255,255,0.95);
  color: var(--bp-blog-ink);
  font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase;
  font-weight: 600;
  border-radius: 999px;
}
.bp-blog-index-card__meta {
  display: flex; align-items: center; gap: 10px;
  font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--bp-blog-mute); font-weight: 600;
  margin-bottom: 10px;
}
.bp-blog-index-card__title {
  /* Sitewide pattern: Poppins 500 base; Playfair italic only on <em>.
     Cards with a Title accent metafield (custom.title_accent) get the
     italic phrase via snippets/article-title-accent.liquid; cards
     without one render plain Poppins. */
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-weight: 500;
  font-size: clamp(20px, 1.8vw, 26px);
  line-height: 1.18;
  letter-spacing: -0.01em;
  margin: 0 0 10px;
  color: var(--bp-blog-ink);
}
.bp-blog-index-card__title em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
}
.bp-blog-index-card:hover .bp-blog-index-card__title {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}
.bp-blog-index-card__dek,
.bp-blog-index-featured__dek {
  /* Sans body copy, not italic; matches V1's dek treatment using site
     fonts. Placeholder copy renders the same as real copy; the literal
     "Blurb place holder…" text is the only signal until the operator
     inserts article.metafields.custom.blurb in admin. */
  font-family: var(--FONT-STACK-BODY, "Poppins", system-ui, sans-serif);
  font-style: normal;
  font-size: 14px;
  line-height: 1.6;
  color: var(--bp-blog-ink-2);
  margin: 0 0 14px;
}

/* Tag chips below each card / featured dek. HIDDEN per operator
   2026-05-26. The markup stays in the section so flipping the
   display back is a one-line change if the decision reverses. */
.bp-blog-index-card__tags,
.bp-blog-index-featured__tags {
  display: none;
}
.bp-blog-index-tag {
  display: inline-flex; align-items: center;
  padding: 4px 10px;
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--bp-blog-mute);
  background: transparent;
  border: 1px solid var(--bp-blog-line);
  border-radius: 999px;
}

/* -------- PAGE-2+ HEADER STRIP --------
   Light split-row header that replaces the dark hero on pages 2+ of
   the blog index. Carries an H1 (Bing flagged blog?page=N as missing
   H1) plus a Page X / Y indicator on the right. Source design:
   Design System/blog/Blog Header Strip.html. */
.bp-blog-hdr {
  padding: 56px 64px 40px;
  background: var(--bp-blog-paper);
  border-bottom: 1px solid var(--bp-blog-line);
  max-width: 1440px;
  margin: 0 auto;
}
.bp-blog-hdr__inner {
  max-width: 1216px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 56px;
}
.bp-blog-hdr__title {
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-weight: 500;
  font-size: clamp(34px, 4vw, 48px);
  line-height: 1.05;
  letter-spacing: -0.015em;
  color: var(--bp-blog-ink);
  margin: 0 0 14px;
  max-width: 740px;
}
.bp-blog-hdr__title em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
}
.bp-blog-hdr__sub {
  font-size: 15px;
  line-height: 1.55;
  color: var(--bp-blog-ink-2);
  max-width: 600px;
  margin: 0;
}
.bp-blog-hdr__page {
  text-align: left;
  border-left: 1px solid var(--bp-blog-line);
  padding-left: 56px;
}
.bp-blog-hdr__num {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
  font-size: 72px;
  line-height: 1;
  color: var(--bp-blog-ink);
  letter-spacing: -0.02em;
}
.bp-blog-hdr__num span {
  color: var(--bp-blog-mute);
}
.bp-blog-hdr__label {
  margin-top: 10px;
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-weight: 600;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--bp-blog-mute);
}
@media (max-width: 1023px) {
  .bp-blog-hdr { padding: 48px 32px 32px; }
  .bp-blog-hdr__num { font-size: 56px; }
}
@media (max-width: 767px) {
  .bp-blog-hdr { padding: 36px 20px 28px; }
  .bp-blog-hdr__inner {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .bp-blog-hdr__title { font-size: 32px; }
  .bp-blog-hdr__page {
    text-align: left;
    border-left: none;
    border-top: 1px solid var(--bp-blog-line);
    padding-left: 0;
    padding-top: 20px;
  }
}

/* -------- BOTTOM-RIGHT HOUSE-AD CTA --------
   Fills the empty trailing slot on page 1 of the grid (when the featured
   article is skipped from the grid loop and the count goes odd → 11).
   Source: Design System/blog/Blog Index - Bottom-Right CTA - Dev Handoff.html
   Translated to bp- namespace + master-handoff monochrome palette (blog
   index is not on the §6 five-red-exceptions list, so design-red removed).
   Title uses Poppins 500 base + Playfair italic on <em> per §6 heading
   pattern. Actions are the site's standard .btn classes on dark, so they
   pick up the operator's existing hover treatment everywhere. */
.bp-blog-index-cta {
  /* Matches article card width (1fr in the 2-col grid) and aspect-ratio
     so the CTA sits flush with its siblings in the row. */
  aspect-ratio: 5 / 4;
  position: relative;
  border-radius: 28px;
  overflow: hidden;
  padding: 44px 48px;
  color: #fff;
  background:
    radial-gradient(circle at 82% 18%, rgba(255,255,255,0.06), transparent 55%),
    linear-gradient(160deg, #1a1a1a 0%, #0e0e0e 60%, #050505 100%);
  display: flex; flex-direction: column; justify-content: space-between;
}
.bp-blog-index-cta__title {
  /* Sitewide heading pattern: Poppins 500 base; Playfair italic only on <em>. */
  font-family: var(--FONT-STACK-HEADING, "Poppins", system-ui, sans-serif);
  font-weight: 500;
  font-size: clamp(28px, 3vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.018em;
  margin: 18px 0 0;
  color: #fff;
  max-width: 480px;
}
.bp-blog-index-cta__title em {
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-weight: 400;
  color: #fff;
}
.bp-blog-index-cta__foot {
  display: flex; flex-direction: column;
  gap: 18px;
}
.bp-blog-index-cta__sub {
  margin: 0;
  font-size: 13px; line-height: 1.55;
  color: rgba(255,255,255,0.72);
  max-width: 460px;
}
.bp-blog-index-cta__sub strong { color: #fff; font-weight: 500; }
.bp-blog-index-cta__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.bp-blog-index-cta__actions .btn {
  /* Pin button widths so they share the row evenly. */
  width: 100%;
  text-align: center;
  justify-content: center;
}
/* Solid white button text override. The CTA card sets color:#fff on
   the wrapper, which cascades into the btn--solid--white content and
   makes it invisible. Force ink text at rest; on hover, the site's
   invert-on-hover convention takes over (white text on dark fill,
   per bpca-theme-build-reference.md §6). Writer audit 2026-05-26. */
.bp-blog-index-cta .btn--solid.btn--white { color: #0b0b0b; }
.bp-blog-index-cta .btn--solid.btn--white:hover { color: #fff; }
@media (max-width: 1023px) {
  .bp-blog-index-cta { padding: 32px 36px; }
  .bp-blog-index-cta__title { font-size: clamp(24px, 4vw, 32px); }
}
@media (max-width: 540px) {
  .bp-blog-index-cta__actions { grid-template-columns: 1fr; }
}

/* -------- PAGINATION --------
   Pagination intentionally uses the theme's stock styling per operator
   (2026-05-25): "i like how the numbers looked in the original blog
   page at the bottom". Only the wrapper position is set here.        */
.bp-blog-index-pagination {
  margin-top: 56px;
  display: flex; justify-content: center;
}

/* -------- RESPONSIVE -------- */
@media (max-width: 1023px) {
  .bp-blog-index-hero__inner {
    /* Split collapses to stacked: H1+lede on top, featured below.
       The grid moved to __inner in the full-bleed restructure; this
       rule used to target .bp-blog-index-hero and was a no-op,
       which caused the featured card to overflow on mobile
       (operator 2026-05-26). */
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .bp-blog-index-hero__intro {
    padding: 56px 32px 32px;
  }
  .bp-blog-index-hero__featured-wrap {
    padding: 0 32px 56px;
  }
  .bp-blog-index-gridwrap {
    padding: 56px 32px 40px;
  }
}

@media (max-width: 767px) {
  .bp-blog-index-hero__intro {
    padding: 40px 20px 24px;
  }
  .bp-blog-index-hero__featured-wrap {
    padding: 0 20px 40px;
  }
  .bp-blog-index-gridwrap {
    padding-left: 20px; padding-right: 20px;
  }
  .bp-blog-index-grid {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .bp-blog-index-gridhead {
    flex-direction: column; align-items: flex-start; gap: 8px;
  }
  .bp-blog-index-featured__body {
    padding: 22px 22px 24px;
  }
}

/* ============================================================================
   END BLOG INDEX
   ============================================================================ */
   ============================================================================ */

/* ============================================================================
   TEAM HEADSHOTS PAGE   (page handle: team-headshots-toronto)
   Greys-only translation of the v2 Claude Design mockup
   (Design System/pages/Team Headshots Toronto v2.html). Design-red + salmon
   retired per §6/§21; .kicker eyebrows dropped per §21; header/footer chrome
   dropped per §23. Thesis = native section-text; FAQ = native section-accordions
   (auto FAQPage). All component classes page-scoped bp-team-*; each section also
   carries .bp-team so `.bp-team em` applies the Playfair-italic highlight. CTAs
   use the theme .btn classes (not redefined here). The §3 discount section and
   the final CTA are intentionally dark (#0a0a0a/#0b0b0b) — monochrome, per §20.
   ============================================================================ */

.bp-team em{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif) !important; font-style:var(--FONT-STYLE-HIGHLIGHT,italic) !important; font-weight:var(--FONT-WEIGHT-HIGHLIGHT,400) !important; }
/* Explicit per-heading em rules — the .bp-team em rule above carries
   !important but loses to inherited font-family on the H2 elements in
   practice (same render bug we hit on the H1 hero — see
   .bp-team-hero__title em below). Pinning each heading class directly
   guarantees Playfair italic on every <em> word in the page's titles
   (operator 2026-05-30: "alt font not rendering, it's just italic"). */
.bp-team-sect__h em,
.bp-team-pband__h em,
.bp-team-fcta__h em,
.bp-team-attrs__cell em,
.bp-team-vert__k em{
  font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",Georgia,serif) !important;
  font-style:italic !important;
  font-weight:400 !important;
}

/* hero */
.bp-team-hero{ padding:48px 60px 28px; }
.bp-team-hero__in{ max-width:1280px; margin:0 auto; }
.bp-team-hero__grid{ display:grid; grid-template-columns:1.04fr 0.96fr; gap:60px; align-items:start; }
.bp-team-hero__left{ padding-top:8px; min-width:0; }
.bp-team-hero__title{ font-family:Poppins,sans-serif; font-weight:500; font-size:clamp(38px,5vw,62px); line-height:1.04; letter-spacing:-0.025em; margin:0 0 22px; overflow-wrap:anywhere; }
/* Explicit em override on the H1 so "Toronto" renders in Playfair italic.
   .bp-team em (10993) already sets this with !important, but operator
   reported (2026-05-29) that Toronto was rendering in the Poppins base.
   Pinning the rule directly to the title element guarantees specificity. */
.bp-team-hero__title em{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",Georgia,serif) !important; font-style:italic !important; font-weight:400 !important; }
.bp-team-hero__lede{ font-size:17px; line-height:1.66; color:#2a2a2a; max-width:54ch; margin:0 0 30px; }
.bp-team-hero__lede strong{ font-weight:600; color:#0a0a0a; }
.bp-team-hero__cta{ display:flex; gap:12px; flex-wrap:wrap; }
.bp-team-proof{ border:1px solid #e8e8e8; border-radius:28px; overflow:hidden; background:#fff; box-shadow:0 30px 70px -40px rgba(0,0,0,0.4); margin:0; }
.bp-team-proof__bar{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 18px; border-bottom:1px solid #e8e8e8; }
.bp-team-proof__bar .l{ font-size:10px; letter-spacing:0.2em; text-transform:uppercase; font-weight:600; color:#666; }
.bp-team-proof__bar .n{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:15px; color:#0a0a0a; white-space:nowrap; flex-shrink:0; }
.bp-team-proof__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:3px; background:#e8e8e8; }
.bp-team-proof__grid img{ width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; display:block; background:#fafafa; }
.bp-team-proof__cap{ padding:13px 18px; border-top:1px solid #e8e8e8; font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:13.5px; color:#666; }
.bp-team-proof__grid button{ display:block; padding:0; margin:0; border:0; background:none; cursor:pointer; font:inherit; color:inherit; width:100%; }
.bp-team-proof__grid button:hover img{ opacity:0.92; }
@media (max-width:1000px){ .bp-team-hero__grid{ grid-template-columns:1fr; gap:38px; } .bp-team-hero{ padding:32px 20px 18px; } }

/* by-the-numbers attrs */
.bp-team-attrs{ padding:34px 60px; border-top:1px solid #e8e8e8; border-bottom:1px solid #e8e8e8; }
.bp-team-attrs__row{ max-width:1280px; margin:0 auto; display:grid; grid-template-columns:repeat(5,1fr); gap:30px; }
.bp-team-attrs__cell{ padding-left:14px; border-left:2px solid #0a0a0a; font-weight:500; font-size:15px; line-height:1.42; letter-spacing:-0.005em; }
@media (max-width:1000px){ .bp-team-attrs__row{ grid-template-columns:repeat(2,1fr); gap:18px; } .bp-team-attrs{ padding:26px 20px; } }
@media (max-width:560px){ .bp-team-attrs__row{ grid-template-columns:1fr; } }

/* numbered overview */
.bp-team-ov__grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:22px; margin-top:6px; }
.bp-team-ov__item{ padding-top:18px; border-top:2px solid #0a0a0a; display:block; text-decoration:none; color:inherit; transition:opacity .15s ease; }
.bp-team-ov__item:hover{ opacity:0.6; }
.bp-team-ov__num{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:34px; color:#0a0a0a; line-height:1; display:block; margin-bottom:14px; }
.bp-team-ov__item p{ font-size:14.5px; line-height:1.5; font-weight:500; letter-spacing:-0.005em; margin:0; }
@media (max-width:1000px){ .bp-team-ov__grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .bp-team-ov__grid{ grid-template-columns:1fr; } }

/* generic section shell */
.bp-team-sect{ padding:88px 60px; }
.bp-team-sect--alt{ background:#fafafa; }
.bp-team-sect__in{ max-width:1280px; margin:0 auto; }
.bp-team-sect__h{ font-family:Poppins,sans-serif; font-weight:500; font-size:clamp(28px,4vw,44px); line-height:1.08; letter-spacing:-0.02em; margin:0 0 22px; max-width:24ch; }
.bp-team-sect__intro{ font-size:16px; line-height:1.72; color:#2a2a2a; max-width:720px; margin:0 0 14px; }
.bp-team-sect__intro:last-of-type{ margin-bottom:0; }
.bp-team-sect__intro strong{ font-weight:600; color:#0a0a0a; }
.bp-team-sect__intro a{ color:#0a0a0a; text-decoration:underline; text-underline-offset:3px; }
.bp-team-sect__intro--wide{ max-width:none; }
@media (max-width:1000px){ .bp-team-sect{ padding:60px 20px; } }

/* split (text + device) */
.bp-team-split{ display:grid; grid-template-columns:1.25fr 1fr; gap:56px; align-items:start; margin-top:40px; }
.bp-team-split__copy p{ font-size:15px; line-height:1.74; color:#2a2a2a; margin:0 0 15px; }
.bp-team-split__copy p:last-child{ margin-bottom:0; }
.bp-team-split__copy strong{ font-weight:600; color:#0a0a0a; }
@media (max-width:1000px){ .bp-team-split{ grid-template-columns:1fr; gap:34px; } }

/* §1 format cards */
.bp-team-formats{ display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.bp-team-fmt{ border:1px solid #e8e8e8; border-radius:18px; padding:28px 26px; display:flex; flex-direction:column; background:#fff; }
.bp-team-fmt--dark{ background:#0a0a0a; border-color:#0a0a0a; color:#fff; }
.bp-team-fmt__num{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:30px; color:#0a0a0a; line-height:1; margin-bottom:18px; }
.bp-team-fmt--dark .bp-team-fmt__num{ color:rgba(255,255,255,0.85); }
.bp-team-fmt__name{ font-size:25px; font-weight:500; letter-spacing:-0.015em; margin:0 0 12px; }
.bp-team-fmt--dark .bp-team-fmt__name{ color:#fff; }
.bp-team-fmt__desc{ font-size:14px; line-height:1.6; color:#2a2a2a; margin:0; }
.bp-team-fmt--dark .bp-team-fmt__desc{ color:rgba(255,255,255,0.72); }
@media (max-width:560px){ .bp-team-formats{ grid-template-columns:1fr; } }

/* §2 milestone track */
.bp-team-track{ margin-top:44px; }
.bp-team-track__line{ display:grid; grid-template-columns:repeat(6,1fr); gap:14px; position:relative; }
.bp-team-track__line::before{ content:""; position:absolute; left:5%; right:5%; top:7px; height:2px; background:#e8e8e8; }
.bp-team-ms{ position:relative; }
.bp-team-ms__dot{ width:16px; height:16px; border-radius:50%; background:#fff; border:2px solid #0a0a0a; position:relative; z-index:1; margin-bottom:16px; }
.bp-team-ms--hot .bp-team-ms__dot{ background:#0a0a0a; }
.bp-team-ms__when{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:20px; color:#0a0a0a; margin-bottom:8px; }
.bp-team-ms__label{ font-size:12.5px; line-height:1.5; color:#2a2a2a; }
.bp-team-ms__label b{ font-weight:600; color:#0a0a0a; display:block; margin-bottom:2px; }
@media (max-width:900px){ .bp-team-track__line{ grid-template-columns:1fr 1fr 1fr; gap:24px 14px; } .bp-team-track__line::before{ display:none; } }
/* Mobile: stack the timeline milestones one per row instead of a 2-col grid
   (operator 2026-05-29: "looks odd as a 2 columns"). */
@media (max-width:520px){ .bp-team-track__line{ grid-template-columns:1fr; gap:22px; } }

/* §3 dark discount chart */
.bp-team-sect--pricing{ background:#0a0a0a; color:#fff; }
.bp-team-sect--pricing .bp-team-sect__h{ color:#fff; }
.bp-team-sect--pricing .bp-team-sect__intro{ color:rgba(255,255,255,0.74); }
.bp-team-sect--pricing .bp-team-sect__intro strong{ color:#fff; }
.bp-team-chart{ margin-top:48px; }
.bp-team-chart__plot{ display:grid; grid-template-columns:repeat(10,1fr); gap:10px; align-items:end; height:280px; }
.bp-team-col{ display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; }
.bp-team-col__pct{ font-weight:600; font-size:14px; color:#fff; margin-bottom:8px; }
.bp-team-col__bar{ width:100%; max-width:54px; border-radius:6px 6px 0 0; background:linear-gradient(180deg,#5a5a5a,#2a2a2a); }
.bp-team-col--hot .bp-team-col__bar{ background:linear-gradient(180deg,#ffffff,#9a9a9a); }
.bp-team-chart__axis{ display:grid; grid-template-columns:repeat(10,1fr); gap:10px; margin-top:12px; padding-top:12px; border-top:1px solid rgba(255,255,255,0.16); }
.bp-team-chart__axis span{ text-align:center; font-size:11px; color:rgba(255,255,255,0.6); }
.bp-team-chart__axis span.is-hot{ color:#fff; font-weight:600; }
@media (max-width:900px){ .bp-team-chart__plot{ height:200px; gap:5px; } .bp-team-col__pct{ font-size:11px; } .bp-team-chart__axis{ gap:5px; } .bp-team-chart__axis span{ font-size:9px; } }
.bp-team-worked{ margin-top:44px; display:grid; grid-template-columns:1.2fr 1fr; gap:40px; align-items:center; background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.14); border-radius:28px; padding:34px 36px; }
.bp-team-worked__steps{ display:flex; flex-direction:column; gap:12px; }
.bp-team-worked__step{ display:flex; align-items:baseline; justify-content:space-between; gap:18px; font-size:14px; color:rgba(255,255,255,0.66); border-bottom:1px solid rgba(255,255,255,0.1); padding-bottom:11px; }
.bp-team-worked__step:last-child{ border-bottom:none; padding-bottom:0; }
.bp-team-worked__step b{ font-weight:600; color:#fff; }
.bp-team-worked__step .neg{ color:#fff; font-weight:600; }
.bp-team-worked__total{ text-align:left; }
.bp-team-worked__total .l{ font-size:11px; letter-spacing:0.2em; text-transform:uppercase; color:rgba(255,255,255,0.55); font-weight:600; margin-bottom:10px; }
.bp-team-worked__total .big{ font-weight:500; font-size:64px; line-height:1; letter-spacing:-0.03em; }
.bp-team-worked__total .note{ font-size:12.5px; line-height:1.6; color:rgba(255,255,255,0.55); margin-top:14px; }
@media (max-width:760px){ .bp-team-worked{ grid-template-columns:1fr; gap:26px; padding:26px 22px; } .bp-team-worked__total .big{ font-size:48px; } }
.bp-team-pricelink{ margin-top:30px; font-size:15px; line-height:1.7; color:rgba(255,255,255,0.74); max-width:none; }
.bp-team-pricelink a{ color:#fff; text-decoration:underline; text-underline-offset:3px; }

/* §4 config bands */
.bp-team-bands{ margin-top:44px; border-top:1px solid #e8e8e8; }
.bp-team-band{ display:grid; grid-template-columns:80px 1.35fr 1.05fr; gap:40px; align-items:center; padding:40px 0; border-bottom:1px solid #e8e8e8; }
.bp-team-band__num{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:46px; color:#0a0a0a; line-height:1; }
.bp-team-band__h{ font-size:22px; font-weight:500; letter-spacing:-0.015em; margin:0 0 10px; }
.bp-team-band__p{ font-size:14.5px; line-height:1.7; color:#2a2a2a; margin:0; }
.bp-team-band__p strong{ font-weight:600; color:#0a0a0a; }
.bp-team-band__mark{ text-align:right; }
.bp-team-band__call{ display:inline-block; text-align:right; max-width:360px; }
.bp-team-band__call .big{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-weight:500; font-size:40px; line-height:1.04; color:#0a0a0a; letter-spacing:-0.01em; }
.bp-team-band__call .sub{ display:block; font-size:13.5px; line-height:1.6; color:#666; margin-top:12px; }
.bp-team-band__composite{ display:grid; grid-template-columns:repeat(3,1fr); gap:7px; width:100%; max-width:420px; margin-left:auto; }
.bp-team-band__composite img{ width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; border-radius:10px; background:#fafafa; display:block; }
.bp-team-band__photo{ width:100%; max-width:460px; margin-left:auto; aspect-ratio:2/1; border-radius:14px; overflow:hidden; background:#fff; border:1px solid #e8e8e8; padding:10px 10px 0; display:flex; align-items:center; justify-content:center; }
.bp-team-band__photo > img{ width:100%; height:100%; object-fit:cover; display:block; }
.bp-team-band__photo-cap{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:13px; color:#9a9a9a; padding:0 16px; text-align:center; }
@media (max-width:900px){ .bp-team-band{ grid-template-columns:60px 1fr; gap:18px; } .bp-team-band__mark{ grid-column:1 / -1; text-align:left; margin-top:4px; } .bp-team-band__num{ font-size:34px; } .bp-team-band__call{ text-align:left; max-width:none; } .bp-team-band__call .big{ font-size:34px; } .bp-team-band__composite{ margin-left:0; max-width:380px; } .bp-team-band__photo{ margin-left:0; max-width:380px; } }
/* Mobile: fully stack the bands (num on its own line, then heading+body, then
   mark) instead of the 60px+1fr split. Operator 2026-05-29: "needs to be one
   on top of one another". */
@media (max-width:560px){ .bp-team-band{ grid-template-columns:1fr; gap:12px; padding:32px 0; } .bp-team-band__num{ grid-column:auto; font-size:30px; margin-bottom:4px; } .bp-team-band__mark{ grid-column:auto; margin-top:8px; } }

/* §5 verticals + tiers */
.bp-team-verts{ border-top:1px solid #e8e8e8; margin-top:8px; }
.bp-team-vert{ display:grid; grid-template-columns:280px 1fr; gap:36px; padding:20px 0; border-bottom:1px solid #e8e8e8; align-items:baseline; }
.bp-team-vert__k{ font-size:16px; font-weight:600; letter-spacing:-0.005em; }
.bp-team-vert__v{ font-size:14px; line-height:1.6; color:#2a2a2a; }
@media (max-width:760px){ .bp-team-vert{ grid-template-columns:1fr; gap:6px; padding:16px 0; } }
.bp-team-subs{ margin-top:48px; }
.bp-team-subs__lead{ font-size:16px; line-height:1.72; color:#2a2a2a; max-width:760px; margin:0 0 24px; }
.bp-team-subs__lead a{ color:#0a0a0a; text-decoration:underline; text-underline-offset:3px; }
.bp-team-subs__lead strong{ font-weight:600; color:#0a0a0a; }
.bp-team-tiers{ display:grid; grid-template-columns:repeat(3,1fr); border:1px solid #e8e8e8; border-radius:18px; overflow:hidden; }
.bp-team-tier{ padding:26px 24px; border-right:1px solid #e8e8e8; }
.bp-team-tier:last-child{ border-right:none; }
.bp-team-tier--feat{ position:relative; }
.bp-team-tier--feat::before{ content:""; position:absolute; left:0; right:0; top:0; height:3px; background:#0a0a0a; }
.bp-team-tier__name{ font-size:12px; font-weight:600; letter-spacing:0.12em; text-transform:uppercase; color:#666; margin:0 0 12px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.bp-team-tier__name .flag{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:11px; text-transform:none; letter-spacing:0; color:#666; }
.bp-team-tier__price{ font-size:36px; font-weight:500; letter-spacing:-0.025em; line-height:1; }
.bp-team-tier__price small{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-size:14px; color:#666; margin-left:6px; }
.bp-team-tier__credit{ font-size:13px; line-height:1.6; color:#2a2a2a; margin:14px 0 0; }
/* Mobile: replace the thick ink top-bar on the featured tier with the same
   thin hair-line used between stacked tiers. Operator 2026-05-29: "thick
   black bar looks out of place on mobile, should have same thin breaking
   line". */
@media (max-width:760px){ .bp-team-tiers{ grid-template-columns:1fr; } .bp-team-tier{ border-right:none; border-bottom:1px solid #e8e8e8; } .bp-team-tier:last-child{ border-bottom:none; } .bp-team-tier--feat::before{ display:none; } }
.bp-team-pilot{ margin-top:24px; font-size:15px; line-height:1.72; color:#2a2a2a; max-width:880px; }
.bp-team-pilot strong{ font-weight:600; color:#0a0a0a; }

/* comparison table */
.bp-team-cmp{ margin-top:40px; border:1px solid #e8e8e8; border-radius:18px; overflow:hidden; }
.bp-team-cmp__grid{ display:grid; grid-template-columns:1.1fr 1fr 1.1fr 1fr; }
.bp-team-cmp__cell{ padding:18px 20px; border-bottom:1px solid #e8e8e8; border-right:1px solid #e8e8e8; font-size:13px; line-height:1.55; color:#2a2a2a; }
.bp-team-cmp__cell:nth-child(4n){ border-right:none; }
.bp-team-cmp__grid > .bp-team-cmp__cell:nth-last-child(-n+4){ border-bottom:none; }
.bp-team-cmp__cell--crit{ font-weight:600; font-size:12px; color:#0a0a0a; background:#fafafa; }
.bp-team-cmp__cell--feat{ background:#fafafa; }
.bp-team-cmp__cell a{ color:#0a0a0a; text-underline-offset:2px; }
.bp-team-cmp__head{ padding:20px; font-weight:600; font-size:15px; letter-spacing:-0.005em; color:#0a0a0a; border-bottom:2px solid #0a0a0a; }
.bp-team-cmp__head--feat{ background:#0a0a0a; color:#fff; }
.bp-team-cmp__head small{ display:block; font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-weight:400; font-size:12px; color:#666; margin-top:4px; }
.bp-team-cmp__head--feat small{ color:rgba(255,255,255,0.7); }
.bp-team-cmp__corner{ padding:20px; border-bottom:2px solid #0a0a0a; background:#fff; }
.bp-team-choose{ margin-top:26px; padding:24px 28px; background:#fafafa; border-radius:18px; font-size:14px; line-height:1.75; color:#2a2a2a; }
.bp-team-choose strong{ font-weight:600; color:#0a0a0a; }
.bp-team-cmp-cards{ display:none; }
@media (max-width:920px){
  .bp-team-cmp{ display:none; }
  .bp-team-cmp-cards{ display:flex; flex-direction:column; gap:16px; margin-top:34px; }
  .bp-team-cmp-card{ border:1px solid #e8e8e8; border-radius:18px; overflow:hidden; }
  .bp-team-cmp-card__h{ font-weight:600; font-size:16px; color:#fff; background:#0a0a0a; padding:16px 20px; }
  .bp-team-cmp-card__h small{ display:block; font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-weight:400; font-size:12px; color:rgba(255,255,255,0.7); margin-top:3px; }
  .bp-team-cmp-card__row{ padding:14px 20px; border-top:1px solid #e8e8e8; }
  .bp-team-cmp-card__k{ font-weight:600; font-size:11px; letter-spacing:0.06em; text-transform:uppercase; color:#666; margin-bottom:5px; }
  .bp-team-cmp-card__v{ font-size:13.5px; line-height:1.55; color:#2a2a2a; }
}

/* pricing context band */
.bp-team-pband{ padding:74px 60px; border-top:1px solid #e8e8e8; border-bottom:1px solid #e8e8e8; }
.bp-team-pband__in{ max-width:1280px; margin:0 auto; display:grid; grid-template-columns:1.2fr 1fr; gap:60px; align-items:center; }
.bp-team-pband__h{ font-family:Poppins,sans-serif; font-weight:500; font-size:clamp(26px,3.4vw,34px); letter-spacing:-0.02em; line-height:1.12; margin:0 0 16px; max-width:18ch; }
.bp-team-pband__p{ font-size:15px; line-height:1.72; color:#2a2a2a; max-width:520px; margin:0; }
.bp-team-pband__p a{ color:#0a0a0a; text-decoration:underline; text-underline-offset:3px; }
.bp-team-pband__card{ background:#fafafa; border-radius:18px; padding:32px 34px; }
.bp-team-pband__floor{ font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:#666; font-weight:600; margin-bottom:14px; }
.bp-team-pband__amt{ font-family:var(--FONT-STACK-HIGHLIGHT,"Playfair Display",serif); font-style:italic; font-weight:400; font-size:clamp(44px,6vw,64px); letter-spacing:-0.02em; line-height:1; }
.bp-team-pband__amt small{ font-family:Poppins,sans-serif; font-style:normal; font-weight:400; font-size:13px; letter-spacing:0.02em; color:#666; margin-left:8px; }
.bp-team-pband__note{ font-size:13px; line-height:1.65; color:#2a2a2a; margin:16px 0 0; }
@media (max-width:900px){ .bp-team-pband__in{ grid-template-columns:1fr; gap:32px; } .bp-team-pband{ padding:54px 20px; } }

/* expertise */
.bp-team-exp{ padding:52px 60px; border-top:1px solid #e8e8e8; }
.bp-team-exp__in{ max-width:1040px; margin:0 auto; display:grid; grid-template-columns:160px 1fr; gap:48px; align-items:start; }
.bp-team-exp__l{ font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:#0a0a0a; font-weight:600; padding-top:12px; border-top:1px solid #0a0a0a; }
.bp-team-exp__p{ margin:0; font-size:15px; line-height:1.75; color:#2a2a2a; }
.bp-team-exp__p strong{ font-weight:600; color:#0a0a0a; }
.bp-team-exp__p a{ color:#0a0a0a; text-decoration:underline; text-underline-offset:3px; }
@media (max-width:760px){ .bp-team-exp__in{ grid-template-columns:1fr; gap:16px; } }

/* final CTA */
.bp-team-fcta{ padding:104px 60px; background:#0b0b0b; color:#fff; text-align:center; position:relative; overflow:hidden; }
.bp-team-fcta::before{ content:""; position:absolute; inset:0; background:radial-gradient(circle at 80% 74%, rgba(255,255,255,0.05), transparent 50%); }
.bp-team-fcta > *{ position:relative; }
.bp-team-fcta__h{ font-family:Poppins,sans-serif; font-weight:500; font-size:clamp(30px,4vw,46px); line-height:1.08; letter-spacing:-0.02em; margin:0 auto 28px; max-width:16ch; color:#fff; }
.bp-team-fcta__h em{ color:rgba(255,255,255,0.78); }
.bp-team-fcta__p{ max-width:56ch; margin:0 auto 26px; color:rgba(255,255,255,0.72); font-size:16.5px; line-height:1.55; }
.bp-team-fcta__actions{ display:flex; gap:14px; justify-content:center; align-items:center; flex-wrap:wrap; }
.bp-team-fcta__tertiary{ display:inline-block; margin-top:24px; font-size:13px; color:rgba(255,255,255,0.66); text-decoration:underline; text-underline-offset:4px; letter-spacing:0.04em; }
.bp-team-fcta__tertiary:hover{ color:#fff; }
@media (max-width:560px){ .bp-team-fcta{ padding:64px 20px; } }

/* ============================================================================
   END TEAM HEADSHOTS PAGE
   ============================================================================ */

/* ============================================================================
   LINKEDIN HEADSHOTS PAGE — V2   (page handle: linkedin-headshots)
   Namespace: bp-li-*  (parallel to bp-execp / bp-team). Built on the shared
   bp-services-* shell + bp-about-finalcta, scoped via the .bp-li co-class so the
   shared shell and the Services page are never disturbed.
   Source design: /Design System/pages/linkedin-headshots.html
   Copy locked: page-09 copy-draft.md. Monochrome + bp-svc-red accent (the
   services-page red exception, handoff §6). No cream. Em-dash-free.
   ============================================================================ */

/* tokens + em accent for the standalone .bp-li sections that don't carry .bp-services */
.bp-li{
  --bp-svc-ink:#0a0a0a; --bp-svc-ink-2:#2a2a2a; --bp-svc-mute:#666;
  --bp-svc-hair:#e8e8e8; --bp-svc-paper:#ffffff; --bp-svc-neutral:#fafafa;
  --bp-svc-red:#d43747; --bp-svc-red-soft:rgba(212,55,71,0.08);
  --bp-svc-r-md:20px; --bp-svc-r-lg:28px; --bp-svc-r-pill:999px;
}
.bp-li em{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important; font-weight: 400 !important;
}

/* ---------- HERO (overrides of the shared bp-services-hero) ---------- */
.bp-li.bp-services-hero{ padding:52px 60px 28px; }
.bp-li .bp-services-hero__crumb a{ color:var(--bp-svc-mute); text-decoration:none; }
.bp-li .bp-services-hero__crumb a:hover{ color:var(--bp-svc-ink); }
.bp-li .bp-services-hero__grid{ grid-template-columns:1.06fr 1fr; gap:56px; align-items:center; }
.bp-li .bp-services-hero__sub{ font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--bp-svc-red); font-weight:600; margin:0 0 16px; }
.bp-li .bp-services-hero__title{ font-size:60px; line-height:1.08; letter-spacing:-0.022em; margin:0 0 22px; max-width:660px; }
.bp-li .bp-services-hero__lede{ font-size:16.5px; line-height:1.65; margin:0 0 30px; max-width:600px; }
.bp-li .bp-services-hero__lede strong{ font-weight:600; color:var(--bp-svc-ink); }
.bp-li .bp-services-hero__lede a{ color:var(--bp-svc-ink); text-decoration:underline; text-underline-offset:3px; }
.bp-li .bp-services-hero__cta{ display:flex; gap:12px; flex-wrap:wrap; margin-bottom:30px; }
.bp-li .bp-services-hero__micro{ display:flex; flex-wrap:wrap; gap:0; padding-top:26px; border-top:1px solid var(--bp-svc-hair); font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; }
.bp-li .bp-services-hero__micro span + span::before{ content:"\00B7"; margin:0 12px; color:#bbb; }

/* profile-preview device (original, non-branded) */
.bp-li-profile{ position:relative; justify-self:center; width:100%; max-width:392px; background:#fff; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-lg); box-shadow:0 30px 70px -34px rgba(0,0,0,0.32); overflow:hidden; }
.bp-li-profile__cover{ height:84px; background:linear-gradient(120deg,#1a1a1a,#3a3a3a); }
.bp-li-profile__shot{ position:absolute; left:28px; top:38px; width:108px; height:108px; border-radius:50%; border:5px solid #fff; overflow:hidden; background:var(--bp-svc-neutral); box-shadow:0 8px 22px -10px rgba(0,0,0,0.4); }
.bp-li-profile__shot img{ width:100%; height:100%; object-fit:cover; object-position:50% 22%; }
.bp-li-profile__live{ position:absolute; right:18px; top:96px; display:inline-flex; align-items:center; gap:7px; background:#fff; border:1px solid var(--bp-svc-hair); border-radius:999px; padding:6px 12px 6px 11px; font-size:10px; font-weight:600; letter-spacing:0.12em; text-transform:uppercase; color:var(--bp-svc-ink); box-shadow:0 8px 22px -12px rgba(0,0,0,0.4); }
.bp-li-profile__dot{ width:8px; height:8px; border-radius:50%; background:var(--bp-svc-red); box-shadow:0 0 0 0 rgba(212,55,71,0.5); animation:bpliPulse 2s infinite; }
@keyframes bpliPulse{ 0%{box-shadow:0 0 0 0 rgba(212,55,71,0.5);} 70%{box-shadow:0 0 0 7px rgba(212,55,71,0);} 100%{box-shadow:0 0 0 0 rgba(212,55,71,0);} }
.bp-li-profile__body{ padding:54px 28px 26px; }
.bp-li-profile__name{ font-family:Poppins,sans-serif; font-weight:600; font-size:21px; letter-spacing:-0.01em; color:var(--bp-svc-ink); margin:0 0 6px; }
.bp-li-profile__role{ font-size:13.5px; line-height:1.5; color:var(--bp-svc-ink-2); margin:0 0 4px; }
.bp-li-profile__meta{ font-size:12px; color:var(--bp-svc-mute); margin:0 0 18px; }
.bp-li-profile__bars{ display:flex; flex-direction:column; gap:9px; padding-top:18px; border-top:1px solid var(--bp-svc-hair); }
.bp-li-profile__bar{ height:9px; border-radius:5px; background:var(--bp-svc-neutral); }
.bp-li-profile__bar:nth-child(2){ width:82%; } .bp-li-profile__bar:nth-child(3){ width:64%; }
.bp-li-profile__cap{ margin:0; padding:13px 28px; border-top:1px solid var(--bp-svc-hair); background:var(--bp-svc-neutral); font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:12.5px; color:var(--bp-svc-mute); }

/* ---------- TRUST ROSTER ---------- */
.bp-li-trust{ background:#fff; padding:40px 60px; border-top:1px solid var(--bp-svc-hair); border-bottom:1px solid var(--bp-svc-hair); }
.bp-li-trust__inner{ max-width:1280px; margin:0 auto; display:grid; grid-template-columns:230px 1fr; gap:48px; align-items:center; }
.bp-li-trust__h{ font-family:Poppins,sans-serif; font-weight:600; font-size:13px; letter-spacing:0.12em; text-transform:uppercase; color:var(--bp-svc-ink); margin:0; line-height:1.5; }
.bp-li-trust__h em{ display:block; color:var(--bp-svc-red); font-size:24px; letter-spacing:0; text-transform:none; margin-top:4px; }
.bp-li-trust__names{ display:flex; flex-wrap:wrap; gap:10px 0; }
.bp-li-trust__names span{ font-family:Poppins,sans-serif; font-weight:600; font-size:14px; letter-spacing:-0.005em; color:var(--bp-svc-ink-2); padding:0 16px; border-left:1px solid var(--bp-svc-hair); }
.bp-li-trust__names span:first-child{ border-left:none; padding-left:0; }

/* ---------- THESIS label (reuses shared bp-services-thesis) ---------- */
.bp-li .bp-services-thesis__label{ font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--bp-svc-red); font-weight:600; margin-bottom:18px; }
.bp-li .bp-services-thesis blockquote{ font-style:normal; } /* override Palo Alto default blockquote italic; em still italic via .bp-li em */
.bp-li .bp-services-thesis blockquote em{ color:var(--bp-svc-ink); }

/* ---------- generic section padding (matches exec/team spokes) ---------- */
.bp-li.bp-services-sect{ padding:88px 60px; }
.bp-li .bp-services-sect__intro a{ color:var(--bp-svc-ink); text-decoration:underline; text-underline-offset:3px; }

/* ---------- EXAMPLES GALLERY ---------- */
.bp-li-gallery{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:8px; }
.bp-li-shot{ position:relative; aspect-ratio:1/1; border-radius:var(--bp-svc-r-md); overflow:hidden; background:var(--bp-svc-neutral); border:1px solid var(--bp-svc-hair); margin:0; }
.bp-li-shot img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.bp-li-shot__tag{ position:absolute; left:12px; bottom:12px; display:inline-flex; align-items:center; gap:7px; font-family:Poppins,sans-serif; font-size:10px; font-weight:600; letter-spacing:0.1em; text-transform:uppercase; color:var(--bp-svc-ink); background:rgba(255,255,255,0.92); border-radius:999px; padding:6px 12px; backdrop-filter:blur(2px); }
.bp-li-shot__tag .d{ width:8px; height:8px; border-radius:50%; background:var(--bp-svc-ink); }
.bp-li-shot--pop .bp-li-shot__tag{ color:#fff; background:var(--bp-svc-ink); }
.bp-li-shot--pop .bp-li-shot__tag .d{ background:#fff; }

/* ---------- WHY 800+ CHOOSE US ---------- */
.bp-li-why{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; margin-top:8px; border-top:1px solid var(--bp-svc-hair); border-left:1px solid var(--bp-svc-hair); }
.bp-li-why__cell{ padding:26px 26px 24px; border-right:1px solid var(--bp-svc-hair); border-bottom:1px solid var(--bp-svc-hair); display:flex; flex-direction:column; gap:10px; text-decoration:none; color:inherit; transition:background 160ms ease; }
.bp-li-why__cell:hover{ background:var(--bp-svc-neutral); }
.bp-li-why__num{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:26px; color:#444; line-height:1; }
.bp-li-why__label{ font-family:Poppins,sans-serif; font-weight:600; font-size:17px; letter-spacing:-0.01em; color:var(--bp-svc-ink); line-height:1.3; }
.bp-li-why__more{ margin-top:auto; font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; display:inline-flex; align-items:center; gap:6px; }
.bp-li-why__cell:hover .bp-li-why__more{ color:var(--bp-svc-ink); }

/* ---------- BACKDROP STYLE ---------- */
.bp-li-backdrops{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:8px; }
.bp-li-bd{ background:#fff; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); overflow:hidden; display:flex; flex-direction:column; }
.bp-li-bd__photo{ position:relative; aspect-ratio:1/1; overflow:hidden; background:var(--bp-svc-neutral); border-bottom:1px solid var(--bp-svc-hair); }
.bp-li-bd__photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.bp-li-bd__photo--colour{ transition:background 260ms ease; } /* cutout PNG over a solid colour layer (cart-drawer backdrop-preview mechanism) */
.bp-li-bd__hint{ position:absolute; right:12px; bottom:14px; z-index:3; font-family:Poppins,sans-serif; font-size:9px; font-weight:600; letter-spacing:0.14em; text-transform:uppercase; color:#fff; background:rgba(0,0,0,0.42); border-radius:999px; padding:5px 10px; }
.bp-li-bd__dots{ position:absolute; left:12px; bottom:12px; z-index:3; display:flex; gap:8px; }
.bp-li-bd__dot{ width:26px; height:26px; border-radius:50%; border:2px solid #fff; padding:0; cursor:pointer; box-shadow:0 4px 12px -4px rgba(0,0,0,0.55); transition:transform 140ms ease; }
.bp-li-bd__dot:hover{ transform:scale(1.12); }
/* Suppress the browser default focus indicator on the dots — we paint
   our own white outline via .bp-li-bd__dot--active. The browser ring
   was lingering on the previously-clicked dot in some renders and read
   as "ring on the wrong colour" (operator 2026-05-30). */
.bp-li-bd__dot:focus{ outline:none; }
.bp-li-bd__dot:focus-visible{ outline:2px solid #fff; outline-offset:2px; }
.bp-li-bd__dot--active{
  outline:2px solid #fff; outline-offset:2px;
  transform:scale(1.12);
  /* One-shot halo pulse fires each time the class is freshly added
     (each click on a new dot), so the active feedback is unmistakably
     on the just-clicked colour. */
  animation: bp-li-bd-dot-pulse 0.55s ease-out;
}
@keyframes bp-li-bd-dot-pulse{
  0%   { box-shadow: 0 4px 12px -4px rgba(0,0,0,0.55), 0 0 0 0 rgba(255,255,255,0.7); }
  70%  { box-shadow: 0 4px 12px -4px rgba(0,0,0,0.55), 0 0 0 10px rgba(255,255,255,0); }
  100% { box-shadow: 0 4px 12px -4px rgba(0,0,0,0.55), 0 0 0 0 rgba(255,255,255,0); }
}
.bp-li-bd__pop{ position:absolute; left:12px; bottom:12px; z-index:3; font-family:Poppins,sans-serif; font-size:9px; font-weight:600; letter-spacing:0.12em; text-transform:uppercase; color:#fff; background:var(--bp-svc-ink); border-radius:999px; padding:5px 11px; }
.bp-li-bd__body{ padding:20px 22px 24px; display:flex; flex-direction:column; flex:1; }
.bp-li-bd__name{ font-family:Poppins,sans-serif; font-weight:600; font-size:17px; letter-spacing:-0.01em; color:var(--bp-svc-ink); margin:0 0 9px; }
.bp-li-bd__p{ font-size:13px; line-height:1.6; color:var(--bp-svc-ink-2); margin:0; }
.bp-li-bd__num{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:14px; color:var(--bp-svc-mute); margin-bottom:6px; }
.bp-li-subcta{ margin-top:30px; }

/* ---------- WHAT'S INCLUDED ---------- */
.bp-li-incl{ display:grid; grid-template-columns:1.3fr 1fr; gap:52px; align-items:start; margin-top:8px; }
.bp-li-incl__list{ display:grid; grid-template-columns:1fr 1fr; gap:2px 36px; }
.bp-li-incl__item{ display:grid; grid-template-columns:22px 1fr; gap:12px; align-items:start; padding:13px 0; border-top:1px solid var(--bp-svc-hair); }
.bp-li-incl__item .ck{ width:18px; height:18px; flex-shrink:0; color:var(--bp-svc-ink); margin-top:2px; }
.bp-li-incl__item span{ font-size:14px; line-height:1.5; color:var(--bp-svc-ink-2); }
.bp-li-incl__item--key .ck{ color:var(--bp-svc-ink); }
.bp-li-incl__item--key span{ color:var(--bp-svc-ink); font-weight:600; }
.bp-li-incl__media{ position:sticky; top:96px; border-radius:var(--bp-svc-r-md); overflow:hidden; border:1px solid var(--bp-svc-hair); margin:0; }
.bp-li-incl__frame{ position:relative; aspect-ratio:1/1; overflow:hidden; }
.bp-li-incl__media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.bp-li-incl__cap{ margin:0; padding:13px 18px; background:var(--bp-svc-neutral); border-top:1px solid var(--bp-svc-hair); font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:12.5px; color:var(--bp-svc-mute); }

/* ---------- TIPS ---------- */
.bp-li-tips{ display:grid; grid-template-columns:1.25fr 1fr; gap:52px; align-items:start; margin-top:8px; }
.bp-li-tips__body p{ font-size:15px; line-height:1.72; color:var(--bp-svc-ink-2); margin:0 0 14px; }
.bp-li-tips__body p:last-child{ margin-bottom:0; }
.bp-li-tips__body strong{ font-weight:600; color:var(--bp-svc-ink); }
.bp-li-card{ background:var(--bp-svc-neutral); border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); padding:26px 26px 28px; position:sticky; top:96px; }
.bp-li-card__kick{ font-size:11px; letter-spacing:0.2em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; margin:0 0 4px; }
.bp-li-card__h{ font-family:Poppins,sans-serif; font-weight:600; font-size:18px; letter-spacing:-0.01em; color:var(--bp-svc-ink); margin:0 0 18px; }
.bp-li-pal{ display:flex; flex-direction:column; gap:0; }
.bp-li-pal__row{ display:grid; grid-template-columns:46px 1fr; gap:16px; align-items:center; padding:12px 0; border-top:1px solid var(--bp-svc-hair); }
.bp-li-pal__sw{ width:46px; height:46px; border-radius:10px; border:1px solid rgba(0,0,0,0.08); }
.bp-li-pal__name{ font-family:Poppins,sans-serif; font-weight:600; font-size:14px; color:var(--bp-svc-ink); }
.bp-li-pal__name small{ display:block; font-weight:400; font-size:12px; color:var(--bp-svc-mute); margin-top:2px; letter-spacing:0; }
.bp-li-pal__avoid{ margin:16px 0 0; padding-top:16px; border-top:1px solid var(--bp-svc-hair); font-size:12.5px; line-height:1.6; color:var(--bp-svc-mute); }
.bp-li-pal__avoid strong{ color:var(--bp-svc-ink); font-weight:600; }

/* ---------- COMPARISON (Pro column featured-dark, B&W) ---------- */
.bp-li-vs{ margin-top:8px; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); overflow:hidden; }
.bp-li-vs__grid{ display:grid; grid-template-columns:1fr 1.05fr 1fr; }
.bp-li-vs__cell{ padding:17px 22px; border-bottom:1px solid var(--bp-svc-hair); font-size:13.5px; line-height:1.55; color:var(--bp-svc-ink-2); }
.bp-li-vs__cell--crit{ font-family:Poppins,sans-serif; font-weight:600; font-size:12px; letter-spacing:0.04em; color:var(--bp-svc-ink); background:var(--bp-svc-neutral); display:flex; align-items:center; }
.bp-li-vs__cell--pro{ background:#f5f5f5; color:var(--bp-svc-ink); border-bottom-color:var(--bp-svc-hair); }
.bp-li-vs__grid > .bp-li-vs__cell:nth-last-child(-n+3){ border-bottom:none; }
.bp-li-vs__head{ font-family:Poppins,sans-serif; font-weight:600; font-size:15px; letter-spacing:-0.005em; color:var(--bp-svc-ink); padding:20px 22px; border-bottom:2px solid var(--bp-svc-ink); background:#fff; }
.bp-li-vs__head--pro{ color:#fff; background:var(--bp-svc-ink); border-bottom-color:var(--bp-svc-ink); }
.bp-li-vs__head--pro small{ display:block; font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-weight:400; font-size:12px; color:var(--bp-svc-red); margin-top:4px; letter-spacing:0; }
.bp-li-vs__corner{ background:#fff; border-bottom:2px solid var(--bp-svc-ink); }
.bp-li-vs__cell--pro strong{ color:var(--bp-svc-ink); }
.bp-li-choose{ margin-top:26px; padding:24px 28px; background:var(--bp-svc-neutral); border-radius:var(--bp-svc-r-md); font-size:14px; line-height:1.75; color:var(--bp-svc-ink-2); max-width:980px; }
.bp-li-choose strong{ font-weight:600; color:var(--bp-svc-ink); }
.bp-li-vs-cards{ display:none; }

/* ---------- TEAM BRIDGE ---------- */
.bp-li-bridge{ padding:64px 60px; background:#fff; border-top:1px solid var(--bp-svc-hair); }
.bp-li-bridge__inner{ max-width:1280px; margin:0 auto; display:grid; grid-template-columns:280px 1fr; gap:48px; align-items:start; }
.bp-li-bridge__h{ font-family:Poppins,sans-serif; font-weight:500; font-size:28px; line-height:1.18; letter-spacing:-0.015em; color:var(--bp-svc-ink); margin:0; }
.bp-li-bridge__h em{ color:var(--bp-svc-ink); }
.bp-li-bridge__p{ font-size:15px; line-height:1.75; color:var(--bp-svc-ink-2); margin:0; max-width:760px; }
.bp-li-bridge__p a{ color:var(--bp-svc-ink); text-decoration:underline; text-underline-offset:3px; font-weight:500; }

/* ---------- PRICE BAND ---------- */
.bp-li-priceband{ padding:74px 60px; background:var(--bp-svc-neutral); border-top:1px solid var(--bp-svc-hair); border-bottom:1px solid var(--bp-svc-hair); }
.bp-li-priceband__inner{ max-width:1280px; margin:0 auto; display:grid; grid-template-columns:1.2fr 1fr; gap:64px; align-items:center; }
.bp-li-priceband__h{ font-family:Poppins,sans-serif; font-weight:500; font-size:36px; letter-spacing:-0.018em; line-height:1.12; margin:0 0 16px; max-width:540px; color:var(--bp-svc-ink); }
.bp-li-priceband__h em{ color:var(--bp-svc-ink); }
.bp-li-priceband__p{ margin:0; font-size:15px; line-height:1.7; color:var(--bp-svc-ink-2); max-width:520px; }
.bp-li-priceband__p a{ color:var(--bp-svc-ink); text-decoration:underline; text-underline-offset:3px; }
.bp-li-priceband__right{ display:flex; flex-direction:column; align-items:flex-start; gap:14px; padding:32px 34px; background:#fff; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); }
.bp-li-priceband__floor{ font-family:Poppins,sans-serif; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; }
.bp-li-priceband__amt{ font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif); font-style:italic; font-weight:400; font-size:64px; letter-spacing:-0.01em; line-height:1; color:var(--bp-svc-ink); }
.bp-li-priceband__amt small{ font-family:Poppins,sans-serif; font-style:normal; font-size:18px; color:var(--bp-svc-mute); margin-left:8px; letter-spacing:0; font-weight:400; }
.bp-li-priceband__note{ font-size:13px; color:var(--bp-svc-ink-2); line-height:1.65; margin:0; }

/* ---------- SERVING THE GTA ---------- */
.bp-li-cities{ padding:64px 60px; background:var(--bp-svc-neutral); border-top:1px solid var(--bp-svc-hair); }
.bp-li-cities__inner{ max-width:1280px; margin:0 auto; text-align:center; }
.bp-li-cities__chips{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin:24px 0 22px; }
.bp-li-cities__chips span{ font-size:13px; font-weight:500; color:var(--bp-svc-ink-2); padding:8px 16px; border:1px solid var(--bp-svc-hair); border-radius:999px; }
.bp-li-cities__note{ font-size:13.5px; line-height:1.7; color:var(--bp-svc-mute); margin:0 auto; max-width:820px; }
.bp-li-cities__note a{ color:var(--bp-svc-ink); text-decoration:underline; text-underline-offset:3px; }

/* ---------- RESPONSIVE ---------- */
@media (max-width:1100px){
  .bp-li .bp-services-hero__grid{ grid-template-columns:1fr; gap:40px; }
  .bp-li .bp-services-hero__title{ font-size:46px; }
  .bp-li-profile{ justify-self:start; }
  .bp-li-gallery{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:980px){
  .bp-li-backdrops{ grid-template-columns:1fr 1fr; }
  .bp-li-incl{ grid-template-columns:1fr; gap:32px; }
  .bp-li-incl__media{ position:static; max-width:420px; }
  .bp-li-tips{ grid-template-columns:1fr; gap:30px; }
  .bp-li-card{ position:static; }
}
@media (max-width:900px){
  .bp-li-gallery{ grid-template-columns:repeat(2,1fr); }
  .bp-li-why{ grid-template-columns:1fr 1fr; }
}
@media (max-width:880px){
  .bp-li-trust__inner{ grid-template-columns:1fr; gap:18px; text-align:center; }
  .bp-li-trust{ padding:32px 20px; }
  .bp-li-trust__names{ justify-content:center; gap:6px 0; }
  .bp-li-trust__names span,
  .bp-li-trust__names span:first-child{ border-left:none; padding:0 12px; }
  .bp-li-priceband__inner{ grid-template-columns:1fr; gap:32px; }
  .bp-li-priceband{ padding:56px 20px; }
}
@media (max-width:860px){
  .bp-li-vs{ display:none; }
  .bp-li-vs-cards{ display:flex; flex-direction:column; gap:16px; margin-top:8px; }
  .bp-li-vscard{ border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); overflow:hidden; }
  .bp-li-vscard__h{ font-family:Poppins,sans-serif; font-weight:600; font-size:16px; color:#fff; background:var(--bp-svc-ink); padding:16px 20px; }
  .bp-li-vscard--alt .bp-li-vscard__h{ color:var(--bp-svc-ink); background:var(--bp-svc-neutral); }
  .bp-li-vscard__h small{ display:block; font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-weight:400; font-size:12px; color:var(--bp-svc-red); margin-top:3px; }
  .bp-li-vscard__row{ padding:13px 20px; border-top:1px solid var(--bp-svc-hair); }
  .bp-li-vscard__k{ font-family:Poppins,sans-serif; font-weight:600; font-size:11px; letter-spacing:0.06em; text-transform:uppercase; color:var(--bp-svc-mute); margin-bottom:5px; }
  .bp-li-vscard__v{ font-size:13.5px; line-height:1.55; color:var(--bp-svc-ink-2); }
  .bp-li-bridge__inner{ grid-template-columns:1fr; gap:18px; }
  .bp-li-bridge{ padding:48px 20px; }
}
@media (max-width:640px){
  .bp-li.bp-services-hero{ padding:32px 20px 16px; }
  .bp-li .bp-services-hero__title{ font-size:36px; }
  .bp-li.bp-services-sect{ padding:56px 20px; }
  .bp-li-cities{ padding:48px 20px; }
}
@media (max-width:560px){
  .bp-li-why{ grid-template-columns:1fr; }
  .bp-li-incl__list{ grid-template-columns:1fr; }
}
@media (max-width:520px){
  .bp-li-backdrops{ grid-template-columns:1fr; }
}

/* ============================================================================
   END LINKEDIN HEADSHOTS PAGE — V2
   ============================================================================ */


/* ============================================================================
   ON-LOCATION HEADSHOTS PAGE   (page handle: on-location-headshots-toronto)
   page-10, Layer-2 service spoke. Namespace bp-onloc-*, parallel to
   bp-li / bp-team / bp-execp. Built on the shared bp-services-* shell +
   bp-about-finalcta, scoped via the .bp-onloc co-class so the shared shell
   and the Services page are never disturbed.
   Source design: /Design system (Updated)/pages/on-location-headshots-toronto.*
   Copy locked: page-10 copy-draft.md / schema.json. Monochrome + bp-svc-red
   accent (services-page red exception, handoff §6). No cream. No #ff9da6
   (pink translated to white/grey on dark surfaces). Em-dash-free. Hero plate
   layout = the design's "Stacked" (tw-hero-c) variant, baked in as default.
   ============================================================================ */

/* tokens + em accent for the standalone .bp-onloc sections */
.bp-onloc{
  --bp-svc-ink:#0a0a0a; --bp-svc-ink-2:#2a2a2a; --bp-svc-mute:#666;
  --bp-svc-hair:#e8e8e8; --bp-svc-paper:#ffffff; --bp-svc-neutral:#fafafa;
  --bp-svc-red:#d43747; --bp-svc-red-soft:rgba(212,55,71,0.08);
  --bp-svc-r-md:20px; --bp-svc-r-lg:28px; --bp-svc-r-pill:999px;
  --bp-plan-paper:#fafafa; --bp-plan-line:#d8d8d8; --bp-plan-ink:rgba(20,20,20,0.6);
}
.bp-onloc em{
  font-family: var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif) !important;
  font-style: italic !important; font-weight: 400 !important;
}
.bp-onloc[id]{ scroll-margin-top:90px; }

/* ---------- HERO (scoped overrides of the shared bp-services-hero) ---------- */
.bp-onloc.bp-services-hero{ background:#fff; padding:48px 60px 28px; }
.bp-onloc .bp-services-hero__inner{ max-width:1280px; margin:0 auto; }
.bp-onloc .bp-services-hero__crumb{ font-size:12px; color:var(--bp-svc-mute); margin-bottom:24px; letter-spacing:0.02em; }
.bp-onloc .bp-services-hero__crumb a{ color:var(--bp-svc-mute); text-decoration:none; }
.bp-onloc .bp-services-hero__crumb a:hover{ color:var(--bp-svc-ink); }
.bp-onloc .bp-services-hero__crumb .sep{ margin:0 8px; color:#bbb; }
.bp-onloc .bp-services-hero__crumb .here{ color:var(--bp-svc-ink); font-weight:500; }
.bp-onloc .bp-services-hero__grid{ display:grid; grid-template-columns:1.04fr 1fr; gap:56px; align-items:center; }
.bp-onloc .bp-services-hero__left{ display:flex; flex-direction:column; }
.bp-onloc .bp-services-hero__title{ font-family:Poppins,sans-serif; font-weight:500; font-size:60px; line-height:1.08; letter-spacing:-0.022em; margin:0 0 24px; color:var(--bp-svc-ink); max-width:760px; }
.bp-onloc .bp-services-hero__lede{ font-family:Poppins,sans-serif; font-size:16.5px; line-height:1.66; color:var(--bp-svc-ink-2); margin:0 0 32px; max-width:600px; }
.bp-onloc .bp-services-hero__lede strong{ font-weight:600; color:var(--bp-svc-ink); }
.bp-onloc .bp-services-hero__cta{ display:flex; gap:12px; flex-wrap:wrap; margin-bottom:30px; }
.bp-onloc .bp-services-hero__micro{ display:flex; flex-wrap:wrap; gap:0; padding-top:26px; border-top:1px solid var(--bp-svc-hair); font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; }
.bp-onloc .bp-services-hero__micro span + span::before{ content:"\00B7"; margin:0 12px; color:#bbb; }

/* --- Hero PLATE (decorative): dashed office footprint, deliverable portrait,
   footprint spec card + setup/teardown clock. Stacked layout baked in. --- */
.bp-onloc-plate{
  position:relative; justify-self:stretch; align-self:stretch; min-height:660px;
  border-radius:var(--bp-svc-r-lg); overflow:hidden;
  background:var(--bp-plan-paper); border:1px solid var(--bp-svc-hair);
}
.bp-onloc-plate::before{ content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(20,18,16,0.05) 1px, transparent 1px),linear-gradient(90deg, rgba(20,18,16,0.05) 1px, transparent 1px);
  background-size:30px 30px; }
.bp-onloc-plate__field{ position:absolute; left:28px; right:28px; top:28px; bottom:28px; border:1.5px dashed rgba(20,18,16,0.38); }
.bp-onloc-plate__tag{ position:absolute; left:50%; right:auto; top:30px; bottom:auto; transform:translateX(-50%); text-align:center; max-width:80%; z-index:6; }
.bp-onloc-plate__tag .k{ display:flex; align-items:center; justify-content:center; gap:9px; font-family:Poppins,sans-serif; font-size:10px; letter-spacing:0.18em; text-transform:uppercase; font-weight:600; color:var(--bp-svc-ink); }
.bp-onloc-plate__tag .k::before{ content:""; flex-shrink:0; width:18px; height:1px; background:var(--bp-svc-red); }
.bp-onloc-plate__tag .s{ display:block; margin-top:8px; padding-left:0; font-family:Poppins,sans-serif; font-size:11px; letter-spacing:0.01em; color:var(--bp-svc-mute); }
.bp-onloc-plate__deliver{ position:absolute; left:50%; right:auto; top:90px; bottom:auto; transform:translateX(-50%); width:60%; max-width:336px; z-index:4; background:#fff; border-radius:16px; padding:9px 9px 0; box-shadow:0 34px 70px -30px rgba(0,0,0,0.45); }
.bp-onloc-plate__shot{ position:relative; overflow:hidden; border-radius:11px; aspect-ratio:1 / 1; background:#ddd; }
.bp-onloc-plate__shot img{ width:100%; height:100%; object-fit:cover; object-position:50% 18%; display:block; }
.bp-onloc-plate__delivcap{ display:flex; align-items:center; justify-content:center; gap:9px; padding:11px 6px 13px; font-family:Poppins,sans-serif; font-size:9px; letter-spacing:0.1em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; }
.bp-onloc-plate__delivcap .key{ flex-shrink:0; padding:3px 9px; border:1px solid var(--bp-svc-hair); border-radius:999px; color:var(--bp-svc-ink); letter-spacing:0.12em; }
.bp-onloc-plate__dim{ position:absolute; left:28px; right:auto; top:auto; bottom:28px; width:calc(50% - 40px); max-width:242px; height:164px; background:#fff; border:1px solid rgba(0,0,0,0.07); border-radius:14px; padding:15px 17px; box-shadow:0 22px 50px -26px rgba(0,0,0,0.4); }
.bp-onloc-plate__dim h5{ margin:0 0 11px; font-family:Poppins,sans-serif; font-size:9px; letter-spacing:0.16em; text-transform:uppercase; font-weight:600; color:var(--bp-svc-mute); }
.bp-onloc-dimrow{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; padding:7px 0; border-top:1px solid var(--bp-svc-hair); }
.bp-onloc-dimrow:first-of-type{ border-top:none; }
.bp-onloc-dimrow .k{ font-family:Poppins,sans-serif; font-size:10px; letter-spacing:0.06em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; }
.bp-onloc-dimrow .v{ font-family:Poppins,sans-serif; font-weight:600; font-size:14px; color:var(--bp-svc-ink); }
.bp-onloc-dimrow--min .v{ color:var(--bp-svc-ink); }
.bp-onloc-plate__clock{ position:absolute; left:auto; right:28px; top:auto; bottom:28px; width:calc(50% - 40px); max-width:242px; height:164px; background:rgba(255,255,255,0.96); border:1px solid rgba(0,0,0,0.06); border-radius:14px; box-shadow:0 22px 50px -18px rgba(0,0,0,0.4); display:flex; flex-direction:column; align-items:stretch; justify-content:space-between; gap:0; text-align:left; padding:20px 18px; z-index:6; }
.bp-onloc-plate__clock > div:not(.div){ display:flex; align-items:baseline; justify-content:flex-start; gap:9px; white-space:nowrap; }
.bp-onloc-plate__clock .big{ font-family:Poppins,sans-serif; font-weight:500; font-size:40px; line-height:1; letter-spacing:-0.02em; color:var(--bp-svc-ink); white-space:nowrap; flex-shrink:0; }
.bp-onloc-plate__clock .big em{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:19px; color:var(--bp-svc-red); }
.bp-onloc-plate__clock .lab{ margin-top:0; font-family:Poppins,sans-serif; font-size:11.5px; letter-spacing:0; text-transform:none; color:var(--bp-svc-mute); font-weight:600; }
.bp-onloc-plate__clock .div{ width:100%; height:1px; align-self:stretch; background:var(--bp-svc-hair); }

/* ---------- BY-THE-NUMBERS attribute strip ---------- */
.bp-onloc-attrs{ background:#fff; padding:34px 60px; border-top:1px solid var(--bp-svc-hair); border-bottom:1px solid var(--bp-svc-hair); }
.bp-onloc-attrs__inner{ max-width:1280px; margin:0 auto; }
.bp-onloc-attrs__row{ display:grid; grid-template-columns:repeat(5,1fr); gap:30px; align-items:start; }
.bp-onloc-attrs__cell{ padding-left:15px; border-left:2px solid var(--bp-svc-ink); font-family:Poppins,sans-serif; font-weight:500; font-size:15px; line-height:1.4; letter-spacing:-0.005em; color:var(--bp-svc-ink); }
.bp-onloc-attrs__cell em{ color:var(--bp-svc-ink-2); font-size:17px; }

/* ---------- THESIS (scoped) ---------- */
.bp-onloc.bp-services-thesis{ background:var(--bp-svc-neutral); padding:64px 60px; }
.bp-onloc .bp-services-thesis__inner{ max-width:980px; margin:0 auto; text-align:left; }
.bp-onloc .bp-services-thesis__label{ font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--bp-svc-red); font-weight:600; margin-bottom:18px; }
/* Operator 2026-06-01: was rendering as all-italic on the live site
   (master handoff §15 anti-pattern #17). The selectors below were
   `.bp-onloc .bp-services-thesis blockquote` (descendant, with space),
   but on this page both classes live on the SAME <section> element
   — so the descendant combinator never matches and the base
   theme's `blockquote { font-style: italic }` cascade wins. Compound
   selector (no space) matches the section properly. */
.bp-onloc.bp-services-thesis blockquote{ font-family:Poppins,sans-serif; font-style:normal; font-weight:500; font-size:32px; line-height:1.25; letter-spacing:-0.015em; color:var(--bp-svc-ink); margin:0; }
.bp-onloc.bp-services-thesis blockquote em{ color:var(--bp-svc-ink); }

/* ---------- NUMBERED OVERVIEW ---------- */
.bp-onloc-overview{ background:#fff; padding:64px 60px; border-bottom:1px solid var(--bp-svc-hair); }
.bp-onloc-overview__inner{ max-width:1280px; margin:0 auto; }
.bp-onloc-overview__head{ display:flex; align-items:baseline; gap:18px; margin-bottom:34px; flex-wrap:wrap; }
.bp-onloc-overview__kicker{ font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--bp-svc-red); font-weight:600; }
.bp-onloc-overview__lead{ font-size:14px; color:var(--bp-svc-mute); }
.bp-onloc-overview__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; counter-reset:ov; }
.bp-onloc-overview__item{ padding-top:18px; border-top:2px solid var(--bp-svc-ink); counter-increment:ov; display:flex; flex-direction:column; gap:12px; }
.bp-onloc-overview__item::before{ content:counter(ov, decimal-leading-zero); font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-weight:400; font-size:30px; color:var(--bp-svc-ink-2); line-height:1; }
.bp-onloc-overview__item p{ margin:0; font-size:14.5px; line-height:1.5; color:var(--bp-svc-ink); font-weight:500; letter-spacing:-0.005em; }

/* ---------- SECTION SHELL (scoped overrides) ---------- */
.bp-onloc.bp-services-sect{ padding:88px 60px; background:#fff; }
.bp-onloc.bp-services-sect.bp-services-sect--alt{ background:var(--bp-svc-neutral); }
.bp-onloc .bp-services-sect__inner{ max-width:1280px; margin:0 auto; }
.bp-onloc .bp-services-sect__kicker{ font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--bp-svc-red); font-weight:600; margin-bottom:18px; display:flex; align-items:center; gap:12px; }
.bp-onloc .bp-services-sect__kicker .num{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-weight:400; font-size:18px; color:var(--bp-svc-red); letter-spacing:0; }
.bp-onloc .bp-services-sect__h{ font-family:Poppins,sans-serif; font-weight:500; font-size:44px; line-height:1.1; letter-spacing:-0.02em; color:var(--bp-svc-ink); margin:0 0 22px; max-width:980px; }
.bp-onloc .bp-services-sect__intro{ font-size:16px; line-height:1.7; color:var(--bp-svc-ink-2); max-width:760px; margin:0 0 28px; }
.bp-onloc .bp-services-sect__intro a{ color:var(--bp-svc-ink); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(0,0,0,0.25); }
.bp-onloc .bp-services-sect__intro a:hover{ text-decoration-color:var(--bp-svc-ink); }
.bp-onloc .bp-services-sect__intro strong{ font-weight:600; color:var(--bp-svc-ink); }
.bp-onloc .bp-services-sect__intro p + p{ margin-top:14px; }
.bp-onloc .bp-services-sect__intro .direct-answer{ font-size:18px; line-height:1.66; color:var(--bp-svc-ink); margin-bottom:18px; }

/* ---------- SPLIT (text + plan media) ---------- */
.bp-onloc-split{ display:grid; grid-template-columns:1.05fr 1fr; gap:52px; align-items:start; margin-top:6px; }
.bp-onloc-split__body, .bp-onloc-split__media{ min-width:0; }
.bp-onloc-split--rev{ grid-template-columns:1fr 1.05fr; }
.bp-onloc-split--rev .bp-onloc-split__media{ order:-1; }
.bp-onloc-split__body p{ font-size:15px; line-height:1.72; color:var(--bp-svc-ink-2); margin:0 0 14px; }
.bp-onloc-split__body p strong{ font-weight:600; color:var(--bp-svc-ink); }
.bp-onloc-split__body .direct-answer{ font-size:18px; line-height:1.66; color:var(--bp-svc-ink); margin-bottom:18px; }
.bp-onloc-split__media{ position:sticky; top:96px; }

/* requirement pills under §1 */
.bp-onloc-reqs{ display:flex; flex-wrap:wrap; gap:10px; margin-top:24px; }
.bp-onloc-req{ display:flex; align-items:center; gap:10px; padding:11px 16px 11px 13px; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-pill); }
.bp-onloc-req__k{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:15px; color:var(--bp-svc-red); }
.bp-onloc-req__t{ font-family:Poppins,sans-serif; font-weight:600; font-size:12px; letter-spacing:0.04em; color:var(--bp-svc-ink); }
.bp-onloc-req__t small{ display:block; font-weight:400; font-size:11px; letter-spacing:0; color:var(--bp-svc-mute); text-transform:none; }

/* ---------- FOOTPRINT PLAN (§1 signature asset) ---------- */
.bp-onloc-plan{ position:relative; border-radius:var(--bp-svc-r-md); overflow:hidden; background:var(--bp-plan-paper); border:1px solid var(--bp-svc-hair); aspect-ratio:1.28/1; min-height:430px; width:100%; max-width:100%; }
.bp-onloc-plan::before{ content:""; position:absolute; inset:0; background-image:linear-gradient(rgba(20,20,20,0.045) 1px, transparent 1px),linear-gradient(90deg, rgba(20,20,20,0.045) 1px, transparent 1px); background-size:26px 26px; }
.bp-onloc-plan__tag{ position:absolute; left:20px; top:16px; z-index:6; font-family:Poppins,sans-serif; font-size:10px; letter-spacing:0.2em; text-transform:uppercase; font-weight:600; color:var(--bp-plan-ink); }
.bp-onloc-plan__ideal{ position:absolute; left:11%; top:16%; right:8%; bottom:20%; border:1.5px dashed rgba(20,20,20,0.4); border-radius:5px; }
.bp-onloc-plan__ideal-lab{ position:absolute; right:8%; top:calc(16% - 18px); z-index:5; font-family:Poppins,sans-serif; font-weight:600; font-size:10px; letter-spacing:0.12em; text-transform:uppercase; color:var(--bp-plan-ink); }
.bp-onloc-plan__ideal-lab em{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:12px; text-transform:none; letter-spacing:0; }
.bp-onloc-plan__min{ position:absolute; left:11%; top:16%; width:47%; bottom:20%; border:1.5px solid var(--bp-svc-ink); border-radius:4px; background:rgba(10,10,10,0.035); }
.bp-onloc-plan__min-lab{ position:absolute; left:10px; top:8px; font-family:Poppins,sans-serif; font-weight:600; font-size:9.5px; letter-spacing:0.14em; text-transform:uppercase; color:var(--bp-svc-ink); }
.bp-onloc-plan__backdrop{ position:absolute; left:14%; top:33%; bottom:30%; width:8px; background:linear-gradient(90deg,#9a9a9a,#5a5a5a); border-radius:2px; z-index:3; }
.bp-onloc-plan__backdrop::after{ content:"Backdrop"; position:absolute; left:-2px; top:-15px; font-family:Poppins,sans-serif; font-size:8px; letter-spacing:0.1em; text-transform:uppercase; color:var(--bp-plan-ink); white-space:nowrap; }
.bp-onloc-plan__subject{ position:absolute; left:19%; top:50%; transform:translateY(-50%); width:22px; height:24px; color:var(--bp-svc-ink); z-index:4; }
.bp-onloc-plan__subject svg{ width:100%; height:100%; display:block; }
.bp-onloc-plan__cam{ position:absolute; left:54%; top:50%; transform:translate(-50%,-50%); width:24px; height:18px; color:var(--bp-svc-ink); z-index:4; }
.bp-onloc-plan__cam svg{ width:100%; height:100%; display:block; }
.bp-onloc-plan__cam::after{ content:"Camera"; position:absolute; left:50%; top:21px; transform:translateX(-50%); font-family:Poppins,sans-serif; font-size:8px; letter-spacing:0.1em; text-transform:uppercase; color:var(--bp-plan-ink); white-space:nowrap; }
.bp-onloc-plan__laptop{ position:absolute; left:54%; top:42%; transform:translate(-50%,-50%); width:22px; height:17px; border:1.5px solid rgba(20,20,20,0.55); border-radius:3px; background:rgba(255,255,255,0.7); z-index:4; }
.bp-onloc-plan__laptop::after{ content:"Live preview"; position:absolute; left:50%; top:-15px; transform:translateX(-50%); font-family:Poppins,sans-serif; font-size:8px; letter-spacing:0.1em; text-transform:uppercase; color:var(--bp-plan-ink); white-space:nowrap; }
.bp-onloc-plan__dim-min-x{ position:absolute; left:11%; width:47%; bottom:14%; height:1px; background:var(--bp-svc-ink); z-index:5; }
.bp-onloc-plan__dim-min-x::before, .bp-onloc-plan__dim-min-x::after{ content:""; position:absolute; bottom:-4px; width:1px; height:9px; background:var(--bp-svc-ink); }
.bp-onloc-plan__dim-min-x::before{ left:0; } .bp-onloc-plan__dim-min-x::after{ right:0; }
.bp-onloc-plan__dim-min-x span{ position:absolute; left:50%; bottom:3px; transform:translateX(-50%); background:var(--bp-plan-paper); padding:0 7px; font-family:Poppins,sans-serif; font-weight:600; font-size:11px; color:var(--bp-svc-ink); }
.bp-onloc-plan__dim-y{ position:absolute; left:7%; top:16%; bottom:20%; width:1px; background:var(--bp-svc-ink); z-index:5; }
.bp-onloc-plan__dim-y::before, .bp-onloc-plan__dim-y::after{ content:""; position:absolute; left:-4px; height:1px; width:9px; background:var(--bp-svc-ink); }
.bp-onloc-plan__dim-y::before{ top:0; } .bp-onloc-plan__dim-y::after{ bottom:0; }
.bp-onloc-plan__dim-y span{ position:absolute; top:50%; left:-7px; transform:translateY(-50%) rotate(-90deg); transform-origin:center; background:var(--bp-plan-paper); padding:0 7px; font-family:Poppins,sans-serif; font-weight:600; font-size:11px; color:var(--bp-svc-ink); white-space:nowrap; }
.bp-onloc-plan__dim-ideal-x{ position:absolute; left:11%; right:8%; bottom:8%; height:1px; background:rgba(20,20,20,0.45); z-index:5; }
.bp-onloc-plan__dim-ideal-x::before, .bp-onloc-plan__dim-ideal-x::after{ content:""; position:absolute; bottom:-4px; width:1px; height:9px; background:rgba(20,20,20,0.45); }
.bp-onloc-plan__dim-ideal-x::before{ left:0; } .bp-onloc-plan__dim-ideal-x::after{ right:0; }
.bp-onloc-plan__dim-ideal-x span{ position:absolute; left:50%; bottom:3px; transform:translateX(-50%); background:var(--bp-plan-paper); padding:0 7px; font-family:Poppins,sans-serif; font-weight:600; font-size:10.5px; color:var(--bp-plan-ink); }

/* ---------- §2 setup/teardown timeline + kit ---------- */
.bp-onloc-timeline{ margin:6px 0 30px; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); padding:24px 26px 26px; background:#fff; }
.bp-onloc-timeline__lab{ font-family:Poppins,sans-serif; font-size:10px; letter-spacing:0.2em; text-transform:uppercase; font-weight:600; color:var(--bp-svc-mute); margin-bottom:20px; }
.bp-onloc-timeline__track{ position:relative; height:3px; background:var(--bp-svc-hair); border-radius:2px; margin:0 6px 14px; }
.bp-onloc-timeline__fill{ position:absolute; left:0; top:0; bottom:0; width:24%; background:var(--bp-svc-red); border-radius:2px; }
.bp-onloc-timeline__fill--end{ left:auto; right:0; width:16%; background:var(--bp-svc-ink); }
.bp-onloc-timeline__pts{ display:flex; justify-content:space-between; gap:12px; }
.bp-onloc-timeline__pt{ flex:1; text-align:center; }
.bp-onloc-timeline__pt:first-child{ text-align:left; } .bp-onloc-timeline__pt:last-child{ text-align:right; }
.bp-onloc-timeline__big{ font-family:Poppins,sans-serif; font-weight:500; font-size:26px; line-height:1; letter-spacing:-0.02em; color:var(--bp-svc-ink); }
.bp-onloc-timeline__big em{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:15px; color:var(--bp-svc-red); }
.bp-onloc-timeline__pt--mute .bp-onloc-timeline__big{ color:var(--bp-svc-mute); font-weight:400; font-size:18px; }
.bp-onloc-timeline__cap{ font-family:Poppins,sans-serif; font-size:9.5px; letter-spacing:0.14em; text-transform:uppercase; color:var(--bp-svc-mute); font-weight:600; margin-top:6px; }
.bp-onloc-kit{ border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); overflow:hidden; background:var(--bp-svc-neutral); }
.bp-onloc-kit__head{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:18px 22px; border-bottom:1px solid var(--bp-svc-hair); background:#fff; }
.bp-onloc-kit__head .lab{ font-family:Poppins,sans-serif; font-size:10px; letter-spacing:0.2em; text-transform:uppercase; font-weight:600; color:var(--bp-svc-mute); }
.bp-onloc-kit__pill{ display:inline-flex; align-items:center; gap:7px; font-family:Poppins,sans-serif; font-size:11px; font-weight:600; letter-spacing:0.04em; color:var(--bp-svc-ink-2); background:rgba(10,10,10,0.06); border-radius:var(--bp-svc-r-pill); padding:6px 13px; }
.bp-onloc-kit__grid{ display:grid; grid-template-columns:1fr 1fr; }
.bp-onloc-kit__item{ display:flex; gap:13px; align-items:flex-start; padding:18px 20px; border-bottom:1px solid var(--bp-svc-hair); }
.bp-onloc-kit__item:nth-child(odd){ border-right:1px solid var(--bp-svc-hair); }
.bp-onloc-kit__item:nth-last-child(-n+2){ border-bottom:none; }
.bp-onloc-kit__glyph{ flex-shrink:0; width:40px; height:40px; border-radius:9px; background:#fff; border:1px solid var(--bp-svc-hair); display:flex; align-items:center; justify-content:center; color:var(--bp-svc-ink); }
.bp-onloc-kit__glyph svg{ width:22px; height:22px; }
.bp-onloc-kit__t{ font-family:Poppins,sans-serif; font-weight:600; font-size:13.5px; letter-spacing:-0.005em; color:var(--bp-svc-ink); margin:0 0 3px; line-height:1.25; }
.bp-onloc-kit__d{ font-size:11.5px; line-height:1.5; color:var(--bp-svc-mute); margin:0; }

/* ---------- §3 one-trip building-access route ---------- */
.bp-onloc-route{ margin-top:34px; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); background:var(--bp-plan-paper); background-image:radial-gradient(rgba(20,18,16,0.10) 1px, transparent 1.4px); background-size:22px 22px; padding:42px 38px; }
.bp-onloc-route__track{ display:grid; grid-template-columns:1fr auto 1fr auto 1fr; align-items:stretch; gap:0; }
.bp-onloc-route__node{ background:#fff; border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); padding:22px 24px; text-align:left; display:flex; flex-direction:column; }
.bp-onloc-route__num{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-size:27px; color:var(--bp-svc-red); line-height:1; margin-bottom:13px; }
.bp-onloc-route__lab{ font-family:Poppins,sans-serif; font-weight:600; font-size:15px; color:var(--bp-svc-ink); margin:0 0 8px; letter-spacing:-0.005em; }
.bp-onloc-route__desc{ font-family:Poppins,sans-serif; font-size:12.5px; line-height:1.6; color:var(--bp-svc-mute); margin:0; }
.bp-onloc-route__arrow{ align-self:center; width:46px; height:1.5px; background:var(--bp-svc-ink); position:relative; }
.bp-onloc-route__arrow::after{ content:""; position:absolute; right:0; top:50%; transform:translateY(-50%); border-left:8px solid var(--bp-svc-ink); border-top:5px solid transparent; border-bottom:5px solid transparent; }
.bp-onloc-route__foot{ margin-top:26px; display:flex; align-items:center; gap:16px; flex-wrap:wrap; font-family:Poppins,sans-serif; font-size:12px; letter-spacing:0.02em; color:var(--bp-svc-ink-2); }
.bp-onloc-route__chip{ display:inline-flex; align-items:center; gap:9px; padding:8px 16px; border:1px solid var(--bp-svc-ink); border-radius:999px; font-weight:600; color:var(--bp-svc-ink); }
.bp-onloc-route__chip .dot{ width:7px; height:7px; border-radius:50%; background:var(--bp-svc-red); }

/* ---------- §4 comparison (2 modes, on-location featured) ---------- */
.bp-onloc-compare{ border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); overflow:hidden; margin-top:8px; }
.bp-onloc-compare__grid{ display:grid; grid-template-columns:1.15fr 1fr 1fr; }
.bp-onloc-compare__corner{ background:#fff; padding:22px 20px; border-bottom:2px solid var(--bp-svc-ink); display:flex; align-items:flex-end; }
.bp-onloc-compare__corner span{ font-family:Poppins,sans-serif; font-size:10px; letter-spacing:0.18em; text-transform:uppercase; font-weight:600; color:var(--bp-svc-mute); }
.bp-onloc-compare__head{ font-family:Poppins,sans-serif; font-weight:600; font-size:16px; letter-spacing:-0.005em; color:var(--bp-svc-ink); background:#fff; padding:20px; border-bottom:2px solid var(--bp-svc-ink); }
.bp-onloc-compare__head small{ display:block; font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-weight:400; font-size:12.5px; color:var(--bp-svc-mute); margin-top:4px; letter-spacing:0; }
.bp-onloc-compare__head--feat{ color:#fff; background:var(--bp-svc-ink); border-bottom-color:var(--bp-svc-ink); display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.bp-onloc-compare__ttl{ display:block; }
.bp-onloc-compare__head--feat small{ color:rgba(255,255,255,0.6); }
.bp-onloc-compare__head--feat .badge{ flex-shrink:0; margin:0; font-family:Poppins,sans-serif; font-style:normal; font-size:9px; letter-spacing:0.18em; text-transform:uppercase; font-weight:600; color:#0a0a0a; background:#fff; border-radius:var(--bp-svc-r-pill); padding:3px 10px; }
.bp-onloc-compare__cell{ padding:18px 20px; border-bottom:1px solid var(--bp-svc-hair); border-right:1px solid var(--bp-svc-hair); font-size:13.5px; line-height:1.55; color:var(--bp-svc-ink-2); }
.bp-onloc-compare__cell:nth-child(3n){ border-right:none; }
.bp-onloc-compare__grid > .bp-onloc-compare__cell:nth-last-child(-n+3){ border-bottom:none; }
.bp-onloc-compare__cell--crit{ font-family:Poppins,sans-serif; font-weight:600; font-size:12.5px; letter-spacing:0.01em; color:var(--bp-svc-ink); background:var(--bp-svc-neutral); }
.bp-onloc-compare__cell--feat{ background:rgba(10,10,10,0.025); color:var(--bp-svc-ink); font-weight:500; }
.bp-onloc-compare-cards{ display:none; }

/* ---------- pricing band (dark anchor card; pink translated to white/grey) ---------- */
.bp-onloc-priceband{ padding:74px 60px; background:#fff; border-top:1px solid var(--bp-svc-hair); border-bottom:1px solid var(--bp-svc-hair); }
.bp-onloc-priceband__inner{ max-width:1280px; margin:0 auto; display:grid; grid-template-columns:1.2fr 1fr; gap:64px; align-items:center; }
.bp-onloc-priceband__h{ font-family:Poppins,sans-serif; font-weight:500; font-size:34px; letter-spacing:-0.018em; line-height:1.16; margin:0 0 16px; max-width:560px; color:var(--bp-svc-ink); }
.bp-onloc-priceband__p{ margin:0; font-size:15px; line-height:1.7; color:var(--bp-svc-ink-2); max-width:520px; }
.bp-onloc-priceband__p a{ color:var(--bp-svc-ink); text-decoration:underline; text-underline-offset:3px; }
.bp-onloc-priceband__right{ display:flex; flex-direction:column; align-items:flex-start; gap:16px; padding:34px; background:var(--bp-svc-ink); color:#fff; border-radius:var(--bp-svc-r-lg); }
.bp-onloc-priceband__floor{ font-family:Poppins,sans-serif; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:rgba(255,255,255,0.6); font-weight:600; }
.bp-onloc-priceband__amt{ font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-weight:400; font-size:62px; letter-spacing:-0.01em; line-height:1; color:#fff; }
.bp-onloc-priceband__amt small{ font-family:Poppins,sans-serif; font-style:normal; font-size:15px; color:rgba(255,255,255,0.6); margin-left:10px; letter-spacing:0.02em; font-weight:400; }
.bp-onloc-priceband__note{ font-size:13px; color:rgba(255,255,255,0.66); line-height:1.65; margin:0; }
.bp-onloc-priceband__tags{ display:flex; flex-wrap:wrap; gap:8px; margin-top:2px; }
.bp-onloc-priceband__tags span{ font-family:Poppins,sans-serif; font-size:10px; letter-spacing:0.06em; text-transform:uppercase; font-weight:600; color:rgba(255,255,255,0.8); border:1px solid rgba(255,255,255,0.2); border-radius:var(--bp-svc-r-pill); padding:5px 11px; }

/* ---------- RESPONSIVE ---------- */
@media (max-width:1100px){
  .bp-onloc .bp-services-hero__title{ font-size:46px; }
  .bp-onloc .bp-services-hero__grid{ grid-template-columns:1fr; gap:36px; }
  .bp-onloc-plate{ min-height:600px; max-width:580px; }
  .bp-onloc .bp-services-sect__h{ font-size:34px; }
  .bp-onloc-split, .bp-onloc-split--rev{ grid-template-columns:1fr; gap:30px; }
  .bp-onloc-split--rev .bp-onloc-split__media{ order:0; }
  .bp-onloc-split__media{ position:static; max-width:600px; }
  .bp-onloc-overview__grid{ grid-template-columns:1fr 1fr; }
  .bp-onloc-attrs__row{ grid-template-columns:repeat(2,1fr); gap:18px 24px; }
  .bp-onloc-route__track{ grid-template-columns:1fr; gap:14px; }
  .bp-onloc-route__arrow{ width:1.5px; height:28px; justify-self:center; }
  .bp-onloc-route__arrow::after{ right:auto; left:50%; top:auto; bottom:0; transform:translateX(-50%); border-left:5px solid transparent; border-right:5px solid transparent; border-top:8px solid var(--bp-svc-ink); border-bottom:none; }
  .bp-onloc-priceband__inner{ grid-template-columns:1fr; gap:32px; }
  .bp-onloc-compare{ display:none; }
  .bp-onloc-compare-cards{ display:flex; flex-direction:column; gap:16px; margin-top:8px; }
  .bp-onloc-compare-card{ border:1px solid var(--bp-svc-hair); border-radius:var(--bp-svc-r-md); overflow:hidden; }
  .bp-onloc-compare-card__h{ font-family:Poppins,sans-serif; font-weight:600; font-size:16px; color:#fff; background:var(--bp-svc-ink); padding:16px 20px; }
  .bp-onloc-compare-card__h small{ display:block; font-family:var(--FONT-STACK-HIGHLIGHT); font-style:italic; font-weight:400; font-size:12px; color:rgba(255,255,255,0.6); margin-top:3px; }
  .bp-onloc-compare-card__row{ padding:14px 20px; border-top:1px solid var(--bp-svc-hair); }
  .bp-onloc-compare-card__k{ font-family:Poppins,sans-serif; font-weight:600; font-size:11px; letter-spacing:0.06em; text-transform:uppercase; color:var(--bp-svc-mute); margin-bottom:5px; }
  .bp-onloc-compare-card__v{ font-size:13.5px; line-height:1.55; color:var(--bp-svc-ink-2); }
}
@media (max-width:640px){
  .bp-onloc.bp-services-hero, .bp-onloc.bp-services-thesis, .bp-onloc.bp-services-sect, .bp-onloc-priceband{ padding-left:20px; padding-right:20px; }
  .bp-onloc .bp-services-hero__title{ font-size:38px; }
  .bp-onloc-overview, .bp-onloc-attrs{ padding-left:20px; padding-right:20px; }
  .bp-onloc-overview__grid{ grid-template-columns:1fr; }
  .bp-onloc-attrs__row{ grid-template-columns:1fr; gap:14px; }
  .bp-onloc-reqs{ flex-direction:column; align-items:stretch; }
  .bp-onloc-kit__grid{ grid-template-columns:1fr; }
  .bp-onloc-kit__item:nth-child(odd){ border-right:none; }
  .bp-onloc-kit__item{ border-bottom:1px solid var(--bp-svc-hair) !important; }
  .bp-onloc-kit__item:last-child{ border-bottom:none !important; }
  .bp-onloc-timeline__pts{ flex-wrap:wrap; }
  .bp-onloc-plate__clock > div:not(.div){ flex-direction:column; gap:3px; }
  .bp-onloc-plate__clock .big{ font-size:25px; }
  .bp-onloc-plate__clock .big em{ font-size:13px; }
  .bp-onloc-plate__clock .lab{ font-size:9px; }
  .bp-onloc-plate__deliver{ width:56%; max-width:220px; }
  .bp-onloc-plate__dim{ padding:13px 13px; }
  .bp-onloc-plate__dim h5{ margin-bottom:8px; }
  .bp-onloc-dimrow{ gap:6px; padding:6px 0; }
  .bp-onloc-dimrow .v{ white-space:nowrap; font-size:12.5px; }
  .bp-onloc-dimrow .k{ font-size:9px; }
}

/* footprint plan — shrink labels on small phones so the "13 x 5.5 ft" ideal
   label and the dimension callouts don't clip inside the plan box */
@media (max-width:560px){
  .bp-onloc-plan{ min-height:330px; }
  .bp-onloc-plan__ideal-lab{ font-size:8.5px; right:5%; }
  .bp-onloc-plan__ideal-lab em{ font-size:10px; }
  .bp-onloc-plan__min-lab{ font-size:8.5px; }
  .bp-onloc-plan__dim-min-x span, .bp-onloc-plan__dim-ideal-x span, .bp-onloc-plan__dim-y span{ font-size:9px; padding:0 4px; }
}

/* ============================================================================
   END ON-LOCATION HEADSHOTS PAGE
   ============================================================================ */


/* ============================================================================
   FAQ HERO — "ASKED → ANSWERED" CONSOLE (right-column device)
   ----------------------------------------------------------------------------
   Operator 2026-06-01: per faq-services-hero-restructure-handoff.md, the
   existing single-column FAQ hero (H1 + lede + CTAs) gets a right-column
   device. Copy is locked verbatim from the handoff §4; the device labels
   are the writer-approved set from §5.

   Two parts:
     1) .bp-faq-hero__grid — wraps the existing left content + new right
        device into a 2-column layout. Inner widens from 1080 → 1328 to fit.
     2) bp-faqop-* — the console device itself (head bar + ask row + facets
        + personas footer).

   Colors use the master-handoff palette (hair = #e8e8e8, soft = #fafafa).
   No em dashes. Mobile collapses to single column at ≤1000px.
   ============================================================================ */

/* Override existing __inner cap (line ~4473) to fit the 2-col layout. */
.bp-faq-hero__inner{ max-width:1328px; }

/* 2-column grid wrapper. The existing H1/lede/CTAs become the left col;
   the console aside becomes the right col. */
.bp-faq-hero__grid{
  display:grid;
  grid-template-columns:1.02fr 0.98fr;
  gap:60px;
  align-items:center;
}

/* When the device drops below the copy on narrow viewports, restore the
   default lede max-width behaviour. */
@media (max-width:1000px){
  .bp-faq-hero__grid{ grid-template-columns:1fr; gap:40px; }
}

/* ---- Console box ---- */
.bp-faqop-console{
  background:#fff;
  border:1px solid #e8e8e8;
  border-radius:28px;
  box-shadow:0 30px 70px -38px rgba(0,0,0,0.34);
  overflow:hidden;
}
.bp-faqop-console__head{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:12px;
  padding:16px 24px;
  border-bottom:1px solid #0a0a0a;
}
.bp-faqop-console__lead{
  font-size:11px; letter-spacing:0.22em;
  text-transform:uppercase; font-weight:600;
  color:#0a0a0a; white-space:nowrap;
}
.bp-faqop-console__sub{
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-size:15px; color:#666; white-space:nowrap;
}
.bp-faqop-console__body{ padding:24px 24px 22px; }

/* ---- "Asked" row ---- */
.bp-faqop-ask{
  display:grid; grid-template-columns:34px 1fr;
  gap:14px; align-items:start;
}
.bp-faqop-ask__q{
  width:34px; height:34px; border-radius:9px;
  background:#0a0a0a; color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-weight:600; font-size:15px;
}
.bp-faqop-ask__tag{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:10px; letter-spacing:0.16em;
  text-transform:uppercase; color:#666; margin:0 0 5px;
}
.bp-faqop-ask__txt{
  font-weight:500; font-size:18.5px; line-height:1.3;
  letter-spacing:-0.01em; color:#0a0a0a; margin:0;
}
.bp-faqop-ask__txt em{
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-weight:400;
  color:#0a0a0a;
}
.bp-faqop-ask__cursor{
  display:inline-block; width:2px; height:0.95em;
  background:#0a0a0a; margin-left:3px;
  transform:translateY(2px);
  animation:bp-faqop-blink 1.1s steps(1) infinite;
}
@keyframes bp-faqop-blink{ 50%{ opacity:0; } }

/* ---- Stem between Ask row and facets ---- */
.bp-faqop-stem{
  width:1px; height:26px; background:#e8e8e8;
  margin:16px 0 16px 16px; position:relative;
}
.bp-faqop-stem::after{
  content:""; position:absolute;
  left:50%; bottom:0;
  width:6px; height:6px; border-radius:50%;
  background:#666;
  transform:translate(-50%,50%);
}

/* ---- Facets ---- */
.bp-faqop-facets{ display:flex; flex-direction:column; gap:8px; }
.bp-faqop-facet{
  display:grid; grid-template-columns:26px 1fr auto;
  gap:13px; align-items:center;
  padding:13px 15px;
  border:1px solid #e8e8e8; border-radius:12px;
  background:#fafafa;
  /* Handoff §5 update 2026-06-01: facets are now in-page jump anchors
     (#pricing-lede / #team-day-lede / #deliverables-lede). They render as
     <a> so the default browser underline + link colour need clearing. */
  text-decoration:none; color:inherit;
  transition:border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}
.bp-faqop-facet:hover{
  border-color:#0a0a0a;
  box-shadow:0 8px 22px -16px rgba(0,0,0,0.45);
  transform:translateY(-1px);
}
.bp-faqop-facet__chk{
  width:22px; height:22px; border-radius:50%;
  background:#0a0a0a;
  display:flex; align-items:center; justify-content:center;
}
.bp-faqop-facet__chk svg{ width:11px; height:9px; }
.bp-faqop-facet__name{
  font-weight:600; font-size:14.5px;
  color:#0a0a0a; letter-spacing:-0.005em;
}
.bp-faqop-facet__name small{
  display:block; font-weight:400; font-size:11.5px;
  color:#666; letter-spacing:0; margin-top:1px;
}
.bp-faqop-facet__state{
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-size:13.5px; color:#0a0a0a;
}

/* ---- Personas footer ---- */
.bp-faqop-personas{
  display:flex; align-items:center; gap:10px;
  margin-top:20px; padding-top:18px;
  border-top:1px solid #e8e8e8;
}
.bp-faqop-personas__l{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:10px; letter-spacing:0.14em;
  text-transform:uppercase; color:#666;
}
.bp-faqop-personas__row{
  display:flex; gap:7px; margin-left:auto;
}
.bp-faqop-personas__row span{
  font-size:11.5px; font-weight:500;
  color:#2a2a2a;
  padding:5px 11px;
  border:1px solid #e8e8e8; border-radius:999px;
}
@media (max-width:1000px){
  .bp-faqop-personas{ flex-direction:column; align-items:flex-start; gap:12px; }
  .bp-faqop-personas__row{ margin-left:0; flex-wrap:wrap; }
}
@media (max-width:720px){
  .bp-faqop-console__head{ padding:14px 18px; }
  .bp-faqop-console__body{ padding:20px 18px; }
}

/* ============================================================================
   END FAQ HERO CONSOLE
   ============================================================================ */


/* ============================================================================
   SERVICES HERO — "INK ANCHORS" SERVICE BUBBLE TILES (right-column device)
   ----------------------------------------------------------------------------
   Operator 2026-06-01: per faq-services-hero-restructure-handoff.md, the
   existing Services hero already has a 2-col grid (1.55fr / 1fr) with the
   right column empty. Drop the 6 service bubble tiles into the right column.

   Color tokens swapped per handoff §2: design's #f3f2ee → master palette
   #fafafa; design's #e8e8e6 → master palette #e8e8e8. No em dashes. Tile
   3 reads "Board and investor relations" — the design's "IR" is banned.
   ============================================================================ */

.bp-svcop-tiles{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:14px;
}
.bp-svcop-tile{
  border-radius:22px;
  padding:18px 22px;
  min-height:120px;
  display:flex; flex-direction:column;
  justify-content:space-between;
  text-decoration:none;
  transition:transform 160ms ease, box-shadow 160ms ease;
}
.bp-svcop-tile:hover{ transform:translateY(-3px); }
.bp-svcop-tile__cat{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:9.5px; letter-spacing:0.14em;
  text-transform:uppercase; opacity:0.62;
}
.bp-svcop-tile__nm{
  font-family:var(--FONT-STACK-HIGHLIGHT, "Playfair Display", Georgia, serif);
  font-style:italic; font-size:21px; line-height:1.08;
  margin-top:14px;
}
.bp-svcop-tile__nm b{
  font-family:var(--FONT-STACK-BODY, Poppins, sans-serif);
  font-style:normal; font-weight:500;
  display:block; font-size:15px;
  letter-spacing:0.005em; margin-bottom:3px;
}
.bp-svcop-tile--ink{ background:#0a0a0a; color:#fff; }
.bp-svcop-tile--ink:hover{ box-shadow:0 18px 40px -22px rgba(0,0,0,0.5); }
.bp-svcop-tile--paper{
  background:#fff; color:#0a0a0a;
  border:1px solid #e8e8e8;
}
.bp-svcop-tile--paper:hover{ box-shadow:0 18px 40px -26px rgba(0,0,0,0.32); }
.bp-svcop-tile--soft{
  background:#fafafa; color:#0a0a0a;
}
.bp-svcop-tile--soft:hover{ box-shadow:0 18px 40px -26px rgba(0,0,0,0.22); }
.bp-svcop-tile--wide{ grid-column:span 2; min-height:96px; }
.bp-svcop-tile--wide .bp-svcop-tile__nm{ margin-top:10px; }

/* ============================================================================
   END SERVICES HERO TILES
   ============================================================================ */


