/* ===========================================================================
   CoinCodeCap Design System — Blocksy application layer (Path B)
   Applies the "ink on paper" editorial DS on top of Blocksy WITHOUT a theme swap.
   - Tokens are global (:root) — harmless, opt-in via var().
   - Reading spec + component styles are SCOPED to article content (.entry-content)
     and explicitly EXCLUDE pillar-redesign pages (which ship their own design)
     and the existing custom nav/footer chrome.
   Source of truth: design-system/tokens/*.css + components/*.jsx
   Namespacing: component classes use .ccc-ds-*  (avoids the site's existing .ccc-*).
   =========================================================================== */

/* ---------------------------------------------------------------------------
   0. SELF-HOSTED WEBFONTS (latin, variable, font-display:swap). Local files so
   WP Rocket's Google-Fonts optimization / RUCSS can't strip them. Paths are
   relative to this stylesheet → blocksy-child/fonts/*.woff2.
   --------------------------------------------------------------------------- */
@font-face{font-family:'Newsreader';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/newsreader.woff2') format('woff2')}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:400 500;font-display:swap;src:url('fonts/newsreader-italic.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:400 800;font-display:swap;src:url('fonts/hanken.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/jetbrainsmono.woff2') format('woff2')}

/* ---------------------------------------------------------------------------
   0b. GLOBAL LINK HYGIENE (sitewide). Editorial rule: ONLY body prose links
   underline. Headings-as-links, buttons, nav, logos and cards never underline —
   this fixes the headline + button underlines on the home, post and pillar
   pages. Applies everywhere, including where the reading spec is intentionally
   off (Elementor home, pillars). Body prose links opt back IN below (section 2).
   --------------------------------------------------------------------------- */
:is(h1,h2,h3,h4,h5,h6) a{text-decoration:none !important}
.wp-block-button__link,.wp-element-button,.elementor-button,.elementor-button-link,
.ccc-post-newsletter-btn,.bot-cta,.ct-button,.button,.wp-block-button a,button{text-decoration:none !important}
/* Media never overflows its container (DS v2 responsive default) */
img,svg,video{max-width:100%}
/* Page background = DS warm paper (#FAF9F6), not the theme's cool grey #F8F9FB.
   Pillars keep their own bespoke backgrounds. */
body:not(.pillar-redesign){background-color:var(--ds-paper-warm)}

/* ---------------------------------------------------------------------------
   0c. HOME PAGE — hide leftover non-DS blocks (flagged: "should not exist on
   home page"). The new front-page template already provides the hero, sections
   and its own dark newsletter band, so these duplicates/legacy blocks go:
   - .ct-trending-block  = Blocksy "Trending now" strip
   - .elementor-33984    = Elementor off-canvas/popup (renders inline here because
                           Elementor CSS is dequeued on the home template; the site
                           uses the ccc-nav drawer instead, so it's redundant)
   - .ccc-foot-news      = the footer's purple newsletter (the home has its own)
   --------------------------------------------------------------------------- */
body.home .ct-trending-block,
body.home .elementor-33984,
body.home .elementor-23668,
body.home .ccc-foot-news{display:none !important}
/* NOTE: .elementor-33984 (off-canvas popup) + .elementor-23668 (legacy Elementor
   footer: logo/social/menu/search) are redundant sitewide — the site uses the
   ccc-nav drawer + the clean footer.ccc-footer. Hidden on home per the brief;
   removing them sitewide would let Elementor be dropped from most pages (perf). */

/* ---------------------------------------------------------------------------
   1. DESIGN TOKENS (global — variables only, no visual effect until referenced)
   --------------------------------------------------------------------------- */
