/* ==========================================================================
   Clearwater: FLUUX commercial filters (views/site/fluux-commercial-filters.php)
   Split hero (a line-up of cartridges on a glass stand) -> the range as one
   glass sheet that jumps to each line -> why filter (cutaway + three cards) ->
   one section per product line, alternating light and tint, with the photos
   on shelves and the figures in tables -> HF3, SCALE and MULTI as a glass
   grid. Built only from theme.css tokens; page classes are prefixed .fluux-
   ========================================================================== */

/* Hero: the product photos are cut-outs, so they stand on a glass panel ----- */
.fluux-hero .page-hero__title { max-width: 16ch; font-size: clamp(2.25rem, 1.3rem + 3vw, 4rem); }
.fluux-hero__media .bubbles { z-index: 0; }
.fluux-hero__stand {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: clamp(.75rem, .3rem + 1.4vw, 2rem);
  padding: clamp(1.75rem, 1rem + 2.5vw, 3rem) clamp(1rem, .5rem + 2vw, 2.5rem) clamp(1.25rem, 1rem + 1vw, 2rem);
  border-radius: var(--r-xl);
  background: var(--glass);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-lg), var(--glass-inset);
}
.fluux-hero__stand img {
  width: auto;
  height: clamp(11rem, 5rem + 14vw, 21rem);
  filter: drop-shadow(0 16px 18px rgba(6, 50, 74, .18));
}

/* The range: glass sheet, first cell is the intro -------------------------- */
.fluux-range { padding-top: clamp(2rem, 1rem + 3vw, 4rem); }
.fluux-range__bubbles { --bubbles-size: clamp(8rem, 5rem + 9vw, 15rem); top: -1rem; right: max(.5rem, calc((100% - var(--container)) / 2 - 7rem)); }
.fluux-range__grid { z-index: 1; }
.fluux-range__intro {
  justify-content: center;
  background:
    radial-gradient(90% 90% at 0% 0%, rgba(34, 195, 214, .22), transparent 70%),
    rgba(255, 255, 255, .5);
}
.fluux-range__intro .glass-grid__title { font-size: clamp(1.6rem, 1.2rem + 1.3vw, 2.25rem); line-height: 1.1; letter-spacing: var(--track-h); }
@media (max-width: 639.98px) {
  .fluux-range__intro { display: flex; }
}

/* Why: cutaway beside the text, then three benefit cards -------------------- */
.fluux-why__intro { align-items: center; }
.fluux-why__media { position: relative; }
.fluux-why__media .bubbles { --bubbles-size: clamp(6rem, 4rem + 5vw, 9rem); top: -1.5rem; left: -1rem; }
.fluux-why__text > * + * { margin-top: 1.25rem; }
.fluux-why__text p:not(.lead) { color: var(--muted); }
.fluux-benefits {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--grid-gap);
  margin: clamp(3rem, 2rem + 3vw, 5rem) 0 0;
  padding: 0;
  list-style: none;
}
.fluux-benefits .card__title { font-size: var(--fs-h4); }
@media (max-width: 899.98px) {
  .fluux-benefits { grid-template-columns: minmax(0, 1fr); }
}

/* A product line: text and figures beside a shelf of photos ----------------- */
.fluux-line__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: start; }
.fluux-line__grid.split--reverse { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
@media (max-width: 899.98px) {
  .fluux-line__grid,
  .fluux-line__grid.split--reverse { grid-template-columns: minmax(0, 1fr); }
}
.fluux-line__text { min-width: 0; container-type: inline-size; }
.fluux-line__text > * + * { margin-top: 1.25rem; }
.fluux-line__text .section-head__title { margin-top: .5rem; }
.fluux-line__text .lead { color: var(--ink-2); }
.fluux-line__text > p:not(.lead):not(.eyebrow):not(.fluux-note) { color: var(--muted); }
.fluux-note { color: var(--muted); font-size: var(--fs-sm); line-height: 1.6; }

/* Shelf: the cut-out photos stand on a pale wash (glass inside a tint section) */
.fluux-shelf {
  position: relative;
  z-index: 1;
  display: grid;
  gap: clamp(1rem, .6rem + 1.2vw, 1.75rem);
  margin: 0;
  padding: clamp(1.5rem, 1rem + 2vw, 2.75rem);
  border-radius: var(--r-xl);
  background: var(--wash), var(--bg-tint);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .7);
}
.section--tint .fluux-shelf {
  background: var(--glass);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-md), var(--glass-inset);
}
.fluux-shelf__row { display: flex; align-items: flex-end; justify-content: center; gap: clamp(.75rem, .4rem + 1.2vw, 1.75rem); }
/* Every photo gets one definite dimension, so its space is reserved (from the width and
   height attributes) before a lazy image loads and nothing shifts while the page scrolls */
