/*
 * Living Scout — shared design tokens + primitives.
 * Source of truth: DESIGN.md. Import this on any surface adopting the redesign:
 *   <link rel="stylesheet" href="/living-scout.css">
 * Default ground is Night (dark, hunting). Add data-mode="day" on <html> or any
 * container for the warm Field-Journal ground (review / media-kit).
 *
 * Rollout is page-by-page (DESIGN.md "Status"): a surface adopts the whole
 * system or none of it — never half. This file is the foundation that keeps
 * each migration a small diff instead of a per-page copy of the tokens.
 */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400..600;1,9..144,500&family=Geist:wght@300..600&family=JetBrains+Mono:wght@400..600&display=swap');

:root {
  /* Night (default) */
  --ls-bg: #0C1410;
  --ls-surface: #13201A;
  --ls-raised: #1B2C23;
  --ls-text: #EAF2EC;
  --ls-muted: #85978B;
  --ls-line: rgba(133, 151, 128, .18);
  --ls-glow: rgba(43, 229, 122, .55);

  /* Shared across modes — semantics never change, only the ground */
  --ls-green: #2BE57A;
  --ls-ember: #FF6B3D;
  --ls-amber: #FFC24D;
  --ls-danger: #FF4D6A;

  /* Shape & type */
  --ls-radius-card: 16px;
  --ls-radius-control: 11px;
  --ls-font-display: 'Fraunces', Georgia, serif;
  --ls-font-body: 'Geist', system-ui, -apple-system, sans-serif;
  --ls-font-mono: 'JetBrains Mono', ui-monospace, monospace;
}

[data-mode="day"] {
  --ls-bg: #F5F0E6;
  --ls-surface: #FBF8F1;
  --ls-raised: #FFFFFF;
  --ls-text: #16201A;
  --ls-muted: #5C6B60;
  --ls-line: rgba(22, 32, 26, .12);
  --ls-glow: rgba(43, 229, 122, .28);
}

/* ── Base ──────────────────────────────────────────────────────────────────── */
.ls-root {
  background: var(--ls-bg);
  color: var(--ls-text);
  font-family: var(--ls-font-body);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/* ── Typography ────────────────────────────────────────────────────────────── */
.ls-display { font-family: var(--ls-font-display); font-weight: 500; letter-spacing: -.02em; line-height: .98; }
.ls-h1 { font-family: var(--ls-font-display); font-weight: 500; font-size: clamp(44px, 6vw, 76px); line-height: .98; letter-spacing: -.02em; }
.ls-h1 em { font-style: italic; color: var(--ls-green); }
.ls-mono { font-family: var(--ls-font-mono); }
/* Eyebrows / kickers — mono, green, uppercase. */
.ls-eyebrow { font-family: var(--ls-font-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--ls-green); }
.ls-muted { color: var(--ls-muted); }

/* ── Surfaces ──────────────────────────────────────────────────────────────── */
.ls-card { background: var(--ls-surface); border: 1px solid var(--ls-line); border-radius: var(--ls-radius-card); padding: 20px; }
.ls-raised { background: var(--ls-raised); border: 1px solid var(--ls-line); border-radius: var(--ls-radius-card); }
.ls-pill { font-family: var(--ls-font-mono); font-size: 11px; letter-spacing: .04em; text-transform: uppercase; padding: 5px 10px; border-radius: 999px; border: 1px solid var(--ls-line); color: var(--ls-muted); }

/* ── Buttons ───────────────────────────────────────────────────────────────── */
.ls-btn { font-family: var(--ls-font-body); font-weight: 600; font-size: 15px; padding: 13px 20px; border-radius: var(--ls-radius-control); border: 0; cursor: pointer; text-decoration: none; display: inline-block; text-align: center; }
.ls-btn-primary { background: var(--ls-ember); color: #1a0a04; } /* ember = the human "send the scout" moment */
.ls-btn-ghost { background: transparent; color: var(--ls-text); border: 1px solid var(--ls-line); }

/* ── Realness meter — the ONE allowed gradient, encodes data not ornament ───── */
.ls-meter { height: 8px; border-radius: 999px; background: var(--ls-line); overflow: hidden; }
.ls-meter > span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--ls-danger), var(--ls-amber), var(--ls-green)); }

