/* Channel Keys site. Light, editorial, data-forward. One accent. */
@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,500;12..96,600;12..96,700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

:root{
  --navy:#0A2240; --mark:#0A2240;
  --paper:#F5F7FA; --panel:#FFFFFF; --ink:#0A2240; --slate:#4A5B73; --line:#D5DCE6; --line-soft:#E7ECF2;
  --key:#1455E8; --key-ink:#0E3FB0; --amber:#E8A317; --amber-soft:#FFF4DC; --mint:#EAF4F3;
  --display:"Bricolage Grotesque", system-ui, sans-serif; --body:"IBM Plex Sans", system-ui, sans-serif; --mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --max:1200px; --gutter:clamp(16px, 4vw, 40px); --r:6px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0C1627; --panel:#122039; --ink:#EAF0F8; --slate:#A9B6C9; --line:#243654; --line-soft:#1B2B45;
    --key:#5B8DFF; --key-ink:#8FB0FF; --amber:#F2B23B; --amber-soft:#3A2E12; --mint:#132A2E; --navy:#081A33; --mark:#1E3F73;
  }
}
:root[data-theme="dark"]{
  --paper:#0C1627; --panel:#122039; --ink:#EAF0F8; --slate:#A9B6C9; --line:#243654; --line-soft:#1B2B45;
  --key:#5B8DFF; --key-ink:#8FB0FF; --amber:#F2B23B; --amber-soft:#3A2E12; --mint:#132A2E; --navy:#081A33; --mark:#1E3F73;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{animation:none !important; transition:none !important} }
body{margin:0; background:var(--paper); color:var(--ink); font:16px/1.6 var(--body); -webkit-font-smoothing:antialiased}
img{max-width:100%; display:block}
a{color:var(--key); text-decoration:none}
a:hover{text-decoration:underline; text-underline-offset:3px}
:focus-visible{outline:2px solid var(--key); outline-offset:3px; border-radius:2px}
.wrap{max-width:var(--max); margin:0 auto; padding:0 var(--gutter)}
.mono{font-family:var(--mono); font-variant-numeric:tabular-nums}
.muted{color:var(--slate)}
h1,h2,h3{font-family:var(--display); font-weight:600; letter-spacing:-0.01em; line-height:1.08; margin:0}
h1{font-size:clamp(36px, 4.7vw, 62px); font-variation-settings:"opsz" 96; letter-spacing:-0.025em}
h2{font-size:clamp(28px, 3.4vw, 42px); font-variation-settings:"opsz" 72; letter-spacing:-0.02em}
h3{font-size:22px; font-variation-settings:"opsz" 36}
p{margin:0 0 1em; max-width:62ch}
.lead{font-size:clamp(18px, 1.6vw, 21px); line-height:1.5; color:var(--slate)}

/* Header */
.site-header{position:sticky; top:0; z-index:20; background:color-mix(in srgb, var(--paper) 86%, transparent); backdrop-filter:saturate(1.4) blur(10px); border-bottom:1px solid var(--line-soft)}
.nav{display:flex; align-items:center; gap:28px; height:68px}
.brand{display:flex; align-items:center; gap:10px; white-space:nowrap; color:var(--ink); font-family:var(--display); font-weight:600; font-size:20px; letter-spacing:-0.01em; margin-right:auto}
.brand:hover{text-decoration:none}
.brand svg{width:28px; height:28px}
.brand svg .mark{fill:var(--mark)}
.nav a.link{color:var(--ink); font-weight:500; font-size:15px}
.nav a.link[aria-current="page"]{color:var(--key)}
.nav .cta{margin-left:4px}
.btn{display:inline-flex; align-items:center; gap:8px; padding:11px 18px; border-radius:var(--r); font-weight:600; font-size:15px; border:1px solid transparent; cursor:pointer; text-decoration:none; transition:background .15s, border-color .15s, color .15s}
.btn:hover{text-decoration:none}
.btn-primary{background:var(--key); color:#fff}
.btn-primary:hover{background:var(--key-ink)}
.btn-secondary{background:transparent; color:var(--ink); border-color:var(--line)}
.btn-secondary:hover{border-color:var(--ink)}
.btn-lg{padding:14px 22px; font-size:16px}
@media (max-width:760px){ .nav{gap:16px} .nav a.link{display:none} .nav a.link.keep{display:inline} .nav .cta{white-space:nowrap; padding:9px 14px; font-size:14px} }
@media (max-width:480px){ .nav .cta .long{display:none} .brand{font-size:18px} }
@media (max-width:600px){ .ledger-foot{white-space:normal; flex-direction:column; gap:4px} }

/* Hero */
.hero{padding:clamp(48px, 7vw, 96px) 0 clamp(40px, 5vw, 72px); display:grid; grid-template-columns:minmax(0, 7fr) minmax(0, 5fr); gap:clamp(28px, 5vw, 72px); align-items:start}
.hero .kicker{font-family:var(--mono); font-size:13px; color:var(--slate); margin:0 0 18px}
.hero .kicker b{color:var(--ink); font-weight:500}
.hero h1{margin-bottom:22px; max-width:14ch}
.hero .lead{margin-bottom:28px; max-width:52ch}
.hero .actions{display:flex; flex-wrap:wrap; gap:12px; align-items:center}
.hero .fine{font-size:13px; color:var(--slate); margin-top:14px}
@media (max-width:900px){ .hero{grid-template-columns:1fr} }

/* Ledger panel: the memorable thing. Looks like a packing slip / lab report. */
.ledger{background:var(--panel); border:1px solid var(--line); border-radius:8px; box-shadow:0 1px 0 rgba(10,34,64,.04), 0 24px 60px -40px rgba(10,34,64,.35); overflow:hidden}
.ledger-head{display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:16px 20px; border-bottom:1px solid var(--line)}
.ledger-head h3{font-size:16px; font-weight:600}
.ledger-head .stamp{font-family:var(--mono); font-size:12px; color:var(--slate)}
.ledger-head .stamp i{display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--amber); margin-right:7px; vertical-align:1px; animation:pulse 2.4s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1; transform:scale(1)} 50%{opacity:.45; transform:scale(.8)}}
.ledger table{width:100%; border-collapse:collapse; font-size:14px; table-layout:fixed}
.ledger th{text-align:left; font-weight:500; color:var(--slate); padding:10px 0 8px; border-bottom:1px solid var(--line-soft); font-size:12px}
.ledger th:first-child, .ledger td:first-child{padding-left:20px; width:40%}
.ledger th:nth-child(2), .ledger td:nth-child(2){width:36%}
.ledger th:last-child, .ledger td:last-child{text-align:right; padding-right:20px; width:24%}
.ledger td{padding:11px 10px 11px 0; border-bottom:1px solid var(--line-soft); vertical-align:top}
.ledger tr:last-child td{border-bottom:0}
.ledger td.name{font-weight:500; line-height:1.3}
.ledger td.name small{display:block; color:var(--slate); font-weight:400; font-size:12px; margin-top:4px; line-height:1.35}
.ledger td.num{font-family:var(--mono); font-variant-numeric:tabular-nums; line-height:1.3}
.ledger td.num b{font-weight:500; display:block; font-size:15px}
.ledger td.num small{display:block; font-family:var(--body); color:var(--slate); font-size:12px; margin-top:4px}
.ledger td.delta{font-family:var(--mono); font-variant-numeric:tabular-nums; color:var(--slate); font-size:12.5px; line-height:1.3}
.ledger td.delta b{color:var(--ink); font-weight:500; background:var(--amber-soft); padding:1px 6px; border-radius:4px}
.ledger-foot{display:flex; justify-content:space-between; gap:12px; padding:12px 20px; background:var(--mint); font-size:12px; color:var(--slate); font-family:var(--mono); white-space:nowrap}
.ledger-foot span{overflow:hidden; text-overflow:ellipsis}

