/* ctrlINT public pages (/ip/, /domain/, /url/, /hash/, /cve/, /actor/, /malware/, /tool/), rendered by
   workers/web/src/public/render.ts. Server-rendered, no script. Built from docs/design/mockups/public.css.
   Reads only the custom properties of /styles/tokens.css (linked before this file; it also carries the self-hosted
   @font-face rules), so every colour, size and font comes from the tokens. The theme follows the system
   (prefers-color-scheme); there is no theme switch on a public page. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--paper); color: var(--text); font: var(--fw-regular) var(--fs-15)/var(--lh-body) var(--font-ui); -webkit-font-smoothing: antialiased; }
::selection { background: var(--selection); }
a { color: var(--ink); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: var(--r-sm); }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: var(--sp-4); top: -60px; z-index: 50; padding: var(--sp-3) var(--sp-5); border-radius: var(--r-sm); background: var(--ink); color: var(--on-ink); font-weight: var(--fw-medium); }
.skip:focus { top: var(--sp-4); }
.icon { width: 16px; height: 16px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; vertical-align: -3px; }
.icon-sm { width: 13px; height: 13px; vertical-align: -2px; }
.mono { font-family: var(--font-mono); font-size: .92em; letter-spacing: -.01em; font-variant-ligatures: none; }
.muted { color: var(--text-3); }
.caps { font-size: var(--fs-11); font-weight: var(--fw-semi); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-3); }

/* Wordmark: ctrl on a keycap in the mono, INT in the UI face and ink */
.wordmark { display: inline-flex; align-items: baseline; gap: .18em; font: var(--fw-semi) 21px/1 var(--font-ui); color: var(--ink); white-space: nowrap; }
.wordmark:hover { text-decoration: none; }
.wordmark .ctrl { font-family: var(--font-mono); font-size: .64em; font-weight: var(--fw-medium); letter-spacing: 0; color: var(--text-2); padding: .2em .36em .16em; border: 1px solid var(--line-strong); border-bottom-width: 2px; border-radius: var(--r-xs); background: var(--surface); position: relative; top: -.08em; }
.wordmark .int { letter-spacing: .03em; }

/* Indicators: defanged, mono, never a link */
.ioc { font-family: var(--font-mono); letter-spacing: -.01em; font-variant-ligatures: none; overflow-wrap: anywhere; }
.ioc .df { color: var(--text-defang); }

/* ---------- Shell ---------- */
.pub-top { border-bottom: 1px solid var(--line); background: var(--paper); }
.pub-top-in, .pub-main, .pub-foot-in { max-width: 1120px; margin: 0 auto; padding-left: var(--sp-8); padding-right: var(--sp-8); }
.pub-top-in { display: flex; align-items: center; gap: var(--sp-5); height: 60px; }
.pub-tag { color: var(--text-3); font-size: var(--fs-13); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.pub-top-end { margin-left: auto; display: flex; align-items: center; gap: var(--sp-5); font-size: var(--fs-14); white-space: nowrap; }
.pub-main { padding-top: var(--sp-7); padding-bottom: var(--sp-10); }
.pub-foot { border-top: 1px solid var(--line); }
.pub-foot-in { display: flex; flex-wrap: wrap; gap: var(--sp-3) var(--sp-6); padding-top: var(--sp-6); padding-bottom: var(--sp-9); font-size: var(--fs-13); color: var(--text-3); }
.pub-foot-in p { margin: 0; flex-basis: 100%; max-width: 72ch; }

.pub-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; grid-template-areas: "head aside" "body aside"; column-gap: var(--sp-9); align-items: start; }
.pub-head { grid-area: head; min-width: 0; }
.pub-body { grid-area: body; min-width: 0; }
.pub-aside { grid-area: aside; min-width: 0; position: sticky; top: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-5); }