:root {
  /* Ink */
  --ds-ink-900:#0E0F12; --ds-ink-800:#1A1C20; --ds-ink-700:#2B2D33; --ds-ink-600:#43464E;
  --ds-ink-500:#5B5E66; --ds-ink-400:#888B93; --ds-ink-300:#B7BAC1; --ds-ink-200:#DFE1E5;
  --ds-ink-150:#E9EAED; --ds-ink-100:#F1F2F4; --ds-ink-50:#F7F8F9;
  /* Paper */
  --ds-paper:#FFFFFF; --ds-paper-warm:#FAF9F6; --ds-paper-sand:#F2F0E9;
  --ds-paper-ink:#0E0F12; --ds-paper-ink-2:#16181D;
  /* Brand green */
  --ds-green-900:#063D29; --ds-green-800:#0A5C3E; --ds-green-700:#0B7A52;
  --ds-green-600:#11A26C; --ds-green-500:#16C784; --ds-green-300:#7FE0B6;
  --ds-green-100:#E4F6EE; --ds-green-50:#F1FAF6;
  /* Bitcoin gold */
  --ds-gold-700:#B86E00; --ds-gold-600:#E8870B; --ds-gold-500:#F7931A; --ds-gold-100:#FDEFD9;
  /* Market */
  --ds-up-600:#0E9F6E; --ds-up-500:#16C784; --ds-down-600:#D23640; --ds-down-500:#EA3943;
  /* Status */
  --ds-info-500:#2D7FF9; --ds-info-100:#E4EEFE; --ds-warn-500:#E8A317; --ds-warn-100:#FCF1D6;
  --ds-danger-500:#EA3943; --ds-danger-100:#FCE4E5; --ds-success-500:#16C784; --ds-success-100:#E4F6EE;
  /* AA-safe text shades for small/coloured-bg labels (>=4.5:1) */
  --ds-down-700:#9E1B23; --ds-gold-800:#7A4A00; --ds-info-700:#1A5FD0;

  /* Semantic aliases */
  --ds-text-strong:var(--ds-ink-900); --ds-text-body:var(--ds-ink-700);
  --ds-text-secondary:var(--ds-ink-500); --ds-text-muted:var(--ds-ink-400);
  --ds-text-link:var(--ds-green-700); --ds-accent:var(--ds-green-600);
  --ds-accent-hover:var(--ds-green-700); --ds-accent-gold:var(--ds-gold-500);
  --ds-border-subtle:var(--ds-ink-150); --ds-border-default:var(--ds-ink-200);

  /* Type families */
  --ds-font-display:'Newsreader', Georgia, 'Times New Roman', serif;
  --ds-font-serif:'Newsreader', Georgia, serif;
  --ds-font-sans:'Hanken Grotesk', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --ds-font-mono:'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* Spacing (4px grid) */
  --ds-space-1:4px; --ds-space-2:8px; --ds-space-3:12px; --ds-space-4:16px;
  --ds-space-5:20px; --ds-space-6:24px; --ds-space-8:32px; --ds-space-10:40px;
  --ds-space-12:48px; --ds-space-16:64px;

  /* Radii / borders / shadows */
  --ds-radius-sm:4px; --ds-radius-md:8px; --ds-radius-lg:12px; --ds-radius-xl:18px; --ds-radius-pill:999px;
  --ds-rule-strong:3px;
  --ds-shadow-xs:0 1px 2px rgba(14,15,18,.06);
  --ds-shadow-sm:0 1px 3px rgba(14,15,18,.08),0 1px 2px rgba(14,15,18,.04);
  --ds-shadow-md:0 4px 12px rgba(14,15,18,.08),0 2px 4px rgba(14,15,18,.04);

  /* Layout */
  --ds-content-measure:680px;
}

/* Guard variable: pages we must NOT restyle (pillars own their design). The
   reading-spec selectors below all hang off `body:not(.pillar-redesign)`. */

/* ---------------------------------------------------------------------------
   2. READING SPEC — adapted from Prose.jsx PROSE_CSS, scoped to .entry-content.
   Applies to standard posts/pages; pillar-redesign pages are excluded so their
   bespoke designs (.ccc-bots/.ccc-exch) are never clobbered.
   --------------------------------------------------------------------------- */
