/* Layout: ECG-paper grid hero, single reading column, two-pillar split; quiet everywhere except the trace. */
:root{
  --paper:#FFFFFF; --ink:#16212B; --muted:#55626E; --line:#E3E7EB;
  --grid:#F2D9DC; --grid-major:#E8BCC2; --trace:#B3122E; --deep:#0F3B4A; --soft:#F5F7F8;
  --f-display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --f-body:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;
  --f-mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;
  --s1:.25rem; --s2:.5rem; --s3:1rem; --s4:1.5rem; --s5:2.5rem; --s6:4rem;
  --max:68rem; --read:40rem;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --paper:#0E1419; --ink:#E7ECEF; --muted:#9AA7B2; --line:#25313A;
  --grid:#2A1C20; --grid-major:#3D2328; --trace:#FF5A72; --deep:#7CC4D6; --soft:#141C22; color-scheme:dark}}
:root[data-theme="dark"]{
  --paper:#0E1419; --ink:#E7ECEF; --muted:#9AA7B2; --line:#25313A;
  --grid:#2A1C20; --grid-major:#3D2328; --trace:#FF5A72; --deep:#7CC4D6; --soft:#141C22; color-scheme:dark}

*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:400 1.0625rem/1.65 var(--f-body);-webkit-font-smoothing:antialiased}
a{color:var(--deep);text-underline-offset:3px}
a:focus-visible,button:focus-visible{outline:2px solid var(--trace);outline-offset:3px;border-radius:2px}
h1,h2,h3{font-family:var(--f-display);line-height:1.12;text-wrap:balance;margin:0;letter-spacing:-.01em}
h1{font-size:clamp(2.1rem,5.2vw,3.6rem);font-weight:700}
h2{font-size:clamp(1.5rem,3vw,2.1rem);font-weight:650}
h3{font-size:1.2rem;font-weight:650}
p{margin:0}
.wrap{max-width:var(--max);margin:0 auto;padding-inline:clamp(1rem,4vw,2rem)}
.read{max-width:var(--read)}
.eyebrow{font:500 .78rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--trace)}
.muted{color:var(--muted)}
.stack{display:flex;flex-direction:column;gap:var(--s3)}
.stack-lg{display:flex;flex-direction:column;gap:var(--s5)}

