/* ==========================================================================
   lucalongo.eu — site.css
   One stylesheet for every page. Nothing here is page specific.
   ========================================================================== */

:root{
  --paper:#FFFFFF;
  --panel:#F1F6FC;
  --ink:#121B27;
  --body:#121B27;
  --mute:#526376;
  --accent:#1349A6;
  --accent-dark:#0E387F;
  --accent-soft:#E6EEFA;
  --rule:#D7E0ED;
  --deep:#0F2038;
  --side:334px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--paper);
  color:var(--body);
  font:400 17.5px/1.72 Newsreader,Georgia,"Times New Roman",serif;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:-9999px}
.skip:focus{left:14px;top:14px;z-index:60;background:var(--accent);color:#fff;padding:9px 14px;
  font:500 14px/1 Barlow,system-ui,sans-serif;text-decoration:none}


/* ---------- dark reading ------------------------------------------------ */
/* The same seven tokens, restated. Nothing else in the stylesheet changes. */
:root[data-theme="dark"]{
  --paper:#0E141B;
  --panel:#151D27;
  --ink:#E9F0F8;
  --body:#D5DFEA;
  --mute:#93A4B7;
  --accent:#7CB0F5;
  --accent-dark:#A9C9FA;
  --accent-soft:#1A2634;
  --rule:#26323F;
  --deep:#070B10;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#0E141B;
    --panel:#151D27;
    --ink:#E9F0F8;
    --body:#D5DFEA;
    --mute:#93A4B7;
    --accent:#7CB0F5;
    --accent-dark:#A9C9FA;
    --accent-soft:#1A2634;
    --rule:#26323F;
    --deep:#070B10;
  }
}
:root[data-theme="dark"] .brand-img,
:root[data-theme="dark"] .member .portrait{background:#1C2836}
:root[data-theme="dark"] .logos img,
:root[data-theme="dark"] .badges img,
:root[data-theme="dark"] .profiles img{background:#fff;padding:3px;border-radius:2px}
:root[data-theme="dark"] .lab-logo{background:#fff;padding:10px;border-radius:3px}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .logos img,
  :root:not([data-theme="light"]) .badges img,
  :root:not([data-theme="light"]) .profiles img{background:#fff;padding:3px;border-radius:2px}
  :root:not([data-theme="light"]) .lab-logo{background:#fff;padding:10px;border-radius:3px}
}
:root[data-theme="dark"] .facade-tag{color:#fff}

/* ---------- the theme switch -------------------------------------------- */
.theme{margin:16px 0 0 auto;display:flex;align-items:center;justify-content:center;gap:8px;flex:none;
  width:44px;height:38px;padding:0;cursor:pointer;color:var(--accent);
  background:none;border:1px solid var(--rule);border-radius:2px}
.theme:hover{background:var(--accent-soft);border-color:var(--accent)}
.theme svg{width:19px;height:19px;fill:currentColor}
.theme .moon{display:none}
:root[data-theme="dark"] .theme .moon{display:block}
:root[data-theme="dark"] .theme .sun{display:none}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .theme .moon{display:block}
  :root:not([data-theme="light"]) .theme .sun{display:none}
}

/* ---------- shell ------------------------------------------------------- */
.shell{display:grid;grid-template-columns:var(--side) minmax(0,1fr);min-height:100vh}

/* ---------- side panel -------------------------------------------------- */
.side{
  position:sticky;top:0;height:100vh;overflow:auto;
  background:var(--panel);border-right:1px solid var(--rule);
  padding:30px clamp(20px,2vw,30px) 26px;
  display:flex;flex-direction:column;gap:16px;
}
.brand{display:flex;flex-direction:column;align-items:center;gap:12px;
  text-align:center;text-decoration:none;color:inherit}
.brand-img{position:relative;width:186px;height:186px;max-width:100%;overflow:hidden;
  background:#DCE6F4;border-radius:50%;margin:0 auto}
.brand-img img{width:100%;height:100%;object-fit:cover;position:relative;z-index:1}
.brand-fb{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;
  font:600 30px/1 Barlow,system-ui,sans-serif;letter-spacing:.06em;color:#93A8C2}
.brand-id{display:block}
.brand-txt{display:block;font:600 clamp(24px,2.5vw,31px)/1.14 Newsreader,Georgia,serif;
  letter-spacing:-.012em;color:var(--accent)}
.brand-role{display:block;margin-top:5px;color:var(--mute);
  font:400 13.5px/1.4 Barlow,system-ui,sans-serif}
.brand:hover .brand-txt{color:var(--accent-dark)}
.degrees{margin:0;color:var(--mute);text-align:center;
  font:400 12.5px/2 Barlow,system-ui,sans-serif}
.dsep{display:inline-block;width:1px;height:9px;background:currentColor;opacity:.4;margin:0 8px;vertical-align:0}

.panel{display:flex;flex-direction:column;margin-top:auto;min-width:0}
.nav-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}
.nav-list a,.subtoggle{
  display:flex;align-items:center;gap:8px;width:100%;
  font:400 15px/1.4 Barlow,system-ui,sans-serif;color:var(--body);
  text-decoration:none;background:none;border:0;padding:7px 0;margin:0;cursor:pointer;text-align:left;
}
.nav-list>li>a,.subtoggle.wide{justify-content:space-between}
.nav-list .row{display:flex;align-items:center;gap:8px}
.nav-list .row a{flex:1}
.nav-list .row .subtoggle{flex:none;width:auto;padding:7px 0 7px 12px}
.nav-list a:hover,.subtoggle:hover{color:var(--accent)}
.nav-list a[aria-current]{color:var(--accent);font-weight:500}
.caret{width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
  transform:rotate(45deg);margin-top:-3px;flex:none}
.has-sub.is-open>.subtoggle{color:var(--accent)}
.has-sub.is-open .caret{transform:rotate(-135deg);margin-top:2px}
.submenu{display:none;list-style:none;margin:0;padding:0 0 8px 14px;border-left:1px solid var(--rule)}
.has-sub.is-open .submenu{display:block}
.submenu a{padding:5px 0;font-size:14px;color:var(--mute)}
.submenu a:hover{color:var(--accent)}

.linkset{margin-top:16px;padding-top:14px;border-top:1px solid var(--rule)}
.badges,.profiles{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center}
.badges{gap:12px}
.profiles{gap:9px 11px;margin-top:12px}
.badges img{height:20px;width:auto}
.profiles img{height:20px;width:auto}
.badges a,.profiles a{display:block;opacity:.82}
.badges a:hover,.profiles a:hover{opacity:1}
.imgtxt{display:inline-block;padding:5px 9px;border:1px solid var(--rule);border-radius:2px;
  color:var(--mute);font:500 11.5px/1 Barlow,system-ui,sans-serif;background:var(--paper)}

.sidebar-bar{display:contents}
.burger{display:none;width:44px;height:40px;flex-direction:column;justify-content:center;gap:5px;
  padding:0 10px;background:none;border:1px solid var(--rule);border-radius:2px;cursor:pointer;color:var(--ink)}
.burger span:not(.sr){display:block;height:1.6px;background:currentColor}

/* ---------- main -------------------------------------------------------- */
.main{padding:40px clamp(20px,3.6vw,56px) 64px;max-width:none}
.epigraph{margin:0 0 28px;padding:2px 0 2px 22px;border-left:3px solid var(--accent);max-width:none}
.epigraph p{margin:0;font-size:19.5px;line-height:1.62;color:var(--ink);text-align:justify;hyphens:auto}
.prose{max-width:none;text-align:justify;hyphens:auto}
.prose p{margin:0 0 1.05em;max-width:none}
.prose .lede{font-size:18.5px;color:var(--ink)}
.prose strong{font-weight:600;color:var(--ink)}
.prose a{color:var(--accent);text-decoration:underline}
.prose a:hover{color:var(--accent-dark)}
.prose .media{font-size:15px;line-height:1.85;color:var(--mute)}
.prose .close{border-top:1px solid var(--rule);padding-top:18px;color:var(--ink)}
.prose h2{margin:1.5em 0 .45em;font:600 24px/1.25 Newsreader,Georgia,serif;color:var(--accent);letter-spacing:-.01em}
.prose ol,.prose ul{max-width:none;padding-left:1.3em}
.prose li{margin:0 0 .3em}

/* ---------- talks ------------------------------------------------------- */
.talks{display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr));padding-top:30px;max-width:880px}
.talk{margin:0}
.facade{display:block;width:100%;height:0;padding:0 0 56.25%;border:0;cursor:pointer;
  position:relative;background:var(--deep);border-radius:2px}
.facade .play{position:absolute;left:50%;top:50%;width:0;height:0;transform:translate(-40%,-50%);
  border-left:20px solid #fff;border-top:13px solid transparent;border-bottom:13px solid transparent;opacity:.88}
.facade:hover .play{opacity:1}
.facade-tag{position:absolute;left:14px;bottom:12px;color:#fff;opacity:.8;z-index:2;
  font:600 11px/1 Barlow,system-ui,sans-serif;letter-spacing:.14em}
.embed{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden;
  background:var(--deep);border-radius:2px}
.embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
.langs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}
.langs-label{color:var(--mute);margin-right:2px;
  font:500 12px/1 Barlow,system-ui,sans-serif}
.lang{font:500 12px/1 Barlow,system-ui,sans-serif;padding:6px 10px;cursor:pointer;
  background:var(--paper);color:var(--mute);border:1px solid var(--rule);border-radius:2px}
.lang:hover{color:var(--accent);border-color:var(--accent)}
.lang.is-on{color:#fff;background:var(--accent);border-color:var(--accent)}

/* ---------- responsive -------------------------------------------------- */
@media (max-width:1000px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;overflow:visible;border-right:0;border-bottom:1px solid var(--rule);
    padding:16px clamp(18px,4vw,26px);display:block}
  .sidebar-bar{display:flex;align-items:center;gap:15px}
  .brand{flex-direction:row;align-items:center;gap:14px;min-width:0;text-align:left}
  .brand-img{width:52px;height:52px;max-width:none;border-radius:50%;flex:none}
  .brand-fb{font-size:16px}
  .brand-txt{font-size:19px}
  .brand-role{font-size:12px;margin-top:2px}
  .degrees{display:none}
  .burger{display:flex;margin-left:auto;flex:none}
  .panel{display:none;margin-top:14px}
  .panel.is-open{display:flex}
  .nav-list a,.subtoggle{padding:12px 0;font-size:16px;border-bottom:1px solid var(--rule)}
  .submenu a{border-bottom:0;padding:9px 0}
  .main{padding:34px clamp(18px,4.4vw,32px) 72px}
  .talks{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:620px){
  body{font-size:16.5px}
  .epigraph p{font-size:18px}
  .epigraph{padding-left:16px;margin-bottom:30px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- long form pages -------------------------------------------- */
.page-title{margin:0 0 20px;font:600 clamp(28px,3.4vw,40px)/1.15 Newsreader,Georgia,serif;
  color:var(--accent);letter-spacing:-.018em}
.prose h3{margin:1.35em 0 .35em;font:600 19px/1.32 Newsreader,Georgia,serif;color:var(--accent)}
.prose hr{border:0;border-top:1px solid var(--rule);margin:2.6em 0}
.prose .tag{display:inline-block;margin:0 0 .8em;padding:4px 10px;border-radius:2px;
  background:var(--accent-soft);color:var(--accent);
  font:500 12px/1.5 Barlow,system-ui,sans-serif;letter-spacing:.01em}
.prose ol.viva{counter-reset:viva;list-style:none;padding-left:0}
.prose ol.viva>li{counter-increment:viva;position:relative;padding-left:48px;margin:0 0 .85em}
.prose ol.viva>li::before{content:counter(viva);position:absolute;left:0;top:.28em;
  width:34px;text-align:right;color:var(--accent);
  font:500 13px/1 Barlow,system-ui,sans-serif}
.prose table{border-collapse:collapse;width:100%;margin:1.4em 0;font-size:15.5px}
.prose th,.prose td{border-bottom:1px solid var(--rule);padding:9px 12px;text-align:left;vertical-align:top}
.prose th{color:var(--ink);font-weight:600}
.prose figure{margin:1.6em 0}
.prose figcaption{margin-top:8px;color:var(--mute);font-size:14.5px}
.prose .tablewrap{overflow-x:auto}

/* ---------- media grids (public appearances) ---------------------------- */
.media-group{margin:0 0 30px}
.media-group h2{margin:0 0 13px;font:600 22px/1.3 Newsreader,Georgia,serif;color:var(--accent);
  padding-bottom:9px;border-bottom:1px solid var(--rule)}
.media-grid{display:grid;gap:15px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.media{margin:0}
.facade{overflow:hidden}
.facade .thumb{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;
  transition:transform .35s ease}
.facade:hover .thumb{transform:scale(1.035)}
.facade .play{z-index:2;filter:drop-shadow(0 2px 10px rgba(0,0,0,.55))}
.facade-tag{z-index:2}
.facade::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(12,24,44,.28);z-index:1}
.facade.plain::after{background:none}
.facade:hover::after{background:rgba(12,24,44,.14)}

/* ---------- publications table ------------------------------------------ */
/* Each publication is two rows: the columns, then its keywords spanning the
   full width beneath them, so the keyword list is not squeezed into a narrow
   cell and the other columns keep their space. */
.main-wide{max-width:1500px}
.main-wide .prose{max-width:none}
.main-wide .prose p{max-width:none}
.main-wide .lab-note{max-width:none}
.tablewrap{overflow-x:auto}
table.display{border-collapse:collapse;width:100%;font:400 14.5px/1.55 Barlow,system-ui,sans-serif}
table.display th,table.display td{text-align:left;vertical-align:top;border:0}
table.display thead th{padding:0 12px 10px;color:var(--accent);font-weight:600;white-space:nowrap;
  border-bottom:2px solid var(--accent)}
table.display tbody th,table.display tbody td{padding:10px 12px 2px}
table.display .num{color:var(--mute);width:1%;white-space:nowrap;font-weight:400}
table.display .date{white-space:nowrap}
table.display .links{width:1%}
table.display .links .iconrow{display:block;white-space:nowrap}
table.display .links img{display:inline-block;vertical-align:middle;margin-right:5px}
table.display .bib{background:none;border:0;padding:0;cursor:pointer;vertical-align:middle}
tr.detail-row td{padding:0 12px 11px;border-bottom:1px solid var(--rule)}
.ptitle{margin:0;color:var(--ink);font:500 16px/1.45 Barlow,system-ui,sans-serif}
tr.detail-row .keys{margin:7px 0 0;color:var(--mute);font-size:13.5px;line-height:1.7}
tr.detail-row .kdot{color:var(--rule)}
tr.detail-row a{color:var(--accent);text-decoration:none}
tr.detail-row a:hover{text-decoration:underline}
.doi{display:inline-block;margin:6px 0 0;padding:2px 6px;border-radius:2px;
  background:var(--accent-soft);color:var(--accent);text-decoration:none;
  font:400 10.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:normal}
.doi:hover{text-decoration:underline}
.searchnote{margin:0 0 20px;color:var(--mute);font:400 15px/1.6 Barlow,system-ui,sans-serif}
.bibdlg{max-width:min(720px,92vw);border:1px solid var(--rule);border-radius:2px;padding:22px 24px;
  background:var(--paper);color:var(--ink)}
.bibdlg::backdrop{background:rgba(12,24,44,.45)}
.bibdlg pre{margin:0 0 16px;white-space:pre-wrap;color:var(--ink);
  font:400 13px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}
.bibdlg button{padding:7px 14px;border:1px solid var(--accent);border-radius:2px;cursor:pointer;
  background:var(--paper);color:var(--accent);font:500 13px/1.3 Barlow,system-ui,sans-serif}
.bibdlg button:hover{background:var(--accent-soft)}

/* ---------- question and answer page ------------------------------------ */
.qa-page{max-width:none}
.qa-page .intro{background:var(--panel);border:1px solid var(--rule);border-left:3px solid var(--accent);
  padding:16px 20px;margin:0 0 24px}
.qa-page .intro p{margin:0;text-align:justify;hyphens:auto}
.qa-page .intro p+p{margin-top:.9em}
.qa-page .selector-label{margin:0 0 14px;color:var(--mute);
  font:600 13px/1.4 Barlow,system-ui,sans-serif}
.qa-page .selector-grid{display:grid;gap:8px;margin:0 0 28px;
  grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}
.qa-page .selector-grid a{display:block;padding:11px 14px;border:1px solid var(--rule);
  background:var(--paper);color:var(--accent);text-decoration:none;border-radius:2px;
  font:500 14px/1.35 Barlow,system-ui,sans-serif}
.qa-page .selector-grid a:hover{background:var(--accent-soft);border-color:var(--accent)}
.qa-page section{margin:0 0 30px;scroll-margin-top:20px}
.qa-page section h2{margin:0 0 14px;padding-bottom:9px;border-bottom:1px solid var(--rule);
  color:var(--accent);font:600 22px/1.3 Newsreader,Georgia,serif}
.qa-page .note-box{background:var(--accent-soft);border:1px solid #C6D6EE;padding:13px 16px;
  margin:0 0 15px;color:var(--ink);font:400 15.5px/1.62 Barlow,system-ui,sans-serif;border-radius:2px}
.qa-page .qa{border-bottom:1px solid var(--rule);padding:12px 0}
.qa-page .qa:last-child{border-bottom:0}
.qa-page .qa .q{margin:0 0 .45em;color:var(--accent);
  font:600 16px/1.5 Barlow,system-ui,sans-serif}
.qa-page .qa .q:not(:first-child){margin-top:1.5em}
.qa-page .qa .a{margin:0;font-size:16.5px;line-height:1.7;text-align:justify;hyphens:auto}
.qa-page a{color:var(--accent)}
@media (max-width:620px){
  .media-grid{grid-template-columns:minmax(0,1fr)}
  .qa-page .selector-grid{grid-template-columns:minmax(0,1fr)}
}

/* ---------- research lab page ------------------------------------------ */
.lab-head{display:grid;grid-template-columns:150px minmax(0,1fr);gap:28px;align-items:start;
  margin:0 0 24px}
.lab-logo{width:150px;height:auto;image-rendering:auto}
.lab-head .page-title{margin:0 0 8px}
.lab-sub{margin:0;color:var(--accent);font:400 20px/1.35 Newsreader,Georgia,serif}
.lab-note{margin:10px 0 0;max-width:62ch;color:var(--mute);font-style:italic;font-size:16px}
.section-h{margin:32px 0 16px;padding-bottom:9px;border-bottom:1px solid var(--rule);
  font:600 24px/1.3 Newsreader,Georgia,serif;color:var(--accent)}
.logos{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:10px;
  grid-template-columns:repeat(auto-fill,minmax(142px,1fr))}
.logos li{display:flex;align-items:center;justify-content:center;height:84px;padding:14px 18px;
  border:1px solid var(--rule);background:var(--paper)}
.logos a{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.logos img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;
  opacity:.88;transition:opacity .2s ease}
.logos li:hover img{opacity:1}

/* Members. Every card emits the same six slots. The portrait, name and role
   are locked to a fixed height so they align across a row, and the
   institution and link rows are pushed to the bottom of the stretched cell,
   so the two ends of every card line up whatever the length of the middle. */
.member-grid{list-style:none;margin:0;padding:0;display:grid;gap:28px 22px;
  grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.member{display:flex;flex-direction:column;align-items:center;text-align:center;height:100%}
.member .portrait{position:relative;display:block;width:132px;height:132px;
  border-radius:50%;overflow:hidden;
  background:var(--panel);margin:0 0 16px;flex:none}
.member .portrait img{width:100%;height:100%;object-fit:cover}
.member h3{margin:0 0 6px;min-height:2.6em;display:flex;align-items:center;
  font:600 17.5px/1.3 Newsreader,Georgia,serif;color:var(--accent)}
.member .role{margin:0 0 10px;min-height:2.8em;color:var(--ink);
  font:500 13px/1.4 Barlow,system-ui,sans-serif}
.member .topics{margin:0 0 14px;color:var(--mute);max-width:30ch;
  font:400 14px/1.55 Barlow,system-ui,sans-serif}
.member .place{margin:auto 0 12px;color:var(--mute);
  font:400 13.5px/1.45 Barlow,system-ui,sans-serif}
.member .plinks{margin:0;display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.member .plinks a{width:30px;height:30px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--rule);border-radius:50%;color:var(--accent);text-decoration:none}
.member .plinks a:hover{background:var(--accent-soft);border-color:var(--accent)}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.ic{width:16px;height:16px;fill:currentColor}
.member .topics:empty,.member .plinks:empty{display:none}
@media (min-width:780px){.member-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1140px){.member-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:620px){
  .lab-head{grid-template-columns:minmax(0,1fr);gap:18px}
  .lab-logo{width:110px}
}

/* Headings and the short card fields are never justified; only running text is. */
.page-title,.prose h2,.prose h3,.section-h,.lab-sub,.member h3,.member .role,
.member .topics,.member .place,.qa-page section h2,.qa-page .selector-label,
.searchnote,.note-box{text-align:left}
.member h3,.member .role,.member .topics,.member .place{text-align:center}
.lab-note{text-align:justify;hyphens:auto}

/* The debug trace on publications.php, shown only with ?debug=1 */
.debug{margin:0 0 26px;padding:16px 18px;background:var(--panel);border:1px solid var(--rule);
  color:var(--ink);white-space:pre-wrap;overflow-x:auto;
  font:400 13px/1.65 ui-monospace,SFMono-Regular,Menlo,monospace}

/* ---------- topic map --------------------------------------------------- */
.maplead{margin:0 0 18px;max-width:none;color:var(--body);text-align:justify;hyphens:auto}
.mapwrap{margin:0 0 30px;border:1px solid var(--rule);background:var(--panel);overflow:hidden}
.topic-map{display:block;width:100%}
.tmap{display:block;width:100%;height:auto}
.tm-links line{stroke:var(--mute);stroke-opacity:.34}
.tm-links line.dim{stroke-opacity:.07}
.tm-links line.on{stroke:var(--accent);stroke-opacity:.75}
.tm-node{cursor:pointer}
.tm-node circle{fill-opacity:.86;stroke:var(--panel);stroke-width:1.5}
.tm-node text{fill:var(--ink);font:500 12px/1.2 Barlow,system-ui,sans-serif;pointer-events:none}
.tm-node.dim circle{fill-opacity:.16}
.tm-node.dim text{fill:var(--mute);opacity:.35}
.tm-node.on circle{fill-opacity:1;stroke:var(--ink);stroke-width:2}
.tm-node.on text{fill:var(--ink);font-weight:600}
table.topics th[scope=row]{font-weight:400}
table.topics th[scope=row] a{color:var(--accent);text-decoration:none}
table.topics th[scope=row] a:hover{text-decoration:underline}
table.topics td{color:var(--mute)}

/* ---------- lab page, alumni and statement ------------------------------ */
/* The alumni lists run in columns, since each entry is short and the lists
   are otherwise a long single file down the page. */
.prose.alumni ul{columns:3;column-gap:30px;padding-left:1.1em}
.prose.alumni li{break-inside:avoid;margin:0 0 .3em}
.prose.edi p{font-size:14.5px;line-height:1.7;color:var(--mute)}
@media (max-width:900px){.prose.alumni ul{columns:2}}
@media (max-width:620px){.prose.alumni ul{columns:1}}
