/* ============================================================
   AFFILIATIONS PAGE
   Network map, partner ecosystem, success stats, trust indicators.
   ============================================================ */

/* ---- Network map ---- */
.section--map { padding-top: clamp(48px, 7vw, 84px); }
.map-wrap {
  position: relative;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background:
    radial-gradient(90% 120% at 55% 30%, rgba(141,198,63,.08), transparent 60%),
    linear-gradient(160deg, var(--charcoal), var(--ink-2));
  padding: clamp(1.2rem, 3vw, 2.4rem);
  overflow: hidden;
}
.netmap { width: 100%; height: auto; }

.netmap__grid path { vector-effect: non-scaling-stroke; }

/* connection lines */
.netmap__links .link {
  opacity: .55;
  transition: opacity .3s var(--ease), stroke-width .3s var(--ease);
  filter: drop-shadow(0 0 3px var(--green-glow));
}
.netmap__links .link.is-active {
  opacity: 1;
  stroke-width: 2.6;
}

/* nodes */
.node { cursor: default; }
.node__dot {
  fill: var(--ink);
  stroke: var(--green);
  stroke-width: 2;
  transition: fill .3s var(--ease), r .3s var(--ease);
}
.node__core { fill: var(--green); }
.node__pulse {
  fill: var(--green);
  opacity: .35;
  transform-origin: center;
  animation: nodePulse 2.6s ease-out infinite;
}
@keyframes nodePulse {
  0%   { transform: scale(1);   opacity: .5; }
  70%  { transform: scale(2.6); opacity: 0; }
  100% { transform: scale(2.6); opacity: 0; }
}
.node__label {
  font-family: var(--mono);
  font-size: 12px;
  fill: var(--mute);
  letter-spacing: .04em;
  transition: fill .3s var(--ease);
}
.node__label--hub {
  fill: var(--green);
  text-anchor: middle;
  font-size: 11px;
  letter-spacing: .14em;
}
.node.is-active .node__dot { fill: var(--green); r: 6.5; }
.node.is-active .node__label { fill: var(--white); }

/* legend */
.map-legend {
  display: flex; flex-wrap: wrap; gap: .7rem;
  margin-top: 1.6rem;
}
.map-legend li {
  display: inline-flex; align-items: center; gap: .55rem;
  padding: .5em .95em;
  border: 1px solid var(--line-2);
  border-radius: 999px;
  font-size: .86rem; color: var(--mute);
  cursor: default;
  transition: border-color .25s, color .25s, background .25s;
}
.map-legend li .mono {
  font-family: var(--mono); font-size: .68rem; letter-spacing: .1em;
  color: var(--green);
}
.map-legend li:hover,
.map-legend li.is-active {
  border-color: var(--green);
  color: var(--white);
  background: rgba(141,198,63,.08);
}

/* ---- Ecosystem ---- */
.eco-grid {
  display: grid; gap: 1.4rem;
  grid-template-columns: repeat(3, 1fr);
}
.eco { padding: clamp(1.6rem, 3vw, 2.2rem); }
.eco .h3 { margin-bottom: .8rem; }
.eco .h3::before {
  content: ""; display: block;
  width: 34px; height: 2px; margin-bottom: 1rem;
  background: linear-gradient(90deg, var(--green), transparent);
}
.eco p { font-size: .96rem; }

/* ---- Success ---- */
.success {
  display: grid; gap: clamp(2rem, 5vw, 4rem);
  grid-template-columns: 1fr 1fr; align-items: center;
}
.success__copy .h2 { margin-top: 1rem; }
.success__copy .lead { margin-top: 1.2rem; }
.success__stats {
  display: grid; gap: 1.2rem;
  grid-template-columns: 1fr 1fr;
}
.success__stats .stat {
  padding: clamp(1.4rem, 3vw, 2rem);
  text-align: left;
}
.stat__num {
  display: block;
  font-family: var(--display); font-weight: 700;
  font-size: clamp(2.2rem, 4.5vw, 3.2rem);
  color: var(--green); line-height: 1;
}
.stat__label { display: block; margin-top: .6rem; font-size: .9rem; color: var(--mute); }

/* ---- Trust indicators ---- */
.indicators {
  display: grid; gap: 1.4rem;
  grid-template-columns: repeat(4, 1fr);
}
.indicator {
  padding: 1.8rem 1.6rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--panel);
  transition: border-color .3s var(--ease), transform .3s var(--ease);
}
.indicator:hover { border-color: var(--line-2); transform: translateY(-4px); }
.indicator__mark {
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--display); font-weight: 700;
  font-size: 1.5rem; color: var(--green);
  width: 58px; height: 58px; margin-bottom: 1.1rem;
  border: 1px solid var(--line-2); border-radius: 14px;
  background: rgba(141,198,63,.06);
}
.indicator p { font-size: .92rem; }

/* ---- Responsive ---- */
@media (max-width: 920px) {
  .eco-grid { grid-template-columns: 1fr; }
  .success { grid-template-columns: 1fr; }
  .indicators { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 540px) {
  .success__stats { grid-template-columns: 1fr 1fr; }
  .indicators { grid-template-columns: 1fr; }
  .node__label { font-size: 13px; }
}
