/*
 * Gavorix public pages: legal documents, support, and the marketing parts that
 * render inside the theme.
 *
 * v2: tokens and type scale synced with theme/gavorix-hq/style.css. The two
 * files stay deliberately independent (documents must survive a theme swap),
 * so the tokens are duplicated, not imported. If you change one, change both.
 *
 * The documents keep their quiet register: someone reading a privacy policy is
 * worried or is an App Review engineer, and both want a clause, not a hero.
 * The marketing classes further down are the louder register for product and
 * about pages.
 */

/* CORE TOKENS: byte-identical with theme/gavorix-hq/style.css, enforced by
   bin/check-design-tokens.py. Register-local tokens go in the block below.
   See docs/standards/web-design-system.md. */
:root {
  --gvx-accent: #4f46e5;
  --gvx-accent-2: #22d3ee;
  --gvx-bg: #ffffff;
  --gvx-surface: #f8fafc;
  --gvx-surface-2: #eef2f7;
  --gvx-text: #0f172a;
  --gvx-muted: #5b6b81;
  --gvx-line: #e2e8f0;
  --gvx-radius: 14px;
  --gvx-radius-lg: 22px;

  /* fluid type scale */
  --fs-900: clamp(2.6rem, 6.5vw, 4.4rem);
  --fs-800: clamp(1.9rem, 4vw, 2.6rem);
  --fs-700: clamp(1.45rem, 2.6vw, 1.8rem);
  --fs-600: 1.16rem;
  --fs-500: 1.02rem;
  --fs-400: .95rem;
  --fs-300: .84rem;
  --fs-200: .74rem;

  --space-section: clamp(4.5rem, 9vw, 7.5rem);
  --wrap: 74rem;
}

/* Register-local. Documents cap their line length for reading; the marketing
   site has no equivalent, which is why this is not a core token. */
:root {
  --gvx-measure: 44rem;
}


*, *::before, *::after { box-sizing: border-box; }

