/* Observatory + command navigation: shared app / landing-page foundation.
 * Import this file before consumer styles. --ow-* names are the public tokens.
 * Font files are bundled and same-origin for style-src / font-src 'self'.
 * Type roles are CSS font shorthands; apply numerals separately.
 * Spacing is exactly the checked 4-point scale; dimensions are not spacing.
 * Status always needs a word + icon + shape. No red or green.
 */

@font-face {
  font-family: Geist;
  src: url('/fonts/Geist-var.woff2') format('woff2');
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}
@font-face {
  font-family: GeistMono;
  src: url('/fonts/GeistMono-var.woff2') format('woff2');
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

:root {
  /* Colour */
  --ow-color-canvas: #0e0f11; /* App backdrop and sidebar. */
  --ow-color-sheet: #151719; /* Main content sheet above the canvas. */
  --ow-color-panel: #1c1e21; /* Raised reading panels and composer. */
  --ow-color-overlay: #24272b; /* Menus and the command dialog. */
  --ow-color-hover: #2b2e34; /* Neutral hover feedback. */
  --ow-color-selected: #292238; /* Soft purple selection surface; pair with a shape. */
  --ow-color-hairline: #2c3036; /* Subtle boundary only where a control needs one; not its sole identifying edge. */
  --ow-color-control-edge: #788291; /* Identifying control edge; at least 3:1 on every dark surface. */
  --ow-color-text-primary: #e8eaed; /* Titles and main content on dark surfaces. */
  --ow-color-text-secondary: #b6bdc8; /* Supporting copy and labels on dark surfaces. */
  --ow-color-text-tertiary: #9ca5b3; /* Quiet metadata and placeholders on dark surfaces; still AA. */
  --ow-color-live: #a78bfa; /* Live status, current location and purple accents. */
  --ow-color-live-tint: #241e32; /* Quiet background for live status. */
  --ow-color-attention: #fdb927; /* Only an item or action that needs the owner. */
  --ow-color-attention-tint: #302719; /* Quiet background for attention content. */
  --ow-color-on-attention: #141414; /* Readable dark text on a solid gold fill. */
  --ow-color-brand: #552583; /* Lakers purple for brand artwork only; never status or body text. */
  --ow-color-focus-ring: var(--ow-color-live); /* Visible keyboard focus on dark surfaces. */
  --ow-hairline-pattern: repeating-linear-gradient(90deg, var(--ow-color-hairline) 0 1px, transparent 1px 3px); /* Compatibility pattern for existing dotted rules; no new decorative dividers. */

  /* Type */
  --ow-font-sans: Geist, ui-sans-serif, system-ui, -apple-system, sans-serif; /* Bundled Geist for all interface and reading text. */
  --ow-font-mono: GeistMono, ui-monospace, Menlo, monospace; /* Bundled Geist Mono for ids and hashes only. */
  --ow-type-caption: 400 12px/16px var(--ow-font-sans); /* Captions and quiet annotations. */
  --ow-type-label: 500 13px/16px var(--ow-font-sans); /* Control and section labels. */
  --ow-type-body: 400 14px/20px var(--ow-font-sans); /* Default interface copy. */
  --ow-type-body-reading: 400 15px/24px var(--ow-font-sans); /* Purpose, replies and longer reading. */
  --ow-type-title: 500 16px/24px var(--ow-font-sans); /* Row and panel titles. */
  --ow-type-heading: 600 20px/28px var(--ow-font-sans); /* Section headings. */
  --ow-type-page: 600 24px/32px var(--ow-font-sans); /* Page headings. */
  --ow-type-display: 600 28px/36px var(--ow-font-sans); /* Prominent thread or display headings. */
  --ow-numerals-tabular: tabular-nums; /* Stable numeric columns via font-variant-numeric. */

  /* Space */
  --ow-space-0: 0px; /* No spacing. */
  --ow-space-4: 4px; /* Tight inline spacing. */
  --ow-space-8: 8px; /* Related items. */
  --ow-space-12: 12px; /* Compact control interiors. */
  --ow-space-16: 16px; /* Standard component interiors. */
  --ow-space-24: 24px; /* Sections and roomy interiors. */
  --ow-space-32: 32px; /* Major content groups. */
  --ow-space-48: 48px; /* Large layout separation. */

  /* Radii */
  --ow-radius-6: 6px; /* Compact controls and small tiles. */
  --ow-radius-8: 8px; /* Panels and standard controls. */
  --ow-radius-12: 12px; /* Main sheets and overlays. */
  --ow-radius-full: 9999px; /* Pills, rings and round icon tiles. */

  /* Elevation */
  --ow-shadow-sheet: 0 1px 2px rgb(0 0 0 / 12%); /* First elevation; use with the sheet tone. */
  --ow-shadow-panel: 0 4px 12px rgb(0 0 0 / 18%); /* Second elevation; use with the raised panel tone. */
  --ow-shadow-overlay: 0 16px 48px rgb(0 0 0 / 32%); /* Highest elevation; use with the overlay tone. */

  /* Motion */
  --ow-motion-fast: 120ms; /* Small hover and focus transitions. */
  --ow-motion-standard: 180ms; /* Normal state changes. */
  --ow-motion-slow: 240ms; /* Panel and dialog transitions. */
  --ow-ease-out: cubic-bezier(0.2, 0, 0, 1); /* The single settling curve; no bounce. */
  --ow-orbit-period: 6s; /* Calm live-dot orbit; static under reduced motion. */

  /* Layout */
  --ow-sidebar-width: 224px; /* Desktop navigation column. */
  --ow-list-width: 420px; /* Desktop sessions list column. */
  --ow-touch-target: 44px; /* Minimum interactive width and height. */
  --ow-top-bar-height: 48px; /* Compact top bar, before the safe-area inset. */
  --ow-tab-bar-height: 64px; /* Phone tab bar, before the safe-area inset. */
  --ow-safe-top: env(safe-area-inset-top, 0px); /* Top device inset; add to layout sizing when needed. */
  --ow-safe-right: env(safe-area-inset-right, 0px); /* Right device inset. */
  --ow-safe-bottom: env(safe-area-inset-bottom, 0px); /* Bottom device inset for tabs and composer. */
  --ow-safe-left: env(safe-area-inset-left, 0px); /* Left device inset. */
  --ow-legacy-detail-width: 400px; /* Existing detail width during the screen migration. */
  --ow-legacy-detail-width-wide: 440px; /* Existing detail width from 1400px during migration. */
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --ow-motion-fast: 0ms; /* Disable small transitions. */
    --ow-motion-standard: 0ms; /* Disable state transitions. */
    --ow-motion-slow: 0ms; /* Disable panel transitions. */
    --ow-orbit-period: 0s; /* Keep the live satellite still. */
  }
}
