/* ==========================================================================
   QIS Ecosystem — design system v7
   Obsidian ground, Cormorant display, system-sans body, mono ledger metadata.
   One system, three pillars. Accent is earned per pillar, never decorative.
   ========================================================================== */

:root{
  --ink:#0a0b0e;
  --raise:#0f1218;
  --panel:#111419;
  --panel-deep:#151922;
  --ink-bar:#0c0e13;

  --text:#e7e4dd;
  --body:#c3c1ba;
  --muted:#95938c;
  --faint:#6f6d67;

  --rule:#23262d;
  --rule-dark:#31353f;
  --rule-soft:#191c22;

  --agent:#6f9ceb;   --agent-soft:#9cbcf4;   --agent-bg:rgba(111,156,235,.10);
  --fund:#cba552;    --fund-soft:#ddc488;     --fund-bg:rgba(203,165,82,.10);
  --trust:#9b8fd4;   --trust-soft:#b9afe6;    --trust-bg:rgba(155,143,212,.10);

  --pos:#6cc48f;
  --neg:#e08a80;

  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:"IBM Plex Mono","SF Mono",Menlo,Consolas,monospace;
  --max:1120px;

  --accent:var(--fund);
  --accent-soft:var(--fund-soft);
  --accent-bg:var(--fund-bg);
}
html[data-pillar="agent"]{--accent:var(--agent);--accent-soft:var(--agent-soft);--accent-bg:var(--agent-bg)}
html[data-pillar="fund"]{--accent:var(--fund);--accent-soft:var(--fund-soft);--accent-bg:var(--fund-bg)}
html[data-pillar="trust"]{--accent:var(--trust);--accent-soft:var(--trust-soft);--accent-bg:var(--trust-bg)}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{
  background:var(--ink);
  background-image:radial-gradient(125% 62% at 50% -14%, #12151d 0%, #0d0f14 44%, var(--ink) 74%);
  background-repeat:no-repeat;
  background-attachment:fixed;
  color:var(--body);
  font-family:var(--sans);
  font-size:16.5px;
  line-height:1.68;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.serif{font-family:var(--serif)}
a{color:var(--accent-soft);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s,color .15s}
a:hover{border-bottom-color:currentColor}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}
::selection{background:var(--accent-bg)}

/* ---- ecosystem nav ---- */
.eco-nav{background:var(--ink-bar);border-bottom:1px solid var(--rule)}
.eco-nav-inner{max-width:var(--max);margin:0 auto;display:flex;gap:0;padding:0 24px}
.eco-nav a{display:flex;align-items:baseline;gap:8px;padding:12px 20px 11px 0;margin-right:20px;
  color:var(--muted);border-bottom:2px solid transparent;font-size:13px;letter-spacing:.01em}
.eco-nav a:hover{color:var(--text)}
.eco-nav .eco-k{font-family:var(--mono);font-weight:500;text-transform:uppercase;letter-spacing:.1em;font-size:12px}
.eco-nav .eco-r{font-size:11px;color:var(--faint)}
.eco-nav a.current{color:var(--text)}
.eco-nav a.current .eco-r{color:var(--muted)}
.eco-nav a.pillar-agent.current{border-bottom-color:var(--agent)}
.eco-nav a.pillar-fund.current{border-bottom-color:var(--fund)}
.eco-nav a.pillar-trust.current{border-bottom-color:var(--trust)}
.eco-nav a.pillar-agent:hover{color:var(--agent-soft)}
.eco-nav a.pillar-fund:hover{color:var(--fund-soft)}
.eco-nav a.pillar-trust:hover{color:var(--trust-soft)}

/* ---- ledger strip (signature) ---- */
.ledger-strip{
  max-width:var(--max);margin:0 auto;padding:10px 24px 9px;
  display:flex;gap:28px;align-items:baseline;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--faint);
  border-bottom:1px solid var(--rule-soft);
}
.ledger-strip .ls-right{margin-left:auto}

/* ---- section nav ---- */
.site-nav{max-width:var(--max);margin:0 auto;padding:14px 24px 13px;display:flex;flex-wrap:wrap;gap:4px 26px;
  border-bottom:1px solid var(--rule);font-size:13.5px}
.site-nav a{color:var(--muted);font-weight:500;border-bottom-color:transparent}
.site-nav a:hover{color:var(--text)}
.site-nav a.on{color:var(--text);position:relative}
.site-nav a.on::after{content:"";position:absolute;left:0;right:0;bottom:-14px;height:2px;background:var(--accent)}

/* ---- layout ---- */
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
section{padding:58px 0;border-bottom:1px solid var(--rule)}
section:last-of-type{border-bottom:none}
.eyebrow{display:block;font-family:var(--mono);font-size:11.5px;font-weight:500;text-transform:uppercase;
  letter-spacing:.16em;color:var(--accent-soft);margin-bottom:16px}
h1{font-family:var(--serif);font-weight:500;font-size:clamp(34px,5vw,52px);line-height:1.08;
  color:var(--text);letter-spacing:-.01em;max-width:22ch}
h2{font-family:var(--serif);font-weight:500;font-size:clamp(25px,3vw,33px);line-height:1.18;color:var(--text);
  margin-bottom:18px;letter-spacing:-.005em}
h3{font-family:var(--sans);font-weight:600;font-size:16.5px;color:var(--text);line-height:1.35}
.lede{font-size:19px;line-height:1.6;color:var(--body);max-width:70ch;margin-top:22px}
.lede strong{color:var(--text);font-weight:600}
.lede .k{color:var(--accent-soft)}
p+p{margin-top:14px}
.prose{max-width:74ch;color:var(--body)}
.prose p{margin-top:15px}
.prose h2{margin-top:46px}
.prose h3{margin-top:30px;margin-bottom:6px}
.prose ul,.prose ol{margin:15px 0 0 20px}
.prose li{margin-top:8px}
.prose li::marker{color:var(--faint)}
.prose strong{color:var(--text)}
.small{font-size:13px;color:var(--muted)}
.sources{font-size:12.5px;color:var(--faint);margin-top:28px;max-width:80ch;line-height:1.65}
.sources a{color:var(--muted)}

/* ---- hero ---- */
.hero{padding:72px 0 58px;border-bottom:1px solid var(--rule)}
.hero-stats{display:flex;flex-wrap:wrap;gap:0;margin-top:44px;border-top:1px solid var(--rule-dark)}
.hstat{padding:20px 40px 6px 0;margin-right:40px}
.hstat .v{font-family:var(--mono);font-size:26px;font-weight:500;color:var(--text);letter-spacing:-.02em}
.hstat .l{display:block;font-size:12.5px;color:var(--muted);margin-top:5px;max-width:26ch;line-height:1.5}

/* ---- pillar cards (tri-node lockup) ---- */
.tri{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}
.tri-card{background:var(--panel);padding:0 26px 26px;display:flex;flex-direction:column;gap:11px;position:relative}
.tri-card::before{content:"";display:block;height:2px;width:46px;margin:26px 0 20px;background:var(--rule-dark)}
.tri-card.pillar-agent::before{background:var(--agent)}
.tri-card.pillar-fund::before{background:var(--fund)}
.tri-card.pillar-trust::before{background:var(--trust)}
.tri-card .tag{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--faint)}
.tri-card.pillar-agent .tag{color:var(--agent-soft)}
.tri-card.pillar-fund .tag{color:var(--fund-soft)}
.tri-card.pillar-trust .tag{color:var(--trust-soft)}
.tri-card h3{font-family:var(--serif);font-size:27px;font-weight:600;letter-spacing:0}
.tri-card.pillar-agent h3{color:var(--agent-soft)}
.tri-card.pillar-fund h3{color:var(--fund-soft)}
.tri-card.pillar-trust h3{color:var(--trust-soft)}
.tri-card .subtag{font-family:var(--serif);font-style:italic;font-size:16px;color:var(--muted);margin-top:-4px}
.tri-card p{font-size:14px;color:var(--muted);line-height:1.62}
.tri-card .util{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:var(--faint);
  line-height:1.6;padding-top:14px;margin-top:4px;border-top:1px solid var(--rule-soft)}
.tri-card .go{margin-top:auto;padding-top:8px;font-size:13.5px;font-weight:500;font-family:var(--sans)}

