/* ============================================================
   Anderman & Company — extended.css
   ------------------------------------------------------------
   Restyles three registered blocks to the "feature card" pattern
   (photo · bottom gradient · white title · circular arrow button).

   ENQUEUE LAST in functions.php — after anderman.css AND
   additional.css — so these rules win on equal specificity.

   Blocks affected:
     product_grid.php    → .product-tile-photo  (CYAN overlay + ACF icon)
     materials_grid.php  → .materials-grid-photo (NAVY overlay + formula chip)
     industries_grid.php → .deco-bg-industries   (light-grey layered gradients)

   Uses the existing :root tokens defined in anderman.css.
============================================================ */

/* ---------- Shared feature-card shape (products + materials) ---------- */
.product-tile-photo,
.materials-grid-photo .material-tile {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  isolation: isolate;
  overflow: hidden;
  border: 0;
  border-radius: var(--r-lg);
  background-color: var(--dark);
  min-height: 300px;
  padding: 0;
  text-decoration: none;
  transition: transform .4s var(--ease), box-shadow .4s var(--ease);
}
/* products grid carries .product-grid .product-tile-photo (0,2,0) elsewhere —
   match that specificity so the card height/padding actually apply. */
.product-grid .product-tile-photo {
  min-height: 300px;
  height: auto;
  padding: 0;
}
.product-tile-photo:hover,
.materials-grid-photo .material-tile:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-card-hover);
}

/* the photo */
.product-tile-image,
.materials-grid-photo .material-tile-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  z-index: 1;
  transition: transform .6s var(--ease);
}
.product-tile-photo:hover .product-tile-image,
.materials-grid-photo .material-tile:hover .material-tile-image { transform: scale(1.05); }

/* retire the old slug-based ::before/::after photo system on materials —
   the block now outputs a real <img> from the ACF hero_image. */
.materials-grid-photo .material-tile::before,
.materials-grid-photo .material-tile::after { content: none; }

/* gradient overlay — shared geometry, different hue per block */
.product-tile-cover,
.materials-grid-photo .material-tile-cover {
  position: absolute;
  inset: 0;
  z-index: 2;
  transition: opacity .4s var(--ease);
}
/* MATERIALS — neutral navy, darkest at the TOP (flipped vs products) */
.materials-grid-photo .material-tile-cover {
  background: linear-gradient(to bottom,
      rgba(28,43,58,.94) 0%,
      rgba(28,43,58,.78) 28%,
      rgba(28,43,58,.30) 62%,
      rgba(28,43,58,0)   100%);
}
/* PRODUCTS — deep teal-cyan: dark enough at the base for white text/icon
   to stand out on light-on-dark product photos, while the hue still reads
   distinctly cyan against the materials navy. */
.product-tile-cover {
  background: linear-gradient(to top,
      rgba(2,44,66,.97)   0%,
      rgba(3,74,104,.90)  26%,
      rgba(4,108,150,.58) 52%,
      rgba(4,150,205,.16) 80%,
      rgba(4,173,238,0)   100%);
}
.product-tile-photo:hover .product-tile-cover,
.materials-grid-photo .material-tile:hover .material-tile-cover { opacity: .92; }

/* title block — anchored bottom, leaves room for the arrow */
.product-tile-photo .product-tile-detail,
.materials-grid-photo .material-tile-detail {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: .45rem;
  padding: 1.5rem 4.25rem 1.6rem 1.5rem;
  color: #fff;
}
/* materials title block sits at the TOP, under the dark band */
.materials-grid-photo .material-tile-detail { height: 100%; justify-content: flex-start; }
.product-tile-photo .product-name,
.materials-grid-photo .material-tile h3 {
  font-size: 1.18rem;
  font-weight: 700;
  line-height: 1.25;
  color: #fff;
  margin: 0;
  text-shadow: 0 1px 3px rgba(0,0,0,.35); /* legibility on busy photos */
}
.product-tile-photo .product-desc { display: none; }

/* PRODUCTS — ACF icon (pasted inline <svg>, or an <img>) over the photo */
.product-tile-photo .product-icon {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,.22);
  border: 1px solid rgba(255,255,255,.28);
  border-radius: var(--r-sm);
  color: #fff;
  font-size: 1.3rem;
  margin-bottom: .35rem;
  backdrop-filter: blur(2px);
}
.product-tile-photo .product-icon svg { width: 24px; height: 24px; display: block; }
.product-tile-photo .product-icon img { width: 24px; height: 24px; display: block; filter: brightness(0) invert(1); }

