:root{--bg: #0b0b0f;--bg-elev: #12121a;--fg: #e8e8ee;--fg-dim: #8a8a95;--fg-mute: #858592;--accent: #7c6cff;--accent2: #00d9b8;--accent-dim: #3a2f8f;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--card: rgba(255, 255, 255, .03);--card-hover: rgba(255, 255, 255, .06);--radius: 8px;--font-head: "Space Grotesk", sans-serif;--font-body: "Inter", sans-serif;--font-mono: "JetBrains Mono", monospace;--ease-out: cubic-bezier(.16, 1, .3, 1)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:hidden}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:16px;line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}.site{position:relative;z-index:1}#bg3d{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}::selection{background:var(--accent);color:var(--bg)}h1,h2,h3,h4{font-family:var(--font-head);font-weight:600;letter-spacing:-.02em}.nav__link,.btn,.skip-link,.stat__label,.post-card__read,.tag,.footer{font-family:var(--font-head)}.section-title{font-size:clamp(2rem,5vw,3.2rem);line-height:1.1;margin-bottom:.4em}.section-sub{color:var(--fg-dim);font-size:1.05rem;max-width:55ch;margin-bottom:3rem}.mono{font-family:var(--font-mono)}.loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;display:grid;place-items:center;background:var(--bg);transition:opacity .8s var(--ease-out),visibility .8s}.loader.is-done{opacity:0;visibility:hidden}.loader__inner{text-align:center;width:min(400px,80vw)}.loader__name{font-family:var(--font-head);font-size:2rem;letter-spacing:.02em;margin-bottom:2rem;color:var(--fg)}.loader__bar{width:100%;height:2px;background:#ffffff14;border-radius:2px;overflow:hidden}.loader__fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:2px;transition:width .3s ease}.loader__pct{font-family:var(--font-mono);font-size:.75rem;color:var(--fg-mute);margin-top:1rem}:focus-visible{outline:2px solid var(--accent2);outline-offset:3px;border-radius:4px}.skip-link{position:fixed;top:-3rem;left:1rem;z-index:1001;padding:.6rem 1.1rem;background:var(--bg-elev);color:var(--fg);border:1px solid var(--accent2);border-radius:var(--radius);text-decoration:none;font-size:.85rem;transition:top .2s}.skip-link:focus{top:1rem}.progress{position:fixed;top:0;left:0;z-index:101;width:100%;height:2px;background:linear-gradient(90deg,var(--accent),var(--accent2));transform:scaleX(0);transform-origin:left;pointer-events:none}.container{max-width:1200px;margin:0 auto;padding:0 clamp(1.2rem,4vw,3rem)}.section{padding:clamp(5rem,12vh,9rem) 0;position:relative}.nav{position:fixed;top:1.2rem;left:50%;transform:translate(-50%);z-index:100;display:flex;gap:.25rem;padding:.4rem .6rem;background:#12121ab3;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:var(--radius);opacity:0;transition:opacity .8s .4s var(--ease-out)}.nav.is-visible{opacity:1}.print-name,.print-contact{display:none}.nav__link{padding:.5rem 1rem;border-radius:100px;color:var(--fg-dim);text-decoration:none;font-size:.85rem;transition:color .2s,background .2s;white-space:nowrap;position:relative}.nav__link:after{content:"";position:absolute;left:0;right:0;top:50%;height:44px;transform:translateY(-50%)}.nav__link:hover{color:var(--fg);background:#ffffff0f}.nav__link.is-active{color:#fff;background:var(--accent-dim)}@media(max-width:720px){.nav{gap:0;padding:.25rem .3rem;max-width:calc(100vw - 1.5rem);justify-content:flex-start;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav__link{padding:.9rem .6rem;font-size:.72rem;min-width:44px;display:inline-flex;align-items:center;justify-content:center}}.stream-ch{will-change:opacity}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}html.lenis,.lenis.lenis-smooth{scroll-behavior:auto!important}.js .hero__anim,.js .reveal,.js .tl-item{animation:none!important;opacity:1!important;transform:none!important}.js .hero__scroll{opacity:1!important;transition:none!important}.hero__scroll-line{animation:none!important}.stream-ch{opacity:1!important;transition:none!important}.hero__role{transform:none!important}.project-card__details{transition:none!important}.stat:hover,.skill-group:hover,.tag:hover,.post-card:hover,.project-card:hover{transform:none!important}.loader{transition-duration:.15s!important}.nav{transition-duration:.15s!important;transition-delay:0s!important}}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;position:relative;padding:0 clamp(1.2rem,4vw,3rem);padding-top:4rem}.hero__inner{max-width:1200px;margin:0 auto;width:100%}.hero__tag{font-family:var(--font-mono);color:var(--accent2);font-size:.85rem;letter-spacing:.1em;margin-bottom:1.5rem}.hero__headline{font-family:var(--font-head);font-size:clamp(2.4rem,7.5vw,5.2rem);font-weight:700;letter-spacing:-.03em;line-height:1.08;margin-bottom:.5em;max-width:16ch;text-wrap:balance}.hero__headline .accent{color:var(--accent2)}.hero__role{font-size:clamp(1.05rem,2.2vw,1.35rem);color:var(--fg-dim);max-width:58ch;line-height:1.55}.hero__role strong{color:var(--fg);font-weight:500}.js .hero__anim{opacity:0;transform:translateY(14px);animation:hero-in .55s var(--ease-out) forwards}.js .hero__anim--1{animation-delay:.05s}.js .hero__anim--2{animation-delay:.18s}.js .hero__anim--3{animation-delay:.34s}.js .hero__anim--4{animation-delay:.5s}@keyframes hero-in{to{opacity:1;transform:translateY(0)}}.hero__scroll{position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.2em;color:var(--fg-mute);display:flex;flex-direction:column;align-items:center;gap:.6rem;transition:opacity 1s 1.5s}.js .hero__scroll{opacity:0}.hero__scroll.is-visible{opacity:1}.hero__scroll-line{width:1px;height:48px;background:linear-gradient(var(--fg-mute),transparent);animation:scrollPulse 2s ease-in-out infinite}@keyframes scrollPulse{0%,to{transform:scaleY(.4);transform-origin:top;opacity:.5}50%{transform:scaleY(1);transform-origin:top;opacity:1}}.btn{display:inline-flex;align-items:center;gap:.6rem;padding:.9rem 1.8rem;border-radius:var(--radius);border:1px solid var(--border-strong);color:var(--fg);text-decoration:none;font-size:.9rem;font-weight:500;white-space:nowrap;background:var(--card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .25s,border-color .25s,transform .1s;will-change:transform}.btn:hover{background:var(--card-hover);border-color:var(--accent)}.btn--primary{background:linear-gradient(135deg,var(--accent),var(--accent-dim));border-color:transparent;color:#fff}.btn--primary:hover{background:linear-gradient(135deg,var(--accent),var(--accent-dim));box-shadow:0 6px 18px #00000080}.hero__cta{display:flex;gap:1rem;margin-top:2.5rem;flex-wrap:wrap}.about__grid{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(2rem,5vw,4rem);align-items:start}.about__text p{margin-bottom:1.2em;color:var(--fg-dim)}.about__text strong{color:var(--fg);font-weight:500}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.stat{padding:1.6rem 1.4rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);transition:border-color .3s,transform .3s var(--ease-out),background .3s}.stat:hover{border-color:var(--accent);background:var(--card-hover);transform:translateY(-4px)}.stat__num{font-family:var(--font-head);font-size:2.4rem;font-weight:700;color:var(--accent2);line-height:1}.stat__label{font-size:.8rem;color:var(--fg-mute);margin-top:.5rem}@media(max-width:860px){.about__grid{grid-template-columns:1fr}}.timeline{position:relative;padding-left:2.5rem}.timeline:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:1px;background:linear-gradient(var(--accent),var(--accent2),var(--border))}.tl-item{position:relative;padding-bottom:clamp(2.5rem,6vh,4rem)}.tl-item:before{content:"";position:absolute;left:-2.5rem;top:6px;width:11px;height:11px;margin-left:-5px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);box-shadow:0 1px 2px #00000073}.tl-item__period{font-family:var(--font-mono);font-size:.75rem;color:var(--accent2);letter-spacing:.08em;margin-bottom:.4rem}.tl-item__role{font-size:1.3rem;margin-bottom:.1rem}.tl-item__org{color:var(--fg-dim);font-size:.95rem;margin-bottom:1rem}.tl-item__org em{color:var(--fg-mute);font-style:normal;font-size:.85em}.tl-item__bullets{list-style:none}.tl-item__bullets li{position:relative;padding-left:1.3em;margin-bottom:.55em;color:var(--fg-dim);font-size:.95rem}.tl-item__bullets li:before{content:"▸";position:absolute;left:0;color:var(--accent)}.skills__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.skill-group{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);padding:1.5rem 1.3rem;transition:border-color .3s,transform .3s var(--ease-out),background .3s;will-change:transform;cursor:default}.skill-group:hover{border-color:var(--accent);background:var(--card-hover)}.skill-group__title{font-size:.78rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.15em;color:var(--fg-mute);margin-bottom:1rem}.skill-tags{display:flex;flex-wrap:wrap;gap:.5rem}.tag{padding:.35rem .8rem;border-radius:100px;border:1px solid var(--border);font-size:.8rem;color:var(--fg-dim);transition:all .25s;cursor:default}.tag:hover{border-color:var(--accent);color:#fff;background:#7c6cff1f;transform:translateY(-2px)}@media(max-width:860px){.skills__grid{grid-template-columns:1fr 1fr}}#articleView{position:fixed;top:0;right:0;bottom:0;left:0;z-index:800;background:var(--bg);overflow-y:auto;padding:clamp(1.25rem,5vw,4rem) clamp(1rem,4vw,2rem);overscroll-behavior:contain}.article{max-width:68ch;margin:0 auto}.article__back{display:inline-block;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent2);text-decoration:none;margin-bottom:2.5rem}.article__back:hover{text-decoration:underline}.article__back:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.article__meta{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em;color:var(--fg-mute);margin-bottom:.9rem}.article__title{font-size:clamp(1.9rem,4.5vw,2.9rem);line-height:1.15;margin-bottom:.9rem;text-wrap:balance}.article__deck{font-size:clamp(1.05rem,2vw,1.25rem);line-height:1.55;color:var(--fg-dim);font-style:italic;margin-bottom:2.6rem}.article__body{font-size:1.05rem;line-height:1.78;color:var(--fg-dim);padding-bottom:6rem}.article__body p{margin-bottom:1.45rem}.article__body h2,.article__body h3,.article__body h4{color:var(--fg);margin:2.4rem 0 1rem;line-height:1.3}.article__body h2{font-size:1.5rem}.article__body h3{font-size:1.22rem}.article__body h4{font-size:1.05rem}.article__body ul,.article__body ol{margin:0 0 1.45rem 1.35rem}.article__body li{margin-bottom:.5rem}.article__body a{color:var(--accent2);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent-dim)}.article__body a:hover{text-decoration-color:var(--accent2)}.article__body strong{color:var(--fg)}.article__body code{font-family:var(--font-mono);font-size:.86em;background:var(--card-hover);border:1px solid var(--border);border-radius:4px;padding:.1em .4em;color:var(--fg)}.article__pre{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem;margin-bottom:1.45rem;overflow-x:auto}.article__pre code{background:none;border:none;padding:0}.article__body blockquote{border-left:2px solid var(--accent);padding:.2rem 0 .2rem 1.15rem;margin:0 0 1.45rem;color:var(--fg);font-style:italic}.article__body hr{border:none;border-top:1px solid var(--border);margin:2.2rem auto;width:5rem}.article__body img{max-width:100%;height:auto;border-radius:var(--radius);margin:1rem 0}.article__loading{color:var(--fg-mute)}@media(max-width:560px){.skills__grid{grid-template-columns:1fr}}.blog__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.post-card{display:flex;flex-direction:column;gap:.5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);padding:1.5rem;text-decoration:none;color:var(--fg);transition:border-color .3s,transform .4s var(--ease-out),background .3s;will-change:transform;position:relative;overflow:hidden}.post-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(400px circle at var(--mx, 50%) var(--my, 50%),rgba(124,108,255,.1),transparent 50%);opacity:0;transition:opacity .3s;pointer-events:none}.post-card:hover{border-color:var(--accent);transform:translateY(-4px)}.post-card:hover:after{opacity:1}.post-card__date{font-family:var(--font-mono);font-size:.72rem;color:var(--accent2)}.post-card__title{font-family:var(--font-head);font-size:1.05rem;line-height:1.35}.post-card__excerpt{color:var(--fg-dim);font-size:.85rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.post-card__read{margin-top:auto;padding-top:1.2rem;font-size:.8rem;color:var(--fg-mute);transition:color .25s}.post-card:hover .post-card__read{color:var(--accent)}@media(max-width:860px){.blog__grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.blog__grid{grid-template-columns:1fr}}.contact{text-align:center}.contact .section-title{font-size:clamp(2.5rem,7vw,5rem)}.contact .section-sub{margin:0 auto 2.8rem;max-width:45ch;text-align:center}.contact__links{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}.contact__note{margin:2rem auto 0;max-width:48ch;text-align:center;color:var(--fg-mute);font-size:.85rem;line-height:1.65}.footer{padding:2.5rem 0;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--fg-mute)}.footer a{color:var(--fg-dim);text-decoration:none;transition:color .2s;display:inline-block;padding:.75rem 0}.footer a:hover{color:var(--accent)}@media(max-width:600px){.footer{flex-direction:column;gap:1rem}}.js .reveal{opacity:0;transform:translateY(24px)}.js .reveal.is-inview{opacity:1;transform:translateY(0);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out)}.js .tl-item{opacity:0;transform:translateY(40px)}.js .tl-item.is-inview{opacity:1;transform:translateY(0);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out)}.projects__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem}@media(max-width:860px){.projects__grid{grid-template-columns:1fr}}.project-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);padding:clamp(1.5rem,3vw,2rem);display:flex;flex-direction:column;gap:.9rem;transition:border-color .3s,transform .4s var(--ease-out),background .3s}.project-card:hover{border-color:var(--accent);background:var(--card-hover);transform:translateY(-4px)}.project-card:focus-within{border-color:var(--accent)}.project-card__meta{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;color:var(--accent2);display:flex;gap:.75rem;flex-wrap:wrap}.project-card__title{font-size:1.35rem}.project-card__summary{color:var(--fg-dim);font-size:.95rem;line-height:1.6}.project-card__summary strong{color:var(--fg);font-weight:500}.project-card__stack{display:flex;flex-wrap:wrap;gap:.4rem}.project-card__stack .tag{font-size:.72rem;padding:.25rem .6rem}.project-card__actions{margin-top:auto;padding-top:.75rem;display:flex;gap:1.25rem;align-items:center}.project-card__link{color:var(--accent2);text-decoration:none;font-size:.85rem;font-weight:500;border-bottom:1px solid transparent;transition:border-color .2s;position:relative}.project-card__link:after{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:44px;transform:translate(-50%,-50%)}.project-card__link:hover{border-bottom-color:var(--accent2)}.project-card__toggle{margin-left:auto;background:none;border:1px solid var(--border);border-radius:100px;color:var(--fg-dim);font-family:var(--font-mono);font-size:.72rem;padding:.4rem .9rem;cursor:pointer;transition:color .2s,border-color .2s;position:relative}.project-card__toggle:after{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:44px;transform:translate(-50%,-50%)}.project-card__toggle:hover{color:var(--fg);border-color:var(--accent)}.project-card__toggle[aria-expanded=true]{color:var(--accent2);border-color:var(--accent2)}.project-card__details{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s var(--ease-out)}.project-card__details>div{overflow:hidden}.project-card__details.is-open{grid-template-rows:1fr}.project-card__details h4{font-family:var(--font-mono);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.15em;color:var(--fg-mute);margin:1.1rem 0 .4rem}.project-card__details p,.project-card__details li{color:var(--fg-dim);font-size:.88rem;line-height:1.6}.project-card__details ul{margin-left:1.2em}.project-card__details li{margin-bottom:.3em}.project-card__diagram{margin:.9rem 0}.project-card__diagram img{max-width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius);background:#fff}.section[id],header[id]{scroll-margin-top:5.5rem}@media print{:root{--bg: #fff;--fg: #111;--fg-dim: #333;--fg-mute: #555;--accent2: #111;--accent: #111}html{scroll-behavior:auto}body{background:#fff!important;color:#111;font-size:11pt}#bg3d,.loader,.nav,.progress,.skip-link,.hero__scroll,.stats,#projects,#blog,#contact,.footer,.modal,.modal-overlay,.grain{display:none!important}.hero{min-height:0;padding:0 0 .8rem}.hero__tag,.hero__headline,.hero__role,.hero__cta{display:none!important}.print-name{display:block;font-size:24pt;font-weight:700;margin:0 0 .2rem;letter-spacing:.01em}.print-contact{display:block;font-size:10pt;color:#333;margin:0 0 .4rem}.print-contact a{color:#333;text-decoration:none}.section{padding:1rem 0}.container{max-width:none;padding:0 1.4cm}.section-title{font-size:14pt;border-bottom:1px solid #999;padding-bottom:.3rem;margin-bottom:.8rem;text-transform:uppercase;letter-spacing:.08em}.section-sub{display:none}.about__grid{display:block}.skills__grid{display:grid;grid-template-columns:1fr 1fr;gap:8pt}.skill-group{border:1px solid #bbb;border-radius:4pt;padding:8pt 10pt;background:none;page-break-inside:avoid}.skill-group__title{font-size:8.5pt;margin-bottom:5pt}.tag{border:1px solid #999;border-radius:100px;padding:1.5pt 6pt;font-size:8.5pt;color:#222}.tl-item{page-break-inside:avoid;page-break-before:auto}.tl-item__role{font-size:12pt}.tl-item__bullets li{font-size:10pt;margin-bottom:.25rem}.tl-item+.tl-item{page-break-inside:avoid}.reveal,.tl-item,[class*=hero__anim]{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}.stream-ch,[class*=stream]{opacity:1!important;transform:none!important;animation:none!important}a[href^=http]:after{content:" (" attr(href) ")";font-size:8pt;color:#555}.print-contact a:after{content:""}}
