/* Precinct Labs site styles. Look and feel mirrors Lone Star Ledger (ledger.html): dark-navy
   single column, Barlow + IBM Plex Mono, mono eyebrows, surface cards. Light theme mirrored.
   Each product has its own color: --letters, --ledger, --walk. Product pages add a body
   theme class (theme-letters, theme-walk) that retints the whole page in that color. */
:root {
  color-scheme: dark;
  --bg:#0a1020; --surface:#111a2e; --surface-2:#18243d; --line:#243150;
  --fg:#eaf0fa; --fg-2:#b4c0d6; --muted:#7e8ba3; --accent:#7fbcff;
  --letters:#d95926; --ledger:#3987e5; --walk:#2fb344;
  --good:#2fb344; --bad:#ec835a;
  --font-ui:"Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --radius:10px;
}
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) {
    color-scheme: light;
    --bg:#f3f5f9; --surface:#ffffff; --surface-2:#eaeef5; --line:#d8dee9;
    --fg:#0f1829; --fg-2:#3f4b63; --muted:#6b7690; --accent:#1f5fbf;
    --letters:#c44a1e; --ledger:#2a78d6; --walk:#1f8a34;
    --good:#1f8a34; --bad:#c44a1e;
  }
}
:root[data-theme="light"] {
  color-scheme: light;
  --bg:#f3f5f9; --surface:#ffffff; --surface-2:#eaeef5; --line:#d8dee9;
  --fg:#0f1829; --fg-2:#3f4b63; --muted:#6b7690; --accent:#1f5fbf;
  --letters:#c44a1e; --ledger:#2a78d6; --walk:#1f8a34;
  --good:#1f8a34; --bad:#c44a1e;
}
/* ---- Product page themes ------------------------------------------------------
   Same structure as the navy home page: a deep background in the product's color,
   with a lighter shade of it for accents and buttons. */
body.theme-letters {
  --bg:#210c06; --surface:#301409; --surface-2:#3f1c0f; --line:#5c2a18;
  --fg:#fbeee8; --fg-2:#e3c3b6; --muted:#b28a7a; --accent:#ff8f5c;
  --good:#6fd88a; --bad:#ffb08a;
}
body.theme-walk {
  --bg:#06170d; --surface:#0c2416; --surface-2:#12311f; --line:#1d4a30;
  --fg:#eaf7ef; --fg-2:#b6d6c2; --muted:#7fa28c; --accent:#6fdc8c;
  --good:#6fdc8c; --bad:#ec835a;
}
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) body.theme-letters {
    --bg:#fbf3ef; --surface:#ffffff; --surface-2:#f6e6de; --line:#ecd3c7;
    --fg:#2a120a; --fg-2:#5e3b2e; --muted:#8d6a5c; --accent:#b8441a;
    --good:#1f8a34; --bad:#b8441a;
  }
  :root:not([data-theme="dark"]) body.theme-walk {
    --bg:#f1f8f3; --surface:#ffffff; --surface-2:#e3f1e7; --line:#cde4d4;
    --fg:#0d2216; --fg-2:#3c5a47; --muted:#6b8a76; --accent:#1f7a34;
    --good:#1f7a34; --bad:#c44a1e;
  }
}
:root[data-theme="light"] body.theme-letters {
  --bg:#fbf3ef; --surface:#ffffff; --surface-2:#f6e6de; --line:#ecd3c7;
  --fg:#2a120a; --fg-2:#5e3b2e; --muted:#8d6a5c; --accent:#b8441a;
  --good:#1f8a34; --bad:#b8441a;
}
:root[data-theme="light"] body.theme-walk {
  --bg:#f1f8f3; --surface:#ffffff; --surface-2:#e3f1e7; --line:#cde4d4;
  --fg:#0d2216; --fg-2:#3c5a47; --muted:#6b8a76; --accent:#1f7a34;
  --good:#1f7a34; --bad:#c44a1e;
}

* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--fg); font-family:var(--font-ui); font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased; }
a { color:var(--accent); }
a:focus-visible, button:focus-visible, input:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.wrap { max-width:1100px; margin:0 auto; padding-left:max(16px,env(safe-area-inset-left,0px)); padding-right:max(16px,env(safe-area-inset-right,0px)); padding-block:0 52px; }
.eyebrow { font-family:var(--font-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }

.topbar { position:sticky; top:0; z-index:9; background:color-mix(in srgb,var(--bg) 88%,transparent); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); }
.topbar .wrap { display:flex; align-items:center; gap:14px; padding-block:10px; flex-wrap:wrap; }
.brand { font-family:var(--font-mono); font-weight:600; font-size:13px; letter-spacing:.14em; text-transform:uppercase; white-space:nowrap; color:var(--fg); text-decoration:none; }
.brand b { color:var(--accent); }
.nav { display:flex; gap:2px; flex-wrap:wrap; margin-left:auto; }
.nav a { font-family:var(--font-mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--fg-2); text-decoration:none; padding:6px 9px; border-radius:6px; }
.nav a:hover { background:var(--surface-2); color:var(--fg); }

.hero { padding-block:48px 28px; }
.hero h1 { font-size:clamp(30px,4.6vw,50px); line-height:1.03; margin:10px 0 14px; font-weight:700; letter-spacing:-.01em; text-wrap:balance; max-width:20ch; }
.hero p.lede { color:var(--fg-2); max-width:62ch; margin:0; font-size:16.5px; }
.hero-cta { display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.hero-note { margin-top:14px; font-family:var(--font-mono); font-size:12px; color:var(--muted); }

section { padding-block:30px; border-top:1px solid var(--line); }
.sec-head { margin-bottom:16px; }
.sec-head h2 { font-size:23px; margin:4px 0 6px; font-weight:600; letter-spacing:-.005em; text-wrap:balance; }
.sec-head p { margin:0; color:var(--fg-2); max-width:70ch; }
.note { color:var(--muted); font-size:12.5px; margin:12px 0 0; }

.products { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px; }
.product { background:var(--surface); border:1px solid var(--line); border-top:3px solid var(--c); border-radius:var(--radius); padding:18px 18px 16px; display:flex; flex-direction:column; gap:10px; min-width:0; }
.product.letters { --c:var(--letters); } .product.ledger { --c:var(--ledger); } .product.walk { --c:var(--walk); }
.product .tag { font-family:var(--font-mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--c); }
.product h3 { margin:0; font-size:21px; font-weight:600; }
.product p { margin:0; color:var(--fg-2); font-size:14px; }
.product ul { margin:0; padding-left:18px; color:var(--fg-2); font-size:13.5px; display:grid; gap:3px; }
.product .go { margin-top:auto; padding-top:10px; border-top:1px solid var(--line); display:flex; flex-wrap:wrap; gap:6px 16px; }
.product .go a { font-family:var(--font-mono); font-size:12px; letter-spacing:.04em; text-transform:uppercase; text-decoration:none; }
.product .go a:hover { text-decoration:underline; }

.steps { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px; }
.step { background:var(--surface); border:1px solid var(--line); border-top:3px solid var(--c,var(--accent)); border-radius:var(--radius); padding:16px 18px; min-width:0; }
.step .tag { font-family:var(--font-mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--c,var(--accent)); }
.step h3 { margin:6px 0 8px; font-size:19px; font-weight:600; }
.step p { margin:0 0 10px; color:var(--fg-2); font-size:14px; }
.step p:last-child { margin-bottom:0; }
.step ul { margin:0; padding-left:18px; color:var(--fg-2); font-size:13.5px; display:grid; gap:4px; }
.step .shot { display:block; width:100%; height:auto; border-radius:8px; border:1px solid var(--line); background:#fff; margin:12px 0 0; }
.step .shot.phone { max-width:300px; margin-inline:auto; border:0; background:transparent; }

.context { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; }
.box { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; min-width:0; }
.box h3 { margin:0 0 8px; font-size:16px; }
.box p { color:var(--fg-2); font-size:14px; margin:0; }

.tiles { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:12px; }
.tile { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px; min-width:0; }
.tile .v { font-size:30px; font-weight:700; line-height:1.1; margin:2px 0 6px; color:var(--c,var(--fg)); }
.tile p { margin:0 0 8px; color:var(--fg-2); font-size:14px; }
.tile cite { font-family:var(--font-mono); font-style:normal; font-size:10.5px; letter-spacing:.04em; color:var(--muted); }

.table-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
table { border-collapse:collapse; width:100%; font-size:13.5px; min-width:640px; }
thead th { background:var(--surface-2); font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--fg-2); text-align:left; padding:10px 12px; border-bottom:1px solid var(--line); vertical-align:bottom; }
tbody td { padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:top; }
tbody tr:last-child td { border-bottom:0; }
tbody tr:hover { background:var(--surface-2); }
td.yes { color:var(--good); font-weight:600; } td.no { color:var(--bad); } td.mut { color:var(--muted); }
th.us, td.us { background:color-mix(in srgb,var(--c,var(--accent)) 12%,transparent); }
th.us { color:var(--fg); }

.callout { background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--c,var(--accent)); border-radius:var(--radius); padding:18px 20px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 24px; }
.callout.stack { display:block; }
.callout h3 { margin:0 0 4px; font-size:18px; }
.callout p { margin:0; color:var(--fg-2); font-size:14px; }
.callout ul { margin:12px 0 16px; padding-left:18px; color:var(--fg-2); font-size:14px; display:grid; gap:4px; }
.btn { display:inline-block; font:inherit; font-family:var(--font-mono); font-size:13px; letter-spacing:.04em; text-decoration:none; color:var(--bg); background:var(--c,var(--accent)); border:1px solid transparent; padding:10px 16px; border-radius:8px; font-weight:600; white-space:nowrap; cursor:pointer; }
.btn:hover { filter:brightness(1.08); }
.btn.ghost { background:transparent; color:var(--fg); border-color:var(--line); }
.btn.ghost:hover { border-color:var(--accent); }
.btn:disabled { opacity:.6; cursor:default; }

