:root{--ink:#17313a;--deep:#112a33;--teal:#267c70;--mint:#b4e2cf;--paper:#fafbf9;--line:#dce4e1;--muted:#60717a;font-family:'DM Sans',system-ui,sans-serif;color:var(--ink);background:var(--paper);font-size:16px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}img{max-width:100%;display:block;height:auto}p{line-height:1.8}h1,h2,h3,p,figure{margin:0}h1,h2{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;letter-spacing:-1.5px}h1{font-size:clamp(44px,5.1vw,80px);line-height:1.06}h2{font-size:clamp(34px,3.25vw,49px);line-height:1.16}h3{font-size:21px;font-weight:500;line-height:1.4}em{font-weight:400}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #c7913b;outline-offset:5px}a:hover{color:var(--teal)}.site-header{height:100px;display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,24px);background:var(--paper);gap:25px;border-bottom:1px solid var(--line)}.identity{display:flex;align-items:center;gap:15px;font-size:16px;font-weight:600;white-space:nowrap}.identity small{display:block;font-size:10px;letter-spacing:2px;margin-top:7px;font-weight:500;color:var(--muted)}.monogram{font-family:Georgia,serif;font-size:35px;letter-spacing:-3px;border-right:1px solid #cedbd6;padding-right:20px;line-height:1.1}.monogram span{color:var(--teal)}nav{display:flex;align-items:center;gap:25px;font-size:14px}nav a{padding:10px 0}nav a[aria-current=page]{color:var(--teal);box-shadow:inset 0 -2px var(--teal)}.nav-contact{margin-left:8px}.menu-toggle{display:none}.hero{background:var(--deep);color:white;display:grid;grid-template-columns:1.15fr 1fr;gap:4vw;padding:65px max(5vw,24px) 59px;align-items:center;min-height:630px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:600;display:block;line-height:1.6}.hero .eyebrow{color:#a9c9c5;margin-bottom:27px;font-size:10px;letter-spacing:1.8px;display:flex;align-items:center;gap:12px}.line{width:27px;height:1px;background:#b9ddc6}.hero h1 em{color:#b8dfc8}.hero p{color:#b8c9cd;max-width:520px;font-size:16px;line-height:1.9;margin:26px 0 28px}.actions{display:flex;gap:27px;align-items:center;flex-wrap:wrap}.button{padding:15px 21px;display:inline-flex;align-items:center;gap:27px;font-size:14px;font-weight:500;border:1px solid transparent;line-height:1.4;border-radius:2px}.primary{background:var(--mint);color:#133f38}.primary:hover{background:#d3eede;color:#112a33}.secondary{background:transparent;border-color:#b7c7c1;color:var(--ink)}.secondary:hover{background:#e8f1ed}.text-link{font-size:14px;border-bottom:1px solid #648580;padding-bottom:6px;display:inline-block;line-height:1.5;color:#c4ded5}.text-link.dark{color:#246e61;border-color:#a7beb4}.hero-affiliation{margin-top:45px;font-size:9px;letter-spacing:1.65px;line-height:1.9;color:#7f9aa2}.hero-figure{position:relative;max-width:530px;margin-left:auto;width:100%}.figure-label{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.7px;color:#aec7c8;margin-bottom:15px}.hero-figure>img{width:100%;aspect-ratio:1.12;object-fit:cover;border:1px solid #3d595d;border-radius:50% 50% 3px 3px}.hero-figure figcaption{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:17px;color:#b3c8cd}.hero-figure figcaption>span{font-family:'Libre Caslon Display',Georgia,serif;font-size:23px;line-height:1.2;color:#d3e7de}.hero-figure figcaption small{font-size:10px;line-height:1.7;text-align:right}.research-strip{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:24px max(5vw,24px);background:#e8efeb;font-size:13px;color:#547369;border-bottom:1px solid #d7e0d9}.research-strip i{font-style:normal;color:#8aaa9e}.section{padding:80px max(5vw,24px);max-width:1600px;margin:auto}.section-kicker{display:flex;flex-direction:column;gap:25px}.section-number{font-family:Georgia,serif;font-size:23px;color:#78998e}.intro-section{display:grid;grid-template-columns:.34fr 1.6fr .7fr;gap:45px;align-items:start}.intro-copy p{margin:23px 0;font-size:16px;color:var(--muted);max-width:630px}.portrait{max-width:220px;margin-left:auto}.portrait img{width:100%;height:240px;object-fit:cover;object-position:top;border-radius:2px;filter:saturate(.65)}.portrait p{font-size:12px;line-height:1.8;margin-top:12px}.portrait p span{color:var(--muted);font-size:11px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-bottom:35px}.section-heading .eyebrow{color:#658075;margin-bottom:13px}.research-section{padding-top:45px}.research-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.research-card{padding:32px 35px 30px 0;position:relative}.research-card+.research-card{border-left:1px solid var(--line);padding-left:35px}.card-number{font-size:10px;letter-spacing:1.4px;color:#648476;display:block;margin-bottom:22px}.research-card h3{font-size:23px;font-family:'Libre Caslon Display',Georgia,serif;line-height:1.2}.research-card p{color:var(--muted);font-size:14px;margin:15px 0 22px;max-width:310px}.card-arrow{font-size:24px;color:var(--teal)}.research-card:hover{background:#f0f5f1}.resource-feature{background:#173d42;margin:0 max(5vw,24px);padding:58px 55px;display:grid;grid-template-columns:1.15fr 1fr;gap:60px;color:#f3f6ee;max-width:1440px}.resource-feature .eyebrow{color:#aed1bd;margin-bottom:20px}.resource-feature h2{font-size:43px}.resource-feature p{font-size:15px;color:#bfd0ce;margin:20px 0 25px;max-width:550px}.resource-index{align-self:center}.resource-index a{display:flex;gap:22px;align-items:center;border-top:1px solid #507071;padding:23px 0;color:#d6e5df;font-size:19px}.resource-index a:last-child{border-bottom:1px solid #507071}.resource-index a b{font-weight:400;flex:1;font-size:15px;line-height:1.5}.resource-index a span{font-size:11px;color:#92b6a6}.resource-index a:hover{color:white}.publication{display:grid;grid-template-columns:70px 1fr;gap:30px;border-top:1px solid var(--line);padding:28px 0}.publication:last-child{border-bottom:1px solid var(--line)}.pub-year{font-family:Georgia,serif;font-size:22px;color:#748c80}.pub-journal{font-size:11px;color:#5e8477;letter-spacing:.5px;text-transform:uppercase;line-height:1.8}.publication h3{font-size:19px;font-weight:500;max-width:950px;margin:8px 0}.publication p{font-size:13px;color:#6a7c7c;line-height:1.7}.topic{margin-left:15px;background:#eaf0eb;padding:3px 7px;border-radius:2px;white-space:nowrap;font-size:10px}.link-note{font-size:11px;color:#7e8c83;display:block;margin-top:12px}footer{background:#e9eeea;border-top:1px solid #d9e0d9;padding:65px max(5vw,24px) 25px;display:grid;grid-template-columns:1.25fr 1fr;gap:35px}footer .eyebrow{color:#678375}footer h2{font-size:40px;margin:19px 0 24px}.email{font-size:18px;color:#247c66;border-bottom:1px solid #a0b7ac;padding-bottom:5px}.footer-address{padding-top:25px}.footer-address b{font-size:15px;font-weight:500}.footer-address p{font-size:13px;color:#6e7f76;margin:12px 0 20px}.inline-links{display:flex;gap:20px;flex-wrap:wrap;font-size:12px;color:#3f6d5c}.footer-bottom{grid-column:1/-1;display:flex;justify-content:space-between;gap:20px;border-top:1px solid #cdd8ce;padding-top:22px;margin-top:25px;font-size:11px;color:#75867b}.page-heading{padding:65px max(5vw,24px) 55px;background:#edf2ee;border-bottom:1px solid var(--line)}.page-heading .eyebrow{color:#618172;margin-bottom:23px}.page-heading h1{font-size:clamp(42px,5.3vw,76px)}.page-heading h1 em{color:#437d65}.page-heading p{max-width:700px;margin-top:24px;font-size:17px;color:#607769}.page-heading .button{margin-top:28px}.research-detail{display:block;border-bottom:1px solid var(--line);max-width:1300px}.research-detail h2{margin:15px 0 23px}.research-detail p,.research-detail li{font-size:17px;line-height:1.9;color:#60717a;max-width:850px}.research-detail p+p{margin-top:15px}.research-detail h3{margin-top:25px}.research-detail .button{margin-top:28px}.tags{display:flex;gap:12px;flex-wrap:wrap;margin:26px 0}.tags span{font-size:12px;color:#487762;padding:8px 12px;background:#eaf0eb}.wide-copy{max-width:850px;color:var(--muted);margin:24px 0}.learning-path{display:grid;grid-template-columns:1fr 1.25fr;gap:70px;border-bottom:1px solid var(--line)}.learning-path h2{margin-top:16px}.learning-path ol{list-style:none;margin:0;padding:0}.learning-path li{display:flex;gap:25px;padding:0 0 25px;margin-bottom:25px;border-bottom:1px solid var(--line)}.learning-path li:last-child{margin-bottom:0;padding-bottom:0;border:0}.learning-path li>span{font-size:12px;color:#658c7b;line-height:2.2}.learning-path li h3{font-size:19px}.learning-path li p{font-size:14px;color:var(--muted);margin-top:8px}.resource-tools{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:32px}.filters{display:flex;gap:5px;flex-wrap:wrap}.filters button{border:0;background:transparent;padding:10px 12px;font-size:13px;color:#72877b;border-radius:3px}.filters button[aria-pressed=true]{background:#173f39;color:#e3eee6}.search input{padding:11px 13px;border:1px solid #cedbd2;background:white;min-width:240px;border-radius:3px;font-size:13px}.resource-count{font-size:12px;color:#7a8e81}.resource-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.resource-card{border:1px solid #d8e2db;background:#fff;padding:27px;display:flex;flex-direction:column;min-height:300px}.card-meta{display:flex;justify-content:space-between;gap:10px;margin-bottom:28px;font-size:10px;color:#6b8d7e;text-transform:uppercase;letter-spacing:.6px}.resource-card h3{font-size:22px;font-family:'Libre Caslon Display',Georgia,serif;line-height:1.25}.resource-card p{font-size:14px;line-height:1.8;color:#6c7b76;margin:15px 0 25px}.resource-card a{margin-top:auto;color:#2a7962;font-size:13px;font-weight:500}.resource-note{padding:50px max(5vw,24px);background:#e5eee5}.resource-note h2{font-size:34px}.resource-note p{max-width:800px;color:var(--muted);margin-top:15px;font-size:15px}.empty-state{padding:40px 0;color:var(--muted)}[hidden]{display:none!important}.teaching-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px}.teaching-grid h2{margin:18px 0 27px}.course-list{padding:0;list-style:none}.course-list li{padding:15px 0;border-top:1px solid var(--line);font-size:15px;color:#4b635b;line-height:1.6}.workshop-list{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin:35px 0}.workshop-list article{border-top:1px solid var(--line);padding-top:23px}.workshop-list h3{font-size:19px}.workshop-list p{font-size:15px;color:var(--muted);margin-top:12px}.muted{color:var(--muted);font-size:14px}.cv-grid{display:grid;grid-template-columns:180px 1fr;gap:60px}.cv-nav{display:flex;flex-direction:column;gap:20px;font-size:14px;position:sticky;top:35px;align-self:start;color:#648775}.cv-grid section{margin-bottom:55px}.cv-grid h2{font-size:36px;margin-bottom:25px}.timeline article{display:grid;grid-template-columns:130px 1fr;gap:25px;padding:23px 0;border-top:1px solid var(--line)}.timeline article>span{font-size:13px;color:#6b8c7b}.timeline h3{font-size:19px}.timeline p{font-size:15px;color:#61776c;margin-top:7px}.timeline p.small,.small{font-size:13px}.cv-grid li{line-height:1.9;margin-bottom:10px;color:#536b60}.project{border-top:1px solid var(--line);padding:24px 0}.project span{font-size:11px;color:#7a9583}.project h3{font-size:19px;margin:10px 0}.project p{font-size:14px;color:#647a6b}.tutorial{max-width:1050px;margin:auto;padding:65px 24px}.tutorial h2{font-size:35px;margin:45px 0 20px}.tutorial h3{margin:30px 0 15px}.tutorial p,.tutorial li{font-size:16px;line-height:1.9;color:#536b60}.tutorial code{background:#e7efe7;padding:2px 5px;font-size:14px;overflow-wrap:anywhere}.tutorial pre{background:#152e35;color:#d7e8db;padding:22px;overflow:auto;border-radius:3px;line-height:1.7;font-size:14px}.tutorial pre code{background:none;color:inherit;padding:0}.tutorial .equation{background:#e9f1eb;padding:22px;font-family:Georgia,serif;font-size:21px;line-height:1.8}.snapshots{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:25px 0}.snapshots figcaption{font-size:12px;color:#708877;margin-top:10px}.tutorial .callout{border-left:3px solid #60957b;background:#f0f5ed;padding:22px;margin:25px 0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip{position:absolute;top:-100px;left:20px;background:white;padding:10px;z-index:10}.skip:focus{top:10px}@media(min-width:1600px){.hero,.resource-feature{margin-left:auto;margin-right:auto;max-width:1600px}}@media(max-width:1150px){nav{gap:16px;font-size:13px}.identity{font-size:14px}.hero{gap:35px}.hero h1{font-size:58px}.hero-affiliation{margin-top:30px}.research-strip{font-size:11px}.resource-feature{padding:45px;gap:35px}.resource-feature h2{font-size:37px}.intro-section{gap:28px;grid-template-columns:.2fr 1.5fr .7fr}.resource-grid{grid-template-columns:repeat(2,1fr)}.resource-tools{align-items:flex-start;flex-direction:column}}@media(max-width:850px){.site-header{height:85px;flex-wrap:wrap;position:relative}.menu-toggle{display:flex;align-items:center;gap:12px;border:1px solid #ccd8d0;background:none;padding:10px 13px;font-size:13px}nav{display:none;position:absolute;top:84px;left:0;right:0;padding:20px 24px;z-index:5;background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap}nav.open{display:flex}nav a{padding:10px}.hero{grid-template-columns:1fr 1fr;gap:25px;padding-top:45px;min-height:570px}.hero h1{font-size:45px}.hero p{font-size:14px}.hero .eyebrow{font-size:9px}.actions{gap:15px}.actions .button,.text-link{font-size:12px}.figure-label{font-size:8px;letter-spacing:.5px}.hero-figure figcaption{display:block}.hero-figure figcaption small{text-align:left;display:block;margin-top:8px}.research-strip{overflow:auto;justify-content:flex-start;gap:25px;white-space:nowrap}.intro-section{grid-template-columns:1.6fr 1fr}.section-kicker{grid-column:1/-1;flex-direction:row;justify-content:space-between}.resource-feature{grid-template-columns:1fr}.research-grid{grid-template-columns:1fr}.research-card,.research-card+.research-card{padding:25px 0;border-left:0;border-bottom:1px solid var(--line)}.research-card p{max-width:100%}.section{padding-top:55px;padding-bottom:55px}.learning-path{grid-template-columns:1fr;gap:35px}.cv-grid{grid-template-columns:1fr}.cv-nav{position:static;flex-direction:row;flex-wrap:wrap}.teaching-grid{gap:35px}.footer-bottom span:nth-child(2){display:none}}@media(max-width:580px){.hero{grid-template-columns:1fr;padding-top:38px;gap:40px}.hero h1{font-size:49px}.hero p{font-size:15px}.hero-affiliation{font-size:9px}.hero-figure{max-width:380px;margin:0 auto}.hero-figure>img{aspect-ratio:1.2}.hero-figure figcaption{display:flex}.hero-figure figcaption small{text-align:right}.figure-label{font-size:9px;letter-spacing:1px}.intro-section{grid-template-columns:1fr}.portrait{margin:0;display:flex;align-items:center;gap:20px;max-width:100%;margin-top:10px}.portrait img{width:100px;height:120px}.section-heading{align-items:flex-start;flex-direction:column}.resource-feature{padding:35px 25px;margin:0 16px}.resource-feature h2{font-size:35px}.resource-grid{grid-template-columns:1fr}.resource-card{min-height:260px}.resource-tools,.search,.search input{width:100%}.filters button{font-size:12px;padding:9px}.publication{grid-template-columns:44px 1fr;gap:15px}.pub-year{font-size:19px}.publication h3{font-size:17px}.topic{display:inline-block;margin:6px 0 0}.teaching-grid,.workshop-list{grid-template-columns:1fr}.timeline article{grid-template-columns:1fr;gap:9px}.cv-grid{gap:35px}.research-detail>.section-number{display:none}.page-heading{padding-top:44px;padding-bottom:40px}.page-heading h1{font-size:49px}.page-heading p{font-size:15px}.snapshots{gap:8px}.snapshots figcaption{font-size:10px}footer{grid-template-columns:1fr;padding-top:45px}footer h2{font-size:36px}.footer-address{padding-top:0}.email{font-size:16px}.footer-bottom{font-size:10px;flex-wrap:wrap}.eyebrow{font-size:10px;letter-spacing:1.5px}h2{font-size:36px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{.site-header,footer,.cv-nav,.print-button{display:none}.page-heading{padding:0 0 20px;background:none}.page-heading h1{font-size:36px}.cv-grid{display:block;padding:20px 0}.cv-grid h2{font-size:25px}.cv-grid section{break-inside:avoid;margin-bottom:25px}body{background:white}}

@media(min-width:581px) and (max-width:760px){.hero{grid-template-columns:1fr}.hero h1{font-size:58px}.hero-figure{max-width:430px;margin:0 auto}.hero p{max-width:560px}.hero .eyebrow{font-size:10px}}
@media(max-width:580px){.site-header{padding:0 18px;height:80px;gap:10px;flex-wrap:nowrap}.identity{font-size:12px;gap:10px}.identity small{font-size:8px;letter-spacing:1.4px}.monogram{font-size:30px;padding-right:12px}.menu-toggle{font-size:0;padding:10px;gap:0;flex-shrink:0}.menu-toggle span{font-size:16px}nav{top:79px}}

.formula-box{padding:28px;margin:24px 0;background:#e8efec;border-left:3px solid #177565;font-family:Georgia,serif;font-size:clamp(19px,3vw,27px);line-height:2;overflow-x:auto}.formula-box small{font-size:17px}.variant-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.tensor-matrix{width:100%;border-left:2px solid #177565;border-right:2px solid #177565;font-variant-numeric:tabular-nums;text-align:center}.tensor-matrix td{padding:10px 5px}@media(max-width:760px){.variant-grid{grid-template-columns:1fr}}

.lesson-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:30px}.lesson-cards a{text-decoration:none}.lesson-viewer{max-width:820px;margin:32px auto}.lesson-screen{background:#f5f7f2;border:1px solid #d9e2dc}.lesson-screen canvas{display:block;width:100%;height:auto}.lesson-controls{display:flex;align-items:center;gap:20px;padding:20px 0}.lesson-controls label{flex:1}.lesson-controls input{display:block;width:100%;margin-top:10px}.code-switch{margin-top:24px}.code-switch pre{background:#102e36;color:#e1eee6;padding:24px;overflow:auto;font-size:13px;line-height:1.7;max-height:600px}.code-switch summary{cursor:pointer;padding:18px 0}.code-switch [hidden]{display:none}@media(max-width:700px){.lesson-cards{grid-template-columns:1fr}}
.appendix-code{background:#102e36;color:#e1eee6;padding:24px;overflow:auto;font-size:13px;line-height:1.7}#appendix-a details,#implementation details{margin:24px 0}#appendix-a summary,#implementation summary{cursor:pointer;font-weight:600;padding:12px 0}
.institute-logo{display:inline-block;background:#fff;padding:15px 20px;border-radius:3px;margin-bottom:22px}.institute-logo img{display:block;width:280px;max-width:100%;height:auto}.hero-institute{margin-top:28px;margin-bottom:0}.notebook-heading{background:#faf0dd}.notebook-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.notebook-gallery figure{margin:0}.notebook-gallery img{width:100%;height:auto;border-radius:5px}.notebook-gallery figcaption{padding:14px 0}.notebook-empty{background:#f4f1e9;padding:40px;margin-top:28px;border-radius:6px}.notebook-empty>span{font-size:44px;color:#a96935}.notebook-entry{border-top:1px solid #d7ded9;margin-top:30px;padding-top:30px}@media(max-width:760px){.notebook-gallery{grid-template-columns:1fr}.institute-logo img{width:230px}}
/* MathJax uses scalable TeX glyphs; wide equations scroll inside their panels. */
.formula-box{font-size:clamp(16px,1.5vw,21px);line-height:1.7;max-width:100%;min-width:0}.formula-box mjx-container[display="true"]{margin:0.6em 0!important;text-align:left!important}mjx-container[jax="SVG"]{max-width:100%}.formula-box mjx-container{overflow-x:auto;overflow-y:hidden;padding:8px 0}mjx-container svg{max-width:none}

.pinn-table{width:100%;border-collapse:collapse;text-align:left;margin:16px 0}.pinn-table th,.pinn-table td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:top}.pinn-table th{font-weight:600}#try-it .lesson-controls{flex-wrap:wrap;gap:12px}#try-it .lesson-controls button{flex:1 1 150px}
.student-hero-controls{display:flex;gap:8px;margin:0 0 16px;flex-wrap:wrap}.student-hero-controls button{border:1px solid #7b9296;background:transparent;color:inherit;padding:10px 14px;border-radius:30px;font-size:13px}.student-hero-controls button[aria-pressed="true"]{background:#b4e2cf;color:#17313a;border-color:#b4e2cf}.student-hero #student-hero-image{width:100%;aspect-ratio:1;object-fit:contain;background:white;height:auto}.student-source-link{display:block;margin-top:16px;font-size:13px}.student-research-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-top:36px}.student-research-grid article{min-width:0}.student-research-grid h3{margin:12px 0 24px}.student-research-grid p{margin-top:20px}.student-research-grid figure{background:white}.student-research-grid figcaption{padding:8px 0 18px;font-size:13px;color:var(--muted)}.student-ternary-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.student-credit{font-size:13px;line-height:1.65;color:var(--muted);border-top:1px solid var(--line);padding-top:16px;margin-bottom:18px}.student-legend{margin:12px 0;width:100%}@media(max-width:800px){.student-research-grid{grid-template-columns:1fr;gap:44px}}
.student-takeaway{padding:14px 16px;border-left:4px solid var(--accent);background:rgba(180,226,207,.24);line-height:1.55}.group-bridge-portraits{display:flex;gap:18px;overflow-x:auto;padding:10px 2px 20px;scroll-snap-type:x proximity}.group-bridge-portraits figure{flex:0 0 104px;margin:0;scroll-snap-align:start}.group-bridge-portraits img{width:92px;height:92px;border-radius:50%;object-fit:cover;border:3px solid #fff;box-shadow:0 4px 18px rgba(17,49,58,.16)}.group-bridge-portraits figcaption{font-size:12px;margin-top:7px;text-align:center;color:var(--muted)}@media(max-width:800px){.group-bridge .section-heading{align-items:flex-start}.group-bridge-portraits{margin-right:-24px}}
.portrait-method{display:grid;grid-template-columns:minmax(150px,.8fr) 32px minmax(280px,1.7fr) 32px minmax(170px,1fr);gap:12px;align-items:center;margin:28px 0;padding:24px;background:#eef3ed;border:1px solid var(--line);border-radius:10px}.portrait-method-start,.portrait-method-law,.portrait-method-branches>div{display:flex;flex-direction:column;gap:7px;padding:16px;background:#fff;border-radius:7px}.portrait-method strong{font-size:14px}.portrait-method span{font-size:12px;line-height:1.5;color:var(--muted)}.portrait-method b{font-size:12px;color:var(--teal)}.portrait-method-branches{display:grid;gap:10px}.portrait-method-arrow{text-align:center!important;font-size:25px!important;color:var(--teal)!important}@media(max-width:760px){.portrait-method{grid-template-columns:1fr}.portrait-method-arrow{transform:rotate(90deg)}}
.mentor-note,.adviser-acknowledgment{padding:18px 20px;border-left:4px solid var(--teal);background:#eef3ed;color:var(--ink)!important}.mentor-note a,.adviser-timeline a{color:var(--teal);text-decoration:underline;text-underline-offset:4px}.adviser-timeline article{background:#f7f9f5;padding:22px}.adviser-timeline article+article{margin-top:0}

.personal-evolution{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0;max-width:920px}.personal-evolution figure{background:#f1f3ee;border-radius:12px;overflow:hidden}.personal-evolution img{width:100%;height:clamp(220px,40vw,480px);object-fit:contain;background:#e8ece4}.personal-evolution figcaption{padding:18px 22px;display:flex;flex-direction:column;gap:6px}.personal-evolution figcaption strong{font-size:23px}.personal-evolution figcaption span{font-size:14px;color:var(--muted)}.portrait>.text-link{display:inline-block;margin-top:15px;font-size:13px}@media(max-width:480px){.personal-evolution{gap:12px}.personal-evolution figcaption{padding:14px}.personal-evolution img{height:240px}}

.transport-reading{padding-left:24px;margin:20px 0 28px}.transport-reading li{line-height:1.8;margin-bottom:14px}.transport-reading a{text-decoration:underline;text-underline-offset:3px}
.transport-course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:28px 0 38px}.transport-course-grid article{display:flex;flex-direction:column;min-width:0;padding:28px;background:#fff;border:1px solid var(--line);border-top:4px solid var(--teal);box-shadow:0 10px 28px rgba(30,73,65,.055)}.transport-course-grid article h3{margin:12px 0 10px;font-family:'Libre Caslon Display',Georgia,serif;font-size:25px}.transport-course-grid article p{color:var(--muted);font-size:14px;margin-bottom:23px}.transport-step{font-size:10px;letter-spacing:1.35px;font-weight:600;color:#397968}.transport-card-links{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:auto}.transport-card-links .button{padding:12px 16px}.transport-card-links>span{font-size:11px;color:var(--muted)}.transport-connection{padding:30px;background:#edf4f0;border-left:4px solid var(--teal);margin:0 0 28px}.transport-connection h3{font-family:'Libre Caslon Display',Georgia,serif;font-size:25px}.transport-connection .formula-box{margin:18px 0;padding:20px;font-size:17px;background:#fff}.transport-connection p{max-width:980px;color:var(--muted);font-size:15px}.transport-references{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px 0;margin-top:28px}.transport-references summary{cursor:pointer;padding:18px 0;font-weight:600;color:#315f55}.transport-source-link{margin-top:24px}@media(max-width:760px){.transport-course-grid{grid-template-columns:1fr}.transport-course-grid article{padding:23px}.transport-connection{padding:24px 20px}}

.topology-table{overflow-x:auto;margin:20px 0;border:1px solid var(--line);border-radius:8px}.topology-table table{width:100%;min-width:780px;border-collapse:collapse;font-size:14px;line-height:1.5}.topology-table caption{text-align:left;font-weight:600;padding:16px;background:#eef3ec}.topology-table th,.topology-table td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.topology-table th{background:#f4f6f1;font-weight:600;min-width:104px}.topology-table td{font-variant-numeric:tabular-nums}.topology-table tbody tr:nth-child(even){background:#f8faf6}.topology-table tbody tr:last-child td{border-bottom:0}.topology-table:focus-visible{outline:2px solid #2c6e59;outline-offset:3px}

/* Keep single-panel features full width and grid children shrinkable. */
.resource-feature>div:only-child{grid-column:1 / -1}
.research-detail>div{min-width:0}
.section p,.section li{overflow-wrap:break-word}
/* Consistent reading rhythm for lesson and notebook prose. */
.section>h2+p,.section>h3+p,.notebook-entry h3+p,.notebook-entry h4+p{margin-top:18px}
.section>p+p,.notebook-entry p+p,.notebook-entry details p+p{margin-top:16px}
.section>p+h3,.section>p+h4,.notebook-entry p+h4{margin-top:30px}
.notebook-entry details{margin:24px 0}
.notebook-entry summary{cursor:pointer;font-weight:600;padding:12px 0;line-height:1.5}
.notebook-entry video{display:block;margin:24px 0 18px}
.page-heading>.inline-links{margin-top:24px;flex-wrap:wrap}
.footer-address>.institute-logo{display:block;width:fit-content}

/* Group: consistent portrait panels with accessible, text-only fallbacks. */
.group-heading{background:#eef3ed}.people-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:36px 24px;margin-top:36px}.person{min-width:0;border-bottom:1px solid var(--line);padding-bottom:24px}.person-portrait,.person-initials{width:100%;aspect-ratio:12/13;height:auto;background:#e5ede7;border-radius:4px}.person-portrait{object-fit:contain}.person-initials{display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:56px;color:#6b8c7e;background:linear-gradient(145deg,#edf2e9,#dce9e3)}.person-details{padding-top:18px}.person h3{font-size:19px}.person p{font-size:14px;color:var(--muted);margin-top:8px}.person-link{display:block;font-size:14px;margin-top:14px;text-decoration:underline;text-underline-offset:4px}.photo-credit{display:block;font-size:11px;color:var(--muted);margin-top:10px}.group-collaboration{background:#eef3ed}.group-collaboration p{max-width:880px;margin-top:24px}.group-collaboration .inline-links{margin-top:24px;flex-wrap:wrap}@media(max-width:1000px){.people-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.site-header{padding-left:24px;padding-right:24px}nav{gap:12px;font-size:12px}.identity{font-size:14px;gap:10px}.monogram{padding-right:12px}}@media(max-width:700px){.people-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 18px}.person h3{font-size:17px}}@media(max-width:420px){.people-grid{grid-template-columns:1fr}.person{display:grid;grid-template-columns:104px 1fr;gap:16px}.person-details{padding-top:0}.person-initials{font-size:36px}}

/* Compact member profiles and collaborator directory. */
.group-heading h1{font-size:clamp(36px,5vw,68px)}
.people-grid.member-list,.people-grid.collaborator-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 40px}
.member-list .person,.collaborator-list .person{display:grid;grid-template-columns:88px minmax(0,1fr);gap:20px;align-items:start}
.member-list .person-portrait,.member-list .person-initials{width:88px;height:100px;aspect-ratio:auto}
.member-list .person-initials{font-size:26px}.member-list .person-details,.collaborator-list .person-details{padding-top:0}
.person .person-research{color:var(--ink);margin-top:14px;line-height:1.65}
.person-works{list-style:none;padding:0;margin:18px 0 0}.person-works li{margin:12px 0;font-size:13px;line-height:1.6}.person-works span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.person-works a{text-decoration:underline;text-underline-offset:3px}
.collaborator-list .person{grid-template-columns:52px minmax(0,1fr);gap:16px;padding-bottom:20px}.collaborator-list .person-portrait,.collaborator-list .person-initials{width:52px;height:60px;aspect-ratio:auto}.collaborator-list .person-initials{font-size:20px}.collaborator-list .person h3{font-size:17px}.collaborator-list .person-link{font-size:12px;margin-top:8px}
@media(max-width:850px){.people-grid.member-list,.people-grid.collaborator-list{grid-template-columns:1fr}.member-list .person{grid-template-columns:80px minmax(0,1fr)}.member-list .person-portrait,.member-list .person-initials{width:80px;height:92px}}
/* Interactive coherent-spinodal laboratory */
.elastic-laboratory{display:grid;grid-template-columns:minmax(0,680px) 300px;gap:38px;max-width:1080px;margin:45px 0;padding:35px;background:#edf3ef;border:1px solid var(--line)}
.elastic-laboratory__controls h2{font-size:38px;margin:10px 0 14px}.elastic-laboratory__controls>p{color:var(--muted);font-size:14px}.elastic-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:24px 0}.elastic-control-grid label{font-size:13px;color:#49645b;line-height:1.5}.elastic-control-grid input{display:block;width:100%;margin-top:7px;padding:10px;border:1px solid #becdc5;background:#fff;color:var(--ink);border-radius:2px}.elastic-laboratory__buttons{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:15px}.elastic-laboratory__buttons .button{padding:11px 16px}.elastic-laboratory details{margin-top:18px}.elastic-laboratory summary{cursor:pointer;font-size:13px;font-weight:600;color:#276f60}.elastic-laboratory .formula-box{font-size:14px;margin:15px 0}.elastic-laboratory__result{align-self:start;width:300px}.elastic-laboratory__result canvas{display:block;width:256px;height:256px;aspect-ratio:1;background:#0719be;border:1px solid #cad8d1;image-rendering:auto}.elastic-readout{display:flex;gap:12px;flex-wrap:wrap;margin:13px 0 5px;font-size:12px;color:#587067}.elastic-readout b{color:var(--ink);font-weight:600;margin-left:4px}@media(max-width:850px){.elastic-laboratory{grid-template-columns:1fr;padding:24px}.elastic-control-grid{grid-template-columns:1fr}.elastic-laboratory__result{width:300px}.elastic-laboratory__result canvas{width:256px;height:256px}}

/* Elastic formulation learning pages */
.elastic-formulation-page{background:#eef8fc;color:#17313a;min-height:100vh;padding-bottom:1px}.elastic-formulation-page .page-heading{background:linear-gradient(135deg,#dff2fb 0%,#edf9fd 56%,#d8edf7 100%);border-bottom-color:#c4dfe9;position:relative;overflow:hidden}.elastic-formulation-page .page-heading:after{content:"";position:absolute;width:340px;height:340px;border:1px solid rgba(54,126,151,.13);border-radius:50%;right:-70px;top:-165px;box-shadow:0 0 0 55px rgba(255,255,255,.18),0 0 0 110px rgba(75,155,181,.04)}.elastic-formulation-page .page-heading>*{position:relative;z-index:1}.elastic-formulation-page .section{background:rgba(255,255,255,.56);border-bottom:1px solid #cfe4ec}.elastic-formulation-page .section:nth-of-type(even){background:rgba(223,242,249,.48)}.elastic-formulation-page .resource-note{background:#d7edf6;border-top:1px solid #bddbe7;border-bottom:1px solid #bddbe7}.elastic-formulation-page .formula-box{background:#e2f3f8;border-left-color:#2a819d;box-shadow:0 8px 24px rgba(38,102,125,.07)}.elastic-formulation-page .tags span{background:#d9eef6;color:#28657a}.elastic-formulation-page .course-list{max-width:900px;margin:30px 0}.elastic-formulation-page .course-list li{border-color:#c9e1ea;color:#365d6c}.elastic-formulation-page .course-list strong{color:#185d76}.eshelby-schematic{margin:38px 0 34px;padding:28px 24px 22px;background:rgba(255,255,255,.84);border:1px solid #bddce8;border-radius:14px;box-shadow:0 18px 50px rgba(27,91,115,.11);max-width:1240px}.eshelby-schematic svg{display:block;width:100%;height:auto}.eshelby-schematic .matrix{fill:url(#matrix-wash);stroke:#6aa8bd;stroke-width:2}.eshelby-schematic .empty-matrix{fill:url(#matrix-wash);stroke:#6aa8bd;stroke-width:2}.eshelby-schematic .cavity{fill:#fff;stroke:#397a91;stroke-width:2;stroke-dasharray:6 5}.eshelby-schematic .cut-line{fill:rgba(255,255,255,.5);stroke:#397a91;stroke-width:2.5;stroke-dasharray:8 5}.eshelby-schematic .cut-mark,.eshelby-schematic .free-arrows,.eshelby-schematic .traction{fill:none;stroke:#b7643f;stroke-width:2.5;marker-end:url(#eshelby-arrow)}.eshelby-schematic .inclusion{fill:url(#inclusion-wash);stroke:#a85434;stroke-width:2.5}.eshelby-schematic .inclusion.relaxed{fill:#f3b277;opacity:.94}.eshelby-schematic .weld-line{fill:none;stroke:#14748b;stroke-width:4;stroke-dasharray:2 6;stroke-linecap:round}.eshelby-schematic .field-line{fill:none;stroke:#357f99;stroke-width:2;opacity:.8}.eshelby-schematic .process-arrow{fill:none;stroke:#387a92;stroke-width:2;marker-end:url(#eshelby-arrow)}.eshelby-schematic .stage-number{font:600 12px 'DM Sans',sans-serif;letter-spacing:1px;fill:#5f93a5}.eshelby-schematic .stage-title{font:600 11px 'DM Sans',sans-serif;letter-spacing:1.2px;fill:#173f50}.eshelby-schematic .stage-note{font:500 12px 'DM Sans',sans-serif;text-anchor:middle;fill:#527582}.eshelby-schematic figcaption{border-top:1px solid #cce3eb;margin-top:8px;padding-top:18px;color:#4e6d79;font-size:14px;line-height:1.75}.eshelby-schematic figcaption strong{color:#173f50}@media(max-width:760px){.eshelby-schematic{overflow-x:auto;padding:20px 16px}.eshelby-schematic svg{min-width:980px}.eshelby-schematic figcaption{min-width:0}.elastic-formulation-page .page-heading:after{width:240px;height:240px}}

/* CV profile heading */
.cv-profile-heading{background:#174575;color:#fff;border-bottom:1px solid #12395f}
.cv-profile-heading .eyebrow{color:#cce1f7}
.cv-profile-heading h1 em{color:#d4eaff}
.cv-profile-heading .cv-position{color:#fff;max-width:850px;font-size:18px;line-height:1.65;margin-top:22px}
.cv-profile-heading .transport-card-links{margin-top:26px;gap:12px;flex-wrap:wrap}
.cv-profile-heading .button.primary{background:#e1efff;color:#173b63}
.cv-profile-heading .button.primary:hover{background:#fff;color:#173b63}
.cv-profile-heading .button.secondary{color:#fff;border-color:#9dbbdc}
.cv-profile-heading .button.secondary:hover{background:#285987;color:#fff}
@media(max-width:640px){.cv-profile-heading .cv-position{font-size:16px}.cv-profile-heading .button{padding:12px 16px}}
@media print{.cv-profile-heading{background:#fff;color:#17313a}.cv-profile-heading .eyebrow,.cv-profile-heading h1 em,.cv-profile-heading .cv-position,.cv-profile-heading .button.secondary{color:#17313a}}

/* Ink-drop live experiment */
.ink-lab{background:#edf5fc}.ink-lab>p{max-width:1050px;margin-top:20px}.ink-settings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin:28px 0}.ink-settings label,.ink-view-controls label{font-size:14px;line-height:1.6}.ink-settings input,.ink-settings select,.ink-view-controls select{display:block;width:100%;margin-top:9px}.ink-settings input[type=number],.ink-settings select,.ink-view-controls select{font:inherit;padding:10px;border:1px solid #adc4dc;background:white;border-radius:5px;color:#173b63}.ink-settings input[type=range]{accent-color:#267c70}.ink-actions{display:flex;flex-wrap:wrap;gap:12px}.ink-notice{min-height:1.8em;font-size:14px;color:#375a75}.ink-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:22px 0}.ink-metrics>div{padding:16px;background:white;border:1px solid #d0e1ef;border-radius:8px}.ink-metrics span{display:block;font-size:12px;color:#526f89}.ink-metrics output{display:block;margin-top:7px;font-size:20px;color:#173b63;font-weight:600}.ink-progress-label{font-size:13px;display:block}.ink-lab progress{width:100%;height:8px;margin:8px 0 25px;accent-color:#267c70}.ink-plots{display:grid;grid-template-columns:1.05fr 1fr;gap:24px;align-items:start}.ink-plots figure{background:white;border:1px solid #d0e1ef;padding:20px;border-radius:12px;min-width:0}.ink-plots h3{font-size:19px;margin-bottom:15px}.ink-plots canvas{display:block;width:100%;height:auto}.ink-plots figcaption{font-size:13px;line-height:1.75;color:#456078;margin-top:16px}.ink-view-controls{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:12px}.ink-view-controls input[type=checkbox]{accent-color:#df7420}.ink-key{display:block;margin-bottom:5px}.ink-key.measured{color:#267c70}.ink-key.theory{color:#60778b}.ink-question{margin-top:22px;padding:16px;background:#eff7f5;font-size:14px;line-height:1.8;border-radius:6px}#recorded-ink summary{cursor:pointer;padding:20px 0;font-weight:500}#recorded-ink p{margin:20px 0}.ink-actions button:disabled{opacity:.55;cursor:default}@media(max-width:900px){.ink-settings,.ink-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.ink-plots{grid-template-columns:1fr}}@media(max-width:480px){.ink-settings{grid-template-columns:1fr}.ink-metrics output{font-size:16px}.ink-plots figure{padding:14px}.ink-actions .button{padding:12px 15px}}

/* Thesis figures retain their panel labels and colour legends. */
.thesis-figure{max-width:740px;margin:30px 0 44px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:12px}
.thesis-figure img{width:100%;height:auto;object-fit:contain}
.thesis-figure figcaption{margin-top:16px;font-size:14px;line-height:1.7;color:var(--muted)}
.thesis-figure figcaption strong{color:var(--ink)}
.thesis-figure .figure-source{display:block;margin-top:8px;font-size:12px}
@media(max-width:580px){.thesis-figure{padding:10px}.thesis-figure figcaption{font-size:13px}}

/* I show the two simulation movies together on wider screens. */
.thesis-movies{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:30px 0 44px}
.thesis-movies .thesis-figure{margin:0;min-width:0;padding:14px}
.thesis-movies video{display:block;width:100%;aspect-ratio:8/5;object-fit:contain;background:#f4f6f5;border-radius:6px}
@media(max-width:680px){.thesis-movies{grid-template-columns:1fr}.thesis-movies .thesis-figure{padding:10px}}

.research-movie{display:block;width:100%;height:auto;border-radius:6px}

/* I keep the final-frame preview visible until Play is selected. */
.movie-player{position:relative}
.movie-start{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;border-radius:6px;overflow:hidden;background:#f4f6f5;cursor:pointer}
.movie-start img{display:block;width:100%;height:100%;object-fit:contain}
.movie-start span{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);width:max-content;max-width:94%;padding:9px 13px;border-radius:6px;background:#fff;color:var(--ink);font:600 13px/1.4 sans-serif;box-shadow:0 2px 8px #0003}
.movie-start:focus-visible{outline:3px solid #2372a0;outline-offset:4px}
.movie-start[hidden]{display:none}

.sandeep-movies{grid-template-columns:repeat(3,minmax(0,1fr))}
.sandeep-movies video{aspect-ratio:1}
.sandeep-movies details{margin-top:14px;font-size:.9em}
.sandeep-movies summary{cursor:pointer;font-weight:600}
@media(max-width:900px){.sandeep-movies{grid-template-columns:1fr}}

.research-note{margin:18px 0 28px;padding:14px 18px;border:1px solid #dce4e1;border-radius:8px;background:#f7f9f8}
.research-note summary{cursor:pointer;font-weight:600}
.research-note[open] summary{margin-bottom:14px}
.research-note p:last-child{margin-bottom:0}
