/* GR network benchmarks public reading owner — scoped to main.gr-network-benchmarks on the
   Central-only canonical page greenreach-central/public/network-benchmarks.html (Light Engine
   serves the baked Central bytes; this page has no second public-tree twin).

   Scope: reading text sizes, refusal/retry states, long-identity containment, target sizes and
   the shared focus ring. The site header, its navigation contract and the page palette stay in
   the page's own <style> — nothing here reaches them.

   No new token: the focus ring is the shared --border-focus fallback --gr-operator-border-focus
   from /styles/marketing-tokens.css, which the page links directly before this sheet. */

.gr-network-benchmarks {
  box-sizing: border-box;
  height: 100vh;
  height: 100dvh;
  max-width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  font-size: max(1rem, 16px);
}

/* Every owned reading surface at least 16px: headings, labels, units, cohort bands, as-of
   stamp, how-to-read, floor panel, tally, error copy and method notes. */
.gr-network-benchmarks :is(h1, h2, h3, p, div, span, b, small, strong, em, a, button, li) {
  font-size: max(1rem, 16px);
}

/* Restore the original hierarchy above the floor where the page's own selectors would
   otherwise tie with the rule above. */
.gr-network-benchmarks .hero h1 { font-size: 2.75rem; }
.gr-network-benchmarks .hero p.sub { font-size: 1.25rem; }
.gr-network-benchmarks :is(.bench-head, .empty, .next) h2 { font-size: 1.5rem; }
.gr-network-benchmarks :is(.floor, .error) h2 { font-size: 1.25rem; }
.gr-network-benchmarks .tally .t b { font-size: 1.5rem; }
.gr-network-benchmarks .row .crop { font-size: 1.125rem; }
.gr-network-benchmarks .row .metric .value { font-size: 1.25rem; }

/* Secondary reading text the page sets below 16px through higher-specificity selectors. */
.gr-network-benchmarks .row .metric .label,
.gr-network-benchmarks .row .metric .value small,
.gr-network-benchmarks .row .metric .value.none,
.gr-network-benchmarks .bench-head .asof,
.gr-network-benchmarks .tally .t,
.gr-network-benchmarks .empty p.muted {
  font-size: max(1rem, 16px);
}

/* Reading never clips or overflows: long unbroken identities wrap inside the owner. */
.gr-network-benchmarks :is(.row, .crop, .metric, .cohort, .asof, .tally, .empty, .error, .method, .how, .floor, .bench-head) {
  overflow-wrap: anywhere;
  min-width: 0;
}

/* Native retry control, rendered with the honest refusal state: a real button that
   performs exactly one new public read per click. */
.gr-network-benchmarks .nb-retry {
  display: inline-block;
  margin-top: 12px;
  min-height: 44px;
  min-width: 44px;
  padding: 10px 22px;
  border: 1px solid rgba(200, 60, 40, 0.3);
  border-radius: 980px;
  background: var(--surface);
  color: var(--primary-dark);
  font-weight: 600;
  cursor: pointer;
}

.gr-network-benchmarks :is(a, button) { min-height: 44px; }

/* Legacy transition:all must not animate a newly focused ring from the UA3px
   default before the canonical2px ring is visible. */
.gr-network-benchmarks[tabindex="0"],
.gr-network-benchmarks :is(button, a, [tabindex="0"]) {
  transition-property: background-color, border-color, color, box-shadow, opacity, transform;
}

/* Shared 2px focus ring — the canonical token, not a copied value. */
.gr-network-benchmarks[tabindex="0"]:focus-visible,
.gr-network-benchmarks :is(button, a, [tabindex="0"]):focus-visible {
  outline: 2px solid var(--border-focus, var(--gr-operator-border-focus)) !important;
  outline-width: 2px !important;
  outline-style: solid !important;
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .gr-network-benchmarks,
  .gr-network-benchmarks * {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
