@font-face{font-family:Inter;src:url('assets/fonts/inter-400.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Inter;src:url('assets/fonts/inter-500.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:Inter;src:url('assets/fonts/inter-600.ttf') format('truetype');font-weight:600;font-display:swap}
:root{--bg:#f8f9fb;--ink:#25272d;--text:#646871;--muted:#6e737e;--line:#e2e4e9;--hover:#edeef2;--surface:#fff;--blue:#476487;--violet:#745c97;--copper:#976342;--green:#4e786e;--ease:cubic-bezier(.16,1,.3,1);--shadow:0 14px 38px -10px #1c20372b;color-scheme:light}
:root[data-theme=dark]{--bg:#17191d;--ink:#edeef3;--text:#b1b4bf;--muted:#9297a6;--line:#30333b;--hover:#252830;--surface:#22252d;--blue:#9fbbe7;--violet:#c1a8e6;--copper:#dba884;--green:#99c8b9;--shadow:0 14px 38px -10px #0008;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:36px;scrollbar-color:#b9bcc6 var(--bg);scrollbar-width:thin}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,sans-serif;font-size:14px;line-height:1.85;-webkit-font-smoothing:antialiased;transition:background-color .3s,color .3s}::selection{background:#dce3f2;color:#1d2944}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration-color:#b8bcc6;text-underline-offset:4px;text-decoration-thickness:1px;transition:color .16s,text-decoration-color .16s}a:hover{color:var(--ink);text-decoration-color:var(--ink)}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--blue);outline-offset:5px;border-radius:4px}[hidden]{display:none!important}.sr-only{position:absolute;overflow:hidden;width:1px;height:1px;clip-path:inset(50%);white-space:nowrap}.skip{position:fixed;top:12px;left:12px;z-index:20;padding:8px 14px;background:var(--surface);transform:translateY(-160%)}.skip:focus{transform:translateY(0)}button{border:0;background:none;padding:0}.page{width:min(520px,calc(100% - 48px));margin:0 auto;padding:76px 0 30px}h1,h2,h3,p{margin:0}h1,h2,h3{font-size:14px;font-weight:500;color:var(--ink);line-height:1.65;letter-spacing:-.015em}h1{font-size:15px}.identity{position:relative}.avatar-area{position:relative;width:104px;height:91px;margin:0 0 21px -14px}.avatar-button{position:relative;width:80px;height:80px;display:grid;place-items:center;z-index:1;border-radius:50%;isolation:isolate}.avatar-button:after{content:'';position:absolute;left:18px;right:18px;bottom:7px;height:7px;background:#43495625;filter:blur(5px);border-radius:50%;z-index:-1}.avatar-button canvas,.avatar-button [data-avatar-fallback]{position:absolute;inset:0;width:80px;height:80px}.avatar-tip{position:absolute;left:88px;top:23px;white-space:nowrap;font-size:11px;opacity:0;transform:translateX(-5px);transition:opacity .2s,transform .3s var(--ease);color:var(--muted)}.avatar-button:hover+.avatar-tip,.avatar-button:focus-visible+.avatar-tip{opacity:1;transform:translateX(0)}.roleline{display:flex;align-items:baseline;gap:5px;line-height:1.9;margin-top:2px;min-height:29px}.role-button{font-weight:500;text-align:left;color:var(--blue);border-radius:3px;display:inline-flex;align-items:center;gap:7px;line-height:1.6;max-width:100%}.role-button .cycle{width:12px;height:12px;opacity:.5;flex:none;transition:transform .45s var(--ease),opacity .2s}.role-button:hover .cycle{transform:rotate(100deg);opacity:1}.role-button:hover #role-text{text-decoration:underline;text-decoration-style:dotted;text-underline-offset:5px;text-decoration-color:var(--line)}#role-text{display:inline-block;will-change:auto}.role-button.changing .cycle{transform:rotate(180deg)}
section{margin-top:65px}section>h2,.section-title{margin-bottom:18px}.about{margin-top:64px}.role-copy{min-height:77px}.role-copy p{max-width:510px}.fixed-copy{margin-top:14px}.proof{display:flex;flex-wrap:wrap;gap:7px 17px;margin-top:18px;font-size:11px;color:var(--muted)}.proof a{display:inline-flex;gap:5px;align-items:center}.proof svg{width:12px;height:12px;flex:none}.section-title{display:flex;align-items:center;justify-content:space-between}.section-title h2{margin:0}.quiet-note{font-size:11px;color:var(--muted)}.work-group+.work-group{margin-top:27px}.work-group h3{font-size:11px;color:var(--muted);font-weight:400;margin-bottom:7px;letter-spacing:0}.work-list{list-style:none;padding:0;margin:0}.work-item{position:relative}.work-trigger{position:relative;width:calc(100% + 22px);margin-left:-11px;padding:11px;border-radius:7px;text-align:left;display:flex;align-items:center;gap:14px;line-height:1.65;isolation:isolate;transition:background .16s}.work-trigger:before{content:'';position:absolute;inset:0;z-index:-1;border-radius:7px;background:radial-gradient(250px circle at var(--mx,50%) var(--my,50%),#ccd4e450,transparent 80%);opacity:0;transition:opacity .2s}.work-trigger:hover,.work-trigger:focus-visible,.work-trigger[aria-expanded=true]{background:var(--hover)}.work-trigger:hover:before{opacity:1}.work-trigger:is(:hover,:focus-visible,[aria-expanded=true]) .work-desc{color:var(--ink)}.work-name{color:var(--ink);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--line);flex:none}.work-desc{flex:1;font-size:12px;color:var(--muted)}.row-arrow{width:13px;height:13px;flex:none;opacity:.45;transition:transform .35s var(--ease),opacity .2s}.work-trigger:hover .row-arrow{transform:translate(2px,-2px);opacity:1}.work-trigger[aria-expanded=true] .row-arrow{transform:rotate(90deg);opacity:1}.hover-preview{position:absolute;left:calc(100% + 30px);top:50%;width:232px;background:var(--surface);padding:8px;border-radius:13px;box-shadow:var(--shadow);pointer-events:none;z-index:5;opacity:0;transform:translate(0,calc(-50% + 8px)) rotate(2deg) scale(.97);transform-origin:0 50%;transition:transform .35s var(--ease),opacity .16s;visibility:hidden}.hover-preview img{display:block;width:100%;height:136px;object-fit:cover;border-radius:7px}.hover-preview .preview-note{display:block;color:var(--muted);font-size:11px;margin:6px 5px 1px}.work-item:hover .hover-preview,.work-item:focus-within .hover-preview{opacity:1;visibility:visible;transform:translate(0,-50%) rotate(-2deg) scale(1)}.work-item.preview-dismissed .hover-preview{opacity:0;visibility:hidden}.work-item.is-open .hover-preview{display:none}.work-detail{padding:13px 0 20px;animation:detail-in .35s var(--ease);font-size:12px}.work-detail p{max-width:470px}.detail-meta{display:block;margin-top:9px;color:var(--muted);font-size:11px}.work-detail .detail-links{display:flex;flex-wrap:wrap;gap:9px 20px;margin-top:12px}.work-detail .detail-image{display:block;width:min(310px,100%);height:auto;margin:15px 0 5px;border-radius:5px}.work-detail .detail-image.assistant{width:100%}.archive{display:inline-flex;align-items:center;gap:7px;font-size:11px;margin-top:17px}.inline-arrow{width:12px;height:12px;vertical-align:-1px;transition:transform .25s var(--ease)}a:hover>.inline-arrow{transform:translate(2px,-2px)}@keyframes detail-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
.practice-intro{margin-bottom:18px}.capabilities{margin:0;padding:0;list-style:none;display:grid;gap:14px}.capabilities li{display:grid;grid-template-columns:164px 1fr;gap:15px}.capabilities strong{font-weight:400;color:var(--ink)}.capabilities span{font-size:12px}.journey-intro{margin-bottom:28px}.journey{position:relative;list-style:none;padding:0;margin:0}.journey:before{content:'';position:absolute;top:17px;bottom:30px;left:7px;width:1px;background:var(--line)}.chapter{position:relative;padding:0 0 36px 34px;--chapter-color:var(--blue)}.chapter:last-child{padding-bottom:0}.chapter:before{content:'';position:absolute;left:3px;top:7px;width:9px;height:9px;border:2px solid var(--bg);border-radius:50%;background:var(--line);box-shadow:0 0 0 1px var(--line);transition:background .5s,box-shadow .5s}.chapter.seen:before{background:var(--chapter-color);box-shadow:0 0 0 1px var(--chapter-color)}.chapter:after{content:'';position:absolute;left:7px;top:22px;height:calc(100% - 18px);width:1px;background:var(--chapter-color);opacity:.6;transform:scaleY(0);transform-origin:top;transition:transform .9s var(--ease)}.chapter.seen:after{transform:scaleY(1)}.chapter:last-child:after{display:none}.chapter-heading{display:flex;gap:12px;align-items:baseline;margin-bottom:10px}.chapter-year{font-size:11px;font-variant-numeric:tabular-nums;color:var(--chapter-color);flex:none}.chapter h3{font-size:13px}.chapter-body{padding-right:78px;position:relative;font-size:12px;min-height:72px}.chapter-body p{position:relative;z-index:1}.chapter-art{width:61px;height:61px;position:absolute;top:1px;right:0;color:var(--chapter-color);stroke:currentColor;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;fill:none;transition:transform .45s var(--ease)}.chapter:hover .chapter-art{transform:translateY(-3px) rotate(-3deg)}.chapter-art .construction{stroke:var(--muted);opacity:.28;stroke-dasharray:2 3;stroke-width:.65}.chapter-art .accent-fill{fill:var(--chapter-color);fill-opacity:.07}.chapter-links{margin-top:11px;display:flex;gap:15px;font-size:11px}.career-trail{margin-top:11px;font-size:11px;color:var(--muted);line-height:1.9}.writing-list{list-style:none;padding:0;margin:0}.writing-list li+li{margin-top:16px}.writing-link{display:flex;align-items:center;gap:20px;text-decoration:none;font-size:13px}.writing-link>span{flex:1;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}.writing-link svg{flex:none}.writing-link small{display:block;font-size:11px;color:var(--muted);text-decoration:none;margin-top:3px}.contact-copy{margin-bottom:22px}.contact-list{display:grid;gap:15px;justify-items:start}.contact-list a{display:inline-flex;align-items:center;gap:6px;font-size:13px}.email-row{display:flex;align-items:center;gap:12px}.copy-button{width:28px;height:28px;display:grid;place-items:center;border-radius:5px;transition:background .15s,transform .2s}.copy-button:hover{background:var(--hover)}.copy-button:active{transform:scale(.92)}.copy-button svg{width:13px;height:13px}.copy-button .check-icon{display:none}.copy-button.copied .copy-icon{display:none}.copy-button.copied .check-icon{display:block;color:var(--green)}footer{display:flex;align-items:center;justify-content:space-between;margin-top:77px;font-size:11px;color:var(--muted);gap:20px}.footer-tools{display:flex;align-items:center;gap:20px}.footer-tools>a{text-decoration:none}.theme-button{height:32px;width:32px;display:grid;place-items:center;border-radius:50%;transition:background .2s,transform .4s var(--ease)}.theme-button:hover{background:var(--hover);transform:rotate(-15deg)}.theme-button svg{height:18px;width:18px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,10px);border-radius:9px;background:var(--ink);color:var(--bg);padding:8px 15px;font-size:12px;opacity:0;pointer-events:none;z-index:20;transition:opacity .2s,transform .3s var(--ease)}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:1550px){.page{padding-top:95px}}@media(max-width:1100px){.hover-preview{left:auto;right:18px;top:auto;bottom:calc(100% + 5px);width:210px;transform:translateY(8px) scale(.97)}.work-item:hover .hover-preview,.work-item:focus-within .hover-preview{transform:translateY(0) scale(1)}}@media(hover:none),(pointer:coarse){.hover-preview,.avatar-tip{display:none!important}}@media(max-width:600px){body{font-size:14px}.page{width:calc(100% - 44px);padding-top:40px}.avatar-area{margin-bottom:15px}section,.about{margin-top:52px}.role-copy{min-height:102px}.work-desc{font-size:11px}.work-trigger{gap:8px}.work-name{font-size:13px}.capabilities li{grid-template-columns:1fr;gap:2px}.capabilities{gap:15px}.chapter{padding-left:28px}.chapter-heading{display:block}.chapter-year{display:block;margin-bottom:3px}.chapter-body{padding-right:60px}.chapter-art{width:48px;height:48px;top:5px}.chapter h3{font-size:13px}.chapter-links{flex-wrap:wrap}.proof{font-size:11px}footer{margin-top:56px}.footer-tools{gap:12px}.quiet-note{font-size:11px}}@media(max-width:359px){.work-trigger{display:grid;grid-template-columns:1fr 13px;gap:1px 8px}.work-name{grid-column:1}.work-desc{grid-column:1}.row-arrow{grid-column:2;grid-row:1 / 3}.chapter-body{padding-right:0}.chapter-art{position:static;margin:12px 0 0;display:block}.role-button{font-size:13px}.page{width:calc(100% - 36px)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.chapter:after{transform:scaleY(1)}.hover-preview{transform:none!important}}
/* Precision Orbit: hand-ink miniatures, with geometry carrying the motion. */
.page{padding-top:64px}h1{font-size:16px}.identity{min-height:168px}.about{margin-top:36px}section{margin-top:56px}.role-copy{min-height:104px}.role-copy p{max-width:510px}.fixed-copy{font-size:12px;margin-top:12px}.proof{margin-top:18px}.perspective-art{position:absolute;top:2px;right:-5px;width:172px;height:172px;pointer-events:none}.perspective-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.perspective-path{position:absolute;inset:0;width:100%;height:100%;overflow:visible;stroke:var(--blue);stroke-width:.65;opacity:.55}.guide-path{opacity:.16}.active-path{stroke-dasharray:1;stroke-dashoffset:1}.perspective-path circle{opacity:0;fill:var(--blue);stroke:none}.identity.sketch-changing .active-path{animation:draw-perspective .62s var(--ease) both}.identity.sketch-changing .perspective-path circle{animation:endpoint .65s var(--ease) both}@keyframes draw-perspective{0%{stroke-dashoffset:1;opacity:0}20%{opacity:1}80%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}@keyframes endpoint{0%,55%{opacity:0}75%{opacity:1}100%{opacity:0}}@keyframes hello-ink{50%{transform:translate(7px,-4px);opacity:1}}.role-button{min-height:28px}.role-button:active .cycle{transform:rotate(180deg) scale(.85)}.section-title{gap:16px}.section-title .quiet-note{font-size:11px;text-align:right}.product-row .work-trigger{display:grid;grid-template-columns:66px 1fr 13px;column-gap:14px;row-gap:0;padding-top:7px;padding-bottom:7px;min-height:80px}.work-thumb{display:block;width:66px;height:66px;object-fit:contain;grid-column:1;grid-row:1 / 3}.product-row .work-name{grid-column:2;grid-row:1;align-self:end;justify-self:start}.product-row .work-desc{grid-column:2;grid-row:2;align-self:start;line-height:1.7}.product-row .row-arrow{grid-column:3;grid-row:1 / 3}.hover-preview{pointer-events:auto;border-radius:8px;transform:translate(0,calc(-50% + 5px));transition:transform .28s var(--ease),opacity .15s,visibility .15s}.hover-preview:after{content:'';position:absolute;left:-31px;top:0;width:32px;height:100%}.work-item:hover .hover-preview,.work-item:focus-within .hover-preview{transform:translate(0,-50%)}.hover-preview img{border-radius:3px}.work-detail{font-size:13px;padding-top:12px;animation:none}.work-detail p+p{margin-top:12px}.work-detail .detail-image{height:auto}.work-trigger{min-height:44px}.work-detail .detail-links{padding-bottom:3px}.chapter-body{padding-right:110px;min-height:104px;font-size:13px}.chapter-art{width:104px;height:104px;top:0;right:-5px;object-fit:contain;transition:none}.chapter:hover .chapter-art{transform:none}.chapter-rule{position:absolute;right:0;top:98px;width:94px;height:16px;stroke:var(--chapter-color);stroke-width:.65;opacity:.6;pointer-events:none}.chapter-rule path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .65s var(--ease)}.chapter-rule circle{fill:var(--chapter-color);stroke:none;opacity:0;transition:opacity .3s .3s}.chapter.seen .chapter-rule path{stroke-dashoffset:0}.chapter.seen .chapter-rule circle{opacity:1}.chapter-heading{margin-bottom:11px}.chapter{padding-bottom:40px}.journey-intro{font-size:13px}.capabilities strong{font-size:13px}.practice-intro{font-size:13px}.contact-copy{font-size:13px}.copy-button{width:36px;height:36px}.theme-button{width:36px;height:36px}.contact-list{gap:10px}.email-row{gap:6px}:root[data-theme=dark] .sketch{filter:brightness(.83) saturate(.65)}
@media(min-width:1550px){.page{padding-top:80px}}@media(max-width:1100px){.hover-preview{transform:translateY(5px)}.work-item:hover .hover-preview,.work-item:focus-within .hover-preview{transform:translateY(0)}.hover-preview:after{left:0;top:100%;width:100%;height:7px}}@media(max-width:600px){.page{padding-top:35px}.identity{min-height:162px}.perspective-art{width:138px;height:138px;right:-5px;top:10px}.about{margin-top:32px}section{margin-top:48px}.role-copy{min-height:130px}.fixed-copy{max-width:305px}.section-title{align-items:baseline}.section-title .quiet-note{max-width:136px;line-height:1.6}.product-row .work-trigger{grid-template-columns:60px 1fr 13px;gap:0 10px;min-height:76px}.work-thumb{width:60px;height:60px}.product-row .work-name{font-size:14px}.product-row .work-desc{font-size:11px}.chapter-body{padding-right:87px;min-height:100px}.chapter-art{width:82px;height:82px;right:-3px;top:4px}.chapter-rule{width:78px;top:87px}.chapter-links{line-height:1.8}.capabilities{gap:14px}.capabilities li{gap:1px}.work-group+.work-group{margin-top:22px}.work-detail{font-size:13px}.journey-intro{font-size:13px}.chapter{padding-bottom:34px}.contact-list a{font-size:12px}}
@media(max-width:359px){.perspective-art{width:111px;height:111px;right:-4px;top:16px}.role-copy{min-height:155px}.work-trigger{gap:2px 8px}.product-row .work-trigger{grid-template-columns:53px 1fr 13px;gap:0 8px}.work-thumb{width:53px;height:53px}.chapter-body{padding-right:0;min-height:0}.chapter-art{position:static;display:block;width:96px;height:96px;margin:8px 0 0}.chapter-rule{right:auto;left:0;top:auto;bottom:-2px;width:90px}.section-title .quiet-note{max-width:106px}.footer-tools{gap:8px}footer{gap:10px}.footer-tools>a{font-size:11px}}
@media(prefers-reduced-motion:reduce){.active-path{stroke-dashoffset:1}.chapter-rule path{stroke-dashoffset:0}.chapter-rule circle{opacity:1}.perspective-path circle{display:none}}
/* Real inline SVG ink: the same geometry takes its material from the theme. */
:root{--sketch-ink:#424953;--sketch-faint:#b9c1cd;--sketch-paper:#f8f9fb;--sketch-wash:#93adc9;--sketch-accent:#5b7fa9}:root[data-theme=dark]{--sketch-ink:#c8d0dc;--sketch-faint:#586274;--sketch-paper:#17191d;--sketch-wash:#729acb;--sketch-accent:#9fbbe7}.perspective-object{position:absolute;inset:0}.perspective-object>.sketch{display:block;width:100%;height:100%}.sketch{overflow:visible}:root[data-theme=dark] .sketch{filter:none}.chapter:nth-child(2){--sketch-wash:#bc9372;--sketch-accent:var(--copper)}.chapter:nth-child(3),#product-cast{--sketch-wash:#a394c2;--sketch-accent:var(--violet)}.sketch .moving-plane{transform-box:fill-box;transform-origin:50% 65%;transition:transform .45s var(--ease)}.sketch .construction{transition:opacity .3s;opacity:.65}.sketch .draw-line{stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-width .2s;opacity:.8}.identity:is(:hover,:focus-within) .moving-plane,.work-trigger:is(:hover,:focus-visible) .moving-plane,.work-item.is-open .work-trigger .moving-plane,.chapter:hover .moving-plane{transform:translateY(-3px) rotate(-1deg)}.identity:is(:hover,:focus-within) .secondary-plane,.work-trigger:is(:hover,:focus-visible) .secondary-plane,.chapter:hover .secondary-plane{transform:translateY(-1px) translateX(2px)}.identity:is(:hover,:focus-within) .tertiary-plane,.work-trigger:is(:hover,:focus-visible) .tertiary-plane,.chapter:hover .tertiary-plane{transform:translateY(1px) translateX(3px)}.identity:is(:hover,:focus-within) .draw-line,.work-trigger:is(:hover,:focus-visible) .draw-line,.work-item.is-open .work-trigger .draw-line,.chapter:hover .draw-line{animation:draw-ink .65s var(--ease) both;stroke-width:1.5}.identity.sketch-changing .draw-line{animation:draw-ink .65s var(--ease) both}.identity:is(:hover,:focus-within) .construction,.chapter:hover .construction{opacity:1}@keyframes draw-ink{from{stroke-dashoffset:1;opacity:.2}to{stroke-dashoffset:0;opacity:1}}.chapter-art{stroke:none;fill:none}.chapter-art .construction{stroke-width:.6;opacity:.65;stroke-dasharray:3 4}.chapter-art .ink{stroke-width:1.2}.chapter-rule{opacity:.55}.work-thumb{opacity:.95}.sketch .marker{transition:opacity .3s}.work-trigger:is(:hover,:focus-visible) .marker,.chapter:hover .marker{opacity:1}
@media(hover:none){.chapter:hover .moving-plane{transform:none}.chapter:hover .draw-line{animation:none}}@media(prefers-reduced-motion:reduce){.sketch .moving-plane{transform:none!important}.sketch .draw-line{animation:none!important;stroke-dashoffset:0}.identity.sketch-changing .active-path{animation:none}}
.sketch .marker path{opacity:.32}.sketch .marker path+path{opacity:.16}.chapter-body{display:flow-root;padding-right:0}.chapter-art{position:static;float:right;margin:0 0 10px 14px;width:104px;height:104px}.chapter-rule{right:0;top:101px}.chapter-body p{position:static}.chapter-art .marker path{opacity:.32}.chapter-art .marker path+path{opacity:.16}@media(max-width:600px){.chapter-art{width:82px;height:82px;margin:0 0 8px 12px}.chapter-rule{top:84px}.chapter-body{min-height:100px}}@media(max-width:359px){.chapter-art{width:76px;height:76px;margin:0 0 8px 10px;float:right}.chapter-rule{left:auto;right:0;top:78px;bottom:auto;width:70px}}
.personal-about{margin-top:24px;font-size:13px}.personal-about>p{max-width:490px}.personal-interests{display:flex;align-items:start;gap:28px;margin-top:12px}.personal-interest{display:grid;justify-items:start;gap:3px;min-width:80px;border-radius:5px;text-align:left}.personal-interest>.sketch{display:block;width:58px;height:58px}.personal-interest>span{font-size:11px;color:var(--muted)}.personal-interest:is(:hover,:focus-visible,.is-animating) .moving-plane{transform:translateY(-2px) rotate(-1deg)}.personal-interest:is(:hover,:focus-visible,.is-animating) .draw-line{animation:draw-ink .7s var(--ease) both}.personal-interest:is(:hover,:focus-visible,.is-animating) .gear{transform:rotate(12deg)}.personal-interest:is(:hover,:focus-visible,.is-animating) .cat-tail{transform:rotate(-8deg);transform-origin:20% 85%}.personal-interest:is(:hover,:focus-visible,.is-animating) .cat-ear{transform:rotate(5deg);transform-box:fill-box;transform-origin:50% 100%;transition:transform .4s var(--ease)}.identity:is(:hover,:focus-within) .pencil,.chapter:hover .pencil{transform:translate(1px,-2px) rotate(1deg);transform-box:fill-box;transform-origin:center;transition:transform .45s var(--ease)}.identity:is(:hover,:focus-within) .book-page,.chapter:hover .book-page{transform:translateY(-2px) rotate(-1deg)}.chapter:hover .trophy-cup{transform:translateY(-2px) rotate(2deg)}.type-word{display:inline-block;white-space:nowrap}.type-letter{display:inline;animation:type-ink .24s ease-out both;animation-delay:var(--type-delay)}@keyframes type-ink{0%{opacity:0;color:var(--type-color)}25%{opacity:1;color:var(--type-color)}65%{color:var(--type-color)}100%{opacity:1;color:inherit}}.role-button.changing #role-text{background:none;color:var(--blue);animation:none}.role-button.changing .type-letter{animation-duration:.3s}.personal-interest:active{transform:translateY(1px)}@media(max-width:600px){.personal-about{margin-top:20px;font-size:13px}.personal-interests{gap:22px}.personal-interest>.sketch{width:52px;height:52px}.personal-interest{min-width:76px}}@media(max-width:359px){.personal-interests{gap:13px}.personal-interest{min-width:72px}.personal-interest>span{font-size:11px}}
@media(prefers-reduced-motion:reduce){.type-letter{animation:none!important;opacity:1}.personal-interest .moving-plane,.personal-interest .cat-ear,.pencil{transform:none!important;animation:none!important}}
/* The selected-work line weight is the shared optical weight at every display size. */
:root{--illustration-stroke:.65px}.sketch :is(path,rect,circle,ellipse,line,polyline,polygon){stroke-width:var(--illustration-stroke)!important;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.sketch .construction{stroke-dasharray:3 4;opacity:.5}.avatar-button{transition:transform .22s var(--ease)}.avatar-button:active{transform:scale(.96)}

/* One masked glass surface includes both the body and centered pointer. */
:root{--welcome-glass:rgba(255,255,255,.78);--welcome-shadow:rgba(35,44,68,.10)}:root[data-theme=dark]{--welcome-glass:rgba(48,51,60,.82);--welcome-shadow:rgba(0,0,0,.24)}
.avatar-welcome{position:absolute;left:78px;top:-9px;width:max-content;max-width:212px;z-index:3;isolation:isolate;padding:10px 14px;color:var(--ink);font-size:12px;line-height:1.6;transform-origin:0 50%;filter:drop-shadow(0 8px 12px var(--welcome-shadow))}.avatar-welcome:before{content:'';position:absolute;inset:0 0 0 -10px;z-index:-1;background:var(--welcome-glass);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 100' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M26 0H204Q220 0 220 16V84Q220 100 204 100H26Q10 100 10 84V60L0 50 10 40V16Q10 0 26 0Z'/%3E%3C/svg%3E") center/100% 100% no-repeat}
#role-text,.role-button.changing #role-text{color:#305e89;background:linear-gradient(100deg,#305e89 5%,#755096 35%,#9a542f 60%,#305e89 90%);background-size:260% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:role-spectrum 7s ease-in-out infinite alternate}:root[data-theme=dark] #role-text{background-image:linear-gradient(100deg,#a8c7ff 5%,#d8b8ff 35%,#ffcbab 60%,#a8c7ff 90%)}@keyframes role-spectrum{from{background-position:0% 50%}to{background-position:100% 50%}}@media(prefers-reduced-motion:reduce){#role-text,.role-button.changing #role-text{animation:none!important}}@media(forced-colors:active){#role-text,.role-button.changing #role-text{background:none;-webkit-text-fill-color:ButtonText;color:ButtonText}}


/* Theme control remains available at every scroll position, including safe-area devices. */
body{transition:none}
.theme-button{position:fixed;right:max(24px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom));z-index:30;width:44px;height:44px;background:var(--surface);color:var(--ink);box-shadow:0 4px 16px -4px #17191d24;view-transition-name:theme-control;transition:transform .2s var(--ease),background-color .15s}
.theme-button:hover{background:var(--hover);transform:translateY(-2px)}
.theme-button:active{transform:scale(.94)}
.theme-button svg{width:20px;height:20px}
.theme-moon{display:none}
:root[data-theme=dark] .theme-sun{display:none}
:root[data-theme=dark] .theme-moon{display:block}
:root[data-theme=dark] .theme-button{box-shadow:0 4px 16px -4px #0008}
:root.theme-changing::view-transition{pointer-events:none}
:root.theme-changing::view-transition-group(root),:root.theme-changing::view-transition-group(theme-control){animation:none}
:root.theme-changing::view-transition-old(root),:root.theme-changing::view-transition-new(root){animation:none;mix-blend-mode:normal}
:root.theme-changing::view-transition-new(root){clip-path:path("M0 0H0V0H0Z")}
:root.theme-changing::view-transition-group(theme-control){z-index:1}
:root.theme-changing::view-transition-old(theme-control){display:none}
:root.theme-changing::view-transition-new(theme-control){animation:none;mix-blend-mode:normal}
@media(max-width:600px){.theme-button{right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.theme-button{transition:none}.theme-button:hover,.theme-button:active{transform:none}}

/* Older browsers reveal the live new theme through one inert snapshot of the old page. */
.theme-snapshot{position:fixed;inset:0;z-index:25;overflow:hidden;pointer-events:none;background:var(--bg);color:var(--text);contain:strict}
.theme-snapshot .page{pointer-events:none}
.theme-snapshot :is(.type-letter,.draw-line,.moving-plane){animation:none!important}

/* Compact, theme-aware line icons for supporting work and contact. */
:root{--icon-blue-bg:rgba(97,142,197,.12);--icon-blue-ink:#45688e;--icon-lavender-bg:rgba(147,121,181,.13);--icon-lavender-ink:#795f99;--icon-amber-bg:rgba(194,145,74,.13);--icon-amber-ink:#976b33;--icon-green-bg:rgba(93,151,124,.13);--icon-green-ink:#4d7b66}
:root[data-theme=dark]{--icon-blue-bg:rgba(112,161,220,.15);--icon-blue-ink:#a2c1e9;--icon-lavender-bg:rgba(174,145,213,.15);--icon-lavender-ink:#c5ade4;--icon-amber-bg:rgba(220,173,102,.14);--icon-amber-ink:#dbb77d;--icon-green-bg:rgba(114,179,151,.14);--icon-green-ink:#9ccbb5}
.compact-icon{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;flex:none;transition:transform 180ms ease-out;background:var(--icon-bg);color:var(--icon-ink)}
.compact-icon svg{display:block;width:20px;height:20px;flex:none;stroke-width:1.5}
.icon-blue{--icon-bg:var(--icon-blue-bg);--icon-ink:var(--icon-blue-ink)}.icon-lavender{--icon-bg:var(--icon-lavender-bg);--icon-ink:var(--icon-lavender-ink)}.icon-amber{--icon-bg:var(--icon-amber-bg);--icon-ink:var(--icon-amber-ink)}.icon-green{--icon-bg:var(--icon-green-bg);--icon-ink:var(--icon-green-ink)}
.work-trigger.icon-row{display:grid;grid-template-columns:36px 1fr 13px;gap:0 12px;min-height:56px;padding-block:8px}
.icon-row>.compact-icon{grid-column:1;grid-row:1 / 3}.icon-row>.work-name{grid-column:2;grid-row:1;align-self:end;justify-self:start}.icon-row>.work-desc{grid-column:2;grid-row:2;align-self:start;line-height:1.7}.icon-row>.row-arrow{grid-column:3;grid-row:1 / 3}
.capabilities li{grid-template-columns:36px 116px 1fr;gap:12px;align-items:center}.capabilities li>.compact-icon{font-size:inherit}.capabilities li>strong{line-height:1.65}.capabilities li>span:not(.compact-icon){line-height:1.75}
.writing-link{gap:12px}.writing-link>.compact-icon{flex:none;text-decoration:none}.writing-link>.writing-text{min-width:0}.writing-link>.inline-arrow{margin-left:auto}
.contact-list .contact-link{gap:8px}.contact-link>.compact-icon{width:32px;height:32px;border-radius:9px}.contact-link>.inline-arrow{margin-left:-2px}
@media(hover:hover){.work-trigger.icon-row:hover>.compact-icon,.writing-link:hover>.compact-icon,.contact-link:hover>.compact-icon{transform:translateY(-1px) rotate(-3deg)}}
.work-trigger.icon-row:focus-visible>.compact-icon,.writing-link:focus-visible>.compact-icon,.contact-link:focus-visible>.compact-icon{transform:translateY(-1px)}
@media(max-width:600px){.capabilities li{grid-template-columns:36px 1fr;gap:1px 12px}.capabilities li>.compact-icon{grid-column:1;grid-row:1 / 3}.capabilities li>strong{grid-column:2;align-self:end}.capabilities li>span:not(.compact-icon){grid-column:2;align-self:start}.work-trigger.icon-row{column-gap:10px}.writing-link{gap:10px}}
@media(max-width:359px){.work-trigger.icon-row{grid-template-columns:36px minmax(0,1fr) 13px}.email-row{gap:2px}.contact-list .contact-link{gap:6px}.contact-link>.inline-arrow{margin-left:-2px}}
@media(prefers-reduced-motion:reduce){.compact-icon{transition:none!important;transform:none!important}}

/* Accordion affordances follow expansion state; external links retain their arrows. */
.work-trigger .accordion-indicator,.work-trigger:hover .accordion-indicator,.work-trigger[aria-expanded=true] .accordion-indicator{transform:none}.accordion-vertical{transform-origin:8px 8px;transition:transform .2s var(--ease),opacity .16s}.work-trigger[aria-expanded=true] .accordion-vertical{transform:scaleY(0);opacity:0}@media(prefers-reduced-motion:reduce){.accordion-vertical{transition:none}}
