/* xLAB interiors: a quiet canvas for research, people and events. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.research-directory,.people-directory,.events-directory{padding:0 0 1rem}
.directory-toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 36px;padding:0 0 24px;border-bottom:1px solid var(--line)}
.directory-label{color:var(--muted);font-size:15px;font-weight:500;margin:0!important}
.content .directory-heading,.directory-heading{font-family:Inter,Helvetica,Arial,sans-serif;font-size:26px;font-weight:650;line-height:1.25;letter-spacing:-.025em;margin:0;color:var(--site-heading)}
.directory-nav{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center}
.content .directory-nav a,.directory-nav a{color:var(--muted);font-size:15px;font-weight:550;text-decoration:none!important;padding:9px 0;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}
.directory-nav a:hover,.directory-nav a:focus-visible{color:var(--site-hover);border-color:var(--penn-red)}
.project-search{display:flex;align-items:center;gap:10px;border:1px solid #cdd4df;border-radius:4px;padding:9px 14px;min-width:310px;background:#fff}
.project-search[hidden],.search-clear[hidden],.search-empty[hidden],.project-card[hidden]{display:none!important}
.project-search:focus-within{outline:2px solid var(--penn-blue);outline-offset:2px}
.project-search svg{width:19px;height:19px;fill:none;stroke:var(--muted);stroke-width:1.6;flex-shrink:0}
.project-search input{border:0;background:transparent;outline:none;color:var(--ink);font:inherit;font-size:15px;min-width:0;width:100%}
.project-search input::-webkit-search-cancel-button{display:none}
.search-clear{background:transparent;border:0;color:var(--site-hover);font:inherit;font-size:14px;cursor:pointer;padding:2px}
.search-empty{padding:48px 0;color:var(--muted)}
.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:44px 36px;align-items:stretch}
.project-grid--compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
.content a.project-card,a.project-card{display:flex;flex-direction:column;min-width:0;color:var(--ink);text-decoration:none!important;border-bottom:1px solid var(--line);background:#fff;padding:0 0 26px;transition:border-color .18s}
.project-card:hover,.project-card:focus-visible{border-color:var(--penn-red)}
.project-card:focus-visible,.person-card:focus-visible,.home-explore a:focus-visible{outline:3px solid var(--penn-blue);outline-offset:5px}
.project-card__media{position:relative;aspect-ratio:16/9;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#f4f5f7;border:1px solid #e9ecf0;border-radius:5px;isolation:isolate}
.project-card__media img,.content .project-card__media img{width:100%;height:100%;max-width:none;object-fit:contain;padding:12px;display:block;margin:0}
.project-card__video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#f4f5f7;opacity:0;transition:opacity .18s;pointer-events:none}
.project-card.is-previewing .project-card__video{opacity:1}
.project-card__body{display:flex;flex-direction:column;gap:12px;padding:20px 0 0;flex:1}
.project-card__meta{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:13px;font-weight:500;letter-spacing:.025em}
.content .project-card__title,.project-card__title{font-family:Inter,Helvetica,Arial,sans-serif;font-size:23px;font-weight:650;line-height:1.28;letter-spacing:-.025em;color:var(--site-heading);margin:0!important}
.project-card:hover .project-card__title{color:var(--site-hover)}
.content .project-card__description,.project-card__description{font-size:16px;line-height:1.65;margin:0!important;color:var(--muted);max-width:62ch}
.project-grid--compact .project-card__title{font-size:20px}
.project-grid--compact .project-card__description{font-size:15px}
.home-highlights .project-card__title{font-size:19px;line-height:1.4;letter-spacing:-.015em;text-wrap:pretty}
.home-highlights .project-card__description{font-size:14px;line-height:1.6}
/* A usable post link remains visible even when LinkedIn blocks its embed. */
.content .linkedin-news-intro{font-size:15px;color:var(--muted);margin-bottom:10px}
.linkedin-scroll .linkedin-item{display:flex;flex-direction:column;flex:0 0 min(400px,100%);min-width:0;overflow:hidden;background:var(--site-surface,#fff);border:1px solid var(--site-border);border-radius:6px}
.linkedin-item__heading{padding:18px 20px 16px;min-height:108px}
.linkedin-item__heading time{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.content .linkedin-item__heading h2{font-size:17px;font-weight:650;line-height:1.4;letter-spacing:-.015em;margin:7px 0 0}
.content .linkedin-item__heading h2 a{color:var(--site-heading);text-decoration:none}
.content .linkedin-item__heading h2 a:hover{text-decoration:underline;text-underline-offset:3px}
.linkedin-scroll .linkedin-item iframe{display:block;width:100%;height:450px;border:0!important;border-top:1px solid var(--site-border)!important;max-width:none}
.content a.linkedin-item__source{display:block;padding:14px 20px;font-size:13px;font-weight:600;margin-top:auto}
.linkedin-scroll:focus-visible{outline:3px solid var(--site-link);outline-offset:4px}
/* A directory, not a wall of oversized profile cards. */
.people-directory>.directory-nav{padding:0 0 24px;border-bottom:1px solid var(--line);margin-bottom:38px}
.people-section{display:grid;grid-template-columns:200px minmax(0,1fr);gap:36px;border-bottom:1px solid var(--line);padding:0 0 38px;margin:0 0 38px;scroll-margin-top:100px}
.people-section:last-child{border-bottom:0}
.content .people-section__title,.people-section__title{font-family:Inter,Helvetica,Arial,sans-serif;font-size:21px;font-weight:650;letter-spacing:-.025em;line-height:1.35;color:var(--site-heading);margin:0!important;padding-top:5px;max-width:190px}
.people-section__title::before{content:"";display:block;width:26px;height:3px;background:var(--penn-red);margin:0 0 15px}
.people-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px 26px;align-items:start}
.content a.person-card,a.person-card{display:block;text-decoration:none!important;color:var(--ink);min-width:0}
.person-card__portrait,.content .person-card__portrait{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;object-position:50% 28%;border-radius:4px;background:#f4f5f7;max-width:none;margin:0 0 14px}
.person-card__initials,.content .person-card__initials{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;background:#eef1f6;color:var(--site-heading);font-size:clamp(28px,4vw,48px);font-weight:550;border-radius:4px;margin:0 0 14px}
.person-portrait .person-card__initials{max-width:230px}
.person-card__body h3,.content .person-card__body h3{font-family:Inter,Helvetica,Arial,sans-serif;font-size:17px;font-weight:650;line-height:1.35;color:var(--site-heading);letter-spacing:-.015em;margin:0 0 6px}
.person-card__body p,.content .person-card__body p{font-size:13px;line-height:1.5;color:var(--muted);margin:0}
.person-card:hover h3{color:var(--site-hover)}
.people-section--lead .people-grid{display:block}
.person-card--lead{display:flex!important;align-items:center;gap:32px}
.person-card--lead .person-card__portrait{width:175px;flex:0 0 175px;margin:0}
.person-card--lead .person-card__body h3{font-size:28px;margin:0 0 9px}
.person-card--lead .person-card__body p{font-size:17px}
.person-card__link{display:inline-block;margin-top:22px;font-size:14px;font-weight:550;color:var(--site-hover)}
/* Activity dates, imagery and descriptions follow one common alignment. */
.events-directory .directory-toolbar{margin-bottom:30px}
.event-year,.content .event-year{font-family:Inter,Helvetica,Arial,sans-serif;color:var(--site-hover);font-size:21px;line-height:1.2;font-weight:650;letter-spacing:-.025em;margin:42px 0 0;scroll-margin-top:100px}
.event-entry{display:grid;grid-template-columns:65px 230px minmax(0,1fr);gap:30px;padding:30px 0;border-bottom:1px solid var(--line);align-items:start}
.event-entry__date{display:flex;flex-direction:column;align-items:center;gap:2px;padding-top:3px;color:var(--site-heading);font-variant-numeric:tabular-nums}
.event-entry__date span{font-size:14px;font-weight:550}
.event-entry__date strong{color:var(--site-heading);font-size:35px;line-height:1.1;font-weight:500;letter-spacing:-.045em}
.event-entry__image{display:block;aspect-ratio:3/2;overflow:hidden;border-radius:4px;background:#f4f5f7}
.event-entry__image img,.content .event-entry__image img{width:100%;height:100%;object-fit:contain;max-width:none;margin:0;display:block}
.event-entry__body h3,.content .event-entry__body h3{font-family:Inter,Helvetica,Arial,sans-serif;font-size:23px;font-weight:650;line-height:1.32;letter-spacing:-.025em;margin:0 0 12px}
.event-entry__body h3 a{color:var(--site-heading);text-decoration:none!important}
.event-entry__body h3 a:hover{color:var(--site-hover)}
.event-entry__body p,.content .event-entry__body p{font-size:16px;line-height:1.65;color:var(--muted);margin:0 0 16px;max-width:80ch}
.content a.event-entry__link,.event-entry__link{color:var(--site-hover);font-size:14px;font-weight:600;text-decoration:none!important;display:inline-block}
.events-upcoming{margin-bottom:48px}
.events-upcoming>.directory-heading{padding-bottom:20px;border-bottom:1px solid var(--line)}
/* Readable profiles and long-form project pages. */
.back-link{display:inline-flex;align-items:center;gap:12px;color:var(--muted);font-size:14px;font-weight:550;text-decoration:none;margin:0 0 32px}
.back-link:hover{color:var(--site-hover)}
.person-layout{display:grid;grid-template-columns:230px minmax(0,760px);gap:70px;align-items:start}
.person-portrait img{display:block;width:230px;max-width:100%;height:auto;border-radius:5px}
.person-biography.content{font-size:17px;line-height:1.8}
.person-biography.content h1,.person-biography.content h2,.person-biography.content h3{font-family:Inter,Helvetica,Arial,sans-serif;letter-spacing:-.025em;line-height:1.3}
.person-biography.content h2{font-size:26px;margin:32px 0 18px}
.person-biography.content h2:first-of-type{margin-top:0}
.person-biography.content h2::before{display:none}
.person-biography [hidden]{display:none!important}
.person-projects{margin-top:56px;padding-top:36px;border-top:1px solid var(--line)}
.person-projects>.directory-heading{margin-bottom:28px}
.page-project--editorial .project-layout{display:grid;grid-template-columns:minmax(0,900px) 220px;gap:60px;align-items:start}
.page-project--editorial main.project-article{width:100%;max-width:none;margin:0;min-width:0;padding:0;font-size:17px;line-height:1.8}
.page-project--editorial .project-article h1,.page-project--editorial .project-article h2,.page-project--editorial .project-article h3{font-family:Inter,Helvetica,Arial,sans-serif;line-height:1.3;letter-spacing:-.025em;scroll-margin-top:100px}
.page-project--editorial .project-article h2{font-size:29px;margin:44px 0 20px}
.page-project--editorial .project-article>h2:first-child{margin-top:0}
.page-project--editorial .project-article h2::before{display:none}
.page-project--editorial .project-article p{max-width:82ch}
.page-project--editorial .project-article img{max-width:100%;height:auto}
.page-project--editorial .project-article figure{margin:28px 0}
.page-project--editorial .project-article video{max-width:100%}
.project-outline{position:sticky;top:104px;font-size:14px;border-left:1px solid var(--line);padding-left:24px;margin-top:5px;max-height:calc(100vh - 130px);overflow:auto}
.project-outline:empty{display:none}
.project-outline .contents{padding:0;margin:0;background:transparent;border:0;box-shadow:none}
.project-outline .menu-label{letter-spacing:.06em}
.project-outline p{font-size:13px;font-weight:650;color:var(--muted);margin:0 0 15px}
.project-outline ul{list-style:none!important;margin:0;padding:0}
.project-outline a{color:var(--muted);text-decoration:none;display:block;line-height:1.5;padding:6px 0}
.project-outline a:hover,.project-outline a:focus-visible{color:var(--site-hover)}
.project-outline .is-active{color:var(--site-hover);font-weight:650}
/* Homepage entry links and featured research share the interior's rhythm. */
.home-explore{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 36px;margin:36px 0 64px}
.content .home-explore a{display:flex;align-items:center;justify-content:space-between;gap:15px;color:var(--site-heading);font-size:21px;font-weight:600;letter-spacing:-.02em;padding:22px 0;border-top:1px solid var(--line);text-decoration:none!important}
.home-explore a:hover{color:var(--site-hover)}
@media(min-width:1450px){.people-grid{gap:32px}.person-card__portrait{max-height:220px}.project-grid{gap:48px 40px}}
@media(max-width:1100px){
.people-section{grid-template-columns:160px minmax(0,1fr);gap:28px}.people-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.people-section__title{font-size:19px}
.page-project--editorial .project-layout{grid-template-columns:minmax(0,1fr) 185px;gap:36px}.person-layout{grid-template-columns:210px minmax(0,1fr);gap:42px}
.event-entry{grid-template-columns:55px 175px minmax(0,1fr);gap:24px}.event-entry__body h3{font-size:21px}
}
@media(max-width:800px){
.project-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr))}.people-section{grid-template-columns:1fr;gap:24px}.people-section__title{max-width:none}.people-section__title::before{display:none}.people-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.page-project--editorial .project-layout{display:flex;flex-direction:column;gap:28px}.project-outline{order:-1;position:static;width:100%;border:0;border-bottom:1px solid var(--line);padding:0 0 20px;max-height:none}.project-outline ul{display:flex;flex-wrap:wrap;gap:4px 22px}
.person-layout{grid-template-columns:180px minmax(0,1fr);gap:30px}.event-entry{grid-template-columns:55px minmax(0,1fr)}.event-entry__image{grid-column:2;max-width:220px}.event-entry__body{grid-column:2}.event-entry__date{grid-row:1/3}
.home-explore{gap:0 24px}.home-explore a{font-size:19px!important}
}
@media(max-width:600px){
.directory-toolbar{align-items:flex-start;flex-direction:column;gap:18px;margin-bottom:26px;padding-bottom:20px}.project-search{width:100%;min-width:0}.project-grid,.project-grid--compact{grid-template-columns:1fr;gap:32px}.project-card__body{padding-top:15px;gap:10px}.project-card__title,.content .project-card__title{font-size:21px}.project-card__description{font-size:15px!important}
.people-directory>.directory-nav{gap:4px 22px}.directory-nav a{font-size:14px}.people-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 20px}.people-section{margin-bottom:28px;padding-bottom:28px}.person-card__body h3{font-size:16px!important}.person-card__body p{font-size:12px!important}.person-card--lead{gap:22px}.person-card--lead .person-card__portrait{width:120px;flex-basis:120px}.person-card--lead .person-card__body h3{font-size:21px!important}.person-card--lead .person-card__body p{font-size:14px!important}.person-card__link{margin-top:13px}
.person-layout{display:block}.person-portrait{margin-bottom:28px}.person-portrait img{width:170px}.person-biography.content{font-size:16px}.person-biography.content h2{font-size:24px}.back-link{margin-bottom:24px}
.event-entry{grid-template-columns:43px minmax(0,1fr);gap:18px;padding:25px 0}.event-entry__date strong{font-size:29px}.event-entry__image{max-width:none}.event-entry__body h3{font-size:20px!important}.event-entry__body p{font-size:15px!important}.event-year{margin-top:30px}.events-directory .directory-toolbar{gap:8px}
.page-project--editorial main.project-article{font-size:16px}.page-project--editorial .project-article h2{font-size:25px}.project-outline{font-size:13px}.project-outline ul{gap:0 18px}
.home-explore{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;margin:28px 0 44px}.content .home-explore a{font-size:18px!important;padding:18px 0}
}
@media(prefers-reduced-motion:reduce){.project-card,.project-card__video,.directory-nav a{transition:none}}
/* Long abstracts wrap around their opening figure rather than leaving a
   vertically centered illustration halfway down a column of text. */
@media(min-width:801px){
.page-project--editorial .project-article #abstract + .columns{display:flow-root;margin:0}
.page-project--editorial .project-article #abstract + .columns>.column:first-child{float:left;width:37%;padding:0;margin:0 28px 18px 0}
.page-project--editorial .project-article #abstract + .columns>.column:last-child{width:auto;padding:0;display:block}
}
