
:root{
  --bg:#fbfbf8; --paper:#fff; --text:#222725; --muted:#66706c; --line:#e5e9e6;
  --accent:#245f57; --accent-soft:#eef5f2; --max:1120px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.62}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.site-header{border-bottom:1px solid var(--line);background:rgba(251,251,248,.96);position:sticky;top:0;z-index:10}
.nav-wrap{max-width:var(--max);margin:auto;padding:0 24px}
.top-nav{display:flex;gap:26px;align-items:center;min-height:62px;overflow-x:auto}
.nav-item{color:#444b48;font-size:.96rem;white-space:nowrap;padding:20px 0 17px;border-bottom:3px solid transparent}
.nav-item:first-child{font-weight:750;letter-spacing:.03em}
.nav-item.is-active{font-weight:750;color:#17201d;border-bottom-color:var(--accent);text-decoration:none}
.page-shell{max-width:var(--max);margin:0 auto;padding:48px 24px 72px;display:grid;grid-template-columns:220px minmax(0,1fr);gap:64px}
.profile-card{position:sticky;top:100px;align-self:start}
.avatar{display:block;width:145px;height:145px;object-fit:cover;object-position:50% 18%;border-radius:50%;background:#f1f1ee;margin-bottom:22px}
.profile-card h2{font-size:1.2rem;line-height:1.2;margin:0 0 10px}
.profile-title,.profile-role{font-size:.91rem;color:var(--muted);margin:4px 0}
.profile-links{display:flex;flex-direction:column;gap:4px;margin-top:17px;font-size:.88rem;overflow-wrap:anywhere}
.content{min-width:0}
.content>h1:first-child{font-size:2.15rem;line-height:1.15;margin:0 0 16px;letter-spacing:-.025em}
.lede{font-size:1.14rem;max-width:760px;color:#343a37;margin:0 0 34px}
.statement{font-size:2rem;line-height:1.22;letter-spacing:-.025em;max-width:780px;margin:0 0 18px;font-weight:650}
.intro{font-size:1.08rem;max-width:720px;color:var(--muted);margin-bottom:34px}
.section{margin:45px 0 0}
.section h2{font-size:1.35rem;margin:0 0 17px;border-bottom:1px solid var(--line);padding-bottom:9px}
.section h3{font-size:1.08rem;margin:28px 0 8px}
.focus-list{display:flex;flex-wrap:wrap;gap:0;margin:0;padding:0;list-style:none;color:#343a37}
.focus-list li+li:before{content:"·";padding:0 10px;color:#a0aaa5}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:34px}
.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.clean-card{border-top:2px solid var(--accent);padding-top:13px}
.clean-card h3{margin:0 0 6px;font-size:1.05rem}
.clean-card p{margin:0;color:var(--muted);font-size:.94rem}
.plain-list{list-style:none;padding:0;margin:0}
.plain-list li{padding:13px 0;border-bottom:1px solid var(--line)}
.meta{font-size:.86rem;color:var(--muted)}
.entry-title{font-weight:650}
.subtle{color:var(--muted)}
.project-block{margin-top:24px}
.project-item{padding:15px 0;border-bottom:1px solid var(--line)}
.project-item h3{margin:0 0 4px;font-size:1.03rem}
.project-item p{margin:4px 0}
.badge-line{font-size:.82rem;color:var(--muted);margin-top:8px}
.course{padding:18px 0;border-bottom:1px solid var(--line)}
.course h3{margin:0 0 3px}
label{font-size:.88rem;color:#4d5752}
input,select,button{margin-top:14px;background:var(--accent);color:white;border:0;border-radius:4px;padding:10px 15px;font:inherit;cursor:pointer}
.pub-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0}
.pub-toolbar input,.pub-toolbar select{width:auto;min-width:160px;margin:0}
.pub-tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);margin:20px 0 0}
.pub-tab{background:none;color:var(--muted);border:0;border-bottom:3px solid transparent;border-radius:0;margin:0;padding:10px 0;cursor:pointer}
.pub-tab.is-active{color:var(--text);font-weight:700;border-bottom-color:var(--accent)}
.pub-list{margin-top:12px}
.pub-year{font-size:1.05rem;margin:28px 0 4px}
.pub-item{padding:14px 0;border-bottom:1px solid var(--line)}
.pub-item .authors{font-size:.9rem;color:var(--muted)}
.pub-item .venue{font-size:.9rem;margin-top:3px}
.pub-item .links{font-size:.85rem;margin-top:5px}
.pub-tax{font-size:.78rem;color:#89918d;margin-top:5px}
.venue-list{columns:2;column-gap:34px}
.venue-item{break-inside:avoid;padding:6px 0;font-size:.92rem}
.hidden{display:none!important}
.note{padding:12px 14px;border-left:3px solid #c89b3c;background:#fff9ea;color:#5d5133;font-size:.9rem;margin:15px 0}
@media(max-width:850px){
  .page-shell{grid-template-columns:1fr;gap:34px;padding-top:32px}
  .profile-card{position:static;display:grid;grid-template-columns:96px 1fr;column-gap:18px;align-items:start}
  .avatar{width:96px;height:96px;margin:0;grid-row:1/5}
  .profile-links{margin-top:9px}
  .three-col,.two-col{grid-template-columns:1fr}
}
@media(max-width:560px){
  .nav-wrap{padding:0 16px}
  .top-nav{gap:18px;min-height:54px}
  .nav-item{padding:17px 0 14px;font-size:.9rem}
  .page-shell{padding:28px 16px 56px}
  .statement{font-size:1.62rem}
  .content>h1:first-child{font-size:1.8rem}
  .venue-list{columns:1}
  .pub-toolbar input,.pub-toolbar select{width:100%}
}

/* V4.1 */
.profile-name{font-size:1.2rem;line-height:1.12;margin:0 0 10px}
.profile-name span{display:block}

.degree-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.degree-card{
  display:flex;flex-direction:column;gap:6px;
  min-height:170px;padding:18px;
  border:1px solid var(--line);background:var(--paper);
  color:var(--text);text-decoration:none;
}
.degree-card:hover{border-color:#b8c7c1;text-decoration:none}
.degree-acronym{font-size:.78rem;font-weight:750;letter-spacing:.08em;color:var(--accent)}
.degree-card strong{font-size:1rem;line-height:1.35}
.degree-note{font-size:.84rem;color:var(--muted);margin-top:auto}
.degree-link{font-size:.82rem;color:var(--accent)}


@media(max-width:850px){
  .degree-grid{grid-template-columns:1fr}
  .degree-card{min-height:auto}
}

/* V4.3 — supervision catalogue */
.supervision-overview{display:flex;flex-wrap:wrap;gap:10px 22px;margin:22px 0 8px;color:var(--muted);font-size:.92rem}.supervision-overview strong{color:var(--text)}.sup-tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin:18px 0 0}.sup-tab{background:none;color:var(--muted);border:0;border-bottom:3px solid transparent;border-radius:0;margin:0;padding:10px 0;cursor:pointer}.sup-tab.is-active{color:var(--text);font-weight:700;border-bottom-color:var(--accent)}.sup-toolbar{display:grid;grid-template-columns:minmax(200px,1.7fr) repeat(4,minmax(120px,1fr));gap:9px;margin:18px 0 9px;align-items:stretch}.sup-toolbar input,.sup-toolbar select{width:100%;min-width:0;margin:0}.more-filter-button{background:transparent;color:var(--accent);border:1px solid var(--line);margin:0;padding:9px 11px;text-align:left}.more-filter-button:hover{border-color:#b8c7c1}.sup-more{display:flex;gap:12px;align-items:center;padding:12px 14px;background:#f5f7f5;border:1px solid var(--line);margin-bottom:10px}.sup-more label{white-space:nowrap}.sup-more select{max-width:320px;margin:0}.sup-result-count{font-size:.82rem;color:var(--muted);margin:10px 0 0}.sup-list{margin-top:5px}.sup-item{padding:17px 0;border-bottom:1px solid var(--line)}.sup-kind{text-transform:uppercase;letter-spacing:.055em;font-size:.72rem;font-weight:700;color:var(--muted)}.sup-item h3{font-size:1rem;line-height:1.42;margin:5px 0 4px;font-weight:650}.sup-meta{font-size:.88rem;color:#555f5a}.sup-field{font-size:.84rem;color:var(--accent);margin-top:5px;font-weight:600}.sup-topics{font-size:.78rem;color:#7b8580;margin-top:4px}.sup-topics b{font-weight:400;padding:0 5px}.sup-note{font-size:.78rem;color:#8b7770;margin-top:5px}.sup-links{font-size:.8rem;margin-top:5px}
@media(max-width:1050px){.sup-toolbar{grid-template-columns:1fr 1fr 1fr}}@media(max-width:720px){.sup-toolbar{grid-template-columns:1fr}.sup-more{display:block}.sup-more select{max-width:none;width:100%;margin-top:6px}}

/* V4.3.2 — unified publications view */
.pub-type-legend{
  display:flex;
  gap:18px;
  flex-wrap:wrap;
  margin:10px 0 18px;
  font-size:.78rem;
  color:var(--muted);
}
.pub-type-legend span{display:inline-flex;align-items:center;gap:6px}
.pub-code{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  border:1px solid var(--line);
  border-radius:3px;
  font-size:.7rem;
  line-height:1;
  font-weight:800;
  font-style:normal;
}
.journal-code{
  color:var(--accent);
  border-color:#b9cbc5;
  background:var(--accent-soft);
}
.conference-code{
  color:#5f625f;
  border-color:#cfd3d0;
  background:#f4f4f1;
}
.pub-entry-head{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:6px;
}
.pub-entry-year{
  font-size:.78rem;
  font-weight:700;
  color:var(--muted);
}
.pub-result-count{
  font-size:.82rem;
  color:var(--muted);
  margin:8px 0 0;
}

/* V4.4 — work-with-us page and corrected form visibility */
.work-cta{
  padding:22px 0 0;
}
.work-cta p{
  max-width:700px;
}

/* V4.5 — general contact */
/* V4.7 — Contact via Google Apps Script */
.contact-section{max-width:850px}
.contact-submit-frame{position:absolute;width:1px;height:1px;border:0;opacity:0;pointer-events:none}
.contact-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.student-contact-block{margin:18px 0;padding:18px;border:1px solid var(--line);background:#f7f8f6}
.student-contact-block[hidden]{display:none!important}
.student-contact-block h3{margin:0 0 5px}
.student-contact-block>p{margin-top:0;color:var(--muted)}
.form-status[hidden]{display:none!important}
.form-status:not([hidden]){display:block;margin:14px 0;padding:12px 14px;border-left:3px solid var(--accent);background:var(--accent-soft)}
.form-error:not([hidden]){border-left-color:#9f3e36;background:#fbefed;color:#6e2a25}
#contact-submit:disabled{opacity:.65;cursor:wait}

/* V4.8 — Contact redesign */
.contact-lede{max-width:720px}
.contact-page{max-width:840px;margin-top:28px}
.contact-form-v2{display:block}
.contact-primary{display:flex;flex-direction:column;gap:18px}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.field{display:flex;flex-direction:column;gap:7px;margin:0}
.field>span,.file-field>span{font-size:.82rem;font-weight:700;color:var(--text)}
.field input,.field select,.field textarea{
  width:100%;
  box-sizing:border-box;
  border:0;
  border-bottom:1px solid #cbd1cd;
  border-radius:0;
  background:transparent;
  padding:10px 2px;
  font:inherit;
  color:var(--text)
}
.field select{padding-right:26px}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;
  border-bottom-color:var(--accent);
  box-shadow:0 1px 0 var(--accent)
}
.message-field{margin-top:24px}
.message-field textarea{min-height:150px;resize:vertical;line-height:1.5}
.contact-divider{border-top:1px solid var(--line);margin:30px 0 24px}
.contact-section-heading{margin-bottom:18px}
.contact-section-heading.compact{margin-bottom:15px}
.contact-section-heading .eyebrow{
  display:block;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:.7rem;
  font-weight:800;
  color:var(--accent);
  margin-bottom:4px
}
.contact-section-heading h2{font-size:1.08rem;margin:0 0 5px}
.contact-section-heading p{margin:0;color:var(--muted);font-size:.88rem;max-width:670px}
.student-fields[hidden],.attachment-section[hidden]{display:none!important}
.attachment-section{margin-top:0}
.file-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.file-field{
  display:flex;
  flex-direction:column;
  gap:8px;
  border:1px solid var(--line);
  padding:15px;
  min-height:104px;
  box-sizing:border-box;
  background:transparent
}
.file-field input[type=file]{font-size:.8rem;max-width:100%}
.file-field small{font-size:.72rem;color:var(--muted)}
.contact-submit-row{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:30px;
  margin-top:28px
}
.contact-submit-row button{
  flex:0 0 auto;
  min-width:145px;
  padding:10px 18px;
  border-radius:2px
}
.contact-privacy{max-width:570px;margin:0;color:var(--muted);font-size:.75rem;line-height:1.45}
.contact-feedback{
  display:flex;
  flex-direction:column;
  gap:2px;
  margin:0 0 24px;
  padding:13px 15px;
  border-left:3px solid var(--accent);
  background:var(--accent-soft)
}
.contact-feedback[hidden]{display:none!important}
.contact-feedback.error{border-left-color:#9f3e36;background:#fbefed;color:#6e2a25}
.contact-submit-frame{position:absolute;width:1px;height:1px;border:0;opacity:0;pointer-events:none}
.contact-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}

/* V4.8 — early student CTA on Supervision */
.student-quick-cta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:14px 0;
  margin:22px 0 8px
}
.student-quick-cta>div{display:flex;flex-direction:column;gap:2px}
.student-quick-cta strong{font-size:.91rem}
.student-quick-cta span{font-size:.82rem;color:var(--muted)}
.student-quick-cta>a{white-space:nowrap;font-size:.83rem;font-weight:700}
.student-opportunities{scroll-margin-top:90px}
.section-intro{color:var(--muted);margin-top:-6px;margin-bottom:18px}
.student-contact-cta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  border-top:1px solid var(--line);
  padding-top:19px;
  margin-top:24px
}
.student-contact-cta>div{display:flex;flex-direction:column;gap:3px;max-width:650px}
.student-contact-cta span{font-size:.82rem;color:var(--muted)}
.student-contact-cta .cta-link{white-space:nowrap}

@media(max-width:760px){
  .contact-grid,.file-grid{grid-template-columns:1fr}
  .contact-submit-row,.student-quick-cta,.student-contact-cta{
    align-items:flex-start;
    flex-direction:column
  }
  .contact-submit-row button{width:100%}
}


/* V4.8.1 — feedback belongs to the Send action */
.contact-submit-actions{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:9px;
  flex:0 0 auto;
}
.contact-submit-actions .contact-feedback{
  margin:0;
  padding:8px 10px;
  min-width:210px;
  max-width:300px;
  box-sizing:border-box;
  font-size:.78rem;
  line-height:1.35;
}
.contact-submit-actions .contact-feedback strong{
  font-size:.8rem;
}
.contact-submit-actions .contact-feedback span{
  display:block;
  margin-top:1px;
}
@media(max-width:760px){
  .contact-submit-actions{
    width:100%;
    align-items:stretch;
  }
  .contact-submit-actions .contact-feedback{
    min-width:0;
    max-width:none;
    width:100%;
  }
}


/* ============================================================
   V4.9 — profile/header, internal navigation, supervision,
   and compact mobile contact
   ============================================================ */

/* Profile actions are deliberately button-like: these are actions,
   not metadata. */
.mobile-profile-header{display:none}
.desktop-profile{min-width:0}

.profile-card{
  display:flex;
  flex-direction:column;
}
.profile-copy{min-width:0}
.profile-card .avatar{order:-1}

.profile-actions{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  margin-top:18px;
}
.profile-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  min-height:34px;
  padding:7px 10px;
  border:1px solid #cfd7d3;
  border-radius:4px;
  color:#3f4b47;
  background:transparent;
  font-size:.78rem;
  font-weight:700;
  line-height:1;
  text-decoration:none;
}
.profile-action:hover{
  border-color:var(--accent);
  color:var(--accent);
  text-decoration:none;
}
.profile-action-primary{
  flex-basis:100%;
  background:var(--accent);
  border-color:var(--accent);
  color:white;
}
.profile-action-primary:hover{
  color:white;
  background:#1e514a;
}

/* Multi-field supervision taxonomy */
.sup-fields{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin-top:7px;
}
.sup-fields span{
  display:inline-flex;
  align-items:center;
  padding:3px 7px;
  border:1px solid #c9d8d3;
  border-radius:999px;
  background:var(--accent-soft);
  color:var(--accent);
  font-size:.72rem;
  font-weight:700;
  line-height:1.25;
}
.sup-item[hidden]{display:none!important}
.student-opportunities{scroll-margin-top:82px}

/* Contact anchor + compact optional attachment */
#contact-form{scroll-margin-top:82px}

.attachment-disclosure{
  border-top:1px solid var(--line);
  margin-top:25px;
  padding-top:13px;
}
.attachment-disclosure summary{
  cursor:pointer;
  color:var(--accent);
  font-size:.82rem;
  font-weight:750;
  list-style-position:outside;
}
.attachment-disclosure-body{
  margin-top:12px;
}
.attachment-disclosure .file-field{
  min-height:auto;
}

/* Mobile: profile first, navigation immediately below it. */
@media(max-width:850px){
  .mobile-profile-header{
    display:block;
    max-width:var(--max);
    margin:0 auto;
    padding:18px 18px 12px;
  }
  .desktop-profile{display:none}

  .site-header{
    position:sticky;
    top:0;
    z-index:20;
  }

  .page-shell{
    grid-template-columns:1fr;
    gap:0;
    padding-top:26px;
  }

  .mobile-profile-header .profile-card{
    display:grid;
    grid-template-columns:minmax(0,1fr) 92px;
    grid-template-areas:
      "copy avatar"
      "actions actions";
    column-gap:18px;
    row-gap:12px;
    align-items:start;
  }
  .mobile-profile-header .profile-copy{
    grid-area:copy;
    align-self:center;
  }
  .mobile-profile-header .avatar{
    grid-area:avatar;
    order:initial;
    width:92px;
    height:92px;
    margin:0;
    justify-self:end;
  }
  .mobile-profile-header .profile-actions{
    grid-area:actions;
    margin:0;
    display:grid;
    grid-template-columns:1.25fr 1fr 1fr;
    gap:7px;
  }
  .mobile-profile-header .profile-action-primary{
    flex-basis:auto;
  }
  .mobile-profile-header .profile-name{
    margin-bottom:7px;
    font-size:1.15rem;
  }
  .mobile-profile-header .profile-title,
  .mobile-profile-header .profile-role{
    font-size:.82rem;
    line-height:1.35;
    margin:3px 0;
  }

  .nav-wrap{padding:0 18px}
  .top-nav{
    min-height:48px;
    gap:20px;
  }
  .nav-item{
    padding:14px 0 11px;
    font-size:.86rem;
  }
}

/* Keep a normal contact enquiry close to one phone viewport.
   Student mode naturally expands because three documents are required. */
@media(max-width:760px){
  .contact-lede{
    margin-bottom:14px;
    font-size:.98rem;
    line-height:1.42;
  }
  .contact-page{
    margin-top:10px;
    max-width:none;
  }
  .contact-primary{
    gap:10px;
  }
  .contact-grid{
    grid-template-columns:1fr 1fr;
    gap:10px;
  }
  .field{
    gap:3px;
  }
  .field>span,
  .file-field>span{
    font-size:.75rem;
  }
  .field input,
  .field select,
  .field textarea{
    margin-top:0;
    padding:7px 1px;
    font-size:16px; /* avoids mobile browser zoom */
    line-height:1.3;
  }
  .message-field{
    margin-top:12px;
  }
  .message-field textarea{
    min-height:88px;
    max-height:145px;
  }
  .contact-divider{
    margin:16px 0 12px;
  }
  .contact-section-heading{
    margin-bottom:10px;
  }
  .contact-section-heading h2{
    font-size:1rem;
  }
  .contact-section-heading p{
    font-size:.78rem;
  }
  .student-fields .contact-grid{
    grid-template-columns:1fr 1fr;
  }
  .file-grid{
    grid-template-columns:1fr;
    gap:7px;
  }
  .file-field{
    min-height:auto;
    padding:9px 10px;
    gap:5px;
  }
  .attachment-disclosure{
    margin-top:14px;
    padding-top:9px;
  }
  .attachment-disclosure-body{
    margin-top:8px;
  }
  .contact-submit-row{
    flex-direction:column;
    align-items:stretch;
    gap:8px;
    margin-top:14px;
  }
  .contact-privacy{
    display:none;
  }
  .contact-submit-actions{
    width:100%;
    align-items:stretch;
    gap:7px;
  }
  .contact-submit-row button{
    width:100%;
    margin-top:0;
    padding:9px 14px;
  }
  .contact-submit-actions .contact-feedback{
    min-width:0;
    max-width:none;
    width:100%;
  }

  .student-quick-cta,
  .student-contact-cta{
    gap:10px;
  }
}

@media(max-width:430px){
  .mobile-profile-header{
    padding:15px 14px 10px;
  }
  .mobile-profile-header .profile-card{
    grid-template-columns:minmax(0,1fr) 82px;
    column-gap:13px;
  }
  .mobile-profile-header .avatar{
    width:82px;
    height:82px;
  }
  .mobile-profile-header .profile-actions{
    grid-template-columns:1.15fr 1fr 1fr;
    gap:5px;
  }
  .profile-action{
    padding:7px 6px;
    font-size:.72rem;
  }
  .nav-wrap{padding:0 14px}
  .top-nav{gap:17px}

  /* Keep two compact columns for the high-frequency fields. */
  .contact-grid,
  .student-fields .contact-grid{
    grid-template-columns:1fr 1fr;
  }
}

/* ============================================================
   V4.10 — blue visual system + full landing hero
   ============================================================ */
:root{
  --bg:#f8fafc;
  --paper:#ffffff;
  --text:#172334;
  --muted:#667482;
  --line:#dce6ee;
  --accent:#2f6f9f;
  --accent-hover:#245877;
  --accent-soft:#eef5fa;
  --gaps-blue:#52adc8;
  --max:1180px;
}

body{
  background:var(--bg);
  color:var(--text);
}

a{color:var(--accent)}

.site-header{
  background:rgba(248,250,252,.97);
  border-bottom-color:var(--line);
  backdrop-filter:blur(10px);
}

.top-nav{gap:34px}
.nav-item{
  color:#344252;
  font-size:.94rem;
  font-weight:520;
}
.nav-item:first-child{
  color:var(--accent);
  font-weight:800;
  letter-spacing:.035em;
}
.nav-item.is-active{
  color:#17283d;
  border-bottom-color:#2d73b5;
  font-weight:720;
}

.content>h1:first-child,
.statement,
.section h2,
.section h3,
.profile-name{
  letter-spacing:-.018em;
}

.page-shell{
  max-width:var(--max);
  gap:68px;
}

/* Secondary pages: use a dedicated head-and-shoulders crop.
   The full-body illustration is intentionally reserved for the landing hero. */
.avatar{
  background:#f3f7fa;
  border:2px solid #c6d8e5;
  object-fit:cover;
  object-position:center;
  box-shadow:0 4px 14px rgba(31,67,101,.07);
}
.profile-title,.profile-role{color:var(--muted)}
.profile-actions{margin-top:17px}
.profile-action-primary{
  background:var(--accent);
  border-color:var(--accent);
  color:#fff;
  gap:7px;
}
.profile-action-primary:hover{
  background:var(--accent-hover);
  border-color:var(--accent-hover);
  color:#fff;
}
.profile-secondary-links{
  display:flex;
  gap:14px;
  align-items:center;
  flex-wrap:wrap;
  padding-top:10px;
}
.profile-external{
  display:inline-flex;
  gap:5px;
  align-items:center;
  color:#3e5871;
  font-size:.78rem;
  font-weight:650;
  text-decoration:none;
}
.profile-external:hover{color:var(--accent);text-decoration:none}
.orcid-dot{
  display:inline-grid;
  place-items:center;
  width:22px;
  height:22px;
  border-radius:50%;
  background:#a6ce39;
  color:#fff;
  font-size:.66rem;
  font-weight:800;
  letter-spacing:-.03em;
}
.github-icon{
  display:block;
  width:20px;
  height:20px;
  flex:0 0 auto;
  color:#17202a;
}
.profile-external:hover .github-icon,
.home-external:hover .github-icon{color:currentColor}

/* Landing page: no sidebar; one calm, full-width hero. */
.page-shell-home{
  display:block;
  min-height:calc(100svh - 62px);
  padding-top:24px;
  padding-bottom:24px;
}
.home-content{width:100%}
.home-hero{
  position:relative;
  min-height:calc(100svh - 62px - 48px);
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr);
  gap:38px;
  align-items:center;
  overflow:hidden;
  isolation:isolate;
}
.home-hero::after{
  content:"";
  position:absolute;
  z-index:-2;
  right:-100px;
  bottom:-30px;
  width:760px;
  height:560px;
  background:url('../images/signal-waves.svg') center/contain no-repeat;
  pointer-events:none;
}
.home-hero::before{
  content:"";
  position:absolute;
  z-index:-3;
  right:0;
  bottom:35px;
  width:500px;
  height:420px;
  background:radial-gradient(circle at center,rgba(82,173,200,.08),rgba(82,173,200,0) 70%);
  pointer-events:none;
}
.home-hero-copy{
  padding:20px 0 14px;
  min-width:0;
}
.home-name{
  margin:0 0 18px;
  font-size:clamp(3rem,5.2vw,5.15rem);
  line-height:1.02;
  letter-spacing:-.045em;
  font-weight:650;
  color:#132238;
}
.home-name span{display:block}
.home-role{
  margin:2px 0;
  color:#5f6f7e;
  font-size:1.08rem;
  line-height:1.45;
}
.home-statement{
  max-width:620px;
  margin:33px 0 18px;
  color:#2469b2;
  font-size:clamp(1.7rem,2.35vw,2.45rem);
  line-height:1.17;
  letter-spacing:-.025em;
  font-weight:650;
}
.home-intro{
  max-width:610px;
  margin:0;
  color:#596979;
  font-size:1.05rem;
  line-height:1.7;
}
.home-focus{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;
  max-width:710px;
  margin-top:34px;
}
.home-focus-item{
  min-width:0;
  display:flex;
  align-items:center;
  gap:11px;
  padding:0 18px;
  color:#263c55;
  font-size:.87rem;
  line-height:1.35;
  border-left:1px solid #d7e4ee;
}
.home-focus-item:first-child{padding-left:0;border-left:0}
.home-focus-item svg{
  width:39px;
  height:31px;
  flex:0 0 auto;
  fill:none;
  stroke:#2e72b8;
  stroke-width:1.7;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.home-actions{
  display:flex;
  align-items:center;
  gap:20px;
  margin-top:31px;
  flex-wrap:wrap;
}
.home-contact{
  display:inline-flex;
  align-items:center;
  gap:9px;
  min-height:44px;
  padding:10px 20px;
  border-radius:4px;
  background:#246fbd;
  color:#fff;
  font-weight:700;
  text-decoration:none;
}
.home-contact:hover{background:#1d5f9f;color:#fff;text-decoration:none}
.home-contact svg{
  width:20px;
  height:20px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.7;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.home-external{
  display:inline-flex;
  gap:6px;
  align-items:center;
  color:#2f5f89;
  font-size:.88rem;
  font-weight:650;
  text-decoration:none;
}
.home-external:hover{color:#1f5684;text-decoration:none}
.home-avatar-wrap{
  position:relative;
  align-self:stretch;
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:0;
  padding:0 0 18px;
}
.home-avatar{
  display:block;
  width:auto;
  height:min(78svh,620px);
  max-width:108%;
  object-fit:contain;
  object-position:center;
  transform:translateY(-14px);
  filter:drop-shadow(0 12px 18px rgba(31,67,101,.06));
}

/* Supervision fields: editorial labels, not interface pills. */
.sup-fields{
  display:block;
  margin-top:6px;
  color:#2f6f9f;
  font-size:.78rem;
  line-height:1.45;
}
.sup-fields span{
  display:inline;
  padding:0;
  border:0;
  border-radius:0;
  background:none;
  color:inherit;
  font-size:inherit;
  font-weight:620;
}
.sup-fields span+span::before{
  content:" · ";
  color:#9badba;
  font-weight:400;
}
.sup-more{background:#f3f7fa}
.more-filter-button:hover{border-color:#a9c3d4}

/* General UI refinements */
.degree-card:hover{border-color:#a8c4d6}
.clean-card{border-top-color:#5a96bf}
.note{border-left-color:#c89b3c}
input,select,button{background:var(--accent)}
.pub-tab.is-active,.sup-tab.is-active{border-bottom-color:#2d73b5}

/* V4.11 — clearer publication filters */
.pub-toolbar input,
.pub-toolbar select{
  background:#fff;
  color:var(--text);
  border:1px solid #c8d6e1;
  box-shadow:none;
}
.pub-toolbar input::placeholder{
  color:#6f7d89;
  opacity:1;
}
.pub-toolbar input:focus,
.pub-toolbar select:focus{
  outline:none;
  border-color:#6e9fc5;
  box-shadow:0 0 0 2px rgba(47,111,159,.10);
}
#pubSearch{min-width:290px}

/* Keep the desktop landing as a true one-screen hero on shorter laptops. */
@media(min-width:851px) and (max-height:800px){
  .page-shell-home{
    padding-top:16px;
    padding-bottom:16px;
  }
  .home-hero{
    min-height:calc(100svh - 62px - 32px);
  }
  .home-hero-copy{padding:4px 0}
  .home-name{margin-bottom:12px}
  .home-statement{margin-top:22px;margin-bottom:13px}
  .home-focus{margin-top:24px}
  .home-actions{margin-top:22px}
  .home-avatar{
    height:min(80svh,590px);
    transform:translateY(-18px);
  }
}

@media(max-width:1050px){
  .home-hero{
    grid-template-columns:minmax(0,1fr) minmax(360px,.82fr);
    gap:20px;
  }
  .home-name{font-size:clamp(3rem,5vw,4.35rem)}
  .home-focus-item{padding:0 12px}
}

@media(max-width:850px){
  .mobile-profile-header{
    background:#f8fafc;
    border-bottom:0;
  }
  .mobile-profile-header .profile-actions{
    display:block;
  }
  .mobile-profile-header .profile-action-primary{
    width:100%;
  }
  .mobile-profile-header .profile-secondary-links{
    padding-top:9px;
    justify-content:flex-start;
  }
  .site-header{top:0}
  .top-nav{gap:22px}

  .page-shell-home{
    min-height:0;
    padding-top:23px;
    padding-bottom:42px;
  }
  .home-hero{
    display:block;
    min-height:0;
    overflow:visible;
  }
  .home-hero::after{
    right:-180px;
    bottom:-50px;
    width:590px;
    height:420px;
    opacity:.72;
  }
  .home-hero-copy{padding:0}
  .section-home .home-identity,
  .section-home .home-avatar-wrap,
  .section-home .home-actions{
    display:none;
  }
  .home-statement{
    margin:4px 0 15px;
    max-width:700px;
    font-size:clamp(1.65rem,5.5vw,2.3rem);
  }
  .home-intro{font-size:1rem}
  .home-focus{
    margin-top:26px;
    max-width:none;
  }
}

@media(max-width:620px){
  .home-focus{
    grid-template-columns:1fr;
    gap:14px;
  }
  .home-focus-item,
  .home-focus-item:first-child{
    border-left:0;
    padding:0;
  }
  .home-focus-item svg{width:34px;height:28px}
  .mobile-profile-header .profile-secondary-links{gap:18px}
}

/* V4.11.1 — publications section jump */
.pub-section-nav{
  margin:-20px 0 20px;
  font-size:.9rem;
}
.pub-section-nav a{
  color:var(--accent);
  font-weight:600;
}
#conferenceVenues{scroll-margin-top:88px}


/* V4.12 — clearer Research hierarchy, shared section CTA and GAPS contact identity */
.section-quick-cta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:14px 0;
  margin:22px 0 8px;
}
.section-quick-cta>div{display:flex;flex-direction:column;gap:2px}
.section-quick-cta strong{font-size:.91rem}
.section-quick-cta span{font-size:.82rem;color:var(--muted)}
.section-quick-cta>a{white-space:nowrap;font-size:.83rem;font-weight:700}

/* Research: first make the page scannable, then reveal detail. */
.research-quick-nav{
  display:flex;
  flex-wrap:wrap;
  gap:8px 20px;
  padding:12px 0 14px;
  margin:-12px 0 6px;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.research-quick-nav a{
  font-size:.82rem;
  font-weight:680;
  color:#315f86;
}
.research-quick-nav a::after{content:" ↓";color:#8ca5b9;font-weight:500}
.research-directions-section,
.research-projects-section,
.research-project-group,
.research-direction-detail{scroll-margin-top:88px}
.research-section-title{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(250px,.75fr);
  gap:36px;
  align-items:end;
  margin-bottom:20px;
  padding-bottom:10px;
  border-bottom:1px solid var(--line);
}
.research-section-title h2{
  border:0;
  padding:0;
  margin:2px 0 0;
}
.research-section-title>p{
  margin:0 0 2px;
  color:var(--muted);
  font-size:.88rem;
  line-height:1.55;
}
.research-eyebrow{
  display:block;
  color:#6f8395;
  font-size:.69rem;
  line-height:1.2;
  font-weight:760;
  letter-spacing:.095em;
  text-transform:uppercase;
}
.research-direction-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
}
.research-direction-card{
  min-width:0;
  min-height:310px;
  display:flex;
  flex-direction:column;
  padding:20px;
  background:#fff;
  border:1px solid #dce6ed;
  border-top:3px solid #4a8abb;
  box-shadow:0 7px 22px rgba(32,66,95,.035);
}
.research-direction-topline{
  display:flex;
  justify-content:space-between;
  align-items:center;
  min-height:40px;
  margin-bottom:13px;
}
.research-direction-number{
  color:#9aabba;
  font-size:.75rem;
  font-weight:780;
  letter-spacing:.08em;
}
.research-direction-icon{
  display:grid;
  place-items:center;
  width:46px;
  height:38px;
  color:#357bb0;
}
.research-direction-icon svg{
  width:44px;
  height:32px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.research-direction-card h3{
  margin:0 0 8px;
  font-size:1.06rem;
  line-height:1.35;
}
.research-direction-card>p{
  margin:0 0 14px;
  color:var(--muted);
  font-size:.88rem;
  line-height:1.55;
}
.research-topic-preview,
.research-topic-line,
.research-highlight-list{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.research-topic-preview{margin-top:auto;padding-top:4px}
.research-topic-preview span,
.research-topic-line span{
  display:inline-block;
  padding:3px 7px;
  border:1px solid #d9e5ed;
  border-radius:999px;
  background:#f7fafc;
  color:#48677e;
  font-size:.69rem;
  line-height:1.35;
}
.research-card-link{
  display:inline-block;
  margin-top:15px;
  font-size:.78rem;
  font-weight:700;
  color:#2f6f9f;
}
.research-direction-details{margin-top:44px}
.research-direction-detail{
  padding:30px 0 32px;
  border-top:1px solid var(--line);
}
.research-direction-detail:first-child{border-top:0;padding-top:12px}
.research-detail-heading{
  display:grid;
  grid-template-columns:52px minmax(0,1fr);
  gap:16px;
  align-items:start;
  margin-bottom:17px;
}
.research-detail-number{
  color:#c8d7e2;
  font-size:2.05rem;
  line-height:1;
  font-weight:740;
  letter-spacing:-.045em;
}
.research-detail-heading h3{
  margin:3px 0 0;
  font-size:1.22rem;
}
.research-example-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-left:68px;
}
.research-example-card{
  padding:16px 17px;
  border-left:3px solid #9fc4dc;
  background:#f7fafc;
}
.research-example-card strong{font-size:.9rem}
.research-example-card p{
  margin:5px 0 0;
  color:var(--muted);
  font-size:.84rem;
  line-height:1.55;
}
.research-topic-line{margin:13px 0 0 68px}
.research-applications{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:22px;
  margin-top:9px;
  padding:14px 16px;
  border:1px solid #dce6ed;
  background:#fff;
}
.research-applications>div{display:flex;flex-wrap:wrap;gap:8px 18px}
.research-applications>div span{
  color:#3f5f77;
  font-size:.8rem;
  font-weight:640;
}

.research-projects-section{margin-top:58px}
.research-projects-title{margin-bottom:30px}
.research-project-group{
  margin-top:42px;
  padding-top:3px;
}
.research-project-group:first-of-type{margin-top:25px}
.research-group-heading{
  display:grid;
  grid-template-columns:8px minmax(0,1fr);
  gap:14px;
  align-items:stretch;
  margin-bottom:16px;
}
.research-group-heading h3{
  margin:3px 0 0;
  font-size:1.2rem;
}
.research-group-mark{display:block;border-radius:1px}
.research-group-mark-blue{background:#3e82b6}
.research-group-mark-teal{background:#4b8d87}
.research-group-mark-warm{background:#e8a02e}
.research-project-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.research-project-card{
  min-width:0;
  padding:17px 18px 18px;
  border:1px solid var(--line);
  background:#fff;
}
.research-project-card h4{
  margin:8px 0 5px;
  font-size:.98rem;
  line-height:1.4;
  letter-spacing:-.01em;
}
.research-project-card>p{
  margin:8px 0 0;
  color:var(--muted);
  font-size:.84rem;
  line-height:1.55;
}
.research-project-meta{
  display:flex;
  flex-wrap:wrap;
  gap:4px 12px;
  color:#71808b;
  font-size:.71rem;
  font-weight:680;
  letter-spacing:.02em;
}
.research-project-meta span+span::before{
  content:"·";
  margin-right:12px;
  color:#afbbc4;
}
.research-role{
  color:#2f6f9f;
  font-size:.75rem;
  font-weight:700;
}
.industry-card{border-top:2px solid #82aca8}
.transfer-card{border-top:2px solid #e8a02e;background:#fffdfa}
.research-previous-projects{
  margin-top:22px;
  padding:18px 20px 2px;
  background:#f7f9fa;
  border:1px solid #e2e8ec;
}
.research-previous-projects>h4{
  margin:0 0 4px;
  color:#566675;
  font-size:.77rem;
  letter-spacing:.07em;
  text-transform:uppercase;
}
.research-previous-row{
  display:grid;
  grid-template-columns:92px minmax(0,1fr);
  gap:16px;
  padding:13px 0;
  border-top:1px solid #e2e8ec;
}
.research-previous-row:first-of-type{border-top:0}
.research-previous-year{
  color:#3e7199;
  font-size:.8rem;
  font-weight:720;
}
.research-previous-row strong{font-size:.86rem}
.research-previous-row p{
  margin:3px 0 0;
  color:var(--muted);
  font-size:.8rem;
  line-height:1.5;
}
.research-highlight-list{margin-top:12px}
.research-highlight-list span{
  padding:3px 7px;
  border:1px solid #ead5ad;
  border-radius:999px;
  background:#fff8e9;
  color:#805f24;
  font-size:.68rem;
  line-height:1.35;
}

/* Contact: identify the research group without turning the page into a logo wall. */
.contact-affiliation{
  display:grid;
  grid-template-columns:64px minmax(0,1fr) auto;
  gap:17px;
  align-items:center;
  max-width:840px;
  margin:-12px 0 27px;
  padding:13px 15px;
  border:1px solid #dbe5ec;
  background:#fff;
  color:var(--text);
  text-decoration:none;
}
.contact-affiliation:hover{
  border-color:#aec8da;
  text-decoration:none;
}
.contact-affiliation img{
  display:block;
  width:58px;
  height:58px;
  object-fit:contain;
}
.contact-affiliation-copy{display:flex;flex-direction:column;min-width:0}
.contact-affiliation-eyebrow{
  color:#7d8b96;
  font-size:.65rem;
  font-weight:760;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.contact-affiliation-copy strong{font-size:.9rem;line-height:1.4}
.contact-affiliation-copy>span:last-child{color:var(--muted);font-size:.78rem}
.contact-affiliation-link{
  color:#2f6f9f;
  font-size:.79rem;
  font-weight:700;
  white-space:nowrap;
}

@media(max-width:1050px){
  .research-direction-grid{grid-template-columns:1fr 1fr}
  .research-direction-card:last-child{grid-column:1/-1;min-height:auto}
}
@media(max-width:760px){
  .section-quick-cta{align-items:flex-start;flex-direction:column;gap:8px}
  .research-section-title{grid-template-columns:1fr;gap:7px;align-items:start}
  .research-direction-grid,
  .research-project-grid,
  .research-example-grid{grid-template-columns:1fr}
  .research-direction-card{min-height:auto}
  .research-direction-card:last-child{grid-column:auto}
  .research-example-grid,
  .research-topic-line{margin-left:0}
  .research-applications{align-items:flex-start;flex-direction:column;gap:9px}
  .research-previous-row{grid-template-columns:1fr;gap:3px}
  .contact-affiliation{grid-template-columns:54px minmax(0,1fr);gap:13px}
  .contact-affiliation img{width:50px;height:50px}
  .contact-affiliation-link{grid-column:2}
}
@media(max-width:520px){
  .research-quick-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
  .research-detail-heading{grid-template-columns:42px minmax(0,1fr);gap:10px}
  .research-detail-number{font-size:1.7rem}
  .research-project-card{padding:15px}
}


/* V4.12.1 — explicit GAPS affiliation + readable Publications search */
.contact-affiliation-wrap{
  max-width:840px;
  margin:-12px 0 28px;
}
.contact-affiliation-wrap .contact-affiliation{
  margin:0;
}
.contact-affiliation img{
  width:62px;
  height:62px;
}
.contact-affiliation-link{
  text-decoration:none;
}

/* The base form rule makes all inputs white-on-blue. Publications uses light controls,
   so force the editable search text, caret and placeholder to a readable dark palette. */
#pubSearch{
  background:#fff !important;
  color:#172334 !important;
  -webkit-text-fill-color:#172334 !important;
  caret-color:#172334;
  border:1px solid #c8d6e1 !important;
  color-scheme:light;
}
#pubSearch::placeholder{
  color:#667482 !important;
  -webkit-text-fill-color:#667482 !important;
  opacity:1 !important;
}
#pubSearch:focus{
  background:#fff !important;
  color:#172334 !important;
  -webkit-text-fill-color:#172334 !important;
}
.pub-toolbar select{
  background:#fff !important;
  color:#172334 !important;
  -webkit-text-fill-color:#172334 !important;
  color-scheme:light;
}

@media(max-width:760px){
  .contact-affiliation img{width:52px;height:52px}
}


/* V4.12.2 — force a fresh GAPS asset after live-site cache review. */
.contact-affiliation img{
  display:block !important;
  width:68px;
  height:68px;
  object-fit:contain;
  opacity:1 !important;
  visibility:visible !important;
}
@media(max-width:760px){
  .contact-affiliation img{width:56px;height:56px}
}


/* V4.12.3 — GAPS belongs with academic profile links, not on Contact. */
.gaps-link-mark{
  display:block;
  width:22px;
  height:22px;
  object-fit:contain;
  flex:0 0 auto;
}
.home-gaps .gaps-link-mark{
  width:23px;
  height:23px;
}
.profile-gaps:hover .gaps-link-mark,
.home-gaps:hover .gaps-link-mark{
  filter:saturate(1.08);
}
@media(max-width:430px){
  .profile-secondary-links{gap:12px;}
  .profile-external{font-size:.74rem;}
  .gaps-link-mark{width:20px;height:20px;}
}


/* ============================================================
   V4.13 — harmonised research projects, supervision filters,
   and content-aware responsive landing
   ============================================================ */

/* Research / Projects, Funding & Transfer:
   the three categories share one visual grammar, with colour used
   only to identify the category rather than changing the structure. */
.research-projects-section{
  margin-top:58px;
}
.research-projects-title{
  margin-bottom:24px;
}
.research-project-group{
  --project-group-accent:#4a8abb;
  --project-group-tint:#f7fbfe;
  margin-top:24px;
  padding:22px;
  border:1px solid #dce6ed;
  border-top:3px solid var(--project-group-accent);
  background:var(--project-group-tint);
  box-shadow:0 8px 24px rgba(32,66,95,.035);
}
.research-project-group:first-of-type{margin-top:18px}
.research-project-group-blue{
  --project-group-accent:#4a8abb;
  --project-group-tint:#f7fbfe;
}
.research-project-group-teal{
  --project-group-accent:#4b8d87;
  --project-group-tint:#f7fbfa;
}
.research-project-group-warm{
  --project-group-accent:#e2a03c;
  --project-group-tint:#fffaf2;
}
.research-group-heading{
  grid-template-columns:7px minmax(0,1fr);
  margin-bottom:18px;
}
.research-group-mark{
  background:var(--project-group-accent) !important;
}
.research-project-grid{gap:12px}
.research-project-card{
  border:1px solid #dce6ed;
  border-top:2px solid var(--project-group-accent);
  background:#fff;
  box-shadow:0 3px 12px rgba(32,66,95,.025);
}
.competitive-card,
.industry-card,
.transfer-card{
  border-top-color:var(--project-group-accent);
  background:#fff;
}
.research-project-group .research-role{
  color:var(--project-group-accent);
}
.research-project-group .research-project-meta{
  color:#677988;
}
.research-previous-projects{
  margin-top:14px;
  padding:16px 18px 2px;
  border:1px solid #dce6ed;
  background:rgba(255,255,255,.72);
}
.research-previous-year{
  color:#3e7199;
}
.research-project-group-warm .research-highlight-list span{
  border-color:#ead5ad;
  background:#fff8e9;
  color:#805f24;
}

/* Supervision now follows the same light-blue control language as Publications. */
.sup-tabs{
  gap:18px;
  border-bottom:1px solid var(--line);
}
.sup-tab{
  background:none !important;
  color:var(--muted) !important;
  border:0 !important;
  border-bottom:3px solid transparent !important;
  border-radius:0 !important;
  padding:10px 0 !important;
  box-shadow:none !important;
}
.sup-tab.is-active{
  color:var(--text) !important;
  font-weight:700;
  border-bottom-color:#2d73b5 !important;
}
.sup-tab:hover{
  color:#2f6f9f !important;
}
.sup-toolbar input,
.sup-toolbar select,
.sup-more select,
.more-filter-button{
  background:#fff !important;
  color:#172334 !important;
  -webkit-text-fill-color:#172334 !important;
  border:1px solid #c8d6e1 !important;
  box-shadow:none;
  color-scheme:light;
}
#supSearch::placeholder{
  color:#667482 !important;
  -webkit-text-fill-color:#667482 !important;
  opacity:1;
}
.sup-toolbar input:focus,
.sup-toolbar select:focus,
.sup-more select:focus,
.more-filter-button:focus{
  outline:none;
  border-color:#6e9fc5 !important;
  box-shadow:0 0 0 2px rgba(47,111,159,.10);
}
.more-filter-button{
  text-align:left;
  -webkit-text-fill-color:#2f6f9f !important;
  color:#2f6f9f !important;
}
.more-filter-button:hover{
  border-color:#6e9fc5 !important;
  background:#f7fbfe !important;
}
.sup-more{
  background:#f7fbfe;
  border-color:#dce6ee;
}

/* Landing: desktop should occupy exactly the available viewport when the
   content fits. min-height (not fixed height) means short screens can still
   grow and scroll rather than clipping content. The 63px includes the
   navigation's 62px minimum height plus its 1px border. */
@media(min-width:851px){
  .page-shell-home{
    min-height:calc(100dvh - 63px);
    padding-top:16px;
    padding-bottom:16px;
  }
  .home-hero{
    min-height:calc(100dvh - 63px - 32px);
  }
}

/* Responsive landing: keep the landing as one composition instead of
   splitting identity/actions into the separate mobile profile header. */
@media(max-width:850px){
  .section-home .mobile-profile-header{display:none}
  .section-home .page-shell-home{
    min-height:0;
    padding:22px 18px 32px;
  }
  .section-home .home-hero{
    display:grid;
    grid-template-columns:minmax(0,1fr) clamp(118px,25vw,170px);
    column-gap:18px;
    row-gap:0;
    min-height:0;
    align-items:start;
    overflow:hidden;
  }
  .section-home .home-hero-copy{display:contents}
  .section-home .home-identity{
    display:block;
    grid-column:1;
    grid-row:1;
    align-self:center;
    min-width:0;
  }
  .section-home .home-avatar-wrap{
    display:flex;
    grid-column:2;
    grid-row:1;
    align-self:start;
    justify-content:center;
    padding:0;
    min-width:0;
  }
  .section-home .home-avatar{
    display:block;
    width:100%;
    height:auto;
    max-width:170px;
    max-height:225px;
    transform:translateY(-5px);
    object-fit:contain;
  }
  .section-home .home-name{
    margin:0 0 10px;
    font-size:clamp(2.05rem,7.2vw,3.05rem);
    line-height:1.01;
  }
  .section-home .home-role{
    font-size:.9rem;
    line-height:1.35;
  }
  .section-home .home-statement,
  .section-home .home-intro,
  .section-home .home-focus,
  .section-home .home-actions{
    grid-column:1/-1;
  }
  .section-home .home-statement{
    margin:20px 0 13px;
    font-size:clamp(1.55rem,5.3vw,2.25rem);
  }
  .section-home .home-intro{
    max-width:none;
    font-size:.98rem;
    line-height:1.6;
  }
  .section-home .home-focus{
    margin-top:24px;
    max-width:none;
  }
  .section-home .home-actions{
    display:flex;
    margin-top:24px;
    gap:14px 18px;
  }
  .section-home .home-hero::after{
    right:-160px;
    bottom:-55px;
  }
}

@media(max-width:620px){
  .section-home .page-shell-home{padding:18px 16px 28px}
  .section-home .home-hero{
    grid-template-columns:minmax(0,1fr) clamp(100px,29vw,132px);
    column-gap:12px;
  }
  .section-home .home-avatar{
    max-width:132px;
    max-height:176px;
  }
  .section-home .home-name{
    font-size:clamp(1.85rem,9vw,2.45rem);
  }
  .section-home .home-statement{
    margin-top:17px;
  }
  .section-home .home-focus{
    gap:12px;
    margin-top:21px;
  }
  .section-home .home-actions{
    gap:11px 15px;
    margin-top:21px;
  }
  .section-home .home-contact{
    min-height:40px;
    padding:8px 16px;
  }
}

@media(max-width:420px){
  .section-home .home-hero{
    grid-template-columns:minmax(0,1fr) 96px;
    column-gap:10px;
  }
  .section-home .home-avatar{
    max-width:96px;
    max-height:132px;
    transform:translateY(0);
  }
  .section-home .home-role{font-size:.82rem}
  .section-home .home-external{font-size:.8rem}
  .section-home .home-gaps .gaps-link-mark{width:21px;height:21px}
}

@media(max-width:760px){
  .research-project-group{padding:17px}
}
@media(max-width:520px){
  .research-project-group{padding:14px}
}

/* ============================================================
   V4.14 — compact 90% visual density
   ============================================================
   The site is intentionally reduced component-by-component rather than
   using CSS zoom/transform. Borders remain crisp and mobile form controls
   keep safe minimum sizes.
   ============================================================ */

:root{
  --max:1062px; /* 90% of the 1180px desktop canvas */
  --header-h:57px;
}

/* Typography scales with the design on desktop/tablet. */
html{font-size:90%}

/* Header: make its real rendered height agree with the landing calculation. */
.nav-wrap{padding:0 22px}
.top-nav{gap:31px;min-height:56px}
.nav-item{
  min-height:56px;
  display:flex;
  align-items:center;
  padding:0;
  line-height:1;
}

/* Global page rhythm. */
.page-shell{
  padding:43px 22px 65px;
  grid-template-columns:198px minmax(0,1fr);
  gap:61px;
}
.profile-card{top:90px}
.avatar{width:131px;height:131px;margin-bottom:20px}
.profile-card h2,.profile-name{margin-bottom:9px}
.profile-links{margin-top:15px;gap:4px}
.profile-actions{margin-top:15px;gap:6px}
.profile-action{min-height:31px;padding:6px 9px}
.profile-secondary-links{gap:13px;padding-top:9px}
.gaps-link-mark{width:20px;height:20px}
.github-icon{width:18px;height:18px}
.orcid-dot{width:20px;height:20px}

.content>h1:first-child{margin-bottom:14px}
.lede{max-width:684px;margin-bottom:31px}
.statement{max-width:702px;margin-bottom:16px}
.intro{max-width:648px;margin-bottom:31px}
.section{margin-top:41px}
.section h2{margin-bottom:15px;padding-bottom:8px}
.section h3{margin-top:25px;margin-bottom:7px}
.two-col{gap:31px}
.three-col{gap:22px}
.clean-card{padding-top:12px}
.plain-list li{padding:12px 0}
.project-block{margin-top:22px}
.project-item{padding:14px 0}
.course{padding:16px 0}

/* Generic controls and lists. */
input,select,button{margin-top:13px;padding:9px 14px}
.pub-toolbar{gap:9px;margin:20px 0}
.pub-toolbar input,.pub-toolbar select{min-width:144px}
#pubSearch{min-width:261px}
.pub-tabs,.sup-tabs{gap:16px;margin-top:18px}
.pub-tab,.sup-tab{padding:9px 0 !important}
.pub-list{margin-top:11px}
.pub-year{margin:25px 0 4px}
.pub-item{padding:13px 0}
.venue-list{column-gap:31px}
.note{padding:11px 13px;margin:14px 0}

/* Teaching cards. */
.degree-grid{gap:14px}
.degree-card{min-height:153px;padding:16px;gap:5px}

/* Supervision density. */
.supervision-overview{gap:9px 20px;margin:20px 0 7px}
.sup-toolbar{gap:8px;margin:16px 0 8px;grid-template-columns:minmax(180px,1.7fr) repeat(4,minmax(108px,1fr))}
.more-filter-button{padding:8px 10px}
.sup-more{gap:11px;padding:11px 13px;margin-bottom:9px}
.sup-result-count{margin-top:9px}
.sup-item{padding:15px 0}
.sup-fields{margin-top:5px}
.student-quick-cta,.section-quick-cta{gap:22px;padding:13px 0;margin:20px 0 7px}
.student-contact-cta{gap:22px;padding-top:17px;margin-top:22px}

/* Contact density. */
.contact-page{max-width:756px;margin-top:25px}
.contact-section{max-width:765px}
.contact-primary{gap:16px}
.contact-grid{gap:16px}
.field{gap:6px}
.field input,.field select,.field textarea{padding:9px 2px}
.message-field{margin-top:22px}
.message-field textarea{min-height:135px}
.contact-divider{margin:27px 0 22px}
.contact-section-heading{margin-bottom:16px}
.file-grid{gap:13px}
.file-field{padding:14px;min-height:94px}
.contact-submit-row{gap:27px;margin-top:25px}
.contact-submit-row button{min-width:131px;padding:9px 16px}
.attachment-disclosure{margin-top:23px;padding-top:12px}

/* Research directions and detail. */
.research-quick-nav{gap:7px 18px;padding:11px 0 13px;margin:-11px 0 5px}
.research-section-title{grid-template-columns:minmax(0,1fr) minmax(225px,.75fr);gap:32px;margin-bottom:18px;padding-bottom:9px}
.research-direction-grid{gap:13px}
.research-direction-card{min-height:279px;padding:18px}
.research-direction-topline{min-height:36px;margin-bottom:12px}
.research-direction-icon{width:41px;height:34px}
.research-direction-icon svg{width:40px;height:29px}
.research-direction-card h3{margin-bottom:7px}
.research-direction-card>p{margin-bottom:13px}
.research-topic-preview,.research-topic-line,.research-highlight-list{gap:5px}
.research-topic-preview span,.research-topic-line span{padding:3px 6px}
.research-card-link{margin-top:14px}
.research-direction-details{margin-top:40px}
.research-direction-detail{padding:27px 0 29px}
.research-direction-detail:first-child{padding-top:11px}
.research-detail-heading{grid-template-columns:47px minmax(0,1fr);gap:14px;margin-bottom:15px}
.research-example-grid{gap:11px;margin-left:61px}
.research-example-card{padding:14px 15px}
.research-topic-line{margin-top:12px;margin-left:61px}
.research-applications{gap:20px;margin-top:8px;padding:13px 14px}
.research-applications>div{gap:7px 16px}

/* Research / Projects, Funding & Transfer. */
.research-projects-section{margin-top:52px}
.research-projects-title{margin-bottom:22px}
.research-project-group{margin-top:22px;padding:20px}
.research-project-group:first-of-type{margin-top:16px}
.research-group-heading{grid-template-columns:6px minmax(0,1fr);gap:13px;margin-bottom:16px}
.research-project-grid{gap:11px}
.research-project-card{padding:15px 16px 16px}
.research-project-card h4{margin:7px 0 5px}
.research-project-card>p{margin-top:7px}
.research-project-meta{gap:4px 11px}
.research-project-meta span+span::before{margin-right:11px}
.research-previous-projects{margin-top:13px;padding:14px 16px 2px}
.research-previous-row{grid-template-columns:83px minmax(0,1fr);gap:14px;padding:12px 0}
.research-highlight-list{margin-top:11px}

/* Landing: use the same 90% geometry while keeping it exactly one viewport
   whenever the content fits. */
@media(min-width:851px){
  .page-shell-home{
    min-height:calc(100dvh - var(--header-h));
    padding-top:14px;
    padding-bottom:14px;
  }
  .home-hero{
    min-height:calc(100dvh - var(--header-h) - 28px);
    grid-template-columns:minmax(0,1.05fr) minmax(378px,.95fr);
    gap:34px;
  }
  .home-hero-copy{padding:18px 0 13px}
  .home-name{font-size:clamp(3rem,4.68vw,5.15rem);margin-bottom:16px}
  .home-role{margin:2px 0}
  .home-statement{max-width:558px;margin:30px 0 16px;font-size:clamp(1.7rem,2.115vw,2.45rem)}
  .home-intro{max-width:549px;line-height:1.65}
  .home-focus{max-width:639px;margin-top:31px}
  .home-focus-item{gap:10px;padding:0 16px}
  .home-focus-item svg{width:35px;height:28px}
  .home-actions{gap:18px;margin-top:28px}
  .home-contact{min-height:40px;padding:9px 18px}
  .home-contact svg{width:18px;height:18px}
  .home-gaps .gaps-link-mark{width:21px;height:21px}
  .home-avatar-wrap{padding-bottom:16px}
  .home-avatar{
    height:min(70.2svh,558px);
    max-width:108%;
    transform:translateY(-13px);
  }
  .home-hero::after{right:-90px;bottom:-27px;width:684px;height:504px}
  .home-hero::before{bottom:32px;width:450px;height:378px}
}

/* Short desktop displays: compact one more step instead of introducing a
   meaningless few-pixel page scroll. */
@media(min-width:851px) and (max-height:800px){
  .page-shell-home{padding-top:10px;padding-bottom:10px}
  .home-hero{min-height:calc(100dvh - var(--header-h) - 20px)}
  .home-hero-copy{padding:2px 0}
  .home-name{margin-bottom:10px}
  .home-statement{margin-top:18px;margin-bottom:11px}
  .home-focus{margin-top:20px}
  .home-actions{margin-top:18px}
  .home-avatar{height:min(72svh,531px);transform:translateY(-15px)}
}

@media(max-width:1050px) and (min-width:851px){
  .home-hero{grid-template-columns:minmax(0,1fr) minmax(324px,.82fr);gap:18px}
  .home-name{font-size:clamp(3rem,4.5vw,4.35rem)}
  .home-focus-item{padding:0 11px}
  .sup-toolbar{grid-template-columns:1fr 1fr 1fr}
}

/* Responsive layouts: reduce geometry by ~10%, but don't shrink critical
   mobile typography or form controls below comfortable reading/touch sizes. */
@media(max-width:850px){
  .mobile-profile-header{padding:16px 16px 11px}
  .mobile-profile-header .profile-card{
    grid-template-columns:minmax(0,1fr) 83px;
    column-gap:16px;
    row-gap:11px;
  }
  .mobile-profile-header .avatar{width:83px;height:83px}
  .mobile-profile-header .profile-actions{gap:6px}
  .top-nav{min-height:44px;gap:18px}
  .nav-item{min-height:44px;padding:0;line-height:1}
  .nav-wrap{padding:0 16px}
  .page-shell{padding:29px 20px 58px;gap:31px}

  .section-home .page-shell-home{padding:20px 16px 29px}
  .section-home .home-hero{
    grid-template-columns:minmax(0,1fr) clamp(106px,22.5vw,153px);
    column-gap:16px;
  }
  .section-home .home-avatar{max-width:153px;max-height:203px;transform:translateY(-4px)}
  .section-home .home-name{font-size:clamp(2.05rem,6.48vw,3.05rem);margin-bottom:9px}
  .section-home .home-role{line-height:1.32}
  .section-home .home-statement{margin:18px 0 12px;font-size:clamp(1.55rem,4.77vw,2.25rem)}
  .section-home .home-intro{line-height:1.55}
  .section-home .home-focus{margin-top:22px}
  .section-home .home-actions{margin-top:22px;gap:13px 16px}
  .section-home .home-hero::after{right:-144px;bottom:-50px;width:531px;height:378px}

  .research-direction-card:last-child{min-height:auto}
}

@media(max-width:760px){
  /* Keep browser-safe 16px editable text while shrinking the surrounding UI. */
  .field input,.field select,.field textarea{font-size:16px}
  .contact-grid{gap:9px}
  .contact-primary{gap:9px}
  .message-field{margin-top:11px}
  .message-field textarea{min-height:80px;max-height:131px}
  .contact-divider{margin:14px 0 11px}
  .contact-submit-row{margin-top:13px;gap:7px}
  .research-project-group{padding:15px}
}

@media(max-width:620px){
  /* Do not make already-small mobile type 10% smaller; density comes from
     spacing and image/card geometry at this breakpoint. */
  html{font-size:100%}
  .section-home .page-shell-home{padding:16px 14px 25px}
  .section-home .home-hero{grid-template-columns:minmax(0,1fr) clamp(90px,26vw,119px);column-gap:11px}
  .section-home .home-avatar{max-width:119px;max-height:158px}
  .section-home .home-name{font-size:clamp(1.85rem,8.1vw,2.45rem)}
  .section-home .home-statement{margin-top:15px;font-size:clamp(1.5rem,4.8vw,2.1rem)}
  .section-home .home-focus{gap:11px;margin-top:19px}
  .section-home .home-actions{gap:10px 14px;margin-top:19px}
  .section-home .home-contact{min-height:38px;padding:7px 14px}
}

@media(max-width:520px){
  .research-project-group{padding:13px}
  .research-direction-card{padding:16px}
  .research-project-card{padding:14px}
}

@media(max-width:420px){
  .section-home .home-hero{grid-template-columns:minmax(0,1fr) 86px;column-gap:9px}
  .section-home .home-avatar{max-width:86px;max-height:119px}
  .section-home .home-role{font-size:.8rem}
  .section-home .home-external{font-size:.76rem}
  .section-home .home-gaps .gaps-link-mark{width:19px;height:19px}
}

/* ============================================================
   V4.14.1 — consistent mobile profile + fuller mobile landing
   ============================================================ */

/* All secondary pages must use exactly the same mobile profile card.
   Keep this late in the cascade so page-specific components cannot alter it. */
@media(max-width:850px){
  body:not(.section-home) .mobile-profile-header{
    display:block;
    width:100%;
    max-width:var(--max);
    margin:0 auto;
    padding:16px 16px 11px;
    background:#f8fafc;
    border-bottom:0;
  }
  body:not(.section-home) .mobile-profile-header .profile-card{
    position:static;
    display:grid;
    grid-template-columns:minmax(0,1fr) 83px;
    grid-template-areas:
      "copy avatar"
      "actions actions";
    column-gap:16px;
    row-gap:11px;
    align-items:start;
    width:100%;
    margin:0;
  }
  body:not(.section-home) .mobile-profile-header .profile-copy{
    grid-area:copy;
    min-width:0;
    align-self:center;
  }
  body:not(.section-home) .mobile-profile-header .avatar{
    grid-area:avatar;
    order:initial;
    justify-self:end;
    width:83px;
    height:83px;
    margin:0;
  }
  body:not(.section-home) .mobile-profile-header .profile-actions{
    grid-area:actions;
    display:block;
    width:100%;
    margin:0;
  }
  body:not(.section-home) .mobile-profile-header .profile-action-primary{
    width:100%;
  }
  body:not(.section-home) .mobile-profile-header .profile-secondary-links{
    display:flex;
    align-items:center;
    justify-content:flex-start;
    flex-wrap:wrap;
    gap:13px;
    padding-top:9px;
  }
  body:not(.section-home) .mobile-profile-header .profile-name{
    margin:0 0 7px;
    font-size:1.15rem;
    line-height:1.12;
  }
  body:not(.section-home) .mobile-profile-header .profile-title,
  body:not(.section-home) .mobile-profile-header .profile-role{
    margin:3px 0;
    font-size:.82rem;
    line-height:1.35;
  }
}

@media(max-width:430px){
  body:not(.section-home) .mobile-profile-header{
    padding:15px 14px 10px;
  }
  body:not(.section-home) .mobile-profile-header .profile-card{
    grid-template-columns:minmax(0,1fr) 82px;
    column-gap:13px;
  }
  body:not(.section-home) .mobile-profile-header .avatar{
    width:82px;
    height:82px;
  }
  body:not(.section-home) .mobile-profile-header .profile-secondary-links{
    gap:12px;
  }
}

/* Mobile landing: make the hero consume the available viewport when its
   content fits, while retaining natural scrolling on genuinely short screens.
   Explicit grid rows also make the composition deterministic across phones. */
@media(max-width:850px){
  .section-home .page-shell-home{
    min-height:calc(100dvh - 45px);
    padding:28px 16px 20px;
  }
  .section-home .home-hero{
    min-height:calc(100dvh - 45px - 48px);
    grid-template-rows:auto auto auto auto auto;
    row-gap:14px;
    align-content:space-between;
    align-items:start;
  }
  .section-home .home-identity{
    grid-column:1;
    grid-row:1;
    align-self:start;
    padding-top:3px;
  }
  .section-home .home-avatar-wrap{
    grid-column:2;
    grid-row:1;
    align-self:start;
  }
  .section-home .home-avatar{
    transform:translateY(5px);
  }
  .section-home .home-statement{
    grid-column:1/-1;
    grid-row:2;
    margin:0;
  }
  .section-home .home-intro{
    grid-column:1/-1;
    grid-row:3;
  }
  .section-home .home-focus{
    grid-column:1/-1;
    grid-row:4;
    margin-top:0;
  }
  .section-home .home-actions{
    grid-column:1/-1;
    grid-row:5;
    width:100%;
    margin-top:0;
  }
}

@media(max-width:620px){
  .section-home .page-shell-home{
    min-height:calc(100dvh - 45px);
    padding:26px 14px 18px;
  }
  .section-home .home-hero{
    min-height:calc(100dvh - 45px - 44px);
    grid-template-columns:minmax(0,1fr) clamp(96px,28vw,124px);
    column-gap:12px;
    row-gap:13px;
  }
  .section-home .home-avatar{
    max-width:124px;
    max-height:166px;
    transform:translateY(6px);
  }
  .section-home .home-name{
    margin-bottom:9px;
  }
  .section-home .home-statement{
    margin:0;
  }
  .section-home .home-focus{
    gap:12px;
    margin-top:0;
  }
  .section-home .home-actions{
    gap:11px 18px;
    justify-content:space-between;
    margin-top:0;
  }
}

@media(max-width:420px){
  .section-home .page-shell-home{
    padding-top:25px;
    padding-bottom:17px;
  }
  .section-home .home-hero{
    min-height:calc(100dvh - 45px - 42px);
    grid-template-columns:minmax(0,1fr) 100px;
    column-gap:10px;
    row-gap:12px;
  }
  .section-home .home-avatar{
    max-width:100px;
    max-height:138px;
    transform:translateY(7px);
  }
  .section-home .home-name{
    font-size:clamp(1.9rem,8.6vw,2.45rem);
  }
  .section-home .home-actions{
    justify-content:flex-start;
    column-gap:20px;
    row-gap:11px;
  }
}
