:root {
  --cream: #FEF9EE; --stone: #E5E0D1; --graphite: #545F68;
  --blue-pale: #859DBC; --blue: #53739E; --blue-deep: #4F6582;
  --sand: #EBD598; --gold: #E9C97A; --ochre: #D1B367;

  --font-sans: "Overpass", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-mono: "Overpass Mono", ui-monospace, "SF Mono", Menlo, monospace;
}

[data-theme="cream"] {
  --bg: var(--cream); --mat: var(--stone);
  --fg: var(--graphite); --fg-soft: color-mix(in srgb, var(--graphite) 90%, var(--cream));
  --line: var(--graphite); --rule: color-mix(in srgb, var(--graphite) 22%, var(--cream));
  --link: var(--blue); --link-line: var(--blue-pale);
  --marker: var(--gold); --focus: var(--blue); --select: var(--sand);

  --pa-cloud: var(--stone);
  --pa-fill: var(--stone);
  --pa-btn: var(--blue);
  --pa-hl: var(--sand); --pa-hl-o: 0.9;
  --pa-test: var(--blue); --pa-band: var(--blue-pale);
  --pa-ok: var(--blue-deep);
}
[data-theme="graphite"] {
  --bg: var(--graphite); --mat: var(--blue-deep);
  --fg: var(--cream); --fg-soft: color-mix(in srgb, var(--cream) 80%, var(--graphite));
  --line: var(--cream); --rule: color-mix(in srgb, var(--cream) 22%, var(--graphite));
  --link: var(--sand); --link-line: var(--gold);
  --marker: var(--gold); --focus: var(--gold); --select: var(--blue-deep);

  --pa-cloud: color-mix(in srgb, var(--cream) 10%, var(--graphite));
  --pa-fill: color-mix(in srgb, var(--cream) 14%, var(--graphite));
  --pa-btn: var(--gold);
  --pa-hl: var(--gold); --pa-hl-o: 0.4;
  --pa-test: color-mix(in srgb, var(--blue-pale) 70%, var(--cream)); --pa-band: var(--blue-pale);
  --pa-ok: color-mix(in srgb, var(--blue-pale) 70%, var(--cream));
}
[data-theme="stone"] {
  --bg: var(--stone); --mat: var(--stone);
  --fg: var(--graphite); --fg-soft: color-mix(in srgb, var(--graphite) 90%, var(--cream));
  --line: var(--graphite); --rule: color-mix(in srgb, var(--graphite) 22%, var(--cream));
  --link: var(--blue); --link-line: var(--blue-pale);
  --marker: var(--gold); --focus: var(--blue); --select: var(--sand);

  --pa-card: var(--cream);
  --pa-cloud: var(--stone);
  --pa-fill: var(--stone);
  --pa-btn: var(--blue);
  --pa-hl: var(--sand); --pa-hl-o: 0.9;
  --pa-test: var(--blue); --pa-band: var(--blue-pale);
  --pa-ok: var(--blue-deep);
}

.pa {
  font-family: var(--font-sans);
  display: grid;
  grid-template-columns: minmax(0, 4fr) minmax(0, 7fr);
  grid-template-areas: "intro figure" "steps figure";
  grid-template-rows: auto 1fr;
  gap: 32px clamp(40px, 6vw, 96px);
  align-items: start;
}
.pa-intro { grid-area: intro; }
.pa-intro .heading { font-weight: 600; letter-spacing: 0; line-height: 1.15; }
.pa-intro .lede { margin-top: 20px; }
.pa-figure { grid-area: figure; margin: 0; align-self: center; }
.pa-controls { grid-area: steps; }