/* MATERIALS — chemical formula chip, retained under the title */
.materials-grid-photo .material-formula {
  display: inline-block;
  align-self: flex-start;
  font-family: 'SFMono-Regular', Consolas, monospace;
  font-size: .72rem;
  color: #fff;
  background: rgba(var(--accent-rgb), .22);
  border: 1px solid rgba(var(--accent-rgb), .45);
  padding: .18rem .5rem;
  border-radius: var(--r-sm);
  margin-top: .15rem;
}

/* circular outline arrow button, bottom-right (both grids) */
.tile-arrow {
  position: absolute;
  right: 1.25rem;
  bottom: 1.3rem;
  z-index: 4;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,.7);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  transition: background .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease);
}
.tile-arrow svg { width: 16px; height: 16px; display: block; }
/* materials content sits at the top, so its arrow does too */
.materials-grid-photo .tile-arrow { top: 1.3rem; bottom: auto; }
.product-tile-photo:hover .tile-arrow,
.materials-grid-photo .material-tile:hover .tile-arrow {
  background: var(--accent);
  border-color: var(--accent);
  transform: translateX(3px);
}

/* ---------- INDUSTRIES — light-grey base with layered gradients ----------
   Stays on the grey section colour; the faint photo (::before) is replaced
   by soft diagonal + corner-tint gradients. No markup change required —
   leave the block's ACF "background_image" field empty for the gradient
   to show (a set image renders .background-image over the top). */
