/**
 * AIPressRoom site UI — header, footer, and the typeface they carry.
 *
 * THE FILENAME CARRIES THE DESIGN VERSION. Cloudflare on this site does not
 * vary its cache on ?ver=, so a redesign ships as site-ui-v2.css with the enqueue
 * updated in class-ui-assets.php. Bumping the plugin version alone will not
 * reach the edge.
 *
 * Tokens are the ones already in use by the funding, interviews and PR Desk
 * channels — same values, re-namespaced. The site UI is the layer those three
 * channels hang off, so it must not introduce a fourth palette.
 *
 * Scope: everything is under .aipr-ui-*. bimber styles bare a / ul / li /
 * button / h2 aggressively, so every element carries a class and the reset
 * below is not optional.
 *
 * Spacing base 8px. No dark-mode block: this renders inside the site's light
 * theme, and the footer's dark ground is a design decision, not a theme state.
 */

/* ─── Type ───────────────────────────────────────────────────
   Self-hosted, never hotlinked. Three weights, and the ceiling is deliberate:
   600 is display, 800 is the wordmark and nothing else. */

@font-face {
    font-family: 'AIPR Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/inter-tight-400.woff2') format('woff2');
}
@font-face {
    font-family: 'AIPR Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/inter-tight-600.woff2') format('woff2');
}
@font-face {
    font-family: 'AIPR Sans';
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url('../fonts/inter-tight-800.woff2') format('woff2');
}

:root {
    --aipr-ui-paper: #ffffff;
    --aipr-ui-ink: #0e0e12;
    --aipr-ui-body: #212127;
    --aipr-ui-mute: #62626e;
    --aipr-ui-faint: #9a9aa6;
    --aipr-ui-line: #e7e7ee;
    --aipr-ui-accent: #6c5ce7;
    --aipr-ui-tint: #efedfc;

    /* Footer ground — the funding market band and the interviews people wall
       are already this colour. */
    --aipr-ui-band: #131318;
    --aipr-ui-band-ink: #f5f4fb;
    --aipr-ui-band-mute: #a3a2b3;
    --aipr-ui-band-faint: #74737f;
    --aipr-ui-band-line: rgba(255, 255, 255, .14);

    /* The accent, lifted for dark grounds. #6c5ce7 on #131318 is legible but
       heavy; #a99bff is the same hue at the value the band needs. */
    --aipr-ui-wedge: #6c5ce7;

    --aipr-ui-sans: 'AIPR Sans', -apple-system, BlinkMacSystemFont,
        'SF Pro Text', 'Segoe UI', Roboto, sans-serif;

    --aipr-ui-h: 60px;
    /* Offset for WordPress' admin bar. Zero for readers; the admin-bar rules
       below raise it for logged-in editors, who are also the only people who
       see the site UI while the live switch is off. */
    --aipr-ui-top: 0px;
    --aipr-ui-container: 1264px;
    --aipr-ui-pad: 32px;
}

/* ─── Reset, scoped ───────────────────────────────────────── */

.aipr-ui-hdr,
.aipr-ui-hdr *,
.aipr-ui-drawer,
.aipr-ui-drawer *,
.aipr-ui-ftr,
.aipr-ui-ftr * {
    box-sizing: border-box;
}

.aipr-ui-hdr [hidden],
.aipr-ui-drawer[hidden] {
    display: none !important;
}

.aipr-ui-hdr ul,
.aipr-ui-drawer ul,
.aipr-ui-ftr ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.aipr-ui-hdr li,
.aipr-ui-drawer li,
.aipr-ui-ftr li {
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    list-style: none;
}

.aipr-ui-hdr li::before,
.aipr-ui-ftr li::before {
    content: none;
}

.aipr-ui-hdr a,
.aipr-ui-drawer a,
.aipr-ui-ftr a {
    text-decoration: none;
    border: 0;
    box-shadow: none;
    transition: color 120ms ease;
}

.aipr-ui-hdr button,
.aipr-ui-drawer button,
.aipr-ui-ftr button {
    font: inherit;
    color: inherit;
    background: none;
    border: 0;
    margin: 0;
    padding: 0;
    border-radius: 0;
    text-transform: none;
    letter-spacing: normal;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
}

.aipr-ui-ftr h2,
.aipr-ui-ftr p {
    margin: 0;
    padding: 0;
    border: 0;
}

.aipr-ui-hdr :focus-visible,
.aipr-ui-drawer :focus-visible,
.aipr-ui-ftr :focus-visible {
    outline: 2px solid var(--aipr-ui-accent);
    outline-offset: 3px;
}

/* WordPress' visually-hidden class. bimber defines it too, but the site UI must
   not depend on a theme it is in the business of replacing — without this the
   wordmark's text alternative prints next to the logo. */
