/* ============================================
   ALGORIS IT — infrastructure.css
   Complete redesign: custom hero, 3 themed sections
   (Infrastructure, Cloud, Réseaux), glassmorphism
   dashboards, animations, dark + light mode.
   ============================================ */


/* ═══════════════════════════════════════════
   SHARED KEYFRAMES
   ═══════════════════════════════════════════ */

@keyframes infraFadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes infraPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.4; transform: scale(1.15); }
}

@keyframes infraSweep {
  0%   { left: -60%; }
  100% { left: 160%; }
}

@keyframes infraScan {
  0%   { top: -2%; opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { top: 102%; opacity: 0; }
}

@keyframes infraLedBlink {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.3; }
}

@keyframes packetMove1 {
  0%   { cx: 200; cy: 40; opacity: 0; }
  10%  { opacity: 0.8; }
  50%  { cx: 90; cy: 130; }
  90%  { opacity: 0.8; }
  100% { cx: 50; cy: 220; opacity: 0; }
}

@keyframes packetMove2 {
  0%   { cx: 200; cy: 40; opacity: 0; }
  10%  { opacity: 0.8; }
  50%  { cx: 310; cy: 130; }
  90%  { opacity: 0.8; }
  100% { cx: 350; cy: 220; opacity: 0; }
}

@keyframes packetMove3 {
  0%   { cx: 90; cy: 130; opacity: 0; }
  10%  { opacity: 0.8; }
  90%  { opacity: 0.8; }
  100% { cx: 310; cy: 130; opacity: 0; }
}

@keyframes nodePulse {
  0%, 100% { filter: drop-shadow(0 0 0 transparent); }
  50%      { filter: drop-shadow(0 0 6px var(--accent-glow)); }
}

@keyframes particleRise {
  0%   { transform: translateY(0) scale(1); opacity: 0; }
  20%  { opacity: 0.5; }
  80%  { opacity: 0.3; }
  100% { transform: translateY(-200px) scale(0.3); opacity: 0; }
}

@keyframes cardFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}

@keyframes waveShift {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}


/* ═══════════════════════════════════════════
   HERO — Control Room
   ═══════════════════════════════════════════ */

.infra-hero {
  position: relative;
  min-height: var(--vh-stable, 100svh);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding-top: 100px;
  padding-bottom: 40px;
  background: var(--bg-primary);
}

/* Dot grid background */
.infra-hero__grid {
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, var(--border) 1px, transparent 1px);
  background-size: 32px 32px;
  opacity: 0.35;
  mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, black 20%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, black 20%, transparent 100%);
}

/* Sweep */
.infra-hero__sweep {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  overflow: hidden;
}

.infra-hero__sweep::after {
  content: '';
  position: absolute;
  top: 0; left: -60%;
  width: 60%; height: 100%;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(59,130,246,0.02) 45%,
    rgba(59,130,246,0.05) 50%,
    rgba(59,130,246,0.02) 55%,
    transparent 100%
  );
  animation: infraSweep 10s ease-in-out infinite;
}

/* Glows */
.infra-hero__glow {
  position: absolute;
  bottom: -25%; left: -15%;
  width: 70vw; height: 70vw;
  background: radial-gradient(circle, rgba(59,130,246,0.07) 0%, transparent 60%);
  filter: blur(90px);
  pointer-events: none;
  z-index: 1;
}

.infra-hero__glow2 {
  position: absolute;
  top: -20%; right: -10%;
  width: 50vw; height: 50vw;
  background: radial-gradient(circle, rgba(59,130,246,0.04) 0%, transparent 60%);
  filter: blur(110px);
  pointer-events: none;
  z-index: 1;
}

/* Scan line */
.infra-hero__scan {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  overflow: hidden;
}

.infra-hero__scan::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 10%, rgba(59,130,246,0.25) 50%, transparent 90%);
  box-shadow: 0 0 20px rgba(59,130,246,0.15);
  animation: infraScan 8s ease-in-out infinite;
}

/* Layout */
.infra-hero__inner {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-3xl);
  display: grid;
  grid-template-columns: 1fr 420px;
  align-items: center;
  gap: var(--space-3xl);
}

/* Content left */
.infra-hero__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-xl);
}

.infra-hero__service {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  animation: infraFadeUp 0.7s cubic-bezier(0.16,1,0.3,1) 0.05s both;
}

.infra-hero__service-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--accent);
  animation: infraPulse 2.4s ease-in-out infinite;
}

.infra-hero__title {
  font-family: var(--font-display);
  font-size: clamp(4.5rem, 10vw, 8rem);
  font-weight: 800;
  letter-spacing: -0.05em;
  line-height: 0.9;
  text-transform: uppercase;
  color: var(--text-primary);
  cursor: default;
  user-select: none;
  animation: infraFadeUp 0.9s cubic-bezier(0.16,1,0.3,1) 0.12s both;
}

.infra-hero__letter {
  display: inline-block;
  transition: transform 0.35s cubic-bezier(0.34,1.56,0.64,1), color 0.3s ease;
  will-change: transform;
}

.infra-hero__letter:hover {
  transform: translateY(-8px) scale(1.05);
  color: var(--accent);
}

.infra-hero__letter--dot {
  color: var(--accent);
}

/* Status bar */
.infra-hero__status-bar {
  display: flex;
  align-items: center;
  gap: var(--space-xl);
  padding: 14px 24px;
  border-radius: var(--radius-lg);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  animation: infraFadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.25s both;
}

.infra-hero__status-item {
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.infra-hero__status-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  flex-shrink: 0;
}

