/* ================================================================
   ConPDS — Global Stylesheet
   Extracted from html-pages/conpds-homepage.html
   ================================================================ */

/* == 0. WEB FONTS ===============================================
   Inlined from former /static/fonts/fonts.css (audit v6.0 F-011) so the page
   only carries one render-blocking stylesheet in <head>. WOFF2 files are
   preloaded in site/base.html for the two latin weights actually used
   above the fold (IBM Plex Sans 600 + Material Icons). */

/* IBM Plex Mono — 400 latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-mono-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Mono — 400 latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-mono-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Mono — 600 latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-mono-600-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Mono — 600 latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-mono-600-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Sans — 300 latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-300-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Sans — 300 latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-300-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Sans — 400 latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Sans — 400 latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Sans — 500 latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Sans — 500 latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-500-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Sans — 600 latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-600-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Sans — 600 latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-600-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* IBM Plex Sans — 700 latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-700-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* IBM Plex Sans — 700 latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/static/fonts/ibm-plex-sans-700-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Material Icons */
@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/material-icons.woff2') format('woff2');
}

/* == 1. RESET & BASE ============================================ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* == 1b. REDUCED MOTION ========================================
   Audit v3.0 B3: respect prefers-reduced-motion: reduce. WCAG 2.2 SC 2.3.3.
   `!important` is the documented exception for prefers-reduced-motion overrides
   per WAI-ARIA APG, so this section is excluded from the no-!important rule
   in conpds-css.mdc. */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  /* Customer logo marquee — keep running per WCAG 2.2.2 ("Pause, Stop, Hide").
     The hover-pause on `.wf-logo-band-viewport:hover` is the documented escape
     hatch for users who genuinely cannot tolerate any motion. We re-apply the
     animation shorthand with !important here so the more-specific class
     selector beats the global `*` flattener above (which would otherwise
     collapse the duration to 0.01ms and the iteration to 1, freezing the
     loop). The duration tracks the per-call `--logo-band-speed` set inline
     by the `logo_band()` macro. */
  .wf-logo-band-track--30s,
  .wf-logo-band-track--45s,
  .wf-logo-band-track {
    animation: logo-scroll var(--logo-band-speed, 30s) linear infinite !important;
  }
}

/* == 1c. SKIP-TO-CONTENT LINK ===================================
   Audit v3.0 B4: WCAG 2.4.1 (Bypass Blocks). Hidden until keyboard-focused. */

.wf-skip-link {
  position: absolute;
  left: -9999px;
  top: 8px;
  z-index: 10000;
  padding: 8px 16px;
  background: var(--navy);
  color: var(--white);
  text-decoration: none;
  border-radius: 4px;
  font-weight: 600;
  font-size: 14px;
}
.wf-skip-link:focus,
.wf-skip-link:focus-visible {
  left: 8px;
  outline: 2px solid var(--blue);
  outline-offset: 2px;
}

/* == 2. CSS VARIABLES =========================================== */

:root {
  --navy:      #0B1F3A;
  --blue:      #1A5CFF;
  --blue-lt:   #0D4DEE;             /* Darkened from #3B7BFF in audit v3.0 B5: was 3.84:1 on white (fails AA-body); now 6.34:1 (passes). Used as button-hover background; hover convention flipped from "lighter on hover" to "darker on hover" so white text stays AA-compliant. */
  --teal:      #00C4B4;             /* Brand bright teal — decorative use only (icons, dots, borders, gradients, backgrounds). Fails WCAG-AA on white as a TEXT colour (2.20:1). Use --teal-text for any colour-applied-to-text rule. */
  --teal-text: #006F66;             /* AA-compliant teal for text on light backgrounds (6.06:1 on white, 5.36:1 on surface-page). Audit v3.0 B1. Same hue as --compare-after-text so the brand maintains internal consistency. */
  --teal-dim:  rgba(0,196,180,0.12);
  --danger:    #D62240;             /* Darkened from #E8304A in audit v3.0 B6: was 4.24:1 on white (fails AA-body); now 5.05:1 (passes). Visually a slightly richer brand red; hue preserved. */
  --surface-page: #EDF1F7;
  --grey-bg:   #E3EAF3;             /* Darkened from #F2F5F9 in audit v4.0 B5: was 1.04:1 vs --surface-page (cards blended into body); now 1.07:1 vs --surface-page and 1.21:1 vs white — cards visibly inset without overpowering. */
  --blue-surface: color-mix(in srgb, var(--blue) 4%, var(--white));
  --blue-surface-strong: color-mix(in srgb, var(--blue) 7%, var(--white));
  --teal-surface: color-mix(in srgb, var(--teal) 6%, var(--white));
  --grey-text: #52657B;             /* Darkened from #5A6E84 in audit v4.0 B6: was 4.33:1 on the new --grey-bg (fail AA-body); now 4.94:1 (pass). Also lifts white contrast 5.25→5.99 and surface-page 4.63→5.28. */
  --grey-text-strong: #3A4E65;
  --border:    #B6C3D7;             /* Darkened from #D6E0ED in audit v4.0 B1: was 1.18:1 on --surface-page (invisible) and 1.33:1 on white (very faint); now 1.55-1.74:1 across every surface — visible without changing brand feel. */
  --navy-hero-end: #0D2850;
  --navy-footer: #06142A;
  --compare-before-bg: #FFF4F4;
  --compare-before-text: #B84040;
  --compare-before-border: #FDDEDE;
  --compare-after-bg: color-mix(in srgb, var(--teal) 8%, var(--white));
  --compare-after-text: #006F66;
  --compare-after-border: color-mix(in srgb, var(--teal) 22%, var(--white));
  --white:     #FFFFFF;
  --font:      'IBM Plex Sans', sans-serif;
  --mono:      'IBM Plex Mono', monospace;
  --transition: 0.2s ease;
}

/* == 2b. MATERIAL ICONS ======================================== */

.material-icons {
  font-family: "Material Icons";
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: "liga";
  -webkit-font-smoothing: antialiased;
}

/* Material Icons sizing & color within icon containers */
.wf-icon-pill .material-icons  { font-size: 18px; color: var(--blue); }
.wf-icon-box .material-icons   { font-size: 20px; color: var(--blue); }
.wf-diff-card-icon .material-icons { font-size: 24px; color: var(--teal-text); }
.wf-mobile-screen-icon .material-icons,
.wf-mobile-card-screen-icon .material-icons { font-size: 32px; color: var(--blue); }
.wf-trust-gdpr-icon .material-icons { font-size: 16px; color: var(--teal-text); }
.wf-vert-icon .material-icons  { font-size: 22px; color: var(--teal-text); }
.wf-eco-icon .material-icons   { font-size: 24px; color: var(--teal-text); }

/* == 3. TYPOGRAPHY & BODY ======================================= */

body {
  font-family: var(--font);
  background: var(--surface-page);
  color: var(--navy);
  padding: 40px 20px 60px;
  min-height: 100vh;
}
.page { max-width: 1060px; margin: 0 auto; }

/* == 5. WIREFRAME SHELL ========================================= */

.wireframe {
  background: white;
  border-radius: 16px;
  border: 1px solid var(--border);
  overflow: hidden;
  box-shadow: 0 4px 24px rgba(11,31,58,0.08);
  margin-top: 24px;
}

/* == 6. NAVIGATION ============================================== */

.wf-nav {
  background: var(--navy);
  padding: 16px 56px;
  display: flex; align-items: center; justify-content: space-between;
}
.wf-nav-logo { display: flex; align-items: center; }
.wf-nav-logo-img {
  height: 28px;
  width: auto;
  display: block;
}
.wf-nav-links { display: flex; gap: 28px; }
.wf-nav-link { font-size: 14px; color: rgba(255,255,255,0.6); text-decoration: none; }
.wf-nav-cta {
  background: var(--blue); color: white;
  font-size: 14px; font-weight: 600;
  padding: 9px 20px; border-radius: 6px; cursor: pointer; text-decoration: none;
}

/* == 7. SHARED TYPOGRAPHY ======================================= */

.wf-h1 {
  font-size: 42px; font-weight: 700; color: white;
  line-height: 1.15; letter-spacing: -1.2px;
  margin-bottom: 16px; max-width: 680px;
  margin-left: auto; margin-right: auto;
  text-wrap: balance;               /* Audit v4.0 A4: avoids orphan/widow last-line on hero H1s */
}
.wf-hero-subtitle {
  font-size: 22px; font-weight: 400; color: rgba(255,255,255,0.7);
  line-height: 1.4; margin: -8px auto 20px;
  max-width: 680px; letter-spacing: -0.3px;
  text-wrap: balance;               /* Audit v4.0 A4: balanced lede beneath hero H1 */
}
/* Single-line tagline that sits between the hero H1 and the subhead. Mono +
   teal so it reads as a quotable promise distinct from the body subhead.
   Used on the platform homepage to disambiguate "holds up" — i.e. holds up
   against disputes, audits, and time. */
.wf-hero-tagline {
  font-family: var(--mono);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.3px;
  color: var(--teal);
  margin: -10px auto 22px;
  max-width: 640px;
  line-height: 1.5;
  text-wrap: balance;
}
.wf-h2 {
  font-size: 28px; font-weight: 700; color: var(--navy);
  letter-spacing: -0.5px; margin-bottom: 12px; line-height: 1.25;
  text-wrap: balance;               /* Audit v4.0 A4: section heads no longer break to a single trailing word */
}
.wf-h2.white { color: white; }
.wf-h2 .accent, .wf-h2-accent { color: var(--blue); }
.wf-h3 {
  font-size: 18px; font-weight: 600; color: var(--navy);
  margin-bottom: 6px; line-height: 1.4;
  text-wrap: balance;
}
.wf-hero-sub {
  font-size: 17px; color: rgba(255,255,255,0.65);
  line-height: 1.65; margin-bottom: 30px;
  max-width: 560px; margin-left: auto; margin-right: auto;
  text-wrap: pretty;                /* Audit v4.0 A4: pretty (not balance) for multi-line lede so first lines stay full-width */
}
.wf-section-intro {
  font-size: 16px; color: var(--grey-text);
  line-height: 1.65; margin-bottom: 20px; max-width: 680px;
  text-wrap: pretty;
}
.wf-bullets { display: flex; flex-direction: column; gap: 10px; }
.wf-bullet { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; color: var(--navy); line-height: 1.55; }
.wf-bullet-dot { width: 7px; height: 7px; background: var(--teal); border-radius: 50%; margin-top: 7px; flex-shrink: 0; }
/* Dot-variant bullets use a hanging-indent layout instead of flex so inline
   elements (e.g. <a> glossary links) inside the bullet text don't split
   contiguous text runs into separate anonymous flex items — which renders
   "Receipt (EIR) at arrival" as broken multi-column text. The cross variant
   keeps the flex layout because both children are <span> elements (no text
   runs to split). */
.wf-bullet:has(> .wf-bullet-dot) {
  display: block;
  position: relative;
  padding-left: 17px;
}
.wf-bullet:has(> .wf-bullet-dot) > .wf-bullet-dot {
  position: absolute;
  left: 0;
  top: 7px;
  margin-top: 0;
}

/* == 8. SECTION TAG ============================================= */

.wf-section-tag {
  font-family: var(--mono); font-size: 12px; letter-spacing: 2px;
  text-transform: uppercase; color: var(--grey-text);
  display: flex; align-items: center; gap: 10px;
  padding: 10px 56px;
  background: var(--blue-surface); border-bottom: 1px solid var(--border);
}
.wf-section-tag::after { content: ''; flex: 1; height: 1px; background: var(--border); }

/* == 9. BUTTONS ================================================= */

.wf-btn-row { display: flex; gap: 10px; justify-content: center; align-items: center; flex-wrap: wrap; }
.wf-btn-primary {
  background: var(--blue); color: white;
  font-size: 15px; font-weight: 600;
  padding: 14px 30px; border-radius: 8px;
  text-decoration: none; display: inline-block; cursor: pointer;
}
.wf-btn-outline {
  border: 1.5px solid rgba(255,255,255,0.35); color: rgba(255,255,255,0.88);
  font-size: 15px; font-weight: 500;
  padding: 14px 30px; border-radius: 8px;
  text-decoration: none; display: inline-block; cursor: pointer;
}
/* Native <button> defaults (e.g. grey fill) break light-on-dark CTAs */
button.wf-btn-primary,
button.wf-btn-outline,
button.wf-btn-ghost {
  font-family: var(--font);
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
  line-height: 1.25;
  margin: 0;
}
button.wf-btn-primary {
  border: none;
}
button.wf-btn-outline {
  background-color: transparent;
}
button.wf-btn-ghost {
  background-color: transparent;
}

.wf-btn-ghost {
  border: 1.5px solid var(--border); color: var(--blue);
  font-size: 14px; font-weight: 600;
  padding: 10px 22px; border-radius: 8px;
  text-decoration: none; display: inline-block; cursor: pointer;
}
.wf-hero-note { font-size: 13px; color: rgba(255,255,255,0.45); margin-top: 14px; font-style: italic; }
.wf-hero-note a {
  color: var(--teal); font-weight: 600; font-style: normal;
  text-decoration: underline; text-decoration-color: rgba(0,196,180,0.45);
  text-underline-offset: 3px;
  transition: color var(--transition), text-decoration-color var(--transition);
}
.wf-hero-note a:hover {
  color: var(--white);
  text-decoration-color: rgba(255,255,255,0.85);
}
.wf-hero-note a:focus-visible {
  outline: 2px solid var(--teal); outline-offset: 2px; border-radius: 2px;
}

/* == 10. HERO =================================================== */

.wf-hero {
  background: linear-gradient(160deg, var(--navy) 0%, var(--navy-hero-end) 100%);
  padding: 80px 56px 64px;
  text-align: center;
  position: relative; overflow: hidden;
}
.wf-hero::after {
  content: ''; position: absolute;
  top: -70px; right: -70px; width: 300px; height: 300px;
  background: radial-gradient(circle, rgba(26,92,255,0.28) 0%, transparent 70%);
  pointer-events: none;
}
.wf-hero::before {
  content: ''; position: absolute;
  bottom: -50px; left: 8%; width: 200px; height: 200px;
  background: radial-gradient(circle, rgba(0,196,180,0.16) 0%, transparent 70%);
  pointer-events: none;
}
.wf-hero-eyebrow {
  display: inline-block;
  background: rgba(0,196,180,0.15);
  border: 1px solid rgba(0,196,180,0.3);
  border-radius: 20px; padding: 5px 16px;
  font-size: 13px; color: var(--teal);
  font-family: var(--mono); letter-spacing: 1px;
  text-transform: uppercase; margin-bottom: 18px;
}
.wf-hero-definition {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-left: 3px solid var(--teal);
  border-radius: 0 8px 8px 0;
  padding: 18px 22px; margin: 22px auto 28px;
  max-width: 640px; text-align: left;
  font-size: 15px; color: rgba(255,255,255,0.65); line-height: 1.65;
}
.wf-hero-definition strong { color: rgba(255,255,255,0.88); }
.wf-proof-strip {
  display: flex; gap: 20px; justify-content: center;
  flex-wrap: wrap; margin-top: 20px;
}
.wf-proof-pill {
  display: flex; align-items: center; gap: 8px;
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 20px; padding: 7px 18px;
  font-size: 13px; color: rgba(255,255,255,0.65);
  font-family: var(--mono);
}
.wf-proof-pill-dot { width: 5px; height: 5px; background: var(--teal); border-radius: 50%; flex-shrink: 0; }

/* ── Hero product-fork (homepage only) — 3 compact CTA cards inside the
   dark hero. Visual language matches .wf-eco-card (glass card on navy +
   blue→teal accent stripe) but smaller and aligned-bottom for the arrow. */
.wf-hero-fork {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  max-width: 720px;
  margin: 4px auto 26px;
  text-align: left;
}
.wf-fork-card {
  display: flex;
  flex-direction: column;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 12px;
  padding: 18px 16px 14px;
  position: relative;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}
.wf-fork-card::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-fork-card:hover,
.wf-fork-card:focus-visible {
  background: rgba(255,255,255,0.09);
  border-color: rgba(0,196,180,0.35);
  transform: translateY(-1px);
}
.wf-fork-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: 8px;
  background: rgba(0,196,180,0.12);
  color: var(--teal);
  margin-bottom: 12px;
}
.wf-fork-icon .material-icons { font-size: 22px; }
.wf-fork-name {
  font-size: 17px; font-weight: 700; color: white;
  letter-spacing: -0.3px; margin-bottom: 4px;
  display: block;
}
.wf-fork-desc {
  font-size: 14px; color: rgba(255,255,255,0.6);
  line-height: 1.5; margin-bottom: 14px;
  display: block;
}
.wf-fork-arrow {
  margin-top: auto;
  font-size: 13px; font-weight: 600;
  font-family: var(--mono); letter-spacing: 0.3px;
  color: var(--teal);
  display: block;
}
/* Below ~600px the 3-col grid squashes each card to ~95px wide, which clips
   the "Explore X →" CTA. Stack vertically (one card per row, full width)
   so the icon, name, description and CTA all have room. Reduce vertical
   padding and gap so the three stacked cards don't push the proof strip
   too far below the hero fold. */
@media (max-width: 600px) {
  .wf-hero-fork {
    grid-template-columns: 1fr;
    gap: 10px;
    max-width: 340px;
  }
  .wf-fork-card { padding: 14px 16px 12px; }
  .wf-fork-icon { margin-bottom: 8px; }
  .wf-fork-desc { margin-bottom: 10px; }
}

/* == 11. CHALLENGES ============================================= */

.wf-challenges {
  background: white;
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.wf-col-box {
  background: var(--grey-bg);
  border-radius: 10px; border: 1px solid var(--border); padding: 18px;
}
.wf-col-box h4 {
  font-size: 13px; font-weight: 700; color: var(--blue);
  text-transform: uppercase; letter-spacing: 1px;
  font-family: var(--mono); margin-bottom: 12px;
}
.wf-icon-list { display: flex; flex-direction: column; gap: 12px; }
.wf-icon-row { display: flex; align-items: center; gap: 12px; font-size: 15px; color: var(--navy); font-weight: 500; }
.wf-icon-pill {
  width: 36px; height: 36px; background: rgba(26,92,255,0.07);
  border-radius: 8px; display: grid; place-items: center;
  font-size: 16px; flex-shrink: 0;
}
.wf-challenge-note {
  margin-top: 16px; padding: 14px 18px;
  border-left: 3px solid var(--teal);
  background: var(--grey-bg); border-radius: 0 8px 8px 0;
  font-size: 15px; color: var(--grey-text); line-height: 1.6;
}

/* == 12. WORKFLOW =============================================== */

.wf-workflow {
  background: var(--blue-surface);
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-flow {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 0; margin: 20px 0 24px; position: relative;
}
.wf-flow::before {
  content: ''; position: absolute;
  top: 20px; left: 10%; right: 10%;
  height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
  z-index: 0;
}
.wf-flow-step {
  display: flex; flex-direction: column; align-items: center;
  text-align: center; position: relative; z-index: 1;
}
.wf-flow-num {
  width: 48px; height: 48px; border-radius: 50%;
  background: white; border: 2px solid var(--blue);
  display: grid; place-items: center;
  font-family: var(--mono); font-size: 14px; font-weight: 700; color: var(--blue);
  margin-bottom: 10px; box-shadow: 0 0 0 4px var(--grey-bg);
}
.wf-flow-step:last-child .wf-flow-num { background: var(--blue); color: white; }
.wf-flow-label { font-size: 14px; font-weight: 600; color: var(--navy); line-height: 1.3; }
.wf-h3s { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
.wf-h3-card {
  background: white; border-radius: 10px;
  border: 1px solid var(--border); border-left: 3px solid var(--blue);
  padding: 16px 18px;
}
.wf-h3-card-num {
  font-family: var(--mono); font-size: 11px; letter-spacing: 1.5px;
  color: var(--teal); text-transform: uppercase; margin-bottom: 6px;
}
.wf-h3-card h4 {
  display: flex; align-items: center; gap: 8px;
  font-size: 17px; font-weight: 600; color: var(--navy); margin-bottom: 6px; line-height: 1.4;
}
.wf-h3-card h4 .material-icons { font-size: 20px; color: var(--blue); flex-shrink: 0; }
.wf-h3-card:has(> .wf-icon-box) {
  display: grid;
  grid-template-columns: 32px 1fr;
  column-gap: 10px;
  align-items: start;
}
.wf-h3-card > .wf-icon-box { grid-column: 1; grid-row: 1; align-self: center; }
.wf-h3-card > .wf-icon-box + h4 { grid-column: 2; grid-row: 1; align-self: center; }
.wf-h3-card:has(> .wf-icon-box) > p { grid-column: 1 / -1; }
.wf-h3-card p { font-size: 15px; color: var(--grey-text); line-height: 1.55; }
.estimate-callout {
  background: rgba(26,92,255,0.06); border: 1px solid rgba(26,92,255,0.18);
  border-left: 3px solid var(--blue); border-radius: 8px;
  padding: 12px 14px; margin-top: 10px;
  font-size: 14px; color: var(--navy); line-height: 1.55;
}
.estimate-callout strong { color: var(--blue); display: block; margin-bottom: 4px; font-size: 13px; font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.8px; }
.estimate-scenario { display: flex; align-items: flex-start; gap: 6px; margin-top: 5px; font-size: 14px; color: var(--grey-text-strong); line-height: 1.45; }
.estimate-scenario-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--teal); flex-shrink: 0; margin-top: 6px; }
.wf-int-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.wf-int-chip {
  background: var(--grey-bg); border: 1px solid var(--border);
  border-radius: 6px; padding: 4px 12px;
  font-size: 13px; font-weight: 600; color: var(--navy); font-family: var(--mono);
}

/* == 13. COMPARISON ============================================= */

.wf-comparison {
  background: white;
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-compare-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; }
.wf-compare-col { border-radius: 10px; border: 1px solid var(--border); overflow: hidden; }
.wf-compare-head {
  padding: 12px 18px;
  font-size: 13px; font-weight: 700;
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 1px;
}
.wf-compare-head.before { background: var(--compare-before-bg); color: var(--compare-before-text); border-bottom: 1px solid var(--compare-before-border); }
.wf-compare-head.after { background: var(--compare-after-bg); color: var(--compare-after-text); border-bottom: 1px solid var(--compare-after-border); }
.wf-compare-body { padding: 14px 16px; background: var(--grey-bg); }
.wf-compare-col.after .wf-compare-body { background: white; }
.wf-compare-item {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 15px; color: var(--navy); line-height: 1.5; margin-bottom: 10px;
}
.wf-compare-item:last-child { margin-bottom: 0; }
.ci-x { color: #C94444; font-weight: 700; flex-shrink: 0; }
.ci-ok { color: var(--teal); font-weight: 700; flex-shrink: 0; }

/* == 14. BENEFITS =============================================== */

.wf-benefits {
  background: var(--blue-surface);
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-icon-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }
.wf-icon-card {
  background: white; border-radius: 10px;
  border: 1px solid var(--border); padding: 14px 16px;
  display: flex; align-items: flex-start; gap: 12px;
}
.wf-icon-box {
  width: 32px; height: 32px; background: rgba(26,92,255,0.08);
  border-radius: 7px; display: grid; place-items: center;
  font-size: 15px; flex-shrink: 0;
}
.wf-icon-text h3,
.wf-icon-text h5 { font-size: 15px; font-weight: 600; color: var(--navy); margin-bottom: 4px; }
.wf-icon-text p { font-size: 14px; color: var(--grey-text); line-height: 1.5; }

.wf-use-cases {
  background: var(--white);
  padding: 36px 40px;
  border-bottom: 1px solid var(--border);
}
.wf-use-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 12px;
  margin-top: 14px;
}
.wf-benefits .wf-use-grid {
  grid-template-columns: repeat(2, 1fr);
}
.wf-use-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  min-width: 0;
  padding: 18px 18px 20px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--navy);
  text-decoration: none;
  transition: border-color var(--transition), background var(--transition), transform var(--transition);
}
.wf-benefits .wf-use-card {
  background: color-mix(in srgb, var(--blue) 3%, var(--white));
}
.wf-use-card:hover,
.wf-use-card:focus-visible {
  border-color: var(--blue);
  background: var(--white);
  transform: translateY(-1px);
  outline: none;
}
.wf-use-icon {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  flex-shrink: 0;
  border-radius: 10px;
  background: var(--blue-surface-strong);
  color: var(--blue);
}
.wf-use-icon .material-icons {
  font-size: 21px;
  color: currentColor;
}
.wf-use-card h3 {
  font-size: 16px;
  font-weight: 600;
  color: var(--navy);
  line-height: 1.3;
}
.wf-use-card p {
  font-size: 14px;
  color: var(--grey-text);
  line-height: 1.55;
}

/* == 14b. ROI MATH + CONTAINER-CLASS VARIANCE + CALCULATOR =======
   Used by shipper vertical Tier 2 + Week 15 article. Container-
   deposit exposure cards, per-class (dry/reefer/tank) comparison
   grid, and the interactive mixed-fleet calculator. Colours stay
   on-palette via var()/color-mix — rgba() is reserved for tint
   overlays consistent with the rest of the stylesheet. */

.wf-roi {
  background: var(--white);
  padding: 50px 40px;
  border-bottom: 1px solid var(--border);
}
.wf-roi-intro {
  font-size: 13px; color: var(--grey-text); line-height: 1.65;
  margin-bottom: 10px; max-width: 640px;
}
.wf-roi-assumptions {
  background: rgba(26,92,255,0.05);
  border: 1px solid rgba(26,92,255,0.15);
  border-radius: 8px; padding: 12px 16px; font-size: 11px;
  color: var(--grey-text); line-height: 1.6; margin-bottom: 22px;
  font-family: var(--mono);
}
.wf-roi-assumptions strong { color: var(--navy); }
.wf-roi-grid {
  display: grid; grid-template-columns: 1fr; gap: 12px;
  margin-bottom: 22px;
}
.wf-roi-card {
  background: var(--grey-bg); border: 1px solid var(--border);
  border-radius: 10px; padding: 18px;
  border-top: 3px solid var(--blue);
}
.wf-roi-card-tag {
  font-family: var(--mono); font-size: 10px; color: var(--blue);
  letter-spacing: 1px; text-transform: uppercase; margin-bottom: 6px;
}
.wf-roi-card h4 {
  font-size: 14px; font-weight: 600; color: var(--navy);
  margin-bottom: 12px; line-height: 1.3;
}
.wf-roi-row {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 6px 0; border-bottom: 1px dashed var(--border);
  font-size: 11px;
}
.wf-roi-row:last-of-type { border-bottom: none; }
.wf-roi-row-label { color: var(--grey-text); }
.wf-roi-row-val {
  color: var(--navy); font-weight: 600; font-family: var(--mono);
}
.wf-roi-row-val.highlight { color: var(--teal); }
.wf-roi-row-val.warn { color: var(--danger); }
.wf-roi-payback {
  margin-top: 10px; padding: 10px 12px;
  background: rgba(0,196,180,0.1); border-radius: 6px;
  font-size: 11px; line-height: 1.5;
  color: color-mix(in srgb, var(--teal) 70%, black);
}
.wf-roi-payback strong {
  color: color-mix(in srgb, var(--teal) 70%, black); font-weight: 700;
}
.wf-roi-pricing {
  background: linear-gradient(135deg, rgba(26,92,255,0.05), rgba(0,196,180,0.05));
  border: 1px solid rgba(26,92,255,0.15); border-radius: 10px;
  padding: 16px 20px; text-align: center;
}
.wf-roi-pricing-label {
  font-family: var(--mono); font-size: 10px; color: var(--blue);
  letter-spacing: 1px; text-transform: uppercase; margin-bottom: 4px;
}
.wf-roi-pricing-value {
  font-size: 16px; font-weight: 700; color: var(--navy); margin-bottom: 4px;
}
.wf-roi-pricing-value span { color: var(--blue); }
.wf-roi-pricing-sub {
  font-size: 11px; color: var(--grey-text); line-height: 1.5;
}

