/**
 * regen-shared.css — the one stylesheet all five /regen/ pages load.
 *
 * Before this file: index.html, forum.html, explorer.html, commons.html and
 * burn.html each inlined a full `:root` color system from scratch, built at
 * different times this session. All five landed close (a dark green-black
 * ground, a growth-green accent, an amber "ember" highlight) but not equal,
 * used a generic system-font stack instead of the site's own type, ran two
 * different nav shapes (`nav.bar` on forum/explorer, `header.hero` + a
 * cross-link eyebrow on the rest), and defaulted to dark-follows-OS instead
 * of vealth.net's actual law: light is the default for everyone, dark is an
 * explicit opt-in (vealth-theme.js), never OS-detected.
 *
 * This file does NOT load vealth-next.css wholesale — these pages already
 * carry hundreds of lines of page-local component CSS (governance tallies,
 * forum threads, the commons ledger strip) built around var(--x) tokens, and
 * vealth-next.css's own .card/.btn/.wrap/.foot classes mean something
 * different here. Loading both would fight the cascade for no gain. Instead
 * this defines the SAME token contract those pages already reference
 * (--bg, --panel, --ink, --growth, --ember, --clay, --tide, ...) with values
 * drawn straight from vealth-next.css's real gold/green/black system
 * (operator law, 2026-08-07: "the colors are too bright they need to match
 * the logo gold green black"), so every existing component re-skins for
 * free with zero markup changes. It also carries the ONE nav these five
 * pages now share, styled like the site's own quiet-nav (warm glass, a
 * spectrum bottom edge) but scoped to this cluster's own five doors plus one
 * way back to vealth.net, never the primary product nav.
 *
 * Each page still sets body{font:...} and .btn{color:#08130d} as literal
 * declarations of its own, which win the cascade over anything declared here
 * (same specificity, later in the document) — those two properties were
 * edited directly on each page rather than fought over here. Everything
 * else routes through these tokens.
 */

