/* Design-system tokens + site overrides. Per-page theme vars are inlined in each page's <head>. */
/* ─────────────────────────────────────────────────────────────
   Obstruo.ai — colors and type tokens
   ───────────────────────────────────────────────────────────── */

/* Webfonts ---------------------------------------------------- */
400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap");

:root {
  /* ── Brand color ─────────────────────────────────────── */
  --brand-50:  #F7F3FF;
  --brand-100: #F0E9FF;
  --brand-200: #EBE2FF;
  --brand-300: #E5DBFF;
  --brand-400: #E0D4FF;
  --brand-450: #DBCDFF;
  --brand-500: #D4C5FF;
  --brand-550: #CEBEFF;
  --brand-600: #C6B3FF;  /* PRIMARY — Light Pastel Purple */
  --brand-700: #B29CFF;
  --brand-800: #9679FF;
  --brand-900: #855CFF;
  --brand-1000: #780FFF;

  --brand: var(--brand-600);

  /* ── Greyscale (dark theme is default) ───────────────── */
  --black:     #000000;       /* Deep Black, per logo guide */
  --bg-0:      #0A0A0B;       /* page background */
  --bg-1:      #111114;       /* card / surface 1 */
  --bg-2:      #16161A;       /* surface 2 / hover */
  --bg-3:      #1D1D22;       /* surface 3 / pressed */

  --fg-1:      #EDEDF0;       /* primary text on dark */
  --fg-2:      #A8A8B2;       /* secondary text on dark */
  --fg-3:      #6E6E78;       /* tertiary / disabled */
  --fg-4:      #404049;       /* faint / divider-on-dark */

  --line-1:    rgba(255,255,255,0.08); /* hairline */
  --line-2:    rgba(255,255,255,0.14); /* input border */
  --line-3:    rgba(255,255,255,0.22); /* strong divider */

  /* Light surface (used on marketing alt sections, dialogs) */
  --bg-0-light: #FAFAFB;
  --bg-1-light: #FFFFFF;
  --bg-2-light: #F2F2F4;
  --fg-1-light: #0A0A0B;
  --fg-2-light: #4D4D56;
  --fg-3-light: #8B8B93;
  --line-1-light: rgba(10,10,11,0.08);
  --line-2-light: rgba(10,10,11,0.14);

  /* ── Semantic ────────────────────────────────────────── */
  --success:   #4ADE80;
  --warning:   #F5C04A;
  --danger:    #FF6B6B;
  --info:      var(--brand-600);

  /* ── Type ────────────────────────────────────────────── */
  --font-sans: "Sora", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --font-display: var(--font-sans);

  /* Type scale (clamped, 1280px design) */
  --fs-xs:   12px;
  --fs-sm:   14px;
  --fs-base: 16px;
  --fs-md:   18px;
  --fs-lg:   20px;
  --fs-xl:   24px;
  --fs-2xl:  32px;
  --fs-3xl:  40px;
  --fs-4xl:  56px;
  --fs-5xl:  72px;
  --fs-6xl:  96px;

  --lh-tight:  1.05;
  --lh-snug:   1.2;
  --lh-normal: 1.5;
  --lh-loose:  1.65;

  --tracking-tight:  -0.02em;
  --tracking-snug:   -0.01em;
  --tracking-normal: 0;
  --tracking-wide:   0.08em;

  /* ── Spacing ────────────────────────────────────────── */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  24px;
  --space-6:  32px;
  --space-7:  48px;
  --space-8:  64px;
  --space-9:  96px;
  --space-10: 128px;

  /* ── Radii ──────────────────────────────────────────── */
  --radius-sm:   6px;
  --radius-md:   10px;
  --radius-lg:   16px;
  --radius-xl:   24px;
  --radius-full: 9999px;

  /* ── Shadows ────────────────────────────────────────── */
  --shadow-sm:   0 1px 2px rgba(0,0,0,0.06);
  --shadow-md:   0 6px 16px rgba(0,0,0,0.12);
  --shadow-lg:   0 20px 40px rgba(0,0,0,0.18), 0 2px 6px rgba(0,0,0,0.08);
  --shadow-glow: 0 0 0 4px rgba(198,179,255,0.18);

  /* ── Motion ─────────────────────────────────────────── */
  --ease-out:    cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast:    120ms;
  --dur-base:    200ms;
  --dur-med:     320ms;
  --dur-slow:    480ms;
}