.infra-hero__status-dot--green { background: #22C55E; animation: infraPulse 1.8s ease-in-out infinite; }
.infra-hero__status-dot--blue  { background: var(--accent); animation: infraPulse 2s ease-in-out infinite 0.3s; }

.infra-hero__status-item strong { color: var(--text-secondary); }

/* Chips */
.infra-hero__chips {
  display: flex;
  gap: var(--space-sm);
  flex-wrap: wrap;
  animation: infraFadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.35s both;
}

.infra-hero__chip {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 16px;
  border-radius: 100px;
  border: 1px solid var(--border-accent);
  background: var(--accent-glow);
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  transition: background 0.3s, border-color 0.3s;
}

.infra-hero__chip:hover {
  background: rgba(59,130,246,0.2);
  border-color: var(--accent);
}

.infra-hero__chip-dot {
  width: 4px; height: 4px;
  border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
}

/* Description */
.infra-hero__desc {
  font-size: 1.05rem;
  color: var(--text-secondary);
  line-height: 1.7;
  max-width: 540px;
  animation: infraFadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.4s both;
}

/* Actions */
.infra-hero__actions {
  display: flex;
  align-items: center;
  gap: var(--space-xl);
  animation: infraFadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.42s both;
}

.infra-hero__scroll {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  font-family: var(--font-mono);
  font-size: 0.58rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.infra-hero__scroll-line {
  display: block;
  width: 1px;
  height: 48px;
  background: linear-gradient(to bottom, var(--accent), transparent);
  animation: scrollPulse 2s ease-in-out infinite;
  transform-origin: top;
}


/* ═══════════════════════════════════════════
   HERO — Rack Monitor (right side)
   ═══════════════════════════════════════════ */

.infra-hero__rack-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: infraFadeUp 1.2s cubic-bezier(0.16,1,0.3,1) 0.3s both;
}

/* Float animation on all glassmorphic cards */
.infra-hero__rack,
.infra-dashboard,
.infra-cloud-dash,
.infra-network {
  animation: cardFloat 6s ease-in-out infinite;
}

.infra-hero__rack-glow {
  position: absolute;
  inset: -25%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(59,130,246,0.10) 0%, transparent 60%);
  filter: blur(50px);
  pointer-events: none;
}

.infra-hero__rack {
  width: 100%;
  max-width: 400px;
  border-radius: var(--radius-xl);
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(28px) saturate(160%);
  -webkit-backdrop-filter: blur(28px) saturate(160%);
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 24px 64px rgba(0,0,0,0.4);
  overflow: hidden;
}

.infra-rack__header {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: 14px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.infra-rack__dots {
  display: flex;
  gap: 5px;
}

.infra-rack__dots span {
  width: 8px; height: 8px;
  border-radius: 50%;
}

.infra-rack__dots span:nth-child(1) { background: #EF4444; }
.infra-rack__dots span:nth-child(2) { background: #FBBF24; }
.infra-rack__dots span:nth-child(3) { background: #22C55E; }

.infra-rack__title-row {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: center;
}

.infra-rack__logo {
  height: 56px;
  width: auto;
  opacity: 0.35;
}

.infra-rack__logo--light { display: none; }

.infra-rack__title {
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.4);
}

.infra-rack__badge {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  color: #22C55E;
}

.infra-rack__badge-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #22C55E;
  animation: infraPulse 1.5s ease-in-out infinite;
}

/* Metrics row */
.infra-rack__metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(255,255,255,0.04);
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.infra-rack__metric {
  text-align: center;
  padding: 14px 8px;
  background: rgba(0,0,0,0.3);
}

.infra-rack__metric--accent .infra-rack__metric-val {
  color: #22C55E;
}

.infra-rack__metric-val {
  display: block;
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--text-primary);
  letter-spacing: -0.03em;
  line-height: 1;
}

.infra-rack__metric-suffix {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--text-muted);
}

.infra-rack__metric-label {
  display: block;
  font-size: 0.48rem;
  letter-spacing: 0.12em;
  color: rgba(255,255,255,0.3);
  margin-top: 4px;
}

.infra-rack__body {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Server unit */
.infra-rack__unit {
  border-radius: var(--radius-md);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  padding: 12px 14px;
  display: flex;
  align-items: center;
  gap: 14px;
  position: relative;
}

.infra-rack__unit::before {
  content: attr(data-label);
  position: absolute;
  top: -1px; right: 12px;
  transform: translateY(-50%);
  font-family: var(--font-mono);
  font-size: 0.55rem;
  letter-spacing: 0.12em;
  color: var(--accent);
  background: rgba(0,0,0,0.5);
  padding: 1px 8px;
  border-radius: 100px;
  border: 1px solid rgba(59,130,246,0.2);
}

/* LEDs */
.infra-rack__leds {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex-shrink: 0;
}

.infra-rack__led {
  width: 4px; height: 4px;
  border-radius: 50%;
}

.infra-rack__led--green {
  background: #22C55E;
  box-shadow: 0 0 4px rgba(34,197,94,0.5);
  animation: infraLedBlink 3s ease-in-out infinite;
}

.infra-rack__led--blue {
  background: var(--accent);
  box-shadow: 0 0 4px var(--accent-glow);
  animation: infraLedBlink 2.5s ease-in-out infinite 0.5s;
}

/* Bar group */
.infra-rack__bar-group {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.infra-rack__bar-row {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-mono);
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  color: rgba(255,255,255,0.4);
}

.infra-rack__bar-row > span:first-child {
  width: 32px;
  flex-shrink: 0;
}

.infra-rack__bar {
  flex: 1;
  height: 4px;
  border-radius: 2px;
  background: rgba(255,255,255,0.06);
  overflow: hidden;
}

.infra-rack__bar-fill {
  height: 100%;
  width: 0%;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--accent), rgba(59,130,246,0.5));
  transition: width 1s cubic-bezier(0.16,1,0.3,1);
}

.infra-rack__bar-val {
  width: 32px;
  text-align: right;
  color: var(--accent);
  font-size: 0.58rem;
}

/* Throughput mini chart */
.infra-rack__throughput {
  border-radius: var(--radius-md);
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  padding: 10px 14px 6px;
}

.infra-rack__throughput-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-mono);
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  color: rgba(255,255,255,0.25);
  margin-bottom: 6px;
}

.infra-rack__throughput-val {
  color: var(--accent);
  font-size: 0.58rem;
}

.infra-rack__throughput-wave {
  height: 50px;
}

.infra-rack__throughput-wave svg {
  width: 100%;
  height: 100%;
}

.infra-rack__wave-line {
  stroke-linecap: round;
}

/* Status row */
.infra-rack__status-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 0 0;
  border-top: 1px solid rgba(255,255,255,0.05);
  font-family: var(--font-mono);
  font-size: 0.6rem;
  letter-spacing: 0.08em;
  color: rgba(255,255,255,0.4);
}

.infra-rack__status-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #22C55E;
  animation: infraPulse 2s ease-in-out infinite;
  flex-shrink: 0;
}


/* ═══════════════════════════════════════════
   SECTIONS — Shared layout
   ═══════════════════════════════════════════ */

.infra-section { position: relative; overflow: hidden; }

