
  /* ---- ICP: design tokens (scoped to this section only) ---- */
  .icp-section {
    /*  --icp-primary: #2e9e5b;  Square green — active line / active node */
        --icp-primary: #275d2b !important;   /* Square green — active line / active node */
    --icp-accent: #FDB82C;    /* Square yellow — secondary accent, used sparingly */
    --icp-dark: #343A40;      /* headings / dark UI */
    --icp-black: #000000;     /* body copy */
    --icp-white: #FFFFFF;     /* section background */
    --icp-light: #F8F9FA;     /* subtle panel background */
    --icp-muted: #B3B3B3;     /* secondary / meta text */
    --icp-border: #CCCCCC;    /* structural lines, inactive spine */
    --icp-font: "Rubik", Arial, sans-serif;
    --icp-content-width: 1110px;
  }
 
  /* ---- ICP: section shell ---- */
  .icp-section {
    position: relative;
    width: 100%;
    background: var(--icp-white);
    font-family: var(--icp-font);
    padding: clamp(64px, 9vw, 128px) 20px;
    box-sizing: border-box;
    overflow: hidden;
  }
  .icp-section *,
  .icp-section *::before,
  .icp-section *::after {
    box-sizing: border-box;
  }
 
  /* ---- ICP: optional faint blueprint grid (no external assets) ---- */
  .icp-section__grid-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
      linear-gradient(var(--icp-border) 1px, transparent 1px),
      linear-gradient(90deg, var(--icp-border) 1px, transparent 1px);
    background-size: 64px 64px;
    opacity: 0.06;
  }
 
  .icp-section__inner {
    position: relative;
    max-width: var(--icp-content-width);
    margin: 0 auto;
  }
 
  /* ---- ICP: header (eyebrow + title + intro) ---- */
  .icp-section__header {
    margin-bottom: clamp(40px, 6vw, 72px);
    max-width: 640px;
  }
  .icp-section__eyebrow {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 16px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--icp-primary);
    margin: 0 0 5px 0;
  }
  .icp-section__eyebrow::before {
    content: "";
    display: inline-block;
    width: 28px;
    height: 2px;
    background: var(--icp-primary);
  }
  .icp-section__title {
    font-size: clamp(28px, 4vw, 34px);
    font-weight: 500;
    line-height: 1.2;
    color: var(--icp-dark);
    margin: 0 0 14px 0;
  }
  .icp-section__intro {
    font-size: 16px;
    font-weight: 300;
    line-height: 1.6;
    color: var(--icp-black);
    opacity: 0.75;
    margin: 0;
  }
 
  /* ---- ICP: system layout (label column + connected pillar list) ---- */
  .icp-section__system-wrap {
    display: grid;
    grid-template-columns: minmax(220px, 300px) 1fr;
    gap: 56px;
    align-items: start;
  }
 
  .icp-section__label {
    position: sticky;
    top: 100px;
  }
  .icp-section__label-tag {
    font-size: 14px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--icp-dark);
    margin: 0 0 12px 0;
  }
  .icp-section__label-copy {
    font-size: 15px;
    font-weight: 300;
    line-height: 1.6;
    color: var(--icp-muted);
    margin: 0;
  }
 
  /* ---- ICP: the connected system — spine + pillar rows ---- */
  .icp-section__system {
    position: relative;
    padding-left: 40px;
  }
 
  /* structural spine (inactive baseline line) */
  .icp-section__spine {
    position: absolute;
    left: 8px;
    top: 6px;
    bottom: 6px;
    width: 2px;
    background: var(--icp-border);
  }
  /* spine fill — the animated "drawing" line, grows top-down */
  .icp-section__spine-fill {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: var(--icp-primary);
    transform-origin: top center;
    will-change: transform;
    /* NOTE: no scaleY(0) here on purpose — see .icp-section__pillar
       comment above. JS sets the hidden state only if GSAP loads. */
  }
 
  /* ---- ICP: individual pillar row ---- */
  .icp-section__pillar {
    position: relative;
    padding: 28px 0 28px 36px;
    border-bottom: 1px solid var(--icp-border);
    /* NOTE: no opacity/transform hidden-state here on purpose.
       Pillars are fully visible by default. JS (only if GSAP loads
       successfully) sets the hidden starting state via gsap.set()
       right before building the animation — see JS block below.
       This guarantees content is never invisible if GSAP fails. */
    will-change: opacity, transform;
  }
  .icp-section__pillar:last-child {
    border-bottom: none;
    padding-bottom: 4px;
  }
  .icp-section__pillar:first-child {
    padding-top: 4px;
  }
 
  /* connection node aligned to the spine */
  .icp-section__marker {
    position: absolute;
    left: -32px;
    top: 32px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--icp-white);
    border: 2px solid var(--icp-border);
    transform: scale(0.7);
    transition: border-color 0.3s ease, background 0.3s ease;
  }
  .icp-section__pillar.is-active .icp-section__marker {
    border-color: var(--icp-primary);
    background: var(--icp-primary);
  }
  /* short connector between spine node and pillar copy */
  .icp-section__marker::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 100%;
    width: 20px;
    height: 1px;
    background: var(--icp-border);
    transform: translateY(-50%);
  }
 
  .icp-section__pillar-number {
    display: block;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 1.5px;
    color: var(--icp-accent);
    margin-bottom: 8px;
  }
  .icp-section__pillar-title {
    font-size: clamp(18px, 2vw, 24px);
    font-weight: 500;
    line-height: 1.3;
    color: var(--icp-dark);
    margin: 0 0 10px 0;
  }
  .icp-section__pillar-description {
    font-size: clamp(15px, 1.4vw, 17px);
    font-weight: 300;
    line-height: 1.6;
    color: var(--icp-black);
    opacity: 0.75;
    margin: 0;
    max-width: 60ch;
  }
 
  /* subtle hover emphasis — desktop / pointer devices only */
  @media (hover: hover) and (pointer: fine) {
    .icp-section__pillar {
      transition: padding-left 0.3s ease;
    }
    .icp-section__pillar:hover {
      padding-left: 42px;
    }
    .icp-section__pillar:hover .icp-section__marker {
      border-color: var(--icp-primary);
    }
  }
 
  /* ---- ICP: focus state for accessibility (in case pillars become interactive) ---- */
  .icp-section__pillar:focus-visible {
    outline: 2px solid var(--icp-primary);
    outline-offset: 6px;
  }
 
  /* ================================================================
     ICP: RESPONSIVE — TABLET (<=992px)
  ================================================================= */
  @media (max-width: 992px) {
    .icp-section__system-wrap {
      grid-template-columns: 1fr;
      gap: 32px;
    }
    .icp-section__label {
      position: static;
      max-width: 640px;
    }
    .icp-section__title {
      font-size: 28px;
    }
  }
 
  /* ================================================================
     ICP: RESPONSIVE — MOBILE (<=576px)
  ================================================================= */
  @media (max-width: 576px) {
    .icp-section {
      padding: 56px 16px;
    }
    .icp-section__system {
      padding-left: 28px;
    }
    .icp-section__spine {
      left: 6px;
    }
    .icp-section__pillar {
      padding-left: 28px;
    }
    .icp-section__marker {
      left: -24px;
      width: 10px;
      height: 10px;
    }
    .icp-section__marker::after {
      width: 14px;
    }
    .icp-section__pillar-description {
      max-width: 100%;
    }
  }
 
  /* ================================================================
     ICP: REDUCED MOTION — content fully visible, no scroll animation
  ================================================================= */
  @media (prefers-reduced-motion: reduce) {
    .icp-section__pillar {
      opacity: 1 !important;
      transform: none !important;
    }
    .icp-section__spine-fill {
      transform: scaleY(1) !important;
    }
  }