:root{--bg:#070b10;--bg-2:#0a1017;--panel:#0d141c;--line:#1a2632;--line-2:#273849;--text:#d5dee8;--muted:#7d8e9f;--dim:#4b5b6c;--accent:#3ee0c1;--accent-rgb:62, 224, 193;--amber:#ffb547;--blue:#6cb6ff;--violet:#b99cff;--font-mono:var(--font-jetbrains), "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-display:var(--font-chakra), "Chakra Petch", var(--font-jetbrains), ui-monospace, monospace;--header-h:64px;--radius:3px;--sweep:6s}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 8px);-webkit-text-size-adjust:100%}body{background-color:var(--bg);background-image:radial-gradient(ellipse 80% 60% at 70% 0%, rgba(var(--accent-rgb), .07), transparent 60%), linear-gradient(rgba(var(--accent-rgb), .03) 1px, transparent 1px), linear-gradient(90deg, rgba(var(--accent-rgb), .03) 1px, transparent 1px);min-height:100vh;color:var(--text);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;background-size:auto,48px 48px,48px 48px;margin:0;font-size:15px;line-height:1.7;overflow-x:hidden}body:after{content:"";pointer-events:none;z-index:100;background:repeating-linear-gradient(0deg,#ffffff03 0 1px,#0000 1px 3px);position:fixed;inset:0}::selection{background:rgba(var(--accent-rgb), .3);color:#fff}a{color:inherit}img{max-width:100%}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:700;line-height:1.05}p{margin:0}ul,ol{margin:0;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.wrap{width:100%;max-width:1180px;margin-inline:auto;padding-inline:24px}.accent{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:12px}.skip-link{z-index:200;background:var(--accent);color:var(--bg);text-transform:uppercase;letter-spacing:.12em;padding:10px 16px;font-size:12px;font-weight:700;text-decoration:none;position:absolute;top:-60px;left:16px}.skip-link:focus{top:12px}.site-header{z-index:50;height:var(--header-h);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#070b10c7;position:sticky;top:0}.site-header .wrap{max-width:none;padding-inline:clamp(18px,3vw,48px)}.header-inner{align-items:center;gap:clamp(16px,3vw,40px);height:100%;display:flex}.brand{font-family:var(--font-display);letter-spacing:.08em;align-items:center;gap:10px;font-size:17px;font-weight:700;text-decoration:none;display:inline-flex}.brand-ext{color:var(--muted)}.brand-text{flex-direction:column;gap:3px;line-height:1;display:flex}.brand-tag{font-family:var(--font-mono);letter-spacing:.24em;text-transform:uppercase;color:var(--muted);font-size:9px;font-weight:400}.brand-dot{background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 3px rgba(var(--accent-rgb), .15), 0 0 12px rgba(var(--accent-rgb), .8);border-radius:50%;animation:2.4s ease-in-out infinite pulse}.nav{gap:clamp(0px,.6vw,8px);margin-left:auto;display:flex}.nav a{letter-spacing:clamp(.06em,.16vw,.14em);text-transform:uppercase;white-space:nowrap;color:var(--muted);align-items:baseline;gap:6px;padding:8px clamp(7px,.8vw,12px);font-size:12px;text-decoration:none;transition:color .2s;display:inline-flex;position:relative}.nav-num{color:var(--dim);font-size:10px;transition:color .2s}.nav a:hover,.nav a[aria-current=true]{color:var(--text)}.nav a:hover .nav-num,.nav a[aria-current=true] .nav-num{color:var(--accent)}.nav a[aria-current=true]:after{content:"";background:var(--accent);height:1px;box-shadow:0 0 8px var(--accent);position:absolute;bottom:2px;left:10px;right:10px}.header-actions{align-items:center;gap:10px;display:flex}.lang-toggle{font:inherit;letter-spacing:.12em;color:var(--dim);border:1px solid var(--line-2);border-radius:var(--radius);cursor:pointer;background:0 0;padding:6px 10px;font-size:12px;transition:border-color .2s}.lang-toggle:hover{border-color:var(--accent)}.lang-toggle .sep{margin:0 6px}.lang-toggle .is-active{color:var(--accent);font-weight:700}.menu-toggle{border:1px solid var(--line-2);border-radius:var(--radius);cursor:pointer;background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:38px;height:34px;padding:0;display:none}.menu-toggle span{background:var(--text);width:16px;height:1.5px;transition:transform .25s;display:block}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.75px)rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.75px)rotate(-45deg)}.kicker{letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-size:12px}.cmd{color:var(--text);margin-top:14px;font-size:14px}.prompt{color:var(--accent);margin-right:6px}.cursor{vertical-align:text-bottom;background:var(--accent);width:.6em;height:1.1em;margin-left:3px;animation:1.05s step-end infinite blink;display:inline-block}.btn{font:inherit;letter-spacing:.16em;text-transform:uppercase;color:var(--text);border:1px solid var(--line-2);border-radius:var(--radius);cursor:pointer;background:0 0;align-items:center;gap:10px;padding:13px 22px;font-size:12px;font-weight:700;text-decoration:none;transition:border-color .2s,color .2s,background .2s,box-shadow .2s,transform .2s;display:inline-flex}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--bg)}.btn-primary:hover{color:var(--bg);box-shadow:0 0 0 4px rgba(var(--accent-rgb), .15), 0 0 28px rgba(var(--accent-rgb), .45);transform:translateY(-1px)}.cta{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.panel{background:linear-gradient(180deg, #ffffff06, #fff0 60%), var(--panel);border:1px solid var(--line);border-radius:var(--radius);transition:border-color .25s,transform .25s,box-shadow .25s;position:relative}.panel:hover{border-color:rgba(var(--accent-rgb), .45);box-shadow:0 12px 40px -20px rgba(var(--accent-rgb), .35)}.panel-bar{border-bottom:1px solid var(--line);color:var(--muted);align-items:center;gap:12px;padding:10px 14px;font-size:11px;display:flex}.dots{gap:6px;display:inline-flex}.dots i{background:var(--line-2);border-radius:50%;width:8px;height:8px}.panel:hover .dots i:first-child{background:#ff5f57}.panel:hover .dots i:nth-child(2){background:#febc2e}.panel:hover .dots i:nth-child(3){background:#28c840}.tags{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.tags li{color:var(--text);border:1px solid var(--line-2);border-radius:var(--radius);background:#ffffff04;padding:4px 10px;font-size:12px;transition:border-color .2s,color .2s}.tags li:hover{border-color:var(--accent);color:var(--accent)}.hero{position:relative}.hero-grid{min-height:calc(100vh - var(--header-h));grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center;gap:64px;padding-block:72px;display:grid}.cmd-out{color:var(--muted);margin-top:2px;font-size:14px}.typed{white-space:nowrap;vertical-align:bottom;width:6ch;animation:.9s steps(6,end) .3s both type;display:inline-block;overflow:hidden}.cmd-out{animation:.4s 1.4s both fade-in}.hero-title{text-transform:uppercase;letter-spacing:.01em;margin-top:28px;font-size:clamp(2.6rem,6.2vw,4.6rem)}.hero-title .accent{text-shadow:0 0 32px rgba(var(--accent-rgb), .35)}.lead{max-width:54ch;color:var(--muted);margin-top:24px;font-size:16px}.focus{flex-wrap:wrap;gap:10px 22px;margin-top:28px;list-style:none;display:flex}.focus li{letter-spacing:.16em;text-transform:uppercase;font-size:12px;font-weight:700}.focus li:before{content:"▸ ";color:var(--accent)}.hero-visual{flex-direction:column;align-items:center;gap:22px;display:flex}.hud{--c:rgba(var(--accent-rgb), .6);background:linear-gradient(var(--c), var(--c)) top left / 16px 1px no-repeat, linear-gradient(var(--c), var(--c)) top left / 1px 16px no-repeat, linear-gradient(var(--c), var(--c)) top right / 16px 1px no-repeat, linear-gradient(var(--c), var(--c)) top right / 1px 16px no-repeat, linear-gradient(var(--c), var(--c)) bottom left / 16px 1px no-repeat, linear-gradient(var(--c), var(--c)) bottom left / 1px 16px no-repeat, linear-gradient(var(--c), var(--c)) bottom right / 16px 1px no-repeat, linear-gradient(var(--c), var(--c)) bottom right / 1px 16px no-repeat;width:100%;max-width:460px;padding:34px 34px 16px}.radar{aspect-ratio:1;border:1px solid rgba(var(--accent-rgb), .4);background:linear-gradient(to right, transparent calc(50% - .5px), rgba(var(--accent-rgb), .16) calc(50% - .5px) calc(50% + .5px), transparent calc(50% + .5px)), linear-gradient(to bottom, transparent calc(50% - .5px), rgba(var(--accent-rgb), .16) calc(50% - .5px) calc(50% + .5px), transparent calc(50% + .5px)), repeating-radial-gradient(circle closest-side, transparent 0 calc(25% - 1px), rgba(var(--accent-rgb), .16) calc(25% - 1px) 25%), radial-gradient(circle closest-side, rgba(var(--accent-rgb), .09), rgba(var(--accent-rgb), .02) 70%, transparent);width:100%;box-shadow:inset 0 0 60px rgba(var(--accent-rgb), .08), 0 0 80px -30px rgba(var(--accent-rgb), .4);border-radius:50%;position:relative}.radar:after{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 10px var(--accent);border-radius:50%;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%}.radar-scope{border-radius:50%;position:absolute;inset:0;overflow:hidden}.radar-sweep{background:conic-gradient(from 0deg, rgba(var(--accent-rgb), 0) 0deg, rgba(var(--accent-rgb), 0) 280deg, rgba(var(--accent-rgb), .22) 356deg, rgba(var(--accent-rgb), .75) 360deg);animation:sweep var(--sweep) linear infinite;border-radius:50%;position:absolute;inset:0}.bearing{letter-spacing:.12em;color:var(--dim);font-size:10px;position:absolute}.b-n{top:-22px;left:50%;transform:translate(-50%)}.b-s{bottom:-22px;left:50%;transform:translate(-50%)}.b-e{top:50%;right:-30px;transform:translateY(-50%)}.b-w{top:50%;left:-30px;transform:translateY(-50%)}.blip{letter-spacing:.14em;color:var(--accent);white-space:nowrap;opacity:.3;animation:blip var(--sweep) linear infinite;animation-delay:var(--d,0s);align-items:center;gap:7px;font-size:10px;font-weight:700;display:flex;position:absolute;transform:translate(-4px,-50%)}.blip.l{flex-direction:row-reverse;transform:translate(calc(4px - 100%),-50%)}.blip i{background:var(--accent);width:8px;height:8px;box-shadow:0 0 10px var(--accent);border-radius:50%;flex:none}.radar-meta{letter-spacing:.16em;color:var(--dim);justify-content:space-between;margin-top:30px;font-size:10px;display:flex}.status{border:1px solid var(--line);border-radius:var(--radius);background:#0d141cb3;width:100%;max-width:460px;margin:0;padding:14px 18px;font-size:12px}.status>div{gap:16px;padding:4px 0;display:flex}.status dt{width:64px;color:var(--dim);letter-spacing:.14em;flex:none}.status dd{align-items:center;gap:8px;margin:0;display:flex}.live{background:#3ddc84;border-radius:50%;width:7px;height:7px;animation:2s ease-in-out infinite pulse;box-shadow:0 0 8px #3ddc84}.section{border-top:1px solid var(--line);padding-block:120px;position:relative}.section-head{margin-bottom:56px;position:relative}.section-head:after{content:attr(data-num);font-family:var(--font-display);color:#0000;-webkit-text-stroke:1px rgba(var(--accent-rgb), .12);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(6rem,14vw,11rem);font-weight:700;line-height:1;position:absolute;top:-30px;right:0}.section-head h2{text-transform:uppercase;margin-top:18px;font-size:clamp(2rem,4.6vw,3.4rem)}.section-intro{max-width:60ch;color:var(--muted);margin-top:18px}.about-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:56px;display:grid}.about-text{color:var(--muted);gap:22px;font-size:16px;display:grid}.workspace{margin:0;overflow:hidden}.workspace img{width:100%;height:auto;display:block}.about-text strong{color:var(--text);font-weight:700}.pillars{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px;display:grid}.pillar{flex-direction:column;display:flex;overflow:hidden}.pillar:hover{transform:translateY(-3px)}.pillar-body{padding:20px 22px 24px}.pillar-num{color:var(--accent);letter-spacing:.1em;font-size:12px}.pillar h3{text-transform:uppercase;letter-spacing:.02em;margin-top:12px;font-size:19px}.pillar p{color:var(--muted);margin-top:10px;font-size:13.5px}.instrument{border-bottom:1px solid var(--line);background:radial-gradient(ellipse at 50% 55%, rgba(var(--accent-rgb), .09), transparent 70%), linear-gradient(rgba(var(--accent-rgb), .045) 1px, transparent 1px) 0 0 / 14px 14px, linear-gradient(90deg, rgba(var(--accent-rgb), .045) 1px, transparent 1px) 0 0 / 14px 14px;position:relative}.instrument-bar{letter-spacing:.16em;color:var(--dim);justify-content:space-between;padding:8px 12px 0;font-size:9px;display:flex}.instrument-live{align-items:center;gap:5px;display:inline-flex}.instrument-live:before{content:"";background:var(--accent);width:5px;height:5px;box-shadow:0 0 6px var(--accent);border-radius:50%;animation:1.6s ease-in-out infinite pulse}.instrument svg{aspect-ratio:2;width:100%;height:auto;padding:4px 8px 10px;display:block;overflow:visible}.i-line{fill:none;stroke:rgba(var(--accent-rgb), .3);stroke-width:1px;vector-effect:non-scaling-stroke}.i-dashed{stroke-dasharray:3 3}.i-box{fill:rgba(var(--accent-rgb), .05);stroke:rgba(var(--accent-rgb), .55);stroke-width:1px;vector-effect:non-scaling-stroke}.i-dim{fill:rgba(var(--accent-rgb), .16)}.i-dim-strong{fill:rgba(var(--accent-rgb), .35)}.i-acc{fill:var(--accent)}.i-text{font-family:var(--font-mono);letter-spacing:.06em;fill:var(--muted);font-size:6.5px}.i-small{fill:var(--muted);opacity:.75;font-size:5.6px}.i-strong{fill:var(--text);font-weight:700}.ui-block{animation:ui-build 6s ease var(--d,0s) infinite backwards}.ui-cursor{fill:var(--text);stroke:var(--bg);stroke-width:.6px;animation:6s ease-in-out infinite ui-cursor;transform:translate(109px,62px)}.ui-click{fill:none;stroke:var(--accent);stroke-width:1px;vector-effect:non-scaling-stroke;opacity:0;transform-box:fill-box;transform-origin:50%;animation:6s ease-out infinite ui-click}@keyframes ui-build{0%,3%{opacity:0;transform:translateY(3px)}9%,86%{opacity:1;transform:none}94%,to{opacity:0}}@keyframes ui-cursor{0%,40%{opacity:0;transform:translate(152px,92px)}48%{opacity:1;transform:translate(152px,92px)}68%,88%{opacity:1;transform:translate(109px,62px)}96%,to{opacity:0;transform:translate(109px,62px)}}@keyframes ui-click{0%,69%{opacity:0;transform:scale(.4)}71%{opacity:.9}82%,to{opacity:0;transform:scale(2.4)}}.api-req{animation:4.8s linear infinite api-req;transform:translate(66px)}.api-res{fill:var(--amber);animation:4.8s linear infinite api-res;transform:translate(134px)}.api-node{animation:4.8s linear infinite api-node}.db-top{animation:4.8s linear infinite db-hit}.api-label-req{fill:var(--accent);animation:4.8s linear infinite label-req}.api-label-res{fill:var(--amber);animation:4.8s linear infinite label-res}@keyframes api-req{0%{opacity:0;transform:translate(50px)}4%{opacity:1}44%{opacity:1;transform:translate(150px)}48%,to{opacity:0;transform:translate(150px)}}@keyframes api-res{0%,50%{opacity:0;transform:translate(150px)}54%{opacity:1}94%{opacity:1;transform:translate(50px)}98%,to{opacity:0;transform:translate(50px)}}@keyframes api-node{0%,16%,30%,68%,82%,to{fill:rgba(var(--accent-rgb), .05)}22%,74%{fill:rgba(var(--accent-rgb), .45)}}@keyframes db-hit{0%,40%,62%,to{fill:rgba(var(--accent-rgb), .05)}46%{fill:rgba(var(--accent-rgb), .6)}}@keyframes label-req{0%,44%{opacity:1}50%,to{opacity:.3}}@keyframes label-res{0%,48%{opacity:.3}54%,94%{opacity:1}to{opacity:.3}}.pipe-progress{fill:none;stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke;stroke-dasharray:100;stroke-dashoffset:0;animation:5s linear infinite pipe-progress}.pipe-node{fill:var(--accent);stroke:var(--accent);stroke-width:1px;vector-effect:non-scaling-stroke}.pipe-n0{animation:5s linear infinite pipe-n0}.pipe-n1{animation:5s linear infinite pipe-n1}.pipe-n2{animation:5s linear infinite pipe-n2}.pipe-n3{animation:5s linear infinite pipe-n3}.pipe-head{fill:#fff;opacity:0;animation:5s linear infinite pipe-head}.pipe-ok{fill:#3ddc84;animation:5s linear infinite pipe-ok}@keyframes pipe-progress{0%{stroke-dashoffset:100px;opacity:1}60%,92%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}@keyframes pipe-n0{0%,92%{fill:var(--accent)}to{fill:var(--panel)}}@keyframes pipe-n1{0%,19%{fill:var(--panel)}20%,92%{fill:var(--accent)}to{fill:var(--panel)}}@keyframes pipe-n2{0%,39%{fill:var(--panel)}40%,92%{fill:var(--accent)}to{fill:var(--panel)}}@keyframes pipe-n3{0%,59%{fill:var(--panel)}60%,92%{fill:var(--accent)}to{fill:var(--panel)}}@keyframes pipe-head{0%{opacity:1;transform:translate(24px)}60%{opacity:1;transform:translate(176px)}63%,to{opacity:0;transform:translate(176px)}}@keyframes pipe-ok{0%,60%{opacity:0}64%,92%{opacity:1}to{opacity:0}}.net-pkt{opacity:0;animation:net-pkt 3s ease-in-out var(--d,0s) infinite backwards}.net-ping{fill:none;stroke:var(--accent);stroke-width:1px;vector-effect:non-scaling-stroke;opacity:0;transform-box:fill-box;transform-origin:50%;animation:net-ping 3s ease-out var(--d,0s) infinite backwards}@keyframes net-pkt{0%{opacity:0;transform:translate(100px,50px)}8%{opacity:1}60%{transform:translate(var(--tx), var(--ty));opacity:1}66%,to{transform:translate(var(--tx), var(--ty));opacity:0}}@keyframes net-ping{0%{opacity:.9;transform:scale(1)}45%,to{opacity:0;transform:scale(3.6)}}.motion-paused .instrument *,.motion-paused .instrument :before{animation:none!important}.skills{grid-template-columns:repeat(auto-fit,minmax(min(310px,100%),1fr));gap:16px;display:grid}.skill h3{text-transform:uppercase;letter-spacing:.02em;padding:22px 22px 0;font-size:18px}.skill .tags,.skill .cert-list{padding:16px 22px 24px}.cert-list{gap:8px;font-size:13px;list-style:none;display:grid}.cert-list strong{color:var(--accent);margin-right:6px}.soft{color:var(--muted);margin-top:32px;font-size:14px}.lifecycle{--cycle:7.2s;margin-bottom:16px}.lifecycle-head{flex-wrap:wrap;align-items:baseline;gap:8px 24px;padding:22px 24px 0;display:flex}.lifecycle-head h3{text-transform:uppercase;letter-spacing:.02em;font-size:18px}.lifecycle-head p{color:var(--muted);max-width:70ch;font-size:13.5px}.lifecycle-track{grid-template-columns:repeat(var(--phases), minmax(0, 1fr));gap:16px;padding:26px 24px;list-style:none;display:grid;position:relative}.phase{min-width:0;position:relative}.phase-node{z-index:1;border:2px solid var(--accent);background:var(--panel);width:14px;height:14px;animation:sdlc-node var(--cycle) linear infinite;animation-delay:calc(var(--i) * 1s);border-radius:50%;display:block;position:relative}.phase:not(:last-child):before,.phase:not(:last-child):after{content:"";height:2px;position:absolute;top:6px}.phase:not(:last-child):before{background:rgba(var(--accent-rgb), .35);width:calc(100% + 16px);left:7px}.phase:not(:last-child):after{background:linear-gradient(90deg, transparent, var(--accent));width:22px;height:4px;box-shadow:0 0 10px var(--accent);opacity:0;animation:sdlc-dash var(--cycle) linear infinite;animation-delay:calc(var(--i) * 1s);border-radius:2px;top:5px;left:7px}.phase-num{color:var(--accent);letter-spacing:.12em;margin-top:14px;font-size:11px;display:block}.phase h4{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.03em;margin:4px 0 10px;font-size:16px}.phase ul{gap:5px;list-style:none;display:grid}.phase li{color:var(--muted);padding-left:14px;font-size:12.5px;line-height:1.45;position:relative}.phase li:before{content:"▸";color:var(--accent);font-size:10px;position:absolute;top:1px;left:0}@keyframes sdlc-dash{0%{opacity:0;left:7px}2%{opacity:1}13%{opacity:1;left:calc(100% - 6px)}14%,to{opacity:0;left:calc(100% - 6px)}}@keyframes sdlc-node{0%,14%,to{background:var(--panel);box-shadow:none}1.5%{background:var(--accent);box-shadow:0 0 0 5px rgba(var(--accent-rgb), .18), 0 0 14px var(--accent)}}.motion-paused .phase:after{display:none}.project-sub{letter-spacing:.08em;color:var(--accent);font-size:12px}.explorer{overflow:hidden}.explorer-body{grid-template-columns:minmax(0,260px) minmax(0,1fr);display:grid}.explorer-list{border-right:1px solid var(--line);background:#ffffff03;flex-direction:column;padding:12px 0;display:flex}.explorer-item{font:inherit;text-align:left;color:var(--muted);cursor:pointer;background:0 0;border:0;border-left:2px solid #0000;align-items:baseline;gap:9px;padding:10px 18px;font-size:13px;transition:color .2s,background .2s,border-color .2s;display:flex}.explorer-item:hover{color:var(--text);background:rgba(var(--accent-rgb), .05)}.explorer-item.is-active{color:var(--text);background:rgba(var(--accent-rgb), .09);border-left-color:var(--accent)}.explorer-item .caret{color:var(--accent);font-size:10px}.explorer-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.explorer-detail{min-height:360px;padding:26px 30px 32px;animation:.4s both detail-in;position:relative;overflow:hidden}.explorer-detail:focus{outline:none}.explorer-detail:before{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);height:2px;animation:.85s ease-out both card-scan;position:absolute;top:0;left:0;right:0}.detail-top{justify-content:space-between;align-items:center;gap:16px;font-size:12px;display:flex}.explorer-detail h3{text-transform:uppercase;letter-spacing:.02em;margin-top:16px;font-size:clamp(1.6rem,3vw,2.1rem)}.explorer-detail .project-sub{margin-top:8px;display:block}.detail-desc{max-width:62ch;color:var(--muted);margin-top:16px;font-size:14.5px}.explorer-detail .redacted-block{max-width:62ch;margin-top:18px}.detail-note{margin-top:12px}.explorer-detail .tags{margin-top:22px}.explorer-detail .link{margin-top:20px;display:inline-block}@keyframes detail-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes card-scan{0%{opacity:.9;top:0}to{opacity:0;top:100%}}.motion-paused .explorer-detail,.motion-paused .explorer-detail:before{animation:none!important}.badge{letter-spacing:.14em;text-transform:uppercase;border-radius:var(--radius);border:1px solid;padding:3px 9px;font-size:10.5px;font-weight:700}.badge-ok{color:#3ddc84}.badge-warn{color:var(--amber)}.badge-info{color:var(--blue)}.badge-edu{color:var(--violet)}.redacted-block{gap:7px;display:grid}.redacted{border:1px solid var(--line-2);background:repeating-linear-gradient(135deg,#1f2c39 0 6px,#16212c 6px 12px);width:100%;height:10px;display:block}.link{color:var(--accent);border-bottom:1px dashed rgba(var(--accent-rgb), .5);align-self:flex-start;font-size:13px;font-weight:700;text-decoration:none}.link:hover{border-bottom-style:solid}.gitlog{max-width:900px;list-style:none;position:relative}.gitlog:before{content:"";background:linear-gradient(to bottom, var(--accent), var(--line-2) 70%, var(--line));width:2px;position:absolute;top:12px;bottom:12px;left:7px}.commit{grid-template-columns:16px minmax(0,1fr);gap:28px;padding-bottom:40px;display:grid;position:relative}.commit:last-child{padding-bottom:0}.node{z-index:1;border:2px solid var(--accent);background:var(--bg);border-radius:50%;width:16px;height:16px;margin-top:4px;position:relative}.is-head .node{background:var(--accent);box-shadow:0 0 0 5px rgba(var(--accent-rgb), .15), 0 0 16px var(--accent)}.is-root .node{border-color:var(--dim)}.commit-meta{flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:12px;display:flex}.hash{color:var(--amber)}.ref{color:var(--accent);border:1px solid rgba(var(--accent-rgb), .5);border-radius:999px;padding:1px 8px;font-weight:700}.type{border-radius:var(--radius);background:rgba(var(--accent-rgb), .1);color:var(--accent);padding:1px 7px}.type-edu{color:var(--blue);background:#6cb6ff1a}.type-cert{color:var(--violet);background:#b99cff1f}.type-init{color:var(--muted);background:#ffffff0f}.date{color:var(--muted)}.commit-badge{color:var(--amber);border-radius:var(--radius);letter-spacing:.06em;border:1px solid #ffb54780;padding:1px 8px;font-weight:700}.commit h3{text-transform:uppercase;letter-spacing:.02em;margin-top:10px;font-size:clamp(1.15rem,2.4vw,1.5rem);line-height:1.25}.commit h3 .at{color:var(--muted);font-weight:500}.commit-note{color:var(--muted);margin-top:8px;font-size:14px}.commit-body ul{gap:6px;margin-top:12px;list-style:none;display:grid}.commit-body li{color:var(--muted);padding-left:20px;font-size:14px;position:relative}.commit-body li:before{content:"+";color:#3ddc84;font-weight:700;position:absolute;left:0}.commit-body .commit-stack{gap:8px;margin-top:14px;display:flex}.commit-body .commit-stack li{color:var(--accent);border-color:rgba(var(--accent-rgb), .4);padding:3px 10px;font-size:11.5px}.commit-body .commit-stack li:before{content:none}.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:64px;display:grid}.contact-grid .lead{margin-top:0}.terminal{font-size:13px}.term-body{cursor:text;align-content:start;gap:6px;min-height:240px;padding:20px 20px 22px;display:grid}.term-out{gap:6px;max-height:260px;display:grid;overflow-y:auto}.term-input{align-items:baseline;gap:8px;margin-top:4px;display:flex}.term-input input{min-width:0;font:inherit;color:var(--text);caret-color:var(--accent);background:0 0;border:0;outline:none;flex:1}.term-shortcuts{flex-wrap:wrap;gap:8px;padding:0 20px 20px;display:flex}.term-shortcuts button{font:inherit;color:var(--muted);border:1px solid var(--line-2);border-radius:var(--radius);cursor:pointer;background:#ffffff05;padding:4px 10px;font-size:11.5px;transition:color .2s,border-color .2s}.term-shortcuts button:hover{color:var(--accent);border-color:var(--accent)}.t-line{white-space:pre-wrap;overflow-wrap:anywhere}.t-line.ok{color:#3ddc84}.term-out .t-line{animation:.25s both fade-in}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding-block:28px;font-size:12px}.footer-inner{flex-wrap:wrap;justify-content:space-between;gap:10px 24px;display:flex}.motion-toggle{z-index:60;font:inherit;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line-2);border-radius:var(--radius);cursor:pointer;background:#0d141ce6;align-items:center;gap:8px;padding:8px 12px;font-size:10.5px;transition:color .2s,border-color .2s;display:inline-flex;position:fixed;bottom:18px;right:18px}.motion-toggle:hover{color:var(--accent);border-color:var(--accent)}.motion-icon{font-size:9px}.js .reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(18px)}.js .reveal.in{opacity:1;transform:none}.motion-paused *,.motion-paused :before,.motion-paused :after{animation-play-state:paused!important}.motion-paused .typed,.motion-paused .cmd-out,.motion-paused .term-out .t-line{opacity:1!important;animation:none!important}.motion-paused .reveal{opacity:1!important;transition:none!important;transform:none!important}.motion-paused{scroll-behavior:auto}@keyframes sweep{to{transform:rotate(360deg)}}@keyframes blip{0%{opacity:1}6%{opacity:1}55%{opacity:.32}to{opacity:.3}}@keyframes blink{50%{opacity:0}}@keyframes pulse{50%{opacity:.45}}@keyframes type{0%{width:0}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (max-width:1080px){.lifecycle-track{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:28px}.phase:before,.phase:after{display:none}.pillars{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:920px){.explorer-body{grid-template-columns:minmax(0,1fr)}.explorer-list{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;padding:0;overflow-x:auto}.explorer-item{white-space:nowrap;border-bottom:2px solid #0000;border-left:0}.explorer-item.is-active{border-bottom-color:var(--accent)}.explorer-detail{min-height:0;padding:24px 22px 28px}.nav{top:var(--header-h);background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;gap:0;padding:8px 24px 16px;display:none;position:absolute;left:0;right:0;box-shadow:0 24px 40px -12px #000000b3}.nav.open{display:flex}.nav{padding-inline:clamp(18px,3vw,48px)}.nav a{padding:12px 0;font-size:13px}.nav a[aria-current=true]:after{display:none}.header-actions{margin-left:auto}.menu-toggle{display:inline-flex}.hero-grid{grid-template-columns:minmax(0,1fr);gap:48px;min-height:0;padding-block:56px 72px}.hero-visual{order:2}.about-grid{grid-template-columns:minmax(0,1fr);gap:36px}.contact-grid{grid-template-columns:minmax(0,1fr);gap:40px}}@media (max-width:560px){.lifecycle-track{grid-template-columns:minmax(0,1fr);row-gap:22px;padding-left:20px}.phase{padding-left:30px}.phase-node{position:absolute;top:2px;left:0}.phase-num{margin-top:0}.wrap{padding-inline:18px}.section{padding-block:88px}.pillars,.skills,.projects{grid-template-columns:minmax(0,1fr)}.hud{padding:30px 30px 14px}.blip{letter-spacing:.1em;font-size:8.5px}.commit{gap:18px}.motion-label{display:none}.brand{font-size:15px}}.standalone{place-items:center;min-height:100vh;padding:24px;display:grid}.standalone-box{width:100%;max-width:560px}.standalone-box .term-body{gap:10px;padding:24px}.standalone-box h1{text-transform:uppercase;margin-top:18px;font-size:clamp(2rem,6vw,3rem)}.standalone-box .lead{margin-top:12px}.standalone-box .t-line{white-space:normal}.err{color:#ff6b6b}
@font-face{font-family:Chakra Petch;font-style:normal;font-weight:500;font-display:swap;src:url(../media/cf9d54c4342bfde9-s.3h9hciz7c7ygr.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c26308a965d8ee8a-s.3k6q3yu2z6st3.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:500;font-display:swap;src:url(../media/d03928121523449c-s.2xutnr_n30v-3.woff2)format("woff2");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:Chakra Petch;font-style:normal;font-weight:500;font-display:swap;src:url(../media/1ccf8ef962b3f693-s.p.2xt4dxqx4hw9r.woff2)format("woff2");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:Chakra Petch;font-style:normal;font-weight:600;font-display:swap;src:url(../media/664b8486c44baa2d-s.0vchxt0cs-r06.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:600;font-display:swap;src:url(../media/c5ac7bd8b2d9fce6-s.3kfu5v_o8q8ol.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:600;font-display:swap;src:url(../media/8457265da2739722-s.00okbctd204vc.woff2)format("woff2");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:Chakra Petch;font-style:normal;font-weight:600;font-display:swap;src:url(../media/dc0c65e819e3bb6c-s.p.1alcwxkb6wbdk.woff2)format("woff2");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:Chakra Petch;font-style:normal;font-weight:700;font-display:swap;src:url(../media/087f4c42b279024d-s.3lkdjsxaxw2k3.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:700;font-display:swap;src:url(../media/891a32df73aa4402-s.1njr2bfrh4k2r.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9186901afaa5c996-s.0-s4mhtt1ybzm.woff2)format("woff2");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:Chakra Petch;font-style:normal;font-weight:700;font-display:swap;src:url(../media/374a88ea0960b3d4-s.p.07nelj0w2qn6k.woff2)format("woff2");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:Chakra Petch Fallback;src:local(Arial);ascent-override:96.77%;descent-override:30.05%;line-gap-override:0.0%;size-adjust:102.51%}.chakra_petch_4a36b358-module__Gd_oXa__className{font-family:Chakra Petch,Chakra Petch Fallback;font-style:normal}.chakra_petch_4a36b358-module__Gd_oXa__variable{--font-chakra:"Chakra Petch", "Chakra Petch Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1zakzi6q17d4o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.2htf8h-pf57mm.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.3skwie1wjplzh.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.3zhbgtelpa5ua.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3vf5yzuqk3fsd.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1wmoa0e_blxrz.woff2)format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(../media/04c5164763c40239-s.1zakzi6q17d4o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/26f284dcc38c84c0-s.2htf8h-pf57mm.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7e7f32a39836f228-s.3skwie1wjplzh.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/fa39153a3fc630ba-s.3zhbgtelpa5ua.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3vf5yzuqk3fsd.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/051742360c26797e-s.p.1wmoa0e_blxrz.woff2)format("woff2");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;font-style:normal;font-weight:700;font-display:swap;src:url(../media/04c5164763c40239-s.1zakzi6q17d4o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/26f284dcc38c84c0-s.2htf8h-pf57mm.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/7e7f32a39836f228-s.3skwie1wjplzh.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/fa39153a3fc630ba-s.3zhbgtelpa5ua.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3vf5yzuqk3fsd.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/051742360c26797e-s.p.1wmoa0e_blxrz.woff2)format("woff2");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 Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_d1b88f5-module__CN8ZKq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_d1b88f5-module__CN8ZKq__variable{--font-jetbrains:"JetBrains Mono", "JetBrains Mono Fallback"}
