@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,600;1,600&family=Manrope:wght@500;600;700&family=DM+Sans:wght@400;500;600&family=Noto+Sans+Arabic:wght@400;500;600;700&family=Noto+Naskh+Arabic:wght@500;600;700&display=swap');
/**
 * Resolve — the design system's single token file (§5, §7, §18).
 *
 * WHY THIS FILE EXISTS
 * --------------------
 * The same palette was hand-copied into four stylesheets: `--r-*` in
 * resolve-platform.css, `--rp-*` in resolve-panel.css, `--ra-*` in
 * resolve-admin.css and `--t-*` in the theme's style.css. Four copies of one
 * decision is four chances to be wrong, and it had already gone wrong once.
 * There is now ONE set of values, named `--resolve-*`, and it is here.
 *
 * The four prefixes still exist — renaming a token used across 5,000 lines of
 * CSS in three stylesheets is a change with no upside — but each of them is now
 * an ALIAS declared in the stylesheet that uses it:
 *
 *     --rp-ink: var( --resolve-ink, #0e1621 );
 *
 * The literal fallback is load-bearing, not belt-and-braces.
 * resolve-panel.css, resolve-admin.css and the theme's style.css are enqueued
 * by code this work does not own, so none of them can be given a `deps` entry
 * naming this file. Shell::attach_tokens() grafts the dependency on at runtime
 * so this always loads first; the fallback is what guarantees that if that
 * graft ever silently stops working, the affected stylesheet renders in the
 * right colours instead of unstyled.
 *
 *
 * WHERE THE PALETTE COMES FROM (§7)
 * ---------------------------------
 * From docs/PANACEA-BRAND.md, which is a capture of the live Panacea Capital
 * site made this week. Every value below that is marked VERIFIED is quoted from
 * that document, which in turn quotes it character-for-character out of a CSS
 * file actually fetched from the live host. Values marked DERIVED are ours: the
 * brand does not contain them, and the reason each one had to be invented is
 * written next to it.
 *
 * This REPLACES the deep-green institutional palette that was here before. That
 * palette was honestly arrived at — it was the existing theme's, and the note
 * in the previous revision of this file was explicit that it had NOT come from
 * Panacea because the fetch of the day had returned no colour at all. That is
 * no longer true. The brand capture exists, so the guess is retired.
 *
 *
 * THE ONE PLACE THE BRAND CANNOT BE FOLLOWED LITERALLY: CONTRAST
 * -------------------------------------------------------------
 * Panacea sets #8493E6 as a text colour on white, and sets white text on a
 * #8493E6 button fill. Both of those are the SAME pair, and it measures
 *
 *     #8493E6 against #FFFFFF  =  2.88:1
 *
 * against a WCAG AA requirement of 4.5:1 for normal text and 3:1 for large.
 * It fails both. A marketing site can absorb that; an application where the
 * text in question is "Your access has been withdrawn" cannot, and §7 requires
 * AA. So the brand periwinkle is split by ROLE rather than diluted:
 *
 *   --resolve-brand  #8493E6  the real brand colour, VERBATIM. Fills, rules,
 *                             marks, the frame, headings on BLACK (7.30:1
 *                             there — on a dark ground the brand colour is
 *                             fine, which is where Panacea itself mostly
 *                             uses it). Never text on a light ground.
 *   --resolve-accent #5A68C4  DERIVED. The same hue carried down until it
 *                             clears AA on white (4.99:1). This is the INK
 *                             role: links, headings and text on light.
 *
 * Splitting it this way is what makes the change safe to make at all: there are
 * 34 rules in these stylesheets that use the accent token as a text colour and
 * 9 that use it as a fill. Re-pointing the single `--resolve-accent` name at
 * the AA-safe ink keeps all 34 compliant with no edit to any of them, and the 9
 * fills become a deep periwinkle carrying white text at 4.99:1 — also AA.
 *
 * Buttons that want the LITERAL brand fill (#8493E6) get near-black text on it
 * rather than Panacea's white: #181818 on #8493E6 is 6.17:1. Same fill the
 * brand specifies, legible text on it.
 *
 * Every ratio quoted in this file was computed, not estimated.
 *
 *
 * COLOUR IS NEVER THE ONLY SIGNAL (§7)
 * ------------------------------------
 * "Never rely on color alone." Each of the four status colours below is paired
 * with a soft ground, and every pill that uses one also carries its status AS
 * WORDS and a leading GLYPH (✓ ! ✕ ○) supplied by the component. A reader in
 * greyscale, or with any colour vision deficiency, reads "Approved ✓" and
 * "Pending !" and sees two different marks. The colour is the third signal, not
 * the first.
 */