/* Key strip: real identifiers as a horizontal band */
.keystrip{border-top:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); padding:14px 0; overflow:hidden; white-space:nowrap; font-family:var(--mono); font-size:13px; color:var(--slate); mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent)}
.keystrip span{display:inline-block; margin-right:34px}
.keystrip span b{color:var(--ink); font-weight:500}

/* Sections */
section.block{padding:clamp(56px, 8vw, 112px) 0}
section.block + section.block{border-top:1px solid var(--line-soft)}
.section-head{display:grid; grid-template-columns:minmax(0, 5fr) minmax(0, 7fr); gap:clamp(20px, 4vw, 64px); margin-bottom:clamp(28px, 4vw, 48px); align-items:end}
.section-head p{margin:0; color:var(--slate); font-size:17px}
@media (max-width:900px){ .section-head{grid-template-columns:1fr} }

/* Sources table: a ledger, not cards */
.sources{width:100%; border-collapse:collapse; border-top:2px solid var(--ink)}
.sources th{text-align:left; font-size:12.5px; font-weight:500; color:var(--slate); padding:12px 0 10px; border-bottom:1px solid var(--line)}
.sources td{padding:22px 24px 22px 0; border-bottom:1px solid var(--line); vertical-align:top; font-size:15px}
.sources td:last-child{padding-right:0}
.sources td.src{font-family:var(--display); font-size:22px; font-weight:600; letter-spacing:-0.01em; width:26%; font-variation-settings:"opsz" 36}
.sources td.src small{display:block; font-family:var(--body); font-size:13px; color:var(--slate); font-weight:400; margin-top:6px; letter-spacing:0}
.sources td.what{width:44%; color:var(--ink)}
.sources td.grain{width:16%; font-family:var(--mono); font-size:13px; color:var(--slate)}
.sources td.cad{width:14%; font-size:13.5px; color:var(--slate)}
@media (max-width:820px){
  .sources, .sources tbody, .sources tr, .sources td{display:block; width:auto}
  .sources thead{display:none}
  .sources tr{padding:18px 0; border-bottom:1px solid var(--line)}
  .sources td{padding:4px 0; border:0}
  .sources td.src{font-size:20px; margin-bottom:6px}
}