body.gvx, .gvx {
  margin: 0;
  background: var(--gvx-bg);
  color: var(--gvx-text);
  font: 16px/1.68 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.gvx-skip {
  position: absolute; left: -9999px;
  background: var(--gvx-accent); color: #fff;
  padding: .7rem 1rem; border-radius: 0 0 var(--gvx-radius) 0; z-index: 100;
}
.gvx-skip:focus { left: 0; top: 0; }

/* ------------------------------------------------------------ shared chrome */
.gvx-top {
  position: sticky; top: 0; z-index: 40;
  background: color-mix(in srgb, var(--gvx-bg) 84%, transparent);
  backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid color-mix(in srgb, var(--gvx-line) 80%, transparent);
}
.gvx-top__inner {
  max-width: var(--wrap); margin: 0 auto; padding: .9rem 1.5rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
}
.gvx-brand { display: inline-flex; align-items: center; gap: .65rem; color: inherit; text-decoration: none; font-weight: 780; letter-spacing: -.02em; font-size: 1.05rem; }
/* Mirror of .site-brand__mark. radius 22% matches the rx in the SVG tile, so
   the box-shadow follows the artwork's own corners instead of cutting them. */
.gvx-brand__mark {
  width: 2.5rem; height: 2.5rem; border-radius: 22%; flex: none;
  background: url("../img/icon.svg") center / contain no-repeat;
  box-shadow: 0 4px 14px -6px color-mix(in srgb, var(--gvx-accent) 70%, transparent);
}
/* Header chrome is shared with the theme, so its geometry is pinned here rather
   than inherited. The two stylesheets carry different body leading (1.68 for
   long-form documents, 1.65 for the marketing site), which made the header a
   pixel taller on document pages than on theme pages. */
.gvx-appnav { display: flex; align-items: center; gap: .25rem; flex-wrap: wrap; line-height: 1.65; }
.gvx-appnav a {
  color: var(--gvx-muted); text-decoration: none;
  font-size: var(--fs-400); font-weight: 600;
  padding: .42rem .8rem; border-radius: 999px;
}
.gvx-appnav a:hover { color: var(--gvx-text); background: var(--gvx-surface); }
.gvx-appnav a.is-current { color: var(--gvx-accent); background: color-mix(in srgb, var(--gvx-accent) 12%, transparent); }
.gvx-appnav__sep { width: 1px; height: 1.1rem; background: var(--gvx-line); margin: 0 .35rem; }

/* ------------------------------------------------------------- app sub-nav
   One app's pages (product, privacy, support) all carry this bar in the same
   place, directly under the site header. Rendered from templates/parts/
   _app-nav.php in both registers. Position is fixed relative to the header
   rather than to each page's title, because the titles differ by register and
   only this is identical everywhere. */
.gvx-appbar { border-bottom: 1px solid var(--gvx-line); background: var(--gvx-surface); }
.gvx-appbar__inner {
  max-width: var(--wrap); margin: 0 auto; padding: .55rem 1.5rem;
  display: flex; align-items: center; gap: .25rem; flex-wrap: wrap; line-height: 1.65;
}
.gvx-appbar a {
  color: var(--gvx-muted); text-decoration: none;
  font-size: var(--fs-300); font-weight: 600;
  padding: .3rem .7rem; border-radius: 999px;
}
.gvx-appbar a:hover { color: var(--gvx-text); background: var(--gvx-bg); }
.gvx-appbar a.is-current { color: var(--gvx-accent); background: color-mix(in srgb, var(--gvx-accent) 12%, transparent); }
.gvx-appbar__name { font-weight: 750; color: var(--gvx-text); }
.gvx-appbar__sep { width: 1px; height: 1rem; background: var(--gvx-line); margin: 0 .5rem; }

/* buttons (shared) */
.gvx-cta, .btn {
  display: inline-flex; align-items: center; gap: .5rem;
  font-weight: 650; font-size: var(--fs-400); text-decoration: none;
  padding: .8rem 1.55rem; border-radius: 999px; border: 1px solid transparent;
  background: var(--gvx-accent); color: #fff;
  box-shadow: 0 10px 26px -12px color-mix(in srgb, var(--gvx-accent) 80%, transparent);
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease, color .16s ease, background .16s ease;
}
.gvx-cta:hover, .btn:hover { transform: translateY(-1px); box-shadow: 0 16px 34px -12px color-mix(in srgb, var(--gvx-accent) 85%, transparent); }
.gvx-cta--ghost { background: transparent; color: var(--gvx-text); border-color: var(--gvx-line); box-shadow: none; }
.gvx-cta--ghost:hover { border-color: var(--gvx-accent); color: var(--gvx-accent); box-shadow: none; }

/* ------------------------------------------------------- document layout */
.gvx-shell {
  max-width: var(--wrap); margin: 0 auto; padding: 2.5rem 1.5rem 5rem;
  display: grid; gap: 3rem; grid-template-columns: 1fr;
}
@media (min-width: 62rem) {
  .gvx-shell { grid-template-columns: 15rem minmax(0, var(--gvx-measure)); justify-content: center; }
}

.gvx-toc { display: none; }
@media (min-width: 62rem) {
  .gvx-toc { display: block; position: sticky; top: 5.5rem; align-self: start; max-height: calc(100vh - 8rem); overflow-y: auto; }
}
.gvx-toc__label {
  font-size: .68rem; font-weight: 800; letter-spacing: .09em;
  text-transform: uppercase; color: var(--gvx-muted); margin: 0 0 .75rem;
}
.gvx-toc nav { display: flex; flex-direction: column; gap: .1rem; border-left: 2px solid var(--gvx-line); }
.gvx-toc a {
  color: var(--gvx-muted); text-decoration: none; font-size: .875rem;
  padding: .3rem 0 .3rem .9rem; margin-left: -2px;
  border-left: 2px solid transparent; transition: color .15s, border-color .15s;
}
.gvx-toc a:hover { color: var(--gvx-text); }
.gvx-toc a.is-active { color: var(--gvx-accent); border-left-color: var(--gvx-accent); font-weight: 600; }

.gvx-doc { min-width: 0; }
/* No contents rail rendered (short documents like support): the doc is the
   shell's only child, and must not be poured into the 15rem rail column. */
.gvx-doc:only-child { grid-column: 1 / -1; width: 100%; max-width: var(--gvx-measure); justify-self: center; }
.gvx-doc__head { padding-bottom: 1.75rem; margin-bottom: .5rem; border-bottom: 1px solid var(--gvx-line); }
.gvx-doc h1 { font-size: var(--fs-800); line-height: 1.14; letter-spacing: -.026em; margin: 0 0 .6rem; }
.gvx-meta { color: var(--gvx-muted); font-size: .9rem; margin: 0; }

.gvx-doc section { scroll-margin-top: 5.5rem; }
.gvx-doc h2 { font-size: 1.2rem; letter-spacing: -.012em; margin: 2.75rem 0 .85rem; padding-top: .25rem; }
.gvx-doc p { margin: 0 0 1.05rem; }
.gvx-doc a { color: var(--gvx-accent); text-underline-offset: 2px; }

.gvx-list { margin: 0 0 1.1rem; padding-left: 1.2rem; }
.gvx-list li { margin-bottom: .5rem; }
.gvx-list--check { list-style: none; padding-left: 0; }
.gvx-list--check li { position: relative; padding-left: 1.6rem; }
.gvx-list--check li::before {
  content: "✓"; position: absolute; left: 0; top: -.05rem;
  color: var(--gvx-accent); font-weight: 700;
}

.gvx-note, .gvx-callout {
  background: var(--gvx-surface); border: 1px solid var(--gvx-line);
  border-left: 3px solid var(--gvx-accent);
  border-radius: 0 var(--gvx-radius) var(--gvx-radius) 0;
  padding: .85rem 1rem; margin: 0 0 1.1rem; font-size: .93rem;
}

.gvx-tablewrap { overflow-x: auto; margin: 0 0 1.4rem; border: 1px solid var(--gvx-line); border-radius: var(--gvx-radius); }
.gvx-doc table, .gvx table { border-collapse: collapse; width: 100%; min-width: 34rem; font-size: .9rem; }
.gvx-doc th, .gvx-doc td, .gvx th, .gvx td { text-align: left; vertical-align: top; padding: .7rem .85rem; border-bottom: 1px solid var(--gvx-line); }
.gvx-doc thead th, .gvx thead th { background: var(--gvx-surface); font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--gvx-muted); }
.gvx-doc tbody tr:last-child td, .gvx tbody tr:last-child td { border-bottom: 0; }