body.single-post:not(.pillar-redesign) .entry-content{
  font-family:var(--ds-font-serif);
  font-size:19px;
  line-height:1.72;
  color:var(--ds-ink-700);
}
body.single-post:not(.pillar-redesign) .entry-content > p,
body.single-post:not(.pillar-redesign) .entry-content > ul,
body.single-post:not(.pillar-redesign) .entry-content > ol,
body.single-post:not(.pillar-redesign) .entry-content > blockquote,
body.single-post:not(.pillar-redesign) .entry-content > h2,
body.single-post:not(.pillar-redesign) .entry-content > h3,
body.single-post:not(.pillar-redesign) .entry-content > h4,
body.single-post:not(.pillar-redesign) .entry-content > figure{
  max-width:var(--ds-content-measure);
}
body.single-post:not(.pillar-redesign) .entry-content p{margin:0 0 1.15em;text-wrap:pretty}
body.single-post:not(.pillar-redesign) .entry-content > *:first-child{margin-top:0}
/* Enforce the 19px/1.72 reading spec at element level (Blocksy sets a smaller
   paragraph size that beats the container rule). Direct children only, so DS
   component lists keep their own 14px size. */
body.single-post:not(.pillar-redesign) .entry-content > p,
body.single-post:not(.pillar-redesign) .entry-content > ul > li,
body.single-post:not(.pillar-redesign) .entry-content > ol > li{font-size:19px;line-height:1.72}

/* Headings — Newsreader serif scale */
body.single-post:not(.pillar-redesign) .entry-content h2{
  font-family:var(--ds-font-display);font-weight:700;font-size:30px;line-height:1.2;
  letter-spacing:-.02em;color:var(--ds-ink-900);margin:1.8em 0 .5em;text-wrap:balance;
}
body.single-post:not(.pillar-redesign) .entry-content h3{
  font-family:var(--ds-font-display);font-weight:600;font-size:23px;line-height:1.25;
  letter-spacing:-.015em;color:var(--ds-ink-900);margin:1.6em 0 .4em;
}
body.single-post:not(.pillar-redesign) .entry-content h4{
  font-family:var(--ds-font-sans);font-weight:700;font-size:16px;letter-spacing:.02em;
  text-transform:uppercase;color:var(--ds-ink-500);margin:1.6em 0 .4em;
}
/* Signature 3px ink rule under the first-level section headings */
body.single-post:not(.pillar-redesign) .entry-content h2{
  padding-bottom:.28em;border-bottom:var(--ds-rule-strong) solid var(--ds-ink-900);
}

/* Links. COLOUR: green on all content links (incl. list links) so they read as
   links. UNDERLINE: ONLY inline prose links (paragraphs/quotes). List & component
   links — Related Reading (wp-block-latest-posts), Link-Whisper (lwrp-list), the
   author meta, cards — must NOT be underlined (they're components, not prose). */
