@font-face{font-family:'DM Serif Display';src:url('assets/dm-serif-display.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}

/* A spacious, cinematic portfolio: luminous mechanics and editorial type. */
:root{--bg:#080e20;--fg:#f2f6ff;--muted:#b9c7dd;--blue:#83eaff;--line:#6f91c43b;--editorial:'DM Serif Display',Georgia,serif}
body{background:radial-gradient(ellipse at 82% 13%,#383b762e,transparent 34%),radial-gradient(ellipse at 10% 32%,#0b879826,transparent 30%),radial-gradient(ellipse at 95% 72%,#45327636,transparent 34%),#080e20}
body::before{opacity:.15}
.site-header{background:#080e20bd;backdrop-filter:blur(20px);border-bottom-color:#9fbfff19}
.nav-shell{height:82px;display:grid;grid-template-columns:1fr auto 1fr;width:min(1480px,calc(100% - 80px))}
.brand{grid-column:2;grid-row:1;font-family:var(--editorial);font-weight:400;font-size:1.35rem;letter-spacing:.16em;gap:0}
.brand-symbol{display:none}
.brand-dot{color:#b4a9ff}
.desktop-nav{grid-column:1;grid-row:1;gap:24px;font-size:.875rem}
.nav-resume{grid-column:3;grid-row:1;justify-self:end;border-radius:40px;padding:8px 20px;min-height:43px;border-color:#b5c3e563;background:transparent}
.section-shell{width:min(1380px,calc(100% - 104px))}
.hero{grid-template-columns:.85fr 1.35fr;column-gap:56px;row-gap:24px;padding-top:55px;align-items:center}
.hero-heading{grid-column:1/-1;position:relative;z-index:2;text-align:center;padding-bottom:0;pointer-events:none}
.hero .hero-heading .eyebrow{justify-content:center;margin:0 0 23px;letter-spacing:.15em;color:#b5d7e7;font-size:.75rem}
.hero-heading h1{margin:0;font-family:var(--display);font-size:clamp(6rem,10.3vw,9.4rem);line-height:.89;letter-spacing:-.07em;font-weight:700}
.hero-heading .name-first{display:block;color:#f6f9ff;background:none;-webkit-text-fill-color:currentColor;text-shadow:0 0 80px #71d6ff20}
.hero-heading .name-second{display:block;font:400 clamp(3.6rem,7.1vw,6.8rem)/1.06 var(--editorial);letter-spacing:-.045em;color:#d4deff;text-shadow:0 0 60px #a994ff20}
.name-period{color:#9deaff;text-shadow:none}
.hero-grid{opacity:.25;mask-image:radial-gradient(ellipse at 60% 70%,#000,transparent 64%);background-size:85px 85px}
.hero-light{width:85%;height:86%;top:20%;right:-5%;background:radial-gradient(ellipse at 65% 40%,#2875a939,#6c47aa16 37%,transparent 70%)}
.hero-beam{display:none}
.hero-copy{align-self:center;max-width:460px;padding:0 0 8px}
.availability{margin-bottom:26px;background:transparent;border:0;padding:0;color:#b6edff;font-size:.75rem;letter-spacing:.06em}
.availability-mark{font-size:1.1rem;display:inline}
.hero-statement{font-size:clamp(1.7rem,2.4vw,2.5rem);line-height:1.16;letter-spacing:-.04em;margin-bottom:20px;max-width:400px}
.hero-statement strong{font-weight:500;color:#eff7ff}
.hero-description{font-size:1rem;line-height:1.8;color:#bdc9e0;margin-bottom:22px}
.candidate-meta{font-size:.875rem;color:#d4dbee;gap:11px 0;margin-bottom:22px}
.candidate-meta strong{color:#a8ebff;font-family:var(--display);font-size:1.5rem}
.hero-skill-line span{padding:0 10px 0 0;border:0;background:transparent;color:#a7bed9;font-size:.875rem}
.hero-skill-line span+span{padding-left:11px;border-left:1px solid #627ca057}
.hero-actions{gap:13px}
.hero-actions .button-primary{clip-path:none;border-radius:3px;background:#a6edff;border-color:#d2f7ff;box-shadow:0 0 32px #7deaff13;color:#091424;min-height:51px}
.hero-actions .button-primary:hover{background:#d1f6ff;box-shadow:0 0 35px #7deaff2a}
.hero-email{font-size:.875rem;color:#b9cfe1}

.hero-visual{--light-x:50%;--light-y:50%;border:0;background:transparent;box-shadow:none;clip-path:none;padding:0;margin:0;align-self:center;max-width:none;isolation:isolate}
.hero-visual::before,.hero-visual::after{display:none}
.visual-topline{border:0;padding:0 0 13px;letter-spacing:.07em;color:#b6d2e3;gap:16px;font-size:.6875rem}
.visual-index{color:#b9acff;font-size:.6875rem;white-space:normal;text-align:right}
.mechanism-tabs{display:flex;align-items:stretch;justify-content:space-between;gap:0;padding:0;border-top:1px solid #789cc33b;border-bottom:1px solid #789cc33b}
.mechanism-tab{flex:1;min-width:0;min-height:44px;padding:9px 6px;border:0;background:transparent;font-size:.8125rem;font-weight:400;color:#b5c1d7;white-space:nowrap}
.mechanism-tab[aria-selected="true"]{color:#c1f5ff;background:linear-gradient(0deg,#68c9fd20,transparent);box-shadow:inset 0 -2px 0 #a0edff}
.mechanism-tab:hover:not(:disabled){color:#fff;background:#9deaff0b}
.mechanism-tab:disabled{opacity:.55;cursor:default}
.model-stage{position:relative;height:clamp(365px,34vw,485px);width:100%;isolation:isolate;background:radial-gradient(ellipse at 50% 51%,#4781be15,#7066bc05 48%,transparent 69%)}
#model-canvas{position:absolute;inset:0;display:block;width:100%;height:100%;outline:0;cursor:grab;opacity:0;transition:opacity .5s ease}
#model-canvas:active{cursor:grabbing}
#model-canvas:focus-visible{outline:1px solid #9ceaff;outline-offset:-6px}
.three-ready #model-canvas{opacity:1}
.model-fallback{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;pointer-events:none;gap:10px}
.model-fallback img{width:95%;height:75%;object-fit:contain;filter:invert(1) sepia(.75) saturate(2) hue-rotate(141deg);mix-blend-mode:screen;opacity:.75}
.model-fallback p{font:400 .8125rem/1.6 var(--display);color:#c6d6e9;max-width:320px;text-align:center}
.three-ready .model-fallback{display:none}
.model-corner{position:absolute;pointer-events:none;width:18px;height:18px;border-color:#82b9df70;border-style:solid;border-width:0;z-index:2}
.corner-a{top:15px;left:0;border-top-width:1px;border-left-width:1px}
.corner-b{bottom:36px;right:0;border-right-width:1px;border-bottom-width:1px}
.model-stage-caption{position:absolute;left:0;right:0;bottom:5px;display:flex;justify-content:space-between;align-items:center;gap:10px;pointer-events:none;font:.6875rem/1.7 var(--mono);color:#a0bfd4}
.model-axis{color:#a19dde;letter-spacing:.16em}
#model-selection{text-align:right}
.model-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:12px;border-top:1px solid #739ac331}
.model-heading h2{margin:0;font:500 clamp(1.55rem,2.3vw,2rem)/1.2 var(--display);letter-spacing:-.04em;color:#eef7ff}
.model-heading>span{font:.625rem/1.6 var(--mono);letter-spacing:.07em;color:#b0a8e6;text-align:right}
.mechanism-description{font:.8125rem/1.65 var(--display);color:#b6c5da;text-align:left;padding:8px 0 14px;margin:0}
.model-toolbar{display:flex;align-items:stretch;gap:7px}
.model-toolbar button{border:1px solid #769dbd4d;background:#23365744;padding:8px 12px;font:.8125rem/1.4 var(--display);min-height:41px;color:#d5e6f4;flex:1}
.model-toolbar button:hover:not(:disabled){border-color:#abefff;background:#8bbce01a}
.model-toolbar button[aria-pressed="true"]{border-color:#8bdcf27a;color:#b5f3ff}
.model-toolbar button:disabled{opacity:.5}
.explode-control{display:grid;grid-template-columns:auto minmax(60px,1fr) 115px;align-items:center;gap:14px;padding:14px 0 0;font-size:.75rem;color:#c7d5e5}
.explode-control input{width:100%;margin:0;accent-color:#adadff;cursor:pointer;min-height:26px}
.explode-control output{font:.6875rem/1.5 var(--mono);color:#b8afeb;text-align:right;white-space:nowrap}
.model-help{margin:8px 0 10px;color:#9cb3ce;font-size:.75rem;text-align:center}
.visual-bottomline{padding:11px 0 9px;border-color:#769dc331;gap:12px;flex-wrap:wrap}
.visual-open{font:.8125rem/1.6 var(--display);color:#c5ebf6;letter-spacing:0}
.motion-toggle{border-color:#768caf45;color:#c1cae3;background:transparent;font-size:.6875rem;padding:5px 9px;min-height:33px}
.model-provenance{color:#94a7c2;margin:0;max-width:590px;font:400 .6875rem/1.6 var(--display)}
.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}
.evidence-band{margin-top:25px;padding:31px 0;background:transparent;border-color:#9cb7d846;gap:12px}
.evidence-band strong{font-family:var(--display);font-size:2rem;color:#daf3ff}
.evidence-band .fact-label{color:#b3bad7;font-size:.6875rem}
.evidence-band>div+div{border-color:#859ccb38}

.section-heading h2,.experience-intro h2,.contact-section h2{font:500 clamp(2.9rem,5.2vw,5rem)/.98 var(--display);letter-spacing:-.055em}
.muted-heading{font-family:var(--editorial);font-weight:400;color:#bcc7f3;letter-spacing:-.025em}
.eyebrow{color:#a7dbed;font-size:.6875rem;letter-spacing:.13em}
.projects-section{padding-top:105px}
.section-heading{align-items:end;gap:35px}
.section-intro{max-width:355px;color:#bbc5dc;font-size:1rem;line-height:1.8}
.project-grid{gap:26px}
.project-card{background:linear-gradient(145deg,#29435d32,#17213736);border-color:#809bb439;box-shadow:none;clip-path:none}
.project-card::before{background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,50%),#5476b523,transparent 72%)}
.project-card:hover,.project-card:focus-within{border-color:#aec7df80;box-shadow:0 14px 50px #03050e36}
.project-top{color:#a8cee1;font-size:.6875rem;letter-spacing:.12em}
.project-number{color:#a59eda}
.project-drawing{background:radial-gradient(ellipse at 50% 45%,#4779a82b,transparent 72%);border-color:#768fac2b;aspect-ratio:1.8}
.project-drawing::before{opacity:.2}
.project-drawing img{filter:invert(1) sepia(.7) saturate(1.8) hue-rotate(143deg);opacity:.92;padding-block:16px 4px}
.project-content h3,.compact-project-body h3{font-family:var(--display);font-weight:500;letter-spacing:-.04em}
.project-role{color:#b3aadf;font-size:.6875rem;letter-spacing:.055em}
.project-evidence{border-color:#7799bf2d}
.project-evidence dd{color:#c9d5e7;font-size:.9375rem;line-height:1.85}
.project-gripper .project-evidence dt{color:#c1b7ff}
.project-link{border-color:#708ca930;color:#c9ecf5;background:transparent}
.project-link:hover{background:#578ba418;color:#fff}
.tags span{border-color:#758aa94d;color:#bdd0e1}
.design-section{margin-top:100px;padding-block:85px;background:radial-gradient(ellipse at 80% 10%,#514b7c24,transparent 50%),#1b29343b;border-color:#91acd62e}
.gallery-intro{color:#b9cadd;font-size:1rem;max-width:620px}
.design-gallery{gap:15px}
.design-entry{min-width:0;border:1px solid #7d98b444;background:#20324836;transition:transform .3s,border-color .3s}
.design-entry:hover{transform:translateY(-5px);border-color:#b9dce28c}
.design-entry .design-tile{border:0;width:100%;background:transparent;padding:0;transform:none;box-shadow:none;display:block}
.design-entry .design-tile:hover{transform:none;box-shadow:none}
.design-image{background:#bfd5e7}
.design-caption{padding:16px 12px 8px;gap:7px;color:#dceaf6;font-size:.625rem;letter-spacing:.025em}
.design-3d-link{width:100%;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:8px 12px 14px;border:0;background:transparent;color:#b2eefe;min-height:41px;font-size:.8125rem}
.design-3d-link:hover:not(:disabled){color:#fff;background:#5e90ad12}
.design-3d-link:disabled{opacity:.4;cursor:default}
.experience-section{padding-top:115px;padding-bottom:105px}
.timeline-item{border-color:#829bbb3b}
.timeline-node{background:#b6b0ff;box-shadow:0 0 16px #8e78d93d}
.timeline-meta{color:#a6a0d4}
.timeline h3{color:#e2edfa;font-family:var(--display)}
.about-section{background:linear-gradient(120deg,#18314144,#34315c2b);border-color:#728ca231;padding-block:95px}
.about-lead{color:#dcecf7}
.community-role{border-left:2px solid #b8b0fc;padding:4px 0 2px 23px;margin:28px 0 30px}
.community-role .eyebrow{font-size:.6875rem;color:#beb5ef;margin-bottom:12px}
.community-role h3{font:500 1.4rem/1.3 var(--display);margin:0 0 6px;color:#ecf5ff;letter-spacing:-.03em}
.community-role .community-name{font-size:1rem;color:#d7e7f5;margin-bottom:2px}
.community-campus{display:block;font-size:.8125rem;color:#b7b5df;margin-bottom:14px}
.community-role p:last-child{font-size:.9375rem;margin:0;color:#bccde0}
.toolbox{background:#21364926;border-color:#849cc847;box-shadow:none}
.toolbox-title{color:#c8c8ff;border-color:#9aaedb31}
.skill-group{border-color:#8196bf30}
.skill-group h3{color:#d9eaf9}
.education-block{border-color:#8fa8c03a}
.recognition{border-color:#a0b5dc39}
.contact-section{padding-top:115px;padding-bottom:115px}
.contact-section h2{font-size:clamp(3.7rem,7.3vw,7rem)}
.contact-section h2>span{font:400 1.1em/.98 var(--editorial);color:#bad3fa;letter-spacing:-.035em}
.contact-link-value{color:#d9eaff}
.contact-actions .button{background:#b1edff;border-color:#e2f9ff;clip-path:none;color:#071629;box-shadow:none}
.site-footer{border-color:#99b4d039;color:#a9b9cf}
.project-dialog,.gallery-dialog{background:#101c30;border-color:#94b7db5c;color:#e8f2fb}
.project-dialog::backdrop,.gallery-dialog::backdrop{background:#020613de;backdrop-filter:blur(10px)}

@media(min-width:1550px){.hero{padding-top:68px;column-gap:90px}.hero-heading{padding-bottom:12px}.hero-copy{max-width:475px}.model-stage{height:510px}}
@media(max-width:1100px){
  .section-shell{width:calc(100% - 72px)}
  .nav-shell{width:calc(100% - 64px)}
  .desktop-nav{gap:16px;font-size:.8125rem}
  .hero{grid-template-columns:.9fr 1.2fr;column-gap:30px;padding-top:48px;row-gap:32px}
  .hero-heading h1{font-size:11.5vw}.hero-heading .name-second{font-size:8.3vw}
  .hero-statement{font-size:2rem}.availability{font-size:.6875rem}
  .candidate-meta{gap:10px 12px}.candidate-meta>span+span{margin-left:0;padding-left:0;border:0}
  .hero-visual{margin:0;padding:0}
  .model-stage{height:400px}
  .mechanism-tab{font-size:.75rem;padding-inline:4px}
  .visual-topline{font-size:.625rem}.visual-index{font-size:.625rem}
  .hero-skill-line{row-gap:9px}.hero-skill-line span+span{padding-left:0;border:0}
  .hero-skill-line span{font-size:.8125rem;padding-right:10px}
  .model-heading h2{font-size:1.55rem}.model-heading>span{font-size:.5625rem}
  .explode-control{grid-template-columns:auto minmax(35px,1fr) 99px;gap:8px}
  .model-toolbar button{padding-inline:6px;font-size:.75rem}
  .project-grid{gap:20px}.project-drawing{aspect-ratio:1.6}
  .design-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}.design-caption{font-size:.6875rem}
}
@media(max-width:800px){
  .section-shell{width:calc(100% - 48px)}.nav-shell{width:calc(100% - 40px);height:72px}
  .desktop-nav{gap:14px}.desktop-nav a[href="#experience"]{display:none}
  .hero{column-gap:23px;grid-template-columns:.86fr 1.14fr}
  .hero .hero-heading .eyebrow{font-size:.625rem;letter-spacing:.08em}
  .hero-heading h1{font-size:12vw}.hero-heading .name-second{font-size:8.7vw}
  .hero-copy{padding:0}.hero-description{font-size:.9375rem;line-height:1.75}
  .hero-statement{font-size:1.8rem}.availability{font-size:.625rem;letter-spacing:.025em;gap:7px;margin-bottom:19px}
  .hero-actions .button{font-size:.8125rem;padding-inline:11px;gap:9px}.hero-email{font-size:.75rem}
  .hero-visual{align-self:center}.model-stage{height:355px}
  .mechanism-tab{font-size:.6875rem;padding-inline:3px;min-height:43px}
  .model-heading{gap:8px}.model-heading h2{font-size:1.35rem}.model-heading>span{max-width:67px}
  .mechanism-description{font-size:.75rem;line-height:1.6}
  .model-toolbar{gap:4px}.model-toolbar button{font-size:.6875rem}
  .explode-control{grid-template-columns:auto 1fr;gap:1px 14px;padding-top:12px}
  .explode-control input{grid-column:2;grid-row:1 / span 2;min-height:32px}.explode-control output{text-align:left;font-size:.625rem}
  .model-help{font-size:.6875rem}.model-provenance{font-size:.625rem}
  .model-stage-caption{font-size:.625rem}.model-axis{display:none}.model-stage-caption{justify-content:center}
  .visual-open{font-size:.75rem}.motion-toggle{font-size:.625rem;padding:5px 7px}
  .evidence-band{grid-template-columns:1fr 1fr;padding-block:26px;gap:22px 10px}.evidence-band strong{font-size:1.85rem}
  .section-heading h2,.experience-intro h2{font-size:3.1rem}.section-intro{max-width:270px;font-size:.9375rem}
  .design-section{margin-top:70px;padding-block:60px}.experience-section{padding-block:85px}.about-section{padding-block:75px}
}
@media(max-width:600px){
  .nav-shell{display:flex;justify-content:space-between;height:70px}.brand{font-size:1.2rem}.desktop-nav{display:none}.nav-resume{font-size:.8125rem;gap:16px;padding:7px 17px}
  .section-shell{width:calc(100% - 40px)}
  .hero{grid-template-columns:1fr;gap:0;padding-top:39px}
  .hero-heading{grid-row:1;padding-bottom:26px}
  .hero .hero-heading .eyebrow{font-size:.5625rem;letter-spacing:.065em;max-width:none;line-height:1.9;margin:0 0 20px}
  .hero-heading h1{font-size:22vw;line-height:.92;letter-spacing:-.065em}.hero-heading .name-second{font-size:10.8vw;line-height:1.12;letter-spacing:-.04em}
  .hero-copy{grid-row:3;max-width:none;padding-top:38px}
  .hero-visual{grid-row:2;margin:0;max-width:none;width:100%;padding:0}
  .visual-topline{padding-block:0 9px;font-size:.5625rem;gap:10px}.visual-index{font-size:.5625rem}
  .mechanism-tab{font-size:.6875rem;min-height:43px;padding-inline:3px}
  .model-stage{height:365px;height:clamp(310px,88vw,415px)}
  .model-heading h2{font-size:1.65rem}.model-heading>span{font-size:.5625rem;max-width:none}
  .mechanism-description{font-size:.75rem;padding:8px 0 13px;line-height:1.6}
  .model-toolbar button{font-size:.75rem;min-height:42px;padding-inline:6px}
  .explode-control{grid-template-columns:auto minmax(50px,1fr) 100px;gap:10px;padding-top:12px}
  .explode-control input{grid-column:auto;grid-row:auto}.explode-control output{text-align:right;font-size:.625rem}
  .model-help{font-size:.6875rem;margin-block:7px 8px}.model-provenance{font-size:.625rem;line-height:1.6}
  .visual-bottomline{padding:9px 0 8px}.visual-open{font-size:.8125rem}.motion-toggle{font-size:.625rem}
  .model-stage-caption{justify-content:space-between;font-size:.5625rem}.model-axis{display:block}
  .availability{font-size:.6875rem;letter-spacing:.025em;padding:0;border:0;margin:0 0 19px;gap:8px}
  .hero-statement{font-size:2.3rem;max-width:370px;margin-bottom:17px}.hero-description{font-size:1rem;line-height:1.8}
  .candidate-meta{font-size:.8125rem;gap:9px 13px}.candidate-meta strong{font-size:1.4rem}
  .hero-skill-line{margin-bottom:25px;gap:7px 11px}.hero-skill-line span{font-size:.8125rem;padding:0}
  .hero-actions{gap:12px}.hero-actions .button{font-size:.8125rem}.hero-email{font-size:.8125rem;margin-top:18px}
  .evidence-band{grid-row:4;margin-top:35px;gap:22px 6px}.evidence-band strong{font-size:1.9rem}.evidence-band strong>span{font-size:.8125rem}.evidence-band .fact-label{font-size:.625rem;line-height:1.7}
  .evidence-band>div{padding-left:8px}.evidence-band>div+div{padding-left:14px}.evidence-band>div:nth-child(3){border-left:0;padding-left:8px}
  .projects-section{padding-top:75px}.section-heading{gap:25px;display:block}.section-heading h2,.experience-intro h2{font-size:3rem;line-height:1.02}.section-intro{max-width:360px;margin-top:26px;font-size:1rem}
  .project-grid{gap:23px}.project-drawing{aspect-ratio:1.65}.project-content h3{font-size:1.8rem}.project-evidence dd{font-size:.9375rem}
  .design-section{padding-block:65px;margin-top:65px}.design-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.design-entry:last-child{grid-column:1/-1;width:calc(50% - 6px)}
  .design-caption{font-size:.5625rem;padding:12px 9px 6px;gap:5px}.design-3d-link{font-size:.75rem;padding:7px 9px 12px;min-height:41px}
  .gallery-intro{font-size:.9375rem;line-height:1.8}.compact-heading .inline-link{display:inline-flex;margin-top:24px}
  .experience-section{padding-block:75px}.about-section{padding-block:70px}.community-role{padding-left:19px}
  .community-role h3{font-size:1.35rem}.community-role .eyebrow{font-size:.625rem}.community-campus{font-size:.75rem}
  .contact-section{padding-block:75px 65px}.contact-section h2{font-size:3.9rem}.contact-link-value{font-size:1rem}
  .mobile-dock{background:#111d34eb;border-color:#a1bed44a;backdrop-filter:blur(20px)}.mobile-dock .dock-resume{color:#b7eeff}
}
@media(prefers-reduced-motion:reduce){#model-canvas,.design-entry,.project-card{transition:none}}