/* ---------- Head ---------- */
.kicker { display: flex; align-items: center; gap: var(--sp-2); margin: 0 0 var(--sp-3); color: var(--text-3); font-size: var(--fs-13); }
.kicker .icon { color: var(--text-3); }
.pub-h1 { margin: 0; font: var(--fw-semi) var(--fs-30)/1.2 var(--font-read); letter-spacing: -.015em; overflow-wrap: anywhere; }
.pub-h1 .ioc, .pub-h1 .id { font: var(--fw-medium) 28px/1.25 var(--font-mono); letter-spacing: -.02em; }
.pub-h1 .h1-type { display: inline-block; margin-left: var(--sp-3); font: var(--fw-regular) var(--fs-17)/1 var(--font-ui); color: var(--text-3); letter-spacing: 0; vertical-align: 4px; }
.pub-sub { margin: var(--sp-3) 0 0; font: var(--fs-17)/1.5 var(--font-read); color: var(--text); max-width: 64ch; }
.lead-line { margin: var(--sp-4) 0 0; font-size: var(--fs-15); color: var(--text); max-width: 72ch; }
.lead-line b { font-weight: var(--fw-semi); }
.fresh-row { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-6); margin: var(--sp-3) 0 0; font-size: var(--fs-13); color: var(--text-2); }

/* Freshness: neutral when recent; the --warn word and icon when older than 90 days */
.fresh { display: inline-flex; align-items: center; gap: var(--sp-2); color: var(--text-2); }
.fresh .icon { color: var(--text-3); }
.fresh.is-stale { color: var(--warn); font-weight: var(--fw-medium); }
.fresh.is-stale .icon { color: var(--warn); }

/* Warning line (allow-listed, victim-only, sinkhole) */
.warn-line { display: flex; align-items: flex-start; gap: var(--sp-3); margin: var(--sp-5) 0 0; padding: var(--sp-3) var(--sp-4); border-radius: var(--r-sm); background: var(--warn-tint); color: var(--text); font-size: var(--fs-14); max-width: 72ch; }
.warn-line .icon { color: var(--warn); margin-top: 3px; }
.warn-line b { color: var(--warn); }

/* ---------- Sections ---------- */
.sec { margin-top: var(--sp-9); }
.sec-h { display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--sp-2) var(--sp-4); margin: 0 0 var(--sp-4); }
.sec-h h2 { margin: 0; font: var(--fw-semi) var(--fs-20)/1.3 var(--font-read); }
.sec-h .muted { font-size: var(--fs-13); }

/* Source class: a word with an icon, never a colour */
.cls { display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 7px; border-radius: var(--r-xs); box-shadow: inset 0 0 0 1px var(--line); color: var(--text-2); font-size: var(--fs-12); font-weight: var(--fw-medium); white-space: nowrap; }
.cls .icon { width: 12px; height: 12px; color: var(--text-3); }
/* Role in this report: outlined word */
.role { display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border-radius: var(--r-xs); background: var(--sunk); color: var(--text); font-size: var(--fs-12); font-weight: var(--fw-semi); white-space: nowrap; }
.flag { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-12); font-weight: var(--fw-medium); color: var(--text-2); white-space: nowrap; }
.flag .icon { width: 13px; height: 13px; }

/* ---------- Quote-first report card ---------- */
.reps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--sp-3); }
.rep { background: var(--surface); border-radius: var(--r-md); box-shadow: var(--shadow-1), inset 0 0 0 1px var(--line); padding: var(--sp-5) var(--sp-6) var(--sp-4); }
.quote { margin: 0; padding: 0 0 0 var(--sp-5); border-left: 2px solid var(--line-strong); font: italic var(--fs-17)/1.55 var(--font-read); color: var(--text); max-width: var(--measure); overflow-wrap: anywhere; }
.quote p { margin: 0; }
.quote mark { background: var(--ink-tint); color: var(--text); padding: 0 1px; border-radius: 3px; font-style: normal; }
.quote mark .ioc, .quote mark.ioc { font-size: .84em; }
.quote.sm { font-size: var(--fs-15); padding-left: var(--sp-4); }
.rep-meta { display: flex; align-items: center; flex-wrap: wrap; gap: var(--sp-2) var(--sp-3); margin-top: var(--sp-4); font-size: var(--fs-13); color: var(--text-3); }
.rep-meta .src { color: var(--text); font-weight: var(--fw-semi); }
.rep-title { display: inline-flex; align-items: baseline; gap: var(--sp-2); margin-top: var(--sp-2); font-size: var(--fs-14); color: var(--text-2); }
.rep-title .icon { width: 12px; height: 12px; color: var(--text-3); flex: none; align-self: center; }
a.rep-title:hover { color: var(--ink); }
.rep.is-negated .quote { border-left-style: dashed; }