body.single-post:not(.pillar-redesign) .entry-content :is(p,li,blockquote) a{
  color:var(--ds-green-700);font-weight:500;
}
body.single-post:not(.pillar-redesign) .entry-content :is(p,blockquote) a{
  text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:2.5px;
}
body.single-post:not(.pillar-redesign) .entry-content :is(p,li,blockquote) a:hover{color:var(--ds-green-800,#0A5C3E)}
/* belt-and-braces: never underline links inside these list/meta components */
body.single-post:not(.pillar-redesign) .entry-content :is(.wp-block-latest-posts__list,.lwrp-list,.ccc-article-meta,ul,ol) a{text-decoration:none}
body.single-post:not(.pillar-redesign) .entry-content strong{color:var(--ds-ink-900);font-weight:700}

/* Lists */
body.single-post:not(.pillar-redesign) .entry-content ul,
body.single-post:not(.pillar-redesign) .entry-content ol{margin:0 0 1.15em;padding-left:1.4em}
body.single-post:not(.pillar-redesign) .entry-content li{margin:0 0 .5em;padding-left:.2em}
body.single-post:not(.pillar-redesign) .entry-content ul li::marker{color:var(--ds-green-600)}
body.single-post:not(.pillar-redesign) .entry-content ol li::marker{color:var(--ds-ink-400);font-family:var(--ds-font-mono);font-weight:700}

/* Quotes / rules / code */
body.single-post:not(.pillar-redesign) .entry-content blockquote{
  margin:1.6em 0;padding:.2em 0 .2em 1.1em;border-left:3px solid var(--ds-green-600);
  font-style:italic;color:var(--ds-ink-800);
}
body.single-post:not(.pillar-redesign) .entry-content hr{border:none;border-top:1px solid var(--ds-border-default);margin:2em 0}
body.single-post:not(.pillar-redesign) .entry-content code{
  font-family:var(--ds-font-mono);font-size:.86em;background:var(--ds-ink-100);
  padding:.12em .4em;border-radius:4px;color:var(--ds-ink-800);
}
body.single-post:not(.pillar-redesign) .entry-content figcaption{
  font-family:var(--ds-font-sans);font-size:13px;color:var(--ds-ink-400);margin-top:8px;
}

/* In-content media + affiliate banners + ads must not exceed the reading measure
   (680px) — they were breaking out to the full content column. Cap every image
   to 680, and the affiliate-banner / ad wrappers too, aligned with the body text. */
body.single-post:not(.pillar-redesign) .entry-content img{
  max-width:min(100%, var(--ds-content-measure)) !important;height:auto;
}
body.single-post:not(.pillar-redesign) .entry-content :is(a.thirstylinkimg,.wp-block-image,ins.adsbygoogle,.ai-viewport-1,.ai-viewport-2){
  display:block;max-width:var(--ds-content-measure);
}
body.single-post:not(.pillar-redesign) .entry-content a.thirstylinkimg img{width:100%;display:block}

/* Tables (default core/table inside content) — mono-ish header, heavy rule */
body.single-post:not(.pillar-redesign) .entry-content table:not(.ccc-table):not(.ccc-summary-table){
  width:100%;border-collapse:collapse;font-family:var(--ds-font-sans);font-size:15px;margin:1.4em 0;
}
body.single-post:not(.pillar-redesign) .entry-content table:not(.ccc-table):not(.ccc-summary-table) th{
  text-align:left;font-weight:700;color:var(--ds-ink-900);
  border-bottom:2px solid var(--ds-ink-900);padding:10px 12px;background:transparent;
}
body.single-post:not(.pillar-redesign) .entry-content table:not(.ccc-table):not(.ccc-summary-table) td{
  border-bottom:1px solid var(--ds-border-subtle);padding:10px 12px;color:var(--ds-ink-700);
}

/* ---------------------------------------------------------------------------
   2b. Component isolation — DS components must NOT inherit the generic
   reading-spec heading/paragraph treatment (the 3px section rule, big heading
   margins, 680px measure clamp, list indents). Internal spacing inside the
   components is handled by their own flex `gap`, so zeroing margins is safe.
   --------------------------------------------------------------------------- */
body.single-post:not(.pillar-redesign) .entry-content [class*="ccc-ds-"] :is(h2,h3,h4,p,ul,ol,li){
  margin:0;padding:0;border:0;max-width:none;
}
body.single-post:not(.pillar-redesign) .entry-content .ccc-ds-callout__label{margin-bottom:4px}

/* ---------------------------------------------------------------------------
   3. EDITORIAL COMPONENTS (global classes; used by Gutenberg patterns).
   Derived 1:1 from the DS component .jsx files.
   --------------------------------------------------------------------------- */

/* 3a. Lead / standfirst — paragraph block style `is-style-ccc-lead` */
.entry-content .is-style-ccc-lead,
.ccc-ds-lead{
  font-family:var(--ds-font-serif);font-size:24px;line-height:1.5;font-weight:500;
  color:var(--ds-ink-800);max-width:var(--ds-content-measure);text-wrap:pretty;margin:0 0 1em;
}

/* 3b. Callout — tones info|tip|warn|key|risk */
.ccc-ds-callout{
  display:flex;gap:var(--ds-space-3);margin:1.6em 0;padding:var(--ds-space-4) var(--ds-space-5);
  border-radius:0 var(--ds-radius-md) var(--ds-radius-md) 0;max-width:var(--ds-content-measure);
  border-left:4px solid var(--ds-ink-900);background:var(--ds-paper-sand);
}
.ccc-ds-callout .ccc-ds-callout__glyph{
  flex:none;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:50%;background:var(--ds-ink-900);color:#fff;font-weight:700;font-size:14px;
  font-family:var(--ds-font-sans);
}
.ccc-ds-callout .ccc-ds-callout__label{
  font-family:var(--ds-font-sans);font-weight:800;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ds-ink-900);margin:0 0 4px;
}
.ccc-ds-callout .ccc-ds-callout__body{
  font-family:var(--ds-font-sans);font-size:14px;line-height:1.6;color:var(--ds-ink-700);min-width:0;margin:0;
}
.ccc-ds-callout .ccc-ds-callout__body a{color:var(--ds-green-700)}
.ccc-ds-callout--info{background:var(--ds-info-100);border-left-color:var(--ds-info-500)}
.ccc-ds-callout--info .ccc-ds-callout__glyph{background:var(--ds-info-500)}
.ccc-ds-callout--info .ccc-ds-callout__label{color:var(--ds-info-700)}
.ccc-ds-callout--tip{background:var(--ds-green-100);border-left-color:var(--ds-green-600)}
.ccc-ds-callout--tip .ccc-ds-callout__glyph{background:var(--ds-green-600)}
.ccc-ds-callout--tip .ccc-ds-callout__label{color:var(--ds-green-700)}
.ccc-ds-callout--warn{background:var(--ds-warn-100);border-left-color:var(--ds-warn-500)}
.ccc-ds-callout--warn .ccc-ds-callout__glyph{background:var(--ds-warn-500)}
.ccc-ds-callout--warn .ccc-ds-callout__label{color:var(--ds-gold-800)}
.ccc-ds-callout--key{background:var(--ds-paper-sand);border-left-color:var(--ds-ink-900)}
.ccc-ds-callout--key .ccc-ds-callout__glyph{background:var(--ds-ink-900)}
.ccc-ds-callout--key .ccc-ds-callout__label{color:var(--ds-ink-900)}
.ccc-ds-callout--risk{background:var(--ds-danger-100);border-left-color:var(--ds-danger-500)}
.ccc-ds-callout--risk .ccc-ds-callout__glyph{background:var(--ds-danger-500)}
.ccc-ds-callout--risk .ccc-ds-callout__label{color:var(--ds-down-700)}

/* 3c. KeyTakeaways — sand panel, serif title, green check bullets */
.ccc-ds-takeaways{
  margin:0 0 1.8em;padding:var(--ds-space-5) var(--ds-space-6);background:var(--ds-paper-sand);
  border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-lg);max-width:var(--ds-content-measure);
}
.ccc-ds-takeaways__head{display:flex;align-items:center;gap:8px;margin-bottom:var(--ds-space-3)}
.ccc-ds-takeaways__head::before{content:"";width:6px;height:18px;background:var(--ds-green-600);border-radius:2px;flex:none}
.ccc-ds-takeaways__title{
  margin:0;font-family:var(--ds-font-display);font-weight:700;font-size:20px;color:var(--ds-ink-900);
}
.ccc-ds-takeaways ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--ds-space-2)}
.ccc-ds-takeaways li{
  display:flex;gap:10px;font-family:var(--ds-font-sans);font-size:14px;line-height:1.55;
  color:var(--ds-ink-700);margin:0;padding:0;max-width:none;
}
.ccc-ds-takeaways li::before{content:"\2713";color:var(--ds-green-600);font-weight:800;flex:none;margin-top:1px}
.ccc-ds-takeaways li::marker{content:""}

