/* How to use Nexivo, web-link/help/index.html.

   It loads assets/site.css first — the canvas, the aurora, the glass card,
   the steps, the rail and the one typeface — and adds only what a guide
   needs on top of that: the jump row under the headline, the three goal
   cards, the row of devices that becomes tabs, the task cards with their
   little drawings, the safety tiles and the two accordions.

   Every colour is a site token (there is no hex literal in this file,
   test/help-page.test.mjs), the same rule home.css keeps. What is written
   out is white or black at an alpha, the way site.css writes hairlines.

   The drawings in the task cards are HTML and CSS rather than pictures:
   the CSP allows no image but the site's own, and a drawing made of the
   site's own tokens stays in step with the site when a colour changes. They
   are decoration — each one is aria-hidden, and the numbered steps beside
   it say everything it shows.

   Motion is small and answers nothing but attention: the headline rises
   once, and the button a drawing is about breathes a ring. Under
   prefers-reduced-motion site.css's reduce block ends both on their still
   frame, which is the finished state. */

body[data-page="help"] {
  overflow-x: clip;
  overflow-wrap: break-word;
}

body[data-page="help"] .sheet {
  max-width: calc(1040px + 2 * var(--gutter));
  padding-top: clamp(20px, 5vh, 48px);
  padding-bottom: calc(env(safe-area-inset-bottom) + 56px);
}

body[data-page="help"] .rail-inner {
  max-width: calc(1040px + 2 * var(--gutter));
}

/* The sprite of shared glyphs: in the page so <use> can reach it, and out
   of sight and out of the layout. */
.sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

/* Every glyph on this page is a stroke drawing in currentColor, as the
   site's own are. */