/* Container-class variance subsection */
.wf-class-sub { margin-top: 30px; margin-bottom: 22px; }
.wf-class-sub-header {
  font-family: var(--mono); font-size: 10px; color: var(--blue);
  letter-spacing: 1px; text-transform: uppercase; margin-bottom: 8px;
}
.wf-class-sub-title {
  font-size: 16px; font-weight: 700; color: var(--navy);
  margin-bottom: 8px; letter-spacing: -0.3px;
}
.wf-class-sub-intro {
  font-size: 13px; color: var(--grey-text); line-height: 1.6;
  margin-bottom: 16px; max-width: 640px;
}
.wf-class-sub-note {
  font-size: 11px; color: var(--grey-text); line-height: 1.55;
  margin-top: 12px; margin-bottom: 0; font-style: italic;
}
.wf-class-grid {
  display: grid; grid-template-columns: 1fr; gap: 12px;
  margin-bottom: 14px;
}
.wf-class-card {
  background: var(--white); border: 1px solid var(--border);
  border-radius: 10px; padding: 16px 18px;
  border-top: 3px solid var(--teal);
}
.wf-class-card.alt { background: var(--grey-bg); }
.wf-class-card-icon { font-size: 18px; margin-bottom: 6px; display: block; }
.wf-class-card h5 {
  font-size: 13px; font-weight: 600; color: var(--navy); margin-bottom: 8px;
}
.wf-class-row {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 4px 0; font-size: 11px;
}
.wf-class-row-label { color: var(--grey-text); }
.wf-class-row-val {
  color: var(--navy); font-weight: 600; font-family: var(--mono);
}
.wf-class-row-val.soft {
  font-size: 10px; font-weight: 500; color: var(--grey-text);
  font-family: var(--font);
}
.wf-class-calc-cta {
  background: linear-gradient(135deg, rgba(26,92,255,0.08), rgba(0,196,180,0.08));
  border: 1px solid rgba(26,92,255,0.18); border-radius: 10px;
  padding: 14px 18px;
  display: flex; flex-direction: column; align-items: flex-start;
  gap: 12px; margin-top: 8px;
}
.wf-class-calc-cta-text {
  font-size: 12px; color: var(--navy); line-height: 1.5;
}
.wf-class-calc-cta-text strong { color: var(--blue); font-weight: 700; }
.wf-class-calc-cta a {
  background: var(--blue); color: var(--white);
  font-size: 11px; font-weight: 600; padding: 8px 14px;
  border-radius: 6px; text-decoration: none; font-family: var(--font);
  flex-shrink: 0;
}

/* Interactive mixed-fleet calculator */
.wf-calc {
  background: var(--grey-bg); border: 1px solid var(--border);
  border-radius: 12px; padding: 24px;
  margin-top: 24px; margin-bottom: 22px;
}
.wf-calc-head {
  display: flex; align-items: center; gap: 10px; margin-bottom: 6px;
}
.wf-calc-head-icon {
  width: 28px; height: 28px; background: var(--blue); border-radius: 6px;
  display: grid; place-items: center; color: var(--white); font-size: 14px;
}
.wf-calc-head h3 {
  font-size: 15px; font-weight: 700; color: var(--navy); letter-spacing: -0.3px;
}
.wf-calc-intro {
  font-size: 12px; color: var(--grey-text); line-height: 1.6;
  margin-bottom: 18px; max-width: 560px;
}
.wf-calc-inputs {
  display: grid; grid-template-columns: 1fr; gap: 10px;
  margin-bottom: 14px;
}
.wf-calc-input-card {
  background: var(--white); border: 1px solid var(--border);
  border-radius: 8px; padding: 12px 14px;
}
.wf-calc-input-card-head {
  display: flex; align-items: center; gap: 6px; margin-bottom: 10px;
  padding-bottom: 8px; border-bottom: 1px dashed var(--border);
}
.wf-calc-input-card-head-icon { font-size: 14px; }
.wf-calc-input-card-head-title {
  font-size: 12px; font-weight: 600; color: var(--navy);
}
.wf-calc-field {
  display: flex; flex-direction: column; gap: 4px; margin-bottom: 8px;
}
.wf-calc-field:last-child { margin-bottom: 0; }
.wf-calc-field label {
  font-size: 10px; color: var(--grey-text); font-family: var(--mono);
  letter-spacing: 0.3px;
}
.wf-calc-field-wrap {
  position: relative; display: flex; align-items: center;
}
.wf-calc-field-prefix {
  position: absolute; left: 8px; font-size: 12px;
  color: var(--grey-text); font-family: var(--mono); pointer-events: none;
}
.wf-calc-field input {
  width: 100%; padding: 6px 8px 6px 20px;
  border: 1px solid var(--border); border-radius: 5px;
  font-family: var(--mono); font-size: 12px;
  color: var(--navy); font-weight: 600;
  background: var(--grey-bg); outline: none; transition: border var(--transition);
}
.wf-calc-field input.no-prefix { padding-left: 8px; }
.wf-calc-field input:focus {
  border-color: var(--blue); background: var(--white);
}
.wf-calc-field input::-webkit-outer-spin-button,
.wf-calc-field input::-webkit-inner-spin-button {
  -webkit-appearance: none; margin: 0;
}
.wf-calc-field input[type=number] { -moz-appearance: textfield; }

.wf-calc-rate {
  background: var(--white); border: 1px solid var(--border);
  border-radius: 8px; padding: 12px 14px; margin-bottom: 16px;
  display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
}
.wf-calc-rate-label {
  font-size: 12px; color: var(--navy); font-weight: 600;
}
.wf-calc-rate-input-wrap {
  position: relative; display: flex; align-items: center;
}
.wf-calc-rate input {
  width: 70px; padding: 6px 20px 6px 8px;
  border: 1px solid var(--border); border-radius: 5px;
  font-family: var(--mono); font-size: 12px;
  color: var(--navy); font-weight: 600;
  background: var(--grey-bg); outline: none; text-align: right;
}
.wf-calc-rate input:focus {
  border-color: var(--blue); background: var(--white);
}
.wf-calc-rate-suffix {
  position: absolute; right: 8px; font-size: 12px;
  color: var(--grey-text); font-family: var(--mono); pointer-events: none;
}
.wf-calc-rate-note {
  font-size: 10px; color: var(--grey-text); line-height: 1.4;
}

.wf-calc-results {
  background: linear-gradient(135deg, var(--navy) 0%, color-mix(in srgb, var(--navy) 85%, var(--blue)) 100%);
  border-radius: 10px; padding: 20px; color: var(--white);
}
.wf-calc-results-head {
  font-family: var(--mono); font-size: 10px; color: var(--teal);
  letter-spacing: 1px; text-transform: uppercase; margin-bottom: 12px;
}
.wf-calc-results-grid {
  display: grid; grid-template-columns: 1fr; gap: 10px; margin-bottom: 14px;
}
.wf-calc-result-row {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,0.1);
}
.wf-calc-result-label { font-size: 11px; color: rgba(255,255,255,0.6); }
.wf-calc-result-val {
  font-size: 13px; font-weight: 700; color: var(--white); font-family: var(--mono);
}
.wf-calc-result-val.warn {
  color: color-mix(in srgb, var(--danger) 55%, white);
}
.wf-calc-result-val.highlight { color: var(--teal); }
.wf-calc-payback {
  background: rgba(0,196,180,0.15); border: 1px solid rgba(0,196,180,0.3);
  border-radius: 8px; padding: 14px 16px; margin-top: 14px;
}
.wf-calc-payback-label {
  font-family: var(--mono); font-size: 10px; color: var(--teal);
  letter-spacing: 1px; text-transform: uppercase; margin-bottom: 4px;
}
.wf-calc-payback-value {
  font-size: 14px; font-weight: 700; color: var(--white); line-height: 1.5;
}
.wf-calc-payback-value span { color: var(--teal); }
.wf-calc-disclaimer {
  margin-top: 14px; font-size: 10px; color: var(--grey-text);
  line-height: 1.5; text-align: center; font-style: italic;
}

/* Deposit-scenario explainer — sits in the Problem section of the Tier 2
   page, above the two-column grid, to frame CNEE vs lessee deposits once
   for the whole page (and by reference for the Week 15 article). Kept on
   the blue tint family used elsewhere for informational callouts. */
.wf-deposit-scenarios {
  background: rgba(26,92,255,0.04);
  border: 1px solid rgba(26,92,255,0.15);
  border-radius: 10px; padding: 16px 20px; margin-bottom: 18px;
}
.wf-deposit-scenarios-label {
  font-family: var(--mono); font-size: 10px; color: var(--blue);
  letter-spacing: 1px; text-transform: uppercase; margin-bottom: 10px;
}
.wf-deposit-scenarios-grid {
  display: grid; grid-template-columns: 1fr; gap: 14px;
}
.wf-deposit-scenario-title {
  font-size: 12px; font-weight: 700; color: var(--navy);
  margin-bottom: 4px;
}
.wf-deposit-scenario-text {
  font-size: 11px; color: var(--grey-text); line-height: 1.55;
  margin: 0;
}

/* CNEE (port) / Lessee (equipment rental) scenario toggle — reused in
   two places: (1) above the ROI tier cards, and (2) above the calculator
   inputs. Both toggles are kept in sync by the page JS so the user sees a
   single current scenario across the section. Buttons reuse the brand
   palette rather than introducing new tokens. */
.wf-scenario-toggle {
  background: var(--white); border: 1px solid var(--border);
  border-radius: 8px; padding: 12px 14px; margin-bottom: 14px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
}
.wf-scenario-toggle-label {
  font-size: 12px; font-weight: 600; color: var(--navy); flex-shrink: 0;
}
.wf-scenario-toggle-group {
  display: inline-flex; background: var(--grey-bg);
  border: 1px solid var(--border); border-radius: 6px; padding: 3px;
}
.wf-scenario-toggle-btn {
  background: transparent; color: var(--navy);
  font-family: var(--font); font-size: 11px; font-weight: 600;
  padding: 6px 12px; border: none; border-radius: 4px; cursor: pointer;
  transition: background 120ms ease, color 120ms ease;
}
.wf-scenario-toggle-btn:hover {
  background: color-mix(in srgb, var(--blue) 10%, transparent);
}
.wf-scenario-toggle-btn.is-active {
  background: var(--blue); color: var(--white);
}
.wf-scenario-toggle-btn.is-active:hover {
  background: var(--blue);
}
.wf-scenario-toggle-note {
  font-size: 10px; color: var(--grey-text); line-height: 1.45;
  font-style: italic; flex: 1; min-width: 200px;
}

/* ROI tier toggle needs a touch more breathing room since it sits between
   the section intro and the tier grid. */
.wf-roi .wf-scenario-toggle { margin-bottom: 18px; }

/* Methodology disclosure — sits between results and disclaimer, always
   visible so visitors can verify the math the calculator just reported. */
.wf-calc-method {
  margin-top: 14px;
  background: var(--white); border: 1px solid var(--border);
  border-radius: 8px; padding: 14px 16px;
}
.wf-calc-method-head {
  font-family: var(--mono); font-size: 10px; color: var(--blue);
  letter-spacing: 1px; text-transform: uppercase; margin-bottom: 8px;
}
.wf-calc-method-list {
  list-style: none; padding: 0; margin: 0;
  font-size: 11px; color: var(--grey-text); line-height: 1.65;
}
.wf-calc-method-list li {
  padding: 6px 0; border-bottom: 1px dashed var(--border);
}
.wf-calc-method-list li:last-child { border-bottom: none; }
.wf-calc-method-label {
  display: inline; color: var(--navy); font-weight: 600;
  font-family: var(--mono); margin-right: 4px;
}
.wf-calc-method-note {
  margin-top: 10px; padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 11px; color: var(--grey-text); line-height: 1.6;
}
.wf-calc-method-note strong { color: var(--navy); font-weight: 600; }

@media (min-width: 768px) {
  .wf-roi-grid,
  .wf-class-grid,
  .wf-calc-inputs { grid-template-columns: repeat(3, 1fr); }
  .wf-calc-results-grid { grid-template-columns: repeat(2, 1fr); }
  .wf-calc-rate { flex-direction: row; align-items: center; gap: 12px; }
  .wf-calc-rate-note { flex: 1; }
  .wf-class-calc-cta {
    flex-direction: row; align-items: center; justify-content: space-between;
    gap: 14px;
  }
  .wf-class-calc-cta-text { flex: 1; }
  .wf-deposit-scenarios-grid { grid-template-columns: 1fr 1fr; }
}

/* == 15. MOBILE-FIRST SECTION =================================== */

.wf-mobile {
  background: white;
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-mobile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 14px 0; }
.wf-mobile-card { border-radius: 10px; border: 1px solid var(--border); overflow: hidden; }
.wf-mobile-screen {
  background: var(--navy); height: 100px;
  display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08);
}
.wf-mobile-screen::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle at 60% 30%, rgba(26,92,255,0.32) 0%, transparent 60%);
}
.wf-mobile-screen-icon {
  font-size: 34px;
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 16px;
  color: var(--white);
  opacity: 1;
  background: rgba(26,92,255,0.16);
  border: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 0 0 1px rgba(26,92,255,0.16), 0 12px 28px rgba(6,20,42,0.36);
  text-shadow: 0 0 24px rgba(26,92,255,0.55);
}
.wf-mobile-caption {
  padding: 12px 16px; font-size: 13px; color: var(--grey-text);
  font-style: italic; font-family: var(--mono);
  border-top: 1px solid var(--border); line-height: 1.4;
}
.wf-mobile-specs { display: flex; flex-direction: column; gap: 7px; margin-top: 14px; }
.wf-mobile-spec {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 15px; color: var(--navy); line-height: 1.5;
}
.wf-mobile-spec::before {
  content: '→'; color: var(--blue); font-weight: 700;
  flex-shrink: 0; font-family: var(--mono); font-size: 14px; margin-top: 1px;
}

/* == 15b. APP SHOWCASE (capture / find / verify) ================
   Three-stage product showcase pattern used on the Checker product page.
   Section 1 (wf-app-showcase) renders a phone screenshot flanked by
   left/right callout columns. Sections 2 & 3 (wf-screen-showcase)
   render wide screenshots with numbered overlay markers tied to a
   feature list below. Marker positions are inline `style="left: X%; top: Y%"`
   computed against the original screenshot dimensions; they remain
   accurate at any rendered width because both axes scale with the image.
   See ai_tasks/static-pages/wf-app-showcase-full.html for the source
   pattern. */

.wf-stage-wrap { text-align: center; }
.wf-stage-badge {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 14px;
  background: var(--teal-surface);
  border: 1px solid color-mix(in srgb, var(--teal) 30%, transparent);
  border-radius: 20px;
  font-family: var(--mono);
  font-size: 10px; font-weight: 600;
  color: var(--teal);
  letter-spacing: 1.2px; text-transform: uppercase;
  margin-bottom: 14px;
}
.wf-stage-badge-num {
  width: 18px; height: 18px;
  background: var(--teal); color: var(--white);
  border-radius: 50%;
  display: grid; place-items: center;
  font-size: 10px; font-weight: 700;
}

/* ── Section 1 — Capture (mobile screenshot + callout columns) ── */
.wf-app-showcase {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 50px 44px;
  overflow: hidden;
  margin-bottom: 28px;
}
.wf-showcase-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 24px;
  align-items: center;
}
.wf-phone-wrap { position: relative; text-align: center; }
.wf-phone-img {
  max-width: 282px; width: 100%; height: auto;
  display: block; margin: 0 auto;
  filter: drop-shadow(0 12px 32px rgba(11, 31, 58, 0.18));
}
.wf-callout-col { display: flex; flex-direction: column; gap: 22px; }
.wf-callout-col.left  { align-items: flex-end;   text-align: right; }
.wf-callout-col.right { align-items: flex-start; text-align: left;  }
/* Scoped to .wf-callout-col so it only styles the small annotation callouts
   that sit beside the phone screenshot. The standalone `.wf-callout`
   section block (e.g. tracker.html "What Do You Want to Build…") must NOT
   inherit the 230px clamp. */
.wf-callout-col .wf-callout { max-width: 230px; position: relative; }
.wf-callout-label {
  font-size: 9px;
  font-family: var(--mono);
  letter-spacing: 1.2px; text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 4px;
  font-weight: 600;
}
.wf-callout-title {
  font-size: 13px; font-weight: 600;
  color: var(--navy);
  line-height: 1.35;
  margin-bottom: 4px;
}
.wf-callout-desc {
  font-size: 11px;
  color: var(--grey-text);
  line-height: 1.55;
}
.wf-callout-col.left .wf-callout::after {
  content: '';
  position: absolute; right: -20px; top: 14px;
  width: 14px; height: 1px;
  background: linear-gradient(90deg, var(--border), var(--teal));
}
.wf-callout-col.right .wf-callout::before {
  content: '';
  position: absolute; left: -20px; top: 14px;
  width: 14px; height: 1px;
  background: linear-gradient(90deg, var(--teal), var(--border));
}

/* Compact variant — used on the homepage where the showcase sits next
   to the "find any container's full history" outcome card. Shrinks the
   phone, padding, and gaps so it occupies less vertical space than the
   full Checker-page treatment. `margin-top` separates it from the
   outcome-card grid sitting directly above it inside `.wf-benefits`,
   which otherwise renders flush against the showcase border. */
.wf-app-showcase--compact {
  padding: 36px 32px;
  margin-top: 32px;
}
.wf-app-showcase--compact .wf-phone-img { max-width: 220px; }
.wf-app-showcase--compact .wf-showcase-grid { gap: 18px; }
.wf-app-showcase--compact .wf-callout { max-width: 200px; }

/* ── Sections 2 & 3 — wide screenshots with numbered overlay markers ── */
.wf-screen-showcase {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 50px 44px;
  overflow: hidden;
  margin-bottom: 28px;
}
.wf-screen-frame {
  position: relative;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid var(--border);
  box-shadow: 0 16px 40px rgba(11, 31, 58, 0.14);
  margin-bottom: 32px;
}
.wf-screen-img { display: block; width: 100%; height: auto; }
.wf-marker {
  position: absolute;
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--blue);
  color: var(--white);
  font-family: var(--mono);
  font-size: 11px; font-weight: 700;
  display: grid; place-items: center;
  box-shadow: 0 2px 8px rgba(26, 92, 255, 0.45),
              0 0 0 3px rgba(26, 92, 255, 0.18);
  z-index: 2;
  cursor: default;
  transition: transform 0.15s;
  transform: translate(-50%, -50%);
}
.wf-marker:hover { transform: translate(-50%, -50%) scale(1.15); }

/* Per-marker pin positions calibrated to the source screenshots on
   /checker/ (find vs verify sections). Moved out of inline `style=""`
   attributes into named classes so the site-wide CSP can drop the
   `style-src 'unsafe-inline'` allowance. Audit F-013. The unique
   numbering (--find-N, --verify-N) keeps the relationship to each
   image's own `<picture>` tag obvious in the HTML — and any future
   image change updates one CSS rule rather than re-editing the markup. */
.wf-marker--find-1   { left:  4%; top: 32%; }
.wf-marker--find-2   { left:  4%; top: 67%; }
.wf-marker--find-3   { left: 25%; top: 21%; }
.wf-marker--find-4   { left: 39%; top: 60%; }
.wf-marker--find-5   { left: 87%; top: 21%; }
.wf-marker--verify-1 { left: 25%; top:  9%; }
.wf-marker--verify-2 { left: 77%; top: 10%; }
.wf-marker--verify-3 { left: 74%; top: 39%; }
.wf-marker--verify-4 { left: 77%; top: 54%; }
.wf-marker--verify-5 { left: 27%; top: 97%; }

.wf-feature-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px 24px;
}
.wf-feature { display: flex; gap: 12px; align-items: flex-start; }
.wf-feature-num {
  flex-shrink: 0;
  width: 26px; height: 26px;
  border-radius: 50%;
  background: var(--blue);
  color: var(--white);
  font-family: var(--mono);
  font-size: 12px; font-weight: 700;
  display: grid; place-items: center;
}
.wf-feature-body { flex: 1; }
.wf-feature-title {
  font-size: 12.5px; font-weight: 600;
  color: var(--navy);
  line-height: 1.35; margin-bottom: 3px;
}
.wf-feature-desc {
  font-size: 11px;
  color: var(--grey-text);
  line-height: 1.55;
}

/* ── Lifecycle strip — links the three Checker-page sections ── */
.wf-lifecycle {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: 12px;
  align-items: center;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 18px 24px;
  margin-bottom: 28px;
}
.wf-lifecycle-step { display: flex; align-items: center; gap: 10px; justify-content: center; }
.wf-lifecycle-num {
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--teal);
  color: var(--white);
  font-family: var(--mono);
  font-size: 11px; font-weight: 700;
  display: grid; place-items: center;
}
.wf-lifecycle-label { font-size: 12px; font-weight: 600; color: var(--navy); }
.wf-lifecycle-arrow { color: var(--grey-text); font-family: var(--mono); font-size: 14px; }

/* == 16. TESTIMONIALS =========================================== */

.wf-testimonials {
  background: var(--grey-bg);
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-testi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 16px; margin-bottom: 18px; }
.wf-testi-card {
  background: white; border-radius: 10px;
  border: 1px solid var(--border); padding: 16px 18px;
  position: relative;
}
.wf-testi-card::before {
  content: '"'; position: absolute; top: 10px; right: 14px;
  font-size: 36px; color: rgba(26,92,255,0.1); font-weight: 700; line-height: 1;
}
.wf-testi-quote { font-size: 15px; color: var(--navy); line-height: 1.6; margin-bottom: 12px; font-style: italic; }
.wf-testi-attr { font-size: 13px; color: var(--grey-text); font-family: var(--mono); }
.wf-testi-attr strong { color: var(--navy); display: block; font-style: normal; }
.wf-testi-cta { margin-top: 18px; text-align: center; }

/* == Logo scrolling band (shared: testimonials + trust section) == */

@keyframes logo-scroll {
  to { transform: translateX(-50%); }
}

.wf-logo-band-viewport {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
          mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
}

/*
 * display: inline-flex — critical: inline-level box whose width is
 * purely content-driven, never constrained by parent width.
 *
 * Audit v4.0 Sprint 9 — seamless-loop fix.
 *   The track holds 48 images (set A × 24, set B × 24) with `gap: 52px`. With
 *   only `gap`, an N-item flex track has N-1 gaps, so set A occupies
 *   S + 23·g while the boundary between set A and set B contributes one more
 *   gap (52 px). `translateX(-50%)` lands at S + 23.5·g — i.e. ½ gap (26 px)
 *   short of where item 25 actually sits, producing a visible "jolt" every
 *   loop. Adding `padding-inline-end: 52px` to the track makes its measured
 *   width 2·S + 48·g, so `-50%` lands exactly on item 25's left edge in
 *   every engine (Chromium / Firefox / WebKit), regardless of whether the
 *   engine includes trailing margins in the flex container's box.
 */
.wf-logo-band-track {
  display: inline-flex;
  align-items: center;
  gap: 52px;
  padding-inline-end: 52px;
  animation: logo-scroll var(--logo-band-speed, 30s) linear infinite;
}
/* Speed variants (replace the previous inline `style="--logo-band-speed: Ns"`
   on the `<div class="wf-logo-band-track">` so the site-wide CSP can drop
   `style-src 'unsafe-inline'`). The classes only set the CSS variable —
   the rule above already wires the variable into `animation` and the
   reduced-motion override re-uses the same variable, so both paths keep
   working. Only 30s and 45s appear in templates today; add a new
   `--Ns` variant here if a future `logo_band(..., speed=N)` caller
   needs one. Audit F-013. */
.wf-logo-band-track--30s { --logo-band-speed: 30s; }
.wf-logo-band-track--45s { --logo-band-speed: 45s;
  animation-play-state: running;
  will-change: transform;
}
.wf-logo-band-viewport:hover .wf-logo-band-track {
  animation-play-state: paused;
}

.wf-logo-band-img {
  height: 32px; width: auto; max-width: 140px;
  object-fit: contain; flex-shrink: 0;
  filter: grayscale(1) opacity(0.45);
  transition: filter 0.25s ease;
}
.wf-logo-band-img:hover { filter: grayscale(0) opacity(1); }

.wf-logo-band--inset {
  margin-top: 28px;
  padding-top: 22px;
  border-top: 1px solid var(--border);
}
.wf-logo-band-label {
  font-size: 12px; font-family: var(--mono); letter-spacing: 1.5px;
  text-transform: uppercase; color: var(--grey-text);
  text-align: center; margin-bottom: 14px;
}

/* The logo band is a slow, continuous, decorative scroll (30s loop) that
   pauses on hover. Under WCAG 2.2.2 "Pause, Stop, Hide", hover-pause is
   an acceptable mechanism for motion that lasts longer than 5 seconds
   and runs in parallel with other content — so we intentionally keep the
   animation running even when `prefers-reduced-motion: reduce` matches.
   This matches the common pattern used by Apple, Microsoft, Stripe and
   other marketing sites where a continuous brand strip is part of the
   page identity rather than an attention-grabbing effect.

   For users who genuinely cannot tolerate any motion, the hover-pause
   remains the documented escape hatch (WCAG 2.2.2). */

/* == Social proof wrapper (shared by compact/full/strip variants) == */

.wf-social-proof--compact {
  background: white;
  padding: 32px 56px 40px;
  border-bottom: 1px solid var(--border);
  text-align: center;
}
.wf-social-proof--strip {
  background: white;
  padding: 28px 56px 24px;
  border-bottom: 1px solid var(--border);
}
.wf-social-proof--full {
  /* `wf-testimonials` already paints the grey surface and padding; this
     selector exists only so page-level overrides can target the full
     variant specifically if needed. */
}