/* 3d. ProsCons — side by side */
.ccc-ds-proscons{display:flex;gap:var(--ds-space-4);margin:1.6em 0;max-width:var(--ds-content-measure)}
.ccc-ds-proscons__col{flex:1;min-width:0;padding:var(--ds-space-5);border-radius:var(--ds-radius-md)}
.ccc-ds-proscons__col--pros{background:var(--ds-green-50);border:1px solid var(--ds-green-100)}
.ccc-ds-proscons__col--cons{background:var(--ds-danger-100);border:1px solid #F6D2D4}
.ccc-ds-proscons__title{
  font-family:var(--ds-font-sans);font-weight:800;font-size:14px;letter-spacing:.04em;
  text-transform:uppercase;margin:0 0 var(--ds-space-3);display:flex;align-items:center;gap:8px;
}
.ccc-ds-proscons__col--pros .ccc-ds-proscons__title{color:var(--ds-green-700)}
.ccc-ds-proscons__col--cons .ccc-ds-proscons__title{color:var(--ds-down-700)}
.ccc-ds-proscons__title::before{
  display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;
  color:#fff;font-weight:800;font-size:13px;flex:none;
}
.ccc-ds-proscons__col--pros .ccc-ds-proscons__title::before{content:"+";background:var(--ds-green-600)}
.ccc-ds-proscons__col--cons .ccc-ds-proscons__title::before{content:"\2013";background:var(--ds-down-500)}
.ccc-ds-proscons ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--ds-space-2)}
.ccc-ds-proscons li{
  display:flex;gap:8px;font-family:var(--ds-font-sans);font-size:14px;line-height:1.5;
  color:var(--ds-ink-700);margin:0;padding:0;max-width:none;
}
.ccc-ds-proscons li::before{font-weight:800;flex:none}
.ccc-ds-proscons li::marker{content:""}
.ccc-ds-proscons__col--pros li::before{content:"\2713";color:var(--ds-green-600)}
.ccc-ds-proscons__col--cons li::before{content:"\2715";color:var(--ds-down-500)}

