/* Download page (/download). Builds on tokens.css + styles.css; everything is scoped to .dl. */
.dl {
  --dl-cyan: #22d3ee;
  --dl-indigo: #6366f1;
  --dl-violet: #a855f7;
  --dl-grad: linear-gradient(120deg, var(--dl-cyan), var(--dl-indigo) 50%, var(--dl-violet));
  --dl-glow: color-mix(in srgb, var(--dl-indigo) 35%, transparent);
  --dl-chip: color-mix(in srgb, var(--dl-indigo) 10%, var(--dv-surface-2));
}
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Stage (always dark, in both themes) */
.dl-stage {
  position: relative; overflow: hidden; isolation: isolate;
  margin: 16px; border-radius: var(--dv-radius-2xl);
  background:
    radial-gradient(60rem 30rem at 85% 10%, rgba(168, 85, 247, 0.28), transparent 60%),
    radial-gradient(50rem 28rem at 10% 90%, rgba(34, 211, 238, 0.20), transparent 60%),
    #050816;
  color: #e6e9f5;
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 30px 80px -40px rgba(79, 70, 229, 0.6);
}
@media (min-width: 640px) { .dl-stage { margin: var(--dv-space-6); } }
.dl-grid-bg {
  position: absolute; inset: -40% -10% 0; z-index: -1;
  background-image:
    linear-gradient(rgba(129, 140, 248, 0.16) 1px, transparent 1px),
    linear-gradient(90deg, rgba(129, 140, 248, 0.16) 1px, transparent 1px);
  background-size: 44px 44px;
  transform: perspective(600px) rotateX(58deg);
  transform-origin: 50% 100%;
  mask-image: linear-gradient(to top, #000 10%, transparent 75%);
  -webkit-mask-image: linear-gradient(to top, #000 10%, transparent 75%);
  animation: dl-grid 6s linear infinite;
}
@keyframes dl-grid { to { background-position: 0 44px, 0 0; } }
.dl-stage-inner {
  display: grid; gap: var(--dv-space-8); align-items: center;
  padding-top: clamp(2.5rem, 7vw, 5.5rem); padding-bottom: clamp(2.5rem, 7vw, 5.5rem);
}
@media (min-width: 900px) { .dl-stage-inner { grid-template-columns: 1.15fr 1fr; } }
.dl-copy { min-width: 0; }
.dl-eyebrow {
  display: inline-flex; align-items: center; gap: 0.6rem;
  font: 600 var(--dv-text-xs)/1 var(--dv-font-mono); letter-spacing: 0.12em; text-transform: uppercase;
  color: #a5f3fc; padding: 0.5rem 0.85rem; border-radius: var(--dv-radius-full);
  background: rgba(34, 211, 238, 0.08); border: 1px solid rgba(34, 211, 238, 0.25);
}
.dl-pulse { width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--dl-cyan); box-shadow: 0 0 0 0 rgba(34, 211, 238, 0.7); animation: dl-pulse 2s infinite; }
@keyframes dl-pulse { 70% { box-shadow: 0 0 0 0.6rem rgba(34, 211, 238, 0); } 100% { box-shadow: 0 0 0 0 rgba(34, 211, 238, 0); } }
.dl-stage h1 {
  font-size: clamp(2.6rem, 8vw, 4.75rem); line-height: 1.02; letter-spacing: -0.035em;
  margin: var(--dv-space-6) 0 var(--dv-space-5); color: #fff;
}
.dl-gradient-text { background: var(--dl-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.dl-lede { font-size: clamp(1.05rem, 2.1vw, 1.25rem); color: #b8bfd6; max-width: 36rem; }
.dl-cta { display: flex; flex-wrap: wrap; gap: var(--dv-space-3); margin-top: var(--dv-space-8); }
.dl-detected { margin: var(--dv-space-4) 0 0; font: 500 var(--dv-text-sm)/1.5 var(--dv-font-mono); color: #8f9bc4; }

/* ---------- Buttons */
.dl-btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.85rem 1.4rem; border-radius: var(--dv-radius-full);
  font-weight: 650; text-decoration: none; line-height: 1.2; text-align: center;
  transition: transform var(--dv-motion-fast) var(--dv-motion-ease), box-shadow var(--dv-motion-base) var(--dv-motion-ease), background var(--dv-motion-fast);
}
.dl-btn-glow {
  color: #fff; background: var(--dl-grad); background-size: 160% 100%;
  box-shadow: 0 10px 30px -10px rgba(99, 102, 241, 0.85), inset 0 1px 0 rgba(255, 255, 255, 0.25);
}
.dl-btn-glow:hover { background-position: 100% 0; transform: translateY(-2px); box-shadow: 0 16px 40px -12px rgba(168, 85, 247, 0.9), inset 0 1px 0 rgba(255, 255, 255, 0.3); }
.dl-btn-glow::after { content: " ↓"; font-weight: 700; }
.dl-btn-ghost { color: #e6e9f5; border: 1px solid rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.04); }
.dl-btn-ghost:hover { background: rgba(255, 255, 255, 0.1); }
.dl-btn-block { display: flex; width: 100%; }
.dl-btn.is-pending { background: var(--dv-surface-2); color: var(--dv-fg-muted); box-shadow: none; border: 1px dashed var(--dv-line-strong); cursor: default; }
.dl-btn.is-pending::after { content: none; }
.dl-btn:active { transform: translateY(1px); }

/* ---------- Orbit visual */
.dl-orbit { position: relative; justify-self: center; width: min(100%, 26rem); aspect-ratio: 1; display: grid; place-items: center; }
.dl-core { width: 38%; filter: drop-shadow(0 0 40px rgba(99, 102, 241, 0.75)); animation: dl-float 6s ease-in-out infinite; }
@keyframes dl-float { 50% { transform: translateY(-10px); } }
.dl-ring { position: absolute; inset: 0; margin: auto; border-radius: 50%; border: 1px dashed rgba(165, 180, 252, 0.3); animation: dl-spin linear infinite; }
.dl-ring-1 { width: 58%; height: 58%; animation-duration: 18s; }
.dl-ring-2 { width: 79%; height: 79%; animation-duration: 26s; animation-direction: reverse; border-color: rgba(34, 211, 238, 0.3); }
.dl-ring-3 { width: 100%; height: 100%; animation-duration: 34s; border-style: solid; border-color: rgba(168, 85, 247, 0.22); }
.dl-node {
  position: absolute; top: 50%; left: 0; translate: -50% -50%;
  font: 600 var(--dv-text-xs)/1 var(--dv-font-mono); letter-spacing: 0.06em; color: #fff;
  padding: 0.45rem 0.7rem; border-radius: var(--dv-radius-full);
  background: rgba(15, 18, 40, 0.85); border: 1px solid rgba(165, 180, 252, 0.4);
  box-shadow: 0 0 18px rgba(99, 102, 241, 0.55);
  animation: dl-spin linear infinite reverse; animation-duration: inherit;
}
.dl-ring-2 .dl-node { left: 100%; animation-direction: normal; }
.dl-ring-3 .dl-node { top: 0; left: 50%; }
@keyframes dl-spin { to { rotate: 360deg; } }

/* ---------- Section headings */
.dl-h2 { font-size: clamp(1.6rem, 3.6vw, 2.25rem); letter-spacing: -0.02em; margin: var(--dv-space-12) 0 var(--dv-space-6); }

/* ---------- Platform cards */
.dl-cards { display: grid; gap: var(--dv-space-5); }
@media (min-width: 900px) { .dl-cards { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 640px) and (max-width: 899px) { .dl-cards { grid-template-columns: repeat(2, 1fr); } }
.dl-card {
  position: relative; display: flex; flex-direction: column; min-width: 0;
  padding: var(--dv-space-6); border-radius: var(--dv-radius-2xl);
  border: 1px solid transparent;
  background:
    linear-gradient(var(--dv-surface), var(--dv-surface)) padding-box,
    linear-gradient(140deg, color-mix(in srgb, var(--dl-cyan) 45%, transparent), var(--dv-line) 40%, var(--dv-line) 60%, color-mix(in srgb, var(--dl-violet) 45%, transparent)) border-box;
  transition: transform var(--dv-motion-base) var(--dv-motion-ease), box-shadow var(--dv-motion-base) var(--dv-motion-ease);
}
.dl-card:hover { transform: translateY(-4px); box-shadow: 0 24px 50px -28px var(--dl-glow); }
.dl-card.is-recommended {
  background:
    linear-gradient(var(--dv-surface), var(--dv-surface)) padding-box,
    var(--dl-grad) border-box;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--dl-indigo) 14%, transparent), 0 30px 60px -30px var(--dl-glow);
}
.dl-tag {
  display: none; position: absolute; top: -0.8rem; left: var(--dv-space-6); margin: 0;
  font: 700 var(--dv-text-2xs)/1 var(--dv-font-mono); letter-spacing: 0.12em; text-transform: uppercase;
  color: #fff; background: var(--dl-grad); padding: 0.45rem 0.7rem; border-radius: var(--dv-radius-full);
}
.dl-card.is-recommended .dl-tag { display: block; }
.dl-glyph {
  width: 3.5rem; height: 3.5rem; display: grid; place-items: center; border-radius: var(--dv-radius-xl);
  color: #fff; background: var(--dl-grad);
  box-shadow: 0 12px 28px -12px var(--dl-glow), inset 0 1px 0 rgba(255, 255, 255, 0.3);
}
.dl-glyph svg { width: 2rem; height: 2rem; }
.dl-card h3 { font-size: var(--dv-text-2xl); letter-spacing: -0.02em; margin: var(--dv-space-5) 0 var(--dv-space-1); }
.dl-sub { color: var(--dv-fg-muted); margin-bottom: var(--dv-space-4); }
.dl-specs { list-style: none; padding: 0; margin: 0 0 var(--dv-space-6); display: flex; flex-wrap: wrap; gap: var(--dv-space-2); }
.dl-specs li {
  font: 500 var(--dv-text-xs)/1 var(--dv-font-mono); color: var(--dv-fg-muted);
  padding: 0.4rem 0.6rem; border-radius: var(--dv-radius-full); background: var(--dl-chip); border: 1px solid var(--dv-line);
}
.dl-card .dl-btn-block { margin-top: auto; }
.dl-note { font-size: var(--dv-text-sm); color: var(--dv-fg-muted); margin: var(--dv-space-4) 0 0; }
.dl-elsewhere { margin-top: var(--dv-space-6); color: var(--dv-fg-muted); font-size: var(--dv-text-sm); text-align: center; }

/* ---------- Three steps */
.dl-flow { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--dv-space-4); counter-reset: none; }
@media (min-width: 800px) { .dl-flow { grid-template-columns: repeat(3, 1fr); } }
.dl-flow li {
  position: relative; min-width: 0; padding: var(--dv-space-6); border-radius: var(--dv-radius-xl);
  background: var(--dv-surface); border: 1px solid var(--dv-line); overflow: hidden;
}
.dl-flow li::before { content: ""; position: absolute; inset: 0 0 auto; height: 2px; background: var(--dl-grad); opacity: 0.8; }
.dl-flow-num {
  display: block; font: 700 2.5rem/1 var(--dv-font-mono); letter-spacing: -0.04em;
  background: var(--dl-grad); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.dl-flow h3 { margin: var(--dv-space-3) 0 var(--dv-space-2); }
.dl-flow p { margin: 0; color: var(--dv-fg-muted); }

/* ---------- Install guides */
.dl-guides { max-width: 52rem; }
.dl-guide { border: 1px solid var(--dv-line); border-radius: var(--dv-radius-xl); background: var(--dv-surface); margin-bottom: var(--dv-space-3); }
.dl-guide[open] { border-color: color-mix(in srgb, var(--dl-indigo) 45%, var(--dv-line)); }
.dl-guide summary {
  cursor: pointer; list-style: none; padding: var(--dv-space-4) var(--dv-space-5);
  font-weight: 650; display: flex; justify-content: space-between; align-items: center; gap: var(--dv-space-4);
}
.dl-guide summary::-webkit-details-marker { display: none; }
.dl-guide summary::after { content: "+"; font: 400 1.5rem/1 var(--dv-font-mono); color: var(--dv-accent-text); transition: rotate var(--dv-motion-base) var(--dv-motion-ease); }
.dl-guide[open] summary::after { rotate: 45deg; }
.dl-guide > :not(summary) { margin-left: var(--dv-space-5); margin-right: var(--dv-space-5); }
.dl-guide > :last-child { margin-bottom: var(--dv-space-5); }
.dl-guide .steps > li::before { background: var(--dl-grad); }

/* ---------- Trust strip */
.dl-trust { list-style: none; padding: 0; margin: var(--dv-space-12) 0 0; display: grid; gap: var(--dv-space-4); }
@media (min-width: 800px) { .dl-trust { grid-template-columns: repeat(3, 1fr); } }
.dl-trust li { min-width: 0; padding-left: var(--dv-space-4); border-left: 2px solid; border-image: var(--dl-grad) 1; }
.dl-trust strong { display: block; margin-bottom: var(--dv-space-1); }
.dl-trust span { color: var(--dv-fg-muted); font-size: var(--dv-text-sm); }

@media (prefers-reduced-motion: reduce) {
  .dl *, .dl *::before, .dl *::after { animation: none !important; }
}