/* ── Signature motion — glow is DELIBERATE, reserved for live/scan states ───── */
.ls-live-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--ls-green); box-shadow: 0 0 0 0 var(--ls-glow); animation: ls-pulse 2.4s ease-out infinite; }
@keyframes ls-pulse {
  0% { box-shadow: 0 0 0 0 var(--ls-glow); }
  70% { box-shadow: 0 0 0 10px rgba(43, 229, 122, 0); }
  100% { box-shadow: 0 0 0 0 rgba(43, 229, 122, 0); }
}
@keyframes ls-sweep { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .ls-live-dot { animation: none; }
}

/* ════════════════════════════════════════════════════════════════════════════
   Signature instrument primitives (promoted from index.html inline so every
   migrated surface reuses them — DESIGN.md: "reuse the sweep / scan / ping").
   ════════════════════════════════════════════════════════════════════════════ */
.ls-radar { position: relative; width: min(320px, 78vw); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(43,229,122,.06), transparent 70%); }
.ls-radar .ring { position: absolute; inset: 0; border: 1px solid var(--ls-line); border-radius: 50%; }
.ls-radar .ring.r2 { inset: 18%; } .ls-radar .ring.r3 { inset: 36%; } .ls-radar .ring.r4 { inset: 54%; }
.ls-radar .sweep { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from 0deg, transparent 0deg, rgba(43,229,122,.28) 40deg, transparent 60deg); animation: ls-sweep 3.6s linear infinite; }
.ls-radar .blip { position: absolute; width: 8px; height: 8px; border-radius: 50%; background: var(--ls-green); box-shadow: 0 0 8px var(--ls-glow); animation: ls-ping 3.6s ease-out infinite; }
.ls-radar .blip.hot { background: var(--ls-ember); box-shadow: 0 0 8px rgba(255,107,61,.6); }
@keyframes ls-ping { 0%, 60% { opacity: 0; transform: scale(.4); } 70% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(1.3); } }
.ls-telemetry { font-family: var(--ls-font-mono); font-size: 12.5px; color: var(--ls-muted); line-height: 1.9; }
.ls-telemetry .g { color: var(--ls-green); } .ls-telemetry .e { color: var(--ls-ember); }
@media (prefers-reduced-motion: reduce) {
  .ls-radar .sweep, .ls-radar .blip { animation: none; }
}

/* ════════════════════════════════════════════════════════════════════════════
   De-slop body primitives (index body; reused by later marketing migrations).
   ════════════════════════════════════════════════════════════════════════════ */
.ls-wrap { max-width: 1120px; margin: 0 auto; padding: 0 28px; }
.ls-section { padding: 60px 0; border-top: 1px solid var(--ls-line); }
.ls-section.first { border-top: 0; }
.ls-eyebrow-row { display: inline-flex; align-items: center; gap: 8px; }
.ls-h2 { font-family: var(--ls-font-display); font-weight: 500; font-size: clamp(30px, 4vw, 46px); line-height: 1.02; letter-spacing: -.02em; margin: 14px 0 12px; color: var(--ls-text); }
.ls-h2 em { font-style: italic; color: var(--ls-green); }
.ls-sub { color: var(--ls-muted); font-size: 17px; max-width: 560px; }

/* Stats as ONE telemetry readout */
.ls-tele-readout { font-family: var(--ls-font-mono); font-size: 15px; color: var(--ls-muted); line-height: 2.2; border-left: 2px solid var(--ls-green); padding-left: 18px; }
.ls-tele-readout .g { color: var(--ls-green); } .ls-tele-readout .e { color: var(--ls-ember); }
@media (max-width: 600px) { .ls-tele-readout { font-size: 13px; line-height: 1.9; } }

