/**
 * site-ui-article-v1.css — THE ARTICLE FRAME (1.20.0).
 *
 * One frame for every article on the site: Funding, Funds, press releases
 * (rendered here), Interviews and Intelligence (rendered by their own plugins,
 * which print this frame through the public AIPR_UI_Article class and load
 * this file with AIPR_UI_Article::enqueue()). Plan and before/after, owner
 * approved 2026-09-29: https://claude.ai/artifact/PCs4R3p9nBDG4NNVyCkzWE
 *
 * Before this file the three article pages shared two text styles out of
 * forty-nine. The frame is everything a reader should not be able to tell
 * the channels apart by: rubric, headline, standfirst, byline and share,
 * cover and caption, body type, the look of a module, the related list.
 * What stays the channel's is its modules' CONTENT (Key facts, the Q&A,
 * On the record…), never their look.
 *
 * THE SEVEN RULES — the front page's grammar (site-ui-v7.css), carried over:
 *
 *   1. Two voices. Sans is the publication's own words: headline,
 *      standfirst, reporting, interview questions, every module. The serif
 *      is only for words somebody else said: interview answers, quotations,
 *      a press release.
 *   2. Nine sizes: 12 label and caption · 14 byline · 16 module text ·
 *      17 list headline · 18 body · 19 serif body and interview question ·
 *      20 standfirst · 21 subhead · 42 headline.
 *   3. One label: 12px, 600, uppercase, .08em, --aipr-ui-mute.
 *   4. One line pitch for reading text: 31px (18 × 1.72 = 19 × 1.63), so a
 *      Q&A does not change rhythm between question and answer.
 *   5. Two rules and no boxes: 2px ink opens a module, 1px separates items.
 *      No tinted panels.
 *   6. Purple is interaction (hover, focus) and quotation marks. Never a
 *      label, a link at rest, or a panel.
 *   7. One date: "September 26, 2026" in the byline, "Sep 26, 2026" in lists.
 *
 * Negative letter-spacing only at 20px and up. site-ui-base-v3.css gives
 * every bare <h2> -0.03em (bimber's value, meant for display sizes); every
 * heading role below states its own letter-spacing so that never reaches a
 * 19px interview question again.
 *
 * SCOPE: .aipr-ui-a is the article root. The channel plugins' own resets are
 * written against their own roots, so nothing here relies on a browser
 * default inside the frame. The list component (.aipr-ui-sechead,
 * .aipr-ui-ls-*) is unscoped: the author, search, 404 and list views use it
 * too, and site-ui-views-v4.css depends on this file for it.
 *
 * The tokens (--aipr-ui-ink, -body, -mute, -faint, -line, -accent, -sans)
 * and the 'AIPR Sans' / 'AIPR Serif' faces come from site-ui-v7.css, which is
 * on every page.
 *
 * THE FILENAME CARRIES THE DESIGN VERSION (Cloudflare rule). A redesign of
 * the frame ships as site-ui-article-v2.css; v1 stays on disk.
 */

.aipr-ui-a {
    --a-serif: 'AIPR Serif', ui-serif, 'New York', Georgia, 'Times New Roman', serif;
    --a-pitch: 31px;
    color: var(--aipr-ui-body);
    font-family: var(--aipr-ui-sans);
    -webkit-font-smoothing: antialiased;
}
.aipr-ui-a :where(.aipr-ui-art-head, .aipr-ui-rub, .aipr-ui-art-h1, .aipr-ui-art-dek, .aipr-ui-art-by,
    .aipr-ui-art-byline, .aipr-ui-art-cover, .aipr-ui-art-credit, .aipr-ui-mod, .aipr-ui-mod-h,
    .aipr-ui-mod-list, .aipr-ui-mod-list li, .aipr-ui-mod-rows, .aipr-ui-mod-rows dt, .aipr-ui-mod-rows dd,
    .aipr-ui-rel, .aipr-ui-cross) { margin: 0; padding: 0; box-sizing: border-box; }
.aipr-ui-a :where(.aipr-ui-rub, .aipr-ui-art-by, .aipr-ui-sechead, .aipr-ui-ls, .aipr-ui-cross) a {
    color: inherit;
    text-decoration: none;
    box-shadow: none;
    border: 0;
}
.aipr-ui-a :focus-visible { outline: 2px solid var(--aipr-ui-accent); outline-offset: 3px; }

/* ─── 3 · the label: rubric, module heads, list rubrics ─────────── */