:root {

	/* ===============================================================
	 * BRAND — from docs/PANACEA-BRAND.md §1.
	 * =============================================================== */

	/* VERIFIED. 47 occurrences in the homepage stylesheet; the brand colour.
	 * Fills, rules, marks. NOT text on a light ground — see the note above. */
	--resolve-brand: #8493E6;

	/* VERIFIED. `.custom-button:hover` / `.profile-link:hover`. */
	--resolve-brand-hover: #7a88d6;

	/* VERIFIED. 8-digit hex, #CDDAFB at 5C alpha (~36%). The site's signature
	 * decorative device: a 12px translucent frame offset behind imagery. */
	--resolve-frame: #CDDAFB5C;
	--resolve-frame-width: 12px;

	/* VERIFIED. Pale periwinkle tint — body copy on black sections. */
	--resolve-on-dark: #CDDAFB;

	/* VERIFIED. Near-black used as a TEXT colour (not a background). */
	--resolve-on-light: #181818;

	/* VERIFIED. The site is built on hard black/white alternation. */
	--resolve-black: #000000;
	--resolve-white: #ffffff;

	/* VERIFIED but deliberately unused as a token: #8897E2 and #929FEA are two
	 * further near-identical periwinkles. The brand document's own reading is
	 * that they are hand-entered drift rather than intentional steps, and its
	 * instruction is to collapse them to #8493E6. Collapsed. */


	/* ===============================================================
	 * INK — text, in descending emphasis.
	 *
	 * Panacea gives exactly one text colour on light (#181818) and one on dark
	 * (#CCD9FB). An application needs a ladder: a table has a value, a label
	 * and a footnote and they cannot all be the same weight. These are that
	 * one colour carried up, kept neutral so they never compete with the
	 * brand. EVERY tier clears AA at body size against BOTH light grounds —
	 * against white AND against the app ground it is usually seen on. A
	 * "de-emphasised" tier that cannot be read is not a tier:
	 *
	 *                 on #ffffff   on #f7f7fa
	 *   ink    #181818   17.76:1     16.61:1
	 *   ink-2  #3c4653    9.58:1      8.96:1
	 *   ink-3  #515b68    6.89:1      6.45:1
	 *   ink-4  #626c79    5.33:1      4.98:1
	 *
	 * ink-4 is where the previous palette's #8d97a4 sat, and that measured
	 * 2.98:1 on white — it was carrying table metadata and field hints, i.e.
	 * small text, at well under half the required ratio. The whole ladder is
	 * darkened and respread here: darkening ink-4 alone would have brought it
	 * within three hex units of ink-3 and collapsed two tiers into one.
	 * =============================================================== */
	--resolve-ink: #222638;
	--resolve-ink-2: #3c4653;
	--resolve-ink-3: #515b68;
	--resolve-ink-4: #626c79;


	/* ===============================================================
	 * GROUND — surfaces, from the card up to the page.
	 *
	 * DERIVED. The brand alternates pure black and pure white and has no
	 * intermediate surface at all, because it never has to show a table on a
	 * card on a page. These are the minimum ladder an application needs,
	 * pulled very slightly cool so they sit under periwinkle without the
	 * yellow cast the previous warm-cream grounds had.
	 * =============================================================== */
	--resolve-paper: #ffffff;
	--resolve-ground: #f6f7f9;
	--resolve-ground-2: #eceef3;
	--resolve-ground-3: #e2e4ec;

	/* Rules. Hairlines, never boxes. */
	--resolve-line: #e7e8ee;
	--resolve-line-strong: #d6d8e2;

	/* The dark ground, for the header, the footer and the sign-in screen —
	 * the three surfaces §7 says should "read as Panacea". */
	--resolve-dark: #181C30;
	--resolve-dark-2: #24283E;
	--resolve-dark-line: #2e3350;


	/* ===============================================================
	 * ACCENT — the ink role of the brand hue. DERIVED; see the header note.
	 * =============================================================== */
	--resolve-accent: #6867AD;          /* 4.99:1 on white — links, text */
	--resolve-accent-2: #52518f;        /* hover/pressed for accent text     */
	--resolve-accent-soft: #ecebf6;     /* tint ground                       */
	--resolve-accent-ink: #ffffff;      /* 4.99:1 on --resolve-accent        */

	/* Kept: the previous palette's gold is still referenced by a handful of
	 * editorial rules in the theme. Re-pointed onto the amber below so there
	 * is one warm tone rather than two. */
	--resolve-gold: #7a6033;


	/* ===============================================================
	 * STATUS (§7).
	 *
	 * Four states, and the brief names them:
	 *   green  active / approved / verified
	 *   amber  pending / attention
	 *   red    blocked / revoked / rejected / problem
	 *   grey   inactive / unavailable / not applicable
	 *
	 * Each has a foreground that clears AA against BOTH white and its own soft
	 * ground — the second of those is the one that had actually gone wrong.
	 * The amber and grey shipped before this change measured 4.35:1 and 3.94:1
	 * against their own pill grounds, i.e. the status pills themselves were the
	 * part of the interface failing AA. Both foregrounds are darkened here:
	 *
	 *   green  #2f6b46  6.34:1 on white   5.63:1 on #ecf3ef
	 *   amber  #7a6033  5.92:1 on white   5.30:1 on #f7f2e8   (was 4.35:1)
	 *   red    #8c2f2f  8.19:1 on white   7.13:1 on #f7edec
	 *   grey   #565f6b  6.47:1 on white   5.53:1 on #eeedea   (was 3.94:1)
	 * =============================================================== */
	--resolve-success: #2f6b46;
	--resolve-warning: #7a6033;
	--resolve-danger: #8c2f2f;

	/*
	 * 1.6.1 — DECLARED. It was consumed and never declared.
	 *
	 * `--resolve-danger-pressed` is read in two places with two different
	 * fallbacks — #6f2525 in resolve-components.css and #742727 in
	 * resolve-panel.css — and declared in neither. Both comments said it was
	 * declared here. So the pressed state of a destructive button was one
	 * colour in the counterparty components and a different one in the
	 * administration panel, and neither could be changed by setting the token
	 * they both name.
	 *
	 * #6f2525 is the darker of the two and the one the components file uses,
	 * which is the surface a counterparty actually presses. 10.4:1 on white
	 * against #8c2f2f's 8.19:1 — a pressed state should be darker than its
	 * rest state, which is the whole point of having one.
	 */
	--resolve-danger-pressed: #6f2525;

	--resolve-status-approved: var(--resolve-success);
	--resolve-status-approved-soft: #ecf3ef;
	--resolve-status-pending: var(--resolve-warning);
	--resolve-status-pending-soft: #f7f2e8;
	--resolve-status-blocked: var(--resolve-danger);
	--resolve-status-blocked-soft: #f7edec;
	--resolve-status-inactive: #565f6b;
	--resolve-status-inactive-soft: #eeedea;

	/* "Stage" is not a status — it is where a transaction has reached, which
	 * is information rather than a judgement. It gets the brand hue so it
	 * cannot be misread as approval or as a problem.
	 *
	 * It uses accent-2 rather than accent, because accent on accent-soft is
	 * 4.39:1 — just under AA. accent-2 on the same ground is 6.01:1. */
	--resolve-status-stage: var(--resolve-accent-2);
	--resolve-status-stage-soft: var(--resolve-accent-soft);

	/* ---------------------------------------------------------------
	 * RESTRICTED — a sixth pair, added in 1.6.0 because it was MISSING.
	 *
	 * `Contact Restricted` (Domain\ContactRelease::STATE_RESTRICTED) is a real
	 * state of a real record and the default one: two parties on a transaction
	 * are contact-restricted until an administrator authorises a release. It
	 * had no entry in Frontend\Fields::status_tones(), so every pill showing it
	 * fell through to `neutral` and rendered in the same grey as "Withdrawn"
	 * and "Cancelled" — which says the restriction is an inactive leftover,
	 * when it is the live rule the platform is enforcing.
	 *
	 * Why its own pair rather than reusing blocked: a restriction is not a
	 * decision against anybody. Nobody was refused; the parties simply have not
	 * been introduced yet. Red would read as a sanction on the reader's own
	 * record. This is the amber family's warmth pulled towards the neutral end
	 * — "held, deliberately" — and it is a colour nothing else on the platform
	 * uses, so a restricted pill is distinguishable from all five others.
	 *
	 *   #6a5540 on #ffffff  =  7.03:1
	 *   #6a5540 on #f1ece6  =  5.99:1
	 *
	 * Both clear AA at body size, which is the bar every other pair in this
	 * block was measured against.
	 *
	 * NOTE FOR WHOEVER CLOSES THE REST OF THIS: the token is declared and can
	 * be overridden from the colour editor, but nothing consumes it yet. A
	 * `restricted => 'restricted'` entry in Fields::status_tones() and a
	 * `.resolve-pill--restricted` rule in resolve-components.css are what make
	 * it visible; neither file was within the scope that added this token.
	 * --------------------------------------------------------------- */
	--resolve-status-restricted: #6a5540;
	--resolve-status-restricted-soft: #f1ece6;


	/* ===============================================================
	 * SHAPE.
	 *
	 * VERIFIED, and the most absolute rule in the brand: a grep of the
	 * homepage stylesheet for any border-radius other than zero returned
	 * nothing. "Zero, everywhere. The identity is entirely square-cornered."
	 *
	 * The tokens are kept rather than deleted so that the ~40 rules already
	 * written as `border-radius: var(--r-radius)` become square by changing
	 * this one line instead of by 40 edits.
	 * =============================================================== */
	--resolve-radius: 0;
	--resolve-radius-lg: 0;

	/* Focus. One ring, used by every focusable thing in the system, sized so
	 * it is visible against both the light grounds and the black header. It is
	 * an outline rather than a box-shadow so it is not clipped by overflow and
	 * survives forced-colours mode. */
	--resolve-focus: var(--resolve-accent);
	--resolve-focus-width: 2px;
	--resolve-focus-offset: 2px;
	--resolve-focus-dark: var(--resolve-brand);


	/* ===============================================================
	 * RHYTHM.
	 *
	 * TWO SCALES, AND THE DISTINCTION IS THE POINT (§7).
	 *
	 * §7: Resolve "shares the identity but is an application, not a marketing
	 * site". The brand's verified vertical rhythm is 130px between sections,
	 * rising to 200–280px in hero zones. That is correct for a page whose job
	 * is to be read once, slowly, while scrolling. It is wrong for a queue of
	 * access requests, where the same 130px means four rows per screen and a
	 * reviewer scrolling past whitespace to compare two items.
	 *
	 * So the marketing rhythm is kept, verbatim, for the surfaces that are
	 * marketing — the public homepage, the editorial pages, the sign-in
	 * screen. And the application surfaces get a scale of their own, roughly
	 * a quarter of it. Same identity, different density.
	 * =============================================================== */

	/* Marketing. VERIFIED values from the brand capture. */
	--resolve-section: 130px;           /* the workhorse section padding   */
	--resolve-section-hero: 200px;      /* hero zones: 200–280px           */
	--resolve-gutter: 21px;             /* recurs as padding AND as margin */

	/* Application. DERIVED — a 4px-based scale, because a dense table needs
	 * steps the marketing rhythm does not contain. */
	--resolve-space-1: 4px;
	--resolve-space-2: 8px;
	--resolve-space-3: 12px;
	--resolve-space-4: 16px;
	--resolve-space-5: 24px;
	--resolve-space-6: 32px;
	--resolve-space-7: 48px;
	--resolve-space-8: 64px;
	--resolve-space-9: 96px;

	/* The gap between two sections of an application screen. Not 130px. */
	--resolve-stack: var(--resolve-space-6);
	--resolve-stack-lg: var(--resolve-space-7);


	/* ===============================================================
	 * ELEVATION.
	 *
	 * Panacea has no shadows — its depth comes from the 12px frame and from
	 * sections deliberately colliding with negative margins. An application
	 * needs one raised surface (the side panel, the modal) and nothing else,
	 * so there is one shadow, and cards get a hairline instead.
	 * =============================================================== */
	--resolve-shadow: none;
	--resolve-shadow-raised: 0 2px 4px rgba(0, 0, 0, 0.08), 0 16px 40px rgba(0, 0, 0, 0.12);


	/* ===============================================================
	 * MEASURE.
	 * =============================================================== */
	--resolve-measure: 885px;           /* VERIFIED — display text measure */
	--resolve-maxw: 1240px;             /* application content maximum     */
	--resolve-prose: 68ch;              /* readable paragraph measure      */


	/* ===============================================================
	 * TYPEFACES (§7).
	 *
	 * WHAT THE BRAND SERVES, AND WHY WE DO NOT SERVE IT
	 * ------------------------------------------------
	 * Panacea sets essentially everything in Canela, self-hosted from three
	 * files named Canela-Light-Trial.woff2, Canela-Regular-Trial.woff2 and
	 * Canela-Bold-Trial.woff2. Those are Commercial Type's TRIAL cut. A trial
	 * licence covers evaluation and mock-ups; it does not cover public web
	 * serving, and copying those files into Resolve would ship a licensing
	 * violation on every page load. They are not used here, and the brand
	 * document raises the same flag.
	 *
	 * WHAT IS USED INSTEAD
	 * --------------------
	 * DISPLAY — Playfair Display (SIL Open Font License 1.1). A high-contrast
	 * display serif. Canela is a flared, high-contrast serif whose signature on
	 * this brand is carried almost entirely by the treatment rather than the
	 * face: every heading on the site is UPPERCASE, BOLD and letter-spaced, and
	 * at that setting what reads is stroke contrast and sharp terminals, both
	 * of which Playfair has. It is also the first substitute the brand document
	 * itself names. Under OFL 1.1 it may be used, embedded and redistributed
	 * commercially, which is the whole point of choosing it.
	 *
	 * BODY — IBM Plex Sans with IBM Plex Sans Arabic (both SIL OFL 1.1). §7
	 * requires a clean grotesque that also renders Arabic acceptably, and this
	 * platform is bilingual with Arabic live. Plex is the strongest answer
	 * available under a free licence because the Arabic is not a fallback
	 * bolted on by a different hand: IBM Plex Sans Arabic was drawn as part of
	 * the same family, so an Arabic paragraph and an English one share colour,
	 * weight and rhythm instead of looking like two documents. It is already
	 * named in the Arabic stack in resolve-rtl.css, so this agrees with a
	 * decision the RTL layer had already made rather than overriding it.
	 *
	 * HOW THEY LOAD — AND WHY NOTHING IS FETCHED FROM GOOGLE
	 * -----------------------------------------------------
	 * No @font-face is declared here and no stylesheet is fetched from
	 * fonts.googleapis.com. Two reasons, and the first is the serious one:
	 *
	 * 1. This is a confidential transactions platform. A webfont link on every
	 *    page sends every reader's IP address and referring URL to a third
	 *    party on every view of a data room. That is a disclosure the product
	 *    exists to prevent, and it is not worth a typeface.
	 * 2. It could not have been verified anyway — font CDN egress is blocked
	 *    from this environment, so a Google Fonts link added here would have
	 *    shipped untested.
	 *
	 * So the families are NAMED AT THE HEAD OF THE STACK and the stack falls
	 * back through faces that are actually installed. Where an operator has
	 * self-hosted the two families, they are picked up with no further change;
	 * where they have not, the fallbacks carry the same character. Nothing
	 * 404s and nothing leaks. Self-hosting them is a deployment step, written
	 * up in the report rather than half-done here.
	 * =============================================================== */
	--resolve-display: "Playfair Display", "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;
	--resolve-serif: var(--resolve-display);
	--resolve-sans: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--resolve-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;


	/* ===============================================================
	 * TYPE SCALE (§7).
	 *
	 * Seven roles, named for the job rather than the size, so a screen can be
	 * read for hierarchy without measuring anything. Sizes are in rem so they
	 * follow the reader's own browser setting.
	 *
	 * Display is for the sign-in and gate screens only. A page title is the one
	 * <h1> on an application screen. Labels and table text are set smaller and
	 * tighter because a decision queue is read in columns, not in sentences.
	 * =============================================================== */
	--resolve-type-display: 2.25rem;
	--resolve-type-display-lh: 1.15;
	--resolve-type-page: 1.5rem;
	--resolve-type-page-lh: 1.25;
	--resolve-type-section: 1.125rem;
	--resolve-type-section-lh: 1.35;
	--resolve-type-body: 1rem;
	--resolve-type-body-lh: 1.6;
	--resolve-type-support: 0.875rem;
	--resolve-type-support-lh: 1.5;
	--resolve-type-label: 0.6875rem;
	--resolve-type-label-lh: 1.4;
	--resolve-type-table: 0.8125rem;
	--resolve-type-table-lh: 1.45;

	/* ---------------------------------------------------------------
	 * TRACKING — exactly three values, and no fourth.
	 *
	 * VERIFIED, and unusually specific: only three letter-spacing declarations
	 * exist in the entire homepage stylesheet — 3px on eyebrow labels, 1px on
	 * buttons, 0.8px on the smaller profile button — and every one of them is
	 * on UPPERCASE text. Body copy carries no tracking at all.
	 *
	 * They are tokens rather than literals so that the rule "there are three"
	 * is enforceable by reading this file, and so the RTL block below can zero
	 * all three at once.
	 * --------------------------------------------------------------- */
	--resolve-track-eyebrow: 3px;
	--resolve-track-button: 1px;
	--resolve-track-button-sm: 0.8px;
	--resolve-type-label-tracking: var(--resolve-track-eyebrow);

	/* Button metrics. VERIFIED: height 46px, padding 0 30px, uppercase. */
	--resolve-btn-height: 46px;
	--resolve-btn-height-sm: 34px;
	--resolve-btn-pad: 30px;
	--resolve-btn-pad-sm: 16px;

	/* Motion. VERIFIED, verbatim from `.custom-button`. */
	--resolve-transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease;


	/* Application shell metrics. */
	--resolve-shell-nav: 244px;
	--resolve-shell-header: 60px;
}


