@font-face{font-family:Sora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/c5f10e9e72d35c52-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Sora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/3dc379dc9b5dec12-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/c5f10e9e72d35c52-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/3dc379dc9b5dec12-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/c5f10e9e72d35c52-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/3dc379dc9b5dec12-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Sora;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/c5f10e9e72d35c52-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Sora;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/3dc379dc9b5dec12-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Sora Fallback;src:local("Arial");ascent-override:85.29%;descent-override:25.50%;line-gap-override:0.00%;size-adjust:113.73%}.__className_438e8d{font-family:Sora,Sora Fallback;font-style:normal}.__variable_438e8d{--font-sora:"Sora","Sora Fallback"}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ef4d5661765d0e49-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d29838c109ef09b4-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/98e207f02528a563-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono Fallback;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}.__className_46fe82{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_46fe82{--font-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}:root{--bg:#f4f6f4;--ink:#2b2f2c;--ink-soft:#4c544f;--ink-muted:#6b7570;--ink-faint:#9aa39d;--green:#4e6e5d;--green-deep:#41584c;--green-line:#9db3a6;--orange:#d97e4a;--orange-deep:#b8622f;--orange-mono:#c06a35;--border:#e0e6e1;--border-soft:#ecefec;--chip-border:#d7ded8}*{box-sizing:border-box}body{margin:0;background-color:var(--bg);background-image:radial-gradient(rgba(78,110,93,.2) 1px,transparent 0);background-size:18px 18px;font-family:var(--font-sora),system-ui,sans-serif;color:var(--ink)}a{color:var(--green);text-decoration:none}a:hover{color:var(--orange)}.mono{font-family:var(--font-mono),monospace}.page{max-width:1120px;margin:0 auto;padding:56px 24px 80px}.bento{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:16px;gap:16px}.span-6{grid-column:span 6}.span-4{grid-column:span 4}.span-3{grid-column:span 3}.span-2{grid-column:span 2}@media (max-width:720px){.span-2,.span-3,.span-4{grid-column:span 6}}[data-anim]{opacity:0;transform:translateY(26px)}[data-anim].revealed{opacity:1;transform:translateY(0);transition:opacity .7s ease,transform .7s cubic-bezier(.22,.9,.3,1)}[data-anim].settled{transition:background .25s ease,transform .25s ease,box-shadow .25s ease,border-color .25s ease}.no-anim [data-anim]{opacity:1;transform:none}.card{background:#fff;border:1px solid var(--border);border-radius:20px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.card-hover:hover{transform:translateY(-4px);box-shadow:0 10px 28px rgba(43,58,49,.1);border-color:#cbd6cd}.section-title{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:700;color:var(--green)}.banner{position:relative;height:300px;border:1px solid var(--border);border-radius:20px;overflow:hidden;background:#f1f4f1}.banner img{width:100%;height:100%;object-fit:cover;object-position:center top}.banner img,.banner-fade{position:absolute;inset:0}.banner-fade{pointer-events:none;background:linear-gradient(180deg,rgba(244,246,244,0) 55%,rgba(244,246,244,.35));border-radius:20px}.intro{background:linear-gradient(135deg,#ffffff,#eef4ef);border:1px solid var(--border);border-radius:20px;padding:28px 32px;position:relative}.intro,.intro-row{display:flex;align-items:center}.intro-row{gap:24px;flex-wrap:wrap}.intro-avatar{width:104px;height:104px;border-radius:20px;flex:none;border:2px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.08);overflow:hidden}.intro-avatar img{width:100%;height:100%;object-fit:cover;object-position:center}.intro-hi{font-family:var(--font-mono),monospace;font-size:13px;color:var(--ink-muted)}.intro-hi span{color:var(--orange)}.intro-name{font-size:34px;font-weight:800;line-height:1.1;margin-top:6px}.intro-tagline{font-size:12px;color:var(--ink-muted);margin-top:8px}.intro-doodle,.intro-tagline{font-family:var(--font-mono),monospace}.intro-doodle{position:absolute;bottom:18px;right:22px;font-size:14px;color:var(--green-line);opacity:.65}.socials{background:var(--green-deep);border-radius:20px;padding:18px 20px;display:flex;flex-direction:column;gap:6px;justify-content:center}.social-link{display:flex;align-items:center;gap:10px;font-family:var(--font-mono),monospace;font-size:13px;color:#cfdcd2;padding:8px 14px;border-radius:12px;transition:background .18s ease}.social-link:hover{background:rgba(255,255,255,.08);color:#cfdcd2}.social-link.accent,.social-link.accent:hover{color:#f0c8ac}.social-link svg{width:18px;height:18px;flex:none}.about-row{display:flex;gap:28px;margin-top:18px;align-items:flex-start;flex-wrap:wrap}.about-photo{width:200px;height:200px;border-radius:14px;flex:none;overflow:hidden}.about-photo img{width:100%;height:100%;object-fit:cover;object-position:center}.about-text{margin:0;flex:1 1;min-width:260px;font-size:15px;line-height:1.8;color:var(--ink-soft)}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.chip{font:500 12px var(--font-mono),monospace;padding:6px 14px;border:1px solid var(--chip-border);border-radius:999px;background:#fff;color:#5d6a61;cursor:default;transition:transform .18s ease,background .18s ease,border-color .18s ease,color .18s ease}.chip:hover{transform:translateY(-1px);background:var(--green-deep);border-color:var(--green-deep);color:#eef4ef}.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.tag{font:500 10.5px var(--font-mono),monospace;padding:4px 10px;border:1px solid var(--chip-border);border-radius:999px;color:#5d6a61}.exp-list{display:flex;flex-direction:column;gap:14px;margin-top:18px}.exp-item{display:flex;gap:18px;align-items:flex-start;border:1px solid var(--border-soft);border-radius:14px;padding:22px 24px;transition:background .25s ease,transform .25s ease,border-color .25s ease,box-shadow .25s ease}.exp-item:hover{transform:translateX(3px);border-color:var(--green-line);background:#f7faf8;box-shadow:0 2px 8px rgba(43,58,49,.05)}.exp-logo{width:44px;height:44px;border-radius:10px;background:#fff;overflow:hidden;flex:none;display:flex;align-items:center;justify-content:center;padding:6px}.exp-logo img{width:100%;height:100%;object-fit:contain}.exp-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:baseline}.exp-title{font-size:15px;font-weight:700}.exp-dates{font:400 11px var(--font-mono),monospace;color:var(--ink-faint)}.exp-org{font:400 11.5px var(--font-mono),monospace;margin-top:2px}.exp-org.green{color:var(--green)}.exp-org.orange{color:var(--orange-mono)}.exp-bullets{margin:10px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:6px}.exp-bullets li{font-size:13px;color:var(--ink-muted);line-height:1.65}.project-card,.project-cover{overflow:hidden}.project-cover{height:180px;border-bottom:1px solid var(--border-soft);position:relative}.project-cover img{width:100%;height:100%;object-fit:cover}.project-body{padding:20px 24px 24px}.project-name{font-size:16px;font-weight:700}.project-name a{font:400 12px var(--font-mono),monospace}.project-desc{font-size:13px;color:var(--ink-muted);margin:6px 0 12px;line-height:1.6}.project-card .tags{margin-top:0}.education{padding:24px 32px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.education-school{font-size:14px;color:var(--ink-soft)}.footer{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:44px}.footer span{font:12px var(--font-mono),monospace;color:var(--ink-faint)}.sidenav{position:fixed;left:30px;top:50%;transform:translateY(-50%);z-index:50}.sidenav-inner{position:relative;display:flex;flex-direction:column;gap:26px}.sidenav-line{position:absolute;left:8px;top:9px;bottom:9px;width:0;border-left:2px dashed #c8bfae}.sidenav-item{display:flex;align-items:center;gap:14px;cursor:pointer;position:relative;background:none;border:none;padding:0;text-align:left}.sidenav-item:hover{opacity:.75}.sidenav-dot-wrap{width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex:none}.sidenav-dot{width:11px;height:11px;transform:rotate(45deg);border-radius:2px;background:#eef1ee;border:1.5px solid #b9ab97;transition:all .3s}.sidenav-item.active .sidenav-dot{background:var(--orange);border-color:var(--orange-deep);box-shadow:0 0 0 4px rgba(217,126,74,.18)}.sidenav-label{font-family:var(--font-sora),sans-serif;font-size:14px;font-weight:400;color:var(--ink-soft);transition:color .3s}.sidenav-item.active .sidenav-label{font-weight:700;color:var(--orange-deep)}@keyframes railpulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}@keyframes rigsway{0%,to{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}@keyframes fishwiggle{0%,to{transform:rotate(-18deg)}50%{transform:rotate(-9deg)}}@keyframes railbob{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.rail{position:fixed;right:30px;top:50%;transform:translateY(-50%);z-index:50}.rail-col{display:flex;flex-direction:column;align-items:center}.rail-vert{writing-mode:vertical-rl}.rail-now{gap:16px}.rail-now-dot{width:10px;height:10px;border-radius:50%;background:#5aa06f;box-shadow:0 0 0 4px rgba(90,160,111,.18);animation:railpulse 2.2s ease-in-out infinite;flex:none}.rail-now-label{font:600 12px var(--font-mono),monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--green)}.rail-now-loc{font:400 11px var(--font-mono),monospace;letter-spacing:.16em;color:var(--ink-faint)}.rail-clock{gap:14px}.rail-clock svg{width:16px;height:16px;flex:none}.rail-clock-city{font:400 11px var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-faint)}.rail-clock-time{font:500 13px var(--font-mono),monospace;letter-spacing:.12em;color:var(--orange)}.rail-bobber{display:flex;flex-direction:column;align-items:center;gap:10px;cursor:pointer;animation:railbob 2.6s ease-in-out infinite;background:none;border:none;padding:0}.rail-bobber:hover{opacity:.8}.rail-bobber svg{width:36px;height:50px;display:block}.rail-bobber-label{font:600 10px var(--font-mono),monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-faint)}.flyrig{position:fixed;right:52px;top:0;z-index:50;display:flex;flex-direction:column;align-items:center;animation:rigsway 6s ease-in-out infinite;transform-origin:top center;pointer-events:none}.flyrig-line{width:2px;background:repeating-linear-gradient(180deg,#9db3a6 0 1.5px,transparent 1.5px 8px)}.flyrig-end{position:relative}.flyrig-hook{width:34px;height:42px;display:block}.flyrig-fish{position:absolute;left:-52px;top:16px;width:78px;height:43px;transform-origin:88% 45%;transition:opacity .45s ease,transform .55s cubic-bezier(.34,1.56,.64,1);opacity:0;transform:translateY(28px) rotate(14deg)}.flyrig-fish.caught{opacity:1;transform:rotate(-14deg);animation:fishwiggle 1.4s ease-in-out .5s infinite}