@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-400.ttf)format("truetype");font-weight:400;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-600.ttf)format("truetype");font-weight:600;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-700.ttf)format("truetype");font-weight:700;font-display:swap}@font-face{font-family:Manrope;src:url(/fonts/manrope-800.ttf)format("truetype");font-weight:800;font-display:swap}@font-face{font-family:Anton;src:url(/fonts/anton-400.ttf)format("truetype");font-weight:400;font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--canvas:#080808;--surface:#101010;--paper:#f3f3f3;--ink:#111;--text:#f6f6f6;--white:#fff;--muted:#ababab;--muted-on-light:#5d5d5d;--line:#333;--line-strong:#666;--link:#eee;font-synthesis:none;color:var(--text);background:var(--canvas);font-family:DM Sans,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:104px}body{-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--text);outline-offset:5px}::selection{color:var(--canvas);background:var(--white)}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4{margin:0;font-family:Manrope,sans-serif;font-weight:800}h1,h2,h3{letter-spacing:-.05em}p,figure,dl,dd{margin:0}.page-width{width:min(1440px,100% - 80px);margin-inline:auto}.section-space{padding-block:96px}.eyebrow{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:14px;font-weight:600;line-height:1.5}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;color:var(--ink);background:var(--white);border:2px solid var(--ink);padding:12px 18px;position:fixed;top:12px;left:12px;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.reading-progress{z-index:1000;pointer-events:none;background:var(--white);height:2px;transform:scaleX(var(--scroll-progress,0));transform-origin:0;position:fixed;inset:0 0 auto}.site-header{z-index:20;color:var(--text);background:#000;border-bottom:1px solid #272727;position:sticky;top:0}.header-inner{align-items:center;gap:36px;min-height:72px;display:flex}.wordmark{white-space:nowrap;align-items:center;gap:14px;margin-right:auto;display:inline-flex}.wordmark-symbol{letter-spacing:-.09em;font:800 28px/1 Manrope,sans-serif}.wordmark-name{letter-spacing:.03em;text-transform:uppercase;font-size:14px;font-weight:600}.desktop-nav{align-items:center;gap:32px;display:flex}.desktop-nav a{color:#dedede;align-items:center;min-height:44px;font-size:15px;font-weight:400;display:inline-flex;position:relative}.desktop-nav a:after{content:"";background:var(--white);transform-origin:0;height:1px;transition:transform .2s;position:absolute;inset:auto 0 5px;transform:scaleX(0)}.desktop-nav a:hover{color:var(--white)}.desktop-nav a:hover:after{transform:scaleX(1)}.header-actions{align-items:center;gap:20px;display:flex}.header-cv{min-height:44px;color:var(--text);border:1px solid #a0a0a0;align-items:center;gap:16px;padding:8px 20px;font-size:15px;font-weight:600;display:inline-flex}.header-cv:hover{color:var(--ink);background:var(--white)}.motion-toggle{color:#dedede;white-space:nowrap;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:8px 0;font-size:14px;display:inline-flex}.motion-toggle:hover{text-underline-offset:5px;text-decoration:underline}.motion-toggle:disabled{cursor:default;color:#bdbdbd;text-decoration:none}.mobile-menu{display:none}.hero-region{isolation:isolate;background:linear-gradient(90deg,#080808 0% 52%,#151515 52% 100%);position:relative}.hero-region:before{content:"";z-index:-1;pointer-events:none;opacity:.28;background:repeating-linear-gradient(0deg,#0000 0 3px,#ffffff08 3px 4px);position:absolute;inset:0}.hero{padding-block:24px;display:block;position:relative;container:portfolio-hero/inline-size}.hero-meta{color:#bdbdbd;text-transform:uppercase;letter-spacing:.035em;border-bottom:1px solid #555;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-bottom:22px;padding-bottom:16px;font:14px/1.5 Courier New,monospace;display:flex}.hero-location{text-align:right}.hero-role{color:#111;text-transform:uppercase;letter-spacing:-.015em;background:#e7e7e7;max-width:100%;padding:6px 10px;font-size:clamp(16px,1.35vw,20px);line-height:1.4;display:inline-block}.hero-name{color:#efefef;letter-spacing:.005em;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.1em .12em;margin:10px 0 22px;padding-block:14px;font-family:Anton,Impact,Arial Narrow,sans-serif;font-size:min(16cqw,252px);font-weight:400;line-height:1;display:flex;position:relative}.hero-name:before,.hero-name:after{content:"";pointer-events:none;border-style:solid;border-color:#777;width:12px;height:12px;position:absolute}.hero-name:before{border-width:1px 0 0 1px;top:3px;left:-10px}.hero-name:after{border-width:0 1px 1px 0;bottom:3px;right:-10px}.hero-name>span{min-width:0;display:block}.hero-intro{justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:24px;display:flex}.hero-intro-copy{min-width:0}.hero-proof-link{color:#eee;text-underline-offset:5px;align-items:center;gap:12px;min-height:44px;margin-top:6px;font-size:15px;line-height:24px;text-decoration:underline;display:inline-flex}.hero-proof-link>span{flex-shrink:0}.hero-description{color:#eee;letter-spacing:-.02em;max-width:650px;font-size:clamp(17px,1.5vw,23px);line-height:1.45}.hero-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:12px;display:flex}.button{border:1px solid #0000;justify-content:space-between;align-items:center;gap:24px;min-height:52px;padding:12px 24px;font-size:16px;font-weight:600;transition:background-color .2s,color .2s,transform .2s;display:inline-flex}.button--primary{color:var(--ink);background:var(--white);border-color:var(--white);position:relative}.hero-actions .button--primary:after{content:"";pointer-events:none;background:linear-gradient(45deg,#0000 0% 49%,#151515 50% 100%);width:10px;height:10px;position:absolute;top:-1px;right:-1px}.button--primary:hover{background:#d8d8d8;transform:translateY(-2px)}.button--outline{color:var(--text);background:#000;border-color:#626262}.button--outline:hover{background:#222;border-color:#bcbcbc}.button--text{color:var(--text);background:0 0;padding-inline:10px}.button--text:hover{text-underline-offset:5px;text-decoration:underline}.hero-actions .button--outline{border-color:#0000}.work-strip{background:#0d0d0d;border:1px solid #555;grid-template-columns:minmax(0,52fr) minmax(0,28fr) minmax(0,20fr);gap:8px;padding:9px 9px 0;display:grid;position:relative}.work-strip:before,.work-strip:after{content:"";z-index:2;pointer-events:none;border-style:solid;border-color:#eee;width:16px;height:16px;position:absolute}.work-strip:before{border-width:2px 0 0 2px;top:-1px;left:-1px}.work-strip:after{border-width:0 2px 2px 0;bottom:-1px;right:-1px}.work-preview{min-width:0;color:var(--text);text-align:left;background:0 0;border:0;padding:0;display:block}.work-preview-frame{background:#e8e8e8;border:1px solid #686868;height:clamp(240px,23vw,352px);display:block;position:relative;overflow:hidden}.work-preview-frame>img{object-fit:cover;object-position:center;filter:grayscale();width:100%;max-width:none;height:calc(100% + 48px);transform:translate3d(0, var(--parallax-y,0px), 0);position:absolute;inset:-24px 0 auto}.work-preview:first-child img{object-position:53% 44%}.work-preview:nth-child(2) img{object-position:48% 45%;filter:grayscale()invert()}.work-preview:nth-child(3) img{object-position:62% 46%}.work-preview-caption{color:#eee;text-transform:uppercase;letter-spacing:-.025em;justify-content:space-between;align-items:center;gap:12px;min-height:50px;padding:10px 8px 8px 0;font-family:Courier New,monospace;font-size:14px;line-height:1.4;display:flex}.work-preview-caption>span:last-child{flex-shrink:0;font-size:23px;line-height:1}.work-preview:hover .work-preview-caption>span:first-child{text-underline-offset:5px;text-decoration:underline}.work-preview:hover .work-preview-frame{border-color:#f6f6f6}.strip-caption{color:#bebebe;margin-top:12px;font-size:14px;line-height:1.5}.image-fallback{width:100%;height:100%;min-height:180px;color:var(--ink);background:#e8e8e8;align-content:center;justify-items:start;gap:16px;padding:28px;font-size:16px;line-height:1.6;display:grid}.image-fallback a{min-height:44px;color:var(--ink);text-underline-offset:5px;align-items:center;font-size:14px;text-decoration:underline;display:inline-flex}.work-preview-frame>.image-fallback{position:absolute;inset:0}.project-screen>.image-fallback{aspect-ratio:8/5;height:auto;padding-bottom:72px}.project-inset>.image-fallback{height:auto;min-height:180px}.work-section.page-width{--muted:var(--muted-on-light);--text:var(--ink);--link:var(--ink);width:100%;max-width:none;color:var(--ink);background:var(--paper);padding:48px max(40px,50vw - 720px) 88px}.work-section :focus-visible{outline-color:var(--ink)}.work-section .project-stage--data :focus-visible{outline-color:var(--white)}.project-topline{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);align-items:start;gap:48px;display:grid}.project-topline h3{letter-spacing:.005em;text-transform:uppercase;text-wrap:balance;max-width:920px;margin-top:14px;font-family:Anton,Impact,sans-serif;font-size:clamp(46px,5.25vw,80px);font-weight:400;line-height:1.06}.project-summary{border-left:1px solid #999;margin-top:25px;padding-left:38px}.project-summary .eyebrow{color:var(--ink);letter-spacing:0;text-transform:none;font-size:16px;font-weight:700}.project-contribution{max-width:580px;margin-top:10px;font-size:16px;line-height:1.6}.project-evidence-links{margin-top:8px}.case-study>.project-evidence-links{margin-top:0;margin-bottom:24px}.project-evidence-links .text-link{font-size:15px}.project-outcome{grid-template-columns:minmax(130px,.3fr) minmax(0,1fr);gap:32px;padding-block:26px;display:grid}.project-outcome>p:not(.eyebrow){max-width:860px;font-size:16px;line-height:1.7}.section-heading{grid-template-columns:minmax(0,1fr) 330px;align-items:end;gap:70px;margin-bottom:58px;display:grid}.section-heading h2{margin-top:22px;font-size:clamp(40px,4.1vw,62px);line-height:1.1}.section-heading>p{color:var(--muted);max-width:380px;font-size:16px;line-height:1.7}.case-study+.case-study{border-top:1px solid #b5b5b5;margin-top:88px;padding-top:44px}.project-stage{isolation:isolate;color:var(--ink);background:var(--paper);border:1px solid #b5b5b5;position:relative;overflow:hidden}.project-stage:before{content:"";z-index:-1;pointer-events:none;opacity:.35;background:repeating-linear-gradient(0deg,#0000 0 3px,#0000000a 3px 4px);position:absolute;inset:76px 0 80px}.project-stage :focus-visible{outline-color:var(--ink)}.stage-heading{z-index:2;color:#4b4b4b;text-transform:uppercase;letter-spacing:.015em;justify-content:space-between;align-items:center;gap:20px;padding:23px 28px;font-size:14px;line-height:1.5;display:flex;position:relative}.stage-composition{width:min(960px,78%);margin:44px auto 76px;position:relative}.project-screen{text-align:left;background:#ddd;border:1px solid #999;border-radius:0;width:100%;padding:0;display:block;position:relative;overflow:hidden;transform:rotate(-1.5deg);box-shadow:0 25px 55px #00000030}.screen-chrome{color:#444;background:#e5e5e5;border-bottom:1px solid #bbb;justify-content:space-between;align-items:center;gap:18px;min-height:37px;padding:7px 14px;font-family:Courier New,monospace;font-size:9px;display:flex}.screen-controls{align-items:center;gap:4px;display:inline-flex}.screen-controls i{border:1px solid #888;border-radius:50%;width:5px;height:5px}.project-screen>img{aspect-ratio:16/10;object-fit:contain;width:100%}.project-screen>img,.project-inset img{filter:grayscale()}.screen-open{min-height:44px;color:var(--white);background:var(--ink);border:1px solid #777;align-items:center;gap:24px;padding:10px 14px;font-size:14px;font-weight:600;transition:background-color .2s;display:flex;position:absolute;bottom:20px;left:20px}.project-screen:hover .screen-open{background:#333}.project-inset{z-index:2;width:29%;color:var(--ink);text-align:left;background:#eee;border:1px solid #999;border-radius:0;padding:0;position:absolute;bottom:-29px;right:-7%;overflow:hidden;transform:rotate(4deg);box-shadow:0 18px 40px #00000038}.inset-heading{justify-content:space-between;align-items:center;gap:10px;padding:12px;font-size:14px;font-weight:600;line-height:1.4;display:flex}.inset-caption{color:#555;padding:8px 12px;font-size:14px;line-height:1.4;display:block}.qr-crop{aspect-ratio:1.1;background:#111;display:block;position:relative;overflow:hidden}.qr-crop img{width:480%;max-width:none;height:auto;position:absolute;top:-67%;left:-90%}.project-inset--detail{width:48%;bottom:-24px;right:-8%}.project-inset--detail>img{aspect-ratio:16/10;object-fit:contain;width:100%}.stage-caption{z-index:2;color:#555;border-top:1px solid #c8c8c8;justify-content:space-between;align-items:center;gap:20px;padding:12px 28px;font-size:14px;line-height:1.6;display:flex;position:relative}.stage-caption button{min-height:44px;color:var(--ink);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:20px;padding:4px 0;font-size:14px;font-weight:600;display:inline-flex}.stage-caption button:hover{text-underline-offset:5px;text-decoration:underline}.project-stage--data{color:var(--white);background:#1a1a1a;border-color:#444}.project-stage--data:before{background:repeating-linear-gradient(0deg,#0000 0 3px,#ffffff0a 3px 4px)}.project-stage--data :focus-visible{outline-color:var(--white)}.project-stage--data .stage-heading{color:#bcbcbc}.project-stage--data .stage-composition{width:min(950px,77%);margin-top:48px;margin-bottom:82px}.project-stage--data .project-screen{transform:rotate(1.5deg)}.project-stage--data .project-inset{right:-6%;transform:rotate(-4deg)}.project-stage--data .stage-caption{color:#bcbcbc;border-color:#414141}.project-stage--data .stage-caption button{color:var(--white)}.project-stage--docs{background:#dcdcdc}.project-stage--docs .stage-composition{width:min(950px,76%);margin-bottom:85px;margin-left:16%}.project-stage--docs .project-screen{transform:rotate(-2deg)}.project-stage--docs .project-inset{bottom:-28px;left:-11%;right:auto;transform:rotate(3deg)}.technology-line{color:var(--muted);margin-top:20px;font-size:14px;line-height:1.7}.case-introduction{color:var(--muted);max-width:850px;margin-block:26px;font-size:17px;line-height:1.7}.text-link{min-height:44px;color:var(--link);text-underline-offset:6px;background:0 0;border:0;align-items:center;gap:15px;padding:8px 0;font-size:14px;font-weight:600;-webkit-text-decoration:underline #777;text-decoration:underline #777;display:inline-flex}.text-link:hover{text-decoration-color:currentColor}.source-note{color:var(--muted);margin-top:2px;font-size:14px;line-height:1.6}.project-notes{border-block:1px solid #a8a8a8}.project-notes>summary{cursor:pointer;align-items:center;gap:25px;min-height:68px;font-size:16px;font-weight:600;list-style:none;display:flex}.project-notes>summary::-webkit-details-marker{display:none}.notes-summary-detail{color:var(--muted);margin-left:auto;font-size:14px;font-weight:400}.details-symbol{text-align:center;width:26px;font-size:24px;font-weight:400;transition:transform .2s}.project-notes[open] .details-symbol{transform:rotate(45deg)}.project-notes-body{grid-template-columns:minmax(0,1fr) minmax(0,.75fr);gap:70px;padding:10px 0 36px;display:grid}.contribution,.outcome>p:not(.eyebrow){color:var(--muted);max-width:570px;margin-top:12px;font-size:16px;line-height:1.75}.outcome{margin-top:24px}.engineering-notes{gap:19px;display:grid}.engineering-notes dt{align-items:center;gap:12px;margin-bottom:7px;font-size:16px;font-weight:600;display:flex}.note-number{color:var(--muted);font-family:Courier New,monospace;font-size:14px;font-weight:400}.engineering-notes dd{color:var(--muted);padding-left:30px;font-size:15px;line-height:1.7}.screen-index{margin:9px 0 0;padding:0;list-style:none;display:grid}.screen-index button{text-align:left;background:0 0;border:0;align-items:center;gap:16px;width:100%;min-height:44px;padding:7px 0;font-size:15px;display:flex}.screen-index button>span:first-child{color:var(--muted);font-family:Courier New,monospace;font-size:14px}.screen-index button>span:last-child{margin-left:auto}.screen-index button:hover{text-underline-offset:5px;text-decoration:underline}.confidentiality-note{max-width:920px;color:var(--muted);margin-top:30px;font-size:14px;line-height:1.7}.experience-section{background:var(--surface);border-block:1px solid #292929}.editorial-layout{grid-template-columns:315px minmax(0,1fr);gap:82px;display:grid}.section-rail>p:not(.eyebrow){color:var(--muted);max-width:380px;margin-top:19px;font-size:17px;line-height:1.7}.experience-track{border-left:1px solid #777;padding-left:35px;position:relative}.experience-track:before{content:"";background:var(--text);border-radius:50%;width:9px;height:9px;position:absolute;top:9px;left:-5px}.experience-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;display:flex}.experience-heading h3{font-size:27px;line-height:1.35}.experience-heading>span{color:var(--muted);font-size:14px}.experience-role{color:#dfdfdf;margin-top:10px;font-size:16px}.experience-description{color:var(--muted);margin-top:20px;font-size:16px;line-height:1.75}.experience-description+.experience-description{margin-top:10px}.skills-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 27px;margin-top:30px;display:grid}.skills-list>div{border-top:1px solid #424242;padding-top:16px}.skills-list dt{text-transform:uppercase;letter-spacing:.02em;margin-bottom:7px;font-size:15px;font-weight:700}.skills-list dd{color:var(--muted);font-size:16px;line-height:1.75}.education{color:var(--muted);margin-top:28px;font-size:15px;line-height:1.8}.education strong{color:var(--text);font-weight:600}.experience-section .text-link{margin-top:10px}.public-work-list>article{border-top:1px solid #555;padding:27px 0}.public-work-list>article:last-child{border-bottom:1px solid var(--line)}.public-work-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 20px;display:flex}.public-work-heading h3{font-size:29px;line-height:1.3}.public-work-heading>span{color:var(--muted);letter-spacing:.01em;font-size:14px}.public-work-list article>p{color:var(--muted);margin-top:12px;font-size:16px;line-height:1.75}.inline-links{flex-wrap:wrap;align-items:center;gap:0 24px;display:flex}.public-work-list .inline-links{margin-top:6px}.public-work-list article>.source-note{margin-top:3px;font-size:14px}.demo-details{background:#141414;border-left:1px solid #777;margin-top:18px;padding:16px 18px}.demo-details p{color:var(--muted);margin-bottom:8px;font-size:15px;line-height:1.7}.demo-details code{overflow-wrap:anywhere;font-size:14px}.contact-section{--muted:var(--muted-on-light);--link:var(--ink);color:var(--ink);background:var(--paper);grid-template-columns:minmax(0,1fr) minmax(0,.8fr);align-items:center;gap:60px;margin-bottom:70px;padding:55px;display:grid}.contact-section :focus-visible{outline-color:var(--ink)}.contact-section h2{max-width:525px;margin-top:16px;font-size:49px;line-height:1.12}.contact-section p:not(.eyebrow){color:var(--muted);margin-top:21px;font-size:16px;line-height:1.7}.email-link{letter-spacing:-.035em;overflow-wrap:anywhere;font-size:clamp(18px,2.1vw,26px);font-weight:700}.email-link:hover{text-underline-offset:5px;text-decoration:underline}.copy-row{flex-wrap:wrap;align-items:center;gap:18px;margin-top:4px;display:flex}.copy-row .text-link{font-size:14px}.copy-status{color:var(--muted);overflow-wrap:anywhere;font-size:14px}.contact-details>.inline-links{margin-top:8px}.site-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:20px;padding-block:23px;font-size:14px;display:flex}.site-footer a{align-items:center;gap:9px;min-height:44px;display:inline-flex}.preview-dialog{--muted:var(--muted-on-light);--line:#d0d0d0;--line-strong:#9b9b9b;border:1px solid var(--line-strong);background:var(--paper);width:min(1180px,100% - 40px);max-height:calc(100dvh - 40px);color:var(--ink);padding:0;overflow:hidden}.preview-dialog :focus-visible{outline-color:var(--ink)}.preview-dialog::backdrop{background:#000000e6}.dialog-shell{grid-template-rows:auto minmax(0,1fr) auto auto;max-height:calc(100dvh - 42px);display:grid}.dialog-shell header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:16px 20px;display:flex}.dialog-shell header>div{gap:4px;display:grid}.dialog-shell header small{color:var(--muted);font-size:14px}.dialog-shell header strong{font-size:16px;font-weight:600;line-height:1.4}.dialog-shell button,.dialog-shell footer a{border:1px solid var(--line);background:var(--white);min-height:44px;padding:9px 12px;font-size:14px;font-weight:600}.dialog-shell .dialog-close{flex-shrink:0;align-items:center;gap:15px;display:inline-flex}.dialog-close span{font-size:20px;font-weight:400;line-height:1}.dialog-image{background:#ddd;justify-content:center;align-items:center;min-height:0;display:flex;overflow:hidden}.dialog-image img{object-fit:contain;filter:none;width:100%;max-height:calc(100dvh - 240px)}.dialog-caption{color:var(--muted);border-top:1px solid var(--line);padding:12px 20px;font-size:14px;line-height:1.6}.dialog-shell footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex}.dialog-shell footer>span{color:var(--muted);font-size:14px}.dialog-shell footer>div{flex-wrap:wrap;gap:8px;display:flex}.eyebrow{letter-spacing:.04em;font-family:DM Sans,Arial,sans-serif;font-weight:400}.editorial-layout{grid-template-columns:minmax(0,.78fr) minmax(0,1fr);gap:100px}.section-rail h2{margin-top:23px;font-size:clamp(40px,4.05vw,61px);line-height:1.1}.experience-section .section-rail h2{max-width:none}.section-rail>p:not(.eyebrow){max-width:330px;margin-top:25px}.experience-track{border:0;padding-left:0}.experience-track:before{display:none}.experience-heading{gap:9px;display:grid}.experience-heading h3{font-size:30px}.experience-heading>span{font-size:14px}.skills-list{border-top:1px solid #444;grid-template-columns:minmax(0,1fr);gap:0}.skills-list>div{border-top:0;border-bottom:1px solid #333;grid-template-columns:100px minmax(0,1fr);gap:22px;padding-block:14px;display:grid}.skills-list dt{text-transform:none;letter-spacing:0;margin:0}.skills-list dd{font-size:16px}.contact-section{grid-template-columns:minmax(0,1fr) minmax(0,.72fr);align-items:end;gap:65px;padding:70px}.contact-section h2{margin-top:26px;font-size:clamp(50px,6.3vw,91px);line-height:1.04}.contact-section p:not(.eyebrow){margin-top:28px;font-size:16px}.contact-details{padding-bottom:5px}.contact-details>.inline-links{border-top:1px solid #bcbcbc;margin-top:14px;padding-top:12px}.site-footer{font-size:14px}[data-reveal]{opacity:1;transform:none}[data-reveal].is-reveal-pending{opacity:0;transform:translateY(24px)}[data-reveal].is-revealed{opacity:1;transition:opacity .65s,transform .65s cubic-bezier(.2,.65,.3,1);transform:none}[data-reveal-delay="1"].is-revealed{transition-delay:90ms}[data-reveal-delay="2"].is-revealed{transition-delay:.18s}[data-reveal]:focus-within{opacity:1!important;transition:none!important;transform:none!important}:is(html:has([data-motion=off]),html:has([data-motion=reduced])),[data-motion=off] *,[data-motion=reduced] *{scroll-behavior:auto}[data-motion=off] *,[data-motion=off] :before,[data-motion=off] :after{transition:none!important;animation:none!important}[data-motion=off] [data-reveal],[data-motion=reduced] [data-reveal]{opacity:1;transition:none;transform:none}[data-motion=off] [data-parallax],[data-motion=reduced] [data-parallax]{transform:none}[data-motion=off] .reading-progress,[data-motion=reduced] .reading-progress{display:none}[data-motion=off] .button--primary:hover,[data-motion=reduced] .button--primary:hover{transform:none}@media (width<=1200px){.header-inner{gap:24px}.desktop-nav{gap:22px}.wordmark-name{display:none}.hero-intro{align-items:flex-start}.hero-description{max-width:550px}.hero-actions{gap:6px}.button{gap:16px;padding-inline:18px}.project-topline{gap:34px}.project-summary{padding-left:28px}.editorial-layout{gap:60px}.contact-section{gap:40px;padding:48px}}@media (width<=900px){html{scroll-padding-top:88px}.page-width{width:calc(100% - 48px)}.section-space{padding-block:64px}.header-inner{gap:20px;min-height:68px}.desktop-nav{display:none}.header-actions{gap:20px}.header-cv{gap:12px;padding-inline:16px}.mobile-menu{display:block;position:relative}.mobile-menu summary{cursor:pointer;align-items:center;min-height:44px;font-size:14px;list-style:none;display:flex}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu[open] summary{text-underline-offset:5px;text-decoration:underline}.mobile-menu nav{z-index:30;width:230px;color:var(--text);background:var(--surface);border:1px solid var(--line-strong);padding:10px 16px;position:absolute;top:calc(100% + 8px);right:0}.mobile-menu nav a{align-items:center;min-height:48px;font-size:15px;display:flex}.hero{padding-top:34px;padding-bottom:24px}.hero-role{max-width:510px;font-size:17px}.hero-name{grid-template-columns:minmax(0,1fr);gap:0;margin-block:22px 28px;font-size:min(22.8cqw,165px);line-height:1.05;display:grid}.hero-intro{margin-bottom:30px;display:block}.hero-description{max-width:660px;font-size:19px;line-height:1.55}.hero-actions{justify-content:flex-start;gap:12px;margin-top:22px}.button{min-height:52px;padding-inline:22px}.hero-actions .button--outline{padding-left:0}.work-strip{grid-template-columns:minmax(0,1fr)}.work-preview:not(:first-child){display:none}.work-preview-frame{aspect-ratio:16/9;height:auto}.work-preview-frame>img{object-position:center;height:100%;position:absolute;inset:0;transform:none}.work-preview-caption{min-height:48px;padding-top:12px}.strip-caption{margin-top:0}[data-parallax]{transform:none}.work-section.page-width{padding:38px 24px 64px}.project-topline{grid-template-columns:minmax(0,1fr);gap:25px}.project-topline h3{max-width:760px;font-size:clamp(37px,7.1vw,58px);line-height:1.08}.project-summary{border-top:1px solid #b5b5b5;border-left:0;margin-top:0;padding:22px 0 0}.project-contribution{max-width:760px}.case-introduction{margin-block:24px;font-size:16px}.case-study+.case-study{margin-top:60px;padding-top:34px}.stage-heading{align-items:flex-start;gap:20px;padding:18px}.stage-heading>span:last-child{text-align:right;max-width:250px}.stage-composition,.project-stage--data .stage-composition,.project-stage--docs .stage-composition{width:calc(100% - 40px);margin:12px auto 26px}.project-screen,.project-stage--data .project-screen,.project-stage--docs .project-screen{border-radius:2px;transform:none;box-shadow:0 12px 28px #0000001a}.project-inset{display:none}.screen-chrome{min-height:34px;font-size:10px}.screen-open{bottom:14px;left:14px}.stage-caption{gap:20px;padding:12px 18px}.project-outcome{grid-template-columns:minmax(0,1fr);gap:10px;padding-block:24px}.project-notes-body{grid-template-columns:minmax(0,1fr);gap:28px;padding-bottom:28px}.notes-summary-detail{text-align:right;max-width:220px}.section-heading{grid-template-columns:minmax(0,1fr);gap:24px;margin-bottom:36px}.section-heading>p{max-width:620px}.editorial-layout{grid-template-columns:minmax(0,1fr);gap:40px}.section-rail h2{margin-top:20px;font-size:clamp(40px,7vw,58px)}.section-rail>p:not(.eyebrow){max-width:620px;margin-top:20px}.experience-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 24px;display:flex}.experience-heading h3{font-size:29px}.public-work-heading{align-items:flex-start}.contact-section{grid-template-columns:minmax(0,1fr);gap:38px;margin-bottom:40px;padding:42px 32px}.contact-section h2{font-size:clamp(48px,9vw,72px)}.contact-details{max-width:600px}.dialog-shell header,.dialog-shell footer{align-items:flex-start}}@media (width<=600px){.page-width{width:calc(100% - 40px)}.header-inner{gap:12px;min-height:66px}.wordmark-symbol{font-size:26px}.header-actions{gap:16px}.header-cv{padding-inline:12px;font-size:14px}.motion-toggle{font-size:14px}.hero{padding-top:28px}.hero-role{max-width:370px;font-size:16px}.hero-name{margin-block:20px 24px;font-size:min(22.8cqw,119px)}.hero-description{max-width:500px;font-size:17px}.hero-actions{gap:10px;margin-top:20px}.button{gap:16px;padding-inline:19px;font-size:15px}.work-preview-frame{aspect-ratio:4/3}.work-preview-caption{gap:18px}.work-section.page-width{padding-inline:20px}.project-topline h3{letter-spacing:.005em;text-wrap:initial;font-size:clamp(35px,8.4vw,48px)}.technology-line{margin-top:16px}.project-summary{padding-top:20px}.stage-heading{padding:16px;display:block}.stage-heading>span{display:block}.stage-heading>span:last-child{text-align:left;max-width:none;margin-top:4px;font-size:14px}.stage-composition,.project-stage--data .stage-composition,.project-stage--docs .stage-composition{width:calc(100% - 24px);margin-top:4px;margin-bottom:16px}.screen-chrome{gap:8px;padding-inline:9px;font-size:9px}.screen-controls{display:none}.screen-open{border:0;border-top:1px solid #777;justify-content:space-between;min-height:46px;padding:10px 12px;font-size:14px;position:static}.stage-caption{padding:14px 16px 8px;display:block}.stage-caption>span{display:block}.stage-caption button{gap:15px;width:100%;margin-top:3px}.project-notes>summary{gap:12px;font-size:15px}.notes-summary-detail{max-width:145px;font-size:14px}.details-symbol{flex-shrink:0}.skills-list>div{grid-template-columns:88px minmax(0,1fr);gap:18px}.experience-heading{display:grid}.public-work-heading{display:block}.public-work-heading>span{margin-top:8px;display:block}.public-work-list>article{padding-block:24px}.contact-section{gap:30px;padding:34px 24px}.contact-section h2{font-size:clamp(44px,10vw,60px)}.email-link{font-size:clamp(19px,5vw,26px)}.site-footer{align-items:flex-start;gap:12px;font-size:14px}.preview-dialog{width:calc(100% - 16px);max-height:calc(100dvh - 16px);overflow:auto}.dialog-shell{min-height:0;max-height:none}.dialog-shell header{gap:12px;padding:14px 12px}.dialog-shell header strong{font-size:15px}.dialog-shell .dialog-close{gap:8px;padding-inline:10px}.dialog-image img{max-height:48dvh}.dialog-caption{padding:12px;font-size:14px}.dialog-shell footer{padding:12px;display:block}.dialog-shell footer>div{gap:8px;margin-top:10px}.dialog-shell button,.dialog-shell footer a{padding-inline:11px;font-size:14px}}@media (width<=360px){.page-width{width:calc(100% - 32px)}.header-actions{gap:10px}.header-cv{gap:6px;padding-inline:10px}.hero-name{font-size:22.8cqw}.hero-actions{grid-template-columns:minmax(0,1fr);display:grid}.hero-actions .button{justify-content:space-between;width:100%}.hero-actions .button--outline{border-color:#626262;padding-inline:12px}.work-section.page-width{padding-inline:16px}.project-topline h3{font-size:34px}.notes-summary-detail{display:none}.details-symbol{margin-left:auto}.skills-list>div{grid-template-columns:minmax(0,1fr);gap:6px}.contact-section{padding-inline:20px}.contact-section h2{font-size:42px}.email-link{font-size:19px}.site-footer{flex-wrap:wrap}}@container portfolio-hero (width<=820px){.hero-name{grid-template-columns:minmax(0,1fr);gap:0;font-size:min(22.8cqw,165px);line-height:1.05;display:grid}.hero-intro{display:block}.hero-actions{justify-content:flex-start;margin-top:22px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}[data-reveal],[data-reveal].is-reveal-pending{opacity:1!important;transform:none!important}[data-parallax]{transform:none!important}.reading-progress{display:none}.button--primary:hover{transform:none}}@media (prefers-contrast:more){:root{--muted:#cecece;--muted-on-light:#424242;--line:#777;--line-strong:#999}}@media print{[data-reveal],[data-reveal].is-reveal-pending{opacity:1!important;transform:none!important}[data-parallax]{transform:none!important}.reading-progress{display:none}}