.aipr-ui-hdr .screen-reader-text,
.aipr-ui-drawer .screen-reader-text,
.aipr-ui-ftr .screen-reader-text {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.aipr-ui-svg {
    display: block;
    height: auto;
}

.aipr-ui-anchor {
    display: block;
    height: 0;
    overflow: hidden;
}

.aipr-ui-skip {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: 1000;
    padding: 12px 18px;
    background: var(--aipr-ui-ink);
    color: #fff;
    font-family: var(--aipr-ui-sans);
    font-size: 14px;
    font-weight: 600;
}
.aipr-ui-skip:focus {
    left: 0;
}

/* ─── Header ─────────────────────────────────────────────────
   60px is the middle of the measured peer range (Axios 58, TechCrunch 68,
   Anthropic 68, Morning Brew 70, Semafor 75, tech.eu 76). */

.aipr-ui-hdr {
    position: sticky;
    top: var(--aipr-ui-top);
    z-index: 300;
    background: var(--aipr-ui-paper);
    border-bottom: 1px solid var(--aipr-ui-line);
    font-family: var(--aipr-ui-sans);
    transform: translateY(0);
    transition: transform 220ms ease;
}

/* Set by the script: down past the fold hides the bar, any upward scroll
   brings it back. */
.aipr-ui-hdr.is-away {
    transform: translateY(-101%);
}
.aipr-ui-hdr.is-static {
    position: relative;
}

.aipr-ui-hdr-in {
    max-width: var(--aipr-ui-container);
    margin: 0 auto;
    padding: 0 var(--aipr-ui-pad);
    height: var(--aipr-ui-h);
    display: flex;
    align-items: center;
    gap: 36px;
}

.aipr-ui-mark {
    display: flex;
    align-items: center;
    color: var(--aipr-ui-ink);
    flex: none;
}
.aipr-ui-mark .aipr-ui-svg {
    height: 20px;
    width: auto;
}

/* Nav: 15px/600 sentence case. Of sixteen peers measured only Wired still sets
   its nav in caps, and the weights cluster at 600–700 (TechCrunch, Sifted,
   Rest of World and Anthropic all 700, Semafor 600). */
.aipr-ui-nav-list {
    display: flex;
    align-items: center;
    gap: 26px;
}

.aipr-ui-nav-link {
    display: block;
    padding: 2px 0;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: -.005em;
    line-height: 1.2;
    color: var(--aipr-ui-ink);
}
.aipr-ui-nav-link:hover {
    color: var(--aipr-ui-accent);
}

/* The active mark is a text-decoration, not a border: it hugs the word instead
   of floating at the bottom of the link's box, and it is the same device the
   funding channel's sector tabs use one row below. */
.aipr-ui-nav-link.is-current {
    text-decoration: underline;
    text-decoration-color: var(--aipr-ui-accent);
    text-decoration-thickness: 2px;
    text-underline-offset: 6px;
    text-decoration-skip-ink: none;
}

.aipr-ui-utils {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 18px;
    flex: none;
}

.aipr-ui-searchbtn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    color: var(--aipr-ui-ink);
}
.aipr-ui-searchbtn svg {
    width: 17px;
    height: 17px;
    display: block;
}
.aipr-ui-searchbtn:hover {
    color: var(--aipr-ui-accent);
}

/* Black, not purple, and square. The channel plugins' own rule — primary
   buttons are ink, the accent is reserved for hover, active and data. */

.aipr-ui-burger {
    display: none;
    width: 26px;
    height: 26px;
    align-items: center;
    justify-content: center;
    color: var(--aipr-ui-ink);
    flex: none;
}
.aipr-ui-burger-bars,
.aipr-ui-burger-bars::before,
.aipr-ui-burger-bars::after {
    display: block;
    width: 18px;
    height: 2px;
    background: currentColor;
    transition: transform 160ms ease, opacity 160ms ease;
}
.aipr-ui-burger-bars {
    position: relative;
}
.aipr-ui-burger-bars::before,
.aipr-ui-burger-bars::after {
    content: '';
    position: absolute;
    left: 0;
}
.aipr-ui-burger-bars::before { top: -6px; }
.aipr-ui-burger-bars::after  { top: 6px; }

.aipr-ui-burger[aria-expanded="true"] .aipr-ui-burger-bars {
    background: transparent;
}
.aipr-ui-burger[aria-expanded="true"] .aipr-ui-burger-bars::before {
    top: 0;
    transform: rotate(45deg);
}
.aipr-ui-burger[aria-expanded="true"] .aipr-ui-burger-bars::after {
    top: 0;
    transform: rotate(-45deg);
}

/* Search drops below the bar rather than replacing the nav in place, so the
   header never changes height and nothing under it moves. */
.aipr-ui-search {
    border-top: 1px solid var(--aipr-ui-line);
    background: var(--aipr-ui-paper);
}
.aipr-ui-search-in {
    max-width: var(--aipr-ui-container);
    margin: 0 auto;
    padding: 16px var(--aipr-ui-pad);
}
.aipr-ui-search form {
    display: flex;
    gap: 8px;
    margin: 0;
}
.aipr-ui-search input[type="search"] {
    flex: 1;
    min-width: 0;
    height: 42px;
    padding: 0 14px;
    font-family: var(--aipr-ui-sans);
    font-size: 15px;
    color: var(--aipr-ui-ink);
    background: #fff;
    border: 1px solid var(--aipr-ui-line);
    border-radius: 2px;
    -webkit-appearance: none;
    appearance: none;
}
.aipr-ui-search button {
    height: 42px;
    padding: 0 20px;
    background: var(--aipr-ui-ink);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    border-radius: 2px;
}

/* ─── Mobile ─────────────────────────────────────────────────
   Burger left, wordmark centred, button right. The nav collapses into the
   drawer; four items do not need a desktop hamburger, but they do need one
   here. */

@media (max-width: 900px) {
    :root {
        --aipr-ui-pad: 20px;
    }
    .aipr-ui-hdr-in {
        gap: 14px;
    }
    .aipr-ui-burger {
        display: flex;
        order: 1;
    }
    .aipr-ui-mark {
        order: 2;
        margin: 0 auto;
    }
    .aipr-ui-mark .aipr-ui-svg {
        height: 18px;
    }
    .aipr-ui-nav {
        display: none;
    }
    .aipr-ui-utils {
        order: 3;
        margin-left: 0;
        gap: 12px;
    }
    .aipr-ui-searchbtn {
        /* Stays visible now that it is the masthead's only control. It used to
           be hidden here to make room for the subscribe button. */
        display: grid;
    }
}

/* ─── Drawer ─────────────────────────────────────────────── */

.aipr-ui-drawer {
    position: fixed;
    inset: calc(var(--aipr-ui-top) + var(--aipr-ui-h)) 0 0 0;
    z-index: 299;
    background: var(--aipr-ui-paper);
    padding: 24px var(--aipr-ui-pad) 40px;
    overflow-y: auto;
    font-family: var(--aipr-ui-sans);
    -webkit-overflow-scrolling: touch;
}

