/* 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__links a:not(.gx-btn) { display: none; } }

/* ── 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); }
.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__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); } }
.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; }
.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 { margin-top: 2.5rem; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.gxx-cta-block .gx-muted { flex: 1; min-width: 240px; font-size: 0.9rem; }