/* ---- resolution line (signature) ---- */
.resolve{text-align:center;padding:8px 0 4px}
.resolve .line{font-family:var(--serif);font-size:clamp(22px,3.3vw,32px);line-height:1.4;color:var(--muted)}
.resolve .line .a{color:var(--agent-soft)}
.resolve .line .f{color:var(--fund-soft)}
.resolve .line .t{color:var(--trust-soft)}
.resolve .line .sep{color:var(--faint);font-style:italic;padding:0 6px}
.resolve .sub{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--faint);margin-top:16px;text-transform:uppercase}

/* ---- generic card grids ---- */
.grid{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.grid.c2{grid-template-columns:repeat(2,1fr)}
.grid.c3{grid-template-columns:repeat(3,1fr)}
.card{background:var(--panel);padding:24px 22px 22px}
.card .cat{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);display:block;margin-bottom:9px}
.card h3{font-family:var(--serif);font-size:20px;font-weight:600}
.card h3 a{color:var(--text);border-bottom-color:transparent}
.card h3 a:hover{color:var(--accent-soft)}
.card p{font-size:14px;color:var(--muted);margin-top:9px;line-height:1.6}
.card .meta{font-family:var(--mono);font-size:11px;color:var(--faint);margin-top:13px;display:block}

/* ---- data tables ---- */
.dtable{width:100%;border-collapse:collapse;font-size:14px;border:1px solid var(--rule)}
.dtable th{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);
  text-align:left;padding:11px 14px;background:var(--panel-deep);border-bottom:1px solid var(--rule-dark);font-weight:500}
.dtable td{padding:12px 14px;border-bottom:1px solid var(--rule);vertical-align:top;background:var(--panel);color:var(--body)}
.dtable tr:last-child td{border-bottom:none}
.dtable td:first-child{font-weight:500;color:var(--text);white-space:nowrap}

/* ---- snapshot ledger ---- */
.snapshot{border:1px solid var(--rule-dark);background:var(--panel)}
.snap-head{display:flex;align-items:baseline;gap:14px;padding:14px 18px;border-bottom:1px solid var(--rule);
  font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.snap-head .live{color:var(--pos)}
.snap-head .ts{margin-left:auto;color:var(--faint);text-transform:none;letter-spacing:.02em}
.snap-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--rule)}
.snap-cell{background:var(--panel);padding:16px 18px 14px}
.snap-cell .k{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);display:block}
.snap-cell .v{font-family:var(--mono);font-size:22px;font-weight:500;color:var(--text);margin-top:6px;display:block;letter-spacing:-.01em}
.snap-cell .v.pos{color:var(--pos)}
.snap-cell .v.neg{color:var(--neg)}
.snap-note{padding:14px 18px;border-top:1px solid var(--rule);font-size:14px;color:var(--body);line-height:1.6}
.snap-disc{padding:0 18px 14px;font-size:11.5px;color:var(--faint)}

/* ---- atlas filters ---- */
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 26px}
.filters button{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;
  padding:7px 13px;background:var(--panel);border:1px solid var(--rule-dark);color:var(--muted);cursor:pointer}
.filters button:hover{color:var(--text);border-color:var(--faint)}
.filters button.on{background:var(--accent);color:var(--ink);border-color:var(--accent)}

/* ---- definition list (glossary) ---- */
.deflist{border-top:1px solid var(--rule-dark)}
.defrow{padding:22px 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:280px 1fr;gap:28px}
.defrow dt{font-family:var(--serif);font-weight:600;font-size:19px;color:var(--text);line-height:1.3}
.defrow dt .abbr{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--faint);margin-top:5px;font-weight:400}
.defrow dd{font-size:15px;color:var(--body);max-width:66ch}
.defrow dd .xref{display:block;margin-top:8px;font-size:12.5px}

/* ---- callouts ---- */
.callout{border-left:3px solid var(--accent);background:var(--panel);padding:18px 22px;margin:26px 0;max-width:76ch}
.callout p{font-size:14.5px;color:var(--body)}
.callout .co-label{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--accent-soft);display:block;margin-bottom:6px}

/* ---- code ---- */
pre{background:#0c0e13;color:#d8dce2;font-family:var(--mono);font-size:13px;line-height:1.6;
  padding:20px 22px;overflow-x:auto;margin:18px 0;border:1px solid var(--rule)}
code{font-family:var(--mono);font-size:.92em;background:var(--panel-deep);padding:1px 5px;border:1px solid var(--rule);color:var(--text)}
pre code{background:none;padding:0;border:none}