.icon {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* Anything a link can land on clears the sticky rail. */
[id] {
  scroll-margin-top: 88px;
}

/* ---- The hero ---------------------------------------------------------- */

.help-hero {
  position: relative;
  text-align: center;
  padding: clamp(8px, 3vh, 32px) 0 0;
}

/* Three devices joined by the mark's light: the page's picture of itself.
   Decoration; the sentence under the headline says it. */
.hero-devices {
  display: block;
  width: min(300px, 78%);
  height: auto;
  margin: 0 auto 22px;
  overflow: visible;
  animation: help-rise 900ms var(--ease) both;
}

.hero-devices .dev {
  fill: var(--surface-2);
  stroke: var(--line-loud);
  stroke-width: 1.5;
}

.hero-devices .dev-line {
  fill: none;
  stroke: var(--line-loud);
  stroke-width: 1.5;
  stroke-linecap: round;
}

.hero-devices .dev-screen {
  fill: var(--paper);
}

.hero-devices .dev-lit {
  fill: var(--accent-soft);
  stroke: var(--accent-line);
  stroke-width: 1;
}

.hero-devices .wire {
  fill: none;
  stroke: var(--accent-2);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-dasharray: 2 6;
  opacity: 0.8;
  animation: help-flow 1.4s linear infinite;
}

.hero-devices .node {
  fill: var(--accent);
}

.help-hero h1 {
  max-width: 14ch;
  margin: 0 auto;
  padding-bottom: 0.06em;
  font-size: clamp(2.4rem, 6.4vw, 4.4rem);
  font-weight: 750;
  line-height: 1.03;
  letter-spacing: -0.045em;
  background: linear-gradient(180deg, var(--ink) 30%, var(--ink-2) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: help-rise 900ms var(--ease) 80ms both;
}

.help-hero .lead {
  margin: 18px auto 0;
  max-width: 44ch;
  font-size: clamp(1.05rem, 1.9vw, 1.25rem);
  animation: help-rise 900ms var(--ease) 180ms both;
}

@keyframes help-rise {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes help-flow {
  to {
    stroke-dashoffset: -16;
  }
}

/* The page's contents, as a row of pills under the headline. */
.jump {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  max-width: 720px;
  margin: 28px auto 0;
  padding: 0;
  list-style: none;
  animation: help-rise 900ms var(--ease) 260ms both;
}

.jump a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 8px 15px;
  border: 1px solid var(--line);
  border-radius: var(--radius-pill);
  background: rgb(255 255 255 / 0.035);
  color: var(--ink-2);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  transition: color var(--fast) var(--ease), border-color var(--fast) var(--ease),
    background-color var(--fast) var(--ease);
}

/* ---- Sections ---------------------------------------------------------- */

.help-section {
  position: relative;
  z-index: 1;
  margin-top: clamp(64px, 10vw, 112px);
}

.section-head {
  max-width: 680px;
  margin-bottom: 28px;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 10px;
  color: var(--accent-2);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.eyebrow .icon {
  width: 17px;
  height: 17px;
}

.help-section h2 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(1.7rem, 3.6vw, 2.4rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.03em;
  text-wrap: balance;
}

.section-lead {
  margin: 12px 0 0;
  color: var(--ink-2);
  font-size: 16.5px;
  line-height: 1.6;
  text-wrap: pretty;
}

.help-section strong,
.task strong,
.fix strong {
  color: var(--ink);
  font-weight: 650;
}

/* Links in running text — the ones with no class of their own: the accent,
   underlined, as on the front door. */
.help-section a:not([class]) {
  color: var(--accent-2);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgb(124 92 255 / 0.45);
  text-underline-offset: 3px;
}

/* ---- What do you want to do? ------------------------------------------ */

.goals {
  display: grid;
  gap: 16px;
}

.goal {
  display: flex;
  flex-direction: column;
  padding: 26px 22px 22px;
}

.goal-icon {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  margin-bottom: 18px;
  border-radius: 16px;
  background: var(--grad-soft), var(--surface-2);
  border: 1px solid var(--accent-line);
  color: var(--ink);
}

.goal-icon .icon {
  width: 26px;
  height: 26px;
}

.goal h3 {
  margin: 0;
  color: var(--ink);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.015em;
}

.goal > p {
  margin: 10px 0 0;
  color: var(--ink-2);
  font-size: 15px;
  line-height: 1.55;
}

.goal-links {
  display: grid;
  gap: 8px;
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
}

/* Pushes the links to the foot of the card, so three cards of different
   lengths still end their lists on one line. */
.goal-links:first-of-type {
  margin-top: auto;
  padding-top: 20px;
}

.goal-link {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 50px;
  padding: 10px 14px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-control);
  background: var(--surface-2);
  color: var(--ink);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
  transition: border-color var(--fast) var(--ease), background-color var(--fast) var(--ease);
}

.goal-link > .icon:first-child {
  width: 19px;
  height: 19px;
  color: var(--accent);
}

.goal-link span {
  flex: 1;
  min-width: 0;
}

.goal-link small {
  display: block;
  margin-top: 1px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 500;
}

.goal-link .arrow {
  width: 17px;
  height: 17px;
  color: var(--faint);
  transition: color var(--fast) var(--ease), transform var(--fast) var(--ease);
}

.goal-note {
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.5;
}

/* ---- The row of devices, and the tabs it becomes ---------------------- */

.platform-nav {
  position: relative;
  z-index: 2;
  scroll-margin-top: 88px;
}

.platform-tabs {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 4px;
  margin: 0;
  padding: 5px;
  list-style: none;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--card-fill), rgb(15 20 38 / 0.8);
  box-shadow: var(--shadow);
}

.platform-tab {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 74px;
  padding: 10px 2px 12px;
  border-radius: 15px;
  color: var(--ink-2);
  font-size: 12.5px;
  font-weight: 650;
  line-height: 1.15;
  text-align: center;
  text-decoration: none;
  transition: color var(--fast) var(--ease), background-color var(--fast) var(--ease);
}

.platform-tab .icon {
  width: 24px;
  height: 24px;
}

/* Chosen: the page's one gradient object is the bar under the chosen
   device. The tile around it lifts one step and takes the accent edge. */
.platform-tab[aria-selected="true"] {
  color: var(--ink);
  background: var(--grad-soft), var(--surface-2);
  box-shadow: inset 0 0 0 1px var(--accent-line);
}

.platform-tab[aria-selected="true"]::after {
  content: "";
  position: absolute;
  left: 32%;
  right: 32%;
  bottom: 5px;
  height: 3px;
  border-radius: 3px;
  background: var(--grad);
}

.platform-tab[aria-selected="true"] .icon {
  color: var(--accent-2);
}

.tabs-hint {
  margin: 12px 4px 0;
  color: var(--muted);
  font-size: 13.5px;
  text-align: center;
}

/* ---- A platform ------------------------------------------------------- */

/* Without the script every panel is in the page, one after another, and the
   row above is a list of jumps to them; with it, one panel shows at a time. */
.panel {
  margin-top: 56px;
}

[data-tabs="on"] .panel {
  margin-top: 28px;
}

.panel:focus-visible {
  outline-offset: 8px;
  border-radius: var(--radius-card);
}

.panel-head {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}

.panel-icon {
  display: grid;
  place-items: center;
  flex: none;
  width: 48px;
  height: 48px;
  margin-top: 2px;
  border-radius: 15px;
  background: var(--grad-soft), var(--surface-2);
  border: 1px solid var(--accent-line);
  color: var(--ink);
}

.panel-icon .icon {
  width: 26px;
  height: 26px;
}

.panel h3 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(1.5rem, 3.2vw, 2rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.025em;
}

.panel-sub {
  margin: 4px 0 0;
  color: var(--ink-2);
  font-size: 15.5px;
  line-height: 1.5;
}

/* What this device can do, as three marks: yes, no, or "yes, with". */
.caps {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
}

.cap {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 12px 6px 9px;
  border: 1px solid var(--line);
  border-radius: var(--radius-pill);
  background: rgb(255 255 255 / 0.03);
  color: var(--ink-2);
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.3;
}

.cap .icon {
  width: 16px;
  height: 16px;
  stroke-width: 2.2;
}

.cap-yes .icon {
  color: var(--ok);
}

.cap-no {
  color: var(--muted);
}

.cap-no .icon {
  color: var(--danger);
}

.cap-some .icon {
  color: var(--warn);
}

/* Get it, and First time only: side by side on a wide screen. */
.setup {
  display: grid;
  gap: 16px;
  margin-top: 24px;
}

.setup-card {
  padding: 24px 22px;
}

.setup-card h4,
.tasks-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  color: var(--ink);
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.setup-card h4 .icon {
  width: 21px;
  height: 21px;
  color: var(--accent);
}

.state {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 14px 0 0;
  padding: 4px 11px;
  border-radius: var(--radius-pill);
  font-size: 12.5px;
  font-weight: 650;
  line-height: 1.4;
}

.state-ready {
  background: rgb(53 211 153 / 0.12);
  border: 1px solid rgb(53 211 153 / 0.32);
  color: var(--ok);
}

.state-soon {
  background: rgb(255 182 97 / 0.1);
  border: 1px solid rgb(255 182 97 / 0.32);
  color: var(--warn);
}

.points {
  display: grid;
  gap: 12px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
}

.points li {
  position: relative;
  padding-left: 22px;
  color: var(--ink-2);
  font-size: 15px;
  line-height: 1.55;
}

.points li::before {
  content: "";
  position: absolute;
  left: 3px;
  top: 0.62em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}

.points-label {
  margin: 20px 0 0;
  padding-top: 16px;
  border-top: 1px solid var(--line-soft);
  color: var(--accent-2);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.points-label + .points {
  margin-top: 10px;
}

/* ---- Task cards ------------------------------------------------------- */

.tasks-head {
  margin-top: 40px;
  font-size: 20px;
}

.tasks {
  display: grid;
  gap: 16px;
  margin-top: 16px;
}

.task {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--card-fill), var(--surface);
  box-shadow: var(--shadow);
  transition: border-color var(--slow) var(--ease), box-shadow var(--slow) var(--ease);
}

.task:focus {
  outline: none;
}

.task:focus-visible {
  outline: 2px solid var(--accent-2);
  outline-offset: 2px;
}

/* The card a link just landed on says so for a moment. :target covers a
   page without the script; .is-pointed is help.js doing the same when it
   moves the page itself. */
.task:target,
.task.is-pointed {
  border-color: var(--accent-line);
  animation: task-flash 1600ms var(--ease) both;
}

@keyframes task-flash {
  0% {
    box-shadow: 0 0 0 0 rgb(124 92 255 / 0.55), var(--shadow);
  }
  100% {
    box-shadow: 0 0 0 14px rgb(124 92 255 / 0), var(--shadow);
  }
}

/* The drawing's stage: the card's top, lit from above like the page. */
.task-art {
  display: grid;
  place-items: center;
  min-height: 212px;
  padding: 26px 18px;
  background:
    radial-gradient(70% 90% at 50% 0%, rgb(79 123 255 / 0.17), transparent 70%),
    radial-gradient(50% 60% at 80% 100%, rgb(124 92 255 / 0.1), transparent 70%),
    var(--surface-2);
  border-bottom: 1px solid var(--line-soft);
}

.task-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 20px 20px 22px;
}

