/* Editorial pages: /writing/, its articles, /privacy/ and /terms/.
   Modelled on Linear's own: /now (a hub of covered cards with hairline column rules), a /now article
   (centred crumb and title, a line illustration, a byline, a reading column, a closing byline with
   Copy link) and /privacy and /terms (a left reading column, a mono date line, a numbered mono contents
   list between hairlines, sections split by hairlines).
   Title font: Newsreader by Production Type, SIL Open Font License 1.1, self-hosted
   (see frameworks.css for its provenance). Titles only; everything else stays Geist. */

@font-face { font-family: "Newsreader"; src: url("../fonts/Newsreader-Display-Latin.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }

.ed { --ed-col: 688px; --ed-wide: 1280px; --ed-serif: "Newsreader", Georgia, "Times New Roman", serif; --ed-mono: "Geist Mono", ui-monospace, monospace; }
.ed-col { max-width: calc(var(--ed-col) + 2 * var(--outer)); margin: 0 auto; padding: 0 var(--outer); }
.ed-wide { max-width: calc(var(--ed-wide) + 2 * var(--outer)); margin: 0 auto; padding: 0 var(--outer); }

/* a byline: separate elements, the dot is drawn, never typed */
.ed-by { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 0; font-size: 13px; color: var(--fg-4); }
.ed-by > * + *::before { content: ""; display: inline-block; width: 3px; height: 3px; margin: 0 10px; border-radius: 50%; background: currentColor; vertical-align: middle; opacity: .8; }

/* ---------- line art (shared vocabulary with the frameworks pages) ---------- */
.ed-art { display: block; width: 100%; height: auto; }
.ed-art .d { fill: none; stroke: var(--fg-4); stroke-width: 1; stroke-dasharray: 3 4; }
.ed-art .s { fill: none; stroke: var(--fg-3); stroke-width: 1; }
.ed-art .k { fill: none; stroke: var(--fg-1); stroke-width: 1.25; }
.ed-art .h { stroke: color-mix(in srgb, var(--fg-3) 55%, transparent); stroke-width: 1; }
.ed-art .dot { fill: var(--fg-1); }
.ed-art .dim circle { fill: none; stroke: var(--fg-4); stroke-width: 1; opacity: .45; }
.ed-art .lit circle { fill: none; stroke: var(--fg-2); stroke-width: 1; }
.ed-art .ed-ping { fill: none; stroke: var(--cu); stroke-width: 1; opacity: 0; transform-box: fill-box; transform-origin: center; }
.ed-art .ed-wave { opacity: .3; }
/* motion runs only while the art is on screen (.on, set by editorial.js) */
.on .ed-wave { animation: ed-wave 6s var(--ease-out) infinite; animation-delay: calc(var(--k) * .6s); }
@keyframes ed-wave { 0%, 100% { opacity: .25; } 18% { opacity: 1; stroke: var(--fg-2); } 40% { opacity: .25; } }
.on .ed-ping { animation: ed-ping 6s var(--ease-out) infinite; }
.on .ed-ping:nth-of-type(odd) { animation-delay: 2.4s; }
@keyframes ed-ping { 0%, 50% { opacity: 0; transform: scale(1); } 56% { opacity: .9; } 80%, 100% { opacity: 0; transform: scale(2.6); } }
.ed-ray { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1.6s var(--ease-enter); transition-delay: calc(.3s + var(--k) * .22s); }
.seen .ed-ray { stroke-dashoffset: 0; }
.on .ed-ring { animation: ed-turn 40s linear infinite; transform-box: fill-box; transform-origin: center; }
@keyframes ed-turn { to { transform: rotate(360deg); } }

/* ---------- writing hub (Linear /now) ---------- */
.ed-hub { padding-top: 152px; padding-bottom: 160px; }
.ed-hub h1 { font: 400 56px/1 var(--ed-serif); letter-spacing: -0.025em; font-optical-sizing: auto; }
.ed-hub-bar { margin-top: 28px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; }
.ed-tabs { display: flex; gap: 16px; font-size: 16px; }
.ed-tabs a { color: var(--fg-3); transition: color .16s; }
.ed-tabs a:hover, .ed-tabs a[aria-current="page"] { color: var(--fg-1); }
.ed-hub-bar p { font-size: 14px; color: var(--fg-4); }

.ed-grid { margin-top: 48px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ed-card { position: relative; display: flex; flex-direction: column; padding: 0 32px; }
.ed-grid > :first-child { padding-left: 0; }
.ed-grid > :last-child { padding-right: 0; }
.ed-grid > * + * { border-left: 1px solid var(--line); }
.ed-card.lead { grid-column: span 2; }
.ed-cover { position: relative; height: 360px; border-radius: 8px; overflow: hidden; background: radial-gradient(120% 120% at 8% 92%, var(--bg-2), var(--bg-1) 60%); box-shadow: inset 0 0 0 1px var(--line); transition: box-shadow .3s; }
.ed-cover .ed-art { position: absolute; inset: 0; height: 100%; }
a.ed-card:hover .ed-cover { box-shadow: inset 0 0 0 1px var(--line-3); }
a.ed-card:focus-visible { outline: none; }
a.ed-card:focus-visible .ed-cover { box-shadow: 0 0 0 2px var(--fg-1); }
.ed-card h2 { margin-top: 32px; font-size: 20px; line-height: 26.6px; font-weight: 510; letter-spacing: -0.012em; color: var(--fg-1); }
.ed-card.lead h2 { font: 400 40px/1.05 var(--ed-serif); letter-spacing: -0.02em; font-optical-sizing: auto; max-width: 18ch; }
.ed-card p { margin-top: 10px; font-size: 15px; line-height: 24px; color: var(--fg-3); max-width: 52ch; }
.ed-card .ed-by { margin-top: auto; padding-top: 28px; }
.ed-card .ed-by .go { margin-left: auto; }
.ed-card .ed-by .go::before { display: none; }
.ed-card .go { display: inline-flex; align-items: center; gap: 6px; color: var(--fg-2); }
.ed-card .go svg { width: 12px; height: 12px; transition: transform .2s var(--ease-enter); }
a.ed-card:hover .go svg { transform: translateX(3px); }

/* the honest empty slot: a dashed frame, not a fake post */
.ed-card.soon .ed-cover { background: transparent; box-shadow: none; outline: 1px dashed var(--line-3); outline-offset: -1px; display: grid; place-items: center; }
.ed-card.soon .ed-cover svg { width: 60%; max-width: 220px; }
.ed-card.soon ul { margin: 14px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--line-2); }
.ed-card.soon li { padding: 9px 0; display: grid; grid-template-columns: 18px minmax(0, 1fr); font-size: 14px; line-height: 21px; color: var(--fg-3); border-bottom: 1px solid var(--line-2); }
.ed-card.soon li::before { content: ""; width: 7px; height: 7px; margin-top: 7px; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--fg-4); }

/* ---------- article (Linear /now article) ---------- */
.ed-art-head { padding-top: 152px; text-align: center; }
.ed-crumb { display: inline-flex; flex-wrap: wrap; justify-content: center; gap: 8px; font-size: 14px; color: var(--fg-3); }
.ed-crumb a { transition: color .16s; }
.ed-crumb a:hover { color: var(--fg-1); }
.ed-crumb i { font-style: normal; color: var(--fg-4); }
.ed-art-head h1 { margin: 20px auto 0; max-width: 18ch; font: 400 clamp(44px, 6vw, 64px)/1.02 var(--ed-serif); letter-spacing: -0.024em; font-optical-sizing: auto; }
.ed-hero-art { margin: 72px auto 0; max-width: calc(880px + 2 * var(--outer)); padding: 0 var(--outer); }
.ed-art-head .ed-by, .ed-hero-by { margin-top: 64px; justify-content: center; font-size: 15px; color: var(--fg-3); }

.ed-body { margin-top: 72px; }
.ed-body > * + * { margin-top: 20px; }
.ed-body > p, .ed-body li { font-size: 17px; line-height: 27.2px; color: var(--fg-2); }
.ed-body > p.ed-lede { font-size: 20px; line-height: 30px; color: var(--fg-1); letter-spacing: -0.008em; }
.ed-body b { color: var(--fg-1); font-weight: 590; }
.ed-body a:not(.ed-anchor) { color: var(--fg-1); text-decoration: underline; text-decoration-color: var(--fg-4); text-underline-offset: 3px; transition: text-decoration-color .2s; }
.ed-body a:not(.ed-anchor):hover { text-decoration-color: var(--fg-1); }
.ed-body ul, .ed-body ol { margin-top: 16px; padding: 0 0 0 20px; }
.ed-body li + li { margin-top: 8px; }
.ed-body li::marker { color: var(--fg-4); }
.ed-body h2, .ed-body h3 { position: relative; scroll-margin-top: 96px; color: var(--fg-1); }
.ed-body h2 { margin-top: 64px; font-size: 24px; line-height: 31.92px; font-weight: 590; letter-spacing: -0.012em; }
.ed-body h3 { margin-top: 40px; font-size: 17px; line-height: 27.2px; font-weight: 590; }
.ed-body h2 + *, .ed-body h3 + * { margin-top: 12px; }
.ed-anchor { position: absolute; left: -36px; top: 50%; width: 24px; height: 24px; margin-top: -12px; display: grid; place-items: center; border-radius: 6px; font-size: 15px; font-weight: 400; color: var(--fg-4); opacity: 0; transition: opacity .16s, color .16s, background .16s; }
.ed-body h2:hover .ed-anchor, .ed-body h3:hover .ed-anchor, .ed-anchor:focus-visible { opacity: 1; }
.ed-anchor:hover { color: var(--fg-1); background: var(--bg-3); }
@media (max-width: 860px) { .ed-anchor { display: none; } }

/* the four commitments: numbered rows on one rule */
.ed-commit { margin-top: 28px !important; border-top: 1px solid var(--line); }
.ed-commit > div { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 12px; padding: 22px 0; border-bottom: 1px solid var(--line); }
.ed-commit > div > span { font: 400 13px/27.2px var(--ed-mono); color: var(--fg-4); letter-spacing: 0; }
.ed-commit h3 { margin: 0 !important; }
.ed-commit p { margin-top: 4px; font-size: 17px; line-height: 27.2px; color: var(--fg-2); }

.ed-aside { margin-top: 40px !important; padding: 22px 24px; border-radius: 10px; background: var(--bg-1); box-shadow: inset 0 0 0 1px var(--line-2); }
.ed-aside > p { font-size: 15px !important; line-height: 24px !important; color: var(--fg-2) !important; }
.ed-aside ul { margin-top: 12px; padding-left: 18px; }
.ed-aside li { font-size: 15px !important; line-height: 24px !important; color: var(--fg-3) !important; }

/* closing byline row with Copy link (Linear) */
.ed-end { margin-top: 64px; padding-top: 28px; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.ed-end .ed-by { font-size: 15px; color: var(--fg-3); }
.ed-copy { height: 32px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; color: var(--fg-3); font: inherit; font-size: 15px; cursor: pointer; transition: color .16s, background .16s; }
.ed-copy:hover { color: var(--fg-1); background: var(--bg-2); }

.ed-pn { margin-top: 48px; padding-bottom: 160px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.ed-pn a { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px; border: 1px solid var(--border); border-radius: 8px; transition: background .16s, border-color .16s; }
.ed-pn a:hover { background: var(--bg-1); border-color: var(--line-3); }
.ed-pn a span { font-size: 13px; color: var(--fg-4); }
.ed-pn a b { font-size: 15px; line-height: 22px; font-weight: 500; color: var(--fg-1); }
.ed-pn a.nx { text-align: right; align-items: flex-end; }
@media (max-width: 560px) { .ed-pn { grid-template-columns: 1fr; } .ed-pn a.nx { text-align: left; align-items: flex-start; } }

/* ---------- legal pages (Linear /privacy and /terms) ---------- */
.ed-legal { padding-top: 152px; }
.ed-draft { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 10px; padding: 14px 16px; border-radius: 10px; background: var(--amber-tint); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--amber) 28%, transparent); }
.ed-draft i { width: 8px; height: 8px; margin-top: 7px; border-radius: 50%; background: var(--amber); }
.ed-draft b { display: block; font-size: 14px; font-weight: 500; color: var(--fg-1); }
.ed-draft p { margin-top: 2px; font-size: 14px; line-height: 21px; color: var(--fg-2); }
.ed-legal h1 { margin-top: 64px; font: 400 clamp(48px, 7vw, 72px)/1 var(--ed-serif); letter-spacing: -0.025em; font-optical-sizing: auto; }
.ed-date { margin-top: 28px; font: 400 13px/20px var(--ed-mono); color: var(--fg-3); letter-spacing: 0; }
.ed-legal .ed-body { margin-top: 32px; }
.ed-toc { margin-top: 40px !important; padding: 32px 0 !important; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); list-style: none; counter-reset: ed-toc; }
.ed-toc li { margin: 0 !important; counter-increment: ed-toc; }
.ed-toc a { display: grid; grid-template-columns: 36px minmax(0, 1fr); padding: 8px 0; font: 400 14px/24px var(--ed-mono) !important; letter-spacing: 0; color: var(--fg-3) !important; text-decoration: none !important; transition: color .16s; }
.ed-toc a::before { content: counter(ed-toc) "."; text-align: right; padding-right: 12px; color: var(--fg-4); }
.ed-toc a:hover { color: var(--fg-1) !important; }
.ed-legal .ed-body h2 { margin-top: 0; padding-top: 48px; border-top: 1px solid var(--line); font-size: 30px; line-height: 36px; letter-spacing: -0.02em; }
.ed-legal .ed-body h2 .ed-anchor { top: calc(50% + 24px); }
.ed-legal .ed-body > p + h2 { margin-top: 48px; }
.ed-legal .ed-body h2 + p { margin-top: 24px; }
.ed-legal .ed-body .ed-toc + h2 { border-top: 0; padding-top: 16px; }
.ed-upd { display: block; margin-top: 14px !important; padding: 10px 12px; border-radius: 8px; border: 1px dashed color-mix(in srgb, var(--amber) 55%, transparent); font: 400 13px/20px var(--ed-mono) !important; letter-spacing: 0; color: var(--amber) !important; }
.ed-rel { margin-top: 24px !important; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.ed-rel a { display: flex; flex-direction: column; min-height: 168px; padding: 20px 22px; border-radius: 8px; background: var(--bg-1); box-shadow: inset 0 0 0 1px var(--line); text-decoration: none !important; transition: box-shadow .16s; }
.ed-rel a:hover { box-shadow: inset 0 0 0 1px var(--line-3); }
.ed-rel b { font-size: 17px; font-weight: 510; color: var(--fg-1); }
.ed-rel span { margin-top: auto; font-size: 14px; line-height: 21px; color: var(--fg-3); }
.ed-rel em { margin-top: 14px; font-style: normal; font-size: 14px; color: var(--fg-3); }
@media (max-width: 560px) { .ed-rel { grid-template-columns: 1fr; } }
.ed-legal-end { margin-top: 96px; padding: 24px 0 160px; border-top: 1px solid var(--line); font-size: 13px; line-height: 20px; color: var(--fg-4); }

@media (max-width: 1024px) {
  .ed-grid { grid-template-columns: 1fr; }
  .ed-card, .ed-grid > :first-child, .ed-grid > :last-child { padding: 0; }
  .ed-grid > * + * { border-left: 0; border-top: 1px solid var(--line); margin-top: 48px; padding-top: 48px; }
  .ed-card.lead { grid-column: auto; }
}
@media (max-width: 640px) {
  .ed-hub, .ed-art-head, .ed-legal { padding-top: 120px; }
  .ed-cover { height: auto; aspect-ratio: 4 / 3; }
  .ed-card.lead h2 { font-size: 32px; }
  .ed-body > p.ed-lede { font-size: 18px; line-height: 28px; }
  .ed-art-head .ed-by, .ed-hero-by { margin-top: 40px; }
  .ed-legal .ed-body h2 { font-size: 26px; line-height: 32px; }
}
@media (prefers-reduced-motion: reduce) {
  .ed-art *, .on .ed-art * { animation: none !important; transition: none !important; }
  .ed-ray { stroke-dashoffset: 0; }
}
.ed-hub-bar .ed-count { font: 400 13px/20px var(--ed-mono); color: var(--fg-3); letter-spacing: 0; }

/* phone pass (24 Oct): 40px touch targets; the empty "soon" cover shorter so it leaves no dead gap */
@media (max-width: 860px) {
  .ed-copy { height: 40px; }
  .ed-crumb a { display: inline-flex; align-items: center; min-height: 40px; }
  .ed-body p a { padding: 10px 0; }
}
@media (max-width: 640px) {
  .ed-card.soon .ed-cover { aspect-ratio: 2 / 1; }
}

/* ===================== legal (start) =====================
   Page-specific styles for /privacy/ and /terms/ only. Every rule is scoped under .ed-legal,
   so /writing/ and its articles are untouched. Added 24 Oct 2026 with the in-depth drafts. */
/* numbered section titles, matching the numbered contents list */
.ed-legal .ed-body { counter-reset: ed-sec; }
.ed-legal .ed-body h2 { counter-increment: ed-sec; }
.ed-legal .ed-body h2::before { content: counter(ed-sec) ". "; color: var(--fg-4); font-weight: 400; }
.ed-legal .ed-body h3 { margin-top: 32px; font-size: 17px; line-height: 27.2px; }
.ed-legal .ed-body > ul + h3, .ed-legal .ed-body > p + h3, .ed-legal .ed-body > .ed-tbl + h3 { margin-top: 32px; }
.ed-legal .ed-body > p + p { margin-top: 16px; }
/* contents: two columns on wide screens; 40px rows on a phone */
@media (min-width: 861px) {
  .ed-legal .ed-toc { columns: 2; column-gap: 32px; }
  .ed-legal .ed-toc li { break-inside: avoid; }
}
@media (max-width: 860px) {
  .ed-legal .ed-toc { padding: 16px 0 !important; }
  .ed-legal .ed-toc a { min-height: 40px; align-items: center; padding: 8px 0; }
}
/* a decision still to make: inline, dashed, amber; the block form is .ed-upd */
.ed-ph { padding: 1px 6px; border-radius: 6px; border: 1px dashed color-mix(in srgb, var(--amber) 55%, transparent); font: 400 0.82em/1.5 var(--ed-mono); letter-spacing: 0; color: var(--amber); -webkit-box-decoration-break: clone; box-decoration-break: clone; overflow-wrap: anywhere; }
.ed-legal .ed-upd { overflow-wrap: anywhere; }
.ed-tbl .ed-ph { white-space: nowrap; }
/* the summary box at the top */
.ed-legal .ed-aside { margin-top: 32px !important; }
.ed-legal .ed-aside h2 { all: unset; }
.ed-legal .ed-aside > b { display: block; font-size: 15px; color: var(--fg-1); }
.ed-legal .ed-aside ul { margin-top: 10px; }
/* definitions */
.ed-defs { margin-top: 20px !important; border-top: 1px solid var(--line-2); }
.ed-defs > div { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 4px 24px; padding: 14px 0; border-bottom: 1px solid var(--line-2); }
.ed-defs dt { font-size: 15px; line-height: 24px; font-weight: 590; color: var(--fg-1); }
.ed-defs dd { margin: 0; font-size: 15px; line-height: 24px; color: var(--fg-2); }
@media (max-width: 640px) { .ed-defs > div { grid-template-columns: 1fr; } }
/* tables: hairline rows; on a phone each row stacks, labelled, so nothing scrolls sideways */
.ed-tbl { margin-top: 20px !important; width: 100%; border-collapse: collapse; font-size: 15px; line-height: 23px; }
.ed-tbl th { text-align: left; font: 400 12px/18px var(--ed-mono); letter-spacing: 0; color: var(--fg-4); padding: 0 16px 10px 0; border-bottom: 1px solid var(--line); vertical-align: bottom; }
.ed-tbl td { padding: 12px 16px 12px 0; border-bottom: 1px solid var(--line-2); color: var(--fg-2); vertical-align: top; overflow-wrap: anywhere; }
.ed-tbl td:first-child { color: var(--fg-1); font-weight: 510; }
.ed-tbl th:last-child, .ed-tbl td:last-child { padding-right: 0; }
@media (max-width: 640px) {
  .ed-tbl, .ed-tbl tbody, .ed-tbl tr, .ed-tbl td { display: block; width: 100%; }
  .ed-tbl thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .ed-tbl tr { padding: 12px 0; border-bottom: 1px solid var(--line-2); }
  .ed-tbl td { padding: 2px 0; border: 0; }
  .ed-tbl td[data-l]::before { content: attr(data-l); display: block; margin-top: 6px; font: 400 12px/18px var(--ed-mono); color: var(--fg-4); }
  .ed-tbl td:first-child::before { display: none; }
}
/* the Related row: three cards when a third (a placeholder) is present */
.ed-rel.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ed-rel .soon { background: transparent; box-shadow: none; outline: 1px dashed var(--line-3); outline-offset: -1px; }
.ed-rel .soon em { color: var(--amber); font: 400 13px/20px var(--ed-mono); }
@media (max-width: 860px) { .ed-rel.three { grid-template-columns: 1fr; } .ed-rel.three a { min-height: 0; } .ed-rel.three span { margin-top: 10px; } }
/* ===================== legal (end) ===================== */

/* ===================== minimal pass (24 Oct): layout and heading styling only ===================== */
/* writing index: a quiet list, title and date */
.ed-hub-sub { margin-top: 16px; font-size: 15px; color: var(--fg-3); }
.ed-list { margin: 56px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.ed-list li { border-bottom: 1px solid var(--line); }
.ed-list a, .ed-list li.soon { display: grid; grid-template-columns: 14px minmax(0, 1fr) 88px 96px; align-items: center; gap: 16px; padding: 18px 0; }
.ed-l-t { min-width: 0; }
.ed-list a b { display: block; font-size: 20px; line-height: 1.3; font-weight: 500; letter-spacing: -0.015em; color: var(--fg-1); transition: color .16s; }
.ed-l-t small { display: block; margin-top: 4px; font-size: 14px; line-height: 1.5; color: var(--fg-3); }
.ed-list a:hover b { color: var(--fg-2); }
.ed-list time, .ed-list li > small { justify-self: end; font-size: 13px; color: var(--fg-4); font-variant-numeric: tabular-nums; }
.ed-tag { justify-self: start; height: 22px; padding: 0 8px; border-radius: 6px; display: inline-flex; align-items: center; font-size: 12px; color: var(--fg-3); box-shadow: inset 0 0 0 1px var(--line-3); }
.ed-list li.soon .ed-l-t span { font-size: 15px; color: var(--fg-3); }
.ed-g { width: 14px; height: 14px; }
.ed-g.done circle { fill: var(--fg-3); } .ed-g.done path { fill: none; stroke: var(--bg); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.ed-g.plan circle { fill: none; stroke: var(--fg-4); stroke-width: 1.2; stroke-dasharray: 2 2.4; }
.ed-list li { transition: background .16s; } .ed-list li:hover { background: color-mix(in srgb, var(--fg-1) 3%, transparent); }
@media (max-width: 640px) { .ed-list a, .ed-list li.soon { grid-template-columns: 14px minmax(0, 1fr); row-gap: 6px; } .ed-tag, .ed-list time, .ed-list li > small { grid-column: 2; justify-self: start; } .ed-list a b { font-size: 18px; } }
/* article: byline sits under the title */
.ed-art-head .ed-hero-by { margin-top: 20px; font-size: 14px; }
@media (max-width: 640px) { .ed-art-head .ed-hero-by { margin-top: 16px; } }

/* legal: sans title, quieter contents, section titles without rules */
.ed-legal h1 { margin-top: 56px; font: 500 48px/1.05 "Geist", ui-sans-serif, system-ui, sans-serif; letter-spacing: -0.03em; }
.ed-legal .ed-date { margin-top: 16px; }
.ed-legal .ed-aside { background: transparent; box-shadow: none; border-left: 1px solid var(--line-3); border-radius: 0; padding: 4px 0 4px 20px; }
.ed-legal .ed-toc { padding: 20px 0 !important; border-bottom: 0; }
.ed-legal .ed-toc a { font: 400 14px/22px "Geist", ui-sans-serif, system-ui, sans-serif !important; letter-spacing: -0.006em; padding: 6px 0; }
.ed-legal .ed-toc a::before { font-family: var(--ed-mono); font-size: 12px; }
.ed-legal .ed-body h2 { margin-top: 0; padding-top: 72px; border-top: 0; font-size: 22px; line-height: 30px; font-weight: 560; letter-spacing: -0.015em; }
.ed-legal .ed-body h2::before { font-family: var(--ed-mono); font-size: 14px; letter-spacing: 0; margin-right: 6px; vertical-align: 2px; }
.ed-legal .ed-body h2 .ed-anchor { top: calc(50% + 36px); }
.ed-legal .ed-body > p + h2 { margin-top: 0; }
.ed-legal .ed-body h2 + p { margin-top: 16px; }
.ed-legal .ed-body .ed-toc + h2 { padding-top: 40px; border-top: 1px solid var(--line); }
.ed-legal .ed-body h3 { margin-top: 32px; font-size: 16px; line-height: 26px; font-weight: 560; color: var(--fg-1); }
@media (max-width: 640px) { .ed-legal h1 { font-size: 36px; } .ed-legal .ed-body h2 { font-size: 20px; line-height: 28px; padding-top: 56px; } }
