/* Bench Labs Leaderboard — transferred from Members space style - Dark space theme, glass cards, starfield background - Keeps leaderboard functional classes while adopting Members tokens */ :root { --bg-0: #05060a; --bg-1: #0a0c14; --ink: #e8ecf5; --muted: #8b93a8; --muted-2: #5c6478; --line: rgba(255,255,255,0.08); --line-strong: rgba(255,255,255,0.16); --accent: #7c9cff; --accent-soft: rgba(124,156,255,0.32); --accent-2: #a9beff; --green: #7aff9c; --gold: #e3b341; --silver: #b1bac4; --bronze: #d18b47; --success: #7aff9c; --card-bg: rgba(255,255,255,0.02); --card-bg-hover: rgba(124,156,255,0.06); --bg-warm: rgba(255,255,255,0.03); --radius: 16px; --radius-sm: 12px; --radius-pill: 999px; --shadow-sm: 0 1px 0 rgba(255,255,255,0.04) inset, 0 8px 24px rgba(0,0,0,0.35); --t: 0.25s cubic-bezier(0.4,0,0.2,1); --score-base: 139,147,168; /* #8b93a8 muted */ --score-best: 122,255,156; /* #7aff9c bright */ color-scheme: dark; } * { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } html, body { background: var(--bg-0); } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--ink); font-size: 15px; line-height: 1.5; overflow-x: hidden; -webkit-font-smoothing: antialiased; scrollbar-width: none; /* Firefox */ -ms-overflow-style: none; /* old Edge/IE */ } /* WebKit (Chrome/Safari/Edge): hide the page scrollbar entirely while keeping the page scrollable — width:0 removes it from layout too. */ html::-webkit-scrollbar, body::-webkit-scrollbar { width: 0; height: 0; display: none; } code, pre { font-family: "SF Mono", "Cascadia Code", "Fira Code", Consolas, monospace; } ::selection { background: rgba(124,156,255,0.35); } /* =========== Space background =========== */ .space-bg { position: fixed; inset: 0; z-index: 0; background: radial-gradient(ellipse 80% 50% at 50% -10%, rgba(90,100,180,0.18) 0%, transparent 60%), radial-gradient(ellipse 60% 40% at 85% 100%, rgba(120,80,180,0.12) 0%, transparent 60%), linear-gradient(180deg, var(--bg-0) 0%, var(--bg-1) 100%); pointer-events: none; } .stars { position: fixed; inset: 0; z-index: 0; pointer-events: none; display: block; width: 100%; height: 100%; } @media (prefers-reduced-motion: reduce) { .stars { opacity: 0.6; } } /* =========== Entry animations =========== */ .fade, .anim { opacity: 0; animation: fadeIn 0.6s ease both; } .d1 { animation-delay: .05s; } .d2 { animation-delay: .12s; } .d3 { animation-delay: .18s; } .d4 { animation-delay: .24s; } .d5 { animation-delay: .3s; } .d6 { animation-delay: .36s; } .d7 { animation-delay: .42s; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @media (prefers-reduced-motion: reduce) { .fade, .anim { animation: none; opacity: 1; } } .rotating-headline { display: inline-block; transition: opacity 0.4s ease, transform 0.4s ease; will-change: opacity, transform; } .rotating-headline.rolling-out { opacity: 0; transform: translateY(-0.5em); } .rotating-headline.rolling-in { opacity: 0; transform: translateY(0.5em); } @media (prefers-reduced-motion: reduce) { .rotating-headline { transition: opacity 0.3s ease; } .rotating-headline.rolling-out, .rotating-headline.rolling-in { transform: none; } } /* =========== Layout helpers =========== */ .shell { max-width: 1080px; margin: 0 auto; width: 100%; } a { color: var(--accent); text-decoration: none; transition: color 0.15s ease; } a:hover { color: var(--accent-2); text-decoration: none; } /* eyebrow */ .eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); } .eyebrow a { color: var(--muted); } .eyebrow a:hover { color: var(--ink); } .eyebrow-sep { color: var(--muted-2); } /* hero */ .hero h1 { font-family: 'Newsreader', serif; font-style: italic; font-weight: 400; letter-spacing: -0.02em; text-shadow: 0 2px 20px rgba(0,0,0,0.5); } .subtitle { color: var(--muted); text-shadow: 0 1px 12px rgba(0,0,0,0.45); } .subtitle strong { color: var(--ink); font-weight: 500; } /* =========== Controls =========== */ .controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 1rem; width: 100%; position: relative; z-index: 30; } .chip-row { display: flex; flex-wrap: wrap; gap: 8px; flex: 1; min-width: 180px; } .chip { border: 1px solid var(--line); background: rgba(255,255,255,0.07); color: var(--muted); border-radius: var(--radius-pill); padding: 6px 16px; font-size: 0.80rem; font-weight: 500; cursor: pointer; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: 0 2px 10px rgba(0,0,0,0.25); transition: var(--t); user-select: none; letter-spacing: 0.01em; } .chip:hover { border-color: var(--line-strong); color: var(--ink); background: rgba(255,255,255,0.1); box-shadow: 0 4px 14px rgba(0,0,0,0.3); } .chip.active { background: var(--accent); border-color: var(--accent); color: #05060a; font-weight: 600; } .chip .chip-note { opacity: 0.7; font-size: 0.68rem; margin-left: 5px; font-weight: 400; letter-spacing: 0.02em; border: 1px solid rgba(0,0,0,0.2); padding: 1px 6px; border-radius: var(--radius-pill); background: rgba(0,0,0,0.15); } .chip.active .chip-note { background: rgba(0,0,0,0.2); border-color: rgba(0,0,0,0.2); color: rgba(0,0,0,0.7); } .controls-right { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } .search-pill { display: inline-flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.07); border: 1px solid var(--line); border-radius: var(--radius-pill); padding: 7px 14px; min-height: 36px; box-sizing: border-box; color: var(--muted-2); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: var(--shadow-sm); transition: var(--t); } .search-pill:hover { border-color: var(--line-strong); background: rgba(255,255,255,0.09); } .search-pill:focus-within { border-color: var(--accent-soft); box-shadow: 0 0 0 3px rgba(124,156,255,0.12), var(--shadow-sm); background: rgba(255,255,255,0.09); } .search-pill input { border: 0; background: transparent; outline: 0; color: var(--ink); font-size: 0.84rem; line-height: 1; width: 190px; font-family: 'Inter', sans-serif; } .search-pill input::placeholder { color: var(--muted-2); } .sort-pill { display: inline-flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.07); border: 1px solid var(--line); border-radius: var(--radius-pill); padding: 7px 12px 7px 14px; min-height: 36px; box-sizing: border-box; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: var(--shadow-sm); transition: var(--t); position: relative; } .sort-pill:hover { border-color: var(--line-strong); background: rgba(255,255,255,0.09); } .sort-pill:focus-within, .sort-pill.open { border-color: var(--accent-soft); box-shadow: 0 0 0 3px rgba(124,156,255,0.12), var(--shadow-sm); background: rgba(255,255,255,0.09); } .sort-label { font-size: 0.74rem; color: var(--muted-2); font-weight: 500; letter-spacing: 0.04em; text-transform: uppercase; } /* Real select kept in DOM for script.js compatibility (change events / .value), but visually hidden — the custom trigger+menu below is what renders. */ #sort-select { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } /* Custom trigger button — replaces native