.gvx-scope {
  display: inline-block; margin-left: .4rem; padding: .1rem .45rem;
  font-size: .68rem; font-weight: 700; border-radius: 999px;
  background: color-mix(in srgb, var(--gvx-accent) 14%, transparent); color: var(--gvx-accent);
  white-space: nowrap;
}

.gvx-faq details {
  border: 1px solid var(--gvx-line); border-radius: var(--gvx-radius);
  padding: .3rem 1rem; margin-bottom: .6rem; background: var(--gvx-surface);
}
.gvx-faq summary { cursor: pointer; font-weight: 600; padding: .7rem 0; list-style: none; }
.gvx-faq summary::-webkit-details-marker { display: none; }
.gvx-faq summary::after { content: "+"; float: right; color: var(--gvx-muted); font-weight: 400; }
.gvx-faq details[open] summary::after { content: "−"; }
.gvx-faq details > div { padding-bottom: .6rem; }

/* --------------------------------------------------- document page footer */
.gvx-foot { border-top: 1px solid var(--gvx-line); background: var(--gvx-surface); padding: 2.6rem 1.5rem; font-size: var(--fs-400); }
.gvx-foot__grid { max-width: var(--wrap); margin: 0 auto; display: grid; gap: 2.2rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); text-align: left; align-items: start; }
.gvx-foot h4 { font-size: var(--fs-300); text-transform: uppercase; letter-spacing: .1em; color: var(--gvx-muted); margin: 0 0 .8rem; font-weight: 750; }
.gvx-foot ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.gvx-foot p { margin: 0 0 .5rem; color: var(--gvx-muted); }
.gvx-foot a { color: var(--gvx-muted); text-decoration: none; }
.gvx-foot a:hover { color: var(--gvx-text); }
.gvx-foot__base { max-width: var(--wrap); margin: 2.6rem auto 0; padding-top: 1.4rem; border-top: 1px solid var(--gvx-line); color: var(--gvx-muted); font-size: var(--fs-300); display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
/* Mirrors the theme footer: once the copyright line wraps, split alignment
   leaves the second row hanging left of centre. */
@media (max-width: 40rem) { .gvx-foot__base { justify-content: center; text-align: center; } }

/* ==========================================================================
   Marketing register: product and about pages. Louder than the documents,
   same system as the theme homepage. Still no invented numbers anywhere.
   ========================================================================== */

.gvx--product .gvx-shell, .gvx--about .gvx-shell { grid-template-columns: minmax(0, var(--wrap)); }
.gvx--product .gvx-doc__head, .gvx--about .gvx-doc__head { display: none; }

.gvx-mkt-wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 1.5rem; }