/* ---- signals form ---- */
.sig-form{display:flex;gap:10px;margin-top:24px;max-width:520px}
.sig-form input{flex:1;font-family:var(--mono);font-size:14px;padding:12px 14px;border:1px solid var(--rule-dark);background:var(--panel);color:var(--text)}
.sig-form input::placeholder{color:var(--faint)}
.sig-form button{font-family:var(--sans);font-weight:600;font-size:14px;padding:12px 22px;background:var(--accent);
  color:var(--ink);border:1px solid var(--accent);cursor:pointer}
.sig-form button:hover{filter:brightness(1.08)}
.sig-msg{margin-top:12px;font-size:13.5px;min-height:20px}
.sig-msg.ok{color:var(--pos)}
.sig-msg.err{color:var(--neg)}

/* ---- crosslink rail (flywheel) ---- */
.xrail{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:36px}
.xrail a{background:var(--panel);padding:17px 18px;display:block;border-bottom:none}
.xrail a:hover{background:var(--panel-deep)}
.xrail .xk{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);display:block}
.xrail .xt{font-size:14px;font-weight:500;color:var(--text);display:block;margin-top:5px;line-height:1.4}

/* ---- buttons ---- */
.btn{display:inline-block;font-weight:600;font-size:14px;padding:12px 24px;background:var(--accent);color:var(--ink);border:1px solid var(--accent)}
.btn:hover{filter:brightness(1.08);color:var(--ink);border-bottom-color:var(--accent)}
.btn.ghost{background:transparent;color:var(--text);border-color:var(--rule-dark)}
.btn.ghost:hover{background:var(--panel);filter:none;color:var(--text)}

/* ---- article header ---- */
.art-head{padding:58px 0 42px;border-bottom:1px solid var(--rule)}
.art-meta{font-family:var(--mono);font-size:11.5px;color:var(--faint);letter-spacing:.06em;margin-top:22px}

/* ---- footer ---- */
.site-footer{background:var(--ink-bar);color:var(--muted);margin-top:76px;border-top:1px solid var(--rule)}
.foot-grid{max-width:var(--max);margin:0 auto;padding:50px 24px 38px;display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr 1fr;gap:32px}
.foot-mark{font-family:var(--serif);font-size:21px;font-weight:600;color:var(--text)}
.foot-mark-sub{color:var(--faint);font-weight:500}
.foot-line{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--faint);margin-top:12px;line-height:1.7}
.foot-h{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);display:block;margin-bottom:12px}
.foot-col a{display:block;color:var(--muted);font-size:13px;padding:4px 0;border-bottom:none}
.foot-col a:hover{color:var(--text)}
.foot-legal{border-top:1px solid var(--rule)}
.foot-legal p{max-width:var(--max);margin:0 auto;padding:14px 24px;font-size:11.5px;line-height:1.7;color:var(--faint)}
.foot-legal p:first-child{padding-bottom:0}

/* ---- namespace / disclaimer (home) ---- */
.eco-list{font-family:var(--serif);font-style:italic;font-size:14.5px;color:var(--muted);line-height:1.9}

/* ---- motion ---- */
@media (prefers-reduced-motion: no-preference){
  .reveal{opacity:0;transform:translateY(14px);animation:rise .8s cubic-bezier(.2,.7,.2,1) forwards}
  .d1{animation-delay:.04s}.d2{animation-delay:.14s}.d3{animation-delay:.24s}
  .d4{animation-delay:.34s}.d5{animation-delay:.44s}.d6{animation-delay:.54s}
  @keyframes rise{to{opacity:1;transform:none}}
}

/* ---- responsive ---- */
@media(max-width:920px){
  .tri,.grid.c3,.xrail{grid-template-columns:1fr 1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .snap-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:640px){
  .tri,.grid.c3,.grid.c2,.xrail{grid-template-columns:1fr}
  .defrow{grid-template-columns:1fr;gap:8px}
  .snap-grid{grid-template-columns:1fr 1fr}
  .eco-nav .eco-r{display:none}
  .hstat{padding-right:0;margin-right:24px}
  .sig-form{flex-direction:column}
  .foot-grid{grid-template-columns:1fr}
  section{padding:44px 0}
  .resolve .line .sep{display:block;height:0;overflow:hidden}
}
