/* ================================================================ Theme definitions ================================================================ */ :root, [data-theme="dark"] { --bg-base: #000000; --bg-raised: #1c1c1e; --bg-card: #2c2c2e; --bg-hover: #3a3a3c; --border: #3a3a3c; --text-primary: #f5f5f7; --text-secondary: #aeaeb2; --text-tertiary: #636366; --blue: #0a84ff; --green: #30d158; --orange: #ff9f0a; --red: #ff453a; --teal: #5ac8fa; } [data-theme="light"] { --bg-base: #f5f5f7; --bg-raised: #ffffff; --bg-card: #fafafa; --bg-hover: #ebebed; --border: #d2d2d7; --text-primary: #1d1d1f; --text-secondary: #6e6e73; --text-tertiary: #86868b; --blue: #0071e3; --green: #1a7f37; --orange: #b06000; --red: #c0392b; --teal: #0077b6; } /* ================================================================ Base layout ================================================================ */ html, body { background: var(--bg-base); margin: 0; padding: 0; width: 100%; overflow-x: hidden; transition: background-color 0.2s ease; color: var(--text-primary); font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", Arial, sans-serif; } * { box-sizing: border-box; } .inner { max-width: 1100px; margin-left: auto; margin-right: auto; padding-left: 20px; padding-right: 20px; } /* ================================================================ Header ================================================================ */ #page-header { background: var(--bg-raised); border-bottom: 0.5px solid var(--border); padding: 1.4rem 0; position: sticky; top: 0; z-index: 1000; width: 100%; } #header-container { display: flex; align-items: center; max-width: 1100px; margin: 0 auto; padding: 0 20px; width: 100%; } #vi-logo { width: 56px; height: 56px; object-fit: contain; flex-shrink: 0; margin-right: 1.25rem; display: block; background: transparent; } #centre-container { display: flex; flex-direction: column; justify-content: center; } #centre-container h1 { font-size: 1.3rem; font-weight: 600; color: var(--text-primary); margin: 0 0 5px 0; letter-spacing: -0.3px; line-height: 1; } #centre-container p { font-size: 0.85rem; color: var(--text-secondary); margin: 0; line-height: 1; } #theme-toggle { background: var(--bg-card); border: 0.5px solid var(--border); border-radius: 50%; width: 38px; height: 38px; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; color: var(--text-secondary); margin-left: auto; } #theme-toggle:hover { background: var(--bg-hover); color: var(--text-primary); } #theme-toggle svg { width: 18px; height: 18px; transition: stroke-width 0.2s ease; fill: none; } [data-theme="light"] #theme-toggle { background: #ffffff; border-color: #d2d2d7; } [data-theme="light"] #theme-toggle:hover { background: #e8e8ed; } [data-theme="light"] #theme-toggle svg { stroke: #000000; stroke-width: 2.2px; } /* ================================================================ Intro / stats ================================================================ */ .intro-section { padding-top: 2.5rem; text-align: center; } .intro-text { font-size: 0.95rem; color: var(--text-secondary); line-height: 1.75; max-width: 720px; margin: 0 auto 1.5rem; } .intro-text strong { color: var(--text-primary); font-weight: 600; } .badges-container { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-bottom: 1.75rem; } .badges-container img { height: 22px; border-radius: 5px; } .stats-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; max-width: 520px; margin: 0 auto 2.5rem; } .stat-box { background: var(--bg-raised); border: 0.5px solid var(--border); border-radius: 14px; padding: 1.1rem 1rem; text-align: center; } .stat-value { font-size: 1.9rem; font-weight: 700; color: var(--blue); line-height: 1; letter-spacing: -1px; } .stat-label { font-size: 0.68rem; color: var(--text-tertiary); margin-top: 5px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; } @media (max-width: 768px) { .stats-container { grid-template-columns: repeat(2, 1fr); } } /* ================================================================ Tabs ================================================================ */ .tab-nav { border-bottom: 0.5px solid var(--border); margin-bottom: 1rem; display: flex; gap: 4px; } button.tab-btn { background: transparent; border: none; border-bottom: 2px solid transparent; padding: 0.7rem 1rem; font-size: 0.85rem; font-weight: 500; cursor: pointer; color: var(--text-secondary); font-family: inherit; } button.tab-btn:hover { color: var(--text-primary); } button.tab-btn[aria-selected="true"] { color: var(--blue); border-bottom-color: var(--blue); } .tab-panel { display: none; } .tab-panel.active { display: block; } .tab-content-inner { padding: 0.75rem 0; background: transparent; } /* ================================================================ Info / warning boxes, findings list ================================================================ */ .info-box { background: rgba(10,132,255,0.08); border: 0.5px solid rgba(10,132,255,0.25); border-left: 3px solid var(--blue); border-radius: 10px; padding: 0.9rem 1.1rem; margin-bottom: 1.25rem; font-size: 0.85rem; color: var(--text-secondary); line-height: 1.6; } .info-box strong { color: var(--text-primary); font-weight: 600; } .warning-box { background: rgba(255,159,10,0.08); border: 0.5px solid rgba(255,159,10,0.25); border-left: 3px solid var(--orange); border-radius: 10px; padding: 0.9rem 1.1rem; margin-bottom: 1.25rem; font-size: 0.85rem; color: var(--text-secondary); line-height: 1.6; } .warning-box strong { color: var(--text-primary); font-weight: 600; } .findings-list { list-style: none; padding: 0; margin: 0 0 1.25rem; } .findings-list li { padding: 5px 0 5px 20px; font-size: 0.85rem; color: var(--text-secondary); line-height: 1.5; position: relative; } .findings-list li::before { content: ""; position: absolute; left: 0; top: 12px; width: 7px; height: 7px; border-radius: 50%; } .findings-list li.ok::before { background: var(--green); } .findings-list li.warn::before { background: var(--orange); } .findings-list li.bad::before { background: var(--red); } .findings-list li strong { color: var(--text-primary); font-weight: 600; } /* ================================================================ Tables ================================================================ */ .lb-table-wrap { background: var(--bg-raised); border-radius: 12px; border: 0.5px solid var(--border); overflow-x: auto; margin-bottom: 0.75rem; } .lb-table { width: 100%; border-collapse: collapse; font-size: 0.82rem; min-width: 600px; } .lb-table thead tr { background: var(--bg-card); border-bottom: 0.5px solid var(--border); } .lb-table th { padding: 9px 16px; text-align: left; font-size: 0.68rem; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.5px; white-space: nowrap; } .lb-table th.right { text-align: right; } .lb-table td { padding: 13px 16px; border-bottom: 0.5px solid var(--border); vertical-align: middle; color: var(--text-primary); } .lb-table th:first-child, .lb-table td:first-child { min-width: 400px; } .lb-table td.right { text-align: right; font-variant-numeric: tabular-nums; } .lb-table tbody tr:last-child td { border-bottom: none; } .lb-table tbody tr:hover td { background: var(--bg-hover); } .table-note { font-size: 0.75rem; color: var(--text-secondary); margin-top: 6px; } /* ================================================================ Model cell, value colors, pills ================================================================ */ .model-name { font-weight: 600; font-size: 0.875rem; color: var(--text-primary); } .model-sub { font-size: 0.71rem; color: var(--text-secondary); margin-top: 3px; } .val-best { color: var(--green); font-weight: 600; } .val-mid { color: var(--text-primary); } .val-low { color: var(--red); } .val-warn { color: var(--orange); font-weight: 500; } .pill { display: inline-block; font-size: 0.65rem; font-weight: 600; padding: 2px 7px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.4px; } .pill-new { background: rgba(10,132,255,0.15); color: var(--blue); } .pill-legacy { background: rgba(99,99,102,0.3); color: var(--text-secondary); } /* ================================================================ Footer ================================================================ */ #footer { background: var(--bg-raised); border-top: 0.5px solid var(--border); padding: 1.25rem 0; margin-top: 3rem; width: 100%; } #footer-container { text-align: center; font-size: 0.78rem; max-width: 1100px; margin: 0 auto; padding: 0 20px; } #footer-container .footer-title { color: var(--text-primary); font-weight: 600; margin-bottom: 6px; } #footer-container a { color: var(--blue); text-decoration: none; margin: 0 6px; } #footer-container a:hover { text-decoration: underline; } /* ================================================================ About section ================================================================ */ .about-text { color: var(--text-secondary); line-height: 1.7; font-size: 0.9rem; } .about-text h2 { font-size: 1.05rem; margin-top: 1.5rem; color: var(--text-primary); font-weight: 600; } .about-text h3 { font-size: 0.9rem; margin-top: 1.2rem; color: var(--text-primary); font-weight: 600; } .about-text strong { color: var(--text-primary); font-weight: 600; } .about-text code { font-size: 0.78rem; background: var(--bg-card); color: var(--teal); padding: 2px 6px; border-radius: 4px; } .about-text .citation { overflow-x: auto; margin: 0.75rem 0 1.25rem; padding: 1rem; background: var(--bg-card); border: 0.5px solid var(--border); border-radius: 10px; } .about-text .citation code { padding: 0; background: transparent; color: var(--text-primary); white-space: pre; } .about-text a { color: var(--blue); } .about-text hr { border-color: var(--border); } .about-text ul { padding-left: 1.2rem; }