/* Editorial value statement (no cards) */
.ls-statement { font-family: var(--ls-font-display); font-weight: 500; font-size: clamp(28px, 3.6vw, 40px); line-height: 1.12; letter-spacing: -.01em; max-width: 880px; color: var(--ls-text); }
.ls-statement em { font-style: italic; color: var(--ls-green); }
.ls-whygrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; margin-top: 38px; }
.ls-why h4 { font-family: var(--ls-font-mono); color: var(--ls-green); font-weight: 500; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; margin-bottom: 6px; }
.ls-why p { font-size: 15px; color: var(--ls-muted); }
@media (max-width: 760px) { .ls-whygrid { grid-template-columns: 1fr; gap: 22px; } }

/* Scout Card proof pair (real vs flagged) */
.ls-proof { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 30px; max-width: 560px; }
.ls-scoutcard { background: var(--ls-surface); border: 1px solid var(--ls-line); border-radius: var(--ls-radius-card); padding: 16px; }
.ls-scoutcard .sc-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ls-scoutcard .sc-handle { font-family: var(--ls-font-display); font-size: 17px; }
.ls-scoutcard .sc-tag { font-family: var(--ls-font-mono); font-size: 10px; letter-spacing: .04em; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; border: 1px solid var(--ls-line); }
.ls-scoutcard .sc-tag.real { color: var(--ls-green); } .ls-scoutcard .sc-tag.flag { color: var(--ls-danger); }
.ls-scoutcard .sc-readout { font-family: var(--ls-font-mono); font-size: 12px; color: var(--ls-muted); margin: 12px 0 6px; }
.ls-scoutcard .sc-readout b { color: var(--ls-text); }
.ls-scoutcard .sc-note { font-family: var(--ls-font-mono); font-size: 10px; color: var(--ls-muted); margin-top: 8px; opacity: .8; }
@media (max-width: 600px) { .ls-proof { grid-template-columns: 1fr; } }

/* Inline scan steps */
.ls-steps { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; font-family: var(--ls-font-mono); font-size: 14px; margin-top: 18px; }
.ls-steps .s { display: flex; align-items: center; gap: 10px; }
.ls-steps .n { color: var(--ls-green); }
.ls-steps .arrow { color: var(--ls-muted); }
@media (max-width: 560px) { .ls-steps { flex-direction: column; align-items: flex-start; gap: 10px; } .ls-steps .arrow { display: none; } }