/* ===================================================================
 * ARABIC.
 *
 * Arabic is not Latin type at a different size. A mirrored stylesheet flips
 * the layout and leaves Arabic set with Latin metrics, which is the outcome
 * the brief rules out. Three things change:
 *
 * 1. THE STACKS. Plex Sans Arabic leads, matching resolve-rtl.css. The display
 *    face becomes Amiri — Playfair Display has no Arabic coverage at all, so
 *    naming it first in an Arabic heading would fall through to whatever the
 *    system happens to have. Amiri is a Naskh with the stroke contrast that
 *    makes it the closest Arabic answer to a high-contrast display serif, and
 *    it is OFL 1.1 like the others.
 *
 * 2. THE LEADING. Naskh forms carry ascenders and descenders further, so the
 *    Latin line-heights crowd them.
 *
 * 3. THE TRACKING GOES TO ZERO. This is the important one. All three of the
 *    brand's letter-spacing values exist to open up UPPERCASE Latin. Arabic
 *    has no case, and its letters JOIN — applying tracking to an Arabic word
 *    does not space it elegantly, it severs the connecting strokes and
 *    produces something between broken and unreadable. All three are zeroed
 *    together, which is why they are tokens.
 * =================================================================== */
[dir="rtl"] {
	--resolve-display: "Amiri", "Noto Naskh Arabic", "Scheherazade New", "Times New Roman", serif;
	--resolve-serif: var(--resolve-display);
	--resolve-sans: "Noto Sans Arabic", "IBM Plex Sans Arabic", "Dubai", "Cairo", "Segoe UI", Tahoma, Arial, sans-serif;

	--resolve-type-body-lh: 1.8;
	--resolve-type-support-lh: 1.7;
	--resolve-type-section-lh: 1.5;
	--resolve-type-page-lh: 1.4;

	--resolve-track-eyebrow: 0;
	--resolve-track-button: 0;
	--resolve-track-button-sm: 0;
	--resolve-type-label-tracking: 0;
}