.aipr-ui-drawer nav ul {
    display: flex;
    flex-direction: column;
}
.aipr-ui-drawer nav li + li {
    border-top: 1px solid var(--aipr-ui-line);
}
.aipr-ui-drawer nav a {
    display: block;
    padding: 16px 0;
    font-size: 21px;
    font-weight: 600;
    letter-spacing: -.02em;
    color: var(--aipr-ui-ink);
}
.aipr-ui-drawer nav a.is-current {
    color: var(--aipr-ui-accent);
}

.aipr-ui-drawer-search {
    display: flex;
    gap: 8px;
    margin: 28px 0 0;
    padding-top: 24px;
    border-top: 1px solid var(--aipr-ui-line);
}
.aipr-ui-drawer-search input[type="search"] {
    flex: 1;
    min-width: 0;
    height: 44px;
    padding: 0 14px;
    font-family: var(--aipr-ui-sans);
    font-size: 16px; /* 16 or iOS zooms the page on focus */
    border: 1px solid var(--aipr-ui-line);
    border-radius: 2px;
    background: #fff;
    color: var(--aipr-ui-ink);
    -webkit-appearance: none;
    appearance: none;
}
.aipr-ui-drawer-search button {
    height: 44px;
    padding: 0 18px;
    background: var(--aipr-ui-ink);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    border-radius: 2px;
}

body.aipr-ui-drawer-open {
    overflow: hidden;
}

/* ─── Footer ─────────────────────────────────────────────── */

.aipr-ui-ftr {
    background: var(--aipr-ui-band);
    color: var(--aipr-ui-band-ink);
    font-family: var(--aipr-ui-sans);
    font-size: 14px;
    line-height: 1.6;
    --aipr-ui-wedge: #a99bff;
}

.aipr-ui-ftr-in {
    max-width: var(--aipr-ui-container);
    margin: 0 auto;
    padding: 52px var(--aipr-ui-pad) 0;
}

.aipr-ui-ftr-top {
    display: flex;
    gap: 48px;
    align-items: flex-start;
    padding-bottom: 36px;
    border-bottom: 1px solid var(--aipr-ui-band-line);
}

.aipr-ui-ftr-brand {
    flex: 1;
    min-width: 0;
}
.aipr-ui-ftr-mark {
    display: inline-block;
    color: var(--aipr-ui-band-ink);
}
.aipr-ui-ftr-mark .aipr-ui-svg {
    height: 46px;
    width: auto;
}
.aipr-ui-wedge {
    /* Two colours, and it is a system rather than an accident: the wordmark is
       ink or white, the wedge carries the brand colour. That is what /brand/
       documents ("one colour plus ink"), what every downloadable file in
       assets/brand/ is cut to, and what the site therefore has to match — a
       site that renders its own mark differently from the files it hands
       partners is the one thing the brand page cannot survive.

       1.3.0 briefly made this currentColor; owner reversed it on 2026-09-14
       after seeing both side by side. Do not change it back without changing
       the brand pack and the brand page in the same release. */
    fill: var(--aipr-ui-wedge);
}
.aipr-ui-ftr-tag {
    margin: 16px 0 0 !important;
    font-size: 17px;
    color: var(--aipr-ui-band-mute);
}

.aipr-ui-ftr-sub {
    width: 390px;
    flex: none;
}
.aipr-ui-ftr-sub-label {
    margin: 0 0 10px !important;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--aipr-ui-band-mute);
}
.aipr-ui-ftr-sub-todo {
    font-size: 13px;
    color: var(--aipr-ui-band-faint);
}
.aipr-ui-ftr-form {
    display: flex;
    gap: 8px;
    margin: 0;
}
.aipr-ui-ftr-form input[type="email"] {
    flex: 1;
    min-width: 0;
    height: 40px;
    padding: 0 12px;
    font-family: var(--aipr-ui-sans);
    font-size: 14px;
    color: var(--aipr-ui-band-ink);
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .24);
    border-radius: 2px;
    -webkit-appearance: none;
    appearance: none;
}
.aipr-ui-ftr-form input[type="email"]::placeholder {
    color: var(--aipr-ui-band-faint);
    opacity: 1;
}
.aipr-ui-ftr-form input[type="email"]:focus {
    border-color: var(--aipr-ui-wedge);
    outline: none;
}
.aipr-ui-ftr-form button {
    height: 40px;
    padding: 0 18px;
    background: var(--aipr-ui-wedge);
    color: var(--aipr-ui-band);
    font-size: 14px;
    font-weight: 600;
    border-radius: 2px;
    transition: background 120ms ease;
}
.aipr-ui-ftr-form button:hover {
    background: #fff;
}