.deco-bg-industries,
.section-gradient {
  background:
    radial-gradient(circle at 88% 10%, rgba(39,174,96,.13) 0%, rgba(39,174,96,0) 42%),  /* green (--event) */
    radial-gradient(circle at 6% 92%,  rgba(28,43,58,.07) 0%, rgba(28,43,58,0) 40%),
    linear-gradient(135deg, #f4f6f9 0%, var(--light) 55%, #dde3ea 100%);
}
.deco-bg-industries::before { content: none; }


/* Product solutions — green card borders + icons (matches the gradient). */
.variants-green .variant-card { border-color: rgba(39, 174, 96, .35); }
.variants-green .variant-card:hover { border-color: var(--event); }
.variants-green .product-icon { color: var(--event); background: rgba(39, 174, 96, .12); }

/* Product solutions — collapsible cards: icon + title shown, text on click.
   align-items:start keeps row-mates at their own height when one expands. */
.variants-grid { align-items: start; }
button.variant-card {
  width: 100%;
  font: inherit;
  text-align: left;
  color: inherit;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
.variant-card.is-collapsible { position: relative; padding-right: 2.75rem; }
.variant-toggle {
  position: absolute;
  top: 1.15rem;
  right: 1.15rem;
  width: 22px;
  height: 22px;
  color: var(--event);
  transition: transform .3s var(--ease);
}
.variant-toggle svg { width: 100%; height: 100%; display: block; }
.variant-card.is-open .variant-toggle { transform: rotate(180deg); }
.variant-card .variant-text { display: none; }
.variant-card.is-open .variant-text { display: block; }
/* Even height so a longer title doesn't skew the row; relaxes on smaller screens. */
.variant-card { min-height: 160px; }
@media (max-width: 991px) {
  .variant-card { min-height: auto; }
}


/* ============================================================
   OUTCOME CALLOUT — "what that means for you" box
   Base = brand blue. `.outcome-box--warm` uses the props-icon
   orange (single products). Text centres, left-aligns ≤640px.
============================================================ */
.outcome-box {
  max-width: 900px;
  margin: 2rem auto 0;
  padding: 1.5rem;
  text-align: center;
  background: rgba(var(--accent-rgb), .06);
  border: 1px solid rgba(var(--accent-rgb), .2);
  border-radius: var(--r-md);
}
.outcome-box .outcome-title {
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.7;
  color: var(--dark);
  margin: 0;
}
.outcome-box .outcome-text {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--dark);
  margin: 0;
}
.outcome-box--warm {
  background: rgba(243, 156, 18, .08);   /* props-icon orange (--pressrelease) */
  border-color: rgba(243, 156, 18, .28);
}
@media (max-width: 640px) {
  .outcome-box { text-align: left; }
}


/* ============================================================
   SINGLE MATERIALS — section refinements
============================================================ */

/* 2. At-a-glance props strip — borderless, blue icon above each point,
   larger/darker text, max 5 per row (wraps), left-aligned on mobile.
   (display:flex makes the old grid-template / media-query rules no-ops.) */
.props-strip {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.25rem;
  background: none;
  border: 0;
  border-radius: 0;
  overflow: visible;
  margin-bottom: 3rem;
  /* PHP sets --props-cols per count for balanced rows
     (6 → 3+3, 7 → 4+3, 8 → 4+4). Falls back to 5. */
  --props-cols: 5;
}
.props-cell {
  flex: 0 1 calc(100% / var(--props-cols, 5) - 1.25rem);
  max-width: calc(100% / var(--props-cols, 5) - 1.25rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .55rem;
  background: none;
  padding: 1rem .5rem;
  text-align: center;
}
.props-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  color: var(--pressrelease);          /* warm earthy orange — brighter than the cyan accent */
  background: rgba(243, 156, 18, .12);
}
.props-icon svg { width: 24px; height: 24px; display: block; }
.props-cell .lbl {
  font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  color: var(--secondary);
  margin: 0;
}
.props-cell .val {
  font-size: 1.4rem; font-weight: 700; color: var(--dark);
  line-height: 1.25; letter-spacing: -.01em;
  word-break: break-word;
  margin: 0;
}
/* optional supporting line under the value (e.g. product benefit descriptions) */
.props-desc {
  font-size: .9rem;
  line-height: 1.55;
  color: var(--muted);
  margin: 0;
}
@media (max-width: 640px) {
  .props-strip { justify-content: flex-start; }
  .props-cell {
    flex-basis: calc(50% - 1rem);
    max-width: calc(50% - 1rem);
    align-items: flex-start;
    text-align: left;
  }
}

/* 7. Applications — interactive tabbed panel (not a list).
   Vertical tabs on the left, active application detail on the right;
   collapses to a horizontal tab strip on mobile. Each tab is ready to
   become a link to a real application page later. */
.applications-intro {
  max-width: 720px;
  margin: 0 auto 2.5rem;
  text-align: center;
  color: var(--muted);
}
.applications-tabs {
  display: grid;
  grid-template-columns: minmax(220px, 300px) 1fr;
  gap: 2rem;
  align-items: start;
}
.applications-tabs-nav {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  border-left: 2px solid var(--border);
}
.app-tab {
  display: flex;
  align-items: center;
  gap: .75rem;
  width: 100%;
  text-align: left;
  padding: .9rem 1rem;
  margin-left: -2px;
  background: none;
  border: 0;
  border-left: 3px solid transparent;
  color: var(--muted);
  font-size: .98rem;
  font-weight: 600;
  cursor: pointer;
  transition: color .25s var(--ease), border-color .25s var(--ease), background .25s var(--ease);
}
.app-tab:hover { color: var(--dark); }
.app-tab.is-active {
  color: var(--dark);
  border-left-color: var(--accent);
  background: linear-gradient(90deg, rgba(var(--accent-rgb),.06), rgba(var(--accent-rgb),0));
}
.app-tab-num { font-size: .78rem; font-weight: 800; color: var(--accent); opacity: .55; }
.app-tab.is-active .app-tab-num { opacity: 1; }
.app-tab-label { flex: 1 1 auto; }
.app-tab-arrow {
  margin-left: auto; color: var(--accent);
  opacity: 0; transform: translateX(-4px);
  transition: opacity .25s var(--ease), transform .25s var(--ease);
}
.app-tab.is-active .app-tab-arrow { opacity: 1; transform: none; }

.applications-tabs-panel {
  position: relative;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 2.5rem;
  box-shadow: var(--shadow-card);
  min-height: 220px;
}
.app-pane[hidden] { display: none; }
.app-pane.is-active { animation: appFade .35s var(--ease); }
.app-pane-num {
  display: block;
  font-size: 2.75rem; font-weight: 800; line-height: 1;
  color: rgba(var(--accent-rgb), .16);
  letter-spacing: -.03em;
  margin-bottom: .5rem;
}
.app-pane h3 { font-size: 1.45rem; font-weight: 700; color: var(--dark); margin: 0 0 .8rem; }
.app-pane p { font-size: 1.04rem; line-height: 1.75; color: var(--muted); margin: 0; }
@keyframes appFade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

@media (max-width: 760px) {
  .applications-tabs { grid-template-columns: 1fr; gap: 1.25rem; }
  .applications-tabs-nav {
    flex-direction: row;
    gap: 0;
    overflow-x: auto;
    border-left: 0;
    border-bottom: 2px solid var(--border);
    scrollbar-width: none;
  }
  .applications-tabs-nav::-webkit-scrollbar { display: none; }
  .app-tab {
    flex: 0 0 auto;
    white-space: nowrap;
    margin-left: 0;
    margin-bottom: -2px;
    border-left: 0;
    border-bottom: 3px solid transparent;
  }
  .app-tab.is-active { border-left: 0; border-bottom-color: var(--accent); background: none; }
  .app-tab-arrow { display: none; }
  .applications-tabs-panel { padding: 1.75rem; }
}

/* Spec chips — shared by label-only Applications and Key Properties.
   Compact, scannable, scales to any count, ready to become links. */
.spec-chips { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: center; }
.spec-chip {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .6rem 1.1rem;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--r-pill);
  font-size: .92rem;
  font-weight: 600;
  color: var(--dark);
  line-height: 1.2;
  text-decoration: none;
  box-shadow: var(--shadow-sm);
  transition: border-color .25s var(--ease), background .25s var(--ease), transform .25s var(--ease), box-shadow .25s var(--ease);
}
.spec-chip::before {
  content: "";
  flex: 0 0 auto;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
}
.spec-chip:hover {
  border-color: var(--accent);
  background: rgba(var(--accent-rgb), .06);
  transform: translateY(-2px);
  box-shadow: var(--shadow-card);
}
.spec-groups { display: flex; flex-direction: column; gap: 1.75rem; }
.spec-group-title {
  font-size: .78rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  color: var(--secondary);
  margin: 0 0 .9rem;
  padding-bottom: .5rem;
  border-bottom: 1px solid var(--border);
  text-align: center;
}
/* Centred by default; left-aligned from the 640px breakpoint down. */
@media (max-width: 640px) {
  .spec-chips { justify-content: flex-start; }
  .spec-group-title { text-align: left; }
}

