/* ---------- Project Hub — full-screen slide in the house grammar ----------
   Zones: band · strip · rail · panels · timeline · sections · foot.
   Hairlines not shadows; accent spent on kickers, seams and one lit moment. */
#hub{
  position:absolute;inset:0;z-index:31;display:none;
  background:rgba(9,14,26,.985);overflow-y:auto;
  font-size:15.5px;line-height:1.62;
}
#hub.show{display:block}
#hub::-webkit-scrollbar{width:10px}
#hub::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:5px}
.hb-wrap{max-width:1180px;margin:0 auto;padding:1.6rem 2.4rem 4rem}

/* band */
.hb-band{display:flex;align-items:flex-start;gap:1.2rem;flex-wrap:wrap;padding-bottom:1rem;border-bottom:1px solid var(--line)}
.hb-band .kick{font-size:.66rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:.35rem}
.hb-band h2{font-size:2.1rem;font-weight:300;line-height:1.15;letter-spacing:-.01em}
.hb-band h2 .cc{margin-right:.55rem;vertical-align:middle}
.hb-band .sub{color:var(--dim);margin-top:.3rem;font-size:.92rem;display:flex;gap:.7rem;align-items:center;flex-wrap:wrap}
.hb-band .tools{margin-left:auto;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.hb-btn{
  background:none;border:1px solid var(--line);border-radius:6px;color:var(--ink);
  padding:.4rem .8rem;cursor:pointer;font-size:.82rem;font-family:inherit;white-space:nowrap;
}
.hb-btn:hover{border-color:var(--accent)}
.hb-btn.primary{border-color:rgba(93,169,131,.5);color:var(--accent2)}

/* provenance legend + chips */
.hb-legend{display:flex;gap:1.1rem;flex-wrap:wrap;align-items:center;font-size:.72rem;color:var(--dim);margin:.9rem 0 0}
.prov{
  display:inline-block;font-family:Consolas,'Cascadia Mono',monospace;font-size:.6rem;letter-spacing:.14em;
  text-transform:uppercase;padding:.08rem .42rem;border-radius:3px;border:1px solid;vertical-align:middle;
  white-space:nowrap;text-decoration:none;cursor:default;line-height:1.5;
}
.prov.reported{color:var(--accent2);border-color:rgba(158,216,184,.45)}
.prov.derived{color:var(--cyan);border-color:rgba(85,193,232,.45)}
.prov.inferred{color:var(--warn);border-color:rgba(245,166,35,.5);border-style:dashed}
.prov.unknown{color:var(--faint);border-color:rgba(90,103,128,.6);border-style:dotted}
.prov.opinion{color:var(--warn);border-color:rgba(245,166,35,.5);border-style:dashed}
a.prov.reported{cursor:pointer}
a.prov.reported:hover{background:rgba(158,216,184,.08)}
.hb-legend .prov{margin-right:.25rem}

/* strip — the position in one sentence */
.hb-strip{
  margin:1.3rem 0 0;padding:.95rem 1.2rem;border-left:3px solid var(--accent);
  background:rgba(255,255,255,.025);font-size:1.08rem;line-height:1.55;
}
.hb-strip .prov{margin-left:.5rem}

/* rail — 4 columns split by hairlines */
.hb-rail{display:grid;grid-template-columns:repeat(4,1fr);margin-top:1.3rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.hb-rail>div{padding:.85rem 1rem .85rem 0;border-right:1px solid var(--line);margin-right:1rem;min-width:0}
.hb-rail>div:last-child{border-right:0;margin-right:0}
.hb-lab{font-size:.62rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);margin-bottom:.3rem}
.hb-val{font-size:.95rem;line-height:1.45}
.hb-val .prov{margin-left:.35rem}
.hb-rail ul{list-style:none}
.hb-rail li{padding:.12rem 0}

/* panels — side-by-side metric boxes */
.hb-panels{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.3rem}
.hb-panel{border:1px solid var(--line);border-radius:4px;padding:1rem 1.1rem;display:flex;flex-direction:column}
.hb-panel .hb-lab{color:var(--accent)}
.hb-kv{display:flex;justify-content:space-between;gap:.8rem;padding:.42rem 0;border-bottom:1px solid var(--line);font-size:.9rem}
.hb-kv:last-of-type{border-bottom:0}
.hb-kv .k{color:var(--dim);flex:0 1 auto;min-width:0}
.hb-kv .v{text-align:right;font-variant-numeric:tabular-nums;flex:1 1 55%;min-width:0;overflow-wrap:anywhere}
.hb-kv .v .prov{margin-left:.35rem}
.hb-big{font-size:1.75rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.2;margin:.25rem 0 .1rem}
.hb-big small{font-size:.8rem;font-weight:400;color:var(--dim);margin-left:.4rem}
.hb-note{font-size:.76rem;color:var(--faint);margin-top:auto;padding-top:.6rem;line-height:1.5}
.vchip{
  display:inline-block;font-family:Consolas,'Cascadia Mono',monospace;font-size:.64rem;letter-spacing:.12em;
  padding:.18rem .55rem;border-radius:4px;border:1px solid;white-space:nowrap;
}
.rag-ok{color:var(--ok);border-color:rgba(125,219,138,.5)}
.rag-amber{color:var(--warn);border-color:rgba(245,166,35,.5)}
.rag-red{color:#ff7a6e;border-color:rgba(255,122,110,.5)}
.rag-na{color:var(--faint);border-color:rgba(90,103,128,.6)}

/* sections */
.hb-sec{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--line)}
.hb-sec .hb-h{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;margin-bottom:.7rem}
.hb-sec .hb-h h3{font-size:1.25rem;font-weight:300}
.hb-sec .hb-h .why{font-size:.8rem;color:var(--faint)}
.hb-sec p{max-width:72ch}

/* timeline band (svg) */
.hb-tl{width:100%;height:auto;display:block;overflow:visible}
.hb-tl .axis{stroke:var(--line);stroke-width:1}
.hb-tl .yr{fill:var(--faint);font-family:Consolas,'Cascadia Mono',monospace;font-size:10px}
.hb-tl .plan{fill:url(#hatch);stroke:rgba(147,160,184,.6);stroke-width:1}
.hb-tl .actual{fill:var(--accent);opacity:.85}
.hb-tl .actual.open{opacity:.5}
.hb-tl .today{stroke:var(--cyan);stroke-width:1;stroke-dasharray:3 3}
.hb-tl .todayLab{fill:var(--cyan);font-size:9.5px;font-family:Consolas,monospace;letter-spacing:.1em}
.hb-tl .lab{fill:var(--dim);font-size:10.5px}
.hb-tl .lab.hi{fill:var(--ink)}
.hb-tl .tick{stroke:var(--ink);stroke-width:1.2}
.hb-tl .msLab{fill:var(--dim);font-size:10px}
.hb-tl .ms{fill:var(--ink)}
.hb-tl .ms.inferred{fill:var(--warn)}
.hb-tl .img{fill:var(--cyan);cursor:pointer}
.hb-tl .img:hover{r:5}
.hb-tl .imgLab{fill:var(--faint);font-size:9px;font-family:Consolas,monospace}
.hb-tlkey{display:flex;gap:1.2rem;flex-wrap:wrap;font-size:.72rem;color:var(--faint);margin-top:.3rem}
.hb-tlkey i{display:inline-block;width:14px;height:8px;vertical-align:middle;margin-right:.35rem;border-radius:1px}
.hb-tlkey i.p{background:repeating-linear-gradient(135deg,rgba(147,160,184,.6) 0 1px,transparent 1px 4px);border:1px solid rgba(147,160,184,.6)}
.hb-tlkey i.a{background:var(--accent)}
.hb-tlkey i.t{width:0;height:10px;border-left:1px dashed var(--cyan)}
.hb-tlkey i.m{width:8px;height:8px;border-radius:50%;background:var(--cyan)}

/* tables — summary strip above, So-what below */
table.hb-t{border-collapse:collapse;width:100%;font-size:.88rem}
table.hb-t th{
  text-align:left;font-size:.62rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);padding:.4rem .6rem;border-bottom:1px solid rgba(231,236,245,.2);
}
table.hb-t td{padding:.5rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}
table.hb-t td.d{font-family:Consolas,'Cascadia Mono',monospace;font-size:.76rem;color:var(--dim);white-space:nowrap}
table.hb-t td.n{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
table.hb-t td.s{text-align:right;white-space:nowrap}
table.hb-t tr.me td{color:var(--ink);background:rgba(93,169,131,.06)}
table.hb-t tr.click{cursor:pointer}
table.hb-t tr.click:hover td{background:rgba(255,255,255,.03)}
.hb-sowhat{margin-top:.8rem;padding-top:.6rem;border-top:1px solid var(--line);font-size:.86rem;color:var(--dim)}
.hb-sowhat b{color:var(--ink);font-weight:600}
.inbar{display:inline-block;height:8px;background:var(--faint);border-radius:1px;vertical-align:middle;margin-right:.5rem}
tr.me .inbar{background:var(--accent)}
.inbar.neg{background:var(--ok)}

/* lists */
ul.hb-list{list-style:none}
ul.hb-list li{padding:.45rem 0;border-bottom:1px solid var(--line);font-size:.9rem;display:flex;gap:.8rem;align-items:baseline}
ul.hb-list li:last-child{border-bottom:0}
ul.hb-list .k{color:var(--dim);min-width:180px;font-size:.82rem}
ul.hb-list .prov{margin-left:auto}

/* reading (opinion) */
.hb-reading{border:1px dashed rgba(245,166,35,.45);border-radius:4px;padding:1rem 1.2rem;max-width:78ch}
.hb-reading .hb-lab{color:var(--warn)}
.hb-reading p{font-size:.95rem}

/* benchmarks — small multiples */
.hb-bench{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.hb-bench .bx{min-width:0}
.hb-bench .bx .hb-lab{color:var(--dim);margin-bottom:.5rem}
.bbar{display:flex;align-items:center;gap:.6rem;margin-top:.35rem;font-size:.78rem}
.bbar .bname{width:120px;min-width:90px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bbar.me .bname{color:var(--ink);font-weight:600}
.btrack{flex:1;height:8px;background:rgba(255,255,255,.05);border-radius:1px;overflow:hidden}
.bfill{display:block;height:100%;background:var(--faint)}
.bbar.me .bfill{background:var(--accent)}
.bval{font-family:Consolas,'Cascadia Mono',monospace;font-size:.74rem;min-width:44px;text-align:right;font-variant-numeric:tabular-nums}
.bunit{font-size:.66rem;color:var(--faint);margin-top:.4rem;line-height:1.5}

/* sources */
ol.hb-src{padding-left:1.4rem;font-size:.82rem;color:var(--dim)}
ol.hb-src li{padding:.22rem 0;scroll-margin-top:80px}
ol.hb-src li:target{color:var(--ink)}
ol.hb-src a{color:var(--accent2);text-decoration:none}
ol.hb-src a:hover{text-decoration:underline}
ol.hb-src .pub{color:var(--faint)}

/* foot */
.hb-foot{margin-top:2.4rem;padding-top:.8rem;border-top:1px solid var(--line);font-size:.74rem;color:var(--faint);line-height:1.6;max-width:90ch}

/* portfolio */
.hb-summary{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:1.3rem}
.hb-summary>div{padding:.8rem 1rem .8rem 0;border-right:1px solid var(--line);margin-right:1rem}
.hb-summary>div:last-child{border-right:0}
.hb-summary .hb-big{font-size:1.6rem}
.hb-charts{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:1.4rem}
.hb-charts .bbar .bname{width:150px}

@media (max-width:1000px){
  .hb-rail,.hb-summary{grid-template-columns:1fr 1fr}
  .hb-panels,.hb-bench,.hb-charts{grid-template-columns:1fr}
}
@media (max-width:820px){
  .hb-wrap{padding:1rem 1rem 3rem}
  .hb-band h2{font-size:1.5rem}
  .hb-rail,.hb-summary{grid-template-columns:1fr}
  .hb-rail>div,.hb-summary>div{border-right:0;border-bottom:1px solid var(--line);margin-right:0}
  .hb-rail>div:last-child,.hb-summary>div:last-child{border-bottom:0}
  ul.hb-list li{flex-wrap:wrap}
  ul.hb-list .k{min-width:0;width:100%}
  table.hb-t{font-size:.8rem}
}

.dimtxt{color:var(--faint)}
ol.hb-src li.hit{color:var(--accent2)}

/* ---------- v6: compare · benchmark · exports · print ---------- */
.hb-band h2 .vs{font-size:.55em;color:var(--dim);font-weight:300;margin:0 .35em}
.hb-pick{display:flex;gap:1.2rem;flex-wrap:wrap;align-items:center;margin-top:1rem;font-size:.8rem;color:var(--dim)}
.hb-pick label{display:flex;align-items:center;gap:.5rem}
.hb-pick code{font-family:Consolas,'Cascadia Mono',monospace;font-size:.72rem;color:var(--faint)}
.hb-pick select,.hb-form select,.hb-form input{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:4px;color:var(--ink);padding:.42rem .6rem;font:inherit;font-size:.86rem;color-scheme:dark}
.hb-pick select:focus,.hb-form select:focus,.hb-form input:focus{outline:none;border-color:var(--accent)}
.hb-cmp{display:grid;grid-template-columns:1fr 1fr;gap:2.2rem;margin-top:1.2rem}
.hb-col{min-width:0}
.hb-colhead{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:.6rem}
.hb-colhead h3{font-size:1.45rem;font-weight:300;margin:0}
.hb-strip.small{font-size:.95rem;margin-top:1rem}
.hb-panels.two{grid-template-columns:1fr 1fr}
.hb-col .hb-sec{margin-top:1.4rem}
.hb-col .bunit a{color:var(--dim)}
.hb-form{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem 1.2rem;margin-top:1.4rem;padding:1.2rem 1.3rem;border:1px solid var(--line);border-radius:4px;background:rgba(255,255,255,.015)}
.hb-f{display:flex;flex-direction:column;gap:.32rem;font-size:.74rem;color:var(--dim);min-width:0;letter-spacing:.02em}
.hb-f input,.hb-f select{width:100%}
.hb-fbtns{grid-column:1/-1;display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-top:.2rem}
.hb-form .bunit{grid-column:1/-1;margin-top:0}
.hb-strip + .hb-charts{margin-top:1.4rem}
@media (max-width:900px){.hb-cmp{grid-template-columns:1fr}.hb-form{grid-template-columns:1fr 1fr}.hb-panels.two{grid-template-columns:1fr}}
@media (max-width:600px){.hb-form{grid-template-columns:1fr}}

/* paper brief */
@media print{
  html,body{height:auto;overflow:visible;background:#fff;color:#111}
  #app{display:block}
  #sidebar,#stage>*:not(#hub){display:none!important}
  #stage{position:static}
  #hub{position:static;display:block!important;background:#fff;color:#111;overflow:visible;font-size:11.5px;line-height:1.5}
  #hub .tools,#hub .hb-legend,#hub .hb-pick,#hub .hb-fbtns,#hub .hb-form .bunit{display:none!important}
  .hb-wrap{max-width:none;padding:0}
  #hub,#hub *{color:#111!important;border-color:#bbb!important}
  .hb-strip{background:#f2f2f2;border-left-color:#333!important}
  .hb-reading{border-color:#999!important}
  .hb-tl .yr,.hb-tl .lab,.hb-tl .imgLab,.hb-tl .todayLab,.hb-tl .ms{fill:#333}
  .hb-tl .actual{fill:#5da983}
  .hb-tl .plan{stroke:#777}
  .hb-tl .today{stroke:#333}
  .bfill{background:#999}
  .bbar.me .bfill{background:#2c5a45}
  .inbar{background:#999}
  .hb-sec{break-inside:avoid}
  a[href]{text-decoration:none}
  .hb-src a[href]::after{content:" · " attr(href);font-size:.85em;color:#555}
}
