/* Downloader Guides — visual system
   Dark navy canvas, periwinkle→lavender gradient CTAs, rounded "window" panels
   with traffic-light chrome, subtle diagonal hatch, hand-drawn doodle accents.
   v3 — premium pass: embedded downloader widget, hub chrome, micro-interactions. */

:root {
  --bg: #0d0e15;
  --card: #171923;
  --card-2: #1d202c;
  --line: rgba(255, 255, 255, 0.08);
  --line-soft: rgba(255, 255, 255, 0.05);
  --text: #eef0f7;
  --body: #c6cadb;
  --muted: #a4a9bd;
  --faint: #6f7488;
  --peri: #767af0;
  --peri-soft: #c9cbfa;
  --grad: linear-gradient(90deg, #767af0 0%, #a3a7f5 55%, #c7c9fa 100%);
  --good: #4ade80;
  --warn: #fbbf24;
  --bad: #f87171;
  --radius: 16px;
  --shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.42), 0 2px 8px rgba(0, 0, 0, 0.3);
  --shadow-glow: 0 10px 26px rgba(118, 122, 240, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.35);
}

* { box-sizing: border-box; }
html { background: var(--bg); color-scheme: dark; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
body {
  margin: 0;
  color: var(--text);
  font: 16px/1.65 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", "Segoe UI", Roboto, sans-serif;
  background:
    radial-gradient(1100px 520px at 50% -140px, rgba(122, 122, 240, 0.16), transparent 65%),
    radial-gradient(900px 480px at 88% 112%, rgba(94, 90, 190, 0.10), transparent 60%),
    var(--bg);
  background-attachment: fixed;
}
::selection { background: rgba(122, 124, 240, 0.4); }
::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-thumb { background: #262a3a; border-radius: 8px; }
::-webkit-scrollbar-track { background: transparent; }

.wrap { max-width: 780px; margin: 0 auto; padding: 0 16px; }
a { color: #a5a9f6; }
a:hover { color: var(--peri-soft); }
:focus-visible { outline: 2px solid var(--peri); outline-offset: 2px; }

/* ---------- navbar ---------- */
.nav {
  border-bottom: 1px solid var(--line);
  background: rgba(13, 14, 21, 0.72);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  position: sticky; top: 0; z-index: 5;
}
.nav .wrap { display: flex; align-items: center; gap: 14px; padding-top: 10px; padding-bottom: 10px; flex-wrap: wrap; }
.brand {
  display: inline-flex; align-items: center; gap: 9px;
  font-weight: 700; font-size: 15.5px; color: var(--text); text-decoration: none; letter-spacing: -0.01em;
}
.brand::before {
  content: ""; width: 24px; height: 24px; border-radius: 7px; flex: none;
  background: url(logo.svg) center / contain no-repeat;
}
.nav nav { display: flex; gap: 4px; flex-wrap: wrap; margin-left: auto; }
.nav nav a {
  color: var(--muted); text-decoration: none; font-size: 14px;
  padding: 6px 10px; border-radius: 9px; transition: color .12s, background .12s;
}
.nav nav a:hover { color: var(--text); background: rgba(255, 255, 255, 0.05); }

/* ---------- typography / article ---------- */
h1 { font-size: 2rem; line-height: 1.22; letter-spacing: -0.015em; font-weight: 700; margin: 30px 0 12px; }
h2 { font-size: 1.2rem; font-weight: 650; margin: 0 0 8px; letter-spacing: -0.01em; }
h3 { font-size: 1rem; font-weight: 650; margin: 22px 0 6px; }
p { margin: 10px 0; color: var(--body); }
.lede, .sub { color: var(--muted); font-size: 1.05rem; }
.sub strong { color: var(--text); font-weight: 650; }
article { padding-bottom: 40px; }
ul, ol { padding-left: 22px; }
li { margin: 6px 0; color: var(--body); }
code { background: #10121a; border: 1px solid var(--line); border-radius: 6px; padding: 1px 7px; font-size: .92em; }
.small { font-size: 13px; color: var(--faint); }
.small a { color: var(--muted); }

/* breadcrumbs */
.crumbs { font-size: 13px; color: var(--faint); margin: 26px 0 0; }
.crumbs a { color: var(--muted); text-decoration: none; }
.crumbs a:hover { color: var(--peri-soft); }

/* editorial byline (E-E-A-T signal) */
.byline {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  margin: 4px 0 18px; font-size: 13px;
}
.byline .small { font-size: 13px; }
.byline .pill { margin-right: 2px; }

/* ---------- hero / window ---------- */
.hero { margin-top: 26px; }

/* the "window" — shared chrome for every downloader box */
.window {
  position: relative;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 56px 22px 22px;
  margin: 20px 0;
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  background:
    linear-gradient(transparent 38px, rgba(255, 255, 255, 0.07) 38px 39px, transparent 39px),
    repeating-linear-gradient(115deg, rgba(255, 255, 255, 0.022) 0 1px, transparent 1px 11px),
    linear-gradient(180deg, #1a1d29 0%, #151722 55%, #12141e 100%);
}
.window::before { /* traffic lights */
  content: "";
  position: absolute; top: 15px; left: 18px; width: 52px; height: 12px;
  background:
    radial-gradient(circle, #ff5f57 0 4.5px, transparent 5px) 0 0 / 12px 12px no-repeat,
    radial-gradient(circle, #febc2e 0 4.5px, transparent 5px) 20px 0 / 12px 12px no-repeat,
    radial-gradient(circle, #28c840 0 4.5px, transparent 5px) 40px 0 / 12px 12px no-repeat;
}
.win-title {
  position: absolute; top: 8px; left: 0; right: 0;
  text-align: center; font-size: 12.5px; color: #8a8fa5; letter-spacing: 0.01em;
  pointer-events: none;
}
.window .doodle { position: absolute; top: 52px; right: 14px; width: 112px; height: auto; pointer-events: none; opacity: 0.9; }

/* hero variant — larger, roomier */
.win-hero { max-width: 680px; padding: 62px 28px 26px; }
.win-hero label { font-size: 15px; }
.win-hero .dl-row, .win-hero .dl-help, .win-hero .dl-result { max-width: calc(100% - 132px); } /* keep clear of the doodle */

/* ---------- downloader form ---------- */
.window label { display: block; font-weight: 650; margin-bottom: 8px; font-size: 14.5px; }
.dl-row { display: flex; gap: 10px; }
.dl-row input {
  flex: 1; min-width: 0;
  font-size: 15.5px; padding: 14px 16px; border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.1); background: #10121a; color: var(--text);
  transition: border-color .15s, box-shadow .15s;
}
.dl-row input::placeholder { color: #5d627a; }
.dl-row input:focus { outline: none; border-color: rgba(122, 124, 240, 0.65); box-shadow: 0 0 0 3px rgba(122, 124, 240, 0.16); }
.dl-row input[aria-busy="true"] { opacity: 0.7; }

.dl-btn {
  flex: none; min-height: 52px; min-width: 138px;
  display: inline-flex; align-items: center; justify-content: center;
  font: inherit; font-size: 15.5px; font-weight: 600; color: #fff;
  background: var(--grad); border: none; border-radius: 12px; cursor: pointer;
  box-shadow: var(--shadow-glow);
  transition: filter .12s, box-shadow .12s, transform .12s;
}
.dl-btn:hover { filter: brightness(1.07); box-shadow: 0 12px 30px rgba(118, 122, 240, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.35); transform: translateY(-1px); }
.dl-btn:active { transform: translateY(0); }
.dl-btn[aria-busy="true"] { opacity: 0.7; cursor: wait; }

.dl-help { margin-top: 12px; font-size: 13px; color: var(--faint); }

/* ---------- downloader result states ---------- */
.dl-result { margin-top: 14px; }
.dl-state {
  border-radius: 12px; padding: 14px 16px; font-size: 14.5px;
  animation: dl-in .18s ease-out;
}
@keyframes dl-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

.dl-state.loading {
  display: flex; align-items: center; gap: 10px;
  color: var(--muted); background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--line-soft);
}
.spinner {
  width: 18px; height: 18px; flex: none; border-radius: 50%;
  border: 2px solid rgba(122, 124, 240, 0.25); border-top-color: var(--peri);
  animation: spin .7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.dl-state.error {
  background: rgba(248, 113, 113, 0.07);
  border: 1px solid rgba(248, 113, 113, 0.35);
}
.dl-err-msg { margin: 0; color: #fca5a5; }

.dl-state.ready {
  background: linear-gradient(180deg, rgba(122, 124, 240, 0.10), rgba(122, 124, 240, 0.04));
  border: 1px solid rgba(122, 124, 240, 0.45);
}
.dl-ready-title { margin: 0 0 2px; font-weight: 650; color: var(--text); }
.dl-meta { margin: 0 0 12px; font-size: 13px; color: var(--muted); }
.dl-save {
  display: inline-flex; align-items: center; gap: 9px;
  min-height: 50px; padding: 12px 22px;
  font-size: 15px; font-weight: 600; color: #fff; text-decoration: none;
  background: var(--grad); border-radius: 12px;
  box-shadow: var(--shadow-glow);
  transition: filter .12s, box-shadow .12s, transform .12s;
}
.dl-save:hover { filter: brightness(1.07); box-shadow: 0 12px 30px rgba(118, 122, 240, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.35); transform: translateY(-1px); }
.dl-ic { width: 19px; height: 19px; }
.dl-fine { margin: 10px 0 0; font-size: 12.5px; color: var(--faint); }

/* ---------- blocks / cards ---------- */
.block {
  margin: 18px 0; background: var(--card);
  border: 1px solid var(--line); border-radius: var(--radius);
  padding: 20px 22px;
  transition: border-color .15s;
}
.block:hover { border-color: rgba(122, 124, 240, 0.22); }
.block.trust { border-top: 2px solid rgba(122, 124, 240, 0.4); }
.callout { background: var(--card-2); border: 1px solid var(--line); border-left: 3px solid var(--peri); border-radius: 12px; padding: 12px 16px; margin: 16px 0; }
.callout.warn { border-left-color: var(--warn); }

/* ---------- steps ---------- */
.steps { counter-reset: step; list-style: none; padding: 0; margin: 14px 0; }
.steps li { counter-increment: step; position: relative; padding-left: 46px; margin: 14px 0; }
.steps li::before {
  content: counter(step); position: absolute; left: 0; top: 1px;
  width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  background: var(--grad); color: #fff; font-weight: 700; font-size: 13.5px;
  box-shadow: 0 4px 12px rgba(118, 122, 240, 0.3);
}

/* ---------- tables / status board ---------- */
table { border-collapse: collapse; width: 100%; margin: 14px 0; font-size: 14px; }
th, td { text-align: left; padding: 9px 10px; border-bottom: 1px solid rgba(255, 255, 255, 0.06); vertical-align: top; }
th { color: var(--faint); font-weight: 600; font-size: 12.5px; text-transform: uppercase; letter-spacing: 0.05em; }
tbody tr:hover { background: rgba(255, 255, 255, 0.02); }
.pill {
  display: inline-block; font-size: 11.5px; font-weight: 700; letter-spacing: 0.02em;
  border-radius: 999px; padding: 2.5px 11px; white-space: nowrap; vertical-align: 1px;
}
.pill.good { color: #7fe3b0; background: rgba(74, 222, 128, 0.1); border: 1px solid rgba(74, 222, 128, 0.35); }
.pill.warn { color: #fcd34d; background: rgba(251, 191, 36, 0.1); border: 1px solid rgba(251, 191, 36, 0.35); }
.pill.bad { color: #fca5a5; background: rgba(248, 113, 113, 0.1); border: 1px solid rgba(248, 113, 113, 0.35); }
.pill.mut { color: var(--muted); background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.14); }
.domains { columns: 2; column-gap: 24px; font-size: 13.5px; color: var(--muted); padding-left: 18px; }

/* ---------- home hub: platform chips ---------- */
.chips-list { list-style: none; padding: 0; margin: 14px 0 4px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.chips-list li { margin: 0; }
.chips-list a {
  display: block; padding: 12px 16px; font-size: 14.5px; font-weight: 600;
  color: var(--text); text-decoration: none;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--line); border-radius: 12px;
  transition: border-color .13s, background .13s, transform .13s;
}
.chips-list a:hover { border-color: rgba(122, 124, 240, 0.55); background: rgba(122, 124, 240, 0.07); transform: translateY(-1px); color: #fff; }

/* ---------- A–Z platform index (hub) ---------- */
.az-grid { margin: 18px 0; }
.az { margin: 18px 0; }
.az h3 {
  font-size: 1.05rem; font-weight: 700; color: var(--peri-soft);
  margin: 0 0 10px; padding-bottom: 8px; border-bottom: 1px solid var(--line);
  letter-spacing: 0.02em;
}
.az ul { list-style: none; padding: 0; margin: 0; columns: 2; column-gap: 24px; }
.az li { break-inside: avoid; margin: 0; padding: 7px 0; font-size: 14px; border-bottom: 1px solid var(--line-soft); }
.az a { color: var(--text); text-decoration: none; font-weight: 600; }
.az a:hover { color: var(--peri-soft); }
.az .small { display: block; margin-top: 1px; }

/* ---------- platform page: home-hub CTA ---------- */
.hub-cta {
  margin: 18px 0; padding: 14px 18px;
  border: 1px solid rgba(122, 124, 240, 0.4);
  border-radius: 14px;
  background:
    repeating-linear-gradient(115deg, rgba(122, 124, 240, 0.05) 0 1px, transparent 1px 11px),
    linear-gradient(180deg, rgba(122, 124, 240, 0.10), rgba(122, 124, 240, 0.04));
}
.hub-cta a { color: var(--peri-soft); text-decoration: none; font-weight: 650; font-size: 14.5px; }
.hub-cta a:hover { color: #fff; }
.hub-cta.back { border-color: var(--line); background: var(--card); }
.hub-cta.back a { color: var(--muted); font-weight: 600; font-size: 13.5px; }
.hub-cta.back a:hover { color: var(--text); }

/* ---------- related platforms ---------- */
.related { list-style: none; padding: 0; margin: 0; }
.related li { padding: 8px 0; border-bottom: 1px solid var(--line-soft); font-size: 14px; }
.related li:last-child { border-bottom: none; }
.related a { font-weight: 600; }

/* legal footnote */
.affil { margin-top: 16px; }
.affil a { color: var(--faint); }

/* ---------- FAQ ---------- */
details.faq { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 12px 16px; margin: 10px 0; transition: border-color .13s; }
details.faq:hover { border-color: rgba(122, 124, 240, 0.3); }
details.faq summary { cursor: pointer; font-weight: 600; }
details.faq summary:hover { color: var(--peri-soft); }
details.faq[open] summary { margin-bottom: 8px; }
details.faq p { color: var(--muted); }

/* ---------- footer ---------- */
footer { border-top: 1px solid var(--line); margin-top: 44px; padding: 24px 0 36px; color: var(--faint); font-size: 14px; }
footer .links { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 10px 0; }
footer a { color: var(--muted); }
footer a:hover { color: var(--text); }
footer .share { margin-top: 14px; }
footer .share a { text-decoration: none; border-bottom: 1px solid rgba(255, 255, 255, 0.2); }
footer .share a:hover { border-bottom-color: var(--peri); }

.noscript { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; margin: 14px auto; max-width: 760px; }

/* ---------- responsive ---------- */
@media (min-width: 640px) { .domains { columns: 3; } }
@media (max-width: 680px) {
  h1 { font-size: 1.6rem; }
  .window, .win-hero { padding: 52px 16px 18px; }
  .window .doodle { display: none; }
  .dl-row { flex-direction: column; }
  .dl-btn { width: 100%; }
  .block { padding: 16px; }
  .chips-list { grid-template-columns: 1fr; }
  .az ul { columns: 1; }
}
@media (max-width: 480px) {
  .win-title { display: none; }
}
