:root{--bg: #1d1f22;--ink: #f3f1ee;--muted: #a5a7ab;--line: #383b40;--acc: #ff7a1a;--ed: #121315;--bar: #2a2d32;--edtxt: #ece9e4;--edmut: #8a8d93;--ok: #ff9a4d;--display: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--body: "Figtree", "Segoe UI", system-ui, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:dark;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}html{scroll-padding-top:env(safe-area-inset-top,0px)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.6 var(--body);-webkit-font-smoothing:antialiased}body.lock{overflow:hidden}body:before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:var(--bg);z-index:60}a{color:inherit}:focus-visible{outline:3px solid var(--acc);outline-offset:3px;border-radius:6px}.hd{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;justify-content:space-between;align-items:center;padding:calc(.9rem + env(safe-area-inset-top,0px)) clamp(1.25rem,4vw,2.5rem) .9rem}.logo{font:800 1.3rem var(--display);letter-spacing:-.01em;text-decoration:none}.burger{width:46px;height:46px;border:1px solid var(--line);background:var(--bg);border-radius:50%;cursor:pointer;display:grid;place-content:center;gap:5px;padding:0}.burger i{display:block;width:20px;height:2px;background:var(--ink);transition:transform .3s,opacity .2s}body.menu .burger i:nth-child(1){transform:translateY(7px) rotate(45deg)}body.menu .burger i:nth-child(2){opacity:0}body.menu .burger i:nth-child(3){transform:translateY(-7px) rotate(-45deg)}nav.menu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:var(--bg);display:flex;align-items:center;padding:5rem clamp(1.25rem,6vw,4rem) 2rem;visibility:hidden;opacity:0;transform:translateY(-12px);transition:opacity .3s,transform .3s,visibility 0s .3s}body.menu .menu{visibility:visible;opacity:1;transform:none;transition:opacity .3s,transform .3s}.menu ul{list-style:none;margin:0;padding:0;display:grid;gap:.2rem}.menu a{display:block;font:800 clamp(1.8rem,6vw,3.2rem)/1.2 var(--display);letter-spacing:-.02em;text-decoration:none;color:var(--muted);transition:color .2s,transform .2s}.menu a:hover,.menu a:focus-visible{color:var(--ink);transform:translate(8px)}.track{height:260vh;position:relative}.stage{position:sticky;top:0;height:100vh;height:100dvh;overflow:hidden}.intro{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;padding:5rem clamp(1.25rem,4vw,2.5rem) 3rem;transform-origin:25% 50%;will-change:transform,opacity}.intro h1{margin:0;font:800 clamp(2.6rem,10.2vw,10rem)/.95 var(--display);letter-spacing:-.045em}.intro h1 span{color:var(--acc)}.hint{position:absolute;left:clamp(1.25rem,4vw,2.5rem);bottom:calc(1.5rem + env(safe-area-inset-bottom,0px));color:var(--muted);font-weight:500;display:flex;gap:.6rem;align-items:center}.hint:after{content:"↓";animation:bob 1.4s ease-in-out infinite}@keyframes bob{50%{transform:translateY(5px)}}.app{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(1.5rem,4vw,4rem);align-content:center;align-items:center;max-width:1180px;margin:0 auto;padding:5.5rem clamp(1.25rem,4vw,2.5rem) 2rem;opacity:0;pointer-events:none;overflow:auto;will-change:transform,opacity}.app.live{pointer-events:auto}.role{margin:0 0 1rem;font:800 clamp(2rem,4.3vw,3.6rem)/1.08 var(--display);letter-spacing:-.03em;color:var(--acc);height:2.16em;overflow:hidden}.role .w{color:var(--ink)}.role ul{list-style:none;margin:0;padding:0;animation:roll 9s cubic-bezier(.65,0,.35,1) infinite}.role li{height:2.16em}@keyframes roll{0%,40%{transform:translateY(0)}50%,90%{transform:translateY(-2.16em)}to{transform:translateY(-4.32em)}}.sub{margin:0 0 1.5rem;color:var(--muted);max-width:30rem}.btns{display:flex;flex-wrap:wrap;gap:.75rem}.btn{display:inline-block;padding:.8rem 1.3rem;border-radius:10px;font-weight:600;text-decoration:none;border:1px solid var(--ink);transition:transform .2s}.btn:hover{transform:translateY(-2px)}.btn.p{background:var(--acc);border-color:var(--acc);color:#1d1f22}.ide{background:var(--ed);border-radius:14px;overflow:hidden;border:1px solid var(--line);font-family:var(--mono);font-size:.92rem;color:var(--edtxt);box-shadow:0 20px 50px -25px #0f172a80}.bar{display:flex;align-items:center;gap:.4rem;background:var(--bar);padding:.6rem .9rem;color:var(--edmut);font-size:.8rem}.bar i{width:12px;height:12px;border-radius:50%;background:#ff5f57}.bar i:nth-child(2){background:#febc2e}.bar i:nth-child(3){background:#28c840}.bar span{margin-left:.6rem}.code{display:flex;height:clamp(150px,30vh,260px)}.gut{margin:0;padding:.8rem .6rem .8rem .9rem;color:var(--edmut);text-align:right;overflow:hidden;-webkit-user-select:none;user-select:none;font:inherit;line-height:1.6}#ed{flex:1;min-width:0;resize:none;border:0;outline:0;background:transparent;color:inherit;font:inherit;line-height:1.6;padding:.8rem .9rem .8rem .4rem;white-space:pre;overflow:auto;caret-color:var(--ok);-moz-tab-size:2;tab-size:2}.ide:focus-within{border-color:var(--ok)}.st{display:flex;justify-content:space-between;background:var(--bar);padding:.4rem .9rem;color:var(--edmut);font-size:.78rem}.sec{max-width:1180px;margin:0 auto;padding:clamp(4rem,9vw,7rem) clamp(1.25rem,4vw,2.5rem);border-top:1px solid var(--line)}.sec h2{font:800 clamp(2rem,5vw,3.4rem)/1.05 var(--display);letter-spacing:-.03em;margin:0 0 2rem}.about{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(2rem,6vw,5rem);align-items:start}.about p{margin:0 0 1.2rem;max-width:36rem;font-size:1.15rem}.stats{display:grid;gap:1.75rem}.stat b{display:block;font:800 clamp(3rem,8vw,5.5rem)/1 var(--display);letter-spacing:-.04em;color:var(--acc)}.stat span{color:var(--muted)}.edu{list-style:none;margin:0;padding:0 0 0 2rem;position:relative}.edu:before{content:"";position:absolute;left:5px;top:.4rem;bottom:.4rem;width:2px;background:var(--acc);transform-origin:top;transform:scaleY(0);transition:transform 1.4s cubic-bezier(.65,0,.35,1)}.edu.in:before{transform:scaleY(1)}.edu li{position:relative;padding-bottom:2rem}.edu li:before{content:"";position:absolute;left:calc(-2rem + 0px);top:.55rem;width:12px;height:12px;border-radius:50%;background:var(--bg);border:3px solid var(--acc)}.edu h3{font:700 1.35rem var(--display);margin:0}.edu small{display:block;color:var(--muted);margin:.15rem 0 .4rem}.edu p{margin:0;max-width:34rem}.eh{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1.5rem;margin-bottom:2rem}.eh h2{margin:0}.chips{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.chips li{padding:.3rem .8rem;border:1px solid var(--line);border-radius:999px;font-size:.92rem;color:var(--muted)}.rv{opacity:0;transform:translateY(28px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d, 0s)}.rv.in{opacity:1;transform:none}.lead{margin:-1rem 0 2.5rem;color:var(--muted);max-width:36rem;font-size:1.1rem}.flow{display:grid;grid-template-columns:minmax(0,330px) 1fr;gap:clamp(1.5rem,5vw,4rem);align-items:start}.tabs{display:grid;gap:.15rem}.tab{display:flex;gap:.9rem;align-items:center;text-align:left;background:none;border:0;color:var(--muted);font:600 1.02rem var(--body);padding:.5rem .7rem;border-radius:10px;cursor:pointer;transition:color .2s,background .2s}.tab b{width:1.9rem;height:1.9rem;flex:none;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font:700 .8rem var(--mono);transition:background .25s,border-color .25s,color .25s}.tab:hover{color:var(--ink)}.tab.done b{border-color:var(--acc);color:var(--acc)}.tab[aria-selected=true]{color:var(--ink);background:var(--bar)}.tab[aria-selected=true] b{background:var(--acc);border-color:var(--acc);color:#1d1f22}.panel{background:var(--bar);border:1px solid var(--line);border-radius:16px;padding:clamp(1.25rem,4vw,2.5rem);position:sticky;top:5.5rem}.prog{height:4px;background:var(--line);border-radius:4px;overflow:hidden;margin-bottom:1.5rem}.prog i{display:block;height:100%;width:0;background:var(--acc);transition:width .5s ease}.panel .n{font:700 .9rem var(--mono);color:var(--acc)}.panel h3{font:800 clamp(1.7rem,3.6vw,2.6rem)/1.1 var(--display);letter-spacing:-.025em;margin:.3rem 0 1rem}.panel p{font-size:1.15rem;max-width:34rem;margin:0 0 1.5rem}.panel h4{margin:0 0 .6rem;font:600 .95rem var(--body);color:var(--muted)}.panel ul{list-style:none;padding:0;margin:0 0 1.75rem;display:grid;gap:.45rem}.panel li{padding-left:1.6rem;position:relative}.panel li:before{content:"✓";position:absolute;left:0;color:var(--acc);font-weight:700}.pnav{display:flex;gap:.6rem}.pnav .btn{cursor:pointer;font:600 1rem var(--body)}.pnav .btn:disabled{opacity:.35;cursor:default;transform:none}.pnav .btn:not(.p){background:none;color:var(--ink)}.swap{animation:swap .45s cubic-bezier(.2,.8,.2,1)}@keyframes swap{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@media (max-width: 820px){.flow{grid-template-columns:1fr}.tabs{display:flex;overflow-x:auto;gap:.4rem;padding-bottom:.6rem;scrollbar-width:thin}.tab{flex:none;white-space:nowrap}.panel{position:static}}@media (prefers-reduced-motion: reduce){.swap{animation:none}.prog i,.tab,.tab b{transition:none}}.logos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:1rem}.lg{position:relative;aspect-ratio:1;display:grid;place-items:center;background:var(--bar);border:1px solid var(--line);border-radius:18px;transition:transform .25s,border-color .25s;cursor:default;outline-offset:3px}.lg svg{width:46%;height:auto;transition:transform .25s}.lg svg text{font-family:Arial,Helvetica,sans-serif;font-weight:700}.lg:after{content:attr(data-n);position:absolute;left:.3rem;right:.3rem;bottom:.6rem;text-align:center;font-size:.78rem;font-weight:600;color:var(--ink);opacity:0;transform:translateY(6px);transition:opacity .25s,transform .25s}.lg:hover,.lg:focus-visible{transform:translateY(-6px);border-color:var(--acc)}.lg:hover svg,.lg:focus-visible svg{transform:translateY(-9px) scale(.92)}.lg:hover:after,.lg:focus-visible:after{opacity:1;transform:none}@media (max-width: 820px){.logos{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:.75rem}}@media (prefers-reduced-motion: reduce){.lg,.lg svg,.lg:after{transition:none}}.soft{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,6vw,5rem);align-items:start}.st-t{margin:0;font-size:1.2rem;color:var(--muted);max-width:30rem}.sk{list-style:none;margin:0;padding:0}.sk li{position:relative;padding:.9rem 0;font:800 clamp(1.5rem,3.2vw,2.2rem)/1.15 var(--display);letter-spacing:-.02em;transition:opacity .7s ease var(--d, 0s),transform .7s cubic-bezier(.2,.7,.2,1) var(--d, 0s),color .25s,padding .25s}.sk li:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--acc);transform-origin:left;transform:scaleX(0);transition:transform .9s cubic-bezier(.65,0,.35,1) var(--d, 0s)}.sk li.in:after{transform:scaleX(1)}.sk li:hover{color:var(--acc);padding-left:.6rem}@media (max-width: 820px){.soft{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.sk li,.sk li:after{transition:none}.sk li:after{transform:scaleX(1)}}.acc{color:var(--acc)}.pg{margin:0 0 1.25rem;font:700 1.35rem var(--display);letter-spacing:-.01em}.cards{list-style:none;margin:0 0 3.5rem;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}.cards>li{display:flex}.card{flex:1;display:flex;flex-direction:column;gap:.9rem;background:var(--bar);border:1px solid var(--line);border-radius:16px;padding:1.5rem;position:relative;overflow:hidden;transition:transform .25s,border-color .25s}.card:before{content:"";position:absolute;left:0;top:0;width:100%;height:3px;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .4s}.card:hover{transform:translateY(-5px);border-color:var(--acc)}.card:hover:before{transform:scaleX(1)}.card h4{margin:0;font:800 1.4rem/1.2 var(--display);letter-spacing:-.02em}.card p{margin:0;color:var(--muted);font-size:1rem}.card .chips{margin:auto 0 0;padding-top:.4rem}.card .chips li{font-size:.85rem;padding:.25rem .7rem}.go{margin-top:auto;align-self:flex-start;font-weight:600;color:var(--acc);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s}.go:hover{border-color:var(--acc)}@media (max-width: 1000px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.cards{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.card,.card:before,.go{transition:none}}.ints{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-top:2.5rem}.int{margin:0;background:var(--bar);border:1px solid var(--line);border-radius:16px;overflow:hidden}.int svg{display:block;width:100%;height:auto}.int figcaption{display:flex;justify-content:space-between;align-items:center;padding:.9rem 1.25rem;border-top:1px solid var(--line)}.int h3{margin:0;font:800 1.3rem var(--display)}.redo{background:none;border:1px solid var(--line);color:var(--ink);padding:.4rem .9rem;border-radius:999px;font:600 .9rem var(--body);cursor:pointer;transition:border-color .2s,color .2s}.redo:hover{border-color:var(--acc);color:var(--acc)}.sk-line{fill:none;stroke:var(--ink);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1}.car-o{fill:none;stroke:var(--ink);stroke-width:.7;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1}.pen,.appear{opacity:0}.sks.draw .pen{opacity:1}.sks.draw .sk-line.m{animation:sk-draw 2.77s linear forwards}.sks.draw .sk-line.sun{animation:sk-draw .55s linear 2.77s forwards}.sks.draw .sk-line.wv{animation:sk-draw 1.69s linear 3.32s forwards}.sunfill{opacity:0}.sks.draw .sunfill{animation:sk-fade .5s ease 3.3s forwards}.sks.draw .car-o{animation:sk-draw 2.6s ease-in-out forwards}.sks.draw .appear{animation:sk-fade .6s ease 2.4s forwards}.wspin{transform-box:fill-box;transform-origin:center}.sks.draw .wspin{animation:sk-spin .9s linear 2.6s infinite}.sks.draw .road{animation:sk-dash .9s linear 2.6s infinite}.sks.draw .bounce{animation:sk-bob .45s ease-in-out 2.6s infinite alternate}@keyframes sk-draw{to{stroke-dashoffset:0}}@keyframes sk-fade{to{opacity:1}}@keyframes sk-spin{to{transform:rotate(360deg)}}@keyframes sk-dash{to{stroke-dashoffset:30}}@keyframes sk-bob{to{transform:translateY(.35px)}}.static .sk-line,.static .car-o{stroke-dashoffset:0}.static .appear,.static .sunfill{opacity:1}@media (max-width: 820px){.ints{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.redo{display:none}}.next{padding:6rem clamp(1.25rem,4vw,2.5rem);border-top:1px solid var(--line);max-width:1180px;margin:0 auto}.next h2{font:800 clamp(2rem,5vw,3rem) var(--display);margin:0 0 .5rem;letter-spacing:-.02em}.next p{color:var(--muted);margin:0}@media (max-width: 820px){.app{grid-template-columns:1fr;row-gap:clamp(5.25rem,12svh,6.5rem);align-content:start;padding-top:5rem}.role{font-size:clamp(1.9rem,9vw,2.6rem);margin-bottom:.6rem}.sub{font-size:1rem;margin-bottom:1.1rem}.intro h1{font-size:clamp(2.6rem,15vw,5rem)}.code{height:clamp(150px,32svh,300px)}}@media (max-width: 820px){.about{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.about p{font-size:1.05rem}}@media (prefers-reduced-motion: reduce){.rv{opacity:1;transform:none;transition:none}.edu:before{transform:none;transition:none}.role{height:auto}.role ul{animation:none}.role li:last-child{display:none}.role li{height:auto;margin-bottom:.2rem}.hint:after{animation:none}.menu a{transition:none}}nav.menu{overflow-y:auto}footer{display:flex;justify-content:space-between;gap:1rem;padding:2rem max(5vw,1.25rem);border-top:1px solid var(--line);color:var(--muted)}footer a,.btn{color:var(--ink)}#contact p{color:var(--muted);line-height:1.65}#contact .btns{margin-top:1.5rem}.intro{justify-content:center;text-align:center;transform-origin:center;padding-inline:clamp(1rem,4vw,3rem)}.intro h1{max-width:15ch;text-wrap:balance}.hint{left:50%;transform:translate(-50%)}.burger{border-radius:12px;border:0;background:transparent}.burger img{display:block}.burger[aria-expanded=true]{outline:2px solid var(--acc)}.lg img{width:46%;height:46%;object-fit:contain;transition:transform .25s}.lg:focus:after,.lg:hover:after{opacity:1;transform:none}.lg:focus img,.lg:hover img{transform:translateY(-8px)}#sk1{background:linear-gradient(180deg,#6852ad,#e58c86 62%,#f9b97e)}#sk1 .sk-line.m{stroke:#fff0cf}#sk1 .sk-line.wv{stroke:#69efdd}.car-photo{width:100%;height:auto;aspect-ratio:320/190;object-fit:cover;display:block}.int .credit{margin:.4rem 1.25rem .8rem;color:var(--muted);font-size:.75rem}.credit a{color:inherit}#contact .btn{display:inline-flex;align-items:center;gap:.55rem}#contact .btn svg{width:1.2rem;height:1.2rem}footer{align-items:center;flex-wrap:wrap}footer p{margin:.3rem 0}footer p:first-child{color:var(--ink);font-weight:600}footer a{color:var(--acc)}.intro h1{max-width:100%;font-size:clamp(1rem,min(9.5vw,16vh),9rem)}.intro h1 span{display:block;white-space:nowrap}.eh{display:grid;justify-content:stretch;gap:1.4rem}.lg img.supplied{display:block;width:66%;height:66%;object-fit:contain}.lg img.photo-mark{-webkit-mask-image:radial-gradient(ellipse closest-side,#000 85%,transparent 100%);mask-image:radial-gradient(ellipse closest-side,#000 85%,transparent 100%)}.lg img.white-paper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.lg img.atlas-mark{filter:url(#atlas-blue)}.lg img.bat-mark{width:86%;-webkit-mask-image:radial-gradient(ellipse,#000 36%,transparent 72%);mask-image:radial-gradient(ellipse,#000 36%,transparent 72%)}#contact .btn{width:46px;height:46px;padding:0;justify-content:center;background:#171717;color:#fff;border:1px solid #eee}#contact .btn svg{width:22px;height:22px}#about .about p,#skills .lead,#skills .panel p,#interests .st-t{text-align:justify}#skills .lead,#interests .st-t{max-width:none}@media (max-width: 820px){#about .about p,#projects .card p,#skills .lead,#skills .panel p,#interests .st-t{text-align:left}}.stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(circle,rgba(243,241,238,.16) 1.2px,transparent 1.4px),radial-gradient(circle at 50% 42%,rgba(255,122,26,.1),transparent 55%);background-size:30px 30px,100% 100%;-webkit-mask-image:radial-gradient(ellipse at 50% 45%,#000 35%,transparent 90%);mask-image:radial-gradient(ellipse at 50% 45%,#000 35%,transparent 90%)}.edu-wrap{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(2rem,6vw,5rem);align-items:start}.focus{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.focus li{display:flex;align-items:center;gap:.9rem;padding:.95rem 1.15rem;background:var(--bar);border:1px solid var(--line);border-radius:12px;font:700 1.15rem var(--display);transition:opacity .7s ease var(--d, 0s),transform .7s cubic-bezier(.2,.7,.2,1) var(--d, 0s),border-color .25s}.focus li:before{content:"";flex:none;width:10px;height:10px;border-radius:50%;background:var(--acc)}.focus li:hover{border-color:var(--acc)}.rv.from-right{transform:translate(48px)}.rv.from-right.in{transform:none}@media (max-width: 820px){.edu-wrap{grid-template-columns:1fr}.rv.from-right{transform:translate(28px)}}@media (prefers-reduced-motion: reduce){.focus li{transition:none}.rv.from-right{transform:none}}.ticker{display:flex;align-items:stretch;margin-top:3rem;border:1px solid var(--line);border-radius:12px;background:var(--bar);overflow:hidden}.ticker-label{flex:none;display:flex;align-items:center;padding:.75rem 1.1rem;background:var(--acc);color:#1d1f22;font:800 .95rem var(--display)}.ticker-view{flex:1;min-width:0;overflow:hidden;display:flex;align-items:center;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}.ticker-track{display:flex;list-style:none;margin:0;padding:0;width:max-content;animation:tick 34s linear infinite}.ticker-track li{white-space:nowrap;padding:.75rem 0 .75rem 1.4rem;font:600 1.05rem var(--body)}.ticker-track li:after{content:"•";color:var(--acc);margin-left:1.4rem}.ticker:hover .ticker-track,.ticker.paused .ticker-track{animation-play-state:paused}.ticker-btn{flex:none;border:0;border-left:1px solid var(--line);background:none;color:var(--ink);padding:0 1rem;font:600 .85rem var(--body);cursor:pointer}.ticker-btn:hover{color:var(--acc)}@keyframes tick{to{transform:translate(-50%)}}@media (max-width: 820px){.ticker-label{padding:.75rem .8rem;font-size:.85rem}.ticker-btn{padding:0 .7rem}}@media (prefers-reduced-motion: reduce){.ticker-track{animation:none;flex-wrap:wrap;width:auto}.ticker-view{-webkit-mask-image:none;mask-image:none}.ticker-btn{display:none}}footer{justify-content:center;text-align:center}.to-top{position:fixed;right:max(1.25rem,env(safe-area-inset-right,0px));bottom:calc(1.25rem + env(safe-area-inset-bottom,0px));z-index:30;width:52px;height:52px;border-radius:50%;border:1px solid var(--acc);background:var(--bg);color:var(--acc);display:grid;place-items:center;padding:0;cursor:pointer;opacity:0;transform:translateY(16px);pointer-events:none;transition:opacity .3s,transform .3s,background .2s,color .2s}.to-top.show{opacity:1;transform:none;pointer-events:auto}.to-top:hover{background:var(--acc);color:#1d1f22}.to-top svg{width:26px;height:26px}.to-top:hover svg{animation:wiggle .5s ease}@keyframes wiggle{25%{transform:rotate(-14deg)}75%{transform:rotate(14deg)}}@media (prefers-reduced-motion: reduce){.to-top{transition:none}.to-top:hover svg{animation:none}}.contact-bg{position:relative}.contact-bg:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(circle,rgba(243,241,238,.16) 1.2px,transparent 1.4px),radial-gradient(circle at 50% 42%,rgba(255,122,26,.1),transparent 55%);background-size:30px 30px,100% 100%;-webkit-mask-image:radial-gradient(ellipse at 50% 45%,#000 35%,transparent 90%);mask-image:radial-gradient(ellipse at 50% 45%,#000 35%,transparent 90%)}.contact-bg>.sec{position:relative}.contact-in{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,6vw,4.5rem);align-items:center;position:relative}.chat{display:grid;gap:.8rem;align-content:center;width:100%;max-width:440px;justify-self:end;min-height:270px;padding:1.4rem;border:1px solid var(--line);border-radius:18px;background:#2a2d32b8;animation:ct-fade 14s infinite}.chat .row{display:grid}.chat .row.them{justify-items:start}.chat .row.me{justify-items:end}.chat .row.me>*{grid-area:1/1}.chat .msg{max-width:82%;padding:.7rem 1rem;border-radius:16px;font:500 .98rem/1.4 var(--body);opacity:0}.chat .them .msg{background:var(--bar);border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:4px}.chat .me .msg{background:var(--acc);color:#1d1f22;border-bottom-right-radius:4px}.chat .typing{display:flex;gap:5px;align-items:center;padding:.95rem 1.05rem;border-radius:16px 16px 4px;background:var(--acc);opacity:0;animation:ct-typing 14s infinite}.chat .typing i{width:7px;height:7px;border-radius:50%;background:#1d1f22;animation:ct-dot 1s infinite}.chat .typing i:nth-child(2){animation-delay:.15s}.chat .typing i:nth-child(3){animation-delay:.3s}.chat .m1{animation:ct-m1 14s infinite}.chat .m2{animation:ct-m2 14s infinite}.chat .m3{animation:ct-m3 14s infinite}.chat .sent{justify-self:end;color:var(--muted);font-size:.82rem;opacity:0;animation:ct-sent 14s infinite}@keyframes ct-fade{0%,90%{opacity:1}96%,to{opacity:0}}@keyframes ct-m1{0%,2%{opacity:0;transform:translateY(12px) scale(.96)}6%,to{opacity:1;transform:none}}@keyframes ct-typing{0%,14%{opacity:0;transform:translateY(8px)}17%,23%{opacity:1;transform:none}25%,to{opacity:0}}@keyframes ct-m2{0%,24%{opacity:0;transform:translateY(8px) scale(.9)}28%,to{opacity:1;transform:none}}@keyframes ct-m3{0%,44%{opacity:0;transform:translateY(12px) scale(.96)}48%,to{opacity:1;transform:none}}@keyframes ct-sent{0%,56%{opacity:0}60%,to{opacity:1}}@keyframes ct-dot{0%,60%,to{transform:none;opacity:.45}30%{transform:translateY(-4px);opacity:1}}@media (max-width: 820px){.contact-in{grid-template-columns:1fr}.chat{justify-self:start}}@media (prefers-reduced-motion: reduce){.chat,.chat .msg,.chat .sent,.chat .typing,.chat .typing i{animation:none}.chat .msg,.chat .sent{opacity:1}.chat .typing{display:none}}.pr{margin-top:1.75rem;max-width:30rem;padding:.9rem 1rem 1rem;border:1px solid var(--line);border-radius:12px;background:#2a2d328c;font-family:var(--mono)}.pr-head{display:flex;align-items:center;gap:.55rem;font-size:.8rem;color:var(--muted)}.pr-dot{width:8px;height:8px;border-radius:50%;background:var(--acc);animation:pr-pulse 1s ease-in-out infinite}.pr-ok{display:none;color:#28c840;font-weight:600}.pr-tag{margin-left:auto;color:var(--edmut);font-size:.72rem}.pr.done .pr-run{display:none}.pr.done .pr-ok{display:inline}.pr.done .pr-dot{background:#28c840;animation:none}.pr-bar{height:6px;margin:.7rem 0 .8rem;border-radius:999px;background:var(--line);overflow:hidden}.pr-fill{display:block;height:100%;width:100%;background:var(--acc);transform-origin:left;transform:scaleX(0);transition:background .4s}.pr.done .pr-fill{background:#28c840}.pr-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.pr-stats b{display:block;font:800 1.3rem/1.1 var(--display);letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}.pr-stats b.zero{color:#28c840}.pr-stats span{font-size:.74rem;color:var(--muted)}@keyframes pr-pulse{50%{opacity:.35}}@media (max-width: 820px),(max-height: 640px){.pr{display:none}}.ide-wrap{position:relative}.tc-layer{position:absolute;left:-14px;right:-14px;top:-84px;bottom:-84px;pointer-events:none;contain:paint}.tc{position:absolute;display:block;padding:.45rem .8rem;border:1px solid var(--line);border-radius:10px;background:var(--bar);color:var(--edtxt);font:500 .8rem/1.3 var(--mono);white-space:nowrap;opacity:0;box-shadow:0 10px 24px -14px #0009}.tc em{font-style:normal;color:var(--edmut)}.tc .ok{color:#28c840}.tc .bad{color:#ff5f57}.tc .warn{color:#febc2e;display:inline-block;animation:tc-spin 1s linear infinite}.tc.flaky{display:grid}.tc .s{grid-area:1/1;opacity:0}.tc.top{top:44px}.tc.bot{bottom:6px}.tc.top.a{left:3%;animation:tc-top 7s ease-out .4s infinite}.tc.top.b{right:2%;animation:tc-top 7s ease-out 4s infinite}.tc.bot.a{left:2%;animation:tc-bot 7s ease-out 1.8s infinite}.tc.bot.b{right:3%;animation:tc-flaky 11s linear 3s infinite}.tc.flaky .s1{animation:tc-s1 11s linear 3s infinite}.tc.flaky .s2{animation:tc-s2 11s linear 3s infinite}.tc.flaky .s3{animation:tc-s3 11s linear 3s infinite}.app:not(.live) .tc-layer .tc,.app:not(.live) .tc-layer .s,.app:not(.live) .tc-layer .warn{animation-play-state:paused}@keyframes tc-top{0%{opacity:0;transform:translateY(0)}15%{opacity:1}70%{opacity:1}to{opacity:0;transform:translateY(-38px)}}@keyframes tc-bot{0%{opacity:0;transform:translateY(0)}15%{opacity:1}70%{opacity:1}to{opacity:0;transform:translateY(-44px)}}@keyframes tc-flaky{0%{opacity:0;transform:translateY(0)}8%{opacity:1}88%{opacity:1}to{opacity:0;transform:translateY(-44px)}}@keyframes tc-s1{0%,34%{opacity:1}36%,to{opacity:0}}@keyframes tc-s2{0%,34%{opacity:0}36%,58%{opacity:1}60%,to{opacity:0}}@keyframes tc-s3{0%,58%{opacity:0}60%,to{opacity:1}}@keyframes tc-spin{to{transform:rotate(360deg)}}@media (max-height: 640px){.pr{display:none}}.w-lane{position:absolute;left:clamp(1.25rem,4vw,2.5rem);right:clamp(1.25rem,4vw,2.5rem);bottom:.75rem;height:var(--w-size, 44px);pointer-events:none;z-index:2}.w-lane.inline{position:relative;left:auto;right:auto;bottom:auto;margin:1rem 0 1.75rem}.w-lane.ground{border-bottom:1px dashed var(--line)}.wander{position:absolute;left:0;top:0;width:var(--w-size, 44px);height:var(--w-size, 44px);will-change:transform}.w-btn{width:100%;height:100%;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:none;color:var(--acc);cursor:pointer;pointer-events:auto;transform-origin:50% 100%;transition:transform .25s ease,opacity .35s ease}.app:not(.live) .w-btn{pointer-events:none}.w-in{display:block;width:var(--w-in, 28px);height:var(--w-in, 28px);transition:transform .3s ease}.w-in svg{display:block;width:100%;height:100%;overflow:visible}.face-rotate .w-in{transform:rotate(90deg)}.face-rotate[data-dir=l] .w-in{transform:rotate(-90deg)}.face-flip[data-dir=l] .w-in{transform:scaleX(-1)}.w-msg{position:absolute;left:50%;bottom:calc(100% + 2px);transform:translate(-50%);white-space:nowrap;padding:.3rem .7rem;border:1px solid var(--line);border-radius:999px;background:var(--bar);color:var(--ink);font:600 .8rem var(--mono);opacity:0;pointer-events:none}.w-msg.tone-ok{color:#28c840}.w-msg.tone-acc{color:var(--acc)}.w-msg.on{animation:w-pop 2.4s ease forwards}.wander.squashed .w-btn{transform:scale(1.6,.22);opacity:.35;cursor:default}.wander.hello .w-btn{animation:w-hop .45s ease 2}.wander.walk.w-bug .w-in svg{animation:w-crawl .2s linear infinite}.w-laptop .w-in svg{animation:w-float 2.6s ease-in-out infinite}.wander.walk.w-plane .w-in svg{animation:w-bob 1.8s ease-in-out infinite}@keyframes w-crawl{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}@keyframes w-bob{50%{transform:translateY(-4px)}}@keyframes w-float{0%,to{transform:translateY(2px)}50%{transform:translateY(-6px)}}@keyframes w-hop{50%{transform:translateY(-9px)}}@keyframes w-pop{0%{opacity:0;transform:translate(-50%,8px) scale(.8)}12%{opacity:1;transform:translate(-50%) scale(1.06)}20%{transform:translate(-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-6px)}}@media (prefers-reduced-motion: reduce){.wander *,.wander .w-btn{animation:none!important}.w-btn,.w-in{transition:none}.w-msg.on{animation:none;opacity:1}}.sec h2 .hl{color:var(--acc)}@media (max-width: 820px){.tc{font-size:.72rem;padding:.35rem .6rem}.tc.top.a,.tc.bot.a{left:0}.tc.top.b,.tc.bot.b{right:0}}