.task h4 {
  margin: 0;
  color: var(--ink);
  font-size: 18.5px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
}

.tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 10px 0 0;
  padding: 0;
  list-style: none;
}

.tag {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: var(--radius-pill);
  font-size: 12px;
  font-weight: 650;
  line-height: 1.5;
}

.tag-free {
  background: rgb(53 211 153 / 0.1);
  border: 1px solid rgb(53 211 153 / 0.3);
  color: var(--ok);
}

.tag-account {
  background: var(--accent-soft);
  border: 1px solid var(--accent-line);
  color: var(--ink);
}

.tag-view {
  background: rgb(255 255 255 / 0.04);
  border: 1px solid var(--line-loud);
  color: var(--ink-2);
}

.task .steps {
  margin-top: 14px;
}

.task .steps li {
  padding-top: 6px;
  padding-bottom: 6px;
  line-height: 1.55;
}

.task .steps li::before {
  top: 7px;
}

.task-note {
  display: flex;
  gap: 10px;
  margin: auto 0 0;
  padding: 12px 14px;
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: rgb(255 255 255 / 0.025);
  color: var(--ink-2);
  font-size: 14px;
  line-height: 1.55;
}

.task .steps + .task-note {
  margin-top: 16px;
}

.task-note .icon {
  width: 18px;
  height: 18px;
  margin-top: 1px;
  color: var(--accent-2);
}

.task-note a {
  color: var(--accent-2);
  font-weight: 600;
}

.panel-foot {
  margin: 28px 0 0;
  text-align: center;
}

.back-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 8px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius-pill);
  color: var(--ink-2);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
}

.back-link .icon {
  width: 16px;
  height: 16px;
}

/* ---- The drawings ----------------------------------------------------- */

/* A window, a phone or a browser, drawn in the site's own tokens. Sizes are
   in px on purpose: these are pictures, and a picture keeps its proportions
   when the reader's text size changes. */
.mock {
  position: relative;
  width: 100%;
  max-width: 292px;
  color: var(--ink-2);
  font-size: 10px;
  line-height: 1.3;
  pointer-events: none;
  user-select: none;
}

.mock-win {
  overflow: hidden;
  border: 1px solid var(--line-loud);
  border-radius: 11px;
  background: var(--paper);
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 0.06),
    0 24px 50px -24px rgb(0 0 0 / 0.95),
    0 0 0 6px rgb(255 255 255 / 0.018);
}

.mock-bar {
  display: flex;
  align-items: center;
  gap: 4px;
  height: 24px;
  padding: 0 9px;
  border-bottom: 1px solid var(--line);
  background: var(--rail-solid);
}

.mock-bar > i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--faint);
}

.mock-mac .mock-bar > i:nth-child(1) {
  background: var(--danger);
}

.mock-mac .mock-bar > i:nth-child(2) {
  background: var(--warn);
}