/* Crisper ghost CTA inside the macro. Default .wf-btn-ghost has a
   near-invisible #D6E0ED border on pure white; that looked fine when the
   button sat on grey (grey-bg) panels but reads as a plain low-emphasis
   link on the new white social-proof surfaces. Give it a stronger blue
   outline and hover state so the success-stories link is clearly clickable. */
.wf-social-proof .wf-btn-ghost {
  border-color: var(--blue);
  color: var(--blue);
  background: rgba(26, 92, 255, 0.04);
}
.wf-social-proof .wf-btn-ghost:hover {
  background: var(--blue);
  color: white;
}

/* The full variant renders the attribution line as `<cite>` for semantic
   correctness. Browsers default `<cite>` to `font-style: italic`, which on
   small grey-text renders noticeably softer than the old <div> markup —
   undoing the contrast the author wrote. Force upright type; the existing
   `.wf-testi-attr strong` rule already does this for the name line. */
cite.wf-testi-attr { font-style: normal; }

/* Logos on the dedicated white social-proof surfaces need higher opacity
   to read at all (the default 0.45 was tuned for grey panels where the
   grey-on-grey contrast is naturally softer). On white the same filter
   makes logos look like faint pencil sketches, which reads as broken. */
.wf-social-proof--strip .wf-logo-band-img,
.wf-social-proof--compact .wf-logo-band-img {
  filter: grayscale(1) opacity(0.7);
}
.wf-social-proof--strip .wf-logo-band-img:hover,
.wf-social-proof--compact .wf-logo-band-img:hover {
  filter: grayscale(0) opacity(1);
}

/* Darker caption on white strip variant — default grey-text is ~3.7:1 on
   white which just passes WCAG AA for small text but feels washed out next
   to the hero copy above it. Bumping to navy at reduced weight keeps the
   hierarchy right while guaranteeing legibility. */
.wf-social-proof--strip .wf-logo-band-label,
.wf-social-proof--compact .wf-logo-band-label {
  color: var(--navy);
  opacity: 0.7;
}

/* Blockquote cards — the reset at the top of this file zeroes margin/padding,
   but explicit rules keep intent obvious and defend against user-agent
   overrides from some mobile browsers that still apply default blockquote
   margins. */
blockquote.wf-testi-card { margin: 0; }
blockquote.wf-testi-card p.wf-testi-quote { margin-top: 0; }

/* == 17. CASE SNAPSHOT ========================================== */

.wf-case {
  background: var(--teal-surface);
  padding: 40px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-case-inner {
  background: white; border-radius: 12px;
  border: 1px solid var(--border);
  padding: 22px 24px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, max-content);
  gap: 20px; align-items: center;
}
/* Let the main column shrink in grid; avoids squeezing when the link column is wide */
.wf-case-inner > div:first-child { min-width: 0; }
.wf-case-label {
  font-size: 12px; font-weight: 700; color: var(--blue);
  text-transform: uppercase; letter-spacing: 1.5px;
  font-family: var(--mono); margin-bottom: 8px;
}
.wf-case-title {
  font-size: 20px; font-weight: 700; color: var(--navy); margin-bottom: 12px;
  line-height: 1.35;
  overflow-wrap: break-word;
  hyphens: auto;
}
.wf-case-stats { display: flex; gap: 24px; flex-wrap: wrap; }
.wf-case-stat {
  display: flex; flex-direction: column;
  min-width: 0; max-width: 100%;
}
.wf-case-stat-val { font-size: 24px; font-weight: 700; color: var(--navy); font-family: var(--mono); letter-spacing: -0.5px; }
.wf-case-stat-label {
  font-size: 13px; color: var(--grey-text); margin-top: 2px;
  overflow-wrap: break-word;
  hyphens: auto;
}
/* nowrap + long translations steals grid space from the body column; allow wrap */
.wf-case-link {
  font-size: 15px; color: var(--blue); font-weight: 600; text-decoration: none;
  white-space: normal;
  text-align: right;
  max-width: 16rem;
  line-height: 1.35;
  justify-self: end;
  overflow-wrap: break-word;
  hyphens: auto;
}

/* == 18. TRUST STATS + LOGOS ==================================== */

.wf-trust {
  background: white;
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-trust-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 18px; }
.wf-trust-stat {
  background: var(--grey-bg); border-radius: 10px;
  border: 1px solid var(--border); padding: 16px; text-align: center;
}
.wf-trust-stat-val {
  font-size: 30px; font-weight: 700; color: var(--navy);
  letter-spacing: -0.5px; font-family: var(--mono); margin-bottom: 4px;
}
.wf-trust-stat-label { font-size: 14px; color: var(--grey-text); line-height: 1.4; }
.wf-logo-band { margin-bottom: 18px; }
.wf-trust-gdpr {
  background: rgba(0,196,180,0.06); border: 1px solid rgba(0,196,180,0.2);
  border-radius: 8px; padding: 14px 18px;
  font-size: 15px; color: var(--navy); line-height: 1.55;
  display: flex; align-items: flex-start; gap: 10px;
}
.wf-trust-gdpr-icon { flex-shrink: 0; font-size: 14px; margin-top: 1px; }

/* == 19. TECH SPECS ============================================= */

.wf-specs {
  background: var(--blue-surface);
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-specs-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 14px; }
.wf-spec-card {
  background: white; border-radius: 10px;
  border: 1px solid var(--border); padding: 14px 16px;
}
.wf-spec-label {
  font-size: 12px; font-weight: 700; color: var(--blue);
  text-transform: uppercase; letter-spacing: 1.2px;
  font-family: var(--mono); margin-bottom: 6px;
}
.wf-spec-val { font-size: 16px; font-weight: 600; color: var(--navy); line-height: 1.4; }
.wf-spec-sub { font-size: 14px; color: var(--grey-text); line-height: 1.4; margin-top: 3px; }

/* == 20. RELATED RESOURCES / VERTICALS ========================== */

.wf-verticals {
  background: white;
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-vert-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; margin-top: 14px; }
.wf-vert-card {
  border-radius: 10px; border: 1px solid var(--border);
  padding: 16px 18px; position: relative; overflow: hidden;
  background: var(--grey-bg);
}
.wf-vert-card::after {
  content: ''; position: absolute; bottom: 0; left: 0; right: 0;
  height: 2px; background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-vert-icon { font-size: 20px; margin-bottom: 8px; display: block; }
.wf-vert-card h3,
.wf-vert-card h5 { font-size: 16px; font-weight: 600; color: var(--navy); margin-bottom: 6px; }
.wf-vert-card p { font-size: 14px; color: var(--grey-text); line-height: 1.5; margin-bottom: 10px; }
.wf-vert-link { font-size: 14px; color: var(--blue); font-weight: 600; text-decoration: none; }

/* == 21. ECOSYSTEM ============================================== */

.wf-ecosystem {
  background: var(--navy);
  padding: 48px 56px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.wf-ecosystem .wf-h2 { color: white; margin-bottom: 6px; }
.wf-ecosystem-sub {
  font-size: 16px; color: rgba(255,255,255,0.55); line-height: 1.6;
  margin-bottom: 24px; max-width: 640px;
}
.wf-ecosystem-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
}
.wf-eco-card {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 12px; padding: 20px 18px;
  position: relative; overflow: hidden;
}
.wf-eco-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-eco-icon { font-size: 22px; margin-bottom: 10px; display: block; }
.wf-eco-name {
  font-size: 17px; font-weight: 700; color: white;
  letter-spacing: -0.3px; margin-bottom: 5px;
}
.wf-eco-tag {
  font-size: 12px; font-family: var(--mono); letter-spacing: 1px;
  text-transform: uppercase; color: var(--teal);
  margin-bottom: 10px; display: block;
}
.wf-eco-desc {
  font-size: 15px; color: rgba(255,255,255,0.6); line-height: 1.55;
}
.wf-ecosystem-tagline {
  margin-top: 20px; text-align: center;
  font-size: 14px; font-weight: 600; color: rgba(255,255,255,0.5);
  font-family: var(--mono); letter-spacing: 0.5px;
}
.wf-ecosystem-tagline span { color: var(--teal); }

/* == 22. COMPLIANCE ============================================= */

.wf-compliance {
  background: var(--navy);
  padding: 48px 56px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.wf-compliance .wf-h2 { color: white; margin-bottom: 14px; }
.wf-comp-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.wf-comp-chip {
  background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.15);
  color: rgba(255,255,255,0.8); font-size: 13px; font-weight: 500;
  padding: 6px 14px 6px 8px; border-radius: 20px; font-family: var(--mono);
  display: flex; align-items: center; gap: 5px;
}
.wf-comp-chip::before { content: '✓ '; font-weight: 700; color: var(--teal); }
.wf-compliance .wf-bullet { color: rgba(255,255,255,0.7); font-size: 15px; }
.wf-compliance .wf-bullet-dot { background: var(--teal); }
.wf-compliance .wf-section-sub { color: rgba(255,255,255,0.55); }
.wf-compliance-intro {
  font-size: 15px; color: rgba(255,255,255,0.6); line-height: 1.65; margin-bottom: 18px;
}
.wf-compliance-body {
  font-size: 15px; color: rgba(255,255,255,0.7); line-height: 1.65; margin-bottom: 16px;
}
.wf-compliance-footer {
  margin-top: 16px;
  font-size: 14px;
  color: rgba(255,255,255,0.8);
  line-height: 1.6;
}
.wf-compliance-footer a { color: var(--teal); }
.wf-compliance .wf-metric-note {
  color: rgba(255,255,255,0.78);
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.16);
}
.wf-compliance .wf-metric-note a {
  color: var(--white);
}

/* == 23. ACCORDIONS / FAQ ======================================= */

.wf-faq { background: var(--blue-surface); padding: 48px 56px; border-bottom: 1px solid var(--border); }
.wf-accordion { display: flex; flex-direction: column; gap: 6px; margin-top: 16px; }
.wf-acc-item {
  background: white; border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden;
}
.wf-acc-q {
  padding: 16px 20px; font-size: 16px; font-weight: 600; color: var(--navy);
  display: flex; justify-content: space-between; align-items: center;
  cursor: pointer; line-height: 1.4;
}
.wf-acc-arrow { color: var(--blue); font-size: 16px; flex-shrink: 0; margin-left: 12px; line-height: 1; }
.wf-acc-a {
  display: block; padding: 0 20px 16px;
  font-size: 15px; color: var(--grey-text); line-height: 1.65;
}
.wf-acc-item.closed .wf-acc-a { display: none; }

/* == 24. FINAL CTA ============================================== */

.wf-final-cta {
  background: var(--navy); padding: 72px 56px;
  text-align: center; position: relative; overflow: hidden;
}
.wf-final-cta::after {
  content: ''; position: absolute; top: -80px; right: -80px;
  width: 320px; height: 320px;
  background: radial-gradient(circle, rgba(26,92,255,0.2) 0%, transparent 70%);
  pointer-events: none;
}
.wf-final-cta .wf-h2 { color: white; margin-bottom: 12px; font-size: 32px; }
.wf-final-cta > p {
  font-size: 16px; color: rgba(255,255,255,0.6); line-height: 1.65;
  margin-bottom: 28px; max-width: 540px; margin-left: auto; margin-right: auto;
}
.wf-final-cta .wf-btn-ghost {
  border-color: rgba(255,255,255,0.3);
  color: rgba(255,255,255,0.85);
}
.wf-final-cta .wf-btn-ghost:hover {
  border-color: white;
  color: white;
}
.wf-final-cta .wf-cta-sub { color: rgba(255,255,255,0.6); }
.wf-final-cta .wf-hero-forms {
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 12px;
}

/* == 25. FOOTER ================================================= */

.wf-footer {
  background: var(--navy-footer); padding: 22px 56px;
  display: flex; align-items: center; justify-content: space-between;
}
.wf-footer-text { font-size: 13px; color: rgba(255,255,255,0.3); font-family: var(--mono); }
.wf-footer-links { display: flex; gap: 20px; }
.wf-footer-link { font-size: 13px; color: rgba(255,255,255,0.35); font-family: var(--mono); text-decoration: none; }

/* ================================================================
   LEGAL PAGES  (app-privacy-policy, license, terms)
   ================================================================ */

.legal-page {
  background: var(--grey-bg);
  min-height: calc(100vh - 64px);
  padding: 48px 24px 80px;
}
.legal-inner {
  max-width: 760px;
  margin: 0 auto;
  background: white;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 48px 52px;
}
/* ── Site breadcrumb (all pages except homepage) ── */
.site-breadcrumb {
  padding: 16px 0 0;
}
.site-breadcrumb-inner {
  display: flex; align-items: center;
  justify-content: space-between;
  flex-wrap: wrap; gap: 4px 16px;
  max-width: 1060px; margin: 0 auto;
  font-size: 13px; color: var(--grey-text);
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.5px;
}
.site-breadcrumb-trail {
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
  min-width: 0;
}
.page-product .site-breadcrumb-inner,
.page-platform .site-breadcrumb-inner,
.page-glossary .site-breadcrumb-inner,
.page-about .site-breadcrumb-inner,
.page-article .site-breadcrumb-inner,
.page-contact .site-breadcrumb-inner,
.page-contact-thank-you .site-breadcrumb-inner { max-width: 820px; }
.page-legal .site-breadcrumb-inner { max-width: 760px; }
.site-breadcrumb a { color: var(--grey-text); text-decoration: none; }
.site-breadcrumb a:hover { color: var(--blue); }
.site-breadcrumb-sep { color: var(--border); }
.site-breadcrumb-current { color: var(--navy); }

/* Visible "Last updated" on article pages. Rendered as the right-hand
   half of the breadcrumb row so the two pieces of metadata occupy a
   single header line rather than stacking vertically. Inherits the mono
   / uppercase / muted tone from .site-breadcrumb-inner; wraps below the
   trail on narrow screens via flex-wrap on the parent. */
.wf-article-meta {
  white-space: nowrap;
  color: var(--grey-text);
}
.wf-article-meta time { color: var(--navy); font-weight: 600; }


.legal-title {
  font-size: 28px; font-weight: 700; color: var(--navy);
  margin-bottom: 6px; line-height: 1.2;
}
.legal-meta {
  font-size: 13px; color: var(--grey-text); font-family: var(--mono);
  margin-bottom: 40px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--border);
}
.legal-body { color: #374151; line-height: 1.75; font-size: 14px; }
.legal-body p { margin-bottom: 16px; }
.legal-body h2 {
  font-size: 16px; font-weight: 700; color: var(--navy);
  margin-top: 36px; margin-bottom: 10px;
}
.legal-body ul {
  padding-left: 20px; margin-bottom: 16px;
}
.legal-body ul li { margin-bottom: 6px; }
.legal-body a { color: var(--blue); text-decoration: none; }
.legal-body a:hover { text-decoration: underline; }
.legal-body strong { color: var(--navy); }

.legal-actions {
  display: flex; gap: 12px; margin-bottom: 32px;
}
.legal-actions a,
.legal-actions button {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--mono); font-size: 12px; letter-spacing: 0.3px;
  color: var(--grey-text); background: none; border: 1px solid var(--border);
  border-radius: 6px; padding: 6px 14px; cursor: pointer;
  text-decoration: none; transition: color 0.15s, border-color 0.15s;
}
.legal-actions a:hover,
.legal-actions button:hover {
  color: var(--blue); border-color: var(--blue);
}
.legal-actions .material-icons { font-size: 16px; }

@media (max-width: 600px) {
  .legal-inner { padding: 28px 20px; }
  .legal-title { font-size: 22px; }
}