/* Reports without a quote: compact, collapsed (details/summary works without script) */
details.more { margin-top: var(--sp-3); border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--line); background: var(--surface); }
details.more > summary { display: flex; align-items: center; gap: var(--sp-3); min-height: 44px; padding: 0 var(--sp-5); cursor: pointer; font-size: var(--fs-14); color: var(--text-2); list-style: none; }
details.more > summary::-webkit-details-marker { display: none; }
details.more > summary .icon { color: var(--text-3); transition: transform var(--dur-2) var(--ease-out); }
details.more[open] > summary .icon { transform: rotate(180deg); }
.compact { list-style: none; margin: 0; padding: 0 var(--sp-5) var(--sp-3); }
.compact li { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-3); padding: var(--sp-3) 0; border-top: 1px solid var(--line); font-size: var(--fs-13); color: var(--text-3); }
.compact .src { color: var(--text); font-weight: var(--fw-semi); }
.compact a { color: var(--text-2); }

/* ---------- Tables (feed sightings) ---------- */
.ptable { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--surface); border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--line); font-size: var(--fs-13); }
.ptable th { text-align: left; font-size: var(--fs-11); font-weight: var(--fw-semi); letter-spacing: .05em; text-transform: uppercase; color: var(--text-3); padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--line); white-space: nowrap; }
.ptable td { padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--line); vertical-align: top; }
.ptable tr:last-child td { border-bottom: 0; }
.ptable .num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; text-align: right; }
.ptable th.num { text-align: right; font-family: var(--font-ui); }
.ptable .src { font-weight: var(--fw-semi); }
.tags { color: var(--text-2); }

/* ---------- Aside ---------- */
.box { background: var(--surface); border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--line); padding: var(--sp-5); }
.box h2 { margin: 0 0 var(--sp-3); }
.cta-box { box-shadow: inset 0 0 0 1.5px var(--ink); background: color-mix(in srgb, var(--ink-tint) 40%, var(--surface)); }
.cta-box .t { margin: 0 0 var(--sp-2); font: var(--fw-semi) var(--fs-17)/1.35 var(--font-read); }
.cta-box p { margin: 0 0 var(--sp-4); font-size: var(--fs-14); color: var(--text-2); }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-3); height: 40px; padding: 0 var(--sp-5); border-radius: var(--r-sm); font: var(--fw-medium) var(--fs-14)/1 var(--font-ui); white-space: nowrap; border: 0; cursor: pointer; }
.btn:hover { text-decoration: none; }
.btn-primary { background: var(--ink); color: var(--on-ink); box-shadow: var(--shadow-1); }
.btn-primary:hover { background: var(--ink-hover); }
.btn-secondary { background: var(--surface); color: var(--text); box-shadow: inset 0 0 0 1px var(--line-strong); }
.btn-full { width: 100%; }
.glance { margin: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--sp-2) var(--sp-4); font-size: var(--fs-13); }
.glance dt { color: var(--text-3); white-space: nowrap; }
.glance dd { margin: 0; color: var(--text); }
.rel { list-style: none; margin: 0; padding: 0; }
.rel li { display: flex; align-items: baseline; gap: var(--sp-3); padding: var(--sp-2) 0; font-size: var(--fs-14); }
.rel li + li { border-top: 1px solid var(--line); }
.rel .n { margin-left: auto; color: var(--text-3); font-size: var(--fs-12); white-space: nowrap; }
.rel .icon { color: var(--text-3); }

