@import "https://fonts.googleapis.com/css2?family=DM+Mono&family=DM+Sans:wght@400;500;600&family=Playfair+Display:ital@0;1&display=swap";:root{--black:#050505;--paper:#f2f1ed;--ink:#101010;--muted:#898989;--line:#292929;--sans:"DM Sans", sans-serif;--mono:"DM Mono", monospace;--serif:"Playfair Display", serif;color:#fff;background:var(--black);font-family:var(--sans);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{background:var(--black);min-width:320px;margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:4px;outline:2px solid}button:not(:disabled){cursor:pointer}.site-nav{z-index:2;justify-content:space-between;padding:28px 4vw;display:flex;position:absolute;top:0;left:0;right:0}.wordmark{font-weight:600}.wordmark span,.loading-mark span{color:#999}.nav-links{font:11px var(--mono);text-transform:uppercase;gap:3vw;display:flex}.nav-links a{opacity:.7}.nav-contact{gap:7px;display:flex}.menu-toggle{color:#fff;background:0 0;border:0;display:none}.hero{flex-direction:column;justify-content:flex-start;min-height:100svh;padding:145px 4vw 34px;display:flex;position:relative;overflow:hidden}.hero-grid{opacity:.55;background-image:linear-gradient(90deg,#0000 49.9%,#171717 50%,#0000 50.1%),linear-gradient(#0000 49.9%,#121212 50%,#0000 50.1%);background-size:25% 100%,100% 25%;position:absolute;inset:0}.hero-meta{color:#777;font:10px var(--mono);text-transform:uppercase;letter-spacing:.1em;justify-content:space-between;display:flex;position:relative}.hero-title{margin-top:clamp(60px,12vh,120px);margin-left:8vw;position:relative}.eyebrow{color:var(--muted);font:10px var(--mono);letter-spacing:.13em;text-transform:uppercase}.hero h1{letter-spacing:-.08em;text-transform:uppercase;margin:0;font-size:clamp(72px,14vw,220px);font-weight:500;line-height:.78}.hero h1 span{display:block}.hero h1 span:last-child{margin-left:11vw}.hero h1 i,.contact h2 em{font-family:var(--serif);font-weight:500}.hero-description{color:#aaa;max-width:340px;margin:44px 0 0 28vw}.text-link,.contact-email{font:11px var(--mono);text-transform:uppercase;border-bottom:1px solid #555;padding-bottom:7px}.section-light{color:var(--ink);background:var(--paper)}.section-dark{background:var(--black)}.about,.skills,.projects,.contact{padding:145px 8vw}.experience{padding:95px 8vw}.section-heading{grid-template-columns:70px 1fr;gap:14px;margin-bottom:100px;display:grid}.section-number{color:var(--muted);font:11px var(--mono)}.section-heading h2{letter-spacing:-.07em;grid-column:2;max-width:720px;margin:18px 0 0;font-size:clamp(42px,6vw,86px);font-weight:500;line-height:.95}.about-grid,.contact{grid-template-columns:1.2fr .8fr;gap:10vw;margin-left:8vw;display:grid}.about-lead{letter-spacing:-.05em;font-size:clamp(27px,3.2vw,48px);line-height:1.03}.about-copy{max-width:300px;line-height:1.5}.skills-list{border-top:1px solid var(--line)}.skill-row{border-bottom:1px solid var(--line);grid-template-columns:70px 1fr 1fr 24px;align-items:center;min-height:100px;display:grid}.skill-row h3{margin:0;font-size:clamp(24px,3vw,44px);font-weight:400}.skill-level,.skill-detail{font:11px var(--mono);color:#777;text-transform:uppercase}.case-image{object-fit:cover;filter:grayscale();width:100%;height:100%}.contact h2{letter-spacing:-.09em;margin:34px 0 45px;font-size:clamp(54px,8vw,120px);font-weight:500;line-height:.84}.contact-form{align-content:end;gap:28px;display:grid}.contact-form label{color:#aaa;font:13px var(--mono);text-transform:uppercase;letter-spacing:.04em;gap:11px;display:grid}.contact-form input,.contact-form textarea{color:#fff;background:0 0;border:0;border-bottom:1px solid #444;outline:0;padding:0 0 12px}.button{width:max-content;font:11px var(--mono);text-transform:uppercase;border:1px solid;gap:10px;padding:15px 20px;display:flex}.button-white{color:#050505;background:#fff}.site-footer{color:#666;font:10px var(--mono);text-transform:uppercase;background:#050505;justify-content:space-between;padding:24px 4vw;display:flex}.case-study{color:var(--ink);background:var(--paper);padding:160px 8vw 120px}.case-hero{max-width:900px;margin:0 auto 100px}.back-link{text-transform:uppercase;gap:8px;margin-bottom:90px;display:inline-flex}.case-hero h1{letter-spacing:-.1em;margin:32px 0;font-size:clamp(68px,13vw,190px);font-weight:500;line-height:.8}.case-hero>p:last-child{max-width:400px;margin-left:30%;font-size:18px}.case-image{max-height:75vh;display:block}.case-grid,.case-sections{grid-template-columns:1fr 1fr;gap:10vw;margin:130px 10vw;display:grid}.case-sections{border-top:1px solid #d5d4cf;margin-bottom:100px;padding-top:50px}.stack-list{flex-wrap:wrap;gap:8px;display:flex}.stack-list span{font:11px var(--mono);border:1px solid #d5d4cf;padding:8px 11px}.loading-screen{z-index:100;background:#050505;place-content:center;justify-items:center;gap:25px;animation:.5s 1.15s forwards away;display:grid;position:fixed;inset:0}.loading-line{background:#333;width:150px;height:1px}.loading-line span{background:#fff;width:100%;height:100%;animation:.8s line;display:block}.loading-screen p{color:#666;font:10px var(--mono)}@keyframes line{0%{transform-origin:0;transform:scaleX(0)}}@keyframes away{to{opacity:0;visibility:hidden}}@media (width<=760px){.site-nav{padding:22px 6vw}.menu-toggle{display:block}.nav-links{background:#050505;flex-direction:column;padding:90px 6vw 35px;display:none;position:absolute;top:0;left:0;right:0}.nav-links.is-open{display:flex}.hero{padding:125px 6vw 28px}.hero-meta span:last-child{display:none}.hero-title{margin-left:0}.hero h1{font-size:clamp(64px,17vw,120px)}.hero h1 span:last-child{margin-left:9vw}.hero-description{margin:42px 0 0 15vw}.about,.skills,.projects,.experience,.contact{padding:90px 6vw}.section-heading{grid-template-columns:40px 1fr;margin-bottom:60px}.section-heading h2{font-size:clamp(40px,12vw,70px)}.about-grid,.contact,.case-grid,.case-sections{grid-template-columns:1fr;gap:50px;margin-left:0}.skill-row{grid-template-columns:36px 1fr 24px;min-height:80px}.skill-detail{display:none}.contact h2{font-size:18vw}.case-study{padding:125px 6vw 80px}.case-hero h1{font-size:20vw}.case-hero>p:last-child{margin-left:15vw}.case-grid{margin:80px 0}.case-sections{margin:0 0 70px}.site-footer{flex-wrap:wrap;gap:18px;padding:22px 6vw}}.contact.section-dark{color:#fff;background:var(--black)}.contact .eyebrow{font:11px var(--mono);color:#a0a0a0;letter-spacing:.05em}.contact-form label{color:#a0a0a0;font:13px var(--mono);letter-spacing:.04em}.contact h2{color:#fff}.contact-email{color:#fff;font:15px var(--mono);letter-spacing:.03em;border-bottom:1px solid #555;padding-bottom:7px;transition:opacity .3s,border-color .3s}.contact-email:hover{opacity:.72;border-color:#fff}.contact-socials a{color:#bbb;font:13px var(--mono);letter-spacing:.03em;transition:color .3s,opacity .3s}.contact-socials a:hover{color:#fff;opacity:.8}.contact-form input,.contact-form textarea{color:#fff;background:0 0;border:0;border-bottom:1px solid #555;outline:0;width:100%;padding:4px 0 12px;font-family:inherit;font-size:16px;transition:border-color .3s}.contact-form input::placeholder,.contact-form textarea::placeholder{color:#666;opacity:1;font-size:14px;font-family:var(--mono);letter-spacing:.05em}.contact-form input:focus,.contact-form textarea:focus{border-color:#fff}.contact .button-white{font:13px var(--mono);color:#fff;background:0 0;border-color:#fff;align-items:center;min-height:48px;padding:16px 26px;transition:color .3s,background-color .3s,border-color .3s}.contact .button-white svg{transition:transform .3s}.contact .button-white:hover{color:#050505;background:#fff;border-color:#fff}.contact .button-white:hover svg{transform:translate(3px,-3px)}.contact .form-status{font:12px var(--mono);color:#ff6b6b;margin-top:10px}.contact .form-status-success{color:#8ee28e}.contact .button:disabled{cursor:wait;opacity:.65}.site-footer a svg{transition:transform .3s}.site-footer a:hover svg{transform:translate(3px,-3px)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.hero-cinematic{isolation:isolate}.hero-photo{z-index:0;opacity:0;clip-path:inset(0 0 100%);width:min(31vw,460px);height:min(58vh,640px);animation:1.4s cubic-bezier(.2,.7,.2,1) .35s forwards reveal-photo;position:absolute;top:17%;right:12%;overflow:hidden;transform:rotate(3deg)scale(.96)}.hero-photo img{object-fit:cover;mix-blend-mode:screen;filter:grayscale()contrast(1.05);will-change:filter, transform;width:100%;height:100%;transition:filter .65s cubic-bezier(.2,.8,.2,1),transform .65s cubic-bezier(.2,.8,.2,1)}@media (hover:hover){.hero-photo:hover img{filter:grayscale(0%)contrast(1.05);transform:scale(1.015)}}.photo-fallback{color:#333;width:100%;height:100%;font:clamp(50px, 9vw, 140px) var(--mono);letter-spacing:-.12em;background:#151515;place-items:center;display:grid}.hero-cinematic .hero-title{z-index:1}.hero-cinematic .hero-name-first,.hero-cinematic .hero-name-last{will-change:transform}.about-statement-lines{margin:0;font-size:clamp(54px,8vw,130px)}.about-statement-lines span{will-change:transform, opacity;display:block}.project-track{gap:5vw;width:max-content;display:flex}.project-slide{border-top:1px solid var(--line);width:min(86vw,1240px);min-height:65vh;padding:22px 0}.project-slide-meta{color:#777;font:10px var(--mono);text-transform:uppercase;justify-content:space-between;display:flex}.project-slide-grid{grid-template-columns:1.25fr .75fr;align-items:center;gap:5vw;min-height:58vh;display:grid}.project-visual{aspect-ratio:1.45;background:#151515;position:relative;overflow:hidden}.project-visual img{object-fit:cover;filter:grayscale();width:100%;height:100%;transition:transform .7s,filter .7s}.project-visual:hover img{filter:grayscale(.2);transform:scale(1.035)}.project-placeholder{color:#777;letter-spacing:-.08em;place-content:center;justify-items:center;font-size:clamp(28px,4vw,60px);display:none;position:absolute;inset:0}.project-slide-copy h3{letter-spacing:-.09em;margin:20px 0 12px;font-size:clamp(58px,8vw,130px);font-weight:400;line-height:.8}.project-type{color:#ddd;max-width:260px;font-size:16px}.project-summary{color:#888;max-width:350px;margin-top:34px;font-size:14px;line-height:1.45}.project-stack{color:#777;font:10px var(--mono);text-transform:uppercase;flex-wrap:wrap;gap:8px;margin-top:28px;display:flex}.project-stack span{border-bottom:1px solid #333;padding-bottom:5px}.contact-socials{flex-wrap:wrap;gap:18px;margin-top:40px;display:flex}.case-visual{background:#151515;min-height:35vh;position:relative}.case-placeholder{color:#777;letter-spacing:-.09em;place-content:center;justify-items:center;font-size:clamp(30px,6vw,90px);display:none;position:absolute;inset:0}.case-actions{align-items:center;gap:25px;display:flex}.case-visual.has-error .case-placeholder{display:grid}.custom-cursor{z-index:200;pointer-events:none;mix-blend-mode:difference;background:#fff;border-radius:50%;width:8px;height:8px;transition:width .25s,height .25s;position:fixed;top:0;left:0;transform:translate(-100px,-100px)}.custom-cursor.is-active{place-items:center;width:92px;height:92px;display:grid}.custom-cursor.is-active:after{content:attr(data-label);color:#fff;font:9px var(--mono);text-align:center;text-transform:uppercase}.hero-cinematic:after{content:"";z-index:-1;pointer-events:none;background:var(--black);position:absolute;inset:0}@keyframes reveal-photo{to{opacity:.82;clip-path:inset(0);transform:rotate(3deg)scale(1)}}@media (width<=760px){.hero-photo{opacity:.55;width:42vw;height:32vh;top:24%;right:7%}.custom-cursor{display:none}}.hero-cinematic .hero-photo{z-index:0;opacity:0;width:min(26vw,390px);height:min(52vh,575px);transform:rotate(3deg)scale(.94)}.hero-cinematic .hero-meta{z-index:1}@keyframes reveal-photo-refined{to{opacity:.68;clip-path:inset(0);transform:rotate(3deg)scale(1)}}.hero-cinematic .hero-photo{animation-name:reveal-photo-refined}@media (width<=760px){.hero-cinematic .hero-photo{opacity:0;width:36vw;height:29vh}}@media (prefers-reduced-motion:reduce){.hero-cinematic .hero-photo{opacity:.58;clip-path:none;transform:rotate(3deg)scale(1)}.hero-photo{opacity:.6;clip-path:none;animation:none;transform:none}.custom-cursor{display:none}}.project-visual.has-error .project-placeholder{display:grid}@media (width<=760px){.hero-photo{opacity:.55;width:42vw;height:32vh;top:24%;right:7%}.hero-cinematic .hero-title{margin-top:8vh}.about-statement-lines{font-size:18vw}.skill-items{display:none}.skill-row:hover{padding:0}.project-track{gap:80px;width:auto;display:grid}.project-slide{width:100%;min-height:auto}.project-slide-grid{grid-template-columns:1fr;gap:28px;min-height:auto}.project-visual{aspect-ratio:1.15}.project-slide-copy h3{font-size:18vw}}.project-ctas{align-items:center;gap:18px;margin-top:28px;display:flex}.project-cta{color:#fff;font:10px var(--mono);text-transform:uppercase;border-bottom:1px solid #555;align-items:center;gap:7px;padding-bottom:7px;transition:border-color .25s,color .25s;display:inline-flex}.project-cta svg{transition:transform .25s}.project-cta:hover{border-color:#fff}.project-cta:hover svg{transform:translate(3px,-3px)}.project-cta-disabled{cursor:default;color:#555;border-color:#333}.project-cta-disabled:hover{color:#555;border-color:#333}.project-cta-disabled:hover svg{transform:none}@media (width<=760px){.project-ctas{flex-wrap:wrap;gap:14px}}@media (width>=761px){.projects{height:100svh;min-height:0;padding-top:110px;padding-bottom:36px;overflow:hidden}.projects .section-heading{margin-bottom:28px}.project-track{padding-right:80px}.project-slide{height:calc(100svh - 190px);min-height:0;padding-bottom:28px}.project-slide-grid{height:calc(100% - 42px);min-height:0}}.experience .professional-header{grid-template-columns:minmax(190px,.32fr) 1fr;align-items:start;gap:8vw;margin-bottom:48px;display:grid}.professional-label,.professional-eyebrow{color:#777;font:10px var(--mono);letter-spacing:.12em;text-transform:uppercase}.professional-label{gap:12px;display:flex}.professional-heading{letter-spacing:-.08em;will-change:transform, opacity;max-width:760px;margin:0;font-size:clamp(52px,7vw,104px);font-weight:500;line-height:.88}.professional-details{grid-template-columns:1.25fr .75fr;gap:6vw;margin-top:40px;display:grid}.professional-eyebrow{margin:0 0 16px}.certification-row,.achievement-line{border-bottom:1px solid #d5d4cf;align-items:center;min-height:52px;transition:transform .3s,color .3s,border-color .3s;display:flex;position:relative}.certification-row{justify-content:space-between;gap:16px}.certification-row span,.certification-link{color:inherit;font-size:15px}.certification-link{text-underline-offset:5px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;transition:opacity .3s,text-decoration-color .3s}.certification-link:hover{opacity:.72;text-decoration-color:currentColor}.certification-row svg,.achievement-line svg{color:#777;flex:none;transition:transform .3s,color .3s}.certification-row:hover,.achievement-line:hover{color:#000;border-color:#111;transform:translate(6px)}.certification-row:hover svg,.achievement-line:hover svg{color:#000;transform:translate(3px,-3px)}.achievement-line{padding:10px 30px 14px 0;display:block}.achievement-line h3{letter-spacing:-.06em;margin:0 0 6px;font-size:clamp(24px,2.5vw,36px);font-weight:500}.achievement-line p{color:#777;margin:0;font-size:14px}.achievement-line svg{position:absolute;top:14px;right:0}.experience .resume-actions{align-items:center;gap:26px;margin:40px 0 0;display:flex}.experience .resume-view{transition:color .3s,background-color .3s,border-color .3s}.experience .resume-view svg,.experience .resume-download svg{transition:transform .3s}.experience .resume-view:hover{color:#fff;background:#333;border-color:#333}.experience .resume-view:hover svg{transform:translate(3px,-3px)}.experience .resume-download:hover svg{transform:translateY(3px)}@media (width<=760px){.experience .professional-header{margin-bottom:64px;display:block}.professional-heading{margin-top:24px;font-size:15vw}.professional-details{grid-template-columns:1fr;gap:56px;margin-top:56px}.certification-row{min-height:64px}.certification-row span,.certification-link{max-width:calc(100% - 30px);font-size:14px;line-height:1.35}.experience .resume-actions{flex-direction:column;align-items:flex-start;gap:20px;margin-top:54px}}.skills .skill-row{transition:background-color .3s}.skills .skill-row h3,.skills .skill-row .skill-arrow{transition:transform .3s,font-weight .3s}.skills .skill-row .skill-detail,.skills .skill-row .skill-items{opacity:.72;transition:opacity .3s}.skills .skill-row:hover{background:#101010;padding:0}.skills .skill-row:hover h3{font-weight:500;transform:translate(7px)}.skills .skill-row:hover .skill-arrow{transform:translate(6px)}.skills .skill-row:hover .skill-detail,.skills .skill-row:hover .skill-items{opacity:1}.timeline-container{width:100%;margin:32px 0 44px;position:relative}.timeline-line-track{z-index:1;background:#d5d4cf;width:1px;position:absolute;top:8px;bottom:8px;left:50%;transform:translate(-50%)}.timeline-line-progress{transform-origin:top;background:#050505;width:100%;height:100%;position:absolute;top:0;left:0;transform:scaleY(0)}.timeline-milestones{z-index:2;flex-direction:column;gap:36px;display:flex;position:relative}.timeline-item{grid-template-columns:1fr 60px 1fr;align-items:center;width:100%;display:grid;position:relative}.timeline-spacer{width:100%}.timeline-node-wrap{z-index:3;justify-content:center;align-items:center;width:100%;display:flex}.timeline-node{background:#f7f6f2;border:1.5px solid #888;border-radius:50%;width:10px;height:10px;transition:transform .3s cubic-bezier(.2,.8,.2,1),border-color .3s,background-color .3s,box-shadow .3s;display:block}.timeline-item:hover .timeline-node{background:#050505;border-color:#050505;transform:scale(1.35);box-shadow:0 0 0 4px #0505051f}.timeline-content{background:0 0;border:1px solid #0000;border-radius:4px;padding:12px 18px;transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .35s,background-color .35s}.timeline-item.side-left .timeline-content{text-align:right;justify-self:end;max-width:440px}.timeline-item.side-left:hover .timeline-content{transform:translate(6px)}.timeline-item.side-right .timeline-content{text-align:left;justify-self:start;max-width:440px}.timeline-item.side-right:hover .timeline-content{transform:translate(-6px)}.timeline-period{color:#777;font:11px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;display:inline-block}.timeline-title{letter-spacing:-.04em;color:#050505;margin:0 0 4px;font-size:clamp(18px,1.9vw,26px);font-weight:500;line-height:1.15}.timeline-institution{color:#666;margin:0;font-size:14px;line-height:1.35}.timeline-detail{color:#050505;font:12px/1.4 var(--mono);letter-spacing:.02em;margin:4px 0 0}.timeline-item.is-primary .timeline-content{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffb3;border:1px solid #d5d4cf;padding:18px 24px}.timeline-item.is-primary:hover .timeline-content{background:#fff;border-color:#050505}.timeline-item.is-primary .timeline-title{font-size:clamp(20px,2.2vw,30px)}.timeline-item.is-primary .timeline-node{background:#050505;border-color:#050505;width:12px;height:12px}@media (width<=760px){.timeline-container{margin:24px 0 36px}.timeline-line-track{left:14px;transform:none}.timeline-milestones{gap:28px}.timeline-item{grid-template-columns:28px 1fr;gap:14px}.timeline-spacer{display:none}.timeline-node-wrap{justify-content:center}.timeline-item.side-left .timeline-content,.timeline-item.side-right .timeline-content{text-align:left;justify-self:start;max-width:100%;padding:0}.timeline-item.side-left:hover .timeline-content,.timeline-item.side-right:hover .timeline-content{transform:none}.timeline-item.is-primary .timeline-content{padding:16px}}