.pa-steps { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); counter-reset: pa; }
.pa-steps li { border-bottom: 1px solid var(--rule); }
.pa-steps button {
  position: relative; width: 100%;
  display: grid; grid-template-columns: 2.6em 1fr; gap: 2px 8px;
  padding: 14px 0 16px; border: 0; background: none; cursor: pointer;
  font: inherit; color: var(--fg); text-align: left;
  transition: opacity .3s ease;
}
.pa.has-step .pa-steps button:not([aria-current]) { opacity: 0.45; }
.pa.has-step .pa-steps button:not([aria-current]):hover { opacity: 0.8; }
.pa-steps button::before {
  content: ""; position: absolute; left: 0; top: -1px; height: 2px;
  width: calc(var(--p, 0) * 100%); background: var(--link);
}
.pa-steps button::after {
  counter-increment: pa; content: "0" counter(pa);
  grid-column: 1; grid-row: 1; padding-top: 0.15em;
  font-family: var(--font-mono); font-size: 0.8125rem; font-weight: 500; letter-spacing: 0.04em; color: var(--fg-soft);
}
.pa-step-title { grid-column: 2; font-weight: 600; font-size: 1.125rem; }
.pa-step-text { grid-column: 2; color: var(--fg-soft); font-size: 0.9375rem; line-height: 1.45; }

.pa-toggle {
  margin-top: 18px;
  display: inline-flex; align-items: center; gap: 10px;
  min-height: 40px; padding: 0 16px;
  font-family: var(--font-mono); font-weight: 500; font-size: 0.8125rem; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--fg); background: transparent; border: 1px solid var(--line); border-radius: 999px; cursor: pointer;
  transition: background-color .2s ease, color .2s ease;
}
.pa-toggle::before {
  content: ""; width: 8px; height: 10px; background: currentColor;
  clip-path: polygon(0 0, 100% 50%, 0 100%);
}
.pa.is-playing .pa-toggle::before { clip-path: none; background: linear-gradient(to right, currentColor 35%, transparent 35% 65%, currentColor 65%); }
.pa-toggle:hover { background: var(--fg); color: var(--bg); }

.pa--solo { display: block; position: relative; }
.pa-toggle--icon {
  position: absolute; right: 0; bottom: 0; margin: 0;
  width: 32px; min-height: 32px; height: 32px; padding: 0; justify-content: center;
  opacity: 0.55; transition: opacity .2s ease, background-color .2s ease, color .2s ease;
}
.pa-toggle--icon:hover, .pa-toggle--icon:focus-visible { opacity: 1; }
.pa-toggle--icon::before { width: 7px; height: 9px; }

.pa-svg { display: block; width: 100%; height: auto; overflow: visible; }

.pa-cloud > path { fill: var(--pa-cloud); stroke: var(--line); stroke-width: 2.8; stroke-linejoin: round; }
.pa-arrow { fill: none; stroke: var(--line); stroke-width: 2.8; stroke-linecap: round; stroke-linejoin: round; }

.pa-card { fill: var(--pa-card, var(--bg)); stroke: var(--line); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.wf-rule { stroke: var(--rule); stroke-width: 1; vector-effect: non-scaling-stroke; }
.wf-logo { fill: var(--fg-soft); }
.wf-nav { stroke: var(--fg-soft); stroke-width: 1.6; stroke-linecap: round; }
.wf-head { stroke: var(--fg); stroke-width: 4.2; stroke-linecap: round; }
.wf-img { fill: var(--pa-fill); }
.wf-text { stroke: var(--fg-soft); stroke-width: 1.8; stroke-linecap: round; opacity: 0.75; }
.wf-btn { fill: var(--pa-btn); stroke: var(--pa-btn); stroke-width: 1.3; }

.pa-hl { fill: var(--pa-hl); fill-opacity: var(--pa-hl-o); }
.pa-scan-line { stroke: var(--pa-test); stroke-width: 2; vector-effect: non-scaling-stroke; }
.pa-scan-band { fill: var(--pa-band); opacity: 0.25; }

.pa-round { fill: transparent; stroke: var(--line); stroke-width: 1.2; transition: fill .2s ease, stroke .2s ease; }
.pa-round.is-done { fill: var(--pa-test); stroke: var(--pa-test); }

.pa-tick { fill: none; stroke: var(--pa-ok); stroke-width: 3.6; stroke-linecap: round; stroke-linejoin: round; }
.pa-new { fill: var(--pa-test); }
.pa-pulse { fill: none; stroke: var(--pa-test); stroke-width: 2; vector-effect: non-scaling-stroke; }

@media (max-width: 900px) {
  .pa { grid-template-columns: 1fr; grid-template-areas: "intro" "figure" "steps"; grid-template-rows: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .pa-steps button, .pa-toggle, .pa-round { transition: none; }
}
