/* Type scale: every font-size in the site CSS uses one of these steps (12 px floor) or a fluid heading token. */
:root{--t-xs:12px;--t-sm:14px;--t-md:16px;--t-lg:18px;--t-xl:22px;--t-2xl:28px;--t-3xl:36px;--t-4xl:48px;--fs-display:clamp(44px,5.5vw,76px)}
:root{--fs-title:clamp(34px,3.3vw,48px);--fs-section:clamp(26px,2.3vw,34px);--fs-sub:clamp(23px,2vw,28px);--fs-card:clamp(20px,1.7vw,24px);--paper:#ffffff;--ink:#333333;--muted:#616161;--line:#dddddd;--accent:#a4d4e6;--white:#ffffff;--petrol:#035f80;--petrol-dark:#024a64;--night:#02212d;--band:#eeeeee;--serif:Georgia,'Times New Roman',serif;--sans:'Avenir Next',Avenir,'Segoe UI',system-ui,-apple-system,'Helvetica Neue',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:var(--t-md);line-height:1.65}a{color:inherit;text-underline-offset:5px}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img,svg{max-width:100%}img{display:block;height:auto}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400;line-height:1.08}h1,h2{font-family:var(--serif);letter-spacing:-.045em}h1{font-size:var(--fs-title)}h2{font-size:var(--fs-section)}h3{font-size:var(--t-2xl)}p+p{margin-top:1em}.container{width:min(1280px,calc(100% - 96px));margin-inline:auto}.eyebrow{font-size:var(--t-xs);font-weight:600;letter-spacing:.16em;text-transform:uppercase;line-height:1.5}.lead{font-size:var(--t-xl);line-height:1.65;color:var(--muted);max-width:670px}.section{padding:88px 0}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:40px}.section-heading .eyebrow{margin-bottom:14px}.button{display:inline-flex;align-items:center;justify-content:center;gap:30px;padding:14px 23px;background:var(--petrol);color:var(--white);text-decoration:none;border:1px solid var(--petrol);font-size:var(--t-sm);font-weight:600;transition:background .2s,transform .2s}.button:hover{background:var(--petrol-dark);transform:translateY(-2px)}.button-outline{background:transparent;color:var(--petrol)}.button-outline:hover{background:#e6f0f4}.text-link{font-size:var(--t-sm);font-weight:600;text-decoration:none;color:var(--petrol);border-bottom:1px solid var(--petrol);padding-bottom:5px;display:inline-block}.text-link:hover{color:var(--petrol-dark)}.page-intro{padding:75px 0 60px}.page-intro .eyebrow{margin-bottom:22px}.page-intro .lead{margin-top:28px}.site-header{border-bottom:1px solid var(--line)}.header-inner{height:106px;display:flex;align-items:center;justify-content:space-between;gap:24px}.nav{display:flex;align-items:center;gap:28px}.nav a{font-size:var(--t-xs);text-decoration:none;white-space:nowrap}.nav a[aria-current=page]{border-bottom:1px solid;padding-bottom:5px}.nav .nav-join{border:1px solid var(--petrol);color:var(--petrol);padding:10px 16px}.menu-toggle{display:none;background:none;border:1px solid var(--line);padding:8px 12px;color:var(--ink)}.skip-link{position:absolute;top:-80px;padding:10px;background:var(--accent);z-index:100}.skip-link:focus{top:10px}.site-footer{background:var(--petrol);color:#ffffff;padding:55px 0 20px}.footer-top{display:flex;justify-content:space-between;gap:40px;padding-bottom:44px}.footer-title{font-family:var(--serif);font-size:var(--t-3xl);line-height:1.2;letter-spacing:-.03em}.footer-description{font-size:var(--t-xs);color:#cfe3ec;max-width:350px;margin-top:16px}.footer-links{display:flex;gap:40px;align-items:start}.footer-links a{font-size:var(--t-xs)}.footer-bottom{border-top:1px solid rgba(255,255,255,.28);padding-top:18px;display:flex;justify-content:flex-end;gap:20px;font-size:var(--t-xs);color:#cfe3ec}.footer-bottom a{color:inherit}:focus-visible{outline:3px solid #035f80;outline-offset:5px}::selection{background:var(--accent);color:var(--ink)}@media(max-width:1050px){.container{width:calc(100% - 64px)}.nav{gap:17px}.nav a{font-size:var(--t-xs)}}@media(max-width:800px){.container{width:calc(100% - 40px)}.header-inner{height:86px}.menu-toggle{display:block}.nav{display:none;position:absolute;top:86px;left:0;right:0;background:var(--paper);z-index:20;padding:25px;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:20px}.nav.is-open{display:flex}.nav a{font-size:var(--t-md)}.section{padding:58px 0}.section-heading{align-items:start;flex-direction:column;gap:20px}.page-intro{padding:48px 0}.footer-top,.footer-bottom{flex-direction:column}.footer-links{flex-wrap:wrap;gap:22px}.lead{font-size:var(--t-lg)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
/* Institutional identity: both host units named next to their logos, in logo order. */
.site-header{position:relative}.identity{display:flex;align-items:center;gap:20px;min-width:0}.institution-logos{display:flex;gap:17px;align-items:center;border-right:1px solid var(--line);padding-right:20px;flex-shrink:0}.institution-logos a{display:block}.mpq-logo{width:36px;height:52px;object-fit:contain}.lmu-logo{width:98px;height:47px;object-fit:contain}.brand{display:grid;gap:5px;text-decoration:none;flex-shrink:0}.brand-unit{display:flex;align-items:baseline;font-size:var(--t-md);font-weight:600;letter-spacing:-.015em;line-height:1.25;white-space:nowrap}.brand-unit small{width:40px;flex-shrink:0;font-size:var(--t-xs);font-weight:600;letter-spacing:.12em;color:var(--muted)}.brand:hover .brand-unit{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}.brand:hover small{text-decoration:none}.header-inner{height:100px}.nav{gap:24px}.nav a{font-size:var(--t-sm)}.footer-links>div{display:grid;gap:10px}.site-footer{padding:44px 0 18px}.footer-top{padding-bottom:32px}.footer-units{display:flex;gap:56px}.footer-title{font-size:var(--t-xl)}.footer-description{margin-top:10px}
@media(max-width:1220px){.menu-toggle{display:block}.nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--paper);z-index:20;padding:25px;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:18px}.nav.is-open{display:flex}.nav a{font-size:var(--t-md)}}@media(max-width:800px){.header-inner{height:86px}.identity{gap:12px}.institution-logos{gap:10px;padding-right:12px}.lmu-logo{width:65px;height:32px}.mpq-logo{width:25px;height:36px}.brand-unit{font-size:var(--t-sm)}.brand-unit small{width:36px}.menu-toggle{font-size:var(--t-xs);padding:7px 9px}.footer-links{gap:30px}.footer-units{flex-direction:column;gap:22px}}@media(max-width:600px){.header-inner{height:auto;flex-wrap:wrap;padding-block:12px 14px;row-gap:12px}.identity{display:contents}.institution-logos{border-right:0;padding-right:0}.brand{order:3;flex-basis:100%;border-top:1px solid var(--line);padding-top:10px}.lmu-logo{width:58px;height:29px}.mpq-logo{width:22px;height:33px}}
[hidden]{display:none!important}
/* Accessibility: 3:1 focus rings and form-field borders (WCAG 1.4.11), steady nav baseline, print. */
:root{--control:#838383}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}:focus-visible{outline-color:#035f80}.site-footer :focus-visible,.array-canvas :focus-visible{outline-color:var(--accent)}.skip-link:focus-visible{outline-offset:2px}.nav a:not(.nav-join){border-block:1px solid transparent;padding-block:5px}.nav a:not(.nav-join):hover{border-bottom-color:var(--line)}.nav a[aria-current=page]:not(.nav-join){border-bottom-color:currentColor}.nav .nav-join:hover{background:#dfe9ec}.nav .nav-join[aria-current=page]{padding:10px 16px;background:var(--petrol);color:var(--white)}.menu-toggle{border-color:var(--control)}@media(prefers-reduced-motion:reduce){.button:hover,.person-photo:hover img{transform:none}}
@media print{.skip-link,.menu-toggle,.nav,.site-footer .footer-links,.footer-bottom,.publication-tools,.publication-more,.publication-links .copy-citation,.archive-tools,.archive-more,.news-filters,.people-tabs,.people-tools{display:none!important}body{background:#fff;color:#000;font-size:11pt}.site-header{border:0}.header-inner{height:auto;padding-block:0 12pt}.site-footer{background:none;color:#000;padding:12pt 0 0;border-top:1px solid #999}.footer-description{color:#333}.container{width:auto}.section,.page-intro{padding-block:18pt}a{text-decoration:underline}article,figure,.publication-row,.news-row,.event-row,.person-card,.resource-row{break-inside:avoid}h1,h2,h3{break-after:avoid}}

/* Compact navigation with a persistent recruitment route. */
.header-actions{display:none;align-items:center;gap:10px;margin-left:auto;flex-shrink:0}
.header-join{font-size:var(--t-sm);font-weight:600;text-decoration:none;background:#035f80;color:#ffffff;padding:9px 14px;border:1px solid #035f80;white-space:nowrap}
.header-join:hover{background:#024a64}
.brand{flex-shrink:1}.brand-unit{white-space:normal}
@media(max-width:1220px){.header-actions{display:flex}.nav .nav-join{display:none}}
@media(max-width:600px){.header-actions{order:2}.header-join{font-size:var(--t-xs);padding:7px 11px}.brand{order:3}}

/* Shared publication affiliations, used in highlights and the full bibliography. */
.publication-team-tags{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:13px;font-size:var(--t-sm);line-height:1.5}
.publication-team-tags>span{color:var(--muted);margin-right:3px}
.publication-team-tags a{display:inline-flex;align-items:center;min-height:30px;padding:4px 10px;border:1px solid #b7d0db;border-radius:3px;background:#eef5f8;color:var(--ink);text-decoration:none}
.publication-team-tags a:hover{background:#dfecf2;border-color:#6f9fb3;text-decoration:underline;text-underline-offset:3px}
/* Funding marks retain their original colours and clear space on white. */
.funding-strip{background:#fff;border-top:1px solid var(--line);padding:26px 0 28px}.funding-strip h2{font-family:var(--sans);font-size:var(--t-xs);letter-spacing:.14em;color:var(--muted)}.funding-logos{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:repeat(7,auto);justify-content:space-between;align-items:center;gap:32px}.funding-logo{min-width:0;display:flex;justify-content:center;align-items:center}.funding-logo a{display:block;max-width:100%;border-radius:2px}.funding-logo img{width:100%;height:auto;object-fit:contain}.funding-dfg{padding-block:18px}.funding-dfg img{max-width:200px}.funding-mcqst img,.funding-mqv img{max-width:136px}.funding-bmftr img{max-width:172px}.funding-erc img{max-width:110px}.funding-eu-quantum-flagship{flex-direction:column;gap:12px}.funding-eu-quantum-flagship a:first-child img{width:57px;height:38px}.funding-eu-quantum-flagship a:last-child img{width:124px}.funding-logo a:hover{outline:1px solid var(--line);outline-offset:12px}@media(max-width:1050px){.funding-logos{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 40px}.funding-dfg img{max-width:200px}.funding-bmftr{justify-self:center;width:172px}}@media(max-width:600px){.funding-strip{padding-block:24px}.funding-logos{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 24px;margin-top:18px}.funding-dfg{grid-column:1/-1;max-width:200px;justify-self:center;padding-block:16px}.funding-bmftr{grid-column:auto;width:auto}.funding-erc{grid-column:1/-1;justify-self:center}.funding-mcqst img,.funding-mqv img{max-width:124px}.funding-eu-quantum-flagship a:last-child img{width:112px}}@media print{.funding-strip{break-inside:avoid;padding-block:18pt}.funding-logos{gap:20px}}
/* Shared lab tags: labels carry the meaning; colour is a secondary cue. */
.lab-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 12px}.lab-tags .lab-tag{--lab:#1d5c50;--lab-hover:#123f37;display:inline-flex;align-items:center;border-radius:5px;padding:4px 10px 3px;font-family:var(--sans);font-size:var(--t-xs);font-weight:600;line-height:1.5;letter-spacing:.02em;text-decoration:none;background:var(--lab);color:#fff;transition:background-color .15s}.lab-tags .lab-preiss{--lab:#2d5a87;--lab-hover:#1f4266}.lab-tags .lab-luo{--lab:#8b4f1d;--lab-hover:#6a3a12}a.lab-tag:hover{background:var(--lab-hover)}a.lab-tag:focus-visible{outline:2px solid var(--lab);outline-offset:2px}.profile-copy>.lab-tags{margin:0 0 20px}.team-member-copy .lab-tags{margin:7px 0 0}
/* Shared heading scale: page titles, section headings and card titles override the per-page sizes. */
body :is(.home-hero,.people-intro,.profile-copy,.publication-intro,.research-intro,.optics-intro,.info-intro,.experiment-intro,.article-intro,.full-story) h1{font-size:var(--fs-title)}body .home-hero h1{font-size:var(--fs-title)}body :is(.home-about-copy,.home-section-heading,.news-feature-copy,.news-archive-heading,.event-empty-state,.contact-primary,.course-semester,.theme-content,.reading-heading,.optics-story,.research-outro,.experiment-directory,.partner-section,.info-band,.candidate-directions,.working-here,.article-next,.experiment-team,.optics-platforms) h2{font-size:var(--fs-section)}body :is(.experiment-section,.experiment-papers,.opportunity,.home-join) h2,html body[data-page="join"] .opportunity h2{font-size:var(--fs-sub)}body :is(.news-row,.event-row,.media-video,.course-card,.contact-assistants,.visit-grid,.partner-grid) h3{font-size:var(--fs-card)}

/* Glyphs (assets/icons.svg, inlined per page by build_site.py): drawn in the text colour, sized to the text. */
.icon{display:inline-block;width:1em;height:1em;flex-shrink:0;vertical-align:-.14em;overflow:visible
}
a .icon:is(.icon-arrow-right,.icon-arrow-external,.icon-arrow-left,.icon-arrow-down){margin-inline:.1em;transition:transform .15s
}
a:hover .icon-arrow-right{transform:translateX(2px)
}
a:hover .icon-arrow-left{transform:translateX(-2px)
}
a:hover .icon-arrow-external{transform:translate(1px,-1px)
}
a:hover .icon-arrow-down{transform:translateY(1px)
}
@media(prefers-reduced-motion:reduce){a:hover .icon{transform:none}
}

/* Element tiles: isotope of each experiment, with a platform glyph that tells apart labs sharing an isotope. */
.el{--c:var(--petrol);position:relative;flex-shrink:0;display:inline-grid;place-items:center;width:58px;height:58px;border:1.5px solid var(--c);border-radius:2px;background:#fff;color:var(--c);line-height:1;font-style:normal
}
.el-sym{font-family:var(--serif);font-size:25px;letter-spacing:-.03em;margin-top:12px
}
.el-mol .el-sym{font-size:19px;letter-spacing:-.04em
}
.el-mass{position:absolute;top:5px;left:5px;font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.02em
}
.el-mark{position:absolute;top:4px;right:4px;width:16px;height:16px
}
.el-sm{width:40px;height:40px;border-width:1.25px
}
.el-sm .el-sym{font-size:17px;margin-top:7px
}
.el-sm.el-mol .el-sym{font-size:13px
}
.el-sm .el-mass{font-size:8px;top:3px;left:4px
}
.el-xs{width:24px;height:24px;border-width:1px;border-radius:2px
}
.el-xs .el-sym{font-size:11px;margin-top:4px
}
.el-xs.el-mol .el-sym{font-size:8.5px
}
.el-xs .el-mass{font-size:6.5px;top:2px;left:2.5px
}
.el-xs.el-mol .el-mass{display:none
}
.el-xs.el-mol .el-sym{margin-top:0
}

/* Team chips carry the experiment's tile. */
.publication-team-tags a .el-xs{margin:0 7px 0 -4px;background:transparent}

.footer-description .icon{width:14px;height:14px;margin-right:6px;vertical-align:-2px;color:var(--accent)}

/* Lattice pictures: 404 and empty states (scripts/icons.py lattice_art). */
.lattice-art{display:block;height:auto;color:var(--petrol)}
.lattice-art .lattice-atom{fill:currentColor}
.lattice-art .lattice-hole{fill:none;stroke:currentColor;stroke-width:1.3;stroke-dasharray:2.4 2.2}
.not-found{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:56px;align-items:center}
.not-found>div{grid-row:1}
.not-found-art{grid-column:2;width:220px}
.not-found-art .lattice-hole{stroke:var(--petrol);stroke-width:1.6}
.not-found-art .lattice-atom{fill:#7fb3c7}
@media(max-width:700px){.not-found{grid-template-columns:1fr;gap:28px}.not-found>div{grid-row:2}.not-found-art{grid-column:1;width:150px}}

/* Section motif: a faint lattice dot field behind the join and people intros. */
body[data-page=research] .research-intro,body[data-page=join] main>.page-intro:first-child{position:relative;isolation:isolate}
body[data-page=join] main>.page-intro:first-child::after{content:"";position:absolute;z-index:-1;right:0;top:36px;width:min(40vw,500px);height:300px;background-image:radial-gradient(circle,var(--petrol) 1.7px,transparent 2.5px);background-size:24px 24px;opacity:.2;-webkit-mask-image:radial-gradient(ellipse at 78% 40%,#000 15%,transparent 70%);mask-image:radial-gradient(ellipse at 78% 40%,#000 15%,transparent 70%);pointer-events:none}
@media(max-width:700px){body[data-page=join] main>.page-intro:first-child::after{width:60vw;height:200px;top:10px;opacity:.14}}
body[data-page=research] .experiment-directory::before{margin-bottom:6px}
body[data-page=home] .home-publications::before{margin-bottom:34px}

.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Funding strip on phones: one compact block of three columns instead of a full screen. */
@media(max-width:600px){.funding-strip{padding-block:20px 22px}
.funding-logos{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 16px;margin-top:14px}
.funding-dfg,.funding-erc,.funding-bmftr{grid-column:auto;justify-self:center;width:auto;max-width:none;padding-block:0}
.funding-logo img{width:auto;max-width:100%;max-height:40px}
.funding-dfg img{max-height:34px}
.funding-bmftr img{max-height:56px}
.funding-erc img{max-height:52px}
.funding-eu-quantum-flagship{gap:6px}
.funding-eu-quantum-flagship a:first-child img{width:36px;height:24px}
.funding-eu-quantum-flagship a:last-child img{width:88px;max-height:none}
.funding-logo a:hover{outline-offset:6px}}

/* Two chip styles. Labels that are not links are plain uppercase text; links and filters are rounded chips.
   Lab tags keep their lab colour as a second cue but share the rounded shape. */
.publication-team-tags a{min-height:32px;padding:3px 12px 3px 10px;border-radius:999px}
.lab-tags .lab-tag{border-radius:999px;padding:4px 11px 3px}
/* Buttons: the arrow glyph sits next to its label. */
.button{gap:10px}
.funding-stmwk img{max-width:120px}@media(max-width:1250px) and (min-width:1051px){.funding-logos{grid-template-columns:repeat(6,auto)}.funding-stmwk{grid-column:1/-1;justify-self:center;width:120px}}@media(max-width:1050px){.funding-stmwk{grid-column:1/-1;justify-self:center;width:120px}}@media(max-width:600px){.funding-stmwk{width:auto}.funding-stmwk img{max-height:54px}}
/* A trailing link arrow stays on the line of its last word (wrapper added by scripts/build_site.py). */
link-arrow{display:contents;white-space:nowrap}
/* Touch screens (phones, tablets; desktop unchanged). Form text is 16 px because iOS Safari zooms into smaller
   fields. Small standalone links get a larger tap area from an invisible ::after layer, so nothing on the page moves;
   each inset stays within half the gap to the next link. A link split across two lines loses that layer, so links
   that can wrap are kept in one box (block, inline-block or nowrap). */
@media(pointer:coarse){
body :is(input:not([type=checkbox]):not([type=radio]),select,textarea){font-size:var(--t-md)}
:where(.header-join,.menu-toggle,.person-details h3 a,.institution-logos a,.footer-links a,.footer-bottom a,.back-link,.article-back,.profile-back,.event-details,.person-email,.person-teams a,a.lab-tag,.text-link,.candidate-jump a,.candidate-links a,.paper-links a,.media-jump a,.theme-jump a,.contact-email,.contact-line a,.experiment-sidebar a,.publication-results-bar a,.profile-section p>a:first-child){position:relative}
:where(.header-join,.menu-toggle,.person-details h3 a,.institution-logos a,.footer-links a,.footer-bottom a,.back-link,.article-back,.profile-back,.event-details,.person-email,.person-teams a,a.lab-tag,.text-link,.candidate-jump a,.candidate-links a,.paper-links a,.media-jump a,.theme-jump a,.contact-email,.contact-line a,.experiment-sidebar a,.publication-results-bar a,.profile-section p>a:first-child)::after{content:"";position:absolute;inset:-8px -6px}
:is(.back-link,.article-back,.profile-back,.event-details,.publication-results-bar a)::after{inset:-12px -8px}
.institution-logos a::after{inset:-6px -5px}
:is(.header-join,.menu-toggle)::after{inset:-4px 0}.person-details h3 a,.media-video h3 a{display:block}.person-details h3 a::after{inset:-6px -4px}
.footer-links a::after{inset:-5px 0}
.footer-bottom{line-height:2.4}.footer-bottom a{white-space:nowrap}.footer-bottom a::after{inset:-6px -5px}
.person-teams a{display:inline-block;line-height:24px}.person-teams a::after{inset:0 -2px}
a.lab-tag::after{inset:-5px -2px}
:is(.candidate-jump,.candidate-links,.home-publication-actions) a::after{inset:-6px -6px}
.contact-line a::after,.profile-section p>a:first-child::after{inset:-6px -4px}
}
