@import 'tailwindcss'; /* SatelliteIndex design tokens — restrained dark space interface. Near-black navy planes, off-white ink, electric cyan accent used sparingly, violet as the secondary accent. Status: green = active, orange = degraded/uncertain, red = failed/warning, gray = inactive. Orbit classes get fixed hues shared by the globe, charts and badges (LEO cyan · MEO violet · GEO amber · HEO pink · other gray). */ :root { color-scheme: dark; --space: #060912; /* page plane */ --plane: #0b1020; /* panels, header */ --plane-2: #111830; /* hover wash, chips, inputs */ --plane-3: #182140; /* active chip, table hover */ --ink: #eaf0ff; --ink-2: #a3aec8; --ink-3: #6b7694; --rule: rgba(160, 180, 230, 0.12); --rule-strong: rgba(160, 180, 230, 0.28); --accent: #38d3ff; --accent-ink: #04111c; --accent-soft: rgba(56, 211, 255, 0.12); --accent-2: #8f7dff; --accent-2-soft: rgba(143, 125, 255, 0.14); --active: #38d17f; --active-soft: rgba(56, 209, 127, 0.14); --warn: #f5a524; --warn-soft: rgba(245, 165, 36, 0.14); --danger: #ff5c6c; --danger-soft: rgba(255, 92, 108, 0.14); --inactive: #7c869e; --inactive-soft: rgba(124, 134, 158, 0.16); --leo: #38d3ff; --meo: #8f7dff; --geo: #f5b544; --heo: #ff7ab6; --other: #7c869e; --series-1: #38d3ff; --series-2: #8f7dff; --series-3: #38d17f; --series-4: #f5b544; --series-5: #ff7ab6; --series-6: #5ea0ff; --series-7: #c9d3f2; --series-8: #ff5c6c; --radius: 6px; --radius-lg: 12px; --header-h: 60px; --tabbar-h: 58px; } @theme inline { --color-space: var(--space); --color-plane: var(--plane); --color-plane-2: var(--plane-2); --color-plane-3: var(--plane-3); --color-ink: var(--ink); --color-ink-2: var(--ink-2); --color-ink-3: var(--ink-3); --color-rule: var(--rule); --color-rule-strong: var(--rule-strong); --color-accent: var(--accent); --color-accent-ink: var(--accent-ink); --color-accent-soft: var(--accent-soft); --color-accent-2: var(--accent-2); --color-accent-2-soft: var(--accent-2-soft); --color-active: var(--active); --color-active-soft: var(--active-soft); --color-warn: var(--warn); --color-warn-soft: var(--warn-soft); --color-danger: var(--danger); --color-danger-soft: var(--danger-soft); --color-inactive: var(--inactive); --color-inactive-soft: var(--inactive-soft); --color-leo: var(--leo); --color-meo: var(--meo); --color-geo: var(--geo); --color-heo: var(--heo); --color-other: var(--other); --color-series-1: var(--series-1); --color-series-2: var(--series-2); --color-series-3: var(--series-3); --color-series-4: var(--series-4); --color-series-5: var(--series-5); --color-series-6: var(--series-6); --color-series-7: var(--series-7); --color-series-8: var(--series-8); --font-sans: var(--font-ui), ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif; --font-mono: var(--font-mono), ui-monospace, 'SF Mono', Menlo, monospace; --text-2xs: 0.6875rem; --text-2xs--line-height: 1rem; --radius-sm: var(--radius); --radius-lg: var(--radius-lg); } html { background: var(--space); color: var(--ink); font-family: var(--font-sans); -webkit-text-size-adjust: 100%; scroll-behavior: auto; } body { background: radial-gradient(1200px 600px at 70% -10%, rgba(56, 211, 255, 0.07), transparent 60%), radial-gradient(900px 500px at 0% 20%, rgba(143, 125, 255, 0.06), transparent 60%), var(--space); min-height: 100%; overflow-x: hidden; } ::selection { background: rgba(56, 211, 255, 0.35); } /* ---- utilities ---------------------------------------------------------------------------------------------- */ .container-x { padding-left: max(1rem, env(safe-area-inset-left)); padding-right: max(1rem, env(safe-area-inset-right)); } @media (min-width: 768px) { .container-x { padding-left: 2rem; padding-right: 2rem; } } .safe-bottom { padding-bottom: env(safe-area-inset-bottom, 0px); } .mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; letter-spacing: 0.01em; } .tnum { font-variant-numeric: tabular-nums; } .eyebrow { font-size: 0.6875rem; line-height: 1rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; } .display { font-weight: 650; letter-spacing: -0.03em; line-height: 0.98; } .panel { background: color-mix(in oklab, var(--plane) 88%, transparent); border: 1px solid var(--rule); border-radius: var(--radius-lg); backdrop-filter: blur(10px); } .hairline { border-color: var(--rule); } .grid-bg { background-image: linear-gradient(to right, rgba(160, 180, 230, 0.05) 1px, transparent 1px), linear-gradient(to bottom, rgba(160, 180, 230, 0.05) 1px, transparent 1px); background-size: 48px 48px; mask-image: radial-gradient(ellipse at center, black 40%, transparent 85%); } .scrollbar-thin { scrollbar-width: thin; scrollbar-color: var(--rule-strong) transparent; } .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { scrollbar-width: none; } .link { color: var(--ink); text-decoration-color: var(--rule-strong); text-underline-offset: 3px; } .link:hover { color: var(--accent); text-decoration: underline; } .focus-ring:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; } /* status dot */ .dot { display: inline-block; width: 7px; height: 7px; border-radius: 999px; background: currentColor; box-shadow: 0 0 0 3px color-mix(in oklab, currentColor 20%, transparent); } .pulse { animation: pulse 2.4s ease-in-out infinite; } @keyframes pulse { 0%, 100% { box-shadow: 0 0 0 3px color-mix(in oklab, currentColor 20%, transparent); } 50% { box-shadow: 0 0 0 7px color-mix(in oklab, currentColor 6%, transparent); } } /* data tables: transform to stacked rows on small screens when marked */ .data-table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .data-table th { text-align: left; font-weight: 600; font-size: 0.6875rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-3); padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--rule-strong); white-space: nowrap; } .data-table td { padding: 0.6rem 0.75rem; border-bottom: 1px solid var(--rule); vertical-align: middle; } .data-table tbody tr:hover { background: var(--plane-2); } .data-table .num { text-align: right; } @media (max-width: 767px) { .data-table.stack thead { display: none; } .data-table.stack tr { display: grid; grid-template-columns: 1fr 1fr; gap: 0.15rem 0.75rem; padding: 0.7rem 0; border-bottom: 1px solid var(--rule); } .data-table.stack td { display: block; border: 0; padding: 0; } .data-table.stack td[data-label]::before { content: attr(data-label); display: block; font-size: 0.625rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-3); } .data-table.stack td.primary { grid-column: 1 / -1; } .data-table.stack td.num { text-align: left; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }