/* ============================================================
   BLOCKSTREAM — Site Design System
   Warm engineered direction. Synthesized from blockstream-home-v13
   (cream + near-black, slate primary, Manrope/Inter, sharp corners,
   blueprint motifs) restructured for an ecosystem-directory site.

   One stylesheet, every page. Chrome (header/footer/nav) injected by
   js/site.js so there is a single source of truth across all pages.
   Surface modes: light (default, warm cream) and dark (near-black).
   Accent theming: each product page sets --accent / --accent-deep.
   ============================================================ */

:root{
  /* --- warm neutral spine --- */
  --cream:#F5EAE6;     --cream-2:#FAF8F5;    --white:#FFFFFF;
  --paper:#FBF6F1;     --paper-line:#ECE3DB;
  --line:#E2D8D0;      --line-soft:#EBE2DA;

  /* --- engineered blues/greys --- */
  --slate:#466C85;     --slate-deep:#2D4A60;  --steel:#77A4B7;
  --steel-mid:#6A8DA8; --pale:#AEC1D0;
  --navy:#1B2D3C;      --navy-2:#16242F;      --near-black:#0E1822;
  --ink:#1D1D1B;

  /* --- accents (single accent per surface) --- */
  --blue:#00BCFF;      --blue-2:#7EE0FF;
  --orange:#FF8800;    --peach:#FFD5A7;
  --teal:#009E8A;      --mint:#CCEBDF;

  /* --- text roles (light surface default) --- */
  --text:#3A4A55;      --text-2:#5A6A74;      --text-strong:var(--navy);
  --bg:var(--cream-2);

  /* --- dark surface roles --- */
  --d-bg:#0B0E11;      --d-bg-2:#0F1419;      --d-card:#15191F;
  --d-line:rgba(255,255,255,.10);  --d-line-2:rgba(255,255,255,.06);
  --d-ink:#FFFFFF;     --d-muted:#C2CAD1;     --d-dim:#9AA3AC;

  /* --- per-page accent (overridden on product pages) --- */
  --accent:var(--slate);  --accent-deep:var(--slate-deep);  --accent-soft:var(--steel);

  /* --- type --- */
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --display:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;

  /* --- metrics --- */
  --maxw:1280px;  --maxw-text:760px;
  --gutter:clamp(20px,6vw,90px);
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);

  /* --- spacing scale (4px grid) --- */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-6:24px;
  --sp-8:32px; --sp-12:48px; --sp-16:64px; --sp-24:96px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  font-family:var(--sans);background:var(--bg);color:var(--text);
  font-size:17px;line-height:1.6;font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-feature-settings:"tnum" 1;font-variant-numeric:tabular-nums;
  overflow-x:hidden;
}
::selection{background:var(--navy);color:var(--cream)}
img,svg{max-width:100%;display:block}
a{color:var(--slate);text-decoration:none;transition:color .18s var(--ease)}
a:hover{color:var(--navy)}
button{font-family:inherit}
:focus-visible{outline:2px solid var(--slate);outline-offset:3px}

/* ---------- layout ---------- */
.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);position:relative;z-index:2}
.wrap-narrow{max-width:920px}
section{position:relative}
.sec{padding:clamp(72px,10vw,140px) 0;position:relative}
.sec-sm{padding:clamp(48px,7vw,92px) 0}
.sec-head{max-width:62ch}
.center{text-align:center}
.center .lead,.center .sec-head{margin-inline:auto}

/* ---------- type ---------- */
.display{font-family:var(--display);font-weight:800;line-height:1.03;letter-spacing:-.022em;color:var(--text-strong)}
h1.display{font-size:clamp(2.5rem,5.2vw,4.6rem)}
h2.display{font-size:clamp(1.9rem,4vw,3.2rem);line-height:1.05}
h3.display{font-size:clamp(1.4rem,2.4vw,2rem);line-height:1.1}
.display-xl{font-size:clamp(2.9rem,8vw,6.4rem);line-height:.98;letter-spacing:-.03em}
.lead{font-size:clamp(1.04rem,1.4vw,1.22rem);line-height:1.55;color:var(--text-2);font-weight:400;max-width:46ch}
.kicker{display:inline-flex;align-items:center;gap:.6em;font-size:.74rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.kicker .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}
.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--text-2)}
.measure{max-width:var(--maxw-text)}
/* Headlines are one solid color (no mid-heading accent-word color swap). Emphasis by weight, not hue. */
h1 .accent,h2 .accent,h3 .accent,.display .accent,h1 .btc,h2 .btc,.display .btc{color:inherit!important}