.gvx-eyebrow, .gvx-label {
  display: inline-flex; align-items: center; gap: .5rem;
  font-size: var(--fs-200); font-weight: 800; letter-spacing: .13em; text-transform: uppercase;
  color: var(--gvx-accent); margin: 0 0 1rem;
}
.gvx-eyebrow::before { content: ""; width: 1.6rem; height: 2px; border-radius: 2px; background: var(--gvx-accent); }

.gvx-hero { position: relative; overflow: clip; padding: clamp(3.5rem, 8vw, 6rem) 0 clamp(2.5rem, 6vw, 4.5rem); text-align: left; }
.gvx-hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    radial-gradient(52% 46% at 15% 5%, color-mix(in srgb, var(--gvx-accent) 12%, transparent), transparent 70%),
    radial-gradient(40% 42% at 90% 15%, color-mix(in srgb, var(--gvx-accent-2) 9%, transparent), transparent 70%);
}
.gvx-hero__grid { display: grid; gap: 3rem; align-items: center; grid-template-columns: 1fr; }
@media (min-width: 62rem) { .gvx-hero__grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); } }
.gvx-hero__title { font-size: var(--fs-900); font-weight: 820; letter-spacing: -.042em; line-height: 1.02; text-wrap: balance; margin: 0 0 1.3rem; }
.gvx-hero__sub { font-size: clamp(1.05rem, 2vw, 1.24rem); line-height: 1.6; color: var(--gvx-muted); max-width: 34rem; margin: 0 0 2rem; text-wrap: pretty; }
.gvx-hero__actions { display: flex; gap: .8rem; flex-wrap: wrap; align-items: center; }
.gvx-hero__note { margin: 1rem 0 0; font-size: var(--fs-300); color: var(--gvx-muted); }
.gvx-hero__visual { display: grid; place-items: center; }

/* device mockup, shared with the theme by duplication (independence rule) */
.phone {
  width: min(17.5rem, 74vw); aspect-ratio: 9 / 18.6; border-radius: 2.6rem; position: relative;
  background: linear-gradient(160deg, color-mix(in srgb, var(--gvx-surface) 92%, transparent), var(--gvx-bg));
  border: 1px solid var(--gvx-line);
  box-shadow:
    0 40px 80px -38px color-mix(in srgb, var(--gvx-accent) 38%, transparent),
    0 24px 50px -30px rgb(2 6 23 / .35),
    inset 0 0 0 6px color-mix(in srgb, var(--gvx-bg) 70%, var(--gvx-line));
  transform: rotate(4deg);
}
.phone::before {
  content: ""; position: absolute; top: .8rem; left: 50%; translate: -50% 0;
  width: 34%; height: .9rem; border-radius: 999px;
  background: color-mix(in srgb, var(--gvx-text) 12%, var(--gvx-surface));
}
.phone__screen { position: absolute; inset: 2rem .9rem .9rem; border-radius: 1.8rem; overflow: hidden; background: var(--gvx-surface); }
.phone__screen svg { width: 100%; height: 100%; display: block; }
.route-line { fill: none; stroke: var(--gvx-accent); stroke-width: 3.2; stroke-linecap: round; stroke-dasharray: 6 9; opacity: .95; }
.route-grid { stroke: color-mix(in srgb, var(--gvx-muted) 26%, transparent); stroke-width: 1; }
.route-stop { fill: var(--gvx-bg); stroke: var(--gvx-accent); stroke-width: 3; }
.route-stop--end { fill: var(--gvx-accent); }
.tile { fill: color-mix(in srgb, var(--gvx-muted) 16%, transparent); }
.tile--accent { fill: var(--gvx-accent); }
.tile--soft { fill: color-mix(in srgb, var(--gvx-accent) 30%, transparent); }