.infra-section__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4xl);
  align-items: center;
  max-width: var(--container-max);
  margin: 0 auto;
}


.infra-section__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.infra-section__label-dot {
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--accent);
  animation: infraPulse 2.4s ease-in-out infinite;
  margin-right: 6px;
  vertical-align: middle;
}

.infra-section__title {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 2.5vw, 2.2rem);
  font-weight: 800;
  color: var(--text-primary);
  letter-spacing: -0.02em;
  line-height: 1.15;
  margin: var(--space-sm) 0;
}

.infra-section__text {
  font-size: 0.95rem;
  color: var(--text-secondary);
  line-height: 1.8;
}

/* Feature list */
.infra-section__features {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  margin-top: var(--space-lg);
}

.infra-section__feature {
  display: flex;
  gap: var(--space-md);
  align-items: flex-start;
}

.infra-section__feature-icon {
  width: 36px; height: 36px;
  flex-shrink: 0;
  color: var(--accent);
  padding: 6px;
  border: 1px solid var(--border-accent);
  border-radius: var(--radius-md);
  background: var(--accent-glow);
  display: flex;
  align-items: center;
  justify-content: center;
}

.infra-section__feature-icon svg {
  width: 100%; height: 100%;
}

.infra-section__feature strong {
  display: block;
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: 2px;
}

.infra-section__feature span {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.6;
}

/* Circuit background for section 01 */
.infra-section__circuit {
  position: absolute;
  inset: 0;
  opacity: 0.04;
  background-image:
    linear-gradient(90deg, var(--accent) 1px, transparent 1px),
    linear-gradient(var(--accent) 1px, transparent 1px);
  background-size: 80px 80px;
  mask-image: radial-gradient(ellipse 60% 60% at 80% 50%, black 0%, transparent 70%);
  -webkit-mask-image: radial-gradient(ellipse 60% 60% at 80% 50%, black 0%, transparent 70%);
  pointer-events: none;
}


/* ═══════════════════════════════════════════
   SECTION 01 — Infrastructure Dashboard
   ═══════════════════════════════════════════ */

.infra-dashboard {
  border-radius: var(--radius-xl);
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(28px) saturate(160%);
  -webkit-backdrop-filter: blur(28px) saturate(160%);
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 24px 64px rgba(0,0,0,0.4);
  overflow: hidden;
}

.infra-dashboard__header {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: 14px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.infra-dashboard__dots {
  display: flex;
  gap: 5px;
}

.infra-dashboard__dots span {
  width: 8px; height: 8px;
  border-radius: 50%;
}

.infra-dashboard__dots span:nth-child(1) { background: #EF4444; }
.infra-dashboard__dots span:nth-child(2) { background: #FBBF24; }
.infra-dashboard__dots span:nth-child(3) { background: #22C55E; }

.infra-dashboard__title-row {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: center;
}

.infra-dashboard__logo {
  height: 56px;
  width: auto;
  opacity: 0.3;
}

.infra-dashboard__logo--light { display: none; }

.infra-dashboard__title {
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.4);
}

.infra-dashboard__badge {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  color: #22C55E;
}

.infra-dashboard__badge-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #22C55E;
  animation: infraPulse 1.5s ease-in-out infinite;
}

.infra-dashboard__body {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* Metrics */
.infra-dashboard__metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.infra-dashboard__metric {
  text-align: center;
  padding: 16px 10px;
  border-radius: var(--radius-md);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
}

.infra-dashboard__metric--accent {
  border-color: var(--border-accent);
  background: var(--accent-glow);
}

.infra-dashboard__metric-val {
  font-family: var(--font-display);
  font-size: 1.8rem;
  font-weight: 800;
  color: var(--text-primary);
  letter-spacing: -0.03em;
  line-height: 1;
}

.infra-dashboard__metric--accent .infra-dashboard__metric-val {
  color: var(--accent);
}

.infra-dashboard__metric-suffix {
  font-family: var(--font-mono);
  font-size: 0.9rem;
  color: var(--text-muted);
}

.infra-dashboard__metric-label {
  display: block;
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  color: rgba(255,255,255,0.3);
  margin-top: 6px;
}

/* Chart */
.infra-dashboard__chart {
  border-radius: var(--radius-lg);
  background: rgba(0,0,0,0.15);
  border: 1px solid rgba(255,255,255,0.05);
  overflow: hidden;
}

.infra-dashboard__chart-header {
  padding: 10px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  font-size: 0.5rem;
  letter-spacing: 0.14em;
  color: rgba(255,255,255,0.25);
}

.infra-dashboard__chart-bars {
  display: flex;
  align-items: flex-end;
  justify-content: space-around;
  padding: 16px 14px 8px;
  height: 120px;
  gap: 6px;
}

.infra-dashboard__bar-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  flex: 1;
  height: 100%;
  justify-content: flex-end;
}

.infra-dashboard__bar-col > span {
  font-size: 0.42rem;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.2);
}

.infra-dashboard__bar {
  width: 100%;
  max-width: 28px;
  height: 0;
  border-radius: 3px 3px 0 0;
  background: linear-gradient(to top, rgba(59,130,246,0.5), rgba(59,130,246,0.2));
  transition: height 0.8s cubic-bezier(0.16,1,0.3,1);
}


/* ═══════════════════════════════════════════
   SECTION 02 — CLOUD
   ═══════════════════════════════════════════ */

/* Particles background — multiple rising data bubbles */
.infra-cloud__particles {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}

.infra-cloud__particles::before,
.infra-cloud__particles::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  background: var(--accent);
  opacity: 0;
}

.infra-cloud__particles::before {
  width: 4px; height: 4px;
  left: 15%;
  bottom: 0;
  box-shadow:
    0 0 0 var(--accent),
    20vw 40px 0 rgba(59,130,246,0.4),
    45vw -20px 0 rgba(59,130,246,0.3),
    65vw 60px 0 rgba(59,130,246,0.5),
    80vw 10px 0 rgba(59,130,246,0.25);
  animation: particleRise 7s ease-in-out infinite;
}

.infra-cloud__particles::after {
  width: 3px; height: 3px;
  left: 35%;
  bottom: 0;
  box-shadow:
    0 0 0 rgba(59,130,246,0.5),
    15vw 30px 0 rgba(59,130,246,0.3),
    30vw -10px 0 rgba(59,130,246,0.4),
    50vw 50px 0 rgba(59,130,246,0.2),
    70vw 20px 0 rgba(59,130,246,0.35);
  animation: particleRise 9s ease-in-out infinite 2s;
}