/* Changes */
.changes{display:grid; grid-template-columns:minmax(0, 4fr) minmax(0, 8fr); gap:clamp(24px, 4vw, 56px)}
@media (max-width:900px){ .changes{grid-template-columns:1fr} }
.changes.is-baseline{grid-template-columns:1fr}
.changes.is-baseline .counts{display:none}
.counts{border-top:2px solid var(--ink)}
.counts div{display:grid; grid-template-columns:1fr auto auto auto; gap:14px; padding:12px 0; border-bottom:1px solid var(--line); font-size:14px; align-items:baseline}
.counts div span.t{font-family:var(--mono); font-size:13px}
.counts div span.n{font-family:var(--mono); font-variant-numeric:tabular-nums; min-width:5ch; text-align:right}
.counts div span.n.up{color:var(--key)} .counts div span.n.down{color:#B4452B} .counts div span.n.chg{color:var(--slate)}
.counts .legend{display:flex; gap:16px; padding:10px 0 0; font-size:12.5px; color:var(--slate); border:0}
.highlights h3{font-size:16px; font-weight:600; margin:0 0 10px}
.highlights ul{list-style:none; margin:0 0 26px; padding:0}
.highlights li{display:flex; gap:14px; padding:9px 0; border-bottom:1px solid var(--line-soft); font-size:14.5px}
.highlights li code{font-family:var(--mono); font-size:13px; color:var(--slate); min-width:16ch}
.empty{background:var(--panel); border:1px solid var(--line); border-left:4px solid var(--amber); border-radius:8px; padding:22px 26px; color:var(--slate); font-size:15.5px; max-width:68ch; line-height:1.55}
.empty b{color:var(--ink); font-weight:600}

/* Steps (an actual sequence) */
.steps{display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:clamp(20px, 3vw, 40px); counter-reset:step}
.step{border-top:2px solid var(--ink); padding-top:18px; position:relative}
.step::before{counter-increment:step; content:counter(step); font-family:var(--mono); font-size:13px; color:var(--slate); display:block; margin-bottom:14px}
.step h3{margin-bottom:10px}
.step p{font-size:15px; color:var(--slate); margin:0}
.step .when{font-family:var(--mono); font-size:12.5px; color:var(--ink); margin-top:14px; display:block}
@media (max-width:820px){ .steps{grid-template-columns:1fr} }

/* Code + result */
.demo{display:grid; grid-template-columns:minmax(0, 6fr) minmax(0, 6fr); gap:clamp(20px, 3vw, 40px); align-items:start}
@media (max-width:900px){ .demo{grid-template-columns:1fr} }
pre.code{margin:0; background:var(--navy); color:#E9EFF8; border-radius:8px; padding:22px 24px; font:13.5px/1.6 var(--mono); overflow:auto}
pre.code .k{color:#9FC1FF} pre.code .s{color:#F5D08A} pre.code .c{color:#8FA3BF}
.result{background:var(--panel); border:1px solid var(--line); border-radius:8px; overflow:hidden}
.result .cap{padding:10px 16px; font-family:var(--mono); font-size:12px; color:var(--slate); border-bottom:1px solid var(--line-soft)}
.result table{width:100%; border-collapse:collapse; font-size:13px}
.result th{text-align:left; font-weight:500; color:var(--slate); padding:8px 14px; border-bottom:1px solid var(--line-soft); font-size:12px}
.result td{padding:8px 14px; border-bottom:1px solid var(--line-soft); font-family:var(--mono); white-space:nowrap}
.result td.t{font-family:var(--body)}
.result tr:last-child td{border-bottom:0}

/* Audiences as a definition list */
.audiences{display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:clamp(20px, 3vw, 40px)}
.audiences dt{font-family:var(--display); font-size:21px; font-weight:600; margin-bottom:10px; letter-spacing:-0.01em}
.audiences dd{margin:0; color:var(--slate); font-size:15px}
.audiences dd ul{margin:12px 0 0; padding-left:18px}
.audiences dd li{margin:4px 0}
@media (max-width:820px){ .audiences{grid-template-columns:1fr} }

/* Pricing */
.pricing{display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:clamp(16px, 2.5vw, 28px); align-items:stretch}
.plan{border:1px solid var(--line); border-radius:8px; padding:26px; background:var(--panel); display:flex; flex-direction:column}
.plan.now{border-color:var(--ink); box-shadow:0 20px 50px -36px rgba(10,34,64,.45)}
.plan h3{font-size:18px; margin-bottom:6px}
.plan .price{font-family:var(--display); font-size:38px; font-weight:600; letter-spacing:-0.02em; line-height:1; margin:14px 0 4px; font-variation-settings:"opsz" 72}
.plan .price small{font-family:var(--body); font-size:14px; color:var(--slate); font-weight:400; letter-spacing:0}
.plan .note{font-size:13.5px; color:var(--slate); margin-bottom:18px}
.plan ul{margin:0 0 22px; padding-left:18px; font-size:14.5px; color:var(--ink)}
.plan ul li{margin:6px 0}
.plan .btn{margin-top:auto; justify-content:center}
.plan .tag{display:inline-block; font-family:var(--mono); font-size:12px; color:var(--ink); background:var(--amber-soft); padding:2px 8px; border-radius:4px; margin-bottom:12px}
@media (max-width:820px){ .pricing{grid-template-columns:1fr} }

/* FAQ */
.faq{max-width:760px}
.faq details{border-bottom:1px solid var(--line); padding:4px 0}
.faq summary{cursor:pointer; list-style:none; padding:16px 0; font-weight:600; font-size:17px; display:flex; justify-content:space-between; gap:20px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+"; font-family:var(--mono); color:var(--slate); font-weight:400}
.faq details[open] summary::after{content:"–"}
.faq details p{color:var(--slate); font-size:15.5px; margin:0 0 18px}

/* CTA band */
.band{background:var(--navy); color:#fff; padding:clamp(48px, 7vw, 88px) 0; border-top:1px solid var(--line-soft)}
.band h2{color:#fff; max-width:18ch; margin-bottom:14px}
.band p{color:#C9D4E5; font-size:17px}
.band .btn-primary{background:#fff; color:#0A2240}
.band .btn-primary:hover{background:#E3EAF6}
.band .btn-secondary{color:#fff; border-color:#5C6F8C}
.band .btn-secondary:hover{border-color:#fff}
.band .row{display:grid; grid-template-columns:minmax(0, 7fr) minmax(0, 5fr); gap:32px; align-items:center}
.band .actions{display:flex; gap:12px; flex-wrap:wrap; justify-content:flex-end}
@media (max-width:820px){ .band .row{grid-template-columns:1fr} .band .actions{justify-content:flex-start} }

/* Footer */
footer{padding:36px 0 44px; font-size:13.5px; color:var(--slate); border-top:1px solid var(--line-soft)}
footer .cols{display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:24px}
footer h4{font-family:var(--body); font-size:13px; font-weight:600; color:var(--ink); margin:0 0 8px}
footer ul{list-style:none; margin:0; padding:0}
footer li{margin:4px 0}
footer a{color:var(--slate)}
footer .legal{margin-top:28px; padding-top:18px; border-top:1px solid var(--line-soft); font-size:12.5px; max-width:none}
@media (max-width:820px){ footer .cols{grid-template-columns:1fr 1fr} }

/* Inner pages */
.page{padding:clamp(40px, 6vw, 80px) 0}
.page h1{font-size:clamp(34px, 4.2vw, 52px); margin-bottom:12px}
.page .lead{margin-bottom:36px}
.page h2{font-size:clamp(22px, 2.4vw, 28px); margin:40px 0 12px}
.page h2 code{font-family:var(--mono); font-weight:500; font-size:.8em; background:var(--panel); border:1px solid var(--line); padding:2px 8px; border-radius:4px}
.page ul{padding-left:20px}
.page li{margin:6px 0}
.page table{border-collapse:collapse; width:100%; margin:10px 0 26px; font-size:14px}
.page th{text-align:left; font-weight:500; color:var(--slate); padding:8px 10px; border-bottom:1px solid var(--line); font-size:12.5px}
.page td{padding:7px 10px; border-bottom:1px solid var(--line-soft)}
.page td code{font-family:var(--mono); font-size:13px}
.page .toc{columns:2; column-gap:40px; font-size:14px; padding-left:18px}
@media (max-width:640px){ .page .toc{columns:1} }
.page .callout{background:var(--panel); border:1px solid var(--line); border-left:3px solid var(--key); border-radius:6px; padding:16px 18px; font-size:15px; max-width:70ch}
code{font-family:var(--mono)}
