/* Unified forest / ivory / brass surfaces. Text stays on unscaled, opaque layers. */
:root{--panel:#193c32;--panel-deep:#122e28;--panel-text:#edf2e9;--panel-muted:#c9d6c9;--brass:#dac18a;--surface:#fffdf6}
body{-webkit-font-smoothing:auto;text-rendering:optimizeLegibility}
/* Avoid a permanently composited, fractionally scaled text layer after reveal. */
.reveal-ready{transform:translateY(42px);transition:opacity .7s,transform .9s cubic-bezier(.16,1,.3,1)}
.reveal-ready.is-visible{transform:none;opacity:1;will-change:auto;filter:none}
.heading-char{transform:none}.motion-enabled .section-heading.is-visible .heading-char{transform:none}
.ability,.campus-card{will-change:auto;filter:none;backdrop-filter:none}
.ability-image .image-label{color:#fffdf0!important;background:#173c30!important;border:1px solid #e6cf9280;font-size:11px;line-height:1.65;font-weight:500;padding:5px 10px;opacity:1;text-shadow:none;z-index:2}
.ability-copy p,.campus-copy p{font-size:14px;line-height:1.95}
.ability-copy h3{font-size:22px;line-height:1.65}
.ability-copy code{font-size:13px;line-height:1.6;color:#fff2c8;background:#304f43;border:1px solid #778d6f;padding:2px 5px}
/* The same light media / dark information split used on the opening card. */
#skills,#research,#academic{position:relative;isolation:isolate}
#skills:before,#research:before,#academic:before{content:'';position:absolute;inset:0 -12vw;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 85% 40%,#c9d9c43d,transparent 60%),linear-gradient(90deg,transparent,#f1eee44a,transparent)}
.ability-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}
.ability,.campus-card{border:1px solid #58705b;border-radius:18px;background:var(--panel);box-shadow:0 15px 34px #17382b12;transition:box-shadow .25s,border-color .25s,opacity .7s}
.ability-image{height:235px;background:#eef0e6;border-bottom:1px solid #c9bc8b;padding:18px}
.ability-image img,.campus-main img{transition:none;transform:none!important}
.ability-copy,.campus-copy{position:relative;background:var(--panel);color:var(--panel-text);padding:28px}
.ability-copy:before,.campus-copy:before{content:'';position:absolute;left:28px;right:28px;top:0;height:1px;background:linear-gradient(90deg,#d4bd83,transparent)}
.ability-copy .small-label,.campus-copy .small-label{color:var(--brass);font-size:10px;letter-spacing:1.5px}
.ability-copy h3,.campus-copy h3{color:#f5f5e9;font-weight:600}
.ability-copy p,.campus-copy p{color:var(--panel-muted)}
.ability-copy .text-link{color:#f0dca6;font-size:13px}
.ability:after,.campus-card:after{display:none}
.campus-main{background:#e7ecdf;border-bottom:1px solid #b49d67}
.campus-main>span{background:#153b30;color:#fff4d8;border:1px solid #ae9861;padding:5px 9px}
.campus-secondary{background:#294b3e;border:1px solid #6b7c5b;border-radius:9px;padding:12px;color:#f8edd2;transition:background .2s,border-color .2s,box-shadow .2s}
.campus-secondary small{color:#c5d1c0}
.campus-copy h3{font-size:21px}.campus-copy p{font-size:13px}
/* Shared dark tabs and toolbar frame for the project and research books. */
.project-section,.campus-section{background:#eeeee4;background-image:radial-gradient(ellipse at 20% 15%,#d7e0cd88,transparent 65%),radial-gradient(#647c4f16 .75px,transparent .75px);background-size:auto,26px 26px;border-color:#cbd1bd}
#project-book,.research-book{border:1px solid #667f63;border-radius:18px;box-shadow:0 22px 50px #153d2921;background:var(--surface);overflow:hidden;perspective:none}
.project-tabs{background:var(--panel-deep);padding:12px;gap:8px;border-bottom:1px solid #63704e}
.project-tabs button{color:#d8e4d3;border:1px solid #496550;border-radius:9px;padding:12px 16px;transition:background .22s,color .22s,box-shadow .22s}
.project-tabs button[aria-pressed=true]{background:#e3cc96;color:#17362a;border-color:#ecd7a4;box-shadow:0 5px 18px #0002}
.project-chapters{padding:15px 18px;background:#e9ecdd;border-color:#becbad;gap:8px}
.project-chapters button{color:#345340;border:1px solid #b3c3a6;border-radius:6px;padding:7px 10px;background:#f9f9ef;font-size:11px}
.project-chapters button[aria-pressed=true]{color:#f5e6ba;background:#234934;border-color:#234934;box-shadow:0 3px 8px #1f432422}
.project-visual{background:#eeefe3;background-image:linear-gradient(145deg,#fffdf5,transparent);padding:27px}
.page-kicker{color:#4e644b}.project-copy{position:relative;background:var(--panel);color:#eef2e5;padding:34px}
.project-copy .eyebrow{color:var(--brass)}.project-copy h3{color:#f6f3e7;font-weight:600}.project-subtitle{color:#c5d3c1;font-size:13px}
.project-copy h4{color:#f6e4b1}.project-copy .chapter-number{color:#e9d498;border-color:#6c7955}
.project-copy .detail-list li{color:#e0e8da;font-size:13px}.project-copy .detail-list li:before{background:#c9b67e}
.project-stack span{color:#e7ddb9;background:#2c5040;border:1px solid #647950;border-radius:5px}
.project-footnote{color:#c2cfba!important;border-color:#587151!important}.event-sources{border-color:#67815c}.event-sources span{color:#d0d8bf}.event-sources a{color:#f3d991;border-color:#7b8968;background:#2c4e3c}
.project-photo,.research-figure,.research-page{border-radius:9px}.project-photo{box-shadow:0 8px 24px #203b2510;border:1px solid #c8ccb5}.project-caption{color:#3e5847}
.book-controls{background:#15382c;border-top:1px solid #52704e;color:#e2edda}.book-controls p{color:#d9e4cf}.book-controls .button{border-color:#718462;color:#f5e4b6;background:#284b39}.book-controls .dots button{background:#819774}.book-controls .dots button.active{background:#e9cc89}
.research-environment{background:var(--panel);color:#d0dfc8;border:1px solid #65805d;border-left:3px solid #cbb073!important;border-radius:10px;padding:17px 20px}.research-environment strong{color:#f3dda2}
.research-tabs{gap:9px}.research-tabs button{background:#f9f9ee;border-color:#b1c1a4;color:#3e5a3e;border-radius:8px;padding:10px 14px;transition:background .22s,box-shadow .22s}
.research-tabs button[aria-pressed=true]{background:#204631;color:#f5e2ad;border-color:#204631;box-shadow:0 5px 14px #2f4b2422}
.research-toolbar{background:#122f25;border-color:#697c55;padding:16px 24px}.research-toolbar>span{color:#e7d6a9}.research-toolbar .button{background:#dcca99;border-color:#dcca99;color:#143426;font-weight:600}
.research-figure{background:#f0f1e4;border-radius:0;border-color:#869878}.research-figure span{color:#485f43}
.research-copy{background:var(--panel);color:#f2f2e4}.research-copy h3{color:#f8f4e6;font-weight:600}.research-copy p{color:#d6e1cf;font-size:14px}.research-copy .eyebrow{color:var(--brass)}
.formula{background:#0f2c23;border:1px solid #6c805a;color:#f0dfab;box-shadow:inset 3px 0 #c6ae73;border-radius:9px;font-size:13px;padding:18px}
.research-back{background:#e9eddf}.research-back h3{color:#244a33}.research-back p{color:#3d5540}
.research-media-grid .research-video{background:var(--panel);border:1px solid #607856;border-radius:16px;color:#f4f1e2;padding:18px;box-shadow:0 14px 30px #12362215}
.research-media-grid .research-video .eyebrow{color:var(--brass)}.research-media-grid .research-video p:not(.eyebrow){color:#d5e0ca;font-size:13px}.research-media-grid .research-video .text-link{color:#eed697}
.video-preview{border:1px solid #809273;border-radius:9px}.video-preview .play,.project-photo .play{background:#173d31;color:#f7e9bf;border:1px solid #cdb781;box-shadow:0 0 0 7px #15392e30;transition:background .2s,box-shadow .2s}
.thesis-hardware{background:#e8eddf;border:1px solid #b0c09e;border-radius:13px;padding:20px}.thesis-hardware .text-link{color:#254d33}
/* Academic section uses the opening profile panel's dark / gold statistics. */
.academic-layout{gap:26px;align-items:start}.academic-layout>div{background:var(--surface);border:1px solid #b7c7a7;border-radius:16px;padding:25px;box-shadow:0 15px 35px #223d2510}
.academic-stats{background:var(--panel);border:1px solid #5e7a50;border-radius:11px;padding:22px 20px;gap:15px}.academic-stats strong{color:#f1d99b;font-size:39px}.academic-stats span,.academic-stats small{color:#d1ddc5}.academic-stats>div:after{display:none}.course-title{margin-top:26px}
.courses>div{padding:11px 4px;border-color:#d4dcc9;transition:background .2s,padding .2s}.courses dd{color:#294d32;font-weight:700}.credentials span{color:#365a3a;background:#edf1e3;border-color:#b6c7a7;border-radius:5px}
.academic-proof{background:var(--panel);border:1px solid #5e7956;border-radius:16px;padding:18px;box-shadow:0 15px 35px #223d2515}.academic-proof>button{background:#f0f1e4;border-color:#bfcca9;border-radius:9px}.academic-proof>button span{color:#2b4f36;font-weight:600;font-size:12px}
.scholarships button{background:#274c39;color:#f3e4bb;border:1px solid #667d52;border-radius:8px;padding:13px;margin-top:10px}.scholarships button span{color:#d9e3ca}.scholarships button b{color:#f6e4ab}
/* Resting text uses no transforms. Interaction emphasis comes from color, rim and light. */
a,button{touch-action:manipulation}.honor-stage{touch-action:pan-y}.honors-continuous .honor-card{transition:none!important}
.honor-card.is-current{filter:none}.honor-card-caption strong{color:#6a521e}
.interactive-surface{position:relative;--light-x:50%;--light-y:50%}
.interactive-surface:before{content:'';position:absolute;z-index:2;inset:0;pointer-events:none;border-radius:inherit;background:radial-gradient(250px circle at var(--light-x) var(--light-y),#edd9a716,transparent 75%);opacity:0;transition:opacity .25s}
.interactive-surface.is-pointed:before{opacity:1}
.text-link{transition:color .2s,text-decoration-color .2s}.text-link:hover{text-decoration-thickness:2px;text-underline-offset:6px}.text-link:active{color:#a17f39}
.button,button[data-project-page],button[data-select-project],button[data-select-research],.honor-arrow,.honor-pause{position:relative;isolation:isolate;transition:background .2s,border-color .2s,box-shadow .2s;overflow:hidden}
.tap-wave{position:absolute;pointer-events:none;border:1px solid #d7b873;background:#d7b87322;border-radius:50%;width:var(--wave-size);height:var(--wave-size);left:var(--wave-x);top:var(--wave-y);margin-left:calc(var(--wave-size)/-2);margin-top:calc(var(--wave-size)/-2);z-index:3;animation:tap-wave .65s ease-out both}
@keyframes tap-wave{from{transform:scale(.1);opacity:.8}to{transform:scale(1);opacity:0}}
:where(button,a,[tabindex]):focus-visible{outline:3px solid #b28e45;outline-offset:4px;box-shadow:0 0 0 6px #d3ba7e28}
.button:active,.honor-arrow:active,.honor-pause:active{box-shadow:inset 0 2px 8px #081e2355!important}
@media(hover:hover){.ability.is-visible:hover,.campus-card.is-visible:hover,.research-media-grid .research-video:hover{transform:none!important;border-color:#c9b277;box-shadow:0 0 0 1px #c9b277,0 20px 45px #203b2725}.ability:hover .ability-image img,.campus-card:hover .campus-main img{transform:none!important}.campus-secondary:hover{background:#365c46;border-color:#d8c28b;box-shadow:0 5px 15px #102c2630}.project-tabs button:not([aria-pressed=true]):hover{background:#355640;color:#fff1c9;border-color:#b8a16a}.project-chapters button:hover,.research-tabs button:not([aria-pressed=true]):hover{background:#e0e8d3;border-color:#78965f;box-shadow:0 3px 10px #36562318}.book-controls .button:hover{background:#476548;border-color:#d3bf85}.scholarships button:hover{background:#3a5e43;border-color:#dbc283}.courses>div:hover{background:#edf1e3;padding-inline:10px}.button:hover{transform:none}.video-preview:hover .play,.project-photo:hover .play{background:#31533d;color:#fff0be;box-shadow:0 0 0 12px #c6b87c24;transform:translate(-50%,-50%)}.contact-links a:hover{color:#ffe5a6}}
@media(max-width:1150px){.ability-grid{gap:20px}.ability-copy,.campus-copy{padding:24px}.project-copy{padding:28px}.academic-stats{padding:18px 15px}.academic-stats strong{font-size:33px}}
@media(max-width:800px){.ability-image{height:215px}.ability-copy h3{font-size:20px}.ability-copy p{font-size:13px}.project-copy{padding:25px}.project-tabs{padding:9px;gap:6px}.project-tabs button{padding:10px 12px;font-size:11px}.project-chapters{padding:12px}.research-copy{padding:25px}.campus-card{background:var(--panel)}.academic-layout>div{padding:20px}.academic-stats strong{font-size:35px}.academic-proof{padding:16px}.research-environment{padding:14px 16px}}
@media(max-width:580px){.ability-grid{grid-template-columns:1fr}.ability-image{height:225px}.ability-copy{padding:25px}.ability-copy h3{font-size:22px}.ability-copy p{font-size:14px}.ability-copy .small-label{font-size:10px}.ability-image .image-label{font-size:10px}.project-copy h3{font-size:25px}.project-tabs button{font-size:10px;padding:9px}.project-copy .detail-list li{font-size:13px}.project-copy{padding:23px}.research-tabs button{padding:8px 10px;font-size:11px}.research-toolbar{padding:13px}.research-toolbar .button{font-size:10px}.research-copy p{font-size:13px}.campus-copy{padding:25px}.academic-layout>div{padding:17px}.academic-stats{padding:20px 12px;gap:10px}.academic-stats strong{font-size:30px}.academic-stats small{font-size:12px}.academic-stats span{font-size:10px}.formula{font-size:12px;padding:15px}.thesis-hardware{padding:16px}}
@media(prefers-reduced-motion:reduce){.tap-wave{display:none}.interactive-surface:before{transition:none}.reveal-ready{transform:none!important}.honors-continuous .honor-card{transition:none!important}}
.project-tabs{border:1px solid #5d7457;border-radius:13px;box-shadow:0 8px 24px #1b392a12}
.ability.reveal-ready,.campus-card.reveal-ready{transition:opacity .7s,transform .9s cubic-bezier(.16,1,.3,1),box-shadow .25s,border-color .25s;transition-delay:var(--reveal-delay,0ms)}
@media(prefers-reduced-motion:reduce){.ability.reveal-ready,.campus-card.reveal-ready{transition:none!important}}

/* Cinematic typography: the exact authored copy, not a typewriter or a loading screen. */
.hero-cinematic{position:relative;isolation:isolate}
.hero-cinematic h1{position:relative;z-index:1}
.hero-cinematic h1>.hero-name{font:inherit;letter-spacing:inherit;line-height:1.17;margin:0;display:block;overflow:hidden;width:fit-content;padding:3px 6px 8px 0}
.hero-name i{display:inline-block;font-style:normal;transform:none;opacity:1}
.hero-cinematic h1>.hero-role{position:relative;display:block;width:fit-content;color:#356856;margin-top:10px;overflow:hidden;padding-bottom:5px}
.hero-cinematic .intro-description strong{position:relative;background:linear-gradient(#b59b6760,#b59b6760) left 100% / 100% 2px no-repeat;padding-bottom:3px}
.hero-aura{position:absolute;inset:0;pointer-events:none;z-index:-1;overflow:visible}
.hero-aura:before{content:'';position:absolute;left:-90px;top:8px;width:440px;height:340px;border-radius:50%;background:radial-gradient(ellipse,#d6d9ab42,transparent 68%);opacity:.7}
.hero-aura i{position:absolute;border:1px solid #a68d4930;border-radius:50%;left:-42px;top:22px;width:190px;height:190px;opacity:0}
.hero-aura i:nth-child(2){width:280px;height:280px;top:-23px;left:-87px;border-style:dashed;border-color:#79956738}
.hero-aura i:nth-child(3){width:370px;height:370px;top:-68px;left:-132px;border-color:#97ad7130}
.hero-aura b{position:absolute;left:-15px;top:94px;width:3px;height:100px;background:linear-gradient(transparent,#b6a36c,transparent);opacity:0}
/* Override the older one-size-fits-all fade: this sequence is triggered on actual viewport entry. */
.motion-enabled .intro-copy.hero-cinematic>.eyebrow,.motion-enabled .intro-copy.hero-cinematic h1,.motion-enabled .intro-copy.hero-cinematic .intro-meta,.motion-enabled .intro-copy.hero-cinematic .intro-description,.motion-enabled .intro-copy.hero-cinematic .tags,.motion-enabled .intro-copy.hero-cinematic .actions{animation:none}
@media(prefers-reduced-motion:no-preference){
 .motion-enabled .hero-cinematic.hero-running>.eyebrow{animation:hero-kicker-in .75s .04s both}
 .hero-running .hero-name i{animation:hero-glyph-in 1.25s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.12s + var(--glyph-i)*.15s)}
 .hero-cinematic.hero-running h1>.hero-role{background:linear-gradient(105deg,#356856 25%,#ae9151 46%,#d0b16d 50%,#356856 68%) 120% 0/260% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:hero-role-in 1.15s .38s cubic-bezier(.16,1,.3,1) both,hero-type-shine 1.7s .55s ease-in-out both}
 .motion-enabled .hero-cinematic.hero-running .intro-meta{animation:hero-copy-in .95s .65s cubic-bezier(.16,1,.3,1) both}
 .motion-enabled .hero-cinematic.hero-running .intro-description{animation:hero-copy-in 1.1s .82s cubic-bezier(.16,1,.3,1) both}
 .hero-running .intro-description strong{animation:hero-underline .85s 1.1s both}
 .motion-enabled .hero-cinematic.hero-running .tags{animation:hero-copy-in .85s 1.02s cubic-bezier(.16,1,.3,1) both}
 .motion-enabled .hero-cinematic.hero-running .actions{animation:hero-copy-in .85s 1.17s cubic-bezier(.16,1,.3,1) both}
 .hero-running .hero-aura i{animation:hero-orbit-bloom 1.9s .08s cubic-bezier(.16,1,.3,1) both}
 .hero-running .hero-aura i:nth-child(2){animation-delay:.18s}.hero-running .hero-aura i:nth-child(3){animation-delay:.3s}
 .hero-running .hero-aura b{animation:hero-line-flash 1.6s .15s both}
}
@keyframes hero-glyph-in{0%{transform:translateY(110%) rotate(7deg);opacity:0}65%{opacity:1}100%{transform:none;opacity:1}}
@keyframes hero-role-in{from{clip-path:inset(0 100% 0 0);transform:translateX(-20px);opacity:.3}to{clip-path:inset(0);transform:none;opacity:1}}
@keyframes hero-type-shine{from{background-position:120% 0}to{background-position:-110% 0}}
@keyframes hero-copy-in{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
@keyframes hero-kicker-in{from{transform:translateX(-16px);opacity:0;letter-spacing:4px}to{transform:none;opacity:1}}
@keyframes hero-underline{from{background-size:0% 2px}to{background-size:100% 2px}}
@keyframes hero-orbit-bloom{0%{transform:scale(.55) rotate(-25deg);opacity:0}35%{opacity:.85}100%{transform:scale(1.22) rotate(15deg);opacity:0}}
@keyframes hero-line-flash{0%{transform:scaleY(0);opacity:0}35%{transform:scaleY(1);opacity:.8}100%{transform:scaleY(1.8);opacity:0}}
/* A soft, transparent light. No backdrop filter, cursor replacement, or event interception. */
.cursor-lamp{position:fixed;left:0;top:0;width:0;height:0;z-index:40;pointer-events:none!important;opacity:0;transition:opacity .4s;contain:layout style;will-change:transform}
.cursor-lamp:before{content:'';position:absolute;left:-190px;top:-190px;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#d9ecc31f 0%,#c8dbaa17 22%,#c2dbad0b 44%,transparent 70%),radial-gradient(ellipse at 40% 60%,#e2c98a14,transparent 62%);pointer-events:none}
.cursor-lamp:after{content:'';position:absolute;left:-45px;top:-45px;width:90px;height:90px;background:radial-gradient(circle,#e3edbc0d,transparent 65%);pointer-events:none}
.cursor-lamp.is-lit{opacity:1}
@media(max-width:800px){.hero-aura:before{width:330px;height:300px;left:-65px}.hero-cinematic h1>.hero-role{margin-top:10px}.hero-aura i:nth-child(3){display:none}}
@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.cursor-lamp{display:none!important}}
@media(prefers-reduced-motion:reduce){.hero-running *{animation:none!important}.hero-cinematic h1>.hero-role{color:#356856;background:none}.hero-name i{transform:none;opacity:1}}
@media print{.cursor-lamp,.hero-aura{display:none!important}}
.hero-cinematic h1>.hero-name{color:var(--ink)}
