/* Royal Research Group — generated from tokens.json */
:root, [data-theme="light"] {
  --foundation-canvas: #12171c; /* Primary site background. */
  --foundation-surface: #171d23; /* Cards and selection surfaces. */
  --foundation-raised: #1d252d; /* Controls and raised panels. */
  --foundation-elevated: #26313a; /* Overlays and stronger separation. */
  --foundation-evidence: #f3f6f7; /* Documents and paper-like evidence. */
  --text-primary: #f4f7f8; /* Main text on dark surfaces. */
  --text-secondary: #bec8cf; /* Supporting copy. */
  --text-muted: #87949e; /* Metadata and tertiary copy. */
  --text-silver: #e7e9eb; /* Fine rules, document edges, highlights. */
  --brand-royal-blue: #186faf; /* Primary brand color. */
  --brand-active-blue: #2a8fd3; /* Active and interactive states. */
  --brand-ion-cyan: #77c4ea; /* Restrained technical emphasis. */
  --states-success: #43b985; /* Confirmed positive states. */
  --Hairline: 0 0 0 1px #e7e9eb1a; /* Subtle boundaries on dark surfaces and evidence panels. */
  --Raised: 0 8px 24px #0000003d; /* Cards and controls raised slightly above the canvas. */
  --Document: 0 12px 32px #00000047; /* Documents, evidence cards, and prominent content panels. */
  --Overlay: 0 20px 60px #00000061; /* Modals, menus, drawers, and floating overlays. */
  --Focus-Ring: 0 0 0 3px #2a8fd359; /* Keyboard focus and active interactive elements. */
}
:root {
  --Space-1: 4px; /* Micro spacing for icon offsets and tight alignment. */
  --Space-2: 8px; /* Compact gaps between icons, labels, and related controls. */
  --Space-3: 12px; /* Small control padding and compact component spacing. */
  --Space-4: 16px; /* Standard inline gaps and internal padding. */
  --Space-5: 24px; /* Standard card padding and related content gaps. */
  --Space-6: 32px; /* Roomy card padding and component-group separation. */
  --Space-7: 48px; /* Separation between related content blocks. */
  --Space-8: 64px; /* Large component spacing and section subdivisions. */
  --Space-9: 80px; /* Standard responsive section padding. */
  --Space-10: 96px; /* Generous desktop section spacing and editorial breaks. */
  --Space-11: 128px; /* Maximum large-screen section and composition spacing. */
  --Sharp: 0px; /* Tables, evidence panels, dividers, and precise editorial elements. */
  --Control: 8px; /* Buttons, inputs, dropdowns, and compact controls. */
  --Card: 10px; /* Standard cards and content containers. */
  --Panel: 14px; /* Large panels, dialogs, and grouped interface regions. */
  --Feature: 20px; /* Featured content cards and prominent visual modules. */
  --Large: 24px; /* Large editorial compositions and hero-level containers. */
  --Round: 999px; /* Pills, status badges, tags, and circular controls. */
  --font-geist: 'Geist', sans-serif;
  --font-geist-mono: 'Geist Mono', sans-serif;
  --text-Display-XL: 600 72px/1.06 var(--font-geist); /* Primary large-format display headlines on desktop. Use sparingly; must scale responsively on smaller screens. */
  --text-Display-L: 600 56px/1.07 var(--font-geist); /* Secondary display headlines and major editorial statements. Scale responsively on tablet and mobile. */
  --text-Heading-1: 600 48px/1.08 var(--font-geist); /* Primary page titles and major section headlines. Use one H1 per page and scale responsively on smaller screens. */
  --text-Heading-2: 600 36px/1.17 var(--font-geist); /* Major section headings and primary titles within content pages. Maintain clear separation from body copy. */
  --text-Heading-3: 600 28px/1.21 var(--font-geist); /* Subsection headings, card-group titles, and prominent titles inside evidence or product compositions. */
  --text-Heading-4: 600 22px/1.27 var(--font-geist); /* Compact subsection headings, component titles, product-card titles, and document-panel headings. */
  --text-Body-Large: 400 18px/1.61 var(--font-geist); /* Introductory paragraphs, product promises, editorial leads, and prominent supporting copy. */
  --text-Body: 400 16px/1.625 var(--font-geist); /* Default body copy across marketing, commerce, documentation, account, and application experiences. Minimum mobile body size. */
  --text-Body-Small: 400 14px/1.57 var(--font-geist); /* Supporting descriptions, secondary card copy, captions, and noncritical interface text. Do not use for primary mobile reading copy. */
  --text-Label: 600 13px/1.23 var(--font-geist); /* Buttons, form labels, navigation controls, filters, and compact interface labels. Use uppercase only when context benefits from it. */
  --text-Micro-Label: 600 11px/1.36 var(--font-geist); /* Eyebrows, document categories, test classifications, compact statuses, and short technical identifiers. Never use for essential body copy. */
  --text-Technical: 500 14px/1.43 var(--font-geist-mono); /* Lot numbers, batch records, test values, dates, report IDs, evidence metadata, and archival indexing. */
  --text-Technical-Small: 500 12px/1.5 var(--font-geist-mono); /* Compact evidence metadata, table values, timestamps, document references, and secondary technical annotations. Never use for primary reading copy. */
}
.Display-XL {
  font-family: var(--font-geist);
  font-size: 72px;
  line-height: 1.06;
  font-weight: 600;
  letter-spacing: -0.035em;
}
.Display-L {
  font-family: var(--font-geist);
  font-size: 56px;
  line-height: 1.07;
  font-weight: 600;
  letter-spacing: -0.03em;
}
.Heading-1 {
  font-family: var(--font-geist);
  font-size: 48px;
  line-height: 1.08;
  font-weight: 600;
  letter-spacing: -0.025em;
}
.Heading-2 {
  font-family: var(--font-geist);
  font-size: 36px;
  line-height: 1.17;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.Heading-3 {
  font-family: var(--font-geist);
  font-size: 28px;
  line-height: 1.21;
  font-weight: 600;
  letter-spacing: -0.015em;
}
.Heading-4 {
  font-family: var(--font-geist);
  font-size: 22px;
  line-height: 1.27;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.Body-Large {
  font-family: var(--font-geist);
  font-size: 18px;
  line-height: 1.61;
  font-weight: 400;
  letter-spacing: 0em;
}
.Body {
  font-family: var(--font-geist);
  font-size: 16px;
  line-height: 1.625;
  font-weight: 400;
  letter-spacing: 0em;
}
.Body-Small {
  font-family: var(--font-geist);
  font-size: 14px;
  line-height: 1.57;
  font-weight: 400;
  letter-spacing: 0em;
}
.Label {
  font-family: var(--font-geist);
  font-size: 13px;
  line-height: 1.23;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.Micro-Label {
  font-family: var(--font-geist);
  font-size: 11px;
  line-height: 1.36;
  font-weight: 600;
  letter-spacing: 0.08em;
}
.Technical {
  font-family: var(--font-geist-mono);
  font-size: 14px;
  line-height: 1.43;
  font-weight: 500;
  letter-spacing: 0.01em;
}
.Technical-Small {
  font-family: var(--font-geist-mono);
  font-size: 12px;
  line-height: 1.5;
  font-weight: 500;
  letter-spacing: 0.03em;
}
@font-face {
  font-family: "Geist";
  src: url("../fonts/Geist-Medium.otf") format("opentype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Geist";
  src: url("../fonts/Geist-Regular.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Geist";
  src: url("../fonts/Geist-SemiBold.otf") format("opentype");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Geist Mono";
  src: url("../fonts/GeistMono-Medium.otf") format("opentype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Geist Mono";
  src: url("../fonts/GeistMono-Regular.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Geist Mono";
  src: url("../fonts/GeistMono-SemiBold.otf") format("opentype");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

/* Semantic aliases over the v124 base tokens (tokens.css). Additive only. */
:root{
--surface-canvas:var(--foundation-canvas);--surface-card:var(--foundation-surface);--surface-raised:var(--foundation-raised);--surface-elevated:var(--foundation-elevated);--surface-paper:var(--foundation-evidence);
--text-body:var(--text-secondary);--text-heading:var(--text-primary);--text-meta:var(--text-muted);
--text-on-paper:#12171c;--text-on-paper-muted:#26313a;
--action-primary:var(--brand-royal-blue);--action-hover:var(--brand-active-blue);--accent-technical:var(--brand-ion-cyan);--state-verified:var(--states-success);
--rule:#e7e9eb1a;--rule-strong:var(--foundation-elevated);
--ease-standard:cubic-bezier(.2,.7,.2,1); /* @kind other */
--duration-fast:160ms; /* @kind other */
--duration-base:200ms; /* @kind other */
--content-max:1280px;
--gutter:clamp(20px,4vw,48px); /* @kind spacing */
}

/* Royal Research Group — component library.
   Every colour, radius, space, shadow and font below is a token from tokens.css.
   State hooks: :hover / :active / :focus-visible, mirrored by .is-hover / .is-active / .is-focus
   for documentation and previews only. */

/* ---------- fonts ----------
   Type styles are written out from tokens.json values (family, size, line-height, weight) instead of the
   --text-* composites, which the preview frame and some consumers do not compile.
   "Geist"/"Geist Mono" come from tokens.css; "RRG Geist"/"RRG Geist Mono" load the same uploaded files
   from this system's asset store as a fallback wherever tokens.css fonts are not reachable. */
@font-face{font-family:"RRG Geist";src:url("../fonts/Geist-Regular.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"RRG Geist";src:url("../fonts/Geist-Medium.otf") format("opentype");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"RRG Geist";src:url("../fonts/Geist-SemiBold.otf") format("opentype");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"RRG Geist Mono";src:url("../fonts/GeistMono-Regular.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"RRG Geist Mono";src:url("../fonts/GeistMono-Medium.otf") format("opentype");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"RRG Geist Mono";src:url("../fonts/GeistMono-SemiBold.otf") format("opentype");font-weight:600;font-style:normal;font-display:swap}
:root{--rrg-sans:"Geist","RRG Geist",ui-sans-serif,system-ui,sans-serif; /* @kind font */
--rrg-mono:"Geist Mono","RRG Geist Mono",ui-monospace,monospace; /* @kind font */
}
/* every component element starts in Geist; mono rules below override where the content is technical */
[class^="rrg-"],[class*=" rrg-"]{font-family:var(--rrg-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.rrg-modal-layer *,.rrg-nav *,.rrg-accordion *,.rrg-product *,.rrg-evidence *,.rrg-notice *{font-family:inherit}

/* ---------- base ---------- */
.rrg-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.rrg-icon{display:block;flex:none}
.rrg-mono{font-family:var(--rrg-mono);font-size:12px;line-height:1.5;font-weight:500;letter-spacing:.03em;font-variant-numeric:tabular-nums}
.rrg-eyebrow{margin:0;font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.rrg-eyebrow--accent{color:var(--brand-ion-cyan)}
@media (prefers-reduced-motion:reduce){
  .rrg-btn,.rrg-link,.rrg-control,.rrg-product,.rrg-evidence,.rrg-acc__chevron,.rrg-iconbtn,.rrg-check__box,.rrg-row{transition:none!important}
}

/* ---------- 1–2. Buttons ---------- */
.rrg-btn{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:var(--Space-2);min-height:44px;padding:0 var(--Space-5);border:1px solid transparent;border-radius:var(--Control);font-family:var(--rrg-sans);font-size:13px;line-height:1.23;font-weight:600;letter-spacing:.04em;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .16s ease,color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}
.rrg-btn--lg{min-height:52px;padding:0 var(--Space-6)}
.rrg-btn--full{display:flex;width:100%}
.rrg-btn__icon{display:inline-flex;margin:0 calc(var(--Space-1) * -1)}
.rrg-btn:focus-visible,.rrg-btn.is-focus{outline:2px solid var(--brand-active-blue);outline-offset:2px}

.rrg-btn--primary{background:var(--brand-royal-blue);color:var(--text-primary)}
.rrg-btn--primary:hover,.rrg-btn--primary.is-hover{background:var(--brand-active-blue);color:var(--foundation-canvas);box-shadow:var(--Raised)}
.rrg-btn--primary:active,.rrg-btn--primary.is-active{background:var(--brand-active-blue);color:var(--foundation-canvas);box-shadow:none;transform:translateY(1px)}

.rrg-btn--secondary{background:var(--foundation-raised);color:var(--text-primary);border-color:var(--text-muted)}
.rrg-btn--secondary:hover,.rrg-btn--secondary.is-hover{background:var(--foundation-elevated);border-color:var(--text-secondary)}
.rrg-btn--secondary:active,.rrg-btn--secondary.is-active{background:var(--foundation-surface);border-color:var(--text-secondary);transform:translateY(1px)}

.rrg-btn:disabled,.rrg-btn.is-disabled,.rrg-btn:disabled:hover,.rrg-btn.is-disabled:hover{background:var(--foundation-raised);color:var(--text-muted);border-color:transparent;box-shadow:var(--Hairline);transform:none;cursor:not-allowed}

/* ---------- 3. Text link ---------- */
.rrg-link{display:inline;color:var(--text-primary);text-decoration:underline;text-decoration-color:var(--brand-royal-blue);text-decoration-thickness:1px;text-underline-offset:.24em;border-radius:2px;cursor:pointer;transition:color .16s ease,text-decoration-color .16s ease}
.rrg-link .rrg-icon{display:inline-block;vertical-align:-.15em;margin-left:var(--Space-1)}
.rrg-link:hover,.rrg-link.is-hover{color:var(--brand-ion-cyan);text-decoration-color:currentColor}
.rrg-link:active,.rrg-link.is-active{color:var(--brand-ion-cyan);text-decoration-thickness:2px}
.rrg-link:focus-visible,.rrg-link.is-focus{outline:2px solid var(--brand-active-blue);outline-offset:2px;text-decoration-color:currentColor}
.rrg-link--standalone{display:inline-flex;align-items:center;gap:var(--Space-1);font-family:var(--rrg-sans);font-size:13px;line-height:1.23;font-weight:600;letter-spacing:.04em;text-decoration:none;min-height:44px}
.rrg-link--standalone .rrg-icon{margin:0;transition:transform .16s ease}
.rrg-link--standalone:hover,.rrg-link--standalone.is-hover{text-decoration:underline}
.rrg-link--standalone:hover .rrg-icon,.rrg-link--standalone.is-hover .rrg-icon{transform:translateX(2px)}
.rrg-link--paper{color:var(--foundation-canvas);text-decoration-color:var(--brand-royal-blue)}
.rrg-link--paper:hover,.rrg-link--paper.is-hover,.rrg-link--paper:active,.rrg-link--paper.is-active{color:var(--brand-royal-blue)}
.rrg-link.is-disabled,.rrg-link.is-disabled:hover{color:var(--text-muted);text-decoration:none;cursor:not-allowed;pointer-events:none}

/* ---------- shared field shell (TextInput, Select, SearchField) ---------- */
.rrg-field{display:flex;flex-direction:column;gap:var(--Space-2);min-width:0}
.rrg-field__label{display:flex;align-items:baseline;justify-content:space-between;gap:var(--Space-3);font-family:var(--rrg-sans);font-size:13px;line-height:1.23;font-weight:600;letter-spacing:.04em;color:var(--text-secondary)}
.rrg-field__req{font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.rrg-field__hint{margin:0;font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;color:var(--text-muted)}
.rrg-field__error{display:flex;align-items:flex-start;gap:var(--Space-2);margin:0;font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;font-weight:500;color:var(--text-primary)}
.rrg-field__error .rrg-icon{margin-top:3px}

.rrg-control{box-sizing:border-box;position:relative;display:flex;align-items:center;gap:var(--Space-2);min-height:44px;padding:0 var(--Space-4);background:var(--foundation-surface);border:1px solid var(--text-muted);border-radius:var(--Control);color:var(--text-primary);transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}
.rrg-control:hover,.rrg-field.is-hover .rrg-control{border-color:var(--text-secondary)}
.rrg-control:focus-within,.rrg-field.is-focus .rrg-control{border-color:var(--brand-active-blue);box-shadow:var(--Focus-Ring)}
.rrg-field.is-error .rrg-control{border-color:var(--text-silver);box-shadow:inset 0 0 0 1px var(--text-silver)}
.rrg-field.is-error .rrg-control:focus-within{border-color:var(--brand-active-blue);box-shadow:inset 0 0 0 1px var(--brand-active-blue),var(--Focus-Ring)}
.rrg-field.is-disabled .rrg-field__label{color:var(--text-muted)}
.rrg-field.is-disabled .rrg-control{background:var(--foundation-canvas);border-color:var(--foundation-elevated);color:var(--text-muted);box-shadow:none;cursor:not-allowed}

.rrg-control__input,.rrg-control__select{flex:1;min-width:0;height:42px;margin:0;padding:0;background:transparent;border:0;outline:0;color:inherit;font-family:var(--rrg-sans);font-size:16px;line-height:1.625;font-weight:400;-webkit-appearance:none;appearance:none}
.rrg-control__input::placeholder{color:var(--text-muted);opacity:1}
.rrg-control__input:disabled,.rrg-control__select:disabled{cursor:not-allowed}
.rrg-control__input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.rrg-control--mono .rrg-control__input,.rrg-control--mono .rrg-control__select{font-family:var(--rrg-mono);font-size:14px;line-height:1.43;font-weight:500;letter-spacing:.01em;font-variant-numeric:tabular-nums}
.rrg-control__affix{font-family:var(--rrg-mono);font-size:12px;line-height:1.5;font-weight:500;letter-spacing:.03em;color:var(--text-muted);white-space:nowrap}
.rrg-control__status,.rrg-control__lead{display:inline-flex;color:var(--text-primary)}
.rrg-control__lead{color:var(--text-muted)}
.rrg-control:focus-within .rrg-control__lead,.rrg-field.is-focus .rrg-control__lead{color:var(--text-primary)}

.rrg-control--select{padding-right:var(--Space-3)}
.rrg-control__select{cursor:pointer;padding-right:var(--Space-6)}
.rrg-control__select:has(option[value=""]:checked){color:var(--text-muted)}
.rrg-control__select option{background:var(--foundation-raised);color:var(--text-primary)}
.rrg-control__chevron{position:absolute;right:var(--Space-3);display:inline-flex;color:var(--text-secondary);pointer-events:none}

.rrg-search{margin:0;min-width:0}
.rrg-search__row{display:flex;gap:var(--Space-3);align-items:stretch}
.rrg-search__row .rrg-control{flex:1}
.rrg-control--search{padding-left:var(--Space-3);padding-right:var(--Space-1)}
.rrg-control__clear{display:inline-grid;place-items:center;width:36px;height:36px;flex:none;border:0;border-radius:var(--Control);background:transparent;color:var(--text-secondary);cursor:pointer}
.rrg-control__clear:hover{background:var(--foundation-elevated);color:var(--text-primary)}
.rrg-control__clear:focus-visible{outline:2px solid var(--brand-active-blue);outline-offset:0}

/* ---------- 9. Status badge ---------- */
.rrg-badge{box-sizing:border-box;display:inline-flex;align-items:center;gap:var(--Space-2);min-height:24px;padding:0 var(--Space-3) 0 var(--Space-2);border:1px solid currentColor;border-radius:var(--Round);font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;vertical-align:middle}
.rrg-badge__dot{width:6px;height:6px;border-radius:var(--Round);background:currentColor;flex:none}
.rrg-badge__glyph{display:inline-grid;place-items:center;width:14px;height:14px;border-radius:var(--Round);background:var(--text-primary);color:var(--foundation-canvas);font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:0;line-height:1;flex:none}
.rrg-badge--mono .rrg-badge__text{font-family:var(--rrg-mono);font-size:12px;line-height:1.5;font-weight:500;letter-spacing:.03em;text-transform:none}
.rrg-badge--verified{color:var(--states-success)}
.rrg-badge--testing{color:var(--brand-ion-cyan)}
.rrg-badge--neutral{color:var(--text-secondary);border-color:var(--text-muted)}
.rrg-badge--attention{color:var(--text-primary);border-style:dashed}
.rrg-badge--royal{background:var(--brand-royal-blue);border-color:var(--brand-royal-blue);color:var(--text-primary)}
.rrg-badge--paper{color:var(--foundation-canvas);border-color:var(--text-secondary);background:var(--foundation-evidence)}
.rrg-badge--paper.rrg-badge--verified .rrg-badge__dot{background:var(--states-success);box-shadow:0 0 0 1px var(--foundation-canvas)}
.rrg-badge--paper.rrg-badge--testing .rrg-badge__dot{background:var(--brand-royal-blue)}
.rrg-badge--paper.rrg-badge--attention{border-color:var(--foundation-canvas)}
.rrg-badge--paper .rrg-badge__glyph{background:var(--foundation-canvas);color:var(--foundation-evidence)}
.rrg-badge--paper.rrg-badge--royal{background:var(--brand-royal-blue);border-color:var(--brand-royal-blue);color:var(--text-primary)}

/* ---------- specs (cards) ---------- */
.rrg-spec{display:flex;flex-direction:column;gap:var(--Space-1);min-width:0}
.rrg-spec__label{font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.rrg-spec__value{margin:0;color:var(--text-primary);overflow-wrap:normal;word-break:normal;hyphens:manual}

/* ---------- 7. Product card ---------- */
.rrg-product{box-sizing:border-box;position:relative;display:flex;flex-direction:column;min-width:0;background:var(--foundation-surface);border-radius:var(--Card);box-shadow:var(--Hairline);overflow:hidden;transition:box-shadow .2s ease,background-color .2s ease}
.rrg-product.is-linked:hover,.rrg-product.is-hover{background:var(--foundation-raised);box-shadow:var(--Hairline),var(--Raised)}
.rrg-product:has(.rrg-product__link:focus-visible),.rrg-product.is-focus{outline:2px solid var(--brand-active-blue);outline-offset:2px}
.rrg-product__media{display:grid;place-items:center;aspect-ratio:4/3;padding:var(--Space-5);background:var(--foundation-canvas);box-shadow:inset 0 -1px 0 var(--foundation-elevated)}
.rrg-product__media img{display:block;max-width:100%;max-height:100%;object-fit:contain}
.rrg-product__media{position:relative}
.rrg-product__placeholder{display:grid;place-items:center;width:100%;height:100%;color:var(--text-muted);opacity:.7}
.rrg-product__media--label{margin:0}
.rrg-product__media-tag{position:absolute;top:var(--Space-3);left:var(--Space-3);display:inline-flex;align-items:center;min-height:22px;padding:0 var(--Space-2);border:1px solid var(--text-muted);border-radius:var(--Round);background:var(--foundation-surface);color:var(--text-secondary);font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.rrg-product__media-tag .rrg-mono{margin-left:var(--Space-2);color:var(--text-primary);text-transform:none}
.rrg-product__body{display:flex;flex-direction:column;gap:var(--Space-3);flex:1;padding:var(--Space-5)}
.rrg-product__meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--Space-2) var(--Space-3);min-height:24px}
.rrg-product__heading{display:flex;flex-direction:column;gap:var(--Space-2)}
.rrg-product__title{margin:0;font-family:var(--rrg-sans);font-size:22px;line-height:1.27;font-weight:600;letter-spacing:-.01em;color:var(--text-primary)}
.rrg-product__amount{margin:0;font-family:var(--rrg-sans);font-size:16px;line-height:1.5;font-weight:400;font-variant-numeric:tabular-nums;color:var(--text-secondary)}
.rrg-product__link{color:inherit;text-decoration:none;outline:none}
.rrg-product__link::after{content:"";position:absolute;inset:0;z-index:0}
.rrg-product.is-linked:hover .rrg-product__link,.rrg-product.is-hover .rrg-product__link{text-decoration:underline;text-decoration-color:var(--brand-royal-blue);text-decoration-thickness:1px;text-underline-offset:.2em}
.rrg-product__desc{margin:0;font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;color:var(--text-secondary)}
.rrg-product__specs{display:grid;grid-template-columns:1fr 1fr;gap:var(--Space-3) var(--Space-4);margin:0;padding:var(--Space-3) 0;border-top:1px solid var(--foundation-elevated);border-bottom:1px solid var(--foundation-elevated)}
.rrg-product__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--Space-3);margin-top:auto;padding-top:var(--Space-1)}
.rrg-product__price{font-family:var(--rrg-sans);font-size:18px;line-height:1.61;font-weight:500;font-variant-numeric:tabular-nums;color:var(--text-primary)}
.rrg-product--offer .rrg-product__price{font-size:24px;line-height:1.25;font-weight:600;letter-spacing:-.01em}
.rrg-product__offer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--Space-2) var(--Space-4);margin-top:auto;padding-top:var(--Space-2)}
.rrg-product__coa{position:relative;z-index:1;display:inline-flex;align-items:center;gap:var(--Space-2);font-family:var(--rrg-sans);font-size:14px;line-height:1.43;font-weight:400;color:var(--text-secondary);text-decoration:none;white-space:nowrap}
.rrg-product__coa .rrg-icon{flex:none;color:var(--text-secondary)}
a.rrg-product__coa{min-height:44px;margin:-10px 0}
a.rrg-product__coa:hover{color:var(--text-primary);text-decoration:underline;text-decoration-color:var(--brand-royal-blue);text-underline-offset:.2em}
a.rrg-product__coa:focus-visible{outline:2px solid var(--brand-active-blue);outline-offset:2px;border-radius:4px}
.rrg-product__cta{position:relative;z-index:1}
.rrg-product.is-unavailable .rrg-product__coa{color:var(--text-muted)}
.rrg-product__actions{position:relative;z-index:1;display:flex;align-items:center;gap:var(--Space-4)}
.rrg-product.is-unavailable .rrg-product__media img{opacity:.45}
.rrg-product.is-unavailable .rrg-product__price{color:var(--text-muted)}

/* ---------- 8. Evidence / COA card ---------- */
.rrg-evidence{container-type:inline-size;box-sizing:border-box;position:relative;min-width:280px;display:flex;flex-direction:column;gap:var(--Space-4);min-width:0;padding:var(--Space-5);border-radius:var(--Card);transition:box-shadow .2s ease,transform .2s ease}
.rrg-evidence--paper{background:var(--foundation-evidence);color:var(--foundation-canvas);box-shadow:var(--Document)}
.rrg-evidence--dark{background:var(--foundation-raised);color:var(--text-primary);box-shadow:var(--Hairline),var(--Raised)}
.rrg-evidence__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--Space-3);padding-bottom:var(--Space-3);border-bottom:1px solid var(--text-secondary)}
.rrg-evidence--dark .rrg-evidence__head{border-bottom-color:var(--foundation-elevated)}
.rrg-evidence__type{font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-royal-blue)}
.rrg-evidence--dark .rrg-evidence__type{color:var(--brand-ion-cyan)}
.rrg-evidence__ref{color:var(--foundation-elevated);white-space:nowrap}
.rrg-evidence--dark .rrg-evidence__ref{color:var(--text-secondary)}
.rrg-evidence__title-row{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--Space-2) var(--Space-3)}
.rrg-evidence__title-row .rrg-badge{flex:none;margin-top:var(--Space-1)}
.rrg-evidence__title{margin:0;font-family:var(--rrg-sans);font-size:22px;line-height:1.27;font-weight:600;letter-spacing:-.01em;color:inherit}
.rrg-evidence__link{color:inherit;text-decoration:none;outline:none}
.rrg-evidence__link::after{content:"";position:absolute;inset:0}
.rrg-evidence.is-linked:hover,.rrg-evidence.is-hover{transform:translateY(-2px)}
.rrg-evidence.is-linked:hover .rrg-evidence__link,.rrg-evidence.is-hover .rrg-evidence__link{text-decoration:underline;text-decoration-color:var(--brand-royal-blue);text-underline-offset:.2em}
.rrg-evidence:has(.rrg-evidence__link:focus-visible),.rrg-evidence.is-focus{outline:2px solid var(--brand-active-blue);outline-offset:3px}
.rrg-evidence__hero{display:flex;flex-direction:column;gap:var(--Space-1)}
.rrg-evidence__hero-label{font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--foundation-elevated)}
.rrg-evidence--dark .rrg-evidence__hero-label{color:var(--text-muted)}
.rrg-evidence__hero-value{font-family:var(--rrg-mono);font-size:36px;line-height:1.17;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.rrg-evidence__fields{display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin:0;border-top:1px solid var(--text-secondary)}
.rrg-evidence__fields .rrg-spec{padding:var(--Space-3) var(--Space-3) var(--Space-3) 0;border-bottom:1px solid var(--text-secondary)}
@container (min-width: 280px){
  .rrg-evidence__fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .rrg-evidence__fields .rrg-spec:nth-child(even):not(.rrg-spec--wide){padding-left:var(--Space-3);border-left:1px solid var(--text-secondary)}
  .rrg-evidence--dark .rrg-evidence__fields .rrg-spec:nth-child(even):not(.rrg-spec--wide){border-left-color:var(--foundation-elevated)}
}
.rrg-evidence__fields .rrg-spec--wide{grid-column:1 / -1}
.rrg-evidence--paper .rrg-spec__label{color:var(--foundation-elevated)}
.rrg-evidence--paper .rrg-spec__value{color:var(--foundation-canvas)}
.rrg-evidence--dark .rrg-evidence__fields,.rrg-evidence--dark .rrg-evidence__fields .rrg-spec{border-color:var(--foundation-elevated)}
.rrg-evidence__message{display:flex;align-items:flex-start;gap:var(--Space-2);margin:0;font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400}
.rrg-evidence__message .rrg-icon{margin-top:3px}
.rrg-evidence--dark .rrg-evidence__message{color:var(--text-secondary)}
.rrg-evidence.is-unavailable.rrg-evidence--paper{box-shadow:inset 0 0 0 1px var(--foundation-canvas),var(--Document)}
.rrg-evidence.is-unavailable .rrg-evidence__hero-value,.rrg-evidence.is-pending .rrg-evidence__hero-value{color:var(--foundation-elevated)}
.rrg-evidence--dark.is-unavailable .rrg-evidence__hero-value,.rrg-evidence--dark.is-pending .rrg-evidence__hero-value{color:var(--text-muted)}
.rrg-evidence__foot{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:var(--Space-2) var(--Space-5);margin-top:auto}
.rrg-evidence__foot .rrg-link:not(.rrg-link--standalone){font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400}

/* ---------- 10. Research-use notice ---------- */
.rrg-notice{margin:0;color:var(--text-secondary)}
.rrg-notice__title{font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-primary)}
.rrg-notice__text{font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400}
.rrg-notice--inline{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--Space-1) var(--Space-2)}
.rrg-notice--inline .rrg-icon{align-self:center;color:var(--text-secondary)}
.rrg-notice--banner{background:var(--foundation-surface);border-bottom:1px solid var(--foundation-elevated)}
.rrg-notice__inner{display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;gap:var(--Space-1) var(--Space-3);padding:var(--Space-2) var(--Space-5);text-align:center}
.rrg-notice--banner .rrg-notice__text{color:var(--text-secondary)}
.rrg-notice--block{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--Space-3);padding:var(--Space-5);background:var(--foundation-raised);border-radius:var(--Card);box-shadow:var(--Hairline)}
.rrg-notice__head{display:flex;align-items:center;gap:var(--Space-2);color:var(--text-primary)}
.rrg-notice--block .rrg-notice__text{margin:0;color:var(--text-secondary)}
.rrg-notice--block.is-error{box-shadow:inset 0 0 0 1px var(--text-silver)}
.rrg-notice__ack{margin-top:var(--Space-1);padding-top:var(--Space-3);border-top:1px solid var(--foundation-elevated)}

.rrg-check{display:flex;flex-direction:column;gap:var(--Space-2)}
.rrg-check__row{position:relative;display:flex;align-items:flex-start;gap:var(--Space-3);min-height:24px;cursor:pointer;color:var(--text-primary);font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400}
.rrg-check__input{position:absolute;left:0;top:0;width:20px;height:20px;margin:0;opacity:0;cursor:pointer}
.rrg-check__box{box-sizing:border-box;display:grid;place-items:center;width:20px;height:20px;margin-top:1px;flex:none;border:1px solid var(--text-muted);border-radius:var(--Sharp);background:var(--foundation-surface);color:transparent;transition:background-color .16s ease,border-color .16s ease}
.rrg-check__row:hover .rrg-check__box,.rrg-check.is-hover .rrg-check__box{border-color:var(--text-secondary)}
.rrg-check__input:checked+.rrg-check__box{background:var(--brand-royal-blue);border-color:var(--brand-royal-blue);color:var(--text-primary)}
.rrg-check__input:focus-visible+.rrg-check__box,.rrg-check.is-focus .rrg-check__box{outline:2px solid var(--brand-active-blue);outline-offset:2px}
.rrg-check.is-error .rrg-check__box{border-color:var(--text-silver);box-shadow:inset 0 0 0 1px var(--text-silver)}
.rrg-check.is-disabled .rrg-check__row{color:var(--text-muted);cursor:not-allowed}
.rrg-check.is-disabled .rrg-check__box{background:var(--foundation-canvas);border-color:var(--foundation-elevated)}

/* ---------- icon button (nav, modal) ---------- */
.rrg-iconbtn{position:relative;display:inline-grid;place-items:center;width:44px;height:44px;flex:none;padding:0;border:0;border-radius:var(--Control);background:transparent;color:var(--text-secondary);text-decoration:none;cursor:pointer;transition:background-color .16s ease,color .16s ease}
.rrg-iconbtn:hover,.rrg-iconbtn.is-hover{background:var(--foundation-raised);color:var(--text-primary)}
.rrg-iconbtn:active,.rrg-iconbtn.is-active,.rrg-iconbtn.is-pressed{background:var(--foundation-elevated);color:var(--text-primary)}
.rrg-iconbtn:focus-visible,.rrg-iconbtn.is-focus{outline:2px solid var(--brand-active-blue);outline-offset:0}
.rrg-iconbtn:disabled{color:var(--text-muted);background:transparent;cursor:not-allowed}

/* ---------- 11. Navigation header ---------- */
.rrg-nav{position:relative;background:var(--foundation-canvas);border-bottom:1px solid var(--foundation-elevated);color:var(--text-primary)}
.rrg-nav__inner{position:relative;box-sizing:border-box;display:flex;align-items:center;gap:var(--Space-6);min-height:88px;padding:0 var(--Space-5)}
.rrg-nav__brand{flex:none;display:inline-flex;align-items:center;gap:var(--Space-3);min-height:44px;color:var(--text-primary);text-decoration:none;border-radius:var(--Control)}
.rrg-nav__brand:focus-visible{outline:2px solid var(--brand-active-blue);outline-offset:4px}
.rrg-nav__logo{position:relative;display:block;overflow:hidden;flex:none}
.rrg-nav__logo img{position:absolute;display:block;max-width:none;height:auto}
/* crops tuned to the transparent padding of the approved PNGs (logo.png 1080², logo_no_text.png 1200²) */
.rrg-nav__logo--full{height:64px;aspect-ratio:813 / 894}
.rrg-nav__logo--full img{width:132.841%;left:-17.589%;top:-4.586%}
.rrg-nav__logo--mark{height:40px;aspect-ratio:996 / 781}
.rrg-nav__logo--mark img{width:120.482%;left:-8.333%;top:-23.944%}
.rrg-nav.is-collapsed .rrg-nav__logo--full{height:52px}
/* condensed: height-constrained contexts (sticky / scrolled header) — the full lockup cannot fit, so the standalone mark is used */
.rrg-nav--condensed .rrg-nav__inner,.rrg-nav--condensed.is-collapsed .rrg-nav__inner{min-height:56px}
.rrg-nav--condensed .rrg-nav__logo--mark{height:32px}
.rrg-nav--condensed .rrg-nav__link.is-current::after{bottom:-6px}
.rrg-nav__wordmark{font-family:var(--rrg-sans);font-size:13px;line-height:1.23;font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.rrg-nav__primary{flex:1 1 auto;min-width:0}
.rrg-nav.is-collapsed .rrg-nav__primary{position:absolute;left:0;top:0;width:0;height:0;overflow:hidden;visibility:hidden;pointer-events:none}
.rrg-nav__list{width:max-content;display:flex;align-items:center;gap:var(--Space-1);margin:0;padding:0;list-style:none}
.rrg-nav__link{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 var(--Space-3);border-radius:var(--Control);font-family:var(--rrg-sans);font-size:13px;line-height:1.23;font-weight:600;letter-spacing:.04em;color:var(--text-secondary);text-decoration:none;white-space:nowrap;transition:color .16s ease,background-color .16s ease}
.rrg-nav__link:hover,.rrg-nav__link.is-hover{color:var(--text-primary);background:var(--foundation-surface)}
.rrg-nav__link:active,.rrg-nav__link.is-active{background:var(--foundation-raised)}
.rrg-nav__link:focus-visible,.rrg-nav__link.is-focus{outline:2px solid var(--brand-active-blue);outline-offset:0;color:var(--text-primary)}
.rrg-nav__link.is-current{color:var(--text-primary)}
.rrg-nav__link.is-current::after{content:"";position:absolute;left:var(--Space-3);right:var(--Space-3);bottom:-22px;height:2px;background:var(--brand-active-blue)}
.rrg-nav__actions{flex:none;display:flex;align-items:center;gap:var(--Space-1);margin-left:auto}
.rrg-nav:not(.is-collapsed) .rrg-nav__menu{display:none}
.rrg-nav__count{position:absolute;top:4px;right:2px;min-width:18px;height:18px;padding:0 var(--Space-1);box-sizing:border-box;display:grid;place-items:center;border-radius:var(--Round);background:var(--brand-royal-blue);color:var(--text-primary);font-family:var(--rrg-sans);font-size:11px;line-height:1;font-weight:600;line-height:1}
.rrg-nav.is-collapsed .rrg-nav__inner{gap:var(--Space-3);min-height:72px;padding:0 var(--Space-4)}
.rrg-nav__drawer{padding:var(--Space-2) var(--Space-4) var(--Space-4);border-top:1px solid var(--foundation-elevated);background:var(--foundation-canvas)}
.rrg-nav__drawer-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}
.rrg-nav__drawer-list .rrg-nav__link{display:flex;min-height:48px;font-family:var(--rrg-sans);font-size:16px;line-height:1.625;font-weight:400;color:var(--text-primary)}
.rrg-nav__drawer-list .rrg-nav__link.is-current::after{left:0;right:auto;top:12px;bottom:12px;width:2px;height:auto}

/* ---------- 12. Data table + row ---------- */
.rrg-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.rrg-table{width:100%;min-width:720px;border-collapse:collapse;border-spacing:0;font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;color:var(--text-primary)}
.rrg-row{transition:background-color .16s ease}
.rrg-cell{overflow-wrap:normal;word-break:normal;hyphens:manual;height:56px;padding:0 var(--Space-4);text-align:left;vertical-align:middle;font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;font-weight:400;color:var(--text-primary);border-bottom:1px solid var(--foundation-elevated)}
th.rrg-cell[scope="row"]{font-weight:500}
.rrg-cell--mono{font-family:var(--rrg-mono);font-size:12px;line-height:1.5;font-weight:500;letter-spacing:.03em;font-variant-numeric:tabular-nums}
.rrg-cell--end{text-align:right}
.rrg-cell--muted{color:var(--text-secondary)}
.rrg-row--head .rrg-cell{height:40px;font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);border-bottom-color:var(--text-muted)}
.rrg-row:not(.rrg-row--head):not(.rrg-row--note):hover,.rrg-row.is-hover{background:var(--foundation-surface)}
.rrg-row.is-interactive{cursor:pointer}
.rrg-row.is-interactive:active,.rrg-row.is-active{background:var(--foundation-raised)}
.rrg-row.is-interactive:focus-visible,.rrg-row.is-focus{outline:2px solid var(--brand-active-blue);outline-offset:-2px}
.rrg-row.is-selected,.rrg-row.is-selected:hover{background:var(--foundation-raised);outline:1px solid var(--brand-active-blue);outline-offset:-1px}
.rrg-row.is-disabled .rrg-cell{color:var(--text-muted)}
.rrg-row.is-disabled{cursor:default}
.rrg-row.is-error,.rrg-row.is-error:hover{background:var(--foundation-surface);outline:1px dashed var(--text-silver);outline-offset:-1px}
.rrg-row--note .rrg-cell{height:auto;padding:var(--Space-2) var(--Space-4) var(--Space-3);background:var(--foundation-surface)}
.rrg-row__note{display:flex;align-items:flex-start;gap:var(--Space-2);font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;color:var(--text-primary)}
.rrg-row__note .rrg-icon{margin-top:3px}

/* ---------- 13. Accordion ---------- */
.rrg-accordion{border-bottom:1px solid var(--foundation-elevated)}
.rrg-acc__item{border-top:1px solid var(--foundation-elevated)}
.rrg-acc__heading{margin:0}
.rrg-acc__trigger{box-sizing:border-box;display:flex;align-items:center;gap:var(--Space-4);width:100%;min-height:64px;margin:0;padding:var(--Space-3) var(--Space-4);border:0;border-radius:var(--Sharp);background:transparent;color:var(--text-primary);font-family:var(--rrg-sans);font-size:16px;line-height:1.625;font-weight:400;font-weight:500;text-align:left;cursor:pointer;transition:background-color .16s ease}
.rrg-acc__title{flex:1;min-width:0}
.rrg-acc__meta{font-family:var(--rrg-mono);font-size:12px;line-height:1.5;font-weight:500;letter-spacing:.03em;color:var(--text-muted);white-space:nowrap}
.rrg-acc__chevron{display:inline-flex;color:var(--text-secondary);transition:transform .2s ease,color .16s ease}
.rrg-acc__trigger:hover,.rrg-acc__item.is-hover .rrg-acc__trigger{background:var(--foundation-surface)}
.rrg-acc__trigger:hover .rrg-acc__chevron,.rrg-acc__item.is-hover .rrg-acc__chevron{color:var(--text-primary)}
.rrg-acc__trigger:active,.rrg-acc__item.is-active .rrg-acc__trigger{background:var(--foundation-raised)}
.rrg-acc__trigger:focus-visible,.rrg-acc__item.is-focus .rrg-acc__trigger{outline:2px solid var(--brand-active-blue);outline-offset:-2px}
.rrg-acc__item.is-open .rrg-acc__chevron{transform:rotate(180deg);color:var(--brand-active-blue)}
.rrg-acc__item.is-disabled .rrg-acc__trigger{color:var(--text-muted);background:transparent;cursor:not-allowed}
.rrg-acc__item.is-disabled .rrg-acc__chevron{color:var(--text-muted)}
.rrg-acc__content{padding:0 var(--Space-4) var(--Space-5);font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;color:var(--text-secondary)}
.rrg-acc__content>:first-child{margin-top:0}
.rrg-acc__content>:last-child{margin-bottom:0}

/* ---------- 14. Modal / dialog ---------- */
.rrg-modal-layer{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:var(--Space-5)}
.rrg-modal-layer--inline{position:relative;inset:auto;z-index:auto;min-height:100%;box-sizing:border-box}
.rrg-modal-layer--inline .rrg-modal{max-height:none}
.rrg-modal-backdrop{position:absolute;inset:0;background:var(--foundation-canvas);opacity:.82}
.rrg-modal{box-sizing:border-box;position:relative;display:flex;flex-direction:column;width:min(560px,100%);max-height:calc(100vh - var(--Space-7));overflow:auto;background:var(--foundation-elevated);color:var(--text-primary);border-radius:var(--Panel);box-shadow:var(--Hairline),var(--Overlay);outline:none}
.rrg-modal--lg{width:min(760px,100%)}
.rrg-modal__header{display:flex;align-items:flex-start;gap:var(--Space-4);padding:var(--Space-6) var(--Space-6) 0}
.rrg-modal__heading{display:flex;flex-direction:column;gap:var(--Space-2);flex:1;min-width:0}
.rrg-modal__title{margin:0;font-family:var(--rrg-sans);font-size:22px;line-height:1.27;font-weight:600;letter-spacing:-.01em}
.rrg-modal__desc{margin:0;font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;color:var(--text-secondary)}
.rrg-modal__close{margin:calc(var(--Space-2) * -1) calc(var(--Space-3) * -1) 0 0}
.rrg-modal__close:hover{background:var(--foundation-raised)}
.rrg-modal__body{padding:var(--Space-5) var(--Space-6);font-family:var(--rrg-sans);font-size:14px;line-height:1.57;font-weight:400;color:var(--text-secondary)}
.rrg-modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--Space-3);padding:var(--Space-4) var(--Space-6) var(--Space-6);border-top:1px solid var(--foundation-raised)}
.rrg-modal .rrg-notice--block{background:var(--foundation-raised)}