/* ===================================================================
 * The shell's own aliases.
 *
 * resolve-shell.css is registered with this file as a real dependency, so its
 * prefix is declared here rather than in the consumer. Every other prefix is
 * declared in the stylesheet that uses it, with a literal fallback — see the
 * note at the top of this file.
 * =================================================================== */

:root {
	--r-ink: var(--resolve-ink);
	--r-ink-2: var(--resolve-ink-2);
	--r-ink-3: var(--resolve-ink-3);
	--r-ink-4: var(--resolve-ink-4);
	--r-paper: var(--resolve-paper);
	--r-ground: var(--resolve-ground);
	--r-ground-2: var(--resolve-ground-2);
	--r-ground-3: var(--resolve-ground-3);
	--r-line: var(--resolve-line);
	--r-line-strong: var(--resolve-line-strong);
	--r-accent: var(--resolve-accent);
	--r-accent-2: var(--resolve-accent-2);
	--r-accent-soft: var(--resolve-accent-soft);
	--r-accent-ink: var(--resolve-accent-ink);
	--r-brand: var(--resolve-brand);
	--r-brand-hover: var(--resolve-brand-hover);
	--r-frame: var(--resolve-frame);
	--r-dark: var(--resolve-dark);
	--r-dark-2: var(--resolve-dark-2);
	--r-dark-line: var(--resolve-dark-line);
	--r-on-dark: var(--resolve-on-dark);
	--r-gold: var(--resolve-gold);
	--r-success: var(--resolve-success);
	--r-warning: var(--resolve-warning);
	--r-danger: var(--resolve-danger);
	--r-status-approved: var(--resolve-status-approved);
	--r-status-approved-soft: var(--resolve-status-approved-soft);
	--r-status-pending: var(--resolve-status-pending);
	--r-status-pending-soft: var(--resolve-status-pending-soft);
	--r-status-blocked: var(--resolve-status-blocked);
	--r-status-blocked-soft: var(--resolve-status-blocked-soft);
	--r-status-inactive: var(--resolve-status-inactive);
	--r-status-inactive-soft: var(--resolve-status-inactive-soft);
	--r-status-stage: var(--resolve-status-stage);
	--r-status-stage-soft: var(--resolve-status-stage-soft);
	--r-status-restricted: var(--resolve-status-restricted);
	--r-status-restricted-soft: var(--resolve-status-restricted-soft);
	--r-radius: var(--resolve-radius);
	--r-radius-lg: var(--resolve-radius-lg);
	--r-focus: var(--resolve-focus);
	--r-focus-width: var(--resolve-focus-width);
	--r-focus-offset: var(--resolve-focus-offset);
	--r-space-1: var(--resolve-space-1);
	--r-space-2: var(--resolve-space-2);
	--r-space-3: var(--resolve-space-3);
	--r-space-4: var(--resolve-space-4);
	--r-space-5: var(--resolve-space-5);
	--r-space-6: var(--resolve-space-6);
	--r-space-7: var(--resolve-space-7);
	--r-space-8: var(--resolve-space-8);
	--r-space-9: var(--resolve-space-9);
	--r-stack: var(--resolve-stack);
	--r-stack-lg: var(--resolve-stack-lg);
	--r-gutter: var(--resolve-gutter);
	--r-section: var(--resolve-section);
	--r-shadow: var(--resolve-shadow);
	--r-shadow-raised: var(--resolve-shadow-raised);
	--r-maxw: var(--resolve-maxw);
	--r-measure: var(--resolve-measure);
	--r-prose: var(--resolve-prose);
	--r-serif: var(--resolve-serif);
	--r-display: var(--resolve-display);
	--r-sans: var(--resolve-sans);
	--r-mono: var(--resolve-mono);
	--r-type-display: var(--resolve-type-display);
	--r-type-display-lh: var(--resolve-type-display-lh);
	--r-type-page: var(--resolve-type-page);
	--r-type-page-lh: var(--resolve-type-page-lh);
	--r-type-section: var(--resolve-type-section);
	--r-type-section-lh: var(--resolve-type-section-lh);
	--r-type-body: var(--resolve-type-body);
	--r-type-body-lh: var(--resolve-type-body-lh);
	--r-type-support: var(--resolve-type-support);
	--r-type-support-lh: var(--resolve-type-support-lh);
	--r-type-label: var(--resolve-type-label);
	--r-type-label-lh: var(--resolve-type-label-lh);
	--r-type-label-tracking: var(--resolve-type-label-tracking);
	--r-type-table: var(--resolve-type-table);
	--r-type-table-lh: var(--resolve-type-table-lh);
	--r-track-eyebrow: var(--resolve-track-eyebrow);
	--r-track-button: var(--resolve-track-button);
	--r-track-button-sm: var(--resolve-track-button-sm);
	--r-btn-height: var(--resolve-btn-height);
	--r-btn-height-sm: var(--resolve-btn-height-sm);
	--r-btn-pad: var(--resolve-btn-pad);
	--r-btn-pad-sm: var(--resolve-btn-pad-sm);
	--r-transition: var(--resolve-transition);
	--r-shell-nav: var(--resolve-shell-nav);
	--r-shell-header: var(--resolve-shell-header);
}