.aipr-ui-ftr-cols {
    display: flex;
    gap: 64px;
    padding: 32px 0 36px;
}
.aipr-ui-ftr-col {
    min-width: 0;
}
.aipr-ui-ftr-col-h {
    margin: 0 0 12px !important;
    font-family: var(--aipr-ui-sans) !important;
    font-size: 10.5px !important;
    font-weight: 600 !important;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--aipr-ui-band-faint) !important;
    line-height: 1.4 !important;
}
.aipr-ui-ftr-col ul {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.aipr-ui-ftr-col a {
    font-size: 14px;
    color: #d6d5de;
}
.aipr-ui-ftr-col a:hover {
    color: var(--aipr-ui-wedge);
}

.aipr-ui-ftr-bot {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 16px 0 26px;
    border-top: 1px solid var(--aipr-ui-band-line);
}
.aipr-ui-ftr-copy {
    font-size: 12.5px;
    color: var(--aipr-ui-band-faint);
}
.aipr-ui-ftr-social {
    margin-left: auto;
    display: flex;
    gap: 14px;
}
.aipr-ui-ftr-social a {
    display: block;
    color: var(--aipr-ui-band-mute);
}
.aipr-ui-ftr-social a:hover {
    color: var(--aipr-ui-band-ink);
}
.aipr-ui-ftr-social svg {
    display: block;
}

@media (max-width: 900px) {
    .aipr-ui-ftr-top {
        flex-direction: column;
        gap: 32px;
    }
    .aipr-ui-ftr-sub {
        width: 100%;
    }
    .aipr-ui-ftr-cols {
        flex-wrap: wrap;
        gap: 32px 48px;
    }
    .aipr-ui-ftr-col {
        flex: 1 1 140px;
    }
    .aipr-ui-ftr-bot {
        flex-wrap: wrap;
        gap: 14px;
    }
    .aipr-ui-ftr-social {
        margin-left: 0;
        width: 100%;
    }
}

/* ─── Theme parts we replaced ────────────────────────────────
   The header rows are gone through the layout filter, so nothing is hidden
   here for them. These three have no filter of their own:

   .g1-footer        the theme's copyright strip; ours carries its own
   .g1-back-to-top   filtered off already, this is belt and braces
   .g1-canvas        the theme's off-canvas drawer. Its template reads the
                     option directly rather than through the layout filter, and
                     a get_template_part() cannot be cancelled from a plugin —
                     so it is hidden rather than suppressed. */

.aipr-ui-on .g1-footer,
.aipr-ui-on .g1-back-to-top,
.aipr-ui-on .g1-canvas,
.aipr-ui-on .g1-canvas-overlay {
    display: none !important;
}

/* The theme's featured-entries hero can be configured to sit above the header.
   With the header now sticky and outside that flow, the setting would overlap.
   Push it back below. */
.aipr-ui-on .g1-featured-row-before-header {
    order: 0;
}

/* WordPress' admin bar is fixed at the top of the viewport, so a sticky header
   at top:0 slides underneath it. These are the widths WP itself switches at:
   32px tall on desktop, 46px on tablet, and below 600px the bar stops being
   fixed and scrolls away, so the offset goes back to zero. */

body.admin-bar {
    --aipr-ui-top: 32px;
}
@media screen and (max-width: 782px) {
    body.admin-bar {
        --aipr-ui-top: 46px;
    }
}
@media screen and (max-width: 600px) {
    body.admin-bar {
        --aipr-ui-top: 0px;
    }
}

/* ─── Preview badge ──────────────────────────────────────────
   Only rendered while the live switch is off, when the site UI is visible to
   administrators alone. It is easy to forget which state the site is in. */

.aipr-ui-preview .aipr-ui-hdr::after {
    content: 'Site UI preview — admins only';
    position: absolute;
    right: var(--aipr-ui-pad);
    bottom: -21px;
    padding: 2px 8px;
    background: var(--aipr-ui-accent);
    color: #fff;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-radius: 0 0 2px 2px;
}

@media (prefers-reduced-motion: reduce) {
    .aipr-ui-hdr,
    .aipr-ui-hdr * {
        transition: none !important;
    }
    .aipr-ui-hdr.is-away {
        transform: none;
    }
}


/* ═══════════════════════════════════════════════════════════════════════
   THE FRONT PAGE                                                  (1.2.0)

   Everything below is scoped to .aipr-ui-home, which only exists on the
   front page. The design rules are the channels' own, unchanged:

     · 800 is for figures. 600 is display. Nothing else is bold.
     · one accent, spent on three things only — hover, current, and a
       number that is the point of its block.
     · hairlines and whitespace. No card borders, no shadows, no radius
       beyond the 2px the channels already use on images.
     · the dark ground appears exactly twice on the page, and it means
       "this is data": the funding band, and the footer.

   The front page is a light page with one dark band in the middle of it.
   That is the whole visual argument: a publication that happens to have
   the numbers, not a dashboard that happens to have articles.
   ═══════════════════════════════════════════════════════════════════════ */

@font-face {
    font-family: 'AIPR Serif';
    font-style: normal;
    font-weight: 400 600;
    font-display: swap;
    src: url('../fonts/source-serif-4.woff2') format('woff2-variations'),
         url('../fonts/source-serif-4.woff2') format('woff2');
}

.aipr-ui-home-wrap {
    display: block;
    width: 100%;
}

.aipr-ui-home {
    --aiprh-line-soft: #f0f0f5;
    --aiprh-band-amt: #c0b5ff;
    --aiprh-gold: #8a5a08;
    --aiprh-gold-rule: #c08a2a;
    --aiprh-gold-soft: #fffcf5;
    --aiprh-live: #a8261c;
    --aiprh-live-soft: #fcf0ee;
    --aiprh-serif: 'AIPR Serif', ui-serif, 'New York', Georgia, 'Times New Roman', serif;

    box-sizing: border-box;
    max-width: var(--aipr-ui-container);
    margin: 0 auto;
    padding: 0 var(--aipr-ui-pad) 8px;
    font-family: var(--aipr-ui-sans);
    font-size: 16px;
    line-height: 1.5;
    color: var(--aipr-ui-body);
    -webkit-font-smoothing: antialiased;
}

/* Independent of whatever the theme sets globally. bimber does set
   border-box today; the front page must not quietly depend on that. */
.aipr-ui-home *,
.aipr-ui-home *::before,
.aipr-ui-home *::after {
    box-sizing: border-box;
}

/* Scoped reset. Specificity (0,1,0) on purpose so component rules below win
   by source order, exactly as the funding channel's stylesheet does — a
   .aipr-ui-home h2 reset at (0,1,1) would silently kill every margin set
   later in this file. */
.aipr-ui-home :where(h2, h3, p, ol, ul, li, dl, dd, dt, figure, blockquote, table) {
    margin: 0;
    padding: 0;
}
.aipr-ui-home :where(ol, ul) {
    list-style: none;
}
.aipr-ui-home :where(li)::before {
    content: none;
}
.aipr-ui-home :where(a) {
    color: inherit;
    text-decoration: none;
    border: 0;
    box-shadow: none;
    transition: color 120ms ease;
}
.aipr-ui-home :where(img) {
    display: block;
    max-width: 100%;
    height: auto;
}
.aipr-ui-home :where(table) {
    border-collapse: collapse;
    width: 100%;
}
.aipr-ui-home :where(td, th) {
    border: 0;
}
.aipr-ui-home :focus-visible {
    outline: 2px solid var(--aipr-ui-accent);
    outline-offset: 3px;
}

/* ─── Section furniture ──────────────────────────────────────── */

.aiprh-sec {
    padding-top: 56px;
}
.aiprh-sechead {
    display: flex;
    align-items: baseline;
    gap: 20px;
    flex-wrap: wrap;
    padding-bottom: 14px;
    margin-bottom: 28px;
    border-bottom: 2px solid var(--aipr-ui-ink);
}
.aiprh-sec-h {
    font-size: 26px;
    font-weight: 600;
    letter-spacing: -0.025em;
    line-height: 1.1;
    color: var(--aipr-ui-ink);
}
.aiprh-sec-h a:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-sec-meta {
    flex: 1;
    min-width: 240px;
    font-size: 14px;
    color: var(--aipr-ui-mute);
}
.aiprh-sec-meta b {
    font-weight: 600;
    color: var(--aipr-ui-body);
}
.aiprh-sec-more,
.aiprh-more {
    font-size: 14px;
    font-weight: 600;
    color: var(--aipr-ui-ink);
    white-space: nowrap;
}
.aiprh-more {
    display: inline-block;
    margin-top: 18px;
}
.aiprh-sec-more:hover,
.aiprh-more:hover {
    color: var(--aipr-ui-accent);
}

/* The rubric: the one place a channel name, a sector and a number sit
   together. Uppercase and letter-spaced because it is a label, not a line
   of text — the same treatment all four channels already give it. */
.aiprh-rub {
    display: flex;
    flex-wrap: wrap;
    gap: 0 8px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--aipr-ui-mute);
}
.aiprh-rub-sep {
    color: var(--aipr-ui-line);
    font-weight: 400;
}
.aiprh-rub a:hover {
    color: var(--aipr-ui-accent);
}