@media print {
  /* Audit v4.0 Sprint 9.4 — global print rules.
     Goal: produce a legible, ink-frugal PDF when a customer prints any page
     (an article, a product page, a legal document) for offline review or
     distribution. We hide all interactive chrome, all decorative animation,
     and force backgrounds to white. URLs are exposed after each anchor so
     printed links remain actionable. */

  /* Page setup — A4 with 18 mm margins matches normal customer printers. */
  @page { size: A4; margin: 18mm; }

  body {
    background: #fff !important;
    color: #000 !important;
    margin: 0; padding: 0;
    font-size: 11pt;
    line-height: 1.5;
    -webkit-print-color-adjust: economy;
            print-color-adjust:  economy;
  }

  /* Site chrome — never relevant on paper. */
  .site-header,
  .site-footer,
  .site-explore-pill,
  .site-share-fab,
  .site-share-dialog,
  .site-contact-dialog,
  .site-map-dialog,
  .site-podcast-dialog,
  .site-video-dialog,
  .site-palette,
  .site-sheet,
  .site-breadcrumb,
  .legal-actions,
  .wf-skip-link,
  [data-cc],
  #cc-main { display: none !important; }

  /* Marketing chrome — animated/decorative, useless on paper. */
  .wf-logo-band,
  .wf-social-proof,
  .wf-hero-forms,
  .wf-cta-buttons,
  .wf-final-cta-buttons,
  .wf-pill,
  .wf-cta,
  .site-header-cta,
  .wf-btn-primary,
  .wf-btn-ghost,
  .wf-btn-outline,
  .wf-hero-link,
  [data-site-video],
  [data-site-podcast],
  [data-site-contact] { display: none !important; }

  /* Final CTA section reduces to a single readable line of contact info; the
     interactive triggers above are already hidden, so the section's intro
     copy still prints if present. */
  .wf-final-cta {
    background: #fff !important;
    color: #000 !important;
    padding: 16pt 0;
    border-top: 1pt solid #999;
  }
  .wf-final-cta * { color: #000 !important; }

  /* Cards, hero, problem, definition, vertical, and table containers — flatten
     decorative backgrounds and shadows. Borders kept for structure. */
  .wf-hero,
  .wf-section,
  .wf-problem,
  .wf-def,
  .wf-process,
  .wf-vertical,
  .wf-stories-trust,
  .wf-related,
  .wf-h3-card,
  .wf-rel-card,
  .wf-acc-item,
  .wf-comp-chip,
  .wf-trust-stat,
  .wf-icp-item,
  .wf-icon-text,
  .wf-bullet,
  .wf-acc-a,
  .wf-acc-q {
    background: #fff !important;
    box-shadow: none !important;
    color: #000 !important;
  }
  .wf-rel-card,
  .wf-h3-card,
  .wf-acc-item {
    border: 1pt solid #ccc !important;
    page-break-inside: avoid;
  }

  /* Headings — black, slightly tighter, with break controls. */
  .wf-h1, h1 { font-size: 22pt; color: #000 !important; page-break-after: avoid; }
  .wf-h2, h2 { font-size: 16pt; color: #000 !important; page-break-after: avoid; margin-top: 18pt; }
  .wf-h3, h3 { font-size: 13pt; color: #000 !important; page-break-after: avoid; }
  .wf-h2-accent { color: #000 !important; }
  .wf-hero-sub, .wf-hero-subtitle, .wf-section-intro,
  .wf-problem-intro, .wf-def-lead { color: #000 !important; font-size: 11pt; }

  /* Accordions — open everything so all content prints. */
  .wf-acc-item.closed .wf-acc-a { display: block !important; }
  .wf-acc-arrow { display: none !important; }

  /* Anchors — black, underlined, with URL printed inline. Skip URL exposure
     for in-page anchors (#…), tel:, mailto:, and decorative card-wide links. */
  a, a:visited { color: #000 !important; text-decoration: underline; }
  a[href^="http"]:not(.wf-rel-card):not(.site-logo):after {
    content: " (" attr(href) ")";
    font-size: 9pt; color: #555; word-break: break-all;
  }

  /* Images — keep but constrain to width and avoid mid-image breaks. */
  img { max-width: 100% !important; height: auto !important; page-break-inside: avoid; }

  /* Disable any leftover animation just in case. */
  *, *::before, *::after { animation: none !important; transition: none !important; }

  /* Legal pages — preserve the existing dense legal-document treatment. */
  .legal-page { background: white; padding: 0; min-height: auto; }
  .legal-inner {
    max-width: 100%; border: none; border-radius: 0;
    padding: 0; margin: 0; background: white;
  }
  .legal-title { font-size: 22px; color: #000; }
  .legal-meta { border-bottom-color: #ccc; color: #555; }
  .legal-body { font-size: 12px; line-height: 1.6; color: #000; }
  .legal-body h2 { font-size: 14px; color: #000; margin-top: 24px; }
  .legal-body a { color: #000; text-decoration: underline; }
  .legal-body strong { color: #000; }

  /* ── Audit v6.0 Sprint 9 — additional print rules ───────────────────
     The v4 Sprint 9.4 block above handled chrome hiding, page setup, and
     legal-page treatment. v6 adds:
       • Tables (page-break + thead-repeat for multi-page spec tables)
       • Pre / code (no mid-block break, soft-wrap of long tokens)
       • Form fields (calculator inputs, contact form, search box) — hide
       • Iframes (YouTube embeds, podcast players) — hide entirely
       • Orphans / widows (limit stranded lines at page boundaries)
       • Hyphenation (avoid wide rivers in justified body copy)
       • color-scheme: light (defeat dark-mode printer drivers that
         rasterise white-on-black to grey ink)
     All rules are additive to the v4 block and only fire inside @media print.
  */

  /* Defeat dark-mode browser/printer pipelines — Chrome ≥ 96 and Firefox
     ≥ 96 both honour color-scheme during print. Ensures the rendered page
     uses light defaults regardless of the user's OS theme. */
  html, body { color-scheme: light; }

  /* Body copy paragraph break-control. CSS3 widows/orphans values are
     advisory but Chrome and WebKit both honour them when shrink-to-fit
     allows. Hyphenation avoids wide right-margin rivers in long copy. */
  p, li {
    orphans: 3;
    widows: 3;
    hyphens: auto;
    -webkit-hyphens: auto;
    word-break: normal;
  }

  /* Tables — repeat the header row on every printed page (so a multi-page
     spec table stays scannable) and avoid breaking individual rows across
     pages. `display: table-header-group` is the CSS Paged Media incantation
     for "repeat this row at the top of every page break". */
  table {
    border-collapse: collapse;
    width: 100% !important;
    page-break-inside: auto;
  }
  thead { display: table-header-group; }
  tfoot { display: table-footer-group; }
  tr, td, th { page-break-inside: avoid !important; }
  th, td {
    border: 0.5pt solid #999 !important;
    padding: 4pt 6pt;
    color: #000 !important;
    background: #fff !important;
    text-align: left;
    vertical-align: top;
  }
  th { background: #f0f0f0 !important; font-weight: 600; }

  /* Pre / code — Tracker integration guide and shipper docs ship inline
     code samples. Avoid mid-block breaks; soft-wrap long lines so JSON
     payloads don't run off the right margin. */
  pre, code, kbd, samp {
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
    font-size: 9pt;
    color: #000 !important;
    background: #f7f7f7 !important;
    border: 0.5pt solid #ccc !important;
    page-break-inside: avoid;
  }
  pre {
    padding: 6pt 8pt;
    white-space: pre-wrap;
    word-break: break-all;
    overflow-wrap: anywhere;
    border-radius: 2pt;
  }

  /* Form fields — every calculator input, the contact form, the command-
     palette search field, and any future search inputs are interactive
     surfaces that have no meaning on paper. Hide entirely so a printed
     page never carries a half-visible empty input box. The calculator
     RESULTS (numeric output, recommendations) live in non-input elements
     and continue to print normally. */
  input, textarea, select, button,
  .wf-calc-rate-input-wrap,
  .wf-calc-input,
  .wf-form,
  .wf-form-row,
  .wf-form-actions,
  form { display: none !important; }

  /* Iframes — YouTube videos, podcast embeds, map iframes — none of these
     render meaningfully on paper. */
  iframe, embed, object, video, audio { display: none !important; }

  /* Lists — short bulleted lists should stay on one page when possible.
     This intentionally only applies to top-level <li>; nested lists keep
     their default flow behaviour because long nested structures otherwise
     cause "this list won't fit on the page" overflow problems. */
  ul > li, ol > li { page-break-inside: avoid; }

  /* Visual divider before the document end so the printed PDF doesn't end
     mid-content without warning. */
  main::after {
    content: "— end of document —";
    display: block;
    margin-top: 18pt;
    text-align: center;
    font-size: 9pt;
    color: #666;
    font-style: italic;
  }
}

/* ================================================================
   SITE HEADER
   ================================================================ */

.site-header {
  position: sticky; top: 0; z-index: 100;
  background: white;
  border-bottom: 1px solid #E8EDF4;
  box-shadow: 0 1px 4px rgba(11,31,58,0.06);
}
.site-header-inner {
  max-width: 1100px; margin: 0 auto;
  padding: 0 24px;
  height: 64px;
  display: flex; align-items: center; justify-content: space-between;
}

/* Logo */
.site-logo { display: flex; align-items: center; text-decoration: none; }
.site-logo-img { height: 32px; width: auto; display: block; }

/* Right-side controls */
.site-header-controls { display: flex; align-items: center; gap: 12px; }

/* LinkedIn icon */
.site-linkedin {
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--navy); color: white;
  display: flex; align-items: center; justify-content: center;
  text-decoration: none; flex-shrink: 0;
  transition: background var(--transition);
}
.site-linkedin:hover { background: var(--blue); }

/* Header CTA button */
.site-header-cta {
  padding: 8px 18px; border-radius: 7px;
  background: var(--blue); color: white;
  font-size: 13px; font-weight: 600;
  text-decoration: none;
  transition: background var(--transition);
}
.site-header-cta:hover { background: var(--navy); }

/* Secondary header CTA — lightweight outline variant that routes users
   directly to the shipper ROI calculator without crowding out the primary
   "Get in Touch" conversion path. */
.site-header-cta-secondary {
  background: transparent;
  color: var(--blue);
  border: 1.5px solid var(--blue);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
}
.site-header-cta-secondary .material-icons {
  font-size: 16px;
  line-height: 1;
}
.site-header-cta-secondary:hover {
  background: rgba(26,92,255,0.08);
  color: var(--blue);
}

/* Language switcher */
.lang-switcher {
  display: flex; align-items: center; gap: 2px;
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.04em;
}
.lang-switcher-link {
  padding: 4px 6px; border-radius: 4px;
  color: var(--grey-text);
  text-decoration: none;
  transition: color var(--transition), background var(--transition);
}
.lang-switcher-link:hover {
  color: var(--navy);
  background: var(--grey-bg);
}
.lang-switcher-link.active {
  color: var(--blue);
  background: rgba(26,92,255,0.08);
}

body.nav-open {
  overflow: hidden;
  position: fixed;
  width: 100%;
}

/* ── SITE TOP NAV (platform ecosystem) ── */
.site-topnav {
  background: var(--navy);
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.site-topnav-inner {
  max-width: 1240px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  padding: 0 40px;
  height: 38px;
  overflow-x: auto;
  scrollbar-width: none;
}
.site-topnav-inner::-webkit-scrollbar { display: none; }
.site-topnav-link {
  font-family: var(--font);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.2px;
  color: rgba(255, 255, 255, 0.62);
  text-decoration: none;
  position: relative;
  padding: 9px 2px;
  transition: color 0.15s ease;
  white-space: nowrap;
}
.site-topnav-link:hover { color: white; }
.site-topnav-link.is-active { color: white; }
.site-topnav-link.is-active::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  background: var(--teal);
  border-radius: 2px;
}

/* ── FLOATING EXPLORE PILL ── */

@keyframes explore-bob {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%      { transform: translateX(-50%) translateY(-5px); }
}

/* Ring "ping" pulse driven by box-shadow rather than ::before/::after,
   because <button> elements clip or strip pseudo-elements in most browsers
   (Chrome treats button content as a non-overridable internal flex box).
   The keyframe layers TWO box-shadows on every step so the browser can
   smoothly interpolate position-by-position:
     [0] static drop shadow (always present)
     [1] expanding teal ring — solid at 0%, fully expanded + faded at 70%,
         held invisible from 70%→100% to give a clean quiet beat.
   This is the same pattern Tailwind's `animate-ping` uses; it works on
   every element type including <button>. */
@keyframes explore-pulse {
  0% {
    box-shadow:
      0 6px 22px rgba(11, 31, 58, 0.4),
      0 0 0 0 rgba(0, 196, 180, 0.7);
  }
  70% {
    box-shadow:
      0 6px 22px rgba(11, 31, 58, 0.4),
      0 0 0 16px rgba(0, 196, 180, 0);
  }
  100% {
    box-shadow:
      0 6px 22px rgba(11, 31, 58, 0.4),
      0 0 0 0 rgba(0, 196, 180, 0);
  }
}

.site-explore-pill {
  position: fixed;
  bottom: 28px; left: 50%;
  transform: translateX(-50%);
  z-index: 200;
  display: flex; align-items: center; gap: 8px;
  padding: 12px 22px 12px 16px;
  background: linear-gradient(160deg, var(--navy) 0%, #112a4f 60%, #0e2348 100%);
  color: var(--white);
  border: 1.5px solid var(--teal);
  border-radius: 40px;
  cursor: pointer;
  font-family: var(--font);
  font-size: 15px; font-weight: 700;
  box-shadow:
    0 6px 22px rgba(11, 31, 58, 0.4),
    0 0 0 0 rgba(0, 196, 180, 0);
  transition: background 0.2s ease, transform 0.2s ease, border-color 0.2s ease,
              opacity 0.25s ease, visibility 0s linear 0s;
  animation: explore-bob 3s ease-in-out infinite, explore-pulse 1.8s ease-out infinite;
}
/* Hidden state used when the footer scrolls into view, so the pill never
   covers the legal links / column nav at the bottom of the page. */
.site-explore-pill.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  animation: none;
  transition: opacity 0.25s ease, visibility 0s linear 0.25s;
}
.site-explore-pill:hover,
.site-explore-pill:focus-visible {
  background: linear-gradient(160deg, #112a4f 0%, #16345f 60%, #112e58 100%);
  border-color: #5eead4;
  box-shadow:
    0 10px 30px rgba(11, 31, 58, 0.5),
    0 0 0 6px rgba(0, 196, 180, 0.3);
  animation: none;
  transform: translateX(-50%) translateY(-2px);
  outline: none;
}
.site-explore-pill-icon {
  font-size: 22px;
  color: var(--teal);
}
.site-explore-pill-label {
  letter-spacing: 0.4px;
  color: var(--white);
}
.site-explore-pill-kbd {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  background: rgba(0, 196, 180, 0.18);
  border: 1px solid rgba(0, 196, 180, 0.5);
  border-radius: 4px;
  padding: 2px 6px;
  margin-left: 4px;
  color: var(--teal);
  letter-spacing: 0.5px;
}

@media (prefers-reduced-motion: reduce) {
  .site-explore-pill { animation: none; }
}

/* ── SHARE FAB (mobile floating button below header) ── */
.site-share-fab {
  display: none;
}

/* ── SHARE BUTTON (header) + DIALOG ── */

.site-header .site-share-btn {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 7px 16px 7px 12px;
  min-height: 36px;
  font-family: var(--font);
  font-size: 13px;
  font-weight: 600;
  color: var(--navy);
  background: var(--white);
  border: 2px solid var(--blue);
  border-radius: 8px;
  cursor: pointer;
  box-shadow: 0 2px 12px var(--teal-dim);
  transition: background var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
}
.site-header .site-share-btn .material-icons {
  font-size: 18px;
  color: var(--blue);
}
.site-header .site-share-btn-label {
  line-height: 1;
  letter-spacing: 0.02em;
}
.site-header .site-share-btn:hover {
  background: var(--teal-dim);
  border-color: var(--navy);
  color: var(--navy);
  box-shadow: 0 4px 16px var(--teal-dim);
}
.site-header .site-share-btn:hover .material-icons {
  color: var(--navy);
}
.site-header .site-share-btn:focus {
  outline: none;
}
.site-header .site-share-btn:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 2px;
}

.site-share-backdrop {
  position: fixed; inset: 0;
  z-index: 400;
  background: rgba(11,31,58,0.45);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
}
.site-share-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-share-dialog {
  width: 100%; max-width: 420px;
  margin: 0 16px;
  background: white;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(11,31,58,0.25), 0 0 0 1px rgba(11,31,58,0.06);
  padding: 24px;
  transform: scale(0.96) translateY(8px);
  transition: transform 0.15s ease, opacity 0.15s ease;
  opacity: 0;
}
.site-share-backdrop.active .site-share-dialog {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.site-share-header {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 16px;
}
.site-share-header .material-icons {
  font-size: 20px; color: var(--blue);
}
.site-share-header strong {
  font-family: var(--font);
  font-size: 16px; font-weight: 700; color: var(--navy);
  flex: 1;
}
.site-share-close {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  background: none; border: none;
  font-size: 22px; color: var(--grey-text);
  cursor: pointer; border-radius: 8px;
  transition: background 0.12s ease;
}
.site-share-close:hover { background: var(--grey-bg); }

.site-share-page-info {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--grey-text);
  background: var(--grey-bg);
  border-radius: 8px;
  padding: 10px 12px;
  margin-bottom: 16px;
  word-break: break-all;
  line-height: 1.5;
}
.site-share-page-info strong {
  display: block;
  font-family: var(--font);
  font-size: 13px;
  color: var(--navy);
  margin-bottom: 2px;
}

.site-share-label {
  display: block;
  font-family: var(--font);
  font-size: 13px; font-weight: 600;
  color: var(--navy);
  margin-bottom: 6px;
}
.site-share-label span { font-weight: 400; color: var(--grey-text); }

.site-share-input,
.site-share-textarea {
  display: block; width: 100%;
  font-family: var(--font);
  font-size: 14px; color: var(--navy);
  background: white;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 12px;
  margin-bottom: 14px;
  transition: border-color 0.15s ease;
  box-sizing: border-box;
}
.site-share-input:focus,
.site-share-textarea:focus {
  outline: none;
  border-color: var(--blue);
}
.site-share-textarea { resize: vertical; min-height: 60px; }

.site-share-send {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%;
  padding: 12px;
  background: var(--blue);
  color: white;
  border: none; border-radius: 10px;
  font-family: var(--font);
  font-size: 15px; font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease;
}
.site-share-send .material-icons { font-size: 18px; }
.site-share-send:hover { background: #1450e0; }

/* ── CONTACT MODAL (global — same form as /contact/) ── */

.site-contact-backdrop {
  position: fixed; inset: 0;
  z-index: 410;
  background: rgba(11,31,58,0.45);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
  overflow-y: auto;
}
.site-contact-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-contact-dialog {
  width: 100%; max-width: 520px;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  margin: auto;
  background: var(--white);
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(11,31,58,0.25), 0 0 0 1px rgba(11,31,58,0.06);
  padding: 24px;
  transform: scale(0.96) translateY(8px);
  transition: transform 0.15s ease, opacity 0.15s ease;
  opacity: 0;
}
.site-contact-backdrop.active .site-contact-dialog {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.site-contact-header {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 8px;
}
.site-contact-header .material-icons {
  font-size: 20px; color: var(--blue);
}
.site-contact-header strong {
  font-family: var(--font);
  font-size: 16px; font-weight: 700; color: var(--navy);
  flex: 1;
}
.site-contact-close {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  background: none; border: none;
  font-size: 22px; color: var(--grey-text);
  cursor: pointer; border-radius: 8px;
  transition: background 0.12s ease;
}
.site-contact-close:hover { background: var(--grey-bg); }

.site-contact-badge-wrap {
  margin: 0 0 8px;
}
.site-contact-badge-wrap[hidden] {
  display: none;
}
.site-contact-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--teal);
  background: rgba(0, 196, 180, 0.12);
  border: 1px solid rgba(0, 196, 180, 0.35);
  padding: 4px 10px;
  border-radius: 6px;
}

.site-contact-intro {
  font-size: 14px; color: var(--grey-text);
  margin: 0 0 16px;
  line-height: 1.5;
}

.site-contact-form-wrap .wf-form-submit .wf-btn-primary {
  width: 100%;
  justify-content: center;
}

/* ── CONTACT SCREENING MODAL (AI nudge before vague messages submit) ── */

.site-contact-screen-backdrop {
  position: fixed; inset: 0;
  z-index: 420;
  background: rgba(11, 31, 58, 0.55);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
  overflow-y: auto;
}
.site-contact-screen-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-contact-screen-dialog {
  width: 100%; max-width: 540px;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  margin: auto;
  background: var(--white);
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(11, 31, 58, 0.25), 0 0 0 1px rgba(11, 31, 58, 0.06);
  padding: 24px;
  transform: scale(0.96) translateY(8px);
  transition: transform 0.15s ease, opacity 0.15s ease;
  opacity: 0;
}
.site-contact-screen-backdrop.active .site-contact-screen-dialog {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.site-contact-screen-header {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 12px;
}
.site-contact-screen-header .material-icons {
  font-size: 22px; color: var(--teal);
}
.site-contact-screen-header strong {
  font-family: var(--font);
  font-size: 16px; font-weight: 700; color: var(--navy);
  flex: 1;
}
.site-contact-screen-close {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  background: none; border: none;
  font-size: 22px; color: var(--grey-text);
  cursor: pointer; border-radius: 8px;
  transition: background 0.12s ease;
}
.site-contact-screen-close:hover { background: var(--grey-bg); }

.site-contact-screen-intro {
  font-size: 14px; color: var(--grey-text-strong);
  margin: 0 0 12px;
  line-height: 1.55;
}

.site-contact-screen-specifics {
  margin: 0 0 18px;
  padding: 12px 16px 12px 32px;
  background: var(--teal-surface);
  border-left: 3px solid var(--teal);
  border-radius: 8px;
  list-style: disc;
}
.site-contact-screen-specifics li {
  font-size: 14px;
  color: var(--navy);
  line-height: 1.5;
  margin: 4px 0;
}
.site-contact-screen-specifics:empty {
  display: none;
}

.site-contact-screen-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.site-contact-screen-actions .wf-btn-primary,
.site-contact-screen-actions .wf-btn-ghost {
  flex: 1 1 auto;
  justify-content: center;
}

.site-contact-screen-note {
  font-size: 12px;
  color: var(--grey-text);
  margin: 0;
  line-height: 1.4;
}

/* ── FOOTER OFFICE MAP (OpenStreetMap modal) ── */

.site-map-backdrop {
  position: fixed; inset: 0;
  z-index: 412;
  background: rgba(11, 31, 58, 0.5);
  backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
  overflow-y: auto;
}
.site-map-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-map-dialog {
  width: 100%;
  max-width: 680px;
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  margin: auto;
  background: var(--white);
  border-radius: 16px;
  box-shadow: 0 24px 64px rgba(11, 31, 58, 0.28), 0 0 0 1px rgba(11, 31, 58, 0.06);
  padding: 22px 24px 20px;
  transform: scale(0.96) translateY(10px);
  transition: transform 0.18s ease, opacity 0.18s ease;
  opacity: 0;
}
.site-map-backdrop.active .site-map-dialog {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.site-map-header {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 6px;
}
.site-map-header .material-icons {
  font-size: 22px; color: var(--teal);
}
.site-map-header strong {
  flex: 1;
  font-family: var(--font);
  font-size: 17px;
  font-weight: 700;
  color: var(--navy);
}
.site-map-close {
  width: 36px; height: 36px;
  display: grid; place-items: center;
  background: none; border: none;
  font-size: 24px; color: var(--grey-text);
  cursor: pointer; border-radius: 8px;
  transition: background 0.12s ease;
}
.site-map-close:hover { background: var(--grey-bg); }

.site-map-address {
  margin: 0 0 8px;
  font-size: 14px;
  color: var(--grey-text);
  line-height: 1.45;
}

.site-map-zoom-hint {
  margin: 0 0 12px;
  font-size: 12px;
  color: var(--grey-text);
  line-height: 1.4;
  opacity: 0.9;
}

.site-map-frame-wrap {
  position: relative;
  width: 100%;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--border);
  background: #dde4ea;
  aspect-ratio: 16 / 10;
  min-height: 220px;
  box-shadow: inset 0 1px 2px rgba(11, 31, 58, 0.06);
  touch-action: none;
}

.site-map-tiles-layer {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.site-map-pin {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 2;
  pointer-events: none;
  transform: translate(-50%, -100%);
  margin-top: 4px;
}
.site-map-pin-dot {
  display: block;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--teal);
  border: 3px solid var(--white);
  box-shadow: 0 2px 12px rgba(11, 31, 58, 0.35);
}

.site-map-zoom-controls {
  position: absolute;
  right: 10px;
  bottom: 10px;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.site-map-zoom-btn {
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.95);
  color: var(--navy);
  font-family: var(--font);
  font-size: 22px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(11, 31, 58, 0.12);
  transition: background 0.12s ease, color 0.12s ease;
}
.site-map-zoom-btn:hover {
  background: var(--white);
  color: var(--blue);
}
.site-map-zoom-btn:focus-visible {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}

/* ── PODCAST PLAYER MODAL ── */

.site-podcast-backdrop {
  position: fixed; inset: 0;
  z-index: 413;
  background: rgba(11, 31, 58, 0.5);
  backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
}
.site-podcast-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-podcast-dialog {
  width: 100%; max-width: 480px;
  margin: 0 16px;
  background: var(--white);
  border-radius: 16px;
  box-shadow: 0 24px 64px rgba(11, 31, 58, 0.28), 0 0 0 1px rgba(11, 31, 58, 0.06);
  padding: 24px;
  transform: scale(0.96) translateY(10px);
  transition: transform 0.18s ease, opacity 0.18s ease;
  opacity: 0;
}
.site-podcast-backdrop.active .site-podcast-dialog {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.site-podcast-header {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 12px;
}
.site-podcast-header .material-icons {
  font-size: 22px; color: var(--teal);
}
.site-podcast-header strong {
  flex: 1;
  font-family: var(--font);
  font-size: 16px; font-weight: 700; color: var(--navy);
}
.site-podcast-close {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  background: none; border: none;
  font-size: 22px; color: var(--grey-text);
  cursor: pointer; border-radius: 8px;
  transition: background 0.12s ease;
}
.site-podcast-close:hover { background: var(--grey-bg); }

.site-podcast-description {
  font-size: 14px; line-height: 1.55;
  color: var(--grey-text);
  margin-bottom: 16px;
}

.site-podcast-audio {
  width: 100%;
  border-radius: 8px;
}

/* ── INLINE VIDEO MODAL (data-site-video — e.g. Autogate explainers) ── */

.site-video-backdrop {
  position: fixed; inset: 0;
  z-index: 414;
  background: rgba(11, 31, 58, 0.5);
  backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
}
.site-video-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-video-dialog {
  width: 100%;
  max-width: min(960px, calc(100vw - 32px));
  margin: 0 16px;
  background: var(--white);
  border-radius: 16px;
  box-shadow: 0 24px 64px rgba(11, 31, 58, 0.28), 0 0 0 1px rgba(11, 31, 58, 0.06);
  padding: 24px;
  transform: scale(0.96) translateY(10px);
  transition: transform 0.18s ease, opacity 0.18s ease;
  opacity: 0;
}
.site-video-backdrop.active .site-video-dialog {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.site-video-header {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 12px;
}
.site-video-header .material-icons {
  font-size: 22px; color: var(--teal);
}
.site-video-header strong {
  flex: 1;
  font-family: var(--font);
  font-size: 16px; font-weight: 700; color: var(--navy);
}
.site-video-close {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  background: none; border: none;
  font-size: 22px; color: var(--grey-text);
  cursor: pointer; border-radius: 8px;
  transition: background 0.12s ease;
}
.site-video-close:hover { background: var(--grey-bg); }

.site-video-description {
  font-size: 14px; line-height: 1.55;
  color: var(--grey-text);
  margin-bottom: 16px;
}

.site-video-frame-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: var(--navy);
  border-radius: 12px;
  overflow: hidden;
}

.site-video-player {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Inline contact forms embedded at CTAs (articles, products) */
.wf-embed-contact {
  margin-top: 16px;
  margin-bottom: 8px;
  max-width: 560px;
}
.wf-embed-contact--in-callout {
  max-width: 100%;
  margin-top: 20px;
}
.wf-btn-row--after-embed {
  margin-top: 12px;
}

.wf-cta-callout-actions {
  margin-top: 20px;
}

/* ── COMMAND PALETTE ── */

.site-palette-backdrop {
  position: fixed; inset: 0;
  z-index: 300;
  background: rgba(11,31,58,0.55);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  display: flex; align-items: flex-start; justify-content: center;
  padding-top: 12vh;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
}
.site-palette-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-palette {
  width: 100%; max-width: 580px;
  background: white;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(11,31,58,0.3), 0 0 0 1px rgba(11,31,58,0.08);
  overflow: hidden;
  transform: scale(0.96) translateY(-8px);
  transition: transform 0.15s ease, opacity 0.15s ease;
  opacity: 0;
}
.site-palette-backdrop.active .site-palette {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.site-palette-search {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
}
.site-palette-search-icon { font-size: 22px; color: var(--grey-text); }
.site-palette-input {
  flex: 1; border: none; outline: none;
  font-family: var(--font);
  font-size: 16px; color: var(--navy);
  background: transparent;
}
.site-palette-input::placeholder { color: var(--grey-text); }
.site-palette-esc {
  font-family: var(--mono);
  font-size: 11px;
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 2px 6px;
  color: var(--grey-text);
}

.site-palette-body {
  max-height: 60vh;
  overflow-y: auto;
  padding: 8px;
}

.site-palette-group { margin-bottom: 4px; }
.site-palette-group-title {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--grey-text);
  padding: 10px 12px 6px;
}

.site-palette-link {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 12px;
  border-radius: 10px;
  text-decoration: none;
  color: var(--navy);
  transition: background 0.12s ease;
}
.site-palette-link:hover {
  background: var(--grey-bg);
}
.site-palette-link .material-icons {
  font-size: 20px;
  color: var(--blue);
  flex-shrink: 0;
  width: 32px; height: 32px;
  display: grid; place-items: center;
  background: rgba(26,92,255,0.08);
  border-radius: 8px;
}
.site-palette-link div { display: flex; flex-direction: column; min-width: 0; }
.site-palette-link strong {
  font-size: 14px; font-weight: 600; color: var(--navy);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.site-palette-link span {
  font-size: 12px; color: var(--grey-text); margin-top: 1px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.site-palette-link .visited-check,
.site-sheet-link .visited-check {
  margin-left: auto;
  font-size: 16px;
  color: var(--teal);
  flex-shrink: 0;
  opacity: 0.85;
}

.site-palette-empty {
  text-align: center;
  padding: 32px 16px;
  font-size: 14px; color: var(--grey-text);
}

/* ── BOTTOM SHEET (mobile) ── */

.site-sheet-backdrop {
  position: fixed; inset: 0;
  z-index: 300;
  background: rgba(11,31,58,0.45);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}
.site-sheet-backdrop.active {
  opacity: 1;
  pointer-events: auto;
}

.site-sheet {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 301;
  background: white;
  border-radius: 18px 18px 0 0;
  box-shadow: 0 -8px 40px rgba(11,31,58,0.18);
  transform: translateY(100%);
  transition: transform 0.25s cubic-bezier(0.32, 0.72, 0, 1);
  max-height: 85vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.site-sheet.active {
  transform: translateY(0);
}

.site-sheet-handle {
  width: 36px; height: 4px;
  background: var(--border);
  border-radius: 2px;
  margin: 10px auto 6px;
}

.site-sheet-body { padding: 4px 16px 28px; }

.site-sheet-group { margin-bottom: 8px; }
.site-sheet-group-title {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--grey-text);
  padding: 12px 8px 6px;
}

.site-sheet-link {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 8px;
  text-decoration: none;
  color: var(--navy);
  font-size: 15px; font-weight: 500;
  border-bottom: 1px solid var(--border);
  min-height: 48px;
}
.site-sheet-link:last-child { border-bottom: none; }
.site-sheet-link .material-icons {
  font-size: 20px; color: var(--blue);
  flex-shrink: 0;
}

/* Desktop: hide sheet; Mobile: hide palette */
@media (min-width: 768px) {
  .site-sheet-backdrop, .site-sheet { display: none; }
}
@media (max-width: 767px) {
  .site-palette-backdrop { display: none; }
  .site-explore-pill-kbd { display: none; }
  .site-explore-pill { bottom: 20px; padding: 10px 20px 10px 14px; font-size: 14px; }
  .site-explore-pill-icon { font-size: 20px; }
}

/* ================================================================
   SITE FOOTER
   ================================================================ */

.site-footer {
  background: var(--navy);
  color: rgba(255,255,255,0.6);
}

/* Gradient accent line at top */
.site-footer-accent {
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}

/* Main area: brand + contact + products + media + company */
.site-footer-main {
  max-width: 1180px; margin: 0 auto;
  padding: 48px 24px 40px;
  display: grid;
  grid-template-columns: 1.4fr minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 36px 32px;
}
@media (max-width: 1100px) {
  .site-footer-main {
    grid-template-columns: 1.25fr minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
    gap: 32px 28px;
  }
  .site-footer-brand {
    grid-column: 1 / -1;
  }
}
@media (max-width: 900px) {
  .site-footer-main {
    grid-template-columns: 1fr 1fr;
    gap: 28px 24px;
  }
  .site-footer-brand {
    grid-column: 1 / -1;
  }
}

/* Brand column */
.site-footer-brand { display: flex; flex-direction: column; gap: 14px; }
.site-footer-logo { display: block; }
.site-footer-logo-img { height: 30px; width: auto; opacity: 0.9; }
.site-footer-payoff {
  font-family: var(--mono);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.2px;
  color: rgba(255,255,255,0.55);
  line-height: 1.5;
  max-width: 280px;
  margin: -4px 0 -4px 0;
}
.site-footer-tagline {
  font-size: 14px; color: rgba(255,255,255,0.45);
  line-height: 1.6; max-width: 280px;
}
.site-footer-social {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; color: rgba(255,255,255,0.5);
  text-decoration: none; font-family: var(--mono);
  transition: color var(--transition);
}
.site-footer-social svg { opacity: 0.7; transition: opacity var(--transition); }
.site-footer-social:hover { color: var(--teal); }
.site-footer-social:hover svg { opacity: 1; }

/* When brand spans the full footer row (≤1100px), the 280px caps used
   on the desktop narrow column would otherwise force awkward early line
   breaks inside an 800–1000px-wide block. Let the text breathe. */
@media (max-width: 1100px) {
  .site-footer-payoff { max-width: none; }
  .site-footer-tagline { max-width: 60ch; }
}

/* Column titles */
.site-footer-col-title {
  font-size: 12px; font-weight: 700; color: rgba(255,255,255,0.35);
  text-transform: uppercase; letter-spacing: 1.5px;
  font-family: var(--mono);
  margin-bottom: 16px; padding-bottom: 10px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

/* Contact column */
.site-footer-contact {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 12px;
}
.site-footer-contact li {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 14px; color: rgba(255,255,255,0.55); line-height: 1.45;
}
.site-footer-contact svg { flex-shrink: 0; margin-top: 2px; color: var(--teal); opacity: 0.7; }
.site-footer-contact a {
  color: rgba(255,255,255,0.6); text-decoration: none;
  transition: color var(--transition);
}
.site-footer-contact a:hover { color: white; }

.site-footer-address-trigger {
  margin: 0; padding: 0;
  border: none; background: none;
  font: inherit; font-size: 14px; line-height: 1.45;
  text-align: left;
  color: rgba(255,255,255,0.6);
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: rgba(255,255,255,0.25);
  text-underline-offset: 3px;
  transition: color var(--transition), text-decoration-color var(--transition);
}
.site-footer-address-trigger:hover {
  color: white;
  text-decoration-color: rgba(255,255,255,0.55);
}
.site-footer-address-trigger:focus-visible {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
  border-radius: 2px;
}

/* Products column */
.site-footer-products {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 12px;
}
.site-footer-products li a {
  font-size: 14px; color: rgba(255,255,255,0.6); text-decoration: none;
  transition: color var(--transition);
}
.site-footer-products li a:hover { color: white; }

/* Bottom bar: copyright + legal links */
.site-footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.06);
  padding: 16px 24px;
  max-width: 1100px; margin: 0 auto;
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 12px;
}
.site-footer-copy {
  font-size: 13px; color: rgba(255,255,255,0.3);
  font-family: var(--mono);
}
.site-footer-legal {
  display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
}
.site-footer-legal a {
  font-size: 12px; color: rgba(255,255,255,0.3); text-decoration: none;
  font-family: var(--mono); letter-spacing: 0.3px;
  transition: color var(--transition);
}
.site-footer-legal a:hover { color: rgba(255,255,255,0.7); }
.site-footer-cookie-btn {
  background: none; border: none; padding: 0; cursor: pointer;
  font-size: 12px; color: rgba(255,255,255,0.3);
  font-family: var(--mono); letter-spacing: 0.3px;
  transition: color var(--transition);
}
.site-footer-cookie-btn:hover { color: rgba(255,255,255,0.7); }

/* ── vanilla-cookieconsent v3 — ConPDS brand theme ─────────────────────────
   Override the library's CSS variables to match our navy/blue palette.
   Full variable reference:
   https://cookieconsent.orestbida.com/advanced/ui-customization.html
   ─────────────────────────────────────────────────────────────────────────*/
:root {
  --cc-font-family:             var(--font);
  --cc-bg:                      var(--white);
  --cc-primary-color:           var(--navy-footer);          /* navy text */
  --cc-secondary-color:         #6B7280;          /* grey text */

  /* Buttons */
  --cc-btn-primary-bg:          var(--blue);          /* blue — Accept all */
  --cc-btn-primary-color:       var(--white);
  --cc-btn-primary-hover-bg:    var(--navy-footer);
  --cc-btn-secondary-bg:        var(--blue-surface);          /* light grey-blue — Essential only */
  --cc-btn-secondary-color:     var(--navy-footer);
  --cc-btn-secondary-hover-bg:  var(--blue-surface-strong);

  /* Toggle (analytics switch) */
  --cc-toggle-on-bg:            var(--blue);
  --cc-toggle-off-bg:           #D1D5DB;
  --cc-toggle-on-knob-bg:       var(--white);
  --cc-toggle-off-knob-bg:      var(--white);

  /* Borders & shadows */
  --cc-modal-border-radius:     12px;
  --cc-btn-border-radius:       8px;
  --cc-overlay-bg:              rgba(6, 20, 42, 0.55);
  --cc-separator-border-color:  #E8EDF4;

  /* Links inside modal */
  --cc-link-color:              var(--blue);
}

/* == 25c. GLOSSARY ============================================== */

/* Plain semantic glossary: <section> per category, <article> per term, <h3>
   heading per term, <p> body. Anchor IDs on each term so external links
   (and the DefinedTerm @ids in JSON-LD) resolve to a visible heading. */
.wf-glossary-jump {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding: 18px 40px 8px;
  border-bottom: 1px solid var(--border);
  background: var(--grey-bg);
}
.wf-glossary-jump a {
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.3px;
  color: var(--blue);
  background: white;
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 5px 12px;
  text-decoration: none;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.wf-glossary-jump a:hover,
.wf-glossary-jump a:focus-visible {
  background: rgba(26,92,255,0.08);
  border-color: rgba(26,92,255,0.35);
  outline: none;
}
.wf-glossary-section {
  background: white;
  padding: 36px 40px;
  border-bottom: 1px solid var(--border);
  scroll-margin-top: 80px;
}
.wf-glossary-section .wf-h2 { margin-bottom: 18px; }
.wf-glossary-term {
  padding: 16px 0;
  border-bottom: 1px dashed var(--border);
  scroll-margin-top: 80px;
}
.wf-glossary-term:last-child { border-bottom: none; }
.wf-glossary-h3 {
  font-size: 17px; font-weight: 700; color: var(--navy);
  letter-spacing: -0.2px; margin-bottom: 6px;
  line-height: 1.35;
}
.wf-glossary-term p {
  font-size: 15px;
  color: var(--grey-text);
  line-height: 1.65;
}
.wf-glossary-term p a {
  color: var(--blue);
  font-weight: 600;
}
.wf-glossary-term p code {
  font-family: var(--mono);
  font-size: 13px;
  background: rgba(26,92,255,0.07);
  padding: 1px 6px;
  border-radius: 4px;
  color: var(--navy);
}

/* == 25d. ABOUT PAGE ============================================ */

/* About page reuses generic wf-* sections + a couple of small narrative
   helpers. Keeps the company-story flow on the same width and rhythm as
   /contact/ and /customer-success-stories/. */
.wf-about-section {
  background: white;
  padding: 40px 40px;
  border-bottom: 1px solid var(--border);
}
.wf-about-section.wf-about-section--alt { background: var(--grey-bg); }
.wf-about-section .wf-h2 { margin-bottom: 14px; }
.wf-about-lede {
  font-size: 17px;
  color: var(--grey-text);
  line-height: 1.65;
  max-width: 660px;
  margin-bottom: 18px;
  text-wrap: pretty;
}
.wf-about-section p + p { margin-top: 12px; }
.wf-about-meta-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px;
  margin-top: 18px;
}
.wf-about-meta {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 16px;
}
.wf-about-meta-label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 4px;
}
.wf-about-meta-value {
  font-size: 15px;
  font-weight: 600;
  color: var(--navy);
  line-height: 1.4;
}
.wf-about-trust-note {
  margin-top: 18px;
  font-size: 15px;
  color: var(--grey-text);
  line-height: 1.6;
}
.wf-about-trust-note a { color: var(--blue); font-weight: 600; }

/* Inline article byline strip — published date, author, link to /about/.
   Sits between the hero and the first body section on every article. */
.wf-byline {
  background: var(--grey-bg);
  padding: 12px 40px;
  border-bottom: 1px solid var(--border);
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.3px;
  color: var(--grey-text);
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  align-items: center;
}
.wf-byline a {
  color: var(--blue);
  font-weight: 600;
  text-decoration: none;
}
.wf-byline a:hover,
.wf-byline a:focus-visible {
  text-decoration: underline;
}
.wf-byline-sep {
  opacity: 0.4;
}

/* == 26. INLINE-STYLE REPLACEMENTS =============================== */

.wf-hero-definition a {
  color: var(--teal); font-weight: 600; font-size: 14px;
}
.wf-h3-card .wf-h3-card-extra {
  margin-top: 10px; font-size: 15px; color: var(--grey-text); line-height: 1.55;
}
.wf-section-note {
  margin-top: 14px; font-size: 15px; color: var(--grey-text); text-align: center;
}
.wf-section-note a { color: var(--blue); font-weight: 600; }
.wf-section-note--light {
  margin-top: 18px; font-size: 15px; color: rgba(255,255,255,0.5);
}
.wf-section-note--light a { color: var(--teal); font-weight: 600; }
.wf-eco-link {
  display: inline-block; margin-top: 12px;
  font-size: 14px; font-weight: 600; color: var(--teal);
  font-family: var(--mono); text-decoration: none;
}
.wf-cta-fine-print {
  margin-top: 12px; font-size: 13px; color: rgba(255,255,255,0.3);
  font-family: var(--mono);
}
.wf-cta-fine-print--tight { margin-top: 8px; }
.wf-cta-fine-print a {
  color: var(--teal);
  text-decoration: underline;
  text-decoration-color: rgba(0, 196, 180, 0.55);
  text-underline-offset: 3px;
  font-weight: 600;
  transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
.wf-cta-fine-print a:hover,
.wf-cta-fine-print a:focus-visible {
  color: #5EEAD4;
  text-decoration-color: #5EEAD4;
}

/* == 27. SUB-PAGE COMPONENTS (verticals, landing pages) ========== */

/* Hero positioning statement (dark info box) */
.wf-hero-positioning {
  display: inline-block;
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 8px;
  padding: 14px 20px;
  font-size: 15px; color: rgba(255,255,255,0.65);
  line-height: 1.6; max-width: 620px;
  margin: 0 auto 22px; text-align: left;
}

/* Hero trust pill */
.wf-hero-trust {
  display: inline-block;
  background: rgba(0,196,180,0.1);
  border: 1px solid rgba(0,196,180,0.25);
  border-radius: 20px;
  padding: 6px 18px;
  font-size: 13px; color: rgba(255,255,255,0.75);
  font-family: var(--mono); letter-spacing: 0.3px;
  margin-top: 14px;
  margin-bottom: 16px;
}

/* "Who Is This For" box */
.wf-icp-box {
  background: var(--grey-bg); border-radius: 10px;
  border: 1px solid var(--border);
  padding: 22px 24px; margin-bottom: 20px;
}
.wf-icp-label {
  font-size: 13px; font-weight: 700; color: var(--blue);
  text-transform: uppercase; letter-spacing: 1px;
  font-family: var(--mono); margin-bottom: 14px;
}
.wf-icp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.wf-icp-item {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 15px; color: var(--navy); line-height: 1.5;
}
.wf-icp-arrow { color: var(--teal); font-weight: 700; flex-shrink: 0; }

/* "Why Different" dark section (reefer / wash) */
.wf-diff-section {
  background: var(--navy);
  padding: 48px 56px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  position: relative; overflow: hidden;
}
.wf-diff-section::before {
  content: ''; position: absolute;
  bottom: -60px; right: -60px;
  width: 220px; height: 220px;
  background: radial-gradient(circle, rgba(0,196,180,0.15) 0%, transparent 70%);
  pointer-events: none;
}
.wf-diff-section .wf-h2 { color: white; margin-bottom: 10px; }
.wf-diff-section-sub {
  font-size: 16px; color: rgba(255,255,255,0.55);
  line-height: 1.6; margin-bottom: 24px; max-width: 640px;
}
.wf-diff-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
}
.wf-diff-card {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px; padding: 18px;
  border-top: 2px solid var(--teal);
}
.wf-diff-card-icon { font-size: 22px; margin-bottom: 10px; display: block; }
.wf-diff-card-title {
  font-size: 15px; font-weight: 700; color: white;
  margin-bottom: 6px; line-height: 1.3;
}
.wf-diff-card-desc {
  font-size: 14px; color: rgba(255,255,255,0.55); line-height: 1.5;
}
.wf-diff-section-cta { margin-top: 24px; text-align: center; }
.wf-diff-section-cta a {
  display: inline-block;
  background: rgba(0,196,180,0.12);
  border: 1px solid rgba(0,196,180,0.35);
  color: var(--teal); font-size: 14px; font-weight: 600;
  padding: 12px 24px; border-radius: 8px; text-decoration: none;
}

/* Feature spotlight callout (video + audio) */
.wf-spotlight {
  background: linear-gradient(135deg, #0B1F3A 0%, #122c50 100%);
  padding: 44px 56px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  position: relative; overflow: hidden;
}
.wf-spotlight::before {
  content: ''; position: absolute;
  top: -40px; left: -40px;
  width: 200px; height: 200px;
  background: radial-gradient(circle, rgba(0,196,180,0.18) 0%, transparent 70%);
  pointer-events: none;
}
.wf-spotlight-head {
  display: flex; align-items: center; gap: 14px;
  margin-bottom: 8px;
}
.wf-spotlight-icon {
  width: 52px; height: 52px; border-radius: 50%;
  background: rgba(0,196,180,0.15);
  border: 1px solid rgba(0,196,180,0.3);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.wf-spotlight-icon .material-icons { font-size: 26px; color: var(--teal); }
.wf-spotlight-head h2 {
  font-size: 22px; font-weight: 700; color: white; line-height: 1.3;
}
.wf-spotlight-sub {
  font-size: 15px; color: rgba(255,255,255,0.6);
  line-height: 1.6; max-width: 620px; margin-bottom: 24px;
}
.wf-spotlight-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
}
.wf-spotlight-card {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px; padding: 20px 18px;
}
.wf-spotlight-card-icon {
  width: 36px; height: 36px; border-radius: 8px;
  background: rgba(0,196,180,0.12);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 10px;
}
.wf-spotlight-card-icon .material-icons { font-size: 20px; color: var(--teal); }
.wf-spotlight-card strong {
  display: block; font-size: 14px; font-weight: 600;
  color: white; margin-bottom: 4px;
}
.wf-spotlight-card p {
  font-size: 13px; color: rgba(255,255,255,0.55); line-height: 1.5;
}
.wf-spotlight-spec {
  margin-top: 20px; text-align: center;
  font-size: 13px; color: rgba(255,255,255,0.4);
  font-family: var(--mono);
}
@media (max-width: 767px) {
  .wf-spotlight { padding: 32px 16px; }
  .wf-spotlight-grid { grid-template-columns: 1fr; }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .wf-spotlight-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Related resources section */
.wf-related {
  background: white;
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-related .wf-section-intro { max-width: 680px; }
.wf-related-links {
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  gap: 12px; margin-top: 18px;
}
.wf-rel-card {
  background: var(--grey-bg); border-radius: 10px;
  border: 1px solid var(--border);
  padding: 18px 20px; position: relative; overflow: hidden;
  text-decoration: none; display: block; color: inherit;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.wf-rel-card:hover {
  border-color: var(--blue);
  box-shadow: 0 2px 8px rgba(0,48,87,0.10);
}
.wf-rel-card::before {
  content: ''; position: absolute;
  bottom: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-rel-card h3,
.wf-rel-card h5 {
  font-size: 16px; font-weight: 600; color: var(--navy);
  margin-bottom: 6px; line-height: 1.4;
}
.wf-rel-card p {
  font-size: 14px; color: var(--grey-text);
  line-height: 1.5; margin-bottom: 10px;
}
.wf-rel-podcast-icon {
  font-size: 20px; color: var(--blue); vertical-align: -3px; margin-right: 6px;
}
.wf-rel-card--podcast { border-left: 3px solid var(--blue); }
.wf-rel-card--video { border-left: 3px solid var(--teal); }
.wf-rel-video-icon {
  font-size: 20px; color: var(--teal); vertical-align: -3px; margin-right: 6px;
}
.wf-rel-card--video .wf-rel-link + .wf-rel-link { margin-top: 10px; }
.wf-rel-link {
  font-size: 14px; color: var(--blue); font-weight: 600;
  display: block; text-decoration: none;
}

/* Final CTA risk/consequences box */
.wf-cta-risk-box {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px; padding: 22px 24px;
  margin: 22px auto; text-align: left; max-width: 600px;
}
.wf-cta-risk-label {
  font-size: 12px; font-weight: 700; color: rgba(255,255,255,0.45);
  text-transform: uppercase; letter-spacing: 1.5px;
  font-family: var(--mono); margin-bottom: 16px;
}
.wf-cta-risk-item {
  font-size: 15px; color: rgba(255,255,255,0.7);
  line-height: 1.6; margin-bottom: 10px;
}
.wf-cta-risk-item:last-child { margin-bottom: 0; }
.wf-cta-risk-x { color: #FF7A8A; font-weight: 700; }

/* 5-step flow variant (reefer page) */
.wf-flow--5 { grid-template-columns: repeat(5, 1fr); }

/* Secondary button (outlined, used on sub-pages) */
.wf-btn-secondary {
  display: inline-block; margin-top: 16px;
  border: 1.5px solid var(--border); color: var(--blue);
  font-size: 14px; font-weight: 600;
  padding: 10px 22px; border-radius: 8px;
  text-decoration: none; cursor: pointer;
}

/* Content-area link colours */
.wf-h3-card a { color: var(--blue); font-weight: 600; }
.wf-problem-footnote a { color: var(--teal); font-weight: 600; }
.wf-benefits-intro a { color: var(--blue); font-weight: 600; }

/* Teal-bordered callout inside step cards */
.wf-h3-card-note {
  margin-top: 8px; font-size: 15px; color: var(--grey-text); line-height: 1.55;
  padding: 12px 14px; background: rgba(0,196,180,0.06);
  border-left: 3px solid var(--teal); border-radius: 0 6px 6px 0;
}

/* Small text after integration chips */
.wf-h3-card-footer {
  margin-top: 10px; font-size: 14px; color: var(--grey-text);
}
.wf-h3-card-footer a { color: var(--blue); font-weight: 600; }

/* Compliance section bottom note */
.wf-compliance-note {
  margin-top: 16px; font-size: 15px; color: rgba(255,255,255,0.5);
}
.wf-compliance-note a { color: var(--teal); font-weight: 600; }

/* Section intro reusable across sub-pages */
.wf-section-intro {
  font-size: 15px; color: var(--grey-text); line-height: 1.6;
  margin-bottom: 16px; max-width: 680px;
}
.wf-section-intro a { color: var(--blue); font-weight: 600; }

/* Benefits section footer note */
.wf-benefits-footer {
  margin-top: 16px; font-size: 15px; color: var(--grey-text); text-align: center;
}
.wf-benefits-footer a { color: var(--blue); font-weight: 600; }

/* Final CTA extra paragraph */
.wf-final-cta-extra {
  font-size: 15px; color: rgba(255,255,255,0.65); line-height: 1.65;
  margin-bottom: 22px; max-width: 480px;
  margin-left: auto; margin-right: auto;
}

/* ── Page-vertical scoped overrides (820px sub-pages) ── */
.page-product .page { max-width: 820px; }
.page-product .wf-hero { padding: 70px 40px 55px; }
.page-product .wf-final-cta { padding: 56px 40px; }
.page-product .wf-trust-gdpr::before { display: none; }

.page-platform .page { max-width: 820px; }
.page-platform .wf-hero { padding: 70px 40px 48px; }
.page-platform .wf-final-cta { padding: 56px 40px; }

.page-glossary .page { max-width: 820px; }
.page-glossary .wf-hero { padding: 56px 40px 36px; }
.page-glossary .wf-final-cta { padding: 56px 40px; }

.page-about .page { max-width: 820px; }
.page-about .wf-hero { padding: 70px 40px 55px; }
.page-about .wf-final-cta { padding: 56px 40px; }

.page-article .page { max-width: 820px; }
.page-article .wf-hero { padding: 70px 40px 55px; }
.page-article .wf-final-cta { padding: 56px 40px; }

/* Contact page — same content width and gutters as articles / products */
.page-contact .page { max-width: 820px; }
.page-contact .wf-hero.wf-hero-compact {
  padding: 70px 40px 52px;
}
.page-contact .wf-contact {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 40px;
  padding: 36px 40px 48px;
  align-items: start;
  border-top: 1px solid var(--border);
}
.page-contact .wf-contact-form-col,
.page-contact .wf-contact-info-col {
  min-width: 0;
}
.page-contact .wf-form-row {
  grid-template-columns: 1fr;
}

/* Contact thank-you (post-submit landing) */
.page-contact-thank-you .page {
  max-width: 820px;
}
.page-contact-thank-you .wf-hero.wf-hero-compact {
  padding: 70px 40px 40px;
}
.page-contact-thank-you .wf-thank-you-section {
  padding: 0 40px 56px;
  border-top: 1px solid var(--border);
}
.page-contact-thank-you .wf-thank-you-panel {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 32px 36px 36px;
  margin-top: 28px;
}
.page-contact-thank-you .wf-thank-you-panel-title {
  font-size: 20px;
  font-weight: 600;
  color: var(--navy);
  margin: 0 0 22px;
  letter-spacing: -0.02em;
}
.page-contact-thank-you .wf-thank-you-grid {
  gap: 20px 28px;
}
.page-contact-thank-you .wf-thank-you-grid .wf-icon-card {
  background: white;
  border-radius: 10px;
  border: 1px solid var(--border);
  padding: 18px 20px;
}
.page-contact-thank-you .wf-thank-you-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 32px;
  padding-top: 28px;
  border-top: 1px solid var(--border);
}
.page-contact-thank-you .wf-thank-you-actions .wf-btn-primary,
.page-contact-thank-you .wf-thank-you-actions .wf-btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  min-height: 44px;
  padding: 0 22px;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 600;
}
@media (max-width: 720px) {
  .page-contact-thank-you .wf-thank-you-section {
    padding: 0 20px 40px;
  }
  .page-contact-thank-you .wf-thank-you-panel {
    padding: 24px 20px 28px;
  }
  .page-contact-thank-you .wf-hero.wf-hero-compact {
    padding: 56px 20px 32px;
  }
}

/* Hero tag pill — product family badge: source reads 'ConPDS Checker' / 'ConPDS Autogate' / 'ConPDS Tracker'; visually uppercased via text-transform below. */
.wf-hero-tag {
  display: inline-block;
  background: rgba(0,196,180,0.15);
  border: 1px solid rgba(0,196,180,0.3);
  border-radius: 20px; padding: 5px 16px;
  font-size: 13px; color: var(--teal); font-weight: 600;
  font-family: var(--mono); letter-spacing: 0.5px;
  text-transform: uppercase; margin-bottom: 18px;
}

/* Section containers for vertical pages */
.wf-problem {
  background: white;
  padding: 36px 40px;
  border-bottom: 1px solid var(--border);
}

/* When .wf-icon-grid (2x2 icon cards) is reused inside a white .wf-problem
   wrapper, swap the card surface to grey-bg and tint the icon box red so the
   "what goes wrong" cards stay legible and signal the problem framing. */
.wf-problem .wf-icon-card {
  background: var(--grey-bg);
}
.wf-problem .wf-icon-box {
  background: rgba(220,38,38,0.08);
  color: #dc2626;
}
.wf-problem .wf-icon-box .material-icons { color: #dc2626; }

/* -- Problem cascade cards -- */
.wf-problem-cards {
  display: flex; align-items: stretch; gap: 0;
  margin-bottom: 16px;
}
.wf-problem-card {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; align-items: center;
  text-align: center; gap: 8px;
  background: rgba(220,38,38,0.04);
  border: 1px solid rgba(220,38,38,0.12);
  border-radius: 10px; padding: 20px 14px;
}
.wf-problem-card .material-icons {
  font-size: 30px; color: #dc2626;
}
.wf-problem-card-stat {
  font-family: var(--mono); font-size: 20px; font-weight: 800;
  color: var(--navy); letter-spacing: -0.5px; line-height: 1.2;
}
.wf-problem-card-desc {
  font-size: 13px; color: var(--grey-text); line-height: 1.5;
}
.wf-problem-card-arrow {
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; font-weight: 700; color: #dc2626;
  opacity: 0.45; padding: 0 6px; flex-shrink: 0;
}
@media (max-width: 600px) {
  .wf-problem-cards { flex-direction: column; gap: 6px; }
  .wf-problem-card-arrow { transform: rotate(90deg); padding: 2px 0; }
}

.wf-process {
  background: var(--grey-bg);
  padding: 36px 40px;
  border-bottom: 1px solid var(--border);
}

/* Intro text classes across vertical pages */
.wf-problem-intro,
.wf-process-intro,
.wf-mobile-intro,
.wf-trust-intro,
.wf-benefits-intro {
  font-size: 16px; color: var(--grey-text);
  line-height: 1.65; margin-bottom: 20px; max-width: 600px;
}

/* Problem footnote callout box */
.wf-problem-footnote {
  margin-top: 16px; padding: 14px 18px;
  border-left: 3px solid var(--teal);
  background: var(--grey-bg); border-radius: 0 8px 8px 0;
  font-size: 15px; color: var(--grey-text); line-height: 1.6;
}

/* Comparison table (vertical page variant) */
.wf-compare {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 12px; margin-top: 14px;
}
.wf-compare-col-head {
  padding: 12px 18px;
  font-size: 13px; font-weight: 700;
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 1px;
}
.wf-compare-col-head.before { background: #FFF4F4; color: #B84040; border-bottom: 1px solid #FDDEDE; }
.wf-compare-col-head.after { background: rgba(0,196,180,0.08); color: #006F66; border-bottom: 1px solid rgba(0,196,180,0.2); }
.wf-compare-col-body { padding: 14px 16px; background: var(--grey-bg); }
.wf-compare-col.after .wf-compare-col-body { background: white; }
.wf-compare-item-dot-x { color: #C94444; font-weight: 700; flex-shrink: 0; }
.wf-compare-item-dot-ok { color: var(--teal); font-weight: 700; flex-shrink: 0; }

/* Mobile mockup card variants (vertical pages) */
.wf-mobile-card-screen {
  background: var(--navy); height: 100px;
  display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08);
}
.wf-mobile-card-screen::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle at 60% 30%, rgba(26,92,255,0.32) 0%, transparent 60%);
}
.wf-mobile-card-screen-icon {
  font-size: 34px;
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 16px;
  color: var(--white);
  opacity: 1;
  background: rgba(26,92,255,0.16);
  border: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 0 0 1px rgba(26,92,255,0.16), 0 12px 28px rgba(6,20,42,0.36);
  text-shadow: 0 0 24px rgba(26,92,255,0.55);
}
.wf-mobile-card-caption {
  padding: 12px 16px; font-size: 13px; color: var(--grey-text);
  font-style: italic; font-family: var(--mono);
  border-top: 1px solid var(--border); line-height: 1.4;
}

/* Trust section logo placeholders */
.wf-trust-logos {
  display: flex; gap: 10px; flex-wrap: wrap;
  align-items: center; margin-bottom: 18px;
}
.wf-logo-placeholder {
  background: var(--grey-bg); border: 1px solid var(--border);
  border-radius: 8px; padding: 10px 20px;
  font-size: 12px; font-weight: 700; color: var(--grey-text);
  font-family: var(--mono); letter-spacing: 0.5px; text-transform: uppercase;
}

/* Compliance chips container alias (verticals use .wf-compliance-chips) */
.wf-compliance-chips {
  display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px;
}

/* == 28. DEFINITION SECTION ====================================== */

.wf-definition {
  background: var(--grey-bg);
  padding: 36px 40px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.wf-def-box {
  background: white;
  border-radius: 10px;
  border: 1px solid var(--border);
  border-left: 4px solid var(--blue);
  padding: 18px 20px;
  font-size: 15px;
  color: var(--navy);
  line-height: 1.65;
  margin-bottom: 12px;
}
.wf-def-box + .wf-def-box { border-left-color: var(--teal); }
.wf-def-box.conpds { border-left-color: var(--teal); }
.wf-def-box.teal { border-left-color: var(--teal); }
.wf-def-box.teal-border { border-left-color: var(--teal); }
/* BEM-modifier teal callout used as a closing summary inside a section
   (e.g. .wf-compliance), where it follows a .wf-bullets list or a card
   grid with no bottom margin of its own. The extra top margin gives it
   the breathing room a callout needs so it doesn't visually fuse with
   the preceding content run. */
.wf-def-box--teal {
  margin-top: 20px;
  border-left-color: var(--teal);
}
.wf-def-box a { color: var(--blue); font-weight: 600; text-decoration: none; }
.wf-def-box .wf-bullets { margin-top: 10px; }
.wf-def-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-bottom: 12px;
}
.wf-def-grid .wf-def-box { margin-bottom: 0; }
.wf-def-lead {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--navy);
  line-height: 1.55;
}
.wf-def-events {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0 12px;
}
.wf-def-event {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  background: var(--grey-bg);
  border: 1px solid var(--border);
  color: var(--navy);
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}
.wf-def-caption {
  margin: 0;
  font-size: 14px;
  color: var(--grey-text);
  line-height: 1.55;
}
.wf-definition .wf-flow { margin: 14px 0 0; }
.wf-definition .wf-flow-num { box-shadow: 0 0 0 4px white; }
.wf-def-icon-grid { margin-top: 0; }
.wf-def-label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 6px;
  font-weight: 600;
}
.wf-def-label.teal { color: var(--teal); }

/* Shortcut chips — link variant for light surfaces (e.g. inside .wf-definition).
   .wf-comp-chip is white-on-translucent and only readable on the dark .wf-compliance
   background; use these chips for the same compact-link affordance on grey/white sections. */
.wf-shortcut-chips {
  display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px;
}
.wf-shortcut-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 999px;
  font-family: var(--mono);
  font-size: 13px;
  font-weight: 600;
  color: var(--navy);
  text-decoration: none;
  transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.wf-shortcut-chip:hover,
.wf-shortcut-chip:focus-visible {
  border-color: var(--blue);
  color: var(--blue);
  background: var(--blue-surface);
}

/* Shared text-based infographic block for category pages. It avoids raster
   artwork so the same content remains readable, crawlable, and responsive. */
.wf-infographic {
  background: linear-gradient(180deg, var(--blue-surface) 0%, var(--white) 100%);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 44px 40px;
}
.wf-infographic-head {
  text-align: center;
  max-width: 660px;
  margin: 0 auto 24px;
}
.wf-section-tagline {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--teal-text);
  margin-bottom: 8px;
}
.wf-infographic-head p {
  font-size: 15px;
  line-height: 1.65;
  color: var(--grey-text);
  margin: 0;
}
.wf-info-grid {
  display: grid;
  gap: 12px;
}
.wf-info-grid--sources,
.wf-info-grid--outputs {
  grid-template-columns: repeat(3, 1fr);
}
.wf-info-card {
  position: relative;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 18px 16px;
  box-shadow: 0 8px 22px rgba(11, 31, 58, 0.06);
}
.wf-info-icon {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: var(--blue-surface-strong);
  color: var(--blue);
  margin-bottom: 4px;
}
.wf-info-icon .material-icons { font-size: 22px; }
.wf-info-card strong,
.wf-info-step strong {
  font-size: 14px;
  color: var(--navy);
  line-height: 1.3;
}
.wf-info-card span,
.wf-info-step span {
  font-size: 13px;
  color: var(--grey-text);
  line-height: 1.5;
}
.wf-info-card--output {
  align-items: flex-start;
  text-align: left;
  border-left: 3px solid var(--teal);
}
.wf-info-core {
  margin: 16px auto;
  padding: 18px 20px;
  background: var(--navy);
  color: var(--white);
  border-radius: 16px;
  box-shadow: 0 12px 30px rgba(11, 31, 58, 0.18);
}
.wf-info-core--compact {
  max-width: 680px;
}
.wf-info-core-label {
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1.3px;
  text-transform: uppercase;
  color: var(--teal);
  text-align: center;
  margin-bottom: 12px;
}
.wf-info-core-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}
.wf-info-core-chips span {
  font-size: 12px;
  font-weight: 600;
  color: var(--white);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 999px;
  padding: 7px 12px;
}
.wf-info-timeline {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  position: relative;
}
.wf-info-timeline::before {
  content: "";
  position: absolute;
  top: 24px;
  left: 9%;
  right: 9%;
  height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-info-step {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 7px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px 10px 16px;
}
.wf-info-step-num {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--white);
  border: 2px solid var(--blue);
  color: var(--blue);
  font-family: var(--mono);
  font-size: 13px;
  font-weight: 700;
  box-shadow: 0 0 0 5px var(--blue-surface);
}
.wf-info-step:last-child .wf-info-step-num {
  background: var(--blue);
  color: var(--white);
}
.wf-infographic--context {
  padding-top: 40px;
  padding-bottom: 40px;
}
.wf-lane-graphic,
.wf-repair-spine,
.wf-facility-map {
  max-width: 920px;
  margin: 0 auto;
}
.wf-lane-graphic {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(210px, 0.78fr) minmax(0, 1fr);
  gap: 14px;
  align-items: center;
}
.wf-lane-graphic::before {
  content: "";
  position: absolute;
  left: 28%;
  right: 28%;
  top: 50%;
  height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-lane-group {
  display: grid;
  gap: 10px;
}
.wf-lane-node {
  position: relative;
  z-index: 1;
  min-width: 0;
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: 12px;
  row-gap: 4px;
  align-items: start;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px;
  box-shadow: 0 8px 22px rgba(11, 31, 58, 0.06);
}
.wf-lane-group--outputs .wf-lane-node {
  border-left: 3px solid var(--teal);
}
.wf-lane-icon,
.wf-facility-zone-icon {
  width: 40px;
  height: 40px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: var(--blue-surface-strong);
  color: var(--blue);
}
.wf-lane-icon {
  grid-row: 1 / span 2;
}
.wf-lane-icon .material-icons,
.wf-facility-zone-icon .material-icons {
  font-size: 21px;
}
.wf-lane-node strong,
.wf-repair-anchor strong,
.wf-repair-step strong,
.wf-facility-zone strong {
  color: var(--navy);
  font-size: 14px;
  line-height: 1.3;
}
.wf-lane-node span,
.wf-repair-anchor span,
.wf-repair-step span,
.wf-facility-zone span {
  color: var(--grey-text);
  font-size: 13px;
  line-height: 1.5;
}
.wf-lane-core {
  position: relative;
  z-index: 2;
  display: grid;
  gap: 8px;
  align-content: center;
  min-height: 180px;
  padding: 22px 18px;
  border-radius: 18px;
  background: var(--navy);
  color: var(--white);
  text-align: center;
  box-shadow: 0 16px 34px rgba(11, 31, 58, 0.20);
}
.wf-lane-core-label,
.wf-facility-layer-label {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.3px;
  text-transform: uppercase;
  color: var(--teal);
}
.wf-lane-core-id {
  font-family: var(--mono);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.8px;
}
.wf-lane-core-meta {
  max-width: 220px;
  margin: 0 auto;
  color: rgba(255, 255, 255, 0.78);
  font-size: 12px;
  line-height: 1.45;
}
.wf-repair-spine {
  display: grid;
  grid-template-columns: minmax(170px, 0.32fr) minmax(0, 1fr);
  gap: 18px;
  align-items: stretch;
}
.wf-repair-anchor {
  display: grid;
  align-content: center;
  justify-items: start;
  gap: 7px;
  padding: 20px;
  border-radius: 16px;
  background: var(--white);
  border: 1px solid var(--border);
  border-left: 4px solid var(--teal);
  box-shadow: 0 8px 22px rgba(11, 31, 58, 0.06);
}
.wf-repair-anchor .material-icons {
  width: 42px;
  height: 42px;
  border-radius: 13px;
  display: grid;
  place-items: center;
  background: var(--blue-surface-strong);
  color: var(--blue);
  font-size: 22px;
}
.wf-repair-steps {
  position: relative;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  align-items: stretch;
}
.wf-repair-steps::before {
  content: "";
  position: absolute;
  top: 25px;
  left: 8%;
  right: 8%;
  height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-repair-step {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  text-align: center;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px 10px 16px;
}
.wf-repair-step-num {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--white);
  border: 2px solid var(--blue);
  color: var(--blue);
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 700;
  box-shadow: 0 0 0 5px var(--blue-surface);
}
.wf-repair-step:last-child .wf-repair-step-num {
  background: var(--blue);
  color: var(--white);
}
.wf-facility-map {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  position: relative;
}
.wf-facility-zone {
  position: relative;
  min-width: 0;
  min-height: 178px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 18px;
  box-shadow: 0 8px 22px rgba(11, 31, 58, 0.06);
}
.wf-facility-zone::after {
  content: "";
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 18px;
  height: 4px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
  opacity: 0.26;
}
.wf-facility-layer {
  grid-column: 1 / -1;
  margin-top: 12px;
  padding: 18px 20px;
  border-radius: 16px;
  background: var(--navy);
  box-shadow: 0 14px 30px rgba(11, 31, 58, 0.18);
}
.wf-facility-layer-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.wf-facility-layer-chips span {
  color: var(--white);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 999px;
  padding: 7px 12px;
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 600;
}

@media (min-width: 768px) {
  .wf-def-grid { grid-template-columns: 1.05fr 0.95fr; }
}

/* == 29. PROBLEM SECTION ADDITIONS =============================== */

.wf-metric-note {
  font-size: 14px;
  color: var(--grey-text);
  font-family: var(--mono);
  background: rgba(26,92,255,0.05);
  border: 1px solid rgba(26,92,255,0.12);
  border-radius: 6px;
  padding: 16px 20px;
  margin-top: 14px;
  line-height: 1.55;
}

/* -- Camera info infographic (tracker tech specs) -- */
.wf-camera-info {
  background: rgba(26,92,255,0.04);
  border: 1px solid rgba(26,92,255,0.12);
  border-radius: 10px;
  padding: 24px;
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.wf-camera-info-row {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 15px;
  color: var(--navy);
  font-weight: 500;
  line-height: 1.5;
}
.wf-camera-info-row .wf-icon-pill {
  background: rgba(26,92,255,0.10);
  color: var(--blue);
}
.wf-brand-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.wf-brand-chip {
  background: white;
  border: 1px solid rgba(26,92,255,0.18);
  color: var(--navy);
  font-size: 13px;
  font-weight: 600;
  padding: 6px 14px;
  border-radius: 20px;
  font-family: var(--mono);
  letter-spacing: 0.3px;
}
.wf-brand-chip--any {
  background: rgba(26,92,255,0.07);
  border-color: rgba(26,92,255,0.25);
  color: var(--blue);
}
.wf-camera-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.wf-camera-card {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  background: white;
  border: 1px solid rgba(26,92,255,0.10);
  border-radius: 8px;
  padding: 16px;
  font-size: 14px;
  color: var(--navy);
  line-height: 1.5;
}
.wf-camera-card .material-icons {
  font-size: 22px;
  color: var(--blue);
  flex-shrink: 0;
  margin-top: 1px;
}
@media (max-width: 600px) {
  .wf-camera-cards { grid-template-columns: 1fr; }
  .wf-camera-info { padding: 18px; }
}

/* -- Facility chips (def-box inline) -- */
.wf-facility-chips {
  display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px;
}
.wf-facility-chip {
  background: white; border: 1px solid var(--border);
  color: var(--navy); font-size: 13px; font-weight: 600;
  padding: 5px 12px; border-radius: 20px; font-family: var(--mono);
}

/* -- Pipeline infographic -- */
.wf-pipeline-wrapper {
  display: flex; align-items: stretch; gap: 0;
  margin: 16px 0 12px;
}
.wf-pipeline-group {
  flex: 1; min-width: 0; display: flex; flex-direction: column;
  background: white; border-radius: 12px;
  border: 1px solid var(--border);
  padding: 20px 18px 18px;
}
.wf-pipeline-label {
  font-family: var(--mono); font-size: 11px; font-weight: 700;
  letter-spacing: 1.5px; text-transform: uppercase;
  color: var(--blue); margin-bottom: 14px;
}
.wf-pipeline-label.teal { color: var(--teal); }
.wf-pipeline-steps {
  display: flex; align-items: stretch; gap: 0;
  flex: 1;
}
.wf-pipeline-step {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; align-items: center;
  text-align: center; gap: 6px;
  padding: 14px 10px; border-radius: 10px;
  background: rgba(26,92,255,0.04);
  border: 1px solid rgba(26,92,255,0.10);
}
.wf-pipeline-step.teal {
  background: rgba(0,196,180,0.05);
  border-color: rgba(0,196,180,0.15);
}
.wf-pipeline-step .material-icons {
  font-size: 26px; color: var(--blue);
}
.wf-pipeline-step.teal .material-icons { color: var(--teal); }
.wf-pipeline-step strong {
  font-size: 13px; color: var(--navy); white-space: nowrap;
}
.wf-pipeline-step > span:last-child {
  font-size: 12px; color: var(--grey-text); line-height: 1.45;
}
.wf-pipeline-arrow {
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; color: var(--grey-text); padding: 0 4px;
  flex-shrink: 0; align-self: center;
  font-weight: 700; opacity: 0.5;
}
.wf-pipeline-bridge {
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; color: var(--blue); padding: 0 8px;
  flex-shrink: 0; align-self: center;
  font-weight: 700; margin-top: 28px;
}

/* -- Feature cards (4-col grid) -- */
.wf-feature-cards {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  margin-top: 4px;
}
.wf-feature-card {
  display: flex; align-items: flex-start; gap: 10px;
  background: white; border: 1px solid var(--border);
  border-radius: 8px; padding: 14px;
}
.wf-feature-card .material-icons {
  font-size: 22px; color: var(--blue); flex-shrink: 0; margin-top: 1px;
}
.wf-feature-card div { display: flex; flex-direction: column; gap: 2px; }
.wf-feature-card strong {
  font-size: 13px; color: var(--navy); line-height: 1.3;
}
.wf-feature-card span {
  font-size: 12px; color: var(--grey-text); line-height: 1.4;
}

/* -- Pipeline responsive -- */
@media (max-width: 900px) {
  .wf-pipeline-wrapper { flex-direction: column; gap: 0; }
  .wf-pipeline-bridge {
    transform: rotate(90deg); margin: -4px auto; padding: 0;
  }
  .wf-feature-cards { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
  .wf-pipeline-steps { flex-direction: column; gap: 6px; }
  .wf-pipeline-arrow { transform: rotate(90deg); padding: 2px 0; }
  .wf-pipeline-group { padding: 16px 12px 14px; }
  .wf-feature-cards { grid-template-columns: 1fr; }
}

.wf-cascade-intro {
  margin: 0 0 12px;
  font-weight: 600;
  color: var(--navy);
  font-size: 15px;
}
.wf-cascade {
  list-style: none;
  counter-reset: cascade;
  margin: 0;
  padding: 0 0 0 8px;
}
.wf-cascade li {
  counter-increment: cascade;
  position: relative;
  padding: 6px 0 6px 40px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--navy);
}
.wf-cascade li::before {
  content: counter(cascade);
  position: absolute;
  left: 0;
  top: 6px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--blue);
  color: var(--white);
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.wf-cascade li + li::after {
  content: "";
  position: absolute;
  left: 11px;
  top: -6px;
  width: 2px;
  height: 12px;
  background: rgba(26,92,255,0.25);
}
.wf-cascade-who {
  font-weight: 600;
  color: var(--blue);
}
.wf-cascade-coda {
  margin: 14px 0 0;
  padding-top: 12px;
  border-top: 1px solid rgba(26,92,255,0.12);
  font-size: 13px;
  line-height: 1.6;
}
.wf-col-box.red-border { border-left: 3px solid var(--danger); }
.wf-col-box.green-border { border-left: 3px solid var(--teal); }
.wf-col-box.problem-col { border-top: 3px solid var(--danger); }
.wf-col-box.problem-col h4 { color: var(--danger); }
.wf-col-box.problem-col .wf-bullet-dot { background: var(--danger); }
.wf-col-box.solution-col { border-top: 3px solid var(--teal); }
.wf-before-after {
  margin-top: 16px;
  font-size: 15px;
  line-height: 1.65;
  color: var(--navy);
}
.wf-before-after strong { color: var(--blue); }
.wf-before-after .ba-label.ba-after { margin-top: 14px; }
.wf-section-sub {
  font-size: 15px;
  color: var(--grey-text);
  margin-bottom: 16px;
  line-height: 1.65;
}
.wf-stat-callout {
  background: rgba(26,92,255,0.05);
  border: 1px solid rgba(26,92,255,0.15);
  border-radius: 10px;
  padding: 16px 20px;
  margin-top: 16px;
  font-size: 15px;
  color: var(--navy);
  line-height: 1.6;
}
.wf-stat-callout strong { color: var(--blue); }
.wf-problem-metric {
  background: rgba(26,92,255,0.06);
  border: 1px solid rgba(26,92,255,0.15);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  padding: 12px 16px;
  font-size: 15px;
  color: var(--navy);
  line-height: 1.6;
  margin-bottom: 16px;
  font-style: italic;
}

/* == 30. PROCESS STEPS =========================================== */

.wf-steps {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 4px;
  margin-top: 16px;
  position: relative;
}
.wf-steps::before {
  content: '';
  position: absolute;
  top: 18px;
  left: 30px;
  right: 30px;
  height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
  z-index: 0;
}
.wf-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  position: relative;
  z-index: 1;
}
.wf-step-num {
  width: 36px;
  height: 36px;
  background: white;
  border: 2px solid var(--blue);
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 11px;
  font-weight: 700;
  color: var(--blue);
  font-family: var(--mono);
  margin-bottom: 8px;
  box-shadow: 0 0 0 4px var(--grey-bg);
}
.wf-step:last-child .wf-step-num { background: var(--blue); color: white; }
.wf-step-label { font-size: 13px; font-weight: 600; color: var(--navy); line-height: 1.3; }
.wf-step-sub { font-size: 12px; color: var(--grey-text); margin-top: 2px; line-height: 1.3; }

/* == 31. VERTICAL WORKFLOW ======================================= */

.wf-vertical {
  padding: 36px 40px;
  background: white;
  border-bottom: 1px solid var(--border);
}
.wf-vertical-intro {
  font-size: 15px;
  color: var(--grey-text);
  line-height: 1.6;
  margin-bottom: 16px;
  margin-top: 8px;
}
.wf-vertical-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 16px;
}
.wf-vertical-grid--stacked {
  grid-template-columns: 1fr;
  margin-top: 14px;
}
.wf-vertical-card {
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 20px 18px;
  background: var(--grey-bg);
  position: relative;
  overflow: hidden;
}
.wf-vertical-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}
.wf-vertical-card-tag {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--blue);
  font-weight: 600;
  margin-bottom: 8px;
}
.wf-vertical-card h3 { font-size: 16px; font-weight: 700; color: var(--navy); margin-bottom: 10px; line-height: 1.3; }
.wf-vertical-card h4 { font-size: 15px; font-weight: 600; color: var(--navy); margin-bottom: 8px; }
.wf-vertical-card .wf-bullets { gap: 5px; }
.wf-vertical-card .wf-bullet { font-size: 14px; }
.wf-section-divider {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--grey-text);
  margin: 20px 0 14px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.wf-section-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--border);
}

/* == 32. ECOSYSTEM ADDITIONS ===================================== */

.wf-eco-product {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--teal);
  font-weight: 600;
  margin-bottom: 6px;
}
.wf-eco-card.active {
  border-color: var(--teal);
  background: rgba(0,196,180,0.10);
}
.wf-eco-card.active .wf-eco-product { color: var(--white); }
a.wf-eco-card { text-decoration: none; display: block; transition: border-color 0.2s, background 0.2s; }
a.wf-eco-card:hover { border-color: rgba(255,255,255,0.3); background: rgba(255,255,255,0.10); }
.wf-eco-card h3 { font-size: 16px; font-weight: 700; color: var(--white); margin-bottom: 6px; }
.wf-eco-card p { font-size: 14px; color: rgba(255,255,255,0.6); line-height: 1.55; }
.wf-eco-connector {
  text-align: center;
  font-size: 14px;
  color: rgba(255,255,255,0.55);
  line-height: 1.6;
  max-width: 600px;
  margin: 16px auto 0;
  font-style: italic;
}

/* == 33. INTEGRATIONS ============================================ */

.wf-integrations {
  padding: 28px 40px;
  background: white;
  border-bottom: 1px solid var(--border);
}
.wf-int-strip {
  display: flex;
  gap: 8px;
  margin-top: 14px;
  flex-wrap: wrap;
}
.wf-int-badge {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 8px 16px;
  font-family: var(--mono);
  font-size: 13px;
  font-weight: 600;
  color: var(--navy);
  display: flex;
  align-items: center;
  gap: 6px;
}
.wf-int-badge::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--blue);
  flex-shrink: 0;
}
.wf-int-badge.api::before { background: var(--teal); }
.wf-int-note {
  font-size: 14px;
  color: var(--grey-text);
  margin-top: 12px;
  line-height: 1.6;
  font-family: var(--mono);
  background: rgba(26,92,255,0.04);
  border: 1px solid rgba(26,92,255,0.1);
  border-radius: 6px;
  padding: 10px 14px;
}

.wf-int-flow {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 0;
  margin: 24px 0 28px;
}
.wf-int-flow-node {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 20px 16px;
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  min-width: 170px;
  max-width: 210px;
  flex: 1;
}
.wf-int-flow-node-icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--navy);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 10px;
  flex-shrink: 0;
}
.wf-int-flow-node-icon .material-icons { font-size: 22px; }
.wf-int-flow-node-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: 4px;
}
.wf-int-flow-node-sub {
  font-size: 12px;
  color: var(--grey-text);
  line-height: 1.4;
}
.wf-int-flow-arrow {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
  align-self: center;
  min-width: 56px;
}
.wf-int-flow-arrow-line {
  display: flex;
  align-items: center;
  gap: 0;
  color: var(--teal);
}
.wf-int-flow-arrow-line::before {
  content: '';
  display: block;
  width: 28px;
  height: 2px;
  background: var(--teal);
}
.wf-int-flow-arrow-line::after {
  content: '';
  display: block;
  width: 0;
  height: 0;
  border-top: 5px solid transparent;
  border-bottom: 5px solid transparent;
  border-left: 8px solid var(--teal);
}
.wf-int-flow-arrow-label {
  font-size: 10px;
  font-weight: 600;
  color: var(--grey-text);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 4px;
  white-space: nowrap;
}

.wf-int-detail {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-top: 20px;
}
.wf-int-detail-card {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 18px 16px;
}
.wf-int-detail-card-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.wf-int-detail-card-head .material-icons {
  font-size: 20px;
  color: var(--teal);
}
.wf-int-detail-card-head strong {
  font-size: 14px;
  font-weight: 600;
  color: var(--navy);
}
.wf-int-detail-card p {
  font-size: 13px;
  color: var(--grey-text);
  line-height: 1.5;
}
.wf-int-footnote {
  margin-top: 18px;
  font-size: 13px;
  color: var(--grey-text);
  text-align: center;
  padding: 10px 16px;
  background: rgba(0,196,180,0.06);
  border-radius: 6px;
  border: 1px solid rgba(0,196,180,0.15);
}

@media (max-width: 767px) {
  .wf-int-flow {
    flex-direction: column;
    align-items: center;
  }
  .wf-int-flow-node { min-width: 0; max-width: 100%; width: 100%; }
  .wf-int-flow-arrow { padding: 6px 0; }
  .wf-int-flow-arrow-line::before { width: 2px; height: 20px; }
  .wf-int-flow-arrow-line {
    flex-direction: column;
  }
  .wf-int-flow-arrow-line::after {
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 8px solid var(--teal);
    border-bottom: none;
  }
  .wf-int-detail { grid-template-columns: 1fr; }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .wf-int-detail { grid-template-columns: repeat(2, 1fr); }
  .wf-int-flow-node { min-width: 140px; }
}

/* == 34. CALLOUT (Tracker two-path section) ====================== */

.wf-callout {
  padding: 36px 40px;
  background: white;
  border-bottom: 1px solid var(--border);
}
.wf-callout-box {
  background: linear-gradient(135deg, rgba(11,31,58,0.03) 0%, rgba(26,92,255,0.05) 100%);
  border: 1px solid rgba(26,92,255,0.2);
  border-radius: 14px;
  padding: 28px 32px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: start;
  margin-top: 14px;
}
.wf-callout-label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
  font-weight: 600;
  margin-bottom: 8px;
}
.wf-callout-box h3 { font-size: 18px; font-weight: 700; color: var(--navy); margin-bottom: 10px; line-height: 1.3; letter-spacing: -0.4px; }
.wf-callout-box p { font-size: 14px; color: var(--grey-text); line-height: 1.65; margin-bottom: 10px; }
.wf-callout-note {
  background: rgba(26,92,255,0.06);
  border: 1px solid rgba(26,92,255,0.15);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 14px;
  color: var(--navy);
  line-height: 1.55;
  margin-top: 10px;
}
.wf-callout-note strong { color: var(--blue); }
.wf-callout-features { display: flex; flex-direction: column; gap: 8px; }
.wf-callout-feature {
  background: white;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 14px;
  color: var(--navy);
  line-height: 1.5;
}
.wf-callout-feature strong { display: block; font-size: 14px; font-weight: 600; margin-bottom: 2px; color: var(--navy); }
.wf-callout-cta {
  display: inline-block;
  background: var(--blue);
  color: white;
  font-size: 14px;
  font-weight: 600;
  padding: 9px 18px;
  border-radius: 7px;
  text-decoration: none;
  margin-top: 14px;
}
.wf-callout-two-paths {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 4px;
}
.wf-callout-path {
  border-radius: 14px;
  padding: 24px;
  display: flex;
  flex-direction: column;
}
.wf-callout-path-open {
  background: var(--grey-bg);
  border: 1px solid var(--border);
}
.wf-callout-path-autogate {
  background: linear-gradient(135deg, rgba(11,31,58,0.03) 0%, rgba(26,92,255,0.06) 100%);
  border: 1px solid rgba(26,92,255,0.25);
}
.wf-callout-path h3 { font-size: 17px; font-weight: 700; color: var(--navy); margin-bottom: 8px; line-height: 1.3; letter-spacing: -0.3px; }
.wf-callout-path p { font-size: 14px; color: var(--grey-text); line-height: 1.65; }
.wf-callout-cta-outline {
  display: inline-block;
  border: 1.5px solid var(--blue);
  color: var(--blue);
  font-size: 14px;
  font-weight: 600;
  padding: 9px 18px;
  border-radius: 7px;
  text-decoration: none;
  margin-top: 14px;
}

/* == 35. SPEC TABLE (Tracker) ==================================== */

.wf-spec-group {
  background: white;
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
}
.wf-spec-group-title {
  background: var(--navy);
  color: rgba(255,255,255,0.7);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  padding: 8px 14px;
}
.wf-spec-row {
  display: grid;
  grid-template-columns: 120px 1fr;
  border-bottom: 1px solid var(--border);
  font-size: 14px;
  line-height: 1.4;
}
.wf-spec-row:last-child { border-bottom: none; }
.wf-spec-row .wf-spec-label {
  padding: 8px 14px;
  font-weight: 600;
  color: var(--navy);
  background: rgba(242,245,249,0.6);
  border-right: 1px solid var(--border);
  font-size: 13px;
  text-transform: none;
  letter-spacing: normal;
  font-family: var(--font);
  margin-bottom: 0;
}
.wf-spec-value {
  padding: 8px 14px;
  color: var(--grey-text);
}

/* == 36. USE CASES & COMPARISON TABLE ============================ */

.wf-usecases {
  background: white;
  padding: 36px 40px;
  border-bottom: 1px solid var(--border);
}
.wf-compare-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 16px;
  font-size: 14px;
}
.wf-compare-table th {
  background: var(--navy);
  color: white;
  padding: 10px 14px;
  text-align: left;
  font-weight: 600;
  font-size: 14px;
}
.wf-compare-table th:first-child { border-radius: 8px 0 0 0; }
.wf-compare-table th:last-child { border-radius: 0 8px 0 0; color: var(--teal); }
.wf-compare-table td {
  padding: 9px 14px;
  border-bottom: 1px solid var(--border);
  color: var(--navy);
  line-height: 1.5;
}
.wf-compare-table tr:nth-child(even) td { background: var(--grey-bg); }
.wf-compare-table tr:last-child td { border-bottom: none; }
.wf-compare-table td:first-child { color: var(--grey-text); }
.wf-compare-table td:last-child { font-weight: 500; }

/* == 37. WORKFLOW CARDS (articles) =============================== */

.wf-workflow-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 14px;
}
.wf-workflow-card {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 16px 18px;
}
.wf-workflow-icon { font-size: 18px; margin-bottom: 7px; }
.wf-workflow-card-tag {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 6px;
  font-weight: 600;
}
.wf-workflow-card h4 { font-size: 15px; font-weight: 600; color: var(--navy); margin-bottom: 5px; line-height: 1.35; }
.wf-workflow-card p { font-size: 14px; color: var(--grey-text); line-height: 1.55; }
.wf-workflow-card a { color: var(--blue); font-weight: 600; text-decoration: none; }

/* == 38. CTA COMPARISON TABLE ==================================== */

.wf-cta-compare {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin: 20px auto;
  max-width: 720px;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px;
  overflow: hidden;
  text-align: left;
}
.wf-cta-compare-header {
  padding: 8px 16px;
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.2px;
  text-transform: uppercase;
}
.wf-cta-compare-header.bad { background: rgba(201,68,68,0.2); color: #F4A0A0; border-bottom: 1px solid rgba(201,68,68,0.25); }
.wf-cta-compare-header.good { background: rgba(0,196,180,0.15); color: var(--teal); border-bottom: 1px solid rgba(0,196,180,0.2); border-left: 1px solid rgba(255,255,255,0.08); }
.wf-cta-compare-col { display: flex; flex-direction: column; }
.wf-cta-compare-col.good-col { border-left: 1px solid rgba(255,255,255,0.08); }
.wf-cta-compare-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 10px 16px;
  font-size: 13px;
  line-height: 1.5;
  color: rgba(255,255,255,0.7);
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.wf-cta-compare-row:last-child { border-bottom: none; }
.wf-cta-compare-row strong { display: block; font-size: 13px; font-weight: 600; color: rgba(255,255,255,0.92); margin-bottom: 2px; }
.wf-cta-compare-row .dot-x { color: #E07070; font-weight: 700; flex-shrink: 0; margin-top: 1px; }
.wf-cta-compare-row .dot-ok { color: var(--teal); font-weight: 700; flex-shrink: 0; margin-top: 1px; }

/* == 39. CTA PATHS (Tracker) ===================================== */

.wf-cta-paths {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin: 20px auto;
  max-width: 560px;
  text-align: left;
}
.wf-cta-path {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px;
  padding: 16px 18px;
  display: flex; flex-direction: column;
}
.wf-cta-path-label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--teal);
  font-weight: 600;
  margin-bottom: 6px;
}
.wf-cta-path h4 { font-size: 15px; font-weight: 600; color: white; margin-bottom: 5px; }
.wf-cta-path p { font-size: 13px; color: rgba(255,255,255,0.5); line-height: 1.5; margin-bottom: 10px; flex-grow: 1; }
.wf-cta-path a {
  display: inline-block;
  font-size: 13px;
  font-weight: 600;
  padding: 6px 14px;
  border-radius: 6px;
  text-decoration: none;
  align-self: center;
}
.wf-cta-path-btn-primary { background: var(--blue); color: white; }
.wf-cta-path-btn-outline { border: 1px solid rgba(255,255,255,0.3); color: rgba(255,255,255,0.8); }

/* == 40. CTA CONSEQUENCES ======================================== */

.wf-final-cta .wf-cta-intro {
  font-size: 15px;
  color: rgba(255,255,255,0.6);
  margin-bottom: 20px;
  line-height: 1.6;
  max-width: 520px;
  margin-left: auto;
  margin-right: auto;
}
.wf-final-cta .wf-final-intro {
  font-size: 15px;
  color: rgba(255,255,255,0.65);
  margin-bottom: 24px;
  line-height: 1.65;
  max-width: 560px;
  margin-left: auto;
  margin-right: auto;
}
.wf-cta-consequences {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  padding: 18px 22px;
  margin: 0 auto 20px;
  max-width: 560px;
  text-align: left;
}
.wf-cta-consequences h4 {
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.45);
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 10px;
}
.wf-cta-con-item {
  font-size: 14px;
  color: rgba(255,255,255,0.68);
  line-height: 1.6;
  margin-bottom: 7px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
  text-align: left;
}
.wf-cta-con-item:last-child { margin-bottom: 0; }
.wf-cta-x { color: #FF6B6B; flex-shrink: 0; font-weight: 700; font-size: 14px; margin-top: 1px; }
.wf-cta-resolution {
  font-size: 15px;
  color: rgba(255,255,255,0.5);
  margin-bottom: 20px;
  line-height: 1.6;
  max-width: 500px;
  margin-left: auto;
  margin-right: auto;
}

/* wf-consequences-box: alias used in several article CTA sections */
.wf-consequences-box {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  padding: 18px 22px;
  margin: 0 auto 20px;
  max-width: 560px;
  text-align: left;
}
.wf-consequences-title {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.45);
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 10px;
}
.wf-consequences-box .wf-bullet {
  color: rgba(255,255,255,0.68);
  font-size: 14px;
  line-height: 1.6;
}
.wf-consequences-box .wf-bullet-cross { color: #FF6B6B; }

/* == 41. FINAL CONSEQUENCES BLOCK (article variant) ============== */

.wf-final-consequences {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px;
  padding: 20px 24px;
  margin: 16px auto 20px;
  max-width: 600px;
  text-align: left;
}
.wf-final-consequences-label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: rgba(255,255,255,0.4);
  margin-bottom: 14px;
}
.wf-final-consequences-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.wf-consequence-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 14px;
  color: rgba(255,255,255,0.65);
  line-height: 1.55;
}
.wf-consequence-icon {
  color: #FF6B6B;
  font-weight: 700;
  font-size: 14px;
  flex-shrink: 0;
  margin-top: 1px;
  font-family: var(--mono);
}
.wf-consequence-item strong { color: rgba(255,255,255,0.9); }

/* == 42. CONSEQUENCE BLOCK (damage article variant) ============== */

.consequence-block {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 12px;
  padding: 20px 24px;
  margin: 20px auto 28px;
  text-align: left;
  max-width: 600px;
}
.consequence-block h4 {
  font-size: 12px;
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,0.45);
  margin-bottom: 14px;
}
.consequence-item {
  font-size: 14px;
  color: rgba(255,255,255,0.7);
  line-height: 1.6;
  margin-bottom: 8px;
}
.consequence-item:last-child { margin-bottom: 0; }
.consequence-item .c-label { color: #FF7A8A; font-weight: 600; }

/* == 43. TEAL OUTLINE BUTTON ==================================== */

.wf-btn-outline-teal {
  border: 1.5px solid rgba(0,196,180,0.5);
  color: var(--teal);
  font-size: 15px;
  font-weight: 500;
  padding: 14px 30px;
  border-radius: 8px;
  text-decoration: none;
  display: inline-block;
  cursor: pointer;
}

/* == 44. CHAIN REACTION INFOGRAPHIC =============================== */

/* Port stat cards */
.wf-port-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-top: 20px;
}
.wf-port-card {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 18px 16px;
  text-align: center;
}
.wf-port-card .port-volume {
  font-size: 22px;
  font-weight: 700;
  color: var(--blue);
  display: block;
  margin-bottom: 2px;
  letter-spacing: -0.5px;
}
.wf-port-card .port-unit {
  font-size: 10px;
  color: var(--grey-text);
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.8px;
  display: block;
  margin-bottom: 8px;
}
.wf-port-card .port-name {
  font-size: 12px;
  font-weight: 600;
  color: var(--navy);
  display: block;
  margin-bottom: 2px;
}
.wf-port-card .port-region {
  font-size: 10px;
  color: var(--grey-text);
  display: block;
}

.wf-stat-callout--spaced { margin-top: 12px; }

/* Chain reaction steps */
.wf-chain-steps {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: 22px;
  position: relative;
}
.wf-chain-steps::before {
  content: '';
  position: absolute;
  top: 20px;
  bottom: 20px;
  left: 19px;
  width: 2px;
  background: linear-gradient(180deg, #FF6B6B 0%, #FF6B6B 83%, var(--teal) 100%);
  z-index: 0;
}
.wf-chain-step {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  position: relative;
  z-index: 1;
  padding-bottom: 6px;
}
.wf-chain-num {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 700;
  font-family: var(--mono);
  flex-shrink: 0;
  box-shadow: 0 0 0 4px var(--grey-bg);
}
.wf-chain-num-fail {
  background: #FFF0F0;
  border: 2px solid #FF6B6B;
  color: #CC3333;
}
.wf-chain-num-ok {
  background: #E8FBF9;
  border: 2px solid var(--teal);
  color: #006F66;
}
.wf-chain-body {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 16px 20px;
  flex: 1;
  margin-bottom: 10px;
}
.wf-chain-body h4 {
  font-size: 14px;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: 4px;
}
.wf-chain-body p {
  font-size: 13px;
  color: var(--grey-text);
  line-height: 1.55;
}
.chain-impacts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.chain-impact-tag {
  font-size: 10px;
  font-family: var(--mono);
  letter-spacing: 0.5px;
  padding: 3px 10px;
  border-radius: 5px;
  background: #FFF5F5;
  color: #CC3333;
  border: 1px solid #FFD4D4;
}
.chain-impact-tag-ok {
  background: #E8FBF9;
  color: #006F66;
  border: 1px solid rgba(0,196,180,0.3);
}

/* Cost multiplier cards */
.wf-cost-section {
  padding: 44px 40px;
  background: var(--white);
  border-bottom: 1px solid var(--border);
}
.wf-cost-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-top: 18px;
}
.wf-cost-card {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 20px 18px;
  text-align: center;
}
.wf-cost-card .cost-icon {
  font-size: 24px;
  display: block;
  margin-bottom: 8px;
}
.wf-cost-card h5 {
  font-size: 13px;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: 4px;
}
.wf-cost-card p {
  font-size: 12px;
  color: var(--grey-text);
  line-height: 1.5;
}

.wf-final-note {
  font-size: 11px;
  color: rgba(255,255,255,0.3);
  margin-top: 14px;
  font-style: italic;
  position: relative;
  z-index: 1;
}

@media (max-width: 767px) {
  .wf-port-grid { grid-template-columns: 1fr 1fr; }
  .wf-cost-grid { grid-template-columns: 1fr; }
  .wf-cost-section { padding-left: 24px; padding-right: 24px; }
  .wf-chain-steps::before { left: 19px; }
}

/* == 50. CONTACT FORM ============================================ */

.wf-hero-compact { padding: 60px 56px 40px; }

.wf-contact {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  padding: 40px 56px 56px;
  align-items: start;
}

/* Card shell for embedded + page forms (aligns with wireframe sections) */
.wf-form-surface {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 22px 24px 24px;
  box-shadow: 0 2px 14px rgba(11, 31, 58, 0.06);
}
.wf-form-surface--no-head {
  padding-top: 20px;
}
.wf-form-surface-head {
  margin-bottom: 18px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
}
.wf-form-badge {
  display: inline-block;
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--teal);
  background: var(--teal-dim);
  border: 1px solid rgba(0, 196, 180, 0.22);
  border-radius: 20px;
  padding: 4px 12px;
}
.wf-form-surface-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--navy);
  letter-spacing: -0.02em;
  line-height: 1.3;
  margin: 0;
}
.wf-contact-form .wf-form-surface-title {
  font-size: 17px;
}

