/* ============================================================================
   BaseGold v2 - shared stylesheet for the content pages.

   index.html is a bespoke landing page and keeps its own inline styles. Every
   other page - the blog listing, the posts, governance and games - links this
   file instead of carrying its own copy. Before this existed the same v1 block
   was duplicated verbatim across four posts and diverged in two more.

   The token block below is copied VERBATIM from index.html's :root. If the
   site palette changes, change it in both places in the same commit.
   ========================================================================= */

:root {
    /* Surfaces */
    --ink:            #0A0B0D;
    --ink-alt:        #0E1014;
    --surface:        #12141A;
    --surface-hover:  #15171E;
    --hairline:       rgba(255,255,255,.07);
    --card-border:    rgba(255,255,255,.08);

    /* Text - three steps, not seven:
       heading #FFFFFF (19.7) -> body #C3CAD6 (11.9) -> muted #9BA4B4 (7.8)
       The muted step was #8A93A2 (6.4:1) - AA, but the scale's weakest tone and
       the one carrying every 12-13.5px label. #9BA4B4 clears AAA (7:1) and still
       reads a clear step below body. Do not darken it back. */
    --grey-body:      #C3CAD6;
    --grey-muted:     #9BA4B4;
    --text-1:         #FFFFFF;
    --text-strong:    #FFFFFF;
    --text-body:      var(--grey-body);
    --text-2:         var(--grey-body);
    --muted:          var(--grey-muted);
    --faint:          var(--grey-muted);

    /* Where the grey ramp lands while hovered; indirected so the drag-selection
       escape can neutralise the effect by reassigning two values. */
    --warm-body:      var(--gold);
    --warm-muted:     var(--gold-label);

    /* Accents */
    --gold:           #F4C860;
    --gold-mid:       #E9B23C;
    --gold-deep:      #D49B22;
    --gold-label:     #C8A45C;
    --base-blue:      #2C6BFF;
    --base-blue-txt:  #7DA8FF;
    --pos:            #4ADE80;
    --neg:            #F87171;
    --burn-today:     #FF8A4C;

    --mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    --sans: 'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --nav-h: 60px;
    --pad-x: clamp(20px, 5vw, 60px);
    --measure: 68ch;          /* reading width; long-form, not landing-page */
}

/* ------------------------------- Base ---------------------------------- */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    background: var(--ink);
    color: var(--text-body);
    font-family: var(--sans);
    font-size: 17px;
    line-height: 1.7;
    letter-spacing: -0.011em;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}
