@font-face{font-family:Montserrat;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8298327da6d5bcce-s.3q4n78m6muld7.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:Montserrat;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/44fac91e6f2d2b1b-s.1d_6dtvtn9g3_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Montserrat;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2b402d8aebffd579-s.16nfeub7ja6ze.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:Montserrat;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/a88409fdd7dc121c-s.1mvr14jy3vxq7.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Montserrat;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/e8f2fbee2754df70-s.p.1dqa_6e_ad4sj.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:Montserrat Fallback;src:local(Arial);ascent-override:85.79%;descent-override:22.25%;line-gap-override:0.0%;size-adjust:112.83%}.montserrat_c5a0b145-module__19wr9q__className{font-family:Montserrat,Montserrat Fallback;font-style:normal}.montserrat_c5a0b145-module__19wr9q__variable{--font-montserrat:"Montserrat", "Montserrat Fallback"}
@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.2eksvhm1z0jwa.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_e6988195-module__RNs2Mq__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_e6988195-module__RNs2Mq__variable{--font-space-grotesk:"Space Grotesk", "Space Grotesk 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-20C0,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_7ea1d0f9-module__6GV5LG__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_7ea1d0f9-module__6GV5LG__variable{--font-jetbrains-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--bg:#f7f6f2;--surface:#fff;--surface-2:#efece4;--ink:#1c1a15;--muted:#6d685c;--faint:#9b9486;--line:#1c1a1521;--line-soft:#1c1a1512;--accent:#7c8a5b;--accent-ink:#5d6a3e;--accent-soft:color-mix(in srgb, var(--accent) 13%, transparent);--accent-faint:color-mix(in srgb, var(--accent) 7%, transparent);--radius:16px;--radius-sm:10px;--maxw:1180px;--pad-section:130px;--font-display:var(--font-space-grotesk), "Space Grotesk", "Montserrat", system-ui, sans-serif;--font-body:var(--font-montserrat), "Montserrat", system-ui, sans-serif;--font-mono:var(--font-jetbrains-mono), "JetBrains Mono", ui-monospace, monospace;--ease:cubic-bezier(.4, .05, .1, 1)}[data-theme=dark]{--bg:#15130e;--surface:#1e1b15;--surface-2:#27231b;--ink:#f4f0e7;--muted:#b4ac9c;--faint:#7e7768;--line:#ffffff21;--line-soft:#ffffff0f;--accent-soft:color-mix(in srgb, var(--accent) 18%, transparent);--accent-faint:color-mix(in srgb, var(--accent) 9%, transparent)}[data-density=compact]{--pad-section:88px}[data-density=comfy]{--pad-section:170px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:92px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .5s var(--ease), color .5s var(--ease);font-weight:400;line-height:1.6;overflow-x:hidden}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:#fff}.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 32px}.kicker{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink);align-items:center;gap:10px;font-size:12.5px;font-weight:600;display:inline-flex}.kicker:before{content:"";background:var(--accent);width:26px;height:1px}.kicker.no-rule:before{display:none}.section-head{max-width:720px;margin-bottom:56px}.section-head h2{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin-top:18px;font-size:clamp(30px,4.4vw,52px);font-weight:700;line-height:1.06}.section{padding:var(--pad-section) 0;position:relative}.section+.section{border-top:1px solid var(--line-soft)}.btn{font-family:var(--font-body);letter-spacing:.01em;cursor:pointer;transition:all .25s var(--ease);white-space:nowrap;border:1px solid #0000;border-radius:100px;align-items:center;gap:9px;padding:13px 22px;font-size:14px;font-weight:600;display:inline-flex}.btn-primary{background:var(--ink);color:var(--bg)}.btn-primary:hover{background:var(--accent);color:#fff;transform:translateY(-2px)}.btn-ghost{border-color:var(--line);color:var(--ink);background:0 0}.btn-ghost:hover{border-color:var(--accent);color:var(--accent-ink);transform:translateY(-2px)}.btn .arr{transition:transform .25s var(--ease)}.btn:hover .arr{transform:translate(3px,-3px)}.nav{z-index:100;transition:background .4s var(--ease), border-color .4s var(--ease), backdrop-filter .4s;border-bottom:1px solid #0000;position:fixed;top:0;left:0;right:0}.nav.scrolled{background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);border-bottom-color:var(--line-soft)}.nav-inner{justify-content:space-between;align-items:center;gap:24px;height:76px;display:flex}.brand{font-family:var(--font-display);letter-spacing:-.01em;align-items:center;gap:12px;font-weight:700;display:flex}.brand .mark{border:1.5px solid var(--accent);width:34px;height:34px;color:var(--accent-ink);font-family:var(--font-mono);border-radius:9px;place-items:center;font-size:13px;font-weight:600;display:grid;transform:rotate(0)}.brand .mark-tri{width:0;height:0}.brand-name{font-size:16px}.brand-name small{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-top:1px;font-size:10.5px;font-weight:400;display:block}.nav-links{align-items:center;gap:30px;display:flex}.nav-links a{color:var(--muted);font-size:14px;font-weight:500;transition:color .2s;position:relative}.nav-links a:after{content:"";background:var(--accent);width:0;height:1.5px;transition:width .25s var(--ease);position:absolute;bottom:-6px;left:0}.nav-links a:hover{color:var(--ink)}.nav-links a:hover:after{width:100%}.nav-actions{align-items:center;gap:10px;display:flex}.icon-btn{border:1px solid var(--line);width:38px;height:38px;color:var(--ink);cursor:pointer;transition:all .2s var(--ease);background:0 0;border-radius:10px;place-items:center;display:grid}.icon-btn:hover{border-color:var(--accent);color:var(--accent-ink)}.lang-toggle{border:1px solid var(--line);font-family:var(--font-mono);border-radius:10px;align-items:center;font-size:12px;font-weight:500;display:flex;overflow:hidden}.lang-toggle button{cursor:pointer;color:var(--faint);background:0 0;border:none;padding:9px 11px;transition:all .2s}.lang-toggle button.active{background:var(--ink);color:var(--bg)}.hero{padding-top:150px;padding-bottom:90px;position:relative;overflow:hidden}.avail{font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);border-radius:100px;align-items:center;gap:9px;padding:7px 14px;font-size:12px;display:inline-flex}.avail .dot{background:#4caf6e;border-radius:50%;width:8px;height:8px;animation:2.4s infinite pulse;box-shadow:0 0 #4caf6e80}@keyframes pulse{0%{box-shadow:0 0 #4caf6e80}70%{box-shadow:0 0 0 9px #4caf6e00}to{box-shadow:0 0 #4caf6e00}}.hero-title{font-family:var(--font-display);letter-spacing:-.03em;font-weight:700;line-height:.96}.hero-title .gold{color:var(--accent)}.hero-lead{color:var(--muted);max-width:50ch;font-size:clamp(16px,1.5vw,19px);line-height:1.65}.hero-photo-frame{position:relative}.hero-photo-frame img{object-fit:cover;border-radius:var(--radius);width:100%;height:100%}.tri-motif{pointer-events:none;opacity:.9;position:absolute}.hero-editorial .hero-title{font-size:clamp(54px,11vw,150px)}.hero-editorial .ed-grid{grid-template-columns:1fr;gap:42px;display:grid}.hero-editorial .ed-bottom{grid-template-columns:1.3fr .7fr;align-items:end;gap:48px;margin-top:30px;display:grid}.hero-editorial .ed-photo{aspect-ratio:4/3.4;width:100%}.hero-split .split-grid{grid-template-columns:1.05fr .95fr;align-items:center;gap:64px;display:grid}.hero-split .hero-title{font-size:clamp(46px,6vw,84px)}.hero-split .sp-photo{aspect-ratio:4/4.6}.hero-centered{text-align:center}.hero-centered .hero-title{font-size:clamp(48px,8.5vw,118px)}.hero-centered .ce-inner{flex-direction:column;align-items:center;gap:30px;display:flex}.hero-centered .hero-lead{margin:0 auto}.hero-centered .ce-photo{border:3px solid var(--surface);width:132px;height:132px;box-shadow:0 0 0 1px var(--line);border-radius:50%}.hero-centered .ce-photo img{border-radius:50%;height:100%}.hero-cta{flex-wrap:wrap;gap:14px;display:flex}.hero-stats{flex-wrap:wrap;gap:40px;display:flex}.hero-stat .n{font-family:var(--font-display);letter-spacing:-.02em;font-size:30px;font-weight:700}.hero-stat .l{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-top:2px;font-size:11px}.about-grid{grid-template-columns:1.4fr 1fr;align-items:start;gap:72px;display:grid}.about-body p{color:var(--muted);max-width:56ch;margin-bottom:20px;font-size:17px}.about-body p strong{color:var(--ink);font-weight:600}.traits{flex-wrap:wrap;gap:10px;margin-top:30px;display:flex}.trait{font-family:var(--font-mono);letter-spacing:.03em;border:1px solid var(--line);color:var(--muted);border-radius:100px;padding:7px 13px;font-size:12px}.about-side{position:sticky;top:110px}.about-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);padding:26px 26px 10px;box-shadow:0 18px 44px -34px #0006}.about-card .avail{margin-bottom:22px}.about-card-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:4px;font-size:11px}.about-photo{aspect-ratio:1;border-radius:var(--radius);width:100%;margin-bottom:22px;overflow:hidden}.about-photo img{object-fit:cover;width:100%;height:100%}.facts{border-top:1px solid var(--line)}.fact{border-bottom:1px solid var(--line-soft);justify-content:space-between;gap:16px;padding:14px 0;font-size:14px;display:flex}.fact .k{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-size:11px}.fact .v{color:var(--ink);text-align:right;font-weight:500}.skills-grid{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}.skill-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);transition:transform .3s var(--ease), border-color .3s, box-shadow .3s;padding:32px 30px}.skill-card:hover{border-color:var(--accent-soft);transform:translateY(-4px);box-shadow:0 18px 40px -24px #0000004d}.skill-card .sc-num{font-family:var(--font-mono);color:var(--accent-ink);letter-spacing:.1em;font-size:12.5px;font-weight:600}.skill-card h3{font-family:var(--font-display);letter-spacing:-.01em;margin:16px 0 8px;font-size:23px;font-weight:700}.skill-card p{color:var(--muted);margin-bottom:22px;font-size:14.5px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--surface-2);color:var(--ink);border:1px solid var(--line-soft);border-radius:8px;padding:6px 12px;font-size:13px;font-weight:500}.chip:hover{border-color:var(--accent);color:var(--accent-ink)}.work-list{flex-direction:column;gap:28px;display:flex}.project{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);transition:border-color .3s,box-shadow .3s;overflow:hidden}.project:hover{border-color:var(--accent-soft);box-shadow:0 28px 60px -40px #0006}.project.featured .proj-inner{grid-template-columns:1fr 1fr;display:grid}.project.featured.reverse .proj-media{order:2}.proj-media{background:var(--surface-2);min-height:340px;position:relative;overflow:hidden}.proj-media img{object-fit:cover;width:100%;height:100%;transition:transform .8s var(--ease);position:absolute;inset:0}.project:hover .proj-media img{transform:scale(1.04)}.proj-media--phones{background:radial-gradient(130% 120% at 30% 8%,#26251f 0%,#100f0b 60%,#080705 100%);place-items:center;min-height:380px;padding:44px 24px;display:grid;position:relative;overflow:hidden}.bx-stage{justify-content:center;align-items:center;width:100%;max-width:340px;display:flex;position:relative}.bx-phone{background:#000;border:5px solid #0b0b0b;border-radius:26px;overflow:hidden;box-shadow:0 34px 60px -24px #000000bf}.bx-phone img{object-fit:cover;width:100%;height:100%;transition:none;display:block;position:static;inset:auto}.project:hover .bx-phone img{transform:none}.bx-phone--front{aspect-ratio:1080/2082;z-index:2;width:172px;transition:transform .5s var(--ease);position:relative;transform:rotate(4deg)translate(46px)}.bx-phone--back{aspect-ratio:946/1611;z-index:1;width:150px;transition:transform .5s var(--ease);position:absolute;transform:rotate(-8deg)translate(-100px)}.project:hover .bx-phone--front{transform:rotate(2.5deg)translate(58px)}.project:hover .bx-phone--back{transform:rotate(-10deg)translate(-116px)}.bx-badge{font-family:var(--font-mono);letter-spacing:.1em;color:#f2c200;background:#0006;border:1px solid #f2c20066;border-radius:7px;padding:5px 10px;font-size:11px;position:absolute;bottom:18px;left:22px}.proj-codeviz{background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 12%, var(--surface-2)), var(--surface-2));font-family:var(--font-mono);color:var(--muted);padding:30px 32px;font-size:12.5px;line-height:1.8;position:absolute;inset:0;overflow:hidden}.proj-codeviz .ln{white-space:pre}.proj-codeviz .kw{color:var(--accent-ink)}.proj-codeviz .st{color:var(--ink)}.proj-codeviz .cm{color:var(--faint)}.proj-codeviz .nm{color:var(--accent-ink)}.proj-codeviz .ok{color:#2f9e63;font-weight:600}.proj-codeviz .endpoint{letter-spacing:.08em;border:1px solid var(--line);background:var(--surface);color:var(--accent-ink);border-radius:7px;padding:5px 10px;font-size:11px;position:absolute;top:22px;bottom:auto;right:22px}.cv-runbar{margin:16px 0 12px}.cv-run{font-family:var(--font-mono);color:var(--bg);background:var(--accent-ink);cursor:pointer;transition:filter .2s var(--ease), transform .1s var(--ease);border:none;border-radius:8px;align-items:center;gap:8px;padding:8px 15px;font-size:12.5px;font-weight:500;display:inline-flex}.cv-run:hover{filter:brightness(1.08)}.cv-run:active{transform:translateY(1px)}.cv-run:disabled{cursor:default;opacity:.85}.cv-tri{font-size:11px}.cv-spin{border:2px solid color-mix(in srgb, var(--bg) 40%, transparent);border-top-color:var(--bg);border-radius:50%;width:11px;height:11px;animation:.7s linear infinite cv-rot;display:inline-block}@keyframes cv-rot{to{transform:rotate(360deg)}}.cv-response{border-left:2px solid var(--line);min-height:124px;transition:opacity .3s var(--ease);padding-left:14px}.cv-response.cv-done{border-left-color:#2f9e63}.cv-typed{animation:cv-type .18s var(--ease) both}@keyframes cv-type{0%{transform:translateY(3px)}to{transform:none}}.cv-caret{vertical-align:-2px;background:var(--accent);width:7px;height:1.05em;animation:.9s step-end infinite cv-blink;display:inline-block}@keyframes cv-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.proj-media--laptop{background:radial-gradient(130% 120% at 28% 6%, color-mix(in srgb, var(--accent) 11%, var(--surface)) 0%, var(--surface-2) 55%, var(--surface-2) 100%);place-items:center;padding:42px 32px;display:grid;position:relative;overflow:hidden}.laptop{width:100%;max-width:450px}.laptop-screen{background:#0d1426;border:9px solid #16161b;border-bottom:none;border-radius:15px 15px 3px 3px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 28px 54px -22px #0000008c}.lt-bar{background:#11192e;flex-shrink:0;align-items:center;gap:11px;height:31px;padding:0 13px;display:flex}.lt-dots{gap:6px;display:flex}.lt-dots i{background:#ffffff38;border-radius:50%;width:8px;height:8px}.lt-url{font-family:var(--font-mono);color:#ffffffbd;background:#ffffff17;border-radius:100px;padding:3px 14px;font-size:10.5px}.lt-shot{background:#0d1426;line-height:0;position:relative;overflow:hidden}.lt-shot img{object-fit:unset;transform-origin:top;width:100%;height:auto;display:block;position:static;inset:auto}.project:hover .lt-shot img{transform:scale(1.03)}.laptop-base{background:linear-gradient(#d2d3d9,#a4a5af);border-radius:0 0 12px 12px;width:117%;height:15px;position:relative;left:-8.5%;box-shadow:0 16px 24px -10px #00000073}.laptop-base:before{content:"";background:#9698a2;border-radius:0 0 7px 7px;width:92px;height:7px;position:absolute;top:0;left:50%;transform:translate(-50%)}.proj-body{flex-direction:column;padding:40px 42px;display:flex}.proj-meta{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:18px;display:flex}.proj-cat{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);align-items:center;gap:7px;font-size:11px;display:inline-flex}.proj-cat .d{background:var(--accent);border-radius:50%;width:7px;height:7px}.proj-cat.fe .d{background:var(--accent)}.proj-year{font-family:var(--font-mono);letter-spacing:.08em;color:var(--faint);font-size:11px}.proj-platform{font-family:var(--font-mono);color:var(--muted);margin-left:auto;font-size:11px}.proj-body h3{font-family:var(--font-display);letter-spacing:-.02em;margin-bottom:14px;font-size:clamp(26px,3vw,36px);font-weight:700}.proj-summary{color:var(--ink);margin-bottom:14px;font-size:16.5px;font-weight:500;line-height:1.55}.proj-text{color:var(--muted);margin-bottom:22px;font-size:15px}.proj-scale{font-family:var(--font-mono);color:var(--accent-ink);align-items:center;gap:8px;margin-bottom:20px;font-size:12px;display:inline-flex}.feat-table{border-top:1px solid var(--line);margin-bottom:24px}.feat-row{border-bottom:1px solid var(--line-soft);grid-template-columns:150px 1fr;gap:18px;padding:11px 0;display:grid}.feat-row .fk{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent-ink);font-size:11.5px}.feat-row .fv{color:var(--muted);font-size:13.5px}.proj-stack{flex-wrap:wrap;gap:8px;margin-top:auto;margin-bottom:22px;display:flex}.proj-links{flex-wrap:wrap;gap:18px;display:flex}.proj-link{color:var(--accent-ink);align-items:center;gap:7px;font-size:14px;font-weight:600;display:inline-flex}.proj-link .arr{transition:transform .25s var(--ease)}.proj-link:hover .arr{transform:translate(3px,-3px)}.work-small{grid-template-columns:1fr 1fr;gap:28px;margin-top:28px;display:grid}.project.small .proj-inner{display:block}.project.small .proj-body{padding:34px}.exp-grid{grid-template-columns:1.2fr .8fr;gap:72px;display:grid}.exp-col h3{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--faint);border-bottom:1px solid var(--line);margin-bottom:30px;padding-bottom:14px;font-size:12px}.timeline{position:relative}.tl-item{border-left:1px solid var(--line);padding:0 0 34px 30px;position:relative}.tl-item:last-child{border-left-color:#0000;padding-bottom:0}.tl-item:before{content:"";background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;position:absolute;top:4px;left:-5px}.tl-period{font-family:var(--font-mono);letter-spacing:.08em;color:var(--accent-ink);font-size:11.5px;font-weight:500}.tl-role{font-family:var(--font-display);letter-spacing:-.01em;margin:5px 0 2px;font-size:18px;font-weight:600}.tl-org{color:var(--muted);font-size:14px;font-weight:500}.tl-desc{color:color-mix(in srgb, var(--ink) 80%, transparent);max-width:44ch;margin-top:9px;font-size:14.5px;font-weight:450;line-height:1.55}.contact{text-align:center}.contact-inner{max-width:760px;margin:0 auto}.contact h2{font-family:var(--font-display);letter-spacing:-.03em;margin:22px 0 24px;font-size:clamp(38px,6vw,76px);font-weight:700;line-height:1}.contact-lead{color:var(--muted);max-width:50ch;margin:0 auto 40px;font-size:18px}.contact-actions{flex-wrap:wrap;justify-content:center;gap:14px;margin-bottom:56px;display:flex}.contact-grid{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:20px;padding-top:40px;display:grid}.contact-list{border-top:1px solid var(--line);text-align:left;max-width:480px;margin:44px auto 0;padding-top:24px;list-style:none}.contact-li{border-bottom:1px solid var(--line-soft);align-items:baseline;gap:14px;padding:14px 0 14px 24px;display:flex;position:relative}.contact-li:before{content:"";background:var(--accent);border-radius:50%;width:7px;height:7px;position:absolute;top:50%;left:2px;transform:translateY(-50%)}.contact-li .cl-k{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);flex-shrink:0;min-width:96px;font-size:11px}.contact-li .cl-v{color:var(--ink);overflow-wrap:anywhere;font-size:15.5px;font-weight:500;transition:color .2s}.contact-li.email .cl-v{white-space:nowrap;overflow-wrap:normal;font-size:clamp(13px,3.4vw,15.5px)}.contact-li a.cl-v:hover{color:var(--accent-ink)}.contact-item{text-align:left}.contact-item .ci-k{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:7px;font-size:11px}.contact-item .ci-v{color:var(--ink);overflow-wrap:anywhere;font-size:15px;font-weight:500;transition:color .2s}.contact-item.email .ci-v{white-space:nowrap;overflow-wrap:normal;font-size:clamp(13px,3vw,15px)}.contact-item a.ci-v:hover{color:var(--accent-ink)}.footer{border-top:1px solid var(--line);padding:46px 0}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.footer small{font-family:var(--font-mono);color:var(--muted);letter-spacing:.03em;font-size:12px}.js .reveal{opacity:0;transition:opacity .7s var(--ease), transform .7s var(--ease);transform:translateY(26px)}.reveal.in{opacity:1;transform:none}@media (max-width:940px){:root{--pad-section:90px}.nav-links{display:none}.about-grid,.exp-grid{grid-template-columns:1fr;gap:48px}.about-side{position:static}.skills-grid,.project.featured .proj-inner{grid-template-columns:1fr}.project.featured.reverse .proj-media{order:0}.proj-media{min-height:260px}.proj-media--code{height:auto;min-height:auto}.proj-media--code .proj-codeviz{position:static}.proj-media--phones{height:auto;min-height:400px}.proj-media--laptop{height:auto;min-height:340px}.work-small{grid-template-columns:1fr}.hero-split .split-grid{grid-template-columns:1fr;gap:40px}.hero-editorial .ed-bottom{grid-template-columns:1fr;gap:30px}.contact-grid{grid-template-columns:1fr}.feat-row{grid-template-columns:1fr;gap:3px}}@media (max-width:560px){.wrap{padding:0 20px}.proj-body{padding:28px 24px}.hero-stats{gap:26px}}html,body{margin:0}[data-theme=dark]{--bg:#100e09}.j-nav{z-index:90;pointer-events:none;justify-content:space-between;align-items:center;padding:18px clamp(18px,4vw,46px);display:flex;position:fixed;top:0;left:0;right:0}.j-nav>*{pointer-events:auto}.j-brand{font-family:var(--font-display);background:color-mix(in srgb, var(--bg) 55%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:12px;align-items:center;gap:11px;padding:9px 22px 9px 10px;font-weight:700;display:flex}.j-brand .mark{border:1.5px solid var(--accent);width:36px;height:36px;color:var(--accent-ink);font-family:var(--font-mono);background:color-mix(in srgb, var(--bg) 60%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:9px;place-items:center;font-size:13px;font-weight:600;display:grid}.j-brand .bt{font-size:15px;line-height:1.05}.j-brand .bt small{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-top:2px;font-size:10px;font-weight:400;display:block}.j-actions{align-items:center;gap:10px;display:flex}.j-nav .lang-toggle,.j-nav .icon-btn{background:color-mix(in srgb, var(--bg) 55%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px}.j-progress{transform-origin:0 0;background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent), #fff 35%));z-index:95;width:100%;height:2px;position:fixed;top:0;left:0;transform:scaleX(0)}.journey{width:100%;position:relative;overflow:hidden}.jthread{z-index:0;pointer-events:none;position:absolute;inset:0}.jthread-svg{width:100%;height:100%;display:block;position:absolute;inset:0}.thread-bg{fill:none;stroke:var(--line);stroke-width:1.2px;vector-effect:non-scaling-stroke;opacity:.35}.thread-draw{fill:none;stroke:var(--accent);stroke-width:1.8px;vector-effect:non-scaling-stroke;stroke-linecap:round;opacity:.42;filter:drop-shadow(0 0 3px color-mix(in srgb, var(--accent) 35%, transparent))}.j-node{background:var(--bg);border:2px solid var(--faint);z-index:1;border-radius:50%;width:12px;height:12px;margin:-6px 0 0 -6px;transition:border-color .3s,transform .3s,box-shadow .3s;position:absolute;top:0;left:0}.j-node.lit{border-color:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb, var(--accent) 18%, transparent)}.j-node.ping{border-color:var(--accent);animation:.6s jPing}@keyframes jPing{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent)}to{box-shadow:0 0 0 18px color-mix(in srgb, var(--accent) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.j-node.lit{animation:none}}.jmarker-layer{z-index:1;pointer-events:none;position:absolute;inset:0}.jhit-layer{z-index:6;pointer-events:none;position:absolute;inset:0}.j-marker{will-change:transform;pointer-events:none;position:absolute;top:0;left:0}.j-hit{will-change:transform;pointer-events:auto;cursor:pointer;position:absolute;top:0;left:0}.j-hit .hit{border-radius:50%;width:34px;height:34px;position:absolute;top:-17px;left:-17px}.j-marker .glow{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:.95s ease-out infinite jMarkerPulse;position:absolute;top:-4px;left:-4px}@keyframes jMarkerPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 75%, transparent);transform:scale(1.7)}70%{box-shadow:0 0 0 24px color-mix(in srgb, var(--accent) 0%, transparent);transform:scale(1)}to{box-shadow:0 0 0 24px color-mix(in srgb, var(--accent) 0%, transparent);transform:scale(1)}}@media (prefers-reduced-motion:reduce){.j-marker .glow{animation:none}}.jsec{z-index:2;will-change:opacity, transform;place-items:center;min-height:100svh;padding:clamp(96px,12vh,150px) clamp(22px,6vw,92px) clamp(70px,10vh,120px);display:grid;position:relative}.jsec-inner{width:100%;max-width:1140px;position:relative}.chapter-ghost{z-index:-1;pointer-events:none;-webkit-user-select:none;user-select:none;font-family:var(--font-display);letter-spacing:-.04em;white-space:nowrap;color:var(--ink);opacity:.035;will-change:transform;font-size:clamp(140px,30vw,440px);font-weight:700;line-height:.8;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.j-hero{width:100%}#top.jsec{padding-top:clamp(84px,11vh,112px);padding-bottom:clamp(40px,6vh,64px)}.j-hero .kicker{margin-bottom:clamp(10px,1.8vh,20px)}.j-hero--split{grid-template-columns:1.05fr .95fr;align-items:center;gap:clamp(34px,6vw,70px);display:grid}.j-hero-main{flex-direction:column;gap:clamp(18px,2.6vh,26px);display:flex}.j-hero-main .kicker{margin-bottom:0}.j-hero-title{font-family:var(--font-display);letter-spacing:-.03em;font-weight:700;line-height:1}.j-hero-title--inline{font-size:clamp(38px,min(5.4vw,8vh),78px)}.j-hero-title--inline .gold{color:var(--accent)}.j-hero-lead{color:var(--muted);max-width:46ch;margin:0;font-size:clamp(15px,1.4vw,18px);line-height:1.58}.j-hero-cta{flex-wrap:wrap;gap:13px;display:flex}.j-hero-stats{flex-wrap:wrap;gap:clamp(22px,3vw,40px);margin-top:2px;display:flex}.j-hero-stat .n{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(22px,2.2vw,30px);font-weight:700}.j-hero-stat .l{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-top:2px;font-size:11px}.j-portrait{position:relative}.j-portrait .pf{aspect-ratio:4/4.7;border-radius:18px;width:100%;max-height:62vh;overflow:hidden;box-shadow:0 36px 76px -40px #00000080}.j-portrait .pf img{object-fit:cover;width:100%;height:100%}.j-portrait-name{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);writing-mode:vertical-rl;padding-right:16px;font-size:11px;position:absolute;top:18px;left:-1px;transform:translate(-100%)}.j-portrait .badge{font-family:var(--font-mono);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:100px;align-items:center;gap:9px;margin-top:16px;padding:8px 14px;font-size:11.5px;display:inline-flex;box-shadow:0 14px 30px -16px #0006}.j-portrait .badge .dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 60%, transparent);border-radius:50%;animation:1.6s ease-out infinite jBadgeDot}@keyframes jBadgeDot{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 60%, transparent)}70%{box-shadow:0 0 0 10px color-mix(in srgb, var(--accent) 0%, transparent)}to{box-shadow:0 0 0 10px color-mix(in srgb, var(--accent) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.j-portrait .badge .dot{animation:none}}.j-about{grid-template-columns:.9fr 1.1fr;align-items:center;gap:clamp(32px,6vw,72px);display:grid}.j-about .pf{aspect-ratio:1;border-radius:18px;overflow:hidden;box-shadow:0 32px 66px -40px #00000080}.j-about .pf img{object-fit:cover;width:100%;height:100%}.j-about .facts{border-top:1px solid var(--line);margin-top:20px}.j-about .fact{border-bottom:1px solid var(--line-soft);justify-content:space-between;gap:16px;padding:11px 0;font-size:13.5px;display:flex}.j-about .fact .k{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-size:10.5px}.j-about .fact .v{color:var(--ink);font-weight:500}.j-about h2{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin:14px 0 22px;font-size:clamp(28px,4vw,50px);font-weight:700;line-height:1.04}.j-about p{color:var(--muted);max-width:54ch;margin-bottom:16px;font-size:clamp(14.5px,1.2vw,16.5px)}.j-about p strong{color:var(--ink);font-weight:600}.j-about .traits{flex-wrap:wrap;gap:9px;margin-top:22px;display:flex}.j-skills .head{text-align:center;margin-bottom:clamp(28px,4.5vh,54px)}.j-skills .head .kicker{justify-content:center;display:inline-flex}.j-skills .head h2{font-family:var(--font-display);letter-spacing:-.02em;margin-top:14px;font-size:clamp(28px,4.2vw,54px);font-weight:700}.j-skills .grid{grid-template-columns:repeat(3,1fr);gap:clamp(16px,1.8vw,24px);display:grid}.j-tile{background:var(--surface);border:1px solid var(--line-soft);border-radius:18px;padding:clamp(22px,2.3vw,34px) clamp(20px,2vw,30px)}.j-tile .num{font-family:var(--font-mono);color:var(--accent-ink);letter-spacing:.1em;font-size:12.5px;font-weight:600}.j-tile h3{font-family:var(--font-display);letter-spacing:-.01em;margin:13px 0 8px;font-size:clamp(19px,1.8vw,24px);font-weight:700}.j-tile p{color:var(--muted);margin-bottom:18px;font-size:14px}.j-proj{grid-template-columns:.92fr 1.08fr;align-items:center;gap:clamp(30px,4.5vw,66px);display:grid}.j-proj.flip .j-proj-text{order:2}.j-proj-index{font-family:var(--font-mono);letter-spacing:.16em;color:var(--accent-ink);margin-bottom:14px;font-size:12.5px}.j-proj .proj-meta{flex-wrap:wrap;margin-bottom:14px}.j-proj .proj-platform{margin-left:0}.j-proj-text h2{font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;margin-bottom:14px;font-size:clamp(30px,3.8vw,58px);font-weight:700;line-height:.98}.j-proj-text .summary{color:var(--ink);max-width:44ch;margin-bottom:12px;font-size:clamp(15px,1.35vw,18px);font-weight:500;line-height:1.45}.j-proj-text .body{color:var(--muted);max-width:46ch;margin-bottom:16px;font-size:clamp(13.5px,1.05vw,15px);line-height:1.55}.j-proj-text .scale{font-family:var(--font-mono);color:var(--accent-ink);align-items:center;gap:8px;margin-bottom:14px;font-size:12px;display:inline-flex}.j-mini-feats{grid-template-columns:1fr 1fr;gap:9px 22px;max-width:480px;margin-bottom:18px;display:grid}.j-mini-feat{border-left:2px solid var(--accent-soft);padding-left:12px}.j-mini-feat .mk{font-family:var(--font-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--accent-ink);font-size:10.5px}.j-mini-feat .mv{color:color-mix(in srgb, var(--ink) 82%, transparent);margin-top:2px;font-size:12.5px;line-height:1.4}.j-proj .proj-stack{margin:0 0 16px}.j-proj-media{justify-content:center;display:flex}.j-proj-media .proj-media{border-radius:18px;width:100%;box-shadow:0 40px 80px -44px #00000080}.j-proj-media .proj-media--laptop,.j-proj-media .proj-media--phones,.j-proj-media .proj-media--code{min-height:0}.j-proj-media .proj-media--code{min-height:460px;padding:34px 36px}.j-proj-media .proj-codeviz{font-size:14px;line-height:1.85}.j-proj-media .proj-codeviz .cv-run{padding:10px 18px;font-size:13.5px}.j-proj-media .proj-codeviz .cv-response{min-height:150px}.j-proj-media .proj-codeviz .endpoint{font-size:11.5px}.journey .bx-phone--front{animation:9s ease-in-out infinite jBxFront}.journey .bx-phone--back{animation:9s ease-in-out infinite jBxBack}@keyframes jBxFront{0%,to{transform:rotate(3.5deg)translate(30px)}50%{transform:rotate(5deg)translate(64px)}}@keyframes jBxBack{0%,to{transform:rotate(-7deg)translate(-80px)}50%{transform:rotate(-9deg)translate(-118px)}}@media (prefers-reduced-motion:reduce){.journey .bx-phone--front,.journey .bx-phone--back{animation:none}}.j-exp .head{margin-bottom:clamp(24px,4vh,48px)}.j-exp .head .kicker{margin-bottom:12px}.j-exp .head h2{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(28px,4.2vw,54px);font-weight:700}.j-exp .cols{grid-template-columns:1.15fr .85fr;gap:clamp(32px,6vw,72px);display:grid}.j-exp h3{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--faint);border-bottom:1px solid var(--line);margin-bottom:22px;padding-bottom:11px;font-size:12px}.j-exp .tl-item{border-left:1px solid var(--line);padding:0 0 24px 28px;position:relative}.j-exp .tl-item:last-child{border-left-color:#0000;padding-bottom:0}.j-exp .tl-item:before{content:"";background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;position:absolute;top:4px;left:-5px}.j-exp .tl-period{font-family:var(--font-mono);letter-spacing:.08em;color:var(--accent-ink);font-size:11.5px;font-weight:500}.j-exp .tl-role{font-family:var(--font-display);letter-spacing:-.01em;margin:4px 0 2px;font-size:16.5px;font-weight:600}.j-exp .tl-org{color:var(--muted);font-size:13.5px;font-weight:500}.j-exp .tl-desc{color:color-mix(in srgb, var(--ink) 78%, transparent);max-width:42ch;margin-top:6px;font-size:13.5px;line-height:1.5}.j-contact{text-align:center;max-width:800px;margin:0 auto}.j-contact .kicker{justify-content:center;display:inline-flex}.j-contact h2{font-family:var(--font-display);letter-spacing:-.03em;text-wrap:balance;margin:20px 0 26px;font-size:clamp(40px,7vw,92px);font-weight:700;line-height:1.02}.j-contact .lead{color:var(--muted);max-width:48ch;margin:0 auto 34px;font-size:clamp(16px,1.5vw,19px)}.j-contact .actions{flex-wrap:wrap;justify-content:center;gap:13px;margin-bottom:42px;display:flex}.j-contact .clist{border-top:1px solid var(--line);text-align:left;max-width:460px;margin:0 auto;padding:18px 0 0;list-style:none}.j-contact .cli{border-bottom:1px solid var(--line-soft);align-items:baseline;gap:14px;padding:12px 0 12px 24px;display:flex;position:relative}.j-contact .cli:before{content:"";background:var(--accent);border-radius:50%;width:7px;height:7px;position:absolute;top:50%;left:2px;transform:translateY(-50%)}.j-contact .ck{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);flex-shrink:0;min-width:92px;font-size:11px}.j-contact .cv{color:var(--ink);overflow-wrap:anywhere;font-size:15px;font-weight:500;transition:color .2s}.j-contact .cli.email .cv{white-space:nowrap;overflow-wrap:normal;font-size:clamp(13px,3.4vw,15px)}.j-contact a.cv:hover{color:var(--accent-ink)}.j-contact .foot{font-family:var(--font-mono);color:var(--faint);letter-spacing:.04em;margin-top:36px;font-size:11.5px}.j-mailbtn{position:relative}.j-mailbtn.j-arrived{box-shadow:0 0 0 2px var(--accent), 0 6px 34px -6px color-mix(in srgb, var(--accent) 75%, transparent);animation:.5s cubic-bezier(.34,1.56,.64,1) jMailPop,1.4s ease-in-out infinite jMailGlow}@keyframes jMailGlow{0%,to{box-shadow:0 0 0 2px var(--accent), 0 0 20px 1px color-mix(in srgb, var(--accent) 45%, transparent), 0 0 0 4px color-mix(in srgb, var(--accent) 70%, transparent)}50%{box-shadow:0 0 0 2px var(--accent), 0 0 34px 5px color-mix(in srgb, var(--accent) 60%, transparent), 0 0 0 15px color-mix(in srgb, var(--accent) 0%, transparent)}}@keyframes jMailPop{0%{transform:scale(1)}28%{transform:scale(1.13)}52%{transform:scale(.97)}74%{transform:scale(1.03)}to{transform:scale(1)}}.j-mailbtn.j-arrived:before{content:"";pointer-events:none;border-radius:100px;animation:.6s ease-out jMailBurst;position:absolute;inset:0}@keyframes jMailBurst{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 70%, transparent)}to{box-shadow:0 0 0 30px color-mix(in srgb, var(--accent) 0%, transparent)}}.j-mailbtn.j-arrived:after{content:"";pointer-events:none;background:conic-gradient(from var(--ang,0deg), transparent 0deg, var(--accent) 55deg, color-mix(in srgb, var(--accent), #fff 40%) 130deg, var(--accent) 205deg, transparent 270deg, transparent 360deg);-webkit-mask-composite:xor;border-radius:100px;padding:2.5px;animation:1.1s linear infinite jRingSpin;position:absolute;inset:-4px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}@property --ang{syntax:"<angle>";inherits:false;initial-value:0deg}@keyframes jRingSpin{to{--ang:360deg}}@media (prefers-reduced-motion:reduce){.j-mailbtn.j-arrived,.j-mailbtn.j-arrived:before,.j-mailbtn.j-arrived:after{animation:none}}.j-cue{z-index:20;font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--faint);pointer-events:none;flex-direction:column;align-items:center;gap:7px;font-size:10px;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.j-cue .mouse{border:1.5px solid var(--faint);border-radius:12px;width:21px;height:33px;position:relative}.j-cue .mouse:after{content:"";background:var(--accent);width:3px;height:6px;animation:jwheel 1.8s var(--ease) infinite;border-radius:2px;position:absolute;top:7px;left:50%;transform:translate(-50%)}@keyframes jwheel{0%{opacity:0;transform:translate(-50%)}40%{opacity:1}to{opacity:0;transform:translate(-50%,11px)}}@media (max-width:900px){.j-hero--split,.j-about,.j-proj,.j-exp .cols{grid-template-columns:1fr;gap:28px}.j-proj.flip .j-proj-text{order:0}.j-proj-media{order:2}.j-skills .grid{grid-template-columns:1fr;gap:13px}.j-mini-feats{grid-template-columns:1fr}.j-hero-title--inline{font-size:clamp(38px,11vw,64px)}.j-portrait{width:100%;max-width:300px;margin:6px 0 0;display:block}.j-portrait .pf{max-height:none}.j-portrait-name{display:none}.j-about .pf{max-width:360px;display:block}.jsec{min-height:auto;padding:clamp(84px,14vh,120px) 22px clamp(56px,9vh,90px)}#top.jsec{min-height:100svh}.jthread{opacity:.7}}@media (max-width:519px){.j-brand{gap:0;padding:7px}.j-nav{padding:14px 16px}}.j-brand .bt{display:none}@media (min-width:520px){.j-brand .bt{display:block}.j-brand{gap:11px}}