/* Extra particles via child spans in HTML — CSS fallback with more pseudo layers */
.infra-cloud__particles {
  background-image:
    radial-gradient(circle 2px at 10% 80%, rgba(59,130,246,0.15) 0%, transparent 100%),
    radial-gradient(circle 3px at 25% 90%, rgba(59,130,246,0.1) 0%, transparent 100%),
    radial-gradient(circle 2px at 40% 85%, rgba(59,130,246,0.12) 0%, transparent 100%),
    radial-gradient(circle 2px at 55% 75%, rgba(59,130,246,0.08) 0%, transparent 100%),
    radial-gradient(circle 3px at 70% 88%, rgba(59,130,246,0.1) 0%, transparent 100%),
    radial-gradient(circle 2px at 85% 82%, rgba(59,130,246,0.12) 0%, transparent 100%),
    radial-gradient(circle 2px at 92% 70%, rgba(59,130,246,0.08) 0%, transparent 100%);
  background-size: 6px 6px, 8px 8px, 5px 5px, 4px 4px, 7px 7px, 5px 5px, 4px 4px;
  background-repeat: no-repeat;
  animation: particleField 12s ease-in-out infinite;
}

@keyframes particleField {
  0%   { background-position: 10% 95%, 25% 100%, 40% 98%, 55% 92%, 70% 100%, 85% 96%, 92% 90%; opacity: 0; }
  15%  { opacity: 1; }
  50%  { background-position: 12% 45%, 22% 35%, 42% 40%, 58% 50%, 68% 30%, 82% 42%, 90% 55%; }
  85%  { opacity: 1; }
  100% { background-position: 14% 5%, 20% 0%, 44% 8%, 60% 2%, 66% 10%, 80% 0%, 88% 12%; opacity: 0; }
}

/* Cloud dashboard */
.infra-cloud-dash {
  border-radius: var(--radius-xl);
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(28px) saturate(160%);
  -webkit-backdrop-filter: blur(28px) saturate(160%);
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 24px 64px rgba(0,0,0,0.4);
  overflow: hidden;
}

.infra-cloud-dash__header {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: 14px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.infra-cloud-dash__dots {
  display: flex;
  gap: 5px;
}

.infra-cloud-dash__dots span {
  width: 8px; height: 8px;
  border-radius: 50%;
}

.infra-cloud-dash__dots span:nth-child(1) { background: #EF4444; }
.infra-cloud-dash__dots span:nth-child(2) { background: #FBBF24; }
.infra-cloud-dash__dots span:nth-child(3) { background: #22C55E; }

.infra-cloud-dash__title-row {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: center;
}

.infra-cloud-dash__logo {
  height: 56px;
  width: auto;
  opacity: 0.3;
}

.infra-cloud-dash__logo--light { display: none; }

.infra-cloud-dash__title {
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.4);
}

.infra-cloud-dash__badge {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  color: #22C55E;
}

.infra-cloud-dash__badge-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #22C55E;
  animation: infraPulse 1.5s ease-in-out infinite;
}

.infra-cloud-dash__body {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* Providers */
.infra-cloud-dash__providers {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.infra-cloud-dash__provider {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 16px 12px;
  border-radius: var(--radius-md);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  font-family: var(--font-mono);
  font-size: 0.6rem;
  letter-spacing: 0.1em;
  color: var(--text-muted);
  transition: border-color 0.3s, background 0.3s;
}

.infra-cloud-dash__provider:hover {
  border-color: var(--border-accent);
  background: var(--accent-glow);
}

.infra-cloud-dash__provider-logo {
  height: 28px;
  width: auto;
  max-width: 80px;
  opacity: 0.6;
  transition: opacity 0.3s;
}

.infra-cloud-dash__provider:hover .infra-cloud-dash__provider-logo {
  opacity: 1;
}

.infra-cloud-dash__provider-status {
  font-size: 0.48rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 2px 8px;
  border-radius: 100px;
}

.infra-cloud-dash__provider-status--ok {
  color: #22C55E;
  background: rgba(34,197,94,0.1);
  border: 1px solid rgba(34,197,94,0.2);
}

/* Migration progress */
.infra-cloud-dash__migration {
  border-radius: var(--radius-lg);
  background: rgba(0,0,0,0.15);
  border: 1px solid rgba(255,255,255,0.05);
  padding: 16px;
}

.infra-cloud-dash__migration-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-mono);
  font-size: 0.52rem;
  letter-spacing: 0.14em;
  color: rgba(255,255,255,0.3);
  margin-bottom: 12px;
}

.infra-cloud-dash__migration-pct {
  color: var(--accent);
  font-weight: 700;
  font-size: 0.6rem;
}

.infra-cloud-dash__migration-track {
  height: 4px;
  border-radius: 2px;
  background: rgba(255,255,255,0.06);
  overflow: hidden;
  margin-bottom: 14px;
}

.infra-cloud-dash__migration-fill {
  height: 100%;
  width: 0%;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--accent), rgba(59,130,246,0.5));
  transition: width 1.5s cubic-bezier(0.16,1,0.3,1);
}

.infra-cloud-dash__migration-steps {
  display: flex;
  justify-content: space-between;
}

.infra-cloud-dash__migration-step {
  font-family: var(--font-mono);
  font-size: 0.5rem;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.2);
  position: relative;
  padding-left: 12px;
}

.infra-cloud-dash__migration-step::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 6px; height: 6px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.15);
  background: transparent;
}

.infra-cloud-dash__migration-step--done {
  color: #22C55E;
}

.infra-cloud-dash__migration-step--done::before {
  background: #22C55E;
  border-color: #22C55E;
}

.infra-cloud-dash__migration-step--active {
  color: var(--accent);
}

.infra-cloud-dash__migration-step--active::before {
  background: var(--accent);
  border-color: var(--accent);
  animation: infraPulse 2s ease-in-out infinite;
}

/* Euro / Dollar swap based on lang */
.infra-currency--usd { display: none; }
.infra-currency--eur { display: inline; }

[data-lang="en"] .infra-currency--eur { display: none; }
[data-lang="en"] .infra-currency--usd { display: inline; }


/* ═══════════════════════════════════════════
   SECTION 03 — RÉSEAUX
   ═══════════════════════════════════════════ */