.rrg-cell--mono,.rrg-row--head .rrg-cell,.rrg-cell .rrg-badge,.rrg-cell .rrg-link--standalone{white-space:nowrap}
.rrg-link--standalone{white-space:nowrap}

/* ---------- 15–17. Product visuals ---------- */
.rrg-vis{position:relative;display:block;width:100%;max-width:100%;overflow:hidden;border-radius:inherit}
.rrg-vis__canvas{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .2s ease}
.rrg-vis.is-ready>.rrg-vis__canvas{opacity:1}
.rrg-vis__static{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;user-select:none;-webkit-user-drag:none}
.rrg-vis__placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--text-muted)}
.rrg-vis__note{position:absolute;left:var(--Space-2);bottom:var(--Space-2);padding:2px var(--Space-2);border-radius:var(--Round);background:var(--foundation-surface);color:var(--text-secondary);font-family:var(--rrg-sans);font-size:11px;line-height:1.36;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.rrg-vis__fallback-row{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;gap:var(--Space-4);padding:var(--Space-4)}
.rrg-vis__fallback-item{position:relative;flex:1 1 0;height:80%;max-width:30%}
.rrg-product-visual{position:relative;display:block;width:100%;max-width:100%;touch-action:pan-y}
.rrg-product-visual.is-drag{cursor:grab;touch-action:none}
.rrg-product-visual.is-drag:active{cursor:grabbing}
.rrg-product-visual:focus-visible{outline:2px solid var(--brand-active-blue);outline-offset:2px;border-radius:var(--Card)}
.rrg-product-visual>.rrg-vis{position:absolute;inset:0;height:100%}
.rrg-product-visual .rrg-vis__note{right:calc(40px + var(--Space-2));width:max-content;max-width:calc(100% - 40px - var(--Space-4))}
.rrg-vis__rotate{position:absolute;right:0;bottom:0;z-index:2;background:var(--foundation-surface);box-shadow:var(--Hairline)}
.rrg-vis__rotate[aria-pressed="true"]{color:var(--text-primary);background:var(--foundation-raised)}
.rrg-product__media--custom{padding:var(--Space-4)}
.rrg-product__media--custom>.rrg-product-visual{height:100%;width:auto;z-index:1}
@media (prefers-reduced-motion:reduce){.rrg-vis__canvas{transition:none}}
.rrg-product__media--bleed{display:block;aspect-ratio:auto;padding:0;background:none;box-shadow:none;cursor:default}
.rrg-product.is-linked .rrg-product__media--bleed{cursor:pointer}
.rrg-product__media--custom.rrg-product__media--bleed>.rrg-product-visual{width:100%;height:auto}
.rrg-product.is-unavailable .rrg-product__media--bleed .rrg-product-visual{opacity:.55}
.rrg-carousel{position:relative;min-width:0}
.rrg-carousel__head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--Space-4);margin-bottom:var(--Space-5)}
.rrg-carousel__title{margin:0;font-family:var(--rrg-sans);font-size:32px;line-height:1.2;font-weight:600;letter-spacing:-.015em;color:var(--text-primary)}
.rrg-carousel__controls{display:flex;flex:none;gap:var(--Space-1)}
.rrg-carousel__viewport{position:relative;overflow-x:hidden;overflow-x:clip;overflow-y:visible;padding:4px 0 12px;margin:-4px 0 -12px;touch-action:pan-y}
.rrg-carousel__track{position:relative;display:flex;align-items:stretch;gap:var(--Space-4);margin:0;padding:0;list-style:none;will-change:transform}
.rrg-carousel__item{display:flex;flex:0 0 var(--rrg-carousel-card,260px);min-width:0;margin:0;padding:0}
.rrg-carousel__item>*{flex:1;min-width:0}
.rrg-carousel:not(.is-ready) .rrg-carousel__track{visibility:hidden}
@media (max-width:479px){.rrg-carousel__title{font-size:24px;line-height:1.25}}
.rrg-product--offer{container-type:inline-size}
@container (max-width:320px){
  .rrg-product--offer .rrg-product__body{padding:var(--Space-4)}
  .rrg-product--offer .rrg-product__title{font-size:20px;line-height:1.3}
  .rrg-product--offer .rrg-product__price{font-size:22px}
  .rrg-product--offer .rrg-product__offer{column-gap:var(--Space-3)}
  .rrg-product--offer .rrg-product__coa{font-size:13px;gap:6px}
}

