@font-face{font-family:Switzer;src:url("../fonts/Switzer-Regular.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:Switzer;src:url("../fonts/Switzer-Medium.otf") format("opentype");font-weight:500;font-style:normal;font-display:swap;}
@font-face{font-family:Switzer;src:url("../fonts/Switzer-Bold.otf") format("opentype");font-weight:700;font-style:normal;font-display:swap;}

:root{--page:#fafafa;--ink:#0a0a0a;--muted:#888;--big:1.6666667vw;--small:1.1111111vw;--intro:41px}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{background:var(--page);color:var(--ink);font:400 16px/1.4 Switzer;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:transparent;padding:0}button:focus-visible,a:focus-visible{outline:1px solid currentColor;outline-offset:6px}a{color:inherit}h1,h2,p{margin:0;font-weight:400}[hidden]{display:none!important}.scene{position:fixed;inset:0;overflow:hidden;touch-action:none;outline:none}.scene canvas{display:block;position:absolute;inset:0;width:100%;height:100%;touch-action:none}.intro{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:var(--intro);line-height:1.1;letter-spacing:0;white-space:nowrap;pointer-events:none;opacity:0;z-index:2}.scene{z-index:1}.intro span{display:inline-block;will-change:transform,filter,opacity}.meta{position:fixed;z-index:3;top:50%;transform:translateY(-50%);display:flex;align-items:baseline;white-space:nowrap;letter-spacing:-.01em;opacity:0;pointer-events:none}.meta-left{left:5.5vw;gap:4.7vw}.meta-right{right:5.5vw;gap:3.6vw}.meta .large{font-size:var(--big);line-height:1.4;font-weight:400}.meta .small{font-size:var(--small);font-variant-numeric:tabular-nums}.project-name{pointer-events:auto;cursor:pointer}.work-index{position:fixed;z-index:3;right:12vw;top:2.4vh;font-size:.9vw;line-height:1.4;letter-spacing:.01em;opacity:0;text-align:left}.work-index button{display:block}.work-index p{color:#999;font-size:10px;margin-top:7px;letter-spacing:0}.loader{position:fixed;z-index:3;left:50%;transform:translateX(-50%);bottom:1vh;font-size:var(--small);font-variant-numeric:tabular-nums;pointer-events:none}.quiet{position:fixed;z-index:3;bottom:22px;font-size:11px;line-height:1.4;color:#777;letter-spacing:0;opacity:0}.quiet-left{left:5.5vw;display:flex;align-items:center;gap:20px}.quiet-right{right:5.5vw;display:flex;align-items:center;gap:20px}.quiet button:hover{color:#0a0a0a}.gesture{pointer-events:none}.skip-intro{position:fixed;z-index:4;bottom:22px;right:5.5vw;font-size:11px;color:#999}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;z-index:30;top:12px;left:16px;transform:translateY(-180%);background:var(--page);padding:10px 14px;text-decoration:none}.skip-link:focus{transform:none}.fallback-hint{position:fixed;left:20px;bottom:60px;max-width:320px;font-size:12px;color:#777;z-index:2}.player{padding:0;border:0;max-width:none;max-height:calc(100dvh - 32px);width:min(1120px,calc(100vw - 64px));background:#101010;color:#fafafa;overflow:auto;border-radius:12px}.player::backdrop{background:#fafafaed;backdrop-filter:blur(7px)}.player-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;gap:20px;font-size:14px}.player-head p span{color:#999;margin-left:12px}.close{width:32px;height:32px;display:grid;place-items:center;font-size:24px;line-height:1;font-weight:300}.player video{display:block;width:100%;aspect-ratio:898/512;max-height:calc(100dvh - 180px);object-fit:contain;background:#000}.player-foot{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 22px;font-size:12px;color:#aaa}.player-foot button:hover{color:#fff}.video-error{padding:24px;font-size:14px;color:#fff}.info{padding:26px;max-width:480px;width:calc(100vw - 40px);border:0;border-radius:12px;background:#fafafa;color:#0a0a0a}.info::backdrop{background:#fafafae8;backdrop-filter:blur(5px)}.info .close{float:right}.info h2{font-size:24px;margin-bottom:16px}.info p{font-size:13px;line-height:1.8;margin:12px 0;color:#666}.live-ui{will-change:opacity}
@media(max-width:1024px){:root{--big:2.5vw;--small:1.6666667vw}.work-index{font-size:1.35vw}.quiet{font-size:10px}}
@media(max-width:640px){.work-index{display:none}.meta-right{display:none}.meta-left{left:auto;right:20px;top:auto;bottom:20px;transform:none}.meta-left .small{display:none}.meta-left .large{font-size:22px}.quiet-left{left:20px;bottom:24px;gap:16px;font-size:11px}.quiet-right{right:20px;top:22px;bottom:auto;font-size:11px}.quiet-right .gesture{display:none}.skip-intro{right:20px;bottom:24px}.loader{font-size:12px}.player{width:calc(100vw - 20px);border-radius:10px}.player-head{padding:12px 15px;font-size:13px}.player-foot{padding:14px 15px;font-size:11px}.player-head p span{display:none}.info{padding:22px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
:root{--muted:#767676;--page:#fafafa;--ink:#171717;--pad:5.5vw}
body{font-family:Switzer;color:var(--ink)}h1,h2,h3,p{margin:0;font-weight:400}button,a{transition:opacity .2s,color .2s}button:hover{color:#000}.portfolio-home{height:100%;position:relative}.resume{position:fixed;z-index:3;left:var(--pad);top:50%;transform:translateY(-50%);width:270px;max-width:21vw;opacity:0;background:var(--page)}.eyebrow{font-size:9px;line-height:1.5;letter-spacing:.085em;color:#858585}.resume>.eyebrow{max-width:260px;font-size:8px;margin-bottom:23px;letter-spacing:.04em}.resume h1{font-size:42px;line-height:1;letter-spacing:-2px;margin-bottom:14px}.name-dot{color:#b6b6b6}.role{font-size:15px;line-height:1.5}.role span{font-size:12px;color:#797979}.bio{font-size:13px;color:#676767;line-height:1.9;margin-top:22px;letter-spacing:.02em}.experience-label{display:flex;justify-content:space-between;align-items:center;font-size:9px;color:#999;letter-spacing:.08em;margin:29px 0 15px}.experience-label>span{letter-spacing:0;color:#aaa;font-variant-numeric:tabular-nums}.experience{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 14px;gap:8px}.experience h3{font-size:13px;line-height:1.5}.experience p{font-size:10px;color:#898989;line-height:1.65}.experience time{font-size:10px;font-variant-numeric:tabular-nums;color:#999;white-space:nowrap}.resume-download{font-size:11px;text-decoration:none;display:flex;justify-content:space-between;max-width:150px;padding:10px 0 4px;margin-top:19px;border-bottom:1px solid #ddd}.resume-download:hover{border-color:#333}.project-meta{position:fixed;left:75.2%;top:50%;transform:translateY(-50%);z-index:3;width:19.3%;max-width:300px;opacity:0;background:var(--page)}.project-counter{font-size:10px;color:#888;margin-bottom:24px;font-variant-numeric:tabular-nums;letter-spacing:.03em}.project-counter>span:first-child{color:#171717;margin-right:6px}.project-title{font-size:27px;line-height:1.15;letter-spacing:-.9px;text-align:left;white-space:nowrap}.project-subtitle{font-size:19px;color:#7d7d7d;letter-spacing:-.4px;line-height:1.4;margin-top:4px}.project-type{font-size:11px;color:#777;margin-top:22px}.project-brief{font-size:12px;color:#707070;line-height:1.9;margin-top:12px}.view-project{display:flex;justify-content:space-between;align-items:center;width:180px;max-width:100%;padding:17px 0 12px;border-bottom:1px solid #bcbcbc;font-size:13px;margin-top:17px}.view-project:hover{border-color:#000}.view-project>span:last-child{font-size:18px}.cover-control{display:flex;justify-content:space-between;max-width:180px;font-size:10px;color:#919191;margin-top:17px;min-height:14px;font-variant-numeric:tabular-nums}.work-index{right:var(--pad);top:34px;font-size:11px;letter-spacing:0;text-align:left;min-width:180px}.work-index>p{font-size:8px;letter-spacing:.08em;color:#aaa;margin:0 0 15px}.work-index button{display:flex;align-items:baseline;gap:10px;width:100%;padding:5px 0;font-size:11px;color:#999}.work-index button[aria-current=true]{color:#202020}.work-index button>span{font-size:9px;color:#aaa}.work-index i{font-style:normal;margin-left:auto;opacity:0}.work-index button[aria-current=true] i{opacity:1}.home-footer{position:fixed;z-index:4;left:var(--pad);right:var(--pad);bottom:24px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#969696;opacity:0}.home-footer>div{display:flex;gap:21px}.home-footer>.gesture{position:absolute;left:50%;transform:translateX(-50%)}.carousel-controls{position:fixed;left:50.27%;top:calc(50% + 174px);transform:translateX(-50%);z-index:3;display:flex;align-items:center;gap:20px;opacity:0}.carousel-controls>button{display:grid;place-items:center;width:30px;height:30px;border:1px solid #e1e1e1;border-radius:50%;font-size:13px;color:#777}.carousel-controls>button:hover{background:#efefef;color:#111}.carousel-controls>span{min-width:132px;text-align:center;font-size:10px;color:#8b8b8b}.fallback-hint{left:auto;right:var(--pad);bottom:55px;font-size:9px;color:#a4a4a4;max-width:230px;text-align:right;pointer-events:none}.motion-source{position:fixed;width:1px;height:1px;opacity:0;pointer-events:none;left:0;bottom:0}.info{max-width:540px;padding:30px}.info h2{font-size:25px;letter-spacing:-.8px}.info p{font-size:12px}.case-view{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;border:0;padding:0;background:var(--page);color:#171717;overflow:auto;overscroll-behavior:contain}.case-view::backdrop{background:var(--page)}.case-nav{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;height:80px;padding:0 5.5vw;background:#fafafaee;backdrop-filter:blur(12px);border-bottom:1px solid #ececec;font-size:11px}.back-link{display:flex;gap:13px;align-items:center;font-size:12px}.case-nav-name{color:#8d8d8d;font-size:11px}.case-nav-end{font-size:9px;color:#888;letter-spacing:.08em}.case-main{max-width:1420px;padding:64px 5.5vw 0;margin:auto}.case-hero{display:grid;grid-template-columns:.88fr 1.12fr;gap:65px;align-items:center}.case-intro>.eyebrow{font-size:9px;margin-bottom:28px}.case-intro h2{font-size:clamp(38px,3.6vw,57px);line-height:1.12;letter-spacing:-2px}.case-intro h2>span{color:#8d8d8d}.case-intro-text{font-size:15px;line-height:1.85;color:#606060;margin-top:26px}.case-tags{display:flex;flex-wrap:wrap;gap:15px;color:#777;font-size:11px;margin-top:30px}.figma-link{display:inline-block;font-size:11px;text-decoration:none;border-bottom:1px solid #ccc;padding-bottom:5px;margin-top:29px}.case-motion{min-width:0}.case-motion video{display:block;width:100%;aspect-ratio:1.5;object-fit:contain;background:#1e24d4;border-radius:14px;overflow:hidden}.case-motion>p{display:flex;justify-content:space-between;color:#333;font-size:11px;margin-top:14px}.case-motion>p>span{color:#9a9a9a;font-size:10px}.project-scope{display:grid;grid-template-columns:1fr 1fr 1fr;gap:50px;border-top:1px solid #ddd;border-bottom:1px solid #ddd;padding:29px 0;margin-top:65px}.project-scope .eyebrow{font-size:8px;color:#9a9a9a;margin-bottom:13px}.project-scope>div>p:last-child{font-size:13px;line-height:1.65}.project-scope>div>p:last-child>span{font-size:11px;color:#8d8d8d}.interface-section{margin-top:65px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px}.section-heading h3{font-size:36px;letter-spacing:-1.3px;margin-top:11px}.flow-tabs{display:flex;gap:23px;font-size:11px}.flow-tabs button{padding:12px 0;position:relative;color:#999;border-bottom:1px solid transparent}.flow-tabs button[aria-pressed=true]{color:#222;border-color:#222}.flow-tabs button span{font-size:9px;color:#aaa;margin-left:5px;font-variant-numeric:tabular-nums}.source-note{font-size:10px;line-height:1.9;color:#929292;margin-top:23px;max-width:850px}.source-note span{color:#555;margin-right:13px}.ui-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:37px 23px;margin-top:30px}.ui-item{min-width:0;text-align:left}.ui-image-well{padding:26px 21px 23px;background:#eeeff1;border-radius:10px;overflow:hidden;transition:background .2s}.ui-item:hover .ui-image-well{background:#e4e6eb}.ui-image-well img{width:100%;height:auto;max-height:440px;aspect-ratio:185/401;object-fit:contain;object-position:top;background:white;display:block;margin:auto;border:1px solid #dfdfe5;border-radius:3px}.ui-caption{display:flex;justify-content:space-between;gap:15px;margin-top:14px;align-items:baseline;font-size:11px}.ui-caption span:last-child{color:#999;font-size:10px}.ui-category{font-size:9px;color:#a4a4a4;margin-top:5px;letter-spacing:.03em}.gallery-count{color:#aaa;font-size:10px;margin-top:27px}.case-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #dedede;margin-top:65px;padding:35px 0 40px}.case-footer>p{font-size:19px;letter-spacing:-.4px}.case-footer>p>span{display:block;font-size:10px;color:#999;margin-top:6px;letter-spacing:0}.case-footer button{font-size:12px}.image-view{position:fixed;inset:0;margin:0;border:0;padding:0;background:#f4f4f4;width:100vw;height:100dvh;max-width:none;max-height:none;overflow:hidden}.image-view::backdrop{background:#fafafa}.image-toolbar{position:relative;z-index:2;height:74px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 32px;border-bottom:1px solid #e4e4e4;background:#fafafa}.image-toolbar>div{display:flex;gap:22px;align-items:center}.image-toolbar h2{font-size:14px}.image-toolbar button{font-size:15px;padding:8px}.image-toolbar #zoom-size{font-size:11px;color:#777}.image-toolbar #close-image{font-size:25px}.image-index{font-size:10px;color:#999;font-variant-numeric:tabular-nums}.image-stage{height:calc(100dvh - 110px);overflow:auto;overscroll-behavior:contain;padding:25px;display:flex;justify-content:center;align-items:flex-start}.image-stage img{height:100%;width:auto;max-width:100%;object-fit:contain;display:block;box-shadow:0 3px 18px #00000008}.image-stage.actual img{height:auto;width:600px;max-width:100%;object-fit:initial}.image-source{font-size:9px;color:#999;text-align:center;padding:10px 20px;line-height:1.5}.player video{aspect-ratio:898/512}
@media(min-width:1700px){.resume{width:300px;max-width:21vw}.resume h1{font-size:48px}.resume .role{font-size:17px}.resume .role span{font-size:14px}.bio{font-size:14px}.experience h3{font-size:15px}.experience p,.experience time{font-size:12px}.experience{margin-bottom:18px}.carousel-controls{top:calc(50% + 220px)}.project-title{font-size:31px}}
@media(max-height:760px) and (min-width:761px){.resume>.eyebrow{display:none}.resume h1{font-size:35px}.bio{margin-top:15px}.experience-label{margin-top:20px}.experience{margin-bottom:11px}.resume-download{margin-top:12px}.project-meta{transform:translateY(-45%)}.project-brief{display:none}.work-index{top:23px}.home-footer{bottom:18px}}
@media(min-width:761px) and (max-width:1100px){.resume{max-width:24vw;width:250px;left:4vw}.resume>.eyebrow{display:none}.resume h1{font-size:34px}.bio{font-size:11px}.role{font-size:13px}.role span{font-size:10px}.experience h3{font-size:12px}.experience p,.experience time{font-size:9px}.experience-label{font-size:8px}.project-meta{left:76%;width:20%}.project-title{font-size:22px}.project-subtitle{font-size:16px}.project-counter{font-size:8px}.project-brief{font-size:10px}.view-project{width:150px}.cover-control{max-width:150px}.work-index{right:4vw}.case-main{padding:40px 4vw 0}.case-hero{gap:30px}.case-intro h2{font-size:35px}.case-intro-text{font-size:13px}.case-tags{gap:10px}.ui-gallery{gap:26px 15px}.ui-image-well{padding:20px 13px}.home-footer{left:4vw;right:4vw}}
@media(max-width:760px){html,body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto}.portfolio-home{height:auto;display:flex;flex-direction:column}.resume{position:relative;top:auto;left:auto;transform:none;max-width:none;width:auto;margin:29px 25px 0;order:0}.resume>.eyebrow{font-size:7px;margin-bottom:19px}.resume h1{font-size:42px}.role{font-size:14px}.role span{font-size:12px}.bio{margin-top:19px;font-size:12px}.experience-label{margin-top:28px;font-size:9px}.experience{margin-bottom:14px}.experience h3{font-size:13px}.experience time,.experience p{font-size:10px}.resume-download{margin-top:20px;max-width:155px;font-size:11px}.scene{position:relative;inset:auto;width:100%;height:400px;flex:none;order:1;margin-top:5px;touch-action:pan-x}.scene canvas{touch-action:pan-x}.project-meta{position:relative;left:auto;top:auto;transform:none;width:auto;max-width:none;margin:0 25px;order:3;display:grid;grid-template-columns:1fr 1fr;column-gap:24px;background:transparent}.project-counter{grid-column:1/3;font-size:9px;margin-bottom:18px}.project-title{grid-column:1;grid-row:2;font-size:25px}.project-subtitle{grid-column:1;grid-row:3;font-size:17px}.project-type{grid-column:1;grid-row:4;margin-top:12px;font-size:10px}.project-brief{display:none}.view-project{grid-column:2;grid-row:2/4;align-self:center;margin:0;width:100%;font-size:12px}.cover-control{grid-column:2;grid-row:4;max-width:none;font-size:9px;margin-top:12px}.carousel-controls{position:relative;left:auto;top:auto;transform:none;order:2;align-self:center;margin:-36px 0 28px;gap:20px}.carousel-controls>span{min-width:140px}.work-index{display:flex;position:relative;right:auto;top:auto;align-self:stretch;align-items:center;margin:35px 25px 0;order:4;border-top:1px solid #e2e2e2;padding-top:16px;gap:22px;justify-content:space-between}.work-index>p{display:none}.work-index button{width:auto;font-size:11px;padding:6px 0}.work-index i{display:none}.home-footer{position:relative;left:auto;right:auto;bottom:auto;padding:25px;margin-top:20px;gap:20px;line-height:1.8;font-size:9px}.home-footer .gesture{display:none}.home-footer>div{gap:14px}.fallback-hint{position:relative;text-align:center;left:auto;right:auto;bottom:auto;max-width:none;margin:0 25px 20px;font-size:9px}.intro{top:680px;font-size:27px;position:absolute}.skip-intro{top:25px;right:25px;bottom:auto;font-size:10px}.loader{position:absolute;bottom:auto;top:855px;font-size:10px}.case-nav{height:62px;padding:0 20px}.case-nav-name{font-size:10px}.case-nav-end{display:none}.back-link{font-size:11px;gap:7px}.case-main{padding:34px 21px 0}.case-hero{grid-template-columns:1fr;gap:32px}.case-intro>.eyebrow{font-size:8px;margin-bottom:20px}.case-intro h2{font-size:42px;letter-spacing:-1.5px}.case-intro-text{font-size:13px;margin-top:20px}.case-tags{gap:14px;margin-top:21px;font-size:10px}.figma-link{font-size:10px;margin-top:22px}.case-motion video{border-radius:10px}.case-motion>p{font-size:10px}.case-motion>p>span{font-size:9px}.project-scope{grid-template-columns:1fr;gap:22px;margin-top:37px;padding:27px 0}.project-scope>div{display:grid;grid-template-columns:104px 1fr;align-items:start;gap:18px}.project-scope .eyebrow{font-size:8px;margin-top:4px}.project-scope>div>p:last-child{font-size:12px}.project-scope>div>p:last-child>span{font-size:10px}.interface-section{margin-top:40px}.section-heading{align-items:start;flex-direction:column;gap:17px}.section-heading h3{font-size:31px;margin-top:8px}.flow-tabs{font-size:11px;gap:24px;width:100%}.flow-tabs button{padding:8px 0}.source-note{font-size:9px;margin-top:19px}.source-note span{display:block;margin-bottom:5px}.ui-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 12px;margin-top:24px}.ui-image-well{padding:15px 11px 13px;border-radius:8px}.ui-caption{font-size:10px;gap:5px;margin-top:11px}.ui-caption span:last-child{font-size:9px}.ui-category{font-size:8px}.gallery-count{font-size:9px}.case-footer{padding:28px 0 33px;margin-top:40px;gap:22px}.case-footer>p{font-size:18px}.case-footer>p>span{font-size:8px}.case-footer button{font-size:10px}.image-toolbar{height:62px;padding:0 14px;gap:10px}.image-toolbar>div{gap:9px}.image-toolbar h2{font-size:12px}.image-index{display:none}.image-toolbar button{padding:6px;font-size:13px}.image-toolbar #zoom-size{font-size:10px}.image-stage{height:calc(100dvh - 96px);padding:16px}.image-source{font-size:8px;padding:9px 15px}.info p{font-size:11px}.info{max-height:calc(100dvh - 32px);overflow:auto}}

/* Legibility and carousel-label spacing refinements. */
.experience p,.experience time{color:#707070;font-size:11px}.role span{color:#717171}.home-footer>.gesture{left:70%}
@media(max-width:760px){.scene{margin-top:25px}.carousel-controls{margin:-80px 0 72px}.experience p,.experience time{font-size:11px}.resume>.eyebrow{font-size:8px}}


/* Alchemy Pay Card: an in-page image dialog. */
.work-index button:disabled{cursor:default;opacity:.52}
.card-dialog{position:fixed;inset:0;margin:auto;width:min(1120px,calc(100vw - 80px));height:min(90dvh,1080px);max-width:none;max-height:none;border:0;border-radius:16px;padding:0;background:#fff;color:#171717;overflow:hidden;box-shadow:0 24px 100px #0002}
.card-dialog::backdrop{background:#2227;backdrop-filter:blur(9px)}
.card-dialog[open]{display:flex;flex-direction:column;animation:card-appear .2s ease-out}
.card-toolbar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;height:66px;padding:0 24px;border-bottom:1px solid #ededed;background:#fff}
.card-toolbar h2{font-size:15px;letter-spacing:-.2px}.card-toolbar>div{display:flex;align-items:center;gap:19px}
.card-zoom{font-size:11px;color:#777;padding:8px 0}.card-close{font-size:26px;font-weight:300;width:32px;height:32px;line-height:1;display:grid;place-items:center}
.card-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;background:#fff;-webkit-overflow-scrolling:touch}
.card-scroll img{display:block;width:100%;height:auto;max-width:none;cursor:zoom-in}
.card-scroll.is-zoomed img{width:var(--sheet-width,1576px);cursor:zoom-out}

html.card-open,html.card-open body{overflow:hidden!important}
@keyframes card-appear{from{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:none}}
@media(max-width:760px){.card-dialog{width:calc(100vw - 24px);height:90dvh;border-radius:12px}.card-toolbar{height:58px;padding:0 15px;gap:12px}.card-toolbar h2{font-size:13px}.card-toolbar>div{gap:13px}.card-zoom{font-size:10px}.card-scroll.is-zoomed img{width:1100px}.work-index{display:grid;grid-template-columns:1fr 1fr;gap:9px 18px;padding-bottom:28px}.work-index button{font-size:10px;gap:7px;justify-content:flex-start}}
@media(prefers-reduced-motion:reduce){.card-dialog[open]{animation:none}}


/* Supplied Switzer fonts used throughout the page. */
html,body,button,input,textarea,select{font-family:Switzer}
body{font-weight:400;font-synthesis:none}
.resume h1{font-weight:700}
.role,.experience h3,.work-index button[aria-current=true],.card-toolbar h2,.view-project,.back-link{font-weight:500}
.role span{font-weight:400}
.case-intro h2,.section-heading h3,.info h2{font-weight:700}
.card-close,.close{font-weight:400}
.work-index{top:50%;transform:translateY(-50%)}
@media(max-width:760px){.work-index{top:auto;transform:none}}


/* Centered project index. Selected type follows the reference's 24px / 1440 scale. */
.work-index{display:flex;flex-direction:column;align-items:stretch;position:fixed;right:2vw;top:50%;width:clamp(280px,25.5vw,470px);min-width:0;transform:translateY(-50%);margin:0;padding:0;border:0;gap:0;text-align:left;line-height:1.4;letter-spacing:.01em}
.work-index>p{display:block;font-size:9px;line-height:1.5;letter-spacing:.08em;color:#a5a5a5;margin:0 0 18px;padding-left:35px}
.work-index .work-row{display:grid;grid-template-columns:23px minmax(0,1fr);align-items:baseline;column-gap:12px;width:100%;margin:0;padding:4px 0;font-size:clamp(11px,.9vw,15px);font-weight:400;line-height:1.4;color:#b5b5b5;text-align:left;opacity:1;transition:font-size .48s cubic-bezier(.16,1,.3,1),padding .48s cubic-bezier(.16,1,.3,1),color .25s}
.work-index .work-row:disabled{opacity:1;color:#c8c8c8;cursor:default}
.work-index .work-row:not(:disabled):not([aria-current=true]):hover{color:#737373}
.work-index .work-row[aria-current=true]{font-size:clamp(20px,1.6666667vw,30px);font-weight:500;line-height:1.25;color:#171717;padding:10px 0}
.work-index .work-number{font-size:10px;font-weight:400;font-variant-numeric:tabular-nums;color:inherit;transition:font-size .48s cubic-bezier(.16,1,.3,1)}
.work-index .work-row[aria-current=true] .work-number{font-size:13px}
.work-index .work-name{position:relative;display:block;min-width:0;font-size:inherit;color:inherit;line-height:inherit;letter-spacing:-.01em}
.work-steady{display:block}
.work-goo{position:absolute;inset:0;pointer-events:none;will-change:filter}
.work-out,.work-in{position:absolute;left:0;top:0;width:100%;white-space:normal;overflow-wrap:normal;will-change:filter,opacity}
@media(min-width:761px) and (max-width:1100px){.work-index{right:2vw;width:26vw}.work-index .work-row{font-size:11px;column-gap:8px;grid-template-columns:21px minmax(0,1fr)}.work-index .work-row[aria-current=true]{font-size:20px}.work-index>p{padding-left:29px}}
@media(max-height:650px) and (min-width:761px){.work-index .work-row{padding:2px 0;font-size:11px}.work-index .work-row[aria-current=true]{padding:6px 0;font-size:21px}.work-index>p{margin-bottom:10px}}
@media(max-width:760px){.work-index{position:relative;right:auto;top:auto;width:auto;transform:none;margin:24px 25px 0;padding:22px 0 30px;border-top:1px solid #e4e4e4;display:flex;flex-direction:column;gap:0}.work-index .work-row{font-size:12px;padding:5px 0;column-gap:12px}.work-index .work-row[aria-current=true]{font-size:22px;padding:10px 0}.work-index>p{font-size:9px}}
@media(prefers-reduced-motion:reduce){.work-index .work-row,.work-index .work-number{transition:none}}

/* Responsive portfolio: desktop composition stays intact. */
.mobile-intro,.mobile-work,.mobile-loading{display:none}
.mobile-projects{border:0;padding:0;color:#171717;background:#fafafa}
.mobile-projects:not([open]){display:none}
@media(max-width:1024px){
 html,body{width:100%;height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto}
 body{background:#fafafa}
 .portfolio-home{display:flex;flex-direction:column;width:100%;height:auto;min-height:100svh;padding:0 0 calc(28px + env(safe-area-inset-bottom));isolation:isolate}
 .mobile-intro{display:block;order:0;width:calc(100% - 48px);max-width:640px;margin:0 auto;padding:calc(28px + env(safe-area-inset-top)) 0 14px}
 .mobile-intro>.eyebrow{font-size:8px;line-height:1.5;letter-spacing:.07em;color:#888;margin:0 0 20px}
 .mobile-identity{display:flex;align-items:center;justify-content:space-between;gap:20px}
 .mobile-identity h1{font-size:48px;line-height:1;letter-spacing:-2.5px;font-weight:500}
 .mobile-identity h1 span{color:#b7b7b7}
 .mobile-identity p{font-size:13px;line-height:1.55;text-align:right;letter-spacing:-.2px}
 .mobile-identity p span{display:block;font-size:11px;letter-spacing:0;color:#888}
 .scene{position:relative;inset:auto;order:1;flex:none;width:100%;max-width:760px;height:clamp(320px,49svh,450px);margin:6px auto 0;touch-action:none;outline-offset:-4px;z-index:1;overflow:hidden}
 .scene canvas{touch-action:none;mask-image:linear-gradient(to bottom,transparent,#000 4%,#000 96%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 4%,#000 96%,transparent)}
 .mobile-loading:not([hidden]){display:block;position:absolute;z-index:2;top:50%;left:0;width:100%;padding:0 24px;transform:translateY(-50%);text-align:center;font-size:11px;color:#888;pointer-events:none}
 .mobile-work{display:block;order:2;width:calc(100% - 48px);max-width:640px;margin:0 auto;position:relative;z-index:2}
 .mobile-work-top{display:flex;align-items:center;justify-content:space-between;min-height:44px;margin-bottom:8px}
 #mobile-count{font-size:11px;color:#999;letter-spacing:.055em;font-variant-numeric:tabular-nums}
 #mobile-all{display:flex;align-items:center;gap:12px;min-height:44px;min-width:110px;justify-content:flex-end;font-size:12px;letter-spacing:-.1px}
 .mobile-work-main{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;min-height:90px}
 .mobile-work-copy{min-width:0;flex:1}
 #mobile-title{font-size:24px;line-height:1.15;font-weight:500;letter-spacing:-.75px;overflow-wrap:normal;min-height:28px}
 #mobile-open{display:inline-flex;align-items:center;gap:16px;min-height:44px;margin-top:5px;padding:3px 0;font-size:12px;color:#555}
 #mobile-open span{font-size:16px}
 #mobile-open:disabled{color:#aaa;cursor:default}
 .mobile-arrows{display:flex;gap:6px;flex:none;padding-top:0}
 .mobile-arrows button{display:grid;place-items:center;width:44px;height:44px;border:1px solid #dedede;border-radius:50%;background:#fafafa;touch-action:manipulation}
 .mobile-arrows button:active{background:#eaeaea}
 .mobile-hint{font-size:10px;line-height:1.5;color:#9b9b9b;margin:8px 0 0}
 .resume{position:relative;inset:auto;transform:none;order:4;width:calc(100% - 48px);max-width:640px;margin:36px auto 0;opacity:1!important;background:transparent;padding:0;border-top:1px solid #e2e2e2}
 .resume>h1,.resume>.role,.resume>.eyebrow{display:none}
 .resume .experience-label{display:block;margin:27px 0 24px;font-size:10px;line-height:1.5;font-weight:400;letter-spacing:.075em;color:#999}
 .resume .experience{display:block;margin:0;padding:0 0 24px}
 .resume .experience>div{display:grid;grid-template-columns:82px minmax(0,1fr);column-gap:18px;row-gap:4px}
 .resume .experience time{grid-column:1;grid-row:1/3;align-self:start;font-size:10px;line-height:20px;color:#999;margin:0;font-variant-numeric:tabular-nums}
 .resume .experience h3{grid-column:2;font-size:14px;line-height:20px;font-weight:500;letter-spacing:-.2px}
 .resume .experience p{grid-column:2;font-size:11px;line-height:1.6;color:#888}
 .portfolio-home>.work-index{display:none}
 .skip-intro,.loader,.fallback-hint{display:none!important}
 .mobile-projects{position:fixed;inset:auto 0 0;margin:0 auto;width:100%;max-width:680px;height:auto;max-height:min(86dvh,860px);border-radius:22px 22px 0 0;overflow:hidden;box-shadow:0 -16px 80px #0002}
 .mobile-projects[open]{display:flex;flex-direction:column}
 .mobile-projects::backdrop{background:#19191955;backdrop-filter:blur(8px)}
 .mobile-projects-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 20px 12px;flex:none;border-bottom:1px solid #e8e8e8}
 .mobile-projects-head h2{font-size:18px;line-height:1.4;font-weight:500;letter-spacing:-.4px}
 .mobile-projects-head h2 span{font-size:11px;color:#999;font-weight:400;letter-spacing:0;margin-left:9px}
 #mobile-projects-close{display:grid;place-items:center;width:44px;height:44px;font-size:26px;line-height:1}
 .mobile-projects-list{overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;padding:8px 24px calc(18px + env(safe-area-inset-bottom))}
 .mobile-projects .work-index{position:static;inset:auto;transform:none;display:flex;flex-direction:column;width:100%;max-width:none;min-width:0;padding:0;margin:0;border:0;gap:0;opacity:1!important}
 .mobile-projects .work-index>p{display:none}
 .mobile-projects .work-row,.mobile-projects .work-row[aria-current=true]{grid-template-columns:23px minmax(0,1fr);column-gap:12px;padding:12px 0;min-height:48px;font-size:14px;line-height:1.45;align-items:center;color:#888;transition:color .2s;border-bottom:1px solid #ededed}
 .mobile-projects .work-row[aria-current=true]{font-size:17px;font-weight:500;color:#141414}
 .mobile-projects .work-number,.mobile-projects .work-row[aria-current=true] .work-number{font-size:10px}
 .mobile-projects .work-row:last-child{border-bottom:0}
 body.mobile-modal-open{position:fixed;top:var(--mobile-scroll-top,0px);left:0;right:0;width:100%;overflow:hidden}
 .card-dialog{inset:0;margin:0;width:100%;height:100dvh;max-width:none;max-height:none;border-radius:0;box-shadow:none}
 .card-toolbar{height:auto;min-height:68px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px 18px;gap:8px;align-items:center}
 .card-toolbar h2{font-size:14px;font-weight:500;line-height:1.3;min-width:0;letter-spacing:-.3px}
 .card-toolbar>div{gap:4px;flex:none}
 .card-zoom{min-width:58px;min-height:44px;padding:6px;font-size:11px;color:#777}
 .card-close{width:44px;height:44px;font-size:28px}
 .card-scroll{padding-bottom:env(safe-area-inset-bottom);touch-action:pan-x pan-y pinch-zoom}
 .card-scroll.is-zoomed img{width:var(--mobile-sheet-width,1000px)}
 .player{inset:0;margin:0;width:100%;height:100dvh;max-height:none;border-radius:0;overflow:hidden;background:#101010}
 .player[open]{display:flex;flex-direction:column}
 .player-head{padding:calc(10px + env(safe-area-inset-top)) 12px 10px 20px;min-height:68px;flex:none;align-items:center;font-size:14px;line-height:1.35}
 .player-head .close{width:44px;height:44px;flex:none;color:#fff}
 .player video{flex:1;min-height:0;height:0;max-height:none;width:100%;aspect-ratio:auto!important;object-fit:contain}
 .player-foot{flex:none;padding:10px 20px calc(12px + env(safe-area-inset-bottom));gap:18px}
 .player-foot button{min-height:44px;font-size:12px;color:#aaa}
}
@media(max-width:360px){
 .mobile-intro,.mobile-work,.resume{width:calc(100% - 36px)}
 .mobile-identity h1{font-size:44px}
 #mobile-title{font-size:22px}
 .mobile-work-main{gap:12px}
 .mobile-arrows{gap:4px}
 .resume .experience>div{grid-template-columns:75px minmax(0,1fr);column-gap:12px}
}
