:root{--paper:#edeae2;--paper-2:#e2ded3;--ink:#0d0d0d;--ink-2:#1c1c1c;--concrete:#8a857a;--signal:#e5132e;--amber:#ffb300;--go:#2ee66b;--font-display:"Archivo", "Arial Black", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--border-w:2px;--border:var(--border-w) solid var(--ink);--shadow-hard:6px 6px 0 var(--ink);--gutter:clamp(16px, 3vw, 40px);--nav-h:56px;--marquee-fs:clamp(1.4rem, 3vw, 2.6rem);--marquee-h:calc(var(--marquee-fs) + 28px + var(--border-w));--max-w:1600px;--ease-out:cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{background:var(--paper);color:var(--ink);font-family:var(--font-display);-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.5;overflow-x:clip}body:after{content:"";pointer-events:none;z-index:100;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}img,svg,canvas{max-width:100%;display:block}a{color:inherit;text-decoration:none}ul{list-style:none}::selection{background:var(--signal);color:var(--ink)}:focus-visible{outline:3px solid var(--signal);outline-offset:3px}.mono{font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase;font-size:.78rem}.muted{color:var(--concrete)}.accent{color:var(--signal)}section{padding:clamp(80px, 12vw, 160px) var(--gutter);position:relative}.dark{background:var(--ink);color:var(--paper)}@media (max-width:900px){section:has(.section-bar){scroll-margin-top:var(--nav-h);padding-top:0}.section-bar{--title-size:clamp(1.9rem, 8vw, 3rem);top:var(--nav-h);z-index:5;margin-inline:calc(var(--gutter) * -1);padding:12px var(--gutter) 14px;border-bottom:var(--border-w) solid var(--bar-line,var(--ink));background:var(--bar-bg,var(--paper));position:sticky}.section-bar .h2{font-size:var(--title-size)}.dark .section-bar{--bar-bg:var(--ink);--bar-line:var(--paper)}}@media (max-width:900px) and (max-height:500px){.section-bar{position:static}}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}html.has-cursor,html.has-cursor *{cursor:none!important}.cursor{--size:34px;display:contents}.cursor__dot,.cursor__ring{z-index:1000;pointer-events:none;opacity:0;will-change:transform;position:fixed;top:0;left:0}.cursor.is-visible .cursor__dot,.cursor.is-visible .cursor__ring{opacity:1}.cursor__dot{background:var(--signal);border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;transition:transform .15s,opacity .25s}.cursor__ring{color:#fff;mix-blend-mode:difference;width:0;height:0;transition:opacity .25s}.cursor__frame{width:var(--size);height:var(--size);transition:width .35s var(--ease-out), height .35s var(--ease-out), scale .2s var(--ease-out);position:absolute;translate:-50% -50%}.cursor__frame i{border:0 solid;width:9px;height:9px;position:absolute}.cursor__frame i:first-child{border-width:2px 0 0 2px;top:0;left:0}.cursor__frame i:nth-child(2){border-width:2px 2px 0 0;top:0;right:0}.cursor__frame i:nth-child(3){border-width:0 0 2px 2px;bottom:0;left:0}.cursor__frame i:nth-child(4){border-width:0 2px 2px 0;bottom:0;right:0}.cursor__label{left:calc(var(--size) / 2 + 10px);white-space:nowrap;transition:left .35s var(--ease-out), opacity .2s;top:calc(var(--size) / -2);opacity:0;font-size:.62rem;font-weight:600;line-height:1;position:absolute}.cursor[data-state]:not([data-state=""]){--size:58px}.cursor[data-state]:not([data-state=""]) .cursor__label{opacity:1}.cursor[data-state]:not([data-state=""]) .cursor__dot{transform:scale(1.6)}.cursor.is-down .cursor__frame{scale:.8}.cursor.is-down .cursor__dot{transform:scale(.7)}.cursor.is-down[data-state=drag]{--size:40px}.btn{font-family:var(--font-mono);text-transform:uppercase;border:var(--border-w) solid currentColor;transition:transform .15s var(--ease-out), box-shadow .15s var(--ease-out);align-items:center;gap:8px;padding:14px 22px;font-size:.85rem;font-weight:600;display:inline-flex}.btn:hover{transform:translate(-4px,-4px);box-shadow:4px 4px}.btn--ink{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn--ink:hover{box-shadow:4px 4px 0 var(--signal)}.btn--paper{color:var(--paper)}.btn--signal{background:var(--signal);color:var(--ink);border-color:var(--signal)}.btn--signal:hover{box-shadow:4px 4px 0 var(--paper)}.dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.dot--go{background:var(--go);box-shadow:0 0 0 3px color-mix(in srgb, var(--go) 30%, transparent)}.dot--rec{background:var(--signal);animation:1.2s step-end infinite blink}.h2{letter-spacing:-.03em;text-transform:uppercase;font-size:clamp(2.8rem,8vw,8.5rem);font-weight:900;font-stretch:112%;line-height:.88}.tag{font-family:var(--font-mono);text-transform:uppercase;white-space:nowrap;border:1.5px solid;padding:4px 8px;font-size:.7rem}.tag--lg{padding:8px 14px;font-size:.85rem;transition:background .15s,color .15s}.tag--lg:hover{background:var(--ink);color:var(--signal)}.hud{pointer-events:none;position:absolute;inset:12px}.hud__corner{border:0 solid var(--ink);width:18px;height:18px;position:absolute}.hud__corner--tl{border-width:3px 0 0 3px;top:0;left:0}.hud__corner--tr{border-width:3px 3px 0 0;top:0;right:0}.hud__corner--bl{border-width:0 0 3px 3px;bottom:0;left:0}.hud__corner--br{border-width:0 3px 3px 0;bottom:0;right:0}.hud__label{position:absolute;top:6px;left:28px}.tags{flex-wrap:wrap;gap:6px;display:flex}.job{border:2px solid var(--paper);background:var(--ink-2);flex-direction:column;flex:0 0 clamp(300px,30vw,440px);gap:14px;min-height:clamp(340px,44vh,460px);padding:24px;transition:background .2s,color .2s;display:flex}.job:hover{background:var(--paper);color:var(--ink)}.job:hover .job__top{color:var(--ink)}.job__top{color:#8f8a80;border-bottom:2px solid;justify-content:space-between;padding-bottom:12px;display:flex}.job__company{text-transform:uppercase;letter-spacing:-.02em;font-size:clamp(1.8rem,2.6vw,2.6rem);font-weight:900;font-stretch:110%;line-height:.95}.job__role{color:var(--signal)}.job__points{gap:8px;font-size:.95rem;display:grid}.job__points li:before{content:"■ ";color:var(--signal);font-size:.7em}.job footer{margin-top:auto}.skills__row{border-bottom:var(--border);grid-template-columns:minmax(160px,1fr) 4fr;align-items:center;gap:16px;padding:20px 0;display:grid}.skills__cat{font-size:.9rem;font-weight:600}.badge{--w:clamp(300px, 40vw, 660px);--strap:100vh;width:var(--w);max-width:100%;position:relative}.badge__swing{transform-origin:50% 0;will-change:transform}.badge.is-dragging{z-index:5}.badge__strap{width:clamp(26px,2.6vw,42px);height:var(--strap);background:var(--signal);border-inline:var(--border-w) solid var(--ink);transform-origin:50% 100%;will-change:transform;justify-content:center;display:flex;position:absolute;bottom:calc(100% - 4px);left:50%;overflow:hidden;transform:translate(-50%)}.badge__strap-text{writing-mode:vertical-rl;white-space:nowrap;letter-spacing:.25em;color:var(--paper);align-self:flex-end;font-size:clamp(8px,.7vw,11px)}.badge__clip{z-index:2;border:var(--border-w) solid var(--ink);background:linear-gradient(90deg,#6d6a63,#d6d2c8 45%,#8a857a);border-radius:3px 3px 8px 8px;width:clamp(40px,3.6vw,60px);height:26px;position:absolute;bottom:calc(100% - 16px);left:50%;transform:translate(-50%)}.badge__card{perspective:1400px;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;position:relative;container-type:inline-size}.is-dragging .badge__card{cursor:grabbing}.badge__flipper{transform-style:preserve-3d;transition:transform .9s cubic-bezier(.34,1.4,.64,1);display:grid}.is-flipped .badge__flipper{transform:rotateY(180deg)}.badge__face{background:var(--paper);border:var(--border);box-shadow:var(--shadow-hard);backface-visibility:hidden;flex-direction:column;grid-area:1/1;display:flex}.badge__face--back{box-shadow:-6px 6px 0 var(--ink);transform:rotateY(180deg)}.badge__flip{background:var(--signal);color:var(--paper);font:inherit;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;border:0;justify-self:end;align-items:center;gap:.6em;margin:-.6cqw -1.2cqw -.6cqw 0;padding:.6cqw 1.6cqw;transition:background .2s,color .2s;display:inline-flex}.badge__flip span{transition:transform .35s var(--ease-out);display:inline-block}.badge__flip:hover,.badge__flip:focus-visible{background:var(--paper);color:var(--ink)}.badge__flip:hover span,.badge__flip:focus-visible span{transform:translate(4px)}.badge__head{background:var(--ink);color:var(--paper);letter-spacing:.2em;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:2.2cqw 3cqw;font-size:clamp(8px,1.9cqw,13px);display:grid}.badge__slot{background:var(--paper);border-radius:99px;width:12cqw;height:1.6cqw;min-height:6px}.badge__main{grid-template-columns:34% 1fr;gap:3.4cqw;padding:3.4cqw;display:grid}.badge__photo{aspect-ratio:4/5;border:var(--border);background:#7f7f7f;position:relative;overflow:hidden}.badge__photo img{object-fit:cover;object-position:50% 30%;transform-origin:50% 30%;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0;transform:scale(1.35)}.badge__side{flex-direction:column;gap:1.4cqw;display:flex}.badge__alias{letter-spacing:.06em;text-align:left;font-size:clamp(8px,1.7cqw,12px)}.badge__alias span{color:var(--concrete);text-transform:uppercase;letter-spacing:.12em}.badge__info{flex-direction:column;gap:3cqw;min-width:0;display:flex}.badge__name{font-family:var(--font-display);letter-spacing:-.035em;text-transform:uppercase;font-size:7.4cqw;font-weight:900;line-height:.88}.badge__name span{display:block}.badge__name-accent{color:var(--signal)}.badge__meta{text-transform:uppercase;letter-spacing:.06em;gap:1.2cqw;font-size:clamp(8px,1.8cqw,12px);display:grid}.badge__meta div{grid-template-columns:6ch 1fr;gap:8px;display:grid}.badge__meta dt{color:var(--concrete)}.badge__foot{border-top:var(--border);letter-spacing:.14em;gap:4px;margin-top:auto;padding-top:2cqw;font-size:clamp(7px,1.5cqw,11px);display:grid}.badge__barcode{background:repeating-linear-gradient(90deg, var(--ink) 0 2px, transparent 2px 3px, var(--ink) 3px 4px, transparent 4px 7px, var(--ink) 7px 10px, transparent 10px 11px);height:4.4cqw;min-height:16px}.badge__face--back{background:var(--ink);color:var(--paper)}.badge__face--back .badge__slot{background:var(--concrete)}.badge__contact{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4cqw;padding:4cqw;display:flex}.badge__contact-title{font-family:var(--font-display);letter-spacing:-.035em;text-transform:uppercase;font-size:7.4cqw;font-weight:900;line-height:.9}.badge__contact-title span{color:var(--signal)}.badge__icons{flex-wrap:wrap;justify-content:center;gap:3.2cqw;margin:0;padding:0;list-style:none;display:flex}.badge__icons a,.badge__icons .is-soon{color:inherit;flex-direction:column;align-items:center;gap:1.4cqw;text-decoration:none;display:flex}.badge__icon{aspect-ratio:1;border:var(--border-w) solid var(--ink-2);background:var(--ink-2);width:11cqw;transition:transform .3s var(--ease-out), border-color .2s, background .2s;place-items:center;display:grid}.badge__icon img{object-fit:contain;-webkit-user-select:none;user-select:none;width:58%;height:58%}.badge__icon[data-label=GitHub] img{filter:invert()}.badge__icon-label{letter-spacing:.12em;text-transform:uppercase;color:var(--concrete);font-size:clamp(7px,1.4cqw,10px);transition:color .2s}.badge__icons a{cursor:pointer}.badge__icons a:hover .badge__icon,.badge__icons a:focus-visible .badge__icon{border-color:var(--signal);background:#262626;transform:translateY(-4px)}.badge__icons a:hover .badge__icon-label,.badge__icons a:focus-visible .badge__icon-label{color:var(--paper)}.badge__icons a:focus-visible{outline:none}.badge__icons .is-soon{opacity:.35;cursor:not-allowed}@media (prefers-reduced-motion:reduce){.badge__flipper{transition-duration:10ms}}@media (max-width:900px){.badge{--w:min(100%, 560px);--strap:60vh;margin-inline:auto}}.about{--about-fg:var(--ink);--about-line:var(--ink);padding-inline:max(var(--gutter), (100% - var(--max-w)) / 2);border-bottom:var(--border);background:var(--paper);color:var(--about-fg);transition:background .6s var(--ease-out), color .6s var(--ease-out);grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:0 clamp(32px,5vw,96px);display:grid}.about[data-mode=offDuty]{--about-fg:var(--paper);--about-line:var(--paper);background:var(--ink)}.about__device-slot{margin-top:clamp(28px,4vw,48px)}.about__device{--morph:.7s var(--ease-out);border:var(--border);width:min(460px,100%);height:280px;box-shadow:var(--shadow-hard);background:var(--ink);color:var(--paper);transition:width var(--morph), background .5s, box-shadow .5s;position:relative;overflow:hidden}.about[data-mode=offDuty] .about__device{background:var(--paper);width:min(280px,100%);box-shadow:6px 6px 0 var(--signal)}.about__screen,.tt{transition:opacity .3s .45s;position:absolute;inset:0}.about__screen{flex-direction:column;display:flex}.tt,.about[data-mode=offDuty] .about__screen{opacity:0;transition-delay:0s}.about[data-mode=offDuty] .tt{opacity:1;transition-delay:.45s}.about__terminal-bar{border-bottom:var(--border);background:var(--paper-2);color:var(--ink);text-transform:none;align-items:center;gap:12px;padding:8px 12px;font-size:.68rem;display:flex}.about__terminal-dots{gap:6px;display:inline-flex}.about__terminal-dots i{border:1.5px solid var(--ink);border-radius:50%;width:10px;height:10px}.about__terminal-dots i:first-child{background:var(--signal)}.about__terminal-dots i:nth-child(2){background:var(--amber)}.about__terminal-dots i:nth-child(3){background:var(--go)}.about__terminal-body{min-height:0;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;flex-direction:column;flex:1;justify-content:flex-end;margin:0;padding:14px 16px;font-size:.74rem;line-height:1.7;display:flex;overflow:hidden}.about__terminal-prompt{color:var(--go)}.about__terminal-out{color:#8f8a80}.about__terminal-caret{vertical-align:-.2em;background:var(--paper);width:.6em;height:1.1em;margin-left:1px;animation:1s step-end infinite blink;display:inline-block}.tt{background:radial-gradient(circle at 30% 20%, #fff6 0, transparent 60%), var(--paper)}.tt__platter{aspect-ratio:1;background:var(--ink-2);border:var(--border);border-radius:50%;width:74%;position:absolute;top:13%;left:8%;box-shadow:0 6px 14px #0004}.tt__record{background:repeating-radial-gradient(circle,#0d0d0d 0 1.5px,#1f1f1f 1.5px 3px);border-radius:50%;place-items:center;animation:1.8s linear infinite paused tt-spin;display:grid;position:absolute;inset:4%}.tt__platter:after{content:"";background:conic-gradient(from 20deg, transparent 0 12%, #ffffff1f 18%, transparent 24% 62%, #ffffff14 68%, transparent 74%);pointer-events:none;border-radius:50%;position:absolute;inset:4%}.tt__label{aspect-ratio:1;background:var(--signal);width:34%;color:var(--paper);letter-spacing:.06em;border-radius:50%;place-items:center;font-size:.42rem;display:grid;position:relative}.tt__label:after{content:"";aspect-ratio:1;background:var(--paper);border-radius:50%;width:7%;position:absolute}.about[data-mode=offDuty] .tt__record{animation-play-state:running}@keyframes tt-spin{to{rotate:360deg}}.tt__pivot{aspect-ratio:1;border:var(--border);background:var(--paper-2);z-index:2;border-radius:50%;width:14%;position:absolute;top:18%;left:82%;translate:-50% -50%}.tt__arm{background:var(--ink);transform-origin:50% 0;width:3px;height:55%;transition:rotate .9s var(--ease-out);z-index:1;margin-left:-1.5px;position:absolute;top:18%;left:82%;rotate:5deg}.tt__arm:after{content:"";background:var(--ink);border-radius:2px;width:10px;height:16px;position:absolute;bottom:-6px;left:50%;translate:-50%}.about[data-mode=offDuty] .tt__arm{transition-delay:.8s;rotate:25deg}.tt__controls{color:var(--concrete);align-items:center;gap:8px;font-size:.55rem;display:flex;position:absolute;bottom:6%;right:6%}.tt__led{background:var(--concrete);border-radius:50%;width:6px;height:6px;transition:background .3s .8s}.about[data-mode=offDuty] .tt__led{background:var(--go)}.tt__knob{border:var(--border);background:conic-gradient(var(--ink) 0 8%, var(--paper-2) 8% 100%);border-radius:50%;width:16px;height:16px}@media (prefers-reduced-motion:reduce){.tt__record{animation:none}}.about__head{align-self:start}.about__switch{border:var(--border);box-shadow:var(--shadow-hard);background:var(--paper);margin-top:clamp(24px,3vw,40px);display:inline-flex}.about__switch button{color:var(--ink);font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:12px 18px;transition:background .2s,color .2s;display:inline-flex}.about__switch button+button{border-left:var(--border)}.about__switch button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.about__switch button:not([aria-pressed=true]):hover{background:var(--paper-2)}.about__switch-dot{background:var(--concrete);border-radius:50%;width:8px;height:8px}.about[data-mode=onDuty] [aria-pressed=true] .about__switch-dot{background:var(--signal)}.about[data-mode=offDuty] [aria-pressed=true] .about__switch-dot{background:var(--go)}.about__content{display:grid}.about__panel{flex-direction:column;grid-area:1/1;display:flex}.about__panel:not(.is-active){visibility:hidden}.about__lead{letter-spacing:-.02em;text-transform:uppercase;font-size:clamp(1.6rem,3.4vw,3.2rem);font-weight:800;font-stretch:100%;line-height:1.05}.about__lead .word{display:inline-block}.about__lead .is-accent{color:var(--signal)}.about__body{border-top:var(--border-w) solid var(--about-line);transition:border-color .6s var(--ease-out);gap:16px;margin-top:clamp(28px,4vw,56px);margin-bottom:clamp(28px,4vw,56px);padding-top:24px;line-height:1.6;display:grid}.about__body p{max-width:68ch}.about__extra{gap:var(--border-w);border:var(--border);box-shadow:var(--shadow-hard);background:var(--ink);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin-top:auto;display:grid}.about[data-mode=offDuty] .about__extra,.about[data-mode=offDuty] .about__switch{box-shadow:6px 6px 0 var(--signal)}.about__extra>div{background:var(--paper);min-height:96px;color:var(--ink);padding:16px 20px}.about__extra dt{letter-spacing:.08em;color:var(--concrete);font-size:.75rem}.about__extra dd{margin:6px 0 0;font-weight:600}@media (max-width:900px){.about{padding-bottom:clamp(48px,10vw,80px);display:block}.about__head{--bar-line:var(--about-line);--switch-h:36px;--head-gap:8px;--device-h:calc(var(--title-size) * 1.76 + var(--head-gap) + var(--switch-h));column-gap:16px;row-gap:var(--head-gap);transition:background .6s var(--ease-out), border-color .6s var(--ease-out);grid-template-columns:auto minmax(0,1fr);display:grid}.about[data-mode=offDuty] .about__head{--bar-bg:var(--ink)}.about__head .h2{grid-column:1}.about__switch{height:var(--switch-h);grid-column:1;justify-self:start;margin-top:0}.about__switch button{white-space:nowrap;gap:5px;padding:0 9px;font-size:.66rem}.about__switch-dot{width:6px;height:6px}.about__device-slot{grid-area:1/2/span 2;margin-top:0}.about__device{width:100%;height:var(--device-h);margin-left:auto}.about[data-mode=offDuty] .about__device{width:min(var(--device-h), 100%)}.about__device,.about__switch{box-shadow:3px 3px 0 var(--ink)}.about[data-mode=offDuty] .about__device,.about[data-mode=offDuty] .about__switch{box-shadow:3px 3px 0 var(--signal)}.about__terminal-bar{white-space:nowrap;border-bottom-width:1px;gap:6px;padding:3px 6px;font-size:.45rem;overflow:hidden}.about__terminal-dots{gap:3px}.about__terminal-dots i{border-width:1px;width:6px;height:6px}.about__terminal-body{padding:4px 6px;font-size:.45rem;line-height:1.4}.tt__label{font-size:0}.tt__controls>:not(.tt__led){display:none}.tt__platter{border-width:1px;box-shadow:0 3px 6px #0004}.tt__pivot{border-width:1px}.tt__arm{width:2px;margin-left:-1px}.tt__arm:after{width:6px;height:9px;bottom:-3px}.about__content{margin-top:28px}}@media (max-width:600px){.about__extra{grid-auto-flow:row}.about__extra>div{min-height:0}}.contact{flex-direction:column;min-height:100svh;padding-bottom:32px;display:flex}.contact__grid{grid-template-columns:min(42vw,640px) minmax(0,1fr);align-items:center;gap:clamp(32px,5vw,80px);display:grid}.contact__info{min-width:0}.contact__stage{order:-1}.contact__big{letter-spacing:-.05em;text-transform:uppercase;font-size:clamp(4rem,11vw,13rem);font-weight:900;font-stretch:112%;line-height:.8}.contact__list{border-top:1px solid #2c2c2c;margin:clamp(32px,4vw,56px) 0 0;padding:0;list-style:none}.contact__item{border-bottom:1px solid #2c2c2c}.contact__link{color:inherit;transition:padding .3s var(--ease-out), background .2s;align-items:center;gap:clamp(12px,1.6vw,20px);padding:14px 4px;text-decoration:none;display:flex}.contact__icon{aspect-ratio:1;border:var(--border-w) solid var(--ink-2);background:var(--ink-2);width:clamp(40px,3.6vw,52px);transition:border-color .2s, transform .3s var(--ease-out);flex:none;place-items:center;display:grid}.contact__icon img{object-fit:contain;-webkit-user-select:none;user-select:none;width:56%;height:56%}.contact__icon[data-label=GitHub] img{filter:invert()}.contact__text{flex-direction:column;gap:2px;min-width:0;display:flex}.contact__label{letter-spacing:.14em;text-transform:uppercase;color:var(--concrete);font-size:11px}.contact__handle{letter-spacing:-.01em;overflow-wrap:anywhere;font-size:clamp(1rem,1.7vw,1.5rem);font-weight:800;transition:color .2s}.contact__arrow{transition:transform .3s var(--ease-out), color .2s;margin-left:auto;font-size:1.4rem}.contact__link:hover,.contact__link:focus-visible{background:#151515;padding-left:14px}.contact__link:hover .contact__icon,.contact__link:focus-visible .contact__icon{border-color:var(--signal);transform:rotate(-4deg)}.contact__link:hover .contact__handle,.contact__link:hover .contact__arrow,.contact__link:focus-visible .contact__handle,.contact__link:focus-visible .contact__arrow{color:var(--signal)}.contact__link:hover .contact__arrow,.contact__link:focus-visible .contact__arrow{transform:translate(4px,-4px)}.contact__cta{width:-moz-fit-content;width:fit-content;margin-top:32px;display:flex}.contact__stage{aspect-ratio:.9;border:var(--border);border-color:var(--paper);color:var(--ink);background:linear-gradient(var(--paper-2) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(90deg, var(--paper-2) 1px, transparent 1px) 0 0 / 32px 32px, var(--paper);position:relative;overflow:hidden}.contact__canvas{opacity:0;-webkit-tap-highlight-color:transparent;width:100%;height:100%;transition:opacity .8s;position:absolute;inset:0}.contact__canvas.is-ready{opacity:1}.contact__bubble{z-index:2;border:var(--border);background:var(--paper);max-width:min(42%,240px);color:var(--ink);box-shadow:4px 4px 0 var(--ink);opacity:0;transform-origin:0 100%;transition:opacity .2s, transform .35s var(--ease-out);pointer-events:none;margin:0;padding:10px 12px;font-size:12px;line-height:1.4;display:grid;position:absolute;top:9%;left:54%;transform:translate(-8px,8px)scale(.6)}.contact__bubble.is-on{opacity:1;transform:none}.contact__bubble-ghost,.contact__bubble-text{grid-area:1/1}.contact__bubble-ghost{visibility:hidden}.contact__bubble:before,.contact__bubble:after{content:"";border-style:solid;position:absolute;left:14px}.contact__bubble:before{border-width:14px 14px 0 0;border-color:var(--ink) transparent transparent;bottom:-14px}.contact__bubble:after{border-width:9px 9px 0 0;border-color:var(--paper) transparent transparent;bottom:-9px;left:16px}.contact__caret{vertical-align:-.15em;background:var(--signal);width:.55em;height:1em;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}.contact__zzz{z-index:2;border:var(--border);background:var(--paper);color:var(--ink);white-space:nowrap;opacity:0;transform-origin:0 100%;transition:opacity .4s, transform .5s var(--ease-out);pointer-events:none;border-radius:999px;margin:0;padding:6px 14px 8px;font-size:clamp(1rem,1.6vw,1.5rem);font-weight:900;line-height:1;position:absolute;top:16%;left:60%;transform:translateY(10px)scale(.6)}.contact__zzz.is-on{opacity:1;transform:none}.contact__zzz:before,.contact__zzz:after{content:"";border:var(--border);background:var(--paper);border-radius:50%;position:absolute}.contact__zzz:before{width:12px;height:12px;bottom:-14px;left:6px}.contact__zzz:after{width:8px;height:8px;bottom:-26px;left:-4px}.contact__zzz span{display:inline-block}.contact__zzz span:first-child{font-size:.7em}.contact__zzz span:nth-child(2){font-size:.85em}.contact__zzz-dots{color:var(--signal)}.contact__zzz.is-on span{animation:2.4s ease-in-out infinite zzz-float}.contact__zzz.is-on span:nth-child(2){animation-delay:.2s}.contact__zzz.is-on span:nth-child(3){animation-delay:.4s}.contact__zzz.is-on span:nth-child(4){animation-delay:.6s}@keyframes zzz-float{0%,to{opacity:1;transform:translateY(0)}50%{opacity:.55;transform:translateY(-5px)}}@media (prefers-reduced-motion:reduce){.contact__zzz.is-on span{animation:none}}.contact__scan{pointer-events:none;background:repeating-linear-gradient(#0000000f 0 1px,#0000 1px 4px);position:absolute;inset:0}.footer{color:#8f8a80;border-bottom:0;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:auto;padding-top:64px;display:flex}@media (min-width:901px){.contact{--stage-h:max(420px, calc(100svh - var(--nav-h) - 132px));height:100svh;min-height:600px;padding-top:calc(var(--nav-h) + 20px);padding-bottom:20px}.contact__grid{flex:1;grid-template-columns:auto minmax(0,1fr);gap:clamp(32px,4vw,72px);min-height:0}.contact__stage{height:var(--stage-h);width:auto;max-width:48vw}.contact__info{container-type:inline-size}.contact__big{font-size:clamp(3.5rem,min(17.5cqw,15svh),11rem)}.contact__list{margin-top:clamp(20px,4svh,48px)}.contact__link{padding-block:clamp(6px,1.3svh,14px)}.contact__icon{width:clamp(34px,min(3.6vw,5.5svh),52px)}.contact__handle{font-size:clamp(.95rem,min(1.7vw,2.6svh),1.5rem)}.contact__cta{margin-top:clamp(16px,3svh,32px)}.footer{padding-top:16px}}@media (max-width:900px){.contact__grid{display:block}.contact__info{display:contents}.contact__big{font-size:var(--title-size);letter-spacing:-.03em;line-height:.88}.contact__stage{width:min(100%,420px);margin:40px auto 0}}.experience{padding:0;overflow:hidden}.experience__pin{min-height:100svh;padding:calc(var(--nav-h) + 32px) var(--gutter) 48px;flex-direction:column;justify-content:center;gap:clamp(28px,4vh,48px);display:flex}.experience__head .h2{font-size:clamp(2.8rem,5.2vw,6rem)}.experience__viewport{margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter);overflow:hidden}.experience__track{will-change:transform;gap:24px;width:max-content;display:flex}@media (max-width:900px){.experience{overflow:clip}.experience__pin{justify-content:flex-start;padding-top:0;padding-bottom:96px}.experience__head .h2{font-size:var(--title-size)}.experience__viewport{margin:0;padding:0;overflow:visible}.experience__track{flex-direction:column;width:auto}.job{flex-basis:auto;min-height:0}}.hero{min-height:calc(100svh - var(--marquee-h));padding-top:var(--nav-h);border-bottom:var(--border);grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr);gap:24px;padding-bottom:32px;display:grid;overflow:hidden}.hero__meta{border-bottom:var(--border);z-index:3;background:var(--paper);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding-top:16px;padding-bottom:12px;display:flex;position:relative}.hero__status{background:var(--ink);color:var(--paper);border-radius:999px;align-self:center;align-items:center;padding:6px 14px;line-height:1;display:inline-flex}.hero__row{z-index:2;width:calc(100% - min(46vw, 720px) - var(--gutter));grid-area:2/1;justify-content:center;align-self:center;display:flex;position:relative}.hero__stage{z-index:1;aspect-ratio:1.15;border:var(--border);background:linear-gradient(var(--paper-2) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(90deg, var(--paper-2) 1px, transparent 1px) 0 0 / 32px 32px, var(--paper);grid-area:2/1;place-self:center end;width:min(46vw,720px);position:relative}.hero__canvas{opacity:0;width:100%;height:100%;transition:opacity .8s}.hero__canvas.is-ready{opacity:1}@media (max-width:900px){.hero__row{width:100%;padding-top:24px}.hero__stage{display:none}}@media (max-width:600px){.hero__location{display:none}.hero__meta{flex-wrap:nowrap;gap:16px}.hero__meta>*{white-space:nowrap}}.marquee{background:var(--signal);border-bottom:var(--border);box-sizing:border-box;height:var(--marquee-h);padding:14px 0;overflow:hidden}.marquee__track{width:max-content;font-size:var(--marquee-fs);text-transform:uppercase;letter-spacing:-.02em;white-space:nowrap;align-items:center;gap:28px;font-weight:900;font-stretch:115%;line-height:1;animation:28s linear infinite marquee;display:flex}.marquee__track i{font-size:.6em;font-style:normal}@keyframes marquee{to{transform:translate(-50%)}}.nav{z-index:50;height:var(--nav-h);padding:0 var(--gutter);background:var(--ink);color:var(--paper);border-bottom:var(--border-w) solid var(--signal);font-family:var(--font-mono);text-transform:uppercase;justify-content:space-between;align-items:center;gap:24px;font-size:.8rem;display:flex;position:fixed;inset:0 0 auto}.nav__logo{font-family:var(--font-display);letter-spacing:-.04em;font-size:1.4rem;font-weight:900}.nav__dot{vertical-align:.203em;background:var(--signal);border-radius:50%;width:.28em;height:.28em;margin-left:.08em;display:inline-block}.nav__links{gap:clamp(16px,3vw,40px);display:flex}.nav__links a,.nav__cta{position:relative}.nav__links a{transition:color .2s}.nav__links a:hover{color:var(--signal)}.nav__links a:after{content:"";transform-origin:100%;height:2px;transition:transform .3s var(--ease-out);background:currentColor;position:absolute;bottom:-4px;left:0;right:0;transform:scaleX(0)}.nav__links a:hover:after{transform-origin:0;transform:scaleX(1)}.nav__cta{border:2px solid var(--signal);background:var(--signal);color:var(--ink);padding:6px 12px;font-weight:700;transition:background .2s,color .2s}.nav__cta:hover{color:var(--signal);background:0 0}.nav__toggle{display:none}.nav a:focus-visible,.nav__toggle:focus-visible{outline:2px solid var(--signal);outline-offset:4px}@media (max-width:720px){.nav__toggle{border:2px solid var(--signal);background:var(--signal);min-width:calc(7ch + 28px);min-height:40px;color:var(--ink);font:inherit;text-transform:inherit;padding:0 12px;font-weight:700;transition:background .2s,color .2s;display:block}.nav__toggle[aria-expanded=true]{color:var(--signal);background:0 0}.nav__arrow{transition:transform .45s var(--ease-out);display:inline-block}.nav__toggle[aria-expanded=true] .nav__arrow{transform:rotate(180deg)}.nav__links{visibility:hidden;clip-path:inset(0 0 100%);transition:clip-path .3s var(--ease-out), visibility 0s linear .3s;top:calc(100% + var(--border-w));background:var(--ink);border-bottom:var(--border-w) solid var(--signal);flex-direction:column;gap:0;display:flex;position:absolute;left:0;right:0}.nav__links.is-open{visibility:visible;clip-path:inset(0);transition:clip-path .55s var(--ease-out), visibility 0s}.nav__links a{padding:14px var(--gutter);opacity:0;font-size:.9rem;transition:color .2s,opacity .2s,transform .2s;transform:translateY(-8px)}.nav__links.is-open a{--delay:calc(60ms + var(--i) * 45ms);opacity:1;transition:color .2s, opacity .4s var(--ease-out) var(--delay), transform .5s var(--ease-out) var(--delay);transform:none}.nav__links a+a{border-top:1px solid rgb(from var(--paper) r g b / .2)}.nav__links a:after{display:none}.nav__links a:focus-visible{outline-offset:-4px}.nav__cta{display:none}}@media (max-width:720px) and (prefers-reduced-motion:reduce){.nav__links,.nav__links.is-open a{transition-delay:0s}}.viz{flex-direction:column;justify-content:center;gap:24px;padding:clamp(16px,3vw,32px);display:flex;position:absolute;inset:0}.wall{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.wall__tile{aspect-ratio:16/10;background:repeating-linear-gradient(0deg,#ffffff0d 0 1px,#0000 1px 3px),linear-gradient(135deg,#222,#111);border:1.5px solid #3a3a3a;position:relative;overflow:hidden}.wall__tile:after{content:"";background:linear-gradient(#0000,#e5132e2e,#0000);height:30%;animation:3s linear infinite scan;position:absolute;left:0;right:0}.wall__tile:nth-child(2n):after{animation-delay:-1.3s}.wall__tile:nth-child(3n):after{animation-delay:-2.1s}.wall__tile span{font-size:.6rem;position:absolute;top:4px;left:6px}.wall__tile .dot{width:6px;height:6px;position:absolute;top:7px;right:0}@keyframes scan{0%{top:-30%}to{top:100%}}.pipe{align-items:center;display:flex}.pipe__node{border:2px solid var(--paper);flex:none;padding:8px 10px;font-size:.68rem}.pipe__node:last-child{background:var(--signal);border-color:var(--signal);color:var(--ink)}.pipe__wire{background:#444;flex:1;height:2px;position:relative;overflow:hidden}.pipe__wire i{background:var(--signal);width:10px;height:6px;animation:1.4s linear infinite packet;position:absolute;top:-2px}.pipe__wire:nth-child(4) i{animation-delay:-.5s}.pipe__wire:nth-child(6) i{animation-delay:-.9s}@keyframes packet{0%{left:-10px}to{left:100%}}.viz--signal{flex-direction:row;justify-content:center;align-items:center;gap:clamp(20px,4vw,56px)}.tl{border:3px solid var(--paper);background:#111;gap:12px;padding:14px;display:grid}.tl__lamp{aspect-ratio:1;background:#2a2a2a;border-radius:50%;width:clamp(44px,6vw,72px)}.tl__lamp--stop{animation:9s step-end infinite lamp-stop}.tl__lamp--ready{animation:9s step-end infinite lamp-ready}.tl__lamp--go{animation:9s step-end infinite lamp-go}@keyframes lamp-stop{0%,44%{background:var(--signal);box-shadow:0 0 32px var(--signal)}45%{box-shadow:none;background:#2a2a2a}}@keyframes lamp-go{0%,44%{box-shadow:none;background:#2a2a2a}45%,84%{background:var(--go);box-shadow:0 0 32px var(--go)}85%{box-shadow:none;background:#2a2a2a}}@keyframes lamp-ready{0%,84%{box-shadow:none;background:#2a2a2a}85%{background:var(--amber);box-shadow:0 0 32px var(--amber)}}.term{text-transform:none;white-space:pre;color:#cfcac0;font-size:clamp(.62rem,.9vw,.8rem);line-height:2}.term span{display:block}.caret{color:var(--signal);animation:1s step-end infinite blink}.frame{background:linear-gradient(#1b1b1b 1px,#0000 1px) 0 0/24px 24px,linear-gradient(90deg,#1b1b1b 1px,#0000 1px) 0 0/24px 24px,#0f0f0f;border:1.5px solid #3a3a3a;height:100%;min-height:260px;position:relative;overflow:hidden}.frame__scan{background:var(--signal);height:2px;box-shadow:0 0 16px var(--signal);z-index:2;animation:4s linear infinite scan;position:absolute;left:0;right:0}.frame__meta{color:#8f8a80;font-size:.6rem;position:absolute;bottom:8px;left:10px}.worker{left:var(--x);width:18%;position:absolute;bottom:14%}.worker__svg{fill:#5c5850;width:100%}.bbox{border:2px solid var(--go);position:absolute;inset:-8% -14% -4%}.bbox__label{white-space:nowrap;background:var(--go);color:var(--ink);padding:2px 5px;font-size:.55rem;position:absolute;bottom:100%;left:-2px}.bbox--alert{border-color:var(--signal);animation:.8s step-end infinite blink}.bbox--alert .bbox__label{background:var(--signal)}.cipher{border:2px solid var(--paper);text-transform:none;word-break:break-all;min-height:4.5em;padding:18px;font-size:clamp(.7rem,1.1vw,.95rem);transition:color .3s}.cipher.is-encrypted{color:var(--signal);border-color:var(--signal)}.checks{gap:6px;display:grid}.checks li{border:1.5px solid #3a3a3a;justify-content:space-between;padding:10px 12px;display:flex}.checks b{color:var(--go)}.project{border-top:var(--border);grid-template-columns:5fr 7fr;gap:clamp(24px,4vw,64px);padding:clamp(32px,5vw,64px) 0;display:grid}.project:nth-of-type(2n){grid-template-columns:7fr 5fr}.project:nth-of-type(2n) .project__text{order:2}.project__text{flex-direction:column;align-items:flex-start;gap:18px;display:flex}.project__code{color:var(--signal);font-weight:600}.project__title{letter-spacing:-.03em;text-transform:uppercase;font-size:clamp(2.2rem,5vw,5rem);font-weight:900;font-stretch:110%;line-height:.9}.project__summary{max-width:46ch;font-size:1.1rem}.project__bullets li{border-bottom:1px dashed var(--concrete);padding:8px 0}.project__bullets li:before{content:"→ ";color:var(--signal)}.project__nda{color:var(--concrete);font-size:.68rem}.project__visual{border:var(--border);background:var(--ink);min-height:clamp(320px,40vw,560px);color:var(--paper);box-shadow:var(--shadow-hard);position:relative;overflow:hidden}.project__media{object-fit:contain;background:var(--ink);width:100%;height:100%;display:block;position:absolute;inset:0}.projects{border-top:var(--border)}.projects__head{margin-bottom:clamp(48px,8vw,120px)}@media (max-width:900px){.projects__head{margin-bottom:32px}.project,.project:nth-of-type(2n){grid-template-columns:1fr}.project:nth-of-type(2n) .project__text{order:0}}.publication{border-top:var(--border)}.publication__card{background:var(--signal);border:var(--border);box-shadow:12px 12px 0 var(--ink);max-width:1200px;margin:0 auto;padding:clamp(28px,5vw,72px);position:relative}.publication__title{letter-spacing:-.03em;text-transform:uppercase;font-size:clamp(1.8rem,4.2vw,4rem);font-weight:900;font-stretch:100%;line-height:1}.publication__note{max-width:60ch;margin:24px 0}.skills__head{margin-bottom:clamp(40px,6vw,80px)}.skills__table{border-top:var(--border)}@media (max-width:900px){.skills__head{margin-bottom:32px}}@media (max-width:720px){.skills__row{grid-template-columns:1fr}}
