@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(./space-grotesk-latin-BiW5CqrY.woff2)format("woff2")}:root{--text:#f4f6fb;--muted:#a9b3c7;--accent:#ffb347;--panel:#090c1ab8;--border:#ffffff1f;--font:"Space Grotesk", system-ui, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--text);font-family:var(--font);background:#05060f;margin:0}body.intro-playing{overflow:hidden}#scene{width:100%;height:100%;display:block;position:fixed;inset:0}.intro-cold #scene{background:#2872a3}.intro-overlay{pointer-events:none;z-index:1;position:fixed;inset:0}.intro-title{text-align:center;letter-spacing:-.02em;color:#fff;text-shadow:0 1px 2px #08142859,0 4px 24px #08142859;opacity:0;width:max-content;max-width:calc(100vw - 32px);margin:0;font-size:clamp(1.8rem,5vw,3.6rem);font-weight:700;position:absolute;top:14%;left:50%}.intro-title:nth-of-type(3){color:var(--text);text-shadow:0 2px 24px #0009;top:44%;left:30%}@media (aspect-ratio<=1){.intro-title:nth-of-type(3){top:14%;left:50%}}.intro-name{text-align:center;opacity:0;position:absolute;transform:translate(-100%,-50%)}.intro-name-slide{will-change:transform}.intro-name-title{margin:0}.intro-name-main{letter-spacing:-.03em;background:linear-gradient(#fff 30%,#ffd89a);color:#0000;filter:drop-shadow(0 0 30px #ffc87859);-webkit-background-clip:text;background-clip:text;font-size:clamp(3rem,11vw,8rem);font-weight:700;line-height:1;display:block}.intro-name-last{text-align:right;letter-spacing:.45em;text-transform:uppercase;color:#ffd89a;opacity:0;margin-top:.5em;padding-right:.6em;font-size:clamp(.9rem,2.2vw,1.6rem);font-weight:500;line-height:1;display:block}@media (aspect-ratio>=1){.intro-name-last{padding-right:1.6em}}.intro-hint{color:var(--text);letter-spacing:.25em;text-transform:uppercase;text-shadow:0 1px 8px #000000e6;opacity:0;white-space:nowrap;flex-direction:column;align-items:center;gap:.6rem;font-size:.85rem;text-decoration:none;display:flex;position:absolute;bottom:6%;left:50%;transform:translate(-50%)}.intro-done .intro-hint{pointer-events:auto}.intro-hint i{border:2px solid var(--text);border-radius:6px;width:22px;height:36px;position:relative}.intro-hint i:after{content:"";background:var(--accent);border-radius:2px;width:4px;height:8px;margin-left:-2px;animation:1.6s ease-in-out infinite hint;position:absolute;top:6px;left:50%}@keyframes hint{0%{opacity:1;transform:translateY(0)}80%{opacity:0;transform:translateY(12px)}to{opacity:0}}.content{z-index:2;pointer-events:none;position:relative}.content>:not(.spacer){pointer-events:auto}.spacer{height:100vh}section{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;max-width:960px;margin:0 auto 12vh;padding:3rem clamp(1rem,4vw,3rem)}section:first-of-type{margin-top:4vh}.eyebrow{color:var(--accent);letter-spacing:.2em;text-transform:uppercase;margin:0 0 .5rem;font-size:.85rem}section h2{margin:0 0 1rem;font-size:clamp(2rem,5vw,3rem)}section p{color:var(--muted);line-height:1.6}@media (width<=600px){section{margin-left:16px;margin-right:16px}}footer{justify-content:center;padding:0 16px 10vh;display:flex}.replay{font:inherit;color:var(--text);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;padding:.7rem 1.4rem}.replay:hover,.replay:focus-visible{border-color:var(--accent);color:var(--accent)}.stack{grid-template-columns:2fr 1fr;gap:1rem;margin-top:1.5rem;display:grid}.stack-card{border:1px solid var(--border);background:#ffffff08;border-radius:8px;padding:1.2rem 1.4rem}.stack-bi,.stack-other{grid-column:1/-1}.stack-card h3{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 1rem;font-size:.8rem;font-weight:600}.stack-tiles,.stack-chips,.trainings{margin:0;padding:0;list-style:none}.stack-tiles{flex-wrap:wrap;gap:1rem 1.6rem;display:flex}.stack-tiles li{align-items:center;gap:.8rem;font-size:1.1rem;font-weight:600;display:flex}.stack-tiles img,.stack-chips img{box-sizing:content-box;object-fit:contain;background:#fff}.stack-tiles img{border-radius:6px;width:36px;height:36px;padding:8px}.stack-tiles small{color:var(--muted);font-size:.85rem;font-weight:400;display:block}.stack-chips{flex-wrap:wrap;gap:.6rem;display:flex}.stack-chips li{border:1px solid var(--border);color:var(--text);border-radius:999px;align-items:center;gap:.5rem;padding:.4rem .9rem .4rem .5rem;font-size:.95rem;display:flex}.stack-chips li:not(:has(img)){padding-left:.9rem}.stack-chips img{border-radius:50%;width:18px;height:18px;padding:3px}.stack-langs{border-top:1px solid var(--border);margin:1.2rem 0 0;padding-top:1rem}.stack-langs strong{color:var(--text);margin-right:.6rem;font-weight:600}@media (width<=600px){.stack{grid-template-columns:1fr}}.trainings{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:1rem;margin-top:1.5rem;display:grid}.trainings li{border:1px solid var(--border);background:#ffffff08;border-radius:8px;align-items:center;gap:1.2rem;padding:1.2rem 1.4rem;display:flex}.training-logo{background:#fff;border-radius:6px;flex:none;place-items:center;width:96px;height:72px;padding:10px;display:grid}@media (width<=600px){.trainings li{flex-direction:column;align-items:flex-start}}.training-logo img{width:auto;max-width:100%;height:auto;max-height:100%}.trainings h3{margin:0 0 .4rem;font-size:1.15rem}.trainings p{margin:0}.publications{gap:1rem;margin:1.5rem 0 0;padding:0;list-style:none;display:grid}.publication{border:1px solid var(--border);background:#ffffff08;border-radius:8px;align-items:flex-start;gap:1.4rem;padding:1.4rem 1.5rem;display:flex}.publication h3{margin:0 0 .6rem;font-size:1.2rem;line-height:1.35}.publication p{margin:0 0 .8rem}.publication .publication-meta{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:.4rem;font-size:.8rem}.publication-note{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.3rem .8rem;font-size:.85rem;display:inline-block}.publication-actions{flex-wrap:wrap;align-items:center;gap:.8rem;display:flex}.no-ai-tag{border:1px solid var(--border);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-radius:4px;margin-left:auto;padding:.15rem .5rem;font-size:.72rem;font-weight:600}@media (width<=600px){.publication{flex-direction:column}}.contact-grid{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2rem 3rem;display:flex}.contact-main{flex:280px}.contact-pitch{color:var(--text);margin:0 0 1.4rem;font-size:1.25rem}.contact-icons{gap:.9rem;margin:0;padding:0;list-style:none;display:flex}.contact-icons a{border:1px solid var(--border);width:52px;height:52px;color:var(--text);background:#ffffff0a;border-radius:50%;place-items:center;transition:color .2s,border-color .2s,background .2s,transform .2s;display:grid}.contact-icons a:hover,.contact-icons a:focus-visible{color:#fff;border-color:var(--brand);background:var(--brand);transform:translateY(-2px)}.icon-mail{--brand:#ea4335}.icon-linkedin{--brand:#0a66c2}.icon-github{--brand:#24292f}.icon-github:hover,.icon-github:focus-visible{border-color:#ffffff80}.contact-icons svg{width:24px;height:24px}.cv-card{border-left:1px solid var(--border);color:var(--accent);flex-direction:column;flex:none;align-items:center;gap:.8rem;padding-left:3rem;font-weight:600;text-decoration:none;display:flex}.cv-card img{border-radius:6px;width:150px;height:auto;transition:transform .25s;display:block;transform:rotate(-3deg);box-shadow:0 10px 30px #00000073}.cv-card:hover img,.cv-card:focus-visible img{transform:rotate(0)scale(1.04)}.cv-card:hover .cv-card-label,.cv-card:focus-visible .cv-card-label{text-decoration:underline}@media (width<=600px){.contact-icons{justify-content:center}.cv-card{border-left:0;border-top:1px solid var(--border);width:100%;padding:2rem 0 0}}.projects{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:1.2rem;margin-top:1.5rem;display:grid}.career-title+.projects{margin-top:.8rem}.project{border:1px solid var(--border);background:#ffffff08;border-radius:8px;flex-direction:column;padding:1.4rem 1.5rem;display:flex}.project h3{margin:0 0 .6rem;font-size:1.4rem}.project p{margin:0 0 1rem}.project-head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.4rem;display:flex}.project-year{color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.85rem}.project .project-tag{color:var(--accent);letter-spacing:.15em;text-transform:uppercase;margin:0;font-size:.75rem}.project-keys{flex-wrap:wrap;gap:.4rem;margin:auto 0 0;padding:0;list-style:none;display:flex}.project-keys li{border:1px solid var(--border);color:var(--text);border-radius:999px;padding:.25rem .7rem;font-size:.8rem}.career-title{margin:2rem 0 .4rem;font-size:1.3rem}.career{margin-bottom:.5rem}.job{border-top:1px solid var(--border);grid-template-columns:56px 1fr;gap:1rem;padding:1.2rem 0;display:grid}.job-linked{position:relative}.job-linked:after{content:"";background:linear-gradient(var(--border), var(--accent));border-radius:2px;width:2px;position:absolute;top:calc(1.2rem + 64px);bottom:calc(8px - 1.2rem);left:27px}.job-linked+.job{border-top-color:#0000}.job-logo{object-fit:contain;background:#fff;border-radius:6px;width:56px;height:56px;padding:6px}.job h4{margin:0;font-size:1.05rem}.job .job-org{color:var(--text);margin:.15rem 0 0}.job .job-meta{margin:.1rem 0 .6rem;font-size:.85rem}.job ul{color:var(--muted);margin:0;padding-left:1.1rem;line-height:1.6}.job li+li{margin-top:.3rem}.job .job-skills{margin:.6rem 0 0;font-size:.85rem}.job-skills strong{color:var(--text);font-weight:600}.internships>summary{cursor:pointer;margin:.4rem 0 .6rem;list-style:none;display:inline-block}.internships>summary::-webkit-details-marker{display:none}.internships-close,.internships[open] .internships-open{display:none}.internships[open] .internships-close{display:inline}.internships-open:after{content:" ↓"}.internships-close:after{content:" ↑"}.career-link{margin-top:1rem;display:inline-block}@media (width<=600px){.job{grid-template-columns:44px 1fr;gap:.8rem}.job-logo{width:44px;height:44px}.job-linked:after{top:calc(1.2rem + 52px);left:21px}}.project .section-link{margin-top:1rem}.project-foot{justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;display:flex}.project-foot .section-link{margin-top:0}.project-helper{border:2px solid var(--border);border-radius:50%;flex-shrink:0;transition:border-color .2s;display:block}.project-helper:hover,.project-helper:focus-visible{border-color:var(--accent)}.project-helper img{object-fit:cover;border-radius:50%;width:32px;height:32px;display:block}.section-link{color:var(--accent);font-weight:600;text-decoration:none}.section-link:hover,.section-link:focus-visible{text-decoration:underline}.dev-replay{right:max(16px, env(safe-area-inset-right,0px));bottom:max(16px, env(safe-area-inset-bottom,0px));z-index:10;font:inherit;color:#05060f;background:var(--accent);cursor:pointer;border:0;border-radius:999px;padding:.6rem 1.1rem;font-size:.85rem;position:fixed;box-shadow:0 4px 20px #00000059}.dev-replay[hidden]{display:none}.intro-nav{--signal:#ffd89a;visibility:hidden;position:absolute;inset:0}.intro-nav-lines{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.intro-nav-line{stroke-width:1.5px;stroke-linecap:round;stroke-dasharray:1;transition:opacity .3s,stroke-width .3s}.intro-nav.has-hover .intro-nav-line{opacity:.4}.intro-nav.has-hover .intro-nav-line.is-hover{opacity:1;stroke-width:2.5px}.intro-nav-signal{fill:#fff6e4;filter:drop-shadow(0 0 6px var(--accent))}.intro-nav-list{margin:0;padding:0;list-style:none}.intro-nav-list li{width:0;height:0;position:absolute}.intro-nav-item{color:var(--text);white-space:nowrap;outline:none;align-items:center;gap:1rem;padding:.5rem .7rem;text-decoration:none;display:flex;position:absolute;top:0;left:0;transform:translate(calc(-.7rem - 13px),-50%)}.intro-done .intro-nav-item{pointer-events:auto}.intro-nav-dot{width:26px;height:26px;transform:scale(var(--dot,0));border:2px solid #ffd89acc;border-radius:50%;flex:none;transition:border-color .3s,box-shadow .3s;position:relative}.intro-nav-dot:after{content:"";background:var(--accent);border-radius:50%;transition:inset .3s,background .3s;position:absolute;inset:6px;box-shadow:0 0 10px #ffb347e6}.intro-nav-label{opacity:var(--label,0);transform:translateX(calc((1 - var(--label,0)) * -8px));align-items:baseline;gap:.6rem;transition:color .3s;display:flex}.intro-nav-text{letter-spacing:.01em;text-shadow:0 1px 12px #000000e6;font-size:clamp(1rem,1.35vw,1.2rem);font-weight:600;transition:transform .3s}.is-hover .intro-nav-dot{border-color:var(--signal);box-shadow:0 0 0 6px #ffd89a1f,0 0 22px #ffb3478c}.is-hover .intro-nav-dot:after{background:#fff6e4;inset:3px}.is-hover .intro-nav-text{color:var(--signal);transform:translate(4px)}.intro-nav-item:focus-visible .intro-nav-text{text-underline-offset:6px;text-decoration:underline}.intro-nav-item[aria-disabled=true]{cursor:default}.intro-nav-item[aria-disabled=true] .intro-nav-text{color:var(--muted)}.intro-nav-item[data-soon]:after{content:attr(data-soon);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);opacity:0;border:1px solid #ffb34766;border-radius:999px;padding:.15rem .5rem;font-size:.65rem;transition:opacity .3s}.is-hover .intro-nav-item[data-soon]:after{opacity:1}.intro-nav.is-portrait .intro-nav-label{transform:translate(calc(-50% + var(--label-shift,0px)), calc((1 - var(--label,0)) * 8px));position:absolute;bottom:calc(100% - .3rem);left:50%}.intro-nav.is-portrait .is-hover .intro-nav-text{transform:translateY(-2px)}.intro-nav.is-portrait .intro-nav-item[data-soon]:after{display:none}.explore-quote{z-index:2;text-align:center;letter-spacing:.01em;width:min(34rem,100vw - 48px);color:var(--text);text-shadow:0 2px 24px #000000e6;opacity:0;pointer-events:none;margin:0;font-size:clamp(1.2rem,2.4vw,1.75rem);font-weight:400;line-height:1.45;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}body.explore-body{overflow:hidden}.explore-ui{z-index:3;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .5s,visibility 0s .5s;position:fixed;inset:0}.explore-ui.is-active{opacity:1;visibility:visible;transition:opacity .5s}.explore-ui button,.explore-ui a{font:inherit}.explore-back{top:max(20px, env(safe-area-inset-top,0px));left:max(20px, env(safe-area-inset-left,0px));pointer-events:auto;color:var(--text);background:var(--panel);border:1px solid var(--border);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;padding:.55rem 1.1rem;font-size:.95rem;transition:border-color .3s,color .3s;position:absolute}.explore-back:hover,.explore-back:focus-visible{color:var(--signal,#ffd89a);border-color:#ffd89a80}.explore-hint{left:50%;bottom:max(28px, env(safe-area-inset-bottom,0px));text-align:center;width:max-content;max-width:calc(100vw - 32px);color:var(--muted);text-shadow:0 1px 10px #000000e6;margin:0;font-size:.9rem;transition:opacity .4s;position:absolute;transform:translate(-50%)}.explore-hint.is-hidden{opacity:0}.explore-label{white-space:nowrap;color:var(--signal,#ffd89a);background:var(--panel);opacity:0;border:1px solid #ffd89a59;border-radius:999px;margin:0;padding:.3rem .8rem;font-size:.9rem;font-weight:600;transition:opacity .2s;position:absolute;transform:translate(-50%,calc(-100% - 18px))}.explore-label.is-visible{opacity:1}.explore-card{pointer-events:auto;background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;visibility:hidden;border-radius:8px;width:min(380px,34vw);max-height:calc(62% - 24px);padding:1.6rem 1.6rem 1.4rem;transition:opacity .4s,transform .4s,visibility 0s .4s;position:absolute;top:38%;right:max(5vw,24px);overflow-y:auto;transform:translateY(12px);box-shadow:0 20px 60px #00000073}.explore-card.is-open{opacity:1;visibility:visible;transition:opacity .4s .35s,transform .4s .35s;transform:none}.explore-card h2{letter-spacing:-.01em;margin:0 2rem .6rem 0;font-size:1.4rem}.explore-text{color:var(--muted);margin:0;line-height:1.55}.explore-close{border:1px solid var(--border);width:2rem;height:2rem;color:var(--text);cursor:pointer;background:0 0;border-radius:50%;font-size:1.2rem;line-height:1;position:absolute;top:.9rem;right:.9rem}.explore-close:hover,.explore-close:focus-visible{border-color:#ffd89a80}.explore-page{color:#05060f;background:var(--accent);border-radius:999px;margin-top:1.2rem;padding:.55rem 1.1rem;font-weight:600;text-decoration:none;display:inline-block}.explore-page[hidden]{display:none}.explore-page.is-soon{color:var(--muted);border:1px solid var(--border);cursor:default;background:0 0}@media (aspect-ratio<=1){.explore-card{top:auto;left:16px;right:16px;bottom:max(16px, env(safe-area-inset-bottom,0px));width:auto;max-height:55%;transform:translateY(16px)}.explore-card.is-open{transform:none}}.project-page{padding:10vh 0}.project-page section{margin-top:0}.project-soon{font-style:italic}.project-story>p{max-width:68ch;line-height:1.7}.project-story figure{margin:0}.project-story img,.project-story video{border:1px solid var(--border);background:#000;border-radius:8px;width:100%;height:auto;display:block}.project-story figcaption{color:var(--muted,var(--text));margin-top:.45rem;font-size:.82rem}.story-media{max-width:560px;margin:2rem 0!important}.story-gallery{grid-template-columns:repeat(3,1fr);gap:1rem;margin:2rem 0;display:grid}.story-gallery img{aspect-ratio:16/10;object-fit:cover;height:auto}.story-gallery img[height="1400"],.story-gallery video{aspect-ratio:9/16;object-fit:cover}.story-gallery.is-portrait img{aspect-ratio:3/4}.story-gallery.is-pair{grid-template-columns:repeat(2,1fr)}.story-gallery.is-pair img{aspect-ratio:4/3}@media (width<=640px){.story-gallery{grid-template-columns:1fr 1fr}.story-video,.story-gallery figure:last-child,.story-gallery.is-pair figure{grid-column:1/-1}.story-video video{width:auto;max-width:100%;height:75vh;margin:0 auto}}.side-preview{flex-wrap:wrap;align-items:flex-start;gap:1.5rem 2.5rem;margin-top:1.6rem;display:flex}.side-list{flex-wrap:wrap;gap:1.2rem 1.6rem;margin:0;padding:0;list-style:none;display:flex}.side-list li{text-align:center;flex-direction:column;align-items:center;gap:.4rem;width:88px;display:flex}.side-icon{border:1px solid var(--border);background:#ffffff0a;border-radius:50%;place-items:center;width:64px;height:64px;margin-bottom:.1rem;display:grid}.side-icon svg{fill:none;width:30px;height:30px;stroke:var(--accent);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.side-name{font-size:.9rem}.side-year{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.75rem}.side-preview .section-link{flex-shrink:0;margin-top:20px}.back-link{margin-top:2rem}@media (width<=600px){.side-list{grid-template-columns:repeat(4,1fr);gap:.5rem;width:100%;display:grid}.side-list li{width:auto}.side-year{white-space:normal}.side-preview .section-link{margin-top:0}.side-icon{width:56px;height:56px}}.side-list a{color:inherit;flex-direction:column;align-items:center;gap:.4rem;text-decoration:none;display:flex}.side-list a:hover .side-icon,.side-list a:focus-visible .side-icon{border-color:var(--accent)}.project-year{margin-left:auto}.project[id]{scroll-margin-top:2rem}.project-head h3{margin:0}.project-head{margin-bottom:.8rem}.contact-icons li{position:relative}.contact-icons a.copied{color:#fff;background:#2ea043;border-color:#2ea043;animation:.45s copied-pop}@keyframes copied-pop{0%{transform:scale(1)}40%{transform:scale(1.18)}70%{transform:scale(.94)}to{transform:scale(1)}}.copy-bubble{border:1px solid var(--border);color:var(--text);white-space:nowrap;pointer-events:none;opacity:0;background:#11162b;border-radius:6px;flex-direction:column;gap:.15rem;padding:.55rem .8rem;font-size:.85rem;font-weight:600;transition:opacity .2s,transform .2s;display:flex;position:absolute;bottom:calc(100% + 12px);left:0;transform:translateY(6px)}.copy-bubble small{color:var(--muted);font-size:.75rem;font-weight:400}.copy-bubble:after{content:"";border:6px solid #0000;border-top-color:#11162b;position:absolute;top:100%;left:20px}.copy-bubble.show{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.contact-icons a.copied{animation:none}}.skill-link{cursor:pointer;border-radius:6px;transition:color .2s,border-color .2s}.stack-tiles .skill-link:is(:hover,:focus-visible)>span,.stack-chips .skill-link:is(:hover,:focus-visible),.stack-langs .skill-link:is(:hover,:focus-visible),.mention.is-lit{background-image:linear-gradient(100deg, var(--text) 0 38%, #4285f4 44%, #9b72cb 50%, #d96570 55%, var(--accent) 60% 100%);color:#0000;background-size:300% 100%;-webkit-background-clip:text;background-clip:text;animation:.9s cubic-bezier(.4,0,.2,1) forwards reflet}.skill-link:focus-visible{outline:none}.stack-chips .skill-link:is(:hover,:focus-visible){border-color:var(--accent)}@keyframes reflet{0%{background-position:0 0}to{background-position:100% 0}}.has-halo{position:relative}.halo-sweep{pointer-events:none;mix-blend-mode:screen;background-image:linear-gradient(100deg,#0000 0 38%,#4285f44d 44%,#9b72cb57 50%,#d965704d 56%,#0000 62% 100%);background-size:300% 100%;border-radius:8px;animation:1.3s cubic-bezier(.4,0,.2,1) forwards halo-sweep,1.6s ease-out forwards halo-glow;position:absolute;inset:.3rem -.9rem}@keyframes halo-sweep{0%{background-position:0 0}to{background-position:100% 0}}@keyframes halo-glow{0%{box-shadow:none}30%{box-shadow:0 0 0 1px #9b72cb,0 0 28px #9b72cb59}to{box-shadow:0 0 0 1px #0000,0 0 28px #0000}}.mention.is-lit{font-weight:600}.mention-link{cursor:pointer}@media (prefers-reduced-motion:reduce){.skill-link,.skill-link>span,.mention.is-lit{background-position:100% 0!important;animation:none!important}}.side-list a{color:inherit;text-decoration:none}.side-icon{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,background .35s;position:relative}.side-icon svg{overflow:visible}@property --orbit{syntax:"<angle>";inherits:false;initial-value:0deg}.side-icon:before{content:"";background:conic-gradient(from var(--orbit), var(--accent), #d96570, #9b72cb, #4285f4, var(--accent));-webkit-mask-composite:xor;opacity:0;border-radius:50%;padding:2px;transition:opacity .3s;position:absolute;inset:-2px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}@keyframes orbit{to{--orbit:360deg}}.side-list a:is(:hover,:focus-visible,.is-playing) .side-icon{background:#ffb34714;transform:translateY(-6px)scale(1.06);box-shadow:0 10px 30px #ffb3472e}.side-list a:is(:hover,:focus-visible,.is-playing) .side-icon:before{opacity:1;animation:2.2s linear infinite orbit}.side-list a:focus-visible{outline:none}.side-icon .draw{stroke-dasharray:1}.side-list a:is(:hover,:focus-visible,.is-playing) .draw{animation:.9s ease-in-out both icon-draw}.side-list a:is(:hover,:focus-visible,.is-playing) .draw+.draw{animation-delay:.25s}@keyframes icon-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.side-icon .phone,.side-icon .lens{transform-box:fill-box;transform-origin:50%}.side-list a:is(:hover,:focus-visible,.is-playing) .phone{animation:.5s ease-in-out 2 icon-buzz}.side-list a:is(:hover,:focus-visible,.is-playing) .lens{animation:.9s ease-out icon-pulse}@keyframes icon-buzz{0%,to{transform:rotate(0)}20%{transform:rotate(-9deg)}40%{transform:rotate(8deg)}60%{transform:rotate(-6deg)}80%{transform:rotate(4deg)}}@keyframes icon-pulse{40%{transform:scale(1.35)}}.side-icon .guitar{transform-box:fill-box;transform-origin:40% 70%}.side-icon .wave{opacity:0;transform-box:view-box;transform-origin:10px 15px}.side-list a:is(:hover,:focus-visible,.is-playing) .guitar{animation:.8s cubic-bezier(.3,1.6,.5,1) icon-strum}.side-list a:is(:hover,:focus-visible,.is-playing) .wave{animation:.9s ease-out .15s icon-wave}@keyframes icon-strum{30%{transform:rotate(-14deg)}}@keyframes icon-wave{0%{opacity:0;transform:scale(.6)}40%{opacity:1}to{opacity:0;transform:scale(1.3)}}.side-icon .rocket{transform-box:view-box}.side-icon .flame{stroke:#ff7a3d;opacity:0;transform-box:view-box;transform-origin:12px 19px}.side-list a:is(:hover,:focus-visible,.is-playing) .rocket{animation:1.4s cubic-bezier(.5,0,.3,1) icon-liftoff}.side-list a:is(:hover,:focus-visible,.is-playing) .flame{animation:1.4s ease-out icon-flame}@keyframes icon-liftoff{0%{transform:translateY(0)}15%{transform:translate(-.6px,.4px)}22%{transform:translate(.6px)}60%{opacity:1;transform:translateY(-9px)}61%{opacity:0;transform:translateY(-9px)}62%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes icon-flame{0%,10%{opacity:0;transform:scaleY(.3)}25%,55%{opacity:1;transform:scaleY(1.2)}60%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.side-icon,.side-icon *,.side-icon:before{transition:none!important;animation:none!important}}.stack-hint{color:var(--muted);text-align:center;opacity:0;margin:1.2rem 0 0;font-size:.8rem;transition:opacity .4s,transform .4s;transform:translateY(4px)}#stack:is(:hover,:focus-within) .stack-hint{opacity:.75;transform:none}@media (hover:none){.stack-hint{opacity:.75;transform:none}}.planet-page .project-page{z-index:1;padding-top:0;position:relative}.planet-hero{height:6vh}.planet-page #side-projects{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:none;padding-top:0}.planet-intro,.planet-page #side-projects .project{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.planet-intro{border-radius:8px;padding:2rem clamp(1rem,4vw,2rem)}.planet-page .career-title{text-shadow:0 2px 16px #000c;margin-top:2.5rem}.planet-page .back-link{text-shadow:0 2px 16px #000c}.planet-page .project-page{transition:opacity .6s}body.is-leaving .project-page{opacity:0;pointer-events:none}.planet-page .project-page{animation:.9s cubic-bezier(.2,.7,.2,1) .15s backwards planet-page-in}@keyframes planet-page-in{0%{opacity:0;transform:translateY(48px)}}@media (prefers-reduced-motion:reduce){.planet-page .project-page{animation:none}}.side-preview>.halo-sweep{border-radius:12px;inset:-1.1rem -1.4rem}.lang-switch{top:max(16px, env(safe-area-inset-top,0px));right:max(16px, env(safe-area-inset-right,0px));z-index:60;font-family:var(--font);position:fixed}.lang-flag{border-radius:3px;width:24px;height:16px;display:block;box-shadow:0 0 0 1px #ffffff2e}.lang-current{background:var(--panel);border:1px solid var(--border);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;padding:7px;transition:border-color .2s;display:block}.lang-current:hover,.lang-current:focus-visible,.lang-current[aria-expanded=true]{border-color:#ffd89a80}.lang-menu{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:8px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #00000059}.lang-menu[hidden]{display:none}.lang-menu button{width:100%;font:inherit;color:var(--text);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:.6rem;padding:.45rem .7rem;font-size:.9rem;display:flex}.lang-menu button:hover,.lang-menu button:focus-visible{background:#ffffff14}.lang-menu button[aria-current]{color:var(--accent)}.maintenance-dialog{border:1px solid var(--border);max-width:min(360px,100vw - 32px);color:var(--text);font-family:var(--font);text-align:center;background:#090c1af0;border-radius:8px;padding:22px 24px 18px}.maintenance-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#03050c8c}.maintenance-dialog p{color:var(--muted);margin:0 0 8px;line-height:1.5}.maintenance-dialog .maintenance-title{color:var(--text);font-size:1.15rem;font-weight:600}.maintenance-close{border:1px solid var(--accent);color:var(--accent);font:inherit;cursor:pointer;background:0 0;border-radius:8px;margin-top:10px;padding:8px 18px}.maintenance-close:hover,.maintenance-close:focus-visible{background:var(--accent);color:#0b0e1a}
