/* =========================================================
   Modern River Point — styles.css (core)
   Identity: "The data desk" — independent AU comparison & editorial
   River-slate navy + teal brand + green savings signal on cool paper
   Display: Fraunces (editorial serif) · Body: IBM Plex Sans · Data: IBM Plex Mono
   ========================================================= */

:root {
  /* palette */
  --ink:        #0e2233;   /* river-slate navy — headings, dark sections */
  --ink-2:      #15324a;
  --brand:      #0c6b7d;   /* river teal — primary, trust */
  --brand-deep: #0a5160;
  --brand-tint: #e2eff1;
  --save:       #0f9d6e;   /* savings green — positive deltas */
  --save-deep:  #0b7d57;
  --save-tint:  #e3f5ee;
  --gold:       #e8a519;   /* editor highlight / ratings — used sparingly */
  --gold-tint:  #faedcf;
  --paper:      #eef2f5;   /* cool paper background */
  --surface:    #ffffff;
  --surface-2:  #f7fafb;
  --muted:      #5a6b78;   /* slate body text */
  --muted-2:    #84939e;
  --line:       #dde5ea;
  --line-soft:  #e9eef2;
  --danger:     #d24a35;

  /* type */
  --display: "Fraunces", Georgia, "Times New Roman", serif;
  --body:    "IBM Plex Sans", system-ui, -apple-system, sans-serif;
  --mono:    "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* spacing */
  --s-1:.5rem; --s-2:.875rem; --s-3:1.25rem; --s-4:1.75rem;
  --s-5:2.5rem; --s-6:3.5rem; --s-7:5rem; --s-8:7rem;

  --radius:10px; --radius-lg:16px; --radius-xl:24px; --radius-pill:999px;

  --shadow-sm: 0 1px 2px rgba(14,34,51,.06), 0 2px 6px rgba(14,34,51,.04);
  --shadow:    0 10px 30px -14px rgba(14,34,51,.20), 0 2px 6px rgba(14,34,51,.05);
  --shadow-lg: 0 30px 64px -28px rgba(14,34,51,.34), 0 8px 24px -16px rgba(14,34,51,.18);

  --maxw: 1200px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after { box-sizing: border-box; }
* { margin: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body {
  font-family: var(--body);
  background: var(--paper);
  color: var(--ink);
  line-height: 1.6;
  font-size: 1.0625rem;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img,svg { display:block; max-width:100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; border: none; background: none; color: inherit; }
ul { list-style: none; padding: 0; }

h1,h2,h3,h4 {
  font-family: var(--display);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--ink);
  font-optical-sizing: auto;
}

::selection { background: var(--brand-tint); color: var(--ink); }
:focus-visible { outline: 3px solid var(--brand); outline-offset: 3px; border-radius: 4px; }

.shell { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: 1.5rem; }
.shell-narrow { max-width: 880px; }

.mono { font-family: var(--mono); font-feature-settings: "tnum" 1; }

.eyebrow {
  font-family: var(--mono); font-weight: 500; font-size: .76rem;
  letter-spacing: .12em; text-transform: uppercase; color: var(--brand);
  display: inline-flex; align-items: center; gap: .55rem;
}
.eyebrow::before { content:""; width: 18px; height:2px; background: var(--brand); border-radius:2px; }
.eyebrow.on-dark { color: #6fd0c4; } .eyebrow.on-dark::before { background:#6fd0c4; }
.eyebrow.gold { color: var(--gold); } .eyebrow.gold::before { background: var(--gold); }

.section { padding-block: var(--s-8); }
.section-head { max-width: 660px; margin-bottom: var(--s-6); }
.section-head.center { margin-inline: auto; text-align: center; }
.section-head.center .eyebrow { justify-content: center; }
.section-head h2 { font-size: clamp(2rem, 4.2vw, 3rem); margin-top: .9rem; }
.section-head p { color: var(--muted); margin-top: 1rem; font-size: 1.12rem; }

/* ---------- header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(238,242,245,.82);
  backdrop-filter: saturate(140%) blur(14px);
  border-bottom: 1px solid transparent;
  transition: border-color .3s var(--ease), background .3s var(--ease), box-shadow .3s var(--ease);
}
.site-header.scrolled { border-color: var(--line); background: rgba(238,242,245,.94); box-shadow: 0 4px 20px -16px rgba(14,34,51,.5); }
.nav { display:flex; align-items:center; justify-content:space-between; height: 74px; gap: 1rem; }
.brand { display:inline-flex; align-items:center; gap:.7rem; font-family: var(--display); font-weight:600; font-size:1.22rem; letter-spacing:-.01em; flex:none; }
.brand-mark { width:38px; height:38px; flex:none; }
.brand small { display:block; font-family: var(--mono); font-weight:500; font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--muted-2); margin-top:1px; }

.nav-links { display:flex; align-items:center; gap:.1rem; }
.nav-links a { padding:.5rem .8rem; border-radius:8px; font-weight:500; font-size:.96rem; color:var(--ink-2); transition: background .2s, color .2s; }
.nav-links a:hover, .nav-links a[aria-current="page"] { background: var(--brand-tint); color: var(--brand-deep); }
.nav-actions { display:flex; align-items:center; gap:.7rem; flex:none; }
.nav-toggle { display:none; width:44px;height:44px;border-radius:10px; align-items:center; justify-content:center; }
.nav-toggle span { position:relative; width:20px;height:2px; background:var(--ink); border-radius:2px; transition:.3s var(--ease); }
.nav-toggle span::before,.nav-toggle span::after { content:""; position:absolute; left:0; width:20px;height:2px; background:var(--ink); border-radius:2px; transition:.3s var(--ease); }
.nav-toggle span::before{ top:-6px; } .nav-toggle span::after{ top:6px; }
.nav-toggle[aria-expanded="true"] span { background:transparent; }
.nav-toggle[aria-expanded="true"] span::before { top:0; transform:rotate(45deg); }
.nav-toggle[aria-expanded="true"] span::after { top:0; transform:rotate(-45deg); }
.mobile-menu { display:none; }

/* ---------- hero ---------- */
.hero { position:relative; padding-top: var(--s-7); padding-bottom: var(--s-8); overflow:hidden; }
.hero::before { content:""; position:absolute; top:-280px; left:50%; transform:translateX(-50%); width:1100px; height:620px;
  background: radial-gradient(ellipse at center, rgba(12,107,125,.10), transparent 65%); pointer-events:none; }
.hero-grid { position:relative; z-index:1; display:grid; grid-template-columns: 1.02fr .98fr; gap: var(--s-6); align-items:center; }
.hero-flag { display:inline-flex; align-items:center; gap:.55rem; font-family:var(--mono); font-size:.78rem; letter-spacing:.04em; color:var(--muted); background:var(--surface); border:1px solid var(--line); padding:.4rem .85rem; border-radius:var(--radius-pill); box-shadow:var(--shadow-sm); }
.hero-flag .dot { width:7px;height:7px;border-radius:50%; background:var(--save); box-shadow:0 0 0 4px var(--save-tint); }
.hero h1 { font-size: clamp(2.7rem, 5.6vw, 4.4rem); margin-top:1.3rem; letter-spacing:-.02em; }
.hero h1 em { font-style: italic; color: var(--brand); }
.hero-lede { font-size:1.22rem; color:var(--muted); margin-top:1.4rem; max-width:32em; }
.hero-cta { display:flex; flex-wrap:wrap; gap:.85rem; margin-top:1.8rem; }
.hero-search { margin-top:1.6rem; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg); padding:.5rem; box-shadow:var(--shadow); display:grid; grid-template-columns:1fr auto; gap:.5rem; max-width:560px; }
.hero-search .field { display:flex; align-items:center; gap:.6rem; padding:.4rem .9rem; }
.hero-search .field svg { width:19px;height:19px; color:var(--muted-2); flex:none; }
.hero-search input { width:100%; border:none; background:transparent; font:inherit; font-size:1rem; color:var(--ink); padding:.5rem 0; }
.hero-search input:focus { outline:none; }
.hero-search label { position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0); }

/* ---------- stat ribbon ---------- */
.ribbon { border-block:1px solid var(--line); background:var(--surface); }
.ribbon .shell { display:grid; grid-template-columns:repeat(4,1fr); }
.ribbon .item { padding: var(--s-5) var(--s-3); text-align:center; border-left:1px solid var(--line-soft); }
.ribbon .item:first-child { border-left:none; }
.ribbon .n { font-family:var(--mono); font-weight:600; font-size:clamp(1.8rem,3.6vw,2.5rem); color:var(--ink); letter-spacing:-.02em; }
.ribbon .n .u { color:var(--save); }
.ribbon .l { color:var(--muted); font-size:.9rem; margin-top:.3rem; }

/* ---------- how it works ---------- */
.steps { display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; }
.step { position:relative; padding:1.9rem; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg); }
.step .idx { font-family:var(--mono); font-size:.8rem; color:var(--brand); font-weight:600; letter-spacing:.1em; }
.step h3 { font-size:1.4rem; margin-top:.8rem; }
.step p { color:var(--muted); margin-top:.5rem; font-size:.98rem; }
.step .bar { height:3px; width:42px; background:var(--brand); border-radius:3px; margin-top:1.3rem; }
.step:nth-child(2) .bar{ background:var(--save); } .step:nth-child(3) .bar{ background:var(--gold); }

