@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&display=swap";@font-face{font-family:SF Pro;font-weight:400;font-style:normal;src:url(https://sf.abarba.me/SF-Pro-Text-Regular.otf) format("opentype");font-display:swap}@font-face{font-family:SF Pro;font-weight:500;font-style:normal;src:url(https://sf.abarba.me/SF-Pro-Text-Medium.otf) format("opentype");font-display:swap}@font-face{font-family:SF Pro;font-weight:600;font-style:normal;src:url(https://sf.abarba.me/SF-Pro-Text-Semibold.otf) format("opentype");font-display:swap}@font-face{font-family:SF Pro;font-weight:700;font-style:normal;src:url(https://sf.abarba.me/SF-Pro-Text-Bold.otf) format("opentype");font-display:swap}:root{--bg: #0a0a0a;--card-bg: #141414;--card-bg-2: #181818;--text: #e6e6e6;--muted: #6b6b6b;--muted-2: #8a8a8a;--accent: #ffffff;--rule: #232323;--hover: var(--garden-blue);--garden-green: #c8e87a;--garden-pink: #ff6b9d;--garden-coral: #ff7a4d;--garden-blue: #6bb8ff;--garden-yellow: #ffd34d;--shadow: 0 -24px 48px -12px rgba(0, 0, 0, .7), 0 -2px 0 0 rgba(255, 255, 255, .03)}*{box-sizing:border-box}html{scroll-behavior:auto}html,body,#root{margin:0;height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);font-family:SF Pro,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-weight:400;font-size:16px;line-height:.8;overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.viewport{position:relative;height:100vh;height:100dvh;overflow:hidden;background:var(--bg)}::selection{background:var(--hover);color:#000}a{color:var(--accent);text-decoration:none;font-weight:700;border-bottom:1px solid transparent;transition:color .15s ease,border-color .15s ease}a:hover{color:var(--hover);border-bottom-color:var(--hover)}.stack{position:relative;height:100%;padding:0}.card{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100vh;height:100dvh;margin:0;padding:0;border:none;box-shadow:none;background:var(--bg);display:flex;align-items:center;justify-content:center;overflow:hidden;transition:transform .76s cubic-bezier(.22,1,.36,1),opacity .52s ease,filter .52s ease;will-change:transform,opacity,filter}.card.panel-active{transform:translateZ(0);opacity:1;filter:blur(0);z-index:3;pointer-events:auto}.card.panel-above{transform:translate3d(0,-100%,0);opacity:0;filter:blur(12px);z-index:1;pointer-events:none}.card.panel-below{transform:translate3d(0,100%,0);opacity:0;filter:blur(12px);z-index:2;pointer-events:none}.viewport[data-transition=down] .card.panel-active{animation:panel-enter-down .76s cubic-bezier(.22,1,.36,1)}.viewport[data-transition=up] .card.panel-active{animation:panel-enter-up .76s cubic-bezier(.22,1,.36,1)}@keyframes panel-enter-down{0%{transform:translate3d(0,12%,0);opacity:.35;filter:blur(8px)}to{transform:translateZ(0);opacity:1;filter:blur(0)}}@keyframes panel-enter-up{0%{transform:translate3d(0,-12%,0);opacity:.35;filter:blur(8px)}to{transform:translateZ(0);opacity:1;filter:blur(0)}}.card-inner{width:100%;max-width:620px;position:relative;z-index:1}.card-inner--intro{display:flex;flex-direction:column;max-height:calc(100dvh - 40px);padding:48px 32px;overflow:visible}.card-inner--intro .card-scroll{flex:1;min-height:0;max-height:none;padding:0;-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 24px),transparent 100%);mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 24px),transparent 100%)}.card-scroll{max-height:calc(100dvh - 40px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:48px 32px;scrollbar-width:thin;scrollbar-color:var(--rule) transparent;-webkit-overflow-scrolling:touch;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 24px,#000 calc(100% - 24px),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 24px,#000 calc(100% - 24px),transparent 100%)}.card-scroll::-webkit-scrollbar{width:4px}.card-scroll::-webkit-scrollbar-thumb{background:var(--rule);border-radius:999px}.section-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:20;background:#ffffff0a;pointer-events:none}.section-progress span{display:block;height:100%;width:100%;background:var(--garden-blue);transform-origin:left center;transition:transform .76s cubic-bezier(.22,1,.36,1)}.section-nav{--strip-height: 16px;--strip-gap: 10px;--strip-active-height: 34px;position:fixed;right:48px;top:50%;transform:translateY(-50%);z-index:20;display:flex;flex-direction:column;align-items:flex-end;gap:var(--strip-gap);padding:6px 0}.section-nav-glider{position:absolute;right:0;top:0;width:2px;height:var(--strip-active-height);border-radius:2px;background:linear-gradient(180deg,rgba(107,184,255,.12) 0%,var(--garden-blue) 38%,var(--garden-blue) 62%,rgba(107,184,255,.12) 100%);box-shadow:0 0 14px #6bb8ff99,0 0 28px #6bb8ff38;transform:translateY(calc(var(--active-index, 0) * (var(--strip-height) + var(--strip-gap)) + (var(--strip-height) - var(--strip-active-height)) / 2));transition:transform .76s cubic-bezier(.22,1,.36,1),height .76s cubic-bezier(.22,1,.36,1),opacity .4s ease;pointer-events:none}.section-nav-strip{position:relative;flex:0 0 auto;width:2px;height:var(--strip-height);border:none;border-radius:2px;padding:0;cursor:pointer;transform-origin:right center;background:#ffffff1f;transition:background .76s cubic-bezier(.22,1,.36,1),opacity .52s ease,transform .76s cubic-bezier(.22,1,.36,1)}.section-nav-strip:hover{background:#ffffff42;transform:scaleX(1.6)}.section-nav-strip.is-passed{background:#ffffff47}.section-nav-strip.is-active{background:#ffffff0f;transform:scaleX(1)}.scroll-cue{position:fixed;bottom:22px;left:50%;transform:translate(-50%);z-index:20;font-family:DM Mono,monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);pointer-events:none;animation:scroll-cue-bounce 2.2s ease-in-out infinite}.scroll-cue:after{content:"↓";display:block;text-align:center;margin-top:4px;font-size:12px}@keyframes scroll-cue-bounce{0%,to{transform:translate(-50%) translateY(0);opacity:.45}50%{transform:translate(-50%) translateY(7px);opacity:1}}.cascade{opacity:0;transform:translateY(14px)}.card-inner.reveal.is-visible .cascade{animation:cascade-in .56s cubic-bezier(.22,1,.36,1) forwards;animation-delay:calc(.12s + var(--cascade-i, 0) * 65ms)}.card-inner.reveal.is-visible .section-header{animation:section-header-in .64s cubic-bezier(.22,1,.36,1) forwards}.card-inner.reveal.is-visible .section-header:after{animation:section-rule-in .72s cubic-bezier(.22,1,.36,1) forwards;animation-delay:80ms}@keyframes cascade-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes section-header-in{0%{opacity:0;transform:translateY(10px);letter-spacing:.2em}to{opacity:1;transform:translateY(0);letter-spacing:.14em}}@keyframes section-rule-in{0%{transform:scaleX(0);opacity:.35}to{transform:scaleX(1);opacity:1}}@media (prefers-reduced-motion: reduce){.card{transition:none}.card.panel-above{transform:translate3d(0,-100%,0)}.card.panel-below{transform:translate3d(0,100%,0)}.viewport[data-transition=down] .card.panel-active,.viewport[data-transition=up] .card.panel-active{animation:none}.cascade,.card-inner.reveal.is-visible .cascade,.card-inner.reveal.is-visible .section-header,.card-inner.reveal.is-visible .section-header:after,.scroll-cue,.section-nav-glider,.section-nav-strip{animation:none;transition:none;opacity:1;transform:none;letter-spacing:.14em}.section-nav-glider{transform:translateY(calc(var(--active-index, 0) * (var(--strip-height) + var(--strip-gap)) + (var(--strip-height) - var(--strip-active-height)) / 2))}}h1{font-family:SF Pro,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:700;font-size:17px;margin:0 0 28px;color:var(--accent);letter-spacing:-.01em;line-height:.8;display:inline-block;position:relative;cursor:default}p{margin:0 0 22px;color:var(--text);line-height:1.55}strong,b{font-weight:700;color:var(--accent)}.name-hover{position:relative;display:inline-block}.name-headshot{position:absolute;top:50%;left:0;transform:translate(calc(-100% - 12px),-50%) scale(.88);width:56px;height:56px;border-radius:50%;background:#2a2a2a;border:1px solid var(--rule);display:flex;align-items:center;justify-content:center;color:var(--muted-2);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .25s cubic-bezier(.34,1.56,.64,1);overflow:hidden;z-index:5}.name-headshot svg{width:28px;height:28px}.name-headshot img{width:100%;height:100%;object-fit:cover;object-position:center 20%;display:block}.name-hover:hover .name-headshot{opacity:1;transform:translate(calc(-100% - 12px),-50%) scale(1)}.cursor-linkedin{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><circle cx='12' cy='12' r='11' fill='%230a66c2'/><path fill='white' d='M8.5 9.5H6.5V17H8.5V9.5ZM7.5 8.5C8.05 8.5 8.5 8.05 8.5 7.5C8.5 6.95 8.05 6.5 7.5 6.5C6.95 6.5 6.5 6.95 6.5 7.5C6.5 8.05 6.95 8.5 7.5 8.5ZM17.5 17H15.5V13.25C15.5 12.55 14.95 12 14.25 12C13.55 12 13 12.55 13 13.25V17H11V9.5H13V10.5C13.4 9.85 14.2 9.4 15 9.4C16.4 9.4 17.5 10.5 17.5 11.9V17Z'/></svg>") 12 12,pointer}.cursor-github{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><circle cx='12' cy='12' r='11' fill='%2324292f'/><path fill='white' d='M12 5.5C8.13 5.5 5 8.63 5 12.5C5 15.6 6.99 18.22 9.77 19.14C10.12 19.21 10.25 18.99 10.25 18.81C10.25 18.65 10.24 18.13 10.24 17.58C8.31 18 7.91 16.77 7.91 16.77C7.6 15.99 7.15 15.78 7.15 15.78C6.52 15.35 7.2 15.36 7.2 15.36C7.9 15.41 8.27 16.08 8.27 16.08C8.89 17.14 9.9 16.83 10.27 16.66C10.33 16.21 10.51 15.9 10.71 15.73C9.17 15.55 7.55 14.96 7.55 12.27C7.55 11.5 7.82 10.87 8.28 10.38C8.21 10.21 7.97 9.5 8.35 8.54C8.35 8.54 8.94 8.35 10.23 9.24C10.78 9.09 11.39 9.01 12 9.01C12.61 9.01 13.22 9.09 13.77 9.24C15.06 8.35 15.65 8.54 15.65 8.54C16.03 9.5 15.79 10.21 15.72 10.38C16.18 10.87 16.45 11.5 16.45 12.27C16.45 14.97 14.83 15.55 13.28 15.73C13.54 15.95 13.77 16.38 13.77 17.04C13.77 17.99 13.76 18.58 13.76 18.81C13.76 18.99 13.89 19.21 14.24 19.14C17.02 18.22 19 15.6 19 12.5C19 8.63 15.87 5.5 12 5.5Z'/></svg>") 12 12,pointer}.cursor-canada{cursor:default}.shine{display:inline-block;font-weight:700;color:var(--accent);cursor:default;white-space:nowrap}.shine .letter{display:inline-block;transition:transform .05s linear;will-change:transform}.shine:hover .letter{animation:wave-bounce .6s ease-out forwards;animation-delay:calc(var(--i) * 45ms)}.shine--company{--shine-1: var(--muted-2);--shine-2: var(--hover);--shine-3: var(--accent)}.shine--company:hover .letter{animation:wave-bounce .6s ease-out forwards,wave-color .75s ease-out forwards;animation-delay:calc(var(--i) * 45ms),calc(var(--i) * 45ms)}@keyframes wave-color{0%{color:var(--shine-1)}45%{color:var(--shine-2)}to{color:var(--shine-3)}}@keyframes wave-bounce{0%{transform:translateY(0)}40%{transform:translateY(-8px)}70%{transform:translateY(2px)}to{transform:translateY(0)}}.section-header{font-family:DM Mono,monospace;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin:48px 0 32px;display:flex;align-items:center;gap:14px;line-height:1;opacity:0;transform-origin:left center}.card-inner.reveal:not(.is-visible) .section-header{opacity:0}.card[data-section=experience] .section-header{margin-top:0}.section-header:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--rule) 0%,transparent 100%);transform:scaleX(0);transform-origin:left center}.now-list{list-style:none;padding:0;margin:0}.now-list li{padding:4px 0;color:var(--text);display:flex;gap:14px;font-size:16px;line-height:1.2}.now-list li:before{content:"→";color:var(--muted);font-family:DM Mono,monospace;font-size:14px;flex-shrink:0;padding-top:2px}.entry{padding:20px 0;border-bottom:1px solid var(--rule)}.entry:last-child,.project:last-child{border-bottom:none}.entry:first-of-type,.project:first-of-type{padding-top:0}.entry-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:6px;flex-wrap:wrap;line-height:1.1}.entry-title{font-weight:700;color:var(--accent);font-size:16px}.entry-title--with-logo{display:inline-flex;align-items:center;gap:10px}.entry-logo{width:22px;height:22px;border-radius:6px;background:#ffffff0a;border:1px solid var(--rule);display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto}.entry-logo img{width:100%;height:100%;object-fit:contain;display:block}.entry-meta{font-family:DM Mono,monospace;font-size:11px;color:var(--muted);white-space:nowrap;letter-spacing:.04em}.entry-role{color:var(--muted-2);font-size:14px;margin-bottom:8px;line-height:1.3}.entry ul{margin:8px 0 0;padding-left:18px;color:var(--text);font-size:14px;line-height:1.5}.entry ul li{margin-bottom:4px}.project{padding:18px 0;border-bottom:1px solid var(--rule)}.project--interactive{border-radius:10px;padding:18px 14px;margin:0 -14px;transition:background .15s ease,border-color .15s ease,transform .15s ease}.project--interactive:hover{background:#ffffff08;transform:translateY(-1px)}.project--interactive[role=link]:hover{cursor:pointer}.project--interactive:focus-visible{outline:1px solid rgba(107,184,255,.7);outline-offset:3px}@media (prefers-reduced-motion: reduce){.project--interactive:hover{transform:none}}.project-tag{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;margin-bottom:6px;line-height:1.2}.project-title{font-weight:700;color:var(--accent);font-size:16px;margin-bottom:6px;line-height:1.2}.project-desc{color:var(--text);font-size:14px;line-height:1.5;margin-bottom:8px}.project-stack{font-family:DM Mono,monospace;font-size:11px;color:var(--muted-2);margin-bottom:6px;line-height:1.3}.project-link{font-family:DM Mono,monospace;font-size:11px;line-height:1.3}.project-link a{color:var(--muted-2);font-weight:400}.project-link a:hover{color:var(--hover)}.footer-card{position:sticky;top:0;height:100vh;background:var(--card-bg-2);box-shadow:var(--shadow);padding:60px 32px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;z-index:10}.pacman-caption{width:100%;max-width:620px;margin:0 auto 20px;display:flex;justify-content:space-between;align-items:center;font-family:DM Mono,monospace;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.15em;line-height:1}.pacman-caption .score{color:var(--garden-yellow)}.pacman-board{font-family:DM Mono,monospace;font-size:14px;line-height:1;white-space:pre;text-align:center;color:var(--garden-green);-webkit-user-select:none;user-select:none;letter-spacing:.05em;margin:0}.pacman-board .pac{color:var(--garden-yellow);font-weight:500}.pacman-board .dot{color:#3a3a3a}.pacman-board .ghost-p{color:var(--garden-pink)}.pacman-board .ghost-c{color:var(--garden-coral)}.pacman-board .ghost-b{color:var(--garden-blue)}.pacman-board .wall{color:#2a2a2a}.pacman-board .pellet{color:var(--garden-yellow)}.pacman-controls{margin-top:20px;font-family:DM Mono,monospace;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.15em;text-align:center;line-height:1.4}.pacman-controls kbd{display:inline-block;background:transparent;border:1px solid var(--rule);border-radius:3px;padding:2px 6px;color:var(--text);font-family:DM Mono,monospace;font-size:10px;margin:0 2px}@media (max-width: 720px){.card-inner--intro{max-height:calc(100dvh - 24px);padding:48px 24px 40px}.card-scroll{max-height:calc(100dvh - 24px);padding:40px 24px}.section-nav{right:32px;--strip-height: 14px;--strip-gap: 8px;--strip-active-height: 28px}.section-header{margin:40px 0 28px}.footer-card{padding:40px 20px}.pacman-board{font-size:10px}.entry-head{gap:4px}h1.name-hover{line-height:1}.name-headshot{top:0;bottom:auto;left:0;right:auto;transform:translateY(calc(-100% - 6px)) scale(.85)}.name-hover:hover .name-headshot{transform:translateY(calc(-100% - 6px)) scale(1)}}