/* ---------- buttons (sharp / engineered) ---------- */
.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--sans);font-weight:600;
  font-size:.96rem;line-height:1;padding:.92em 1.7em;border-radius:0;cursor:pointer;
  border:1.5px solid transparent;white-space:nowrap;
  transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}
.btn-lg{padding:1.05em 2.1em;font-size:1.02rem}
.btn-sm{padding:.62em 1.15em;font-size:.86rem}
.btn .arrow{width:1em;height:1em;flex:none;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn-primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff}
.btn-dark{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn-dark:hover{background:var(--near-black);border-color:var(--near-black)}
.btn-cream{background:var(--cream);color:var(--navy);border-color:var(--cream)}
.btn-cream:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn-outline{background:transparent;color:var(--accent);border-color:var(--accent)}
.btn-outline:hover{background:var(--accent);color:#fff}
.btn-outline-l{background:transparent;color:var(--cream);border-color:rgba(245,234,230,.4)}
.btn-outline-l:hover{background:var(--cream);color:var(--navy);border-color:var(--cream)}
.btn-ghost{background:transparent;color:var(--d-ink);border-color:var(--d-line)}
.btn-ghost:hover{border-color:var(--d-ink);background:rgba(255,255,255,.05)}
.btn-row{display:flex;flex-wrap:wrap;gap:.8rem}

/* arrow link (text + →) */
.arlink{display:inline-flex;align-items:center;gap:.5em;font-weight:600;font-size:.95rem;color:var(--accent)}
.arlink svg{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s var(--ease)}
.arlink:hover{color:var(--accent-deep)}
.arlink:hover svg{transform:translateX(3px)}

/* ---------- utility bar ---------- */
.utility{background:var(--slate);color:var(--cream);position:relative;z-index:60}
.utility .wrap{display:flex;align-items:center;justify-content:center;gap:.4ch;min-height:38px;
  font-size:.74rem;font-weight:600;letter-spacing:.04em;text-align:center;flex-wrap:wrap}
.utility a{color:#fff;font-weight:700;border:1.5px solid rgba(245,234,230,.5);padding:.28em .95em;
  line-height:1;margin-left:.8ch;transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease)}
.utility a:hover{background:var(--cream);border-color:var(--cream);color:var(--slate)}

/* ---------- header / nav ---------- */
header.site{position:fixed;top:38px;left:0;right:0;z-index:50;
  transition:background .3s var(--ease),top .3s var(--ease),border-color .3s var(--ease);
  border-bottom:1px solid transparent}
header.site .nav{display:flex;align-items:center;justify-content:space-between;min-height:70px;gap:2rem}
.brand{display:flex;align-items:center;flex:none}
.brand img{height:26px;width:auto;display:block}
.brand .logo-dark{display:none}
nav.primary{display:flex;align-items:center;gap:1.9rem;margin-left:auto}
nav.primary a{font-size:.95rem;font-weight:500;color:rgba(245,234,230,.84);position:relative}
nav.primary a:hover,nav.primary a.active{color:#fff}
nav.primary a.active::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--cream);opacity:.7}
.nav-cta{display:flex;align-items:center;gap:.9rem}
.nav-cta .btn{padding:.58em 1.2em;font-size:.9rem}
.menu-toggle{display:none;background:none;border:0;cursor:pointer;padding:8px;flex:none}
.menu-toggle span{display:block;width:24px;height:2px;background:var(--cream);margin:5px 0;transition:.25s var(--ease)}

/* scrolled state — solid cream chrome */
header.site.scrolled{background:rgba(250,248,245,.92);backdrop-filter:saturate(140%) blur(12px);
  border-bottom-color:var(--line);top:0}
