  :root {
    --centro-blue: #0B5FFF;        /* primary brand blue — adjust to Centro's exact hex */
    --centro-blue-dark: #0747C0;
    --centro-navy: #0A1F44;
    --ccw-bg-image: url("ccw-popup-bg.png"); /* campaign background image */
  }

  .ccw-overlay {
    position: fixed;
    inset: 0;
    background: rgba(10, 31, 68, 0.45);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 9999;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.35s ease, visibility 0.35s ease;
  }
  .ccw-overlay.ccw-visible {
    opacity: 1;
    visibility: visible;
  }

  .ccw-modal {
    width: 100%;
    max-width: 900px;
    min-height: 460px;
    border-radius: 18px;
    box-shadow: 0 24px 64px rgba(10, 31, 68, 0.35);
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    /* Campaign image over gradient fallback; image right-anchored
       so the agent stays visible and text sits on the blue area */
    background:
      var(--ccw-bg-image) right center / cover no-repeat,
      linear-gradient(145deg, var(--centro-blue) 0%, var(--centro-navy) 100%);
    transform: translateY(16px) scale(0.98);
    transition: transform 0.35s ease;
  }
  .ccw-overlay.ccw-visible .ccw-modal {
    transform: translateY(0) scale(1);
  }

  /* Contrast scrim: darkens the left side so text passes WCAG,
     fades out before the agent on the right */
  .ccw-modal::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
      90deg,
      rgba(7, 25, 60, 0.82) 0%,
      rgba(7, 25, 60, 0.62) 38%,
      rgba(7, 25, 60, 0.18) 62%,
      rgba(7, 25, 60, 0) 80%
    );
  }

  /* Content (left side, over the scrim) */
  .ccw-content {
    position: relative;
    z-index: 1;
    max-width: 480px;
    padding: 56px 48px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }

  .ccw-label {
    display: inline-block;
    background: rgba(255, 255, 255, 0.16);
    border: 1px solid rgba(255, 255, 255, 0.35);
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    padding: 6px 14px;
    border-radius: 100px;
    margin-bottom: 20px;
    backdrop-filter: blur(2px);
  }

  .ccw-headline {
    font-size: 36px;
    line-height: 1.12;
    font-weight: 800;
    color: #ffffff;
    margin: 0 0 16px;
    text-shadow: 0 2px 12px rgba(7, 25, 60, 0.35);
  }

  .ccw-body {
    font-size: 16.5px;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.92);
    margin: 0 0 28px;
    text-shadow: 0 1px 8px rgba(7, 25, 60, 0.35);
  }

  .ccw-cta {
    display: inline-block;
    background: #ffffff;
    color: var(--centro-blue-dark);
    font-size: 16px;
    font-weight: 700;
    text-decoration: none;
    padding: 15px 32px;
    border-radius: 10px;
    transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
    box-shadow: 0 8px 24px rgba(7, 25, 60, 0.35);
  }
  .ccw-cta:hover {
    background: #EAF1FF;
    transform: translateY(-1px);
    box-shadow: 0 10px 28px rgba(7, 25, 60, 0.45);
  }
  .ccw-cta:focus-visible {
    outline: 3px solid #ffffff;
    outline-offset: 3px;
  }

  .ccw-subnote {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.75);
    margin: 14px 0 0;
  }

  /* Close button */
  .ccw-close {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.92);
    color: var(--centro-navy);
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease;
    z-index: 2;
    box-shadow: 0 2px 8px rgba(10, 31, 68, 0.25);
  }
  .ccw-close:hover { background: #ffffff; }
  .ccw-close:focus-visible {
    outline: 3px solid var(--centro-blue);
    outline-offset: 2px;
  }

  /* Reduced motion */
  @media (prefers-reduced-motion: reduce) {
    .ccw-overlay, .ccw-modal, .ccw-cta { transition: none; }
  }

  /* ---------- Mobile ---------- */
  @media (max-width: 768px) {
    .ccw-overlay {
      background: rgba(10, 31, 68, 0.65); /* stronger overlay on mobile */
      padding: 14px;
    }
    .ccw-modal {
      max-width: 95%;
      min-height: 0;
      max-height: 92vh;
      overflow-y: auto;
      border-radius: 16px;
      /* keep the agent visible on the right edge */
      background-position: 72% center, center;
    }
    /* Stronger full-surface scrim on mobile: text overlays
       more of the image, so contrast must hold everywhere */
    .ccw-modal::before {
      background: linear-gradient(
        180deg,
        rgba(7, 25, 60, 0.55) 0%,
        rgba(7, 25, 60, 0.78) 100%
      );
    }
    .ccw-content {
      max-width: 100%;
      padding: 56px 24px 30px;
      align-items: stretch;
    }
    .ccw-label { align-self: flex-start; }
    .ccw-headline { font-size: 27px; }
    .ccw-body { font-size: 15.5px; margin-bottom: 22px; }
    .ccw-cta {
      width: 100%;
      box-sizing: border-box;
      text-align: center;
      padding: 16px 20px;
    }
  }