*{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{margin:0;background:#f9f9f9;color:#333;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;line-height:1.6}.container{width:min(1280px,100%);padding:0 24px;margin:auto}a{color:#1a2b3c;text-underline-offset:4px}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:3px solid #5788b8;outline-offset:4px}button{font:inherit;cursor:pointer}.skip{position:fixed;left:-9999px;z-index:100;background:white;padding:12px}.skip:focus{left:12px;top:12px}.site-header{position:sticky;top:0;z-index:20;background:#1a2b3c;box-shadow:0 2px 6px #0002}.nav-shell{display:flex;align-items:center;min-height:56px;gap:22px}.home-link{color:#e5e7eb;text-decoration:none;padding:5px 16px;border-radius:5px;font-size:28px;line-height:1.2}nav{display:flex;justify-content:space-around;align-items:center;gap:12px;flex:1}nav a{color:#d1d5db;text-decoration:none;padding:9px 14px;border-radius:5px}nav a:hover,nav a[aria-current],.home-link[aria-current]{background:#374151;color:white}.mobile-name{display:none}.menu-toggle{display:none}main.container{padding-top:26px;padding-bottom:42px;min-height:80vh}.card{background:#fff;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.intro-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(270px,1fr);gap:28px;margin-bottom:28px}.profile-card{display:flex;align-items:center;gap:30px;padding:32px;min-width:0}.portrait{height:240px;width:240px;border-radius:50%;overflow:hidden;flex-shrink:0;background:#edf0f3}.portrait img{height:100%;width:100%;object-fit:cover;object-position:center}.portrait-placeholder{height:100%;display:grid;place-items:center;color:#65717c;font-size:15px;border:1px solid #dde3e8;border-radius:50%}.profile-copy{min-width:0}h1,h2,h3{color:#111827;line-height:1.25}h1{font-size:36px;margin:0 0 10px;font-weight:700}h2{font-size:28px;margin:0 0 20px}h3{font-size:20px;margin:0 0 12px}.role{color:#64707d;font-weight:500;letter-spacing:.02em;font-size:14px;margin:0 0 17px}p{margin:0 0 18px}.profile-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}.button{display:inline-flex;align-items:center;justify-content:center;padding:9px 15px;border-radius:5px;background:#1a2b3c;color:#fff;font-size:14px;font-weight:500;text-decoration:none;border:1px solid #1a2b3c}.button:hover{background:#2b4055}.button.secondary{background:#fff;border-color:#d1d5db;color:#374151}.button.secondary:hover{background:#f3f4f6}.updates-card{padding:24px;display:flex;flex-direction:column;min-width:0;max-height:380px}.updates-card h2{font-size:20px;margin-bottom:13px}.updates-scroll{overflow:auto;flex:1}.update{display:block;text-decoration:none;padding:12px 0;border-bottom:1px solid #eee}.update:hover h3,.update:hover h2{text-decoration:underline}.update time{color:#64707d;font-size:14px;display:block;margin-bottom:5px}.update h3{font-size:16px;margin-bottom:7px}.update p{font-size:14px;color:#59636e;line-height:1.5;margin-bottom:0}.text-link{font-size:14px;font-weight:500;padding-top:16px;margin-top:16px;border-top:1px solid #eee;text-decoration:none}.text-link:hover{text-decoration:underline}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px}.section-heading h2{margin:0}.carousel-controls{display:flex;gap:8px}.carousel-controls[hidden]{display:none}.carousel-controls button{border:1px solid #d9dee3;background:white;border-radius:50%;width:38px;height:38px;font-size:26px;line-height:1}.carousel-controls button:disabled{opacity:.35;cursor:default}.work-track{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 48px)/3);gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 14px;scrollbar-width:thin}.work-card{display:flex;flex-direction:column;min-width:0;text-decoration:none;border-left:4px solid #426b94;overflow:hidden;scroll-snap-align:start;transition:box-shadow .2s}.work-card:hover{box-shadow:0 8px 16px #0002}.work-image{aspect-ratio:16/9;background:#edf0f3;overflow:hidden}.work-image img{width:100%;height:100%;object-fit:cover;transition:transform .25s}.work-card:hover img{transform:scale(1.03)}.image-placeholder{display:flex;align-items:center;justify-content:center;color:#687582;font-size:14px;border-bottom:1px solid #e5e9ed}.work-body{padding:21px;display:flex;flex-direction:column;flex:1}.work-body h3{margin:10px 0 12px}.work-body p{font-size:15px;color:#59636e}.category{font-size:13px;color:#426b94;font-weight:600}.category-dataset{border-color:#318461}.category-dataset .category{color:#287450}.category-dissertation{border-color:#756bb1}.category-dissertation .category{color:#685ca1}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:10px}.tags span{font-size:12px;background:#f0f2f4;color:#4b5563;border-radius:4px;padding:3px 7px}.featured{margin-bottom:28px}.contact-card{padding:30px;text-align:center}.contact-card h2{font-size:24px;margin-bottom:10px}.contact-card p{color:#606b76}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.site-footer{border-top:1px solid #e2e5e9;background:#fff;font-size:14px;color:#68727c}.footer-inner{display:flex;justify-content:space-between;gap:20px;padding-top:22px;padding-bottom:22px}.article-card{max-width:960px;margin:6px auto;padding:40px}.article-header{border-bottom:1px solid #e6e9ed;padding-bottom:22px;margin-bottom:25px}.article-header h1{font-size:32px}.eyebrow{color:#607589;font-size:14px;text-transform:uppercase;letter-spacing:.08em}.meta,.muted{color:#64707d;font-size:14px}.prose{font-size:17px;max-width:78ch}.prose h2{font-size:25px;margin:32px 0 16px}.prose h3{margin:26px 0 14px}.prose ul{padding-left:23px}.prose li{margin-bottom:9px}.prose img{max-width:100%;height:auto}.prose a{color:#36648b}.page-heading{margin:10px 0 28px}.page-heading h1{margin-bottom:16px}.research-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.updates-list{padding:20px 30px;max-width:960px}.updates-list .update{padding:20px 0}.updates-list h2{font-size:22px;margin-bottom:12px}@media(max-width:1120px){.intro-grid{grid-template-columns:1fr}.updates-card{max-height:none}.updates-scroll{max-height:220px}.research-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:800px){.container{padding-left:18px;padding-right:18px}.nav-shell{flex-wrap:wrap;gap:0;justify-content:space-between}.mobile-name{display:inline;font-size:16px;margin-left:12px}.home-link{padding:8px 0;display:flex;align-items:center}.menu-toggle{display:block;color:white;border:1px solid #75808b;background:transparent;border-radius:4px;padding:5px 12px;font-size:14px}nav{flex-basis:100%;display:flex;flex-direction:column;align-items:stretch;padding:8px 0 16px;gap:4px}.js nav:not(.is-open){display:none}.profile-card{flex-direction:column;text-align:center;padding:28px 24px;gap:22px}.portrait{width:210px;height:210px}.profile-actions{justify-content:center}.work-track{grid-auto-columns:calc((100% - 24px)/2)}h1{font-size:32px}.article-card{padding:28px 24px}.article-header h1{font-size:28px}}@media(max-width:540px){.work-track{grid-auto-columns:88%}.research-grid{grid-template-columns:1fr}.footer-inner{flex-direction:column;gap:5px}.contact-card{padding:26px 18px}h2{font-size:25px}.role{font-size:15px}.profile-card{padding:26px 20px}.article-card{padding:25px 20px}.prose{font-size:16px}.updates-list{padding:16px 22px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
/* Portrait and symbols on the left; biography on the right */
@media (min-width: 801px) {
  .profile-card {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    align-items: start;
    gap: 30px;
  }

  .profile-sidebar {
    width: 240px;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .profile-sidebar .portrait {
    margin-top: 0;
  }

  .profile-copy {
    min-width: 0;
    text-align: left;
  }
}


.sidebar-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-top: 18px;
  width: 100%;
}

.sidebar-actions .button {
  width: 100%;
  max-width: 210px;
  text-align: center;
}

/* Centre the portrait and icon row in the left column */
.profile-sidebar {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.profile-socials {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  gap: 20px;
  margin-top: 25px;
}

.profile-socials a {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: 24px;
  height: 28px;
  flex-shrink: 0;
  color: #246575;
}

.profile-socials i {
  font-size: 20px;
  line-height: 1;
}

.profile-socials a,
.profile-socials a:hover,
.profile-socials a:focus,
.profile-socials i {
  text-decoration: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
}

.research-overview > h1 {
  margin-bottom: 24px;
}

.research-overview-content > p,
.research-overview-content > ul,
.research-overview-content > ol {
  max-width: 85ch;
}

.research-overview-content > h2 {
  margin-top: 40px;
  margin-bottom: 18px;
}

.research-overview-content > .research-grid {
  margin-top: 24px;
  margin-bottom: 40px;
}

/* Wider text on the research overview page */
.research-overview-content,
.research-overview-content > p,
.research-overview-content > ul,
.research-overview-content > ol {
  max-width: none;
  width: 100%;
}

.page-heading .prose {
  max-width: none;
}


.research-theme {
  padding: 32px;
  margin: 32px 0;
}

.research-theme > h2 {
  margin: 0 0 20px;
}

.research-theme-text {
  width: 100%;
  max-width: none;
}

.research-theme-text > p,
.research-theme-text > ul,
.research-theme-text > ol {
  max-width: none;
}

.research-theme .research-grid {
  margin-top: 28px;
}

@media (max-width: 540px) {
  .research-theme {
    padding: 22px;
  }
}

.research-detail {
  padding: 36px;
}

.research-detail-header {
  display: flex;
  align-items: flex-start;
  gap: 32px;
  padding-bottom: 28px;
  margin-bottom: 28px;
  border-bottom: 1px solid #e6e9ed;
}

.research-detail-image {
  width: 240px;
  height: auto;
  flex-shrink: 0;
  border-radius: 6px;
}

.research-detail-heading {
  flex: 1;
  min-width: 0;
}

.research-detail-heading h1 {
  font-size: 32px;
  margin-bottom: 18px;
}

.research-detail-summary {
  color: #59636e;
  margin-bottom: 18px;
}

.research-detail-summary p {
  margin-bottom: 0;
}

.research-detail-heading .tags {
  margin-top: 14px;
}

.research-detail-content {
  max-width: none;
}

.research-back {
  display: inline-block;
  margin-top: 28px;
}

@media (max-width: 800px) {
  .research-detail {
    padding: 24px;
  }

  .research-detail-header {
    flex-direction: column;
  }

  .research-detail-image {
    width: min(240px, 100%);
  }

  .research-detail-heading h1 {
    font-size: 28px;
  }
}

.datasets-page-title {
  margin: 10px 0 24px;
}

.research-detail-heading h2 {
  font-size: 32px;
  margin: 0 0 18px;
}

@media (max-width: 800px) {
  .research-detail-heading h2 {
    font-size: 28px;
  }
}

.teaching-tags {
  margin: 12px 0 28px;
  padding-top: 0;
}

.teaching-tags span {
  font-size: 13px;
}

.contact-email {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
  color: #246575;
  text-decoration: none;
}

.contact-email i {
  font-size: 20px;
}

.contact-email span {
  overflow-wrap: anywhere;
}

.contact-email:hover span {
  text-decoration: underline;
}

.contact-social-heading {
  margin: 32px 0 12px;
  font-size: 22px;
}

.profile-socials.contact-socials {
  justify-content: flex-start;
  width: auto;
  margin-top: 12;
}

.contact-socials a i {
  font-size: 20px;
}


.teaching-image {
  display: block;
  width: 720px;
  max-width: 300%;
  height: auto;
  margin: 24px 0 32px;
  border-radius: 6px;
}


.teaching-page-title {
  margin: 10px 0 24px;
}

.teaching-image {
  margin-top: 0;
}

.cv-page-title {
  margin: 10px 0 24px;
}

.cv-page-title {
  margin: 10px 0 24px;
}

.cv-preview {
  display: block;
  width: 100%;
  height: 1000px;
  border: 1px solid #e2e5e9;
  border-radius: 4px;
}

@media (max-width: 800px) {
  .cv-preview {
    height: 75vh;
  }
}


.research-theme-intro {
  display: flex;
  align-items: flex-start;
  gap: 20px;
}

.research-theme-image {
  display: block;
  width: 280px;
  max-width: 40%;
  height: auto;
  flex-shrink: 0;
  border-radius: 6px;
}

.research-theme-copy {
  flex: 1;
  min-width: 0;
}

.research-theme-copy h2 {
  margin: 0 0 20px;
}

/* Stack the image and text on smaller screens */
@media (max-width: 800px) {
  .research-theme-intro {
    flex-direction: column;
  }

  .research-theme-image {
    width: 260px;
    max-width: 100%;
  }
}

/* Less space inside the first research panel */
.research-theme:first-of-type {
  padding-top: 15px;
  padding-bottom: 1px;
}

/* Remove extra space around the text */
.research-theme:first-of-type .research-theme-copy > :first-child {
  margin-top: 0;
}

.research-theme:first-of-type .research-theme-copy > :last-child {
  margin-bottom: 0;
}

.research-theme:first-of-type .research-grid {
  margin-top: 18px;
  margin-bottom: 8px;
}

.site-header {
  background: #1d5260;
}

/* Navigation hover and active page */
nav a:hover,
nav a[aria-current],
.home-link[aria-current] {
  background: #1d5260;
  color: #fff;
}

/* Dark green borders on all project cards */
.work-card {
  border-left-color: #246575;
}

/* Matching project category labels */
.work-card .category {
  color: #246575;
}

.button {
  background: #1d5260;
  border-color: #1d5260;
  color: #fff;
}

.button:hover {
  background: #173f49;
  border-color: #173f49;
}

/* Keep secondary buttons white with a matching border */
.button.secondary {
  background: #fff;
  border-color: #1d5260;
  color: #1d5260;
}

.button.secondary:hover {
  background: #eef4f5;
}

.home-link.brand-link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
  color: #fff;
  text-decoration: none;
  flex-shrink: 0;
}

.nav-portrait {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: 50%;
  flex-shrink: 0;
}

.brand-name {
  display: inline;
  font-size: 18px;
  font-weight: 600;
  white-space: nowrap;
}

@media (max-width: 540px) {
  .nav-portrait {
    width: 34px;
    height: 34px;
  }

  .brand-name {
    font-size: 16px;
  }
}

.brand-link > span[aria-hidden="true"] {
  position: relative;
  top: -3.5px;
}