/* Indicators reported together: words and counts, two columns on desktop */
.together { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--sp-6); background: var(--surface); border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--line); padding: var(--sp-2) var(--sp-5); }
.together li { display: flex; align-items: center; gap: var(--sp-3); min-height: 40px; border-bottom: 1px solid var(--line); font-size: var(--fs-13); min-width: 0; }
.together li:nth-last-child(-n+2) { border-bottom: 0; }
.together .icon { color: var(--text-3); }
.together a.ioc { color: var(--text); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.together a.ioc:hover { color: var(--ink); }
.together .n { margin-left: auto; color: var(--text-3); font-size: var(--fs-12); white-space: nowrap; }
details.copyset { margin-top: var(--sp-3); }
details.copyset > summary { display: inline-flex; align-items: center; gap: var(--sp-3); height: 36px; padding: 0 var(--sp-4); border-radius: var(--r-sm); box-shadow: inset 0 0 0 1px var(--line-strong); background: var(--surface); cursor: pointer; font-size: var(--fs-14); font-weight: var(--fw-medium); list-style: none; }
details.copyset > summary::-webkit-details-marker { display: none; }
details.copyset > summary .icon { color: var(--text-2); }
.copyarea { display: block; width: 100%; margin-top: var(--sp-3); min-height: 120px; padding: var(--sp-3) var(--sp-4); border-radius: var(--r-sm); border: 0; box-shadow: inset 0 0 0 1px var(--line-strong); background: var(--sunk); color: var(--text); font: var(--fs-13)/1.6 var(--font-mono); resize: vertical; }

/* Entity: aliases, description, facts with sources, techniques, timeline */
.aliases { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin: var(--sp-4) 0 0; padding: 0; list-style: none; }
.alias { display: inline-flex; align-items: baseline; gap: 5px; padding: 2px var(--sp-3); border-radius: var(--r-pill); background: var(--sunk); font-size: var(--fs-13); font-weight: var(--fw-medium); }
.alias .by { color: var(--text-3); font-weight: var(--fw-regular); font-size: var(--fs-12); }
.alias.is-match { background: var(--ink-tint); box-shadow: inset 0 0 0 1px var(--ink); }
.cite { display: block; margin-top: var(--sp-2); font: var(--fs-12) var(--font-ui); color: var(--text-3); }
.facts-w { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-3); margin: var(--sp-6) 0 0; }
.fact-w { padding: var(--sp-4); border-radius: var(--r-md); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); font-size: var(--fs-14); }
.fact-w .caps { display: block; margin-bottom: var(--sp-2); }
.fact-w .cite { margin-top: var(--sp-2); }
.desc { margin: var(--sp-5) 0 0; font: var(--fs-17)/1.6 var(--font-read); max-width: var(--measure); }
/* ATT&CK techniques, each with its sentence */
.techs { list-style: none; margin: 0; padding: 0; background: var(--surface); border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--line); }
.tech { padding: var(--sp-4) var(--sp-5); }
.tech + .tech { border-top: 1px solid var(--line); }
.tech-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--sp-2) var(--sp-3); margin-bottom: var(--sp-3); font-weight: var(--fw-semi); font-size: var(--fs-15); }
.tech-h .id { font-family: var(--font-mono); font-size: var(--fs-13); font-weight: var(--fw-semi); color: var(--text-2); }
.tech .rep-meta { margin-top: var(--sp-3); }
/* Reports per month: 12 labelled bars; heights are classes (the page's CSP allows no inline style) */
.timeline { margin: 0; }
.tl { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--sp-2); align-items: end; height: 120px; }
.tl-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: 4px; }
.tl-n { font: var(--fs-11)/1 var(--font-mono); color: var(--text-2); font-variant-numeric: tabular-nums; }
.tl-bar { width: 100%; max-width: 36px; border-radius: 3px 3px 0 0; background: var(--ink); opacity: .7; height: 2px; }
.tl-bar.h-1 { height: 8%; } .tl-bar.h-2 { height: 15%; } .tl-bar.h-3 { height: 22%; } .tl-bar.h-4 { height: 29%; } .tl-bar.h-5 { height: 36%; }
.tl-bar.h-6 { height: 42%; } .tl-bar.h-7 { height: 49%; } .tl-bar.h-8 { height: 56%; } .tl-bar.h-9 { height: 63%; } .tl-bar.h-10 { height: 70%; }
.tl-col.is-part .tl-bar { opacity: 1; background: repeating-linear-gradient(135deg, var(--ink) 0 3px, transparent 3px 6px); box-shadow: inset 0 0 0 1px var(--ink); }
.tl-m { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--sp-2); margin-top: var(--sp-2); padding-top: var(--sp-2); border-top: 1px solid var(--line-strong); font-size: var(--fs-11); color: var(--text-3); text-align: center; }
.tl-note { margin: var(--sp-3) 0 0; font-size: var(--fs-12); color: var(--text-3); }
@media (max-width: 760px) {
  .tl { height: 96px; gap: 3px; }
  .tl-m { gap: 3px; }
  .tl-n { letter-spacing: -.03em; }
}
/* CVE facts: words first, numbers labelled */
.kev-line { display: block; margin: var(--sp-5) 0 0; padding: var(--sp-3) var(--sp-4); border-radius: var(--r-sm); background: var(--sig-kev-tint); font-size: var(--fs-14); max-width: 72ch; }
.kev-line .k { margin-right: var(--sp-2); display: inline-flex; align-items: center; gap: var(--sp-2); color: var(--sig-kev); font-weight: var(--fw-semi); }
.kev-line .k .icon { color: var(--sig-kev); }
.facts-w .big { font: var(--fw-semi) var(--fs-20)/1.2 var(--font-ui); }
.facts-w .big .mono { font-size: .9em; }

