@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage-latin.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage-latin-ext.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap;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:Instrument Sans;src:url(/fonts/instrument-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;src:url(/fonts/instrument-latin-ext.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;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:Instrument Sans;src:url(/fonts/instrument-latin-italic.woff2) format("woff2");font-weight:400 700;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;src:url(/fonts/instrument-latin-ext-italic.woff2) format("woff2");font-weight:400 700;font-style:italic;font-display:swap;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}:root{--paper: #fdfdff;--paper-2: #f5f6fc;--panel: #f0f1f9;--ink: #181922;--ink-2: #3a3d4a;--muted: #676c7b;--muted-2: #9a9eb0;--line: #e5e6f1;--line-2: #eef0f7;--rail: #b0a4e6;--accent: #7c5cf6;--accent-deep: #5b3fd6;--accent-soft: #ece8fe;--accent2: #0d9488;--accent2-deep: #0f766e;--accent2-soft: #d3efe9;--navy: #2b2f52;--navy-soft: #e3e4f0;--maxw: 1080px;--radius: 16px;--radius-sm: 10px;--shadow-sm: 0 1px 2px rgba(30, 27, 75, .05);--shadow-md: 0 10px 30px -18px rgba(30, 27, 75, .35);--shadow-lg: 0 24px 60px -30px rgba(30, 27, 75, .4);--font-body: "Instrument Sans", ui-sans-serif, system-ui, sans-serif;--font-display: "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth;font-synthesis:none}body{font-family:var(--font-body);background:var(--paper);color:var(--ink-2);line-height:1.6;font-size:16px;overflow-x:hidden}a{color:inherit;text-decoration:none}b,strong{font-weight:700;color:var(--ink)}::selection{background:var(--accent-soft);color:var(--accent-deep)}.page-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(56% 40% at 94% -8%,rgba(124,92,246,.05),transparent 60%),var(--paper)}.page-bg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(rgba(40,38,90,.05) 1px,transparent 1.4px);background-size:26px 26px;-webkit-mask-image:linear-gradient(180deg,#000 0,transparent 620px);mask-image:linear-gradient(180deg,#000 0,transparent 620px)}.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}.topbar{position:sticky;top:0;z-index:50;background:#fdfdffd1;backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid transparent;transition:border-color .3s ease,box-shadow .3s ease}.topbar.scrolled{border-color:var(--line);box-shadow:var(--shadow-sm)}.topbar-in{display:flex;align-items:center;justify-content:space-between;height:62px}.brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;font-size:1.05rem;color:var(--ink);letter-spacing:-.01em}.brand .mono{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;font-size:.82rem;font-weight:700}.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:.92rem;font-weight:600;padding:10px 16px;border-radius:999px;border:1px solid transparent;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease,color .2s ease;white-space:nowrap}.btn svg{width:17px;height:17px}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 8px 20px -10px #7c5cf699}.btn-primary:hover{background:var(--accent-deep);transform:translateY(-1px);box-shadow:0 12px 26px -10px #7c5cf6a6}.btn-ghost{background:var(--paper);color:var(--ink);border-color:var(--line)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-1px)}.btn.sm{padding:8px 14px;font-size:.86rem}.hero{padding:56px 0 40px}.hero-grid{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:center}.hero-name{font-family:var(--font-display);font-weight:700;font-size:clamp(2.7rem,7vw,4.4rem);line-height:.98;letter-spacing:-.03em;color:var(--ink)}.hero-role{margin-top:12px;font-family:var(--font-display);font-weight:600;font-size:clamp(1.05rem,2.4vw,1.4rem);color:var(--accent-deep);letter-spacing:-.01em}.hero-sum{margin-top:18px;max-width:40em;font-size:1.02rem;color:var(--ink-2)}.hero-sum .hl{font-weight:700;color:var(--ink);box-shadow:inset 0 -.4em 0 var(--accent-soft)}.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}.hero-loc{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font-size:.92rem;color:var(--muted)}.hero-loc svg{width:16px;height:16px;color:var(--accent)}.hero-photo-wrap{position:relative;flex-shrink:0}.hero-photo{width:clamp(150px,22vw,220px);height:clamp(150px,22vw,220px);border-radius:28px;object-fit:cover;border:5px solid #fff;box-shadow:var(--shadow-lg);position:relative;z-index:1;display:block}.hero-photo-wrap:before{content:"";position:absolute;top:-14px;right:-14px;bottom:14px;left:14px;border-radius:32px;background:var(--accent);opacity:.14;z-index:0}.section-h{display:flex;align-items:center;gap:12px;font-family:var(--font-display);font-weight:700;font-size:1.5rem;color:var(--ink);letter-spacing:-.01em;margin-bottom:22px}.section-h:before{content:"";width:22px;height:4px;border-radius:4px;background:var(--accent)}.layout{display:grid;grid-template-columns:1fr 316px;gap:44px;padding-bottom:40px;align-items:start}.side-col{position:sticky;top:86px;display:flex;flex-direction:column;gap:18px}.timeline{position:relative}.entry{position:relative;padding-left:30px;padding-bottom:30px;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:20px}.entry:before{content:"";position:absolute;left:6px;top:0;bottom:0;width:2px;background:var(--rail)}.timeline>.reveal:first-child .entry:before{top:11px}.timeline>.reveal:last-child .entry:before{bottom:auto;height:11px}.entry:after{content:"";position:absolute;left:0;top:4px;width:14px;height:14px;border-radius:4px;background:var(--accent);transform:rotate(45deg);box-shadow:0 0 0 4px var(--paper)}.entry.break:after{border-radius:999px;background:var(--muted-2);width:12px;height:12px;left:1px;top:5px}.entry-top{display:contents}.entry-role{grid-column:1;grid-row:1;min-width:0;font-family:var(--font-display);font-weight:700;font-size:1.16rem;color:var(--ink);letter-spacing:-.01em;line-height:1.25}.entry-role .at{color:var(--navy);transition:color .15s ease,border-color .15s ease;border-bottom:1.5px solid transparent}a.at:hover{color:var(--accent-deep);border-bottom-color:var(--accent-soft)}.entry-role .sep{color:var(--muted-2);font-weight:600;margin:0 3px}.entry-meta{grid-column:2;grid-row:1;align-self:baseline;text-align:right;font-size:.82rem;font-weight:600;color:var(--muted);white-space:nowrap;line-height:1.4}.entry-loc{color:var(--muted-2);font-weight:500}.entry-desc{grid-column:1 / -1;grid-row:2;margin-top:5px;font-size:.98rem;color:var(--ink-2)}.entry-desc a{color:var(--navy);font-weight:700;border-bottom:1.5px solid var(--navy-soft);transition:color .15s ease}.entry-desc a:hover{color:var(--accent-deep);border-bottom-color:var(--accent-soft)}.entry-note{grid-column:1 / -1;margin-top:8px;font-size:.92rem;color:var(--muted);font-style:italic}.entry-bullets{grid-column:1 / -1;margin-top:10px;list-style:none;display:flex;flex-direction:column;gap:6px}.entry-bullets li{position:relative;padding-left:18px;font-size:.96rem;color:var(--ink-2)}.entry-bullets li:before{content:"";position:absolute;left:2px;top:9px;width:6px;height:6px;border-radius:2px;background:var(--accent);transform:rotate(45deg)}.stack{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.tag{font-size:.78rem;font-weight:600;color:var(--ink-2);background:var(--panel);border:1px solid var(--line);padding:3px 10px;border-radius:8px;transition:transform .15s ease,border-color .15s ease,color .15s ease}.tag:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-1px)}.project{grid-column:1 / -1;margin-top:14px;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--radius-sm);background:linear-gradient(180deg,#fff,var(--paper));padding:16px 18px;box-shadow:var(--shadow-sm)}.project-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.project-title{font-family:var(--font-display);font-weight:700;font-size:1.02rem;color:var(--ink)}.project-badge{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#fff;background:var(--accent);padding:3px 10px;border-radius:999px;white-space:nowrap}.project-desc{font-size:.95rem;color:var(--ink-2)}.project-link{color:var(--navy);font-weight:700;border-bottom:1.5px solid var(--navy-soft);transition:color .15s ease}.project-link:hover{color:var(--accent-deep);border-bottom-color:var(--accent-soft)}.project-grid{margin-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:7px 22px}.project-grid div{position:relative;padding-left:16px;font-size:.9rem;color:var(--ink-2);line-height:1.45}.project-grid div:before{content:"";position:absolute;left:3px;top:8px;width:5px;height:5px;border-radius:999px;background:var(--accent)}.entry.break .entry-role{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--muted);font-size:1.06rem}.bolt{width:17px;height:17px;color:var(--accent2-deep);flex-shrink:0}.entry.break .entry-desc{font-style:italic;color:var(--muted)}.entry.break .entry-desc a{color:var(--navy);font-weight:700;font-style:normal;border-bottom:1.5px solid var(--navy-soft);transition:color .15s ease}.entry.break .entry-desc a:hover{color:var(--accent-deep);border-bottom-color:var(--accent-soft)}.panel{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius);padding:20px 20px 22px;box-shadow:var(--shadow-sm)}.panel-h{font-family:var(--font-display);font-weight:700;font-size:1.06rem;color:var(--ink);margin-bottom:16px;display:flex;align-items:center;gap:9px}.panel-h:before{content:"";width:16px;height:4px;border-radius:4px;background:var(--accent2)}.skill-grp+.skill-grp{margin-top:16px}.skill-lbl{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--accent2-deep);margin-bottom:9px}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{font-size:.84rem;font-weight:600;color:var(--ink);background:var(--paper);border:1px solid var(--line);padding:4px 12px;border-radius:999px;transition:transform .15s ease,border-color .15s ease,color .15s ease}.chip:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-1px)}.side-list{list-style:none;display:flex;flex-direction:column;gap:11px}.side-list li{position:relative;padding-left:18px;font-size:.95rem;color:var(--ink-2);line-height:1.45}.side-list li:before{content:"";position:absolute;left:2px;top:8px;width:6px;height:6px;border-radius:2px;background:var(--accent2);transform:rotate(45deg)}.site-foot{border-top:1px solid var(--line);padding:26px 0 46px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;font-size:.9rem;color:var(--muted)}.site-foot a{color:var(--accent-deep);font-weight:600;border-bottom:1.5px solid var(--accent-soft)}.site-foot a:hover{color:var(--accent)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.reveal.in{opacity:1;transform:none}@media(max-width:900px){.layout{grid-template-columns:1fr;gap:34px}.side-col{position:static;top:auto}}@media(max-width:680px){.wrap{padding-left:18px;padding-right:18px}.hero{padding:34px 0 30px}.hero-grid{grid-template-columns:1fr;gap:24px;text-align:left}.hero-photo-wrap{order:-1;justify-self:start;width:max-content}.hero-photo{width:128px;height:128px;border-radius:22px}.hero-photo-wrap:before{top:-10px;right:-10px;bottom:10px;left:10px}.entry{grid-template-columns:1fr}.entry-role,.entry-desc,.entry-meta{grid-column:1;grid-row:auto}.entry-meta{text-align:left;margin-top:2px}.project-grid{grid-template-columns:1fr;gap:7px}.brand .full{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.btn:hover,.chip:hover,.tag:hover{transform:none}}