p { text-wrap: pretty; }
img { max-width: 100%; }
a { color: var(--gold); text-decoration: none; }
a:hover { color: #FFE1A0; }

/* ---------------- Grey text warms to gold on hover ----------------------
   Mirrors index.html. The four grey tokens are re-pointed on hover rather than
   a hover rule being written per component, so custom properties re-resolve on
   every descendant that reads them and later components inherit it for free.

   ONLY text-level elements are listed, and that is load-bearing: :hover matches
   every ANCESTOR of the pointer, so admitting one layout element would flood the
   page gold on any mouse move. div:not(:has(*)) admits text-only leaf divs,
   which have no descendants to flood.

   The two greys keep their relationship after the swap - body -> --gold
   (12.4:1), muted -> --gold-label (8.4:1) - so warming never costs contrast.
   Gated on a real pointer: a tap leaves :hover stuck on touch devices. */
@media (hover: hover) and (pointer: fine) {
    :where(p, li, dt, dd, td, th, span, small, i, b, em, strong,
       figcaption, label, summary, blockquote, code, abbr, time,
       div:not(:has(*)), .breadcrumb) {
        transition: color .18s ease;
    }
    :where(p, li, dt, dd, td, th, span, small, i, b, em, strong,
       figcaption, label, summary, blockquote, code, abbr, time,
       div:not(:has(*)), .breadcrumb):hover {
        --text-body: var(--warm-body);
        --text-2:    var(--warm-body);
        --muted:     var(--warm-muted);
        --faint:     var(--warm-muted);
    }
}

/* Drag-selecting is reading, not pointing: without this the copy strobes gold
   under the selection band. Reassigning the two warm targets neutralises the
   rule above without restating its selector list. Class toggled in JS. */
body.is-selecting {
    --warm-body:  var(--grey-body);
    --warm-muted: var(--grey-muted);
}

/* No ::selection was defined, so highlighting fell back to the UA default -
   a hard blue on near-black. Gold wash, warm ink on top. */
::selection      { background: rgba(244,200,96,.30); color: #FFF3D4; }
::-moz-selection { background: rgba(244,200,96,.30); color: #FFF3D4; }
h1, h2, h3, h4 { margin: 0; color: var(--text-1); letter-spacing: -0.035em; line-height: 1.15; }
hr { border: 0; border-top: 1px solid var(--hairline); margin: 40px 0; }
.mono { font-family: var(--mono); }
.sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* -------------------------------- Nav ----------------------------------- */
/* Same lockup as the homepage: coin, wordmark, quiet links. The v1 bar was
   fixed-position with uppercase letterspaced serif links; this is sticky, so
   content is never hidden under it and no page needs a magic top padding. */
/* Two markup shapes for the same bar: the blog uses <nav>, governance and
   games use <header class="header">. Both get the identical lockup. */
body > nav, body > .header {
    position: sticky;
    top: 0;
    z-index: 50;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
    min-height: var(--nav-h);
    padding: 12px var(--pad-x);
    background: rgba(10,11,13,.92);
    backdrop-filter: saturate(140%) blur(10px);
    border-bottom: 1px solid var(--hairline);
}
.logo-container, .header .logo { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.nav-logo, .header .logo img { display: block; width: 30px; height: 30px; border-radius: 0; }
.logo, .logo-text {
    font-family: var(--sans);
    font-size: 17px;
    font-weight: 700;
    letter-spacing: -0.02em;
    text-transform: none;
    color: var(--text-strong);
}
.logo-container:hover .logo, .header .logo:hover .logo-text { color: var(--text-strong); }

/* Quiet ghost link used in the governance and games bars. */
.back-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 14.5px;
    font-weight: 500;
    color: var(--text-2);
    border: 1px solid var(--card-border);
    border-radius: 10px;
    padding: 9px 15px;
    transition: color .18s ease, border-color .18s ease, background .18s ease;
}
.back-btn:hover { color: var(--gold); border-color: rgba(244,200,96,.35); background: rgba(244,200,96,.06); }
.nav-links {
    display: flex;
    align-items: center;
    gap: clamp(14px, 2vw, 28px);
    margin: 0;
    padding: 0;
    list-style: none;
    flex-wrap: wrap;
    font-size: 14.5px;
    font-weight: 500;
}
.nav-links a {
    color: var(--text-2);
    text-transform: none;
    letter-spacing: -0.011em;
    font-size: 14.5px;
    transition: color .18s ease;
}
.nav-links a:hover { color: var(--gold); }
.nav-links a.active { color: var(--gold); }

/* --------------------------- Page furniture ----------------------------- */
.marker {
    font-family: var(--mono);
    font-size: 12px;
    color: var(--gold-label);
    letter-spacing: .02em;
    margin-bottom: 14px;
}
.breadcrumb {
    font-family: var(--mono);
    font-size: 12px;
    color: var(--muted);
    letter-spacing: .02em;
    margin-bottom: 26px;
}
.breadcrumb a { color: var(--muted); }
.breadcrumb a:hover { color: var(--gold); }
.breadcrumb span { color: var(--gold-label); }

/* ---------------------------- Blog listing ------------------------------ */
.blog-header {
    padding: clamp(56px, 8vw, 104px) var(--pad-x) clamp(30px, 4vw, 46px);
    max-width: 1280px;
    margin: 0 auto;
}
.blog-header h1 {
    font-family: var(--sans);
    font-size: clamp(34px, 5.2vw, 56px);
    font-weight: 800;
    color: var(--text-1);
    margin-bottom: 18px;
    max-width: 20ch;
}
.blog-header p {
    margin: 0;
    font-size: 18px;
    line-height: 1.65;
    color: var(--text-2);
    max-width: 62ch;
}
.posts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
    gap: 14px;
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 var(--pad-x) clamp(60px, 8vw, 110px);
}
.post-card {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--card-border);
    border-radius: 16px;
    background: var(--surface);
    padding: clamp(22px, 2.4vw, 28px);
    text-decoration: none;
    transition: border-color .2s ease, background .2s ease, transform .2s ease;
}
.post-card:hover {
    border-color: rgba(244,200,96,.28);
    background: var(--surface-hover);
    transform: translateY(-2px);
}
.post-card .tag {
    align-self: flex-start;
    font-family: var(--mono);
    font-size: 11.5px;
    color: var(--gold-label);
    background: rgba(244,200,96,.1);
    border-radius: 100px;
    padding: 4px 11px;
    margin-bottom: 16px;
    text-transform: uppercase;
    letter-spacing: .08em;
}
.post-card h2 {
    font-size: 21px;
    font-weight: 700;
    line-height: 1.25;
    color: var(--text-strong);
    margin: 0 0 10px;
}
.post-card:hover h2 { color: var(--gold); }
.post-card p { margin: 0 0 18px; font-size: 15.5px; line-height: 1.6; color: var(--text-2); }
.post-card .meta {
    font-family: var(--mono);
    font-size: 11.5px;
    color: var(--faint);
    margin-top: auto;
}
.post-card .read-more {
    margin-top: 14px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--gold);
}

