Spaces:
Running
Running
| /* TradeBench components — editorial, RAETH-style. | |
| Pure-black canvas, generous whitespace, faded-into-white display type, | |
| hairline structure, monospace metadata with wide tracking. */ | |
| /* ── Global canvas ──────────────────────────────────────────── */ | |
| .gradio-container { | |
| background: var(--bg) ; | |
| max-width: 100% ; | |
| width: 100% ; | |
| padding: 0 ; | |
| margin: 0 ; | |
| font-family: var(--type-body); | |
| color: var(--ink); | |
| font-feature-settings: "ss01", "ss02", "cv11"; | |
| background-image: | |
| radial-gradient(ellipse 80% 50% at 50% -10%, var(--accent-glow), transparent 60%), | |
| radial-gradient(ellipse 60% 40% at 80% 110%, rgba(132, 204, 22, 0.04), transparent 60%); | |
| background-attachment: fixed; | |
| } | |
| /* Subtle vignette/grain overlay */ | |
| .gradio-container::before { | |
| content: ""; | |
| position: fixed; | |
| inset: 0; | |
| pointer-events: none; | |
| z-index: 0; | |
| background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>"); | |
| opacity: 0.06; | |
| mix-blend-mode: overlay; | |
| } | |
| .main, .contain { | |
| max-width: 1280px ; | |
| margin: 0 auto ; | |
| padding: 0 var(--space-4) var(--space-7) ; | |
| width: 100% ; | |
| box-sizing: border-box ; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| footer { display: none ; } | |
| /* ── Page header (editorial centered hero) ──────────────────── */ | |
| .tb-header { | |
| padding: var(--space-7) 0 var(--space-6); | |
| text-align: center; | |
| border-bottom: 1px solid var(--rule); | |
| margin-bottom: var(--space-6); | |
| position: relative; | |
| } | |
| .tb-header-meta { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-faint); | |
| letter-spacing: 0.32em; | |
| text-transform: uppercase; | |
| margin-bottom: var(--space-5); | |
| display: flex; | |
| flex-wrap: wrap; | |
| justify-content: center; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .tb-header-tag { color: var(--ink-mute); } | |
| .tb-header-tag.is-accent { color: var(--accent); } | |
| .tb-header-dot { | |
| color: var(--ink-faint); | |
| user-select: none; | |
| } | |
| .tb-header-title, | |
| .tb-header h1 { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: clamp(2.6rem, 7vw, 5.8rem); | |
| line-height: 0.96; | |
| letter-spacing: -0.025em; | |
| color: var(--ink); | |
| margin: 0 auto; | |
| max-width: 22ch; | |
| font-variation-settings: "opsz" 144, "SOFT" 0, "WONK" 1; | |
| } | |
| .tb-header-title .tb-faded { color: var(--ink-ghost); font-weight: 500; } | |
| .tb-header-title .tb-accent { | |
| color: var(--accent); | |
| font-style: italic; | |
| font-weight: 500; | |
| } | |
| .tb-header .tb-lead { | |
| font-family: var(--type-body); | |
| font-size: 1.05em; | |
| color: var(--ink-mute); | |
| margin: var(--space-5) auto 0; | |
| max-width: 60ch; | |
| line-height: 1.7; | |
| } | |
| .tb-header .tb-lead code { | |
| color: var(--accent-hi); | |
| background: rgba(34, 211, 238, 0.08) ; | |
| border: 1px solid var(--accent-lo) ; | |
| padding: 1px 6px ; | |
| } | |
| /* ── Eyebrow / section headings ─────────────────────────────── */ | |
| .tb-section-eyebrow { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-faint); | |
| text-transform: uppercase; | |
| letter-spacing: 0.28em; | |
| margin-bottom: var(--space-4); | |
| margin-top: var(--space-7); | |
| } | |
| .tb-section-eyebrow:first-child { margin-top: var(--space-5); } | |
| .tb-section-title { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: clamp(1.8em, 3.4vw, 2.8em); | |
| line-height: 1.08; | |
| letter-spacing: -0.02em; | |
| color: var(--ink); | |
| margin: 0 0 var(--space-4); | |
| max-width: 22ch; | |
| font-variation-settings: "opsz" 96, "SOFT" 0, "WONK" 1; | |
| } | |
| .tb-section-title .tb-faded { color: var(--ink-ghost); } | |
| .tb-section-title .tb-accent { | |
| color: var(--accent); | |
| font-style: italic; | |
| } | |
| .tb-section-lead { | |
| font-family: var(--type-body); | |
| font-size: 1.0em; | |
| line-height: 1.7; | |
| color: var(--ink); | |
| max-width: 64ch; | |
| margin: 0 0 var(--space-3); | |
| } | |
| .tb-section-lead-mute { color: var(--ink-mute); } | |
| .tb-section-lead .tb-num { | |
| color: var(--ink); | |
| font-family: var(--type-mono); | |
| font-feature-settings: "tnum"; | |
| } | |
| /* ── Hero (Trajectory tab) ──────────────────────────────────── */ | |
| .tb-hero { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); | |
| gap: var(--space-6); | |
| align-items: start; | |
| margin: 0 0 var(--space-6); | |
| } | |
| .tb-hero-stack { min-width: 0; } | |
| .tb-hero-title { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: clamp(1.9em, 3.6vw, 3em); | |
| line-height: 1.1; | |
| color: var(--ink); | |
| letter-spacing: -0.018em; | |
| margin: 0 0 var(--space-4); | |
| max-width: 22ch; | |
| font-variation-settings: "opsz" 120, "SOFT" 0, "WONK" 1; | |
| } | |
| .tb-hero-title .tb-faded { color: var(--ink-ghost); } | |
| .tb-hero-title .tb-accent { | |
| color: var(--accent); | |
| font-style: italic; | |
| } | |
| .tb-hero-lead { | |
| font-family: var(--type-body); | |
| font-size: 1.0em; | |
| color: var(--ink-mute); | |
| line-height: 1.75; | |
| margin: 0; | |
| max-width: 60ch; | |
| } | |
| .tb-hero-lead em { color: var(--ink); font-style: italic; } | |
| .tb-hero-stats { | |
| display: flex; | |
| flex-direction: column; | |
| gap: var(--space-3); | |
| } | |
| .tb-statcard { | |
| background: transparent; | |
| border: 1px solid var(--rule); | |
| padding: var(--space-4); | |
| position: relative; | |
| transition: border-color var(--dur-fast) var(--ease-out), | |
| background-color var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-statcard:hover { | |
| border-color: var(--rule-strong); | |
| background: rgba(255, 255, 255, 0.015); | |
| } | |
| .tb-statcard-eyebrow { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--accent); | |
| text-transform: uppercase; | |
| letter-spacing: 0.22em; | |
| margin-bottom: var(--space-3); | |
| } | |
| .tb-statcard-row { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: baseline; | |
| padding: var(--space-2) 0; | |
| border-bottom: 1px solid var(--rule); | |
| } | |
| .tb-statcard-row:last-of-type { border-bottom: none; } | |
| .tb-statcard-key { | |
| font-family: var(--type-mono); | |
| font-size: 0.78em; | |
| color: var(--ink-mute); | |
| letter-spacing: 0.02em; | |
| } | |
| .tb-statcard-arrow { | |
| font-family: var(--type-mono); | |
| font-feature-settings: "tnum"; | |
| font-size: 0.92em; | |
| color: var(--ink-mute); | |
| } | |
| .tb-statcard-arrow strong { | |
| color: var(--ink); | |
| font-weight: 500; | |
| } | |
| .tb-statcard-foot { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| text-transform: uppercase; | |
| letter-spacing: 0.22em; | |
| margin-top: var(--space-3); | |
| padding-top: var(--space-3); | |
| border-top: 1px solid var(--rule); | |
| } | |
| /* ── Hairline stat grid (4-up) ──────────────────────────────── */ | |
| .tb-stat-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 1px; | |
| background: var(--rule); | |
| margin: var(--space-5) 0 var(--space-6); | |
| } | |
| @media (min-width: 760px) { | |
| .tb-stat-grid { grid-template-columns: repeat(4, 1fr); } | |
| } | |
| .tb-stat-cell { | |
| background: var(--bg); | |
| padding: var(--space-5) var(--space-4); | |
| transition: background-color var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-stat-cell:hover { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .tb-stat-cell-eyebrow { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| text-transform: uppercase; | |
| letter-spacing: 0.24em; | |
| margin-bottom: var(--space-3); | |
| } | |
| .tb-stat-cell-value { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-feature-settings: "tnum"; | |
| font-size: clamp(2em, 3.6vw, 3em); | |
| line-height: 1; | |
| letter-spacing: -0.02em; | |
| color: var(--ink); | |
| margin-bottom: var(--space-2); | |
| font-variation-settings: "opsz" 96; | |
| } | |
| .tb-stat-cell-foot { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-faint); | |
| letter-spacing: 0.04em; | |
| } | |
| /* ── Reward formula block ───────────────────────────────────── */ | |
| .tb-formula { | |
| background: var(--bg-elev-1); | |
| border: 1px solid var(--rule); | |
| padding: var(--space-5); | |
| margin: var(--space-4) 0 var(--space-5); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .tb-formula::before { | |
| content: "rewards/composite.py"; | |
| position: absolute; | |
| top: 0; right: var(--space-4); | |
| background: var(--bg); | |
| color: var(--accent); | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| letter-spacing: 0.22em; | |
| padding: 4px var(--space-2); | |
| border-left: 1px solid var(--rule); | |
| border-right: 1px solid var(--rule); | |
| border-bottom: 1px solid var(--rule); | |
| text-transform: uppercase; | |
| } | |
| .tb-formula pre { | |
| background: transparent ; | |
| border: none ; | |
| color: var(--ink) ; | |
| font-family: var(--type-mono) ; | |
| font-size: 0.84em; | |
| line-height: 1.75; | |
| margin: 0 ; | |
| padding: var(--space-3) 0 0 ; | |
| overflow-x: auto; | |
| } | |
| /* ── Three-up card grid ─────────────────────────────────────── */ | |
| .tb-three-up { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); | |
| gap: 1px; | |
| background: var(--rule); | |
| margin: var(--space-4) 0 var(--space-6); | |
| border: 1px solid var(--rule); | |
| } | |
| .tb-card { | |
| background: var(--bg); | |
| padding: var(--space-5); | |
| transition: background-color var(--dur-fast) var(--ease-out); | |
| position: relative; | |
| } | |
| .tb-card:hover { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .tb-card-num { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--accent); | |
| letter-spacing: 0.24em; | |
| text-transform: uppercase; | |
| margin-bottom: var(--space-4); | |
| } | |
| .tb-card-title { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: 1.4em; | |
| color: var(--ink); | |
| line-height: 1.2; | |
| margin-bottom: var(--space-3); | |
| letter-spacing: -0.01em; | |
| font-variation-settings: "opsz" 72; | |
| } | |
| .tb-card-body { | |
| font-family: var(--type-body); | |
| font-size: 0.92em; | |
| color: var(--ink-mute); | |
| line-height: 1.65; | |
| } | |
| .tb-card-body code { | |
| color: var(--accent-hi); | |
| background: rgba(34, 211, 238, 0.06) ; | |
| padding: 1px 4px ; | |
| border: 1px solid var(--accent-lo) ; | |
| font-size: 0.92em; | |
| } | |
| /* ── Layer stack ────────────────────────────────────────────── */ | |
| .tb-layer-stack { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1px; | |
| background: var(--rule); | |
| border: 1px solid var(--rule); | |
| margin: var(--space-4) 0 var(--space-6); | |
| } | |
| .tb-layer { | |
| background: var(--bg); | |
| padding: var(--space-5); | |
| display: flex; | |
| gap: var(--space-3); | |
| align-items: flex-start; | |
| transition: background-color var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-layer:hover { background: rgba(255, 255, 255, 0.02); } | |
| .tb-layer-num { | |
| font-family: var(--type-display); | |
| font-feature-settings: "tnum"; | |
| font-size: 1.6em; | |
| font-weight: 500; | |
| color: var(--ink-ghost); | |
| letter-spacing: -0.02em; | |
| line-height: 1; | |
| flex-shrink: 0; | |
| width: 40px; | |
| text-align: right; | |
| } | |
| .tb-layer-content { min-width: 0; } | |
| .tb-layer-title { | |
| font-family: var(--type-body); | |
| font-weight: 500; | |
| font-size: 1em; | |
| color: var(--ink); | |
| margin-bottom: var(--space-2); | |
| } | |
| .tb-layer-body { | |
| font-family: var(--type-body); | |
| font-size: 0.9em; | |
| color: var(--ink-mute); | |
| line-height: 1.6; | |
| } | |
| .tb-layer-body code { | |
| color: var(--accent-hi); | |
| background: rgba(34, 211, 238, 0.06) ; | |
| padding: 1px 4px ; | |
| } | |
| /* ── Editorial blockquote (Opus diagnosis) ──────────────────── */ | |
| .tb-quote { | |
| font-family: var(--type-display); | |
| font-style: italic; | |
| font-size: 1.32em; | |
| line-height: 1.45; | |
| color: var(--ink); | |
| background: var(--bg-elev-1); | |
| border-left: 2px solid var(--accent); | |
| border-top: 1px solid var(--rule); | |
| border-right: 1px solid var(--rule); | |
| border-bottom: 1px solid var(--rule); | |
| padding: var(--space-5) var(--space-6); | |
| margin: var(--space-3) 0; | |
| max-width: 78ch; | |
| font-variation-settings: "opsz" 96, "WONK" 1; | |
| } | |
| .tb-quote::before { | |
| content: "\201C"; | |
| color: var(--accent); | |
| font-family: var(--type-display); | |
| font-size: 2.2em; | |
| line-height: 0; | |
| vertical-align: -0.4em; | |
| margin-right: 0.06em; | |
| } | |
| /* ── Link grid ──────────────────────────────────────────────── */ | |
| .tb-link-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1px; | |
| background: var(--rule); | |
| border: 1px solid var(--rule); | |
| margin: var(--space-4) 0 var(--space-6); | |
| } | |
| .tb-link-card { | |
| display: block; | |
| background: var(--bg); | |
| padding: var(--space-5); | |
| text-decoration: none; | |
| transition: background-color var(--dur-fast) var(--ease-out); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .tb-link-card::after { | |
| content: "\2192"; | |
| position: absolute; | |
| top: var(--space-4); | |
| right: var(--space-4); | |
| color: var(--ink-faint); | |
| font-family: var(--type-mono); | |
| font-size: 1.1em; | |
| transition: color var(--dur-fast) var(--ease-out), | |
| transform var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-link-card:hover { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .tb-link-card:hover::after { | |
| color: var(--accent); | |
| transform: translate(2px, -2px); | |
| } | |
| .tb-link-eyebrow { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--accent); | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| margin-bottom: var(--space-3); | |
| } | |
| .tb-link-title { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: 1.2em; | |
| color: var(--ink); | |
| margin-bottom: var(--space-2); | |
| line-height: 1.25; | |
| padding-right: var(--space-5); | |
| letter-spacing: -0.01em; | |
| } | |
| .tb-link-sub { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-mute); | |
| letter-spacing: 0.04em; | |
| } | |
| /* ── Figure cards (static PNG embeds) ───────────────────────── */ | |
| .tb-figure { | |
| margin: var(--space-4) 0 var(--space-5); | |
| border: 1px solid var(--rule); | |
| background: var(--bg-elev-1); | |
| overflow: hidden; | |
| transition: border-color var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-figure:hover { border-color: var(--rule-strong); } | |
| .tb-figure-head { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: baseline; | |
| padding: var(--space-3) var(--space-4); | |
| border-bottom: 1px solid var(--rule); | |
| background: var(--bg); | |
| } | |
| .tb-figure-title { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-mute); | |
| text-transform: uppercase; | |
| letter-spacing: 0.22em; | |
| } | |
| .tb-figure-meta { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| } | |
| .tb-figure-body { | |
| padding: var(--space-3); | |
| background: #FFFFFF; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .tb-figure-body.is-dark { background: var(--bg-elev-1); } | |
| .tb-figure-body img { | |
| width: 100%; | |
| height: auto; | |
| max-width: 100%; | |
| display: block; | |
| } | |
| .tb-figure-caption { | |
| padding: var(--space-3) var(--space-4); | |
| border-top: 1px solid var(--rule); | |
| font-family: var(--type-body); | |
| font-size: 0.88em; | |
| color: var(--ink-mute); | |
| line-height: 1.55; | |
| background: var(--bg); | |
| } | |
| .tb-figure-caption strong { color: var(--ink); font-weight: 500; } | |
| /* Grid of two figures side-by-side at wide viewports */ | |
| .tb-figure-row { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: var(--space-4); | |
| margin: var(--space-4) 0; | |
| } | |
| @media (min-width: 980px) { | |
| .tb-figure-row { grid-template-columns: 1fr 1fr; } | |
| } | |
| /* ── Plot panel (gr.Plot wrapper) — kept for any remaining Plotly */ | |
| .gradio-container .plot-container, | |
| .gradio-container [data-testid="plot"] { | |
| background: var(--bg-elev-1) ; | |
| border: 1px solid var(--rule) ; | |
| border-radius: 0 ; | |
| padding: 4px ; | |
| margin: var(--space-3) 0 ; | |
| transition: border-color var(--dur-fast) var(--ease-out) ; | |
| } | |
| .gradio-container .plot-container:hover, | |
| .gradio-container [data-testid="plot"]:hover { | |
| border-color: var(--rule-strong) ; | |
| } | |
| .gradio-container .modebar { background: transparent ; } | |
| .gradio-container .modebar-btn path { | |
| fill: var(--ink-mute) ; | |
| transition: fill var(--dur-fast) var(--ease-out); | |
| } | |
| .gradio-container .modebar-btn:hover path, | |
| .gradio-container .modebar-btn.active path { | |
| fill: var(--accent) ; | |
| } | |
| /* ── Tabs — RAETH-style mono uppercase nav ──────────────────── */ | |
| .gradio-container .tab-nav { | |
| border-bottom: 1px solid var(--rule) ; | |
| gap: 0 ; | |
| padding: 0 ; | |
| margin-bottom: var(--space-6) ; | |
| overflow-x: auto; | |
| } | |
| .gradio-container .tab-nav button { | |
| background: transparent ; | |
| color: var(--ink-faint) ; | |
| border: none ; | |
| border-bottom: 1px solid transparent ; | |
| padding: var(--space-3) var(--space-4) ; | |
| font-family: var(--type-mono) ; | |
| font-weight: 400 ; | |
| font-size: 11px ; | |
| letter-spacing: 0.22em ; | |
| text-transform: uppercase ; | |
| transition: color var(--dur-fast) var(--ease-out), | |
| border-color var(--dur-fast) var(--ease-out) ; | |
| white-space: nowrap ; | |
| } | |
| .gradio-container .tab-nav button:hover { color: var(--ink) ; } | |
| .gradio-container .tab-nav button.selected { | |
| color: var(--ink) ; | |
| border-bottom-color: var(--accent) ; | |
| } | |
| /* ── Tab content reveal cascade ─────────────────────────────── */ | |
| .tabitem > *, | |
| [class*="tab-content"] > *, | |
| [class*="tabs"] [class*="tabitem"] > * { | |
| animation: tb-reveal var(--dur-med) var(--ease-out) both; | |
| animation-delay: calc(var(--i, 0) * 40ms); | |
| } | |
| .tabitem > *:nth-child(1) { --i: 1; } | |
| .tabitem > *:nth-child(2) { --i: 2; } | |
| .tabitem > *:nth-child(3) { --i: 3; } | |
| .tabitem > *:nth-child(4) { --i: 4; } | |
| .tabitem > *:nth-child(5) { --i: 5; } | |
| .tabitem > *:nth-child(6) { --i: 6; } | |
| .tabitem > *:nth-child(7) { --i: 7; } | |
| .tabitem > *:nth-child(8) { --i: 8; } | |
| .tabitem > *:nth-child(n+9) { --i: 9; } | |
| @keyframes tb-reveal { | |
| from { opacity: 0; transform: translateY(6px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| /* ── MetricCard ─────────────────────────────────────────────── */ | |
| .tb-metric-row { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); | |
| gap: 1px; | |
| background: var(--rule); | |
| border: 1px solid var(--rule); | |
| margin: var(--space-5) 0; | |
| } | |
| .tb-metric { | |
| background: var(--bg); | |
| padding: var(--space-5) var(--space-4); | |
| transition: background-color var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-metric:hover { background: rgba(255, 255, 255, 0.02); } | |
| .tb-metric .tb-metric-label { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| text-transform: uppercase; | |
| letter-spacing: 0.24em; | |
| margin-bottom: var(--space-3); | |
| } | |
| .tb-metric .tb-metric-value { | |
| font-family: var(--type-display); | |
| font-feature-settings: "tnum"; | |
| font-size: 2.4em; | |
| font-weight: 500; | |
| color: var(--ink); | |
| letter-spacing: -0.02em; | |
| line-height: 1; | |
| } | |
| .tb-metric .tb-metric-delta { | |
| font-family: var(--type-mono); | |
| font-feature-settings: "tnum"; | |
| font-size: 0.85em; | |
| margin-top: var(--space-2); | |
| } | |
| .tb-metric .tb-metric-delta.long { color: var(--long); } | |
| .tb-metric .tb-metric-delta.short { color: var(--short); } | |
| .tb-metric .tb-metric-delta.flat { color: var(--ink-mute); } | |
| .tb-metric .tb-metric-sub { | |
| color: var(--ink-mute); | |
| font-size: 0.85em; | |
| margin-top: var(--space-2); | |
| font-family: var(--type-body); | |
| } | |
| /* ── TimelineRail ───────────────────────────────────────────── */ | |
| .tb-timeline { margin: var(--space-5) 0 var(--space-6); } | |
| .tb-timeline-rail { | |
| display: grid; | |
| grid-template-columns: 60fr 12fr 120fr 12fr 252fr; | |
| gap: 4px; | |
| height: 36px; | |
| overflow: hidden; | |
| border: 1px solid var(--rule); | |
| } | |
| .tb-timeline-seg { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| } | |
| .tb-timeline-seg.t1 { background: rgba(34, 211, 238, 0.20); color: var(--ink); } | |
| .tb-timeline-seg.t2 { background: rgba(34, 211, 238, 0.40); color: var(--bg); } | |
| .tb-timeline-seg.t3 { background: var(--accent); color: var(--bg); } | |
| .tb-timeline-seg.embargo { | |
| background: repeating-linear-gradient( | |
| 45deg, var(--bg-elev-2), var(--bg-elev-2) 4px, | |
| var(--rule) 4px, var(--rule) 8px); | |
| color: var(--ink-mute); | |
| } | |
| .tb-timeline-axis { | |
| display: grid; | |
| grid-template-columns: 60fr 12fr 120fr 12fr 252fr; | |
| gap: 4px; | |
| margin-top: var(--space-2); | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| letter-spacing: 0.04em; | |
| } | |
| .tb-timeline-axis div { text-align: center; } | |
| /* ── RewardBar (live demo) ──────────────────────────────────── */ | |
| .tb-reward-table { | |
| background: var(--bg-elev-1); | |
| border: 1px solid var(--rule); | |
| padding: var(--space-4); | |
| margin: var(--space-4) 0; | |
| } | |
| .tb-reward-row { | |
| display: grid; | |
| grid-template-columns: 200px 1fr 120px 120px; | |
| align-items: center; | |
| gap: var(--space-3); | |
| padding: var(--space-2) 0; | |
| border-bottom: 1px solid var(--rule); | |
| } | |
| .tb-reward-row:last-child { border-bottom: none; } | |
| .tb-reward-name { | |
| font-family: var(--type-mono); | |
| font-size: 0.86em; | |
| color: var(--ink); | |
| } | |
| .tb-reward-bar-track { | |
| background: var(--bg-elev-2); | |
| height: 6px; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .tb-reward-bar-fill { | |
| position: absolute; | |
| top: 0; | |
| bottom: 0; | |
| background: var(--accent); | |
| animation: tb-bar-grow var(--dur-slow) var(--ease-out) both; | |
| animation-delay: 200ms; | |
| transform-origin: left center; | |
| } | |
| .tb-reward-bar-fill.neg { background: var(--short); transform-origin: right center; } | |
| .tb-reward-bar-fill.pos { background: var(--long); } | |
| .tb-reward-bar-fill.accent { background: var(--accent); } | |
| @keyframes tb-bar-grow { | |
| from { transform: scaleX(0); } | |
| to { transform: scaleX(1); } | |
| } | |
| .tb-reward-value { | |
| font-family: var(--type-mono); | |
| font-feature-settings: "tnum"; | |
| font-size: 0.9em; | |
| text-align: right; | |
| color: var(--ink); | |
| } | |
| .tb-reward-bound { | |
| font-family: var(--type-mono); | |
| font-size: 0.76em; | |
| color: var(--ink-faint); | |
| text-align: right; | |
| } | |
| /* ── SchemaBlock (collapsible) ──────────────────────────────── */ | |
| .tb-schema { | |
| background: var(--bg-elev-1); | |
| border: 1px solid var(--rule); | |
| margin: var(--space-3) 0; | |
| } | |
| .tb-schema summary { | |
| list-style: none; | |
| cursor: pointer; | |
| padding: var(--space-3) var(--space-4); | |
| font-family: var(--type-mono); | |
| font-size: 0.88em; | |
| color: var(--ink); | |
| user-select: none; | |
| letter-spacing: 0.02em; | |
| } | |
| .tb-schema summary::-webkit-details-marker { display: none; } | |
| .tb-schema summary::before { | |
| content: "\25B8 "; | |
| color: var(--accent); | |
| transition: transform var(--dur-fast) var(--ease-out); | |
| display: inline-block; | |
| } | |
| .tb-schema[open] summary::before { content: "\25BE "; } | |
| .tb-schema summary:hover { background: rgba(255, 255, 255, 0.02); } | |
| .tb-schema pre { | |
| margin: 0; | |
| padding: var(--space-4) ; | |
| background: var(--bg) ; | |
| border-top: 1px solid var(--rule); | |
| overflow-x: auto; | |
| font-family: var(--type-mono) ; | |
| font-size: 0.8em; | |
| color: var(--ink); | |
| line-height: 1.6; | |
| } | |
| /* ── ActionPad (Demo) ───────────────────────────────────────── */ | |
| .tb-action-pad { | |
| background: var(--bg-elev-1); | |
| border: 1px solid var(--rule); | |
| padding: var(--space-4); | |
| margin: var(--space-3) 0; | |
| } | |
| .tb-action-pad h4 { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: 1.2em; | |
| margin: 0 0 var(--space-3); | |
| color: var(--ink); | |
| } | |
| /* ── Editorial section heading ──────────────────────────────── */ | |
| .tb-section-head { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: var(--space-3); | |
| margin: var(--space-7) 0 var(--space-4); | |
| padding-top: var(--space-4); | |
| border-top: 1px solid var(--rule); | |
| } | |
| @media (min-width: 760px) { | |
| .tb-section-head { grid-template-columns: 1fr 1fr; } | |
| } | |
| .tb-section-head .tb-section-eyebrow { margin: 0; } | |
| /* ── Tables ─────────────────────────────────────────────────── */ | |
| .tb-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin: var(--space-3) 0 var(--space-5); | |
| font-family: var(--type-body); | |
| font-size: 0.92em; | |
| border: 1px solid var(--rule); | |
| } | |
| .tb-table th, .tb-table td { | |
| padding: var(--space-3) var(--space-4); | |
| text-align: left; | |
| border-bottom: 1px solid var(--rule); | |
| vertical-align: top; | |
| } | |
| .tb-table tr:last-child td { border-bottom: none; } | |
| .tb-table th { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| text-transform: uppercase; | |
| letter-spacing: 0.22em; | |
| font-weight: 500; | |
| background: var(--bg-elev-1); | |
| } | |
| .tb-table tr:hover td { background: rgba(255, 255, 255, 0.02); } | |
| .tb-table td.mono, .tb-table th.mono { | |
| font-family: var(--type-mono); | |
| font-feature-settings: "tnum"; | |
| } | |
| .tb-table td code { | |
| background: rgba(255, 255, 255, 0.04) ; | |
| border: 1px solid var(--rule) ; | |
| color: var(--ink) ; | |
| padding: 1px 5px ; | |
| font-size: 0.92em; | |
| } | |
| /* ── Verifier strip ─────────────────────────────────────────── */ | |
| .tb-verifier-strip { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: var(--space-2); | |
| background: var(--bg-elev-1); | |
| border: 1px solid var(--rule); | |
| padding: var(--space-3) var(--space-4); | |
| margin: var(--space-4) 0; | |
| font-family: var(--type-mono); | |
| font-size: 0.82em; | |
| } | |
| .tb-verifier-strip .tb-vcheck { | |
| padding: 4px var(--space-2); | |
| background: var(--bg); | |
| color: var(--long); | |
| border: 1px solid rgba(132, 204, 22, 0.30); | |
| letter-spacing: 0.02em; | |
| } | |
| .tb-verifier-strip .tb-vcheck.fail { | |
| color: var(--short); | |
| border-color: var(--short-mute); | |
| } | |
| .tb-verifier-strip .tb-vcheck.warn { | |
| color: var(--accent); | |
| border-color: var(--accent-lo); | |
| } | |
| /* ── Code blocks (Markdown rendered) ────────────────────────── */ | |
| .gradio-container pre, .gradio-container code { | |
| background: var(--bg-elev-1) ; | |
| color: var(--ink) ; | |
| font-family: var(--type-mono) ; | |
| font-feature-settings: "tnum"; | |
| border: 1px solid var(--rule); | |
| } | |
| .gradio-container pre { | |
| padding: var(--space-3) var(--space-4) ; | |
| line-height: 1.65; | |
| } | |
| .gradio-container :not(pre) > code { | |
| padding: 1px 5px ; | |
| font-size: 0.88em; | |
| } | |
| /* ── Markdown native styles ─────────────────────────────────── */ | |
| .gradio-container .prose, | |
| .gradio-container .markdown, | |
| .gradio-container .md { | |
| color: var(--ink); | |
| font-family: var(--type-body); | |
| line-height: 1.7; | |
| } | |
| .gradio-container .prose p, | |
| .gradio-container .markdown p { color: var(--ink-mute); } | |
| .gradio-container h2 { | |
| font-family: var(--type-display) ; | |
| font-weight: 500; | |
| font-variation-settings: "opsz" 96, "SOFT" 0, "WONK" 1; | |
| color: var(--ink); | |
| letter-spacing: -0.015em; | |
| margin: var(--space-6) 0 var(--space-3); | |
| font-size: clamp(1.6em, 2.5vw, 2.2em); | |
| line-height: 1.15; | |
| } | |
| .gradio-container h3 { | |
| font-family: var(--type-display) ; | |
| font-weight: 500; | |
| color: var(--ink); | |
| margin: var(--space-5) 0 var(--space-2); | |
| letter-spacing: -0.01em; | |
| font-size: 1.3em; | |
| } | |
| .gradio-container blockquote { | |
| border-left: 2px solid var(--accent); | |
| padding: var(--space-2) var(--space-4); | |
| margin: var(--space-4) 0; | |
| color: var(--ink-mute); | |
| background: var(--bg-elev-1); | |
| font-style: italic; | |
| font-family: var(--type-display); | |
| } | |
| /* ── Buttons ────────────────────────────────────────────────── */ | |
| .gradio-container button.primary, | |
| .gradio-container button[data-testid].primary { | |
| background: var(--ink) ; | |
| color: var(--bg) ; | |
| border: 1px solid var(--ink) ; | |
| font-family: var(--type-mono) ; | |
| font-size: 11px ; | |
| letter-spacing: 0.22em ; | |
| text-transform: uppercase ; | |
| border-radius: 0 ; | |
| padding: var(--space-3) var(--space-4) ; | |
| transition: background var(--dur-fast) var(--ease-out), | |
| color var(--dur-fast) var(--ease-out) ; | |
| } | |
| .gradio-container button.primary:hover, | |
| .gradio-container button[data-testid].primary:hover { | |
| background: var(--accent) ; | |
| border-color: var(--accent) ; | |
| } | |
| .gradio-container button.secondary, | |
| .gradio-container button[data-testid].secondary { | |
| background: transparent ; | |
| color: var(--ink) ; | |
| border: 1px solid var(--rule-strong) ; | |
| font-family: var(--type-mono) ; | |
| font-size: 11px ; | |
| letter-spacing: 0.22em ; | |
| text-transform: uppercase ; | |
| border-radius: 0 ; | |
| padding: var(--space-3) var(--space-4) ; | |
| } | |
| .gradio-container button.secondary:hover { | |
| border-color: var(--ink) ; | |
| background: rgba(255, 255, 255, 0.04) ; | |
| } | |
| /* ── Inputs ─────────────────────────────────────────────────── */ | |
| .gradio-container input, | |
| .gradio-container textarea, | |
| .gradio-container select { | |
| background: var(--bg-elev-1) ; | |
| color: var(--ink) ; | |
| border: 1px solid var(--rule) ; | |
| border-radius: 0 ; | |
| font-family: var(--type-mono) ; | |
| } | |
| .gradio-container input:focus, | |
| .gradio-container textarea:focus { | |
| border-color: var(--accent) ; | |
| outline: none ; | |
| } | |
| .gradio-container label, | |
| .gradio-container .label { | |
| color: var(--ink-mute) ; | |
| font-family: var(--type-mono) ; | |
| font-size: 10px ; | |
| text-transform: uppercase ; | |
| letter-spacing: 0.22em ; | |
| } | |
| /* ── Mobile (390 wide) ──────────────────────────────────────── */ | |
| @media (max-width: 600px) { | |
| .main, .contain { padding: 0 var(--space-3) var(--space-6) ; } | |
| .tb-header { padding: var(--space-6) 0 var(--space-5); } | |
| .tb-header h1 { font-size: 2.4rem; } | |
| .tb-header-meta { gap: 8px; font-size: 10px; letter-spacing: 0.22em; } | |
| .tb-hero { grid-template-columns: 1fr; gap: var(--space-4); } | |
| .tb-reward-row { | |
| grid-template-columns: 1fr 1fr; | |
| grid-template-areas: | |
| "name value" | |
| "bar bar" | |
| "bound bound"; | |
| } | |
| .tb-reward-name { grid-area: name; } | |
| .tb-reward-value { grid-area: value; } | |
| .tb-reward-bar-track { grid-area: bar; } | |
| .tb-reward-bound { grid-area: bound; } | |
| .tb-timeline-rail, .tb-timeline-axis { | |
| grid-template-columns: 60fr 0 120fr 0 252fr; | |
| } | |
| } | |
| /* ============================================================ | |
| Landing surface (raeth-style cinematic scroll) | |
| Sticky nav + hero + numbered sections + final CTA + reveal motion. | |
| ============================================================ */ | |
| /* ── Sticky frosted nav ─────────────────────────────────────── */ | |
| .tb-nav { | |
| position: sticky; | |
| top: 0; | |
| z-index: 60; | |
| background: rgba(0, 0, 0, 0.62); | |
| -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(160%); | |
| backdrop-filter: blur(var(--blur-glass)) saturate(160%); | |
| border-bottom: 1px solid var(--rule); | |
| padding: 14px var(--space-4); | |
| margin: 0 calc(var(--space-4) * -1) var(--space-5); | |
| } | |
| .tb-nav-row { | |
| max-width: 1280px; | |
| margin: 0 auto; | |
| display: grid; | |
| grid-template-columns: auto 1fr auto; | |
| align-items: center; | |
| gap: var(--space-5); | |
| } | |
| .tb-nav-lockup { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| color: var(--ink); | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| text-decoration: none; | |
| } | |
| .tb-nav-lockup::before { | |
| content: ""; | |
| width: 8px; | |
| height: 8px; | |
| background: var(--accent); | |
| box-shadow: 0 0 12px var(--accent-lo); | |
| flex-shrink: 0; | |
| } | |
| .tb-nav-lockup .tb-nav-lockup-mute { | |
| color: var(--ink-faint); | |
| margin-left: 6px; | |
| } | |
| .tb-nav-anchors { | |
| display: none; | |
| justify-content: center; | |
| align-items: center; | |
| gap: var(--space-4); | |
| min-width: 0; | |
| } | |
| @media (min-width: 980px) { | |
| .tb-nav-anchors { display: flex; } | |
| } | |
| .tb-nav-anchor { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| letter-spacing: 0.18em; | |
| text-transform: uppercase; | |
| color: var(--ink-mute); | |
| text-decoration: none; | |
| transition: color var(--dur-fast) var(--ease-out); | |
| white-space: nowrap; | |
| } | |
| .tb-nav-anchor .tb-nav-anchor-num { | |
| color: var(--ink-faint); | |
| margin-right: 6px; | |
| transition: color var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-nav-anchor:hover { color: var(--ink); } | |
| .tb-nav-anchor:hover .tb-nav-anchor-num { color: var(--accent); } | |
| .tb-nav-cta { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| color: var(--accent); | |
| border: 1px solid var(--accent-lo); | |
| padding: 8px 14px; | |
| text-decoration: none; | |
| transition: background var(--dur-fast) var(--ease-out), | |
| color var(--dur-fast) var(--ease-out), | |
| border-color var(--dur-fast) var(--ease-out); | |
| white-space: nowrap; | |
| } | |
| .tb-nav-cta:hover { | |
| color: var(--bg); | |
| background: var(--accent); | |
| border-color: var(--accent); | |
| } | |
| /* ── Landing hero ───────────────────────────────────────────── */ | |
| .tb-landing { | |
| min-height: 88vh; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| padding: var(--space-7) 0 var(--space-6); | |
| position: relative; | |
| isolation: isolate; | |
| } | |
| .tb-landing-eyebrow { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-faint); | |
| text-transform: uppercase; | |
| letter-spacing: 0.32em; | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| align-items: center; | |
| margin-bottom: var(--space-5); | |
| } | |
| .tb-landing-eyebrow .is-accent { color: var(--accent); } | |
| .tb-landing-eyebrow .tb-dot { | |
| color: var(--ink-ghost); | |
| user-select: none; | |
| } | |
| .tb-landing-title { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: clamp(3.2rem, 9vw, 7.2rem); | |
| line-height: 0.94; | |
| letter-spacing: -0.035em; | |
| color: var(--ink); | |
| margin: 0; | |
| max-width: 16ch; | |
| font-variation-settings: "opsz" 144, "SOFT" 0, "WONK" 1; | |
| } | |
| .tb-landing-title .tb-faded { color: var(--ink-ghost); font-weight: 500; } | |
| .tb-landing-title .tb-accent { | |
| color: var(--accent); | |
| font-style: italic; | |
| font-weight: 500; | |
| } | |
| .tb-landing-sub { | |
| font-family: var(--type-body); | |
| font-size: clamp(1rem, 1.4vw, 1.18em); | |
| line-height: 1.55; | |
| color: var(--ink-mute); | |
| max-width: 60ch; | |
| margin: var(--space-5) 0 0; | |
| } | |
| .tb-landing-sub em { color: var(--ink); font-style: italic; } | |
| .tb-landing-actions { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: var(--space-3); | |
| margin-top: var(--space-5); | |
| } | |
| .tb-cta { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| padding: 14px 22px; | |
| text-decoration: none; | |
| transition: background var(--dur-fast) var(--ease-out), | |
| color var(--dur-fast) var(--ease-out), | |
| border-color var(--dur-fast) var(--ease-out), | |
| transform var(--dur-fast) var(--ease-out); | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .tb-cta-primary { | |
| background: var(--ink); | |
| color: var(--bg); | |
| border: 1px solid var(--ink); | |
| } | |
| .tb-cta-primary:hover { | |
| background: var(--accent); | |
| border-color: var(--accent); | |
| color: var(--bg); | |
| } | |
| .tb-cta-ghost { | |
| background: transparent; | |
| color: var(--ink); | |
| border: 1px solid var(--rule-strong); | |
| } | |
| .tb-cta-ghost:hover { | |
| border-color: var(--ink); | |
| background: rgba(255, 255, 255, 0.04); | |
| } | |
| .tb-cta .tb-cta-arrow { | |
| font-family: var(--type-mono); | |
| transition: transform var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-cta:hover .tb-cta-arrow { transform: translateX(3px); } | |
| /* ── Live metrics strip (hero footer) ───────────────────────── */ | |
| .tb-metrics-strip { | |
| margin-top: var(--space-7); | |
| padding-top: var(--space-4); | |
| border-top: 1px solid var(--rule); | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 1px; | |
| background: var(--rule); | |
| } | |
| @media (min-width: 720px) { | |
| .tb-metrics-strip { grid-template-columns: repeat(3, 1fr); } | |
| } | |
| @media (min-width: 1080px) { | |
| .tb-metrics-strip { grid-template-columns: repeat(6, 1fr); } | |
| } | |
| .tb-metrics-cell { | |
| background: var(--bg); | |
| padding: var(--space-4) var(--space-3); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| } | |
| .tb-metrics-key { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| } | |
| .tb-metrics-val { | |
| font-family: var(--type-display); | |
| font-feature-settings: "tnum"; | |
| font-weight: 500; | |
| font-size: clamp(1.6rem, 2.4vw, 2.1rem); | |
| color: var(--ink); | |
| letter-spacing: -0.02em; | |
| line-height: 1; | |
| font-variation-settings: "opsz" 96; | |
| } | |
| .tb-metrics-val.is-accent { color: var(--accent); } | |
| .tb-metrics-foot { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-mute); | |
| letter-spacing: 0.04em; | |
| } | |
| /* ── Numbered section (raeth pattern) ───────────────────────── */ | |
| .tb-numbered-section { | |
| border-top: 1px solid var(--rule); | |
| padding: var(--space-7) 0; | |
| scroll-margin-top: 96px; | |
| position: relative; | |
| } | |
| .tb-numbered-head { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: var(--space-3); | |
| margin-bottom: var(--space-5); | |
| } | |
| @media (min-width: 760px) { | |
| .tb-numbered-head { | |
| grid-template-columns: 96px 1fr; | |
| gap: var(--space-5); | |
| align-items: baseline; | |
| } | |
| } | |
| .tb-numbered-tag { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-faint); | |
| letter-spacing: 0.28em; | |
| text-transform: uppercase; | |
| } | |
| .tb-numbered-tag .is-accent { color: var(--accent); } | |
| .tb-numbered-title { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: clamp(2rem, 4.6vw, 3.4rem); | |
| line-height: 1.04; | |
| letter-spacing: -0.028em; | |
| color: var(--ink); | |
| margin: 0; | |
| max-width: 24ch; | |
| font-variation-settings: "opsz" 96, "SOFT" 0, "WONK" 1; | |
| } | |
| .tb-numbered-title .tb-faded { color: var(--ink-ghost); } | |
| .tb-numbered-title .tb-accent { | |
| color: var(--accent); | |
| font-style: italic; | |
| } | |
| .tb-numbered-sub { | |
| font-family: var(--type-body); | |
| font-size: 1.05em; | |
| line-height: 1.7; | |
| color: var(--ink-mute); | |
| margin: var(--space-3) 0 0; | |
| max-width: 60ch; | |
| } | |
| .tb-numbered-sub em { color: var(--ink); font-style: italic; } | |
| .tb-numbered-sub code { | |
| color: var(--accent-hi); | |
| background: rgba(34, 211, 238, 0.06) ; | |
| padding: 1px 5px ; | |
| border: 1px solid var(--accent-lo) ; | |
| font-size: 0.94em; | |
| } | |
| /* Two-column body (label rail + prose) inside a numbered section */ | |
| .tb-numbered-body { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: var(--space-5); | |
| } | |
| @media (min-width: 880px) { | |
| .tb-numbered-body { | |
| grid-template-columns: 96px 1fr; | |
| gap: var(--space-5); | |
| } | |
| } | |
| .tb-numbered-rail { | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| color: var(--ink-faint); | |
| letter-spacing: 0.24em; | |
| text-transform: uppercase; | |
| } | |
| .tb-numbered-rail .is-accent { color: var(--accent); } | |
| /* ── Defense list (single-row hairline rows) ────────────────── */ | |
| .tb-defense-list { | |
| margin: var(--space-3) 0 0; | |
| border-top: 1px solid var(--rule); | |
| } | |
| .tb-defense-row { | |
| display: grid; | |
| grid-template-columns: 64px 1fr; | |
| gap: var(--space-4); | |
| align-items: baseline; | |
| padding: var(--space-4) 0; | |
| border-bottom: 1px solid var(--rule); | |
| transition: background var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-defense-row:hover { background: rgba(255, 255, 255, 0.012); } | |
| .tb-defense-num { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--accent); | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| } | |
| .tb-defense-text { | |
| font-family: var(--type-body); | |
| font-size: 1.0em; | |
| color: var(--ink); | |
| line-height: 1.6; | |
| } | |
| .tb-defense-text strong { | |
| color: var(--ink); | |
| font-weight: 500; | |
| } | |
| .tb-defense-text .tb-defense-body { | |
| color: var(--ink-mute); | |
| font-size: 0.94em; | |
| margin-top: 4px; | |
| line-height: 1.55; | |
| display: block; | |
| } | |
| .tb-defense-text code { | |
| color: var(--accent-hi); | |
| background: rgba(34, 211, 238, 0.06) ; | |
| padding: 1px 5px ; | |
| border: 1px solid var(--accent-lo) ; | |
| font-size: 0.92em; | |
| } | |
| /* ── Final CTA ──────────────────────────────────────────────── */ | |
| .tb-final-cta { | |
| border-top: 1px solid var(--rule); | |
| padding: var(--space-8) 0 var(--space-7); | |
| text-align: center; | |
| margin-top: var(--space-6); | |
| } | |
| .tb-final-cta-title { | |
| font-family: var(--type-display); | |
| font-weight: 500; | |
| font-size: clamp(2rem, 5.6vw, 4.2rem); | |
| line-height: 1.05; | |
| letter-spacing: -0.028em; | |
| color: var(--ink); | |
| margin: 0 auto; | |
| max-width: 22ch; | |
| font-variation-settings: "opsz" 144, "SOFT" 0, "WONK" 1; | |
| } | |
| .tb-final-cta-title .tb-faded { color: var(--ink-ghost); } | |
| .tb-final-cta-title .tb-accent { | |
| color: var(--accent); | |
| font-style: italic; | |
| } | |
| .tb-final-cta-links { | |
| display: flex; | |
| flex-wrap: wrap; | |
| justify-content: center; | |
| gap: var(--space-5); | |
| margin-top: var(--space-5); | |
| } | |
| .tb-final-cta-link { | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-mute); | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| text-decoration: none; | |
| transition: color var(--dur-fast) var(--ease-out); | |
| border-bottom: 1px solid var(--rule); | |
| padding-bottom: 4px; | |
| } | |
| .tb-final-cta-link:hover { | |
| color: var(--accent); | |
| border-bottom-color: var(--accent); | |
| } | |
| /* ── Inline reward formula card variation (numbered teaser) ─── */ | |
| .tb-formula-row { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: var(--space-4); | |
| align-items: start; | |
| } | |
| @media (min-width: 980px) { | |
| .tb-formula-row { grid-template-columns: 1.4fr 1fr; } | |
| } | |
| /* ── Run-it block (curl reference) ──────────────────────────── */ | |
| .tb-curl { | |
| background: var(--bg-elev-1); | |
| border: 1px solid var(--rule); | |
| padding: var(--space-3) var(--space-4); | |
| margin: var(--space-4) 0; | |
| font-family: var(--type-mono); | |
| font-size: 0.85em; | |
| line-height: 1.7; | |
| color: var(--ink); | |
| overflow-x: auto; | |
| position: relative; | |
| } | |
| .tb-curl::before { | |
| content: "$ curl"; | |
| position: absolute; | |
| top: 0; | |
| right: var(--space-4); | |
| background: var(--bg); | |
| color: var(--accent); | |
| font-family: var(--type-mono); | |
| font-size: 10px; | |
| letter-spacing: 0.22em; | |
| padding: 4px var(--space-2); | |
| border-left: 1px solid var(--rule); | |
| border-right: 1px solid var(--rule); | |
| border-bottom: 1px solid var(--rule); | |
| text-transform: uppercase; | |
| } | |
| .tb-curl pre { | |
| background: transparent ; | |
| border: none ; | |
| margin: 0 ; | |
| padding: var(--space-3) 0 0 ; | |
| color: var(--ink) ; | |
| font-family: var(--type-mono) ; | |
| line-height: 1.7; | |
| overflow-x: auto; | |
| } | |
| .tb-curl .tb-curl-cmt { color: var(--ink-faint); } | |
| .tb-curl .tb-curl-flag { color: var(--accent-hi); } | |
| /* ── Reveal motion (IntersectionObserver-driven) ────────────── */ | |
| .tb-reveal { | |
| opacity: 0; | |
| transform: translateY(28px); | |
| filter: blur(8px); | |
| transition: | |
| opacity 720ms var(--motion-reveal), | |
| transform 720ms var(--motion-reveal), | |
| filter 720ms var(--motion-reveal); | |
| transition-delay: var(--tb-reveal-delay, 0ms); | |
| will-change: opacity, transform, filter; | |
| } | |
| .tb-reveal.is-in { | |
| opacity: 1; | |
| transform: translateY(0); | |
| filter: blur(0); | |
| } | |
| /* ── Hero parallax target (the ambient halo) ────────────────── */ | |
| .tb-landing-halo { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| z-index: -1; | |
| background: | |
| radial-gradient(ellipse 60% 40% at 50% 30%, | |
| rgba(34, 211, 238, 0.10), | |
| transparent 70%), | |
| radial-gradient(ellipse 40% 30% at 80% 70%, | |
| rgba(132, 204, 22, 0.045), | |
| transparent 70%); | |
| will-change: transform; | |
| } | |
| /* ── Numbered-section subnav link (jump to deep-dive tab) ───── */ | |
| .tb-deepdive-link { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 10px; | |
| margin-top: var(--space-4); | |
| font-family: var(--type-mono); | |
| font-size: 11px; | |
| color: var(--ink-mute); | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| text-decoration: none; | |
| border-bottom: 1px solid var(--rule); | |
| padding-bottom: 4px; | |
| transition: color var(--dur-fast) var(--ease-out), | |
| border-color var(--dur-fast) var(--ease-out); | |
| cursor: pointer; | |
| } | |
| .tb-deepdive-link:hover { | |
| color: var(--accent); | |
| border-bottom-color: var(--accent); | |
| } | |
| .tb-deepdive-link .tb-deepdive-arrow { | |
| transition: transform var(--dur-fast) var(--ease-out); | |
| } | |
| .tb-deepdive-link:hover .tb-deepdive-arrow { transform: translate(3px, -3px); } | |
| /* ── Reduced-motion: disable all reveals + parallax ─────────── */ | |
| @media (prefers-reduced-motion: reduce) { | |
| .tb-reveal { | |
| opacity: 1 ; | |
| transform: none ; | |
| filter: none ; | |
| transition: none ; | |
| } | |
| .tb-landing-halo { transform: none ; } | |
| } | |
| /* ── Mobile fine-tune (landing surface) ─────────────────────── */ | |
| @media (max-width: 600px) { | |
| .tb-nav { padding: 12px var(--space-3); margin: 0 calc(var(--space-3) * -1) var(--space-4); } | |
| .tb-nav-row { gap: var(--space-3); } | |
| .tb-landing { min-height: 78vh; padding: var(--space-6) 0 var(--space-5); } | |
| .tb-landing-eyebrow { gap: 8px; font-size: 10px; letter-spacing: 0.24em; } | |
| .tb-landing-title { font-size: clamp(2.4rem, 12vw, 3.6rem); } | |
| .tb-landing-actions .tb-cta { padding: 12px 18px; font-size: 10px; } | |
| .tb-metrics-strip { margin-top: var(--space-5); } | |
| .tb-numbered-section { padding: var(--space-6) 0; } | |
| .tb-numbered-title { font-size: clamp(1.8rem, 7vw, 2.4rem); } | |
| .tb-final-cta { padding: var(--space-6) 0 var(--space-5); } | |
| .tb-defense-row { grid-template-columns: 48px 1fr; gap: var(--space-3); } | |
| } | |
| /* ============================================================ | |
| CLEAN OVERRIDE: simpler aesthetic per latest direction | |
| - All titles in DM Sans (no Fraunces serif) | |
| - No grey-faded text in titles, solid white throughout | |
| - Emphasis via cyan underline, not italic + color shift | |
| - Decorative halo dropped | |
| - Sticky nav banner removed (top-level numbered anchors) | |
| ============================================================ */ | |
| .tb-landing-title, | |
| .tb-numbered-title, | |
| .tb-final-cta-title, | |
| .tb-section-title, | |
| .tb-hero-title, | |
| .tb-header-title, | |
| .tb-card-title, | |
| .tb-link-title, | |
| .tb-stat-cell-value, | |
| .tb-metrics-val, | |
| .tb-quote { | |
| font-family: var(--type-body) ; | |
| font-variation-settings: normal ; | |
| font-style: normal ; | |
| font-weight: 600; | |
| letter-spacing: -0.02em; | |
| } | |
| /* Section titles a touch lighter — keeps them clean, not bold-heavy */ | |
| .tb-numbered-title, | |
| .tb-final-cta-title, | |
| .tb-landing-title { | |
| font-weight: 600; | |
| letter-spacing: -0.025em; | |
| } | |
| /* No more grey-ghost faded color in any title; show full-weight white. */ | |
| .tb-landing-title .tb-faded, | |
| .tb-numbered-title .tb-faded, | |
| .tb-final-cta-title .tb-faded, | |
| .tb-section-title .tb-faded, | |
| .tb-hero-title .tb-faded, | |
| .tb-header-title .tb-faded, | |
| .tb-card-title .tb-faded { | |
| color: var(--ink) ; | |
| font-weight: inherit ; | |
| } | |
| /* Accent emphasis: cyan underline, NOT italic-colored. Replaces the old | |
| pattern of italicizing & recoloring the accent word. */ | |
| .tb-landing-title .tb-accent, | |
| .tb-numbered-title .tb-accent, | |
| .tb-final-cta-title .tb-accent, | |
| .tb-section-title .tb-accent, | |
| .tb-hero-title .tb-accent, | |
| .tb-header-title .tb-accent, | |
| .tb-card-title .tb-accent, | |
| .tb-quote .tb-accent { | |
| color: var(--ink) ; | |
| font-style: normal ; | |
| font-weight: inherit ; | |
| text-decoration: underline; | |
| text-decoration-color: var(--accent); | |
| text-decoration-thickness: 3px; | |
| text-underline-offset: 8px; | |
| text-decoration-skip-ink: none; | |
| } | |
| /* Eyebrow style stays mono, but drop the heavy-letter-spacing on the | |
| landing eyebrow for cleaner reading. */ | |
| .tb-landing-eyebrow { | |
| letter-spacing: 0.18em; | |
| } | |
| /* Quote: simple sans, lighter weight, indented rule. No italic. */ | |
| .tb-quote { | |
| font-style: normal ; | |
| font-weight: 500; | |
| font-size: 1.18em; | |
| line-height: 1.5; | |
| } | |
| /* Drop the decorative ambient halo; too busy for the new direction. */ | |
| .tb-landing-halo { display: none ; } | |
| /* Container background-image gradients off — solid black canvas. */ | |
| .gradio-container { | |
| background-image: none ; | |
| } | |
| .gradio-container::before { | |
| display: none ; | |
| } | |
| /* No italic on .tb-numbered-sub em — use bold + underline accent instead. */ | |
| .tb-numbered-sub em, | |
| .tb-landing-sub em, | |
| .tb-card-body em { | |
| font-style: normal; | |
| font-weight: 600; | |
| color: var(--ink); | |
| } | |
| /* Reduce hover-state overlay variance; keep it minimal. */ | |
| .tb-card, | |
| .tb-statcard, | |
| .tb-link-card, | |
| .tb-layer, | |
| .tb-stat-cell, | |
| .tb-metric, | |
| .tb-defense-row { | |
| transition: background-color 200ms ease, border-color 200ms ease; | |
| } | |
| /* Defensive: never let .tb-reveal hide content. The earlier opacity:0 + | |
| blur(8) + translateY(28) initial state meant if motion.js didn't fire | |
| before Gradio mounted the tab, the whole landing stayed invisible. Force | |
| visible-by-default; .is-in still toggles for the subtle animation but | |
| it's a no-op now. */ | |
| .tb-reveal { | |
| opacity: 1 ; | |
| transform: none ; | |
| filter: none ; | |
| } | |