@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/manrope-vietnamese-wght-normal-usUDDRr7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/build/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/build/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/build/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/build/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/build/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/build/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/build/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/build/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/build/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/build/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Manrope Variable,sans-serif;color:#e6ede9;background:#080f15;font-synthesis:none;font-weight:400;--muted:#8eaaa9;--line:rgba(173,214,205,.15);--accent:#c6f3d6;--mono:"IBM Plex Mono",monospace;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button,input,a{font:inherit}button{color:inherit;cursor:pointer}button{border:0;background:none}a{color:inherit;text-decoration:none}button:disabled{cursor:wait;opacity:.45}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:6px}button:focus:not(:focus-visible){outline:none}::selection{background:#c6f3d6;color:#102122}.skip-link{position:fixed;left:20px;top:-80px;z-index:100;padding:14px;background:var(--accent);color:#102122}.skip-link:focus{top:12px}.site-header{height:105px;padding:0 4.25%;position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#080f15d9,#080f1540)}.wordmark{display:flex;gap:13px;align-items:center;padding:0;text-align:left;font-size:12px;letter-spacing:2.1px;font-weight:700}.brand-symbol{height:42px;width:42px;display:grid;place-items:center;border:1px solid #68837e;border-radius:11px;color:var(--accent)}.wordmark-sub{display:block;color:#88a09f;font-family:var(--mono);font-size:8px;letter-spacing:2.1px;margin-top:5px;font-weight:400}.site-header nav{display:flex;align-items:center;gap:31px;font-size:12px}.site-header nav button{padding:10px 0;color:#b8c7c7}.site-header nav button:hover{color:#fff}.site-header nav .header-contact{display:flex;align-items:center;gap:24px;border:1px solid #53766c;border-radius:3px;padding:12px 17px;color:var(--accent);margin-left:3px}.experience{position:relative;height:100svh;min-height:760px;overflow:hidden}.world,.world-shade,.ambient-grain,.hotspots{position:absolute;inset:0}.world canvas{width:100%;height:100%;display:block;touch-action:none}.world-shade{pointer-events:none;background:linear-gradient(90deg,rgba(7,15,22,.98) 0%,rgba(7,15,22,.9) 22%,rgba(7,15,22,.3) 47%,transparent 65%),linear-gradient(0deg,rgba(7,15,22,.94),transparent 35%,transparent 85%,rgba(7,15,22,.5))}.ambient-grain{pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.4' filter='url(%23noise)'/%3E%3C/svg%3E")}.status-dot{height:5px;width:5px;border-radius:100%;background:#b2e8c8;display:inline-block;flex-shrink:0}.intro-copy{position:absolute;z-index:3;left:4.25%;top:27%;max-width:395px;width:32%}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:1.4px;color:#a2c6b7;line-height:1.7}.intro-copy .eyebrow{display:flex;align-items:center;gap:10px;font-size:8px;letter-spacing:1.5px;margin:0 0 24px}.tiny-cross{font-size:18px;font-weight:300;color:var(--accent)}h1{font-size:clamp(32px,3.4vw,61px);letter-spacing:-2.2px;line-height:1.17;font-weight:450;margin:0 0 23px}h1>span{display:block}.text-soft{color:var(--accent)}.intro-description{font-size:13px;line-height:1.95;color:#9fb1b5;max-width:355px;margin:0 0 24px}.skill-tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:31px}.skill-tags span{font-family:var(--mono);font-size:7px;letter-spacing:.6px;border:1px solid #415554;border-radius:2px;padding:6px 7px;color:#adc2bb;background:#10212580}.primary-actions{display:flex;align-items:center;gap:22px}.primary-btn{background:var(--accent);color:#11271e;border:1px solid var(--accent);padding:13px 16px;border-radius:3px;font-size:11px;font-weight:650;display:inline-flex;align-items:center;gap:22px;white-space:nowrap;transition:background .2s,transform .2s}.primary-btn:hover{background:#e0ffe7;transform:translateY(-2px)}.terminal-copy{top:24%}.terminal-copy h1{font-size:clamp(36px,3.6vw,64px)}.terminal-person{display:flex;align-items:center;gap:19px;margin-bottom:21px}.terminal-portrait{width:90px;height:90px;object-fit:cover;object-position:center 30%;border-radius:5px;border:1px solid #769389;filter:saturate(.7)}.portrait-label{font-family:var(--mono);font-size:10px;letter-spacing:1.1px;color:var(--accent);line-height:2.2}.portrait-label>span{font-size:7px;color:#829b99}.terminal-copy .eyebrow{margin-bottom:17px}.terminal-copy .intro-description{margin-bottom:16px}.terminal-copy .skill-tags{margin-bottom:22px}.terminal-email{font-family:var(--mono);font-size:13px;display:inline-flex;gap:12px;align-items:center;color:#9bb4ae;margin-top:17px}.scene-label{position:absolute;right:4.3%;top:188px;display:flex;gap:10px;align-items:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:2px;line-height:1.8;color:#d0ddd7}.scene-label>span>span{display:block;font-size:7px;letter-spacing:1px;color:#7b9698}.scene-label-marker{width:9px;height:9px;border:1px solid #95c5b4;margin-top:5px;transform:rotate(45deg)}.hotspots{z-index:2;pointer-events:none}.pin-position{position:absolute;top:0;left:0;visibility:hidden}.hotspot{position:absolute;display:flex;align-items:center;gap:9px;transform:translate(-50%,-50%);pointer-events:auto;white-space:nowrap;padding:6px}.hotspot>span:first-child{display:grid;place-items:center;flex-shrink:0;width:26px;height:26px;border-radius:50%;border:1px solid rgba(202,242,224,.65);font-family:var(--mono);font-size:8px;background:#0a181ebf;color:#d7fbe4;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);transition:.2s}.hotspot-name{display:flex;gap:10px;align-items:center;background:#09181dd9;border:1px solid #37514d;padding:7px 9px;border-radius:3px;font-size:9px;opacity:0;transform:translate(-4px);transition:.2s}.hotspot:hover .hotspot-name,.hotspot:focus-visible .hotspot-name{opacity:1;transform:none}.hotspot:hover>span:first-child,.hotspot.selected>span:first-child{color:#142920;background:var(--accent);border-color:var(--accent)}.scene-tools{position:absolute;right:4.25%;bottom:226px;z-index:4;display:flex;flex-direction:column;gap:8px}.scene-tools button{width:35px;height:35px;border:1px solid #405554;border-radius:3px;background:#09181d9e;display:grid;place-items:center;color:#b5cac3;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.scene-tools button:hover{background:#223d3d;border-color:#b5cac3}.bottom-dock{position:absolute;bottom:23px;left:4.25%;right:4.25%;z-index:5}.tour-toolbar{display:flex;justify-content:space-between;align-items:center;margin:0 0 16px;font-family:var(--mono);font-size:8px;color:#aec3bb;letter-spacing:1.3px}.tour-state{display:flex;align-items:center;gap:11px}.tour-time{color:#799497;margin-left:17px;font-size:8px;letter-spacing:1px}.tour-controls{display:flex;gap:26px}.tour-controls button{padding:5px 0;display:flex;align-items:center;gap:7px;font-size:9px;color:#9eb2b0;letter-spacing:0}.tour-controls button:hover{color:#fff}.flight-track{height:1px;background:#2f4445;margin-bottom:12px}.flight-fill{display:block;width:100%;background:#a7d8bd;height:100%}.explore-mode .flight-fill{opacity:.3}.zone-nav{display:flex;background:#0c181dc7;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #354b4b;border-radius:5px;padding:7px}.zone-nav button{display:flex;align-items:center;gap:12px;position:relative;flex:1;padding:17px 16px;color:#93aaa8;font-size:11px;border-radius:3px;text-align:left;white-space:nowrap;transition:.2s}.zone-nav button[aria-current]{color:#d3f1df}.zone-nav button:hover{background:#1c3033;color:#d3f1df}.zone-number{font-family:var(--mono);font-size:8px;color:#648981;margin-right:7px}.zone-nav button[aria-current] .zone-number{color:var(--accent)}.zone-arrow{margin-left:auto;opacity:.5}.dock-footer{display:flex;justify-content:space-between;margin-top:17px;font-family:var(--mono);font-size:7px;color:#73908e;letter-spacing:1.5px}.dock-footer button{display:flex;align-items:center;gap:7px;color:#98adaa;font-family:var(--mono);font-size:8px;letter-spacing:0;padding:0}.loading-badge{position:absolute;z-index:8;left:64%;top:46%;transform:translate(-50%,-50%);border:1px solid #42635b;border-radius:8px;background:#0a161df0;padding:22px 26px;font-size:17px;font-weight:500;display:flex;gap:14px;flex-wrap:wrap;width:330px;align-items:center}.loading-note{font-size:14px;color:#8ea8a4;line-height:1.6;width:100%}.detail-dialog{position:fixed;inset:0 0 0 auto;margin:0;width:620px;max-width:100%;height:100%;max-height:100%;background:#101b22;color:#dbe7e1;border:0;border-left:1px solid #3b5552;padding:0;overflow:auto;overscroll-behavior:contain}.detail-dialog::backdrop{background:#030a10a6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.detail-dialog[open]{animation:panel-in .3s ease}.dialog-inner{padding:30px 45px;min-height:100%;display:flex;flex-direction:column}.dialog-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}.close-button{display:grid;place-items:center;width:34px;height:34px;border:1px solid #405750;border-radius:50%}.close-button:hover{background:#29433b}.detail-dialog h2{font-size:42px;font-weight:450;letter-spacing:-1.6px;margin:0 0 12px}.dialog-lede{font-size:14px;color:#a1b8b2;margin:0 0 34px;line-height:1.8}.timeline{margin:18px 0}.career-entry{display:flex;gap:22px;border-top:1px solid var(--line);padding:28px 0 23px}.timeline-index{font-family:var(--mono);color:#7ba08e;font-size:12px;line-height:1.75}.career-entry .eyebrow{margin:0 0 10px;font-size:12px;letter-spacing:1.2px}.career-entry h3,.research-content h3{font-size:23px;font-weight:450;letter-spacing:-.6px;margin:0 0 8px}.organization{color:var(--accent)!important;font-size:14px!important;margin:0 0 20px!important}.career-entry p:not(.eyebrow),.research-content>p:not(.eyebrow):not(.caption),.publication-intro,.contact-content>p:not(.eyebrow){font-size:15px;line-height:1.75;color:#a3b6b7}.career-entry ul,.research-content ul{list-style:none;padding:0;margin:20px 0 0}.career-entry li,.research-content li{font-size:14px;line-height:1.7;color:#a6bdb6;position:relative;padding-left:20px;margin-bottom:8px}.career-entry li:before,.research-content li:before{content:"↗";position:absolute;left:0;top:0;color:#77a790}.source-link{display:inline-flex;align-items:center;gap:13px;color:var(--accent);font-size:14px;margin:8px 0 35px}.dialog-bottom{margin-top:auto;padding-top:35px;display:flex;justify-content:space-between;border-top:1px solid var(--line);font-family:var(--mono);font-size:10px;letter-spacing:1px;color:#8aa79d}.dialog-bottom a{display:flex;align-items:center;gap:12px}.university-mark{display:flex;gap:18px;align-items:center;margin:28px 0 35px;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:#decba3;font-family:var(--mono);font-size:10px;line-height:1.8;letter-spacing:2px}.research-visual{height:95px;margin-top:35px;display:flex;align-items:center;gap:5px;padding:0 15px;border:1px solid #2e4946}.research-visual span{background:#75b19f;opacity:.6;flex:1}.caption{font-family:var(--mono);font-size:10px;letter-spacing:1px;color:#738e88;margin:13px 0 35px}.contact-portrait{height:155px;width:155px;object-fit:cover;border-radius:5px;margin:20px 0 25px;filter:saturate(.7)}.contact-content h3{font-size:27px;letter-spacing:-.8px;font-weight:450;margin:12px 0}.email-link{font-size:27px;color:var(--accent);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #6e9c8a;padding:19px 0 18px;margin-bottom:25px}.social-links{display:flex;gap:30px;margin:10px 0 50px}.social-links a{display:flex;align-items:center;gap:10px;font-size:14px}.social-links a:hover{color:var(--accent)}.guide-content{font-size:14px;color:#afc2bb;line-height:1.9}.guide-content>div{display:flex;gap:20px;align-items:flex-start;margin:23px 0}.guide-content>div svg{flex-shrink:0;margin-top:5px;color:var(--accent);width:20px}.guide-content p{margin:0 0 22px}.guide-content b{display:block;color:#dbe9df;font-weight:500}.guide-note{font-size:12px;padding:20px 0;border-top:1px solid var(--line)}.text-button{display:inline-flex;align-items:center;gap:12px;font-size:14px;color:var(--accent);padding:10px 0}.guide-content .text-button{margin-bottom:30px}.simple-mode .site-header{position:relative;background:#0b161e}.plain-content{max-width:1050px;margin:auto;padding:65px 40px}.plain-hero{display:flex;gap:50px;align-items:center;padding-bottom:90px}.plain-hero>div{flex:1}.plain-hero h1{font-size:49px}.plain-hero h1 em{font-style:normal;color:var(--accent)}.plain-hero p:not(.eyebrow){font-size:17px;line-height:1.8;color:#acbfba;max-width:460px}.plain-hero .primary-btn{margin-top:16px}.plain-portrait{width:250px;height:310px;object-fit:cover;object-position:center;border-radius:7px;filter:saturate(.7)}.plain-section{border-top:1px solid var(--line);padding:40px 0}.plain-section h2{font-size:30px;font-weight:450;letter-spacing:-.9px}.plain-section .timeline,.plain-section .research-content,.plain-section .contact-content{max-width:720px}.plain-footer{display:flex;align-items:center;justify-content:space-between;padding-top:40px;font-size:12px;color:#95b0a3}.fallback-notice{font-size:14px;padding:18px;border:1px solid #566f64;color:#bddacc;margin-bottom:40px}.portrait-fallback{display:grid;place-items:center;background:#20382e;color:var(--accent);font-size:28px}@keyframes panel-in{0%{opacity:.6;transform:translate(25px)}to{opacity:1;transform:none}}@media(min-width:1700px){.intro-copy{max-width:460px}.intro-description{font-size:15px;max-width:410px}.intro-copy .eyebrow{font-size:10px}.skill-tags span{font-size:8px}.primary-btn{font-size:12px}.zone-nav button{font-size:13px;padding:21px}.terminal-portrait{width:110px;height:110px}.terminal-copy{top:25%}}@media(max-width:1100px)and (min-width:701px){.intro-copy{width:36%;top:27%}.terminal-copy{top:23%}h1{font-size:37px}.intro-description{font-size:12px}.primary-actions{gap:14px}.primary-btn{padding:11px;gap:10px;font-size:10px}.zone-nav button{padding:15px 9px;gap:7px;font-size:9px}.zone-number{margin-right:1px}.zone-arrow{display:none}.site-header{height:90px}.scene-label{top:158px}.terminal-copy h1{font-size:40px}}@media(max-width:700px){.site-header{height:79px;padding:0 23px}.wordmark{font-size:9px;letter-spacing:1.5px;gap:9px}.brand-symbol{width:33px;height:33px;border-radius:9px}.brand-symbol svg{width:21px}.wordmark-sub{font-size:6px;letter-spacing:1.3px}.site-header nav{gap:16px;font-size:10px}.site-header nav .header-contact{padding:8px 10px;gap:7px;margin:0}.experience{min-height:850px;height:100svh;max-height:1100px}.world{bottom:24%;top:40px}.world-shade{background:linear-gradient(0deg,#08121b 13%,rgba(8,18,27,.94) 29%,transparent 53%,transparent 83%,rgba(8,18,27,.5))}.scene-label{right:24px;top:138px;font-size:8px;letter-spacing:1px}.scene-label>span>span{font-size:5px}.scene-label-marker{width:6px;height:6px}.intro-copy{inset:auto 25px 207px;width:auto;max-width:none}.intro-copy .eyebrow{font-size:7px;letter-spacing:1px;margin-bottom:10px;gap:8px}.intro-copy h1{font-size:33px;letter-spacing:-1.3px;margin-bottom:13px;line-height:1.16}.intro-copy h1>span{display:inline}.intro-copy h1>span+span:before{content:" "}.intro-description{font-size:11px;line-height:1.8;max-width:430px;margin-bottom:15px}.skill-tags{gap:5px;margin-bottom:17px}.skill-tags span{font-size:6px;padding:5px 6px}.primary-actions{gap:25px}.primary-btn{font-size:10px;padding:11px 13px;gap:20px}.terminal-person{position:absolute;right:0;top:0;margin:0}.terminal-portrait{width:58px;height:58px;border-radius:4px}.portrait-label{display:none}.terminal-copy .eyebrow{font-size:6px;margin-bottom:12px;max-width:70%}.terminal-copy h1{font-size:35px;max-width:80%;margin-bottom:14px}.terminal-copy .intro-description{margin-bottom:14px}.terminal-copy .skill-tags{margin-bottom:16px}.terminal-email{font-size:12px;margin-top:12px}.scene-tools{bottom:auto;top:185px;right:23px;gap:6px}.scene-tools button{height:30px;width:30px}.scene-tools button svg{width:14px}.bottom-dock{left:20px;right:20px;bottom:20px}.tour-toolbar{font-size:6px;letter-spacing:.6px;margin-bottom:12px;gap:6px}.tour-state{gap:7px;flex-wrap:wrap}.tour-time{margin-left:0;font-size:6px;letter-spacing:.3px}.tour-controls{gap:12px}.tour-controls button{font-size:8px;gap:4px;white-space:nowrap}.tour-controls button svg{width:11px}.zone-nav{padding:5px}.zone-nav button{padding:13px 3px 12px;flex-direction:column;gap:7px;justify-content:center;font-size:7px;white-space:normal;text-align:center}.zone-number{font-size:6px;margin:0}.zone-nav button svg{width:16px;height:16px}.zone-nav button .zone-arrow{display:none}.dock-footer{font-size:5px;letter-spacing:.5px;margin-top:13px;align-items:center}.dock-footer button{font-size:6px;gap:3px}.hotspot-name{display:none}.hotspot>span:first-child{height:23px;width:23px;font-size:7px}.loading-badge{left:50%;top:31%;font-size:15px;padding:18px;width:280px}.loading-note{font-size:13px}.detail-dialog{width:100%}.dialog-inner{padding:24px}.detail-dialog h2{font-size:35px}.dialog-top{margin-bottom:25px}.career-entry{gap:14px}.career-entry h3{font-size:21px}.contact-portrait{height:125px;width:125px}.email-link{font-size:24px}.plain-content{padding:40px 25px}.plain-hero{display:block;padding-bottom:45px}.plain-hero h1{font-size:37px}.plain-portrait{margin-top:35px;width:150px;height:180px}.plain-hero p:not(.eyebrow){font-size:15px}.plain-section h2{font-size:26px}.plain-footer{gap:20px;font-size:11px}}@media(max-height:800px)and (min-width:701px){.experience{min-height:690px}.intro-copy{top:25%}.intro-copy .eyebrow{margin-bottom:14px}h1{font-size:39px;margin-bottom:16px}.intro-description{font-size:12px;margin-bottom:19px}.skill-tags{margin-bottom:23px}.terminal-copy{top:23%}.terminal-person{margin-bottom:12px}.terminal-portrait{width:65px;height:65px}.terminal-copy h1{font-size:41px}.terminal-copy .intro-description{font-size:11px}.scene-tools{bottom:203px}.zone-nav button{padding:13px 16px}.bottom-dock{bottom:18px}.scene-label{top:174px}}@media(min-width:1101px)and (min-height:801px){.intro-copy{max-width:500px;width:34%}.intro-copy .eyebrow{font-size:11px;letter-spacing:1.8px;margin-bottom:26px}.intro-copy h1{font-size:clamp(44px,3.9vw,72px);letter-spacing:-2.4px}.terminal-copy h1{font-size:clamp(46px,4vw,74px)}.intro-description{font-size:16px;line-height:1.85;max-width:460px;margin-bottom:26px}.skill-tags span{font-size:10px;letter-spacing:.8px;padding:7px 10px}.intro-copy .primary-btn{font-size:14px;padding:15px 20px}.portrait-label{font-size:12px}.portrait-label>span{font-size:9px}.terminal-portrait{width:112px;height:112px}.terminal-email{font-size:16px}}@media(min-width:1101px)and (min-height:801px){.intro-copy.education-copy h1{font-size:clamp(44px,3.6vw,56px)}}@media(min-width:1700px)and (min-height:801px){.intro-copy{max-width:540px}.intro-description{font-size:17px;max-width:500px}.intro-copy .eyebrow{font-size:12px}.skill-tags span{font-size:11px}.intro-copy .primary-btn{font-size:15px}.terminal-portrait{width:124px;height:124px}.terminal-email{font-size:17px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.university-mark{text-transform:uppercase}.detail-dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}.quality-content{color:#afc2bb;font-size:14px;line-height:1.8;margin-top:24px}.quality-content label{display:block;margin:25px 0 10px;color:#dbe9df}.quality-content select{display:block;width:100%;min-height:48px;padding:12px;border:1px solid #54786a;border-radius:4px;background:#11252a;color:#e0f0e6;font:inherit;font-size:16px}.quality-content select:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.quality-content .guide-note{margin-top:28px}.app{--header-height:105px;--zone-height:56px}.app:not(.simple-mode) .site-header{position:fixed;background:#080f15f0;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.zone-nav{position:fixed;top:var(--header-height);left:0;right:0;z-index:10;height:var(--zone-height);--pad-x:4.25%;padding:4px var(--pad-x);border:0;border-bottom:1px solid #354b4b;border-radius:0;background:#0c181df2}.zone-nav button{padding:10px 16px;min-width:0}.scene-label{top:calc(var(--header-height) + var(--zone-height) + 62px)}.intro-copy,.terminal-copy{top:max(225px,27%)}@media(min-width:701px)and (max-width:1100px){.app{--header-height:90px}.zone-nav button{padding:10px 9px}}@media(max-width:700px){.app{--header-height:79px;--zone-height:62px}.zone-nav{--pad-x:12px}.zone-nav button{padding:5px 2px;gap:4px;font-size:8px;line-height:1.2}.zone-nav .zone-number{display:none}.zone-nav button svg{width:15px;height:15px;flex-shrink:0}.scene-label{top:184px}.scene-tools{top:220px}.intro-copy,.terminal-copy{top:auto;bottom:110px}.world{top:110px;bottom:14%}}@media(max-width:700px){.experience{height:100svh;min-height:640px;max-height:none}.world{top:110px;bottom:80px}.world-shade{background:linear-gradient(0deg,#08121b 0%,rgba(8,18,27,.92) 12%,rgba(8,18,27,.65) 23%,transparent 40%)}.intro-copy,.terminal-copy{left:18px;right:18px;bottom:calc(60px + max(6px,env(safe-area-inset-bottom)))}.intro-copy .eyebrow,.intro-copy .skill-tags{display:none}.intro-copy h1,.terminal-copy h1{font-size:30px;line-height:1.12;letter-spacing:-1px;margin:0 0 8px}.intro-copy .intro-description{font-size:14px;line-height:1.5;margin:0 0 10px;max-width:none}.intro-copy .primary-actions{gap:22px}.intro-copy .primary-btn{min-height:40px;font-size:11px;padding:9px 12px}.terminal-person{top:-4px}.terminal-portrait{height:34px;width:34px}.terminal-copy h1{max-width:calc(100% - 48px);min-height:30px}.terminal-email{display:none}.bottom-dock{left:18px;right:18px;bottom:max(6px,env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:12px}.flight-track{grid-column:1/-1;grid-row:1;margin:0}.tour-toolbar{grid-column:1;grid-row:2;margin:0;min-height:44px;gap:8px}.tour-controls{gap:14px}.tour-controls button{min-height:44px;font-size:9px}.tour-time,.tour-state{display:none}.dock-footer{grid-column:2;grid-row:2;margin:0}.dock-footer>span{display:none}.dock-footer button{min-height:44px;font-size:8px}.scene-label{display:none}.scene-tools{top:185px;right:18px}}.site-header nav{gap:12px}.site-header .header-social{display:grid;place-items:center;width:40px;height:40px;color:#bdd4cb;border-radius:4px}.site-header .header-social:hover{background:#1c3033;color:var(--accent)}.primary-actions .scene-tools{position:static;display:grid;grid-template-columns:repeat(3,36px);gap:3px;padding:4px;border:1px solid #405554;border-radius:6px;background:#09181dcc;margin-left:auto;flex-shrink:0}.primary-actions .scene-tools button{width:36px;height:36px;border:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.primary-actions .scene-tools button:hover{background:#29423e}.tour-controls button,.dock-footer button{font-size:12px;min-height:44px;color:#c6ded4}.dock-footer button{letter-spacing:0}@media(max-width:700px){.site-header{padding:0 18px}.site-header nav{gap:2px}.site-header .header-social{width:32px;height:40px}.site-header nav .header-contact{display:flex;font-size:10px;padding:8px;gap:4px}.site-header nav .header-contact svg{display:block;width:13px;height:13px;flex-shrink:0}.wordmark{gap:7px;font-size:8px;letter-spacing:1px}.wordmark-sub{font-size:5px;letter-spacing:1px}.intro-copy .primary-actions{gap:12px}.intro-copy .primary-btn{gap:10px}.primary-actions .scene-tools{grid-template-columns:repeat(3,32px);gap:2px;padding:3px}.primary-actions .scene-tools button{width:32px;height:36px}.tour-controls button,.dock-footer button{font-family:Manrope Variable,sans-serif;font-size:12px;font-weight:550;color:#d0e6dd;gap:7px}.tour-controls button svg,.dock-footer button svg{width:14px;height:14px}}@media(max-width:360px){.site-header{padding:0 12px}.wordmark .brand-symbol{width:28px;height:28px}.site-header nav .header-contact{padding:8px 5px}.site-header .header-social{width:29px}}.simple-mode .site-header{position:sticky;top:0;background:#0b161e}.lab-entry{position:sticky;top:var(--header-height);z-index:9;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 4.25%;border-bottom:1px solid #354b4b;background:#101f25;color:#a7c2b7;font-size:13px}.lab-entry .primary-btn{min-height:44px}@media(max-width:700px){.lab-entry{padding:9px 18px;gap:12px}.lab-entry>span{max-width:130px;font-size:11px;line-height:1.5}.lab-entry .primary-btn{font-size:11px;gap:9px;padding:9px 12px}}.brand-logo{display:block;filter:invert(1);flex-shrink:0}.intro-copy .primary-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.intro-copy .primary-btn{white-space:normal;min-width:0;justify-content:center;gap:8px}.intro-copy .primary-btn svg{flex-shrink:0}@media(max-width:700px){.intro-copy .primary-actions{gap:8px}.intro-copy .primary-btn{font-size:10px;padding:8px;gap:5px;min-height:44px}.primary-actions .scene-tools{border-radius:5px}}body{background:radial-gradient(ellipse at 12% 5%,#163637 0%,transparent 52%),radial-gradient(ellipse at 90% 65%,#17263e 0%,transparent 58%),#080f15;background-attachment:fixed}.app{min-height:100svh}.wordmark-sub{font-size:11px;letter-spacing:1.1px;color:#b4d1c5;margin-top:6px}.site-header,.app:not(.simple-mode) .site-header,.simple-mode .site-header{background:linear-gradient(115deg,#0e2326fa,#0b1420f7)}.lab-entry{background:linear-gradient(110deg,#173438,#132433 75%,#192b38)}.zone-nav{top:auto;bottom:0;height:calc(var(--zone-height) + env(safe-area-inset-bottom));padding-bottom:calc(4px + env(safe-area-inset-bottom));border-top:1px solid #46655e;border-bottom:0;background:linear-gradient(110deg,#112a2bfa,#0e1929fa);box-shadow:0 -12px 36px #030a1333}.bottom-dock{bottom:calc(var(--zone-height) + 18px + env(safe-area-inset-bottom))}.intro-copy,.terminal-copy{top:max(190px,23%)}.scene-label{top:150px}.primary-actions .scene-tools{background:linear-gradient(120deg,#153030eb,#0f1e2deb)}.primary-btn{background:linear-gradient(115deg,#d1f4d8,#a7dfd2);transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.primary-btn:hover{box-shadow:0 5px 22px #92e1c124}.header-social,.zone-nav button,.scene-tools button,.tour-controls button,.dock-footer button{transition:color .2s ease,background-color .2s ease,border-color .2s ease,transform .2s ease}@media(max-width:700px){.wordmark{font-size:10px;letter-spacing:1px}.wordmark-sub{font-size:8.5px;letter-spacing:.45px;margin-top:5px}.zone-nav{height:calc(62px + env(safe-area-inset-bottom))}.zone-nav button{font-size:10px;letter-spacing:-.1px}.bottom-dock{bottom:calc(62px + max(6px,env(safe-area-inset-bottom)))}.intro-copy,.terminal-copy{top:auto;bottom:calc(122px + max(6px,env(safe-area-inset-bottom)))}.world{top:48px;bottom:142px}.world-shade{background:linear-gradient(0deg,#0b1a24 0%,rgba(10,27,35,.96) 19%,rgba(9,25,33,.65) 31%,transparent 48%)}}:root{--accent:#a1f7ff;--muted:#bacdea;--line:rgba(177,216,255,.22);--glass-edge:rgba(201,233,255,.3);--glass-shadow:inset 0 1px 0 rgba(232,251,255,.2),0 8px 32px rgba(0,8,50,.2);color:#eff7ff;background:#070e31}body{background:radial-gradient(ellipse at 84% 18%,rgba(92,240,246,.62),transparent 32%),radial-gradient(ellipse at 63% 40%,rgba(16,164,224,.52),transparent 38%),radial-gradient(ellipse at 9% 8%,rgba(47,77,235,.85),transparent 52%),radial-gradient(ellipse at 95% 88%,rgba(45,71,213,.8),transparent 52%),linear-gradient(145deg,#071032 8%,#102777 50%,#091437 85%);background-attachment:fixed}::selection{background:#a1f7ff;color:#071d4a}.site-header,.app:not(.simple-mode) .site-header,.simple-mode .site-header{background:linear-gradient(115deg,#203f82a6,#0c1948b8);border-color:var(--glass-edge);backdrop-filter:blur(18px) saturate(145%);-webkit-backdrop-filter:blur(18px) saturate(145%);box-shadow:var(--glass-shadow)}.wordmark-sub,.eyebrow,.intro-copy .eyebrow,.terminal-copy .eyebrow{color:#bfdbf7}.brand-symbol{color:#b3fbff;border-color:#afe9ff80;background:linear-gradient(140deg,#bcf7ff26,#6385ff17);box-shadow:inset 0 1px #e8fbff40}.site-header .header-social{color:#e2f5ff}.site-header .header-social:hover{background:#b2e2ff29}.site-header nav .header-contact{color:#ecfbff;border-color:#c5e9ff80;border-radius:10px;background:linear-gradient(125deg,#96e7ff29,#7299fc14);box-shadow:inset 0 1px #e8fbff26}.lab-entry{color:#deedff;background:linear-gradient(110deg,#5fa4f240,#304eae52);border-color:var(--glass-edge);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);box-shadow:var(--glass-shadow)}.primary-btn{color:#071d47;border-color:#defdffb3;border-radius:10px;background:linear-gradient(125deg,#d2fbff,#9bebff 52%,#a6bfff);box-shadow:inset 0 1px azure,0 4px 18px #1d63da26}.primary-btn:hover{background:linear-gradient(125deg,#efffff,#aff7ff 55%,#bdceff);box-shadow:inset 0 1px #fff,0 6px 25px #6ccdff47}.text-button,.source-link,.email-link{color:#aaf6ff}.plain-hero p:not(.eyebrow),.intro-description,.terminal-copy .intro-description{color:#d2e1f5}.plain-hero h1,.plain-section h2{text-shadow:0 2px 22px rgba(0,18,73,.24)}.plain-section,.career-entry,.university-mark,.dialog-bottom{border-color:var(--line)}.career-entry p:not(.eyebrow),.research-content>p:not(.eyebrow):not(.caption),.publication-intro,.contact-content>p:not(.eyebrow),.career-entry li,.research-content li,.guide-content,.quality-content{color:#d2e1f5}.organization{color:#b0f3ff!important}.career-entry li:before,.research-content li:before,.timeline-index{color:#96e8ff}.caption,.plain-footer,.dialog-lede,.dialog-bottom,.guide-note{color:#b9cdef}.university-mark{color:#b5eaff}.plain-portrait,.contact-portrait,.terminal-portrait{border-radius:12px;border-color:#cdeeff80;box-shadow:0 12px 40px #010a3140}.zone-nav{background:linear-gradient(110deg,#264489cc,#0b1944d9);border-color:#b9e2ff59;backdrop-filter:blur(18px) saturate(145%);-webkit-backdrop-filter:blur(18px) saturate(145%);box-shadow:inset 0 1px #eafcff2e,0 -8px 30px #0006263d}.zone-nav button{color:#c0d4ef;border-radius:9px}.zone-nav button:hover{background:#9dd1ff24;color:#fff}.zone-nav button[aria-current]{color:#efffff}.zone-number{color:#92b5e1}.zone-nav button[aria-current] .zone-number{color:#bdffff}.primary-actions .scene-tools{border-color:#bce6ff59;border-radius:10px;background:linear-gradient(125deg,#5385cd42,#1e346c73);box-shadow:var(--glass-shadow)}.primary-actions .scene-tools button{color:#d5edff;border-radius:7px}.primary-actions .scene-tools button:hover{background:#a0daff2e}.skill-tags span{color:#c2e2ff;background:#2947844d;border-color:#afdaff4d;border-radius:5px}.tour-controls button,.dock-footer button,.terminal-email{color:#d0e6ff}.tour-controls button:hover,.dock-footer button:hover{color:#adfbff}.tour-state,.tour-time,.dock-footer>span{color:#a8c8ed}.flight-track{background:#abd6ff47}.flight-fill,.status-dot{background:#a1f7ff}.hotspot>span:first-child{color:#d8f5ff;border-color:#b5edffa6;background:#163064b8}.hotspot:hover>span:first-child,.hotspot.selected>span:first-child{color:#072346;background:#a1f7ff;border-color:#c3ffff}.loading-note{color:#b9cdef;text-align:center}.hotspot-name,.loading-badge{color:#e2f3ff;background:#0f2150f0;border-color:#b5dfff66;box-shadow:var(--glass-shadow)}.scene-label{color:#d6eaff}.scene-label>span>span{color:#a6c5e8}.organization .place{color:#9db6d6;font-weight:400}.grade{font-family:var(--mono);font-size:12px!important;letter-spacing:1.2px;color:#a1f7ff!important;margin:-8px 0 16px!important}.degree-secondary{margin:34px 0 8px;padding-top:26px;border-top:1px solid var(--line)}.degree-secondary .eyebrow{margin:0 0 8px}.degree-secondary>p:last-child{font-size:14px;color:#a6bdb6;margin:0}.skill-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;margin:20px 0 8px}.skill-group{padding:18px 18px 14px;border-radius:12px;border:1px solid rgba(181,223,255,.22);background:#0f215061}.skill-group-label{font-family:var(--mono);font-size:13px!important;letter-spacing:1.2px;text-transform:uppercase;color:#a1f7ff!important;margin:0 0 12px!important}.skills>.skill-group-label{margin:26px 0 12px!important}.skill-tools{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:14px 10px}.skill-tools li{display:flex;flex-direction:column;align-items:center;gap:8px;width:88px;font-size:13.5px;line-height:1.3;color:#dbe9f7;text-align:center}.skill-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:14px;background:#f3f7fc;box-shadow:0 5px 16px #000a2859}.skill-icon img{width:32px;height:32px;object-fit:contain}.skill-areas{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px}.skill-areas li{font-family:var(--mono);font-size:13px;letter-spacing:.3px;border:1px solid rgba(181,223,255,.35);border-radius:999px;padding:8px 14px;color:#cfe3f5;background:#0f215073}.project-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;margin:0 0 8px}.project-card{display:flex;flex-direction:column;padding:18px;border-radius:12px;border:1px solid rgba(181,223,255,.22);background:#0f215061}.project-card h3{font-size:18px;font-weight:500;letter-spacing:-.2px;margin:0 0 8px}.project-card h3 a{display:inline-flex;align-items:center;gap:6px}.project-card h3 a:hover{color:#a1f7ff}.project-card>p{font-size:14px;line-height:1.6;color:#b3c6d6;margin:0 0 14px}.project-stack{list-style:none;padding:0;margin:auto 0 12px;display:flex;flex-wrap:wrap;gap:6px}.project-stack li{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:#f3f7fc}.project-stack img{width:20px;height:20px;object-fit:contain}.project-links{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;margin:0}.project-links a{display:inline-flex;align-items:center;gap:4px;color:#a1f7ff}.project-links a:hover{color:#fff}.project-links span{font-family:var(--mono);font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:#8ea8c8}.media-card{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;align-items:center;margin-top:18px}.media-thumb{position:relative;display:block;aspect-ratio:16/9;border-radius:10px;overflow:hidden;border:1px solid rgba(181,223,255,.35)}.media-thumb:hover,.media-thumb:focus-visible{border-color:#a1f7ff}.media-thumb img{display:block;width:100%;height:100%;object-fit:cover}.media-play{position:absolute;inset:0;margin:auto;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;color:#fff;background:#0a183cb8;border:1px solid rgba(255,255,255,.55)}.media-thumb:hover .media-play{background:#e5312b;border-color:#e5312b}.media-card .eyebrow{margin:0 0 6px}.media-card h3{font-size:23px;font-weight:450;letter-spacing:-.4px;margin:0 0 10px}.media-card h3 a{display:inline-flex;align-items:center;gap:8px}.media-card h3 a:hover{color:#a1f7ff}.media-card p:not(.eyebrow){font-size:15px;line-height:1.75;color:#a3b6b7;margin:0}@media(max-width:700px){.media-card{grid-template-columns:1fr;gap:16px}.skill-groups,.project-list{grid-template-columns:1fr}.skill-tools li{width:84px;font-size:13px}.skill-areas li{font-size:12px}}.part-position{position:absolute;top:0;left:0;visibility:hidden}.part-tag{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;display:flex;align-items:center;gap:7px;white-space:nowrap;padding:5px 11px 5px 8px;border-radius:999px;font-family:var(--mono);font-size:10px;letter-spacing:.4px;color:#e2f3ff;background:#0f2150b8;border:1px solid rgba(181,223,255,.45);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--glass-shadow)}.part-tag:hover,.part-tag.open{background:#1e468ceb;border-color:#a1f7ff}.part-dot{width:7px;height:7px;border-radius:50%;background:#a1f7ff;box-shadow:0 0 8px #a1f7ff}.part-card{position:absolute;top:var(--card-y,20px);left:var(--card-x,-24px);width:270px;pointer-events:auto;padding:12px 14px;border-radius:8px;background:#0c1c46f2;border:1px solid rgba(181,223,255,.4);box-shadow:var(--glass-shadow);color:#cfe3f5;font-size:12px;line-height:1.55}.part-card p{margin:0}.part-card .part-title{font-size:13px;font-weight:600;color:#f0f8ff;margin-bottom:6px}.part-title>span{display:block;font-family:var(--mono);font-size:9px;font-weight:400;letter-spacing:1px;color:#a1f7ff;text-transform:uppercase;margin-top:2px}.part-short{display:none}.tour-controls button.attention{color:#a1f7ff;border-radius:999px;padding:5px 10px;margin:-5px -10px;box-shadow:0 0 0 1px #a1f7ff8c}.part-position:has(.part-card){z-index:1}.part-card p+p{margin-top:6px}.part-link{display:inline-flex;align-items:center;gap:7px;margin-top:9px;font-size:12px;color:#a1f7ff;border-bottom:1px solid rgba(161,247,255,.4);padding-bottom:1px}.part-link:hover{color:#fff;border-color:#fff}@media(max-width:700px){.part-tag{padding:6px;gap:0}.part-name{display:none}.part-short{display:block;position:absolute;left:50%;top:calc(100% - 3px);transform:translate(-50%);padding:2px 6px;border-radius:999px;font-size:8px;letter-spacing:.3px;white-space:nowrap;color:#e2f3ff;background:#0f2150d1;border:1px solid rgba(181,223,255,.35)}.part-position[data-label=above] .part-short{top:auto;bottom:calc(100% - 3px)}.part-card{width:215px;font-size:11px}}.detail-dialog{background:radial-gradient(ellipse at 100% 0%,rgba(30,116,181,.34),transparent 65%),linear-gradient(145deg,#101f4c,#0b1434);border-color:#bee6ff4d;color:#f0f7ff;box-shadow:-15px 0 70px #00052159}.detail-dialog::backdrop{background:#020823a3}.close-button{border-color:#b4dfff66;background:#78b1f21a}.close-button:hover{background:#8ed3ff38}.quality-content label{color:#e2f3ff}.quality-content select{color:#e9f7ff;background:#172b57;border-color:#769dcc;border-radius:10px}.research-visual{border-color:var(--glass-edge);background:#6a9be714;border-radius:10px}.research-visual span{background:#87dfff}.fallback-notice{color:#d5efff;border-color:var(--glass-edge);background:#5c9fe91f;border-radius:10px}.world-shade{background:linear-gradient(90deg,rgba(5,14,39,.97),rgba(8,22,53,.87) 22%,rgba(8,27,68,.25) 47%,transparent 65%),linear-gradient(0deg,rgba(7,17,49,.96),transparent 35%,transparent 85%,rgba(9,23,59,.4))}@media(max-width:700px){.world-shade{background:linear-gradient(0deg,#0b1740 0%,rgba(10,24,58,.96) 19%,rgba(9,29,65,.68) 31%,transparent 48%)}.primary-actions .scene-tools{border-radius:10px}}.waterloo-logo{width:270px;max-width:100%;height:auto;display:block}.app:fullscreen{width:100%;height:100%;overflow:auto;background:#071431}.app.is-fullscreen .experience{height:100dvh}.app.is-immersive{position:fixed;inset:0;z-index:40;overflow:hidden;--header-height:0px}.app.is-immersive .site-header{display:none}.fullscreen-exit{position:fixed;right:18px;top:calc(var(--header-height) + 12px);z-index:30;width:44px;height:44px;border:1px solid rgba(211,244,255,.6);border-radius:50%;display:grid;place-items:center;background:#112a5beb;color:#fff;box-shadow:0 4px 24px #0000004d}.fullscreen-exit:hover{background:#335d9e}.fullscreen-notice{position:fixed;z-index:40;left:50%;top:110px;transform:translate(-50%);width:min(90%,430px);padding:14px;display:flex;align-items:center;gap:12px;border:1px solid #91badb;border-radius:10px;background:#12234d;color:#f0faff;font-size:13px}.fullscreen-notice button{flex-shrink:0;min-width:32px;min-height:32px}.terminal-email a{color:inherit;text-decoration:none}.terminal-email a:hover{color:#adfbff}.copy-email{display:inline-flex;align-items:center;gap:6px;padding:6px;margin:-6px 0;border:1px solid transparent;border-radius:7px;background:none;color:inherit;cursor:pointer;font:inherit}.copy-email:hover{color:#adfbff;border-color:#b5dfff59;background:#a0daff1a}.copy-status{font-size:.8em;color:#a1f7ff}.copy-status:empty{display:none}.patent-download{text-decoration:none}.patent-download:hover{color:#adfbff}.patent-note{margin:14px 0 0;display:flex;flex-direction:column;gap:6px}.patent-note>span{font-size:12px;line-height:1.6;color:#b9cdef}.patent-note .source-link{display:inline-flex;align-items:center;gap:8px;font-weight:600;text-decoration:none}@media(min-width:701px){.bottom-dock{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:24px;align-items:center;bottom:calc(var(--zone-height) + 10px + env(safe-area-inset-bottom))}.flight-track{grid-column:1/-1;grid-row:1;margin:0}.tour-toolbar{grid-column:1;grid-row:2;margin:0;min-height:44px}.dock-footer{grid-column:2;grid-row:2;margin:0}.dock-footer>span{display:none}}@media(min-width:1101px)and (min-height:801px){.bottom-dock{top:calc(var(--header-height) + 8px);bottom:auto;grid-template-columns:auto auto minmax(0,1fr)}.flight-track{grid-row:3}.tour-toolbar{display:contents}.tour-controls{grid-column:1;grid-row:2;min-height:44px;align-items:center}.dock-footer{grid-column:2;grid-row:2}.tour-state{grid-column:3;grid-row:2;justify-self:end}.tour-controls button,.dock-footer button{font-size:15px;gap:9px}.tour-controls button svg,.dock-footer button svg{width:17px;height:17px}.tour-state,.tour-state .tour-time{font-size:10px}.scene-label{top:calc(var(--header-height) + 92px)}}.publications{margin-top:30px;padding-top:24px;border-top:1px solid rgba(170,219,255,.22)}.publication-card{padding:20px;border:1px solid rgba(170,219,255,.23);border-radius:16px;background:linear-gradient(135deg,#5eace91f,#4761b314);margin-top:12px}.publication-meta{display:flex;gap:12px;align-items:center;color:#a5ddf3;font:11px IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.08em}.publication-card h4{font-size:18px;line-height:1.5;font-weight:550;margin:12px 0 8px}.publication-card h4 a{color:#e1f7ff;text-decoration:none;display:flex;gap:12px;align-items:flex-start}.publication-card h4 svg{flex-shrink:0;margin-top:5px}.publication-card h4 a:hover{color:#9afff1}.publication-card .publication-venue{font-size:13px;line-height:1.6;color:#afe5f4;margin:0 0 8px}.publication-card .publication-authors{font-size:13px;line-height:1.7;color:#b3cbe4;margin:0 0 12px}.publication-card>p:last-of-type{font-size:14px;line-height:1.75;color:#d2e1f5;margin:0 0 4px}.publication-card .source-link{margin:8px 0 0}@media(max-width:700px){.publication-card{padding:16px}.publication-card h4{font-size:16px}}.publication-dropdown>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;cursor:pointer;font-size:16px;color:#dcf6ff;border-radius:8px}.publication-dropdown>summary::-webkit-details-marker{display:none}.publication-dropdown>summary:focus-visible{outline:2px solid #9cf9ff;outline-offset:5px}.publication-count{color:#9adcec;margin-left:5px;font-family:IBM Plex Mono,monospace;font-size:13px}.publication-dropdown>summary svg{transition:transform .2s ease}.publication-dropdown[open]>summary svg{transform:rotate(90deg)}@media(prefers-reduced-motion:reduce){.publication-dropdown>summary svg{transition:none}}.past-work{border-top:1px solid var(--line)}.past-work>summary{padding:14px 0}.media-card>h3{grid-column:1/-1;margin:0}.flight-track{position:relative;cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent}.flight-track:before{content:"";position:absolute;inset:-10px 0}.flight-track[aria-disabled=true]{cursor:default}.flight-track:focus-visible{outline:2px solid #9cf9ff;outline-offset:8px}.flight-knob{position:absolute;inset:0;pointer-events:none}.flight-knob>i{position:absolute;left:0;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;background:#a1f7ff;box-shadow:0 0 0 3px #a1f7ff38,0 0 12px #a1f7ff99}.flight-track:active .flight-knob>i{width:15px;height:15px;margin:-7.5px 0 0 -7.5px}.explore-mode .flight-knob>i{opacity:.55}@media(min-width:701px)and (max-height:689px){.experience{min-height:0}.intro-copy,.terminal-copy{top:calc(var(--header-height) + 26px)}.intro-copy .eyebrow,.terminal-copy .eyebrow{margin-bottom:12px}.intro-copy h1,.terminal-copy h1{font-size:34px;margin-bottom:12px}.intro-description,.terminal-copy .intro-description{font-size:12px;line-height:1.8;margin-bottom:14px}.skill-tags,.terminal-copy .skill-tags{margin-bottom:16px}.terminal-person{margin-bottom:10px}.terminal-portrait{width:56px;height:56px}.terminal-email{margin-top:10px}.scene-label{top:calc(var(--header-height) + 22px)}}@media(min-width:701px)and (max-height:600px){.skill-tags,.terminal-copy .skill-tags,.terminal-email,.scene-label{display:none}}@media(max-width:700px){.experience{min-height:500px}}@media(max-height:520px)and (orientation:landscape){.app{--header-height:54px;--zone-height:46px}.site-header{height:var(--header-height);padding:0 max(18px,env(safe-area-inset-left))}.wordmark{font-size:10px;letter-spacing:1px;gap:9px}.brand-symbol,.wordmark .brand-symbol{width:34px;height:34px;border-radius:9px}.brand-symbol svg{width:21px}.wordmark-sub{font-size:8.5px;letter-spacing:.45px;margin-top:3px}.site-header nav{gap:4px}.site-header .header-social{width:36px;height:40px}.site-header nav .header-contact{font-size:10px;padding:8px 10px;gap:6px;margin:0}.lab-entry{padding:7px max(18px,env(safe-area-inset-left))}.experience{height:100svh;min-height:0;max-height:none}.world{top:0;bottom:0}.world-shade{background:linear-gradient(90deg,rgba(5,14,39,.97),rgba(8,22,53,.86) 26%,rgba(8,27,68,.25) 52%,transparent 68%),linear-gradient(0deg,rgba(7,17,49,.96),transparent 38%)}.intro-copy,.terminal-copy{top:calc(var(--header-height) + 10px);bottom:auto;left:max(18px,env(safe-area-inset-left));right:auto;width:min(52%,400px);max-width:none}.intro-copy .eyebrow,.intro-copy .skill-tags,.terminal-person,.terminal-email,.scene-label,.hotspot-name,.tour-state{display:none}.intro-copy h1,.terminal-copy h1{font-size:26px;line-height:1.15;letter-spacing:-.8px;margin:0 0 6px;max-width:none;min-height:0}.intro-copy h1>span{display:inline}.intro-copy .intro-description,.terminal-copy .intro-description{font-size:12.5px;line-height:1.45;margin:0 0 8px;max-width:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.intro-copy .primary-actions{gap:8px}.intro-copy .primary-btn{min-height:40px;padding:8px 12px;font-size:11px;gap:8px}.primary-actions .scene-tools{grid-template-columns:repeat(3,32px);gap:2px;padding:3px}.primary-actions .scene-tools button{width:32px;height:34px}.bottom-dock{left:max(18px,env(safe-area-inset-left));right:max(18px,env(safe-area-inset-right));bottom:calc(var(--zone-height) + 2px + env(safe-area-inset-bottom));display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;align-items:center}.flight-track{grid-column:1/-1;grid-row:1;margin:0}.tour-toolbar{grid-column:1;grid-row:2;margin:0;min-height:38px;justify-content:flex-start}.dock-footer{grid-column:2;grid-row:2;margin:0}.dock-footer>span{display:none}.tour-controls{gap:16px}.tour-controls button,.dock-footer button{min-height:38px;font-size:11px}.zone-nav{height:calc(var(--zone-height) + env(safe-area-inset-bottom));--pad-x:max(10px,env(safe-area-inset-left));padding:3px var(--pad-x) calc(3px + env(safe-area-inset-bottom))}.zone-nav button{flex-direction:row;justify-content:center;gap:7px;padding:4px 6px;font-size:10px;line-height:1.15;white-space:normal;text-align:left}.zone-nav .zone-number,.zone-nav button .zone-arrow{display:none}.zone-nav button svg{width:15px;height:15px;flex-shrink:0}.hotspot>span:first-child{width:23px;height:23px;font-size:7px}.loading-badge{left:72%;top:46%;width:260px;padding:14px 16px;font-size:14px}.loading-note{font-size:12px}.fullscreen-exit{top:calc(var(--header-height) + 8px);width:38px;height:38px}.fullscreen-notice{top:calc(var(--header-height) + 8px)}}:root{--ease-out:cubic-bezier(.16,1,.3,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--ease-drawer:cubic-bezier(.32,.72,0,1);--t-press:.12s;--t-hover:.15s;--t-state:.2s;--t-panel:.38s;--t-reveal:.62s}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@keyframes rise-in{0%{opacity:0;translate:0 14px}}@keyframes word-in{0%{opacity:0;translate:0 .42em}}@keyframes portrait-in{0%{opacity:0;scale:.965;translate:0 10px}}@keyframes sheen{0%{translate:-130% 0}to{translate:130% 0}}@keyframes arrow-nudge{45%{translate:2px -2px}}@keyframes ping{0%{opacity:.55;scale:1}to{opacity:0;scale:2.3}}@keyframes dither{0%,to{opacity:.16}50%{opacity:1}}.plain-hero .eyebrow{animation:rise-in var(--t-reveal) var(--ease-out) backwards}.word{display:inline-block}.plain-hero .word{animation:word-in .8s var(--ease-out) backwards;animation-delay:calc(90ms + var(--i)*70ms)}.plain-hero p:not(.eyebrow){animation:rise-in .7s var(--ease-out) .44s backwards}.plain-hero .primary-btn{animation:rise-in .7s var(--ease-out) .54s backwards}.plain-portrait{animation:portrait-in .95s var(--ease-out) .18s backwards}.lab-entry{animation:rise-in .5s var(--ease-out) .1s backwards}@media(prefers-reduced-motion:no-preference){.plain-content [data-reveal]{transition:opacity var(--t-reveal) var(--ease-out) var(--reveal-delay,0ms),translate var(--t-reveal) var(--ease-out) var(--reveal-delay,0ms)}.plain-content [data-reveal]:not([data-revealed]){opacity:0;translate:0 18px}.plain-content .skill-group .skill-tools li{transition:opacity .45s var(--ease-out),scale .45s var(--ease-out);transition-delay:calc(var(--reveal-delay,0ms) + .16s + var(--i,0)*55ms)}.plain-content .skill-group:not([data-revealed]) .skill-tools li{opacity:0;scale:.82}.plain-content .research-visual[data-reveal]{transition-duration:.35s}.plain-content .research-visual span{transition:transform 1.1s var(--ease-out);transition-delay:calc(var(--reveal-delay,0ms) + .52s + var(--i)*18ms)}.plain-content .research-visual:not([data-revealed]) span{transform:scaleY(var(--noise,1))}}.research-visual{overflow:hidden}@media print{.plain-content [data-reveal]{opacity:1!important;translate:none!important}}.publication-dropdown[open] .publication-card{animation:rise-in .5s var(--ease-out) backwards;animation-delay:calc(80ms + var(--i,0)*70ms)}.past-work[open] .career-entry{animation:rise-in .5s var(--ease-out) backwards;animation-delay:calc(80ms + (var(--i,2) - 2)*70ms)}@media(prefers-reduced-motion:no-preference){@supports (interpolate-size:allow-keywords){.publication-dropdown{interpolate-size:allow-keywords}.publication-dropdown::details-content{block-size:0;overflow:clip;opacity:0;transition:block-size .5s var(--ease-out),opacity .3s ease,content-visibility .5s allow-discrete}.publication-dropdown[open]::details-content{block-size:auto;opacity:1}}}.lab-entry .primary-btn{position:relative;overflow:hidden}.lab-entry .primary-btn:after{content:"";position:absolute;inset:0;pointer-events:none;translate:-130% 0;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.75) 50%,transparent 65%);animation:sheen 1.15s var(--ease-in-out) 1.3s 2}.lab-entry .primary-btn:is(:hover,:focus-visible):after{animation:sheen .9s var(--ease-in-out) 1}html[data-vt=enter]::view-transition-old(root){animation:none;mix-blend-mode:normal}html[data-vt=enter]::view-transition-new(root){mix-blend-mode:normal;animation:vt-open .72s cubic-bezier(.4,0,.2,1)}@keyframes vt-open{0%{clip-path:circle(0% at var(--vt-origin,50% 50%))}to{clip-path:circle(150% at var(--vt-origin,50% 50%))}}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.intro-copy>*{animation:rise-in .46s var(--ease-out) backwards}.intro-copy>:nth-child(2){animation-delay:50ms}.intro-copy>:nth-child(3){animation-delay:.1s}.intro-copy>:nth-child(4){animation-delay:.15s}.intro-copy>:nth-child(n+5){animation-delay:.2s}.scene-label{animation:rise-in .5s var(--ease-out) .15s backwards}.zone-pill{position:absolute;z-index:0;top:4px;bottom:calc(4px + env(safe-area-inset-bottom));left:var(--pad-x);width:calc((100% - 2*var(--pad-x))/var(--count,5));border-radius:9px;pointer-events:none;translate:calc(var(--active,0)*100%) 0;transition:translate var(--t-panel) var(--ease-out);background:linear-gradient(135deg,#8bedff47,#8ea5ff29);box-shadow:inset 0 1px #d1fcff47,inset 0 0 0 1px #bcebff2b}.zone-pill:before{content:"";position:absolute;top:-4px;left:16px;right:16px;height:2px;background:var(--accent)}.zone-nav button{z-index:1}@media(max-width:700px){.zone-pill:before{left:6px;right:6px}}@media(max-height:520px)and (orientation:landscape){.zone-pill{top:3px;bottom:calc(3px + env(safe-area-inset-bottom))}.zone-pill:before{top:-3px;left:8px;right:8px}}.flight-fill,.flight-knob{transition:transform .1s linear}.flight-fill{transform-origin:left center}.hotspot>span:first-child{position:relative}.hotspot.selected>span:first-child:after{content:"";position:absolute;inset:-1px;border-radius:50%;border:1px solid var(--accent);pointer-events:none;opacity:0;animation:ping 1.7s var(--ease-out) 3}@keyframes attention{50%{box-shadow:0 0 0 6px #a1f7ff00,0 0 18px #a1f7ff8c}}@media(prefers-reduced-motion:no-preference){.tour-controls button.attention{animation:attention 1.4s var(--ease-in-out) 4}.part-card{animation:rise-in var(--t-state) var(--ease-out) backwards}}.loading-dots{display:grid;grid-template-columns:repeat(4,7px);gap:3px;flex-shrink:0}.loading-dots i{width:7px;height:7px;border-radius:2px;background:var(--accent);opacity:.55;animation:dither 1.5s var(--ease-in-out) infinite;animation-delay:calc(var(--o)/16*1.5s)}.loading-bar{display:block;width:100%;height:3px;border-radius:2px;overflow:hidden;background:#abd6ff33}.loading-bar>span{display:block;height:100%;background:var(--accent);transform-origin:left center;transition:transform .4s var(--ease-out)}.detail-dialog[open] .dialog-inner>*{animation:rise-in .5s var(--ease-out) backwards}.detail-dialog[open] .dialog-inner>:nth-child(1){animation-delay:.14s}.detail-dialog[open] .dialog-inner>:nth-child(2){animation-delay:.19s}.detail-dialog[open] .dialog-inner>:nth-child(3){animation-delay:.24s}.detail-dialog[open] .dialog-inner>:nth-child(4){animation-delay:.29s}.detail-dialog[open] .dialog-inner>:nth-child(n+5){animation-delay:.34s}@media(prefers-reduced-motion:no-preference){@supports (transition-behavior:allow-discrete){.detail-dialog{translate:100% 0;opacity:.4;transition:translate .24s var(--ease-in-out),opacity .2s ease,overlay .24s allow-discrete,display .24s allow-discrete}.detail-dialog[open]{translate:0 0;opacity:1;animation:none;transition:translate var(--t-panel) var(--ease-drawer),opacity .3s ease,overlay var(--t-panel) allow-discrete,display var(--t-panel) allow-discrete}@starting-style{.detail-dialog[open]{translate:100% 0;opacity:.4}}.detail-dialog::backdrop{opacity:0;transition:opacity .22s ease,overlay .22s allow-discrete,display .22s allow-discrete}.detail-dialog[open]::backdrop{opacity:1;transition-duration:.3s}@starting-style{.detail-dialog[open]::backdrop{opacity:0}}}}.primary-btn,.header-contact,.header-social,.close-button,.scene-tools button,.zone-nav button,.tour-controls button,.dock-footer button,.text-button,.fullscreen-exit,.hotspot{transition-property:color,background-color,border-color,box-shadow,transform,scale;transition-duration:var(--t-state);transition-timing-function:ease}:is(.primary-btn,.header-contact,.header-social,.close-button,.scene-tools button,.zone-nav button,.tour-controls button,.dock-footer button,.text-button,.fullscreen-exit,.hotspot):active{scale:.97;transition-duration:var(--t-press)}@media(hover:hover)and (pointer:fine){:is(.primary-btn,.header-contact,.source-link,.email-link,.text-button,.social-links a,.dock-footer button,.dialog-bottom a,.publication-card h4 a):hover svg:last-child{animation:arrow-nudge .52s var(--ease-out)}.publication-card{transition:translate var(--t-state) var(--ease-out),border-color var(--t-state) ease}.publication-card:hover{translate:0 -2px;border-color:#aae6ff80}}