:root {
  /* ── light: the default for everyone ── */
  --bg:#f1e4cd; --panel:#fdf7ec; --raised:#f8f0dd; --sunk:#f0e4c8; --hover:#f4ead4;
  --ink:#241b18; --dim:#5b4a3c; --faint:#8a7a64;
  --line:#e6d7b8; --line2:#d8c49c;
  /* --ember was #c98a2e until 2026-08-11: measured 2.6-2.8:1 against --panel/--raised,
     under the 3:1 floor WCAG sets even for large text and UI-component outlines. It
     carries real status meaning here (deposit-period pills, vote countdown clocks,
     "has not voted" tags), not decoration, so this darkens the same gold/amber hue
     (same hue+saturation, lower lightness) until it clears 4.5:1 against every surface
     that uses it as text. --rn-spectrum below keeps the original bright gold — that
     gradient is the logo's own color and is untouched. */
  --growth:#2f6f4a; --mint:#3e7d5a; --sand:#7d8451; --ember:#8f6221; --clay:#a8402f; --tide:#3f7ba1;
  --link:#146b41;
  --shadow:0 1px 0 rgba(255,255,255,.65), 0 6px 20px -16px rgba(90,58,30,.32);
  /* text laid on a saturated fill (button faces, bar segments) never a token
     with a second, contradictory job (see --sunk, which is also the recessed
     inset-field color and must stay dark-adjacent in both themes). */
  --btn-ink:#fbf3e2;

  /* the lotus spectrum: identical in both themes, thin rules only (doctrine:
     "the spectrum is the logo's, not the controls'"). Must equal
     vealth-next.css --spectrum. */
  --rn-spectrum:linear-gradient(112deg,#c98a2e 0%,#d9a94f 22%,#6f9e76 55%,#3f6a52 78%,#1b1b20 100%);
  --rn-glass:linear-gradient(115deg,rgba(255,247,229,.86),rgba(255,234,240,.55),rgba(236,251,236,.5),rgba(233,246,255,.6));
}
/* Dark is OPT-IN ONLY (vealth.net law, 2026-08-05): a visitor's OS preference
   is never consulted. The toggle appended by /vealth-theme.js is the only
   way in, and it sets this attribute on <html>. */
:root[data-theme="dark"] {
  --bg:#0d1310; --panel:#161d17; --raised:#1c251d; --sunk:#0a0f0b; --hover:#1a2219;
  --ink:#ece4d0; --dim:#b9ad8e; --faint:#8a8069;
  --line:#2a3327; --line2:#37422f;
  --growth:#6da678; --mint:#7fa583; --sand:#a3ab7f; --ember:#d9b876; --clay:#c9776a; --tide:#8badb4;
  --link:#d5bc7e;
  --shadow:0 1px 0 rgba(255,255,255,.02), 0 8px 28px -18px rgba(0,0,0,.9);
  --btn-ink:#0d130e;
  --rn-glass:linear-gradient(115deg,rgba(13,16,11,.9),rgba(17,21,14,.78),rgba(15,19,13,.74),rgba(19,23,16,.8));
}

/* ── the one nav: brand back to vealth.net, this cluster's five doors ── */
.regen-nav{
  position:sticky; top:0; z-index:60;
  display:flex; align-items:center; gap:10px 16px; flex-wrap:wrap;
  padding:10px 20px;
  border-bottom:1px solid var(--line);
  background:var(--rn-glass);
  -webkit-backdrop-filter:blur(14px) saturate(1.1); backdrop-filter:blur(14px) saturate(1.1);
}
.regen-nav::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px;
  background:var(--rn-spectrum); opacity:.75;
}
.rn-brand{
  display:inline-flex; align-items:center; gap:8px; flex:none;
  font-family:"Fraunces",Georgia,serif; font-weight:600; font-size:16px;
  color:var(--ink); text-decoration:none; min-height:32px;
}
.rn-brand:hover{ color:var(--growth); }
.rn-mark{
  width:26px; height:26px; flex:none; border-radius:50%;
  background:url("/brand-mark-light-round-96.png?v=lotus9") center/contain no-repeat;
}
:root[data-theme="dark"] .rn-mark{ background-image:url("/brand-mark-dark-round-96.png?v=lotus9"); }
.rn-crumb{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:11px;
  letter-spacing:.09em; text-transform:uppercase; color:var(--faint); flex:none;
}
.rn-links{ display:flex; align-items:center; gap:2px; flex-wrap:wrap; margin-left:auto; }
.rn-links a{
  text-decoration:none; font-size:13px; font-weight:600; color:var(--dim);
  padding:7px 12px; border-radius:999px; white-space:nowrap;
  min-height:32px; display:inline-flex; align-items:center;
  transition:background .15s ease, color .15s ease;
}
.rn-links a:hover{ color:var(--ink); background:var(--hover); }
.rn-links a[aria-current="page"]{
  color:var(--ink); background:var(--raised); box-shadow:inset 0 0 0 1px var(--line2);
}
@media(max-width:640px){
  .regen-nav{ padding:8px 14px 8px 16px; gap:6px 10px; }
  .rn-crumb{ display:none; }
  /* Brand + toggle alone don't fill a line, and the five-door link row never
     fits next to them at this width, so without help the toggle (last in
     source order) is the one pushed onto a lonely third line. order:2 pulls
     it up next to the brand on row 1; flex-basis:100% guarantees the link
     row (order:3) always starts row 2, giving the nav two rows instead of
     three on every phone width, not just some. */
  .rn-links{
    order:3; flex-basis:100%; margin-left:0;
    gap:2px; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch;
    scrollbar-width:none; min-width:0;
  }
  .rn-links::-webkit-scrollbar{ display:none; }
  .rn-links a{ padding:6px 9px; font-size:12.5px; }
}

/* the theme toggle vealth-theme.js appends finds this nav (any <nav> is its
   fallback selector) and adds a 44px button to the end of it; no CSS of ours
   is required for that to work, this rule only keeps it aligned mid-row. */
.regen-nav .vealth-theme-toggle{ margin-left:4px; }
@media(max-width:640px){ .regen-nav .vealth-theme-toggle{ order:2; margin-left:auto; } }

