.oneko-cat{width:32px;height:32px;position:fixed;pointer-events:none;image-rendering:pixelated;z-index:2147483647}:root{--bg: #06070a;--card: #0d1014;--raise: #14181d;--line: #1f242a;--line-2: #2d343b;--text: #f0f3f5;--text-2: #aab3bb;--text-3: #7c868f;--accent: #3fb950;--accent-hi: #46e05f;--cyan: #56d4dd;--amber: #d29922;--violet: #a78bfa;--radius: 14px;--cell: 11px;--gap: 3px;--font: "Inter", system-ui, -apple-system, sans-serif;--mono: "JetBrains Mono", ui-monospace, Consolas, monospace;--serif: "Instrument Serif", Georgia, serif;--script: "Caveat", cursive}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:84px}body{background:var(--bg);color:var(--text);font:400 15px/1.6 var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:url(/bg.jpg) center / cover no-repeat;opacity:.06;filter:blur(5px)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(880px 520px at 50% -8%,#3fb9501f,transparent 66%),radial-gradient(760px 520px at 104% 34%,#56d4dd14,transparent 68%),linear-gradient(180deg,#06070a26,#06070ae6)}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--accent-hi);outline-offset:3px;border-radius:6px}img{max-width:100%;display:block}.page{position:relative;z-index:1;max-width:800px;margin:0 auto;padding:0 24px}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:18px;padding:15px 0 13px;margin-bottom:12px;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.wordmark{position:relative;font-family:var(--script);font-size:35px;font-weight:700;line-height:1;padding:0 6px 4px 2px;color:#fff}.wordmark-stroke{position:absolute;left:0;right:0;bottom:1px;height:5px;border-radius:4px;background:var(--accent);transform:rotate(-1.6deg);transition:background .2s,transform .2s}.wordmark:hover .wordmark-stroke{background:var(--accent-hi);transform:rotate(-3deg)}.topbar nav{display:flex;gap:22px;margin-left:auto}.topbar nav a{position:relative;font-size:13.5px;font-weight:500;color:var(--text-3);transition:color .16s}.topbar nav a:after{content:"";position:absolute;left:0;right:100%;bottom:-5px;height:1.5px;border-radius:2px;background:var(--accent);transition:right .22s cubic-bezier(.2,.7,.2,1)}.topbar nav a:hover{color:var(--text)}.topbar nav a:hover:after{right:0}.topbar-cta{font-size:13px;font-weight:600;color:var(--text);background:var(--raise);border:1px solid var(--line-2);border-radius:999px;padding:8px 16px;transition:border-color .16s,color .16s,transform .16s}.topbar-cta:hover{border-color:var(--accent);color:#fff;transform:translateY(-1px)}.hero{padding-bottom:8px}.banner{position:relative;height:240px;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(180deg,#06070a3d,#06070a00 32%,#06070aa8 72%,#06070afa),url(/bg.jpg) center / cover no-repeat;box-shadow:0 28px 60px -34px #000}.banner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:repeating-linear-gradient(0deg,#ffffff07 0 1px,transparent 1px 3px)}.banner-embers{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.banner-embers i{position:absolute;border-radius:50%;background:var(--accent-hi);box-shadow:0 0 9px 1px #46e05f80;animation-name:drift;animation-timing-function:ease-in-out;animation-iteration-count:infinite}@keyframes drift{0%,to{transform:translateZ(0) scale(1)}50%{transform:translate3d(9px,-26px,0) scale(.5)}}.banner-clock{position:absolute;top:18px;right:20px;z-index:3;font-family:var(--mono);font-size:21px;font-weight:500;letter-spacing:.16em;color:#eef2f4;text-shadow:0 2px 20px #000}.banner-id{position:absolute;z-index:3;left:22px;right:22px;bottom:18px;display:flex;align-items:flex-end;gap:18px}.avatar{flex:none;width:106px;height:106px;border-radius:14px;overflow:hidden;background:#0d1014;border:1px solid var(--line-2);display:grid;place-items:center;box-shadow:0 0 0 4px #06070acc,0 16px 38px -16px #000}.avatar img{width:100%;height:100%;object-fit:contain}.avatar span{font-family:var(--serif);font-size:40px;color:var(--text-2)}.banner-text{padding-bottom:4px;min-width:0}.banner-text h1{display:flex;align-items:center;gap:9px;font-size:clamp(27px,4.6vw,35px);font-weight:700;letter-spacing:-.028em;line-height:1.1;text-shadow:0 2px 20px #000c}.badge{width:16px;height:16px;flex:none;border-radius:50%;background:var(--accent);position:relative}.badge:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:no-repeat center / 9px 9px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6.4l2.6 2.6L10 3.4' fill='none' stroke='%2306070a' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.banner-role{font-size:14px;color:#d5dce0;margin-top:4px;text-shadow:0 1px 10px #000a}.banner-meta{display:flex;align-items:center;flex-wrap:wrap;gap:7px;font-size:12.5px;color:var(--text-2);margin-top:8px;text-shadow:0 1px 10px #000a}.banner-meta strong{color:#fff;font-weight:600}.banner-meta .sep{opacity:.45}.meta-stat{display:inline-flex;gap:5px;white-space:nowrap}.dot-live{width:7px;height:7px;border-radius:50%;background:var(--accent-hi);box-shadow:0 0 8px 0 var(--accent-hi);animation:blip 2.4s ease-in-out infinite}@keyframes blip{0%,to{box-shadow:0 0 8px 0 var(--accent-hi),0 0 #46e05f55}60%{box-shadow:0 0 8px 0 var(--accent-hi),0 0 0 7px #46e05f00}}.hero-bio{margin:28px 2px 22px}.hero-bio p{font-size:14.5px;color:var(--text-2);margin-bottom:6px;max-width:66ch}.hero-bio p.strong{font-size:15px;font-weight:500;color:#d5dce0;margin-bottom:8px}.hero-cta{display:flex;flex-wrap:wrap;gap:10px;margin:0 2px 16px}.btn{display:inline-flex;align-items:center;gap:9px;font-size:14px;font-weight:600;border-radius:11px;padding:12px 21px;border:1px solid transparent;transition:transform .16s,background .16s,border-color .16s,box-shadow .16s}.btn svg{font-size:16px}.btn.solid{background:#f2f5f7;color:#06070a}.btn.solid:hover{background:#fff;transform:translateY(-2px);box-shadow:0 14px 30px -16px #fff}.btn.ghost{background:var(--raise);border-color:var(--line-2);color:var(--text)}.btn.ghost:hover{border-color:var(--accent);transform:translateY(-2px)}.hero-pills{display:flex;flex-wrap:wrap;gap:9px;margin:0 2px}.pill{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text-2);background:var(--raise);border:1px solid var(--line);border-radius:999px;padding:9px 16px;transition:color .16s,border-color .16s,transform .16s}.pill svg{font-size:14px;transition:color .16s}.pill:hover{color:#fff;border-color:var(--line-2);transform:translateY(-2px)}.pill:hover svg{color:var(--accent-hi)}.sec{padding:46px 0 4px}.sec-head{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line);padding-top:30px;margin-bottom:22px}.sec-head h2{position:relative;font-size:15.5px;font-weight:600;letter-spacing:-.012em;padding-left:14px}.sec-head h2:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:15px;border-radius:2px;background:var(--accent)}.sec-link{font-size:12.5px;font-weight:500;color:var(--text-3);transition:color .16s}.sec-link:hover{color:var(--accent-hi)}.cg-card{padding:2px 0 0}.cg-scroll{overflow-x:auto;padding-bottom:6px;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.cg-scroll::-webkit-scrollbar{height:6px}.cg-scroll::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:99px}.cg-inner{min-width:max-content}.cg-months{display:flex;gap:var(--gap);margin-bottom:6px}.cg-months span{width:var(--cell);font-size:10.5px;font-weight:500;color:var(--text-3);white-space:nowrap;overflow:visible}.cg-weeks{display:flex;gap:var(--gap)}.cg-week{display:flex;flex-direction:column;gap:var(--gap)}.cg-cell{width:var(--cell);height:var(--cell);border-radius:3px;background:#171c21;transition:transform .12s}.cg-cell[data-level="1"]{background:#0f5132}.cg-cell[data-level="2"]{background:#1a7f37}.cg-cell[data-level="3"]{background:#2ea043}.cg-cell[data-level="4"]{background:var(--accent-hi);box-shadow:0 0 8px -1px #46e05f99}.cg-cell.pad{background:transparent;box-shadow:none}.cg-weeks .cg-cell:hover{transform:scale(1.4)}.cg-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:14px;font-size:12.5px;color:var(--text-3)}.cg-total strong{font-size:14px;font-weight:700;color:var(--text)}.cg-legend{display:inline-flex;align-items:center;gap:4px}.cg-legend .cg-cell:hover{transform:none}.cg-tip{position:fixed;z-index:60;transform:translate(-50%,calc(-100% - 10px));background:#1b2127;border:1px solid var(--line-2);color:var(--text);font-size:12px;font-weight:500;white-space:nowrap;padding:7px 11px;border-radius:7px;box-shadow:0 14px 32px -14px #000;pointer-events:none}.cg-error{font-size:13px;color:var(--text-3)}.cg-error a{color:var(--accent-hi)}.cg-skeleton{display:grid;grid-template-rows:repeat(7,var(--cell));grid-auto-flow:column;grid-auto-columns:var(--cell);gap:var(--gap);min-width:max-content}.cg-skeleton i{border-radius:3px;background:#171c21;animation:shimmer 1.6s ease-in-out infinite}@keyframes shimmer{0%,to{opacity:.35}50%{opacity:1}}.xp-list{list-style:none}.xp{display:flex;align-items:flex-start;gap:16px;padding:18px 4px;border-bottom:1px solid var(--line)}.xp:last-child{border-bottom:none}.xp-ico{flex:none;display:grid;place-items:center;width:34px;margin-top:3px;font-size:23px;line-height:1;color:var(--tint);opacity:.88;transition:opacity .18s,transform .18s,filter .18s}.xp:hover .xp-ico{opacity:1;transform:scale(1.08);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--tint) 55%,transparent))}.xp-main{flex:1;min-width:0}.xp-main h3{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:15.5px;font-weight:600;letter-spacing:-.015em}.xp-type{font-style:normal;font-size:10.5px;font-weight:500;color:var(--text-2);background:var(--raise);border:1px solid var(--line-2);border-radius:999px;padding:2px 9px}.xp-role{font-size:13px;color:var(--text-3);margin-top:1px}.xp-detail{font-size:13.5px;color:var(--text-2);margin-top:8px;max-width:62ch}.xp-when{flex:none;text-align:right;padding-top:2px}.xp-years{display:block;font-size:13px;font-weight:500;color:var(--text-2);white-space:nowrap}.xp-loc{display:block;font-size:12.5px;color:var(--text-3)}.ach-list{list-style:none}.ach{display:flex;align-items:center;gap:16px;padding:15px 4px;border-bottom:1px solid var(--line)}.ach:last-child{border-bottom:none}.ach-ico{flex:none;display:grid;place-items:center;width:34px;font-size:22px;line-height:1;color:var(--tint);opacity:.88;transition:opacity .18s,transform .18s,filter .18s}.ach:hover .ach-ico{opacity:1;transform:scale(1.08);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--tint) 55%,transparent))}.ach-main{flex:1;min-width:0}.ach-main h3{font-size:15px;font-weight:600;letter-spacing:-.015em}.ach-main p{font-size:12.5px;color:var(--text-3);margin-top:2px}.ach-rank{flex:none;font-family:var(--mono);font-size:11px;font-weight:500;color:var(--text-2);background:var(--raise);border:1px solid var(--line-2);border-radius:999px;padding:5px 12px;white-space:nowrap}.ach:hover .ach-rank{color:var(--tint);border-color:color-mix(in srgb,var(--tint) 40%,transparent)}.edu{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 19px;margin-top:10px}.edu-main strong{display:block;font-size:15px;font-weight:600}.edu-main span{font-size:13px;color:var(--text-3)}.edu-right{min-width:190px}.edu-years{display:block;font-family:var(--mono);font-size:11.5px;color:var(--text-3);margin-bottom:7px;text-align:right}.edu-bar{height:5px;border-radius:99px;background:#171c21;overflow:hidden}.edu-bar div{height:100%;border-radius:99px;background:linear-gradient(90deg,#0f5132,var(--accent-hi))}.work-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.card{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 12px 4px;transition:border-color .2s,transform .2s,box-shadow .2s}.card:hover{border-color:var(--line-2);transform:translateY(-3px);box-shadow:0 24px 48px -32px #000}.card.featured{grid-column:span 2}.card-shot{border-radius:10px;overflow:hidden;border:1px solid var(--line);background:#08090c;aspect-ratio:16 / 9}.card.featured .card-shot{aspect-ratio:21 / 9}.card-shot img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .3s;opacity:.92}.card:hover .card-shot img{transform:scale(1.03);opacity:1}.card-shot.contain{background:#06070a}.card-shot.contain img{object-fit:contain;object-position:center}.card:hover .card-shot.contain img{transform:none}.card-body{display:flex;flex-direction:column;flex:1;padding:15px 6px 12px;gap:8px}.card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.card-top h3{font-size:16.5px;font-weight:600;letter-spacing:-.018em}.card.featured .card-top h3{font-size:20px}.card-body p{font-size:13.5px;color:var(--text-2)}.chip{flex:none;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:500;border-radius:999px;padding:4px 11px;border:1px solid var(--line-2);color:var(--text-2);background:var(--raise)}.chip i{width:5px;height:5px;border-radius:50%;background:currentColor}.chip-live{color:var(--accent-hi);border-color:#2ea04347;background:#2ea0431f}.chip-award{color:var(--amber);border-color:#d2992247;background:#d299221f}.chip-paper{color:var(--violet);border-color:#a78bfa47;background:#a78bfa1a}.chip-pipeline{color:var(--cyan);border-color:#56d4dd47;background:#56d4dd1a}.chip-building{color:#e6edf3}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:auto;padding-top:12px}.tech-row{display:flex;flex-wrap:wrap;align-items:center;gap:7px}.tech{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;font-size:15px;color:var(--brand);opacity:.72;background:var(--raise);border:1px solid var(--line);transition:opacity .18s,border-color .18s,background .18s,transform .18s}.card:hover .tech{opacity:1;border-color:color-mix(in srgb,var(--brand) 30%,transparent)}.tech:hover{opacity:1;background:color-mix(in srgb,var(--brand) 14%,var(--card));border-color:color-mix(in srgb,var(--brand) 55%,transparent);transform:translateY(-2px)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.card-links{display:flex;gap:8px;margin-left:auto}.card-links a{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:500;color:var(--text-2);background:var(--raise);border:1px solid var(--line-2);border-radius:999px;padding:6px 13px;transition:color .16s,border-color .16s,transform .16s}.card-links a:hover{color:#fff;border-color:var(--accent);transform:translateY(-1px)}.more{display:inline-flex;align-items:center;gap:8px;margin-top:18px;background:var(--raise);border:1px solid var(--line-2);border-radius:999px;padding:10px 19px;color:var(--text-2);font:500 13px var(--font);cursor:pointer;transition:color .16s,border-color .16s,transform .16s}.more:hover{color:#fff;border-color:var(--accent);transform:translateY(-2px)}.quote-sec{position:relative;text-align:center;padding:96px 0 0;margin-top:40px}.quote-mark{font-family:var(--serif);font-size:36px;color:var(--text-3);line-height:.2}.quote-sec blockquote{font-size:clamp(19px,3vw,23px);font-style:italic;line-height:1.5;max-width:22ch;margin:28px auto 16px;color:var(--text)}.quote-sec cite{font-family:var(--mono);font-style:normal;font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--text-3)}.rail{position:relative;height:46px;margin-top:60px}.walker{position:absolute;bottom:0;left:0;width:36px}.walker-sprite{width:100%;filter:drop-shadow(0 0 12px #2ea04366)}@media(prefers-reduced-motion:no-preference){.walker{animation:stroll 26s ease-in-out infinite alternate,flip 52s steps(1) infinite}.walker-sprite{animation:step .5s steps(2) infinite}}@keyframes stroll{0%{left:0}to{left:calc(100% - 36px)}}@keyframes flip{0%,50%{transform:scaleX(1)}50.01%,to{transform:scaleX(-1)}}@keyframes step{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}footer{display:grid;grid-template-columns:1fr auto;gap:16px 20px;border-top:1px solid var(--line);margin-top:18px;padding:26px 2px 44px}.foot-name{display:block;font-family:var(--serif);font-size:20px;color:var(--text)}.foot-line{font-size:13px;color:var(--text-3)}.foot-right{display:flex;align-items:center;gap:18px}.foot-right a{color:var(--text-3);font-size:15px;transition:color .16s}.foot-right a:hover{color:var(--text)}.foot-home{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500}.foot-fine{grid-column:1 / -1;font-family:var(--mono);font-size:11px;color:#5b656d;border-top:1px solid var(--line);padding-top:18px}@media(prefers-reduced-motion:no-preference){.hero,.sec,.quote-sec,footer{animation:rise .5s cubic-bezier(.2,.7,.2,1) both}.sec:nth-of-type(2){animation-delay:.05s}.sec:nth-of-type(3){animation-delay:.1s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}}@media(prefers-reduced-motion:reduce){.banner-embers i,.dot-live{animation:none}}@media(max-width:640px){.page{padding:0 16px}.topbar nav{display:none}.topbar-cta{margin-left:auto}.wordmark{font-size:31px}.banner{height:auto;padding:92px 16px 18px}.banner-clock{font-size:16px;top:14px;right:14px}.banner-id{position:static;flex-direction:column;align-items:flex-start;gap:14px}.avatar{width:84px;height:84px}.banner-text h1{font-size:26px}.work-grid{grid-template-columns:1fr}.card.featured{grid-column:span 1}.card.featured .card-shot{aspect-ratio:16 / 9}.ach{flex-wrap:wrap;row-gap:8px}.ach-rank{order:3;margin-left:50px}.xp{flex-wrap:wrap;row-gap:6px}.xp-when{order:3;width:100%;text-align:left;padding-left:50px;padding-top:0}.xp-years,.xp-loc{display:inline;font-size:12px}.xp-loc:before{content:" · "}footer{grid-template-columns:1fr}.foot-right{flex-wrap:wrap}}