/* 3e. Pullquote — block style `is-style-ccc-pullquote` + standalone class */
.entry-content .is-style-ccc-pullquote,
.ccc-ds-pullquote{
  margin:1.8em 0;padding:0 0 0 24px;border-left:4px solid var(--ds-green-600);
  max-width:var(--ds-content-measure);font-style:normal;
}
.entry-content .is-style-ccc-pullquote p,
.ccc-ds-pullquote p{
  margin:0;font-family:var(--ds-font-display);font-weight:500;font-style:italic;
  font-size:24px;line-height:1.3;letter-spacing:-.01em;color:var(--ds-ink-900);text-wrap:balance;
}
.entry-content .is-style-ccc-pullquote cite,
.ccc-ds-pullquote cite{
  display:block;margin-top:12px;font-family:var(--ds-font-sans);font-style:normal;font-weight:700;
  font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:var(--ds-green-700);
}

/* 3f. AffiliateCard / offer box */
.ccc-ds-offer{
  position:relative;display:flex;flex-direction:column;gap:var(--ds-space-3);
  background:var(--ds-paper);border:1.5px solid var(--ds-border-default);border-radius:var(--ds-radius-lg);
  padding:var(--ds-space-5);box-shadow:var(--ds-shadow-xs);max-width:var(--ds-content-measure);margin:1.6em 0;
}
.ccc-ds-offer.is-featured{border-color:var(--ds-green-500);box-shadow:var(--ds-shadow-md)}
.ccc-ds-offer__pick{
  position:absolute;top:-10px;left:var(--ds-space-5);background:var(--ds-green-700);color:#fff;
  font-family:var(--ds-font-sans);font-weight:800;font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  padding:3px 8px;border-radius:var(--ds-radius-sm);
}
.ccc-ds-offer__head{display:flex;align-items:center;gap:var(--ds-space-3)}
.ccc-ds-offer__rank{
  display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;
  border-radius:50%;background:var(--ds-ink-900);color:#fff;font-family:var(--ds-font-mono);font-weight:700;font-size:14px;
}
.ccc-ds-offer__name{font-family:var(--ds-font-display);font-weight:700;font-size:24px;color:var(--ds-ink-900);line-height:1.1;margin:0}
.ccc-ds-offer__cat{font-family:var(--ds-font-sans);font-size:12px;color:var(--ds-ink-500);text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.ccc-ds-offer__rating{margin-left:auto;font-family:var(--ds-font-mono);font-weight:700;color:var(--ds-gold-700);white-space:nowrap}
.ccc-ds-offer__perk{margin:0;font-family:var(--ds-font-sans);font-size:14px;line-height:1.5;color:var(--ds-ink-600)}
.ccc-ds-offer__bonus{
  font-family:var(--ds-font-sans);font-size:12px;font-weight:700;color:var(--ds-gold-800);
  background:var(--ds-gold-100);padding:6px 10px;border-radius:var(--ds-radius-sm);align-self:flex-start;
}
.ccc-ds-offer__cta{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--ds-green-700);color:#fff !important;
  text-decoration:none !important;font-family:var(--ds-font-sans);font-weight:800;font-size:14px;
  padding:11px 18px;border-radius:var(--ds-radius-md);transition:filter .12s ease,transform .12s ease;
}
.ccc-ds-offer__cta:hover{filter:brightness(.94)}
.ccc-ds-offer__cta:active{transform:translateY(1px)}
.ccc-ds-offer__disc{font-family:var(--ds-font-sans);font-size:10px;color:var(--ds-ink-500);text-align:center}