/* ── Semantic role tokens (use these in components) ────── */
:root {
  --role-bg:        var(--bg-0);
  --role-surface:   var(--bg-1);
  --role-surface-2: var(--bg-2);
  --role-text:      var(--fg-1);
  --role-text-soft: var(--fg-2);
  --role-text-mute: var(--fg-3);
  --role-line:      var(--line-1);
  --role-line-strong: var(--line-2);
  --role-accent:    var(--brand);
  --role-accent-hover:  var(--brand-500);
  --role-accent-press:  var(--brand-700);
  --role-on-accent: var(--black);

  --role-focus-ring: 0 0 0 2px var(--bg-0), 0 0 0 4px var(--brand);
}

[data-theme="light"] {
  --role-bg:        var(--bg-0-light);
  --role-surface:   var(--bg-1-light);
  --role-surface-2: var(--bg-2-light);
  --role-text:      var(--fg-1-light);
  --role-text-soft: var(--fg-2-light);
  --role-text-mute: var(--fg-3-light);
  --role-line:      var(--line-1-light);
  --role-line-strong: var(--line-2-light);
  --role-focus-ring: 0 0 0 2px var(--bg-0-light), 0 0 0 4px var(--brand);
}

/* ── Element defaults ───────────────────────────────────── */
html, body {
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  line-height: var(--lh-normal);
  color: var(--role-text);
  background: var(--role-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, .h1 {
  font: 700 var(--fs-5xl)/var(--lh-tight) var(--font-display);
  letter-spacing: var(--tracking-tight);
  margin: 0;
}
h2, .h2 {
  font: 600 var(--fs-3xl)/var(--lh-snug) var(--font-display);
  letter-spacing: var(--tracking-tight);
  margin: 0;
}
h3, .h3 {
  font: 600 var(--fs-2xl)/var(--lh-snug) var(--font-display);
  letter-spacing: var(--tracking-snug);
  margin: 0;
}
h4, .h4 {
  font: 600 var(--fs-xl)/var(--lh-snug) var(--font-display);
  margin: 0;
}
h5, .h5 {
  font: 600 var(--fs-lg)/var(--lh-snug) var(--font-display);
  margin: 0;
}
.eyebrow {
  font: 500 var(--fs-xs)/1 var(--font-display);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--role-text-soft);
}
p, .body {
  font: 400 var(--fs-base)/var(--lh-normal) var(--font-sans);
  margin: 0;
}
.body-sm    { font: 400 var(--fs-sm)/var(--lh-normal) var(--font-sans); }
.body-lg    { font: 400 var(--fs-md)/var(--lh-loose) var(--font-sans); color: var(--role-text-soft); }
.label      { font: 500 var(--fs-sm)/1.2 var(--font-sans); }
.caption    { font: 400 var(--fs-xs)/1.4 var(--font-sans); color: var(--role-text-mute); }

code, .code, pre {
  font-family: var(--font-mono);
  font-size: 0.92em;
}

a { color: var(--brand); text-decoration: none; }
a:hover { color: var(--brand-500); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; }

::selection { background: var(--brand); color: var(--black); }

/* ── Scrollbar (subtle, dark) ──────────────────────────── */
* { scrollbar-width: thin; scrollbar-color: var(--fg-4) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: var(--fg-4); border-radius: 6px; border: 2px solid transparent; background-clip: padding-box; }


/* Site overrides layered on top of the design's theme + base (see build.mjs). */
html, body { overflow-x: hidden; }
body { min-height: 100vh; background: var(--bg); color: var(--fg-1); }
html { scroll-behavior: smooth; }

/* Reusable button primitives (the shared CTA look, for anything not inline). */
.ob-btn {
  display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600;
  padding: 11px 18px; border-radius: 10px; cursor: pointer; border: 1px solid transparent;
  transition: background-color 140ms cubic-bezier(0.22,1,0.36,1), border-color 140ms cubic-bezier(0.22,1,0.36,1);
}
.ob-btn-primary { background: var(--accent-fill); color: var(--accent-on-fill); }
.ob-btn-primary:hover { background: #D4C5FF; text-decoration: none; }
.ob-btn-secondary { background: transparent; color: var(--fg-1); border-color: var(--line-14); }
.ob-btn-secondary:hover { background: var(--line-06); text-decoration: none; }

/* Legal / prose pages (privacy, terms, dpa, acceptable-use) in the v3 shell. */
.ob-prose { max-width: 820px; margin: 0 auto; padding: 72px 40px 96px; color: var(--fg-2); }
.ob-prose h1 { font-size: 40px; font-weight: 700; letter-spacing: -0.02em; color: var(--fg-1); margin: 0 0 8px; line-height: 1.1; }
.ob-prose h2 { font-size: 24px; font-weight: 600; color: var(--fg-1); margin: 40px 0 10px; }
.ob-prose h3 { font-size: 18px; font-weight: 600; color: var(--fg-1); margin: 28px 0 8px; }
.ob-prose p, .ob-prose li { font-size: 15.5px; line-height: 1.7; color: var(--fg-2); }
.ob-prose ul, .ob-prose ol { padding-left: 22px; margin: 12px 0; }
.ob-prose li { margin: 6px 0; }
.ob-prose a { color: var(--accent-ink); }
.ob-prose a:hover { text-decoration: underline; }
.ob-prose strong { color: var(--fg-1); font-weight: 600; }
.ob-prose hr { border: 0; border-top: 1px solid var(--line); margin: 32px 0; }
.ob-prose table { width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 14px; }
.ob-prose th, .ob-prose td { border: 1px solid var(--line); padding: 10px 12px; text-align: left; vertical-align: top; }
.ob-prose th { color: var(--fg-1); font-weight: 600; background: var(--surface-2); }
.ob-prose code { font-family: 'JetBrains Mono', monospace; font-size: 0.9em; background: var(--surface-2); padding: 2px 6px; border-radius: 5px; }
.ob-prose .trust-doc-meta, .ob-prose .doc-meta { color: var(--fg-3); font-size: 13.5px; }

/* Structured legal documents (trust-doc): numbered sections, meta bar, callout.
   Ported from the old site, retokenised so it renders in both themes. */
.ob-prose .trust-doc h1 { font-size: 34px; }
.ob-prose .trust-meta { display: flex; flex-wrap: wrap; gap: 8px 20px; font: 400 12px/1.4 var(--font-mono); color: var(--fg-3); margin: 4px 0 22px; }
.ob-prose .trust-meta span { display: inline-flex; align-items: center; gap: 6px; }
.ob-prose .trust-meta i, .ob-prose .trust-meta svg { width: 13px; height: 13px; }
.ob-prose .trust-callout { background: var(--accent-soft); border: 1px solid var(--accent-line); border-radius: 12px; padding: 16px 18px; font-size: 14px; line-height: 1.62; color: var(--fg-2); margin: 8px 0 26px; }
.ob-prose .trust-callout strong { color: var(--fg-1); }
.ob-prose .trust-sec { display: grid; grid-template-columns: 44px 1fr; gap: 6px; padding: 22px 0; border-top: 1px solid var(--line); }
.ob-prose .trust-sec-num { font: 600 14px/1.6 var(--font-mono); color: var(--accent-ink); }
.ob-prose .trust-sec-body h3 { font-size: 17px; font-weight: 600; margin: 0 0 10px; color: var(--fg-1); }
.ob-prose .trust-sec-body p { font-size: 14.5px; line-height: 1.7; color: var(--fg-2); margin: 0 0 12px; }
.ob-prose .trust-sec-body p:last-child { margin-bottom: 0; }
.ob-prose .trust-sec-body ul, .ob-prose .trust-sec-body ol { margin: 0 0 12px; padding-left: 20px; }
.ob-prose .trust-sec-body li { font-size: 14.5px; line-height: 1.62; color: var(--fg-2); margin-bottom: 7px; }
.ob-prose .trust-sec-body strong { color: var(--fg-1); }
.ob-prose .trust-sec-body a { color: var(--accent-ink); }
@media (max-width: 680px) { .ob-prose .trust-sec { grid-template-columns: 1fr; gap: 2px; } }


/* v3 blog-post prose: content pasted from source HTML, styled to the site (no source CSS). */
.ob-post { max-width: 760px; color: var(--fg-2); }
.ob-post .dek { font-size: 20px; line-height: 1.6; color: var(--fg-2); margin: 0 0 6px; }
.ob-post h2 { font-size: 28px; font-weight: 600; letter-spacing: -0.01em; color: var(--fg-1); margin: 46px 0 0; line-height: 1.25; }
.ob-post h3 { font-size: 20px; font-weight: 600; color: var(--fg-1); margin: 32px 0 0; }
.ob-post p { font-size: 17px; line-height: 1.8; color: var(--fg-2); margin: 18px 0 0; }
.ob-post ul, .ob-post ol { font-size: 17px; line-height: 1.8; color: var(--fg-2); margin: 14px 0 0; padding-left: 22px; }
.ob-post li { margin: 6px 0 0; }
.ob-post a { color: var(--accent-ink); }
.ob-post strong { color: var(--fg-1); font-weight: 600; }
.ob-post code, .ob-post .num { font-family: 'JetBrains Mono', monospace; font-size: 0.92em; }
.ob-post table { width: 100%; border-collapse: collapse; margin: 26px 0 0; font-size: 14.5px; display: block; overflow-x: auto; }
.ob-post th, .ob-post td { border: 1px solid var(--line); padding: 10px 12px; text-align: left; vertical-align: top; color: var(--fg-2); }
.ob-post th { color: var(--fg-1); font-weight: 600; background: var(--surface-2); }
.ob-post figure { margin: 26px 0 0; }
.ob-post figcaption { font-size: 13px; color: var(--fg-3); margin-top: 8px; }
.ob-post svg { max-width: 100%; height: auto; }
.ob-post svg text { fill: var(--fg-2); }
.ob-post svg .bar-label { font-size: 12px; fill: var(--fg-2); }
.ob-post svg .bar-value { font-size: 12px; fill: var(--fg-1); font-weight: 600; }
.ob-post .chart-card { border: 1px solid var(--line); border-radius: 14px; padding: 20px; margin: 26px 0 0; background: var(--surface); overflow-x: auto; }
.ob-post .chart-title { font-size: 15px; font-weight: 600; color: var(--fg-1); }
.ob-post .chart-sub { font-size: 13px; color: var(--fg-3); margin-top: 4px; }
.ob-post .callout { border: 1px solid var(--acc-22); background: var(--acc-10); border-radius: 12px; padding: 16px 18px; margin: 26px 0 0; font-size: 15.5px; line-height: 1.6; color: var(--fg-2); }
.ob-post .aside { border-left: 3px solid var(--line-14); padding: 4px 0 4px 16px; margin: 26px 0 0; color: var(--fg-3); font-size: 15px; }
.ob-post .appendix { margin-top: 46px; padding-top: 24px; border-top: 1px solid var(--line); font-size: 14px; color: var(--fg-3); }
.ob-post .cta { border: 1px solid var(--line); border-radius: 16px; padding: 26px; margin: 40px 0 0; background: var(--surface); }
.ob-post .cta-head { font-size: 20px; font-weight: 600; color: var(--fg-1); }

/* Companion checklist subpages: interactive, do-it-yourself checkboxes. */
.ob-backlink { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; color: var(--accent-ink); }
.ob-checkbar { position: sticky; top: 12px; z-index: 5; display: flex; align-items: center; gap: 16px; margin: 26px 0 6px; padding: 12px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.ob-checkbar-count { font-size: 13.5px; font-weight: 600; color: var(--fg-1); white-space: nowrap; min-width: 52px; }
.ob-checkbar-track { flex: 1 1 0; height: 6px; border-radius: 99px; background: var(--line); overflow: hidden; }
.ob-checkbar-fill { display: block; height: 100%; width: 0; background: var(--accent-fill); border-radius: 99px; transition: width 180ms cubic-bezier(0.22,1,0.36,1); }
.ob-check-reset { font-size: 12.5px; font-weight: 600; color: var(--accent-ink); background: transparent; border: 1px solid var(--line-14); border-radius: 8px; padding: 6px 12px; cursor: pointer; white-space: nowrap; }
.ob-check-reset:hover { background: var(--line-06); }
.ob-check { display: flex; gap: 12px; align-items: flex-start; margin: 8px 0 0; padding: 11px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); cursor: pointer; font-size: 15.5px; line-height: 1.55; color: var(--fg-2); transition: border-color 120ms, background 120ms; }
.ob-check:hover { border-color: var(--line-14); background: var(--surface-2); }
.ob-check input { appearance: none; -webkit-appearance: none; flex: 0 0 auto; width: 18px; height: 18px; margin: 1px 0 0; border: 1.5px solid var(--line-14); border-radius: 5px; background: var(--bg); cursor: pointer; position: relative; }
.ob-check input:checked { background: var(--accent-fill); border-color: var(--accent-fill); }
.ob-check input:checked::after { content: ""; position: absolute; left: 5px; top: 1px; width: 5px; height: 9px; border: solid var(--accent-on-fill); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.ob-check span strong { color: var(--fg-1); font-weight: 600; }
.ob-check.done span { color: var(--fg-3); text-decoration: line-through; }
.ob-check.done span strong { color: var(--fg-3); }
/* Companion CTA on the article, linking to its checklist subpage. */
.ob-companion-cta { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin: 44px 0 0; padding: 22px 24px; border: 1px solid var(--acc-22); background: var(--acc-10); border-radius: 14px; text-decoration: none; }
.ob-companion-cta:hover { border-color: var(--accent-ink); }
.ob-companion-cta .cc-kicker { display: block; font-size: 12px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent-ink); }
.ob-companion-cta .cc-title { display: block; margin-top: 6px; font-size: 16.5px; font-weight: 600; color: var(--fg-1); }
.ob-companion-cta .cc-go { font-size: 14px; font-weight: 600; color: var(--accent-ink); white-space: nowrap; }