/* CTA button row in hero / final band — opens global contact modal */
.wf-hero-forms {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 12px;
  width: 100%;
  max-width: 640px;
  margin: 12px auto 0;
}
@media (min-width: 768px) {
  .wf-hero-forms {
    gap: 14px;
  }
}

/* Secondary modal CTAs on dark hero / final band — high contrast, clearly clickable */
.wf-hero .wf-hero-forms .wf-btn-outline,
.wf-final-cta .wf-hero-forms .wf-btn-outline {
  background: rgba(255, 255, 255, 0.14);
  border: 2px solid rgba(255, 255, 255, 0.55);
  color: #ffffff;
  font-weight: 600;
  box-shadow:
    0 2px 14px rgba(0, 0, 0, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.14);
  transition:
    background 0.15s ease,
    border-color 0.15s ease,
    box-shadow 0.15s ease,
    transform 0.15s ease;
}
.wf-hero .wf-hero-forms .wf-btn-outline:hover,
.wf-final-cta .wf-hero-forms .wf-btn-outline:hover {
  background: rgba(255, 255, 255, 0.24);
  border-color: rgba(255, 255, 255, 0.9);
  color: #ffffff;
  box-shadow:
    0 4px 20px rgba(0, 0, 0, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
  transform: translateY(-1px);
}
.wf-hero .wf-hero-forms .wf-btn-outline:focus-visible,
.wf-final-cta .wf-hero-forms .wf-btn-outline:focus-visible {
  outline: none;
  box-shadow:
    0 0 0 3px rgba(0, 196, 180, 0.45),
    0 2px 14px rgba(0, 0, 0, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

/* Audit v4.0 C8 — link-style secondary CTA on dark hero (replaces button outline when the page only deserves 1 primary + 1 secondary link) */
.wf-hero .wf-hero-forms .wf-hero-link,
.wf-final-cta .wf-hero-forms .wf-hero-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 8px;
  color: rgba(255, 255, 255, 0.92);
  font-size: 15px;
  font-weight: 500;
  text-decoration: underline;
  text-decoration-color: rgba(255, 255, 255, 0.45);
  text-underline-offset: 4px;
  transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
.wf-hero .wf-hero-forms .wf-hero-link:hover,
.wf-final-cta .wf-hero-forms .wf-hero-link:hover {
  color: #ffffff;
  text-decoration-color: rgba(255, 255, 255, 0.9);
}
.wf-hero .wf-hero-forms .wf-hero-link:focus-visible,
.wf-final-cta .wf-hero-forms .wf-hero-link:focus-visible {
  outline: 2px solid rgba(0, 196, 180, 0.85);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Primary pair in the same row — slightly stronger presence */
.wf-hero .wf-hero-forms .wf-btn-primary,
.wf-final-cta .wf-hero-forms .wf-btn-primary {
  box-shadow: 0 2px 18px rgba(26, 92, 255, 0.42);
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.wf-hero .wf-hero-forms .wf-btn-primary:hover,
.wf-final-cta .wf-hero-forms .wf-btn-primary:hover {
  box-shadow: 0 4px 24px rgba(26, 92, 255, 0.5);
  transform: translateY(-1px);
}
.wf-hero .wf-hero-forms .wf-btn-primary:focus-visible,
.wf-final-cta .wf-hero-forms .wf-btn-primary:focus-visible {
  outline: none;
  box-shadow:
    0 0 0 3px rgba(0, 196, 180, 0.45),
    0 2px 18px rgba(26, 92, 255, 0.42);
}

.wf-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
.wf-form-row-full { grid-template-columns: 1fr; }

.wf-form-field { display: flex; flex-direction: column; gap: 6px; }
.wf-form-field label {
  font-size: 13px; font-weight: 600; letter-spacing: 0.02em;
  color: var(--navy);
}
.wf-form-req { color: #c00; }
.wf-form-optional {
  font-weight: 400;
  color: var(--grey-text);
  font-size: 12px;
}
.wf-form-field input,
.wf-form-field textarea {
  font-family: var(--font);
  font-size: 15px;
  color: var(--navy);
  background: var(--white);
  border: 1px solid var(--border);
  padding: 12px 14px;
  border-radius: 8px;
  outline: none;
  width: 100%;
  resize: vertical;
  min-height: 0;
  transition: border-color var(--transition), box-shadow var(--transition);
}
.wf-form-field input:focus,
.wf-form-field textarea:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px var(--teal-dim);
}
.wf-form-field textarea { min-height: 128px; }

.wf-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.wf-phone-input-row {
  position: relative;
  display: flex;
  align-items: stretch;
  width: 100%;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--white);
  transition: border-color var(--transition), box-shadow var(--transition);
}
.wf-phone-input-row:focus-within {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px var(--teal-dim);
}
.wf-phone-prefix {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 6px 0 8px;
  min-height: 46px;
  font-size: 14px;
  font-weight: 600;
  color: var(--navy);
  background: var(--grey-bg);
  border: 0;
  border-right: 1px solid var(--border);
  border-radius: 7px 0 0 7px;
  white-space: nowrap;
  line-height: 1;
  font-family: var(--font);
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  text-align: left;
  transition: background-color var(--transition);
}
.wf-phone-prefix:hover,
.wf-phone-prefix:focus-visible {
  background: color-mix(in srgb, var(--blue) 6%, var(--grey-bg));
}
.wf-phone-prefix:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: -2px;
}
.wf-phone-prefix[aria-expanded="true"] {
  background: color-mix(in srgb, var(--blue) 8%, var(--grey-bg));
}
.wf-phone-prefix .wf-phone-flag-img {
  width: 24px;
  height: 18px;
  object-fit: cover;
  display: block;
  flex-shrink: 0;
  border-radius: 2px;
  box-shadow: 0 0 0 1px rgba(11, 31, 58, 0.12);
}
.wf-phone-prefix .wf-phone-flag--emoji {
  font-size: 1.35rem;
  line-height: 1;
  font-style: normal;
  font-weight: 400;
  font-synthesis: none;
  font-variant-emoji: emoji;
  font-family:
    "Segoe UI Emoji", "Segoe UI Symbol", "Apple Color Emoji",
    "Noto Color Emoji", "Twemoji Mozilla", sans-serif;
}
.wf-phone-prefix .wf-phone-dial {
  letter-spacing: 0.02em;
}
.wf-phone-prefix .wf-phone-caret {
  flex-shrink: 0;
  color: var(--grey-text);
  margin-left: 0;
  transition: transform var(--transition);
}
.wf-phone-prefix[aria-expanded="true"] .wf-phone-caret {
  transform: rotate(180deg);
}
.wf-form-field--phone .wf-phone-local {
  flex: 1;
  min-width: 0;
  border: none;
  border-radius: 0 7px 7px 0;
  box-shadow: none;
  padding-left: 12px;
}
.wf-form-field--phone .wf-phone-local:focus {
  border-color: transparent;
  box-shadow: none;
}

.wf-phone-country-menu {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 60;
  min-width: 260px;
  max-width: 320px;
  max-height: 280px;
  overflow-y: auto;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: 0 12px 28px rgba(11, 31, 58, 0.18);
  padding: 4px 0;
}
.wf-phone-country-menu[hidden] {
  display: none;
}
.wf-phone-country-option {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 8px 14px;
  background: transparent;
  border: 0;
  font-family: var(--font);
  font-size: 14px;
  color: var(--navy);
  text-align: left;
  cursor: pointer;
  line-height: 1.2;
  appearance: none;
  -webkit-appearance: none;
}
.wf-phone-country-option:hover,
.wf-phone-country-option:focus {
  background: var(--grey-bg);
  outline: none;
}
.wf-phone-country-option[aria-selected="true"] {
  background: color-mix(in srgb, var(--blue) 8%, var(--white));
  font-weight: 600;
}
.wf-phone-country-option[aria-selected="true"]:hover,
.wf-phone-country-option[aria-selected="true"]:focus {
  background: color-mix(in srgb, var(--blue) 12%, var(--white));
}
.wf-phone-country-flag {
  width: 24px;
  height: 18px;
  object-fit: cover;
  display: block;
  flex-shrink: 0;
  border-radius: 2px;
  box-shadow: 0 0 0 1px rgba(11, 31, 58, 0.12);
}
.wf-phone-country-flag--emoji {
  font-size: 1.2rem;
  line-height: 1;
  width: 24px;
  text-align: center;
  font-family:
    "Segoe UI Emoji", "Segoe UI Symbol", "Apple Color Emoji",
    "Noto Color Emoji", "Twemoji Mozilla", sans-serif;
}
.wf-phone-country-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.wf-phone-country-dial {
  flex-shrink: 0;
  color: var(--grey-text);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

@media (max-width: 420px) {
  .wf-phone-input-row {
    flex-direction: column;
  }
  .wf-phone-prefix {
    border-right: none;
    border-bottom: 1px solid var(--border);
    border-radius: 7px 7px 0 0;
    justify-content: center;
    min-height: 40px;
  }
  .wf-form-field--phone .wf-phone-local {
    border-radius: 0 0 7px 7px;
  }
  .wf-phone-country-menu {
    left: 0;
    right: 0;
    min-width: 0;
    max-width: none;
  }
}

/* Honeypot: off-screen; leave in tab order skip via tabindex="-1" on input */
.wf-form-honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.wf-form-field input::placeholder,
.wf-form-field textarea::placeholder { color: #A8B8CC; }

.wf-form-submit {
  margin-top: 22px;
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.wf-form-submit .wf-btn-primary,
.wf-form-submit-btn {
  border: none;
  font-family: var(--font);
  min-height: 48px;
  padding: 14px 28px;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 600;
  box-shadow: 0 2px 8px rgba(26, 92, 255, 0.25);
  transition: background var(--transition), box-shadow var(--transition), transform 0.15s ease;
}
.wf-form-submit .wf-btn-primary:hover:not(:disabled),
.wf-form-submit-btn:hover:not(:disabled) {
  box-shadow: 0 4px 16px rgba(26, 92, 255, 0.32);
  transform: translateY(-1px);
}
.wf-form-submit .wf-btn-primary:disabled,
.wf-form-submit-btn:disabled {
  opacity: 0.6; cursor: not-allowed;
  transform: none;
  box-shadow: none;
}
.wf-form-note {
  font-size: 13px;
  color: var(--grey-text);
  line-height: 1.45;
  max-width: 360px;
  text-wrap: pretty;
}

.wf-form-feedback { font-size: 14px; font-weight: 500; width: 100%; margin-top: 8px; }
.wf-form-feedback:empty { display: none; }
.wf-form-success { color: var(--teal); }
.wf-form-error { color: #c00; }

.wf-contact-info-col h2 {
  font-size: 18px; font-weight: 600; color: var(--navy); margin-bottom: 6px;
}
.wf-contact-info-col > p {
  font-size: 14px; color: var(--grey-text); line-height: 1.6; margin-bottom: 24px;
}

.wf-contact-details {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--white);
  overflow: hidden;
}
.wf-contact-row {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
}
.wf-contact-row:last-child { border-bottom: none; }
.wf-contact-row-icon {
  width: 36px; height: 36px; border-radius: 6px;
  background: var(--teal-dim);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.wf-contact-row-icon .material-icons { font-size: 18px; color: var(--teal); }
.wf-contact-row-label {
  font-size: 11px; font-weight: 600; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--grey-text);
}
.wf-contact-row-val { font-size: 14px; font-weight: 500; color: var(--navy); }
.wf-contact-row-val a {
  color: var(--teal); text-decoration: none; transition: color var(--transition);
}
.wf-contact-row-val a:hover { color: var(--blue); }
.wf-contact-row-val .site-map-trigger {
  margin: 0; padding: 0; border: none; background: none;
  font: inherit; cursor: pointer;
  color: var(--teal); text-decoration: none; transition: color var(--transition);
}
.wf-contact-row-val .site-map-trigger:hover { color: var(--blue); }

.wf-contact-response {
  display: flex; align-items: center; gap: 8px;
  margin-top: 18px;
  font-size: 13px; color: var(--grey-text); font-style: italic;
}
.wf-contact-response .material-icons { font-size: 16px; color: var(--teal); }

/* == 51. CUSTOMER SUCCESS STORIES ================================= */

/* ── Featured quote strip (top of page) ── */
.wf-story-featured {
  background: var(--grey-bg);
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-story-featured-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
}
.wf-story-featured-card {
  background: white; border-radius: 12px;
  border: 1px solid var(--border);
  padding: 24px;
  display: flex; flex-direction: column; justify-content: space-between; gap: 20px;
  position: relative;
}
.wf-story-featured-card::before {
  content: '\201C'; position: absolute; top: 12px; right: 16px;
  font-size: 42px; color: rgba(26,92,255,0.1); font-weight: 700; line-height: 1;
}
.wf-story-featured-quote {
  font-size: 15px; font-weight: 600; color: var(--navy);
  line-height: 1.6; font-style: italic;
}
.wf-story-featured-who {
  display: flex; align-items: center; gap: 10px;
  font-size: 13px; color: var(--grey-text);
  font-family: var(--mono);
}
.wf-story-featured-who strong {
  display: block; color: var(--navy); font-family: var(--font);
  font-style: normal;
}
.wf-story-featured-logo {
  width: 40px; height: 40px; object-fit: contain;
  border-radius: 8px; border: 1px solid var(--border);
  padding: 4px; background: white; flex-shrink: 0;
}

/* ── Individual story sections (alternating) ── */
.wf-story-section {
  padding: 48px 56px;
  border-bottom: 1px solid var(--border);
}
.wf-story-section--alt {
  background: var(--grey-bg);
}

.wf-story-inner {
  display: grid; grid-template-columns: 100px 1fr; gap: 32px;
  align-items: start;
}

.wf-story-brand {
  display: flex; align-items: flex-start; justify-content: center;
  padding-top: 4px;
}

.wf-story-logo {
  width: 80px; height: 80px; object-fit: contain;
  border-radius: 12px; border: 1px solid var(--border);
  padding: 8px; background: white;
}
.wf-story-logo--placeholder {
  display: grid; place-items: center;
  color: var(--blue); box-sizing: border-box;
}
.wf-story-logo--placeholder .material-icons { font-size: 32px; }

.wf-story-label {
  font-size: 12px; font-weight: 700; color: var(--blue);
  text-transform: uppercase; letter-spacing: 1.2px;
  font-family: var(--mono); margin-bottom: 8px;
}

.wf-story-title {
  font-size: 20px; font-weight: 700; color: var(--navy);
  line-height: 1.35; margin-bottom: 16px;
}

.wf-story-blockquote {
  margin: 0;
  padding-left: 20px;
  border-left: 3px solid var(--blue);
  font-size: 15px; color: var(--navy);
  line-height: 1.7; font-style: italic;
}
.wf-story-blockquote p { margin: 0 0 12px; }
.wf-story-blockquote p:last-child { margin-bottom: 0; }

.wf-story-attribution {
  margin-top: 16px;
  font-size: 14px;
  display: flex; align-items: baseline; gap: 8px;
}
.wf-story-attribution strong {
  color: var(--navy); font-weight: 700;
}
.wf-story-attribution span {
  color: var(--grey-text); font-family: var(--mono); font-size: 12px;
}

/* ── Trust + CTA sections ── */
.wf-stories-trust {
  text-align: center;
  padding: 48px 56px 0;
}
.wf-stories-trust .wf-h2 { margin-bottom: 24px; }

/* Aggregate stat band rendered above the featured-quote strip on
   /customer-success-stories/. Reuses the .wf-trust-stats grid token
   so visual weight matches the trust band on product pages. */
.wf-stories-stats {
  padding: 32px 56px 8px;
}
.wf-stories-stats .wf-trust-stats {
  grid-template-columns: repeat(4, 1fr);
  margin-bottom: 12px;
}
.wf-stories-stats-note {
  font-size: 13px; color: var(--grey-text);
  text-align: center; line-height: 1.5;
  max-width: 720px; margin: 0 auto;
}
@media (max-width: 767px) {
  .wf-stories-stats { padding: 24px 20px 4px; }
  .wf-stories-stats .wf-trust-stats { grid-template-columns: 1fr 1fr; }
}

.wf-cta-sub {
  font-size: 16px; color: var(--grey-text);
  line-height: 1.6;
  margin-bottom: 24px;
}

.wf-cta-actions {
  display: flex; align-items: center; justify-content: center; gap: 16px;
  flex-wrap: wrap;
}
.wf-cta-actions--with-form {
  align-items: stretch;
  flex-direction: column;
  width: 100%;
  max-width: 560px;
  margin-left: auto;
  margin-right: auto;
}

/* ================================================================
   RESPONSIVE BREAKPOINTS
   Override multi-column desktop layouts for mobile (max-width: 767px)
   ================================================================ */

/* ================================================================
   RESPONSIVE — MOBILE  (≤ 767px)
   Generic rules that apply to ALL pages, not just the homepage.
   ================================================================ */

@media (max-width: 767px) {
  /* ── 1. Global layout — edge-to-edge ── */
  body { padding: 0; background: white; }
  .page { max-width: 100%; }
  .wireframe {
    border-radius: 0;
    border: none;
    box-shadow: none;
    margin-top: 0;
  }

  /* ── 2. Site header ── */
  .site-header-inner { padding: 0 12px; height: 48px; }
  .site-header-controls { gap: 8px; }
  .site-logo-img { height: 22px; }
  .site-header .site-share-btn {
    display: inline-flex;
    width: 40px;
    height: 40px;
    min-height: 40px;
    padding: 0;
    border-width: 1px;
    border-radius: 50%;
    box-shadow: none;
  }
  .site-header .site-share-btn-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
  .site-linkedin { display: none; }
  .site-header-cta {
    padding: 8px 16px;
    font-size: 13px;
    margin-left: auto;
  }
  /* Keep the header uncluttered on small viewports — the calculator is still
     reachable via the Explore palette and the mobile bottom sheet. */
  .site-header-cta-secondary { display: none; }
  .lang-switcher { gap: 0; }
  .lang-switcher-link { padding: 3px 4px; font-size: 10px; }

  /* ── 2a. Site top nav ── */
  .site-topnav {
    display: none;
  }
  .site-topnav-inner {
    width: 100%;
    max-width: none;
    min-width: 0;
    padding: 0 12px;
    height: 36px;
    gap: 18px;
    justify-content: flex-start;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    touch-action: pan-x;
  }
  .site-topnav-inner::-webkit-scrollbar { display: none; }
  .site-topnav-link { font-size: 12px; padding: 9px 1px; }

  /* ── 2b. Breadcrumb ── */
  .site-breadcrumb { padding: 12px 16px 0; }
  .site-breadcrumb-inner {
    font-size: 12px;
    overflow-x: auto;
    white-space: nowrap;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .site-breadcrumb-inner::-webkit-scrollbar { display: none; }

  /* ── 2a. Share control ── */
  .site-share-fab {
    display: none;
  }
  .site-share-fab .material-icons {
    font-size: 18px;
    color: var(--blue);
  }
  .site-share-fab:active {
    background: var(--grey-bg);
    box-shadow: 0 1px 4px rgba(11, 31, 58, 0.18);
  }

  /* ── 2b. Cookie consent modal ── */
  #cc-main .cm {
    max-height: calc(100vh - 16px);
  }
  #cc-main .cm__desc {
    max-height: 34vh;
    font-size: 14px;
    line-height: 1.45;
  }
  #cc-main .cm__btn {
    min-height: 46px;
    font-size: 14px;
  }
  #cc-main .cm__link-group {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  #cc-main .cm__link-group > * + * {
    margin-left: 0;
  }

  /* ── 3. All wireframe sections — generic padding ── */
  .wireframe > div { padding-left: 16px; padding-right: 16px; }
  .wf-hero { padding-top: 40px; padding-bottom: 36px; }

  /* ── 4. Typography — global ── */
  .wf-h1 { font-size: 22px; max-width: 100%; }
  .wf-hero-subtitle { font-size: 16px; margin: -4px auto 14px; max-width: 100%; }
  .wf-h2 { font-size: 18px; }
  .wf-hero-sub { max-width: 100%; font-size: 13px; }
  .wf-section-intro { max-width: 100%; }
  .wf-section-tag { padding: 8px 16px; }

  /* Remove max-width constraints from all content blocks */
  .wf-hero-definition,
  .wf-ecosystem-sub,
  .wf-final-cta > p { max-width: 100%; margin-left: 0; margin-right: 0; }

  /* ── 5. Buttons — stack vertically, full-width ── */
  .wf-btn-row {
    flex-direction: column;
    align-items: stretch;
  }
  .wf-btn-primary,
  .wf-btn-outline {
    text-align: center;
    padding: 14px 20px;
    font-size: 14px;
  }
  .wf-proof-strip { gap: 8px; }

  /* ── 6. Grids — collapse to single column ── */
  .wf-two-col,
  .wf-compare-grid,
  .wf-icon-grid,
  .wf-use-grid,
  .wf-benefits .wf-use-grid,
  .wf-mobile-grid,
  .wf-testi-grid,
  .wf-trust-stats,
  .wf-vert-grid,
  .wf-ecosystem-grid,
  .wf-related-links { grid-template-columns: 1fr; }

  /* ── 6b. App showcase responsive (capture / find / verify) ── */
  .wf-app-showcase,
  .wf-screen-showcase { padding: 36px 20px; }
  .wf-app-showcase--compact { padding: 28px 16px; }
  .wf-showcase-grid { grid-template-columns: 1fr; gap: 20px; }
  .wf-callout-col.left,
  .wf-callout-col.right { align-items: stretch; text-align: left; }
  /* Scoped — same reason as the desktop rule. The teal stripe and 12px
     padding belong to the annotation callout, not the section block. */
  .wf-callout-col .wf-callout {
    max-width: none;
    padding-left: 12px;
    border-left: 2px solid var(--teal);
  }
  .wf-callout-col.left  .wf-callout::after,
  .wf-callout-col.right .wf-callout::before { display: none; }
  .wf-phone-wrap { order: -1; }
  /* Hide markers on mobile — wide screenshots get scaled down too far for
     24px markers to align cleanly with their target UI elements. The
     numbered feature list below the screenshot still conveys the same
     information without the visual overlay. */
  .wf-marker { display: none; }
  .wf-lifecycle { grid-template-columns: 1fr; gap: 8px; }
  .wf-lifecycle-arrow { transform: rotate(90deg); text-align: center; }

  .wf-specs-grid { grid-template-columns: 1fr; }

  .wf-flow { grid-template-columns: 1fr 1fr; gap: 12px; }
  .wf-flow::before { display: none; }
  .wf-flow-num { width: 36px; height: 36px; font-size: 10px; }
  .wf-infographic {
    padding: 32px 16px;
  }
  .wf-infographic--context {
    padding-top: 28px;
    padding-bottom: 28px;
  }
  .wf-infographic-head {
    text-align: left;
    margin-bottom: 18px;
  }
  .wf-info-grid--sources,
  .wf-info-grid--outputs,
  .wf-info-timeline {
    grid-template-columns: 1fr;
  }
  .wf-info-card {
    align-items: flex-start;
    text-align: left;
  }
  .wf-info-card:not(.wf-info-card--output) {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 12px;
  }
  .wf-info-card:not(.wf-info-card--output) strong,
  .wf-info-card:not(.wf-info-card--output) span {
    grid-column: 2;
  }
  .wf-info-icon {
    grid-row: 1 / span 2;
    margin-bottom: 0;
  }
  .wf-info-core {
    margin: 12px 0;
    padding: 16px;
  }
  .wf-info-core-label,
  .wf-info-core-chips {
    justify-content: flex-start;
    text-align: left;
  }
  .wf-info-timeline::before {
    display: none;
  }
  .wf-info-step {
    align-items: flex-start;
    text-align: left;
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 12px;
  }
  .wf-info-step strong,
  .wf-info-step span {
    grid-column: 2;
  }
  .wf-info-step-num {
    grid-row: 1 / span 2;
    width: 40px;
    height: 40px;
    font-size: 11px;
    box-shadow: 0 0 0 4px var(--blue-surface);
  }
  .wf-lane-graphic,
  .wf-repair-spine,
  .wf-facility-map {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .wf-lane-graphic::before,
  .wf-repair-steps::before {
    display: none;
  }
  .wf-lane-group,
  .wf-repair-steps {
    grid-template-columns: 1fr;
    gap: 7px;
  }
  .wf-lane-node {
    padding: 12px;
  }
  .wf-lane-core {
    min-height: 0;
    padding: 16px;
    text-align: left;
  }
  .wf-lane-core-id {
    font-size: 19px;
  }
  .wf-lane-core-meta {
    max-width: none;
    margin: 0;
  }
  .wf-repair-anchor {
    padding: 16px;
  }
  .wf-repair-step {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 12px;
    align-items: start;
    text-align: left;
  }
  .wf-repair-step-num {
    grid-row: 1 / span 2;
    width: 40px;
    height: 40px;
    font-size: 11px;
    box-shadow: 0 0 0 4px var(--blue-surface);
  }
  .wf-facility-zone {
    min-height: 0;
    padding: 16px;
    transform: none;
  }
  .wf-facility-zone--yard,
  .wf-facility-zone--workshop {
    transform: none;
  }
  .wf-facility-zone::after {
    left: 16px;
    right: 16px;
    bottom: 14px;
  }
  .wf-facility-layer {
    margin-top: 0;
    padding: 16px;
  }
  .wf-steps { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .wf-steps::before { display: none; }
  .wf-h3s { grid-template-columns: 1fr; }

  /* Inline grids that should stack */
  .wf-case-inner { grid-template-columns: 1fr; }
  .wf-case-link {
    margin-top: 10px; display: inline-block;
    text-align: left; justify-self: start; max-width: 100%;
  }

  /* ── 7. Wireframe footer ── */
  .wf-footer { flex-direction: column; align-items: flex-start; gap: 10px; }

  /* ── 8. Site footer ── */
  .site-footer-main {
    grid-template-columns: 1fr;
    padding: 32px 20px 28px;
    gap: 28px;
  }
  .site-footer-payoff,
  .site-footer-tagline { max-width: 100%; }
  .site-footer-bottom {
    flex-direction: column; align-items: flex-start;
    padding: 16px 20px;
    gap: 8px;
  }
  .site-footer-legal { gap: 12px; }

  /* ── 9. Legal pages ── */
  .legal-page { padding: 0; }
  .legal-inner {
    border-radius: 0;
    border-left: none;
    border-right: none;
    padding: 28px 20px;
  }

  /* ── 10. Sub-page / vertical components ── */
  .wf-hero-positioning { padding: 12px 16px; font-size: 14px; }
  .wf-icp-grid { grid-template-columns: 1fr; }
  .wf-icp-box { padding: 18px 16px; }
  .wf-diff-section { padding: 32px 16px; }
  .wf-diff-grid { grid-template-columns: 1fr; }
  .wf-related { padding: 32px 16px; }
  .wf-related-links { grid-template-columns: 1fr; }
  .wf-flow--5 { grid-template-columns: 1fr 1fr; }
  .wf-cta-risk-box { padding: 18px 16px; }

  /* ── 11. Vertical page section containers ── */
  .wf-problem,
  .wf-process,
  .wf-benefits,
  .wf-use-cases { padding-left: 16px; padding-right: 16px; }
  .wf-problem-intro,
  .wf-process-intro,
  .wf-mobile-intro,
  .wf-trust-intro,
  .wf-benefits-intro { max-width: 100%; }
  .wf-compare { grid-template-columns: 1fr; }
  .wf-trust-logos { gap: 6px; }
  .wf-logo-placeholder { padding: 8px 14px; font-size: 11px; }
  .wf-compliance-chips { gap: 4px; }

  /* ── 12. Contact form ── */
  .wf-hero-compact { padding: 40px 20px 28px; }
  .wf-contact { grid-template-columns: 1fr; gap: 32px; padding: 24px 20px 40px; }
  .wf-form-row { grid-template-columns: 1fr; }
  .wf-form-field input,
  .wf-form-field textarea { font-size: 16px; }

  .page-contact .wf-hero.wf-hero-compact {
    padding-top: 40px;
    padding-bottom: 32px;
  }
  .page-contact .wf-contact {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 32px 16px 40px;
    border-top: 1px solid var(--border);
  }
  .page-contact .wf-form-submit {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  .page-contact .wf-form-submit .wf-btn-primary {
    width: 100%;
    justify-content: center;
  }
  .page-contact .wf-form-note {
    text-align: center;
  }

  .wf-hero-forms {
    max-width: 100%;
    gap: 10px;
    margin-top: 10px;
  }
  .wf-hero-forms .wf-btn-primary,
  .wf-hero-forms .wf-btn-outline,
  .wf-hero-forms .wf-btn-ghost,
  .wf-hero-forms a.wf-btn-ghost {
    width: 100%;
    text-align: center;
    justify-content: center;
    box-sizing: border-box;
  }
  .wf-form-surface {
    padding: 18px 16px 20px;
  }
  .wf-form-surface-title {
    font-size: 16px;
  }
  .wf-form-note {
    max-width: 100%;
    text-align: center;
  }

  .site-contact-backdrop {
    align-items: flex-start;
    padding: 12px;
    padding-top: max(12px, env(safe-area-inset-top));
  }
  .site-contact-dialog {
    padding: 20px 16px;
    border-radius: 12px;
    margin-top: 8px;
    max-height: calc(100dvh - 32px);
  }
  .site-contact-form-wrap .wf-form-submit {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  .site-contact-form-wrap .wf-form-note {
    text-align: center;
  }

  .site-map-backdrop {
    align-items: flex-start;
    padding: 12px;
    padding-top: max(12px, env(safe-area-inset-top));
  }
  .site-map-dialog {
    padding: 18px 16px 16px;
    border-radius: 14px;
    max-height: calc(100dvh - 24px);
  }
  .site-map-frame-wrap {
    aspect-ratio: 4 / 3;
    min-height: 200px;
  }
  .site-map-zoom-hint {
    font-size: 11px;
    margin-bottom: 10px;
  }

  .site-podcast-backdrop {
    align-items: flex-end;
    padding: 0;
  }
  .site-podcast-dialog {
    margin: 0;
    border-radius: 16px 16px 0 0;
    max-width: 100%;
    padding: 20px 16px calc(16px + env(safe-area-inset-bottom));
  }

  .site-video-backdrop {
    align-items: flex-end;
    padding: 0;
  }
  .site-video-dialog {
    margin: 0;
    border-radius: 16px 16px 0 0;
    max-width: 100%;
    padding: 20px 16px calc(16px + env(safe-area-inset-bottom));
  }
  .site-video-frame-wrap {
    border-radius: 10px;
  }

  /* ── 13. New components (products + articles) ── */
  .wf-definition { padding-left: 16px; padding-right: 16px; }
  .wf-vertical { padding-left: 16px; padding-right: 16px; }
  .wf-vertical-grid { grid-template-columns: 1fr; }
  .wf-integrations { padding-left: 16px; padding-right: 16px; }
  .wf-callout { padding-left: 16px; padding-right: 16px; }
  .wf-callout-box { grid-template-columns: 1fr; gap: 20px; padding: 20px 16px; }
  .wf-callout-two-paths { grid-template-columns: 1fr; }
  .wf-usecases { padding-left: 16px; padding-right: 16px; }
  .wf-compare-table { font-size: 12px; }
  .wf-workflow-grid { grid-template-columns: 1fr; }
  .wf-cta-compare { grid-template-columns: 1fr; max-width: 100%; }
  .wf-cta-compare-col.good-col { border-left: none; border-top: 1px solid rgba(255,255,255,0.08); }
  .wf-cta-compare-header.good { border-left: none; }
  .wf-cta-paths { grid-template-columns: 1fr; max-width: 100%; }
  .wf-spec-row { grid-template-columns: 100px 1fr; font-size: 12px; }
  .wf-cta-consequences { padding: 16px 18px; max-width: 100%; }
  .wf-final-consequences { padding: 16px 18px; max-width: 100%; }
  .consequence-block { padding: 16px 18px; max-width: 100%; }
  .wf-final-cta .wf-cta-intro,
  .wf-final-cta .wf-final-intro,
  .wf-cta-resolution { max-width: 100%; }
  .wf-eco-connector { max-width: 100%; }
  .wf-steps { grid-template-columns: repeat(3, 1fr); }

  /* ── 14. Customer success stories ── */
  .wf-story-featured { padding: 32px 20px; }
  .wf-story-featured-grid { grid-template-columns: 1fr; gap: 12px; }
  .wf-story-section { padding: 32px 20px; }
  .wf-story-inner { grid-template-columns: 1fr; gap: 16px; }
  .wf-story-brand { justify-content: flex-start; }
  .wf-story-logo { width: 56px; height: 56px; }
  .wf-story-title { font-size: 18px; }
  .wf-stories-trust { padding: 32px 20px 0; }
  .wf-cta-actions { flex-direction: column; }
}

/* ── Medium phones (640–767px) — restore 2-col where it fits ── */
@media (min-width: 640px) and (max-width: 767px) {
  .wf-testi-grid { grid-template-columns: 1fr 1fr; }
  .wf-icon-grid  { grid-template-columns: 1fr 1fr; }
}

/* == 15. ADMIN APP (FastAPI /admin) ================================= */

.admin-body {
  padding: 0;
  margin: 0;
  min-height: 100vh;
  background: var(--grey-bg);
}

.admin-layout {
  display: flex;
  min-height: 100vh;
}

.admin-sidebar {
  width: 220px;
  flex-shrink: 0;
  background: var(--navy);
  color: var(--white);
  display: flex;
  flex-direction: column;
  padding: 24px 16px;
}

.admin-brand {
  font-weight: 600;
  font-size: 18px;
  margin-bottom: 24px;
}

.admin-brand-muted {
  font-weight: 400;
  opacity: 0.75;
  font-size: 14px;
}

.admin-nav {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
}

.admin-nav a {
  color: var(--white);
  text-decoration: none;
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 14px;
  opacity: 0.9;
}

.admin-nav a:hover {
  background: rgba(255, 255, 255, 0.08);
  opacity: 1;
}

.admin-sidebar-footer {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.admin-sidebar-footer a {
  color: var(--white);
  opacity: 0.75;
}

.admin-main {
  flex: 1;
  padding: 32px 40px;
  overflow-x: auto;
}

.admin-banner {
  background: var(--teal-dim);
  border: 1px solid var(--border);
  padding: 12px 16px;
  border-radius: 8px;
  margin-bottom: 24px;
  font-size: 14px;
}

.admin-page-title {
  font-size: 28px;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: 8px;
}

.admin-h2 {
  font-size: 18px;
  margin: 24px 0 12px;
  color: var(--navy);
}

.admin-lead {
  color: var(--grey-text);
  margin-bottom: 20px;
  max-width: 720px;
  line-height: 1.5;
}

.admin-muted {
  color: var(--grey-text);
  font-size: 14px;
}

.admin-stats {
  list-style: disc;
  padding-left: 20px;
  margin-bottom: 24px;
  color: var(--navy);
}

.admin-stats li {
  margin-bottom: 8px;
}

.admin-btn {
  display: inline-block;
  padding: 10px 18px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  border: 1px solid var(--border);
  background: var(--white);
  color: var(--navy);
  cursor: pointer;
  margin-right: 8px;
  margin-bottom: 8px;
}

.admin-btn-primary {
  background: var(--blue);
  border-color: var(--blue);
  color: var(--white);
}

.admin-btn-primary:hover {
  background: var(--blue-lt);
  border-color: var(--blue-lt);
  color: var(--white);
}

.admin-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--white);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(11, 31, 58, 0.06);
  font-size: 14px;
}

.admin-table th,
.admin-table td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid var(--border);
}

.admin-table th {
  background: var(--grey-bg);
  font-weight: 600;
  color: var(--navy);
}

.admin-table a {
  color: var(--blue);
}

.admin-table-scroll {
  display: block;
  max-width: 100%;
  overflow-x: auto;
}

.admin-mono {
  font-family: var(--mono);
  font-size: 12px;
}

.admin-actions {
  white-space: nowrap;
}

.admin-link-btn {
  background: none;
  border: none;
  color: var(--blue);
  cursor: pointer;
  text-decoration: underline;
  font-size: 13px;
  padding: 0 6px;
}

.admin-danger {
  color: var(--blue);
}

.admin-form-stack {
  max-width: 560px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 32px;
}

.admin-form-inline {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-end;
  max-width: none;
}

.admin-label {
  font-size: 13px;
  font-weight: 500;
  color: var(--navy);
}

.admin-input,
.admin-textarea {
  font-family: var(--font);
  font-size: 14px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  width: 100%;
  box-sizing: border-box;
}

.admin-textarea {
  resize: vertical;
  min-height: 80px;
}

.admin-checklist {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 8px;
  max-height: 280px;
  overflow-y: auto;
}

.admin-check {
  font-size: 14px;
  display: flex;
  align-items: flex-start;
  gap: 8px;
  cursor: pointer;
}

.admin-pre {
  background: var(--navy);
  color: var(--white);
  padding: 16px;
  border-radius: 8px;
  overflow-x: auto;
  font-family: var(--mono);
  font-size: 12px;
  line-height: 1.5;
  max-height: 480px;
  overflow-y: auto;
}

.admin-error {
  color: var(--navy);
  background: var(--teal-dim);
  border: 1px solid var(--border);
  padding: 12px 16px;
  border-radius: 8px;
  margin-bottom: 16px;
}

.admin-login-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 24px;
}

.admin-login-card {
  background: var(--white);
  border-radius: 16px;
  border: 1px solid var(--border);
  padding: 40px;
  max-width: 400px;
  width: 100%;
  box-shadow: 0 4px 24px rgba(11, 31, 58, 0.08);
}

.admin-login-title {
  font-size: 22px;
  margin-bottom: 20px;
  color: var(--navy);
}

/* == ARTICLE EXTENSIONS (week 12+) ================================ */

.wf-def-box-secondary {
  background: white;
  border-radius: 10px;
  border: 1px solid var(--border);
  border-left: 4px solid var(--teal);
  padding: 18px 20px;
  font-size: 14px;
  color: var(--navy);
  line-height: 1.65;
  margin-bottom: 12px;
}
.wf-def-box-secondary a { color: var(--blue); font-weight: 600; text-decoration: none; }

.wf-h2--spaced { margin-top: 36px; }

.wf-usecases-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-top: 18px;
}
.wf-usecase-card {
  background: var(--grey-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 18px 18px;
}
.wf-usecase-icon { font-size: 20px; margin-bottom: 8px; display: block; }
.wf-usecase-card h4 { font-size: 14px; font-weight: 600; color: var(--navy); margin-bottom: 6px; line-height: 1.3; }
.wf-usecase-card p { font-size: 13px; color: var(--grey-text); line-height: 1.55; }

.wf-consequence-block {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  padding: 20px 24px;
  margin: 24px auto;
  max-width: 560px;
  text-align: left;
}
.wf-consequence-block h4 {
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.5);
  font-family: var(--mono);
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-bottom: 14px;
}
.wf-consequence-x { color: #FF7A8A; font-weight: 700; flex-shrink: 0; margin-top: 1px; }

@media (max-width: 767px) {
  .wf-usecases-grid { grid-template-columns: 1fr; }
}

/* == ADMIN RESPONSIVE ============================================= */

@media (max-width: 767px) {
  .admin-layout {
    flex-direction: column;
  }

  .admin-sidebar {
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
  }

  .admin-nav {
    flex-direction: row;
    flex-wrap: wrap;
    flex: 1 1 auto;
  }

  .admin-main {
    padding: 20px 16px;
  }
}

/* ── MEDIA LIBRARY + PODCAST PAGES (task 8) ── */

.media-index-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 24px;
  margin: 24px 0 40px;
}

.media-index-card {
  display: block;
  text-decoration: none;
  color: inherit;
  border: 1px solid var(--grey-border, #e1e5ea);
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.media-index-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

.media-index-thumb {
  position: relative;
  aspect-ratio: 16 / 9;
  background-color: var(--navy, #0a2540);
  overflow: hidden;
}

/* Per-card thumbnail image. Replaces the previous inline
   `style="background-image: url(...)"` so the site-wide CSP can keep
   `style-src 'self'` (no `'unsafe-inline'`). The image fills the 16:9
   thumb container; the play-icon and duration badge sit on top via
   `position: absolute` rules below. Audit F-013. */
.media-index-thumb-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.media-index-duration {
  position: absolute;
  bottom: 10px;
  right: 10px;
  background: rgba(0, 0, 0, 0.72);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 4px;
}

.media-index-play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #fff;
  font-size: 56px;
  opacity: 0.92;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.45));
}

.media-index-body {
  padding: 16px 18px 20px;
}

.media-index-kicker {
  font-size: 11px;
  letter-spacing: 0.12em;
  font-weight: 700;
  color: var(--teal, #00a6a6);
  text-transform: uppercase;
  margin-bottom: 6px;
}

.media-index-title {
  font-size: 18px;
  margin: 0 0 8px;
  line-height: 1.3;
}

.media-index-desc {
  font-size: 14px;
  color: var(--grey-text, #4a5568);
  margin: 0;
  line-height: 1.5;
}

.media-player-frame {
  margin: 24px 0;
  background: var(--navy, #0a2540);
  border-radius: 12px;
  overflow: hidden;
  aspect-ratio: 16 / 9;
}

.media-player-frame--audio {
  aspect-ratio: auto;
  background: var(--grey-bg, #f5f7fa);
  padding: 20px;
}

.media-player-video {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
}

.media-player-audio {
  width: 100%;
  display: block;
}

.media-transcript p {
  margin: 0 0 12px;
  line-height: 1.7;
}

.podcast-index-subscribe {
  margin-top: 16px;
  font-size: 14px;
  color: var(--grey-text, #4a5568);
}

.podcast-index-subscribe a {
  color: var(--teal, #00a6a6);
  text-decoration: none;
  font-weight: 600;
}

.podcast-index-subscribe a:hover { text-decoration: underline; }

.podcast-index-sep {
  display: inline-block;
  margin: 0 6px;
  color: var(--grey-border, #cbd5e0);
}

.podcast-index-muted {
  color: var(--grey-muted, #94a3b8);
}

.podcast-episode-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 12px;
}

.podcast-episode-card {
  display: block;
  text-decoration: none;
  color: inherit;
  padding: 18px 20px;
  background: var(--grey-bg, #f5f7fa);
  border-radius: 10px;
  border: 1px solid transparent;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.podcast-episode-card:hover {
  border-color: var(--teal, #00a6a6);
  background: #fff;
}

.podcast-episode-kicker {
  font-size: 12px;
  letter-spacing: 0.05em;
  color: var(--grey-text, #4a5568);
  margin-bottom: 6px;
}

.podcast-episode-title {
  font-size: 18px;
  margin: 0 0 6px;
  line-height: 1.3;
}

.podcast-episode-desc {
  font-size: 14px;
  color: var(--grey-text, #4a5568);
  margin: 0;
  line-height: 1.5;
}

.podcast-show-notes {
  list-style: none;
  padding: 0;
  margin: 0;
}

.podcast-show-notes li {
  padding: 8px 0;
  border-bottom: 1px solid var(--grey-border, #e1e5ea);
  font-size: 14px;
  line-height: 1.6;
}

.podcast-show-notes li:last-child { border-bottom: none; }

.podcast-show-notes strong {
  display: inline-block;
  min-width: 56px;
  font-family: monospace;
  color: var(--teal, #00a6a6);
}