/* 3g. Button block styles — primary green / secondary ink / gold */
.entry-content .wp-block-button.is-style-ccc-primary > .wp-block-button__link{
  background:var(--ds-green-700);color:#fff !important;border:1.5px solid var(--ds-green-700);
  border-radius:var(--ds-radius-md);font-family:var(--ds-font-sans);font-weight:800;letter-spacing:-.01em;
}
.entry-content .wp-block-button.is-style-ccc-secondary > .wp-block-button__link{
  background:transparent;color:var(--ds-ink-900) !important;border:1.5px solid var(--ds-ink-900);
  border-radius:var(--ds-radius-md);font-family:var(--ds-font-sans);font-weight:800;
}
.entry-content .wp-block-button.is-style-ccc-gold > .wp-block-button__link{
  background:var(--ds-gold-500);color:#1A1206 !important;border:1.5px solid var(--ds-gold-500);
  border-radius:var(--ds-radius-md);font-family:var(--ds-font-sans);font-weight:800;
}
.entry-content .wp-block-button.is-style-ccc-primary > .wp-block-button__link:active,
.entry-content .wp-block-button.is-style-ccc-secondary > .wp-block-button__link:active,
.entry-content .wp-block-button.is-style-ccc-gold > .wp-block-button__link:active{transform:translateY(1px)}

/* ---------------------------------------------------------------------------
   4. RESPONSIVE — stack pros/cons + offer measure on small screens
   --------------------------------------------------------------------------- */
@media(max-width:680px){
  .ccc-ds-proscons{flex-direction:column}
  body.single-post:not(.pillar-redesign) .entry-content h2{font-size:25px}
  body.single-post:not(.pillar-redesign) .entry-content h3{font-size:21px}
}

/* ===========================================================================
   5. BRAND COLOR REMAP (2026-06-20 deep-audit) — kill off-brand purple/violet
   + blue, map everything to DS green. The v6 chrome (style.css) hardcodes
   --ccc-accent-2/--ccc-link = #6d28d9 (violet) across ~30 rules + 4 literal-hex
   gradients; Blocksy's palette ships a blue link colour (#5863f8). This file
   loads AFTER both, so these win. Greens are WCAG-picked: #0B7A52 = text/accent
   (white-on-it AND on-white both ≥5.3:1); #11A26C reserved for large fills.
   Reversible: delete this §5. Scope note: we remap the shared chrome tokens +
   Blocksy LINK colours only — NOT Blocksy palette button fills — so the
   Elementor app pages (price/swap/dca/markets/nft) keep their own colours.
   =========================================================================== */
:root{
  /* v6 chrome tokens → DS green (keep --ccc-accent #f97316 orange as-is) */
  --ccc-accent-2:#0B7A52 !important;
  --ccc-link:#0B7A52 !important;
  --ccc-link-hover:#064832 !important;
  --ccc-link-visited:#0B7A52 !important;
  /* Blocksy default link colour was blue (#5863f8) → DS link green */
  --theme-link-initial-color:#0B7A52 !important;
  --theme-link-hover-color:#064832 !important;
}
/* the 4 literal-hex purple gradients on dark CTA/newsletter cards → deep green
   (every stop dark enough for white text ≥5.3:1). .ccc-side-cta on single posts
   stays the dark-ink card from cc-article.css (higher specificity wins there). */
.ccc-foot-news,
.ccc-post-newsletter{
  background:linear-gradient(135deg,#0B7A52 0%,#064832 60%,#053D2A 130%) !important;
}
.ccc-side-cta{
  background:linear-gradient(135deg,#0B7A52 0%,#053D2A 100%) !important;
}
/* affiliate ThirstyAffiliates buttons were Blocksy blue #1559ED → DS green */
.entry-content a.thirstylink.ct-button,
a.ct-button.thirstylink,
.wp-block-button a.thirstylink,
.ccc-cta.thirstylink{
  background-color:#0B7A52 !important;color:#fff !important;
}