.fluux-shelf img { filter: drop-shadow(0 14px 16px rgba(6, 50, 74, .16)); }
.fluux-shelf__row img { width: auto; height: clamp(10rem, 7rem + 8vw, 17rem); }
.fluux-shelf--single img { justify-self: center; width: min(100%, 17rem); height: auto; }
.fluux-shelf__item { display: grid; gap: .75rem; justify-items: center; margin: 0; }
.fluux-shelf--pair img { width: min(100%, 20rem); height: auto; }
.fluux-shelf__caption { color: var(--muted); font-size: var(--fs-sm); font-weight: 600; text-align: center; }

/* Tables: a glass sheet; in a narrow column (phones, tablets) each row becomes a
   small card whose values carry their column name (data-label) */
.fluux-table {
  overflow: hidden;
  border-radius: var(--r-lg);
  background: var(--glass-strong);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-sm);
}
.fluux-table caption {
  padding: 1rem 1.25rem .25rem;
  color: var(--primary-ink);
  font-size: var(--fs-sm);
  font-weight: 700;
  text-align: left;
}
.fluux-table th,
.fluux-table td { padding: .85rem 1.25rem; text-align: left; vertical-align: top; font-size: var(--fs-sm); line-height: 1.5; }
.fluux-table thead th { color: var(--muted); font-weight: 600; border-bottom: 1px solid var(--line-strong); }
.fluux-table tbody th { color: var(--ink); font-weight: 700; white-space: nowrap; }
.fluux-table td { color: var(--ink-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.fluux-table td.fluux-table__text { white-space: normal; }
.fluux-table tbody tr + tr > * { border-top: 1px solid var(--line); }
@container (max-width: 34rem) {
  .fluux-table thead { display: none; }
  .fluux-table caption { display: block; }
  .fluux-table table,
  .fluux-table tbody,
  .fluux-table tr,
  .fluux-table th,
  .fluux-table td { display: block; }
  .fluux-table tbody tr { padding: .9rem 1.25rem; }
  .fluux-table tbody tr + tr { border-top: 1px solid var(--line); }
  .fluux-table tbody tr + tr > * { border-top: 0; }
  .fluux-table tbody th,
  .fluux-table td { padding: .15rem 0; white-space: normal; }
  .fluux-table tbody th { margin-bottom: .35rem; font-size: 1rem; }
  .fluux-table td { display: grid; grid-template-columns: minmax(0, 9rem) minmax(0, 1fr); gap: 1rem; }
  .fluux-table td::before { content: attr(data-label); color: var(--muted); font-weight: 600; }
}

/* HF3, SCALE and MULTI: glass cells with a photo on top -------------------- */
.fluux-more__bubbles { --bubbles-size: clamp(7rem, 4rem + 7vw, 12rem); bottom: 3rem; left: max(.5rem, calc((100% - var(--container)) / 2 - 5rem)); }
.fluux-more .glass-grid__cell { align-items: center; text-align: center; }
.fluux-more__photo {
  width: auto;
  max-width: 100%;
  height: clamp(11rem, 8rem + 8vw, 16rem);
  margin-bottom: .75rem;
  object-fit: contain;
  filter: drop-shadow(0 14px 16px rgba(6, 50, 74, .16));
}
@media (max-width: 639.98px) {
  .fluux-more .glass-grid__cell { display: flex; }
}
