@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#fbfcfd;--surface:#fff;--surface-muted:#f0f3f6;--ink:#111318;--ink-soft:#3d424a;--muted:#6b7280;--line:#e1e5ea;--line-strong:#aab2bd;--accent:#ffe45c;--accent-strong:#ffd21f;--button-bg:#111318;--button-ink:#fff;--button-border:#111318;--shadow:0 18px 50px #11131814;--container:700px;--container-wide:960px;--radius-sm:8px;--radius-md:12px;--cursor-x:50vw;--cursor-y:50vh;color:var(--ink);background:var(--bg);font-optical-sizing:auto;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter Variable,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);min-width:320px;margin:0}body,button,input,textarea{font:inherit}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}img,svg{display:block}h1,h2,h3,p,figure,blockquote,ul{margin:0}ul{padding:0}h1,h2,h3{letter-spacing:0;line-height:1.08}h1{font-size:clamp(2.45rem,5.2vw,4rem)}h2{font-size:clamp(1.45rem,2.8vw,2rem)}h3{font-size:1.05rem}p{color:var(--ink-soft)}::selection{color:var(--surface);background:var(--ink)}#root{min-height:100svh}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.portfolio-shell{min-height:100svh;color:var(--ink);background:linear-gradient(180deg, var(--bg), var(--surface) 48%, var(--bg));isolation:isolate;display:flow-root;position:relative;overflow:clip}.portfolio-shell[data-theme=gotham-light]{--bg:#fbfcfd;--surface:#fff;--surface-muted:#f0f3f6;--ink:#111318;--ink-soft:#3d424a;--muted:#6b7280;--line:#e1e5ea;--line-strong:#aab2bd;--accent:#ffe45c;--accent-strong:#ffd21f;--button-bg:#111318;--button-ink:#fff;--button-border:#111318;--shadow:0 18px 50px #11131814}.portfolio-shell[data-theme=noir-charcoal]{--bg:#050607;--surface:#0d1013;--surface-muted:#171b20;--ink:#f5f7fa;--ink-soft:#d8dde5;--muted:#99a2ad;--line:#232932;--line-strong:#4c5561;--accent:#ffe45c;--accent-strong:#ffd21f;--button-bg:#f5f7fa;--button-ink:#050607;--button-border:#f5f7fa;--shadow:0 24px 80px #0000008f}.grid-bg{z-index:-1;pointer-events:none;background-image:radial-gradient(circle, color-mix(in srgb, var(--line) 48%, transparent) 1px, transparent 1.35px), linear-gradient(to bottom, color-mix(in srgb, var(--line) 24%, transparent) 1px, transparent 1px);opacity:.7;background-position:0 0,0 0;background-size:30px 30px,100% 7.5rem;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000000b8,#00000038 54%,#0000 100%);mask-image:linear-gradient(#000000b8,#00000038 54%,#0000 100%)}.site-header,.home-container,.wide-container,.page-container,.article-page,.case-study-page,.site-footer{z-index:1;position:relative}.site-header{width:min(var(--container-wide), calc(100% - 2.5rem));color:var(--ink);grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;margin:1.85rem auto 0;display:grid}.brand,.nav-links a,.nav-icon-link,.button,.social-links a,.section-heading a,.project-row,.project-preview,.blog-card,.contact-actions a,.site-footer a,.spotify-card,.back-link{text-decoration:none}.brand{min-width:2.4rem;min-height:2.4rem;color:var(--ink);justify-self:start;align-items:center;font-size:.88rem;font-weight:800;display:inline-flex}.brand span{border-bottom:1px solid var(--ink)}.nav-links{color:var(--muted);justify-content:center;align-items:center;gap:1.05rem;font-size:.95rem;display:flex}.nav-links a{transition:color .16s,transform .16s}.nav-links a:hover,.nav-links a:focus-visible,.nav-links a.active{color:var(--ink)}.nav-actions{justify-self:end;align-items:center;gap:.55rem;display:flex}.nav-icon-link{border:1px solid var(--line);width:2.4rem;height:2.4rem;color:var(--ink-soft);background:color-mix(in srgb, var(--surface) 78%, transparent);cursor:pointer;border-radius:999px;place-items:center;transition:color .16s,background .16s,border-color .16s,transform .16s;display:grid}.nav-icon-link:hover,.nav-icon-link:focus-visible,.social-links a:hover,.social-links a:focus-visible{color:var(--ink);border-color:var(--line-strong);transform:translateY(-1px)}.home-container,.page-container,.article-page{width:min(var(--container), calc(100% - 2.5rem));margin:0 auto}.wide-container{width:min(var(--container-wide), calc(100% - 2.5rem));margin:0 auto}.hero{padding:clamp(4.4rem,10vw,7.5rem) 0 0}.eyebrow{color:var(--muted);letter-spacing:.02em;font-size:.8rem;font-weight:700}.hero h1{max-width:720px;color:var(--ink);margin-top:.75rem;font-weight:760;line-height:1.02}.hero-bio{max-width:680px;color:var(--ink-soft);margin-top:1.1rem;font-size:clamp(1rem,2vw,1.16rem);line-height:1.72}.tag-row,.hero-meta,.hero-actions,.social-links,.blog-tags,.article-meta{flex-wrap:wrap;align-items:center;display:flex}.tag-row{gap:.45rem;margin-top:1.1rem}.tag,.blog-tags span,.article-meta span,.skill-pills span{border:1px dashed var(--line-strong);border-radius:var(--radius-sm);min-height:1.65rem;color:var(--ink-soft);background:color-mix(in srgb, var(--surface) 72%, transparent);align-items:center;padding:.25rem .56rem;font-size:.78rem;font-weight:560;display:inline-flex}.hero-meta{color:var(--muted);gap:1rem;margin-top:1rem;font-size:.9rem}.hero-meta span{align-items:center;gap:.35rem;display:inline-flex}.hero-meta svg{color:var(--accent)}.hero-actions{gap:.7rem;margin-top:1.5rem}.button{border:1px solid var(--line);border-radius:var(--radius-sm);min-height:2.7rem;color:var(--ink);background:var(--surface);box-shadow:var(--shadow);justify-content:center;align-items:center;gap:.45rem;padding:.68rem 1.02rem;font-size:.9rem;font-weight:680;transition:transform .18s,border-color .18s,background .18s;display:inline-flex}.button:hover,.button:focus-visible,.project-preview:hover,.project-preview:focus-visible,.blog-card:hover,.blog-card:focus-visible{transform:translateY(-2px)}.button-primary{border-color:var(--button-border);color:var(--button-ink);background:var(--button-bg)}.social-links{gap:.28rem;margin-top:1rem}.social-links a{width:2.45rem;height:2.45rem;color:color-mix(in srgb, var(--muted) 72%, transparent);border:1px solid #0000;border-radius:999px;place-items:center;transition:color .16s,border-color .16s,transform .16s;display:grid}.social-monogram{letter-spacing:-.02em;font-size:.82rem;font-weight:820;line-height:1}.divider{background:var(--line);height:1px;margin:clamp(2.2rem,6vw,3.9rem) 0}.home-container .divider{margin:clamp(2rem,5vw,3.2rem) 0}.section-block{scroll-margin-top:5rem}.section-heading,.list-title{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.2rem;display:flex}.section-heading p{max-width:33rem;font-size:.95rem}.home-container .section-heading{margin-bottom:1rem}.section-heading a,.list-title span{color:var(--muted);flex:none;font-size:.9rem;font-weight:600}.section-heading a:hover,.site-footer a:hover,.back-link:hover{color:var(--ink)}.project-stack{display:grid}.project-row{border-bottom:1px solid var(--line);color:inherit;grid-template-columns:minmax(0,1fr) auto;gap:1rem;padding:1.05rem 0;display:grid}.project-row:first-child{padding-top:0}.home-container .project-row,.home-container .blog-card{padding:.9rem 0}.home-container .project-row:first-child,.home-container .blog-card:first-child{padding-top:0}.project-row span:first-child,.project-type,.project-index,.case-study-section span,.case-study-sidebar span,.blog-date,.article-header>span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.76rem;font-weight:740}.project-row h3,.blog-card h3,.experience-item h3,.practice-card h3{color:var(--ink);margin-top:.25rem}.project-row p,.blog-card p,.practice-card p{margin-top:.32rem;font-size:.92rem;line-height:1.55}.row-arrow{color:var(--muted);font-size:.86rem;font-weight:760}.project-row:hover h3,.blog-card:hover h3,.project-preview:hover h3{color:var(--accent-strong)}.page-hero{width:min(var(--container), calc(100% - 2.5rem));text-align:center;place-items:center;margin:0 auto;padding:clamp(4rem,10vw,7rem) 0 clamp(2.6rem,6vw,4.5rem);display:grid}.page-hero-icon{border:1px solid var(--line);border-radius:var(--radius-md);width:3rem;height:3rem;color:var(--accent);background:color-mix(in srgb, var(--surface) 68%, transparent);place-items:center;margin-bottom:1rem;display:grid}.page-hero h1{color:var(--ink);font-size:clamp(2.8rem,7vw,4.4rem);font-weight:780}.page-hero p{max-width:38rem;margin-top:.65rem}.project-gallery{gap:1.4rem;padding-bottom:clamp(3rem,7vw,5rem);display:grid}.project-preview{border:1px solid var(--line);border-radius:var(--radius-md);color:inherit;background:var(--surface);box-shadow:var(--shadow);grid-template-columns:minmax(0,1.08fr) minmax(18rem,.72fr);align-items:stretch;transition:transform .18s,border-color .18s;display:grid;overflow:hidden}.project-preview-art{background:radial-gradient(circle at 18% 12%, color-mix(in srgb, var(--accent) 18%, transparent), transparent 15rem), linear-gradient(135deg, var(--ink), color-mix(in srgb, var(--ink) 88%, var(--surface)));place-items:center;min-height:18rem;padding:clamp(1rem,3vw,2rem);display:grid}.project-preview-copy{align-content:center;gap:.55rem;padding:clamp(1.1rem,3vw,1.7rem);display:grid}.project-preview h3{color:var(--ink);font-size:clamp(1.35rem,3vw,2rem)}.project-link{color:var(--accent-strong);align-items:center;gap:.35rem;margin-top:.4rem;font-size:.9rem;font-weight:760;display:inline-flex}.experience-list{display:grid}.experience-item{border-bottom:1px solid var(--line);grid-template-columns:3.25rem minmax(0,1fr) minmax(11rem,.3fr);gap:1.4rem;padding:1.55rem 0;display:grid}.experience-list-compact .experience-item{grid-template-columns:3rem minmax(0,1fr) minmax(8.5rem,.24fr);gap:1rem;padding:.95rem 0}.experience-item:first-child{padding-top:0}.experience-mark{border:1px solid var(--line);border-radius:var(--radius-sm);width:3.1rem;height:3.1rem;color:var(--ink);background:var(--surface);place-items:center;font-size:.75rem;font-weight:760;display:grid}.experience-list-compact .experience-mark{width:2.85rem;height:2.85rem;font-size:.72rem}.experience-heading{gap:.15rem;display:grid}.experience-title-row{flex-wrap:wrap;align-items:baseline;gap:.5rem;min-width:0;display:flex}.experience-heading p,.experience-summary,.experience-meta,.experience-item li{color:var(--ink-soft);font-size:.92rem}.experience-summary{max-width:42rem;margin-top:.45rem;line-height:1.55}.experience-list-compact .experience-summary,.experience-list-compact .experience-meta{font-size:.88rem}.working-badge{color:#1f6a40;background:#e6f6ea;border-radius:999px;flex:none;align-items:center;min-height:1.45rem;padding:.16rem .5rem;font-size:.75rem;font-weight:700;display:inline-flex}.skill-pills{flex-wrap:wrap;gap:.45rem;margin-top:.75rem;display:flex}.experience-item ul{gap:.42rem;margin-top:.95rem;padding-left:1.05rem;display:grid}.experience-meta{text-align:right;align-content:start;gap:.35rem;display:grid}.blog-stack,.blog-index{display:grid}.blog-card{border-bottom:1px solid var(--line);color:inherit;grid-template-columns:minmax(0,1fr) auto;gap:1rem;padding:1.08rem 0;transition:transform .18s;display:grid}.blog-card:first-child{padding-top:0}.blog-card svg{color:var(--muted);margin-top:.15rem}.blog-tags{gap:.4rem;margin-top:.7rem}.practice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;display:grid}.practice-card,.quote-card,.contact-actions a{border:1px solid var(--line);border-radius:var(--radius-md);background:color-mix(in srgb, var(--surface) 88%, transparent);box-shadow:var(--shadow)}.practice-card{align-content:start;gap:.55rem;min-height:12rem;padding:1rem;display:grid}.home-container .practice-card{min-height:10.5rem;padding:.95rem}.practice-card svg{color:var(--accent)}.proof-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;display:grid}.quote-card{gap:1rem;padding:1rem;display:grid}.home-container .quote-card{gap:.8rem;padding:.95rem}.quote-card blockquote{color:var(--ink);font-size:1rem;line-height:1.45}.home-container .quote-card blockquote{font-size:.96rem}.quote-card figcaption{border-top:1px solid var(--line);color:var(--muted);gap:.2rem;padding-top:.8rem;font-size:.82rem;display:grid}.quote-card strong{color:var(--ink)}.contact-section{grid-template-columns:minmax(0,1fr) minmax(16rem,.52fr);gap:1.4rem;padding-bottom:1.5rem;display:grid}.contact-section h2{max-width:34rem}.contact-section p{max-width:35rem;margin-top:.65rem}.contact-actions{gap:.65rem;display:grid}.contact-actions a{min-height:3.1rem;color:var(--ink);align-items:center;gap:.65rem;padding:.82rem .95rem;font-size:.92rem;font-weight:650;display:flex}.case-study-page{width:min(var(--container-wide), calc(100% - 2.5rem));margin:0 auto;padding:clamp(3rem,8vw,5rem) 0 clamp(3rem,7vw,5rem)}.back-link{color:var(--muted);align-items:center;gap:.4rem;font-size:.9rem;font-weight:650;display:inline-flex}.case-study-hero{max-width:760px;margin-top:2.2rem;margin-bottom:clamp(2rem,5vw,3.2rem)}.case-study-hero h1{color:var(--ink);margin-top:.95rem}.case-study-hero p{margin-top:.9rem;font-size:1.08rem}.case-study-layout{grid-template-columns:minmax(16rem,.42fr) minmax(0,1fr);align-items:start;gap:1.1rem;display:grid}.case-study-sidebar{gap:.75rem;display:grid;position:sticky;top:1.4rem}.case-study-sidebar>div,.case-study-section{border:1px solid var(--line);border-radius:var(--radius-md);background:color-mix(in srgb, var(--surface) 88%, transparent)}.case-study-sidebar>div{gap:.45rem;padding:.9rem;display:grid}.case-study-sidebar p{font-size:.9rem}.case-study-sections{gap:.75rem;display:grid}.case-study-section{gap:.6rem;padding:1rem;display:grid}.case-study-section p{color:var(--ink-soft);font-size:1rem;line-height:1.65}.article-page{padding:clamp(3rem,8vw,5rem) 0}.article-header{gap:.75rem;margin-top:2rem;display:grid}.article-header h1{color:var(--ink);font-size:clamp(2.3rem,6vw,4.25rem)}.article-header p{font-size:1.08rem}.article-meta{gap:.45rem}.article-body{gap:1.05rem;margin-top:2.2rem;display:grid}.article-body p{font-size:1.06rem;line-height:1.78}.not-found{align-content:center;justify-items:start;gap:.85rem;min-height:58svh;display:grid}.site-footer{width:min(var(--container-wide), calc(100% - 2.5rem));border-top:1px solid var(--line);margin:clamp(2rem,6vw,4rem) auto 0;padding:2.6rem 0 2rem}.footer-grid{grid-template-columns:minmax(0,1.35fr) repeat(3,minmax(8rem,.55fr));gap:1.6rem;display:grid}.footer-brand h2{color:var(--ink);font-size:1.2rem}.footer-brand p{max-width:21rem;margin-top:.4rem;font-size:.9rem}.site-footer nav{align-content:start;gap:.42rem;display:grid}.site-footer h3{color:var(--ink);margin-bottom:.2rem;font-size:.9rem}.site-footer a,.site-footer nav span,.footer-bottom{color:var(--muted);font-size:.88rem}.spotify-card{border:1px solid var(--line);border-radius:var(--radius-md);max-width:25rem;color:var(--ink);background:color-mix(in srgb, var(--surface) 82%, transparent);align-items:center;gap:.75rem;margin-top:2rem;padding:.85rem .95rem;display:inline-flex}.spotify-card>span{gap:.05rem;display:grid}.spotify-card strong{color:#12814a;font-size:.78rem}.spotify-card span span{color:var(--muted);font-size:.86rem}.footer-bottom{margin-top:1.6rem}.case-artifact{border:1px solid var(--line);border-radius:var(--radius-md);background:color-mix(in srgb, var(--surface) 88%, transparent);width:100%;margin:0;overflow:hidden}.case-artifact svg{width:100%;height:auto}.case-artifact figcaption{color:var(--muted);padding:0 .8rem .8rem;font-size:.78rem;line-height:1.4}.artifact-box,.artifact-box-accent{fill:color-mix(in srgb, var(--surface) 78%, transparent);stroke:color-mix(in srgb, var(--accent) 42%, var(--line));stroke-width:1.2px}.artifact-box-accent{fill:color-mix(in srgb, var(--accent) 18%, var(--surface))}.artifact-line{fill:none;stroke:color-mix(in srgb, var(--accent) 55%, var(--line));stroke-width:1.4px;stroke-linecap:round}.artifact-label,.artifact-caption{fill:var(--ink);text-anchor:middle;font-size:11px;font-weight:760}.artifact-caption{fill:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.project-preview-art .case-artifact{border-color:color-mix(in srgb, var(--surface) 18%, transparent);background:color-mix(in srgb, var(--surface) 8%, transparent);max-width:34rem}.project-preview-art .case-artifact figcaption{color:color-mix(in srgb, var(--surface) 72%, transparent)}.project-preview-art .artifact-box,.project-preview-art .artifact-box-accent{fill:#ffffff14;stroke:#ffffff7a}.project-preview-art .artifact-line{stroke:#ffe45cc7}.project-preview-art .artifact-label{fill:#fff8c7}.project-preview-art .artifact-caption{fill:#f7f9fbb8}.cursor-highlight,.bat-companion{z-index:50;pointer-events:none;transition:opacity .18s;position:fixed;top:0;left:0}.cursor-highlight{opacity:0}.has-pointer .cursor-highlight{opacity:1}.cursor-highlight{border:1px solid color-mix(in srgb, var(--accent) 82%, transparent);background:color-mix(in srgb, var(--accent) 18%, transparent);mix-blend-mode:multiply;border-radius:999px;width:2.7rem;height:2.7rem}.portfolio-shell[data-theme=noir-charcoal] .cursor-highlight{mix-blend-mode:screen}.bat-companion{opacity:1;transform-origin:50%;will-change:transform;width:78px;height:52px}.bat-alert,.bat-shadow,.bat-sprite{display:block;position:absolute}.bat-sprite{width:100%;height:100%;transform:scaleX(var(--bat-face,1)) translateY(var(--bat-lift,0));transform-origin:50% 58%;transition:transform .16s;inset:0;overflow:visible}.bat-sprite path{fill:none;stroke:color-mix(in srgb, var(--ink) 88%, transparent);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.35px;vector-effect:non-scaling-stroke}.portfolio-shell[data-theme=noir-charcoal] .bat-sprite path{stroke:color-mix(in srgb, var(--ink) 82%, transparent)}.bat-frame{opacity:0}.bat-sprite .bat-eye{fill:var(--accent-strong);stroke:none;filter:drop-shadow(0 0 4px color-mix(in srgb, var(--accent) 72%, transparent));transform-box:fill-box;transform-origin:50%}.bat-frame-perched{opacity:1}.bat-companion[data-state=move] .bat-frame-perched,.bat-companion[data-state=alert] .bat-frame-perched{opacity:0}.bat-companion[data-state=move] .bat-frame-wide,.bat-companion[data-state=alert] .bat-frame-wide{animation:.36s step-end infinite bat-frame-wide}.bat-companion[data-state=move] .bat-frame-high,.bat-companion[data-state=alert] .bat-frame-high{animation:.36s step-end infinite bat-frame-high}.bat-shadow{background:color-mix(in srgb, var(--ink) 22%, transparent);filter:blur(3px);opacity:.38;border-radius:999px;width:38px;height:6px;bottom:6px;left:16px}.bat-companion[data-direction=W],.bat-companion[data-direction=NW],.bat-companion[data-direction=SW]{--bat-face:-1}.bat-companion[data-direction=N],.bat-companion[data-direction=NE],.bat-companion[data-direction=NW]{--bat-lift:-2px}.bat-companion[data-direction=S],.bat-companion[data-direction=SE],.bat-companion[data-direction=SW]{--bat-lift:2px}.bat-companion[data-state=move] .bat-sprite{animation:.36s ease-in-out infinite bat-flight-bob}.bat-companion[data-state=parked] .bat-sprite{--bat-lift:2px}.bat-companion[data-state=parked] .bat-shadow{opacity:.5}.bat-companion[data-blink=true] .bat-eye,.bat-companion[data-state=move] .bat-eye{animation:.9s step-end infinite bat-eye-blink}.bat-companion[data-state=parked] .bat-eye{animation-duration:4.4s}.bat-alert{opacity:0;width:40px;height:26px;top:-13px;left:15px}.bat-alert:before,.bat-alert:after{content:"";display:block;position:absolute}.bat-alert:before{border-top:2px solid var(--accent-strong);border-left:2px solid #0000;border-radius:50%;width:26px;height:18px;top:2px;left:7px}.bat-alert:after{background:linear-gradient(72deg, transparent 47%, var(--accent-strong) 48% 52%, transparent 53%) 4px 1px / 10px 17px no-repeat, linear-gradient(108deg, transparent 47%, var(--accent-strong) 48% 52%, transparent 53%) 27px 1px / 10px 17px no-repeat, linear-gradient(90deg, transparent 46%, var(--accent) 47% 53%, transparent 54%) 18px 0 / 5px 15px no-repeat;width:40px;height:22px;top:3px;left:0}.bat-companion[data-state=alert] .bat-alert{animation:.62s ease-out both bat-alert-pop}.bat-track{z-index:49;pointer-events:none;background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 55%, transparent), transparent), color-mix(in srgb, var(--ink) 30%, transparent);width:18px;height:2px;transform:rotate(var(--track-angle,0deg));border-radius:999px;animation:.9s ease-out forwards track-fade;position:fixed}@keyframes bat-flight-bob{0%,to{transform:scaleX(var(--bat-face,1)) translateY(var(--bat-lift,0))}50%{transform:scaleX(var(--bat-face,1)) translateY(calc(var(--bat-lift,0) - 3px))}}@keyframes bat-frame-wide{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes bat-frame-high{0%,49%{opacity:0}50%,to{opacity:1}}@keyframes bat-eye-blink{0%,72%,to{transform:scaleY(1)}78%,82%{transform:scaleY(.12)}}@keyframes bat-alert-pop{0%{opacity:0;transform:translateY(3px)scale(.72)}24%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-5px)scale(1.08)}}@keyframes track-fade{0%{opacity:.7;transform:translateY(0) scaleX(.7) rotate(var(--track-angle,0deg))}to{opacity:0;transform:translateY(7px) scaleX(1.45) rotate(var(--track-angle,0deg))}}@media (width<=860px){.site-header{grid-template-columns:1fr auto}.nav-links{grid-column:1/-1;justify-content:flex-start;gap:.8rem;padding-bottom:.25rem;overflow-x:auto}.project-preview,.case-study-layout,.contact-section{grid-template-columns:1fr}.case-study-sidebar{position:static}.experience-item,.experience-list-compact .experience-item{grid-template-columns:3.25rem minmax(0,1fr)}.experience-meta{text-align:left;grid-column:2}.practice-grid,.proof-grid,.footer-grid{grid-template-columns:1fr}}@media (width<=620px){.home-container,.wide-container,.page-container,.article-page,.case-study-page,.site-footer,.site-header,.page-hero{width:min(calc(100% - 2rem), var(--container))}.section-heading{flex-direction:column;align-items:start}.hero-actions,.button{width:100%}.button{justify-content:center}.project-preview-art{min-height:14rem}}@media (pointer:coarse),(prefers-reduced-motion:reduce){.cursor-highlight,.bat-companion,.bat-track{display:none}}
