/**
 * site-ui-base-v1.css — what the page stands on once bimber's g1-main is gone.
 *
 * Loaded ONLY when AIPR_UI_Lean applies (the theme's and Snax's files are not
 * loaded). While g1-main is on the page this would be a second reset under the
 * first, so it is not enqueued then.
 *
 * THE FILENAME CARRIES THE VERSION. Cloudflare does not vary on ?ver=; a change
 * ships as site-ui-base-v2.css with the constant in class-ui-assets.php moved.
 *
 * Every rule is at ZERO specificity (:where) except the handful of utility
 * classes that WordPress and the channel plugins already expect to exist.
 * Any component rule — a class, however light — still wins, exactly as it
 * won over bimber's element rules. What this file decides is only what an
 * element looks like when nothing else has said.
 *
 * Measured, not guessed (2026-09-26): 27 page types at 1440 and 390 wide, each
 * loaded as-is and with bimber's and Snax's files blocked plus this file, with
 * the element types article bodies actually contain checked in place. What
 * the pages relied on without saying so:
 *
 *   - the reset g1-main opens with (margins, padding, borders to zero)
 *   - .screen-reader-text: the site UI defines it only inside the header,
 *     drawer, footer and front page; search, lists, author pages and the 404
 *     search label all used bimber's
 *   - list bullets and indents inside article bodies
 *   - the WordPress alignment helpers on content images
 *   - three Snax rules that keep its footer popups hidden
 */

/* ─── Reset (g1-main's first rule) ─────────────────────────────────────── */

:where(html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
       blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
       img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u,
       i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
       caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details,
       figure, figcaption, footer, header, hgroup, menu, nav, section, summary,
       time, mark, audio, video, font, main) {
    margin: 0;
    padding: 0;
    border-width: 0;
    border-style: solid;
    font-size: 100%;
    vertical-align: baseline;
}
:where(article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, main) { display: block; }
:where(blockquote, q) { quotes: none; }

/* bimber's vertical rhythm: every block element 20px below. Several channel
   templates never set these margins themselves, so without this rule their
   paragraphs and boxes close up (measured on Interviews articles). */
:where(address, blockquote, dl, figure, h1, h2, h3, h4, h5, h6, hr, legend, ol, p, pre, table, ul) { margin-bottom: 20px; }

/* ─── Page and elements: bimber's measured values ──────────────────────── */
/* Sizes, line heights, weights, spacing and margins are what bimber gives a
   BARE element, measured in the browser on the live site at 390, 800, 1100
   and 1440 wide (2026-09-26), at bimber's own breakpoints (601px, 1025px).
   Only the typeface differs: bimber asked for Lato, which never loads, and
   Spartan; this is the site UI's Inter Tight throughout. Keeping the numbers
   is the point of this file — pages that never set a size were laid out
   against these, and changing them is design work for later, not a side
   effect of removing a stylesheet. */