.mock-mac .mock-bar > i:nth-child(3) {
  background: var(--ok);
}

.mock-bar b {
  margin-left: 6px;
  color: var(--ink);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* Windows keeps its three controls on the right. */
.mock-winctl {
  display: flex;
  gap: 11px;
  margin-left: auto;
  color: var(--muted);
  font-size: 9px;
}

.mock-url {
  flex: 1;
  min-width: 0;
  margin-left: 8px;
  padding: 2px 9px;
  overflow: hidden;
  border-radius: var(--radius-pill);
  background: rgb(255 255 255 / 0.06);
  color: var(--muted);
  font-size: 8.5px;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.mock-main {
  position: relative;
  display: flex;
  min-height: 150px;
}

.mock-side {
  display: flex;
  flex-direction: column;
  gap: 3px;
  width: 64px;
  padding: 8px 6px;
  border-right: 1px solid var(--line-soft);
  background: rgb(255 255 255 / 0.015);
}

.mock-side span {
  padding: 3px 6px;
  border-radius: 5px;
  color: var(--muted);
  font-size: 8.5px;
}

.mock-side .on {
  background: var(--accent-soft);
  color: var(--ink);
}

.mock-side .m-foot {
  margin-top: auto;
  border: 1px solid var(--line-loud);
  color: var(--ink-2);
  text-align: center;
}

.mock-content {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
  padding: 10px;
}

.mock-content.center {
  justify-content: center;
}

.m-top {
  display: flex;
  justify-content: flex-end;
  gap: 5px;
}

.m-card {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 9px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 8px;
  background: var(--surface-2);
}

.m-card.lift {
  border-color: var(--line-loud);
  background: var(--surface-3);
  box-shadow: 0 12px 28px -12px rgb(0 0 0 / 0.9);
}

.m-title {
  color: var(--ink);
  font-size: 10.5px;
  font-weight: 700;
}

.m-text {
  color: var(--muted);
  font-size: 8.5px;
}

.m-text.ink {
  color: var(--ink-2);
}

.m-id {
  display: flex;
  align-items: center;
  gap: 7px;
  color: var(--ink);
  font-size: 17px;
  font-weight: 750;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}

.m-id.big {
  font-size: 21px;
}

.m-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
}

.m-row.end {
  justify-content: flex-end;
}

.m-row.between {
  justify-content: space-between;
}

.m-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 4px 9px;
  border-radius: 6px;
  background: var(--accent);
  color: var(--accent-ink);
  font-size: 9px;
  font-weight: 700;
  white-space: nowrap;
}

.m-btn.ghost {
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--line-loud);
  color: var(--ink-2);
}

.m-btn.danger {
  background: var(--danger);
  color: var(--void);
}

.m-btn.light {
  background: var(--ink);
  color: var(--void);
}

.m-btn.wide {
  width: 100%;
  padding: 6px 9px;
}

.m-btn.pill {
  border-radius: var(--radius-pill);
}

.m-copy {
  position: relative;
  display: inline-grid;
  place-items: center;
  width: 18px;
  height: 18px;
  border-radius: 5px;
  box-shadow: inset 0 0 0 1px var(--line-loud);
  color: var(--ink-2);
}

.m-copy .icon {
  width: 11px;
  height: 11px;
  stroke-width: 2;
}

.m-seg {
  display: flex;
  gap: 2px;
  padding: 2px;
  border-radius: 7px;
  background: var(--paper);
  box-shadow: inset 0 0 0 1px var(--line);
}

.m-seg span {
  flex: 1;
  padding: 3px 4px;
  border-radius: 5px;
  color: var(--muted);
  font-size: 8px;
  font-weight: 600;
  text-align: center;
  white-space: nowrap;
}

.m-seg .on {
  background: var(--surface-3);
  color: var(--ink);
  box-shadow: inset 0 0 0 1px var(--line-loud);
}

.m-field {
  padding: 5px 8px;
  border-radius: 6px;
  background: var(--paper);
  box-shadow: inset 0 0 0 1px var(--line-loud);
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  font-variant-numeric: tabular-nums;
}

.m-field.soft {
  color: var(--muted);
  font-size: 8.5px;
  font-weight: 500;
  letter-spacing: 0;
}

.m-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  align-self: flex-start;
  padding: 2px 7px;
  border-radius: var(--radius-pill);
  background: rgb(53 211 153 / 0.12);
  box-shadow: inset 0 0 0 1px rgb(53 211 153 / 0.3);
  color: var(--ok);
  font-size: 8px;
  font-weight: 700;
  white-space: nowrap;
}

.m-pill.accent {
  background: var(--accent-soft);
  box-shadow: inset 0 0 0 1px var(--accent-line);
  color: var(--ink);
}

.m-pill.muted {
  background: rgb(255 255 255 / 0.04);
  box-shadow: inset 0 0 0 1px var(--line-loud);
  color: var(--ink-2);
}

.m-pill.warn {
  background: rgb(255 182 97 / 0.1);
  box-shadow: inset 0 0 0 1px rgb(255 182 97 / 0.32);
  color: var(--warn);
}

.m-dot::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: currentColor;
}

.m-verified {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  color: var(--ok);
  font-size: 8px;
  font-weight: 700;
}

.m-verified .icon {
  width: 10px;
  height: 10px;
  stroke-width: 2.4;
}

