/* ===== Röst Gergely — site styles ===== */
:root{
  --bg:#070b14; --bg2:#0d1424; --card:#111a2e; --line:#1f2c47;
  --text:#dbe4f5; --muted:#8a9bbd; --accent:#4de1c1; --accent2:#7aa2ff; --warn:#ffb86b;
  --glow:0 0 24px rgba(77,225,193,.18);
  --mono:ui-monospace,"JetBrains Mono","Fira Code",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --r:14px;
}
:root[data-theme="light"]{
  --bg:#f5f7fb; --bg2:#eaeff8; --card:#fff; --line:#d5deee;
  --text:#142038; --muted:#55657f; --accent:#007d68; --accent2:#2a56d6; --warn:#b3611a;
  --glow:0 6px 24px rgba(20,32,56,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:17px/1.65 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--accent2);text-decoration:none}
a:hover{color:var(--accent)}
img{max-width:100%}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-999px}.skip:focus{left:10px;top:10px;background:var(--accent);color:#000;padding:8px 12px;border-radius:8px;z-index:99}

/* nav */
header.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(12px);background:color-mix(in srgb,var(--bg) 82%,transparent);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;gap:20px;height:60px}
.brand{font-family:var(--mono);font-weight:600;color:var(--text);letter-spacing:.02em}
.brand b{color:var(--accent)}
.nav nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.nav nav a{color:var(--muted);padding:6px 12px;border-radius:999px;font-size:15px}
.nav nav a:hover,.nav nav a[aria-current="page"]{color:var(--text);background:var(--bg2)}
#theme{background:none;border:1px solid var(--line);color:var(--muted);border-radius:999px;width:36px;height:36px;cursor:pointer;font-size:16px}
#theme:hover{color:var(--accent);border-color:var(--accent)}

/* hero */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero .wrap{position:relative;padding:64px 20px 64px;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:48px;align-items:center}
.eyebrow{font-family:var(--mono);color:var(--accent);font-size:13px;letter-spacing:.14em;text-transform:uppercase}
h1{font-size:clamp(38px,6vw,64px);line-height:1.05;margin:.2em 0 .3em;letter-spacing:-.02em}
h1 span{background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{font-size:19px;color:var(--muted);max-width:60ch}
.roles{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:8px}
.roles li{padding-left:18px;position:relative;font-size:15.5px}
.roles li:before{content:"";position:absolute;left:0;top:.7em;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent)}
.cta{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
.btn{display:inline-block;padding:10px 20px;border-radius:999px;border:1px solid var(--line);color:var(--text);font-weight:600;font-size:15px;background:var(--card)}
.btn.primary{background:var(--accent);color:#04120e;border-color:var(--accent)}
.btn:hover{border-color:var(--accent);color:var(--accent);box-shadow:var(--glow)}
.btn.primary:hover{color:#04120e;filter:brightness(1.1)}
.portrait{aspect-ratio:1/1;max-width:300px;justify-self:end;border-radius:50%;border:1px solid var(--line);background:radial-gradient(circle at 30% 30%,var(--bg2),var(--card));display:grid;place-items:center;color:var(--muted);font-family:var(--mono);font-size:13px;text-align:center;box-shadow:var(--glow);overflow:hidden}
.portrait img{width:100%;height:100%;object-fit:cover}

/* sections */
section{padding:70px 0;border-bottom:1px solid var(--line)}
section.alt{background:var(--bg2)}
h2{font-size:30px;margin:0 0 6px;letter-spacing:-.01em}
h2 .n{font-family:var(--mono);color:var(--accent);font-size:15px;margin-right:10px}
.sub{color:var(--muted);margin:0 0 30px;max-width:70ch}
.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;transition:.2s}
.card:hover{border-color:var(--accent);box-shadow:var(--glow);transform:translateY(-2px)}
.card h3{margin:.1em 0 .4em;font-size:19px}
.card p{margin:0;color:var(--muted);font-size:15.5px}
.card .eq{font-family:var(--serif);font-style:italic;color:var(--accent);font-size:20px;margin-bottom:8px;display:block}

/* simulator */
.sim{display:grid;grid-template-columns:1fr 300px;gap:24px;align-items:start}
.sim canvas{width:100%;height:340px;background:var(--card);border:1px solid var(--line);border-radius:var(--r)}
.ctrl{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;font-size:15px}
.ctrl label{display:flex;justify-content:space-between;font-family:var(--mono);font-size:13px;color:var(--muted);margin-top:14px}
.ctrl label:first-child{margin-top:0}
.ctrl input{width:100%;accent-color:var(--accent)}
.readout{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line);font-family:var(--mono);font-size:13px;color:var(--text)}
.readout b{color:var(--accent)}

/* projects timeline */
.tl{position:relative;margin-left:8px;border-left:2px solid var(--line);padding-left:26px}
.tl .item{position:relative;margin-bottom:22px}
.tl .item:before{content:"";position:absolute;left:-34px;top:8px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent)}
.tl .item.now:before{background:var(--accent);box-shadow:0 0 12px var(--accent)}
.tl .yrs{font-family:var(--mono);font-size:13px;color:var(--accent)}
.tl h3{margin:.1em 0;font-size:18px}
.tl p{margin:0;color:var(--muted);font-size:15px}
.tag{display:inline-block;font-family:var(--mono);font-size:11.5px;border:1px solid var(--line);color:var(--muted);padding:1px 8px;border-radius:999px;margin-right:6px}
.tag.live{color:var(--accent);border-color:var(--accent)}