/* RRG Visual Direction 2.1 — scene atmosphere, editorial display, section rhythm.
   Gradients here describe illumination inside product scenes only; never a page-wide wash. */
:root{
--scene-field:#0a1015;
--scene-plane:#171d23;
--scene-plane-2:#1d252d;
--scene-key:rgb(255 255 255 / .085);
--scene-tint:rgb(24 111 175 / .2);
--display-editorial:clamp(56px,7.2vw,112px); /* @kind other */
--display-editorial-mobile:clamp(40px,11vw,56px); /* @kind other */
--sec-compact:clamp(24px,4vw,48px); /* @kind spacing */
--sec-standard:clamp(40px,7vw,96px); /* @kind spacing */
--sec-expansive:clamp(64px,10vw,160px); /* @kind spacing */
}
.rrg-scene{position:relative;isolation:isolate;overflow:hidden;background:var(--scene-field)}
.rrg-scene__light{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:var(--scene-intensity,1);background:radial-gradient(40% 60% at var(--scene-x,72%) 32%,var(--scene-key),transparent 72%),radial-gradient(24% 38% at calc(var(--scene-x,72%) + 7%) 50%,var(--scene-tint),transparent 70%)}
.rrg-scene__plane{position:absolute;left:0;right:0;bottom:0;height:var(--scene-floor,32%);z-index:-1;pointer-events:none;box-shadow:inset 0 1px 0 rgb(255 255 255 / .025);background:radial-gradient(44% 80% at var(--scene-x,72%) 0%,rgb(255 255 255 / calc(.05 * var(--scene-intensity,1))),transparent 70%),linear-gradient(180deg,rgb(23 29 35 / 0),var(--scene-plane) 42%,var(--scene-plane-2))}
.rrg-scene__stage{position:relative}
.rrg-scene--evidence .rrg-scene__stage{display:grid;grid-template-columns:minmax(0,5.5fr) minmax(0,4.5fr);gap:clamp(16px,3vw,40px);align-items:center}
@media (max-width:640px){.rrg-scene--evidence .rrg-scene__stage{grid-template-columns:minmax(0,1fr)}}
.rrg-scene__caption{font-family:var(--rrg-mono);font-size:12px;letter-spacing:.02em;color:var(--text-muted);text-align:center;margin:8px 0 0}
.rrg-display-editorial{font-family:var(--rrg-sans);font-size:var(--display-editorial);line-height:1.02;font-weight:600;letter-spacing:-.035em;text-wrap:balance}
@media (max-width:640px){.rrg-display-editorial{font-size:var(--display-editorial-mobile)}}

