:root{--bg:#edeef0;--surface:#fff;--ink:#15171a;--ink-soft:#585f66;--line:#d8dadd;--accent:#7c3aed;--accent-2:#ec4899;--accent-soft:#f3e8ff;--accent-ink:#6d28d9;--glow:#7c3aed73;--glow-2:#ec489966;--ok:#10b981;--sans:"Archivo", "Helvetica Neue", Arial, sans-serif;--term:"JetBrains Mono", "DejaVu Sans Mono", "Ubuntu Mono", ui-monospace, monospace;--serif:var(--term);--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14161a;--surface:#1b1e23;--ink:#ededee;--ink-soft:#9aa0a6;--line:#2b2f35;--accent:#a78bfa;--accent-2:#f472b6;--accent-soft:#2a1145;--accent-ink:#c4b5fd;--glow:#a78bfa8c;--glow-2:#f472b680;--ok:#34d399}}:root[data-theme=dark]{--bg:#14161a;--surface:#1b1e23;--ink:#ededee;--ink-soft:#9aa0a6;--line:#2b2f35;--accent:#a78bfa;--accent-2:#f472b6;--accent-soft:#2a1145;--accent-ink:#c4b5fd;--glow:#a78bfa8c;--glow-2:#f472b680;--ok:#34d399}*{box-sizing:border-box}html{scroll-behavior:smooth;font-size:110%}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--ink);font-family:var(--term);-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.62}a{color:var(--accent-ink)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.mono{font-family:var(--mono)}.wrap{max-width:1180px;margin:0 auto;padding:0 28px}nav{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0}nav .wrap{justify-content:space-between;align-items:center;padding-top:14px;padding-bottom:14px;display:flex}nav .brand{font-family:var(--sans);letter-spacing:-.01em;color:var(--ink);font-size:1rem;font-weight:800;text-decoration:none}nav ul{font-family:var(--mono);letter-spacing:.02em;gap:22px;margin:0;padding:0;font-size:.76rem;list-style:none;display:flex}nav a{color:var(--ink-soft);text-decoration:none}nav a:hover{color:var(--ink)}@media (width<=620px){nav ul{gap:14px}nav ul li:nth-child(4){display:none}}header.hero{text-align:center;align-items:center;min-height:100svh;padding:90px 0 60px;display:flex}header.hero .wrap{width:100%}header.hero .hero-bio{margin-left:auto;margin-right:auto}header.hero .hero-cta{justify-content:center}.kicker{font-family:var(--mono);color:var(--accent-ink);letter-spacing:.03em;margin:0 0 14px;font-size:.78rem}h1{font-family:var(--sans);letter-spacing:-.02em;text-wrap:balance;margin:0 0 8px;font-size:clamp(2.4rem,6.5vw,3.4rem);font-weight:800;line-height:1.02}.hero-role{font-family:var(--sans);color:var(--ink-soft);margin:0 0 22px;font-size:1.2rem;font-weight:600}.hero-bio{max-width:62ch;color:var(--ink);margin:0 0 30px;font-size:1.08rem;line-height:1.65}.hero-cta{flex-wrap:wrap;gap:12px;display:flex}.btn{font-family:var(--sans);border:1.5px solid var(--ink);color:var(--ink);padding:11px 20px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-block}.btn.primary{background:var(--ink);color:var(--bg)}.btn:hover{background:var(--accent);border-color:var(--accent);color:#17110a}section{border-top:1px solid var(--line);padding:56px 0}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:30px;display:flex}.section-head h2{font-family:var(--sans);letter-spacing:-.01em;margin:0;font-size:1.5rem;font-weight:700}.section-head .count{font-family:var(--mono);color:var(--ink-soft);font-size:.76rem}.timeline{grid-template-columns:1fr 1fr;gap:22px 64px;display:grid;position:relative}.timeline:before{content:"";background:linear-gradient(var(--accent), var(--accent-2));opacity:.55;width:2px;transform:translateX(-50%) scaleY(var(--line,1));transform-origin:top;position:absolute;top:6px;bottom:6px;left:50%}.job:first-child{grid-area:1/1}.job:nth-child(2){grid-area:2/2}.job:nth-child(3){grid-area:3/1}.job:nth-child(4){grid-area:4/2}.job:nth-child(5){grid-area:5/1}.job:nth-child(6){grid-area:6/2}.job:before{content:"";background:var(--accent-2);width:11px;height:11px;box-shadow:0 0 0 4px var(--bg), 0 0 16px var(--glow-2);z-index:2;border-radius:50%;position:absolute;top:26px}.job:nth-child(odd):before{right:-32px;transform:translate(50%)}.job:nth-child(2n):before{left:-32px;transform:translate(-50%)}.job{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;padding:20px;transition:transform .22s,border-color .22s,box-shadow .22s;display:flex;position:relative}.job:hover{border-color:color-mix(in srgb, var(--accent) 45%, transparent);box-shadow:0 16px 40px -20px var(--glow);transform:translateY(-3px)}.job-top{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.job-date{font-family:var(--mono);color:var(--accent-2);font-size:.72rem}.job-kind{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);border:1px solid var(--line);border-radius:20px;padding:3px 9px;font-size:.66rem}.job-title{font-family:var(--sans);margin:0 0 3px;font-size:1.05rem;font-weight:700}.job-org{color:var(--accent-ink);margin:0 0 12px;font-size:.92rem;font-style:italic}.job ul{margin:0;padding:0;list-style:none}.job li+li{margin-top:8px}.job li{color:var(--ink);margin-bottom:6px;font-size:.95rem;line-height:1.55}@media (width<=900px){.timeline{grid-template-columns:1fr;column-gap:0;padding-left:26px}.timeline:before{left:4px;transform:none}.job:nth-child(n){grid-area:auto/1}.job:before,.job:nth-child(odd):before,.job:nth-child(2n):before{left:-26px;right:auto;transform:translate(-50%)}}.cards{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);flex-direction:column;padding:20px;display:flex}.card h3{font-family:var(--sans);margin:0 0 4px;font-size:1.05rem;font-weight:700}.card .role-note{font-family:var(--mono);color:var(--ink-soft);margin:0 0 10px;font-size:.7rem}.card p.desc{color:var(--ink);margin:0 0 14px;font-size:.9rem;line-height:1.55}.card a.repo{font-family:var(--mono);color:var(--accent-ink);border-top:1px solid var(--line);padding-top:12px;font-size:.78rem;text-decoration:none}.card a.repo:hover{text-decoration:underline}@media (width<=1080px){.cards{grid-template-columns:repeat(2,1fr)}}@media (width<=560px){.cards{grid-template-columns:1fr}}.other-repos{border-top:1px dashed var(--line);margin-top:22px;padding-top:20px}.other-repos .label{font-family:var(--mono);color:var(--ink-soft);letter-spacing:.03em;margin-bottom:12px;font-size:.72rem;display:block}.repo-strip{flex-wrap:wrap;gap:8px;display:flex}.repo-chip{font-family:var(--mono);border:1px solid var(--line);background:var(--surface);color:var(--ink);align-items:center;gap:7px;padding:6px 10px;font-size:.76rem;text-decoration:none;display:flex}.repo-chip:hover{border-color:var(--accent);color:var(--accent-ink)}.repo-chip .dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:7px;height:7px}.skill-groups{flex-direction:column;gap:20px;display:flex}.skill-group{grid-template-columns:160px 1fr;align-items:start;gap:16px;display:grid}.skill-group .g-label{font-family:var(--sans);color:var(--ink);font-size:.88rem;font-weight:700}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip{font-family:var(--mono);border:1px solid var(--line);color:var(--ink-soft);padding:5px 10px;font-size:.76rem}@media (width<=620px){.skill-group{grid-template-columns:1fr;gap:8px}}footer.contact{padding:50px 0 70px}footer.contact h2{font-family:var(--sans);margin:0 0 20px;font-size:1.5rem;font-weight:700}.contact-row{flex-wrap:wrap;gap:24px;margin-bottom:30px;display:flex}.contact-item .tb-label{font-family:var(--mono);color:var(--ink-soft);margin-bottom:4px;font-size:.7rem;display:block}.contact-item a,.contact-item .val{font-size:.98rem;text-decoration:none}.contact-item a:hover{text-decoration:underline}header.top{border-bottom:1px solid var(--line);padding:40px 0 28px}.back{font-family:var(--mono);color:var(--ink-soft);margin-bottom:18px;font-size:.76rem;text-decoration:none;display:inline-block}.back:hover{color:var(--accent-ink)}header.top h1{font-family:var(--sans);letter-spacing:-.02em;text-wrap:balance;margin:0 0 10px;font-size:clamp(1.9rem,5vw,2.5rem);font-weight:800}header.top p{max-width:62ch;color:var(--ink-soft);margin:0;font-size:1.02rem;line-height:1.6}.snapshot-tag{font-family:var(--mono);color:var(--ink-soft);border:1px dashed var(--line);align-items:center;gap:6px;margin-top:16px;padding:5px 10px;font-size:.72rem;display:inline-flex}.snapshot-tag .dot{background:var(--ink-soft);border-radius:50%;width:6px;height:6px}.diagram-section{padding:44px 0 8px}.diagram{width:100%;height:260px;margin-bottom:8px;position:relative}.diagram svg{width:100%;height:100%;position:absolute;inset:0}.diagram svg line{stroke:var(--line);stroke-width:1.5px;transition:stroke .15s}.node{font-family:var(--mono);background:var(--surface);border:1.5px solid var(--line);color:var(--ink);cursor:pointer;white-space:nowrap;align-items:center;gap:7px;padding:8px 10px;font-size:.7rem;display:flex;position:absolute;transform:translate(-50%,-50%)}.node:hover{border-color:var(--accent)}.node[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.node .led{background:var(--ok);border-radius:50%;flex-shrink:0;width:6px;height:6px}.node.host{font-family:var(--sans);padding:10px 16px;font-size:.82rem;font-weight:700}@media (width<=860px){.diagram{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;height:auto;display:grid}.diagram svg{display:none}.node{justify-content:center;position:static;transform:none}.node.host{grid-column:1/-1}}.panel{border:1px solid var(--line);background:var(--surface);border-top:3px solid var(--accent);margin-top:32px;padding:26px}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.panel-head h2{font-family:var(--sans);margin:0;font-size:1.3rem;font-weight:700}.panel-head .type{font-family:var(--mono);color:var(--accent-ink);font-size:.76rem}.panel .desc{color:var(--ink);max-width:62ch;margin:12px 0 20px;font-size:.98rem;line-height:1.6}.tags{flex-wrap:wrap;gap:7px;margin-bottom:20px;display:flex}.tags span{font-family:var(--mono);border:1px solid var(--line);color:var(--ink-soft);padding:4px 9px;font-size:.72rem}.metrics{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.metric .m-label{font-family:var(--mono);color:var(--ink-soft);letter-spacing:.03em;margin-bottom:6px;font-size:.68rem;display:block}.metric .m-value{font-family:var(--sans);margin-bottom:8px;font-size:1.15rem;font-weight:700}.metric .m-value .of{color:var(--ink-soft);font-size:.7em;font-weight:400}.bar{background:var(--line);height:5px;position:relative;overflow:hidden}.bar span{width:var(--w,0%);background:var(--accent);position:absolute;inset:0}@media (width<=640px){.metrics{grid-template-columns:1fr 1fr}}footer.page-footer{padding:0 0 60px}footer.page-footer .wrap{border-top:1px solid var(--line);padding-top:22px}footer.page-footer p{font-family:var(--mono);color:var(--ink-soft);margin:0;font-size:.76rem}.reveal{opacity:0;transform:translateY(24px)}.reveal.is-visible{opacity:1;transition:opacity .55s ease var(--d,0s), transform .55s cubic-bezier(.22, .61, .36, 1) var(--d,0s);transform:none}.diagram svg line{stroke-dasharray:4 7;animation:1.8s linear infinite flux}.diagram svg line.active{stroke-width:2.2px;animation-duration:.8s}@keyframes flux{to{stroke-dashoffset:-11px}}.node .led{animation:2.6s ease-in-out infinite led}.node[aria-pressed=true] .led{animation-duration:1.2s}@keyframes led{0%,to{opacity:1}50%{opacity:.45}}.bar span{transition:width .9s cubic-bezier(.22,.61,.36,1)}.node{transition:transform .18s,border-color .18s,background .18s}.node:hover{transform:translate(-50%,-50%)scale(1.07)}.card{transition:transform .22s,border-color .22s}.card:hover{border-color:var(--accent);transform:translateY(-4px)}.chip{transition:transform .15s,border-color .15s,color .15s}.chip:hover{border-color:var(--accent);color:var(--accent-ink);transform:translateY(-2px)}.repo-chip{transition:transform .15s,border-color .15s}.repo-chip:hover{border-color:var(--accent);transform:translateY(-2px)}@media (width<=860px){.node:hover{transform:scale(1.03)}}.scroll-progress{background:var(--accent);transform-origin:0;z-index:100;pointer-events:none;width:100%;height:2px;position:fixed;top:0;left:0;transform:scaleX(0)}@media (prefers-reduced-motion:reduce){.reveal,.reveal.is-visible{opacity:1;transition:none;transform:none}.diagram svg line,.node .led{animation:none}.diagram svg line{stroke-dasharray:none}.bar span{transition:none}.node:hover,.card:hover,.chip:hover,.repo-chip:hover{transform:none}.scroll-progress{display:none}}.cursor-canvas{pointer-events:none;z-index:0;opacity:0;width:100%;height:100%;transition:opacity 1.2s;position:fixed;inset:0}.cursor-canvas.is-on{opacity:1}header,section,footer{z-index:1;position:relative}.card{position:relative;overflow:hidden}.card:before{content:"";pointer-events:none;opacity:0;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%), color-mix(in srgb, var(--accent) 15%, transparent), transparent 68%);transition:opacity .25s;position:absolute;inset:0}.card:hover:before{opacity:1}.card>:not(.card-go):not(h3):not(.card-live){z-index:1;position:relative}.reveal .chip,.reveal .repo-chip,.reveal .tile,.reveal .tags span{opacity:0;transform:translateY(8px)}.reveal.is-visible .chip,.reveal.is-visible .repo-chip,.reveal.is-visible .tile,.reveal.is-visible .tags span{opacity:1;transition:opacity .4s ease var(--cd,0s), transform .4s ease var(--cd,0s);transform:none}.roll{will-change:transform, opacity}@media (prefers-reduced-motion:reduce){.cursor-canvas,.card:before{display:none}.reveal .chip,.reveal .repo-chip,.reveal .tile,.reveal .tags span{opacity:1;transition:none;transform:none}.roll{opacity:1!important;transform:none!important}}h1{background:linear-gradient(100deg, var(--ink) 30%, var(--accent) 62%, var(--accent-2) 88%);color:#0000;-webkit-background-clip:text;background-clip:text}.kicker{color:var(--accent-2)}.btn.primary{background:linear-gradient(100deg, var(--accent), var(--accent-2));color:#fff;box-shadow:0 6px 24px -8px var(--glow);border-color:#0000}.btn.primary:hover{background:linear-gradient(100deg, var(--accent-2), var(--accent));color:#fff;box-shadow:0 10px 30px -8px var(--glow-2)}.btn:not(.primary):hover{border-color:var(--accent-2);color:var(--accent-ink);box-shadow:0 0 20px -6px var(--glow-2);background:0 0}.card{background-clip:padding-box;border-top-color:#0000}.card:after{content:"";background:linear-gradient(90deg, var(--accent), var(--accent-2));z-index:2;height:3px;position:absolute;top:-3px;left:0;right:0}.card:hover{border-color:color-mix(in srgb, var(--accent) 55%, transparent);box-shadow:0 16px 40px -18px var(--glow)}.chip:hover,.repo-chip:hover{border-color:var(--accent-2);color:var(--accent-ink);box-shadow:0 0 16px -6px var(--glow-2)}.diagram svg line{stroke:color-mix(in srgb, var(--accent) 45%, var(--line))}.diagram svg line.active{stroke:var(--accent-2)}.node[aria-pressed=true]{border-color:var(--accent-2);box-shadow:0 0 22px -6px var(--glow-2)}.node:hover{border-color:var(--accent);box-shadow:0 0 18px -8px var(--glow)}.node .led{box-shadow:0 0 8px var(--ok)}.bar span{background:linear-gradient(90deg, var(--accent), var(--accent-2))}.panel{border-top:2px solid #0000;position:relative}.panel:after{content:"";background:linear-gradient(90deg, var(--accent), var(--accent-2));height:2px;position:absolute;top:-2px;left:0;right:0}.scroll-progress{background:linear-gradient(90deg, var(--accent), var(--accent-2))}.skill-cards{grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px;display:grid}.skill-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;transition:transform .22s,border-color .22s,box-shadow .22s;position:relative}.skill-card:hover{border-color:color-mix(in srgb, var(--accent) 45%, transparent);box-shadow:0 16px 40px -20px var(--glow);transform:translateY(-3px)}.skill-card h3{font-family:var(--sans);border-bottom:1px solid var(--line);margin:0 0 16px;padding-bottom:12px;font-size:1rem;font-weight:700}.tiles{grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:8px;display:grid}.tile{min-height:78px;font-family:var(--mono);text-align:center;border:1px solid var(--line);color:var(--ink-soft);background:color-mix(in srgb, var(--bg) 45%, transparent);border-radius:9px;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:12px 6px;font-size:.68rem;transition:transform .18s,border-color .18s,color .18s,box-shadow .18s,background .18s;display:flex}.tile:hover{border-color:var(--accent-2);color:var(--accent-ink);background:var(--accent-soft);box-shadow:0 8px 20px -8px var(--glow-2);transform:translateY(-3px)scale(1.04)}@media (prefers-reduced-motion:reduce){.skill-card:hover,.tile:hover{transform:none}}.card{color:inherit;border-radius:12px;padding-bottom:44px;text-decoration:none}.card-top{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.card-top .cat{text-transform:uppercase;letter-spacing:.07em;color:var(--accent-2);font-size:.66rem}.card-top .year{color:var(--ink-soft);font-size:.7rem}.card .chips{margin-top:4px}.card-go{z-index:2;color:var(--accent-2);opacity:.65;font-size:1.05rem;line-height:1;transition:transform .22s,opacity .22s;position:absolute;bottom:14px;right:16px}.card:hover .card-go{opacity:1;transform:translate(3px,-3px)}@media (prefers-reduced-motion:reduce){.card:hover .card-go{transform:none}}.snapshot-line{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:0 0 8px;display:flex}.snapshot-line .hint{color:var(--ink-soft);font-size:.74rem}.diagram-wrap{margin-top:6px}.mask-reveal{display:block;overflow:hidden}.mask-reveal .mask-inner{transition:transform .75s cubic-bezier(.22,.61,.36,1);display:block;transform:translateY(105%)}.reveal.is-visible .mask-reveal .mask-inner,.section-head.is-visible .mask-reveal .mask-inner,.section-head.reveal{transform:none}.reveal.from-left{transform:translate(-140px)}.reveal.from-left.is-visible{transform:none}@media (prefers-reduced-motion:reduce){.mask-reveal .mask-inner{transition:none;transform:none}.reveal.from-left{transform:none}}.job h3.job-title{font-family:var(--sans);margin:0 0 3px;font-size:1.02rem;font-weight:700}.job .chips{margin-top:12px}@media (prefers-reduced-motion:reduce){.job:hover{transform:none}}.tile img{object-fit:contain;width:26px;height:26px;transition:transform .18s}.tile em{font-style:normal;line-height:1.2}.tile.mono-logo i{background:var(--ink-soft);width:24px;height:24px;-webkit-mask:var(--logo) center / contain no-repeat;mask:var(--logo) center / contain no-repeat;transition:background .18s,transform .18s;display:block}.tile.mono-logo:hover i{background:var(--accent-ink)}.tile.no-logo em{font-size:.72rem}.tile:hover img,.tile:hover i{transform:scale(1.12)}@media (prefers-reduced-motion:reduce){.tile:hover img,.tile:hover i{transform:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}h1.typed{flex-wrap:wrap;justify-content:center;align-items:center;gap:2px;min-height:1.1em;display:flex}.caret{background:var(--accent-2);-webkit-text-fill-color:initial;width:3px;height:.92em;animation:1s step-end infinite caret-blink;display:inline-block}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes hero-slide{0%{opacity:0;transform:translate(-46px)}to{opacity:1;transform:none}}.hero-enter>*{animation:.8s cubic-bezier(.22,.61,.36,1) both hero-slide}.hero-enter>:first-child{animation-delay:50ms}.hero-enter>:nth-child(2){animation-delay:.18s}.hero-enter>:nth-child(3){animation-delay:.31s}.hero-enter>:nth-child(4){animation-delay:.44s}.hero-enter>:nth-child(5){animation-delay:.62s}.hero-scroll{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);flex-direction:column;align-items:center;gap:8px;margin-top:54px;font-size:.7rem;text-decoration:none;display:inline-flex}.hero-scroll-line{background:linear-gradient(var(--accent-2), transparent);width:1px;height:34px;animation:1.8s ease-in-out infinite scroll-hint}@keyframes scroll-hint{0%,to{transform-origin:top;opacity:.5;transform:scaleY(.4)}50%{transform-origin:top;opacity:1;transform:scaleY(1)}}.hero-scroll:hover{color:var(--accent-ink)}@media (prefers-reduced-motion:reduce){.hero-enter>*,.caret,.hero-scroll-line{animation:none}}header.hero h1{font-family:var(--term);letter-spacing:-.03em;color:var(--ink);-webkit-text-fill-color:currentColor;background:0 0;margin:0 0 14px;font-weight:700}header.hero h1 em{background:linear-gradient(100deg, var(--accent), var(--accent-2));color:#0000;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-style:normal}.hero-role{font-family:var(--term);color:var(--accent-ink);justify-content:center;align-items:center;gap:3px;min-height:1.6em;margin:0 0 22px;font-size:clamp(1.05rem,2.4vw,1.5rem);font-weight:500;display:flex}.kicker .dot-ok{background:var(--ok);width:7px;height:7px;box-shadow:0 0 8px var(--ok);border-radius:50%;margin-right:9px;animation:2.4s ease-in-out infinite led;display:inline-block}header.hero .kicker{color:var(--ink-soft);margin:30px 0 0;font-size:.72rem}.hero-bio{max-width:58ch;font-size:1.02rem;line-height:1.72}.card p.desc,.job li{font-size:.92rem;line-height:1.62}.section-head h2{letter-spacing:-.02em}.job-title,.card h3,.skill-card h3{letter-spacing:-.01em}.hero-bio,section>.wrap>p:not(.snapshot-line){max-width:62ch}.prompt{color:var(--ink-soft);white-space:nowrap;margin-right:9px;font-weight:400}.prompt b{color:var(--ok);font-weight:500}.prompt i{color:var(--accent);font-style:normal}@media (width<=560px){.prompt{font-size:.8em}}.typed-wrap{text-align:left;white-space:nowrap;min-width:22ch;display:inline-block}@media (width<=560px){.typed-wrap{min-width:0}.hero-role{justify-content:flex-start}}.reveal.from-right{transform:translate(140px)}.reveal.from-right.is-visible{transform:none}@media (prefers-reduced-motion:reduce){.reveal.from-right{transform:none}}html,body{overflow-x:clip}.reveal.from-left.is-visible,.reveal.from-right.is-visible{transition:opacity .7s ease var(--d,0s), transform .8s cubic-bezier(.22, .61, .36, 1) var(--d,0s)}@media (prefers-reduced-motion:reduce){.timeline:before{transform:translate(-50%)}}.card-icon{border:1px solid var(--line);background:linear-gradient(140deg, color-mix(in srgb, var(--accent) 16%, transparent), color-mix(in srgb, var(--accent-2) 12%, transparent));width:46px;height:46px;color:var(--accent-ink);border-radius:12px;justify-content:center;align-items:center;margin:2px 0 14px;transition:transform .22s,border-color .22s,color .22s;display:flex}.card-icon svg{width:22px;height:22px}.card:hover .card-icon{border-color:var(--accent-2);color:var(--accent-2);transform:translateY(-2px)rotate(-4deg)}@media (prefers-reduced-motion:reduce){.card:hover .card-icon{transform:none}}.chip.has-logo{align-items:center;gap:6px;display:inline-flex}.chip.has-logo img{object-fit:contain;flex-shrink:0;width:14px;height:14px}.job-org{align-items:center;gap:9px;display:flex}.org-mono,.org-img{border:1px solid var(--line);background:color-mix(in srgb, var(--bg) 55%, transparent);object-fit:cover;border-radius:6px;flex-shrink:0;width:28px;height:28px}.org-mono{font-family:var(--term);letter-spacing:.02em;color:var(--accent-ink);justify-content:center;align-items:center;font-size:.68rem;font-style:normal;font-weight:500;display:flex}.card{isolation:isolate}.card:before{z-index:-1}.card-main{color:inherit;text-decoration:none}.card-main:after{content:"";z-index:3;position:absolute;inset:0}.card:hover .card-main{color:var(--accent-ink)}.card-shot{aspect-ratio:16/9;border-bottom:1px solid var(--line);background:var(--bg);margin:-20px -20px 16px;overflow:hidden}.card-shot img{object-fit:cover;width:100%;height:100%;transition:transform .35s;display:block}.card:hover .card-shot img{transform:scale(1.04)}.shot-host{letter-spacing:.02em;color:var(--ink);background:color-mix(in srgb, var(--surface) 88%, transparent);border:1px solid var(--line);backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:6px;padding:4px 8px;font-size:.62rem;display:flex;position:absolute;bottom:10px;left:10px}.shot-host .dot{background:#46d17f;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #46d17f}.card-live{z-index:4;color:var(--accent-2);align-self:flex-start;padding:6px 0 0;font-size:.74rem;text-decoration:none;position:relative}.card-live:hover{text-decoration:underline}@media (prefers-reduced-motion:reduce){.card:hover .card-shot img{transform:none}}.card-shot.is-empty{background:repeating-linear-gradient(-45deg, transparent 0 9px, color-mix(in srgb, var(--line) 40%, transparent) 9px 10px), var(--bg);position:relative}.shot-host.is-off{color:var(--ink-soft)}.shot-host.is-off .dot{background:var(--ink-soft);box-shadow:none}.lab-intro{border:1px solid var(--line);background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 13%, transparent), color-mix(in srgb, var(--accent-2) 7%, transparent) 58%, transparent), var(--surface);border-radius:12px;grid-template-columns:1.05fr 1fr;gap:28px;margin:0 0 16px;padding:22px 24px 22px 27px;display:grid;position:relative;overflow:hidden}.lab-intro:before{content:"";background:linear-gradient(180deg, var(--accent), var(--accent-2));width:3px;position:absolute;top:0;bottom:0;left:0}.lab-lead{color:var(--ink);margin:0;font-size:1rem;line-height:1.68}.lab-specs{align-content:start;margin:0}.lab-specs>div{background-image:repeating-linear-gradient(90deg, color-mix(in srgb, var(--accent) 65%, transparent) 0 4px, transparent 4px 10px);background-position:0 0;background-repeat:no-repeat;background-size:100% 1px;grid-template-columns:104px 1fr;gap:12px;padding:10px 0;display:grid}.lab-specs>div:first-child{background-image:none;padding-top:0}.lab-specs dt{text-transform:uppercase;letter-spacing:.07em;color:var(--accent-2);padding-top:2px;font-size:.68rem}.lab-specs dd{color:var(--ink);margin:0;font-size:.8rem;line-height:1.5}@media (width<=860px){.lab-intro{grid-template-columns:1fr;gap:18px}}.snapshot-tag.direct{border-style:solid;border-color:color-mix(in srgb, var(--ok) 45%, transparent);color:var(--ink)}.snapshot-tag.direct .dot{background:var(--ok);box-shadow:0 0 8px var(--ok);animation:2.6s ease-in-out infinite led}.node.eteint .led{background:var(--ink-soft);box-shadow:none;animation:none}@media (prefers-reduced-motion:reduce){.snapshot-tag.direct .dot{animation:none}}nav ul.a-curseur{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 65%, transparent);border-radius:999px;gap:2px;padding:4px;position:relative}nav ul.a-curseur a{z-index:1;border-radius:999px;padding:7px 14px;transition:color .24s;display:block;position:relative}nav ul.a-curseur a.est-actif{color:var(--ink)}.nav-slider{pointer-events:none;opacity:0;background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 32%, transparent), color-mix(in srgb, var(--accent-2) 26%, transparent));border:1px solid color-mix(in srgb, var(--accent) 42%, transparent);width:0;box-shadow:0 0 18px -8px var(--glow);border-radius:999px;transition:transform .34s cubic-bezier(.4,0,.2,1),width .34s cubic-bezier(.4,0,.2,1),opacity .2s;position:absolute;top:4px;bottom:4px;left:0}@media (width<=760px){nav ul.a-curseur{gap:0;padding:3px}nav ul.a-curseur a{padding:6px 9px}.nav-slider{top:3px;bottom:3px}}@media (prefers-reduced-motion:reduce){.nav-slider{transition:opacity .2s}}.job:nth-child(odd) .job-top{flex-direction:row-reverse}@media (width<=860px){.job:nth-child(odd) .job-top{flex-direction:row}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