.form { display:grid; gap:12px; margin-top:4px; }
.form .row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.form label { display:grid; gap:5px; font-family:var(--font-mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--fg-2); }
.form label em { font-style:normal; color:var(--muted); text-transform:none; letter-spacing:0; }
.form input { font:inherit; font-size:15px; color:var(--fg); background:var(--bg); border:1px solid var(--line); border-radius:8px; padding:10px 12px; width:100%; }
.form input:focus { border-color:var(--accent); outline:none; }
.form .actions { display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; }
.form .status { margin:0; font-size:14px; color:var(--fg-2); }
.form .status.ok { color:var(--good); font-weight:600; } .form .status.err { color:var(--bad); font-weight:600; }
.hp { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

footer { color:var(--muted); font-size:12px; padding-block:22px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:6px; }
footer .footid { color:var(--fg-2); }
footer a { color:var(--accent); text-decoration:none; }
footer a:hover { text-decoration:underline; }
footer .refs { margin-top:10px; }
footer .refs h4 { margin:0 0 6px; font-family:var(--font-mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; font-weight:500; }
footer .refs ol { margin:0; padding-left:18px; display:grid; gap:4px; }

@media (max-width:760px) { .nav { display:none; } .form .row { grid-template-columns:1fr; } }

/* Screenshot pair with a language toggle (letters.html) */
.seg { display:inline-flex; flex-wrap:wrap; background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:3px; gap:2px; }
.seg button { font:inherit; font-family:var(--font-mono); font-size:12px; letter-spacing:.04em; text-transform:uppercase; color:var(--fg-2); background:transparent; border:0; padding:6px 12px; border-radius:6px; cursor:pointer; }
.seg button[aria-pressed="true"] { background:var(--surface-2); color:var(--fg); font-weight:600; }
.shots { margin-top:18px; }
.shots .controls { display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; margin-bottom:12px; }
.shots .controls span { color:var(--muted); font-size:13px; }
.shots .pair { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; }
.shots figure { margin:0; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:12px; min-width:0; }
.shots img { display:block; width:100%; height:auto; border-radius:6px; }
.shots figcaption { margin-top:10px; font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
