:root { --bg: #0a0b0d; --text: #f4f5f7; --muted: #8b8f98; /* inactive tokens, captions */ --dim: #5a5e66; /* separators, hairlines */ --accent: #38bdf8; /* active token, slider, play, progress */ --hairline: #1e2127; --ui: 'Inter', system-ui, -apple-system, sans-serif; --mono: 'IBM Plex Mono', ui-monospace, monospace; } * { margin:0; padding:0; box-sizing:border-box; } body { background: var(--bg); color: var(--text); font-family: var(--ui); font-weight: 400; line-height: 1.6; -webkit-font-smoothing: antialiased; } .wrap { max-width: 1200px; margin: 0 auto; padding: 1.5rem 2rem 2rem; } /* Header — one line, no hero */ .head { display:flex; justify-content:space-between; align-items:baseline; gap:1.5rem; flex-wrap:wrap; } .head h1 { font-size:1.5rem; font-weight:600; letter-spacing:-0.02em; } .head h1 .muted { color:var(--muted); font-weight:400; } .head-links { display:flex; gap:1.25rem; flex-shrink:0; } .head-links a { color:var(--muted); text-decoration:none; font-size:.95rem; display:inline-flex; align-items:center; gap:.35rem; border-bottom:1px solid transparent; transition:.15s; } .head-links a:hover { color:var(--text); border-bottom-color:var(--dim); } .head-links svg { width:14px; height:14px; } .caption { margin-top:.5rem; font-family:var(--mono); font-size:.95rem; color:var(--muted); letter-spacing:.02em; } /* Plot — globes float on the dark canvas */ .viz-wrap { position:relative; } #plot { width:100%; height:clamp(280px, 37vw, 440px); margin:0 0 .1rem; } /* Spectra panel — overlays the right half of #plot in spectra mode */ #spectra-panel { position:absolute; left:50%; top:0; width:50%; height:100%; background:var(--bg); z-index:5; padding:.75rem .5rem .75rem 1.5rem; display:flex; flex-direction:column; } #spectra-panel.hidden { display:none; } #spectra-chart { flex:1; min-height:0; display:block; } .spectra-msg { flex:1; display:flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:.75rem; color:var(--muted); } /* Globe labels — positioned over each sphere center */ .globe-labels { position:relative; width:100%; height:1.3rem; margin-top:1.1rem; } .globe-label { position:absolute; transform:translateX(-50%); font-family:var(--mono); font-size:.95rem; color:#aab0bb; letter-spacing:.08em; white-space:nowrap; } .globe-label:first-child { left:24.25%; } .globe-label:last-child { left:75.75%; } .drag-hint { font-family:var(--mono); font-size:.7rem; color:var(--dim); text-align:center; margin:.12rem 0 0; letter-spacing:.04em; } /* Thin streamed progress / status bar */ .status { position:relative; height:30px; border-radius:6px; overflow:hidden; background:rgba(56,189,248,0.06); border:1px solid rgba(56,189,248,0.18); display:flex; align-items:center; padding:0 .9rem; font-family:var(--mono); font-size:.72rem; color:var(--muted); transition:opacity .3s; } .status::before { content:''; position:absolute; inset:0; width:var(--p,0%); background:rgba(56,189,248,0.16); transition:width .25s ease; } .status span { position:relative; z-index:1; } .status.hidden { opacity:0; pointer-events:none; height:0; border:0; margin:0; } /* Controls */ .controls { display:flex; flex-direction:column; gap:.7rem; margin-top:.6rem; } .row { display:flex; align-items:baseline; gap:.5rem 1.5rem; flex-wrap:wrap; } .row > .label { font-family:var(--mono); font-size:.85rem; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; min-width:9.5rem; flex-shrink:0; } /* Inline text-token selector */ .tokens { display:flex; flex-wrap:wrap; align-items:baseline; flex:1; } .token { font-size:.95rem; color:var(--muted); cursor:pointer; transition:color .15s; white-space:nowrap; } .token:hover { color:var(--text); } .token.active { color:var(--text); text-decoration:underline; text-decoration-color:var(--accent); text-underline-offset:4px; text-decoration-thickness:1.5px; } .sep { color:var(--dim); pointer-events:none; padding:0 .5rem; } /* Hairline slider (members) */ .slider-row input[type=range] { -webkit-appearance:none; appearance:none; flex:1; max-width:220px; height:16px; background:transparent; cursor:pointer; } input[type=range]::-webkit-slider-runnable-track { height:1px; background:var(--dim); } input[type=range]::-moz-range-track { height:1px; background:var(--dim); } input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:12px; height:12px; margin-top:-6px; border-radius:50%; background:var(--accent); } input[type=range]::-moz-range-thumb { width:12px; height:12px; border:0; border-radius:50%; background:var(--accent); } .val { font-family:var(--mono); font-size:.9rem; color:var(--text); min-width:2ch; } /* Timeline + play */ .timeline-controls { display:flex; align-items:center; gap:.75rem; flex:1; } .timeline-controls #timeline { flex:1; } .play { font-family:var(--mono); font-size:.78rem; color:var(--accent); background:none; border:0; cursor:pointer; padding:0; letter-spacing:.04em; } .play:hover { color:var(--text); } .lead { font-family:var(--mono); font-size:.9rem; color:var(--muted); min-width:9ch; } @media (max-width:720px) { .wrap { padding:1.5rem 1.1rem 3rem; } .row > .label { min-width:100%; } #plot { height:78vw; } }