/* Channel chip rail */
.ls-rail { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.ls-chip { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; font-size: 13.5px; color: var(--ls-text); text-decoration: none; padding: 8px 16px; border: 1px solid var(--ls-line); border-radius: 999px; background: var(--ls-surface); }
.ls-chip .d { width: 6px; height: 6px; border-radius: 50%; background: var(--ls-green); }
.ls-chip.soon { color: var(--ls-muted); opacity: .6; }
.ls-chip.soon .d { background: var(--ls-muted); }
.ls-railnote { font-family: var(--ls-font-mono); font-size: 11px; color: var(--ls-muted); margin-top: 12px; }

/* Pricing — Pro spotlight */
.ls-pricewrap { display: grid; grid-template-columns: 1.2fr 1fr; gap: 18px; align-items: stretch; margin-top: 24px; }
.ls-price-hero { background: var(--ls-surface); border: 1px solid var(--ls-ember); box-shadow: 0 0 0 1px var(--ls-ember); border-radius: var(--ls-radius-card); padding: 28px; display: flex; flex-direction: column; }
.ls-price-hero .ribbon { font-family: var(--ls-font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--ls-ember); }
.ls-price-hero .nm { font-family: var(--ls-font-display); font-size: 30px; font-weight: 500; margin-top: 4px; }
.ls-price-hero .amt { font-family: var(--ls-font-mono); font-size: 38px; font-weight: 600; margin: 10px 0 2px; }
.ls-price-hero .per { font-size: 13px; color: var(--ls-muted); }
.ls-price-hero ul { list-style: none; margin: 16px 0; padding: 0; font-size: 14px; color: var(--ls-muted); display: flex; flex-direction: column; gap: 7px; }
.ls-tiers { display: flex; flex-direction: column; border: 1px solid var(--ls-line); border-radius: var(--ls-radius-card); overflow: hidden; background: var(--ls-surface); }
.ls-tier { display: flex; justify-content: space-between; align-items: center; padding: 14px 18px; border-bottom: 1px solid var(--ls-line); }
.ls-tier:last-of-type { border-bottom: 0; }
.ls-tier .nm { font-family: var(--ls-font-display); font-size: 16px; font-weight: 500; }
.ls-tier .meta { font-size: 12px; color: var(--ls-muted); }
.ls-tier .amt { font-family: var(--ls-font-mono); font-size: 16px; font-weight: 600; }
.ls-compare-link { font-family: var(--ls-font-mono); font-size: 12px; color: var(--ls-green); text-decoration: none; display: inline-block; margin-top: 16px; }
@media (max-width: 760px) { .ls-pricewrap { grid-template-columns: 1fr; } }

/* CTA band */
.ls-cta { text-align: center; background: radial-gradient(circle at 50% 0%, rgba(43,229,122,.06), transparent 60%); }
.ls-cta .ls-sub { margin: 0 auto; }
.ls-cta .row { display: flex; gap: 12px; justify-content: center; margin-top: 20px; flex-wrap: wrap; }

/* Blog grid (Night) */
.ls-blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 24px; }
.ls-blog-card { background: var(--ls-surface); border: 1px solid var(--ls-line); border-radius: var(--ls-radius-card); padding: 18px; cursor: pointer; text-align: left; }
.ls-blog-card .cat { font-family: var(--ls-font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--ls-green); }
.ls-blog-card h3 { font-family: var(--ls-font-display); font-size: 18px; font-weight: 500; margin: 8px 0 6px; color: var(--ls-text); }
.ls-blog-card p { font-size: 13.5px; color: var(--ls-muted); }
.ls-blog-card .meta { font-family: var(--ls-font-mono); font-size: 11px; color: var(--ls-muted); margin-top: 12px; }
.ls-blog-skeleton { height: 150px; border-radius: var(--ls-radius-card); border: 1px solid var(--ls-line); background: linear-gradient(100deg, var(--ls-surface) 30%, var(--ls-raised) 50%, var(--ls-surface) 70%); background-size: 200% 100%; animation: ls-shimmer 1.4s linear infinite; }
@keyframes ls-shimmer { to { background-position: -200% 0; } }
.ls-blog-empty { grid-column: 1 / -1; font-family: var(--ls-font-mono); font-size: 13px; color: var(--ls-muted); padding: 28px; text-align: center; border: 1px dashed var(--ls-line); border-radius: var(--ls-radius-card); }
.ls-blog-empty a { color: var(--ls-green); text-decoration: none; }
@media (prefers-reduced-motion: reduce) { .ls-blog-skeleton { animation: none; } }
@media (max-width: 900px) { .ls-blog-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ls-blog-grid { grid-template-columns: 1fr; } }

/* About (trimmed) + disclosure footnote */
.ls-about p { color: var(--ls-muted); font-size: 16px; line-height: 1.7; max-width: 720px; margin-top: 14px; }
.ls-legal { margin-top: 20px; font-family: var(--ls-font-mono); font-size: 12px; color: var(--ls-muted); border: 1px solid var(--ls-line); border-radius: var(--ls-radius-control); padding: 12px 16px; max-width: 720px; }

/* ════════════════════════════════════════════════════════════════════════════
   Legacy → Living Scout bridge (Day). App/tool surfaces that link this file and
   set <body data-mode="day" data-ls-app> get their legacy styles.css `--clr-*`
   component palette + DM default fonts reskinned to Living Scout Day in ONE place
   — keeping each page migration a tiny diff (remove the DM font <link>, fix any
   page-local font declarations / hardcoded hexes, mono the numbers). Opt-in via
   `data-ls-app` so the already-migrated marketing pages (data-mode, no data-ls-app)
   are completely unaffected. Pinned to Day: the theme toggle is hidden because the
   surface is fixed to the Field-Journal ground.
   ════════════════════════════════════════════════════════════════════════════ */