.aipr-ui-rub,
.aipr-ui-a .aipr-ui-mod-h,
.aipr-ui-a .aipr-ui-mod .aipr-ui-mod-h,   /* beats the module text rule when the label is a <p> */
.aipr-ui-ls-rub {
    font-family: var(--aipr-ui-sans);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 16px;
    text-transform: uppercase;
    color: var(--aipr-ui-mute);
}
.aipr-ui-rub { display: flex; flex-wrap: wrap; align-items: center; gap: 0 8px; }
.aipr-ui-rub a { transition: color 120ms ease; }
.aipr-ui-rub a:hover { color: var(--aipr-ui-accent); }
.aipr-ui-rub-sep { color: var(--aipr-ui-line); font-weight: 400; }

/* The press-release disclosure. Filled, because it is a label that has to be
   read, not a breadcrumb that can be skimmed. Kept through the redesign on
   purpose: it is the release's disclosure at the top of the page. */
.aipr-ui-a .aipr-ui-rub-pr {
    display: inline-block;
    padding: 4px 9px 3px;
    background: var(--aipr-ui-ink);
    color: #fff;
    border-radius: 2px;
    letter-spacing: 0.1em;
}
.aipr-ui-a .aipr-ui-rub-pr:hover { background: var(--aipr-ui-accent); color: #fff; }

/* The gap under the site header: 40px (28 on a phone). Site UI's own
   article gets it from .aipr-ui-v-wrap; a channel plugin's page has no such
   wrapper, and its old header carried the 40px itself. */
.aipr-ui-a:not(.aipr-ui-art) .aipr-ui-art-head { padding-top: 40px; }

/* ─── Headline and standfirst ──────────────────────────────────── */

.aipr-ui-a .aipr-ui-art-h1 {
    margin: 14px 0 18px;
    font-family: var(--aipr-ui-sans);
    font-size: clamp(32px, 4vw, 42px);
    font-weight: 600;
    letter-spacing: -0.028em;
    line-height: 1.1;
    text-transform: none;
    color: var(--aipr-ui-ink);
    text-wrap: balance;
}
/* Sans since 1.20.0 (decision D1): the front page sets the same sentence in
   the sans, and the serif is for words somebody said. */
.aipr-ui-a .aipr-ui-art-dek {
    font-family: var(--aipr-ui-sans);
    font-size: 20px;
    font-weight: 400;
    font-style: normal;
    letter-spacing: 0;
    line-height: 30px;
    color: var(--aipr-ui-mute);
    text-wrap: pretty;
}

/* ─── Byline row: who · when | share — on every article ────────── */

.aipr-ui-a .aipr-ui-art-by {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px 20px;
    margin-top: 24px;
    padding: 14px 0;
    border-top: 1px solid var(--aipr-ui-line);
}
.aipr-ui-a .aipr-ui-art-byline {
    font-family: var(--aipr-ui-sans);
    font-size: 14px;
    font-weight: 400;
    letter-spacing: 0;
    line-height: 21px;
    text-transform: none;
    color: var(--aipr-ui-mute);
}
.aipr-ui-a .aipr-ui-art-author { color: var(--aipr-ui-ink); font-weight: 600; transition: color 120ms ease; }
.aipr-ui-a a.aipr-ui-art-author:hover { color: var(--aipr-ui-accent); }
.aipr-ui-a .aipr-ui-art-sep { padding: 0 8px; color: var(--aipr-ui-faint); }

.aipr-ui-a .aipr-ui-share { display: flex; gap: 8px; margin: 0; padding: 0; }
.aipr-ui-a .aipr-ui-share-btn {
    display: inline-grid;
    place-items: center;
    width: 34px;
    height: 34px;
    margin: 0;
    padding: 0;
    border: 1px solid var(--aipr-ui-line);
    border-radius: 50%;
    background: var(--aipr-ui-paper);
    color: var(--aipr-ui-ink);
    cursor: pointer;
    font: inherit;
    line-height: 1;
    text-decoration: none;
    box-shadow: none;
    transition: border-color 120ms ease, color 120ms ease;
}
/* Reserved, not collapsed (1.16.0): the copy button holds its place from the
   first paint and is only made visible by site-ui-views-v2.js. */
.aipr-ui-a .aipr-ui-share-btn.is-pending { visibility: hidden; }
.aipr-ui-a .aipr-ui-share-btn:hover { border-color: var(--aipr-ui-ink); }
.aipr-ui-a .aipr-ui-share-btn.is-done { border-color: var(--aipr-ui-accent); color: var(--aipr-ui-accent); }
.aipr-ui-a .aipr-ui-ico { display: block; width: 15px; height: 15px; fill: currentColor; }

/* ─── Cover and caption ────────────────────────────────────────── */

.aipr-ui-a .aipr-ui-art-cover { margin-top: 8px; }
.aipr-ui-a .aipr-ui-art-frame { display: block; overflow: hidden; border-radius: 2px; background: #f2f2f6; }
.aipr-ui-a .aipr-ui-art-cover--photo .aipr-ui-art-frame { aspect-ratio: 2 / 1; }
.aipr-ui-a .aipr-ui-art-cover--photo .aipr-ui-art-frame img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 25%;          /* the Interviews cover's focal point */
}
.aipr-ui-a .aipr-ui-art-cover--native .aipr-ui-art-frame img { display: block; width: 100%; height: auto; }
/* Left, at the picture's left edge. 7 of 10 measured outlets align the
   caption left, 2 right against the picture's right edge, none centred. */
.aipr-ui-a .aipr-ui-art-credit {
    margin-top: 8px;
    font-family: var(--aipr-ui-sans);
    font-size: 12px;
    font-weight: 400;
    font-style: normal;
    letter-spacing: 0;
    line-height: 18px;
    text-align: left;
    color: var(--aipr-ui-faint);
}
.aipr-ui-a .aipr-ui-art-credit a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }

/* ─── Body ─────────────────────────────────────────────────────── */

.aipr-ui-a .aipr-ui-art-body {
    margin-top: 32px;
    font-family: var(--aipr-ui-sans);
    font-size: 18px;
    line-height: var(--a-pitch);
    color: var(--aipr-ui-body);
    overflow-wrap: break-word;
}
.aipr-ui-a .aipr-ui-art-body :is(p, li) {
    font-family: inherit;
    font-size: 18px;
    font-weight: 400;
    font-style: normal;
    letter-spacing: 0;
    line-height: var(--a-pitch);
    color: var(--aipr-ui-body);
}
.aipr-ui-a .aipr-ui-art-body p { margin: 0 0 1.1em; }
/* 2 · the subhead: one size for h2 and h3 inside a body, which is how the
   Funding generator and the Intelligence brief both write them. */
.aipr-ui-a .aipr-ui-art-body :is(h2, h3),
.aipr-ui-a .aipr-ui-art-sub {
    margin: 40px 0 12px;
    font-family: var(--aipr-ui-sans);
    font-size: 21px;
    font-weight: 600;
    letter-spacing: -0.01em;
    line-height: 27px;
    text-transform: none;
    color: var(--aipr-ui-ink);
}
.aipr-ui-a .aipr-ui-art-body h4 { margin: 32px 0 10px; font-size: 18px; font-weight: 600; letter-spacing: 0; line-height: 27px; color: var(--aipr-ui-ink); }
.aipr-ui-a .aipr-ui-art-body > :first-child { margin-top: 0; }
.aipr-ui-a .aipr-ui-art-body :is(ul, ol) { margin: 0 0 1.2em; padding-left: 1.25em; }
.aipr-ui-a .aipr-ui-art-body ul { list-style: disc; }
.aipr-ui-a .aipr-ui-art-body ol { list-style: decimal; }
.aipr-ui-a .aipr-ui-art-body li { margin: 0 0 0.5em; padding: 0; }
.aipr-ui-a .aipr-ui-art-body :is(ul, ol) > li::before { content: none; }
.aipr-ui-a .aipr-ui-art-body li::marker { color: var(--aipr-ui-faint); }
.aipr-ui-a .aipr-ui-art-body :is(strong, b) { font-weight: 600; color: var(--aipr-ui-ink); }
/* 6 · links: ink with a thin rule at rest, purple only under the pointer. */
.aipr-ui-a .aipr-ui-art-body a {
    color: var(--aipr-ui-ink);
    text-decoration: underline;
    text-decoration-color: #b9b9c4;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    box-shadow: none;
    transition: color 120ms ease, text-decoration-color 120ms ease;
}
.aipr-ui-a .aipr-ui-art-body a:hover { color: var(--aipr-ui-accent); text-decoration-color: var(--aipr-ui-accent); }
.aipr-ui-a .aipr-ui-art-body blockquote {
    margin: 1.5em 0;
    padding: 0 0 0 20px;
    border-left: 2px solid var(--aipr-ui-accent);
    font-family: var(--a-serif);
    font-size: 19px;
    line-height: var(--a-pitch);
    color: var(--aipr-ui-body);
}
.aipr-ui-a .aipr-ui-art-body blockquote p { font-family: inherit; font-size: inherit; }
.aipr-ui-a .aipr-ui-art-body :is(figure, .wp-caption) { margin: 1.6em 0; max-width: 100%; }
.aipr-ui-a .aipr-ui-art-body :is(figcaption, .wp-caption-text) { margin-top: 8px; font-size: 12px; line-height: 18px; color: var(--aipr-ui-faint); text-align: left; }
.aipr-ui-a .aipr-ui-art-body img { max-width: 100%; height: auto; }
.aipr-ui-a .aipr-ui-art-body iframe { max-width: 100%; }
.aipr-ui-a .aipr-ui-art-body hr { margin: 2em 0; border: 0; border-top: 1px solid var(--aipr-ui-line); }
.aipr-ui-a .aipr-ui-art-body table { width: 100%; margin: 1.4em 0; border-collapse: collapse; font-size: 16px; line-height: 25px; }
.aipr-ui-a .aipr-ui-art-body :is(th, td) { padding: 8px 12px 8px 0; border-bottom: 1px solid var(--aipr-ui-line); text-align: left; vertical-align: top; }