/* ─── 1. Lead + Today ────────────────────────────────────────── */

.aiprh-first {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: 56px;
    padding: 36px 0 8px;
}
.aiprh-lead-media {
    display: block;
    aspect-ratio: 16 / 9;
    margin-bottom: 22px;
    overflow: hidden;
    border-radius: 2px;
    background: var(--aiprh-line-soft);
}
.aiprh-lead-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    /* Faces sit in the upper half of a 16:9 press photograph. Centre-cropping
       a group shot takes the tops of their heads off — the same defect the
       article template was fixed for in September. */
    object-position: 50% 30%;
}
.aiprh-lead .aiprh-rub {
    margin-bottom: 12px;
}
.aiprh-lead-title {
    max-width: 20ch;
    font-size: clamp(30px, 3.2vw, 42px);
    font-weight: 600;
    letter-spacing: -0.03em;
    line-height: 1.06;
    color: var(--aipr-ui-ink);
    text-wrap: balance;
}
.aiprh-lead-title a:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-lead-dek,
.aiprh-lead-quote {
    max-width: 62ch;
    margin-top: 16px;
    font-family: var(--aiprh-serif);
    font-size: 18.5px;
    line-height: 1.5;
    color: var(--aipr-ui-body);
}
.aiprh-lead-quote {
    font-size: 22px;
    color: var(--aipr-ui-ink);
}

/* The deal facts. The only four-up row on the page, and it is here because
   these four fields are what a founder, a marketer and an investor each
   check first — amount, valuation, who led, when. */
.aiprh-facts {
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    gap: 0 36px;
    margin-top: 22px;
    padding-top: 16px;
    border-top: 1px solid var(--aipr-ui-line);
}
.aiprh-facts dt {
    margin-bottom: 3px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--aipr-ui-faint);
}
.aiprh-facts dd {
    font-size: 15px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -0.01em;
    color: var(--aipr-ui-ink);
}
.aiprh-facts dd.aiprh-fact-big {
    font-size: 20px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}
.aiprh-facts dd small {
    display: block;
    margin-top: 2px;
    font-size: 13px;
    font-weight: 400;
    color: var(--aipr-ui-mute);
}

.aiprh-today .aiprh-sechead {
    margin-bottom: 4px;
}
.aiprh-today-item {
    padding: 16px 0;
    border-bottom: 1px solid var(--aiprh-line-soft);
}
.aiprh-today-item .aiprh-rub {
    margin-bottom: 6px;
}
.aiprh-today-t {
    display: block;
    font-size: 17px;
    font-weight: 600;
    letter-spacing: -0.015em;
    line-height: 1.3;
    color: var(--aipr-ui-ink);
}
.aiprh-today-t:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-today-d {
    margin-top: 5px;
    font-family: var(--aiprh-serif);
    font-size: 15px;
    line-height: 1.45;
    color: var(--aipr-ui-mute);
}
.aiprh-today-d b {
    font-family: var(--aipr-ui-sans);
    font-size: 14px;
    font-weight: 600;
    color: var(--aipr-ui-body);
}
.aiprh-today .aiprh-who {
    margin-top: 10px;
}

/* Three figures, set at 13px, at the foot of a column. They were a full-width
   strip of five in the first draft; a row of big numbers under the masthead
   is the single clearest signal that a site is a data product, and this is a
   publication. Kept small they read as a status line, which is what they are. */
.aiprh-today-num {
    margin-top: 14px;
    font-size: 13px;
    line-height: 1.5;
    color: var(--aipr-ui-mute);
}
.aiprh-today-num b {
    font-weight: 600;
    color: var(--aipr-ui-ink);
    font-variant-numeric: tabular-nums;
}
.aiprh-delta {
    font-weight: 600;
    color: var(--aipr-ui-accent);
}
.aiprh-num-sep {
    margin: 0 6px;
    color: var(--aipr-ui-line);
}

/* ─── People ─────────────────────────────────────────────────── */