[data-ls-app] {
  --clr-bg: #F5F0E6;            --clr-bg-2: #EFE9DC;          --clr-bg-3: #EAE3D4;
  --clr-surface: #FFFFFF;       --clr-surface-hover: #FBF8F1;
  --clr-primary: #0f6b38;       --clr-primary-dark: #0b522a;  --clr-primary-hover: #0d5e31;
  --clr-primary-muted: #dcefe2;
  --clr-accent: #FF6B3D;        --clr-accent-muted: #ffe6dc;  /* ember */
  --clr-text: #16201A;          --clr-text-2: #5C6B60;        --clr-text-3: #85978B;
  --clr-text-muted: #5C6B60;
  --clr-border: rgba(22,32,26,.12);  --clr-border-strong: rgba(22,32,26,.22);
  --clr-success: #0f6b38;       --clr-success-muted: #dcefe2;
  --clr-danger: #b02a37;        --clr-danger-muted: #fbe7e9;
  --clr-warning: #b58900;       --clr-warning-muted: #faf2da;
  /* alias tokens some pages reference directly */
  --primary: #0f6b38;  --primary-dark: #0b522a;  --accent: #0f6b38;  --accent-orange: #FF6B3D;
  --bg-primary: #F5F0E6;  --bg-secondary: #EFE9DC;  --bg-card: #FFFFFF;
  --text-primary: #16201A;  --text-secondary: #5C6B60;  --border: rgba(22,32,26,.12);
  /* nudge legacy 8px controls toward Living Scout 10–12 */
  --radius-xs: 6px;  --radius-sm: 10px;
  font-family: var(--ls-font-body);
}
[data-ls-app] :is(h1, h2, h3, h4, h5, h6) { font-family: var(--ls-font-display); font-weight: 500; letter-spacing: -.02em; }
[data-ls-app] .theme-toggle { display: none; }

/* ════════════════════════════════════════════════════════════════════════════
   Mode-aware site chrome (T1/E1): when <html data-chrome="night">, site-chrome.js
   nav + footer render in Living Scout Night. Legacy pages (no data-chrome) keep
   their styles.css light/dark theme + toggle untouched. The toggle is hidden
   here AND skipped in site-chrome.js on these pages.
   ════════════════════════════════════════════════════════════════════════════ */
/* The document ground itself: a Night-chrome page must sit on the Living Scout
   Night ground, not the legacy styles.css `body { background: var(--clr-bg) }`
   paper. Without this the body keeps the light legacy bg while Night section text
   (--ls-text, near-white) washes out — light-on-light. Specificity (0,1,1) beats
   the legacy `body` (0,0,1), so no !important needed. */