/* 1 · the serif body: somebody else's words (a release, interview answers). */
.aipr-ui-a .aipr-ui-art-body--serif,
.aipr-ui-a .aipr-ui-art-body--serif :is(p, li) {
    font-family: var(--a-serif);
    font-size: 19px;
    line-height: var(--a-pitch);
}

/* The interview question: the publication's voice at the answer's size.
   Letter-spacing 0 — it was -0.03em, leaked from the base sheet's bare h2,
   and the questions read as cramped (owner, 2026-09-28). 1 of 7 measured
   Q&As tracks its questions at all, by -0.01em. */
.aipr-ui-a .aipr-ui-art-q,
.aipr-ui-a .aipr-ui-art-body .aipr-ui-art-q,
.aipr-ui-a .aipr-ui-qa h2 {
    margin: 44px 0 12px;
    font-family: var(--aipr-ui-sans);
    font-size: 19px;
    font-weight: 600;
    letter-spacing: 0;
    line-height: 28px;
    text-transform: none;
    color: var(--aipr-ui-ink);
}

/* A Q&A body (.aipr-ui-qa): every <h2> in it is a question (the rule
   above), everything else is the interviewee's words, in the serif. The
   Interviews plugin wraps its already-rendered Q&A in this class, so the
   answers are styled without their markup being touched. */