.aiprh-who {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 20px;
}
.aiprh-face {
    flex: none;
    display: block;
    width: 44px;
    aspect-ratio: 1 / 1.15;
    overflow: hidden;
    border-radius: 2px;
    background: var(--aipr-ui-tint);
}
.aiprh-face img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 20%;
    /* The interviews channel's rule, and it is structural rather than
       decorative: these portraits are crops of covers shot by two dozen
       photographers on flat colour grounds. At full saturation a row of them
       does not read as one wall. */
    filter: grayscale(1);
    transition: filter 250ms ease;
}
.aiprh-who:hover .aiprh-face img,
.aiprh-wall-item a:hover .aiprh-face img,
.aiprh-face:hover img {
    filter: none;
}
.aiprh-face-lg {
    width: 56px;
}
.aiprh-face-blank {
    background: var(--aipr-ui-tint);
}
.aiprh-who-t {
    font-size: 14px;
    line-height: 1.35;
    color: var(--aipr-ui-mute);
}
.aiprh-who-t b {
    display: block;
    font-size: 15px;
    font-weight: 600;
    color: var(--aipr-ui-ink);
}

/* ─── 2. Interviews ──────────────────────────────────────────── */

.aiprh-iv-grid {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: 56px;
}
.aiprh-iv-lead .aiprh-rub {
    margin-bottom: 16px;
}
.aiprh-iv-quote {
    max-width: 30ch;
    font-family: var(--aiprh-serif);
    font-size: clamp(22px, 2.3vw, 29px);
    font-weight: 400;
    line-height: 1.34;
    letter-spacing: -0.005em;
    color: var(--aipr-ui-ink);
    text-wrap: pretty;
}
.aiprh-iv-quote a:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-iv-topic {
    display: block;
    margin-top: 14px;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: -0.01em;
    color: var(--aipr-ui-mute);
}
.aiprh-iv-topic:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-iv-card {
    padding-bottom: 18px;
    margin-bottom: 18px;
    border-bottom: 1px solid var(--aiprh-line-soft);
}
.aiprh-iv-card:last-child {
    margin-bottom: 0;
    border-bottom: 0;
}
.aiprh-iv-card .aiprh-rub {
    margin-bottom: 8px;
    font-size: 11px;
}
.aiprh-iv-card-q {
    font-family: var(--aiprh-serif);
    font-size: 17px;
    line-height: 1.42;
    color: var(--aipr-ui-ink);
}
.aiprh-iv-card-q a:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-iv-card .aiprh-who {
    margin-top: 12px;
}
.aiprh-iv-card .aiprh-who-t {
    font-size: 13px;
}
.aiprh-iv-card .aiprh-who-t b {
    font-size: 14px;
}

.aiprh-wall {
    margin-top: 40px;
    padding-top: 24px;
    border-top: 1px solid var(--aipr-ui-line);
}
.aiprh-wall-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}
.aiprh-wall-label {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--aipr-ui-mute);
}
.aiprh-wall-all {
    font-size: 14px;
    font-weight: 600;
    color: var(--aipr-ui-ink);
    white-space: nowrap;
}
.aiprh-wall-all:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-wall-list {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 14px;
}
.aiprh-wall-item .aiprh-face {
    width: 100%;
}
.aiprh-wall-name {
    display: block;
    margin-top: 8px;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--aipr-ui-ink);
}
.aiprh-wall-co {
    display: block;
    margin-top: 2px;
    font-size: 11.5px;
    line-height: 1.2;
    color: var(--aipr-ui-mute);
}

/* ─── 3. Funding: the page's only numeric surface ────────────── */

.aiprh-band {
    margin-top: 64px;
    padding: 40px 0 44px;
    background: var(--aipr-ui-band);
    color: var(--aipr-ui-band-ink);
}
/* Full-bleed without a horizontal scrollbar — the same construction the
   funding and interviews channels use for their own bands. */
@supports (clip-path: inset(0 -100vmax)) {
    .aiprh-band {
        box-shadow: 0 0 0 100vmax var(--aipr-ui-band);
        clip-path: inset(0 -100vmax);
    }
}
.aiprh-band .aiprh-sechead {
    border-bottom-color: var(--aipr-ui-band-line);
    margin-bottom: 26px;
}
.aiprh-band .aiprh-sec-h {
    color: var(--aipr-ui-band-ink);
}
.aiprh-band .aiprh-sec-h a:hover,
.aiprh-band .aiprh-sec-more:hover,
.aiprh-band .aiprh-more:hover {
    color: var(--aiprh-band-amt);
}
.aiprh-band .aiprh-sec-meta {
    color: var(--aipr-ui-band-mute);
}
.aiprh-band .aiprh-sec-more,
.aiprh-band .aiprh-more {
    color: var(--aipr-ui-band-ink);
}
.aiprh-band-grid {
    display: grid;
    grid-template-columns: minmax(0, 5.2fr) minmax(0, 3.6fr) minmax(0, 3.2fr);
    gap: 52px;
}
.aiprh-band-label {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding-bottom: 10px;
    margin-bottom: 6px;
    border-bottom: 1px solid var(--aipr-ui-band-line);
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--aipr-ui-band-mute);
}
.aiprh-band-q {
    font-size: 12.5px;
    font-weight: 500;
    letter-spacing: 0.01em;
    text-transform: none;
    color: var(--aipr-ui-band-faint);
    text-align: right;
}
.aiprh-band-label a {
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: none;
    color: var(--aipr-ui-band-mute);
    white-space: nowrap;
}
.aiprh-band-label a:hover {
    color: var(--aiprh-band-amt);
}

.aiprh-wire-row {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    padding: 12px 0;
    border-bottom: 1px solid var(--aipr-ui-band-line);
}
.aiprh-wire-row:last-child {
    border-bottom: 0;
}
.aiprh-amt {
    text-align: right;
    white-space: nowrap;
    font-size: 16px;
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -0.01em;
    font-variant-numeric: tabular-nums;
    color: var(--aiprh-band-amt);
}
/* "Tens of millions of yuan" is a magnitude, not a figure. Set at the
   figures' size it would break the column; set small and wrapped it reads
   as what it is. */