/* ── the executable-loop component (2026-08-11, tightened same day —
   operator: "more minimal and button fun... people want to do but not
   stress, it has to be way more engaging than anything else they'd be
   doing"). No money changes hands here, so the only thing that gets
   someone to tap is the tap itself feeling good and the read feeling
   short. Two changes from the first version: copy per step drops to one
   short clause instead of a paragraph (a hard requirement like "needs
   staked REGEN" becomes a small tag, not another sentence to parse), and
   the CTA becomes a real pressable pill instead of a quiet text link —
   the one deliberately playful flourish on these six pages, identical
   everywhere so it reads as this site's signature "go do it" button
   rather than six invented ones. Still a real <ol>/<li>, not styled
   <div>s (screen readers don't reliably announce the counter-increment
   badge below, so real list semantics carry the ordering). */
.rn-loop{ display:flex; flex-direction:column; gap:8px; margin:20px 0; padding:0; list-style:none; counter-reset:rnstep; }
.rn-step{
  position:relative; display:flex; gap:12px; align-items:center; flex-wrap:wrap;
  padding:11px 14px; background:var(--panel); border:1px solid var(--line);
  border-radius:14px; counter-increment:rnstep;
  transition:border-color .15s ease;
}
.rn-step:hover{ border-color:var(--line2); }
.rn-step::before{
  content:counter(rnstep); flex:none; width:22px; height:22px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font:700 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; color:var(--btn-ink);
  background:var(--growth);
}
.rn-step>div{ flex:1 1 180px; min-width:0; }
.rn-step b{ display:block; color:var(--ink); font-size:14px; font-weight:600; margin-bottom:1px; }
.rn-step p{ margin:0; color:var(--dim); font-size:12.5px; line-height:1.42; max-width:48ch; }
/* a hard requirement (needs staked REGEN, EcoWealth's own proposal, no
   wallet needed) as a glanceable chip instead of a clause bolted onto the
   sentence — the fact stays exactly as true, it just stops reading like
   fine print. */
.rn-tag{
  display:inline-flex; align-items:center; margin-top:5px; font-size:10px; font-weight:700;
  letter-spacing:.04em; text-transform:uppercase; color:var(--faint);
  background:var(--sunk); border-radius:999px; padding:2.5px 8px 3px;
}
/* --ember, not --sand: this needs the same "real status, not decoration"
   contrast --ember was already darkened for elsewhere in this file
   (deposit windows, vote countdowns) — --sand only cleared 3.59:1 against
   --btn-ink in light mode, under WCAG's 4.5:1 floor (measured 2026-08-11
   review gate). No dashed border this pass: dashed reads as "disabled" in
   most UI vocabularies, and a step that needs staked REGEN isn't broken,
   it's just not for everyone — the tag color says that on its own. */
.rn-step[data-optional]::before{ background:var(--ember); }
.rn-step[data-optional] .rn-tag{ color:var(--ember); }
.rn-step-go{
  margin-left:auto; flex:none; display:inline-flex; align-items:center; gap:4px;
  font-size:12.5px; font-weight:700; color:var(--btn-ink); background:var(--growth);
  text-decoration:none; padding:9px 16px; border-radius:999px; white-space:nowrap;
  box-shadow:0 1px 0 rgba(255,255,255,.18) inset, 0 2px 7px -2px rgba(20,40,25,.35);
  transition:transform .15s cubic-bezier(.34,1.56,.64,1), box-shadow .15s ease;
}
.rn-step-go:hover{ transform:translateY(-1px); box-shadow:0 1px 0 rgba(255,255,255,.18) inset, 0 6px 14px -3px rgba(20,40,25,.4); }
.rn-step-go:active{ transform:translateY(0) scale(.95); box-shadow:0 1px 0 rgba(255,255,255,.12) inset, 0 1px 3px -1px rgba(20,40,25,.3); }
:root[data-theme="dark"] .rn-step-go{ box-shadow:0 1px 0 rgba(255,255,255,.08) inset, 0 2px 7px -2px rgba(0,0,0,.5); }
:root[data-theme="dark"] .rn-step-go:hover{ box-shadow:0 1px 0 rgba(255,255,255,.08) inset, 0 6px 14px -3px rgba(0,0,0,.6); }
@media(max-width:520px){ .rn-step-go{ margin-left:0; width:100%; justify-content:center; padding:10px 16px; } }