/* Hexgrid background */
.infra-hexgrid {
  position: absolute;
  inset: 0;
  opacity: 0.03;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='49' viewBox='0 0 28 49'%3E%3Cg fill-rule='evenodd'%3E%3Cg fill='%233B82F6' fill-opacity='1'%3E%3Cpath d='M13.99 9.25l13 7.5v15l-13 7.5L1 31.75v-15l12.99-7.5zM3 17.9v12.7l10.99 6.34 11-6.35V17.9l-11-6.34L3 17.9z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
  pointer-events: none;
}

/* Network topology widget */
.infra-network {
  border-radius: var(--radius-xl);
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(28px) saturate(160%);
  -webkit-backdrop-filter: blur(28px) saturate(160%);
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 24px 64px rgba(0,0,0,0.4);
  overflow: hidden;
}

.infra-network__header {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: 14px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.infra-network__dots {
  display: flex;
  gap: 5px;
}

.infra-network__dots span {
  width: 8px; height: 8px;
  border-radius: 50%;
}

.infra-network__dots span:nth-child(1) { background: #EF4444; }
.infra-network__dots span:nth-child(2) { background: #FBBF24; }
.infra-network__dots span:nth-child(3) { background: #22C55E; }

.infra-network__title {
  flex: 1;
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.4);
  text-align: center;
}

.infra-network__badge {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  color: #22C55E;
}

.infra-network__badge-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #22C55E;
  animation: infraPulse 1.5s ease-in-out infinite;
}

.infra-network__body {
  padding: 20px;
}

.infra-network__svg {
  width: 100%;
  height: auto;
}

.infra-network__node {
  animation: nodePulse 3s ease-in-out infinite;
}

.infra-network__node--end {
  animation: nodePulse 3s ease-in-out infinite 1s;
}

.infra-network__link {
  transition: opacity 0.3s;
}

.infra-network__packet--1 {
  animation: packetMove1 4s ease-in-out infinite;
}

.infra-network__packet--2 {
  animation: packetMove2 4s ease-in-out infinite 1.5s;
}

.infra-network__packet--3 {
  animation: packetMove3 3s ease-in-out infinite 0.8s;
}


/* ═══════════════════════════════════════════
   CAROUSEL (kept from original)
   ═══════════════════════════════════════════ */

.sp-section--logos {
  padding-top: var(--space-3xl);
  padding-bottom: var(--space-3xl);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  overflow: hidden;
}

.sp-carousel {
  position: relative;
  overflow: hidden;
  mask-image: linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%);
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%);
}

.sp-carousel__track {
  display: flex;
  flex-wrap: nowrap;
  gap: var(--space-lg);
  align-items: center;
  width: max-content;
  animation: carouselScroll 32s linear infinite;
}

.sp-carousel:hover .sp-carousel__track { animation-play-state: paused; }

@keyframes carouselScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.sp-carousel__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex-shrink: 0;
  opacity: 0.55;
  transition: opacity var(--transition-base), background var(--transition-base), border-color var(--transition-base);
  cursor: default;
  padding: var(--space-md) var(--space-xl);
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  min-width: 100px;
}

.sp-carousel__item:hover { opacity: 1; border-color: var(--border); background: var(--bg-card); }

.sp-carousel__logo {
  height: 36px; width: auto; max-width: 140px;
  display: block; flex-shrink: 0;
  transition: transform var(--transition-base);
}

.sp-carousel__item:hover .sp-carousel__logo { transform: scale(1.05); }

.sp-carousel__name {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.55rem;
  letter-spacing: 0.12em;
  color: var(--text-muted);
  text-transform: uppercase;
  white-space: nowrap;
  text-align: center;
  margin-top: 4px;
}


/* ═══════════════════════════════════════════
   COMPARATIF AVANT / APRÈS (kept)
   ═══════════════════════════════════════════ */

.sp-compare {
  display: grid;
  grid-template-columns: 1fr 64px 1fr;
  max-width: 1000px;
  margin: 0 auto;
  align-items: stretch;
}

.sp-compare__col { border-radius: var(--radius-xl); overflow: hidden; background: var(--bg-card); border: 1px solid var(--border); }
.sp-compare__col--after { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent-glow), 0 24px 48px rgba(0,0,0,0.15); }

.sp-compare__header { padding: var(--space-md) var(--space-xl); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: var(--space-sm); }
.sp-compare__col--after .sp-compare__header { border-bottom-color: var(--border-accent); background: var(--accent-glow); }
.sp-compare__col--after .sp-compare__header::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); flex-shrink: 0; animation: labelPulse 2s ease-in-out infinite; }

.sp-compare__tag { font-family: var(--font-mono); font-size: 0.65rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-muted); }
.sp-compare__tag--after { color: var(--accent); }

.sp-compare__list { list-style: none; padding: var(--space-lg) var(--space-xl); display: flex; flex-direction: column; }
.sp-compare__list li { font-size: 0.9rem; color: var(--text-secondary); line-height: 1.5; padding: var(--space-md) 0 var(--space-md) 2.2rem; position: relative; border-bottom: 1px solid var(--border); }
.sp-compare__list li:last-child { border-bottom: none; }
.sp-compare__list li::before { content: '✕'; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; font-size: 0.6rem; font-weight: 800; color: #EF4444; background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.15); border-radius: 50%; }
.sp-compare__list--after li { color: var(--text-primary); }
.sp-compare__list--after li::before { content: '✓'; color: var(--accent); font-size: 0.65rem; background: var(--accent-glow); border-color: var(--border-accent); }

.sp-compare__divider { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-md); }
.sp-compare__divider-line { flex: 1; width: 1px; background: linear-gradient(to bottom, transparent, var(--border), transparent); }
.sp-compare__divider-icon { font-size: 0.85rem; color: var(--accent); width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--border-accent); border-radius: 50%; background: var(--bg-card); flex-shrink: 0; }

.sp-compare-controls { display: flex; justify-content: flex-end; max-width: 1000px; margin: 0 auto var(--space-xl); }
.sp-compare-toggle { display: flex; align-items: center; gap: 10px; padding: 8px 20px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 100px; color: var(--text-muted); font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.15em; text-transform: uppercase; cursor: pointer; transition: border-color 0.3s, color 0.3s, background 0.3s, box-shadow 0.3s; }
.sp-compare-toggle:hover { border-color: var(--border-accent); color: var(--accent); background: var(--accent-glow); }
.sp-compare-toggle.active { border-color: var(--accent); color: var(--accent); background: var(--accent-glow); box-shadow: 0 0 20px var(--accent-glow); }
.sp-compare-toggle__dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex-shrink: 0; transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1); }
.sp-compare-toggle.active .sp-compare-toggle__dot { transform: scale(1.6); }

