*, *::before, *::after { box-sizing: border-box; } html, body { margin: 0; padding: 0; } body { background: var(--bg-canvas); color: var(--text-primary); font-family: var(--font-sans); font-size: var(--text-md); line-height: var(--leading-normal); -webkit-font-smoothing: antialiased; } ::selection { background: var(--selection-bg); color: var(--selection-fg); } a { color: var(--text-accent); text-decoration: none; } a:hover { text-decoration: underline; text-underline-offset: 3px; } :focus-visible { outline: none; box-shadow: var(--ring-focus); border-radius: var(--radius-sm); } .page { max-width: var(--container-xl); margin: 0 auto; padding: clamp(1.25rem, 4vw, 4rem); } .card { padding: clamp(2.5rem, 5vw, 4.5rem) 0; border-bottom: var(--border-hair) solid var(--border-subtle); } .card:last-of-type { border-bottom: 0; } .eyebrow { display: flex; align-items: baseline; gap: var(--space-3); font-family: var(--font-mono); font-size: var(--text-2xs); font-weight: var(--weight-medium); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--text-muted); margin-bottom: var(--space-6); } .eyebrow .tick { color: var(--accent); } .display { font-family: var(--font-display); font-weight: var(--weight-regular); font-size: clamp(3.5rem, 9vw, var(--text-7xl)); line-height: var(--leading-tight); letter-spacing: var(--tracking-tighter); margin: 0 0 var(--space-5); } .display-md { font-family: var(--font-display); font-weight: var(--weight-regular); font-size: clamp(2rem, 4.5vw, var(--text-5xl)); line-height: var(--leading-tight); letter-spacing: var(--tracking-tight); margin: 0 0 var(--space-5); } .display .dot { color: var(--accent); } .lead { font-size: clamp(var(--text-lg), 2vw, var(--text-xl)); line-height: var(--leading-relaxed); color: var(--text-secondary); max-width: 46em; margin: 0; } .lead .accent { color: var(--text-accent); } /* Research preview banner */ .preview-banner { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-2) var(--space-4); margin: 0 0 var(--space-8); padding: var(--space-3) var(--space-4); border: var(--border-hair) solid var(--border-subtle); border-left: 3px solid var(--warning); border-radius: var(--radius-md); background: var(--bg-surface); font-size: var(--text-sm); color: var(--text-secondary); } .preview-banner strong { font-family: var(--font-mono); font-size: var(--text-2xs); font-weight: var(--weight-medium); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--warning); } /* Demo panes */ .demo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: stretch; } @media (max-width: 880px) { .demo-grid { grid-template-columns: 1fr; } } .pane { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; } .pane-label { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); font-family: var(--font-mono); font-size: var(--text-2xs); font-weight: var(--weight-medium); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--text-muted); } textarea { width: 100%; min-height: 280px; flex: 1; resize: vertical; padding: var(--space-4); border: var(--border-hair) solid var(--border-default); border-radius: var(--radius-lg); background: var(--bg-surface); box-shadow: var(--shadow-inset); color: var(--text-primary); font-family: var(--font-mono); font-size: var(--text-sm); line-height: var(--leading-relaxed); } textarea:focus-visible { box-shadow: var(--shadow-inset), var(--ring-focus); } .out { min-height: 280px; flex: 1; padding: var(--space-4); border: var(--border-hair) solid var(--border-subtle); border-radius: var(--radius-lg); background: var(--bg-raised); font-size: var(--text-md); line-height: var(--leading-relaxed); white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; } .out:empty::before { content: attr(data-placeholder); font-family: var(--font-mono); font-size: var(--text-sm); color: var(--text-faint); } .controls { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); } .chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); } .chips-label { font-family: var(--font-mono); font-size: var(--text-2xs); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--text-muted); } .chip { padding: 0.4rem 0.85rem; border: var(--border-hair) solid var(--border-default); border-radius: var(--radius-full); background: var(--bg-surface); color: var(--text-secondary); font-family: var(--font-mono); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); cursor: pointer; transition: var(--transition-colors); } .chip:hover { background: var(--bg-sunken); color: var(--text-primary); } .chip[aria-pressed="true"] { border-color: var(--accent); color: var(--text-accent); background: var(--bg-accent-soft); } .run-btn { height: var(--control-lg); padding: 0 var(--space-8); border: 0; border-radius: var(--radius-md); background: var(--accent); color: var(--accent-contrast); font-family: var(--font-sans); font-size: var(--text-base); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-wide); cursor: pointer; transition: var(--transition-colors); } .run-btn:hover { background: var(--accent-hover); } .run-btn:disabled { opacity: 0.55; cursor: wait; } .ghost-btn { height: 1.75rem; padding: 0 var(--space-3); border: var(--border-hair) solid var(--border-default); border-radius: var(--radius-full); background: transparent; color: var(--text-muted); font-family: var(--font-mono); font-size: var(--text-2xs); letter-spacing: var(--tracking-wider); text-transform: uppercase; cursor: pointer; transition: var(--transition-colors); } .ghost-btn:hover { color: var(--text-accent); border-color: var(--accent); } .switch { display: inline-flex; align-items: center; gap: var(--space-2); font-family: var(--font-mono); font-size: var(--text-2xs); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--text-muted); cursor: pointer; user-select: none; } .switch input { appearance: none; width: 2.1rem; height: 1.15rem; margin: 0; border-radius: var(--radius-full); border: var(--border-hair) solid var(--border-default); background: var(--bg-sunken); position: relative; cursor: pointer; transition: var(--transition-colors); } .switch input::after { content: ""; position: absolute; top: 1px; left: 1px; width: 0.95rem; height: 0.95rem; border-radius: var(--radius-full); background: var(--text-muted); transition: transform var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-standard); } .switch input:checked { background: var(--accent); border-color: var(--accent); } .switch input:checked::after { transform: translateX(0.95rem); background: var(--accent-contrast); } .status { display: flex; align-items: center; gap: var(--space-2); min-height: 1.5rem; font-family: var(--font-mono); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); color: var(--text-muted); } .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--space-5); margin-top: var(--space-8); border-top: var(--border-hair) solid var(--border-subtle); padding-top: var(--space-5); } .stats[hidden] { display: none; } .stat { display: flex; flex-direction: column; gap: var(--space-1); } .stat .num { font-family: var(--font-display); font-size: var(--text-2xl); line-height: var(--leading-none); font-variant-numeric: tabular-nums; } .stat .label { font-family: var(--font-mono); font-size: var(--text-2xs); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--text-muted); } .table-scroll { overflow-x: auto; } /* Swarm loader (design-system tokens/swarm.css) */ .swarm { display: none; align-items: center; justify-content: center; } .swarm.visible { display: inline-flex; } .swarm svg { display: block; overflow: visible; width: 16px; height: 16px; } .swarm .dot { fill: var(--text-primary); transform-box: fill-box; transform-origin: center; } .swarm .core { fill: var(--accent); transform-box: fill-box; transform-origin: center; animation: swarm-core 1.6s ease-in-out infinite; } @keyframes swarm-core { 0%, 100% { transform: scale(0.82); opacity: 0.5; } 50% { transform: scale(1.16); opacity: 1; } } @media (prefers-reduced-motion: reduce) { .swarm .dot, .swarm .core { animation: none !important; opacity: 0.7 !important; transform: none !important; } } .brand-footer { display: flex; justify-content: space-between; gap: var(--space-4); padding: var(--space-4) 0; border-top: var(--border-hair) solid var(--border-subtle); font-family: var(--font-mono); font-size: var(--text-2xs); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--text-muted); }