.m-line {
  display: block;
  height: 5px;
  border-radius: 3px;
  background: rgb(255 255 255 / 0.08);
}

.w30 {
  width: 30%;
}

.w50 {
  width: 50%;
}

.w70 {
  width: 70%;
}

.w90 {
  width: 90%;
}

.m-toggle {
  position: relative;
  flex: none;
  width: 24px;
  height: 14px;
  border-radius: var(--radius-pill);
  background: var(--surface-3);
  box-shadow: inset 0 0 0 1px var(--line-loud);
}

.m-toggle::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--ink-2);
}

.m-toggle.on {
  background: var(--ok);
  box-shadow: none;
}

.m-toggle.on::after {
  left: 12px;
  background: var(--accent-ink);
}

.m-list {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 8px;
  background: var(--surface-2);
  box-shadow: inset 0 0 0 1px var(--line-soft);
}

.m-list > span {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  padding: 6px 8px;
  color: var(--ink-2);
  font-size: 8.5px;
}

.m-list > span + span {
  border-top: 1px solid var(--line-soft);
}

.m-list > .dim {
  color: var(--faint);
}

/* A row that is itself a link, as the Android home card has one. */
.m-linkrow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  padding: 6px 8px;
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink-2);
  font-size: 8.5px;
  line-height: 1.25;
}

.m-linkrow .icon {
  width: 11px;
  height: 11px;
  color: var(--accent-2);
  stroke-width: 2;
}

/* A dialog over a dimmed window. */
.m-dim {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 10px;
  background: rgb(3 4 9 / 0.62);
}

.m-dialog {
  display: flex;
  flex-direction: column;
  gap: 5px;
  width: 100%;
  max-width: 200px;
  padding: 10px 11px;
  border-radius: 10px;
  background: var(--surface-3);
  box-shadow: inset 0 0 0 1px var(--line-loud), 0 18px 40px -12px rgb(0 0 0 / 0.9);
}

/* Someone else's desktop, as the front door draws one: their light-mode
   windows on their wallpaper, and deliberately not this site's palette. */
.m-remote {
  position: relative;
  flex: 1;
  min-height: 132px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--desk-a), var(--desk-b) 55%, var(--desk-c));
}

.m-rwin {
  position: absolute;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px 8px 8px;
  border-radius: 5px;
  background: var(--win);
  box-shadow: 0 8px 18px -8px rgb(0 0 0 / 0.6);
}

.m-rwin::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 10px;
  border-radius: 5px 5px 0 0;
  background: var(--win-soft);
  border-bottom: 1px solid var(--win-line);
}

.m-rwin .m-line {
  background: var(--win-line);
}

.m-rwin.one {
  top: 16px;
  left: 14px;
  width: 52%;
}

.m-rwin.two {
  top: 42px;
  right: 14px;
  width: 38%;
}

.m-viewbar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  border-bottom: 1px solid var(--line);
  background: var(--rail-solid);
  color: var(--ink);
  font-size: 8.5px;
  font-weight: 650;
}

.m-viewbar .push {
  margin-left: auto;
}

.m-live {
  flex: none;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ok);
  box-shadow: 0 0 0 3px rgb(53 211 153 / 0.18);
}

/* A floating bar, as /connect/ lays one over the picture. */
.m-float {
  position: absolute;
  top: 8px;
  left: 50%;
  translate: -50% 0;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 5px 4px 9px;
  border-radius: var(--radius-pill);
  background: rgb(15 20 38 / 0.92);
  box-shadow: inset 0 0 0 1px var(--line-loud), 0 10px 20px -8px rgb(0 0 0 / 0.8);
  color: var(--ink);
  font-size: 8px;
  font-weight: 650;
  white-space: nowrap;
}

.m-float .m-glyph {
  display: inline-grid;
  place-items: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: rgb(255 255 255 / 0.07);
  color: var(--ink-2);
}

.m-float .m-glyph .icon {
  width: 10px;
  height: 10px;
  stroke-width: 2;
}

/* The phone. */
.mock-phone {
  width: 156px;
  height: 300px;
  padding: 6px;
  border-radius: 30px;
  background: var(--metal-lo);
  box-shadow:
    inset 0 0 0 1px var(--line-loud),
    inset 0 1px 0 rgb(255 255 255 / 0.12),
    0 26px 50px -22px rgb(0 0 0 / 0.95),
    0 0 0 6px rgb(255 255 255 / 0.018);
}

.m-screen {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
  height: 100%;
  overflow: hidden;
  padding: 26px 9px 10px;
  border-radius: 24px;
  background: var(--paper);
  font-size: 9px;
}

.m-island {
  position: absolute;
  top: 7px;
  left: 50%;
  translate: -50% 0;
  width: 44px;
  height: 12px;
  border-radius: var(--radius-pill);
  background: var(--void);
}

.m-punch {
  position: absolute;
  top: 9px;
  left: 50%;
  translate: -50% 0;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--void);
  box-shadow: 0 0 0 1px var(--line);
}

.m-screen .m-id {
  font-size: 15px;
}

.m-hero {
  color: var(--ink);
  font-size: 13px;
  font-weight: 750;
  line-height: 1.1;
  letter-spacing: -0.02em;
}

.m-hero small {
  display: block;
  color: var(--muted);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0;
}

