@import 'tailwindcss'; @custom-variant dark (&:where(.dark, .dark *)); /* InternetPressure.io — an instrument, not a website. Near-black planes, hairline rules, tabular numerals. Colour is reserved for the pressure scale. */ :root { color-scheme: dark; --bg: #070a0f; --panel: #0c1117; --panel-2: #10161e; --line: #1b2430; --line-2: #243040; --ink: #e6edf3; --ink-2: #8b98a5; --ink-3: #5b6875; --accent: #5b8def; --accent-soft: rgba(91, 141, 239, 0.14); --neutral: #0f151d; --p-calm: #4cc9f0; --p-normal: #7fb77e; --p-elevated: #e9c46a; --p-stressed: #f4a261; --p-high: #e76f51; --p-severe: #d62828; --p-extreme: #f72585; --ok: #7fb77e; --warn: #e9c46a; --bad: #e76f51; --radius: 4px; --header-h: 52px; } /* Graceful light fallback only when the OS asks for it AND the dark class is absent (dark is forced by default). */ @media (prefers-color-scheme: light) { :root:not(.dark) { color-scheme: light; --bg: #f5f7fa; --panel: #ffffff; --panel-2: #eef2f6; --line: #d5dce4; --line-2: #c2ccd7; --ink: #0c1117; --ink-2: #4d5a68; --ink-3: #7b8794; --neutral: #e3e8ee; } } @theme inline { --color-bg: var(--bg); --color-panel: var(--panel); --color-panel-2: var(--panel-2); --color-line: var(--line); --color-line-2: var(--line-2); --color-ink: var(--ink); --color-ink-2: var(--ink-2); --color-ink-3: var(--ink-3); --color-accent: var(--accent); --color-accent-soft: var(--accent-soft); --color-neutral: var(--neutral); --color-ok: var(--ok); --color-warn: var(--warn); --color-bad: var(--bad); --color-calm: var(--p-calm); --color-normal: var(--p-normal); --color-elevated: var(--p-elevated); --color-stressed: var(--p-stressed); --color-high: var(--p-high); --color-severe: var(--p-severe); --color-extreme: var(--p-extreme); --font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif; --font-mono: var(--font-geist-mono), ui-monospace, 'SF Mono', Menlo, monospace; --radius-sm: 2px; --radius-md: 4px; } @layer base { html { background: var(--bg); color: var(--ink); -webkit-text-size-adjust: 100%; scrollbar-color: var(--line-2) transparent; } body { font-family: var(--font-sans); font-feature-settings: 'tnum' 1, 'cv11' 1; font-size: 14px; line-height: 1.45; background: var(--bg); color: var(--ink); } * { border-color: var(--line); } :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } ::selection { background: rgba(91, 141, 239, 0.35); } a { text-decoration: none; } table { border-collapse: collapse; } button, input, select, textarea { font: inherit; color: inherit; } svg { display: block; } } @utility num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; letter-spacing: -0.01em; } @utility label { font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-2); font-weight: 500; } @utility hairline { border-top: 1px solid var(--line); } @utility panel { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); } @utility grid-texture { background-image: linear-gradient(to right, rgba(139, 152, 165, 0.06) 1px, transparent 1px), linear-gradient(to bottom, rgba(139, 152, 165, 0.06) 1px, transparent 1px); background-size: 8px 8px; mask-image: radial-gradient(ellipse at 40% 30%, rgba(0, 0, 0, 0.9), transparent 75%); } @utility scroll-x { overflow-x: auto; scrollbar-width: thin; -webkit-overflow-scrolling: touch; } @utility snap-row { display: flex; gap: 8px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 2px; } @utility snap-item { scroll-snap-align: start; flex: 0 0 auto; } @layer components { /* dense typographic tables */ .tbl { width: 100%; font-size: 12.5px; } .tbl th { font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-2); font-weight: 500; text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--line); white-space: nowrap; } .tbl td { padding: 6px 8px; border-bottom: 1px solid var(--line); vertical-align: middle; white-space: nowrap; } .tbl tr:last-child td { border-bottom: 0; } .tbl tbody tr:hover td { background: var(--panel-2); } .tbl .r { text-align: right; } .tbl th.r { text-align: right; } /* Pressure Front arcs: dash offset animates only while a front is developing/active (class toggled by data). */ @keyframes front-flow { to { stroke-dashoffset: -24; } } /* MapLibre chrome */ .maplibregl-ctrl-attrib { font-size: 10px !important; background: rgba(7, 10, 15, 0.7) !important; color: var(--ink-3) !important; } .maplibregl-ctrl-attrib a { color: var(--ink-2) !important; } .maplibregl-ctrl-group { background: var(--panel) !important; border: 1px solid var(--line) !important; border-radius: var(--radius) !important; box-shadow: none !important; } .maplibregl-ctrl-group button { filter: invert(0.85); } .maplibregl-canvas { outline: none; } } @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }