/* garnet-experience.css — the interactive homepage (gxx-). Built on tokens.css.
   Deliberately NO backdrop-filter (it janks over the animated crystal). Solid +
   gradient panels instead. Dark, crimson, big type, minimal copy. */

/* the crystal shows through: void on <html> (set in garnet-app.css), body transparent */
body.gxx { background: transparent; }
#garnet-bg { position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background: #050505 radial-gradient(120% 90% at 70% 15%, rgba(220,20,60,0.10), transparent 60%); }

.gxx { --edge: clamp(1.1rem, 5vw, 5rem); --maxw: 1180px; }
.gxx ::selection { background: rgba(var(--accent-rgb),0.4); color: #fff; }

/* ── nav ─────────────────────────────────────────────────────────────── */
.gxx-nav { position: sticky; top: 0; z-index: 60; background: rgba(8,9,12,0.82); border-bottom: 1px solid var(--gx-line); }
.gxx-nav__row { max-width: var(--maxw); margin-inline: auto; display: flex; align-items: center; gap: 1.25rem; padding: 0.75rem var(--edge); min-height: 3.4rem; }
.gxx-nav__links { display: flex; align-items: center; gap: 1.35rem; margin-left: auto; }
.gxx-nav__links a { color: var(--paper-1); text-decoration: none; font-size: 0.92rem; }
.gxx-nav__links a:hover { color: var(--paper-0); }
.gxx-nav__links a.gx-btn { color: #fff; }
@media (max-width: 720px) {
  .gxx-nav__row { flex-wrap: wrap; gap: 0.6rem 0.9rem; }
  .gxx-nav__links { gap: 0.95rem; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; }
  .gxx-nav__links a { font-size: 0.86rem; min-height: 44px; display: inline-flex; align-items: center; }
  .gxx-footer__nav a { min-height: 44px; display: inline-flex; align-items: center; }
}

/* ── hero / console ──────────────────────────────────────────────────── */
.gxx-hero { position: relative; min-height: 92vh; display: flex; align-items: center;
  padding: clamp(3rem,10vh,7rem) var(--edge) 4rem; overflow: hidden; }
.gxx-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(90% 70% at 30% 40%, rgba(6,7,10,0.72) 0%, rgba(6,7,10,0.45) 40%, rgba(6,7,10,0) 72%); }
.gxx-hero__inner { max-width: var(--maxw); width: 100%; margin-inline: auto; }
.gxx-kicker { font-family: var(--font-mono); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--accent-lift); display: inline-flex; align-items: center; gap: 0.6em; margin: 0 0 1.5rem; }
.gxx-live { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 0 var(--accent-glow); animation: gxx-pulse 2.4s ease-out infinite; }
@keyframes gxx-pulse { 0%{box-shadow:0 0 0 0 rgba(var(--accent-rgb),0.55)} 70%,100%{box-shadow:0 0 0 12px rgba(var(--accent-rgb),0)} }
.gxx-h1 { font-family: var(--gx-font-display); font-weight: 700; line-height: 1.02; letter-spacing: -0.01em;
  font-size: clamp(2.6rem, 8vw, 6.2rem); margin: 0 0 1.25rem; color: var(--paper-0); text-wrap: balance; }
.gxx-lede { font-size: clamp(1.05rem, 1.8vw, 1.4rem); color: var(--paper-1); max-width: 34ch; margin: 0 0 2rem; line-height: 1.5; }
.gxx-cta-row { display: flex; flex-wrap: wrap; gap: 0.8rem; margin-bottom: 3rem; }
.gxx-btn-lg { font-size: 1.02rem; padding: 0.95em 1.6em; }
.gxx-console { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px,1fr)); gap: 1px;
  margin: 0; padding: 0; border: 1px solid var(--gx-line); border-radius: 14px; overflow: hidden; background: var(--gx-line); max-width: 900px; }
.gxx-console li { background: rgba(10,11,14,0.72); padding: 0.85rem 1.1rem; display: flex; flex-direction: column; gap: 0.25rem; }
.gxx-console__k { font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--paper-2); }
.gxx-console__v { font-family: var(--font-mono); font-size: 0.9rem; color: var(--paper-0); font-weight: 700; }
.gxx-console__v.gxx-ok { color: var(--accent-lift); }

