/* ============================================================
   OpenSourcePath — core/base.css
   Design tokens, reset and global helpers shared by every page.
   Split out of the old css/styles.css:
     core/base.css        this file (tokens + global)
     core/components.css  shared design-system components
     core/list-kit.css    toolbar / cards / tables toolkit for list views
     landing.css          index.html page-specific styles
     dashboard.css        dashboard.html app-shell styles
     js/modules/NAME/NAME.css  one stylesheet per feature module
   Dark-first, GitHub x Linear x Vercel language
   Type: Clash Display (display) + Satoshi (body) + JetBrains Mono (data)
   Accent: emerald, locked to the whole page
   Shape lock: 18px panels / 12px inner / 999px pills
   ============================================================ */

:root {
  --font-display: "Clash Display", "Satoshi", system-ui, sans-serif;
  --font-body: "Satoshi", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --nav-h: 68px;
  --radius-lg: 18px;
  --radius-md: 12px;

  --bg: #08090a;
  --bg-2: #0d0f10;
  --panel: #101314;
  --panel-2: #141819;
  --panel-3: #1a1f20;
  --line: rgba(255, 255, 255, 0.09);
  --line-2: rgba(255, 255, 255, 0.16);
  --text: #eef2f1;
  --text-2: #a3b0ac;
  --text-3: #6c7a75;
  --accent: #34d399;
  --accent-ink: #062e21;
  --accent-soft: rgba(52, 211, 153, 0.12);
  --accent-line: rgba(52, 211, 153, 0.35);
  --danger: #f87171;
  --violet: #a78bfa;
  --amber: #fbbf24;
  --blue: #60a5fa;
  --shadow-panel: 0 24px 70px rgba(0, 0, 0, 0.45);
  --shadow-btn: 0 12px 32px rgba(52, 211, 153, 0.24);
  --aurora-op: 0.5;
  color-scheme: dark;
}

html[data-theme="light"] {
  --bg: #f7f8f7;
  --bg-2: #eef1ef;
  --panel: #ffffff;
  --panel-2: #f2f4f2;
  --panel-3: #e4e8e5;
  --line: rgba(15, 23, 20, 0.14);
  --line-2: rgba(15, 23, 20, 0.26);
  --text: #0c110e;
  --text-2: #3d4a44;
  --text-3: #5c6b64;
  --accent: #0b7d55;
  --accent-ink: #ffffff;
  --accent-soft: rgba(11, 125, 85, 0.1);
  --accent-line: rgba(11, 125, 85, 0.4);
  --danger: #c02626;
  --violet: #6d28d9;
  --amber: #a16207;
  --blue: #1d4ed8;
  --shadow-panel: 0 24px 70px rgba(20, 35, 28, 0.13);
  --shadow-btn: 0 12px 32px rgba(11, 125, 85, 0.24);
  --aurora-op: 0.25;
  color-scheme: light;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  transition: background 0.5s var(--ease), color 0.5s var(--ease);
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
h1, h2, h3, h4, h5 { font-family: var(--font-display); font-weight: 600; line-height: 1.08; letter-spacing: -0.02em; }
::selection { background: var(--accent); color: var(--accent-ink); }

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip {
  position: fixed; top: 10px; left: 10px; z-index: 200; padding: 10px 16px;
  background: var(--accent); color: var(--accent-ink); border-radius: 999px;
  font-weight: 700; transform: translateY(-64px);
  transition: transform 0.3s var(--ease);
}
.skip:focus { transform: translateY(0); }

.container { width: min(1180px, 100% - 48px); margin-inline: auto; }

/* keep in-page anchors clear of the sticky nav (dashboard / app pages only) */
.dash, .dash [id] { scroll-margin-top: 104px; }

/* ---------- Ambient aurora ---------- */
.aurora {
  position: fixed; z-index: -1; border-radius: 50%;
  filter: blur(90px); opacity: var(--aurora-op); pointer-events: none;
  transition: opacity 0.6s var(--ease);
}
.aurora-a {
  width: 620px; height: 620px; top: -220px; left: -160px;
  background: radial-gradient(circle at 40% 40%, rgba(52, 211, 153, 0.2), transparent 62%);
}
.aurora-b {
  width: 720px; height: 720px; top: 8vh; right: -300px;
  background: radial-gradient(circle at 60% 40%, rgba(96, 165, 250, 0.11), transparent 60%);
}

/* ---------- Focus ---------- */
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 6px; }
.btn:focus-visible, .icon-btn:focus-visible, .chip:focus-visible { outline-offset: 3px; border-radius: 999px; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.001s !important; animation-delay: 0s !important; transition-duration: 0.001s !important; }
  [data-hero], [data-reveal] { opacity: 1; transform: none; filter: none; }
  .live-dot { animation: none; }
  .bars i { transform: scaleY(1); }
  .rcard, .icard, .ecard, .rpost, .ocard, .opcard { animation: none; }
}