/* ------------------------------- Article -------------------------------- */
.article-wrap {
    max-width: 100%;
    width: min(100%, 800px);
    margin: 0 auto;
    padding: clamp(40px, 6vw, 72px) var(--pad-x) 40px;
}
.article-tag {
    display: inline-block;
    font-family: var(--mono);
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--gold-label);
    background: rgba(244,200,96,.1);
    border: 0;
    border-radius: 100px;
    padding: 5px 13px;
    margin-bottom: 22px;
}
.article-wrap h1 {
    font-family: var(--sans);
    font-size: clamp(32px, 4.6vw, 50px);
    font-weight: 800;
    line-height: 1.08;
    color: var(--text-1);
    margin-bottom: 20px;
}
.article-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    align-items: center;
    font-family: var(--mono);
    font-size: 12px;
    color: var(--muted);
    border-bottom: 1px solid var(--hairline);
    padding-bottom: 22px;
    margin-bottom: 36px;
}
/* restated, not inherited from .article-meta, so the hover swap re-resolves */
.article-meta span, .article-meta time { color: var(--muted); }
.article-meta .author { color: var(--gold-label); }
.lead {
    font-size: 20px;
    line-height: 1.55;
    font-weight: 500;
    letter-spacing: -0.02em;
    color: var(--text-1);
    margin-bottom: 32px;
    max-width: var(--measure);
}
article { max-width: var(--measure); }
article h2 {
    font-size: clamp(24px, 2.8vw, 31px);
    font-weight: 700;
    color: var(--text-1);
    margin: 52px 0 16px;
    padding: 0;
    border: 0;
}
article h3 {
    font-size: clamp(19px, 2vw, 22px);
    font-weight: 700;
    color: var(--text-1);
    margin: 34px 0 10px;
}
article p { color: var(--text-body); margin: 0 0 20px; }
article ul, article ol { color: var(--text-body); margin: 0 0 20px; padding-left: 22px; }
/* colour restated (not inherited from the ul) so the hover swap can re-resolve it */
article li { margin-bottom: 10px; color: var(--text-body); }
article li::marker { color: var(--gold-label); }
article strong { color: var(--text-1); font-weight: 600; }
article em { color: var(--text-1); font-style: italic; }
article a { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(244,200,96,.35); }
article a:hover { color: #FFE1A0; text-decoration-color: currentColor; }
article code {
    font-family: var(--mono);
    font-size: .9em;
    color: var(--gold);
    background: rgba(244,200,96,.08);
    border-radius: 5px;
    padding: 2px 6px;
}

/* ------------------------------ Components ------------------------------ */
.stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr));
    gap: 12px;
    margin: 32px 0;
    max-width: var(--measure);
}
.stat-box {
    border: 1px solid var(--card-border);
    border-radius: 14px;
    background: linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015));
    padding: 18px;
    text-align: left;
}
.stat-box .num {
    display: block;
    font-family: var(--sans);
    font-size: 27px;
    font-weight: 700;
    letter-spacing: -0.03em;
    color: var(--gold);
    font-variant-numeric: tabular-nums;
}
.stat-box .label { font-size: 13px; color: var(--muted); }

/* The v1 version was a left-bordered yellow wash. The v2 card idiom carries
   the same emphasis without introducing a second card shape on the page. */
.highlight-box {
    border: 1px solid rgba(244,200,96,.2);
    border-radius: 16px;
    background: linear-gradient(160deg, rgba(244,200,96,.07), rgba(18,20,26,.95) 58%);
    padding: 22px 26px;
    margin: 30px 0;
    max-width: var(--measure);
}
.highlight-box p { margin: 0; color: var(--text-1); }