.gvx-proof {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 1rem;
  padding: 1.5rem; margin: 0 0 1rem;
  background: var(--gvx-surface); border: 1px solid var(--gvx-line); border-radius: var(--gvx-radius);
  text-align: center;
}
.gvx-proof strong { display: block; font-size: 1.6rem; letter-spacing: -.02em; }
.gvx-proof span { font-size: .82rem; color: var(--gvx-muted); }

.gvx-block { padding: var(--space-section) 0; border-top: 1px solid var(--gvx-line); }
.gvx-block h3 { font-size: var(--fs-800); letter-spacing: -.028em; margin: 0 0 .8rem; }
.gvx-lead { color: var(--gvx-muted); max-width: 44rem; margin: 0 0 2.2rem; font-size: var(--fs-600); line-height: 1.6; }

.gvx-compare th.is-ours, .gvx-compare td.is-ours {
  background: color-mix(in srgb, var(--gvx-accent) 7%, transparent);
  font-weight: 650;
}
.gvx-compare thead th.is-ours { color: var(--gvx-accent); }
.gvx-compare tbody th { font-weight: 600; background: var(--gvx-surface); }

.gvx-pillars { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); }
.gvx-pillars article {
  position: relative; padding: 1.6rem; border: 1px solid var(--gvx-line);
  border-radius: var(--gvx-radius); background: var(--gvx-bg); overflow: hidden;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.gvx-pillars article::after {
  content: ""; position: absolute; inset: 0 0 auto; height: 3px;
  background: linear-gradient(90deg, var(--gvx-accent), color-mix(in srgb, var(--gvx-accent) 45%, var(--gvx-accent-2)));
  opacity: 0; transition: opacity .18s ease;
}
.gvx-pillars article:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--gvx-accent) 55%, var(--gvx-line)); }
.gvx-pillars article:hover::after { opacity: 1; }
.gvx-pillars h4 { margin: 0 0 .45rem; font-size: var(--fs-600); }
.gvx-pillars p { margin: 0; font-size: var(--fs-400); color: var(--gvx-muted); line-height: 1.6; }

.gvx-plans { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); }
.gvx-plans article {
  position: relative; padding: 1.8rem; border-radius: var(--gvx-radius);
  border: 1px solid var(--gvx-line); background: var(--gvx-bg);
}
.gvx-plans article.is-featured {
  border-color: var(--gvx-accent);
  box-shadow: 0 0 0 1px var(--gvx-accent), 0 14px 34px -20px color-mix(in srgb, var(--gvx-accent) 60%, transparent);
}
.gvx-plan__badge {
  position: absolute; top: -.62rem; left: 1.5rem;
  background: var(--gvx-accent); color: #fff; font-size: .68rem; font-weight: 800;
  letter-spacing: .06em; text-transform: uppercase; padding: .2rem .6rem; border-radius: 999px;
}
.gvx-plans h4 { margin: 0 0 .3rem; font-size: 1rem; }
.gvx-plan__price { font-size: 1.7rem; font-weight: 750; letter-spacing: -.02em; margin: 0 0 .9rem; }
.gvx-plans ul { list-style: none; margin: 0; padding: 0; font-size: .9rem; }
.gvx-plans li { padding-left: 1.4rem; position: relative; margin-bottom: .45rem; color: var(--gvx-muted); }
.gvx-plans li::before { content: "✓"; position: absolute; left: 0; color: var(--gvx-accent); font-weight: 700; }
.gvx-fineprint { margin: 1.1rem 0 0; font-size: .82rem; color: var(--gvx-muted); }


