/* Compact academic layer on top of the original Hielo template.
   One accent colour, consistent alignment, static/mobile-first navigation. */
:root{--accent:#8a4680;--accent-soft:#f7f1f6;--ink:#555;--muted:#8b8b8b;--soft:#f2f2f2;--line:#ddd;--white:#fff;--topbar:58px}
html{scroll-behavior:smooth;font-size:16px}body{font-size:1rem;line-height:1.62;color:var(--ink)}a{color:var(--accent);text-decoration:none}a:hover{color:#74396b;text-decoration:none}.inner{max-width:72rem}.wrapper.compact-section{padding:2.15rem 0}.wrapper.compact-title{padding:2.6rem 0}.box .content{padding:1.75rem}header.major{margin-bottom:.65rem}.align-center>p{margin-bottom:.45rem}.align-center h2{margin-bottom:.9rem}

/* Top navigation: visible on desktop, compact dropdown only on phones. */
.site-topbar{height:var(--topbar);position:absolute;top:0;left:0;right:0;z-index:1000;background:rgba(20,20,20,.58);color:#fff}.subpage .site-topbar{background:rgba(28,28,28,.91)}.topbar-inner{height:100%;display:flex;align-items:center;gap:1.4rem}.topbar-brand{display:flex;align-items:baseline;gap:.55rem;color:#fff!important;white-space:nowrap}.topbar-brand strong{font-family:Lato,sans-serif;font-weight:700;font-size:.92rem}.topbar-brand span{font-size:.68rem;color:rgba(255,255,255,.63)}.topbar-nav{margin-left:auto;display:flex;align-items:center;gap:1.1rem}.topbar-nav a{color:rgba(255,255,255,.78);font-size:.67rem;letter-spacing:.08rem;text-transform:uppercase;border:0;text-decoration:none}.topbar-nav a:hover{color:#fff}.topbar-toggle{display:none;margin-left:auto;border:0;background:transparent;color:#fff;font-size:1.15rem;padding:.35rem;cursor:pointer}

/* Home hero: intentionally much smaller than stock Hielo. */
.compact-banner{height:36vh;min-height:290px;max-height:390px}.compact-banner article{height:100%}.compact-banner article img{height:100%;object-fit:cover}.compact-banner .inner{padding:var(--topbar) 1rem 0}.compact-banner h2{font-size:2.45rem;margin:.05em 0 .15em;letter-spacing:.015em}.compact-banner header p{font-size:.72rem;letter-spacing:.14rem;margin-bottom:.25rem}.hero-badges{display:flex;gap:.35rem;justify-content:center;flex-wrap:wrap;margin-top:.65rem}.hero-badges span{border:1px solid rgba(255,255,255,.6);border-radius:2px;padding:.18rem .45rem;font-size:.62rem;letter-spacing:.04rem;text-transform:uppercase;background:rgba(0,0,0,.15)}

/* v3-like statistics strip. */
.stats-strip{background:#fff;border-bottom:1px solid var(--line)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);margin:auto}.stats-grid a{padding:.8rem .7rem;text-align:center;border-right:1px solid var(--line);color:var(--ink)}.stats-grid a:last-child{border-right:0}.stats-grid strong{display:block;font-family:Lato,sans-serif;font-weight:900;font-size:1.55rem;line-height:1;color:var(--accent)}.stats-grid span{display:block;margin-top:.3rem;font-size:.58rem;letter-spacing:.09rem;color:#888}.stats-grid a:hover{background:var(--accent-soft)}

/* Shared compact UI language. */
.badges{display:flex;gap:.3rem;flex-wrap:wrap;align-items:center}.badge{display:inline-flex;align-items:center;max-width:100%;padding:.18rem .43rem;border:1px solid #d2d2d2;border-radius:2px;font-size:.64rem;line-height:1.22;background:#fff;color:#606060;vertical-align:middle}.badge.accent{background:var(--accent);border-color:var(--accent);color:#fff}.badge.keyword{background:#f7f7f7;color:#666}.badge.light{background:transparent;border-color:rgba(255,255,255,.48);color:#fff}.badge.score{border-color:#cdb8c9;background:var(--accent-soft);color:#703969}.keyword-badges{margin:.55rem 0}.vertical-badges{flex-direction:column;align-items:flex-start}.mini-action,.text-action{display:inline-flex;align-items:center;justify-content:center;text-decoration:none!important}.mini-action{border:1px solid var(--accent);border-radius:2px;background:#fff;color:var(--accent)!important;font-size:.63rem;font-weight:600;line-height:1.15;padding:.3rem .48rem;margin:0 .25rem .25rem 0;white-space:nowrap;box-shadow:none;cursor:pointer;text-transform:none;letter-spacing:0}.mini-action:hover{background:var(--accent-soft);color:#6e3566!important}.mini-action.primary{background:var(--accent);color:#fff!important}.mini-action.primary:hover{background:#763d6e}.text-action{color:var(--accent)!important;font-size:.72rem;font-weight:600;white-space:nowrap}.text-action:hover{color:#6e3566!important}.section-link{font-weight:600;color:var(--accent)!important;text-decoration:none!important;border-bottom:0!important}.light-link{color:#fff!important;opacity:.8}.light-link:hover{opacity:1}.button,.button.small,.button.special,.button.alt,.legacy-content .button{height:auto!important;line-height:1.15!important;padding:.36rem .55rem!important;border:1px solid var(--accent)!important;background:#fff!important;color:var(--accent)!important;box-shadow:none!important;font-size:.64rem!important;text-transform:none!important;letter-spacing:0!important}.button.special{background:var(--accent)!important;color:#fff!important}

.profile-two-col,.split-2{display:grid;grid-template-columns:1.4fr 1fr;gap:1.75rem;align-items:start}.profile-links{border-left:1px solid var(--line);padding-left:1.4rem}.profile-links h3{margin-top:0}.intro-copy{max-width:58rem;margin-left:auto;margin-right:auto}

/* Compact lists used consistently on the homepage. */
.summary-list{max-width:62rem;margin:1rem auto 0}.summary-row{display:grid;grid-template-columns:118px minmax(0,1fr);gap:.9rem;align-items:start;padding:.72rem .1rem;border-top:1px solid rgba(255,255,255,.2)}.summary-row:first-child{border-top:0}.summary-meta{display:flex;gap:.25rem;flex-wrap:wrap;padding-top:.12rem}.summary-body h3{font-size:1rem;margin:0 0 .18rem}.summary-body p{font-size:.8rem;margin:0}.dark-summary .summary-body h3,.dark-summary .summary-body h3 a{color:#fff}.dark-summary .summary-body p{color:#aaa}

/* Teaching: schedule below course name, no internal semester identifier. */
.course-list{display:flex;flex-direction:column}.course-row{display:grid;grid-template-columns:92px minmax(0,1fr) 105px;gap:.9rem;padding:.78rem 0;border-top:1px solid var(--line);align-items:start}.course-row:first-child{border-top:0}.course-code{font-family:Lato,sans-serif;font-weight:900;color:#333;font-size:.82rem;letter-spacing:.035rem;padding-top:.15rem}.course-main h3{font-size:1rem;margin:0 0 .2rem;color:#444}.course-schedule{display:flex;flex-wrap:wrap;gap:.25rem .7rem;margin:0 0 .32rem;color:#777;font-size:.72rem}.course-desc{font-size:.8rem;line-height:1.45;margin:.2rem 0 .35rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-side{text-align:right;padding-top:.1rem}.course-list.compact .course-desc{display:-webkit-box}.academic-year{margin-top:1.65rem}.academic-year:first-of-type{margin-top:1rem}.academic-year>.major{border-bottom:1px solid #bbb;padding-bottom:.3rem}.academic-year>.major h2{font-size:1.35rem;margin:0}.teaching-note{padding:.65rem .85rem;background:var(--accent-soft);border-left:3px solid var(--accent);margin-bottom:.8rem;font-size:.8rem}

/* Course details: no extra dark title row. */
.course-title,.project-title{padding:calc(var(--topbar) + 1.25rem) 0 1.2rem;background:#fff;border-bottom:1px solid var(--line);text-align:center}.course-title p,.project-title p{margin:0 0 .25rem;color:#999;font-size:.68rem;text-transform:uppercase;letter-spacing:.09rem}.course-title h1,.project-title h1{font-size:1.75rem;margin:0;color:#444}.course-title-schedule{display:flex;justify-content:center;flex-wrap:wrap;gap:.3rem 1rem;margin-top:.45rem;font-size:.73rem;color:#777}.course-warning{max-width:72rem;margin:1rem auto 0;padding:.7rem .9rem;border:1px solid #d7c2d3;border-left:4px solid var(--accent);background:var(--accent-soft);font-size:.8rem}.course-detail-meta{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap;padding:0 0 .8rem;border-bottom:1px solid var(--line);margin-bottom:.9rem}.legacy-content .wrapper{padding:1.25rem 0!important}.legacy-content .inner{width:100%!important;max-width:none!important}.legacy-content .box{box-shadow:none!important;margin-bottom:.8rem}.legacy-content table{font-size:.83rem}.legacy-content h2{margin-top:1.25rem}.legacy-content h3{margin-top:1rem}

/* Publications and faceted filters. */
.export-row{display:flex;gap:.25rem;flex-wrap:wrap;margin-bottom:.8rem}.facet-panel{border:1px solid var(--line);background:#fafafa;padding:.8rem;margin-bottom:1.2rem}.facet-tools{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;gap:.5rem;align-items:center}.facet-tools input[type=search]{margin:0;height:2.15rem;font-size:.78rem}.facets{display:grid;grid-template-columns:1fr 1fr 2.2fr;gap:.8rem;margin-top:.7rem}.facets fieldset{border:0;margin:0;padding:0;min-width:0}.facets legend{font-family:Lato,sans-serif;font-weight:700;color:#444;font-size:.68rem;text-transform:uppercase;letter-spacing:.07rem;margin-bottom:.35rem}.facets label{display:inline-block;margin:0 .27rem .28rem 0;cursor:pointer}.facets input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}.facets label span{display:inline-block;border:1px solid #ccc;border-radius:2px;background:#fff;color:#666;padding:.18rem .4rem;font-size:.65rem;line-height:1.2;transition:.12s}.facets label:hover span{border-color:var(--accent);color:var(--accent)}.facets input[type=checkbox]:checked + span{background:var(--accent);border-color:var(--accent);color:#fff}.facets input[type=checkbox]:focus-visible + span{outline:2px solid var(--accent);outline-offset:2px}.keyword-facet{max-height:145px;overflow:auto;padding-right:.4rem!important}.pub-year-heading{margin:1.45rem 0 .4rem;border-bottom:1px solid #bbb;padding-bottom:.25rem;font-size:1.35rem}.publication-item{padding:.78rem 0 .9rem;border-bottom:1px solid var(--line);scroll-margin-top:70px}.item-layout{display:grid;grid-template-columns:118px minmax(0,1fr);gap:.9rem;align-items:start}.publication-item h3{font-size:1rem;margin:0 0 .18rem;color:#444}.pub-authors,.pub-venue{margin:.12rem 0;font-size:.8rem}.pub-venue{font-style:italic;color:#777}.pub-actions,.thesis-actions,.project-actions{display:flex;gap:0;flex-wrap:wrap;margin-top:.55rem}.pub-details{margin:.55rem 0;background:#f8f8f8;padding:.45rem .6rem;font-size:.8rem}.pub-details summary{cursor:pointer;font-weight:600;color:#666}.publication-item.is-hidden{display:none}.pub-year-group.is-empty{display:none}

/* Research. */
.research-area{padding:1.25rem 0;border-top:1px solid var(--line)}.research-area:first-of-type{border-top:0}.research-area header p{font-size:.65rem;text-transform:uppercase;letter-spacing:.09rem;color:#999;margin-bottom:.25rem}.research-area header h2{margin-bottom:.45rem}.paper-links{list-style:none;margin:.65rem 0 0;padding:0}.paper-links li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:.55rem;padding:.3rem 0;border-top:1px dotted #ddd;font-size:.78rem}.paper-links li:first-child{border-top:0}.paper-links li>span{color:#999;font-weight:700}.paper-links.plain li{grid-template-columns:1fr}.split-2{margin-top:.8rem}.split-2>section+section{border-left:1px solid var(--line);padding-left:1.75rem}ul.alt li{padding:.5rem 0}

/* Thesis/supervision pages. */
.supervision-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.supervision-card{display:block;color:inherit!important}.supervision-card:hover{border-color:#cab6c6}.supervision-card strong{font-family:Lato,sans-serif;font-size:1.7rem;color:var(--accent)}.thesis-status{margin-top:1.35rem}.thesis-status>header{border-bottom:1px solid #bbb}.thesis-status>header h2{font-size:1.3rem;margin-bottom:.25rem}.thesis-item{padding:.8rem 0;border-bottom:1px solid var(--line)}.thesis-item h3{font-size:1rem;margin:.3rem 0}.thesis-item>p:not(.thesis-student){font-size:.8rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.thesis-student{margin:.15rem 0;font-size:.8rem}

/* Project overview: equal screenshots, equal card heights, aligned actions. */
.grid-style.project-summary{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.35rem;margin:1rem 0 0}.grid-style.project-summary:after{display:none}.grid-style.project-summary>.project-cell{width:auto!important;float:none!important;margin:0!important}.project-box{height:100%;display:flex;flex-direction:column;margin:0}.project-box .image{margin:0}.project-box img{width:100%;height:195px;object-fit:cover}.project-box .content{padding:1.15rem;display:flex;flex:1;flex-direction:column}.project-box .content header p{font-size:.62rem;margin-bottom:.25rem;min-height:2.2em}.project-box .content header h2{font-size:1.18rem;margin-bottom:.6rem}.project-box .badges{justify-content:center}.project-box .content>p{font-size:.8rem;line-height:1.45;margin:.65rem 0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.project-repo{font-size:.7rem;margin-top:auto;padding-top:.2rem;min-height:1.4rem}.repo-link{color:var(--accent)}.repo-todo,.todo-value{color:#999}.project-box footer{margin-top:.55rem;padding-top:.45rem;border-top:1px solid #eee}

/* Project details: simple two-column Hielo composition. */
.project-intro{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1.5rem;align-items:center;margin-bottom:1.4rem}.project-figure{height:330px;border:1px solid var(--line);background:#fafafa;display:flex;align-items:center;justify-content:center;padding:.5rem}.project-figure img{max-width:100%;max-height:100%;object-fit:contain}.project-overview h2{font-size:1.25rem;margin:.55rem 0}.project-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;border-top:1px solid var(--line);padding-top:1.2rem;margin-top:1.2rem}.project-info-grid h2{font-size:1.12rem}.meta-list{display:grid;grid-template-columns:125px 1fr;gap:.25rem .65rem;font-size:.8rem}.meta-list dt{font-weight:700;color:#666}.meta-list dd{margin:0}.artifact-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;margin: .8rem 0 1rem}.artifact-gallery a{display:flex;height:175px;align-items:center;justify-content:center;border:1px solid var(--line);background:#fafafa;padding:.25rem}.artifact-gallery img{max-width:100%;max-height:100%;object-fit:contain}

/* Footer: intentionally evenly distributed like v3. */
.footer-columns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:2.2rem;align-items:start;text-align:left}.footer-columns section{min-width:0}.footer-columns section:nth-child(2){text-align:center}.footer-columns section:nth-child(3){text-align:right}.footer-columns section+section{border-left:1px solid rgba(255,255,255,.12);padding-left:2rem}.footer-columns h3{color:#fff}.footer-columns p{margin:.35rem 0}.footer-columns .icons{margin:.45rem 0}.footer-links-inline{display:flex;justify-content:center;gap:.6rem;flex-wrap:wrap}.footer-links-stack{display:flex;flex-direction:column;gap:.2rem}.copyright{font-size:.66rem;color:#777}.compact-list li{margin-bottom:.3rem}

@media screen and (max-width:980px){.topbar-nav{gap:.7rem}.topbar-nav a{font-size:.62rem}.compact-banner{height:34vh;min-height:270px}.profile-two-col,.split-2,.project-intro,.project-info-grid{grid-template-columns:1fr}.profile-links,.split-2>section+section{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:.8rem}.facets{grid-template-columns:1fr 1fr}.keyword-facet{grid-column:1/-1}.footer-columns{grid-template-columns:1fr 1fr}.footer-columns section:nth-child(3){grid-column:1/-1;text-align:center;border-left:0;padding-left:0;border-top:1px solid rgba(255,255,255,.12);padding-top:1rem}.artifact-gallery{grid-template-columns:repeat(2,1fr)}.project-figure{height:280px}}

@media screen and (max-width:736px){body{font-size:13px}.inner{width:92%}.site-topbar{height:54px}.topbar-brand span{display:none}.topbar-toggle{display:block}.topbar-nav{display:none;position:absolute;top:54px;left:4%;right:4%;background:rgba(35,35,35,.98);padding:.35rem 0;flex-direction:column;align-items:stretch;gap:0;box-shadow:0 8px 24px rgba(0,0,0,.25)}.topbar-nav.open{display:flex}.topbar-nav a{padding:.65rem .8rem;border-bottom:1px solid rgba(255,255,255,.08)}.topbar-nav a:last-child{border-bottom:0}.compact-banner{height:300px;min-height:300px;max-height:300px}.compact-banner .inner{padding-top:54px}.compact-banner h2{font-size:1.85rem}.compact-banner header p{font-size:.61rem;letter-spacing:.07rem}.hero-badges span{font-size:.56rem}.wrapper.compact-section{padding:1.35rem 0}.wrapper.compact-title{padding:2rem 0}.box .content{padding:1.1rem}.stats-grid{grid-template-columns:repeat(2,1fr)}.stats-grid a:nth-child(2){border-right:0}.stats-grid a:nth-child(-n+2){border-bottom:1px solid var(--line)}.summary-row,.item-layout{grid-template-columns:1fr;gap:.3rem}.summary-meta,.vertical-badges{flex-direction:row}.course-row{grid-template-columns:75px minmax(0,1fr);gap:.45rem .7rem}.course-side{grid-column:2;text-align:left}.course-desc{-webkit-line-clamp:3}.facets,.facet-tools{grid-template-columns:1fr}.keyword-facet{grid-column:auto}.facet-tools #pub-count{font-size:.7rem}.grid-style.project-summary{grid-template-columns:1fr}.project-box img{height:180px}.supervision-grid{grid-template-columns:1fr}.course-title,.project-title{padding:calc(54px + .9rem) 0 .9rem}.course-title h1,.project-title h1{font-size:1.4rem}.course-warning{width:92%;margin:.7rem auto 0}.project-figure{height:230px}.artifact-gallery{grid-template-columns:1fr}.artifact-gallery a{height:auto;max-height:250px}.meta-list{grid-template-columns:100px 1fr}.footer-columns{grid-template-columns:1fr;text-align:center;gap:1.2rem}.footer-columns section:nth-child(2),.footer-columns section:nth-child(3){grid-column:auto;text-align:center;border-left:0;padding-left:0;border-top:1px solid rgba(255,255,255,.12);padding-top:1rem}.footer-links-stack{align-items:center}.legacy-content .table-wrapper{overflow-x:auto}.legacy-content table{min-width:640px}}

@media screen and (max-width:420px){.compact-banner{height:270px;min-height:270px;max-height:270px}.compact-banner h2{font-size:1.6rem}.hero-badges{display:none}.stats-grid strong{font-size:1.3rem}.stats-grid span{font-size:.52rem}.badge{font-size:.59rem}.course-row{grid-template-columns:1fr}.course-side{grid-column:auto}.course-code{color:var(--accent)}.project-box img{height:160px}.mini-action{font-size:.6rem;padding:.28rem .4rem}.artifact-gallery a{max-height:220px}}
/* Keep subpage title content below the visible top navigation. */
.subpage .wrapper.compact-title{padding-top:calc(var(--topbar) + 2.2rem)}
@media screen and (max-width:736px){.subpage .wrapper.compact-title{padding-top:calc(54px + 1.6rem)}}

/* v5 consistency refinements */
.inner{width:calc(100% - 4rem);max-width:76rem;margin-left:auto;margin-right:auto}
.site-topbar .topbar-inner{width:calc(100% - 4rem);max-width:76rem;margin:0 auto}
.topbar-nav{margin-left:auto;justify-content:flex-end}
.topbar-search-toggle{border:0;background:transparent;color:inherit;padding:.22rem .15rem .22rem .45rem;font-size:.76rem;cursor:pointer;line-height:1}
.topbar-search-toggle:hover{color:var(--accent)}
.subpage .site-topbar{background:rgba(255,255,255,.97);color:#555;border-bottom:1px solid #e3e3e3;box-shadow:0 1px 5px rgba(0,0,0,.04)}
.subpage .topbar-brand,.subpage .topbar-nav a,.subpage .topbar-toggle,.subpage .topbar-search-toggle{color:#555!important}
.subpage .topbar-brand span{color:#999}.subpage .topbar-nav a:hover,.subpage .topbar-search-toggle:hover{color:var(--accent)!important}
.page-search{position:absolute;top:var(--topbar);left:0;right:0;background:#fff;border-top:1px solid #eee;border-bottom:1px solid #ddd;box-shadow:0 5px 14px rgba(0,0,0,.08);color:#555}
.page-search-inner{display:flex;align-items:center;gap:.45rem;padding:.5rem 0}
.page-search-input{height:2rem!important;margin:0!important;font-size:.76rem!important;flex:1}
.page-search-next,.page-search-close{appearance:none;-webkit-appearance:none;border:1px solid var(--accent);background:#fff;color:var(--accent);height:1.9rem;padding:0 .55rem;font-size:.67rem;border-radius:2px;cursor:pointer}
.page-search-next:hover,.page-search-close:hover{background:var(--accent-soft)}
.page-search-status{font-size:.66rem;color:#888;min-width:5rem;text-align:right}.page-search-hit{outline:2px solid var(--accent);outline-offset:3px;background:var(--accent-soft)!important}

/* Definitively override stock Hielo 100vh hero. */
.banner.compact-banner{height:34vh!important;min-height:250px!important;max-height:365px!important;padding:0!important}
.banner.compact-banner>article{height:100%!important}.banner.compact-banner>article h2{font-size:2.45rem!important}.banner.compact-banner>article p{font-size:.72rem!important;padding-bottom:1rem!important}
.home-complete-link{color:var(--accent)!important;opacity:1!important}.home-complete-link:hover{color:#b36aa9!important}
.recent-pub-meta{font-family:"Open Sans",Arial,sans-serif!important;font-size:.76rem!important;font-weight:400!important;font-style:normal!important;letter-spacing:0!important;text-transform:none!important;color:#bdbdbd!important}

/* Homepage software is a compact list, not cards. */
.project-home-list{max-width:65rem;margin:.8rem auto 0}.project-home-row{display:grid;grid-template-columns:58px minmax(0,1fr) 175px;gap:.8rem;align-items:center;padding:.58rem 0;border-top:1px solid var(--line)}.project-home-row:first-child{border-top:0}.project-home-thumb{width:58px;height:42px;display:block;overflow:hidden;background:#eee}.project-home-thumb img{width:100%;height:100%;object-fit:cover;display:block}.project-home-main h3{font-size:.92rem;margin:0 0 .12rem}.project-home-main p{font-size:.74rem;line-height:1.35;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-home-meta{text-align:right}.project-home-meta .badges{justify-content:flex-end;margin-bottom:.18rem}.project-home-meta .text-action,.project-home-meta .repo-todo{font-size:.64rem}

/* Publication controls: badge-sized, accent-only, abstracts always open. */
.pub-actions,.thesis-actions,.project-actions{gap:.22rem}.pub-actions .mini-action,.pub-actions button.mini-action,.export-row .mini-action,.facet-tools button.mini-action{appearance:none!important;-webkit-appearance:none!important;height:auto!important;min-height:0!important;line-height:1.05!important;padding:.18rem .36rem!important;margin:0!important;border-width:1px!important;border-radius:2px!important;font-size:.59rem!important;font-weight:600!important;background:#fff!important;color:var(--accent)!important;box-shadow:none!important;text-transform:none!important;letter-spacing:0!important}.pub-actions .mini-action.primary,.export-row .mini-action.primary{background:var(--accent)!important;color:#fff!important}.facet-tools button#clear-filters{background:#fff!important;color:var(--accent)!important;border-color:var(--accent)!important}.facet-tools button#clear-filters:hover{background:var(--accent-soft)!important}.pub-abstract{margin:.48rem 0 .36rem;padding:.42rem .55rem;background:#f8f8f8;border-left:2px solid #ddd}.pub-abstract p{font-size:.77rem;line-height:1.45;margin:0;color:#666}.keyword-badges{margin:.35rem 0 .38rem}

/* Project overview: three per row, consistent crop and baseline. */
.grid-style.project-summary,.grid-style.project-summary.full{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:1rem!important}.project-box img{height:165px!important;object-fit:cover!important;object-position:center!important}.project-box .content{padding:1rem!important}.project-box .content header p{min-height:0!important}.project-box .content header h2{font-size:1.05rem!important}.project-box .content>p{-webkit-line-clamp:3!important;min-height:4.35em}.project-box footer{margin-top:auto!important}.project-box{min-height:100%}

/* Course/project titles centered with a light header; no black strip on subpages. */
.course-title,.project-title{text-align:center!important;padding-top:calc(var(--topbar) + .9rem)!important}.course-title .inner,.project-title .inner{text-align:center!important}

/* Footer alignment and breathing room. */
#footer .inner{width:calc(100% - 5rem);max-width:76rem;margin:0 auto}.footer-columns{gap:3rem!important}.footer-columns section+section{padding-left:2.5rem!important}

@media screen and (max-width:980px){.banner.compact-banner{height:32vh!important;min-height:240px!important;max-height:330px!important}.grid-style.project-summary,.grid-style.project-summary.full{grid-template-columns:repeat(2,minmax(0,1fr))!important}.project-home-row{grid-template-columns:52px minmax(0,1fr) 145px}.project-home-thumb{width:52px;height:38px}}
@media screen and (max-width:736px){.inner,.site-topbar .topbar-inner,#footer .inner{width:92%}.subpage .topbar-nav{background:#fff;border:1px solid #ddd}.subpage .topbar-nav a{border-bottom-color:#eee}.topbar-search-toggle{display:none}.page-search{display:none!important}.banner.compact-banner{height:255px!important;min-height:255px!important;max-height:255px!important}.banner.compact-banner>article h2{font-size:1.85rem!important}.project-home-row{grid-template-columns:46px minmax(0,1fr);gap:.55rem}.project-home-thumb{width:46px;height:36px}.project-home-meta{grid-column:2;text-align:left}.project-home-meta .badges{justify-content:flex-start}.project-home-main p{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.grid-style.project-summary,.grid-style.project-summary.full{grid-template-columns:1fr!important}.project-box img{height:190px!important}.footer-columns section+section{padding-left:0!important}}

/* v6 small consistency corrections */
.badge.neutral{background:#f4f4f4!important;border-color:#d6d6d6!important;color:#676767!important;font-weight:600}
.supervision-link{color:var(--accent)!important;opacity:1!important}.supervision-link:hover{color:#b36aa9!important}
/* Keep the final item visually open; no trailing rule at the bottom of recent-publication lists. */
.dark-summary .summary-row:last-child{border-bottom:0!important;box-shadow:none!important}
.wrapper.style3 .summary-list{border-bottom:0!important}
/* More room for project status/repository metadata, without wrapping status badges. */
.project-home-row{grid-template-columns:58px minmax(0,1fr) 235px!important}
.project-home-meta .badges{flex-wrap:nowrap!important}.project-home-meta .badge{white-space:nowrap!important}
.project-home-thumb img{object-fit:contain!important;background:#fff}
/* Legacy course content must not recreate Hielo's old black/grey section bands. */
.legacy-content #one,.legacy-content #two,.legacy-content section.wrapper,.legacy-content .wrapper.style1,.legacy-content .wrapper.style2,.legacy-content .wrapper.style3{background:transparent!important;background-image:none!important;color:inherit!important;padding:0!important;margin:0!important}
.legacy-content #one>.inner,.legacy-content #two>.inner{width:100%!important;max-width:none!important}
@media screen and (max-width:980px){.project-home-row{grid-template-columns:52px minmax(0,1fr) 195px!important}.project-home-meta .badges{flex-wrap:wrap!important}}
@media screen and (max-width:736px){.project-home-row{grid-template-columns:46px minmax(0,1fr)!important}.project-home-meta{grid-column:2!important}.project-home-meta .badges{flex-wrap:wrap!important}}

/* v7: quieter research headings, compact project list, restored course framing. */
.project-home-row{grid-template-columns:minmax(0,1fr) 235px!important}
.project-home-thumb{display:none!important}
.project-home-main{min-width:0}

/* Research area and split-column headings should be simple headings, without Hielo preheading rules. */
.research-area>header p,.split-2>section>header p{display:none!important}
.research-area>header,.split-2>section>header{border:0!important;padding:0!important;margin:0 0 .55rem!important}
.research-area>header:before,.research-area>header:after,.split-2>section>header:before,.split-2>section>header:after{display:none!important;content:none!important}
.research-area>header h2,.split-2>section>header h2{margin:0!important;padding:0!important}

/* Keep the archived course content in the original Hielo composition: grey canvas + white content box. */
.course-detail-shell{background:#f2f2f2!important;padding:2.2rem 0!important}
.course-detail-shell>.inner{width:calc(100% - 8rem)!important;max-width:70rem!important;margin:0 auto!important}
.course-detail-shell .box{background:#fff!important;margin:0!important;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.course-detail-shell .box>.content{padding:1.6rem 2rem!important}

/* A slightly quieter, denser footer. */
#footer{font-size:.82rem!important}
#footer h3{font-size:.9rem!important;margin-bottom:.45rem!important}
#footer p,#footer a{font-size:.76rem!important;line-height:1.45!important}
#footer .icons a{font-size:1rem!important}
#footer .copyright{font-size:.62rem!important}

@media screen and (max-width:980px){.project-home-row{grid-template-columns:minmax(0,1fr) 195px!important}.course-detail-shell>.inner{width:calc(100% - 4rem)!important}}
@media screen and (max-width:736px){.project-home-row{grid-template-columns:1fr!important}.project-home-meta{grid-column:auto!important;text-align:left!important}.project-home-meta .badges{justify-content:flex-start!important}.course-detail-shell{padding:1.2rem 0!important}.course-detail-shell>.inner{width:92%!important}.course-detail-shell .box>.content{padding:1rem!important}}
/* Remove Hielo's decorative rule below the retained Research superheading. */
.research-main>.inner>.box>.content>header.align-center>p:after{display:none!important;content:none!important}

/* v8: course archives use one generated Hielo shell around the substantive legacy content. */
.course-detail-shell{background:#f2f2f2!important;padding:2rem 0 2.6rem!important}
.course-detail-shell>.inner{width:calc(100% - 6rem)!important;max-width:72rem!important;margin:0 auto!important}
.course-content-box{background:#fff!important;margin:0!important;box-shadow:0 1px 3px rgba(0,0,0,.05)!important}
.course-content-box>.content{padding:1.55rem 1.8rem 1.9rem!important}
.course-content-box .legacy-content{width:100%!important;max-width:none!important;margin:0!important;padding:0!important;background:#fff!important}
.course-content-box .legacy-content>.inner,.course-content-box .legacy-content>.box,.course-content-box .legacy-content>.content{width:100%!important;max-width:none!important;margin:0!important;padding:0!important;background:transparent!important;box-shadow:none!important}
.course-content-box .course-detail-meta{margin-bottom:1.2rem!important}
.course-warning{margin-bottom:1rem!important}
@media screen and (max-width:980px){.course-detail-shell>.inner{width:calc(100% - 3rem)!important}}
@media screen and (max-width:736px){.course-detail-shell>.inner{width:92%!important}.course-content-box>.content{padding:1rem!important}}

/* v8: one Hielo shell around each archived course's substantive content. */
.course-detail-shell{background:#f2f2f2!important;padding:2rem 0 2.6rem!important}
.course-detail-shell>.inner{width:calc(100% - 6rem)!important;max-width:72rem!important;margin:0 auto!important}
.course-content-box{background:#fff!important;margin:0!important;box-shadow:0 1px 3px rgba(0,0,0,.05)!important}
.course-content-box>.content{padding:1.55rem 1.8rem 1.9rem!important}
.course-content-box .legacy-content{width:100%!important;max-width:none!important;margin:0!important;padding:0!important;background:#fff!important}
.course-content-box .legacy-content>.inner,.course-content-box .legacy-content>.box,.course-content-box .legacy-content>.content{width:100%!important;max-width:none!important;margin:0!important;padding:0!important;background:transparent!important;box-shadow:none!important}
.course-content-box .course-detail-meta{margin-bottom:1.2rem!important}
@media screen and (max-width:980px){.course-detail-shell>.inner{width:calc(100% - 3rem)!important}}
@media screen and (max-width:736px){.course-detail-shell>.inner{width:92%!important}.course-content-box>.content{padding:1rem!important}}

/* v9: one typographic hierarchy across all homepage content sections. */
.home-page .summary-body h3,
.home-page .course-main h3,
.home-page .thesis-item h3,
.home-page .project-home-main h3 {
  font-family:Lato, sans-serif !important;
  font-size:1rem !important;
  line-height:1.32 !important;
  font-weight:400 !important;
  letter-spacing:0 !important;
  margin:0 0 .2rem !important;
}
.home-page .summary-body p,
.home-page .course-desc,
.home-page .project-home-main p,
.home-page .thesis-item>p {
  font-family:"Open Sans", sans-serif !important;
  font-size:.79rem !important;
  line-height:1.45 !important;
  font-weight:400 !important;
}
.home-page .recent-pub-meta,
.home-page .course-schedule,
.home-page .project-home-meta,
.home-page .thesis-student {
  font-family:"Open Sans", sans-serif !important;
  font-size:.71rem !important;
  line-height:1.4 !important;
  font-weight:400 !important;
}
.home-page .course-code {
  font-size:.78rem !important;
  line-height:1.35 !important;
}
.home-page .wrapper header.align-center>h2 {
  font-family:Lato, sans-serif !important;
  font-size:1.55rem !important;
  line-height:1.2 !important;
  font-weight:300 !important;
  letter-spacing:0 !important;
}
.home-page .wrapper header.align-center>p {
  font-family:"Open Sans", sans-serif !important;
  font-size:.68rem !important;
  line-height:1.45 !important;
  font-weight:400 !important;
  letter-spacing:.055rem !important;
}

/* Hero: about 40–50% of a desktop viewport, still far below stock Hielo fullscreen. */
.banner.compact-banner {
  height:45vh !important;
  min-height:330px !important;
  max-height:480px !important;
}
@media screen and (max-width:980px){
  .banner.compact-banner{height:41vh!important;min-height:290px!important;max-height:410px!important}
}
@media screen and (max-width:736px){
  .banner.compact-banner{height:300px!important;min-height:300px!important;max-height:300px!important}
}
@media screen and (max-width:420px){
  .banner.compact-banner{height:270px!important;min-height:270px!important;max-height:270px!important}
}

/* Academic profile marks for services missing from the old Font Awesome bundled with Hielo. */
#footer .icons li a{display:inline-flex;align-items:center;justify-content:center}
.profile-mark{display:inline-flex;width:1.45em;height:1.45em;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:50%;font-family:Lato,sans-serif;font-size:.74em;font-weight:700;line-height:1}
.orcid-mark{text-transform:none;letter-spacing:-.04em}
.research-profile-links{display:flex;justify-content:center;align-items:center;gap:.42rem;flex-wrap:wrap;margin:.45rem auto 1.2rem;font-size:.74rem;color:#777}
.research-profile-links a{font-weight:600}
/* Production cleanup: no decorative terminal divider in dark summary sections. */
.wrapper.style3.compact-section > .inner > header.align-center p:after,
.wrapper.style3.compact-section > .inner > header.align-center:after,
.wrapper.style3.compact-section > .inner:after,
.wrapper.style3.compact-section .summary-list:after,
.wrapper.style3.compact-section .summary-row:last-child:after { display:none!important; content:none!important; border:0!important; }
.wrapper.style3.compact-section .summary-list,
.wrapper.style3.compact-section .summary-row:last-child { border-bottom:0!important; box-shadow:none!important; }

/* v11: cross-site design system consistency. */
:root{
  --type-title: 1.18rem;
  --type-section: 1.75rem;
  --type-subsection: 1.35rem;
  --type-body: .98rem;
  --type-meta: .86rem;
  --type-small: .76rem;
}

/* Same semantic level = same typography on every generated page. */
.summary-body h3,
.course-main h3,
.thesis-item h3,
.project-home-main h3,
.publication-item h3,
.paper-links a,
.project-box .content header h2,
.supervision-card h2 {
  font-family:Lato,sans-serif!important;
  font-weight:400!important;
  letter-spacing:0!important;
}
.summary-body h3,
.course-main h3,
.thesis-item h3,
.project-home-main h3,
.publication-item h3 {
  font-size:var(--type-title)!important;
  line-height:1.32!important;
}
.wrapper header.align-center>h2,
.academic-year>header.major>h2,
.thesis-status>header>h2 {
  font-family:Lato,sans-serif!important;
  font-weight:300!important;
  letter-spacing:0!important;
}
.wrapper header.align-center>h2{font-size:var(--type-section)!important;line-height:1.2!important}
.academic-year>header.major>h2,.thesis-status>header>h2{font-size:var(--type-subsection)!important;line-height:1.25!important}
.summary-body p,.course-desc,.project-home-main p,.thesis-item>p,.publication-item p,.project-box .content>p,
.project-overview p,.research-area>p,.paper-links,.meta-list {
  font-family:"Open Sans",sans-serif!important;
  font-size:var(--type-body)!important;
  line-height:1.48!important;
  font-weight:400!important;
}
.recent-pub-meta,.course-schedule,.project-home-meta,.thesis-student,.pub-authors,.pub-venue,.course-code {
  font-family:"Open Sans",sans-serif!important;
  font-size:var(--type-meta)!important;
  line-height:1.4!important;
  font-weight:400!important;
}

/* Entity links are always text links, never pseudo-buttons. */
a.entity-link,
.summary-body h3 a,
.project-home-main h3 a,
.course-main h3 a,
.paper-links a,
.supervision-card h2,
.home-page .section-link {
  color:var(--accent)!important;
  text-decoration:none!important;
  border-bottom:0!important;
}
a.entity-link:hover,
.summary-body h3 a:hover,
.project-home-main h3 a:hover,
.course-main h3 a:hover,
.paper-links a:hover,
.home-page .section-link:hover { color:#6f3568!important; }
.wrapper.style3 .summary-body h3 a,
.wrapper.style3 .section-link,
.wrapper.style3 .supervision-link { color:#fff!important; }
.wrapper.style3 .summary-body h3 a:hover,
.wrapper.style3 .section-link:hover,
.wrapper.style3 .supervision-link:hover { color:#d6a5cf!important; }

/* Course list no longer has a separate inconsistent action column. */
.course-row{grid-template-columns:90px minmax(0,1fr)!important}
.course-side{display:none!important}

/* Project summary: allow useful 2–3 line descriptions and keep cards aligned. */
.project-box .content>p{
  display:-webkit-box!important;
  -webkit-line-clamp:3!important;
  -webkit-box-orient:vertical!important;
  overflow:hidden!important;
  min-height:3.55em!important;
  max-height:4.5em!important;
}
.project-box .content header h2{font-size:1.08rem!important;line-height:1.28!important}
.project-box .project-repo{margin-top:auto!important;padding-top:.45rem!important}
.project-box .image>a{display:block;height:100%}
.project-box .image img{display:block;width:100%;height:165px!important;object-fit:cover!important}

/* Homepage project list: descriptions get breathing room instead of one-line truncation. */
.project-home-main p{
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:clip!important;
  display:-webkit-box!important;
  -webkit-line-clamp:3!important;
  -webkit-box-orient:vertical!important;
  min-height:2.15em;
  max-height:3.65em;
}
.project-home-row{align-items:start!important}
.project-home-meta{padding-top:.1rem}

/* Equal visual box for every academic-profile icon in the footer. */
#footer ul.icons{display:flex;align-items:center;justify-content:center;gap:.48rem;flex-wrap:wrap}
#footer ul.icons li{padding:0!important;margin:0!important;display:flex!important;align-items:center!important}
#footer ul.icons li a{
  width:1.9rem!important;
  height:1.9rem!important;
  min-width:1.9rem!important;
  min-height:1.9rem!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  line-height:1!important;
  padding:0!important;
  box-sizing:border-box!important;
}
#footer ul.icons li a>.icon,
#footer ul.icons li a>span.fa,
#footer ul.icons li a>.profile-mark{
  width:1.28rem!important;
  height:1.28rem!important;
  min-width:1.28rem!important;
  min-height:1.28rem!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  line-height:1!important;
  font-size:.82rem!important;
  box-sizing:border-box!important;
}
#footer ul.icons li a>.profile-mark{border:1px solid currentColor!important;border-radius:50%!important;font-size:.62rem!important}
#footer ul.icons li a>.icon:before,
#footer ul.icons li a>span.fa:before{font-size:1rem!important;line-height:1!important;margin:0!important}

/* Consistent compact secondary actions throughout white pages. */
.mini-action,.pub-actions .mini-action,.thesis-actions .mini-action,.project-actions .mini-action,
button.mini-action{
  font-family:"Open Sans",sans-serif!important;
  font-size:.61rem!important;
  line-height:1.05!important;
  min-height:0!important;
  height:auto!important;
  padding:.22rem .4rem!important;
  border-radius:2px!important;
  letter-spacing:0!important;
  text-transform:none!important;
}

@media screen and (max-width:736px){
  .course-row{grid-template-columns:1fr!important}
  #footer ul.icons{gap:.38rem}
}

/* v12 production consistency pass ------------------------------------------------ */
/* The home navigation must read as the same dark Hielo chrome everywhere; do not
   let the hero photograph tint it blue/green through a translucent background. */
.home-page .site-topbar{
  background:rgba(10,10,10,.92)!important;
  border-bottom:1px solid rgba(255,255,255,.08)!important;
}

/* Footer profile links are icon-only.  The accessible labels remain in the DOM for
   screen readers but can never take layout space and collide with neighbouring icons. */
#footer ul.icons .label{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
#footer ul.icons{
  width:100%!important;
  max-width:18rem!important;
  margin:.5rem auto .65rem!important;
  row-gap:.45rem!important;
  column-gap:.5rem!important;
}
#footer ul.icons li a,
#footer ul.icons li a>.icon,
#footer ul.icons li a>span.fa,
#footer ul.icons li a>.profile-mark{
  flex:0 0 auto!important;
}

/* On the black homepage panels these two navigation links are intentionally purple,
   matching the site's accent rather than inheriting the generic white dark-panel link. */
.home-page .wrapper.style3 .home-complete-link,
.home-page .wrapper.style3 .supervision-link{
  color:#b36aa9!important;
}
.home-page .wrapper.style3 .home-complete-link:hover,
.home-page .wrapper.style3 .supervision-link:hover{
  color:#c98bc0!important;
}

/* Semantic typography: a subsection heading has one size everywhere, independent of
   whether it originated in generated markup or an archived Hielo course page. */
.research-main .split-2>section>header h2,
.project-info-grid>section>h2,
.course-content-box .legacy-content h2,
.course-content-box .legacy-content .major h2,
.course-content-box .legacy-content header.major h2{
  font-family:Lato,sans-serif!important;
  font-size:var(--type-subsection)!important;
  line-height:1.28!important;
  font-weight:400!important;
  letter-spacing:0!important;
  text-transform:none!important;
}
.course-content-box .legacy-content h3,
.project-overview h2{
  font-family:Lato,sans-serif!important;
  font-size:var(--type-title)!important;
  line-height:1.32!important;
  font-weight:400!important;
  letter-spacing:0!important;
  text-transform:none!important;
}
.research-main .split-2 ul.alt li,
.research-main .split-2 ul.alt li strong,
.course-content-box .legacy-content p,
.course-content-box .legacy-content li,
.course-content-box .legacy-content td,
.course-content-box .legacy-content th{
  font-family:"Open Sans",sans-serif!important;
  font-size:var(--type-body)!important;
  line-height:1.48!important;
}
.research-main .split-2 ul.alt li strong{font-weight:600!important}
.course-content-box .legacy-content h2{margin-top:1.35rem!important;margin-bottom:.55rem!important}
.course-content-box .legacy-content h3{margin-top:1rem!important;margin-bottom:.4rem!important}

/* Keep project cards useful: descriptions are allowed three real lines and every card
   reserves the same vertical area, so repository/actions remain aligned by row. */
.project-box .content>p{
  -webkit-line-clamp:3!important;
  min-height:3.55em!important;
  max-height:3.8em!important;
}

@media screen and (max-width:736px){
  #footer ul.icons{max-width:15rem!important}
}

/* v13 consolidation: fixed chrome, compact dark summaries, consistent cards and filters. */
.site-topbar,
.home-page .site-topbar,
.subpage .site-topbar{
  position:fixed!important;
  top:0!important; left:0!important; right:0!important;
  background:#0b0b0b!important;
  color:#fff!important;
  border-bottom:1px solid rgba(255,255,255,.10)!important;
  box-shadow:0 1px 8px rgba(0,0,0,.14)!important;
  z-index:5000!important;
}
.site-topbar .topbar-brand,
.site-topbar .topbar-brand strong,
.site-topbar .topbar-nav a,
.site-topbar .topbar-search-toggle{color:#fff!important}
.site-topbar .topbar-brand span{color:rgba(255,255,255,.62)!important}
.site-topbar .topbar-nav a:hover{color:#fff!important}
.subpage .compact-title{padding-top:calc(var(--topbar) + 2rem)!important}
.course-title,.project-title{padding-top:calc(var(--topbar) + 1rem)!important}

/* A slightly stronger but still non-fullscreen Hielo hero. */
.banner.compact-banner{height:50vh!important;min-height:370px!important;max-height:560px!important}
.banner.compact-banner .hero-badges{display:none!important}
@media screen and (max-width:980px){.banner.compact-banner{height:45vh!important;min-height:320px!important;max-height:480px!important}}
@media screen and (max-width:736px){.banner.compact-banner{height:310px!important;min-height:310px!important;max-height:310px!important}}
@media screen and (max-width:420px){.banner.compact-banner{height:280px!important;min-height:280px!important;max-height:280px!important}}

/* Dark homepage summary sections: divider belongs between kicker and heading, never below the list. */
.home-page .wrapper.style3.compact-section> .inner > header.align-center > p{
  width:min(52rem,92%); margin:0 auto .72rem!important; padding:0 0 .62rem!important;
  border-bottom:1px solid rgba(255,255,255,.50)!important;
}
.home-page .wrapper.style3.compact-section> .inner > header.align-center > h2{margin:.2rem 0 .55rem!important}
.home-page .wrapper.style3.compact-section .summary-list{margin:.35rem auto 0!important;border-bottom:0!important}
.home-page .wrapper.style3.compact-section .summary-row{padding:.48rem .1rem!important;border-bottom:0!important}
.home-page .wrapper.style3.compact-section .summary-row:last-child{border-bottom:0!important;margin-bottom:0!important;padding-bottom:.32rem!important}
.home-page .wrapper.style3.compact-section .summary-list:after,
.home-page .wrapper.style3.compact-section .summary-row:last-child:after,
.home-page .wrapper.style3.compact-section .inner:after{display:none!important;content:none!important;border:0!important}
.home-page .wrapper.style3 .home-complete-link,
.home-page .wrapper.style3 .supervision-link,
.home-page .wrapper.style3 .home-complete-link:hover,
.home-page .wrapper.style3 .supervision-link:hover{color:var(--accent)!important}

/* Do not shift the accent hue on textual entity links when hovering. */
a.entity-link:hover,.summary-body h3 a:hover,.project-home-main h3 a:hover,.course-main h3 a:hover,
.paper-links a:hover,.section-link:hover,.text-action:hover{color:var(--accent)!important}

/* Footer separators span the exact same height. */
.footer-columns{align-items:stretch!important}
.footer-columns>section{height:100%!important}
.footer-columns>section+section{border-left:1px solid rgba(255,255,255,.12)!important}

/* Research publications are simple chronological lists. */
.research-area .paper-links li{align-items:start}

/* Thesis pages intentionally mirror the publication page visual hierarchy. */
.thesis-record{padding:.85rem 0;border-bottom:1px solid var(--line)}
.thesis-record:last-child{border-bottom:0}
.thesis-record h3{font-family:Lato,sans-serif!important;font-size:var(--type-title)!important;font-weight:400!important;line-height:1.32!important;margin:0 0 .2rem!important}
.thesis-record .thesis-student{font-size:var(--type-meta)!important;margin:.1rem 0 .42rem!important}
.thesis-record .thesis-abstract p{font-size:var(--type-body)!important;line-height:1.5!important;margin:0 0 .55rem!important;display:block!important;overflow:visible!important;max-height:none!important}
.thesis-record .thesis-actions{margin-top:.4rem}
.badge.note{background:#f7f4f6;border-color:#d9cbd5;color:#6f4c69;font-weight:600}
.thesis-facet-panel{margin-bottom:1rem}
.thesis-facets{grid-template-columns:1fr 1fr!important}
.thesis-year-group.is-empty{display:none}
.faceted-thesis.is-hidden{display:none}

/* Project overview: equal card structure, complete descriptions, aligned overline/divider/title. */
.grid-style.project-summary,.grid-style.project-summary.full{grid-auto-rows:1fr!important}
.project-summary .project-cell,.project-summary .project-box{height:100%!important}
.project-box .content{height:100%!important}
.project-box .content header{display:flex!important;flex-direction:column!important;position:relative!important;margin:0 0 .55rem!important}
.project-box .content header p{
  min-height:3.15em!important;display:flex!important;align-items:flex-end!important;justify-content:center!important;
  margin:0 0 .55rem!important;padding:0 0 .55rem!important;line-height:1.45!important;
}
.project-box .content header p:after{bottom:0!important;width:50%!important}
.project-box .content header h2{margin:0!important;min-height:1.45em!important}
.project-box .content>p{
  display:block!important;-webkit-line-clamp:unset!important;overflow:visible!important;
  min-height:0!important;max-height:none!important;margin:.65rem 0 .75rem!important;
}
.project-box .project-repo{margin-top:auto!important}
.project-pagination{display:flex;justify-content:center;gap:.35rem;margin:1.2rem 0 .1rem}
.project-pagination button{font-family:"Open Sans",sans-serif;border:1px solid var(--accent);background:#fff;color:var(--accent);border-radius:2px;padding:.24rem .48rem;font-size:.64rem;cursor:pointer}
.project-pagination button.is-active{background:var(--accent);color:#fff}
.project-pagination:empty{display:none}

/* Lightbox gallery overlays the current project page and preserves context. */
.lightbox-overlay{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:9000;display:none;align-items:center;justify-content:center;padding:3rem 5rem}
.lightbox-overlay.is-open{display:flex}
.lightbox-overlay figure{margin:0;max-width:90vw;max-height:88vh;text-align:center}
.lightbox-overlay figure img{max-width:90vw;max-height:80vh;object-fit:contain;box-shadow:0 8px 34px rgba(0,0,0,.4)}
.lightbox-overlay figcaption{color:#ddd;margin-top:.55rem;font-size:.72rem}
.lightbox-close,.lightbox-prev,.lightbox-next{position:absolute;border:0;background:transparent!important;color:#fff!important;box-shadow:none!important;cursor:pointer;padding:.4rem!important;line-height:1!important}
.lightbox-close{top:1rem;right:1.2rem;font-size:2rem!important}
.lightbox-prev,.lightbox-next{top:50%;transform:translateY(-50%);font-size:3rem!important}
.lightbox-prev{left:1.2rem}.lightbox-next{right:1.2rem}
body.lightbox-open{overflow:hidden}
@media screen and (max-width:736px){.lightbox-overlay{padding:3rem 2.8rem}.lightbox-prev{left:.35rem}.lightbox-next{right:.35rem}}

/* Embedded research-software demonstrations */
.project-demonstration { margin: 2.2rem 0; }
.project-demonstration > .major { margin-bottom: 1.1rem; }
.demo-video-list { display: grid; gap: 1.5rem; }
.demo-video { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(14rem, .75fr); gap: 1.5rem; align-items: start; }
.demo-video-frame { position: relative; width: 100%; aspect-ratio: 16 / 9; overflow: hidden; background: #111; }
.demo-video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.demo-video-caption h3 { margin: 0 0 .55rem; }
.demo-video-caption p { margin: 0 0 .7rem; }
.demo-video-link { margin-top: .8rem !important; }
@media screen and (max-width: 736px) {
  .demo-video { grid-template-columns: 1fr; gap: .85rem; }
}

/* Embedded research-software demonstrations */
.project-demonstration { margin: 2.2rem 0; }
.project-demonstration > .major { margin-bottom: 1.1rem; }
.demo-video-list { display: grid; gap: 1.5rem; }
.demo-video { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(14rem, .75fr); gap: 1.5rem; align-items: start; }
.demo-video-frame { position: relative; width: 100%; aspect-ratio: 16 / 9; overflow: hidden; background: #111; }
.demo-video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.demo-video-caption h3 { margin: 0 0 .55rem; }
.demo-video-caption p { margin: 0 0 .7rem; }
.demo-video-link { margin-top: .8rem !important; }
@media screen and (max-width: 736px) {
  .demo-video { grid-template-columns: 1fr; gap: .85rem; }
}

/* v15 production design system: semantic badges are neutral; purple is reserved for actions/links. */
.badge,.badge.keyword,.badge.neutral{
  background:#fff!important;border-color:#cfcfcf!important;color:#666!important;
}
.badge.accent,.badge.score,.badge.note,.badge.important{
  background:#e9e9e9!important;border-color:#bdbdbd!important;color:#4d4d4d!important;font-weight:600;
}
.wrapper.style3 .badge.light,.dark-summary .badge.light{
  background:rgba(255,255,255,.08)!important;border-color:rgba(255,255,255,.42)!important;color:#ddd!important;
}

/* Course title uses exactly the same dark Hielo title language as all other subpages. */
.course-title.wrapper.style3{
  background-color:#000!important;background-image:url("../images/site/bg.jpg")!important;background-size:cover!important;background-position:center!important;
  border-bottom:0!important;text-align:center!important;padding:calc(var(--topbar) + 2rem) 0 2rem!important;
}
.course-title.wrapper.style3 .inner{width:80%;max-width:72rem;margin:0 auto}
.course-title.wrapper.style3 h2{color:#fff!important;font-size:1.7rem!important;margin:.15rem 0 0!important}
.course-title.wrapper.style3 header>p{color:#aaa!important;margin:0 auto .7rem!important;padding:0 0 .65rem!important;position:relative;text-transform:uppercase;letter-spacing:.12rem;font-size:.67rem!important}
.course-title.wrapper.style3 header>p:after,
.wrapper.style3.compact-title header.align-center>p:after{
  content:""!important;display:block!important;position:absolute!important;left:50%!important;bottom:0!important;transform:translateX(-50%)!important;width:48%!important;max-width:28rem!important;height:1px!important;background:rgba(255,255,255,.45)!important;
}
.wrapper.style3.compact-title header.align-center>p{position:relative;padding-bottom:.65rem!important;margin-bottom:.7rem!important}
.course-title-schedule{color:#cfcfcf!important;margin-top:.65rem!important}
.course-title-schedule strong{color:#fff!important}

/* Site-wide search. */
.page-search{position:fixed;top:var(--topbar);left:0;right:0;z-index:4999;background:#111;border-top:1px solid rgba(255,255,255,.08);box-shadow:0 8px 20px rgba(0,0,0,.2)}
.page-search[hidden]{display:none!important}
.page-search-inner{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.45rem;align-items:center;padding:.55rem 0}
.page-search-input{height:2.1rem!important;margin:0!important;background:#fff!important;color:#444!important;font-size:.78rem!important}
.page-search-submit,.page-search-close{height:2.1rem!important;min-width:3rem!important;padding:.3rem .65rem!important;border:1px solid var(--accent)!important;background:#fff!important;color:var(--accent)!important;box-shadow:none!important;font-size:.7rem!important;cursor:pointer}
.page-search-close{min-width:2.1rem!important;font-size:1rem!important}
.site-search-form>label{display:block;font-family:Lato,sans-serif;font-size:.8rem;font-weight:700;color:#555;margin-bottom:.45rem}
.site-search-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem;align-items:center}
.site-search-controls input{margin:0!important;height:2.3rem!important;font-size:.82rem!important}
.search-summary{font-size:.76rem;color:#777;margin:.75rem 0 .25rem}
.site-search-result{display:grid;grid-template-columns:105px minmax(0,1fr);gap:.9rem;padding:.75rem 0;border-top:1px solid var(--line)}
.site-search-result:first-child{border-top:0}
.site-search-kind{font-size:.62rem;text-transform:uppercase;letter-spacing:.07rem;color:#777;font-weight:700;padding-top:.2rem}
.site-search-result h3{font-size:1rem;margin:0 0 .15rem}
.site-search-meta{font-size:.72rem;color:#777;margin:.08rem 0}
.site-search-snippet{font-size:.79rem;line-height:1.45;margin:.18rem 0;color:#666}

@media screen and (max-width:736px){
  .page-search-inner{width:92%;grid-template-columns:minmax(0,1fr) auto auto}
  .site-search-result{grid-template-columns:1fr;gap:.15rem}
  .site-search-kind{padding-top:0}
  .course-title.wrapper.style3{padding:calc(54px + 1.4rem) 0 1.4rem!important}
  .course-title.wrapper.style3 h2{font-size:1.35rem!important}
}
@media screen and (max-width:736px){.topbar-search-toggle{display:inline-flex!important;align-items:center;justify-content:flex-start}.page-search{display:block}.page-search[hidden]{display:none!important}}
/* Project detail headers use the same Hielo title system as course and section pages. */
.project-title.wrapper.style3{
  background-color:#000!important;background-image:url("../images/site/bg.jpg")!important;background-size:cover!important;background-position:center!important;
  border-bottom:0!important;text-align:center!important;padding:calc(var(--topbar) + 2rem) 0 2rem!important;
}
.project-title.wrapper.style3 h2{color:#fff!important;font-size:1.7rem!important;margin:.15rem 0 0!important}
.project-title.wrapper.style3 header>p{color:#aaa!important;margin:0 auto .7rem!important;padding:0 0 .65rem!important;position:relative;text-transform:uppercase;letter-spacing:.12rem;font-size:.67rem!important}
.project-title.wrapper.style3 header>p:after{content:""!important;display:block!important;position:absolute!important;left:50%!important;bottom:0!important;transform:translateX(-50%)!important;width:48%!important;max-width:28rem!important;height:1px!important;background:rgba(255,255,255,.45)!important}
@media screen and (max-width:736px){.project-title.wrapper.style3{padding:calc(54px + 1.4rem) 0 1.4rem!important}.project-title.wrapper.style3 h2{font-size:1.35rem!important}}

/* Public SIS Anketa comments synced at build time. */
.course-evaluation-comments { margin: 1.15rem 0 1.35rem; padding: 1rem 1.15rem; background: #f6f6f6; border-left: 3px solid #999; }
.course-evaluation-comments h2 { margin: 0 0 .65rem; font-size: 1.05rem !important; font-weight: 600 !important; }
.course-evaluation-comments ul { list-style: none; margin: 0; padding: 0; }
.course-evaluation-comments li { margin: 0; padding: .55rem 0; border-bottom: 1px solid #ddd; }
.course-evaluation-comments li:last-child { border-bottom: 0; }
.course-evaluation-comments p { margin: 0 0 .15rem !important; }
.course-evaluation-comments span { font-size: .78rem; color: #777; }

/* YAML-generated course content uses the same semantic typography as the former archive pages. */
.course-content-box .course-yaml-content h2{
  font-family:Lato,sans-serif!important;
  font-size:var(--type-subsection)!important;
  line-height:1.28!important;
  font-weight:400!important;
  letter-spacing:0!important;
  text-transform:none!important;
  margin-top:1.35rem!important;
  margin-bottom:.55rem!important;
}
.course-content-box .course-yaml-content h3,
.course-content-box .course-yaml-content h4{
  font-family:Lato,sans-serif!important;
  font-size:var(--type-title)!important;
  line-height:1.32!important;
  font-weight:400!important;
  letter-spacing:0!important;
  text-transform:none!important;
  margin-top:1rem!important;
  margin-bottom:.4rem!important;
}
.course-content-box .course-yaml-content p,
.course-content-box .course-yaml-content li,
.course-content-box .course-yaml-content td,
.course-content-box .course-yaml-content th{
  font-family:"Open Sans",sans-serif!important;
  font-size:var(--type-body)!important;
  line-height:1.48!important;
}
.course-content-box .course-yaml-content .course-section:first-child h2{margin-top:.15rem!important}
.course-content-box .course-yaml-content .course-section+ .course-section{margin-top:1.2rem;padding-top:.15rem}
.course-content-box .course-yaml-content .table-wrapper{overflow-x:auto}
@media screen and (max-width:736px){.course-content-box .course-yaml-content table{min-width:640px}}


/* v12: course-detail readability and compact schedule tables.
   Keep the Hielo proportions while matching the roomier reference course page. */
.course-content-box .course-yaml-content .course-table-wrapper{
  margin:0 0 1.1rem;
  overflow-x:auto;
}
.course-content-box .course-yaml-content .course-table{
  margin:0;
  width:100%;
}
.course-content-box .course-yaml-content .course-table th{
  padding:.38rem .55rem .42rem!important;
  line-height:1.35!important;
  vertical-align:bottom;
}
.course-content-box .course-yaml-content .course-table td{
  padding:.38rem .55rem!important;
  line-height:1.28!important;
  vertical-align:top;
}
.course-content-box .course-yaml-content .course-table td br{
  line-height:inherit;
}
.course-content-box .course-yaml-content .course-table-spanning-row td[colspan]{
  font-weight:400;
}
.course-content-box .course-yaml-content ul,
.course-content-box .course-yaml-content ol{
  margin-bottom:1rem;
}
.course-content-box .course-yaml-content li{
  margin-bottom:.18rem;
}
.course-content-box .course-yaml-content li>ul,
.course-content-box .course-yaml-content li>ol{
  margin-top:.2rem;
  margin-bottom:.25rem;
}
@media screen and (max-width:736px){
  .course-content-box .course-yaml-content .course-table{min-width:640px}
  .course-content-box .course-yaml-content .course-table th,
  .course-content-box .course-yaml-content .course-table td{padding:.32rem .45rem!important}
}


/* v13: presentation-friendly typography based on the archived Hielo course pages.
   Increase reading size site-wide, while keeping dense teaching tables compact. */
.course-content-box .course-yaml-content .course-table th,
.course-content-box .course-yaml-content .course-table td{
  font-size:.94rem!important;
  line-height:1.28!important;
}
.course-content-box .course-yaml-content .course-table th{
  padding:.40rem .58rem .44rem!important;
}
.course-content-box .course-yaml-content .course-table td{
  padding:.38rem .58rem!important;
}
.course-content-box .course-yaml-content p,
.course-content-box .course-yaml-content li{
  font-size:1rem!important;
  line-height:1.55!important;
}
.course-content-box .course-yaml-content h2{font-size:1.45rem!important}
.course-content-box .course-yaml-content h3,
.course-content-box .course-yaml-content h4{font-size:1.18rem!important}
/* Multi-line bibliography/list records: one source newline = one visual line,
   with no extra paragraph-like gaps between lines. */
.course-content-box .course-yaml-content li br{
  line-height:inherit;
}
@media screen and (max-width:736px){
  html{font-size:15px}
  .course-content-box .course-yaml-content .course-table th,
  .course-content-box .course-yaml-content .course-table td{font-size:.9rem!important}
}


/* Unified teaching refresh: return to the original Hielo typography.
   Poppins 300 is the base face used by the bundled Hielo stylesheet. */
body, input, select, textarea {
  font-family: "Poppins", sans-serif !important;
  font-weight: 300 !important;
  font-size: 1rem;
  line-height: 1.65;
}
h1, h2, h3, h4, h5, h6,
.course-content-box .course-yaml-content h2,
.course-content-box .course-yaml-content h3,
.course-content-box .course-yaml-content h4 {
  font-family: "Poppins", sans-serif !important;
  font-weight: 300 !important;
}
.course-content-box .course-yaml-content p,
.course-content-box .course-yaml-content li {
  font-family: "Poppins", sans-serif !important;
  font-size: 1rem !important;
  line-height: 1.58 !important;
}
.course-content-box .course-yaml-content .course-table th,
.course-content-box .course-yaml-content .course-table td {
  font-family: "Poppins", sans-serif !important;
  font-size: .93rem !important;
  line-height: 1.30 !important;
}
.course-content-box .course-yaml-content .course-table th {
  font-weight: 600 !important;
  padding: .38rem .55rem .42rem !important;
}
.course-content-box .course-yaml-content .course-table td {
  font-weight: 300 !important;
  padding: .34rem .55rem !important;
}
.course-content-box .course-yaml-content .course-section + .course-section {
  margin-top: 1.05rem;
  padding-top: .1rem;
}
.course-content-box .course-yaml-content ul,
.course-content-box .course-yaml-content ol {
  margin-bottom: .85rem;
}
.course-content-box .course-yaml-content li {
  margin-bottom: .12rem;
}


/* v16: unified Hielo typography, compact but projector/mobile readable. */
:root {
  --type-body: .94rem;
  --type-meta: .76rem;
  --type-small: .69rem;
  --type-title: 1.02rem;
  --type-subsection: 1.32rem;
  --type-section: 1.58rem;
}
html { font-size: 15.5px !important; }
body, input, select, textarea {
  font-family: "Poppins", sans-serif !important;
  font-size: 1rem !important;
  line-height: 1.55 !important;
  font-weight: 300 !important;
}
h1, h2, h3, h4, h5, h6,
.topbar-brand strong,
.stats-grid strong,
.course-code,
.facets legend,
.supervision-card strong,
.site-search-form > label {
  font-family: "Poppins", sans-serif !important;
}
p { line-height: 1.55; }
.wrapper.compact-section { padding: 1.85rem 0 !important; }
.wrapper.compact-title { padding: 2.25rem 0 !important; }
.box .content { padding: 1.5rem !important; }

.topbar-brand strong { font-size: .91rem !important; font-weight: 600 !important; }
.topbar-brand span { font-size: .70rem !important; }
.topbar-nav a { font-size: .69rem !important; }
.stats-grid strong { font-size: 1.48rem !important; font-weight: 600 !important; }
.stats-grid span { font-size: .62rem !important; }

.summary-body h3,
.course-main h3,
.publication-item h3,
.thesis-item h3,
.site-search-result h3 { font-size: 1rem !important; }
.summary-body p,
.course-desc,
.pub-authors,
.pub-venue,
.thesis-student,
.project-box .content > p,
.site-search-snippet { font-size: .80rem !important; }
.course-code { font-size: .84rem !important; font-weight: 600 !important; }
.course-schedule,
.site-search-meta { font-size: .74rem !important; }
.badge { font-size: .65rem !important; }
.mini-action, .text-action { font-size: .66rem !important; }

.course-content-box .course-yaml-content p,
.course-content-box .course-yaml-content li {
  font-size: .96rem !important;
  line-height: 1.50 !important;
}
.course-content-box .course-yaml-content .course-table th,
.course-content-box .course-yaml-content .course-table td {
  font-size: .88rem !important;
  line-height: 1.25 !important;
}
.course-content-box .course-yaml-content .course-table th {
  padding: .34rem .50rem .38rem !important;
}
.course-content-box .course-yaml-content .course-table td {
  padding: .30rem .50rem !important;
}

/* Original-Hielo-like superheadings: centered text and a centered rule. */
.wrapper.style3.compact-title header.align-center > p,
.course-title.wrapper.style3 header > p,
.project-title.wrapper.style3 header > p,
.section-superheading-only > p,
.home-section-header > p {
  display: block !important;
  width: 100% !important;
  position: relative !important;
  text-align: center !important;
  padding-bottom: .65rem !important;
  margin: 0 auto .72rem !important;
}
.wrapper.style3.compact-title header.align-center > p:after,
.course-title.wrapper.style3 header > p:after,
.project-title.wrapper.style3 header > p:after,
.section-superheading-only > p:after,
.home-section-header > p:after {
  content: "" !important;
  display: block !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  bottom: 0 !important;
  transform: translateX(-50%) !important;
  width: 11rem !important;
  max-width: 45% !important;
  height: 1px !important;
  background: currentColor !important;
  opacity: .35 !important;
}
.section-superheading-only {
  margin: 0 0 1.15rem !important;
}
.section-superheading-only > p {
  color: #888 !important;
  font-size: .70rem !important;
  letter-spacing: .10rem !important;
  text-transform: uppercase !important;
}
.section-superheading-only > p:after {
  background: #999 !important;
}

/* Research: no duplicated "Research Areas" heading; clearer grant metadata. */
.research-main > .inner > .box > .content > header.align-center > p:after {
  display: block !important;
}
.research-area { padding: 1.05rem 0 !important; }
.research-bottom-grid { margin-top: 1rem !important; }
.grant-list { display: flex; flex-direction: column; gap: .25rem; }
.grant-item { padding: .65rem 0; border-top: 1px solid var(--line); }
.grant-item:first-child { border-top: 0; }
.grant-item h3 { font-size: .96rem; margin: 0 0 .10rem; }
.grant-period { margin: 0 0 .35rem; color: #888; font-size: .75rem; }
.grant-item dl {
  display: grid;
  grid-template-columns: 105px minmax(0,1fr);
  gap: .12rem .55rem;
  margin: 0;
  font-size: .76rem;
  line-height: 1.4;
}
.grant-item dt { font-weight: 500; color: #777; }
.grant-item dd { margin: 0; }

/* Homepage. */
.empty-current-year { color: #888; margin: .65rem 0 .15rem; }
.project-published {
  display: block;
  color: #888;
  font-size: .67rem;
  margin: .10rem 0;
}

/* Supervision overview. */
.supervision-status-counts {
  display: flex;
  justify-content: center;
  gap: .75rem 1.1rem;
  flex-wrap: wrap;
  margin-top: .55rem;
}
.supervision-status-counts span {
  font-size: .72rem;
  color: #777;
}
.supervision-status-counts strong {
  display: inline;
  font-size: 1.12rem !important;
  color: var(--accent);
  margin-right: .15rem;
}
.available-thesis-links { margin-top: .9rem !important; }
.available-thesis-links .content { padding: 1.25rem 1.5rem !important; }
.available-topic-list { max-width: 58rem; margin: .35rem auto .8rem; }
.available-topic-list li { margin-bottom: .22rem; }

/* Software card grid: keep columns, reduce excessive vertical gap. */
.grid-style.project-summary,
.grid-style.project-summary.full {
  column-gap: .9rem !important;
  row-gap: .55rem !important;
}
.project-box .content { padding: .9rem 1rem !important; }

/* Mobile should not become smaller than normal readable browser text. */
@media screen and (max-width: 980px) {
  html { font-size: 16px !important; }
}
@media screen and (max-width: 736px) {
  html { font-size: 16px !important; }
  body { font-size: 1rem !important; line-height: 1.52 !important; }
  .wrapper.compact-section { padding: 1.25rem 0 !important; }
  .box .content { padding: 1rem !important; }
  .course-content-box .course-yaml-content p,
  .course-content-box .course-yaml-content li { font-size: .96rem !important; }
  .course-content-box .course-yaml-content .course-table th,
  .course-content-box .course-yaml-content .course-table td { font-size: .86rem !important; }
  .grant-item dl { grid-template-columns: 92px minmax(0,1fr); font-size: .74rem; }
}


/* v17 breadcrumbs and page introductions ---------------------------------- */
.topbar-breadcrumbs {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: .38rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-family: "Poppins", sans-serif;
  font-size: .72rem;
}
.topbar-breadcrumbs a,
.topbar-breadcrumbs span {
  min-width: 0;
}
.topbar-breadcrumbs a {
  color: #fff;
  text-decoration: none;
}
.topbar-breadcrumbs a:hover {
  color: #ddd;
}
.breadcrumb-root {
  font-weight: 600;
  letter-spacing: .01rem;
}
.breadcrumb-separator {
  opacity: .45;
  flex: 0 0 auto;
}
.breadcrumb-current {
  color: rgba(255,255,255,.72);
  overflow: hidden;
  text-overflow: ellipsis;
}
.page-intro-box {
  margin: 0 0 .9rem !important;
}
.page-intro-box .content {
  padding: 1.05rem 1.35rem !important;
}
.page-intro-box p,
.page-intro-text {
  max-width: 68rem;
  margin: 0 auto .7rem;
  font-size: .91rem !important;
  line-height: 1.55 !important;
}
.page-intro-box p:last-child,
.page-intro-text:last-child {
  margin-bottom: 0;
}
.page-intro-text {
  margin-bottom: 1rem !important;
}

/* External link affordance. GitHub/GitLab intentionally use repository icons. */
a.external-link::after {
  content: "\00a0\f08e";
  font-family: FontAwesome;
  font-size: .72em;
  font-weight: normal;
  opacity: .72;
  white-space: nowrap;
}
.repository-link .fa {
  margin-right: .28rem;
}
.github-link .fa-github {
  font-size: 1.05em;
}

/* Stable project media: reserve the final geometry before image decoding. */
.project-box .image {
  height: 195px !important;
  overflow: hidden !important;
  background: #f7f7f7;
}
.project-box .image a {
  display: block;
  width: 100%;
  height: 100%;
}
.project-box .image img,
.project-box img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: contain !important;
  object-position: center center !important;
}

.project-figure {
  height: auto !important;
  aspect-ratio: 16 / 10;
  min-height: 280px;
  overflow: hidden;
}
.project-figure img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center center !important;
}

.artifact-gallery a {
  overflow: hidden;
}
.artifact-gallery img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: contain !important;
}
.lightbox-overlay figure {
  width: min(90vw, 1400px);
  height: min(82vh, 900px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.lightbox-overlay figure img {
  display: block !important;
  width: 100% !important;
  height: calc(100% - 2rem) !important;
  max-width: 100% !important;
  max-height: calc(100% - 2rem) !important;
  object-fit: contain !important;
}
.lightbox-prev:disabled,
.lightbox-next:disabled {
  opacity: .18 !important;
  cursor: default !important;
  pointer-events: none;
}

@media screen and (max-width: 980px) {
  .topbar-breadcrumbs {
    max-width: calc(100vw - 8rem);
  }
}
@media screen and (max-width: 736px) {
  .topbar-breadcrumbs {
    font-size: .69rem;
    gap: .28rem;
    max-width: calc(100vw - 5.5rem);
  }
  .breadcrumb-root {
    flex: 0 0 auto;
  }
  .page-intro-box .content {
    padding: .9rem 1rem !important;
  }
  .page-intro-box p,
  .page-intro-text {
    font-size: .94rem !important;
  }
  .project-figure {
    min-height: 220px;
  }
}


/* v18 compact grant rows -------------------------------------------------- */
.grant-list {
  gap: 0 !important;
}
.grant-item {
  padding: .48rem 0 !important;
  border-top: 1px solid var(--line) !important;
}
.grant-item:first-child {
  border-top: 0 !important;
}
.grant-item h3 {
  margin: 0 0 .16rem !important;
  font-size: .92rem !important;
  line-height: 1.35 !important;
}
.grant-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .12rem .48rem;
  margin: 0 !important;
  color: #777;
  font-size: .72rem !important;
  line-height: 1.35 !important;
}
.grant-meta span {
  display: inline-flex;
  align-items: baseline;
}
.grant-meta span:not(:last-child)::after {
  content: "·";
  margin-left: .48rem;
  color: #aaa;
}

/* Header search: same visual language as the full search page ------------- */
.page-search {
  position: absolute !important;
  top: var(--topbar) !important;
  left: 0 !important;
  right: 0 !important;
  background: #f5f5f5 !important;
  border-top: 1px solid #e4e4e4 !important;
  border-bottom: 1px solid #d9d9d9 !important;
  box-shadow: 0 5px 14px rgba(0,0,0,.08) !important;
  color: #555 !important;
  padding: .72rem 0 !important;
}
.page-search-card {
  background: #fff;
  border: 1px solid #e4e4e4;
  padding: .8rem 1rem;
}
.page-search-card > label {
  display: block;
  font-family: "Poppins", sans-serif !important;
  font-size: .80rem !important;
  font-weight: 600 !important;
  color: #555;
  margin-bottom: .45rem;
}
.page-search-controls {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto auto;
  gap: .45rem;
  align-items: center;
}
.page-search-input {
  margin: 0 !important;
  height: 2.3rem !important;
  font-family: "Poppins", sans-serif !important;
  font-size: .82rem !important;
}
.page-search-submit,
.page-search-close {
  height: 2.3rem !important;
  margin: 0 !important;
  white-space: nowrap;
}

@media screen and (max-width: 736px) {
  .grant-meta {
    display: block;
    font-size: .76rem !important;
  }
  .grant-meta span {
    display: inline;
  }
  .grant-meta span:not(:last-child)::after {
    margin-left: .35rem;
    margin-right: .15rem;
  }
  .page-search {
    padding: .55rem 0 !important;
  }
  .page-search-card {
    padding: .7rem .8rem;
  }
  .page-search-controls {
    grid-template-columns: minmax(0,1fr) auto;
  }
  .page-search-close {
    grid-column: 2;
    grid-row: 2;
    justify-self: end;
    height: 2rem !important;
  }
}


/* v19 semantic typography normalization ---------------------------------- */
:root {
  --font-card-title: .96rem;
  --font-card-body: .84rem;
  --font-card-meta: .72rem;
  --line-card: 1.42;
  --line-meta: 1.32;
}

/* Equal information level -> equal typography. */
.summary-body h3,
.project-home-main h3,
.project-box h3,
.course-main h3,
.publication-item h3,
.thesis-item h3,
.site-search-result h3 {
  font-family: "Poppins", sans-serif !important;
  font-size: var(--font-card-title) !important;
  line-height: 1.35 !important;
  font-weight: 500 !important;
  margin: 0 0 .16rem !important;
}
.summary-body p,
.project-home-main p,
.project-box .content > p,
.course-desc,
.pub-authors,
.pub-venue,
.thesis-student,
.site-search-snippet {
  font-size: var(--font-card-body) !important;
  line-height: var(--line-card) !important;
}
.recent-pub-meta,
.project-published,
.course-schedule,
.course-metrics,
.site-search-meta {
  font-size: var(--font-card-meta) !important;
  line-height: var(--line-meta) !important;
}
.summary-row,
.project-home-row {
  padding-top: .58rem !important;
  padding-bottom: .58rem !important;
}
.project-home-main,
.summary-body {
  font-size: 1rem !important;
}

/* Teaching summary metrics. */
.course-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: .16rem .65rem;
  margin: .22rem 0 0 !important;
  color: #777;
}
.course-metrics span {
  white-space: nowrap;
}
.course-metrics span:not(:last-child)::after {
  content: "·";
  margin-left: .65rem;
  color: #aaa;
}
.course-metrics strong {
  font-weight: 600;
  color: #555;
}

/* CV grants use the same compact two-line visual hierarchy as Research. */
.cv-grant-list {
  margin: .2rem 0 1rem;
}
.cv-grant-item {
  padding: .46rem 0;
  border-top: 1px solid var(--line);
}
.cv-grant-item:first-child {
  border-top: 0;
}
.cv-grant-item h4 {
  margin: 0 0 .14rem !important;
  font-size: .91rem !important;
  line-height: 1.35 !important;
  font-weight: 500 !important;
}

@media screen and (max-width: 736px) {
  .summary-body h3,
  .project-home-main h3,
  .project-box h3,
  .course-main h3,
  .publication-item h3,
  .thesis-item h3,
  .site-search-result h3 {
    font-size: 1rem !important;
  }
  .summary-body p,
  .project-home-main p,
  .project-box .content > p,
  .course-desc {
    font-size: .91rem !important;
  }
}
