/* ============================================================
   BadlandsLabs — Design Tokens & Shared Components
   Single source of truth. Mirrors Style Guide.html (v1.0).
   Link from every page:  <link rel="stylesheet" href="tokens.css">
   (from a subfolder use ../tokens.css)
   ============================================================ */

*{margin:0;padding:0;box-sizing:border-box;}

:root{
  /* ── surfaces ── */
  --paper:#FBFAF6;
  --paper-2:#FFFFFF;
  --sidebar:#F6F3EC;
  --code-bg:#F4F0E6;
  /* ── text ── */
  --ink:#1A1815;
  --ink-2:#46423B;
  --muted:#857E74;
  --faint:#A8A299;
  /* ── lines ── */
  --line:#ECE7DC;
  --line-2:#F4F0E7;
  /* ── accent + status ── */
  --gold:#DA8A22;
  --gold-deep:#C97C18;
  --gold-soft:#F6E6C2;
  --green:#52964A;
  --blue:#3F6FCF;
  --red:#BC5238;
  /* ── elevation ── */
  --shadow-sm:0 1px 2px rgba(40,33,20,.04),0 1px 3px rgba(40,33,20,.05);
  --shadow-md:0 2px 10px rgba(40,33,20,.05),0 6px 22px rgba(40,33,20,.06);
  --shadow-lg:0 16px 50px rgba(40,33,20,.16);
  /* ── type ── */
  --font:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  /* ── radius ── */
  --radius-sm:5px;
  --radius:10px;
  --radius-lg:14px;
  --radius-xl:16px;
  /* ── spacing (4px base) ── */
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;
  --space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;
}