/* Entry animation */
.sp-compare__col--before { opacity: 0; transform: translateX(-36px); transition: transform 0.72s cubic-bezier(0.16,1,0.3,1) 0s, opacity 0.6s ease 0s, filter 0.55s ease, box-shadow 0.55s ease; }
.sp-compare__col--after  { opacity: 0; transform: translateX(36px);  transition: transform 0.72s cubic-bezier(0.16,1,0.3,1) 0.14s, opacity 0.6s ease 0.14s, filter 0.55s ease, box-shadow 0.55s ease; }
.sp-compare__divider { opacity: 0; transition: opacity 0.5s ease 0.28s, transform 0.6s cubic-bezier(0.16,1,0.3,1), filter 0.4s ease; }
.sp-compare.visible .sp-compare__col--before, .sp-compare.visible .sp-compare__col--after { opacity: 1; transform: translateX(0); }
.sp-compare.visible .sp-compare__divider { opacity: 1; }

/* Focus mode */
.sp-compare.visible.sp-compare--focus .sp-compare__col--before { transform: translateX(-18%) scale(0.87); opacity: 0.12; filter: blur(3px); pointer-events: none; }
.sp-compare.visible.sp-compare--focus .sp-compare__divider { opacity: 0; transform: scale(0.3); pointer-events: none; }
.sp-compare.visible.sp-compare--focus .sp-compare__col--after { transform: translateX(-52%) scale(1.05); box-shadow: 0 0 0 1px rgba(59,130,246,0.55), 0 40px 90px rgba(0,0,0,0.4), 0 0 80px var(--accent-glow-lg); }

.sp-compare__impact { margin: 0 var(--space-xl) var(--space-lg); padding: var(--space-lg); border: 1px solid var(--border-accent); border-radius: var(--radius-md); background: var(--accent-glow); opacity: 0; max-height: 0; overflow: hidden; transition: opacity 0.4s ease, max-height 0.45s ease; }
.sp-compare.visible.sp-compare--focus .sp-compare__impact { opacity: 1; max-height: 160px; transition: opacity 0.4s ease 0.35s, max-height 0.45s ease 0.3s; }
.sp-compare__impact-label { display: block; font-family: var(--font-mono); font-size: 0.55rem; letter-spacing: 0.15em; color: var(--accent); text-transform: uppercase; margin-bottom: 8px; }
.sp-compare__impact-stat { display: block; font-family: var(--font-display); font-size: 2.6rem; font-weight: 800; color: var(--accent); letter-spacing: -0.04em; line-height: 1; }
.sp-compare__impact-desc { display: block; font-size: 0.82rem; color: var(--text-secondary); margin-top: 4px; line-height: 1.4; }


/* ═══════════════════════════════════════════
   STEPS (kept)
   ═══════════════════════════════════════════ */

.sp-steps { display: flex; flex-direction: column; gap: 0; max-width: 800px; margin: 0 auto; position: relative; }
.sp-steps__track { position: absolute; left: 29px; top: 36px; bottom: 36px; width: 2px; background: linear-gradient(to bottom, var(--accent) 0%, rgba(59,130,246,0.35) 80%, transparent 100%); box-shadow: 0 0 6px rgba(59,130,246,0.6), 0 0 18px rgba(59,130,246,0.25); transform-origin: top center; transform: scaleY(0); transition: transform 1.55s cubic-bezier(0.16,1,0.3,1); z-index: 0; border-radius: 2px; }
.sp-steps.is-live .sp-steps__track { transform: scaleY(1); }

.sp-step { display: flex; gap: var(--space-xl); padding: var(--space-xl) 0; align-items: flex-start; position: relative; }
.sp-step:not(:last-child) { border-bottom: 1px solid var(--border); }

.sp-step__number-wrap { position: relative; flex-shrink: 0; display: flex; align-items: center; justify-content: center; z-index: 2; margin-top: 2px; background: var(--bg-primary); border-radius: var(--radius-sm); padding: 2px; }
.sp-step__number-ring { position: absolute; inset: -7px; border-radius: var(--radius-md); border: 1px solid var(--accent); background: var(--bg-primary); box-shadow: 0 0 14px var(--accent-glow), 0 0 32px rgba(59,130,246,0.15); opacity: 0; transform: scale(0.75); transition: opacity 0.45s ease, transform 0.45s cubic-bezier(0.34,1.56,0.64,1); pointer-events: none; }
.sp-step__number { font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.15em; color: var(--accent); background: var(--accent-glow); border: 1px solid var(--border-accent); border-radius: var(--radius-sm); padding: 4px 10px; flex-shrink: 0; position: relative; z-index: 1; transition: border-color 0.4s ease, box-shadow 0.4s ease; }

.sp-step__content { opacity: 0; transform: translateX(18px); transition: opacity 0.5s ease, transform 0.5s cubic-bezier(0.16,1,0.3,1); }
.sp-step__title { font-family: var(--font-display); font-size: 1.1rem; font-weight: 700; color: var(--text-primary); margin-bottom: var(--space-sm); letter-spacing: -0.01em; }
.sp-step__text { font-size: 0.9rem; color: var(--text-secondary); line-height: 1.7; }