/* ── The Sovereign Core — living status widget (replaces .gxx-console) ── */
/* ── The Garnet — live WebGL crystal centerpiece ─────────────────────── */
.gxx-garnet { position: relative; margin: 1.6rem 0 0; max-width: 900px; aspect-ratio: 16 / 10; min-height: 300px;
  border: 1px solid var(--gx-line); border-radius: 16px; overflow: hidden; isolation: isolate;
  background: radial-gradient(90% 80% at 50% 42%, rgba(216,31,54,0.10), transparent 62%), var(--ink-0, #08090c); }
.gxx-garnet__cv { position: absolute; inset: 0; width: 100%; height: 100%; display: block; z-index: 0; }
.gxx-garnet__glass { position: absolute; left: 50%; bottom: 1.1rem; transform: translateX(-50%); z-index: 2;
  display: flex; flex-direction: column; align-items: center; gap: 0.28rem; padding: 0.55rem 1.5rem; text-align: center;
  border-radius: 999px; border: 1px solid rgba(255,255,255,0.10); background: rgba(5,4,9,0.66); backdrop-filter: blur(11px);
  -webkit-backdrop-filter: blur(11px); pointer-events: none; max-width: 92%; box-shadow: 0 6px 30px rgba(0,0,0,0.5); }
/* cinematic vignette + fine grain over the scene (style) */
.gxx-garnet::after { content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none; border-radius: inherit;
  background:
    radial-gradient(120% 100% at 50% 45%, transparent 52%, rgba(0,0,0,0.55) 100%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
  mix-blend-mode: soft-light; }
.gxx-garnet__cap { margin: 0; font-family: var(--font-display, 'Chakra Petch', system-ui, sans-serif);
  font-weight: 700; font-size: 1.18rem; letter-spacing: 0.06em; color: var(--paper-0, #f4f4f6);
  text-shadow: 0 2px 22px rgba(216,31,54,0.5); }
.gxx-garnet__sub { margin: 0; font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.06em;
  color: var(--paper-2, #a7a9b4); min-height: 1em; transition: opacity 0.32s ease; }
.gxx-garnet__tilt { position: absolute; top: 0.85rem; right: 0.85rem; z-index: 3; cursor: pointer;
  font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--paper-1, #cfd0d8);
  padding: 0.34rem 0.7rem; border-radius: 999px; border: 1px solid rgba(255,255,255,0.14); background: rgba(8,8,12,0.5);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.gxx-garnet__tilt:hover { border-color: rgba(216,31,54,0.5); color: var(--paper-0, #fff); }
/* CSS fallback gem when WebGL is unavailable */
.gxx-garnet--fallback .gxx-garnet__cv { display: none; }
.gxx-garnet--fallback::before { content: ''; position: absolute; left: 50%; top: 44%; width: 42%; aspect-ratio: 1;
  transform: translate(-50%, -50%) rotate(45deg); z-index: 1; border-radius: 12%;
  background: conic-gradient(from 45deg, #ff2d4b, #7a0d1f, #d81f36, #4a0812, #ff2d4b);
  box-shadow: 0 0 60px 8px rgba(216,31,54,0.45), inset 0 0 40px rgba(0,0,0,0.55); }
@media (prefers-reduced-motion: reduce) { .gxx-garnet__sub { transition: none; } }
@media (max-width: 560px) { .gxx-garnet { aspect-ratio: 4 / 5; min-height: 340px; }
  .gxx-garnet__cap { font-size: 1.05rem; } .gxx-garnet__sub { font-size: 0.6rem; } }

/* ── Library showreel — a clip generated locally by Garnet ── */
.gxx-showreel { margin: 0 auto 2.2rem; max-width: 1000px; }
.gxx-showreel__vid { width: 100%; display: block; border-radius: 16px; border: 1px solid var(--gx-line); background: #000;
  box-shadow: 0 40px 100px -40px rgba(216,31,54,0.38), 0 0 0 1px rgba(255,255,255,0.02) inset; }
.gxx-showreel__cap { text-align: center; font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--paper-2); margin: 0.9rem 0 0; }
.gxx-showreel__cap b { color: var(--accent-lift); font-weight: 700; }

.gxx-scrollcue { position: absolute; left: 50%; bottom: 1.2rem; transform: translateX(-50%); font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--paper-2); text-decoration: none; }
@media (prefers-reduced-motion: reduce) { .gxx-live { animation: none; } }

/* ── section scaffold ────────────────────────────────────────────────── */
.gxx-sec { max-width: var(--maxw); margin-inline: auto; padding: clamp(3.5rem,9vw,7rem) var(--edge); }
.gxx-sec--band { max-width: none; background: linear-gradient(180deg, rgba(12,8,11,0.55), rgba(8,9,12,0.75)); border-block: 1px solid var(--gx-line); }
.gxx-sec--band > * { max-width: var(--maxw); margin-inline: auto; }
.gxx-sec__head { margin-bottom: 2.25rem; }
.gxx-eyebrow { font-family: var(--font-mono); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent-lift); margin: 0 0 0.75rem; }
.gxx-h2 { font-family: var(--gx-font-display); font-weight: 700; line-height: 1.08; font-size: clamp(1.8rem, 4.4vw, 3rem); margin: 0 0 0.6rem; color: var(--paper-0); text-wrap: balance; }
.gxx-sub { font-size: clamp(1rem,1.4vw,1.18rem); color: var(--paper-1); max-width: 52ch; margin: 0.4rem 0 0; line-height: 1.55; }

/* ── chat demo ───────────────────────────────────────────────────────── */
.gxx-chat { border: 1px solid var(--gx-line); border-radius: 18px; background: rgba(9,10,13,0.9); overflow: hidden; box-shadow: 0 40px 120px -60px rgba(0,0,0,0.9); }

/* ── mesh ────────────────────────────────────────────────────────────── */
.gxx-mesh { position: relative; height: clamp(320px, 46vw, 560px); border: 1px solid var(--gx-line); border-radius: 18px; overflow: hidden; background: #070809; margin-top: 1.5rem; }

/* ── library ─────────────────────────────────────────────────────────── */
.gxx-library { margin-top: 1.75rem; }

/* ── confidentiality proof ───────────────────────────────────────────── */
.gxx-proof { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(1.5rem,4vw,3.5rem); align-items: center; }
@media (max-width: 780px) { .gxx-proof { grid-template-columns: 1fr; } }
.gxx-proof__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 1px; border: 1px solid var(--gx-line); border-radius: 14px; overflow: hidden; background: var(--gx-line); }
.gxx-proof__grid li { background: rgba(10,11,14,0.8); padding: 1.1rem 1.15rem; font-size: 0.95rem; color: var(--paper-0); display: flex; align-items: flex-start; gap: 0.55rem; }
.gxx-proof__grid li::before { content: ""; flex: 0 0 auto; width: 7px; height: 7px; margin-top: 0.45em; border-radius: 2px; background: var(--accent); box-shadow: 0 0 8px var(--accent-glow); }

/* ── build tiers ─────────────────────────────────────────────────────── */
.gxx-tiers { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 720px) { .gxx-tiers { grid-template-columns: 1fr; } }
.gxx-tier { display: flex; flex-direction: column; gap: 0.5rem; text-decoration: none; padding: clamp(1.5rem,3vw,2.25rem); border: 1px solid var(--gx-line); border-radius: 18px; background: rgba(10,11,14,0.72); transition: border-color 180ms, transform 180ms, background 180ms; }
.gxx-tier:hover { border-color: var(--accent); transform: translateY(-2px); background: rgba(20,10,14,0.8); }
.gxx-tier--ent { background: linear-gradient(160deg, rgba(30,10,16,0.6), rgba(10,11,14,0.72)); }
.gxx-tier__who { font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--paper-2); }
.gxx-tier__price { font-family: var(--gx-font-display); font-weight: 700; font-size: clamp(1.6rem,3.5vw,2.4rem); color: var(--paper-0); }
.gxx-tier__desc { color: var(--paper-1); font-size: 0.98rem; line-height: 1.5; flex: 1; }
.gxx-tier__cta { color: var(--accent-lift); font-weight: 600; font-size: 0.95rem; }

/* ── footer ──────────────────────────────────────────────────────────── */
.gxx-footer { border-top: 1px solid var(--gx-line); background: rgba(6,7,10,0.9); }
.gxx-footer__row { max-width: var(--maxw); margin-inline: auto; display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem; padding: 2rem var(--edge) 1rem; }
.gxx-footer__nav { display: flex; flex-wrap: wrap; gap: 1.1rem; margin-left: auto; }
.gxx-footer__nav a { color: var(--paper-1); text-decoration: none; font-size: 0.9rem; }
.gxx-footer__nav a:hover { color: var(--accent-lift); }
.gxx-footer .gxx-footer__legal { max-width: var(--maxw); margin: 0 auto; padding: 0.5rem var(--edge) 2.25rem; color: var(--paper-2); font-size: 0.8rem; line-height: 1.6; }
.gxx-seo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ── chat demo (gxc-) ────────────────────────────────────────────────── */
.gxc-bar { display: flex; align-items: center; gap: 0.6rem; padding: 0.7rem 0.9rem; border-bottom: 1px solid var(--gx-line); background: rgba(14,16,22,0.9); }
.gxc-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px var(--accent-glow); flex: 0 0 auto; }
.gxc-title { font-family: var(--font-mono); font-weight: 700; font-size: 0.82rem; color: var(--paper-0); }
.gxc-host { font-family: var(--font-mono); font-size: 0.68rem; color: var(--paper-2); }
.gxc-unplug { margin-left: auto; font: 600 0.72rem var(--font-mono); color: var(--paper-0); background: rgba(var(--accent-rgb),0.14); border: 1px solid var(--accent-rim); border-radius: 999px; padding: 0.4em 0.85em; cursor: pointer; transition: background 160ms, border-color 160ms; }
.gxc-unplug:hover { background: rgba(var(--accent-rgb),0.26); border-color: var(--accent); }
.gxc-log { padding: 1.1rem; min-height: 320px; max-height: 440px; overflow-y: auto; display: flex; flex-direction: column; gap: 0.85rem; }
.gxc-msg { max-width: 82%; display: flex; flex-direction: column; gap: 0.2rem; animation: gxc-in 260ms ease-out; }
@keyframes gxc-in { from { opacity: 0; transform: translateY(6px); } }
.gxc-msg--you { align-self: flex-end; align-items: flex-end; }
.gxc-who { font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--paper-2); }
.gxc-body { font-size: 0.98rem; line-height: 1.55; color: var(--paper-0); padding: 0.7rem 0.95rem; border-radius: 14px; border: 1px solid var(--gx-line); }
.gxc-msg--you .gxc-body { background: rgba(var(--accent-rgb),0.16); border-color: var(--accent-rim); }
.gxc-msg--ai .gxc-body { background: rgba(255,255,255,0.03); }
.gxc-msg--sys { align-self: center; max-width: 100%; }
.gxc-msg--sys .gxc-body { border: 0; background: none; color: var(--accent-lift); font-family: var(--font-mono); font-size: 0.78rem; letter-spacing: 0.05em; text-align: center; }
.gxc-thinking .gxc-body::after { content: "▍"; animation: gxc-blink 900ms steps(2) infinite; color: var(--accent-lift); }
@keyframes gxc-blink { 50% { opacity: 0; } }
.gxc-foot { padding: 0.6rem 0.9rem 0.85rem; border-top: 1px solid var(--gx-line); display: flex; flex-direction: column; gap: 0.55rem; }
.gxc-hint { font-size: 0.72rem; color: var(--paper-2); }
.gxc-hint b { color: var(--accent-lift); font-weight: 700; }
.gxc-live { display: flex; gap: 0.5rem; }
.gxc-live[hidden] { display: none; }
.gxc-input { flex: 1 1 auto; min-width: 0; font-family: inherit; font-size: 0.92rem; color: var(--paper-0); background: rgba(255,255,255,0.04); border: 1px solid var(--gx-line); border-radius: 12px; padding: 0.62rem 0.8rem; }
.gxc-input::placeholder { color: var(--paper-2); }
.gxc-input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent-rim); }
.gxc-send { flex: 0 0 auto; font: 700 0.78rem var(--font-mono); color: var(--paper-0); background: rgba(var(--accent-rgb),0.2); border: 1px solid var(--accent-rim); border-radius: 12px; padding: 0.62rem 1rem; cursor: pointer; transition: background 160ms, border-color 160ms; }
.gxc-send:hover { background: rgba(var(--accent-rgb),0.34); border-color: var(--accent); }
.gxc-send:disabled, .gxc-input:disabled { opacity: 0.5; cursor: default; }
.gxc-offline { box-shadow: 0 0 0 1px var(--accent-rim), 0 40px 120px -60px rgba(220,20,60,0.4); }

/* ── mesh tooltip ────────────────────────────────────────────────────── */
.gxx-mesh__tip { position: absolute; transform: translate(-50%, -100%); background: rgba(10,11,14,0.95); border: 1px solid var(--accent-rim); color: var(--paper-0); font: 600 0.72rem var(--font-mono); padding: 0.3em 0.6em; border-radius: 8px; pointer-events: none; white-space: nowrap; }

/* ── library (gxl-) ──────────────────────────────────────────────────── */
.gxl-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1.5rem; }
.gxl-chip { font: 600 0.8rem var(--gx-font-body); color: var(--paper-1); background: rgba(255,255,255,0.03); border: 1px solid var(--gx-line); border-radius: 999px; padding: 0.45em 1em; cursor: pointer; transition: all 160ms; }
.gxl-chip:hover { color: var(--paper-0); border-color: var(--accent-rim); }
.gxl-chip.is-on { color: #fff; background: var(--gx-cta); border-color: transparent; }
.gxl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem; }
.gxl-card { border: 1px solid var(--gx-line); border-radius: 16px; overflow: hidden; background: rgba(10,11,14,0.72); transition: border-color 180ms, transform 180ms; }
.gxl-card:hover { border-color: var(--accent-rim); transform: translateY(-3px); }
.gxl-media { aspect-ratio: 4 / 3; overflow: hidden; position: relative; background: #0c0d11; display: flex; align-items: center; justify-content: center; }
.gxl-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gxl-media--video video { width: 100%; height: 100%; object-fit: cover; display: block; }
.gxl-media--fallback { background: radial-gradient(120% 120% at 30% 20%, rgba(220,20,60,0.35), #0c0d11 70%); }
.gxl-media--code pre { margin: 0; padding: 1rem; font: 500 0.72rem/1.5 var(--font-mono); color: var(--accent-lift); white-space: pre-wrap; align-self: stretch; }
.gxl-media--text p { margin: 0; padding: 1rem; font-size: 0.86rem; line-height: 1.5; color: var(--paper-1); }
.gxl-media--badge span { font: 700 0.9rem var(--font-mono); letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent-lift); }
.gxl-media--wave { gap: 3px; }
.gxl-media--wave span { width: 4px; background: var(--accent); border-radius: 2px; height: 30%; animation: gxl-wave 1s ease-in-out infinite; }
.gxl-media--wave span:nth-child(odd){animation-delay:.15s} .gxl-media--wave span:nth-child(3n){animation-delay:.3s} .gxl-media--wave span:nth-child(4n){animation-delay:.45s}
@keyframes gxl-wave { 0%,100%{height:22%;opacity:.5} 50%{height:78%;opacity:1} }
.gxl-media--spin i { width: 54px; height: 54px; border: 2px solid var(--accent-rim); border-top-color: var(--accent-lift); border-radius: 8px; transform: rotate(0); animation: gxl-spin 3.4s linear infinite; }
@keyframes gxl-spin { to { transform: rotate(360deg); } }
.gxl-meta { padding: 0.85rem 1rem; display: flex; flex-direction: column; gap: 0.15rem; }
.gxl-type { font: 700 0.6rem var(--font-mono); letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent-lift); }
.gxl-title { font-weight: 600; color: var(--paper-0); font-size: 0.95rem; }
.gxl-model { font: 500 0.7rem var(--font-mono); color: var(--paper-2); }
@media (prefers-reduced-motion: reduce) { .gxl-media--wave span, .gxl-media--spin i { animation: none; } }

/* ── sub-page hero (shorter) ─────────────────────────────────────────── */
.gxx-hero--sub { min-height: auto; padding-block: clamp(3rem,12vh,6rem) clamp(2rem,6vh,3.5rem); }
.gxx-hero--sub .gxx-lede { margin-bottom: 0; }

/* ── compare (gxo-) ──────────────────────────────────────────────────── */
.gxo-head, .gxo-row { display: grid; grid-template-columns: 0.9fr 1.3fr 1fr; gap: 1rem; align-items: center; }
.gxo-head { padding: 0 0 0.75rem; border-bottom: 1px solid var(--gx-line); margin-bottom: 0.4rem; }
.gxo-h { font: 700 0.66rem var(--font-mono); letter-spacing: 0.16em; text-transform: uppercase; }
.gxo-h--roll { color: var(--paper-2); } .gxo-h--g { color: var(--accent-lift); }
.gxo-row { padding: 1rem 0.4rem; border-bottom: 1px solid var(--gx-line); transition: background 160ms; border-radius: 8px; }
.gxo-row:hover { background: rgba(255,255,255,0.02); }
.gxo-dim { font-weight: 600; color: var(--paper-0); font-size: 0.98rem; }
.gxo-roll__txt { display: block; color: var(--paper-1); font-size: 0.9rem; line-height: 1.4; margin-bottom: 0.5rem; }
.gxo-meter { display: block; height: 5px; border-radius: 3px; background: rgba(255,255,255,0.06); overflow: hidden; }
.gxo-meter__fill { display: block; height: 100%; width: 0; border-radius: 3px; background: linear-gradient(90deg, var(--accent-deep), var(--accent)); transition: width 1200ms cubic-bezier(0.16,1,0.3,1); }
.gxo-g { display: flex; align-items: flex-start; gap: 0.55rem; color: var(--paper-0); font-size: 0.94rem; line-height: 1.4; }
.gxo-check { flex: 0 0 auto; width: 20px; height: 20px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; font-size: 0.8rem; color: #fff; background: var(--gx-cta); margin-top: 0.05em; }
.gxo-row--tie .gxo-check { background: rgba(255,255,255,0.12); color: var(--paper-1); }
.gxo-row--tie .gxo-meter__fill { background: rgba(255,255,255,0.2); }
@media (max-width: 720px) { .gxo-head { display: none; } .gxo-row { grid-template-columns: 1fr; gap: 0.5rem; padding: 1.1rem 0; } .gxo-g { padding-top: 0.35rem; border-top: 1px dashed var(--gx-line); } }

/* ── stack (gxs-) ────────────────────────────────────────────────────── */
.gxx-stack { display: grid; grid-template-columns: 1.5fr auto 1fr; gap: clamp(1rem,3vw,2.5rem); align-items: center; margin-top: 1.5rem; }
@media (max-width: 780px) { .gxx-stack { grid-template-columns: 1fr; text-align: center; } .gxs-vs { transform: rotate(90deg); } }
/* dossier technical: reserve the JS-injected comparison heights up front so the rows
   don't reflow after paint (measured filled heights + small buffer for narrow desktop).
   Was the site's worst CLS (~0.079) on the highest-intent decision page. */
#gxx-compare { min-height: 448px; }
#gxx-stack { min-height: 140px; }
@media (max-width: 780px) { #gxx-compare { min-height: 840px; } #gxx-stack { min-height: 448px; } }
.gxs-cloud { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.gxs-chip { font: 500 0.85rem var(--gx-font-body); color: var(--paper-1); background: rgba(255,255,255,0.03); border: 1px solid var(--gx-line); border-radius: 8px; padding: 0.5em 0.85em; opacity: 0; transform: translateY(8px) scale(0.96); }
.gxx-stack.is-in .gxs-chip { animation: gxs-pop 420ms cubic-bezier(0.16,1,0.3,1) forwards; animation-delay: calc(var(--i) * 55ms); }
@keyframes gxs-pop { to { opacity: 1; transform: none; } }
.gxs-vs { font: 700 0.9rem var(--font-mono); text-transform: uppercase; letter-spacing: 0.16em; color: var(--paper-2); justify-self: center; }
.gxs-one { display: flex; flex-direction: column; gap: 0.4rem; text-decoration: none; padding: 1.5rem; border: 1px solid var(--accent-rim); border-radius: 18px; background: linear-gradient(160deg, rgba(30,10,16,0.7), rgba(10,11,14,0.8)); transition: border-color 180ms, transform 180ms; }
.gxs-one:hover { border-color: var(--accent); transform: translateY(-2px); }
.gxs-one__k { font: 700 0.68rem var(--font-mono); letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent-lift); }
.gxs-one__v { font-family: var(--gx-font-display); font-weight: 700; font-size: 1.35rem; color: var(--paper-0); line-height: 1.15; }
.gxs-one__cta { color: var(--accent-lift); font-weight: 600; font-size: 0.92rem; margin-top: 0.3rem; }
@media (prefers-reduced-motion: reduce) { .gxs-chip { opacity: 1; transform: none; } }

/* ── generic gxx content components (for cascaded pages) ─────────────── */
.gxx-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px,1fr)); gap: 1rem; margin-top: 1.5rem; }
.gxx-card { border: 1px solid var(--gx-line); border-radius: 16px; padding: 1.5rem; background: rgba(10,11,14,0.72); transition: border-color 180ms, transform 180ms; text-decoration: none; color: inherit; display: block; }
.gxx-card:hover { border-color: var(--accent-rim); transform: translateY(-2px); }
.gxx-card h3 { font-family: var(--gx-font-display); font-size: 1.1rem; margin: 0 0 0.5rem; color: var(--paper-0); }
.gxx-card p { color: var(--paper-1); font-size: 0.94rem; line-height: 1.5; margin: 0; }
.gxx-card__ico { font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent-lift); display: block; margin-bottom: 0.7rem; }
.gxx-list { list-style: none; margin: 1.25rem 0 0; padding: 0; display: grid; gap: 0.7rem; max-width: 62ch; }
.gxx-list li { position: relative; padding-left: 1.5rem; color: var(--paper-1); font-size: 0.98rem; line-height: 1.5; }
.gxx-list li::before { content: ""; position: absolute; left: 0; top: 0.5em; width: 8px; height: 8px; border-radius: 2px; background: var(--accent); box-shadow: 0 0 8px var(--accent-glow); }
.gxx-list li strong { color: var(--paper-0); }
.gxx-cta-block { max-width: var(--maxw); margin: 2.5rem auto clamp(3rem,7vw,5rem); padding-inline: var(--edge); display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.gxx-cta-block .gx-muted { flex: 1; min-width: 240px; font-size: 0.9rem; }


/* iOS/iPad touch targets — 44px min on ANY touch device regardless of width (Apple HIG).
   The earlier max-width:720px rule missed iPad (834-1194px) + iPhone landscape (852px). */
@media (pointer: coarse) {
  .gxx-nav__links a, .gxx-footer__nav a { min-height: 44px; padding-inline: 8px; display: inline-flex; align-items: center; }
  .gx-brand { min-height: 44px; display: inline-flex; align-items: center; }
  .gxx-footer__legal a, .gxx-hero a:not(.gx-btn), a[href^="mailto:"] { display: inline-block; padding-block: 12px; }
}


/* dossier #7 (v2): hyper-real garnet crystal fills the interior-hero right void, screen-blended into the dark hero */
.gxx-hero--sub { position: relative; overflow: hidden; }
.gxx-hero--sub .gxx-hero__inner { position: relative; z-index: 1; }
.gxx-hero--sub::before {
  content: ""; position: absolute; z-index: 0; top: 50%; transform: translateY(-50%);
  right: max(-3rem, calc(50% - 640px)); width: clamp(320px, 44vw, 560px); height: clamp(320px, 44vw, 560px);
  pointer-events: none; opacity: .96;
  background: url("/assets/images/garnet-crystal.webp") center/contain no-repeat;
  mix-blend-mode: screen; filter: drop-shadow(0 0 50px rgba(224,36,74,.3));
  animation: gxx-cryst 10s ease-in-out infinite;
}
@keyframes gxx-cryst { 0%,100% { transform: translateY(-50%) scale(1); } 50% { transform: translateY(-52%) scale(1.02); } }
@media (prefers-reduced-motion: reduce) { .gxx-hero--sub::before { animation: none; } }
/* mobile: sit the crystal BELOW the copy (not under the sticky nav) + fill the lower void; smaller + soft */
@media (max-width: 820px) {
  /* faint centered ambient behind the copy — no clipping, no CTA overlap, no empty band */
  .gxx-hero--sub::before { top: 45%; bottom: auto; right: 50%; transform: translate(50%, -50%); width: 92vw; height: 92vw; opacity: .28; animation: none; }
}

/* ── dossier design+novelty: vary the interior hero crystal per page so the six
   pages stop reading as one template. Same garnet motif, distinct framing/tint/
   crop each (compare = paired gems; trust/documents = edge-masked). Desktop only;
   mobile keeps the uniform centered ambient above. Static transforms so the framing
   holds (the shared float animates transform and would otherwise overwrite it). ── */
@media (min-width: 821px) {
  .gxx-hero--ecosystem::before, .gxx-hero--trust::before, .gxx-hero--compare::before,
  .gxx-hero--business::before, .gxx-hero--documents::before, .gxx-hero--guide::before { animation: none; }
  /* ecosystem — the showroom: large, upright, bright */
  .gxx-hero--ecosystem::before { transform: translateY(-50%) rotate(5deg) scale(1.08); opacity: 1;
    filter: drop-shadow(0 0 62px rgba(224,36,74,.36)) brightness(1.06); }
  /* trust — lower, tilted, half-lit: what we can and can't see */
  .gxx-hero--trust::before { top: 57%; transform: translateY(-50%) rotate(-11deg) scale(.9); opacity: .9;
    filter: drop-shadow(-22px 0 48px rgba(224,36,74,.22)) brightness(.82) contrast(1.1);
    -webkit-mask-image: linear-gradient(105deg, #000 44%, rgba(0,0,0,.2) 72%);
    mask-image: linear-gradient(105deg, #000 44%, rgba(0,0,0,.2) 72%); }
  /* compare — paired gems */
  .gxx-hero--compare::before { right: max(1rem, calc(50% - 600px)); width: clamp(240px,32vw,410px); height: clamp(240px,32vw,410px);
    transform: translateY(-44%) rotate(-7deg); }
  .gxx-hero--compare::after { content: ""; position: absolute; z-index: 0; top: 50%; right: max(-7rem, calc(50% - 780px));
    width: clamp(170px,22vw,300px); height: clamp(170px,22vw,300px); pointer-events: none; opacity: .66;
    background: url("/assets/images/garnet-crystal.webp") center/contain no-repeat; mix-blend-mode: screen;
    filter: drop-shadow(0 0 38px rgba(224,36,74,.26)) brightness(.92); transform: translateY(22%) rotate(13deg) scale(.9); }
  /* business — smaller, higher, tilted the other way, crisp */
  .gxx-hero--business::before { top: 44%; transform: translateY(-50%) rotate(15deg) scale(.84); opacity: .92;
    filter: drop-shadow(0 0 46px rgba(224,36,74,.3)) contrast(1.06) saturate(1.05); }
  /* private-documents — the gem sealing in from the vault edge, pushed clear of the
     headline column so no white glyph lands on a lit facet */
  .gxx-hero--documents::before { right: max(-5rem, calc(50% - 680px)); transform: translateY(-50%) rotate(-4deg) scale(1);
    -webkit-mask-image: linear-gradient(90deg, transparent 6%, #000 42%); mask-image: linear-gradient(90deg, transparent 6%, #000 42%); }
  /* guide — soft, smaller, welcoming glow */
  .gxx-hero--guide::before { transform: translateY(-50%) rotate(-3deg) scale(.9); opacity: .8;
    filter: drop-shadow(0 0 72px rgba(224,36,74,.3)) brightness(1.08); }
}
