/* AHA — custom layer over Bulma (academic template). Teal on light + a dark findings band. */
:root{
  --ink:#162423; --body:#33403f; --dim:#687776; --faint:#95a3a2;
  --teal:#ea7278; --teal-d:#d1515c; --teal-b:#ef8b90; --teal-soft:#fdeef0;
  --line:#e3eae9; --panel:#ffffff; --soft:#f3f8f7; --ink-band:#0e1518; --band-line:#243236;
  --hi:#ea7278; --hi-bg:#fdedee; --hi-bd:#f6d3d5;
  --med:#a9711f; --med-bg:#f8f1e3; --med-bd:#ecdcbf;
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --sans:"Inter",ui-sans-serif,-apple-system,"Segoe UI",Roboto,sans-serif;
}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--body);background:#fff}
.section{padding:3.2rem 1.5rem}
a{color:var(--teal)}
a:hover{color:var(--teal-d)}
strong{color:var(--ink)}
.title,.subtitle{font-family:var(--sans)}
.title{color:var(--ink);letter-spacing:-.015em}
.mono{font-family:var(--mono)}

/* ---- hero ---- */
.hero.aha-hero{background:linear-gradient(180deg,var(--soft),#fff)}
.publication-title{font-weight:800;letter-spacing:-.03em;line-height:1.03}
.aha-subtitle{font-size:1.18rem;color:var(--dim);font-weight:500;margin-top:.3rem;letter-spacing:.005em}
.aha-kicker{font-family:var(--mono);font-size:.8rem;letter-spacing:.24em;text-transform:uppercase;color:var(--teal);margin-bottom:.4rem}
.aha-tag{display:inline-block;font-family:var(--mono);font-size:.72rem;font-weight:700;letter-spacing:.06em;color:#fff;background:var(--teal);border-radius:5px;padding:.15rem .5rem;vertical-align:.32em;margin-left:.5rem}
.publication-authors{margin-top:.4rem}
.author-block a{color:var(--ink);font-weight:600}
.aha-affil{color:var(--dim);font-size:1rem;margin-top:.15rem}
.publication-links{margin-top:1.3rem}
.publication-links .button.is-dark{background:var(--ink);border-color:var(--ink);transition:.15s}
.publication-links .button.is-dark:hover{background:var(--teal);border-color:var(--teal)}
.publication-links .button.is-teal{background:var(--teal);border-color:var(--teal);color:#fff}
.publication-links .button.is-teal:hover{background:var(--teal-d);border-color:var(--teal-d)}
.aha-caution{margin-top:1.2rem;display:inline-block;font-size:.8rem;font-weight:600;color:#ea7278;background:rgba(234,114,120,.09);border:1px solid rgba(234,114,120,.34);border-radius:8px;padding:.42rem .85rem}
.aha-caution i{color:#ea7278}
.aha-caution a{color:#ea7278;text-decoration:underline}

/* ---- teaser ---- */
.teaser figure{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 12px 40px rgba(20,40,42,.07)}
.teaser img{display:block;width:100%}
.teaser figcaption{font-family:var(--mono);font-size:.74rem;color:var(--dim);padding:.6rem 1rem;border-top:1px solid var(--line);text-align:center;background:var(--soft)}

/* ---- stat strip ---- */
.statstrip{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.statstrip .cell{background:#fff;padding:1.1rem .8rem;text-align:center}
.statstrip .n{font-family:var(--mono);font-weight:800;font-size:1.55rem;color:var(--teal);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.statstrip .l{font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-top:.35rem}
@media(max-width:760px){.statstrip{grid-template-columns:repeat(2,1fr)}}

/* ---- paper figures ---- */
.pfig{background:#fff;border:1px solid var(--line);border-radius:12px;padding:1rem;box-shadow:0 2px 10px rgba(20,40,42,.04);margin:1.5rem auto 0;max-width:62rem}
.pfig img{display:block;width:100%;height:auto}
.pfig figcaption{font-size:.82rem;color:var(--dim);margin-top:.7rem;text-align:center;line-height:1.5}
.pfig figcaption b{color:var(--ink)}
.pfig-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;max-width:62rem;margin:1.5rem auto 0}
@media(max-width:760px){.pfig-row{grid-template-columns:1fr}}
.pfig-row .pfig{margin:0;max-width:none}
.anti-silo{max-width:54rem;margin:1.8rem auto 0;text-align:center;font-size:1.05rem;color:var(--ink);font-weight:600;line-height:1.5}
.anti-silo em{color:var(--teal-d);font-style:normal}

/* ---- section eyebrow ---- */
.eyebrow{font-family:var(--mono);font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--teal);text-align:center;margin-bottom:.4rem}
.lead{color:var(--dim);max-width:52rem;margin:0 auto 2rem;text-align:center}

/* ---- concept marquee (featured VC records) ---- */
.vc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;max-width:64rem;margin:1.6rem auto 0}
@media(max-width:900px){.vc-grid{grid-template-columns:1fr}}
.vc{border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:10px;background:#fff;padding:1rem 1.1rem;box-shadow:0 2px 10px rgba(20,40,42,.04)}
.vc .id{font-family:var(--mono);font-size:.7rem;color:var(--teal);letter-spacing:.06em}
.vc .nm{font-weight:750;color:var(--ink);font-size:1rem;margin:.15rem 0 .5rem;line-height:1.25}
.vc .row{font-size:.82rem;line-height:1.5;margin:.35rem 0}
.vc .row .lbl{font-family:var(--mono);font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);display:block}
.vc .row.why{color:var(--body)}
.vc .row.when{color:var(--dim)}
.vc .reach{font-family:var(--mono);font-size:.72rem;color:var(--teal);margin-top:.6rem;border-top:1px solid var(--line);padding-top:.5rem}

/* ---- "one concept, many harms" bridge ---- */
.bridge{max-width:50rem;margin:2rem auto 0;background:var(--teal-soft);border:1px solid var(--line);border-radius:12px;padding:1.3rem 1.5rem;text-align:center}
.bridge .big{font-size:1.1rem;color:var(--ink);font-weight:650;line-height:1.45}
.bridge .big em{color:var(--teal-d);font-style:normal}
.bridge p{font-size:.85rem;color:var(--dim);margin-top:.5rem}

/* ---- harm panels (secondary: what the concepts cause) ---- */
.scn-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;max-width:64rem;margin:0 auto}
@media(max-width:900px){.scn-grid{grid-template-columns:1fr}}
.scn{border:1px solid var(--line);border-radius:12px;background:var(--soft);overflow:hidden;display:flex;flex-direction:column}
.scn header{padding:.85rem 1rem .7rem;border-bottom:1px solid var(--line)}
.scn header .nm{font-weight:750;color:var(--ink);font-size:1rem}
.scn header .agent{font-family:var(--mono);font-size:.68rem;color:var(--dim);margin-top:.1rem}
.scn .harms{list-style:none;margin:0;padding:.6rem 1rem .9rem;columns:1}
.scn .harms li{padding:.3rem 0 .3rem 1rem;position:relative;font-size:.82rem;line-height:1.45;color:var(--body)}
.scn .harms li::before{content:"›";position:absolute;left:0;color:var(--teal);font-weight:700}
.scn .harms li.worst{color:var(--hi);font-weight:600}

/* ---- dark findings band (severity wall) ---- */
.band{background:var(--ink-band);color:#c2d1d4}
.band .eyebrow{color:var(--teal-b)}
.band .title{color:#eaf2f3}
.band .lead{color:#8fa1a3}
.tools{display:flex;gap:.9rem;align-items:center;flex-wrap:wrap;max-width:60rem;margin:0 auto 1rem}
.search{flex:1;min-width:16rem;display:flex;align-items:center;gap:.6rem;background:#141e22;border:1px solid var(--band-line);border-radius:9px;padding:0 .85rem}
.search span{font-family:var(--mono);color:#7f9297}
.search input{flex:1;background:none;border:0;outline:0;color:#dfe8e9;font-size:.95rem;padding:.65rem 0;font-family:var(--sans)}
.search input::placeholder{color:#5b6d70}
.legend{font-family:var(--mono);font-size:.74rem;color:#8fa1a3;display:flex;gap:.9rem}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%}
.dot.hi{background:#ea7278}.dot.med{background:#d1953f}
.wallwrap{max-width:62rem;margin:0 auto;border:1px solid var(--band-line);border-radius:12px;overflow-x:auto;background:#121b1f}
table.wall{width:100%;border-collapse:collapse;font-size:.92rem;min-width:44rem}
table.wall thead th{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:#7f9297;text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--band-line);font-weight:500}
table.wall thead th.num{text-align:center}
table.wall tr.grp td{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--teal-b);padding:1rem 1rem .5rem;background:#0e1518}
table.wall tbody tr.row{border-top:1px solid var(--band-line)}
table.wall tbody tr.row:hover{background:rgba(239,139,144,.09)}
table.wall td{padding:.8rem 1rem;vertical-align:middle}
table.wall td.num b{font-family:var(--mono);color:var(--teal-b);font-size:1rem;font-variant-numeric:tabular-nums}
.vic{color:#eaf2f3;white-space:nowrap;display:flex;align-items:center;gap:.55rem;font-weight:600}
.chip{width:23px;height:23px;border-radius:6px;display:grid;place-items:center;font-family:var(--mono);font-size:9.5px;font-weight:700;color:#fff;flex:none}
.agent{color:#8fa1a3;font-size:.85rem;white-space:nowrap}
.sev{font-family:var(--mono);font-size:.7rem;font-weight:600;display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .55rem;border-radius:20px;white-space:nowrap}
.sev.hi{color:#ea7278;background:rgba(234,114,120,.13);border:1px solid rgba(234,114,120,.3)}
.sev.med{color:#d1953f;background:rgba(209,149,63,.13);border:1px solid rgba(209,149,63,.32)}
.out b{color:#eaf2f3;font-weight:650}
.harmcell{display:flex;flex-wrap:wrap;gap:5px;max-width:36rem}
.htag{font-family:var(--mono);font-size:.66rem;color:#a7c4c2;background:rgba(234,114,120,.1);border:1px solid var(--band-line);border-radius:5px;padding:2px 7px;white-space:nowrap;line-height:1.5}
.htag.sev{color:#ea7278;background:rgba(234,114,120,.12);border-color:rgba(234,114,120,.3)}
.go{font-family:var(--mono);color:var(--teal-b);font-size:.78rem;white-space:nowrap}
.go:hover{color:#f2a1a5;text-decoration:underline}

/* ---- mechanism families ---- */
.fam-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem;max-width:64rem;margin:0 auto}
@media(max-width:900px){.fam-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.fam-grid{grid-template-columns:1fr}}
.fam{border:1px solid var(--line);border-radius:12px;padding:1.05rem 1rem;background:#fff;transition:.18s;box-shadow:0 2px 8px rgba(20,40,42,.04)}
.fam:hover{border-color:var(--teal);transform:translateY(-2px)}
.fam.core{background:linear-gradient(180deg,var(--teal-soft),#fff)}
.fam .fn{font-weight:700;color:var(--ink);font-size:.98rem;display:flex;align-items:center;gap:.5rem}
.core-tag{font-family:var(--mono);font-size:.56rem;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--teal);border-radius:4px;padding:.1rem .35rem;font-weight:700}
.fam p{font-size:.83rem;color:var(--body);margin:.5rem 0 .8rem;min-height:3.4rem}
.cov{font-family:var(--mono);font-size:.7rem;color:var(--dim);display:flex;justify-content:space-between;margin-bottom:.35rem}
.cov b{color:var(--teal)}
.track{height:4px;background:var(--soft);border-radius:3px;overflow:hidden}
.fill{height:100%;background:var(--teal)}

/* ---- demo console ---- */
.demo{display:grid;grid-template-columns:1.15fr 1fr;gap:1.3rem;align-items:stretch;max-width:62rem;margin:0 auto}
@media(max-width:820px){.demo{grid-template-columns:1fr}}
.console{background:var(--ink-band);border:1px solid var(--band-line);border-radius:12px;overflow:hidden;box-shadow:0 12px 40px rgba(20,40,42,.1)}
.console .top{display:flex;align-items:center;gap:.45rem;padding:.7rem .9rem;border-bottom:1px solid var(--band-line);background:#141e22}
.console .top i{width:10px;height:10px;border-radius:50%;background:#3a4a4d;display:block}
.console .top span{margin-left:.5rem;font-family:var(--mono);font-size:.72rem;color:#7f9297}
.log{font-family:var(--mono);font-size:.78rem;line-height:1.85;padding:1rem;min-height:15rem;color:#c2d1d4}
.log .ln{white-space:pre-wrap}
.log .k{color:var(--teal-b)}.log .d{color:#7f9297}.log .ok{color:#ef8b90;font-weight:600}.log .hit{color:#ea7278;font-weight:600}
.demo .aside{display:flex;flex-direction:column;justify-content:center;gap:1rem}
.demo .aside .big{font-size:1.15rem;color:var(--ink);font-weight:650;line-height:1.4}
.demo .aside p{color:var(--body)}
.pill{align-self:flex-start;font-family:var(--mono);font-size:.72rem;color:var(--teal);background:var(--teal-soft);border:1px solid var(--line);border-radius:20px;padding:.2rem .7rem}

/* ---- validation table ---- */
.vtable{width:100%;max-width:52rem;margin:0 auto;border-collapse:collapse;font-family:var(--mono);font-size:.86rem;font-variant-numeric:tabular-nums}
.vtable th,.vtable td{padding:.6rem .8rem;text-align:center;border-bottom:1px solid var(--line)}
.vtable th:first-child,.vtable td:first-child{text-align:left;color:var(--body)}
.vtable thead th{color:var(--dim);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:500}
.vtable .win{color:var(--teal);font-weight:700}
.vtable .base{color:var(--dim)}
.vnote{max-width:52rem;margin:1rem auto 0;font-size:.85rem;color:var(--dim);text-align:center}

/* ---- our role ---- */
.role{max-width:48rem;margin:0 auto}
.role p{margin-bottom:.9rem;line-height:1.65}
.role .rlead{font-size:1.08rem;color:var(--ink);font-weight:600}

/* ---- bibtex ---- */
.bibtex-header{display:flex;align-items:center;gap:1rem}
.copy-bibtex-btn{margin-left:auto;border:1px solid var(--line);background:#fff;color:var(--dim);border-radius:7px;padding:.35rem .75rem;font-size:.82rem;cursor:pointer}
.copy-bibtex-btn:hover{color:var(--teal);border-color:var(--teal)}
#BibTeX pre{background:var(--soft);border:1px solid var(--line);border-radius:10px;font-family:var(--mono);font-size:.82rem}
.footer{background:var(--soft);border-top:1px solid var(--line)}
.footer .content{font-size:.85rem;color:var(--dim)}

/* ---- interactive casebook explorer (dark band) ---- */
.filters{display:flex;flex-wrap:wrap;gap:.8rem 1.4rem;align-items:center;justify-content:center;max-width:62rem;margin:0 auto 1rem}
.fgroup{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap}
.fgroup .flabel{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:#6d8286;margin-right:.15rem}
.fchip{font-family:var(--mono);font-size:.72rem;color:#a7c4c2;background:#141e22;border:1px solid var(--band-line);border-radius:20px;padding:.25rem .7rem;cursor:pointer;transition:.15s}
.fchip:hover{border-color:var(--teal-b);color:#dfe8e9}
.fchip.on{background:var(--teal);border-color:var(--teal);color:#fff}
.fgroup-fam{flex-basis:100%;justify-content:center}
.vc-fam{font-family:var(--mono);font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;color:#e0989d;background:rgba(234,114,120,.08);border:1px solid var(--band-line);border-radius:5px;padding:1px 6px;white-space:nowrap}
.fcount{text-align:center;font-family:var(--mono);font-size:.72rem;color:#7f9297;margin:0 0 1.3rem}
.cellgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem;max-width:64rem;margin:0 auto}
@media(max-width:820px){.cellgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.cellgrid{grid-template-columns:1fr}}
.cellcard{text-align:left;background:#141e22;border:1px solid var(--band-line);border-radius:12px;padding:1rem 1.05rem;cursor:pointer;transition:.16s;color:inherit;font:inherit;display:flex;flex-direction:column;gap:.65rem}
.cellcard:hover{border-color:var(--teal-b);transform:translateY(-3px);box-shadow:0 12px 30px rgba(0,0,0,.3)}
.cc-top{display:flex;align-items:center;gap:.5rem}
.cc-vic{color:#eaf2f3;font-weight:600;font-size:.92rem}
.cc-scn{margin-left:auto;font-family:var(--mono);font-size:.6rem;letter-spacing:.07em;text-transform:uppercase;color:var(--teal-b)}
.cc-mid{font-family:var(--mono);font-size:.76rem;color:#8fa1a3;display:flex;align-items:baseline;gap:.4rem}
.cc-mid .cc-n{color:var(--teal-b);font-weight:700;font-size:1.1rem}
.cc-harms{display:flex;flex-wrap:wrap;gap:4px}
.cc-more{font-family:var(--mono);font-size:.66rem;color:#6d8286;align-self:center}
.cc-cta{font-family:var(--mono);font-size:.72rem;color:var(--teal-b);margin-top:auto}
.cellcard:hover .cc-cta{color:#f2a1a5}
.viewtoggle{display:flex;justify-content:center;gap:.4rem;margin:0 auto 1.1rem}
.vt{font-family:var(--mono);font-size:.74rem;letter-spacing:.02em;color:#a7c4c2;background:#141e22;border:1px solid var(--band-line);border-radius:8px;padding:.42rem .95rem;cursor:pointer;transition:.15s}
.vt:hover{border-color:var(--teal-b);color:#dfe8e9}
.vt.on{background:var(--teal);border-color:var(--teal);color:#fff}
.famcard .cc-scn{margin-left:0}
.fam-nm{color:#eaf2f3;font-weight:700;font-size:1.12rem;line-height:1.22}
.vc-set{text-transform:none;letter-spacing:.01em;color:#c7d6d7;white-space:normal}
.cbempty{grid-column:1/-1;text-align:center;color:#7f9297;font-family:var(--mono);font-size:.85rem;padding:2rem}

/* drawer */
.drawer{position:fixed;inset:0;z-index:200;display:flex;justify-content:flex-end}
.drawer[hidden]{display:none}
.drawer-bg{position:absolute;inset:0;background:rgba(6,12,14,.62)}
.drawer-panel{position:relative;width:min(580px,94vw);height:100%;background:#0e1518;border-left:1px solid var(--band-line);overflow-y:auto;padding:1.5rem 1.6rem 4rem;box-shadow:-24px 0 70px rgba(0,0,0,.45);animation:dwin .22s ease}
@keyframes dwin{from{transform:translateX(24px);opacity:.5}to{transform:none;opacity:1}}
.drawer-close{position:absolute;top:.9rem;right:1rem;background:none;border:0;color:#8fa1a3;font-size:1.6rem;cursor:pointer;line-height:1}
.drawer-close:hover{color:#eaf2f3}
.dw-scn{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--teal-b)}
.dw-vic{display:flex;align-items:center;gap:.55rem;color:#eaf2f3;font-size:1.25rem;font-weight:750;margin:.3rem 0 .1rem}
.dw-meta{font-family:var(--mono);font-size:.74rem;color:#8fa1a3;margin-bottom:.9rem}
.dw-harms{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:.4rem}
.dw-cnt{font-family:var(--mono);font-size:.7rem;color:#6d8286;margin:1.1rem 0 .2rem;letter-spacing:.06em;text-transform:uppercase}
.vc-item{border-top:1px solid var(--band-line);padding:.95rem 0}
.vc-h{display:flex;gap:.5rem;align-items:baseline;margin-bottom:.45rem;flex-wrap:wrap}
.vc-id{font-family:var(--mono);font-size:.64rem;color:var(--teal-b);white-space:nowrap;background:rgba(234,114,120,.1);border:1px solid var(--band-line);border-radius:5px;padding:1px 6px}
.vc-nm{color:#eaf2f3;font-weight:650;font-size:1rem;line-height:1.25}
.vc-f{font-size:.84rem;line-height:1.56;color:#b0c0c2;margin:.4rem 0}
.vc-f .lbl{font-family:var(--mono);font-size:.58rem;letter-spacing:.09em;text-transform:uppercase;color:#5f7377;display:block;margin-bottom:.12rem}
.vc-f.why{color:#d0dcdd}
.vc-f.ev{color:#8fa1a3;font-size:.78rem}
.dw-link{display:inline-block;margin-top:1.4rem;font-family:var(--mono);font-size:.76rem;color:var(--teal-b)}
body.noscroll{overflow:hidden}
/* clickable harm chips → jump to concepts */
.dw-harms .hchip{cursor:pointer;font-family:var(--mono);font-size:.66rem;line-height:1.5;margin:0}
.dw-harms .hchip:hover{border-color:var(--teal-b);color:#eaf2f3}
.dw-harms .hchip.active{background:var(--teal);border-color:var(--teal);color:#fff}
.dw-hint{color:#5f7377;font-family:var(--mono);font-size:.6rem;text-transform:none;letter-spacing:0}
.dw-filternote{font-family:var(--mono);font-size:.72rem;color:#8fa1a3;margin:.1rem 0 .5rem}
.dw-filternote[hidden]{display:none}
.dw-filternote b{color:var(--teal-b)}
.dw-filternote .clr{cursor:pointer;color:#ea7278;margin-left:.5rem}
.vc-item{transition:opacity .15s}
.vc-item.dim{opacity:.28}
.vc-item.hit{border-left:2px solid var(--teal-b);margin-left:-.85rem;padding-left:.85rem}