html { height: 100%; }
body {
    background: #fff;
    color: #333;
    font: 400 14px/20px var(--aipr-ui-sans, 'AIPR Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
@media (min-width: 1025px) {
    body { font-size: 17px; line-height: 1.5; }
}

:where(h1, h2, h3, h4, h5, h6) { font-weight: 700; color: #000; }
:where(h1) { font-size: 20px; line-height: 1.067; letter-spacing: .005em; }
:where(h2) { font-size: 19px; line-height: 1.125; letter-spacing: -.03em; }
:where(h3) { font-size: 17px; line-height: 1.2105; letter-spacing: .005em; }
:where(h4) { font-size: 16px; line-height: 1.25; letter-spacing: .005em; }
:where(h5) { font-size: 15px; line-height: 18px; letter-spacing: .01em; }
:where(h6) { font-size: 11px; line-height: 1.4; font-weight: 500; letter-spacing: -.03em; text-transform: uppercase; }
@media (min-width: 601px) {
    :where(h1) { font-size: 22px; }
    :where(h2) { font-size: 20px; }
    :where(h3) { font-size: 18px; }
    :where(h4) { font-size: 17px; }
}
@media (min-width: 1025px) {
    :where(h1) { font-size: 32px; }
    :where(h2) { font-size: 23px; }
    :where(h3) { font-size: 22px; line-height: 1.4; }
    :where(h4) { font-size: 20px; }
    :where(h5) { font-size: 14px; line-height: 1.5; }
}

:where(a) { color: inherit; text-decoration: none; cursor: pointer; }
:where(strong, b) { font-weight: 700; }
:where(em, i, cite) { font-style: italic; }
:where(small) { font-size: 11px; }
:where(sub, sup) { position: relative; font-size: 75%; line-height: 0; }
:where(sup) { top: -.5em; }
:where(sub) { bottom: -.25em; }
:where(img) { max-width: 100%; height: auto; }
:where(embed, iframe, object, video) { max-width: 100%; }

/* Lists: bimber's own order — bare lists lose their markers, then content
   lists get them back. Every component that draws a list says list-style
   itself (the site UI's views, the channel plugins). */
:where(ol, ul) { list-style: none; }
:where(ul) { padding-left: 2em; list-style-type: circle; }
:where(ol) { padding-left: 2em; list-style-type: decimal; }

:where(hr) { height: 0; border: 0; border-top: 1px solid var(--aipr-ui-line, #e7e7ee); margin: 1.5em 0 20px; }
:where(table) { border-collapse: collapse; border-spacing: 0; }
:where(th, td) { padding: 10px 5px; border-bottom: 1px solid #e6e6e6; text-align: left; vertical-align: top; }
:where(th) { font-size: 13px; font-weight: 700; text-transform: uppercase; vertical-align: bottom; }
:where(figcaption) { padding: .5em 10px 0 0; text-align: center; font-size: 12px; line-height: 16px; color: #999; }
:where(label, legend) { font-size: 12px; line-height: 16px; font-weight: 700; }
:where(button, input, select, textarea) { font-family: inherit; color: inherit; max-width: 100%; }
:where(button) { font-size: 13px; line-height: 22px; font-weight: 700; cursor: pointer; }
:where(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]), select, textarea) {
    padding: 7px;
    border: 1px solid #e6e6e6;
    background: #fff;
}
:where(textarea) { width: 100%; }
:where(dt) { font-weight: 700; }
:where(dd) { margin-bottom: .75em; }

/* Quotes and code take the site UI's article values
   (site-ui-views-v2.css, .aipr-ui-art-body), NOT bimber's: bimber centred
   its quotes at 24px light, and a stylesheet-removal release is no place to
   bring back a look the article pages already replaced. Where a channel
   styles these itself, it still wins: Intelligence deliberately clears
   quote borders and padding (".aipri :where(blockquote)", its defensive
   reset against bimber), so on its pages only the serif applies here —
   bimber's centring was the one property that reset missed. One quote style
   across the channels is phase-3 work, not this file's. */
:where(blockquote) {
    margin: 0 0 20px;
    padding: 0 0 0 20px;
    border-left: 2px solid var(--aipr-ui-accent, #6c5ce7);
    font-family: 'AIPR Serif', ui-serif, Georgia, 'Times New Roman', serif;
    font-size: 1.1em;
    line-height: 1.6;
    color: var(--aipr-ui-ink, #0e0e12);
}
:where(pre) {
    padding: 14px 16px;
    overflow: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
    background: #f7f7fa;
    border-radius: 2px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 14px;
    line-height: 1.55;
}
:where(code, kbd, samp) { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .9em; }
:where(pre code) { font-size: inherit; }

/* Tables pasted in from other editors carry HTML width attributes (one 2024
   post has width="737"). On a phone bimber's body{overflow:hidden} simply
   cut the right-hand columns off, and the page scrolled sideways at 390 even
   so. This lets such a table scroll inside itself instead. Only tables that
   carry the attribute: a table the site UI or a channel styles is left alone. */
:where(table[width]) { display: block; width: max-content; max-width: 100%; overflow-x: auto; }

/* ─── WordPress's own helpers ──────────────────────────────────────────── */

.screen-reader-text {
    border: 0;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute !important;
    width: 1px;
    word-wrap: normal !important;
}
.screen-reader-text:focus {
    clip: auto;
    clip-path: none;
    height: auto;
    width: auto;
    z-index: 100000;
    padding: 12px 16px;
    background: #fff;
    color: #0e0e12;
    font-size: 14px;
    font-weight: 600;
}
:where(.aligncenter) { display: table; margin-left: auto; margin-right: auto; }
:where(.alignleft) { float: left; max-width: 50%; margin: 0 1.5em .75em 0; }
:where(.alignright) { float: right; max-width: 50%; margin: 0 0 .75em 1.5em; }
:where(.has-text-align-center) { text-align: center; }
:where(.has-text-align-left) { text-align: left; }
:where(.has-text-align-right) { text-align: right; }

/* ─── Snax prints these into every footer and hides them with its own CSS ─ */
/* Take snax.min.css and magnific-popup.css away and a login form, a password
   reset form and a notification bar appear under every page (Interviews
   0.7.0). Audited: these three are the only rules those two files owed. */

.mfp-hide { display: none !important; }
.snax-notifications-off,
.snax-tab-inactive { display: none; }
