/* Portfolio identity and motion. */
:root{--paper:#fcf9fa;--wine:#823d5b;--muted:#6e626b;--ink:#2d242c}.gradient-text{background:none;color:var(--wine)}.site-header{background:rgba(252,249,250,.88)}.chapter-nav{background:rgba(252,249,250,.9)}.portfolio-intro{max-width:1400px;margin:auto;display:grid;grid-template-columns:1.15fr 1fr;column-gap:9%;row-gap:50px;text-align:left;padding:80px 8% 0;background:none;overflow:visible}.identity-copy{align-self:center;min-width:0}.portfolio-intro h1{font-size:clamp(70px,8.3vw,118px);font-weight:570;line-height:.96;letter-spacing:-.065em;margin:25px 0}.name-period{color:var(--wine)}.portfolio-role{font-size:clamp(20px,2.1vw,27px);line-height:1.4;font-weight:450;letter-spacing:-.6px;margin:25px 0 20px;color:#67485b}.portfolio-intro .landing-lede{font-size:14px;line-height:1.9;color:var(--muted);max-width:450px;margin:0}.portfolio-intro .actions{justify-content:flex-start;margin-top:27px;gap:13px}.intro-research-link{display:inline-block;margin-top:18px;font-size:12px}.portfolio-portrait{width:100%;margin:0;padding:0;max-width:none;min-height:0;align-self:center;transition:transform .4s cubic-bezier(.2,.75,.2,1);will-change:transform}.portrait-frame{position:relative;overflow:hidden;border-radius:6px 6px 45px 6px;background:#e5e0e3;z-index:2;box-shadow:0 18px 50px #51314514}.portfolio-portrait img{width:100%;height:auto;aspect-ratio:.83;object-fit:cover;object-position:52% center;border-radius:0;box-shadow:none;transition:transform 1.3s cubic-bezier(.2,.75,.2,1)}.portfolio-portrait:hover img{transform:scale(1.035)}.portfolio-portrait figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:15px;font-size:10px;color:var(--muted);position:relative;z-index:2}.portrait-outline{position:absolute;inset:-18px 18px 48px -18px;border:1px solid #d6b8c9;border-radius:6px 6px 45px 6px;z-index:0;transform:translateY(calc(var(--hero-shift,0px) * -.45))}.portfolio-portrait .portrait-halo{inset:15px -35px -20px;background:radial-gradient(ellipse,#e7c9da66,transparent 70%)}.portfolio-intro .orb-one{filter:blur(100px);opacity:.4;width:300px;height:300px;left:-100px;top:50px}.portfolio-intro .orb-two{filter:blur(100px);opacity:.4;width:300px;height:300px;right:0;top:150px}.intro-summary{grid-column:1/-1;display:grid;grid-template-columns:1.4fr 1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0;gap:25px}.intro-summary div{display:flex;flex-direction:column;gap:8px}.intro-summary span{font-size:10px;color:var(--muted)}.intro-summary strong{font-size:13px;font-weight:500}.portfolio-about{max-width:1400px;padding:65px 8% 90px;text-align:left}.portfolio-about>div{display:grid;grid-template-columns:1fr 1.15fr;gap:12%;margin-top:25px}.portfolio-about h2{font-size:35px;font-weight:500;line-height:1.2;letter-spacing:-1.4px;margin:0}.portfolio-about div>p{max-width:590px;font-size:15px;color:var(--muted);line-height:1.85;margin:0}.chapter-heading h2{font-size:clamp(36px,4.5vw,59px);font-weight:540;line-height:1.13;letter-spacing:-.045em}.chapter-heading>p:not(.eyebrow){font-size:14px;line-height:1.9}.research-chapter{padding-top:85px;padding-bottom:65px;background:#29232d}.research-experience{border-radius:12px;background:#302736;border-color:#574353}.research-panel h3{font-size:31px;line-height:1.2;font-weight:500;letter-spacing:-1px}.research-panel h3 i{font-style:italic;font-weight:450}.research-panel p:not(.eyebrow){font-size:13px}.research-panel .eyebrow{font-size:9px;line-height:1.7}.presentation-strip h3{font-size:25px;font-weight:500;letter-spacing:-.6px}.workflow-visual{display:flex;flex-direction:column;padding:30px 28px;min-height:550px;position:relative;background:radial-gradient(ellipse at 50% 40%,#76425933,transparent 70%)}.workflow-kicker{font-size:11px;color:#d5bacd;display:flex;justify-content:space-between;position:relative;z-index:2}.workflow-kicker span{font-size:9px;color:#a782a0}.plate-wrap{height:250px;position:relative;display:flex;justify-content:center;align-items:center;margin:12px 0}.assay-plate{position:relative;z-index:2;width:245px;height:177px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;padding:20px;border-radius:13px;border:1px solid #be94b1;transform:perspective(600px) rotateX(30deg) rotateZ(-14deg);background:linear-gradient(145deg,#c0a4ba28,#9d789c11);box-shadow:12px 17px 0 #b08ca412,0 30px 70px #0c071c66;transition:transform 1s cubic-bezier(.2,.7,.2,1),box-shadow .8s}.well{display:block;border:1px solid #b085aa;border-radius:50%;aspect-ratio:1;background:radial-gradient(circle at 35% 30%,#c99fb74d,#6e486b77);box-shadow:inset 2px 2px 5px #1c142a80;transition:background .7s,box-shadow .7s}.workflow-visual[data-step="1"] .assay-plate{transform:perspective(600px) rotateX(15deg) rotateZ(0deg);box-shadow:0 15px 0 #b08ca412,0 25px 60px #5f284c55}.workflow-visual[data-step="1"] .well:nth-child(3n){background:#c993bc88;box-shadow:0 0 14px #d396bd66,inset 2px 2px 5px #5f345c80}.workflow-visual[data-step="2"] .assay-plate{transform:perspective(600px) rotateX(0) rotateZ(0)}.workflow-visual[data-step="2"] .well{animation:wellRead 2.8s ease-in-out infinite;animation-delay:calc(var(--well-index,0) * 85ms)}.plate-orbit{position:absolute;width:295px;height:295px;border:1px solid #9d799d22;border-radius:50%;transform:rotateX(45deg);pointer-events:none}.orbit-b{width:355px;height:355px;border-style:dashed;opacity:.55;animation:orbitTurn 36s linear infinite}.plate-scan{position:absolute;z-index:3;top:55px;left:15%;right:15%;height:1px;background:linear-gradient(90deg,transparent,#e0b8d5,transparent);box-shadow:0 0 20px #efc6e377;opacity:0}.workflow-visual[data-step="2"] .plate-scan{animation:scanPlate 3s ease-in-out infinite}.workflow-schematic{font-size:9px;color:#b59aaf;text-align:center;margin:0 0 25px;position:relative;z-index:2}.workflow-steps{display:none;gap:6px;border-top:1px solid #674c63;padding-top:20px;position:relative;z-index:2}.js .workflow-steps{display:flex}.workflow-steps button{position:relative;flex:1;min-width:0;text-align:left;border:0;border-radius:7px;background:none;color:#c4adc0;cursor:pointer;padding:10px}.workflow-steps button>span{display:block;font-size:9px;margin-bottom:7px;color:#b48ca9}.workflow-steps button>b{font-size:10px;font-weight:500}.workflow-steps button[aria-pressed=true]{background:#67445e;color:white}.workflow-steps button[aria-pressed=true]>span{color:#f0c8e0}.workflow-description{font-size:11px;color:#c6adc0;margin:18px 0 0;min-height:60px;line-height:1.8;position:relative;z-index:2}@keyframes wellRead{0%,100%{background:#79527255;box-shadow:inset 2px 2px 5px #1c142a80}45%{background:#c192b6bb;box-shadow:0 0 12px #dbacd566}}@keyframes scanPlate{0%,100%{translate:0 0;opacity:0}15%,85%{opacity:.8}90%{translate:0 135px}}@keyframes orbitTurn{to{rotate:360deg}}.feature-tile{border-radius:12px;min-height:370px}.feature-tile h3{font-size:38px;line-height:1.13;font-weight:520;letter-spacing:-1.4px}.education-tile{background:#eedfe7}.ambition-tile{background:#f1edef}.tile-symbol{font-size:75px;opacity:.4}.sticky-heading h3{font-size:38px;font-weight:520}.journey-chapter,.community-chapter,.toolkit-section{padding-top:90px;padding-bottom:90px}.toolkit-section{background:#f3ecef}.skill-accordions summary{font-size:21px;font-weight:500}.community-card{border-radius:10px;background:none;border-top:1px solid #d8c3cf;padding:25px 20px 25px 0}.community-card:hover{box-shadow:none;transform:translateY(-6px);background:none}.community-card h3{font-size:25px;line-height:1.25;font-weight:500;letter-spacing:-.8px;margin-top:30px}.community-card p{font-size:13px}.community-number{border:0;justify-content:start;width:auto;height:auto;color:#96778a}.community-grid{gap:35px}.connect-chapter{background:#f4e8f0;text-align:left;padding:70px max(8%,calc((100vw - 1200px)/2))}.connect-chapter h2{font-size:52px;font-weight:520;letter-spacing:-2px}.connect-chapter .actions{justify-content:flex-start}.resume-callout{max-width:none;margin-top:55px}.resume-callout h3{font-size:25px;font-weight:500}.detail-page .page-heading h1{font-size:clamp(44px,5vw,68px);font-weight:550}.detail-page .card,.detail-page .degree{border-radius:10px}.drawer-top p{font-weight:500;font-size:25px}.drawer-foot{letter-spacing:0}.motion-toggle{display:block;margin:10px auto;border:1px solid #cfb9c6;background:none;color:var(--wine);padding:9px 15px;border-radius:20px;font-size:11px;cursor:pointer}.motion-toggle[aria-pressed=true]{background:#e9d7e2}footer .footer-top h2{font-size:30px;font-weight:450;letter-spacing:-.7px}.js [data-reveal]{opacity:0;transform:translateY(54px);filter:blur(3px);transition:opacity .9s ease,transform 1.1s cubic-bezier(.16,.75,.22,1),filter .9s ease;transition-delay:var(--reveal-delay,0ms)}.js [data-reveal].in-view{opacity:1;transform:translateY(0);filter:blur(0)}.js .portfolio-portrait.in-view{transform:perspective(1000px) translateY(var(--hero-shift,0px)) rotateX(var(--portrait-x,0deg)) rotateY(var(--portrait-y,0deg));filter:none;transition:opacity 1s,transform .5s cubic-bezier(.2,.7,.2,1)}.identity-copy h1{--reveal-delay:70ms}.identity-copy .portfolio-role{--reveal-delay:150ms}.identity-copy .landing-lede{--reveal-delay:220ms}.identity-copy .actions{--reveal-delay:290ms}.journey-grid [data-reveal]:nth-child(2),.community-grid [data-reveal]:nth-child(2){--reveal-delay:100ms}.community-grid [data-reveal]:nth-child(3){--reveal-delay:200ms}.experience-list [data-reveal]:nth-child(2n){--reveal-delay:75ms}.chapter-nav a{position:relative}.chapter-nav a:after{content:'';position:absolute;bottom:-6px;left:0;width:100%;height:1px;background:var(--wine);transform:scaleX(0);transition:transform .4s;transform-origin:left}.chapter-nav a[aria-current]:after{transform:scaleX(1)}.reading-progress{height:2px;background:var(--wine)}.button{transition:transform .35s,box-shadow .35s,background .3s}.button:hover{transform:translateY(-4px);box-shadow:0 10px 25px #713a5426}.skill-accordions summary{transition:padding-left .3s,color .3s}.skill-accordions summary:hover{padding-left:8px;color:var(--wine)}.skill-body{animation:portfolioExpand .45s ease}@keyframes portfolioExpand{from{opacity:.1;transform:translateY(-12px)}to{opacity:1;transform:none}}.experience-list article{transition:translate .35s}.experience-list article:hover{translate:6px 0}html[data-motion=reduce]{scroll-behavior:auto}html[data-motion=reduce] *,html[data-motion=reduce] *:before,html[data-motion=reduce] *:after{animation:none!important;transition:none!important}html[data-motion=reduce] [data-reveal],html[data-motion=reduce] .portfolio-portrait.in-view{opacity:1;filter:none;transform:none}html[data-motion=reduce] .portrait-outline{transform:none}@media(min-width:1600px){.portfolio-intro{padding-top:100px}.portfolio-intro h1{font-size:124px}}@media(max-width:1000px){.portfolio-intro{gap:45px 6%;padding-left:7%;padding-right:7%}.portfolio-intro h1{font-size:85px}.portfolio-role{font-size:23px}.portfolio-intro .landing-lede{font-size:13px}.portfolio-intro .eyebrow{font-size:8px;letter-spacing:1.6px}.workflow-visual{padding:25px 20px}.assay-plate{width:220px;height:163px;gap:8px;padding:18px}.plate-orbit{width:245px;height:245px}.orbit-b{width:290px;height:290px}}@media(max-width:720px){.portfolio-intro{grid-template-columns:1fr;padding:40px 7% 0;gap:40px;overflow:hidden}.portfolio-intro h1{font-size:79px;line-height:.97;margin:25px 0}.portfolio-role{font-size:24px;margin:22px 0 17px}.portfolio-intro .landing-lede{font-size:14px;max-width:none}.portfolio-intro .actions{flex-direction:row;gap:10px}.intro-research-link{margin-top:16px}.portfolio-portrait{width:90%;margin:0 0 0 auto;padding:0;max-width:440px}.portfolio-portrait img{aspect-ratio:1.02;height:auto;border-radius:0;object-position:center 38%}.portrait-frame{border-radius:5px 5px 35px 5px}.portrait-outline{inset:-14px 14px 46px -14px;border-radius:5px 5px 35px 5px}.portfolio-portrait figcaption{font-size:9px}.intro-summary{grid-template-columns:1fr;gap:17px;padding:21px 0;margin:0;grid-column:auto}.intro-summary div{flex-direction:row;align-items:baseline;justify-content:space-between;gap:15px}.intro-summary strong{font-size:11px;text-align:right}.intro-summary span{font-size:9px}.portfolio-about{padding:45px 7% 60px}.portfolio-about>div{grid-template-columns:1fr;gap:22px;margin-top:20px}.portfolio-about h2{font-size:30px;letter-spacing:-1px}.portfolio-about div>p{font-size:14px}.chapter-heading h2{font-size:35px;font-weight:520;letter-spacing:-1.3px}.chapter-heading>p:not(.eyebrow){font-size:13px}.research-chapter{padding:65px 6% 45px}.research-experience{border-radius:10px}.workflow-visual{padding:22px 23px;min-height:0}.plate-wrap{height:235px;margin-top:0}.assay-plate{width:230px;height:170px;padding:18px;gap:9px}.plate-orbit{width:260px;height:260px}.orbit-b{width:315px;height:315px}.workflow-steps{padding-top:15px}.workflow-description{min-height:56px;font-size:11px;margin-bottom:0}.workflow-schematic{margin-bottom:15px}.research-panel h3{font-size:28px;font-weight:500}.presentation-strip h3{font-size:25px}.feature-tile{min-height:290px;padding:28px}.feature-tile h3{font-size:33px}.feature-tile .eyebrow{font-size:9px}.journey-chapter,.toolkit-section,.community-chapter{padding:65px 7%}.experience-overview{margin-top:50px}.sticky-heading h3{font-size:32px}.community-grid{gap:15px}.community-card{min-height:0;padding:25px 0}.community-card h3{font-size:25px;margin:12px 0 15px;max-width:90%}.community-number{position:static;font-size:10px}.connect-chapter{padding:45px 7%}.connect-chapter h2{font-size:42px;letter-spacing:-1.5px}.connect-chapter .actions{align-items:flex-start;flex-direction:row;gap:12px}.resume-callout{margin-top:40px}.js [data-reveal]{transform:translateY(38px);filter:blur(2px)}.js [data-reveal].in-view{transform:none;filter:none}.js .portfolio-portrait.in-view{transform:translateY(var(--hero-shift,0px))}.skill-accordions summary{font-size:19px}.site-header .brand{font-size:32px}}@media(prefers-reduced-motion:reduce){.js [data-reveal],.js .portfolio-portrait.in-view{opacity:1;filter:none;transform:none}.portrait-outline{transform:none}.experience-list article:hover{translate:0}.portfolio-portrait:hover img{transform:none}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Repeat entrances from the edge the section last left. Offscreen resets are instant. */
.js [data-reveal]:not(.in-view){transition:none;transition-delay:0ms}
.js [data-reveal][data-reveal-edge="above"]:not(.in-view){transform:translateY(-54px)}
.js [data-reveal][data-reveal-edge="below"]:not(.in-view){transform:translateY(54px)}
.js [data-reveal]:focus-within{opacity:1;filter:none;transform:none}
@media(max-width:720px){
 .js [data-reveal][data-reveal-edge="above"]:not(.in-view){transform:translateY(-38px)}
 .js [data-reveal][data-reveal-edge="below"]:not(.in-view){transform:translateY(38px)}
}
html[data-motion=reduce] [data-reveal][data-reveal-edge]:not(.in-view){opacity:1;filter:none;transform:none}
@media(prefers-reduced-motion:reduce){.js [data-reveal][data-reveal-edge]:not(.in-view){opacity:1;filter:none;transform:none}}