@media print {
  .gvx-top, .gvx-toc, .gvx-skip { display: none; }
  body.gvx { font-size: 11pt; }
  .gvx-shell { display: block; padding: 0; max-width: none; }
  .gvx-doc a { color: inherit; text-decoration: underline; }
  .gvx-tablewrap { overflow: visible; }
  .gvx-doc table { min-width: 0; }
}

@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .phone { transform: none; }
}

/* ------------------------------------------------------------- portfolio
   auto-FIT is the scaling mechanism: empty tracks collapse, so one app is a
   single full-width card and ten apps are a scannable grid, with no template
   branch on the count. */
.gvx-hero--tight { padding-bottom: 1rem; }
/* min() on the track floor: a bare minmax(21rem, ...) demands 336px, which a
   320px phone cannot give, and the card overflowed the viewport by 40px. */
.gvx-folio { display: grid; gap: 1.2rem; grid-template-columns: repeat(auto-fit, minmax(min(21rem, 100%), 1fr)); }
.gvx-folio__card {
  position: relative; display: flex; flex-direction: column; gap: .55rem;
  padding: 2rem; border: 1px solid var(--gvx-line); border-radius: var(--gvx-radius);
  background: var(--gvx-bg); overflow: hidden;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.gvx-folio__card::after {
  content: ""; position: absolute; inset: 0 0 auto; height: 3px;
  background: linear-gradient(90deg, var(--gvx-accent), color-mix(in srgb, var(--gvx-accent) 45%, var(--gvx-accent-2)));
}
.gvx-folio__card:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--gvx-accent) 55%, var(--gvx-line)); box-shadow: 0 18px 40px -26px color-mix(in srgb, var(--gvx-accent) 65%, transparent); }
.gvx-folio__kicker { font-size: var(--fs-200); font-weight: 800; letter-spacing: .11em; text-transform: uppercase; color: var(--gvx-accent); margin: 0; }
.gvx-folio__card h2 { font-size: 1.4rem; letter-spacing: -.02em; margin: 0; }
.gvx-folio__sub { color: var(--gvx-muted); font-size: var(--fs-400); line-height: 1.6; margin: 0 0 .4rem; max-width: 40rem; }
.gvx-folio__points { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: .45rem; }
.gvx-folio__points li { position: relative; padding-left: 1.6rem; font-size: var(--fs-400); }
.gvx-folio__points li::before { content: "✓"; position: absolute; left: 0; color: var(--gvx-accent); font-weight: 700; }
.gvx-folio__actions { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: auto; }
.gvx-cta--sm { padding: .55rem 1.15rem; font-size: var(--fs-300); }


/* Motion for marketing pages: the dashed route marches, sections reveal.
   Same guards as the theme: no hidden state without html.js, and everything
   stops under prefers-reduced-motion. */
@keyframes gvx-march { to { stroke-dashoffset: -30; } }
.route-line { animation: gvx-march 2.6s linear infinite; }

html.js .reveal { opacity: 0; transform: translateY(18px); transition: opacity .55s ease, transform .55s ease; }
html.js .reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .route-line { animation: none; }
  html.js .reveal { opacity: 1; transform: none; }
}

/* Header parity with the theme chrome, and document-local tabs under the title. */
.gvx-cta--nav { padding: .5rem 1.05rem; font-size: var(--fs-400); margin-left: .35rem; }
/* .gvx-appnav a outranks .gvx-cta on specificity, which turned the header's
   Contact button gray with a pill hover on document pages while the theme's
   stayed white. The theme carries the same override for the same reason. */
.gvx-appnav .gvx-cta { color: #fff; padding: .5rem 1.05rem; font-weight: 650; }
.gvx-appnav .gvx-cta:hover { color: #fff; background: var(--gvx-accent); }