.m-sheet {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 11px 14px;
  border-radius: 16px 16px 0 0;
  background: var(--surface-3);
  box-shadow: inset 0 1px 0 var(--line-loud), 0 -16px 30px -10px rgb(0 0 0 / 0.8);
}

.m-sheet::before {
  content: "";
  align-self: center;
  width: 28px;
  height: 3px;
  margin-bottom: 2px;
  border-radius: 3px;
  background: var(--line-loud);
}

.m-shade {
  position: absolute;
  inset: 0;
  background: rgb(3 4 9 / 0.55);
}

.m-bubble {
  align-self: flex-start;
  max-width: 88%;
  padding: 7px 9px;
  border-radius: 12px 12px 12px 4px;
  background: var(--surface-3);
  color: var(--ink);
  font-size: 8.5px;
}

.m-bubble.mine {
  align-self: flex-end;
  border-radius: 12px 12px 4px 12px;
  background: var(--accent);
  color: var(--accent-ink);
}

.m-link {
  position: relative;
  display: inline-block;
  margin-top: 3px;
  color: var(--accent-2);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.m-code {
  display: flex;
  gap: 4px;
}

.m-code span {
  display: grid;
  place-items: center;
  width: 24px;
  height: 30px;
  border-radius: 6px;
  background: var(--paper);
  box-shadow: inset 0 0 0 1px var(--line-loud);
  color: var(--ink);
  font-size: 13px;
  font-weight: 750;
}

.m-code span:nth-child(5) {
  box-shadow: inset 0 0 0 1.5px var(--accent-2);
}

.m-code span:nth-child(6) {
  color: transparent;
}

/* What the drawing is about: a ring that breathes, and the pointer (or, on
   a phone, the fingertip) that is about to press it. The ring's resting
   state is the frame the reduce block stops on. */
/* Scoped to .mock so it outranks a control's own edge (.m-toggle.on,
   .m-btn.ghost) and the ring still shows once the reduce block has
   stopped the breathing. */
.mock .is-target {
  position: relative;
  box-shadow: 0 0 0 2px var(--accent-2), 0 0 0 5px rgb(124 92 255 / 0.28);
  animation: target-breathe 2.4s var(--ease) infinite;
}

@keyframes target-breathe {
  0%,
  100% {
    box-shadow: 0 0 0 2px var(--accent-2), 0 0 0 5px rgb(124 92 255 / 0.28);
  }
  50% {
    box-shadow: 0 0 0 2px var(--accent-2), 0 0 0 10px rgb(124 92 255 / 0);
  }
}

.m-pointer {
  position: absolute;
  right: -6px;
  bottom: -13px;
  width: 18px;
  height: 18px;
  fill: var(--ink);
  stroke: var(--void);
  stroke-width: 1.3;
  stroke-linejoin: round;
  filter: drop-shadow(0 2px 3px rgb(0 0 0 / 0.6));
}

.m-tap {
  position: absolute;
  right: -5px;
  bottom: -7px;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: rgb(255 255 255 / 0.85);
  box-shadow: 0 0 0 4px rgb(255 255 255 / 0.22), 0 3px 8px rgb(0 0 0 / 0.5);
}

/* ---- Your account ----------------------------------------------------- */

.account-grid {
  display: grid;
  gap: 16px;
}

.account-card {
  padding: 26px 22px;
}

.account-card h3 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  color: var(--ink);
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.account-card h3 .icon {
  color: var(--accent);
}

.account-card h4 {
  margin: 22px 0 0;
  color: var(--ink);
  font-size: 15.5px;
  font-weight: 700;
}

.account-card > p {
  margin: 12px 0 0;
  color: var(--ink-2);
  font-size: 15px;
  line-height: 1.6;
}

.account-card .steps {
  margin-top: 12px;
}

.account-card .points {
  margin-top: 12px;
}

.who {
  display: grid;
  gap: 10px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}

.who li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 13px 14px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-control);
  background: var(--surface-2);
  color: var(--ink-2);
  font-size: 15px;
  line-height: 1.5;
}

.who .icon {
  width: 20px;
  height: 20px;
  margin-top: 1px;
}

.who .yes .icon {
  color: var(--accent);
}

.who .no .icon {
  color: var(--ok);
}

.account-art {
  display: grid;
  place-items: center;
  margin: 20px 0 0;
  padding: 20px 14px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-inset);
  background:
    radial-gradient(70% 90% at 50% 0%, rgb(79 123 255 / 0.14), transparent 70%),
    var(--surface-2);
}

/* ---- Staying safe ----------------------------------------------------- */

.safety {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.safe {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 14px;
  align-items: start;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--card-fill), var(--surface);
  box-shadow: var(--shadow);
}

.safe-icon {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 14px;
  background: rgb(53 211 153 / 0.1);
  border: 1px solid rgb(53 211 153 / 0.28);
  color: var(--ok);
}

.safe-icon .icon {
  width: 22px;
  height: 22px;
}

.safe h3 {
  margin: 1px 0 0;
  color: var(--ink);
  font-size: 16.5px;
  font-weight: 700;
  line-height: 1.3;
}

.safe p {
  margin: 5px 0 0;
  color: var(--ink-2);
  font-size: 14.5px;
  line-height: 1.55;
}

/* ---- The two accordions ----------------------------------------------- */

/* Problems come in kinds, and the kinds are a list of jumps: a row of pills
   on a phone, a column that stays in view beside the answers on a wide
   screen. */
