/* Reference-aligned presentation: full-screen hero, white biography, cinematic timeline. */
.project-grid.dragging{scroll-snap-type:none;scroll-behavior:auto;cursor:grabbing;user-select:none}.project-grid.dragging button{cursor:grabbing}.project-grid img{-webkit-user-drag:none;user-select:none}
:root{--bg:#171021;--panel:#251b33;--accent:#b491f2;--text:#e3e3e3;--muted:#bdb9c1;--line:#ffffff25;--body:'Poppins','Microsoft YaHei',sans-serif;--display:'Poppins','Microsoft YaHei',sans-serif;--max:1380px}
body{font-size:1rem;line-height:1.8;background:#171021}.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}.wordmark{font-family:'Plus Jakarta Sans','Microsoft YaHei',sans-serif;font-size:26px;letter-spacing:-1px}.wordmark i{display:none}.header{position:fixed;height:88px;border:0;padding:0 3.7%;background:transparent;gap:24px}.header.scrolled{height:78px;background:#171021e8;backdrop-filter:blur(15px);box-shadow:0 3px 20px #0002}.header nav{gap:27px}.nav-link{font-size:15px;font-weight:500;white-space:nowrap;line-height:44px}.nav-link:after{height:3px;bottom:-3px}.header-actions{gap:22px}.language{font-size:13px}.nav-resume{display:block;padding:7px;border:1px solid #a2a0a45e;outline:none;position:relative}.nav-resume>span{display:block;background:#7540cf;color:white;padding:6px 20px;font-size:14px;font-weight:700;letter-spacing:0}.nav-resume:hover{background:transparent;border-color:var(--accent)}.nav-resume:hover>span{background:#5e2cad}.hero{min-height:660px;max-height:none;height:100svh;isolation:isolate;background:#160d24}.hero-background{inset:-4%;background:none;animation:none;will-change:transform;transform:translate3d(0,0,0)}.hero-frame{position:absolute;inset:0;background-position:center;background-size:cover;opacity:0;transform:scale(1.04);transition:opacity 1.8s ease-in-out,transform 10s linear;filter:saturate(.63)}.hero-frame.current{opacity:1;transform:scale(1.14)}.hero-shade{background:linear-gradient(180deg,#22123780,#190d2b72 35%,#1b102d9c 100%);z-index:1}.hero-content{padding:100px 55px 130px;z-index:3;animation:reference-title-in 1.2s ease-out both}.hero h1{font-family:var(--display);font-weight:700;font-size:clamp(68px,10.5vw,166px);line-height:1.1;letter-spacing:-.055em;color:#cecece;text-shadow:none;margin:0;white-space:nowrap}.hero-discipline{margin-top:28px;gap:0;font-size:clamp(26px,3.45vw,49px);font-weight:600;line-height:1.4;letter-spacing:-.04em;min-height:1.4em}.rotating-word{color:#c4a7ff;display:inline-block;opacity:1!important;transform:none!important;transition:none}.type-caret{display:inline-block;width:2px;height:1.05em;background:#beb9c5;margin:0 .1em 0 .04em;vertical-align:-.1em;animation:caret-blink .85s steps(1) infinite}.hero-footer{padding:0 4%;bottom:10%;display:flex;justify-content:center;align-items:center;height:46px}.scroll-cue{display:block}.mouse{width:27px;height:47px;border:3px solid #ceccd0a8;border-radius:20px}.mouse i{width:3px;height:10px;left:9px;top:10px;background:#c1bec5;animation:scroll-mark 2s infinite}.motion-toggle{position:absolute;left:4%;width:38px;height:38px;background:#18102280;border:1px solid #d8d0e260;border-radius:50%;font-size:17px;display:grid;place-items:center;opacity:.8;transition:opacity .2s}.motion-toggle:hover{opacity:1}.background-credit{position:absolute;right:9%;font-size:12px;letter-spacing:.09em;color:#c1bac9;max-width:260px;text-align:right}.particles{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}.particle{position:absolute;left:var(--left);top:var(--top);width:var(--size);height:var(--size);background:#c4a7ff;border-radius:50%;opacity:.18;box-shadow:0 0 8px #a875f5;animation:particle-drift var(--duration) linear infinite alternate;animation-delay:var(--delay)}.social-rail{position:fixed;top:auto;bottom:45px;right:2.7%;z-index:22;gap:12px}.social-rail a{width:46px;height:46px;background:#e6e5e8;color:#38343c;border:0;box-shadow:0 1px 8px #0002}.social-rail svg{height:24px;width:24px}.social-rail a:hover{background:#7540cf;color:white;transform:translateX(-4px)}
.biography{display:grid;grid-template-columns:17% 51% 32%;width:100%;max-width:none;gap:0;padding:0;margin:0;border:0;background:#fafafa;color:#29262c;min-height:700px}.metrics{padding:44px 20px;display:flex;flex-direction:column;justify-content:space-around;border-right:1px dotted #7e798466;margin:35px 0}.metric{text-align:center;padding:17px 5px;line-height:1.2}.metric-icon{font-size:32px;font-weight:400;color:#242029}.metric p{font-size:12px!important;line-height:1.4;letter-spacing:.02em;font-weight:600;color:#343138!important;margin:10px 0 8px!important;max-width:none!important}.metric strong{font-size:32px;font-weight:600;color:#29252e;font-variant-numeric:tabular-nums}.bio-main{padding:75px 10% 65px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.bio-main .eyebrow{font-size:12px;color:#66626a;letter-spacing:.02em;line-height:1.5;margin-bottom:23px}.bio-main h2{font-family:var(--display);font-size:clamp(27px,2.5vw,40px);line-height:1.25;letter-spacing:-.035em;font-weight:800;text-transform:uppercase;max-width:590px}.bio-main>p:not(.eyebrow){font-size:16px;line-height:1.9;margin-top:23px;color:#57535b;max-width:600px}.bio-links{display:flex;align-items:center;justify-content:center;gap:25px;flex-wrap:wrap;margin-top:25px}.bio-links .button{background:#34303a;border-radius:30px;padding:11px 27px;color:white;font-size:14px;line-height:1.4}.bio-links .button:hover{background:#7540cf}.bio-links>a:last-child{font-size:14px;color:#4a2973;border-bottom:1px solid #4a297333}.bio-portrait{height:100%;min-height:700px;max-width:none;aspect-ratio:auto;width:100%;margin:0;background:#e9e0f3;clip-path:polygon(13% 0,100% 0,100% 100%,0 100%)}.bio-portrait .portrait-monogram{font-family:'Plus Jakarta Sans',sans-serif;font-size:130px;color:#cbb8df;font-weight:700;letter-spacing:-.12em;transform:translateX(10%)}.bio-portrait .portrait-caption{font-size:12px;bottom:50px;left:23%;right:10%;text-align:center;color:#695e77;letter-spacing:.12em}.backstory{position:relative;isolation:isolate;overflow:hidden;padding:78px 0 100px;background:#21132f}.backstory-backdrop{position:absolute;z-index:-2;inset:-8%;background:linear-gradient(#1b102ddc,#1b102ddc),url('assets/ember-gameplay-01.webp') center/cover;will-change:transform}.backstory:after{position:absolute;inset:0;content:'';background:radial-gradient(circle at 15% 35%,#986ad018 0 2px,transparent 3px),radial-gradient(circle at 85% 70%,#986ad017 0 3px,transparent 4px);pointer-events:none}.section-display{font-family:var(--display);font-size:clamp(38px,4.2vw,58px);font-weight:700;text-align:center;letter-spacing:-.035em;line-height:1.2}.timeline{position:relative;margin-top:65px;padding:0 0 5px}.timeline:before{content:'';position:absolute;left:50%;top:12px;bottom:30px;width:3px;transform:translateX(-50%);background:#dad6de}.timeline-item{width:50%;position:relative;padding:0 50px 42px 0;text-align:right;margin-bottom:15px}.timeline-item:nth-child(even){margin-left:50%;padding:0 0 42px 50px;text-align:left}.timeline-item:before{content:'';position:absolute;right:-9px;top:9px;width:18px;height:18px;border-radius:50%;background:#e5e3e8;box-shadow:0 0 0 6px #dcd4e512}.timeline-item:nth-child(even):before{right:auto;left:-9px}.timeline-item h3{font-weight:700;font-size:26px;line-height:1.3;color:white;letter-spacing:-.02em}.timeline-item h4{font-weight:500;font-size:16px;line-height:1.6;margin:12px 0;color:#ccc5d4}.timeline-item p{font-size:15px;color:#c8c4cc;line-height:1.8;margin-bottom:21px}.timeline-item button{color:#3f3b45;background:#f5f4f7;padding:9px 26px;border-radius:25px;font-size:14px;transition:transform .25s,background .25s}.timeline-item button:hover{background:#ddc7fa;transform:translateY(-3px)}.work{padding:0 0 40px;max-width:none;background:#f6f6f6;color:#2e2b31;margin:0}.work>.section-heading{padding-top:66px;padding-bottom:48px;margin-bottom:0;align-items:center}.work h2{font-family:var(--display);font-size:50px;letter-spacing:-.03em;color:#2b282e;margin:0;font-weight:700}.work-word{color:#7540cf}.work .section-heading p{color:#656169;font-size:16px;margin-top:18px}.work .text-link{color:#573284;font-size:14px;white-space:nowrap}.project-grid{display:flex;gap:0;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior-x:contain;background:#1e1627}.project-grid::-webkit-scrollbar{display:none}.project-card,.project-card.featured{width:100%;flex:0 0 100%;min-width:0;height:560px;position:relative;display:block;background:#201829;border:0;padding:0;isolation:isolate;scroll-snap-align:start;scroll-snap-stop:always;overflow:hidden}.project-card .project-media,.project-card.featured .project-media{position:absolute;inset:0;height:100%;width:100%;border:0;z-index:-2}.project-media img{filter:saturate(.8);width:100%;height:100%;object-fit:cover;transition:transform 1s ease,filter 1s}.project-card:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#11091ae6 0%,#11091ac9 35%,#11091a38 73%,#11091a30)}.project-card .project-info,.project-card.featured .project-info{position:relative;display:flex;flex-direction:column;justify-content:center;padding:55px max(8%,calc((100vw - 1140px)/2));height:100%;width:100%;color:#fff}.project-card .project-info>*{max-width:520px}.project-card .project-info h3,.project-card.featured .project-info h3{font-family:var(--display);font-size:clamp(34px,4.5vw,66px);font-weight:700;line-height:1.13;letter-spacing:-.04em;margin:14px 0;color:white;display:block}.project-card .project-info h3>span{display:none}.project-card .project-info .project-meta{font-size:13px;line-height:1.6;letter-spacing:.04em;color:#dac5fa}.project-card .project-info>p,.project-card.featured .project-info>p{font-size:17px;line-height:1.8;color:#e3e1e5;margin:0 0 7px}.project-tags{margin-top:24px}.project-tags span{font-size:12px;color:#eae5ef;border:1px solid #c2b2d66b;background:#30253d40;padding:5px 10px}.featured-label{font-size:12px;margin-bottom:12px;color:#dcd0eb;letter-spacing:.13em}.project-media .project-counter{top:30px;right:8%;left:auto;background:transparent;font-size:18px;padding:0;color:#e5e2e8}.project-media .view-badge{opacity:1;transform:none;right:8%;bottom:50px;padding:12px 26px;border-radius:28px;background:#f4f2f6;color:#3c3348;font-size:14px;transition:background .3s}.project-card:hover .view-badge{background:#ddc7fa}.project-card:hover .project-media img{transform:scale(1.035);filter:saturate(1)}.project-card:focus-visible{outline:3px solid var(--accent);outline-offset:-5px}.project-card .missing-media{border:0;background:#291b3c;color:#978ca5}.project-card .missing-media strong{position:absolute;right:15%;font-size:100px;color:#c5b8d544}.project-card .missing-media small{position:absolute;right:10%;bottom:30%;font-size:13px}.showcase-controls{display:flex;justify-content:center;align-items:center;gap:26px;padding:24px 20px 0;background:#f6f6f6}.showcase-arrow{background:transparent;color:#3d3448;font-size:25px;width:42px;height:42px;border:1px solid #a49eab;border-radius:50%;line-height:1;transition:.2s}.showcase-arrow:hover{background:#7540cf;color:white;border-color:#7540cf}.showcase-dots{display:flex;align-items:center;justify-content:center;gap:12px}.showcase-dots button{background:#c7c2cd;border:0;width:9px;height:9px;padding:0;border-radius:50%;box-shadow:0 0 0 6px transparent}.showcase-dots button[aria-current="true"]{background:#7540cf;box-shadow:0 0 0 4px #7540cf20}.showcase-count{font-size:13px;color:#605371;font-variant-numeric:tabular-nums;min-width:40px}.experiments,.about,.skills,.resume{max-width:none;padding-left:max(7%,calc((100vw - 1180px)/2));padding-right:max(7%,calc((100vw - 1180px)/2));background:#fafafa;color:#343038;border:0}.experiments{padding-top:75px;padding-bottom:80px}.section-heading h2,.skills h2,.resume h2{font-weight:700;letter-spacing:-.04em;font-size:44px}.section-heading .eyebrow{color:#5b407b;font-size:12px;letter-spacing:.03em}.section-number{display:none}.section-aside{color:#61586b}.lab-card h3{font-family:var(--display);font-size:20px;line-height:1.35;font-weight:600;color:#333}.lab-card p{font-size:14px;color:#605c66}.lab-card .project-media{height:260px}.lab-card .view-badge{bottom:16px;right:16px;font-size:12px;padding:8px 16px}.lab-card img{filter:none}.art-link strong{font:600 24px var(--display);color:#343138}.art-link p{font-size:14px;color:#655d6f}.art-row{border-top-color:#d0ccd4}.about{padding-top:80px;padding-bottom:70px;grid-template-columns:1fr 1.2fr;gap:80px;border-top:1px solid #dcd9df}.about-visual{align-self:center;background:#2d203c;position:relative;overflow:hidden}.about-visual img{width:100%;max-height:630px;object-fit:cover;transition:transform 1s}.about-visual:hover img{transform:scale(1.035)}.about-visual p{position:absolute;bottom:0;left:0;right:0;color:#e9e9e9;padding:18px 24px;background:linear-gradient(transparent,#120620e0);font-size:12px;letter-spacing:.12em}.about-copy .eyebrow{color:#5e388d;letter-spacing:.03em}.about-copy h2{font-family:var(--display);font-size:44px;line-height:1.2;font-weight:700;letter-spacing:-.04em}.about-copy .about-lead{color:#343038!important}.about-copy>p:not(.eyebrow){color:#66616b}.education{border-color:#cfcbd4}.education>span{color:#53258b}.education p{color:#68626f}.skills{padding-top:40px;padding-bottom:80px}.skills .eyebrow{color:#5f4283;letter-spacing:.02em}.skill-columns{gap:70px;margin-top:35px}.skill-columns h3{color:#52248a;font-size:20px;font-weight:600}.skill-columns p{color:#534d5b}.tool-tags span{border-color:#c5bfcd;color:#4f4759}.reel-section{padding:80px 0 70px;background:#21132f}.reel-section h2{font-size:52px;font-weight:700;letter-spacing:-.04em;margin-top:0}.reel-section .section-heading p{color:#bfb8c8;margin-top:15px}.reel-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.reel-card{position:relative;overflow:hidden;padding:0;background:#130e19;aspect-ratio:16/10;text-align:left}.reel-card>img{height:100%;width:100%;object-fit:cover;filter:brightness(.62);transition:filter .4s,transform .7s}.reel-card:hover>img{filter:brightness(.85);transform:scale(1.04)}.reel-play{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);width:70px;height:70px;border:2px solid white;border-radius:50%;display:grid;place-items:center;padding-left:5px;font-size:25px;color:white;background:#ffffff12;transition:background .3s}.reel-card:hover .reel-play{background:#7540cfcd}.reel-caption{position:absolute;inset:auto 0 0;background:linear-gradient(transparent,#0e0717d9);padding:30px 28px 24px;color:white}.reel-caption strong{font-size:20px;line-height:1.4;font-weight:600;display:block}.reel-caption small{display:block;font-size:12px;letter-spacing:.06em;margin-top:8px;color:#c3b1d8}.reel-note{color:#aaa0b6;font-size:13px;margin-top:25px}.resume{padding-top:80px;padding-bottom:80px}.resume .eyebrow{color:#5f4283;letter-spacing:.02em}.download-links>a{border-color:#d0cbd7}.download-links strong{color:#443b4e}.download-links small,.download-note{color:#6c6475}.download-links>a>span:last-child{color:#52248a}.contact{max-width:none;background:#2d1c40;padding:75px max(7%,calc((100vw - 1180px)/2)) 55px;border:0}.contact .eyebrow{color:#c5b4d9;letter-spacing:.02em}.contact h2{font-family:var(--display);font-size:clamp(42px,5.5vw,76px);font-weight:700;line-height:1.14;letter-spacing:-.045em;margin:25px 0 30px}.contact-email{font-size:23px}.contact-bottom{margin-top:40px;color:#c4bdcc}.footer{max-width:none;padding:30px 7%;background:#170f22;border:0}.footer .wordmark{font-size:25px}.footer>span,.footer>a:last-child{font-size:13px}.reveal{transform:translateY(32px);transition:opacity .9s ease,transform .9s ease}.timeline-item.reveal{transform:translateX(-35px)}.timeline-item:nth-child(even).reveal{transform:translateX(35px)}.timeline-item.in-view{transform:translateX(0)}
#project-dialog{background:#fff;color:#322e37;width:min(1220px,94vw);max-height:92svh;border:0;border-radius:4px;box-shadow:0 30px 110px #0005}dialog::backdrop{background:#0c0416d4;backdrop-filter:blur(8px)}#project-dialog .dialog-topbar{background:#fffffff5;color:#38323f;border-bottom:1px dotted #c7c2ce;padding:18px 35px}#project-dialog .dialog-topbar .eyebrow{color:#7f7987;letter-spacing:.07em}#project-dialog .close-dialog{background:#36313d;color:white;border-radius:50%;width:34px;height:34px;font-size:26px}.dialog-hero{max-height:410px}.dialog-body{padding:40px 55px 50px}.dialog-body h2{font-family:var(--display);font-size:46px;font-weight:700;line-height:1.15;letter-spacing:-.04em;color:#2d2833}.dialog-body>.eyebrow{color:#59318b}.dialog-description{color:#65606c;font-size:17px}.detail-facts{border-top:1px dotted #c8c3cf;border-bottom:1px dotted #c8c3cf}.detail-facts dt{color:#4f2188}.detail-facts dd{color:#453e4d}.detail-sections{display:grid;grid-template-columns:1fr 1fr;gap:35px 45px}.detail-section{margin:0}.detail-section h3{font-family:var(--display);font-size:24px;font-weight:600;color:#3e3648;line-height:1.35}.detail-section p,.detail-section li{color:#665f6e;font-size:16px}.detail-gallery{margin-top:40px}.detail-gallery figure{background:#f3f2f5}.gallery-open{display:block;width:100%;border:0;padding:0;position:relative;background:none}.gallery-open:after{content:'+';position:absolute;bottom:12px;right:12px;width:34px;height:34px;background:#1e122cc7;color:#fff;border-radius:50%;line-height:34px;font-size:23px;opacity:0;transition:opacity .2s}.gallery-open:hover:after,.gallery-open:focus-visible:after{opacity:1}.detail-gallery figcaption{color:#6f657b;font-size:13px}.detail-credits{color:#766d82!important;font-size:13px!important}.detail-placeholder{color:#6f657c;border-color:#b3aabf}.detail-links a{background:#36303d;color:#fff;border:0;text-align:center;flex:1;padding:14px 22px;border-radius:2px;min-width:200px}.detail-links a:hover{background:#5e2cad;color:white}#video-dialog{width:min(1160px,94vw);padding:54px 15px 15px;background:#130c1b;border:0;overflow:visible}#video-dialog>.close-dialog,#lightbox>.close-dialog{position:absolute;top:10px;right:16px;color:white;border:1px solid #ffffff60;border-radius:50%;background:#1f152b;font-size:24px;width:34px;height:34px;z-index:5}#video-content iframe{width:100%;aspect-ratio:16/9;border:0;display:block}#video-content p{font-size:13px;line-height:1.5;padding:12px 5px 0;color:#c6bad5}#video-content a{text-decoration:underline;color:#d8baff}#lightbox{width:min(1400px,98vw);height:95svh;padding:50px 60px 15px;border:0;max-height:95svh;background:#120a1bf5;overflow:hidden}#lightbox figure{margin:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0}#lightbox-image{height:auto;max-height:calc(95svh - 125px);width:auto;max-width:100%;object-fit:contain}#lightbox figcaption{font-size:14px;color:#d9d1e2;text-align:center;padding-top:15px;max-width:90%}.lightbox-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#2e203f80;width:42px;height:58px;font-size:36px;border-radius:4px;color:#ded6e8;z-index:5}.lightbox-arrow.previous{left:10px}.lightbox-arrow.next{right:10px}body.motion-paused .particle,body.motion-paused .type-caret,body.motion-paused .mouse i{animation-play-state:paused}.motion-paused .hero-frame{transition:none}.motion-paused .hero-background{transform:none!important}
@keyframes reference-title-in{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}@keyframes caret-blink{50%{opacity:0}}@keyframes particle-drift{0%{transform:translate3d(0,20px,0);opacity:.08}50%{opacity:.35}100%{transform:translate3d(var(--drift),-110px,0);opacity:.07}}
@media(min-width:1600px){.hero-content{padding:110px 70px 140px}.bio-main{padding:85px 12%}.biography{min-height:800px}.bio-portrait{min-height:800px}}
@media(max-width:1100px){.header{padding:0 30px;gap:20px}.header nav{gap:16px}.nav-link{font-size:13px}.header-actions{gap:15px}.nav-resume>span{padding:5px 14px;font-size:13px}.wordmark{font-size:24px}.biography{grid-template-columns:16% 54% 30%;min-height:720px}.bio-main{padding:55px 7%}.bio-main h2{font-size:31px}.bio-main>p:not(.eyebrow){font-size:15px}.bio-portrait{min-height:720px}.project-card .project-info,.project-card.featured .project-info{padding-left:7%;padding-right:7%}.project-card .project-info>*{max-width:510px}.project-card,.project-card.featured{height:520px}.timeline-item h3{font-size:23px}.timeline-item{padding-right:35px}.timeline-item:nth-child(even){padding-left:35px}.lab-card .project-media{height:210px}.about{gap:50px}.social-rail{right:20px;bottom:35px}.social-rail a{height:40px;width:40px}}
@media(max-width:850px){.header nav{gap:13px}.nav-resume{display:none}.header-actions{gap:15px}.hero h1{font-size:10.8vw}.biography{grid-template-columns:17% 53% 30%}.bio-main{padding:45px 7%}.bio-main h2{font-size:27px}.bio-main>p:not(.eyebrow){font-size:14px}.bio-portrait .portrait-monogram{font-size:100px}.bio-portrait .portrait-caption{font-size:12px;left:18%;right:5%}.reel-caption strong{font-size:17px}.about-copy h2{font-size:35px}.contact h2{font-size:55px}}
@media(max-width:760px){.header{height:75px;padding:0 22px}.header.scrolled{height:68px}.wordmark{font-size:25px}.header nav{gap:0;padding:18px 26px;top:100%;background:#1e142bfa}.nav-link{font-size:17px;line-height:52px}.language{font-size:13px}.menu-toggle{width:28px}.header-actions{gap:22px}.hero{min-height:570px;height:100svh}.hero-content{padding:70px 20px 110px}.hero h1{font-size:11.3vw;letter-spacing:-.045em}.hero-discipline{font-size:28px;margin-top:24px;letter-spacing:-.04em}.hero-footer{bottom:9%;padding:0 20px;height:46px;flex-direction:row}.background-credit{display:none}.motion-toggle{left:22px;width:34px;height:34px;font-size:15px}.mouse{width:26px;height:44px;border-width:2px}.mouse i{left:10px;top:10px}.social-rail{display:flex;right:16px;bottom:18px;gap:8px}.social-rail a{width:35px;height:35px;box-shadow:0 2px 9px #0002}.social-rail svg{width:19px;height:19px}.biography{display:grid;grid-template-columns:1fr 1fr;min-height:0}.metrics{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);padding:25px 10px;margin:0;border-right:0;border-bottom:1px dotted #b5aebe}.metric{padding:8px 4px}.metric-icon{font-size:25px}.metric p{font-size:12px!important;line-height:1.5}.metric strong{font-size:27px}.bio-main{grid-column:1/-1;grid-row:2;padding:50px 25px 40px}.bio-main h2{font-size:31px;max-width:410px;line-height:1.25}.bio-main .eyebrow{font-size:12px;margin-bottom:18px}.bio-main>p:not(.eyebrow){font-size:16px;max-width:500px;margin-top:20px;line-height:1.85}.bio-links{gap:25px;margin-top:26px}.bio-portrait{grid-column:1/-1;height:220px;min-height:0;clip-path:none;aspect-ratio:auto;max-width:none}.bio-portrait .portrait-monogram{font-size:88px;transform:none}.bio-portrait .portrait-caption{bottom:20px;left:10%;right:10%;font-size:12px}.backstory{padding:55px 0 35px}.section-display{font-size:36px}.timeline{margin-top:42px;padding-left:15px}.timeline:before{left:23px;bottom:40px}.timeline-item,.timeline-item:nth-child(even){width:100%;text-align:left;margin-left:0;padding:0 18px 42px 41px;margin-bottom:0}.timeline-item:before,.timeline-item:nth-child(even):before{left:0;right:auto;width:16px;height:16px;top:8px}.timeline-item h3{font-size:22px}.timeline-item h4{font-size:14px;margin:10px 0}.timeline-item p{font-size:14px;margin-bottom:18px;line-height:1.8}.timeline-item button{font-size:13px;padding:8px 23px}.timeline-item.reveal,.timeline-item:nth-child(even).reveal{transform:translateY(25px)}.timeline-item.in-view,.timeline-item:nth-child(even).in-view{transform:none}.work>.section-heading{padding-top:45px;padding-bottom:30px;display:block}.work h2{font-size:39px}.work .section-heading p{font-size:15px;line-height:1.7;margin-top:12px}.work .text-link{margin-top:16px}.work{padding-bottom:22px}.project-card,.project-card.featured{height:520px}.project-card:after{background:linear-gradient(180deg,#1a10264d 0%,#10071b9c 30%,#10071bf0 100%)}.project-card .project-info,.project-card.featured .project-info{padding:175px 28px 65px;justify-content:flex-end}.project-card .project-info h3,.project-card.featured .project-info h3{font-size:35px;line-height:1.15;margin:12px 0}.project-card .project-info>p,.project-card.featured .project-info>p{font-size:15px;line-height:1.75;max-width:440px}.project-card .project-info .project-meta{font-size:12px}.featured-label{font-size:12px;margin-bottom:5px}.project-tags{gap:6px;margin-top:14px}.project-tags span{font-size:12px;padding:3px 7px}.project-media .project-counter{top:25px;right:28px;font-size:15px}.project-media .view-badge{right:28px;bottom:20px;font-size:12px;padding:7px 19px;line-height:1.5}.project-card .missing-media strong{right:25%;top:12%;font-size:75px}.project-card .missing-media small{top:34%;bottom:auto;left:0;right:0;text-align:center;font-size:12px}.showcase-controls{padding-top:20px;gap:18px}.showcase-arrow{width:34px;height:34px;font-size:20px}.showcase-dots{gap:11px}.showcase-dots button{width:7px;height:7px}.showcase-count{font-size:12px}.experiments,.about,.skills,.resume{padding-left:24px;padding-right:24px}.experiments{padding-top:48px;padding-bottom:45px}.section-heading h2,.skills h2,.resume h2{font-size:34px;line-height:1.15}.section-heading .eyebrow{font-size:12px}.lab-grid{gap:26px 15px}.lab-card .project-media{height:200px}.lab-card h3{font-size:17px;line-height:1.4;gap:10px}.lab-card p{font-size:13px;line-height:1.6}.lab-card .view-badge{bottom:10px;right:10px;font-size:12px;padding:6px 11px}.art-link strong{font-size:21px}.art-link p{font-size:13px}.art-link{gap:16px}.about{display:flex;flex-direction:column-reverse;padding-top:45px;padding-bottom:45px;gap:35px}.about-copy h2{font-size:36px}.about-copy .about-lead{font-size:18px}.about-visual{max-width:430px;width:100%;align-self:center}.about-visual img{max-height:420px;object-position:center}.education p{font-size:13px}.education strong{font-size:15px}.skills{padding-top:25px;padding-bottom:50px}.skill-columns{gap:25px;margin-top:27px}.skill-columns h3{font-size:18px;margin-bottom:13px}.skill-columns p{font-size:16px}.tool-tags span{font-size:13px}.reel-section{padding:50px 0 40px}.reel-section h2{font-size:38px}.reel-section .section-heading p{font-size:15px;margin-top:13px}.reel-grid{grid-template-columns:1fr;gap:22px}.reel-card{aspect-ratio:16/10}.reel-play{width:56px;height:56px;font-size:21px}.reel-caption{padding:24px 22px 18px}.reel-caption strong{font-size:19px}.reel-caption small{font-size:12px}.reel-note{font-size:13px;line-height:1.8;padding-right:20px}.resume{padding-top:50px;padding-bottom:50px}.download-links strong{font-size:17px}.download-note{font-size:13px}.contact{padding:48px 24px 38px}.contact h2{font-size:40px;line-height:1.2;margin:20px 0 30px;max-width:520px}.contact-email{font-size:16px;gap:20px}.contact-bottom{font-size:13px;padding-right:35px;gap:25px;margin-top:30px}.footer{padding:28px 24px 80px}.footer>span,.footer>a:last-child{font-size:12px}.footer .wordmark{font-size:25px}#project-dialog{width:96vw;max-height:95svh;border-radius:2px}#project-dialog .dialog-topbar{padding:12px 18px}.dialog-body{padding:27px 23px 35px}.dialog-body h2{font-size:31px}.dialog-description{font-size:16px}.detail-sections{grid-template-columns:1fr;gap:29px}.detail-section h3{font-size:22px}.detail-section p,.detail-section li{font-size:15px}.detail-facts{grid-template-columns:1fr;padding:20px 0}.detail-gallery{margin-top:30px}.gallery-open:after{opacity:1}.detail-links a{min-width:100%;font-size:14px}.detail-gallery figcaption{font-size:13px}#lightbox{padding:55px 40px 20px;width:98vw}#lightbox-image{max-height:calc(95svh - 145px)}.lightbox-arrow{width:30px;height:45px;font-size:28px}.lightbox-arrow.previous{left:3px}.lightbox-arrow.next{right:3px}#lightbox figcaption{font-size:12px}#video-dialog{padding:53px 8px 10px}#video-content p{font-size:12px;padding:12px 9px 3px}}
@media(max-width:390px){.hero h1{font-size:11vw}.hero-discipline{font-size:25px}.bio-main h2{font-size:28px}.lab-card .project-media{height:170px}.project-card .project-info h3,.project-card.featured .project-info h3{font-size:30px}.contact h2{font-size:35px}.contact-email{font-size:14px}.showcase-controls{gap:12px}.metrics{padding-left:6px;padding-right:6px}}
@media(prefers-reduced-motion:reduce){.hero-frame{transition:none}.particle{display:none}.reveal,.timeline-item.reveal,.timeline-item:nth-child(even).reveal{opacity:1;transform:none}.hero-content{animation:none}.project-grid{scroll-behavior:auto}.hero-background,.backstory-backdrop{will-change:auto;transform:none!important}}

/* Deep violet controls on light surfaces; lavender accents on dark surfaces. */
.biography,.work,.experiments,.about,.skills,.resume,#project-dialog{--accent:#7540cf}
.nav-resume>span,.bio-links .button,.detail-links a{background:#7540cf}
.nav-resume:hover>span,.bio-links .button:hover,.detail-links a:hover{background:#5e2cad}
.metric strong,.metric-icon{color:#7540cf}
.work .text-link:hover,.bio-links>a:last-child:hover{color:#5e2cad}
.hero h1{color:#e5dced}