/* teaser strip */
.strip{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}

/* footer */
footer{padding:40px 0;color:var(--muted);font-size:14px}
footer .wrap{display:flex;gap:20px;justify-content:space-between;flex-wrap:wrap}
.mono{font-family:var(--mono)}

/* ===== media page ===== */
.page-head{padding:60px 0 24px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--bg2),var(--bg))}
.stats{display:flex;gap:28px;flex-wrap:wrap;margin-top:18px;font-family:var(--mono);font-size:13px;color:var(--muted)}
.stats b{display:block;font-size:26px;color:var(--accent)}
.feat{display:grid;grid-template-columns:1.3fr 1fr;gap:26px;margin:36px 0 10px;align-items:center}
.feat .thumb{border-radius:var(--r)}
.bar{position:sticky;top:60px;z-index:20;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(10px);padding:14px 0;border-bottom:1px solid var(--line)}
.bar .wrap{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.bar input[type=search],.bar select{background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:9px 16px;font:inherit;font-size:15px;min-width:0}
.bar input[type=search]{flex:1 1 220px}
.bar input:focus,.bar select:focus{outline:2px solid var(--accent);outline-offset:1px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{background:var(--card);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:6px 14px;font-size:14px;cursor:pointer;font-family:inherit}
.chip[aria-pressed="true"]{background:var(--accent);color:#04120e;border-color:var(--accent);font-weight:600}
.chip:hover{border-color:var(--accent)}
.count{font-family:var(--mono);font-size:13px;color:var(--muted);margin:22px 0 4px}
.year{font-family:var(--mono);font-size:22px;color:var(--accent);margin:34px 0 14px;display:flex;align-items:center;gap:14px}
.year:after{content:"";flex:1;height:1px;background:var(--line)}
.mcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;transition:.2s}
.mcard:hover{border-color:var(--accent);box-shadow:var(--glow);transform:translateY(-2px)}
.thumb{position:relative;aspect-ratio:16/9;background:linear-gradient(135deg,#0f1a33,#143a3a);display:block;width:100%;border:0;padding:0;cursor:pointer;overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb .play{position:absolute;inset:0;display:grid;place-items:center}
.thumb .play i{width:58px;height:58px;border-radius:50%;background:rgba(7,11,20,.7);border:2px solid var(--accent);display:grid;place-items:center;color:var(--accent);font-style:normal;font-size:22px;padding-left:4px;transition:.2s}
.thumb:hover .play i{background:var(--accent);color:#04120e;transform:scale(1.08)}
.thumb.noimg{display:grid;place-items:center;font-family:var(--mono);color:var(--accent);font-size:34px}
.mbody{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.meta{font-family:var(--mono);font-size:12px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.mbody h3{margin:0;font-size:17px;line-height:1.35}
.mbody h3 a{color:var(--text)}.mbody h3 a:hover{color:var(--accent)}
.mbody p{margin:0;color:var(--muted);font-size:14.5px}
.mbody .links{margin-top:auto;padding-top:6px;font-size:14px;display:flex;gap:14px}
.empty{padding:60px 0;text-align:center;color:var(--muted)}
.note{border:1px dashed var(--warn);color:var(--warn);border-radius:var(--r);padding:12px 16px;font-size:14px;margin-top:30px}

/* modal */
dialog{border:1px solid var(--accent);background:#000;border-radius:var(--r);padding:0;width:min(960px,94vw);box-shadow:0 0 60px rgba(77,225,193,.25)}
dialog::backdrop{background:rgba(3,6,12,.85)}
dialog .vwrap{aspect-ratio:16/9}
dialog iframe{width:100%;height:100%;border:0;display:block}
dialog .bar2{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--card);color:var(--text);font-size:15px;gap:12px}
dialog button{background:none;border:1px solid var(--line);color:var(--text);border-radius:999px;padding:4px 14px;cursor:pointer;font:inherit}
dialog button:hover{border-color:var(--accent);color:var(--accent)}

@media(max-width:860px){
  .hero .wrap{grid-template-columns:1fr;padding-top:40px;gap:32px}
  .sim,.feat{grid-template-columns:1fr}
  .nav nav a{padding:6px 8px;font-size:14px}
  .brand{display:none}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media print{header.nav,.phase,#theme,.bar{display:none}body{background:#fff;color:#000}}



/* --- additions: old-site content --- */
.portrait img{object-position:50% 20%}
.prev{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:22px}
.prev span{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.prev img{height:44px;width:auto}
.rc{padding:0;overflow:hidden}
.rc img{width:100%;aspect-ratio:16/10;height:auto;object-fit:contain;background:#fff;padding:10px;box-sizing:border-box;display:block;border-bottom:1px solid var(--line)}
.rc>:not(img){margin-left:22px;margin-right:22px}
.rc .eq{margin-top:16px}.rc p{margin-bottom:22px}
.tblwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--card)}
.ptable{width:100%;border-collapse:collapse;font-size:15px}
.ptable th{text-align:left;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:12px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--card)}
.ptable td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--muted)}
.ptable td b{color:var(--text)}
.ptable tr:last-child td{border-bottom:0}
.ptable tr.now td:first-child{box-shadow:inset 3px 0 var(--accent)}
.ptable tr:hover td{background:var(--bg2)}
.ptable td:first-child{white-space:nowrap}.ptable td:last-child{white-space:nowrap;color:var(--accent)}
.gal{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.gal figure{margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:.2s}
.gal figure:hover{border-color:var(--accent);box-shadow:var(--glow)}
.gal button{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in}
.gal img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.gal figcaption{padding:12px 14px;font-size:14px;color:var(--muted)}
.gal figcaption b{color:var(--text)}
#lb{max-width:min(900px,94vw);background:var(--card);color:var(--text);text-align:center;padding:12px}
#lb img{max-width:100%;max-height:78vh;border-radius:8px}
#lb p{margin:8px 0 0}
details.more{position:relative}
details.more summary{list-style:none;cursor:pointer;color:var(--muted);padding:6px 12px;border-radius:999px;font-size:15px}
details.more summary::-webkit-details-marker{display:none}
details.more[open] summary,details.more summary:hover{color:var(--text);background:var(--bg2)}
details.more>div{position:absolute;right:0;top:calc(100% + 8px);min-width:190px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:8px;display:flex;flex-direction:column;box-shadow:var(--glow);z-index:60}
details.more>div a{border-radius:8px}
address a{color:var(--accent2)}

/* publications + group */
.pub{padding:16px 0;border-bottom:1px solid var(--line)}
.pub h3{margin:6px 0 4px;font-size:17px;line-height:1.35}
.pub p{margin:0;font-size:14.5px;color:var(--muted)}
.pub .au b{color:var(--text)}.pub .ve{font-style:italic}
.pub .links{margin-top:6px;font-size:14px}
.person{display:flex;gap:16px;align-items:flex-start}
.person img,.person .av{width:72px;height:72px;border-radius:50%;object-fit:cover;flex:none;border:1px solid var(--line)}
.person .av{display:grid;place-items:center;background:var(--bg2);color:var(--accent);font-family:var(--mono);font-size:22px}
.person h3{margin:0 0 2px}.person h3 a{color:var(--text)}.person h3 a:hover{color:var(--accent)}
.person p{margin:6px 0 0;font-size:14.5px}.person .now{color:var(--accent)}
[hidden]{display:none!important}

.pub .links{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.pub .doi{font-family:var(--mono);font-size:12.5px;color:var(--muted)}
a.dl{display:inline-flex;gap:6px;align-items:center;padding:4px 12px;border-radius:999px;border:1px solid var(--accent);color:var(--accent);font-size:13.5px;font-weight:600}
a.dl:hover{background:var(--accent);color:#04120e}
a.dl.oa{border-color:var(--accent2);color:var(--accent2)}a.dl.oa:hover{background:var(--accent2);color:#04120e}
a.dl.none{border-color:var(--line);color:var(--muted);font-weight:500}a.dl.none:hover{border-color:var(--accent);background:none;color:var(--accent)}

/* formulas */
.rc .eq{font-family:inherit;font-style:normal;display:block;min-height:3.1em;display:flex;align-items:center;margin:14px 22px 6px;padding:10px 14px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;color:var(--accent);overflow-x:auto;overflow-y:hidden}
.rc .eq .katex{font-size:1.25em}
.hero .eqcap .katex{font-size:1em}
.hero .eqcap{opacity:.9;color:var(--accent2)}

/* cv + teaching */
.cvnav{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}
.cvnav a{font-size:13.5px;border:1px solid var(--line);border-radius:999px;padding:4px 12px;color:var(--muted)}
.cvnav a:hover{border-color:var(--accent);color:var(--accent)}
.cvsec{padding:46px 0 6px;scroll-margin-top:70px}
.cvsec h2{font-size:26px;margin:0 0 16px}
.cvsec h2 .n,.card h3 .n{font-size:12px;color:var(--muted);font-weight:400;margin-left:8px}
.cvlist{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}
.cvlist li{display:grid;grid-template-columns:190px 1fr;gap:18px;padding:9px 0 9px 20px;position:relative;font-size:16px}
.cvlist li:before{content:"";position:absolute;left:-6px;top:17px;width:10px;height:10px;border-radius:50%;background:var(--bg);border:2px solid var(--accent)}
.cvlist .per{color:var(--accent);font-size:13px;padding-top:3px}
ul.plain{margin:0;padding-left:18px;color:var(--muted);font-size:15px}
ul.plain li{margin:3px 0}
.supgrid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.en{color:var(--muted);font-size:14px}
@media(max-width:700px){.cvlist li{grid-template-columns:1fr;gap:2px}}
@media print{.cvnav,.page-head .cta,footer{display:none}.cvlist li,.card{break-inside:avoid}.card{border-color:#ccc;background:#fff}.cvlist .per,.cvsec h2{color:#000}}

/* ---- hero v3: attractor as background on the right, text + big portrait on the left ---- */
.hero{position:relative;overflow:hidden}
.hero canvas#attractor{position:absolute;inset:0;width:100%;height:100%;opacity:1;pointer-events:none}
.hero .wrap{position:relative;display:block;padding:44px 20px 48px}
.hero .hl{max-width:610px}
.hero .id{display:flex;align-items:center;gap:28px;margin-bottom:6px}
.hero .eyebrow{white-space:nowrap;font-size:12px}
.hero h1{font-size:clamp(36px,4.8vw,60px);margin:.15em 0 0}
.portrait{margin:6px 0 6px 6px;width:196px;height:196px;max-width:none;aspect-ratio:1/1;flex:none;justify-self:auto;border:2px solid var(--line);box-shadow:0 0 0 5px var(--bg),0 0 0 6px var(--accent),var(--glow)}
.portrait img{object-position:50% 16%}
.hero .lead{margin-top:14px}
.hero .eqcap{position:absolute;right:max(20px,calc((100% - 1120px)/2 + 20px));bottom:16px;z-index:1;font-size:13px;color:var(--accent2);opacity:.9;text-align:right}
.hero .eqcap .katex{font-size:1.02em}
@media(max-width:1000px){.portrait{width:160px;height:160px}.hero .id{gap:20px}}
@media(max-width:860px){.hero .wrap{padding-top:40px}.hero canvas#attractor{opacity:.4}.portrait{width:112px;height:112px}.hero .eqcap{display:none}}

/* previous affiliations: larger monochrome logos, no boxes */
.prev{gap:22px 30px;margin-top:26px}
.prev img{height:46px;width:auto;opacity:.82;transition:.2s;filter:none}
.prev img.tall{height:50px}
:root[data-theme="light"] .prev img{filter:invert(1)}
.prev img:hover{opacity:1}
@media(max-width:860px){.prev img{height:36px}}
.prev img[src*="oxford"]{height:50px}.prev img[src*="asu"]{height:34px}.prev img[src*="york"]{height:46px}
@media(max-width:860px){.prev img[src*="oxford"]{height:40px}.prev img[src*="asu"]{height:28px}.prev img[src*="york"]{height:38px}}

/* ---- publications v2: scannable 3-column rows, journal column prominent ---- */
.yrjump{display:flex;gap:6px;flex-wrap:wrap;margin:18px 0 0}
.yrjump a{font-family:var(--mono);font-size:12.5px;border:1px solid var(--line);border-radius:999px;padding:2px 10px;color:var(--muted)}
.yrjump a:hover{border-color:var(--accent);color:var(--accent)}
.bar select#jr{max-width:260px;background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:8px 14px;font:inherit;font-size:14px}
h2.year{scroll-margin-top:130px}
h2.year .mono{font-size:12px;color:var(--muted);font-weight:400}
article.pub{display:grid;grid-template-columns:70px minmax(0,1fr) minmax(220px,300px);gap:6px 28px;padding:18px 14px;border-bottom:1px solid var(--line);border-radius:10px;align-items:start}
article.pub:hover{background:var(--card)}
article.pub .py{display:flex;flex-direction:column;font-family:var(--mono);padding-top:2px}
article.pub .py b{font-size:17px;color:var(--text);font-weight:600}
article.pub .py span{font-size:11px;color:var(--muted)}
article.pub h3{margin:0 0 5px;font-size:17.5px;line-height:1.35;font-weight:650;color:var(--text)}
article.pub .au{margin:0;font-size:14.5px;color:var(--muted);line-height:1.5}
article.pub .au b{color:var(--text)}
article.pub .pm .tag{margin-top:8px}
article.pub .pv{border-left:3px solid var(--accent);padding:2px 0 2px 16px}
article.pub .jn{font-size:16px;font-weight:700;line-height:1.3;color:var(--accent);letter-spacing:.005em}
article.pub .jd{font-family:var(--mono);font-size:13px;color:var(--text);margin-top:3px;opacity:.85}
article.pub .kind{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);border:1px solid var(--accent2);border-radius:999px;padding:0 8px;margin-bottom:6px}
article.pub .links{margin-top:10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
@media(max-width:860px){article.pub{grid-template-columns:52px minmax(0,1fr);}article.pub .pv{grid-column:2;margin-top:6px}}
@media(max-width:520px){article.pub{grid-template-columns:1fr}article.pub .py{flex-direction:row;gap:10px;align-items:baseline}article.pub .pv{grid-column:1}}

/* previous affiliations v3: label on own line, one row of larger logos */
.hero .hl{max-width:660px}
.prev{gap:16px 30px;flex-wrap:wrap}
.prev span{flex:0 0 100%}
.prev img[src*="oxford"]{height:54px}.prev img[src*="asu"]{height:34px}.prev img[src*="york"]{height:54px}
.prev img{opacity:.88}
@media(max-width:860px){.prev img[src*="oxford"]{height:42px}.prev img[src*="asu"]{height:27px}.prev img[src*="york"]{height:42px}.prev{gap:14px 22px}}

/* mobile fixes */
@media(max-width:600px){
  .hero .id{flex-direction:column;align-items:flex-start;gap:14px}
  .hero .id h1{font-size:clamp(34px,11vw,48px)}
  .portrait{width:150px;height:150px}
  #projects .tw,#projects div:has(>.ptable){overflow-x:auto}
  .ptable{min-width:0;width:100%}
  .ptable td,.ptable th{padding:8px 6px;font-size:13px}
  .ptable th:nth-child(n+3),.ptable td:nth-child(n+3){word-break:break-word}
}
@media(max-width:600px){.ptable td:first-child,.ptable td:last-child{white-space:normal}.ptable th{position:static}}

/* coloured logos: dark-tuned set in dark theme, true brand colours in light */
:root[data-theme="light"] .prev img{filter:none}
.prev img.lg-l{display:none}
:root[data-theme="light"] .prev img.lg-d{display:none}
:root[data-theme="light"] .prev img.lg-l{display:block}
.prev img{opacity:1}

/* ===== Publications v3: sidebar + compact bibliography ===== */
.pbpage{padding-top:34px;padding-bottom:60px}
.pb-top{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin-bottom:26px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.pb-h1{margin:4px 0 0;font-size:clamp(34px,5vw,52px);line-height:1.05;background:linear-gradient(90deg,var(--accent),var(--accent2,#7aa2ff));-webkit-background-clip:text;background-clip:text;color:transparent}
.pb-stats{display:flex;gap:28px;font-family:var(--mono);font-size:12px;color:var(--muted)}
.pb-stats div{display:flex;flex-direction:column}.pb-stats b{font-size:26px;color:var(--accent);line-height:1.1}
.pb-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:40px;align-items:start}
.pb-side{position:sticky;top:76px;max-height:calc(100vh - 90px);overflow:auto;display:flex;flex-direction:column;gap:14px;padding-right:4px}
.pb-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.pb-box>summary{cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);list-style:none;margin-bottom:2px}
.pb-box>summary::-webkit-details-marker{display:none}
.pb-box[open]>summary{margin-bottom:10px}
.pb-box input[type=search]{width:100%;box-sizing:border-box;padding:9px 12px;border-radius:9px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit;font-size:14px}
.pb-tp{display:flex;flex-direction:column;gap:2px;margin:10px 0}
.pb-tp .chip{display:flex;justify-content:space-between;border:0;background:transparent;border-radius:8px;padding:6px 10px;text-align:left;font-size:14px}
.pb-tp .chip i,.pb-jl i{font-style:normal;font-family:var(--mono);font-size:12px;color:var(--muted)}
.pb-tp .chip[aria-pressed=true]{background:var(--accent);color:#04201a}.pb-tp .chip[aria-pressed=true] i{color:inherit}
.pb-chk{display:flex;gap:8px;align-items:center;font-size:14px;color:var(--text);margin:6px 2px 10px}
.pb-btn,.pb-bar .mini{cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--text);border-radius:9px;padding:8px 12px;font:inherit;font-size:13px;width:100%}
.pb-btn:hover{border-color:var(--accent);color:var(--accent)}
.pb-yrs{display:flex;flex-wrap:wrap;gap:6px}
.pb-yrs a{font-family:var(--mono);font-size:12px;padding:4px 8px;border-radius:7px;border:1px solid var(--line);color:var(--muted);text-decoration:none}
.pb-yrs a:hover{border-color:var(--accent);color:var(--accent)}
.pb-jl{display:flex;flex-direction:column;max-height:300px;overflow:auto;gap:1px}
.pb-jl button{all:unset;cursor:pointer;display:flex;justify-content:space-between;gap:10px;font-size:13px;line-height:1.3;padding:5px 8px;border-radius:7px;color:var(--text)}
.pb-jl button:hover{background:var(--bg2)}
.pb-jl button[aria-pressed=true]{background:var(--accent);color:#04201a}.pb-jl button[aria-pressed=true] i{color:inherit}
.pb-bar{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:12px;color:var(--muted);margin-bottom:6px;min-height:30px}
.pb-bar .mini{width:auto;padding:4px 10px;font-size:12px}
.pb-y{position:sticky;top:60px;z-index:5;display:flex;align-items:baseline;gap:10px;margin:22px 0 0;padding:10px 0 8px;background:var(--bg);font-size:26px;color:var(--text);border-bottom:2px solid var(--accent)}
.pb-y span{font-family:var(--mono);font-size:12px;color:var(--muted);font-weight:400}
.pb{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:6px 14px;padding:18px 0;border-bottom:1px solid var(--line)}
.pb:hover{background:linear-gradient(90deg,transparent,var(--bg2) 30%,var(--bg2) 70%,transparent)}
.pb-n{font-family:var(--mono);font-size:12px;color:var(--muted);padding-top:4px;text-align:right}
.pb-m h3{margin:0 0 4px;font-size:18px;line-height:1.35;font-weight:650}
.pb-m h3 a{color:var(--text);text-decoration:none}.pb-m h3 a:hover{color:var(--accent)}
.pb-a{margin:0 0 7px;font-size:14.5px;line-height:1.5;color:var(--muted)}.pb-a b{color:var(--text)}
.pb-j{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:15px}
.pb-j .jn{color:var(--accent);font-weight:700;font-size:16px}
.pb-j .jd{font-family:var(--mono);font-size:13px;color:var(--muted)}.pb-j .jd b{color:var(--text)}
.pb-j .kind{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--line);border-radius:6px;padding:2px 7px;color:var(--muted)}
.pb-x{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:112px}
.pb-x .dl{justify-content:center}
.pb-x a.doi{display:none}
.pb-x .mini{cursor:pointer;border:1px solid transparent;background:transparent;color:var(--muted);font-family:var(--mono);font-size:11px;padding:3px;border-radius:7px}
.pb-x .mini:hover{color:var(--accent);border-color:var(--line)}
.pb-none{font-size:13px;color:var(--muted)}
@media(max-width:900px){
  .pb-layout{grid-template-columns:1fr;gap:16px}
  .pb-side{position:static;max-height:none;overflow:visible}
  .pb-box:nth-child(n+2)[open]{}
  .pb-y{top:52px}
}
@media(max-width:560px){
  .pb{grid-template-columns:1fr;gap:8px}
  .pb-n{text-align:left;order:3;padding:0}
  .pb-x{flex-direction:row;align-items:center;min-width:0}
  .pb-m h3{font-size:17px}
}
.pb-main{padding:0!important;margin:0}.pb-side{scrollbar-width:thin}

/* Publications v4: no sidebar, top toolbar */
.pb-tool{position:sticky;top:60px;z-index:8;background:var(--bg);padding:10px 0 12px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.pb-row{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:center}
.pb-row input[type=search]{flex:1 1 260px;min-width:0;box-sizing:border-box;padding:9px 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--text);font:inherit;font-size:14px}
.pb-row select{flex:1 1 240px;max-width:380px;padding:9px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--text);font:inherit;font-size:14px}
.pb-row .pb-chk{margin:0;white-space:nowrap}
.pb-row .pb-btn{width:auto;border-radius:999px;padding:8px 16px}
.pb-row .pb-tp{flex-direction:row;flex-wrap:wrap;margin:0;gap:6px}
.pb-row .pb-tp .chip{border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13px;gap:8px}
.pb-row .pb-yrs{margin-left:auto;gap:4px}
.pb-row .pb-yrs a{padding:3px 7px;font-size:11.5px}
.pb-y{top:auto;position:static}
.pb-bar{margin-top:10px}
@media(max-width:700px){.pb-tool{position:static}.pb-row .pb-yrs{margin-left:0}.pb-row select{max-width:none}}
.pb-row select{width:100%;min-width:0;flex:1 1 240px;max-width:380px;text-overflow:ellipsis}
.pb-row .pb-yrs{margin-left:0;flex:1 0 100%}
@media(max-width:700px){.pb-row select{max-width:100%;flex-basis:100%}.pb-row input[type=search]{flex-basis:100%}}

/* hero tagline: larger, no slashes */
.hero .eyebrow{font-size:clamp(17px,2.2vw,22px);letter-spacing:.1em;white-space:normal;margin-bottom:4px}
@media(min-width:601px){.hero .eyebrow{font-size:20px;letter-spacing:.05em;white-space:nowrap}}
.pb-d{margin:6px 0 0;font-family:var(--mono);font-size:12.5px;word-break:break-all}
.pb-d a{color:var(--muted);text-decoration:none;border-bottom:1px dotted var(--line)}
.pb-d a:hover{color:var(--accent);border-bottom-color:var(--accent)}
.brand .katex{font-size:1.08em}.brand b .katex{color:var(--accent)}.brand{display:inline-flex;align-items:center;gap:.35em}

/* media thumbnails: image over a coloured placeholder (placeholder shows if image is missing/blocked) */
.thumb{isolation:isolate}
.thumb .ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:14px;text-align:center;background:linear-gradient(135deg,hsl(var(--h) 45% 16%),hsl(calc(var(--h) + 40) 45% 24%));color:hsl(var(--h) 80% 78%)}
.thumb .ph b{font:600 34px/1 var(--mono);opacity:.9}.thumb .ph em{font-style:normal;font:600 13px/1.25 var(--mono);letter-spacing:.04em;max-width:90%}
.thumb img{position:absolute;inset:0;z-index:1}.thumb .play{z-index:2}
:root[data-theme="light"] .thumb .ph{background:linear-gradient(135deg,hsl(var(--h) 55% 88%),hsl(calc(var(--h) + 40) 55% 78%));color:hsl(var(--h) 60% 28%)}
.thumb.noimg{font-size:inherit}
.thumb:has(.play) .ph{justify-content:flex-end;padding-bottom:16px}.thumb:has(.play) .ph b{display:none}

/* Home dropdown */
.dd{position:relative;display:inline-flex;align-items:center}
.dd>a{padding-right:2px}
.dd-b{background:none;border:0;color:var(--muted);cursor:pointer;font-size:13px;padding:6px 8px 6px 2px;border-radius:999px}
.dd:hover .dd-b,.dd-b:hover{color:var(--text)}
.dd-m{display:none;position:absolute;left:0;top:100%;padding-top:8px;min-width:190px;z-index:60}
.dd-m::before{content:"";position:absolute;left:0;right:0;top:8px;bottom:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--glow);z-index:-1}
.dd-m a{display:block;padding:8px 14px;border-radius:8px;position:relative}
.dd:hover .dd-m,.dd:focus-within .dd-m,.dd.open .dd-m{display:flex;flex-direction:column}
.dd-m{padding:12px 8px 8px}.dd-m::before{top:6px}
@media(max-width:860px){.nav .wrap{height:auto;min-height:60px;padding-top:6px;padding-bottom:6px}.nav nav{margin-left:0;flex:1}.nav nav{justify-content:flex-start}.dd-m{top:100%}}

/* Larger member photos */
.person{gap:18px}
.person img,.person .av{width:132px;height:132px;border-radius:14px}
.person .av{font-size:36px}
@media(max-width:520px){.person img,.person .av{width:104px;height:104px}}
.person{flex-direction:column;align-items:center;text-align:center;gap:14px}
.person img,.person .av{width:180px;height:180px;border-radius:16px}
.person .av{font-size:48px}
@media(max-width:520px){.person img,.person .av{width:150px;height:150px}}