.aiprh-amt-word {
    padding-top: 3px;
    font-size: 11.5px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0;
    white-space: normal;
    font-variant-numeric: normal;
    color: var(--aipr-ui-band-mute);
}
.aiprh-wire-t {
    display: block;
    font-size: 15.5px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -0.012em;
    color: var(--aipr-ui-band-ink);
}
.aiprh-wire-t:hover {
    color: var(--aiprh-band-amt);
}
.aiprh-wire-m {
    display: block;
    margin-top: 3px;
    font-size: 12.5px;
    line-height: 1.35;
    color: var(--aipr-ui-band-mute);
}
.aiprh-wire-m b {
    font-weight: 600;
    color: var(--aipr-ui-band-ink);
}

/* The month, as a sentence. The only large figures on the page. */
.aiprh-month {
    margin-top: 12px;
    font-size: 20px;
    line-height: 1.45;
    letter-spacing: -0.012em;
    color: var(--aipr-ui-band-mute);
}
.aiprh-month b {
    font-weight: 800;
    color: #fff;
    font-variant-numeric: tabular-nums;
}
.aiprh-month-sector {
    font-style: normal;
    font-weight: 600;
    color: var(--aipr-ui-band-ink);
}
a.aiprh-month-sector:hover {
    color: var(--aiprh-band-amt);
}

.aiprh-spark {
    margin-top: 22px;
}
.aiprh-spark svg {
    display: block;
    width: 100%;
    height: 56px;
}
.aiprh-spark-cap {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-top: 6px;
    font-size: 11.5px;
    letter-spacing: 0.02em;
    color: var(--aipr-ui-band-faint);
}
.aiprh-spark-cap b {
    font-weight: 600;
    color: var(--aipr-ui-band-mute);
}

.aiprh-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 22px;
    padding-top: 16px;
    border-top: 1px solid var(--aipr-ui-band-line);
}
.aiprh-chip {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    padding: 5px 9px;
    border: 1px solid var(--aipr-ui-band-line);
    border-radius: 2px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--aipr-ui-band-ink);
    transition: border-color 120ms ease, color 120ms ease;
}
.aiprh-chip b {
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: var(--aiprh-band-amt);
}
.aiprh-chip:hover {
    border-color: var(--aiprh-band-amt);
}
.aiprh-chips-cap {
    margin-top: 10px;
    font-size: 11.5px;
    color: var(--aipr-ui-band-faint);
}

.aiprh-band-list {
    counter-reset: aiprh-rank;
    margin-bottom: 26px;
}
.aiprh-band-lists > :last-child .aiprh-band-list {
    margin-bottom: 0;
}
.aiprh-band-row {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr) auto;
    gap: 10px;
    align-items: baseline;
    padding: 9.5px 0;
    border-bottom: 1px solid var(--aipr-ui-band-line);
    font-size: 14.5px;
}
.aiprh-band-row:last-child {
    border-bottom: 0;
}
.aiprh-band-row::before {
    counter-increment: aiprh-rank;
    content: counter(aiprh-rank);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    color: var(--aipr-ui-band-faint);
}
.aiprh-band-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 500;
    color: var(--aipr-ui-band-ink);
}
a.aiprh-band-name:hover {
    color: var(--aiprh-band-amt);
}
.aiprh-band-val {
    white-space: nowrap;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: var(--aiprh-band-amt);
}
.aiprh-band-val-q {
    font-weight: 600;
    color: var(--aipr-ui-band-mute);
}
.aiprh-band-sub {
    margin-left: 5px;
    font-size: 12px;
    font-weight: 400;
    color: var(--aipr-ui-band-faint);
}

/* ─── 4. Intelligence ────────────────────────────────────────── */

.aiprh-intel-grid {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: 56px;
}
.aiprh-intel-cover {
    display: block;
    aspect-ratio: 2 / 1;
    margin-bottom: 16px;
    overflow: hidden;
    border-radius: 2px;
    background: var(--aiprh-line-soft);
}
.aiprh-intel-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.aiprh-intel-lead .aiprh-rub {
    margin-bottom: 10px;
}
.aiprh-intel-title {
    font-size: 26px;
    font-weight: 600;
    line-height: 1.15;
    letter-spacing: -0.025em;
    color: var(--aipr-ui-ink);
    text-wrap: balance;
}
.aiprh-intel-title a:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-intel-dek {
    margin-top: 12px;
    font-family: var(--aiprh-serif);
    font-size: 16.5px;
    line-height: 1.5;
    color: var(--aipr-ui-body);
}
.aiprh-intel-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 40px;
    align-content: start;
}
.aiprh-intel-item {
    padding-bottom: 16px;
    margin-bottom: 16px;
    border-bottom: 1px solid var(--aiprh-line-soft);
}
.aiprh-intel-item .aiprh-rub {
    margin-bottom: 6px;
    font-size: 11px;
}
.aiprh-intel-t {
    display: block;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -0.015em;
    color: var(--aipr-ui-ink);
}
.aiprh-intel-t:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-intel-d {
    margin-top: 5px;
    font-family: var(--aiprh-serif);
    font-size: 14.5px;
    line-height: 1.45;
    color: var(--aipr-ui-mute);
}

