/* ==========================================================================
   Cloudstore Central — SVG diagrams & data visualisations
   ========================================================================== */

.diagram {
  width: 100%;
  border: var(--border-hairline);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(circle at 1px 1px, var(--colour-neutral-light) 1px, transparent 0)
      0 0 / 24px 24px,
    var(--bg-subtle);
  padding: var(--space-lg);
}
.diagram svg { width: 100%; height: auto; display: block; }

.diagram-caption {
  margin-top: var(--space-sm);
  font-size: var(--fs-small);
  color: var(--text-muted);
  text-align: center;
}

/* Diagram primitives (used inside inline SVG) */
.dg-node { fill: var(--colour-cloud-white); stroke: var(--colour-neutral-dark); stroke-width: 1.5; }
.dg-node--accent { fill: var(--colour-navy); stroke: var(--colour-navy); }
.dg-node--signal { fill: color-mix(in srgb, var(--colour-cyan) 16%, white); stroke: var(--colour-cyan); }
.dg-label { fill: var(--colour-ink); font-family: var(--font-sans); font-size: 13px; font-weight: 600; }
.dg-label--invert { fill: #fff; }
.dg-sub { fill: var(--colour-muted); font-family: var(--font-sans); font-size: 11px; }
.dg-flow { fill: none; stroke: var(--colour-neutral-mid); stroke-width: 1.5; }
.dg-flow--signal { stroke: var(--colour-cyan); stroke-width: 2; stroke-dasharray: 4 4; }
.dg-icon { fill: var(--colour-cyan); }

/* Animated signal flow (respects reduced motion) */
@keyframes dg-dash { to { stroke-dashoffset: -16; } }
.dg-flow--signal { animation: dg-dash 1.2s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .dg-flow--signal { animation: none; }
}

/* Architecture layer diagram */
.layer-stack { display: grid; gap: var(--space-2xs); }
.layer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  border: var(--border-default);
  border-radius: var(--radius-md);
  background: var(--colour-cloud-white);
}
.layer__label { font-weight: var(--fw-semibold); }
.layer__meta { font-size: var(--fs-small); color: var(--text-muted); font-family: var(--font-mono); }
.layer--accent { background: var(--colour-navy); color: #fff; border-color: var(--colour-navy); }
.layer--accent .layer__meta { color: var(--colour-cyan); }
