@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff)format("woff")}:root{--bg:#07090d;--accent:#a78bfa;--accent-soft:#c4b5fd;--text:#e6edf3;--muted:#94a3b8;--dim:#64748b;--line:#2a2f3a;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-body);margin:0}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}.hero{min-height:100vh;display:flex;position:relative}.hero__left{box-sizing:border-box;overflow-wrap:anywhere;flex:0 0 35%;min-width:0;max-height:100vh;padding:48px 32px;overflow-y:auto}.hero--overlay{height:100vh;overflow:hidden}.hero--overlay .hero__galaxy{z-index:0;position:absolute;inset:0}.hero--overlay .hero__left{z-index:1;background:linear-gradient(90deg,#07090df0 0%,#07090dd1 62%,#07090d00 100%);flex-basis:35%;padding-right:56px;position:relative}.hero--overlay .galaxy-fallback{padding-left:calc(35% + 32px)}.hero--overlay .galaxy-a11y:focus-within{left:calc(35% + 16px)}.hero__swap{animation:.2s ease-out hero-swap}@keyframes hero-swap{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes hero-fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.hero__swap{animation:.2s ease-out hero-fade!important}}.about__name{color:var(--text);margin:0 0 4px;font-size:2rem}.about__role{color:var(--accent-soft);font-family:var(--font-mono);margin:0 0 20px;font-size:.85rem}.about__summary{color:var(--muted);line-height:1.6}.about__stats{flex-wrap:wrap;gap:8px;margin:20px 0;padding:0;list-style:none;display:flex}.about__stats li{border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);border-radius:999px;padding:4px 12px;font-size:.8rem}.about__hint{color:var(--muted);font-family:var(--font-mono);font-size:.8rem;text-decoration:none}.about__hint:hover{color:var(--accent)}.contact-icons{gap:14px;margin:0 0 24px;padding:0;list-style:none;display:flex}.contact-icons a{color:var(--muted);padding:6px;display:inline-flex}.contact-icons a:hover,.contact-icons a:focus-visible{color:var(--accent)}.skill-detail__back{color:var(--accent-soft);font-family:var(--font-mono);cursor:pointer;background:0 0;border:0;margin-bottom:20px;padding:0;font-size:.85rem}.skill-detail__cluster{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;margin:0;font-size:.75rem}.skill-detail__title{color:var(--text);margin:4px 0 16px}.skill-detail__list{margin:0;padding:0;list-style:none}.skill-detail__list li{border-top:1px solid var(--line);padding:12px 0}.skill-detail__list p{color:var(--muted);margin:4px 0 0;line-height:1.5}.skill-detail__list strong{color:var(--text)}.skill-detail__list a{color:var(--accent);text-decoration:none}.skill-detail__company{color:var(--accent-soft);font-family:var(--font-mono);font-size:.75rem}.hero--stacked,.hero--phone{flex-direction:column}.hero--stacked .hero__left,.hero--phone .hero__left{flex:none;max-height:none;overflow-y:visible}.hero--stacked .hero__left{max-width:760px;padding:32px 40px 48px}.hero--stacked .hero__galaxy{width:100%;aspect-ratio:var(--galaxy-aspect);max-height:var(--galaxy-max-h);flex:none;position:relative}.hero--phone{min-height:0}.hero--phone .hero__left{padding:32px 20px}.about__skills{margin:8px 0 28px}.about__skills-title{font-size:1rem;font-family:var(--font-mono);color:var(--accent-soft);margin:0 0 16px;font-weight:600}.about__skills .galaxy-fallback__grid{gap:24px}.footer{box-sizing:border-box;max-width:1100px;font-family:var(--font-mono);color:var(--text);border-top:1px solid var(--line);margin:0 auto;padding:72px 32px 48px}.footer__title{color:var(--text);margin:0 0 12px;font-size:1.5rem}.footer__lead{max-width:56ch;color:var(--muted);margin:0 0 28px;font-size:.9rem;line-height:1.6}.footer__links{flex-wrap:wrap;gap:12px;margin:0 0 40px;padding:0;list-style:none;display:flex}.footer__link{box-sizing:border-box;min-height:44px;color:var(--text);overflow-wrap:anywhere;border:1px solid var(--line);background:#a78bfa08;border-radius:8px;align-items:center;gap:10px;padding:0 16px;font-size:.85rem;text-decoration:none;transition:border-color .15s,background-color .15s,color .15s;display:inline-flex}.footer__link:hover{color:var(--accent-soft);border-color:var(--accent);background:#a78bfa14}.footer__link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.footer__icon{color:var(--accent);display:inline-flex}.footer__note{color:var(--muted);margin:0;font-size:.75rem}@media (width<=640px){.footer{padding:56px 16px 40px}.footer__links{flex-direction:column}.footer__link{width:100%}}.timeline{box-sizing:border-box;max-width:1100px;font-family:var(--font-mono);color:var(--text);margin:0 auto;padding:72px 32px}.timeline__title{color:var(--text);margin:0 0 32px;font-size:1.5rem}.timeline__axis{grid-template-columns:160px 1fr;gap:16px;margin-bottom:8px;padding:0 8px;display:grid}.timeline__axis-track{height:20px;position:relative}.timeline__year{color:var(--muted);font-size:.75rem;position:absolute;transform:translate(-50%)}.timeline__axis-track .timeline__year:first-child{transform:none}.timeline__rows{margin:0;padding:0;list-style:none}.trow{border-top:1px solid var(--line)}.trow:last-child{border-bottom:1px solid var(--line)}.trow__btn{box-sizing:border-box;width:100%;min-height:56px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;grid-template-columns:160px 1fr;align-items:center;gap:16px;padding:8px;transition:background-color .15s;display:grid}.trow__btn:hover{background:#a78bfa0f}.trow__btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;background:#a78bfa14}.trow--open>.trow__btn{background:#a78bfa14}.trow__label{flex-direction:column;gap:2px;min-width:0;display:flex}.trow__company{color:var(--text);overflow-wrap:anywhere;font-size:.85rem}.trow__dates{color:var(--muted);font-size:.7rem}.trow__type{color:var(--accent-soft);text-transform:uppercase;letter-spacing:.04em;font-size:.65rem}.trow__track{height:28px;position:relative}.trow__grid{background:var(--line);opacity:.5;width:1px;position:absolute;top:0;bottom:0}.bar{box-sizing:border-box;border-radius:4px;align-items:center;height:20px;transition:filter .15s;display:flex;position:absolute;top:4px}.trow__btn:hover .bar,.trow__btn:focus-visible .bar{filter:brightness(1.25)}.bar--full-time{background:var(--accent)}.bar--project-based{border:1px solid var(--accent);background:0 0}.bar--education{background:var(--line)}.bar--faint{border-color:var(--dim)}.bar__highlight{white-space:nowrap;color:var(--accent-soft);font-size:.7rem;position:absolute;right:calc(100% + 8px)}.trow__panel{color:var(--muted);font-family:var(--font-body);padding:8px 8px 24px 184px;font-size:.9rem;line-height:1.6;animation:.22s ease-out trow-open}.trow__panel strong{color:var(--text);font-weight:600}.trow__panel a{color:var(--accent-soft)}.trow__panel a:hover{color:var(--accent)}.trow__role{font-family:var(--font-mono);color:var(--accent-soft);margin:0 0 8px;font-size:.8rem}.trow__bullets,.trow__projects{margin:0;padding-left:20px}.trow__bullets li,.trow__projects li{margin-bottom:4px}.trow__subhead{font-family:var(--font-mono);text-transform:uppercase;color:var(--muted);margin:16px 0 6px;font-size:.7rem;font-weight:400}.trow__pname{color:var(--text)}@keyframes trow-open{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.timeline__legend{color:var(--muted);margin:20px 0 0;font-size:.75rem}@media (width<=767px){.timeline{padding:48px 16px}.trow__btn{grid-template-columns:1fr auto;min-height:56px;padding:10px 4px}.trow__swatchwrap{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.bar--swatch{width:28px;height:12px;position:static}.trow__highlight{color:var(--accent-soft);text-align:right;font-size:.65rem}.trow__panel{padding:4px 4px 20px}}@media (prefers-reduced-motion:reduce){.trow__panel{animation:none}.trow__btn,.bar{transition:none}}.galaxy{touch-action:pan-y;background:radial-gradient(circle,#a78bfa12,#0000 60%);position:absolute;inset:0;overflow:hidden}.galaxy-scene{opacity:0;cursor:grab;width:100%;height:100%;transition:opacity .8s ease-out}.galaxy-scene--ready{opacity:1}.galaxy-scene--grabbing{cursor:grabbing}.galaxy-scene--pointer{cursor:pointer}.galaxy-fallback{z-index:1;background:var(--bg,#07090d);box-sizing:border-box;flex-direction:column;padding:48px 32px;animation:.3s ease-out .25s both galaxy-fade;display:flex;position:absolute;inset:0;overflow:hidden auto}.galaxy-fallback__grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:32px 24px;min-width:0;margin-block:auto;display:grid}.galaxy-fallback__cluster{min-width:0}.galaxy-fallback__heading{border-bottom:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 12px;padding-bottom:8px;font-size:.75rem;font-weight:600}.galaxy-fallback__skills{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.galaxy-fallback__skills li{max-width:100%}.galaxy-fallback__skill{border:1px solid var(--line);max-width:100%;color:var(--text);font:.85rem/1.3 var(--font-mono);text-align:left;white-space:normal;overflow-wrap:anywhere;cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;transition:border-color .15s,color .15s,background-color .15s}.galaxy-fallback__skill:hover{border-color:var(--accent);color:var(--accent-soft)}.galaxy-fallback__skill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.galaxy-fallback__skill[aria-pressed=true]{border-color:var(--accent);color:var(--accent-soft);background:#a78bfa24}.galaxy-a11y:not(:focus-within){clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.galaxy-a11y:focus-within{z-index:2;border:1px solid var(--line);background:#07090deb;border-radius:12px;max-height:60%;padding:20px;position:absolute;bottom:16px;left:16px;right:16px;overflow-y:auto}@keyframes galaxy-fade{0%{opacity:0}to{opacity:1}}.galaxy-fallback--out{pointer-events:none;animation:.9s ease-in both galaxy-fade-out}@keyframes galaxy-fade-out{to{opacity:0}}@media (width<=767px){.galaxy-fallback{padding:24px 16px}}.intro{z-index:1000;background:var(--bg);position:fixed;inset:0;overflow:hidden}.intro canvas{display:block}.intro__readout{text-align:center;font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);pointer-events:none;margin:0;font-size:.75rem;transition:opacity .2s ease-out;position:absolute;bottom:40px;left:0;right:0}.intro__core{pointer-events:none;background:radial-gradient(circle,#ffffffd9 0%,#a78bfab3 16%,#a78bfa38 42%,#a78bfa00 70%);border-radius:50%;transition:opacity .4s ease-out,width .3s ease-out,height .3s ease-out;animation:1.8s ease-in-out infinite alternate intro-pulse;position:absolute;translate:-50% -50%}@keyframes intro-pulse{0%{scale:.92}to{scale:1.08}}@media (prefers-reduced-motion:reduce){.intro__core{animation:none}}.intro--explode{animation:intro-clear var(--intro-out) ease-in var(--intro-delay) both}.intro--explode .intro__readout,.intro--fade .intro__readout{opacity:0}.intro--clearing{pointer-events:none}@keyframes intro-clear{0%{background-color:var(--bg)}to{background-color:#0000}}html.intro-active{overflow:hidden}.hero__left{transition:opacity .2s ease-out}html.intro-active .hero__left{opacity:0}.bottom-sheet{z-index:50;-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);max-height:60vh;padding-bottom:env(safe-area-inset-bottom);will-change:transform;background:#0d1117f5;border-bottom:0;border-radius:12px 12px 0 0;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 32px #0000008c}.bottom-sheet__handle{touch-action:none;cursor:grab;flex:none;justify-content:center;padding:10px 0 6px;display:flex}.bottom-sheet__handle span{background:var(--dim);border-radius:2px;width:40px;height:4px}.bottom-sheet__close{width:44px;height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:1rem;position:absolute;top:4px;right:8px}.bottom-sheet__body{overscroll-behavior:contain;flex:auto;min-height:0;max-height:60vh;padding:0 20px 20px;overflow-y:auto}.skill-detail--sheet .skill-detail__title{overflow-wrap:anywhere;margin-top:2px;padding-right:36px}