/* header */
.site-head{border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:env(safe-area-inset-top,0px);z-index:5}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);flex-wrap:wrap;padding-block:.8rem}
.brand{display:flex;align-items:center;gap:.55rem;text-decoration:none;color:var(--ink);font:700 1.2rem/1 var(--f-display)}
.brand svg{width:34px;height:20px;flex:none}
.brand small{font:500 .7rem/1 var(--f-mono);color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
nav ul{list-style:none;display:flex;gap:clamp(.8rem,2.4vw,1.6rem);margin:0;padding:0;flex-wrap:wrap}
nav a{color:var(--ink);text-decoration:none;font-weight:500;font-size:.98rem}
nav a[aria-current="page"]{color:var(--trace);box-shadow:inset 0 -2px 0 var(--trace)}
nav a:hover{color:var(--trace)}

/* hero on ECG paper */
.ecg-paper{
  background-color:var(--paper);
  background-image:
    linear-gradient(var(--grid-major) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:40px 40px,40px 40px,8px 8px,8px 8px;
  border-bottom:1px solid var(--line);
}
.hero{padding-block:clamp(2.5rem,7vw,5rem) clamp(2rem,5vw,3.5rem)}
.hero .lede{font-size:clamp(1.1rem,2vw,1.3rem);max-width:36rem;color:var(--ink)}
.hero-card{background:var(--paper);border:1px solid var(--line);padding:clamp(1.25rem,3vw,2rem);max-width:46rem;display:flex;flex-direction:column;gap:var(--s4)}
.trace{width:100%;max-width:100%;height:auto;display:block}
.trace .raw{fill:none;stroke:var(--muted);stroke-width:1.4;opacity:.55}
.trace .clean{fill:none;stroke:var(--trace);stroke-width:2.2;stroke-linejoin:round}
.trace text{font:500 11px var(--f-mono);fill:var(--muted)}
.trace-caption{font:400 .8rem/1.4 var(--f-mono);color:var(--muted)}
@media (prefers-reduced-motion:no-preference){
  .trace .clean{stroke-dasharray:1400;stroke-dashoffset:0;animation:draw 2.4s ease-out}
  @keyframes draw{from{stroke-dashoffset:1400}to{stroke-dashoffset:0}}
}

.btns{display:flex;gap:var(--s3);flex-wrap:wrap}
.btn{display:inline-block;padding:.7rem 1.15rem;font-weight:600;text-decoration:none;border:1.5px solid var(--ink);color:var(--ink);background:transparent}
.btn.primary{background:var(--ink);color:var(--paper)}
.btn:hover{border-color:var(--trace);color:var(--trace)}
.btn.primary:hover{background:var(--trace);border-color:var(--trace);color:#fff}

section.band{padding-block:clamp(2.5rem,6vw,4.5rem)}
section.band.alt{background:var(--soft);border-block:1px solid var(--line)}

/* two pillars */
.pillars{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:var(--s4)}
.pillar{border-top:3px solid var(--ink);padding-top:var(--s4);display:flex;flex-direction:column;gap:var(--s3);min-width:0}
.pillar.health{border-top-color:var(--trace)}
.pillar.academy{border-top-color:var(--deep)}
.pillar .tag{font:500 .75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.pillar ul{margin:0;padding-left:1.1rem;display:flex;flex-direction:column;gap:.35rem}
.pillar a.more{font-weight:600;margin-top:auto}

/* steps (real sequence) */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--s4);counter-reset:s}
.steps li{counter-increment:s;display:flex;flex-direction:column;gap:.5rem;min-width:0}
.steps li::before{content:"Stage " counter(s);font:500 .75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--trace)}

.facts{display:grid;grid-template-columns:max-content 1fr;gap:.5rem 1.5rem;margin:0}
.facts dt{font:500 .8rem/1.6 var(--f-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.facts dd{margin:0;min-width:0}
@media (max-width:30rem){.facts{grid-template-columns:1fr}.facts dd{margin-bottom:.6rem}}

.pubs{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.pubs li{display:grid;grid-template-columns:4.5rem 1fr;gap:var(--s3);padding-block:.8rem;border-bottom:1px solid var(--line)}
.pubs .yr{font:500 .9rem/1.6 var(--f-mono);color:var(--trace);font-variant-numeric:tabular-nums}

.notice{border-left:3px solid var(--trace);background:var(--soft);padding:var(--s3) var(--s4);font-size:.95rem}

.course{border:1px solid var(--line);background:var(--paper);padding:clamp(1.25rem,3vw,2rem);display:flex;flex-direction:column;gap:var(--s4)}
.course .meta{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{font:500 .78rem/1 var(--f-mono);border:1px solid var(--line);padding:.4rem .6rem;color:var(--muted)}
.modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:var(--s4)}
.modules > div{display:flex;flex-direction:column;gap:.4rem;min-width:0}
.modules h3{font-size:1.05rem}
.formats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--s3)}
.formats > div{border-top:1px solid var(--line);padding-top:var(--s3);display:flex;flex-direction:column;gap:.35rem;min-width:0}

.founder{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:var(--s5);align-items:start}
.contact-box{display:flex;flex-direction:column;gap:var(--s3);border:1px solid var(--line);padding:clamp(1.25rem,3vw,2rem);max-width:34rem}
.email{font:500 1.15rem/1.4 var(--f-mono);word-break:break-all;user-select:all}
.copy{font:600 .9rem var(--f-body);padding:.5rem .9rem;border:1.5px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;align-self:flex-start}

.site-foot{border-top:1px solid var(--line);padding-block:var(--s5);font-size:.9rem;color:var(--muted)}
.site-foot .wrap{display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap}
.site-foot a{color:var(--muted)}
.site-foot ul{list-style:none;margin:0;padding:0;display:flex;gap:1rem;flex-wrap:wrap}
.brand svg{width:auto;height:46px;flex:none;color:var(--ink)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* research figures */
.figure{margin:0;border:1px solid var(--line);background:var(--paper);padding:clamp(1rem,2.5vw,1.5rem);display:flex;flex-direction:column;gap:.8rem;min-width:0}
.figure figcaption{font:400 .82rem/1.45 var(--f-mono);color:var(--muted)}
.scroll{overflow-x:auto}
.pipe{min-width:700px;width:100%;height:auto;display:block}
.pipe .box{fill:var(--soft);stroke:var(--line)} .pipe .box.hl{stroke:var(--trace);stroke-width:2}
.pipe .bt{font:700 15px var(--f-display);fill:var(--ink)} .pipe .bd{font:400 12.5px var(--f-body);fill:var(--muted)}
.pipe .arrow{stroke:var(--muted);stroke-width:1.6;fill:none}
.strips{width:100%;min-width:560px;height:auto;display:block}
.strips .flag{fill:var(--trace);opacity:.12} .strips .win,.strips .sep{stroke:var(--line);stroke-width:1}
.strips .accl{fill:none;stroke:var(--deep);stroke-width:1.5} .strips .ecgl{fill:none;stroke:var(--ink);stroke-width:1.5}
.strips .lab{font:500 11px var(--f-mono);fill:var(--muted)}
.result{display:grid;grid-template-columns:auto 1fr;gap:1.5rem;align-items:center;border-top:3px solid var(--trace);padding-top:1.25rem}
@media (max-width:34rem){.result{grid-template-columns:1fr}}
.big{font:700 clamp(3rem,9vw,4.5rem)/1 var(--f-display);color:var(--trace);font-variant-numeric:tabular-nums;margin:0}
.big small{display:block;font:500 .78rem/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:.4rem}
.paper{border:1px solid var(--line);padding:clamp(1.25rem,3vw,2rem);display:flex;flex-direction:column;gap:.8rem;background:var(--paper)}
.paper h3{font-size:1.25rem}
/* journey animation + charts */
.journey{width:100%;min-width:600px;height:auto;display:block}
.journey .jflag{fill:var(--trace);opacity:.10}
.journey .jtag{font:500 11px var(--f-mono);fill:var(--trace)}
.journey .jraw{fill:none;stroke:var(--ink);stroke-width:1.4}
.journey .jacc{fill:none;stroke:var(--deep);stroke-width:1.4}
.journey .jclean{fill:none;stroke:var(--trace);stroke-width:2;stroke-dasharray:1000;stroke-dashoffset:0}
.journey .jscan{stroke:var(--trace);stroke-width:2;opacity:0}
.journey .lab{font:500 11px var(--f-mono);fill:var(--muted)}
@media (prefers-reduced-motion:no-preference){
  .journey .jscan{animation:jscan 7s linear infinite}
  .journey .jflag,.journey .jtag{animation:jflag 7s linear infinite}
  .journey .jclean{animation:jclean 7s linear infinite}
  @keyframes jscan{0%{opacity:.9;transform:translateX(0)}70%{opacity:.9;transform:translateX(760px)}71%,100%{opacity:0;transform:translateX(760px)}}
  @keyframes jflag{0%,30%{opacity:0}38%,100%{opacity:1}}
  @keyframes jclean{0%{stroke-dashoffset:1000}70%,100%{stroke-dashoffset:0}}
}
.journey .jflag{transform-box:fill-box}
.stages{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:var(--s4)}
.stage{border-top:3px solid var(--ink);padding-top:var(--s3);display:flex;flex-direction:column;gap:.6rem;min-width:0}
.stage .num{font:700 clamp(2.2rem,5vw,3rem)/1 var(--f-display);color:var(--trace);font-variant-numeric:tabular-nums}
.stage .num small{display:block;font:500 .72rem/1.35 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:.35rem}
.stage .tag{font:500 .75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.bars{width:100%;max-width:640px;height:auto;display:block}
.bars .bar{fill:var(--muted)} .bars .noisy{fill:var(--ink)} .bars .final{fill:var(--trace)}
.bars .bl{font:400 13px var(--f-body);fill:var(--ink)} .bars .bv{font:500 12px var(--f-mono);fill:var(--muted)}
.bars .ref{stroke:var(--trace);stroke-dasharray:4 4;stroke-width:1.5}
.tbl{overflow-x:auto}
.tbl table{border-collapse:collapse;min-width:420px;font-variant-numeric:tabular-nums}
.tbl th,.tbl td{text-align:left;padding:.55rem 1rem .55rem 0;border-bottom:1px solid var(--line)}
.tbl th{font:500 .75rem/1.2 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.tbl tr.me td{font-weight:600;color:var(--trace)}
.lessons{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:var(--s4)}
.lessons li{display:flex;flex-direction:column;gap:.45rem;border-top:1px solid var(--line);padding-top:var(--s3);min-width:0}
.lessons .lab{font:500 .72rem/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
/* thesis lab */
.labcv{width:100%;display:block}
.seg2{border:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;max-width:34rem;margin:0;padding:0}
.seg2 input{position:absolute;opacity:0;pointer-events:none}
.seg2 label{padding:.7rem .9rem;cursor:pointer;font-weight:600;display:flex;flex-direction:column;gap:.2rem}
.seg2 label+input+label{border-left:1px solid var(--line)}
.seg2 label small{font:500 .72rem var(--f-mono);color:var(--muted);letter-spacing:.06em}
.seg2 input:checked+label{background:var(--ink);color:var(--paper)}
.seg2 input:checked+label small{color:var(--paper);opacity:.8}
.seg2 input:focus-visible+label{outline:2px solid var(--trace);outline-offset:-3px}
.cm{font-size:.9rem}
.cm td.diag{font-weight:700;color:var(--ink)} .cm td.off{color:var(--trace);font-weight:700}
button.btn{font:inherit;font-weight:600;cursor:pointer}
