@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/91bd2e40df15814e-s.19s5evoqhirey.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/a63431c4ac64ea8b-s.386o_ri1vb0yv.woff2)format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8b4ed0a90d903ab5-s.44dak0sams9f0.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/c47649aa31f9e140-s.p.3lxpqujs87tck.woff2)format("woff2");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}@font-face{font-family:Hanken Grotesk Fallback;src:local(Arial);ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.0%;size-adjust:100.94%}.hanken_grotesk_ea876f93-module__5g7JCW__className{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.hanken_grotesk_ea876f93-module__5g7JCW__variable{--f-body:"Hanken Grotesk", "Hanken Grotesk Fallback"}
@font-face{font-family:League Spartan;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8bf306ca80378054-s.0wrvhjkynj2h9.woff2)format("woff2");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:League Spartan;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/d33cd7f74dcc750d-s.3n9die0f0oztg.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:League Spartan;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7a514bda021b6b92-s.p.0bzcjdl2q1bg1.woff2)format("woff2");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}@font-face{font-family:League Spartan Fallback;src:local(Arial);ascent-override:75.47%;descent-override:23.72%;line-gap-override:0.0%;size-adjust:92.75%}.league_spartan_d9e63c4-module__cxlaWG__className{font-family:League Spartan,League Spartan Fallback;font-style:normal}.league_spartan_d9e63c4-module__cxlaWG__variable{--f-display:"League Spartan", "League Spartan Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.2f7nqdagzwx2-.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.176arc174-8zp.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.0bp8oijd_gu96.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.1fby2rem9ngyr.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.0vfdmo25voy_0.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2)format("woff2");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}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_be22caa3-module__nVsIGW__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_be22caa3-module__nVsIGW__variable{--f-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--bg:#edeae8;--ink:#121111;--muted:#6f6a67;--faint:#a8a29e;--ash:#d9d5d2;--ash-2:#c6c1bd;--ash-3:#8f8985;--line:#3a3837;--win:min(540px, 78vw)}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit}.display{font-family:var(--f-display)}:focus-visible{outline:1.5px dashed var(--ink);outline-offset:4px}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.nav{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px clamp(16px,3vw,56px);width:min(1340px,100%);margin:0 auto;padding:0 clamp(16px,8vw,160px);display:flex}.nav-btn{letter-spacing:.01em;white-space:nowrap;padding:6px 2px;font-size:clamp(14px,1.1vw,21px);font-weight:300;position:relative}.nav-btn:hover{opacity:.65}.nav-btn.is-active{font-weight:700}.nav-globe{position:absolute;bottom:100%;left:50%;transform:translate(-50%,-6px)}.landing{grid-template-rows:auto auto 1fr;grid-template-columns:minmax(0,1fr);align-items:center;min-height:100svh;display:grid;overflow:hidden}.landing-hero{text-align:center;background:var(--bg);padding-top:4vh;animation:.7s both rise}.landing-img{aspect-ratio:1;object-fit:contain;mix-blend-mode:multiply;width:clamp(220px,20vw,400px);max-height:34vh;margin:0 auto 18px}.landing-img.placeholder{background:var(--ash);border-radius:50%}.landing-greeting{margin:0 0 4px;font-size:clamp(22px,1.6vw,30px);font-weight:400}.landing-title{min-height:1.4em;margin:0;font-size:clamp(12px,.75vw,14px)}.caret{background:var(--ink);vertical-align:-.18em;width:1.5px;height:1.05em;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}.landing .nav{padding-block:26px 8px}.d-comment{fill:#9a9591;font-style:italic}.d-watch.tiny{fill:#a8a29e;font-size:3.6px}.d-nail{fill:#f7f3f0;stroke:#c9c2bc;stroke-width:.6px}.d-crease{fill:none;stroke:#c4bcb6;stroke-width:.8px;stroke-linecap:round}.d-tendon{fill:none;stroke:#ddd6d0;stroke-width:1.1px;stroke-linecap:round}.d-cuff{fill:#4a4746;stroke:#1a1919;stroke-width:1.2px}.d-finger{transform-origin:50% 100%;transition:transform 70ms ease-out}.d-finger.press{filter:brightness(.94);transform:translateY(3px)scaleY(.93)}.d-skin-line{stroke:#1a1919;stroke-width:1.15px;stroke-linejoin:round}.d-crease.soft{stroke:#d2cac3;stroke-width:.7px}.desk.is-typing .d-hand{animation:2.2s ease-in-out infinite alternate d-drift}@keyframes d-drift{0%{transform:translate(-.8px,.4px)}to{transform:translate(1px,-.4px)}}.d-mouse-shadow{fill:#00000059}.d-ink-stroke-fill{stroke:#1a1919;stroke-width:1.3px}.d-mouse-line{fill:none;stroke:#6f6a67;stroke-width:1px}.d-mouse-hl{fill:none;stroke:#ece8e5;stroke-width:2px;stroke-linecap:round;opacity:.8}.d-stand{fill:#bdb8b4;stroke:#1a1919;stroke-width:1.3px}.d-stand-edge{fill:none;stroke:#8d8985;stroke-width:1px}.d-stand-back{fill:#8d8985;stroke:#1a1919;stroke-width:1.2px}.d-stand-lip{fill:#a8a29e;stroke:#1a1919;stroke-width:1.2px}.d-phone-screen{fill:#e6e2df}.d-phone-time{font-family:var(--f-body);fill:#1e1d1c;text-anchor:middle;font-size:9px;font-weight:600}.d-phone-date{font-family:var(--f-body);fill:#6f6a67;text-anchor:middle;font-size:3.6px}.d-bolt{fill:#1e1d1c;animation:2s ease-in-out infinite d-pulse}@keyframes d-pulse{50%{opacity:.35}}.desk-wrap{justify-content:center;align-self:end;display:flex;overflow:hidden}.desk{flex:none;width:min(1400px,70vw);min-width:760px;height:auto;display:block}.desk .d-finger,.desk .d-sway,.desk .d-steam,.desk .d-key,.desk .d-hand{transform-box:fill-box}.d-top{fill:#2c2b2a}.d-front{fill:#1c1b1a}.d-leg{fill:#3b3937}.d-shadow{fill:#121111}.d-cable-light{fill:none;stroke:#8d8985;stroke-width:2px}.d-arm rect{fill:#3b3937}.d-arm path{fill:none;stroke:#4a4746;stroke-width:7px;stroke-linecap:round;stroke-linejoin:round}.d-joint{fill:#2b2a29;stroke:#8d8985;stroke-width:2px}.d-frame{fill:#151414}.d-screen{fill:#f2f0ee}.d-tabbar{fill:#dcd8d5}.d-tab{font-family:var(--f-mono);fill:#5a5755;font-size:5.5px}.d-code{font-family:var(--f-mono);fill:#2a2928;white-space:pre;font-size:8.4px}.d-code.sm{font-size:6.3px}.d-ln{fill:#a8a29e}.d-typed{fill:#000;font-weight:700}.d-caret{fill:#121111;animation:1s step-end infinite blink}.d-stem{fill:none;stroke:#3a3837;stroke-width:2px}.d-leaf{fill:#6f6a67}.d-leaf.alt{fill:#9a9591}.d-sway{transform-origin:50% 100%;animation:4.5s ease-in-out infinite alternate d-sway}@keyframes d-sway{0%{transform:rotate(-3deg)}to{transform:rotate(3deg)}}.d-light{fill:#ece8e5;stroke:#1a1919;stroke-width:1.5px}.d-mid{fill:#8d8985;stroke:#1a1919;stroke-width:1.5px}.d-dark{fill:#1e1d1c}.d-screen-dark{fill:#3a3837}.d-watch{font-family:var(--f-mono);fill:#e9e6e3;text-anchor:middle;font-size:7px}.d-watch.dark{fill:#222;font-size:6px}.d-blink{fill:#e9e6e3;animation:1.6s step-end infinite blink}.d-keyboard{fill:#e6e2df;stroke:#1a1919;stroke-width:2px}.d-key{fill:#4a4746;transform-origin:50%;transition:fill 80ms}.d-key.on{fill:#fff;stroke:#1a1919;stroke-width:.8px;transform:scale(.88)}.d-ink-stroke{fill:none;stroke:#1a1919;stroke-width:1.5px}.d-sleeve{stroke:#1a1919;stroke-width:1.5px}.d-cup{fill:#f4f1ee;stroke:#1a1919;stroke-width:1.5px}.d-coffee{fill:#6f6a67}.d-latte{fill:#d9d5d2}.d-steam{fill:none;stroke:#a29d99;stroke-width:2.2px;stroke-linecap:round;opacity:0;animation:2.7s ease-in-out infinite d-steam}@keyframes d-steam{0%{opacity:0;transform:translateY(6px)}35%{opacity:.9}to{opacity:0;transform:translateY(-16px)}}.d-glass{fill:#cfcac6;stroke:#1a1919;stroke-width:1.5px}.d-fan-ring{fill:#2b2a29}.d-blade{fill:#9a9591}.d-fan{transform-box:view-box;animation:1.1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.d-stripe{fill:none;stroke:#e9e6e3;stroke-width:3px;stroke-linecap:round}.d-skin{fill:#ede7e2;stroke:#1a1919;stroke-width:1.5px}.page-shell{grid-template-rows:1fr auto;grid-template-columns:minmax(0,1fr);min-height:100svh;display:grid}.home-link{z-index:50;font-family:var(--f-mono);color:var(--muted);font-size:13px;position:fixed;top:20px;left:clamp(16px,3vw,40px)}.home-link:hover{color:var(--ink)}.page-main{background:var(--bg);place-items:center;min-width:0;padding:72px clamp(16px,4vw,64px) 24px;animation:.5s both rise;display:grid}.page-main>*{min-width:0;max-width:100%}.page-nav{z-index:20;background:var(--bg);box-shadow:0 -24px 24px -8px var(--bg);padding:56px 0 4vh;position:sticky;bottom:0}.whoami{text-align:center;width:100%}.whoami-head{margin-bottom:clamp(56px,12vh,180px)}.whoami-photo{aspect-ratio:1;object-fit:cover;background:var(--ash);border-radius:16%;width:clamp(150px,10.5vw,210px);margin:0 auto 22px}.whoami-name{margin:0 0 6px;font-size:clamp(22px,1.4vw,28px);font-weight:700}.whoami-title{margin:0;font-size:clamp(15px,1.05vw,21px)}.whoami-grid{flex-wrap:wrap;justify-content:center;gap:36px 0;margin:0;padding:0;list-style:none;display:flex}.whoami-item{flex:1 1 0;min-width:150px;max-width:280px;padding:0 10px;font-size:clamp(12px,.78vw,15px);line-height:1.55}.whoami-item p{margin:0}.whoami-t{color:var(--ink);font-weight:600}.whoami-a{color:var(--muted);font-size:.92em;margin-top:3px!important}.whoami-icon{place-items:center;height:88px;margin-bottom:40px;display:grid}.whoami-icon img{object-fit:contain;max-width:110px;max-height:88px}.whoami-icon span{font-size:40px;font-weight:800}.skills-stage{width:min(440px,86vw)}.skills-top{align-items:center;gap:18px;display:flex}.skills-ring{flex:none;width:46px;height:46px;transform:rotate(-90deg)}.skills-ring circle{fill:none;stroke-width:1.6px}.ring-bg{stroke:var(--ash-2)}.ring-fg{stroke:var(--ink);stroke-dasharray:1 1;stroke-dashoffset:1px;transition:stroke-dashoffset .4s}.ring-fg.is-auto{animation:5s linear forwards ring}@keyframes ring{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.skills:hover .ring-fg.is-auto{animation-play-state:paused}.skills-count{color:var(--muted);flex:1;margin:0;font-size:19px}.skills-count b{color:var(--ink)}.skills-ctrl{border:1.5px solid var(--ink);border-radius:999px;display:flex;overflow:hidden}.skills-ctrl button{place-items:center;width:48px;height:42px;transition:background .2s,color .2s;display:grid}.skills-ctrl button+button{border-left:1.5px solid var(--ink)}.skills-ctrl button:hover{background:var(--ink);color:var(--bg)}.skills-ctrl button:active svg{transform:scale(.85)}.skills-ctrl svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;transition:transform .1s}.skills-title{margin:8px 0 16px 64px;font-size:14px;font-weight:700}.skills-book{height:min(320px,56vh);position:relative}.skills-book .page,.skills-window{border:1.6px solid var(--ink);background:var(--bg);border-radius:28px;position:absolute;inset:0}.skills-book .page{border-color:var(--ash-3);filter:blur(.6px);transform-origin:100% 100%}.page.p1{transform:translate(-12px,8px)rotate(-1.2deg)}.page.p2{opacity:.7;transform:translate(-24px,18px)rotate(-2.2deg)}.page.p3{opacity:.45;transform:translate(-34px,28px)rotate(-3.2deg)}.skills-window{font-family:var(--f-mono);white-space:pre;scrollbar-width:thin;justify-content:safe center;align-items:safe center;margin:0;padding:24px 26px;font-size:clamp(12.5px,.82vw,14.5px);line-height:1.6;animation:.45s both flip;display:flex;overflow:auto}.skills-window code{font:inherit}.j-key{color:var(--ink);font-weight:600}.j-str{color:#66615e}.j-punc{color:var(--faint)}@keyframes flip{0%{opacity:0;transform:translate(14px)rotate(1.5deg)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:0}}@keyframes fade{0%{opacity:0}}@keyframes progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.gitlog{width:min(720px,100%)}.gl-cmd{font-family:var(--f-mono);color:var(--muted);margin:0 0 14px 2px;font-size:13px}.gl-list{margin:0;padding:0;list-style:none;position:relative}.gl-list:before{content:"";background:var(--ash-2);width:1.5px;position:absolute;top:10px;bottom:10px;left:6px}.gl-commit{padding-left:34px;position:relative}.gl-dot{border:1.5px solid var(--ink);background:var(--bg);border-radius:50%;width:13px;height:13px;transition:transform .2s;position:absolute;top:11px;left:0}.gl-commit.is-live .gl-dot{background:var(--ink)}.gl-commit.is-open .gl-dot{box-shadow:0 0 0 4px var(--bg), 0 0 0 5.5px var(--ash-2);transform:scale(1.25)}.gl-head{text-align:left;flex-wrap:wrap;align-items:baseline;gap:2px 12px;width:100%;padding:7px 0;display:flex}.gl-hash{font-family:var(--f-mono);color:var(--faint);font-size:12px}.gl-ref{font-family:var(--f-mono);border:1px solid var(--ink);border-radius:999px;padding:0 8px;font-size:11px}.gl-role{color:var(--muted);font-size:16px;font-weight:500;transition:color .2s}.gl-meta{color:var(--faint);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:13px;overflow:hidden}.gl-commit.is-open .gl-role,.gl-commit.is-open .gl-meta{flex-basis:100%}.gl-head:hover .gl-role,.gl-commit.is-open .gl-role{color:var(--ink)}.gl-commit.is-open .gl-role{font-family:var(--f-display);font-size:clamp(20px,1.6vw,25px);font-weight:700}.gl-commit.is-open .gl-meta{color:var(--muted)}.gl-body{background:var(--bg);padding:4px 0 16px;animation:.35s both fade;position:relative}.gl-body p{text-align:justify;-webkit-hyphens:auto;hyphens:auto;max-width:60ch;margin:0;font-size:15px;line-height:1.75}.gl-logo-row{flex-basis:100%;padding:6px 0 2px}.gl-logo{object-fit:contain;max-width:130px;max-height:38px;display:block}.gl-timer{background:var(--ink);transform-origin:0;opacity:.5;max-width:60ch;height:1.5px;margin-top:14px;animation:5s linear both progress;display:block}.gl-timer.is-paused{opacity:.2;animation-play-state:paused}.repos{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:clamp(28px,4vw,72px);width:min(1500px,100%);display:grid}.repo-card{background:var(--ash);aspect-ratio:16/10;border-radius:14px;flex-direction:column;justify-self:center;width:100%;max-height:64vh;animation:.45s both fade;display:flex;overflow:hidden;box-shadow:inset 0 1px #fff}.rc-bar{background:var(--ash-2);font-family:var(--f-mono);color:var(--line);align-items:center;gap:12px;padding:11px 16px;font-size:12px;display:flex}.rc-dots{gap:6px;display:flex}.rc-dots i{background:var(--ash-3);border-radius:50%;width:9px;height:9px}.rc-dots i:last-child{background:var(--bg)}.rc-path{white-space:nowrap;text-overflow:ellipsis;background:var(--bg);border-radius:999px;flex:1;min-width:0;padding:4px 14px;overflow:hidden}.rc-count{color:var(--muted)}.rc-timer{background:var(--ink);opacity:.55;transform-origin:0;height:2px;animation:5s linear both progress;display:block}.rc-timer.is-paused{opacity:.2;animation-play-state:paused}.rc-page{flex:1;grid-template-columns:1.1fr 1fr;min-height:0;display:grid}.rc-out{flex-direction:column;min-height:0;padding:18px 22px 0;display:flex}.rc-prompt{font-family:var(--f-mono);color:var(--muted);margin:0 0 12px;font-size:12px}.repo-title{margin:0 0 14px;font-size:clamp(15px,1.1vw,18px);font-weight:700;line-height:1.3}.repo-title span{color:var(--faint);font-family:var(--f-mono);font-weight:400}.repo-img{border-right:1px solid var(--ash-2);background:#fff;place-items:center;min-height:0;margin:0;display:grid;overflow:hidden}.repo-img img{object-fit:cover;object-position:top;filter:grayscale()contrast(1.05);width:100%;height:100%}.repo-img span{font-size:40px;font-weight:700}.rc-foot{border-top:1px dashed var(--ash-3);justify-content:space-between;align-items:center;gap:12px;padding:12px 0 16px;display:flex}.rc-exit{font-family:var(--f-mono);color:var(--muted);font-size:12px}.repo-desc{min-height:0;color:var(--line);white-space:pre-line;text-align:justify;-webkit-hyphens:auto;hyphens:auto;scrollbar-width:thin;flex:1;margin:4px 0 12px;font-size:13.5px;line-height:1.65;overflow:auto}.repo-inspect{border:1.5px solid var(--ink);letter-spacing:.1em;text-transform:uppercase;background:#fff;border-radius:999px;padding:6px 20px;font-size:12px;font-weight:600;text-decoration:none;transition:background .2s,color .2s,box-shadow .2s,transform .1s;display:inline-block}.repo-inspect:hover{background:var(--ink);color:#fff;box-shadow:3px 3px 0 var(--ash-3)}.repo-inspect:active{box-shadow:none;transform:translate(2px,2px)}.repo-inspect[aria-disabled=true]{cursor:default}.repo-flow{grid-template-columns:auto minmax(36px,90px) minmax(150px,300px);justify-content:center;align-items:center;display:grid;position:relative}.repo-wires{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.repo-wires path{fill:none;stroke:var(--ash-3);stroke-width:1.5px;stroke-linecap:round;transition:stroke .3s}.wire-port{fill:var(--bg);stroke:var(--ash-3);stroke-width:1.5px}.wire-port.in{fill:var(--ash-3);stroke:none}.repo-wires .on .wire-port{stroke:var(--ink)}.repo-wires .on .wire-port.in{fill:var(--ink)}.repo-wires .on path{stroke:var(--ink);stroke-width:2.2px;stroke-dasharray:6 5;animation:1s linear infinite flow}@keyframes flow{to{stroke-dashoffset:-11px}}.repo-list{z-index:1;flex-direction:column;gap:clamp(8px,2.2vh,22px);margin:0;padding:0;list-style:none;display:flex;position:relative}.repo-pill{width:var(--w);background:var(--ink);color:#fff;text-align:left;border-radius:999px;max-width:100%;padding:9px 18px;font-size:13px;font-weight:700;transition:transform .2s,background .2s}.repo-pill:hover{transform:translate(4px)}.repo-pill.on{background:var(--ash-3);color:var(--ink)}.repo-head{z-index:1;grid-column:3;position:relative}.repo-head img{object-fit:contain;mix-blend-mode:multiply;width:100%}.repo-head-empty{aspect-ratio:1}.contact{grid-template-columns:1fr 1.3fr;align-items:end;gap:48px;width:min(1380px,100%);display:grid}.cf-heading{margin:0 0 54px;font-size:clamp(26px,1.7vw,34px);font-weight:400}.cf-field{margin-bottom:26px;display:block}.cf-label{margin-bottom:10px;font-size:21px;font-weight:700;display:block}.cf input,.cf textarea{width:min(420px,100%);font:inherit;color:var(--ink);resize:none;background:0 0;border:0;border-bottom:1px solid #0000;outline:none;padding:2px 0 6px;font-size:16px}.cf input:focus,.cf textarea:focus{border-bottom-color:var(--ash-3)}.cf ::placeholder{color:var(--muted);text-transform:capitalize;opacity:1}.cf{position:relative}.cf-send{align-items:center;gap:10px;margin-top:50px;font-size:21px;font-weight:700;line-height:1;display:inline-flex}.cf-send svg{fill:none;stroke:currentColor;stroke-width:2px;width:34px;transition:transform .2s}.cf-send:hover svg{transform:translate(6px)}.cf-status{color:var(--muted);margin:10px 0 0;font-size:13px;position:absolute;top:100%;left:0}.contact-side{justify-content:space-between;align-items:flex-end;gap:40px;display:flex}.contact-h{margin:0 0 10px;font-size:21px;font-weight:700}.contact-icons{align-items:center;gap:14px;display:flex}.contact-icons>a,.bubble-wrap>button{width:44px;height:44px;transition:transform .15s;display:block}.contact-icons>a:hover,.bubble-wrap>button:hover{transform:translateY(-2px)}.contact-icons>a svg,.bubble-wrap>button svg{width:100%;height:100%;fill:var(--ink);color:var(--ink)}.contact-icons>a img,.bubble-wrap>button img{object-fit:contain;filter:grayscale();width:100%;height:100%}.bubble-wrap{position:relative}.bubble{z-index:20;border:2px solid var(--ink);min-width:max-content;box-shadow:5px 5px 0 var(--ink);font-family:var(--f-mono);transform-origin:bottom;background:#fff;border-radius:4px;gap:8px;padding:12px 16px;font-size:15px;font-weight:700;animation:.22s cubic-bezier(.3,1.6,.6,1) both pop;display:grid;position:absolute;bottom:calc(100% + 16px);left:50%;translate:-50%}.bubble:before,.bubble:after{content:"";border:10px solid #0000;position:absolute;left:50%;translate:-50%}.bubble:before{border-top-color:var(--ink);top:100%}.bubble:after{border-top-color:#fff;top:calc(100% - 3px)}.bubble-actions{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);gap:14px;font-size:11px;font-weight:400;display:flex}.bubble-actions a,.bubble-actions button{text-decoration:none}.bubble-actions a:hover,.bubble-actions button:hover{color:var(--ink);text-decoration:underline}@keyframes pop{0%{opacity:0;transform:scale(.6)rotate(-4deg)}}.contact-addr{color:var(--muted);text-transform:capitalize;margin:0;font-size:16px;line-height:1.35}.contact-addr:last-child{margin-top:4px;line-height:1}@media (max-width:1100px){.repos{grid-template-columns:minmax(0,1fr);justify-items:center}.repo-card{max-width:760px;max-height:none}.repo-flow{width:min(560px,100%)}}@media (max-width:900px){.desk{width:96vw;min-width:0}.contact{grid-template-columns:1fr}.contact-side{flex-direction:column;align-items:flex-start}.whoami-item{flex-basis:45%}}@media (max-width:640px){.whoami-grid{flex-direction:column;align-items:center;gap:26px}.whoami-item{flex:none;width:100%;min-width:0;max-width:100%;font-size:14px;line-height:1.4}.whoami-icon{height:48px;margin-bottom:10px}.whoami-icon img{max-width:90px;max-height:48px}.whoami-icon span{font-size:26px}.whoami-head{margin-bottom:44px}.gl-role{font-size:15px}.bubble{transform-origin:0 100%;left:0;translate:0}.bubble:before,.bubble:after{left:22px}.landing .nav{flex-direction:column;align-items:center;gap:4px;padding:22px 16px 8px}.landing .nav-btn{font-size:16px}.page-nav{padding:46px 0 14px}.page-nav .nav{flex-wrap:nowrap;justify-content:space-between;gap:6px;padding:0 10px}.page-nav .nav-btn{letter-spacing:0;padding:6px 0;font-size:clamp(8.5px,2.1vw,11px)}.skills-book{margin-left:30px}.skills-stage{width:88vw}.page-nav .nav-globe{width:30px!important;height:30px!important}.repo-flow{flex-direction:column;order:-1;align-items:center;width:100%;display:flex}.repo-head{order:0;width:min(170px,46vw)}.repo-list{flex-flow:wrap;order:1;justify-content:center;gap:10px 8px;margin-top:46px}.repo-pill{flex:none;width:auto;padding:7px 14px;font-size:12px}.repo-pill:hover{transform:none}.repo-card{aspect-ratio:auto}.rc-page{grid-template-columns:1fr}.repo-img{aspect-ratio:16/10;border-right:0;border-bottom:1px solid var(--ash-2)}.rc-out{padding:14px 16px 0}.repo-desc{max-height:32vh}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.a-login{place-items:center;min-height:100svh;padding:16px;display:grid}.a-login form{gap:4px;width:min(380px,100%);display:grid}.a-login h1{font-family:var(--f-display);margin:0 0 16px}.a-shell{grid-template-columns:240px 1fr;min-height:100svh;display:grid}.a-side{border-right:1px solid var(--ash-2);flex-direction:column;gap:24px;height:100svh;padding:24px;display:flex;position:sticky;top:0}.a-side nav{flex:1;gap:10px;display:grid}.a-side nav a{color:var(--muted);font-size:14px;text-decoration:none}.a-side nav a:hover{color:var(--ink)}.a-brand{font-weight:700;text-decoration:none}.a-main{max-width:860px;padding:0 clamp(16px,4vw,48px) 80px}.a-bar{z-index:5;background:var(--bg);border-bottom:1px solid var(--ash-2);color:var(--muted);justify-content:space-between;align-items:center;gap:12px;padding:16px 0;font-size:14px;display:flex;position:sticky;top:0}.a-section{border-bottom:1px solid var(--ash-2);padding:28px 0;scroll-margin-top:70px}.a-section h2{font-family:var(--f-display);margin:0 0 18px}.a-field{color:var(--muted);gap:6px;margin-bottom:14px;font-size:13px;display:grid}.a-field input,.a-field textarea{font:inherit;color:var(--ink);border:1px solid var(--ash-2);background:#f7f5f4;border-radius:8px;width:100%;padding:9px 11px;font-size:15px}.a-field textarea{resize:vertical}.a-image{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.a-image img,.a-empty{object-fit:contain;border:1px solid var(--ash-2);background:#f7f5f4;border-radius:8px;place-items:center;width:72px;height:72px;font-size:11px;display:grid}.a-list h3{margin:20px 0 10px;font-size:15px}.a-item{border:1px solid var(--ash-2);background:#f2efee;border-radius:10px;margin-bottom:8px}.a-item summary{cursor:pointer;padding:12px 14px;font-size:14px}.a-item summary span{color:var(--muted);margin-left:6px}.a-item[open]{padding-bottom:6px}.a-item>.a-field,.a-item>.a-tools{margin-inline:14px}.a-tools{gap:8px;margin-bottom:12px;display:flex}.a-tools button,.a-add{border:1px solid var(--ash-3);border-radius:6px;padding:5px 10px;font-size:13px}.a-tools button:disabled{opacity:.35;cursor:default}.a-tools .danger{color:#9b1c1c;border-color:#d9a0a0}.a-primary{background:var(--ink);color:#fff;border-radius:8px;padding:10px 18px;font-weight:600}.a-primary:disabled{opacity:.5}.a-link{color:var(--muted);font-size:13px;text-decoration:underline}.a-error{color:#9b1c1c;font-size:13px}@media (max-width:760px){.a-shell{grid-template-columns:1fr}.a-side{border-right:0;border-bottom:1px solid var(--ash-2);height:auto;position:static}.a-side nav{grid-template-columns:1fr 1fr}}.whoami-icon img,.gl-logo,.contact-icons img,.reader-logo{filter:grayscale()contrast(1.08);mix-blend-mode:multiply}