.fix-layout {
  display: grid;
  gap: 24px;
}

.fix-nav-title {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.fix-nav ul {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.fix-nav-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 8px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-pill);
  background: rgb(255 255 255 / 0.035);
  color: var(--ink-2);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  transition: color var(--fast) var(--ease), border-color var(--fast) var(--ease),
    background-color var(--fast) var(--ease);
}

.fix-nav-link .icon {
  width: 16px;
  height: 16px;
  color: var(--accent);
}

.fix-group + .fix-group {
  margin-top: 32px;
}

.fix-group-title {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0 0 12px;
  color: var(--ink);
  font-size: 16px;
  font-weight: 700;
}

.fix-group-title .icon {
  width: 19px;
  height: 19px;
  color: var(--accent);
}

.fixes {
  display: grid;
  gap: 8px;
}

.fix {
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--card-fill), var(--surface);
  transition: border-color var(--fast) var(--ease), background-color var(--fast) var(--ease);
}

.fix[open] {
  border-color: var(--line-loud);
  box-shadow: var(--shadow);
}

.fix summary {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 56px;
  padding: 14px 16px 14px 18px;
  border-radius: 18px;
  cursor: pointer;
  list-style: none;
  -webkit-tap-highlight-color: transparent;
}

.fix summary::-webkit-details-marker {
  display: none;
}

.fix-q {
  flex: 1;
  min-width: 0;
}

.fix-q b {
  display: block;
  color: var(--ink);
  font-size: 16px;
  font-weight: 650;
  line-height: 1.4;
}

.fix-q q {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.45;
  quotes: "“" "”";
}

.fix summary > .icon {
  width: 18px;
  height: 18px;
  color: var(--muted);
  transition: transform var(--fast) var(--ease), color var(--fast) var(--ease);
}

.fix[open] summary > .icon {
  transform: rotate(180deg);
  color: var(--ink);
}

.fix-body {
  display: grid;
  gap: 12px;
  padding: 0 18px 18px;
}

.fix-body p {
  margin: 0;
  color: var(--ink-2);
  font-size: 15px;
  line-height: 1.6;
}

.fix-row {
  display: grid;
  gap: 4px;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--surface-2);
  border: 1px solid var(--line-soft);
}

.fix-row > span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.fix-row.do {
  background: rgb(53 211 153 / 0.06);
  border-color: rgb(53 211 153 / 0.22);
}

.fix-row.do > span {
  color: var(--ok);
}

/* ---- The foot of the page --------------------------------------------- */

.help-end {
  margin-top: clamp(64px, 10vw, 104px);
  padding: 32px 22px;
  text-align: center;
}

.help-end h2 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(1.4rem, 3vw, 1.8rem);
  font-weight: 700;
  letter-spacing: -0.02em;
}

.help-end p {
  max-width: 48ch;
  margin: 10px auto 0;
  color: var(--ink-2);
  font-size: 15.5px;
}

.help-end .button {
  /* site.css makes .button a full-width flex box; this one sizes to its
     words, as the front door's buttons do. */
  width: fit-content;
  min-width: 240px;
  max-width: 100%;
  margin: 22px auto 0;
  padding-left: 28px;
  padding-right: 28px;
}

.help-end .footnote {
  justify-content: center;
}

/* ---- The legal pages: /privacy/ and /terms/ --------------------------- */

/* Generated from docs/legal/*.md (docs/legal/render-pages.mjs) and dressed
   as the guide is: the same rail, hero, sections, cards and closing card.
   What they add is a narrower column for long reading, a contents card,
   tables, one call-out, and the placeholder marks a draft still carries. */

body[data-page="legal"] {
  overflow-x: clip;
  overflow-wrap: break-word;
}

body[data-page="legal"] .sheet {
  max-width: calc(820px + 2 * var(--gutter));
  padding-top: clamp(20px, 5vh, 48px);
  padding-bottom: calc(env(safe-area-inset-bottom) + 56px);
}

body[data-page="legal"] .rail-inner {
  max-width: calc(820px + 2 * var(--gutter));
}

.legal-hero h1 {
  max-width: 18ch;
}

.legal-meta {
  color: var(--muted);
}

.legal-intro,
.legal-toc {
  margin-top: clamp(28px, 5vw, 44px);
}

.legal-toc h2 {
  margin: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.legal-toc ol {
  display: grid;
  gap: 8px 28px;
  margin: 14px 0 0;
  padding-left: 22px;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.5;
}

@media (min-width: 640px) {
  .legal-toc ol {
    grid-template-columns: 1fr 1fr;
  }
}

.legal-toc a {
  color: var(--ink-2);
  text-decoration: none;
}

.legal-section {
  margin-top: clamp(40px, 7vw, 72px);
}

.legal-section .section-head {
  margin-bottom: 16px;
}

.legal-section h2 {
  font-size: clamp(1.35rem, 2.8vw, 1.75rem);
}

.legal-body > :first-child {
  margin-top: 0;
}

.legal-body p,
.legal-body li {
  color: var(--ink-2);
  font-size: 15.5px;
  line-height: 1.65;
  text-wrap: pretty;
}

.legal-body p {
  margin: 14px 0 0;
}

.legal-body ul,
.legal-body ol {
  display: grid;
  gap: 8px;
  margin: 14px 0 0;
  padding-left: 22px;
}

.legal-body li::marker {
  color: var(--accent);
}

.legal-body h3 {
  margin: 28px 0 0;
  color: var(--ink);
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.legal-body strong {
  color: var(--ink);
  font-weight: 650;
}

.legal-body a:not([class]) {
  color: var(--accent-2);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: var(--accent-line);
  text-underline-offset: 3px;
}

/* Wide tables scroll inside their own frame, never the page. */
.legal-table {
  margin: 16px 0 0;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: var(--radius-inset);
}

.legal-table table {
  width: 100%;
  min-width: 520px;
  border-collapse: collapse;
}

.legal-table th,
.legal-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--line-soft);
  color: var(--ink-2);
  font-size: 14.5px;
  line-height: 1.55;
  text-align: left;
  vertical-align: top;
}