header.site.scrolled .brand .logo-light{display:none}
header.site.scrolled .brand .logo-dark{display:block}
header.site.scrolled nav.primary a{color:#3a4954}
header.site.scrolled nav.primary a:hover,header.site.scrolled nav.primary a.active{color:var(--navy)}
header.site.scrolled nav.primary a.active::after{background:var(--accent)}
header.site.scrolled .menu-toggle span{background:var(--navy)}
header.site.scrolled .nav-cta .btn-cream{background:var(--accent);color:#fff;border-color:var(--accent)}
header.site.scrolled .nav-cta .btn-cream:hover{background:var(--accent-deep);border-color:var(--accent-deep)}

/* dark-dominant pages keep a dark sticky header on scroll (not cream) */
body[data-surface="dark"] header.site.scrolled{background:rgba(11,14,17,.9);border-bottom-color:var(--d-line-2)}
body[data-surface="dark"] header.site.scrolled .brand .logo-light{display:block}
body[data-surface="dark"] header.site.scrolled .brand .logo-dark{display:none}
body[data-surface="dark"] header.site.scrolled nav.primary a{color:rgba(245,234,230,.84)}
body[data-surface="dark"] header.site.scrolled nav.primary a:hover,
body[data-surface="dark"] header.site.scrolled nav.primary a.active{color:#fff}
body[data-surface="dark"] header.site.scrolled nav.primary a.active::after{background:var(--accent)}
body[data-surface="dark"] header.site.scrolled .menu-toggle span{background:var(--cream)}
body[data-surface="dark"] header.site.scrolled .nav-cta .btn-cream{background:var(--cream);color:var(--navy);border-color:var(--cream)}
body[data-surface="dark"] header.site.scrolled .nav-cta .btn-cream:hover{background:var(--accent);color:#fff;border-color:var(--accent)}

/* header over a LIGHT hero (directory pages) starts in dark-ink mode */
body[data-chrome="light"] header.site:not(.scrolled) nav.primary a{color:#3a4954}
body[data-chrome="light"] header.site:not(.scrolled) nav.primary a:hover{color:var(--navy)}
body[data-chrome="light"] header.site:not(.scrolled) .brand .logo-light{display:none}
body[data-chrome="light"] header.site:not(.scrolled) .brand .logo-dark{display:block}
body[data-chrome="light"] header.site:not(.scrolled) .menu-toggle span{background:var(--navy)}
body[data-chrome="light"] header.site:not(.scrolled) .nav-cta .btn-cream{background:var(--accent);color:#fff;border-color:var(--accent)}

/* ---------- footer ---------- */
footer.site{background:var(--navy);color:#b6c4cd;padding:clamp(56px,7vw,86px) 0 2.4rem}
.foot-top{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:2.4rem 1.5rem;
  padding-bottom:2.8rem;border-bottom:1px solid rgba(174,193,208,.16)}
.foot-brand img{height:26px;margin-bottom:1.1rem}
.foot-brand p{font-size:.9rem;color:#b6c4cd;max-width:32ch;line-height:1.55}
.foot-news{margin-top:1.7rem;max-width:32ch}
.foot-news h5{font-size:.95rem;font-weight:700;color:#d2dce3;margin-bottom:.8rem}
.foot-news-row{display:flex;gap:.5rem}
.foot-news input{flex:1;min-width:0;background:rgba(255,255,255,.06);border:1px solid rgba(174,193,208,.16);
  color:#fff;padding:.72em .9em;font-family:var(--sans);font-size:.9rem;border-radius:0;
  transition:border-color .2s var(--ease),background .2s var(--ease)}
.foot-news input::placeholder{color:#8ba0ad}
.foot-news input:focus{outline:none;border-color:var(--steel);background:rgba(255,255,255,.1)}
.foot-news .btn{padding:.72em 1.15em;font-size:.88rem;background:var(--steel);color:var(--near-black);border-color:var(--steel)}
.foot-news .btn:hover{background:#fff;border-color:#fff;color:var(--navy)}
.foot-news .note{font-size:.72rem;color:#8ba0ad;margin-top:.7rem}
.foot-news .note.ok{color:var(--mint)}
.foot-col h5{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#b0bfc9;margin-bottom:1rem}
.foot-col a{display:block;font-size:.92rem;color:#c2cfd8;margin-bottom:.62rem}
.foot-col a:hover{color:#fff}
.foot-bottom{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;padding-top:1.7rem;font-size:.82rem;color:#aebcc6}
.foot-bottom .legal{display:flex;gap:1.4rem;flex-wrap:wrap}
.foot-bottom a{color:#aebcc6}
.foot-bottom a:hover{color:#fff}

/* ---------- reveal / motion ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ---------- DIRECTORY (museum-label ecosystem index — the block.xyz move) ---------- */
.directory{display:grid;gap:0;border-top:1px solid var(--line)}
.dir-row{display:grid;grid-template-columns:minmax(0,.38fr) minmax(0,1fr) auto;gap:clamp(1rem,3vw,2.5rem);
  align-items:baseline;padding:clamp(1.3rem,2.4vw,2rem) 0;border-bottom:1px solid var(--line);
  transition:background .25s var(--ease),padding-inline .25s var(--ease)}
.dir-row:hover{background:var(--paper)}
.dir-name{font-family:var(--display);font-weight:700;font-size:clamp(1.3rem,2.6vw,2.1rem);
  letter-spacing:-.02em;color:var(--navy);line-height:1.05}
.dir-name .tag{display:block;font-family:var(--sans);font-weight:600;font-size:.66rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);margin-bottom:.5rem}
.dir-desc{font-size:1rem;color:var(--text-2);line-height:1.5;max-width:44ch}
.dir-go{align-self:center;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;
  border:1.5px solid var(--line);color:var(--slate);flex:none;transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}
.dir-go svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dir-row:hover .dir-go{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateX(4px)}
@media(max-width:720px){
  .dir-row{grid-template-columns:1fr auto;gap:.6rem 1rem}
  .dir-desc{grid-column:1/-1;order:3}
}

/* ---------- card grids ---------- */
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1rem,2vw,1.6rem)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.6rem)}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(1rem,1.8vw,1.5rem)}
.card{background:var(--white);border:1px solid var(--line);padding:clamp(1.5rem,2.2vw,2rem);
  display:flex;flex-direction:column;transition:border-color .2s var(--ease),transform .2s var(--ease)}
.card.link:hover{border-color:var(--accent);transform:translateY(-3px)}
.card .ic{width:46px;height:46px;color:var(--accent);margin-bottom:1.2rem}
.card .ic svg{width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.card h3{font-family:var(--display);font-weight:700;font-size:1.2rem;letter-spacing:-.01em;color:var(--navy);margin-bottom:.5rem}
.card p{font-size:.95rem;color:var(--text-2);line-height:1.55}
.card .card-foot{margin-top:auto;padding-top:1.2rem}
@media(max-width:920px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}

/* ---------- feature grid (hairline, dark-or-light) ---------- */
.feat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.feat{background:var(--bg);padding:clamp(28px,3.2vw,44px);min-height:clamp(220px,24vw,300px);display:flex;flex-direction:column}
.feat .ic{width:clamp(42px,4vw,54px);height:clamp(42px,4vw,54px);color:var(--accent);margin-bottom:auto}
.feat .ic svg{width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.feat h3{font-family:var(--display);font-size:clamp(1.25rem,1.9vw,1.6rem);font-weight:800;letter-spacing:-.02em;margin-top:1.5rem;color:var(--text-strong)}
.feat p{margin-top:.7rem;color:var(--text-2);font-size:.97rem;line-height:1.55;max-width:42ch}
@media(max-width:760px){.feat-grid{grid-template-columns:1fr}}

/* ---------- spec list ---------- */
.spec-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(2.2rem,6vw,5rem);align-items:start}
.spec-list{border-top:1px solid var(--line)}
.spec-row{display:grid;grid-template-columns:.7fr 1.3fr;gap:1.5rem;padding:1.2rem 0;border-bottom:1px solid var(--line)}
.spec-row dt{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-2);padding-top:.15rem}
.spec-row dd{font-size:1.02rem;color:var(--text-strong);font-weight:500;word-break:normal;overflow-wrap:normal}
@media(max-width:760px){.spec-grid{grid-template-columns:1fr}.spec-row{grid-template-columns:1fr;gap:.3rem}}

/* ---------- FAQ ---------- */
.faq-list{max-width:880px}
.faq-item{border-top:1px solid var(--line)}
.faq-item:last-child{border-bottom:1px solid var(--line)}
.faq-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;background:none;border:0;
  cursor:pointer;text-align:left;color:var(--text-strong);font-family:var(--sans);font-weight:600;
  font-size:clamp(1.02rem,1.6vw,1.22rem);letter-spacing:-.01em;padding:clamp(1.2rem,2.2vw,1.7rem) 0}
.faq-q .pm{flex:none;width:28px;height:28px;position:relative}
.faq-q .pm::before,.faq-q .pm::after{content:"";position:absolute;left:50%;top:50%;background:var(--accent);transition:transform .3s var(--ease)}
.faq-q .pm::before{width:15px;height:2px;transform:translate(-50%,-50%)}
.faq-q .pm::after{width:2px;height:15px;transform:translate(-50%,-50%)}
.faq-item.open .faq-q .pm::after{transform:translate(-50%,-50%) scaleY(0)}
.faq-item.open .faq-q{color:var(--accent)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .4s var(--ease)}
.faq-a p{padding:0 2.5rem 1.6rem 0;color:var(--text-2);font-size:1rem;line-height:1.65;max-width:64ch}

/* ---------- marquee ---------- */
.marquee{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:clamp(16px,2.2vw,26px) 0;overflow:hidden;white-space:nowrap}
.marquee .track{display:inline-flex;align-items:center;animation:scrollx 30s linear infinite;will-change:transform}
.marquee .item{font-family:var(--display);font-weight:800;font-size:clamp(1rem,2.2vw,1.7rem);letter-spacing:-.01em;color:var(--text-strong);padding:0 1.4rem}
.marquee .dia{color:var(--accent);font-size:clamp(.7rem,1.4vw,1.1rem)}
@keyframes scrollx{to{transform:translateX(-50%)}}

/* ---------- page intro (directory/section pages) ---------- */
.pageintro{padding:calc(clamp(96px,12vw,150px) + 38px) 0 clamp(40px,6vw,72px);background:var(--cream);border-bottom:1px solid var(--line)}
.pageintro .kicker{margin-bottom:1.1rem}
.pageintro h1{max-width:18ch}
.pageintro p.lead{margin-top:1.3rem}

/* ---------- dark section utility ---------- */
.dark{background:var(--near-black);color:var(--cream)}
.dark .display,.dark h1,.dark h2,.dark h3{color:#fff}
.dark .lead{color:var(--pale)}
.dark .eyebrow{color:var(--steel)}
.dark a{color:var(--steel)}
.dark a:hover{color:#fff}
.dark .spec-list,.dark .spec-row{border-color:var(--d-line-2)}
.dark .spec-row dt{color:var(--d-dim)}
.dark .spec-row dd{color:#fff}
.dark .feat-grid{background:var(--d-line-2);border-color:var(--d-line-2)}
.dark .feat{background:var(--d-bg)}
.dark .feat p{color:var(--d-muted)}
.dark .faq-item,.dark .faq-item:last-child{border-color:var(--d-line-2)}
.dark .faq-q{color:#fff}
.dark .faq-a p{color:var(--d-muted)}

/* ---------- responsive chrome ---------- */
@media(max-width:1000px){
  .foot-top{grid-template-columns:1fr 1fr}.foot-brand{grid-column:1/-1}
}
@media(max-width:820px){
  nav.primary{position:fixed;inset:0 0 auto;top:0;background:var(--cream);flex-direction:column;align-items:flex-start;
    gap:.1rem;padding:96px var(--gutter) 32px;transform:translateY(-104%);transition:transform .35s var(--ease);margin-left:0;z-index:40}
  nav.primary.open{transform:none}
  nav.primary a{color:#3a4954!important;font-size:1.15rem;padding:.6rem 0;width:100%;border-bottom:1px solid var(--line)}
  nav.primary a.active::after{display:none}
  .menu-toggle{display:block;z-index:60}
  .nav-cta .btn-cream{display:none}
  .foot-top{grid-template-columns:1fr}
  body{font-size:16px}
}

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important;transition:none!important}
  .marquee .track{animation:none!important}
}