/* Cascade triggers */
.sp-steps.is-live .sp-step[data-step="1"] .sp-step__number-ring { opacity: 1; transform: scale(1); transition-delay: 0.05s; }
.sp-steps.is-live .sp-step[data-step="1"] .sp-step__content { opacity: 1; transform: none; transition-delay: 0.1s; }
.sp-steps.is-live .sp-step[data-step="1"] .sp-step__number { border-color: var(--accent); box-shadow: 0 0 10px var(--accent-glow); }
.sp-steps.is-live .sp-step[data-step="2"] .sp-step__number-ring { opacity: 1; transform: scale(1); transition-delay: 0.42s; }
.sp-steps.is-live .sp-step[data-step="2"] .sp-step__content { opacity: 1; transform: none; transition-delay: 0.48s; }
.sp-steps.is-live .sp-step[data-step="2"] .sp-step__number { border-color: var(--accent); box-shadow: 0 0 10px var(--accent-glow); transition-delay: 0.42s; }
.sp-steps.is-live .sp-step[data-step="3"] .sp-step__number-ring { opacity: 1; transform: scale(1); transition-delay: 0.82s; }
.sp-steps.is-live .sp-step[data-step="3"] .sp-step__content { opacity: 1; transform: none; transition-delay: 0.88s; }
.sp-steps.is-live .sp-step[data-step="3"] .sp-step__number { border-color: var(--accent); box-shadow: 0 0 10px var(--accent-glow); transition-delay: 0.82s; }
.sp-steps.is-live .sp-step[data-step="4"] .sp-step__number-ring { opacity: 1; transform: scale(1); transition-delay: 1.22s; }
.sp-steps.is-live .sp-step[data-step="4"] .sp-step__content { opacity: 1; transform: none; transition-delay: 1.28s; }
.sp-steps.is-live .sp-step[data-step="4"] .sp-step__number { border-color: var(--accent); box-shadow: 0 0 10px var(--accent-glow); transition-delay: 1.22s; }


/* ═══════════════════════════════════════════
   AUDIENCE GRID — Integrated cards
   ═══════════════════════════════════════════ */

.infra-audience-grid {
  margin-top: var(--space-3xl);
  padding-top: var(--space-3xl);
  border-top: 1px solid var(--border);
}

.infra-audience-grid__title {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: -0.01em;
  margin-bottom: var(--space-xl);
  text-align: center;
}

.infra-audience-grid__cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-lg);
  max-width: var(--container-max);
  margin: 0 auto;
}

.infra-audience-card {
  padding: var(--space-xl);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  transition: border-color 0.3s, transform 0.3s, box-shadow 0.3s;
}

.infra-audience-card:hover {
  border-color: var(--border-accent);
  transform: translateY(-3px);
  box-shadow: var(--shadow-hover), 0 0 30px var(--accent-glow);
}

.infra-audience-card__icon {
  width: 40px; height: 40px;
  color: var(--accent);
  padding: 8px;
  border: 1px solid var(--border-accent);
  border-radius: var(--radius-md);
  background: var(--accent-glow);
  margin-bottom: var(--space-xs);
}

.infra-audience-card__icon svg { width: 100%; height: 100%; }

.infra-audience-card h4 {
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: -0.01em;
}

.infra-audience-card p {
  font-size: 0.82rem;
  color: var(--text-secondary);
  line-height: 1.6;
  flex: 1;
}

.infra-audience-card__tags {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: var(--space-xs);
}

.infra-audience-card__tags span {
  font-family: var(--font-mono);
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  background: var(--accent-glow);
  border: 1px solid var(--border-accent);
  padding: 3px 10px;
  border-radius: 100px;
}


/* ═══════════════════════════════════════════
   LIGHT THEME
   ═══════════════════════════════════════════ */

[data-theme="light"] .infra-hero__status-bar {
  background: rgba(0,0,0,0.03);
  border-color: rgba(0,0,0,0.08);
}

[data-theme="light"] .infra-hero__status-item strong { color: var(--text-primary); }

[data-theme="light"] .infra-hero__chip {
  background: rgba(37,99,235,0.06);
  border-color: rgba(37,99,235,0.2);
}

/* Glassmorphism panels — light */
[data-theme="light"] .infra-hero__rack,
[data-theme="light"] .infra-dashboard,
[data-theme="light"] .infra-cloud-dash,
[data-theme="light"] .infra-network {
  background: rgba(255,255,255,0.8);
  border-color: rgba(0,0,0,0.08);
  box-shadow: 0 24px 64px rgba(0,0,0,0.08);
}

[data-theme="light"] .infra-rack__header,
[data-theme="light"] .infra-dashboard__header,
[data-theme="light"] .infra-cloud-dash__header,
[data-theme="light"] .infra-network__header {
  border-bottom-color: rgba(0,0,0,0.06);
}

[data-theme="light"] .infra-rack__title,
[data-theme="light"] .infra-dashboard__title,
[data-theme="light"] .infra-cloud-dash__title,
[data-theme="light"] .infra-network__title {
  color: rgba(0,0,0,0.28);
}

[data-theme="light"] .infra-rack__unit,
[data-theme="light"] .infra-dashboard__metric,
[data-theme="light"] .infra-cloud-dash__provider {
  background: rgba(0,0,0,0.03);
  border-color: rgba(0,0,0,0.06);
}

[data-theme="light"] .infra-rack__logo--dark  { display: none; }
[data-theme="light"] .infra-rack__logo--light { display: block; filter: none; }

[data-theme="light"] .infra-rack__metrics {
  background: rgba(0,0,0,0.03);
}

[data-theme="light"] .infra-rack__metric {
  background: rgba(255,255,255,0.6);
}

[data-theme="light"] .infra-rack__metric-label {
  color: rgba(0,0,0,0.3);
}

[data-theme="light"] .infra-rack__throughput {
  background: rgba(0,0,0,0.02);
  border-color: rgba(0,0,0,0.05);
}

[data-theme="light"] .infra-rack__throughput-header {
  color: rgba(0,0,0,0.25);
}

[data-theme="light"] .infra-rack__unit::before {
  background: rgba(255,255,255,0.9);
  border-color: rgba(37,99,235,0.2);
}

[data-theme="light"] .infra-rack__bar-row,
[data-theme="light"] .infra-rack__status-row {
  color: rgba(0,0,0,0.35);
}

[data-theme="light"] .infra-rack__bar {
  background: rgba(0,0,0,0.06);
}

[data-theme="light"] .infra-rack__status-row {
  border-top-color: rgba(0,0,0,0.05);
}

[data-theme="light"] .infra-dashboard__metric-label,
[data-theme="light"] .infra-dashboard__chart-header {
  color: rgba(0,0,0,0.3);
}

[data-theme="light"] .infra-dashboard__chart,
[data-theme="light"] .infra-cloud-dash__migration {
  background: rgba(0,0,0,0.02);
  border-color: rgba(0,0,0,0.05);
}

[data-theme="light"] .infra-dashboard__bar-col > span,
[data-theme="light"] .infra-cloud-dash__migration-header,
[data-theme="light"] .infra-cloud-dash__migration-step {
  color: rgba(0,0,0,0.25);
}