/* ---------- trust split ---------- */
.split { display:grid; grid-template-columns:1fr 1fr; gap:var(--s-7); align-items:center; }
.trust-list { display:grid; gap:1.3rem; margin-top:2rem; }
.trust { display:flex; gap:1rem; }
.trust .ti { width:46px;height:46px;border-radius:12px; background:var(--brand-tint); color:var(--brand-deep); display:grid;place-items:center; flex:none; }
.trust .ti svg{ width:22px;height:22px; }
.trust h3 { font-size:1.16rem; }
.trust p { color:var(--muted); margin-top:.3rem; font-size:.97rem; }

/* dark panel */
.panel-dark { background: linear-gradient(160deg,var(--ink),var(--ink-2)); color:#fff; border-radius:var(--radius-xl); padding:2.5rem; position:relative; overflow:hidden; box-shadow:var(--shadow-lg); }
.panel-dark::before { content:""; position:absolute; top:-90px; right:-70px; width:260px;height:260px; background:radial-gradient(circle, rgba(15,157,110,.28), transparent 65%); }
.panel-dark h3 { color:#fff; font-size:1.5rem; position:relative; }
.panel-dark p { color:rgba(255,255,255,.72); margin-top:.7rem; position:relative; }
.panel-metrics { display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-top:1.8rem; position:relative; }
.panel-metric { background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.1); border-radius:var(--radius); padding:1.1rem 1.2rem; }
.panel-metric .n { font-family:var(--mono); font-weight:600; font-size:1.8rem; color:#6fd0c4; }
.panel-metric .l { font-size:.83rem; color:rgba(255,255,255,.66); margin-top:.2rem; }

/* ---------- CTA banner ---------- */
.cta-banner { background: linear-gradient(145deg,var(--brand),var(--brand-deep)); border-radius:var(--radius-xl); padding:clamp(2.4rem,5vw,4rem); color:#fff; position:relative; overflow:hidden; text-align:center; }
.cta-banner::before{ content:""; position:absolute; top:-120px; left:-90px; width:340px;height:340px; background:radial-gradient(circle, rgba(15,157,110,.34), transparent 62%); }
.cta-banner::after{ content:""; position:absolute; bottom:-150px; right:-110px; width:360px;height:360px; background:radial-gradient(circle, rgba(255,255,255,.1), transparent 64%); }
.cta-banner h2 { color:#fff; font-size:clamp(1.9rem,4vw,3rem); position:relative; }
.cta-banner p { color:rgba(255,255,255,.85); max-width:36em; margin:1rem auto 0; position:relative; font-size:1.1rem; }
.cta-banner .btn-row { display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; margin-top:2rem; position:relative; }

/* ---------- footer ---------- */
.site-footer { background:var(--ink); color:rgba(255,255,255,.7); margin-top:var(--s-8); }
.footer-top { display:grid; grid-template-columns:1.7fr 1fr 1fr 1fr; gap:var(--s-5); padding-block:var(--s-7) var(--s-6); }
.footer-brand .brand { color:#fff; }
.footer-brand .brand small { color:rgba(255,255,255,.5); }
.footer-blurb { margin-top:1.1rem; font-size:.95rem; max-width:34ch; color:rgba(255,255,255,.62); }
.footer-disclaimer { margin-top:1.3rem; font-size:.8rem; color:rgba(255,255,255,.44); max-width:46ch; line-height:1.55; }
.footer-col h4 { color:#fff; font-family:var(--mono); font-weight:500; font-size:.76rem; letter-spacing:.1em; text-transform:uppercase; margin-bottom:1rem; }
.footer-col a { display:block; padding:.3rem 0; font-size:.94rem; color:rgba(255,255,255,.66); transition:color .2s; }
.footer-col a:hover { color:#6fd0c4; }
.footer-contact div { font-size:.92rem; margin-bottom:.5rem; color:rgba(255,255,255,.66); }
.footer-contact strong { color:#fff; display:block; font-weight:600; }
.footer-bottom { border-top:1px solid rgba(255,255,255,.1); padding-block:1.5rem; display:flex; flex-wrap:wrap; gap:1rem; justify-content:space-between; align-items:center; font-size:.85rem; }
.footer-bottom .legal { display:flex; gap:1.3rem; flex-wrap:wrap; }
.footer-bottom a:hover { color:#6fd0c4; }

/* ---------- page hero (interior) ---------- */
.page-hero { padding-top:var(--s-6); padding-bottom:var(--s-5); position:relative; overflow:hidden; }
.page-hero.tinted { background:var(--surface); border-bottom:1px solid var(--line); }
.crumbs { display:flex; gap:.5rem; align-items:center; font-family:var(--mono); font-size:.8rem; color:var(--muted-2); margin-bottom:1.3rem; }
.crumbs a:hover { color:var(--brand-deep); } .crumbs .sep{ opacity:.5; }
.page-hero h1 { font-size:clamp(2.3rem,5vw,3.6rem); max-width:18ch; }
.page-hero .lede { color:var(--muted); font-size:1.18rem; margin-top:1.1rem; max-width:60ch; }

/* ---------- prose ---------- */
.prose { max-width:720px; }
.prose.wide { max-width:820px; }
.prose h2 { font-size:clamp(1.6rem,3.4vw,2.2rem); margin-top:2.6rem; }
.prose h3 { font-size:1.34rem; margin-top:2rem; }
.prose p { color:var(--muted); margin-top:1rem; }
.prose p.lead { font-size:1.18rem; color:var(--ink-2); }
.prose ul.ticks { margin-top:1rem; display:grid; gap:.7rem; }
.prose ul.ticks li { position:relative; padding-left:1.9rem; color:var(--ink-2); }
.prose ul.ticks li::before { content:""; position:absolute; left:0; top:.2em; width:18px;height:18px;border-radius:5px;
  background: var(--save-tint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%230b7d57' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/11px no-repeat; }
.prose a.inline { color:var(--brand-deep); font-weight:500; text-decoration:underline; text-decoration-color:var(--brand-tint); text-underline-offset:3px; }
.prose .note-box { background:var(--gold-tint); border:1px solid rgba(232,165,25,.32); border-radius:var(--radius); padding:1.2rem 1.4rem; margin-top:1.6rem; }
.prose .note-box strong{ color:var(--ink); } .prose .note-box p{ color:var(--ink-2); margin-top:.3rem; font-size:.95rem; }

/* content + sidebar */
.content-layout { display:grid; grid-template-columns:1fr 320px; gap:var(--s-6); align-items:start; }
.sidebar { position:sticky; top:96px; display:grid; gap:1.2rem; }

.last-updated { font-family:var(--mono); color:var(--muted-2); font-size:.84rem; margin-top:.6rem; }

/* scroll reveal */
[data-reveal]{ opacity:0; transform:translateY(20px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
[data-reveal].in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ [data-reveal]{ opacity:1; transform:none; transition:none; } }

/* back to top + skip */
.to-top{ position:fixed; right:1.4rem; bottom:1.4rem; z-index:60; width:46px;height:46px;border-radius:12px; background:var(--ink); color:#fff; display:grid;place-items:center; box-shadow:var(--shadow-lg); opacity:0; visibility:hidden; transform:translateY(12px); transition:.3s var(--ease); }
.to-top.show{ opacity:1; visibility:visible; transform:none; } .to-top:hover{ background:var(--brand); } .to-top svg{ width:19px;height:19px; }
.skip{ position:absolute; left:1rem; top:-60px; background:var(--ink); color:#fff; padding:.7rem 1.2rem; border-radius:8px; z-index:100; transition:top .25s; }
.skip:focus{ top:1rem; }