[data-chrome="night"] body { background: var(--ls-bg); color: var(--ls-text); }
[data-chrome="night"] .site-nav { background: var(--ls-bg); border-bottom: 1px solid var(--ls-line); }
[data-chrome="night"] .site-nav.is-scrolled { box-shadow: 0 1px 0 var(--ls-line), 0 8px 24px rgba(0,0,0,.4); }
[data-chrome="night"] .nav-logo-text { font-family: var(--ls-font-display); color: var(--ls-text); }
[data-chrome="night"] .nav-links a { font-family: var(--ls-font-body); color: var(--ls-muted); }
[data-chrome="night"] .nav-links a:hover, [data-chrome="night"] .nav-links a:focus-visible { color: var(--ls-green); }
[data-chrome="night"] .nav-product-menu { background: var(--ls-raised); border-color: var(--ls-line); }
[data-chrome="night"] .nav-product-menu a { color: var(--ls-text); }
[data-chrome="night"] .nav-product-menu a:hover { background: var(--ls-surface); }
[data-chrome="night"] .nav-product-desc { color: var(--ls-muted); }
[data-chrome="night"] .nav-cta { background: var(--ls-ember); color: #1a0a04; font-family: var(--ls-font-body); border-radius: var(--ls-radius-control); }
[data-chrome="night"] .nav-links a.nav-link-cta { background: var(--ls-ember); color: #1a0a04; }
[data-chrome="night"] .hamburger span { background: var(--ls-text); }
[data-chrome="night"] .theme-toggle { display: none; }
[data-chrome="night"] .site-footer { background: var(--ls-surface); border-top: 1px solid var(--ls-line); }
[data-chrome="night"] .footer-brand p, [data-chrome="night"] .footer-col a, [data-chrome="night"] .footer-bottom p { color: var(--ls-muted); font-family: var(--ls-font-body); }
[data-chrome="night"] .footer-col h4 { color: var(--ls-text); font-family: var(--ls-font-body); }
[data-chrome="night"] .footer-col a:hover { color: var(--ls-green); }
[data-chrome="night"] .footer-bottom { border-top: 1px solid var(--ls-line); }

/* ════════════════════════════════════════════════════════════════════════════
   Synced DAY chrome: every Living Scout Day page (<body data-mode="day">) gets
   its site-chrome.js nav + footer + mobile menu reskinned to Living Scout Day —
   Fraunces logo, Geist links, EMBER primary CTA, hidden legacy theme toggle — so
   the chrome matches the page on marketing, app, AND utility surfaces alike
   (mirrors the data-chrome="night" block, for Day). Keyed on data-mode="day"
   (present on every migrated page), so no per-page edit is needed. index.html
   uses data-chrome="night" instead, so its Night chrome is unaffected.
   ════════════════════════════════════════════════════════════════════════════ */
[data-mode="day"] .site-nav { background: #F5F0E6; border-bottom: 1px solid rgba(22, 32, 26, .12); }
[data-mode="day"] .site-nav.is-scrolled { box-shadow: 0 1px 0 rgba(22, 32, 26, .08), 0 8px 24px rgba(22, 32, 26, .06); }
[data-mode="day"] .nav-logo-text { font-family: var(--ls-font-display); font-weight: 500; color: #16201A; }
[data-mode="day"] .nav-links a { font-family: var(--ls-font-body); color: #5C6B60; }
[data-mode="day"] .nav-links a:hover, [data-mode="day"] .nav-links a:focus-visible { color: #0f6b38; }
[data-mode="day"] .nav-product-menu { background: #FFFFFF; border-color: rgba(22, 32, 26, .12); }
[data-mode="day"] .nav-product-menu a { color: #16201A; }
[data-mode="day"] .nav-product-menu a:hover { background: #FBF8F1; }
[data-mode="day"] .nav-product-desc { color: #5C6B60; }
[data-mode="day"] .nav-cta { background: var(--ls-ember); color: #1a0a04; font-family: var(--ls-font-body); border-radius: var(--ls-radius-control); }
/* mobile-menu CTA is a distinct element (.nav-link.nav-link-cta); higher
   specificity than [data-mode="day"] .nav-links a so its text colour wins too */
[data-mode="day"] .nav-links a.nav-link-cta { background: var(--ls-ember); color: #1a0a04; }
[data-mode="day"] .hamburger span { background: #16201A; }
[data-mode="day"] .theme-toggle { display: none; }
[data-mode="day"] .site-footer { background: #FBF8F1; border-top: 1px solid rgba(22, 32, 26, .12); }
[data-mode="day"] .footer-brand p, [data-mode="day"] .footer-col a, [data-mode="day"] .footer-bottom p { color: #5C6B60; font-family: var(--ls-font-body); }
[data-mode="day"] .footer-col h4 { color: #16201A; font-family: var(--ls-font-body); }
[data-mode="day"] .footer-col a:hover { color: #0f6b38; }
[data-mode="day"] .footer-bottom { border-top: 1px solid rgba(22, 32, 26, .12); }
