/* Complete unpublished research portfolio. Mobile adaptations load after this sheet. */
:root{--ink:#edf3ff;--muted:#aab9d7;--line:#92b3ff35;--accent:#99b9ff;--panel:#071126}html{scroll-padding-top:120px}body{font-size:18px;line-height:1.65}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid #c2d6ff;outline-offset:5px;border-radius:2px}a,button,summary{touch-action:manipulation}.skip-link{position:fixed;z-index:100;top:12px;left:20px;padding:10px 18px;background:#d4e4ff;color:#06122d;transform:translateY(-150%)}.skip-link:focus{transform:none}.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}header{height:98px;padding:0 4vw;gap:24px;background:linear-gradient(#02040ff5,#02040fd9 75%,#02040f00)}.wordmark{font-size:17px;letter-spacing:.12em;line-height:1.2;min-height:44px;display:inline-flex;align-items:center;flex-shrink:0}.wordmark span{font-size:14px;letter-spacing:.03em;margin-left:14px;color:#9eafd2}.site-links{display:flex;align-items:center;gap:22px;margin-left:auto;font-size:14px}.site-links a{display:flex;align-items:center;min-height:44px;color:#c3d2ee;transition:color .2s}.site-links a:hover{color:white}.header-right{gap:18px;font-size:14px;white-space:nowrap}.header-right a,.header-right button{min-height:44px;display:inline-flex;align-items:center;font-size:14px}.header-right button{padding:8px 10px;border:1px solid #7899db55;background:#0b1635a6;color:#d3dfff;border-radius:2px}.preview{font:14px/1.2 monospace;letter-spacing:.04em;padding:7px 9px;color:#a6bae0}.gallery-label{font-size:14px;line-height:1.7;top:119px;letter-spacing:.07em;color:#a1b6df}.gallery-label span{color:#d4e2ff}.chapter{bottom:152px}.chapter-inner{grid-template-columns:1.12fr 1.1fr .9fr;gap:36px;align-items:end;padding-top:20px;background:linear-gradient(transparent,#02030bd9 28%);position:relative}.chapter .number{font-size:14px;line-height:1.5;color:#a9c0eb;letter-spacing:.07em;margin-bottom:10px}.chapter h1,.chapter h2{font-size:clamp(34px,3.5vw,54px);line-height:1.08;letter-spacing:-.045em}.chapter p{font-size:18px;line-height:1.55;color:#c1cfe8;max-width:440px}.chapter .actions{gap:18px;flex-wrap:wrap;justify-content:flex-end}.primary{min-height:48px;padding:11px 18px;font-size:14px;line-height:1.5;gap:22px;border-color:#8fb3ff88;background:#152b5b70;color:#edf3ff;transition:background .2s,border-color .2s}.primary:hover{background:#224781a6;border-color:#bfd2ff}.textlink{min-height:44px;display:inline-flex;align-items:center;gap:8px;font-size:14px;line-height:1.5;color:#bbcefa;padding:9px 0;border-color:#7995cc77}.textlink:hover{color:#fff;border-color:#c4d6ff}.object-label{top:57%;font-size:14px;line-height:1.5;letter-spacing:.07em;color:#9ebbea}.object-label strong{font-size:14px;letter-spacing:.08em;color:#d8e5ff;margin-bottom:3px}.rail{bottom:20px}.rail-top{font-size:14px;line-height:1.4;letter-spacing:.04em;margin-bottom:12px;color:#a3b9df}.rail-top .hint{color:#bccff1}.chapter-nav{padding-top:8px;gap:34px}.chapter-link{font-size:14px;min-height:44px;gap:10px;color:#a0b2d3;line-height:1.4}.chapter-link b{font-size:14px;color:#a0b9e7}.chapter-link[aria-current=true]{color:#fff}.chapter-link[aria-current=true] b{color:#a3c2ff}.next-prev{gap:14px}.next-prev button{width:44px;height:44px;border:1px solid #7692cb66;color:#d1e0ff;font-size:22px;line-height:1}.progress{top:32px}.loading{font-size:14px;color:#b4cbf3;letter-spacing:.12em}.off .loading{display:none}.off .chapter{padding:120px 7vw 70px}.off .chapter-inner{background:transparent}.off .chapter p{font-size:18px;line-height:1.65;max-width:700px}.off .chapter h1,.off .chapter h2{font-size:clamp(40px,6vw,78px)}.off .chapter .actions{gap:24px}.off .static-image{height:min(58vh,620px);max-width:900px}.off .journey{padding-top:0}
.portfolio{position:relative;z-index:10;background:#040814;color:var(--ink);overflow:hidden}.portfolio:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 100% 5%,#153a7929,transparent 30%);pointer-events:none}.section-shell{position:relative;max-width:1510px;margin:auto;padding:120px 8vw;scroll-margin-top:100px}.section-shell+.section-shell{border-top:1px solid var(--line)}.eyebrow{font:14px/1.6 monospace;letter-spacing:.1em;color:#a2bdf3;text-transform:uppercase;margin:0 0 24px}.section-heading{margin-bottom:60px}.section-heading h2,.contact-section h2{font-size:clamp(48px,6vw,88px);line-height:1.05;font-weight:400;letter-spacing:-.055em;margin:0;max-width:1050px}.section-heading h2 span,.contact-section h2 span{color:#8fb3ff}.section-heading>p:not(.eyebrow){font-size:18px;line-height:1.65;max-width:680px;color:var(--muted);margin:28px 0 0}.section-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:8vw;align-items:start}.body-copy p,.portfolio p{font-size:18px;line-height:1.7;color:var(--muted)}.body-copy p:first-child{margin-top:0}.body-copy .lead{font-size:28px;line-height:1.45;color:#e5efff;letter-spacing:-.02em;margin-bottom:30px}.info-card{padding:32px;background:linear-gradient(145deg,#0d1c3b99,#07112466);border:1px solid var(--line)}.info-card .eyebrow{font-size:14px;color:#aac4f5;margin-top:0}.info-card dl{margin:0 0 28px}.info-card dl>div{padding:18px 0;border-bottom:1px solid var(--line)}.info-card dt{font:14px/1.5 monospace;color:#98acd2;margin-bottom:4px}.info-card dd{font-size:18px;line-height:1.55;color:#dde8ff;margin:0}.info-card .primary{width:100%;justify-content:space-between}.timeline-item{display:grid;grid-template-columns:150px minmax(0,1fr) 110px;gap:28px;border-top:1px solid var(--line);padding:30px 0}.timeline-item time{font:18px/1.6 monospace;color:#a2beee}.timeline-item h3{font-size:24px;line-height:1.35;letter-spacing:-.02em;font-weight:400;margin:0 0 7px}.timeline-item p{margin:0}.timeline-kind{font:14px/1.6 monospace;color:#91a7ce;text-align:right}.portfolio .publication-meta{font-size:14px;line-height:1.65;color:#a4b8dc}.tag-list{display:flex;gap:10px;flex-wrap:wrap}.tag-list span{font-size:14px;line-height:1.5;padding:9px 13px;border:1px solid #809bc650;background:#11214755;color:#c5d6f5}.tools{margin-bottom:48px}.tools span{font-size:16px;padding:11px 17px}.skills-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}.skill-card{border-top:1px solid #a3bded65;padding:26px 0 0}.skill-card .eyebrow{font-size:14px;letter-spacing:.04em}.skill-card h3{font-size:32px;line-height:1.17;font-weight:400;letter-spacing:-.035em;margin:20px 0}.skill-card p{margin-bottom:0}.expertise-note{max-width:930px;border-left:2px solid #5d8df8;padding:4px 0 4px 24px;margin:48px 0 0}.case-list{border-top:1px solid var(--line)}.case-study{border-bottom:1px solid var(--line);scroll-margin-top:120px}.case-study>summary{display:flex;align-items:center;gap:30px;padding:30px 0;list-style:none;min-height:130px;cursor:pointer}.case-study>summary::-webkit-details-marker{display:none}.case-number{font:14px/1.5 monospace;color:#9bb7e8;min-width:38px}.case-category{display:block;font:14px/1.5 monospace;letter-spacing:.025em;color:#9bb6e6;margin-bottom:6px}.case-study summary strong{display:block;font-size:36px;line-height:1.15;font-weight:400;letter-spacing:-.035em;color:#e8f0ff}.case-title{display:block;font-size:18px;line-height:1.5;color:#a7b9da;margin-top:8px}.case-toggle{margin-left:auto;flex-shrink:0;width:48px;height:48px;display:grid;place-items:center;border:1px solid #85a5df70;border-radius:50%;font-size:28px;color:#b6d0ff}.case-study[open] .case-toggle{transform:rotate(45deg);background:#23457c66}.case-study[open]>summary{padding-bottom:28px}.case-content{padding:4px 0 48px 68px}.case-intro{max-width:850px;margin-bottom:34px}.case-intro .case-deck{font-size:24px;line-height:1.5;color:#e3edff;margin:0 0 16px}.case-intro .publication-meta{font-size:14px}.case-columns{display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-bottom:30px}.case-content h4{font-size:20px;line-height:1.4;font-weight:500;margin:0 0 12px;color:#e4eeff}.case-content p{margin:0 0 20px}.case-methods{padding-top:26px;border-top:1px solid var(--line)}.case-methods .tag-list{margin:18px 0 26px}.case-methods strong{color:#dae7ff}.workflow{font-size:18px;color:#b5c7e8;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;list-style-position:inside;padding:0;margin:26px 0}.workflow li{border-top:1px solid var(--line);padding-top:16px}.case-result{border:1px solid #739fe56b;background:linear-gradient(120deg,#122b5555,#071024);padding:30px;margin-top:36px}.case-result .eyebrow{font-size:14px}.case-result h4{font-size:28px;letter-spacing:-.025em}.research-note{padding-top:20px;border-top:1px solid var(--line)}.publication-entry{display:grid;grid-template-columns:90px minmax(0,1fr);gap:34px;border-top:1px solid var(--line);padding:40px 0;scroll-margin-top:125px}.publication-index{font:14px/1.6 monospace;color:#96b5eb}.publication-index span{display:block;margin-top:5px;color:#dce8ff;font-size:18px}.publication-entry h3{font-size:28px;line-height:1.3;letter-spacing:-.025em;font-weight:400;color:#e4eeff;margin:0 0 18px;max-width:1060px}.publication-entry p{margin:0 0 16px}.publication-entry .authors{font-size:16px;line-height:1.6;color:#b7c9ea}.authors strong{color:#e1edff;font-weight:500}.publication-links{display:flex;gap:22px;align-items:flex-start;flex-wrap:wrap;margin-top:20px}.citation{position:relative}.citation>summary{font-size:14px;line-height:1.5;padding:9px 0;min-height:44px;color:#bbcefa;cursor:pointer;border-bottom:1px solid #7995cc77;list-style:none}.citation>summary::-webkit-details-marker{display:none}.citation>summary:after{content:' +';color:#a7c2f3}.citation[open]>summary:after{content:' −'}.citation pre{font:14px/1.65 monospace;background:#0c1730;border:1px solid var(--line);padding:22px;max-width:min(70vw,900px);white-space:pre-wrap;overflow-wrap:anywhere;margin:15px 0 0;color:#cfdefb}.contact-section{padding-top:140px;padding-bottom:130px;background:radial-gradient(ellipse at 70% 80%,#14377655,transparent 65%)}.contact-section h2{max-width:1100px}.contact-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr);gap:8vw;margin-top:54px}.contact-grid p{max-width:570px;margin:0 0 25px}.contact-email{display:inline-flex;gap:28px;align-items:center;min-height:48px;font-size:clamp(20px,2.4vw,34px);line-height:1.4;letter-spacing:-.025em;border-bottom:1px solid #9bb9f3;padding:8px 0;color:#e4efff}.contact-links{display:grid;grid-template-columns:1fr 1fr;column-gap:25px;align-content:start}.contact-links a{min-height:48px;font-size:16px;display:flex;gap:15px;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);color:#bbd0f4}.contact-links a:hover{color:white}.site-footer{padding-top:44px;padding-bottom:44px;display:flex;justify-content:space-between;gap:35px}.site-footer p{font-size:14px;line-height:1.6;margin:8px 0;color:#94abcf}.site-footer>div:last-child{text-align:right}.site-footer .wordmark{font-size:16px}.site-footer .textlink{font-size:14px}
@media(min-width:901px) and (max-width:1250px){.wordmark span,.preview{display:none}.site-links{gap:18px}.header-right{gap:16px}.chapter-inner{grid-template-columns:1.1fr 1.2fr .8fr;gap:25px}.chapter h1,.chapter h2{font-size:38px}.chapter .actions{gap:8px;flex-direction:column;align-items:flex-end}.chapter-nav{gap:25px}.section-shell{padding-left:6vw;padding-right:6vw}.section-grid{gap:5vw}.skills-grid{gap:24px}.case-content{padding-left:0}}
@media(min-width:901px) and (max-height:820px){header{height:86px}.gallery-label{top:94px}.chapter{bottom:138px}.chapter-inner{gap:25px;padding-top:15px}.chapter h1,.chapter h2{font-size:34px}.chapter p{font-size:18px;line-height:1.45}.chapter .number{margin-bottom:7px}.object-label{top:53%;font-size:14px}.rail{bottom:12px}.rail-top{margin-bottom:8px}.progress{top:28px}.chapter-nav{padding-top:5px}}
@media(min-width:901px) and (max-height:640px){.gallery-label{top:86px}.object-label{display:none}.chapter{bottom:126px}.chapter-inner{grid-template-columns:1.15fr 1.6fr 1fr}.chapter h1,.chapter h2{font-size:28px}.chapter p{font-size:18px;line-height:1.4}.chapter .number{font-size:14px}.chapter .actions{gap:8px;flex-direction:column;align-items:flex-end}.stage:after{background:linear-gradient(#02030b44,transparent 20%,transparent 40%,#02030b 75%),radial-gradient(ellipse at center,transparent 38%,#0008)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Strong display typography and the requested left-text / right-gallery composition. */
@font-face{font-family:Inter;src:url('fonts/InterVariable.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
body{font-family:Inter,Arial,Helvetica,sans-serif;font-optical-sizing:auto}
@media(min-width:901px){
  :root{--gallery-header:98px;--gallery-footer:130px}
  .stage{left:50%;right:0;top:var(--gallery-header);bottom:var(--gallery-footer);width:50%;height:auto;border-left:1px solid #617eb125;background:#020713}
  .stage:after{background:linear-gradient(90deg,#02030b77,transparent 18%,transparent 86%,#02030b33),linear-gradient(#02030b55,transparent 18%,transparent 82%,#02030b77);}
  .gallery-label,.object-label{display:none!important}
  .chapter{top:var(--gallery-header);bottom:var(--gallery-footer);left:0;right:0;}
  .chapter-inner{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;width:50%;height:100%;margin:0;padding:24px 2vw 24px 4vw;gap:0;border:0;background:transparent;}
  .chapter-inner>div:first-child{width:100%}
  .chapter .number{font:500 15px/1.5 Inter,Arial,sans-serif;color:#b7d0ff;letter-spacing:.075em;margin:0 0 18px;text-transform:uppercase;}
  .chapter h1.hero-name{font-size:clamp(80px,9.6vw,148px);font-weight:500;font-variation-settings:'opsz' 32;letter-spacing:-.065em;line-height:.91;margin:0 0 26px;max-width:100%;color:#f1f5ff;}
  .hero-name span{display:inline-block;white-space:nowrap;color:#8db4ff;}
  .chapter h2{font-size:clamp(52px,5.2vw,80px);font-weight:500;font-variation-settings:'opsz' 32;letter-spacing:-.055em;line-height:1.04;margin:0 0 26px;max-width:100%;}
  .chapter p{font-size:clamp(20px,1.52vw,22px);font-weight:400;line-height:1.55;color:#cedbf1;max-width:560px;margin:0 0 30px;}
  .chapter .actions{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:18px;flex-wrap:wrap;margin:0;}
  .chapter .primary{font-size:16px;font-weight:500;min-height:54px;padding:13px 20px;border-color:#b2caff;background:#d0e1ff;color:#08142c;backdrop-filter:none;}
  .chapter .primary:hover{background:#edf5ff;}
  .chapter .textlink{font-size:16px;font-weight:500;min-height:54px;padding:13px 0;color:#d9e6ff;}
  .rail{bottom:20px;}
  .chapter-nav{gap:34px;}
  .chapter-link{font-size:15px;}
  .chapter-link b{font-size:14px;}
  .rail-top{font-size:14px;}
  .portfolio p,.body-copy p,.portfolio li{font-size:20px;line-height:1.7;}
  .body-copy .lead{font-size:30px;line-height:1.45;}
  .portfolio .eyebrow{font-size:15px;}
  .portfolio .publication-meta{font-size:15px;}
  .portfolio .authors{font-size:17px;}
  .publication-entry h3{font-size:30px;}
  .info-card dd{font-size:20px;}
  .site-footer p{font-size:14px;}
  .off .journey{height:auto;}
  .off .chapter{display:grid;grid-template-columns:1fr 1fr;align-items:center;position:relative;top:auto;bottom:auto;min-height:100svh;padding:115px 4vw 75px;gap:35px;}
  .off .chapter .static-image{display:block;grid-column:2;grid-row:1;width:100%;height:auto;max-height:75svh;object-fit:contain;margin:0;}
  .off .chapter-inner{grid-column:1;grid-row:1;width:100%;height:auto;padding:0;background:transparent;}
  .off .chapter h1.hero-name{font-size:clamp(80px,9.6vw,148px);}
  .off .chapter h2{font-size:clamp(52px,5.2vw,80px);}
  .off .chapter p{font-size:clamp(20px,1.52vw,22px);max-width:560px;}
}
@media(min-width:901px) and (max-width:1100px){
  .chapter h1.hero-name,.off .chapter h1.hero-name{font-size:clamp(80px,9.6vw,106px);}
  .chapter h2,.off .chapter h2{font-size:clamp(46px,5.15vw,58px);}
  .chapter .number{font-size:14px;letter-spacing:.04em;}
  .chapter .actions{gap:14px;}
  .chapter .primary{padding:13px 15px;}
  .chapter-nav{gap:25px;}
}
@media(min-width:901px) and (max-height:820px){
  :root{--gallery-header:86px;--gallery-footer:116px}
  .chapter-inner{padding-top:12px;padding-bottom:12px;}
  .chapter .number{margin-bottom:14px;}
  .chapter h1.hero-name{margin-bottom:20px;}
  .chapter h2{margin-bottom:20px;}
  .chapter p{line-height:1.48;margin-bottom:24px;}
  .rail{bottom:12px;}
}
@media(min-width:901px) and (max-height:720px){
  .chapter h1.hero-name{font-size:clamp(80px,8.6vw,124px);}
  .chapter h2{font-size:clamp(46px,4.5vw,64px);}
  .chapter .number{margin-bottom:12px;}
  .chapter h1.hero-name,.chapter h2{margin-bottom:18px;}
  .chapter p{margin-bottom:20px;}
}
@media(min-width:901px) and (max-height:660px){
  .chapter-inner{justify-content:flex-start;overflow-y:auto;padding-top:8px;padding-bottom:8px;}
  .chapter h1.hero-name{font-size:clamp(74px,8.15vw,118px);margin-bottom:12px;}
  .chapter h2{font-size:clamp(42px,4.2vw,58px);margin-bottom:12px;}
  .chapter .number{margin-bottom:8px;}
  .chapter p{line-height:1.45;margin-bottom:12px;}
  .off .chapter-inner{overflow:visible;justify-content:center;}
}