.compare-table {
    width: 100%;
    max-width: var(--measure);
    border-collapse: collapse;
    margin: 30px 0;
    font-size: 15.5px;
}
.compare-table th, .compare-table td {
    text-align: left;
    padding: 14px 16px;
    border-bottom: 1px solid rgba(255,255,255,.06);
}
.compare-table th {
    font-family: var(--sans);
    font-size: 13px;
    font-weight: 600;
    color: var(--faint);
    background: rgba(255,255,255,.03);
    border-bottom: 1px solid var(--hairline);
}
.compare-table td { color: var(--text-body); }
.compare-table tr td:first-child { color: var(--text-1); font-weight: 600; }
.compare-table tr:last-child td { border-bottom: 0; }

.cta-box {
    border: 1px solid rgba(244,200,96,.2);
    border-radius: 18px;
    background: linear-gradient(160deg, rgba(244,200,96,.09), rgba(18,20,26,.95) 60%);
    padding: clamp(26px, 3.4vw, 38px);
    margin: 52px 0;
    text-align: center;
    max-width: var(--measure);
}
.cta-box h3 { font-size: clamp(21px, 2.4vw, 26px); font-weight: 700; color: var(--text-1); margin-bottom: 10px; }
.cta-box p { color: var(--text-2); margin: 0 0 22px; }
/* The struck-gold button, matching every Buy BG on the homepage. */
.cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-family: var(--sans);
    font-size: 16px;
    font-weight: 600;
    letter-spacing: -0.011em;
    text-transform: none;
    color: #1a1200;
    background: linear-gradient(135deg, #FFE49B 0%, var(--gold) 32%, var(--gold-mid) 62%, var(--gold-deep) 100%);
    border-radius: 11px;
    padding: 15px 30px;
    text-decoration: none;
    transition: filter .2s ease, transform .2s ease;
}
.cta-btn:hover { color: #1a1200; filter: brightness(1.07); transform: translateY(-1px); }

.related { margin: 48px 0 0; max-width: var(--measure); }
.related h2 { font-size: 20px; font-weight: 700; color: var(--text-1); margin: 0 0 14px; }
.related a {
    display: block;
    color: var(--text-2);
    text-decoration: none;
    padding: 12px 0;
    border-bottom: 1px solid var(--hairline);
    transition: color .18s ease;
}
.related a:last-child { border-bottom: 0; }
.related a:hover { color: var(--gold); }

.disclaimer-note {
    font-size: 13.5px;
    line-height: 1.7;
    color: var(--muted);
    background: rgba(255,255,255,.025);
    border: 1px solid var(--hairline);
    border-radius: 14px;
    padding: 18px 20px;
    margin-top: 44px;
    max-width: var(--measure);
}

/* ------------------------------- Footer --------------------------------- */
footer {
    text-align: center;
    padding: clamp(44px, 6vw, 68px) var(--pad-x) 44px;
    margin-top: clamp(56px, 7vw, 84px);
    background: rgba(10,11,13,.8);
    border-top: 1px solid var(--hairline);
    color: var(--muted);
    font-size: 13.5px;
    line-height: 1.7;
}
footer p { margin: 0 auto 10px; max-width: 78ch; color: var(--muted); }
footer a { color: var(--gold-label); }
footer a:hover { color: var(--gold); }
.footer-legal {
    display: flex;
    gap: 18px;
    justify-content: center;
    flex-wrap: wrap;
    margin: 16px auto 20px;
    padding: 16px 0;
    border-top: 1px solid var(--hairline);
    border-bottom: 1px solid var(--hairline);
    max-width: 78ch;
    font-size: 14px;
}
.footer-legal a { color: var(--text-2); }
.footer-legal a:hover { color: var(--gold); }

/* ------------------------------ Responsive ------------------------------ */
@media (max-width: 860px) {
    body { font-size: 16.5px; }
    body > nav, body > .header { gap: 12px; padding: 10px var(--pad-x); }
    .back-btn { font-size: 13.5px; padding: 8px 12px; }
    .nav-logo { width: 26px; height: 26px; }
    .logo { font-size: 16px; }
    .nav-links { gap: 14px; font-size: 13.5px; width: 100%; }
    .nav-links a { font-size: 13.5px; }
    .article-wrap { padding-top: 34px; }
    .lead { font-size: 18px; }
    .compare-table { font-size: 14.5px; }
    .compare-table th, .compare-table td { padding: 12px 12px; }
}
@media (max-width: 560px) {
    /* Six links do not fit; the last two live in the footer anyway. */
    .nav-links li:nth-child(n+5) { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    * { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