[data-theme="light"] .infra-cloud-dash__migration-track {
  background: rgba(0,0,0,0.06);
}

[data-theme="light"] .infra-cloud-dash__logo--dark  { display: none; }
[data-theme="light"] .infra-cloud-dash__logo--light { display: block; filter: none; }

[data-theme="light"] .infra-dashboard__logo--dark  { display: none; }
[data-theme="light"] .infra-dashboard__logo--light { display: block; filter: none; }

[data-theme="light"] .infra-hero__sweep::after {
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(37,99,235,0.02) 45%,
    rgba(37,99,235,0.04) 50%,
    rgba(37,99,235,0.02) 55%,
    transparent 100%
  );
}

[data-theme="light"] .infra-hero__scan::after {
  background: linear-gradient(90deg, transparent 10%, rgba(37,99,235,0.15) 50%, transparent 90%);
  box-shadow: 0 0 20px rgba(37,99,235,0.1);
}

[data-theme="light"] .infra-section__circuit {
  opacity: 0.03;
}

[data-theme="light"] .infra-hexgrid {
  opacity: 0.025;
}


/* ═══════════════════════════════════════════
   RESPONSIVE
   ═══════════════════════════════════════════ */

@media (max-width: 1100px) {
  .infra-hero__inner {
    grid-template-columns: 1fr 360px;
    padding: 0 var(--space-xl);
    gap: var(--space-2xl);
  }
}

@media (max-width: 900px) {
  .infra-hero {
    padding-top: 100px;
    padding-bottom: 40px;
  }

  .infra-hero__inner {
    grid-template-columns: 1fr;
    padding: 0 var(--space-lg);
    gap: var(--space-xl);
    max-width: 700px;
  }

  /* Center hero content like auto/cyber pages */
  .infra-hero__content {
    align-items: center;
    text-align: center;
  }

  .infra-hero__desc {
    text-align: center;
  }

  .infra-hero__actions {
    justify-content: center;
  }

  .infra-hero__status-bar {
    justify-content: center;
    gap: var(--space-md);
    padding: 10px 16px;
    font-size: 0.65rem;
    flex-wrap: wrap;
  }

  .infra-hero__chips {
    justify-content: center;
  }

  /* Hide system monitor on mobile — hero is the intro */
  .infra-hero__rack-wrap {
    display: none;
  }

  .infra-hero__title {
    font-size: clamp(3.5rem, 14vw, 6rem);
  }

  .infra-hero__scroll { display: none; }

  /* Disable float on mobile */
  .infra-hero__rack,
  .infra-dashboard,
  .infra-cloud-dash,
  .infra-network {
    animation: none;
  }

  .infra-section__grid {
    grid-template-columns: 1fr;
    gap: var(--space-2xl);
  }

  .infra-audience-grid__cards {
    grid-template-columns: repeat(2, 1fr);
  }

  .infra-cloud-dash__providers {
    grid-template-columns: repeat(3, 1fr);
  }

  .infra-cloud-dash__body {
    padding: 16px;
  }
}

@media (max-width: 700px) {
  .sp-compare { grid-template-columns: 1fr; gap: 0; }
  .sp-compare__divider { flex-direction: row; height: 48px; padding: 0 var(--space-lg); }
  .sp-compare__divider-line { flex: 1; width: auto; height: 1px; }

  .sp-compare__col { border-radius: var(--radius-lg); }
  .sp-compare__col--before { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
  .sp-compare__col--after  { border-top-left-radius: 0; border-top-right-radius: 0; }

  .sp-compare__header { padding: var(--space-sm) var(--space-lg); }
  .sp-compare__list { padding: var(--space-md) var(--space-lg); }
  .sp-compare__list li { font-size: 0.82rem; padding: var(--space-sm) 0 var(--space-sm) 2rem; }
  .sp-compare__list li::before { width: 18px; height: 18px; font-size: 0.5rem; }

  /* Disable focus mode on mobile */
  .sp-compare-controls { display: none; }
  .sp-compare.visible.sp-compare--focus .sp-compare__col--before,
  .sp-compare.visible.sp-compare--focus .sp-compare__col--after { transform: none !important; opacity: 1 !important; filter: none !important; box-shadow: none !important; }
  .sp-compare.visible.sp-compare--focus .sp-compare__divider { opacity: 1 !important; transform: none !important; }

  .sp-compare__impact { margin: 0 var(--space-md) var(--space-md); padding: var(--space-md); }
  .sp-compare__impact-stat { font-size: 1.8rem; }
}

@media (max-width: 600px) {
  .infra-hero {
    padding-top: 80px;
  }

  .infra-hero__inner {
    padding: 0 var(--space-md);
  }

  .infra-hero__title {
    font-size: clamp(2.8rem, 16vw, 4.5rem);
  }

  .infra-hero__desc {
    font-size: 0.95rem;
  }

  .infra-hero__status-bar {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-md);
  }

  .infra-cloud-dash__providers {
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
  }

  .infra-cloud-dash__provider {
    padding: 10px 8px;
  }

  .infra-cloud-dash__provider-logo {
    height: 20px;
  }

  .infra-dashboard__metrics {
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
  }

  .infra-dashboard__metric {
    padding: 12px 6px;
  }

  .infra-dashboard__metric-val {
    font-size: 1.4rem;
  }

  .infra-audience-grid__cards {
    grid-template-columns: 1fr;
  }

  .sp-compare__impact-stat { font-size: 2rem; }
}

@media (max-width: 400px) {
  .infra-hero {
    padding-top: 64px;
  }

  .infra-hero__title {
    font-size: clamp(2.2rem, 14vw, 3.5rem);
  }

  .infra-hero__chips {
    flex-direction: column;
    gap: 6px;
  }

  .infra-cloud-dash__migration-steps {
    flex-wrap: wrap;
    gap: 8px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .infra-hero__sweep::after,
  .infra-hero__scan::after,
  .infra-network__packet--1,
  .infra-network__packet--2,
  .infra-network__packet--3,
  .infra-rack__led,
  .infra-cloud__particles,
  .infra-cloud__particles::before,
  .infra-cloud__particles::after {
    animation: none;
  }

  .infra-hero__rack,
  .infra-dashboard,
  .infra-cloud-dash,
  .infra-network {
    animation: none;
  }

  .sp-steps__track,
  .sp-step__number-ring,
  .sp-step__content {
    transition: none;
  }
}