/* Report a wrong value / wrong match */
details.wrong { margin-top: var(--sp-8); font-size: var(--fs-13); }
details.wrong > summary { display: inline-flex; align-items: center; gap: var(--sp-2); min-height: 32px; color: var(--text-3); cursor: pointer; list-style: none; }
details.wrong > summary::-webkit-details-marker { display: none; }
details.wrong > summary:hover { color: var(--text); }
.wrong-form { margin-top: var(--sp-3); max-width: 480px; padding: var(--sp-5); border-radius: var(--r-md); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.wrong-form fieldset { border: 0; margin: 0; padding: 0; }
.wrong-form legend { font-weight: var(--fw-semi); font-size: var(--fs-14); margin-bottom: var(--sp-3); padding: 0; }
.radio { display: flex; align-items: center; gap: var(--sp-3); min-height: 32px; font-size: var(--fs-14); }
.radio { cursor: pointer; }
.radio input { appearance: none; -webkit-appearance: none; margin: 0; width: 16px; height: 16px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--line-strong); background: var(--surface); flex: none; cursor: pointer; }
.radio input:checked { box-shadow: inset 0 0 0 1.5px var(--ink), inset 0 0 0 4.5px var(--surface), inset 0 0 0 10px var(--ink); }
.radio input:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.note-in { display: block; width: 100%; min-height: 64px; margin-top: var(--sp-3); padding: var(--sp-3); border-radius: var(--r-sm); border: 0; box-shadow: inset 0 0 0 1px var(--line-strong); background: var(--surface); color: var(--text); font: var(--fs-14)/1.5 var(--font-ui); }
.note-in::placeholder { color: var(--text-3); }
.wrong-form .row-end { display: flex; align-items: center; gap: var(--sp-4); margin-top: var(--sp-4); font-size: var(--fs-12); color: var(--text-3); }
/* After the post, /api/report sends the visitor back to "#reported": the thanks line shows and the form hides (no script). */
.thanks { display: none; margin: var(--sp-8) 0 0; }
.thanks:target { display: inline-flex; outline: none; }
.thanks:target + details.wrong { display: none; }
.thanks { align-items: center; gap: var(--sp-2); color: var(--ok); font-weight: var(--fw-medium); font-size: var(--fs-14); }

