:root{--bg: #111214;--fg: #ececec;--muted: #9a9ca0;--accent: #8fb3ff;--rule: #24262a;--text-display: clamp(2rem, 5.5vw, 3.4rem);--track-display: -.028em;--lead-display: 1.08;--text-title: clamp(1.35rem, 1.6vw, 1.7rem);--track-title: -.015em;--lead-title: 1.25;--text-body: 1rem;--lead-body: 1.55;--text-label: .9rem;--track-label: .008em;--page-pad: 1.4rem;--gap-xs: .5rem;--gap-s: .9rem;--gap-m: 1.4rem;--gap-l: 2.4rem;--gap-xl: 4rem;--gap-2xl: 6rem;--radius-chip: 10px;--radius-card: 16px;--radius-surface: 20px;--lift: -4px;--surface: #191b1f;--surface-hover: #20232a;--surface-inset: #101216;--separator: rgba(255, 255, 255, .09);--separator-strong: rgba(255, 255, 255, .16);--shadow-rest: 0 1px 2px rgba(0, 0, 0, .4);--shadow-raised: 0 10px 30px -12px rgba(0, 0, 0, .7)}*{box-sizing:border-box;margin:0;padding:0}.terminal-bg{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;filter:blur(2.5px);transform:scale(1.03)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(120% 90% at 50% 40%,#11121433,#111214a8)}main{position:relative;z-index:1}#find-me,#projects,#contact{scroll-margin-top:96px}html{scroll-behavior:smooth}html,body{background:var(--bg);color:var(--fg);font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:clamp(18px,1.05vw,24px);line-height:var(--lead-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}main{max-width:36rem;margin:0 auto;padding:var(--gap-2xl) var(--page-pad) var(--gap-xl)}.intro .tagline{font-size:var(--text-display);line-height:var(--lead-display);font-weight:600;letter-spacing:var(--track-display);margin-bottom:var(--gap-s);text-transform:lowercase}.tagline-row{display:flex;align-items:center;gap:var(--gap-m)}.tagline-row .tagline{margin-bottom:0}.tagline-face{position:relative;display:inline-flex;flex:none;width:clamp(96px,8vw,132px);height:clamp(96px,8vw,132px);cursor:pointer}.tagline-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;transition:transform .3s ease,opacity .18s ease}.face--hover,.tagline-face:hover .face--default{opacity:0}.tagline-face:hover .face--hover{opacity:1}.tagline-face:hover .tagline-img{transform:scale(1.06)}@media (max-width: 520px){.tagline-face{width:76px;height:76px}}.intro .bio{font-size:clamp(1.3rem,2.1vw,1.75rem);line-height:1.32;font-weight:500;letter-spacing:-.015em;color:var(--muted);text-transform:lowercase;margin-bottom:var(--gap-2xl)}section h2{font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:var(--gap-m)}section+section{margin-top:var(--gap-xl)}.experience ul,.links{list-style:none}.experience li{display:flex;align-items:baseline;gap:10px;padding:14px 0;font-size:1.05rem;text-transform:lowercase;border-bottom:1px solid var(--rule)}.experience li:last-child{border-bottom:none}.emoji{font-size:1.1rem}.year{margin-left:auto;color:var(--muted);font-size:.95rem;white-space:nowrap}a{color:var(--accent);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s ease}a:hover{border-bottom-color:var(--accent)}.links{display:flex;flex-wrap:wrap;gap:8px 20px}.links li{text-transform:lowercase}@media (max-width: 520px){:root{--page-pad: .9rem}main{padding:var(--gap-xl) var(--page-pad) var(--gap-l)}.tagline-row{gap:var(--gap-s)}.experience li{flex-wrap:wrap}.year{margin-left:0;flex-basis:100%;padding-left:28px}}.quote{display:flex;align-items:center;gap:var(--gap-m);margin-top:var(--gap-2xl)}.quote-img{flex:none;width:130px;height:auto;filter:drop-shadow(0 14px 24px rgba(0,0,0,.45));transition:transform .4s ease}.quote:hover .quote-img{transform:rotate(-4deg) translateY(-3px)}.quote-text{margin:0;font-size:1.15rem;font-style:italic;font-weight:500;line-height:1.5;color:var(--fg);letter-spacing:-.01em;text-transform:lowercase}.quote-mark{color:var(--muted);font-size:1.6em;line-height:0;position:relative;top:.18em;margin:0 2px}.quote-cite{display:block;margin-top:10px;font-size:.9rem;font-style:normal;font-weight:500;color:var(--muted);letter-spacing:.01em;text-transform:lowercase}@media (max-width: 520px){.quote{flex-direction:column;align-items:flex-start;gap:14px}.quote-img{width:110px}}.cta{display:flex;align-items:center;gap:var(--gap-m);margin-top:var(--gap-l);padding:var(--gap-s) var(--gap-m);border-radius:var(--radius-surface);background:var(--surface);border:1px solid var(--separator);text-decoration:none;color:var(--fg);transition:transform .3s ease,background .3s ease,border-color .3s ease,box-shadow .3s ease}.cta:hover{transform:translateY(var(--lift));background:#ffffff0d;border-color:#ffffff2e;box-shadow:0 22px 50px -16px #0000008c}.cta-img,.cta-emoji{flex:none;width:64px;height:64px;border-radius:var(--radius-card);object-fit:cover;background:#ffffff0a;display:inline-flex;align-items:center;justify-content:center;font-size:36px;line-height:1;transition:transform .3s ease}.cta:hover .cta-img,.cta:hover .cta-emoji{transform:rotate(-6deg) scale(1.05)}.cta-text{display:flex;flex-direction:column;min-width:0}.cta-title{font-size:var(--text-title);line-height:var(--lead-title);font-weight:600;letter-spacing:var(--track-title);text-transform:lowercase}.cta-sub{font-size:.9rem;color:var(--muted);text-transform:lowercase;margin-top:2px}.cta-arrow{margin-left:auto;color:var(--muted);flex:none;transition:transform .3s ease,color .3s ease}.cta:hover .cta-arrow{transform:translate(6px);color:var(--fg)}.jumpscare{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#000;display:none;pointer-events:none}.jumpscare.active{display:block;animation:jumpscare-in .06s ease-out}.jumpscare img{width:100%;height:100%;object-fit:contain;background:#000;display:block}@keyframes jumpscare-in{0%{transform:scale(.7)}60%{transform:scale(1.06)}to{transform:scale(1)}}.big-name{cursor:pointer;transition:color .2s ease,text-shadow .2s ease;-webkit-user-select:none;user-select:none}.big-name:hover{color:#ff5b5b;text-shadow:0 0 18px rgba(255,91,91,.45)}.big-name:active{color:#ff2d2d}.pixel-trail{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;overflow:hidden;pointer-events:none}.pixel-trail i{position:absolute;display:block;background:var(--fg);will-change:opacity,width,height;transition:width .1s ease-out,height .1s ease-out}[data-reveal]{opacity:0;filter:blur(8px);transform:translateY(12px);transition:opacity .45s ease-out,filter .45s ease-out,transform .45s cubic-bezier(.22,1,.36,1);will-change:opacity,filter,transform}[data-reveal].reveal--visible{opacity:1;filter:blur(0);transform:translateY(0)}@media (prefers-reduced-motion: reduce){[data-reveal],[data-reveal].reveal--visible{opacity:1;filter:none;transform:none;transition:none}}a{text-underline-offset:4px}.lang-python,.lang-cpp,.lang-next{font-family:ui-monospace,JetBrains Mono,Menlo,Consolas,monospace;font-weight:700;letter-spacing:-.01em}.py-blue{color:#3776ab}.py-yellow{color:#f5c518}.lang-cpp{color:#00599c}.cpp-plus{display:inline-block;font-size:.78em;transform:translateY(-.25em);letter-spacing:-.05em;margin-left:.04em}.lang-next{color:#fff}.lang-link{text-decoration:none;border-bottom:none!important;display:inline-flex;align-items:center;gap:.3em;transition:transform .2s ease,filter .2s ease}.lang-icon{width:1em;height:1em;object-fit:contain;vertical-align:-.12em}.lang-text{text-transform:none}.lang-link:hover{transform:translateY(-2px);filter:brightness(1.15)}.lang-python.lang-link:hover{filter:brightness(1.15) drop-shadow(0 0 10px rgba(255,212,59,.5))}.lang-cpp.lang-link:hover{filter:brightness(1.2) drop-shadow(0 0 10px rgba(0,89,156,.6))}.lang-next.lang-link:hover{filter:brightness(1.2) drop-shadow(0 0 12px rgba(255,255,255,.5))}.cta,.stack-card{background:var(--surface);border:1px solid var(--separator);box-shadow:var(--shadow-rest)}.cta:hover,.stack-card:hover{background:var(--surface-hover);border-color:var(--separator-strong);box-shadow:var(--shadow-raised)}.cta-img,.cta-emoji{background:var(--surface-inset);border:1px solid var(--separator);box-shadow:none}.acc-item:active,.bubble-pill:active,.cta:active{transform:scale(.985);transition-duration:.1s}.cta-sub{letter-spacing:.008em}html,body{font-optical-sizing:auto}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}@media (prefers-reduced-transparency: reduce){.bubble-menu{background:var(--surface);backdrop-filter:none;-webkit-backdrop-filter:none}.terminal-bg{opacity:.22}}@media (prefers-contrast: more){:root{--muted: #c4c6ca;--rule: #4a4d52}.cta,.stack-card{background:#0e0f12;border-color:#ffffff80}.terminal-bg{opacity:.15}}:where(a,button,.stack-card,.acc-item,.cta):focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-card)}.bubble-pill:focus-visible{outline-offset:3px;border-radius:999px}.quote-text{max-width:34rem}.bubble-menu{--menu-bg: #ffffff;--menu-fg: #111111;position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:40;display:flex;align-items:center;gap:10px}.bubble-pill{display:inline-flex;align-items:center;justify-content:center;height:52px;border:none;border-radius:999px;background:var(--menu-bg);color:var(--menu-fg);font:inherit;font-size:1rem;font-weight:600;text-transform:lowercase;text-decoration:none;box-shadow:0 8px 30px #00000073}.bubble-logo{gap:8px;padding:0 22px;white-space:nowrap}.nav-rat{font-size:1.05em;line-height:1}.bubble-toggle{width:52px;flex-direction:column;gap:6px;cursor:pointer}.bubble-toggle span{display:block;width:20px;height:2px;border-radius:2px;background:currentColor;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.bubble-menu.open .bubble-toggle span:first-child{transform:translateY(4px) rotate(45deg)}.bubble-menu.open .bubble-toggle span:last-child{transform:translateY(-4px) rotate(-45deg)}.bubble-items{position:absolute;top:66px;left:50%;display:flex;flex-wrap:wrap;justify-content:center;gap:12px;width:min(90vw,620px);transform:translate(-50%);pointer-events:none}.bubble-item{padding:0 26px;opacity:0;transform:scale(0) rotate(var(--rot));transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .3s ease,background .25s ease,color .25s ease}.bubble-menu.open .bubble-items{pointer-events:auto}.bubble-menu.open .bubble-item{opacity:1;transform:scale(1) rotate(var(--rot));transition-delay:calc(var(--i) * .12s)}.bubble-item:hover,.bubble-item:focus-visible{background:var(--hover-bg);color:var(--hover-fg)}@media (prefers-reduced-motion: reduce){.bubble-item,.bubble-menu.open .bubble-item,.bubble-toggle span{transition-duration:.01ms;transition-delay:0s}}.accordion-gallery{display:flex;gap:10px;height:min(54vh,520px);margin-top:var(--gap-m)}.acc-item{position:relative;flex:1 1 0;flex-grow:12;min-width:0;overflow:hidden;border-radius:16px;background:#060010;text-decoration:none;filter:grayscale(1);transition:flex-grow .6s cubic-bezier(.215,.61,.355,1),filter .6s ease}.acc-item--active{flex-grow:52;filter:grayscale(0)}.acc-item img{width:100%;height:100%;object-fit:cover;object-position:left top;transform:scale(1.14);transition:transform .6s cubic-bezier(.215,.61,.355,1)}.acc-item--active img{transform:scale(1)}.acc-item:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,#060010d9,#06001000 55%)}.acc-item--empty{display:flex;align-items:center;justify-content:center;border:1px dashed var(--separator-strong);background:var(--surface-inset)}.acc-item--empty:after{content:none}.acc-item--empty .acc-label{position:static;opacity:.5;writing-mode:vertical-rl}.acc-item--empty.acc-item--active .acc-label{writing-mode:horizontal-tb;opacity:1}.acc-label{position:absolute;left:16px;bottom:14px;z-index:1;color:#fff;font-size:1rem;font-weight:600;white-space:nowrap;opacity:0;transition:opacity .4s ease}.acc-item--active .acc-label{opacity:1}@media (max-width: 640px){.accordion-gallery{flex-direction:column;height:70dvh}}@media (prefers-reduced-motion: reduce){.acc-item,.acc-item img{transition-duration:.01ms}}.stepper{padding:var(--gap-m);border-radius:var(--radius-surface);background:var(--surface);border:1px solid var(--separator);box-shadow:var(--shadow-rest)}.stepper-indicators{display:flex;gap:8px;margin-bottom:var(--gap-m)}.step-dot{width:8px;height:8px;border-radius:50%;background:var(--rule);transition:background .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.step-dot--done{background:var(--muted)}.step-dot--on{background:var(--accent);transform:scale(1.5)}.stepper-body{min-height:190px}.step h2{font-size:var(--text-title);line-height:var(--lead-title);letter-spacing:var(--track-title);margin-bottom:var(--gap-xs);text-transform:lowercase}.step p{color:var(--muted)}.step input,.step textarea{width:100%;margin-top:var(--gap-s);padding:12px 14px;border-radius:var(--radius-chip);border:1px solid var(--separator);background:var(--surface-inset);color:var(--fg);font:inherit;font-size:1rem;resize:vertical}.step input::placeholder,.step textarea::placeholder{color:#6f7176}.step input:focus,.step textarea:focus{outline:none;border-color:var(--accent)}.step-summary{margin-top:var(--gap-xs)}.step-error{min-height:1.2em;color:#ff8f8f;font-size:var(--text-label)}.stepper-footer{display:flex;justify-content:space-between;gap:10px;margin-top:var(--gap-s)}.step-btn{padding:10px 20px;border:1px solid var(--separator);border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:.95rem;cursor:pointer;transition:color .2s ease,background .2s ease,border-color .2s ease}.step-btn:hover{color:var(--fg);background:#ffffff12;border-color:#ffffff38}.step-back[hidden]{display:none}.step-next{margin-left:auto;background:var(--fg);border-color:var(--fg);color:#111214;font-weight:600}.step-next:hover{background:#fff;color:#111214}.stack{position:relative;width:clamp(260px,22vw,360px);height:clamp(260px,22vw,360px);margin-top:var(--gap-m);margin-bottom:calc(var(--gap-m) + 42px)}.stack-card{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;padding:20px;border-radius:var(--radius-card);border:1px solid var(--separator);box-shadow:var(--shadow-raised);text-align:left;text-decoration:none;color:var(--fg);font:inherit;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;transform-origin:center;background:radial-gradient(120% 90% at 100% 0%,color-mix(in srgb,var(--c) 26%,transparent) 0%,transparent 60%),var(--surface)}.stack-card--dragging{cursor:grabbing}.stack-icon{width:34px;height:34px;margin-bottom:auto}.stack-label{font-size:var(--text-title);line-height:var(--lead-title);letter-spacing:var(--track-title);font-weight:600;text-transform:lowercase}.stack-sub{color:var(--muted);font-size:var(--text-label);letter-spacing:var(--track-label)}.stack-hint{color:var(--muted);font-size:var(--text-label)}body{overflow:hidden}main{max-width:none;height:100dvh;overflow-y:auto;display:flex;flex-direction:column;justify-content:center;padding-block:var(--gap-l)}main>.page{width:100%;max-width:46rem;margin-inline:auto}.page[data-route="/projects"]{max-width:min(1040px,86vw);text-align:center}.page{display:none}.page--active{display:block}.page[data-route="/contact"]{max-width:32rem}.quote{position:fixed;left:0;right:0;bottom:22px;z-index:10;width:max-content;max-width:min(44rem,calc(100vw - 2 * var(--page-pad)));margin:0 auto;padding:0 var(--page-pad);align-items:center;justify-content:center;gap:10px;opacity:.7}.quote-img{width:34px}.quote-text{font-size:clamp(12px,.72vw,14px);line-height:1.45;letter-spacing:.004em;color:var(--muted);max-width:none}.quote-mark{font-size:1.3em}.quote-cite{margin-top:2px;font-size:.92em}.page[data-route="/find-me"]{text-align:center}.page[data-route="/find-me"] .stack{margin-inline:auto;transform:translate(-21px)}