/* 8. Key Properties — simplified 2-column table (no sorting) */
.data-table.data-table-simple th { cursor: default; }
.data-table.data-table-simple th::after { content: none; }
.data-table.data-table-simple td { white-space: normal; }
.data-table.data-table-simple td:first-child { width: 32%; white-space: nowrap; }

/* Material Text — read-more clamp */
.mission-prose.is-clamped { position: relative; }
.read-more-btn {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  margin-top: .25rem;
  padding: .55rem 1.2rem;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .02em;
  color: var(--accent);
  background: transparent;
  border: 2px solid var(--accent);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: background .3s var(--ease), color .3s var(--ease);
}
.read-more-btn:hover { background: var(--accent); color: #fff; }

/* Datasheet — request-form variant (no PDF). Stacks the CF7 form below. */
.datasheet-block.datasheet-request { flex-direction: column; align-items: stretch; }
.datasheet-request .ds-form { margin-top: .5rem; }
.datasheet-request .ds-form .wpcf7 { margin: 0; }
.datasheet-request .ds-form input[type="email"],
.datasheet-request .ds-form input[type="text"] {
  width: 100%;
  max-width: 420px;
  padding: .7rem .9rem;
  border: 1px solid rgba(255,255,255,.3);
  border-radius: var(--r-sm);
  background: rgba(255,255,255,.95);
  color: var(--dark);
  font-size: .9rem;
}
.datasheet-request .ds-form .wpcf7-submit { margin-top: .6rem; }


/* ============================================================
   ABOUT PAGES — overview stats, our-story milestones, team photos
============================================================ */
/* Overview — flush variant removes the stats block's top margin */
.about-stats--flush { margin-top: 0; }

/* Our story — small circular milestone image (blue border) above the year */
.milestone-h-avatar {
  display: block;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  border: 3px solid var(--accent);
  background-size: cover;
  background-position: center;
  background-color: var(--light);
  margin-bottom: .35rem;
}

/* Team — circular photos, 1:1 ratio at 75% width, centred in the card */
.leadership-photo {
  width: 75%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  margin: 1.5rem auto 0;
}

/* Overview — larger team teaser photo (img fills the circle, so size the circle) */
.about-team-photo { width: 130px; height: 130px; }


/* ============================================================
   SINGLE POST — slim-hero visual header + wider main column
============================================================ */
/* Wider main column (was 8fr / 4fr); sidebar fixed, main takes the rest.
   Scoped to desktop — an unscoped rule here loads after anderman.css and
   would override its ≤991px single-column stack, crushing .article-main
   to 0px on phones (news + press-release singles). */
@media (min-width: 992px) {
  .article-layout { grid-template-columns: minmax(0, 1fr) 320px; }
}

/* Header elements sit on the dark hero image — flip to light. */
.article-hero .breadcrumb { margin-bottom: 1rem; padding-left:0px; }
.article-hero .breadcrumb a { color: rgba(255,255,255,.8); }
.article-hero .breadcrumb a:hover { color: #fff; }
.article-hero .breadcrumb .sep,
.article-hero .breadcrumb .cur { color: rgba(255,255,255,.6); }
.article-hero .article-tag-strip { margin-bottom: 1rem; }
.article-hero .topic-tag {
  background: rgba(255,255,255,.15);
  color: #fff;
  border-color: rgba(255,255,255,.3);
}
.article-hero .topic-tag:hover { background: var(--accent); border-color: var(--accent); }
.article-hero .article-h1 { color: #fff; margin-bottom: var(--r-lg); }
.article-hero .article-dek { color: rgba(255,255,255,.82); margin: 0 0 1.25rem; }
.article-hero .brand-divider { justify-content: flex-start; margin: 0 0 1.25rem; }
.article-hero .brand-divider::before { display: none; }
.article-hero .brand-divider::after { background: #fff; }
.article-hero .article-meta {
  color: rgba(255,255,255,.85);
  border-top-color: rgba(255,255,255,.22);
  border-bottom-color: rgba(255,255,255,.22);
  margin-bottom: 0;
}
.article-hero .article-meta-sep { color: rgba(255,255,255,.55); }
.article-hero .article-author-text strong,
.article-hero .article-author-text span { color: #fff; }
/* read-time / updated pills inherit grey tokens from anderman.css —
   near-invisible over the hero photo, so flip them light too. */
.article-hero .article-readtime { color: rgba(255,255,255,.85); }
.article-hero .article-updated {
  background: rgba(255,255,255,.15);
  color: #fff;
}
.article-hero .article-updated svg,
.article-hero .article-updated time { color: #fff; }


/* ============================================================
   BRAND WATERMARK — oversized 'a' mark, single tone, edge-bleed.
   Add `.section-watermark` to any .section. The mark is a CSS mask,
   so the tone is set by --watermark-color and the strength by
   --watermark-opacity. Add `.section-watermark--left` to bleed off
   the left edge instead of the right.
============================================================ */
.section-watermark { position: relative; overflow: hidden; }
.section-watermark::after {
  content: "";
  position: absolute;
  z-index: 0;                       /* above the section bg, below .container (z-index:3) */
  top: 50%;
  right: -8%;
  transform: translateY(-50%);
  width: clamp(360px, 46vw, 620px);
  aspect-ratio: 256.14 / 247.84;    /* the mark's intrinsic ratio */
  background-color: var(--watermark-color, var(--accent));
  opacity: var(--watermark-opacity, .16);
  -webkit-mask: url('../images/brand-a-mark.svg') no-repeat center / contain;
          mask: url('../images/brand-a-mark.svg') no-repeat center / contain;
  pointer-events: none;
}
.section-watermark--left::after { right: auto; left: -7%; }


/* ============================================================
   BRAND DIVIDER — short line · 'a' (full colour) · short line.
   Markup: <span class="brand-divider"><i class="brand-divider-a"></i></span>
   Lines centre-align to the mark with a small gap. At ≤640px the
   left line drops and it left-aligns. Can stand in for `.tb`.
============================================================ */
.brand-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .7rem;
  margin: 12px 0 1.5rem;
}
.brand-divider::before,
.brand-divider::after {
  content: "";
  display: block;
  width: 48px;
  height: 2px;
  border-radius: 2px;
  background: var(--accent);
}
.brand-divider-a {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  background: url('../images/brand-a.svg') center / contain no-repeat;
}
@media (max-width: 640px) {
  .brand-divider { justify-content: flex-start; }
  .brand-divider::before { display: none; }
}

/* Inside a left-aligned title-holder: always left, single (right) line. */
.title-holder .brand-divider { justify-content: flex-start; }
.title-holder .brand-divider::before { display: none; }

/* Inside a centred title-holder: centred (both lines) down to 991px, then left. */
.title-holder.center .brand-divider { justify-content: center; }
.title-holder.center .brand-divider::before { display: block; }
@media (max-width: 991px) {
  .title-holder.center .brand-divider { justify-content: flex-start; }
  .title-holder.center .brand-divider::before { display: none; }
}

/* About teaser quote — the brand divider (rendered above the quote in
   markup) replaces the old top/bottom accent rules. */
.about-teaser-quote::before,
.about-teaser-quote::after { content: none; }


/* ============================================================
   SIDEBAR — non-link rows in .sidebar-cat-list (e.g. the
   "Press releases by year" display-only list). Mirrors the
   anchor styling in anderman.css minus the hover state.
============================================================ */
.sidebar-cat-list .sb-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .6rem;
  padding: .55rem 0;
  font-size: .88rem;
  font-weight: 600;
  color: var(--dark);
  border-bottom: 1px dashed var(--border);
}
.sidebar-cat-list li:last-child .sb-row { border-bottom: none; }


/* ============================================================
   CASE STUDY SINGLE — prose column, solution/approach/result
   pillars, highlight band. Mobile-first: single column below
   768px, 3-up pillars from 768px.
============================================================ */
.cs-single-section { padding-top: 3rem; padding-bottom: 3rem; }
.cs-single-prose {
  max-width: 760px;
  margin: 0 auto;
}
.cs-pillar-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  align-items: stretch;
}
@media (min-width: 768px) {
  .cs-pillar-grid--2 { grid-template-columns: repeat(2, 1fr); }
  .cs-pillar-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .cs-pillar-grid { gap: 1.5rem; }
}
.cs-pillar-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 1.75rem 1.5rem;
  box-shadow: var(--shadow-card);
  display: flex;
  flex-direction: column;
  gap: .65rem;
}
.cs-pillar-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: var(--r-md);
  background: rgba(var(--accent-rgb), .1);
}
.cs-pillar-icon img { width: 28px; height: 28px; display: block; }
.cs-pillar-card h2 {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--dark);
  margin: 0;
}
.cs-pillar-card p {
  font-size: .96rem;
  line-height: 1.7;
  color: var(--muted);
  margin: 0;
}
.cs-highlight-section { padding-top: 2.5rem; padding-bottom: 2.5rem; }
.cs-highlight {
  max-width: 860px;
  margin: 0 auto;
  padding: clamp(1.5rem, 4vw, 2.5rem);
  background: linear-gradient(135deg, var(--dark) 0%, #0a3a55 100%);
  border-radius: var(--r-lg);
  color: #fff;
  font-size: clamp(1.05rem, 1.8vw, 1.3rem);
  line-height: 1.65;
  border-left: 5px solid var(--casestudy, var(--accent));
}
.cs-highlight p { margin: 0 0 .75rem; }
.cs-highlight p:last-child { margin-bottom: 0; }
.cs-highlight a { color: var(--accent); }


/* ============================================================
   EVENT SINGLE — events with no main-column content (form-only)
   collapse to one centred column instead of a blank 7/12 gap.
============================================================ */
.event-layout--single { grid-template-columns: 1fr; }
.event-layout--single .event-sidebar {
  width: 100%;
  max-width: 620px;
  margin: 0 auto;
}


/* ============================================================
   WEBINAR PLAYER — real embed (YouTube-nocookie / Vimeo dnt /
   native <video> for MP4 + HLS). Injected by anderman.js when
   the play button is clicked.
============================================================ */
.webinar-player-embed {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  background: #000;
  object-fit: contain;
  z-index: 3;
}
/* the poster-legibility tint must not sit over a playing video */
.webinar-player-frame.is-playing::after { display: none; }
/* recorded webinar with no source yet — quiet note instead of a play button */
.webinar-player-note {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 2;
  padding: .55rem 1.1rem;
  background: rgba(0,0,0,.65);
  color: #fff;
  border-radius: var(--r-pill);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  backdrop-filter: blur(6px);
  white-space: nowrap;
}


/* ============================================================
   GALLERY BLOCK — 3 square (1:1) images side by side,
   collapsing to a single column on small screens.
============================================================ */
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}
.gallery-item {
  margin: 0;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border-radius: var(--r-md);
  background: var(--light);
}
.gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.gallery-empty { text-align: center; color: var(--muted); }
@media (max-width: 768px) {
  .gallery-grid { grid-template-columns: 1fr; }
}