.legal-table th {
  background: rgb(255 255 255 / 0.03);
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.legal-table tr:last-child td {
  border-bottom: 0;
}

.legal-callout {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin: 20px 0 0;
  padding: 16px 18px;
  border: 1px solid var(--accent-line);
  border-radius: var(--radius-inset);
  background: var(--accent-soft);
}

.legal-callout .icon {
  margin-top: 3px;
  color: var(--ok);
}

.legal-callout p {
  margin: 0;
  color: var(--ink);
}

/* A value the company has not decided yet, such as its address. Loud on
   purpose: a page that still carries one is a draft. */
mark.placeholder {
  padding: 0 4px;
  border-radius: 4px;
  background: var(--warn);
  color: var(--void);
  font-weight: 650;
}

/* ---- Hover, where there is a pointer ---------------------------------- */

@media (hover: hover) {
  .legal-toc a:hover {
    color: var(--ink);
    text-decoration: underline;
    text-underline-offset: 3px;
  }

  .jump a:hover,
  .fix-nav-link:hover {
    border-color: var(--accent-line);
    background: rgb(255 255 255 / 0.06);
    color: var(--ink);
  }

  .goal-link:hover {
    border-color: var(--accent-line);
    background: var(--surface-3);
  }

  .goal-link:hover .arrow {
    color: var(--accent-2);
    transform: translateX(2px);
  }

  .platform-tab:hover:not([aria-selected="true"]) {
    color: var(--ink);
    background: rgb(255 255 255 / 0.045);
  }

  .back-link:hover {
    border-color: var(--accent-line);
    color: var(--ink);
  }

  .fix:not([open]):hover {
    border-color: var(--line-loud);
  }

  .help-section a:not([class]):hover {
    text-decoration-color: currentColor;
  }
}

/* ---- Wider screens ---------------------------------------------------- */

@media (min-width: 600px) {
  .task-body {
    padding: 22px 24px 24px;
  }

  .setup-card,
  .account-card {
    padding: 28px 28px 26px;
  }

  .safety {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 760px) {
  .panel-head {
    align-items: center;
    gap: 16px;
  }

  .panel-icon {
    width: 58px;
    height: 58px;
    margin-top: 0;
    border-radius: 18px;
  }

  .panel-icon .icon {
    width: 30px;
    height: 30px;
  }

  .platform-tab {
    flex-direction: row;
    gap: 9px;
    min-height: 58px;
    font-size: 15px;
  }

  .platform-tab .icon {
    width: 22px;
    height: 22px;
  }

  .platform-tab[aria-selected="true"]::after {
    bottom: 4px;
  }

  .setup {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr);
    align-items: start;
  }

  .tasks {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .account-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }
}

@media (min-width: 900px) {
  .goals {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .goal {
    padding: 30px 26px 26px;
  }

  .safety {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  /* The kinds of problem stand in a column that stays in view beside the
     answers, which keep one column so an answer that opens pushes down only
     what is under it. */
  .fix-layout {
    grid-template-columns: 232px minmax(0, 1fr);
    gap: 40px;
    align-items: start;
  }

  .fix-nav {
    position: sticky;
    top: 96px;
  }

  .fix-nav ul {
    flex-direction: column;
    gap: 4px;
  }

  .fix-nav-link {
    width: 100%;
    border-color: transparent;
    background: none;
    border-radius: 12px;
  }

  /* Questions: the heading stays in view on the left, the answers keep one
     column on the right, the same shape as the problems above them. */
  .faq-layout {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    gap: 40px;
    align-items: start;
  }

  .faq-layout .section-head {
    position: sticky;
    top: 96px;
    margin-bottom: 0;
  }
}

/* ---- Reduced motion, and forced colours ------------------------------- */

/* site.css turns every animation into its last frame. Two things here are
   not animations it can shorten: the smooth jump help.js asks for (it asks
   matchMedia itself), and the running wire in the hero, which is simply
   stopped. */
@media (prefers-reduced-motion: reduce) {
  .hero-devices .wire {
    animation: none;
  }

  .goal-link:hover .arrow {
    transform: none;
  }
}

@media (forced-colors: active) {
  .task,
  .fix,
  .safe,
  .goal-link,
  .platform-tabs,
  .jump a,
  .fix-nav-link,
  .back-link,
  .legal-table,
  .legal-callout {
    border-color: CanvasText;
  }

  mark.placeholder {
    background: Mark;
    color: MarkText;
  }

  .platform-tab[aria-selected="true"] {
    outline: 2px solid Highlight;
  }

  .help-hero h1 {
    color: CanvasText;
    background: none;
  }
}
