:root{--bg:#070b11;--bg-2:#0b111b;--panel:#0e1622;--panel-2:#121d2c;--line:rgba(125,165,205,.12);--line-strong:rgba(125,165,205,.22);--text:#c4d2e3;--dim:#73849b;--bright:#eaf2fb;--accent:#4fe3c1;--accent-2:#6ea8ff;--glow:rgba(79,227,193,.32);--mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--sans:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(900px 500px at 78% -8%,rgba(79,227,193,.1),transparent 60%),radial-gradient(800px 600px at 8% 8%,rgba(110,168,255,.08),transparent 60%),var(--bg)}body:after{content:"";position:fixed;inset:0;z-index:-1;opacity:.5;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 78%);mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 78%)}a{color:inherit;text-decoration:none}::selection{background:#4fe3c140;color:var(--bright)}.wrap{max-width:1080px;margin:0 auto;padding:0 28px}.mono{font-family:var(--mono)}.accent{color:var(--accent)}header.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(10px);background:#070b11b8;border-bottom:1px solid var(--line)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:62px}.logo{font-family:var(--mono);font-weight:600;letter-spacing:.5px;color:var(--bright);font-size:15px}.logo .dot{color:var(--accent)}.nav-links{display:flex;gap:26px;align-items:center}.nav-links a{font-family:var(--mono);font-size:13px;color:var(--dim);transition:color .2s}.nav-links a:hover{color:var(--accent)}.nav-cta{font-family:var(--mono);font-size:12.5px;color:var(--accent);border:1px solid var(--line-strong);padding:7px 14px;border-radius:6px;transition:.2s}.nav-cta:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 18px -6px var(--glow)}@media(max-width:680px){.nav-links a:not(.nav-cta){display:none}}.hero{padding:88px 0 64px;position:relative}.term-line{font-family:var(--mono);font-size:13px;color:var(--dim);border:1px solid var(--line);border-radius:8px;padding:9px 14px;display:inline-flex;align-items:center;gap:8px;background:#0e162280}.term-line .prompt{color:var(--accent)}.hero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,64px);align-items:center}.hero-grid h1.name{font-size:clamp(36px,5.4vw,58px)}@media(max-width:920px){.hero-grid{grid-template-columns:1fr;gap:40px}}.hero-term{border:1px solid var(--line-strong);border-radius:12px;overflow:hidden;background:#0e1622b8;backdrop-filter:blur(4px);box-shadow:0 20px 50px -28px #000000e6}.hero-term-bar{display:flex;align-items:center;gap:7px;padding:10px 14px;border-bottom:1px solid var(--line);background:#0e1622d9}.hero-term .tdot{width:10px;height:10px;border-radius:50%;background:var(--line-strong)}.hero-term .tdot:nth-child(1){background:#ff5f568c}.hero-term .tdot:nth-child(2){background:#ffbd2e8c}.hero-term .tdot:nth-child(3){background:#27c93f8c}.hero-term-title{margin-left:auto;font-size:11.5px;color:var(--dim)}.hero-term-body{padding:14px 16px 12px;font-size:13px;line-height:1.85}.hero-term-body .prompt{color:var(--accent)}.hero-term-body .cmd{color:var(--bright)}.hero-term-body .out{color:var(--dim)}.hero-term-body .out a{color:var(--text);transition:color .2s}.hero-term-body .out a:hover{color:var(--accent)}.hero-term-body .out-links a{margin-right:14px}.hero-term-body .out-links a:last-child{color:var(--dim)}.hero-term-body .t-step .out a{color:var(--accent-2)}.hero-term-body .t-step:last-of-type .out a{color:var(--accent)}.hero-term.term-anim [data-term-step]{display:none}.hero-term.term-anim [data-term-step].on{display:block}.hero-term.term-anim [data-term-step] .out{display:none}.hero-term.term-anim [data-term-step] .out.on{display:block}.hero-term.term-anim [data-term-idle]{display:none}.hero-term.term-anim [data-term-idle].on{display:block}.cursor{display:inline-block;width:8px;height:15px;background:var(--accent);margin-left:2px;animation:blink 1.1s steps(1) infinite;vertical-align:-2px}@keyframes blink{50%{opacity:0}}h1.name{font-family:var(--mono);font-weight:700;color:var(--bright);font-size:clamp(40px,8vw,76px);line-height:1.02;letter-spacing:-1px;margin:24px 0 10px}.role{font-size:clamp(18px,3.2vw,26px);font-weight:600;color:var(--text);margin-bottom:20px}.role b{color:var(--accent);font-weight:600}.lede{max-width:660px;color:var(--text);font-size:17px;margin-bottom:14px}.sub{max-width:660px;color:var(--dim);font-size:15px;margin-bottom:30px}.stats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:32px}.stat{font-family:var(--mono);font-size:12.5px;color:var(--text);border:1px solid var(--line);border-radius:999px;padding:6px 14px;background:#0e162273}.stat b{color:var(--accent);font-weight:600}.cta-row{display:flex;flex-wrap:wrap;gap:12px}.btn{font-family:var(--mono);font-size:13.5px;font-weight:500;padding:12px 20px;border-radius:8px;transition:.22s;display:inline-flex;gap:9px;align-items:center}.btn-primary{background:var(--accent);color:#04130f;font-weight:600}.btn-primary:hover{box-shadow:0 0 26px -4px var(--glow);transform:translateY(-2px)}.btn-ghost{border:1px solid var(--line-strong);color:var(--text)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}section{padding:54px 0;scroll-margin-top:70px}.label{font-family:var(--mono);font-size:13px;color:var(--accent);display:flex;align-items:center;gap:10px;margin-bottom:26px;letter-spacing:.5px}.label:before{content:"//";color:var(--dim)}.label .idx{color:var(--dim);margin-left:auto;font-size:12px}.about p{max-width:760px;font-size:17px;color:var(--text);margin-bottom:14px}.about p .accent{color:var(--accent)}.stack-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.stack-card{border:1px solid var(--line);border-radius:12px;padding:18px 18px 16px;background:linear-gradient(180deg,var(--panel),var(--bg-2))}.stack-card h4{font-family:var(--mono);font-size:12px;color:var(--dim);font-weight:500;text-transform:uppercase;letter-spacing:1px;margin-bottom:11px}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{font-family:var(--mono);font-size:12px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);padding:4px 10px;border-radius:6px}.projects{display:grid;gap:16px}.proj{display:block;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--panel),var(--bg-2));padding:26px 26px 22px;transition:.25s;position:relative;overflow:hidden}.proj:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--accent);opacity:0;transition:.25s}.proj:hover{transform:translateY(-4px);border-color:var(--line-strong);box-shadow:0 18px 40px -24px #000000e6,0 0 0 1px #4fe3c11f}.proj:hover:before{opacity:1}.proj-top{display:flex;align-items:baseline;gap:14px;margin-bottom:6px;flex-wrap:wrap}.proj-num{font-family:var(--mono);font-size:13px;color:var(--accent);font-weight:600}.proj-title{font-size:20px;font-weight:600;color:var(--bright)}.proj-role{font-family:var(--mono);font-size:11.5px;color:var(--accent-2);margin-left:auto;border:1px solid var(--line);padding:3px 9px;border-radius:999px;white-space:nowrap}.proj p{color:var(--text);font-size:15px;margin:8px 0 14px;max-width:820px}.proj .chips .chip{font-size:11.5px;padding:3px 9px}.proj-open{display:inline-block;margin-top:14px;font-size:12px;color:var(--accent);opacity:0;transform:translate(-6px);transition:.25s}a.proj:hover .proj-open{opacity:1;transform:none}.featured-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:760px){.featured-grid{grid-template-columns:1fr}}.timeline{position:relative;margin-left:6px}.tl-item{position:relative;padding:0 0 26px 28px;border-left:1px solid var(--line-strong)}.tl-item:last-child{border-left-color:transparent;padding-bottom:0}.tl-item:before{content:"";position:absolute;left:-5px;top:4px;width:9px;height:9px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);box-shadow:0 0 0 3px #4fe3c11f}.tl-role{font-weight:600;color:var(--bright);font-size:16px}.tl-co{color:var(--text);font-size:14.5px}.tl-co .at{color:var(--accent)}.tl-date{font-family:var(--mono);font-size:12px;color:var(--dim);margin-top:2px}.testimonial-intro{color:var(--text);font-size:16px;max-width:660px;margin-bottom:28px}.testimonial-proof{margin-bottom:32px}.testimonial-proof img{display:block;width:100%;max-width:100%;border:1px solid var(--line);border-radius:14px}.testimonial-marquee{border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--panel),var(--bg-2));padding:24px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}.testimonial-track{display:flex;align-items:center;gap:20px;width:max-content;animation:testimonial-scroll 46s linear infinite}.testimonial-marquee:hover .testimonial-track{animation-play-state:paused}.testimonial-slide{flex:0 0 auto;width:min(480px,88vw);margin:0}.testimonial-slide img{width:100%;display:block;border-radius:10px;border:1px solid var(--line)}@keyframes testimonial-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@media(prefers-reduced-motion:reduce){.testimonial-track{animation:none}}.contact{border:1px solid var(--line);border-radius:16px;padding:40px 34px;background:linear-gradient(180deg,var(--panel),var(--bg-2));text-align:center}.contact h2{font-family:var(--mono);font-size:clamp(24px,4vw,34px);color:var(--bright);margin-bottom:12px}.contact p{color:var(--dim);max-width:520px;margin:0 auto 26px}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}footer{padding:34px 0 50px;text-align:center;color:var(--dim);font-family:var(--mono);font-size:12px}footer .langs{margin-top:6px;color:var(--line-strong)}.home-scene{scroll-margin-top:70px}.journey{position:relative}.scene-canvas{display:none}.journey-head{padding-top:54px;padding-bottom:8px}.journey-hint{font-size:11.5px;color:var(--dim);letter-spacing:2px;text-transform:uppercase;display:none}.portal-cards{display:grid;gap:16px;padding-bottom:54px}.portal-card{display:block;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--panel),var(--bg-2));padding:26px 26px 24px}.portal-role{font-size:12px;color:var(--accent-2);margin:2px 0 10px}.portal-desc{color:var(--text);font-size:15px;margin-bottom:14px;max-width:720px}.portal-card .chips{margin-bottom:18px}.portal-link{font-size:12.5px;padding:10px 16px}.scene-active .journey{height:100vh;overflow:hidden}.scene-active .scene-canvas{display:block;position:absolute;inset:0;width:100%;height:100%}.scene-active .journey-head{position:absolute;top:0;left:0;right:0;z-index:3;padding-top:34px}.scene-active .journey-hint{display:block;margin-top:2px}.scene-active .portal-cards{display:block;position:absolute;inset:0;z-index:2;padding:0;pointer-events:none}.scene-active .portal-card{position:absolute;right:max(5vw,40px);top:50%;transform:translateY(-50%);width:min(420px,38vw);pointer-events:auto;background:linear-gradient(180deg,#0e1622eb,#0b111beb);backdrop-filter:blur(6px);border-color:var(--line-strong);box-shadow:0 30px 80px -30px #000000f2}.scene-mobile .scene-canvas{display:block;position:absolute;inset:0;width:100%;height:100%;opacity:.45}.scene-mobile .portal-cards{position:relative;z-index:2}.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}.reveal.in{opacity:1;transform:none}.hero .reveal{transition-delay:var(--d,0s)}