html,body{
  background:var(--paper);color:var(--ink);
  font-family:var(--font);font-size:15px;line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
.mono{font-family:var(--mono);}
a{color:inherit;}

/* ── scrollbars ── */
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-thumb{background:#E4DDCC;border-radius:5px;border:2px solid var(--paper);}
::-webkit-scrollbar-thumb:hover{background:#D8D0BD;}

/* ============================================================
   TOP NAV (public site)
   ============================================================ */
.topnav{border-bottom:1px solid var(--line);background:rgba(251,250,246,0.85);backdrop-filter:saturate(1.4) blur(8px);position:sticky;top:0;z-index:30;}
.topnav-inner{max-width:1080px;margin:0 auto;padding:14px 32px;display:flex;align-items:center;gap:16px;}
.brand{display:flex;align-items:baseline;gap:8px;text-decoration:none;color:var(--ink);}
.brand .wm{font-size:15px;font-weight:600;letter-spacing:-0.01em;}
.brand .wm em{color:var(--gold);font-style:normal;font-weight:600;}
.brand .div{color:var(--line);font-weight:400;}
.brand .ctx{font-size:13.5px;color:var(--muted);font-weight:500;}
.nav-spacer{flex:1;}
.nav-links{display:flex;align-items:center;gap:22px;}
.nav-link{font-size:13.5px;color:var(--muted);text-decoration:none;transition:color .12s;}
.nav-link:hover{color:var(--ink);}
.nav-link.active{color:var(--ink);}
.nav-tag{font-family:var(--mono);font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 10px;background:var(--paper-2);}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{font:inherit;font-size:13.5px;font-weight:500;padding:9px 16px;border-radius:var(--radius);cursor:pointer;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);transition:background .14s,border-color .14s,transform .08s;display:inline-flex;align-items:center;justify-content:center;gap:7px;box-shadow:var(--shadow-sm);text-decoration:none;white-space:nowrap;}
.btn:hover{background:#fff;border-color:#DCD3C2;}
.btn:active{transform:translateY(0.5px);}
.btn svg{width:15px;height:15px;}
.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--paper);}
.btn-primary:hover{background:#000;border-color:#000;}
.btn-accent{background:var(--gold);border-color:var(--gold);color:#fff;}
.btn-accent:hover{background:var(--gold-deep);border-color:var(--gold-deep);}
.btn-danger{color:var(--red);border-color:#EAD2C6;background:var(--paper-2);}
.btn-danger:hover{background:#FBEDE6;border-color:#DDBBA9;}
.btn-ghost{background:transparent;border-color:transparent;color:var(--muted);box-shadow:none;}
.btn-ghost:hover{color:var(--ink);background:var(--sidebar);}
.btn-lg{font-size:15px;padding:12px 22px;border-radius:12px;}
.btn-block{width:100%;}

/* ============================================================
   FORM FIELDS
   ============================================================ */
.field{display:flex;flex-direction:column;gap:6px;}
.field.full{grid-column:1/-1;}
label{font-size:12.5px;color:var(--muted);font-weight:500;}
label em{color:var(--faint);font-style:normal;}
input,select,textarea{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;font:inherit;font-size:14.5px;color:var(--ink);outline:none;transition:border-color .14s,box-shadow .14s,background .14s;width:100%;}
textarea{resize:vertical;line-height:1.55;}
input::placeholder,textarea::placeholder{color:var(--faint);}
input:hover,select:hover,textarea:hover{border-color:#DCD3C2;}
input:focus,select:focus,textarea:focus{border-color:var(--gold);background:#fff;box-shadow:0 0 0 3px rgba(218,138,34,0.13);}
input:read-only{color:var(--muted);background:transparent;cursor:default;}
input:read-only:hover{border-color:var(--line);}
.field-hint{font-size:12px;color:var(--muted);}

/* ============================================================
   BADGES / STATUS PILLS
   ============================================================ */
.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500;border:1px solid var(--line);background:var(--paper-2);color:var(--ink-2);}
.badge .d{width:6px;height:6px;border-radius:50%;background:var(--faint);}
.badge.green{color:var(--green);border-color:#CFE3C2;background:#F1F7EC;}
.badge.green .d{background:var(--green);}
.badge.gold{color:#A56A12;border-color:var(--gold-soft);background:#FBF3DF;}
.badge.gold .d{background:var(--gold);}
.badge.red{color:var(--red);border-color:#EAD2C6;background:#FBEEE8;}
.badge.red .d{background:var(--red);}
.badge.blue{color:var(--blue);border-color:#CBD9F2;background:#EEF3FC;}
.badge.blue .d{background:var(--blue);}

/* ============================================================
   EYEBROW / SECTION SCAFFOLD
   ============================================================ */
.eyebrow{font-family:var(--mono);font-size:11px;color:var(--gold);letter-spacing:0.07em;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px;}
.eyebrow .dot{width:5px;height:5px;border-radius:50%;background:var(--gold);}
.section{padding:44px 0;border-top:1px solid var(--line);}
.sec-num{font-family:var(--mono);font-size:11px;color:var(--faint);letter-spacing:0.06em;}
.sec-title{font-size:24px;font-weight:600;letter-spacing:-0.018em;}
.sec-sub{margin-top:7px;color:var(--muted);font-size:15px;line-height:1.55;}
.sub-label{font-size:11px;color:var(--faint);letter-spacing:0.07em;text-transform:uppercase;font-weight:600;}

/* ============================================================
   CARD
   ============================================================ */
.card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper-2);box-shadow:var(--shadow-sm);}

/* ============================================================
   CODE BLOCK
   ============================================================ */
.codecard{background:var(--code-bg);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.codecard .cc-bar{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line);background:var(--sidebar);font-family:var(--mono);font-size:11.5px;color:var(--muted);}
.codecard .cc-bar .fn{color:var(--ink-2);}
.codecard .cc-copy{margin-left:auto;border:1px solid var(--line);background:var(--paper-2);border-radius:7px;color:var(--muted);font-family:var(--font);font-size:11px;padding:3px 9px;cursor:pointer;}
.codecard .cc-copy:hover{color:var(--ink);border-color:#DCD3C2;}
.codecard pre{padding:15px;font-family:var(--mono);font-size:12.5px;line-height:1.65;color:var(--ink-2);overflow-x:auto;}
.codecard .c-com{color:var(--faint);}
.codecard .c-key{color:var(--blue);}
.codecard .c-str{color:var(--green);}
.codecard .c-gold{color:#A56A12;}
code.inline{font-family:var(--mono);font-size:0.86em;color:var(--ink);background:var(--code-bg);padding:1px 5px;border-radius:var(--radius-sm);}

/* ============================================================
   TOAST
   ============================================================ */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(8px);background:var(--ink);color:var(--paper);border-radius:var(--radius);padding:10px 16px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:80;box-shadow:var(--shadow-md);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ============================================================
   FOOTER (public site)
   ============================================================ */
.site-footer{border-top:1px solid var(--line);margin-top:64px;}
.site-footer-inner{max-width:1080px;margin:0 auto;padding:32px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;font-size:12.5px;color:var(--muted);}
.site-footer a{color:var(--muted);text-decoration:none;}
.site-footer a:hover{color:var(--ink);}
.site-footer .cols{display:flex;gap:40px;flex-wrap:wrap;}
.site-footer .col{display:flex;flex-direction:column;gap:9px;}
.site-footer .col .h{color:var(--ink-2);font-weight:600;font-size:12px;letter-spacing:0.02em;}
