@font-face{font-family:Outfit Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/outfit-latin-ext-wght-normal.DdQaqQDo.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Outfit Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/outfit-latin-wght-normal.Bc-8i84L.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono.woff2)format("woff2-variations");font-weight:100 800;font-style:normal;font-display:swap}:root{--bg:#060a08;--panel:#0f18139e;--panel-solid:#0b130f;--line:#34d39924;--line-strong:#34d3996b;--border:#1d2a23;--text:#e9e7e2;--secondary:#a9aba2;--muted:#888b82;--accent:#34d399;--accent-dim:#34d399b8;--accent-ink:#04241a;--node-idle:#2c3b33;--radius:10px;--rail-w:0px;--rail-pad:clamp(84px, 11vh, 128px);--font-display:"Outfit Variable", "Outfit", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace}@media (width>=768px){:root{--rail-w:88px}}@media (width>=1240px){:root{--rail-w:224px}}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{color:var(--text);font-family:var(--font-display);background:radial-gradient(80% 50% at 80% 0%, #34d3990d, transparent 70%), radial-gradient(60% 45% at 10% 100%, #34d3990a, transparent 70%), var(--bg);margin:0;font-size:16.5px;line-height:1.6;overflow-x:clip}::selection{background:var(--accent);color:var(--accent-ink)}.mono{font-family:var(--font-mono)}h1,h2,h3{letter-spacing:-.02em;margin:0;font-weight:640;line-height:1.1}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.pipeline-main{z-index:2;margin-left:var(--rail-w);max-width:none;padding:0;position:relative}.wrap{width:100%;max-width:1060px;margin-inline:auto;padding-inline:clamp(20px,4vw,48px)}.wrap--narrow{max-width:860px}section{padding-block:clamp(88px,11vw,152px)}.rail{width:var(--rail-w);z-index:6;pointer-events:none;display:none;position:fixed;inset:0 auto 0 0}@media (width>=768px){.rail{display:block}}.rail canvas{z-index:1;width:100%;height:100%;position:absolute;inset:0}.rail-track{left:43px;top:calc(var(--rail-pad) + 19px);bottom:calc(var(--rail-pad) + 19px);z-index:0;background:#34d3991f;width:2px;position:absolute;overflow:hidden}.rail-fill{width:100%;height:var(--fill,0%);background:linear-gradient(to bottom, #34d39973, var(--accent));transition:height .7s cubic-bezier(.22,1,.36,1);position:absolute;top:0;left:0;box-shadow:0 0 10px #34d39966}.rail-stages{inset:var(--rail-pad) 0;z-index:2;flex-direction:column;justify-content:space-between;margin:0;padding:0;list-style:none;display:flex;position:absolute}.rail-stage{align-items:center;gap:14px;padding-left:25px;display:flex}.stage-node{flex:none;width:38px;height:38px;position:relative}.stage-node svg{width:100%;height:100%;display:block}.stage-node:after{content:"";border:1.5px solid var(--accent);opacity:0;pointer-events:none;border-radius:50%;position:absolute;inset:0}.node-ring{fill:var(--bg);stroke:var(--node-idle);stroke-width:1.6px;transition:stroke .4s}.node-core{fill:var(--node-idle);transition:fill .3s,opacity .3s}.node-arc{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linecap:round;stroke-dasharray:30 70;opacity:0;transform-origin:50%}.node-check{fill:none;stroke:var(--accent);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100px}[data-stage-ui].is-running .node-arc{opacity:1}[data-stage-ui].is-running .node-core{fill:var(--accent)}[data-stage-ui].is-passed .node-ring{stroke:var(--accent)}[data-stage-ui].is-passed .node-core{opacity:0}[data-stage-ui].is-passed .node-check{stroke-dashoffset:0;transition:stroke-dashoffset .48s cubic-bezier(.22,1,.36,1) 80ms}.stage-label{letter-spacing:.04em;color:var(--muted);white-space:nowrap;font-size:11px;transition:color .3s;display:none}@media (width>=1240px){.stage-label{display:block}}.rail-stage.is-running .stage-label{color:var(--text)}.rail-stage.is-passed .stage-label{color:var(--accent-dim)}@media (prefers-reduced-motion:no-preference){[data-stage-ui].is-running .node-arc{animation:.85s linear infinite arc-spin}[data-stage-ui].is-running .node-core{animation:.85s ease-in-out infinite core-pulse}[data-stage-ui].is-passed .stage-node:after{animation:.7s ease-out forwards node-pop}}@keyframes arc-spin{to{transform:rotate(360deg)}}@keyframes core-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes node-pop{0%{opacity:.85;transform:scale(.65)}to{opacity:0;transform:scale(1.9)}}@media (prefers-reduced-motion:reduce){.node-check,.rail-fill,.strip-fill,.node-ring,.node-core,.stage-label,.strip-dot,.chip--tick:before,.job-node,.offer-index,.contact-panel{transition:none}}.strip{z-index:18;-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#060a08d9;align-items:center;height:36px;padding-inline:16px;display:none;position:fixed;top:0;left:0;right:0}@media (width<=767px){.strip{display:flex}}.strip-track{background:#34d39924;flex:1;height:2px;position:relative}.strip-fill{width:var(--fill,0%);background:var(--accent);transition:width .7s cubic-bezier(.22,1,.36,1);position:absolute;inset:0 auto 0 0;box-shadow:0 0 8px #34d39980}.strip-dots{justify-content:space-between;align-items:center;margin:0;padding:0;list-style:none;display:flex;position:absolute;inset:-4px 0}.strip-dot{border:1.5px solid var(--node-idle);background:var(--bg);border-radius:50%;width:9px;height:9px;transition:border-color .3s,background .3s}.strip-dot.is-running{border-color:var(--accent)}.strip-dot.is-passed{border-color:var(--accent);background:var(--accent)}@media (prefers-reduced-motion:no-preference){.strip-dot.is-running{animation:.85s ease-in-out infinite core-pulse}}.status-chip{z-index:20;letter-spacing:.03em;color:var(--secondary);border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);background:#080e0bd1;border-radius:999px;align-items:center;gap:8px;padding:7px 13px;font-size:11px;display:flex;position:fixed;top:16px;right:16px}.chip-dot{background:var(--accent);border-radius:50%;flex:none;width:7px;height:7px}@media (prefers-reduced-motion:no-preference){.chip-dot{animation:1.1s ease-in-out infinite core-pulse}}.chip--deployed{color:var(--accent);border-color:var(--line-strong)}.chip--deployed .chip-dot{animation:none;box-shadow:0 0 8px #34d399b3}.pipeline-scene{z-index:1;pointer-events:none;opacity:.66;mix-blend-mode:screen;width:100%;height:100%;display:block;position:fixed;inset:0}@media (width>=768px){.pipeline-scene{mask-image:linear-gradient(90deg,#0000 0% 57%,#0000003d 68%,#000 84% 100%)}}@media (width<=767px){.pipeline-scene{opacity:.2;mask-image:linear-gradient(#000 0% 34%,#0000003d 56%,#0000 78%)}.status-chip{padding:6px 11px;font-size:10px;top:46px;right:12px}}.sec-tag{letter-spacing:.08em;color:var(--accent);margin:0 0 14px;font-size:12px}[data-stage].passed .sec-tag:after{content:" / passed";color:var(--accent-dim)}.sec-head{margin-bottom:clamp(36px,5vw,60px)}.sec-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.sec-row h2,.sec-head h2{font-size:clamp(30px,4vw,46px)}.sec-note{color:var(--secondary);font-size:12px}.sec-intro{max-width:56ch;color:var(--secondary);margin:16px 0 0;font-size:17px}.pipe-sep{background:linear-gradient(90deg, transparent, var(--line-strong), transparent);max-width:min(680px,100% - 80px);height:1px;margin-inline:auto;position:relative}.pipe-sep:after{content:"";border:1.5px solid var(--accent-dim);background:var(--bg);border-radius:50%;width:7px;height:7px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.btn{height:50px;font-family:var(--font-display);white-space:nowrap;border-radius:var(--radius);border:1px solid #0000;justify-content:center;align-items:center;padding:0 30px;font-size:15px;font-weight:600;text-decoration:none;transition:filter .15s,border-color .15s,color .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--accent);color:var(--accent-ink)}.btn--primary:hover{filter:brightness(1.08)}.btn--primary:focus-visible{outline-color:var(--text)}.btn--ghost{border-color:var(--line-strong);color:var(--text)}.btn--ghost:hover{border-color:var(--accent);color:var(--accent)}.hero{align-items:center;min-height:100dvh;padding-block:clamp(56px,9vh,110px);display:flex;position:relative;overflow:hidden}.hero h1{letter-spacing:-.03em;max-width:14ch;font-size:clamp(46px,7.2vw,100px);font-weight:650;line-height:1}.accent-dot{color:var(--accent)}.hero-role{color:var(--secondary);margin:24px 0 0;font-size:13px}.hero-positioning{max-width:48ch;margin:18px 0 0;font-size:clamp(17px,1.7vw,21px);line-height:1.55}.hero-ctas{flex-wrap:wrap;gap:14px;margin-top:38px;display:flex}.offers{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.offer{border:1px solid var(--border);background:var(--panel);border-radius:var(--radius);padding:26px 28px;transition:border-color .25s;position:relative}.offer:hover{border-color:var(--line-strong)}.offer-index{letter-spacing:.06em;color:var(--muted);margin-bottom:14px;font-size:12px;transition:color .4s;display:block}#services.passed .offer-index{color:var(--accent)}.offer h3{font-size:18.5px}.offer p{color:var(--secondary);margin:10px 0 0;font-size:15px;line-height:1.6}.scope-note{max-width:62ch;color:var(--secondary);margin:30px 0 0;font-size:12.5px}.chips{flex-wrap:wrap;gap:9px;margin:16px 0 0;padding:0;list-style:none;display:flex}.chip{font-family:var(--font-mono);color:var(--text);border:1px solid var(--border);border-radius:999px;align-items:center;gap:7px;padding:5px 12px;font-size:12px;line-height:1.5;transition:border-color .2s;display:inline-flex}.chip:hover{border-color:var(--accent)}.chip--tick:before{content:"";border-left:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);transform-origin:50%;width:8px;height:5px;transition:transform .3s cubic-bezier(.34,1.56,.64,1);transition-delay:calc(var(--i,0) * 35ms);flex:none;transform:rotate(-45deg)scale(0)}[data-stage].passed .chip--tick:before{transform:rotate(-45deg)scale(1)}.skills-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.skill-card{border:1px solid var(--border);background:var(--panel);border-radius:var(--radius);padding:20px 22px}.skill-card h3{letter-spacing:.05em;color:var(--secondary);font-size:12px;font-weight:600}.skill-card .chips{margin-top:12px}.jobs{padding-left:36px;position:relative}.jobs:before{content:"";background:linear-gradient(#34d3994d 0%,#34d3991f 85%,#0000 100%);width:2px;position:absolute;top:8px;bottom:0;left:5px}.job{position:relative}.job+.job{margin-top:68px}.job-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex;position:relative}.job-head h3{font-size:22px}.job-meta{color:var(--secondary);font-size:12px}.job-node{border:1.5px solid var(--node-idle);background:var(--bg);border-radius:50%;width:11px;height:11px;transition:border-color .4s,background .4s,box-shadow .4s;position:absolute;top:7px;left:-36px}.job-node--company{width:13px;height:13px;top:6px;left:-37px}#experience.passed .job-node{border-color:var(--accent);background:#34d3994d}#experience.passed .job-node--company{background:#34d39973;box-shadow:0 0 10px #34d39959}.job-roles{gap:30px;margin-top:26px;display:grid}.job-role{position:relative}.job-role .job-node{width:9px;height:9px;top:6px;left:-35px}.job-role-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.job-role-head strong{font-size:16.5px;font-weight:600}.job-dates{color:var(--secondary);font-size:12px}.job-summary{max-width:62ch;color:var(--secondary);margin:6px 0 0;font-size:15px;line-height:1.6}.shipped-split{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:clamp(36px,5vw,72px);display:grid}.shipped-copy h3{font-size:clamp(26px,3vw,34px)}.shipped-tagline{color:var(--secondary);margin:12px 0 0;font-size:16.5px}.shipped-desc{max-width:52ch;margin:18px 0 0;font-size:15.5px;line-height:1.65}.shipped-stack{margin:22px 0 28px}.shipped-shots{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.shot{margin:0}.shot:nth-child(2){transform:translateY(26px)}.shot:nth-child(3){transform:translateY(52px)}.shot img{aspect-ratio:1320/2868;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-solid);width:100%;height:auto;display:block}#contact{padding-bottom:170px}.contact-panel{text-align:center;border:1px solid var(--border);background:var(--panel);border-radius:16px;max-width:720px;margin-inline:auto;padding:clamp(46px,7vw,80px) clamp(22px,5vw,64px);transition:border-color .6s,box-shadow .6s;position:relative}body.deployed .contact-panel{border-color:var(--line-strong);box-shadow:0 0 50px #34d39917}.deploy-glyph{width:46px;height:46px;margin:0 auto 22px;display:block}.stage-node--deploy{width:46px;height:46px;display:block}.burst{border:1.5px solid var(--accent);opacity:0;pointer-events:none;border-radius:50%;position:absolute;inset:0}@media (prefers-reduced-motion:no-preference){body.deployed .stage-node--deploy .burst{animation:1.15s cubic-bezier(.22,1,.36,1) forwards deploy-burst}body.deployed .stage-node--deploy .burst--late{animation-delay:.22s}}@keyframes deploy-burst{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(3.4)}}.contact-panel .sec-tag{margin-bottom:12px}.contact-panel h2{font-size:clamp(30px,4vw,46px)}.contact-line{max-width:46ch;color:var(--secondary);margin:16px auto 0}.contact-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:32px;display:flex}.contact-links{flex-wrap:wrap;justify-content:center;align-items:center;gap:26px;margin-top:26px;display:flex}.contact-link{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:4px;font-size:13.5px;transition:color .15s,text-decoration-color .15s}.contact-link:hover{color:var(--accent);text-decoration-color:var(--accent)}.contact-footer{color:var(--muted);margin:48px 0 0;font-size:12px}@media (width<=1023px){.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.shipped-split{grid-template-columns:minmax(0,1fr)}.shipped-shots{max-width:720px;padding-bottom:52px}}@media (width<=767px){.pipeline-main{margin-left:0}.hero{padding-top:76px}.offers{grid-template-columns:minmax(0,1fr)}.offer{padding:22px}.skills-grid{grid-template-columns:minmax(0,1fr)}.jobs{padding-left:28px}.job-node{left:-28px}.job-node--company{left:-29px}.job-role .job-node{left:-27px}.pipe-sep{max-width:calc(100% - 48px)}}@media (width<=639px){.shipped-shots{grid-template-columns:minmax(0,1fr);justify-items:center;padding-bottom:0}.shot{width:100%;max-width:280px}.shot:nth-child(2),.shot:nth-child(3){transform:none}}