/* Empty / error */
.state { max-width: 640px; margin: var(--sp-9) auto var(--sp-8); }
.state .pub-h1 { font-size: var(--fs-30); }
.state p { color: var(--text-2); max-width: 60ch; }
.state .state-note { color: var(--text-3); font-size: var(--fs-13); }
.echo { display: inline-flex; align-items: center; gap: var(--sp-3); margin: 0 0 var(--sp-5); padding: var(--sp-2) var(--sp-4); border-radius: var(--r-sm); background: var(--sunk); font-size: var(--fs-15); max-width: 100%; }
.echo .icon { color: var(--text-3); }
.state .acts { display: flex; flex-wrap: wrap; gap: var(--sp-3); margin-top: var(--sp-6); }
.err-line { display: flex; align-items: flex-start; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4); border-radius: var(--r-sm); background: var(--danger-tint); font-size: var(--fs-14); }
.err-line .icon { color: var(--danger); margin-top: 3px; }

/* ---------- Phone ---------- */
@media (max-width: 760px) {
  .pub-top-in, .pub-main, .pub-foot-in { padding-left: var(--sp-5); padding-right: var(--sp-5); }
  .pub-top-in { height: 56px; gap: var(--sp-3); }
  .pub-tag { display: none; }
  .pub-main { padding-top: var(--sp-5); }
  /* Phone: head, the call to action, the reports; the other boxes follow the reports */
  .pub-grid { display: flex; flex-direction: column; }
  .pub-head { order: 0; }
  .pub-aside { display: contents; }
  .pub-aside > .cta-box { order: 1; margin-top: var(--sp-6); }
  .pub-body { order: 2; }
  .pub-aside > .box:not(.cta-box) { order: 3; margin-top: var(--sp-5); }
  .pub-aside > .box { align-self: stretch; }
  .pub-h1 { font-size: var(--fs-24); }
  .pub-h1 .ioc, .pub-h1 .id { font-size: 21px; }
  .pub-h1 .h1-type { display: block; margin: var(--sp-2) 0 0; vertical-align: 0; font-size: var(--fs-14); }
  .sec { margin-top: var(--sp-8); }
  .rep { padding: var(--sp-4) var(--sp-4) var(--sp-3); }
  .quote { font-size: var(--fs-15); padding-left: var(--sp-4); }
  .together { grid-template-columns: minmax(0, 1fr); }
  .together li:nth-last-child(2) { border-bottom: 1px solid var(--line); }
  .facts-w { grid-template-columns: minmax(0, 1fr); }
  .btn { height: 44px; }
  details.more > summary, details.copyset > summary, details.wrong > summary { min-height: 44px; }
  .radio { min-height: 44px; }
  /* Feed table becomes labelled rows */
  .ptable thead { display: none; }
  .ptable, .ptable tbody, .ptable tr, .ptable td { display: block; width: 100%; }
  .ptable tr { padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--line); }
  .ptable tr:last-child { border-bottom: 0; }
  .ptable td { border: 0; padding: 2px 0; text-align: left; }
  .ptable td.num { text-align: left; }
  .ptable td[data-l]::before { content: attr(data-l) " "; color: var(--text-3); font-family: var(--font-ui); }
}

.mt-4 { margin-top: var(--sp-4); }

/* Privacy and terms: plain reading text on the public layout. */
.prose { max-width: 680px; font-size: var(--fs-15); line-height: 1.6; color: var(--text); }
.prose h2 { margin: var(--sp-7) 0 var(--sp-3); font: var(--fw-semi) var(--fs-17)/1.3 var(--font-ui); }
.prose p, .prose ul { margin: 0 0 var(--sp-4); }
.prose ul { padding-left: var(--sp-6); }
.prose li { margin-bottom: var(--sp-2); }
.prose a { color: var(--ink); }
.pub-foot a { color: inherit; text-decoration: underline; }