.aipr-ui-a .aipr-ui-qa { margin-top: 8px; color: var(--aipr-ui-body); overflow-wrap: break-word; }
.aipr-ui-a .aipr-ui-qa > :first-child h2,
.aipr-ui-a .aipr-ui-qa > h2:first-child { margin-top: 24px; }
.aipr-ui-a .aipr-ui-qa :is(p, li) {
    font-family: var(--a-serif);
    font-size: 19px;
    font-weight: 400;
    font-style: normal;
    letter-spacing: 0;
    line-height: var(--a-pitch);
    color: var(--aipr-ui-body);
}
.aipr-ui-a .aipr-ui-qa p { margin: 0 0 1.1em; }
.aipr-ui-a .aipr-ui-qa :is(ul, ol) { margin: 0 0 1.2em; padding-left: 1.25em; }
.aipr-ui-a .aipr-ui-qa li { margin: 0 0 0.5em; }
.aipr-ui-a .aipr-ui-qa :is(strong, b) { font-weight: 600; color: var(--aipr-ui-ink); }
.aipr-ui-a .aipr-ui-qa a { color: var(--aipr-ui-ink); text-decoration: underline; text-decoration-color: #b9b9c4; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.aipr-ui-a .aipr-ui-qa a:hover { color: var(--aipr-ui-accent); text-decoration-color: var(--aipr-ui-accent); }

/* A note that is ours but not reporting: the interview's "answered in
   writing" line. */
.aipr-ui-a .aipr-ui-art-note {
    font-family: var(--aipr-ui-sans);
    font-size: 16px;
    font-style: normal;
    font-weight: 400;
    letter-spacing: 0;
    line-height: 25px;
    color: var(--aipr-ui-mute);
}

/* ─── 5 · modules: 2px ink opens, 1px separates, no panel ──────── */

.aipr-ui-a .aipr-ui-mod {
    margin: 44px 0;
    padding: 14px 0 0;
    background: none;
    border: 0;
    border-top: 2px solid var(--aipr-ui-ink);
    border-radius: 0;
    box-shadow: none;
}
.aipr-ui-a .aipr-ui-mod-h { display: block; margin: 0 0 10px; }
.aipr-ui-a .aipr-ui-mod :is(p, li, dd) {
    font-family: var(--aipr-ui-sans);
    font-size: 16px;
    font-weight: 400;
    font-style: normal;
    letter-spacing: 0;
    line-height: 25px;
    color: var(--aipr-ui-body);
}
.aipr-ui-a .aipr-ui-mod p + p { margin-top: 10px; }
.aipr-ui-a .aipr-ui-mod :is(b, strong) { font-weight: 600; color: var(--aipr-ui-ink); }
.aipr-ui-a .aipr-ui-mod a { color: var(--aipr-ui-ink); text-decoration: underline; text-decoration-color: #b9b9c4; text-underline-offset: 3px; }
.aipr-ui-a .aipr-ui-mod a:hover { color: var(--aipr-ui-accent); text-decoration-color: var(--aipr-ui-accent); }
/* A module that is navigation (a question index) is a list of links: no
   underline at rest, the colour change on hover (NN/g: lists of links). */
.aipr-ui-a nav.aipr-ui-mod a { text-decoration: none; }

/* A list inside a module: each item on its own 1px line. The marker is the
   channel's (a number, a dash), drawn in the faint grey at the left. */
.aipr-ui-a .aipr-ui-mod-list { margin: 0; padding: 0; list-style: none; }
.aipr-ui-a .aipr-ui-mod-list > li { position: relative; margin: 0; padding: 10px 0 10px 26px; border-top: 1px solid var(--aipr-ui-line); }
.aipr-ui-a .aipr-ui-mod-list > li:first-child { border-top: 0; }
.aipr-ui-a .aipr-ui-mod-list--plain > li { padding-left: 0; }
.aipr-ui-a .aipr-ui-mod-list--dash > li::before {
    content: "";
    position: absolute;
    left: 2px;
    top: 22px;
    width: 10px;
    height: 1px;
    background: var(--aipr-ui-faint);
}
.aipr-ui-a .aipr-ui-mod-list--num { counter-reset: aipr-ui-n; }
.aipr-ui-a .aipr-ui-mod-list--num > li { counter-increment: aipr-ui-n; }
.aipr-ui-a .aipr-ui-mod-list--num > li::before {
    content: counter(aipr-ui-n);
    position: absolute;
    left: 0;
    top: 13px;
    width: auto;
    height: auto;
    background: none;
    font-size: 12px;
    font-weight: 600;
    line-height: 16px;
    color: var(--aipr-ui-faint);
    font-variant-numeric: tabular-nums;
}

/* Inside a module: words somebody said (rule 1, the serif, 17px to sit
   optically with the 16px sans around it) and where they said them. */
.aipr-ui-a .aipr-ui-mod .aipr-ui-said { display: block; margin-top: 4px; font-family: var(--a-serif); font-size: 17px; line-height: 25px; color: var(--aipr-ui-body); }
.aipr-ui-a .aipr-ui-mod .aipr-ui-said::before { content: "\201C"; color: var(--aipr-ui-accent); }
.aipr-ui-a .aipr-ui-mod .aipr-ui-said::after { content: "\201D"; color: var(--aipr-ui-accent); }
.aipr-ui-a .aipr-ui-mod .aipr-ui-mod-src { display: block; margin-top: 4px; font-size: 14px; line-height: 21px; color: var(--aipr-ui-mute); }

/* A small reference at the end of a module line ("Q3"): the label's
   voice, no fill (rule 6). */
.aipr-ui-a .aipr-ui-mod .aipr-ui-mod-tag {
    display: inline-block;
    font-family: var(--aipr-ui-sans);
    margin-left: 8px;
    padding: 0;
    background: none;
    border: 0;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 16px;
    text-transform: uppercase;
    color: var(--aipr-ui-mute);
    text-decoration: none;
}

/* Key → value rows (About). */
.aipr-ui-a .aipr-ui-mod-rows { margin: 0; padding: 0; }
.aipr-ui-a .aipr-ui-mod-rows > div { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 16px; padding: 9px 0; border-top: 1px solid var(--aipr-ui-line); }
.aipr-ui-a .aipr-ui-mod-rows > div:first-child { border-top: 0; padding-top: 2px; }
.aipr-ui-a .aipr-ui-mod-rows dt { font-family: var(--aipr-ui-sans); font-size: 14px; font-weight: 600; line-height: 25px; letter-spacing: 0; text-transform: none; color: var(--aipr-ui-mute); }
.aipr-ui-a .aipr-ui-mod-rows dd { margin: 0; }

/* Funding's Key Facts arrive inside the_content as <div class="aicp-key-facts">
   with an <h3> and <li><strong>Key:</strong> value</li>: the module look,
   mapped onto the plugin's markup. */
.aipr-ui-a .aipr-ui-art-body .aicp-key-facts {
    margin: 44px 0 0;
    padding: 14px 0 0;
    background: none;
    border: 0;
    border-top: 2px solid var(--aipr-ui-ink);
}
.aipr-ui-a .aipr-ui-art-body .aicp-key-facts h3 {
    margin: 0 0 10px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 16px;
    text-transform: uppercase;
    color: var(--aipr-ui-mute);
}
.aipr-ui-a .aipr-ui-art-body .aicp-key-facts ul { margin: 0; padding: 0; list-style: none; }
.aipr-ui-a .aipr-ui-art-body .aicp-key-facts li {
    margin: 0;
    padding: 9px 0;
    border-top: 1px solid var(--aipr-ui-line);
    font-size: 16px;
    line-height: 25px;
}
.aipr-ui-a .aipr-ui-art-body .aicp-key-facts li:first-child { border-top: 0; padding-top: 2px; }
.aipr-ui-a .aipr-ui-art-body .aicp-key-facts li strong { color: var(--aipr-ui-mute); font-weight: 600; margin-right: 4px; }
/* "(lead)" beside an investor, printed at 11px inline: the label size. */
.aipr-ui-a .aipr-ui-art-body .aicp-key-facts li span { font-size: 12px !important; }

/* Press releases: PR Desk's own blocks run the full column; its compliance
   blocks keep their own look and the sans. */
.aipr-ui-a .aipr-ui-art-body :is(.aiprd-pr-identity, .aiprd-pr-body, .aiprd-release-footer, .aiprd-pr-disclaimer, .aiprd-facts, .aiprd-pr-deksub) { max-width: none; }
.aipr-ui-a .aipr-ui-art-body--serif :is(.aiprd-pr-identity, .aiprd-release-footer, .aiprd-facts, .aiprd-pr-disclaimer),
.aipr-ui-a .aipr-ui-art-body--serif :is(.aiprd-pr-identity, .aiprd-release-footer, .aiprd-facts, .aiprd-pr-disclaimer) :is(p, li) { font-family: var(--aipr-ui-sans); }
.aipr-ui-a .aipr-ui-art-body--serif .aiprd-release-boilerplate { font-size: 15px; line-height: 1.65; }
.aipr-ui-a .aipr-ui-art-body .aiprd-facts { margin-left: 0; margin-right: 0; }

.aipr-ui-a .aipr-ui-art-pages { margin: 1.5em 0; font-size: 14px; font-weight: 600; }

/* D5 — only printed once the Editorial Guidelines' AI section is confirmed. */
.aipr-ui-a .aipr-ui-art-std {
    margin-top: 32px;
    padding-top: 14px;
    border-top: 1px solid var(--aipr-ui-line);
    font-size: 14px;
    line-height: 21px;
    color: var(--aipr-ui-mute);
}
.aipr-ui-a .aipr-ui-art-std a { color: var(--aipr-ui-ink); font-weight: 600; }
.aipr-ui-a .aipr-ui-art-std a:hover { color: var(--aipr-ui-accent); }

/* ─── Related: the front page's list, under every article ──────── */

.aipr-ui-rel { margin-top: 56px; }
.aipr-ui-a .aipr-ui-cross { margin-top: 14px; font-size: 14px; line-height: 21px; color: var(--aipr-ui-mute); }
.aipr-ui-a .aipr-ui-cross a { margin-left: 12px; color: var(--aipr-ui-ink); font-weight: 600; transition: color 120ms ease; }
.aipr-ui-a .aipr-ui-cross a:hover { color: var(--aipr-ui-accent); }

/* ─── The list component (also the author, search, 404, list views) ─ */

.aipr-ui-sechead {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    padding-bottom: 12px;
    border-bottom: 2px solid var(--aipr-ui-ink);
}
.aipr-ui-sechead .aipr-ui-sechead-h { margin: 0; font-family: var(--aipr-ui-sans); font-size: 20px; font-weight: 600; letter-spacing: -0.015em; line-height: 1.2; text-transform: none; color: var(--aipr-ui-ink); }
.aipr-ui-sechead .aipr-ui-sechead-more { font-size: 14px; font-weight: 600; color: var(--aipr-ui-ink); text-decoration: none; white-space: nowrap; transition: color 120ms ease; }
.aipr-ui-sechead .aipr-ui-sechead-more:hover { color: var(--aipr-ui-accent); }

.aipr-ui-ls { margin: 0; padding: 0; list-style: none; }
.aipr-ui-ls .aipr-ui-ls-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: 5px;
    margin: 0;
    padding: 16px 0;
    border-bottom: 1px solid var(--aipr-ui-line);
}
.aipr-ui-ls .aipr-ui-ls-row::before { content: none; }
.aipr-ui-ls .aipr-ui-ls-row--thumb { grid-template-columns: minmax(0, 1fr) 128px; column-gap: 24px; }
.aipr-ui-ls-row--thumb > :not(.aipr-ui-ls-img) { grid-column: 1; }
.aipr-ui-ls-rub { display: flex; flex-wrap: wrap; gap: 0 8px; margin: 0; }
.aipr-ui-ls-pr { color: var(--aipr-ui-ink); background: var(--aipr-ui-line); padding: 1px 6px; border-radius: 2px; }
/* 17: the front page's item headline (it was 19 here until 1.20.0). */
.aipr-ui-ls .aipr-ui-ls-t { margin: 0; font-family: var(--aipr-ui-sans); font-size: 17px; font-weight: 600; letter-spacing: -0.01em; line-height: 22px; text-transform: none; color: var(--aipr-ui-ink); text-wrap: pretty; }
.aipr-ui-ls-t a { color: inherit; text-decoration: none; transition: color 120ms ease; }
.aipr-ui-ls-t a:hover { color: var(--aipr-ui-accent); }
.aipr-ui-ls-d { margin: 0; font-size: 15px; line-height: 1.55; color: var(--aipr-ui-mute); }
.aipr-ui-ls-img { grid-column: 2; grid-row: 1 / span 3; align-self: start; display: block; }
.aipr-ui-ls-img img { display: block; width: 128px; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 2px; background: #f2f2f6; }

/* ─── Narrow ───────────────────────────────────────────────────── */

@media (max-width: 600px) {
    .aipr-ui-a { --a-pitch: 29px; }
    .aipr-ui-a:not(.aipr-ui-art) .aipr-ui-art-head { padding-top: 28px; }
    .aipr-ui-a .aipr-ui-art-dek { font-size: 18px; line-height: 27px; }
    .aipr-ui-a .aipr-ui-art-body,
    .aipr-ui-a .aipr-ui-art-body :is(p, li) { font-size: 17px; }
    .aipr-ui-a .aipr-ui-art-body--serif,
    .aipr-ui-a .aipr-ui-art-body--serif :is(p, li) { font-size: 18px; }
    .aipr-ui-a .aipr-ui-art-body :is(h2, h3),
    .aipr-ui-a .aipr-ui-art-sub { font-size: 20px; line-height: 26px; }
    .aipr-ui-a .aipr-ui-art-q,
    .aipr-ui-a .aipr-ui-art-body .aipr-ui-art-q,
    .aipr-ui-a .aipr-ui-qa h2 { font-size: 18px; line-height: 26px; margin-top: 34px; }
    .aipr-ui-a .aipr-ui-qa :is(p, li) { font-size: 18px; }
    .aipr-ui-a .aipr-ui-mod-rows > div { grid-template-columns: 104px minmax(0, 1fr); gap: 12px; }
    .aipr-ui-ls .aipr-ui-ls-row--thumb { grid-template-columns: minmax(0, 1fr) 88px; column-gap: 16px; }
    .aipr-ui-ls-img img { width: 88px; }
}

@media (prefers-reduced-motion: reduce) {
    .aipr-ui-a *, .aipr-ui-ls * { transition: none !important; }
}