.aiprh-rec {
    margin-top: 32px;
    padding-top: 24px;
    border-top: 1px solid var(--aipr-ui-line);
}
.aiprh-rec-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
}
.aiprh-rec-label {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--aipr-ui-mute);
}
.aiprh-rec-label span {
    margin-left: 10px;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
    color: var(--aipr-ui-faint);
}
.aiprh-rec-all {
    font-size: 14px;
    font-weight: 600;
    color: var(--aipr-ui-ink);
    white-space: nowrap;
}
.aiprh-rec-all:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-rec-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 40px;
}
.aiprh-rec-item {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}
.aiprh-rec-claim {
    font-family: var(--aiprh-serif);
    font-size: 15.5px;
    line-height: 1.45;
    color: var(--aipr-ui-ink);
}
.aiprh-rec-claim b {
    font-family: var(--aipr-ui-sans);
    font-size: 14px;
    font-weight: 600;
    letter-spacing: -0.01em;
}
.aiprh-rec-src {
    margin-top: 6px;
    font-size: 12.5px;
    color: var(--aipr-ui-mute);
}
.aiprh-rec-src a {
    font-weight: 600;
    color: var(--aipr-ui-body);
}
.aiprh-rec-src a:hover {
    color: var(--aipr-ui-accent);
}

/* ─── 5. Events ──────────────────────────────────────────────── */

.aiprh-ev-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 0 56px;
}
.aiprh-ev-t td {
    padding: 13px 0;
    vertical-align: top;
    font-size: 15px;
    border-bottom: 1px solid var(--aiprh-line-soft);
}
.aiprh-ev-d {
    width: 104px;
    white-space: nowrap;
    font-weight: 600;
    letter-spacing: -0.01em;
    font-variant-numeric: tabular-nums;
    color: var(--aipr-ui-ink);
}
.aiprh-ev-e a {
    font-weight: 600;
    letter-spacing: -0.012em;
    color: var(--aipr-ui-ink);
}
.aiprh-ev-e a:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-ev-l {
    display: block;
    margin-top: 2px;
    font-size: 13px;
    font-weight: 400;
    color: var(--aipr-ui-mute);
}
.aiprh-tag {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 6px 1px;
    border: 1px solid currentColor;
    border-radius: 2px;
    vertical-align: 2px;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
.aiprh-tag-live {
    color: var(--aiprh-live);
    background: var(--aiprh-live-soft);
}

/* The one paid surface on the page. Gold left rule and a warm ground, which
   is the calendar's own language for a Featured listing — a reader who has
   seen one on /events-calendar/ reads this the same way, and a reader who
   has not still sees that it is set apart. */
.aiprh-ev-feat {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr) auto;
    gap: 16px;
    align-items: start;
    margin-top: 26px;
    padding: 16px 20px;
    border-left: 3px solid var(--aiprh-gold-rule);
    background: var(--aiprh-gold-soft);
}
.aiprh-ev-feat-d {
    padding-top: 22px;
    font-size: 15px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--aipr-ui-ink);
}
.aiprh-ev-feat-l {
    display: block;
    margin-bottom: 6px;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--aiprh-gold);
}
.aiprh-ev-feat-e {
    font-size: 16px;
    font-weight: 600;
    letter-spacing: -0.012em;
    color: var(--aipr-ui-ink);
}
.aiprh-ev-feat-e:hover {
    color: var(--aipr-ui-accent);
}
.aiprh-ev-feat-n {
    display: block;
    max-width: 70ch;
    margin-top: 4px;
    font-size: 13.5px;
    line-height: 1.4;
    color: var(--aipr-ui-mute);
}
.aiprh-ev-feat-k {
    padding-top: 22px;
    white-space: nowrap;
    font-size: 13px;
    color: var(--aipr-ui-mute);
}

/* ─── Responsive ─────────────────────────────────────────────── */

@media (max-width: 1100px) {
    .aiprh-wall-list {
        grid-template-columns: repeat(8, minmax(0, 1fr));
    }
    .aiprh-wall-item:nth-child(n + 9) {
        display: none;
    }
    .aiprh-rec-list {
        gap: 28px;
    }
    .aiprh-band-grid {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 40px;
    }
    .aiprh-band-lists {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 40px;
    }
    .aiprh-band-lists .aiprh-band-list {
        margin-bottom: 0;
    }
}

@media (max-width: 900px) {
    .aiprh-first,
    .aiprh-iv-grid,
    .aiprh-intel-grid,
    .aiprh-ev-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 40px;
    }
    .aiprh-ev-grid {
        gap: 0;
    }
    .aiprh-lead-title {
        max-width: none;
    }
    .aiprh-facts {
        grid-template-columns: 1fr 1fr;
        gap: 14px 24px;
    }
    /* The wall becomes a swipe rail rather than dropping people. Overflow is
       contained inside the element — a negative margin here would make the
       page itself scroll sideways. */
    .aiprh-wall-list {
        display: flex;
        gap: 12px;
        min-width: 0;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .aiprh-wall-item {
        flex: 0 0 96px;
    }
    .aiprh-wall-item:nth-child(n + 9) {
        display: block;
    }
    .aiprh-rec-list,
    .aiprh-intel-list {
        grid-template-columns: minmax(0, 1fr);
    }
    .aiprh-rec-list {
        gap: 20px;
    }
    .aiprh-ev-feat {
        grid-template-columns: minmax(0, 1fr);
        gap: 6px;
    }
    .aiprh-ev-feat-d,
    .aiprh-ev-feat-k {
        padding-top: 0;
    }
}

@media (max-width: 600px) {
    .aiprh-sec {
        padding-top: 44px;
    }
    .aiprh-sec-h {
        font-size: 23px;
    }
    .aiprh-lead-title {
        font-size: 30px;
    }
    .aiprh-band {
        padding: 32px 0 36px;
    }
    .aiprh-band-grid,
    .aiprh-band-lists {
        grid-template-columns: minmax(0, 1fr);
        gap: 32px;
    }
    .aiprh-band-lists {
        gap: 8px;
    }
    .aiprh-ev-d {
        width: 84px;
    }
}

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

/* The front page's own hidden heading. bimber defines .screen-reader-text
   globally and we rely on it elsewhere, but the one h1 on the site's most
   important page must not depend on a theme class staying put. */
.aipr-ui-home-wrap > .screen-reader-text {
    position: absolute !important;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    white-space: nowrap;
}
