@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-cyrillic-ext-400-normal.C_uLvvQ5.woff2)format("woff2"),url(/_astro/jetbrains-mono-cyrillic-ext-400-normal.Bh0R7Dhr.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-cyrillic-400-normal.BEIGL1Tu.woff2)format("woff2"),url(/_astro/jetbrains-mono-cyrillic-400-normal.ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-greek-400-normal.C190GLew.woff2)format("woff2"),url(/_astro/jetbrains-mono-greek-400-normal.B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-vietnamese-400-normal.ByoDsISC.woff2)format("woff2"),url(/_astro/jetbrains-mono-vietnamese-400-normal.CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-ext-400-normal.Bc8Ftmh3.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-ext-400-normal.fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-cyrillic-ext-500-normal.C9ShMxGR.woff2)format("woff2"),url(/_astro/jetbrains-mono-cyrillic-ext-500-normal.CEVyPk4Y.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-cyrillic-500-normal.DmUKJPL_.woff2)format("woff2"),url(/_astro/jetbrains-mono-cyrillic-500-normal.DJqRU3vO.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-greek-500-normal.JpySY46c.woff2)format("woff2"),url(/_astro/jetbrains-mono-greek-500-normal.D7SFKleX.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-vietnamese-500-normal.BvH7FW2L.woff2)format("woff2"),url(/_astro/jetbrains-mono-vietnamese-500-normal.DNRqzVM1.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-ext-500-normal.Cut-4mMH.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-ext-500-normal.ckzbgY84.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-sans:"Inter Variable", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--bg:#f7f8fa;--bg-elev:#fff;--bg-sunken:#eff1f5;--text:#0f1115;--text-2:#3d4350;--muted:#6b7280;--border:#e3e5ea;--border-strong:#cfd3db;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:#eef0ff;--accent-ink:#3730a3;--on-accent:#fff;--ok:#16a34a;--term-bg:#17181e;--term-bg-2:#111217;--term-border:#2b2d36;--term-text:#e7e8ee;--term-muted:#7d8191;--term-ok:#4ade80;--term-accent:#8b8cf6;--radius:14px;--radius-sm:10px;--shadow-card:0 1px 2px #0f11150a, 0 8px 24px -12px #0f11151a;--shadow-term:0 40px 80px -30px #0f111573, 0 18px 36px -18px #0f11154d;--container:1160px;--header-h:80px;color-scheme:light}:root[data-theme=dark]{--bg:#0b0c10;--bg-elev:#13151b;--bg-sunken:#101217;--text:#f2f3f6;--text-2:#b9becb;--muted:#8b919e;--border:#23262f;--border-strong:#343845;--accent:#6366f1;--accent-hover:#7c7ff5;--accent-soft:#1c1d3a;--accent-ink:#b4b8ff;--on-accent:#fff;--ok:#4ade80;--term-bg:#121318;--term-bg-2:#0d0e12;--term-border:#2a2c36;--shadow-card:0 1px 2px #0000004d;--shadow-term:0 40px 80px -30px #000000b3;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--bg:#0b0c10;--bg-elev:#13151b;--bg-sunken:#101217;--text:#f2f3f6;--text-2:#b9becb;--muted:#8b919e;--border:#23262f;--border-strong:#343845;--accent:#6366f1;--accent-hover:#7c7ff5;--accent-soft:#1c1d3a;--accent-ink:#b4b8ff;--term-bg:#121318;--term-bg-2:#0d0e12;--term-border:#2a2c36;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text-2);font-family:var(--font-sans);font-feature-settings:"cv11", "ss01";-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1.0625rem;line-height:1.65}h1,h2,h3,h4{color:var(--text);letter-spacing:-.02em;margin:0;line-height:1.1}p{margin:0}a{color:var(--accent-ink);text-underline-offset:3px;text-decoration-thickness:1px}img{max-width:100%;height:auto}ul,ol{margin:0;padding:0}code,kbd,.mono{font-family:var(--font-mono);font-size:.9em}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}::selection{background:var(--accent);color:var(--on-accent)}.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}.skip-link{z-index:100;background:var(--accent);color:var(--on-accent);border-radius:8px;padding:10px 16px;font-weight:600;text-decoration:none;position:absolute;top:-60px;left:16px}.skip-link:focus{top:16px}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:24px}.site-header{z-index:50;height:var(--header-h);background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:saturate(160%)blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header .container{align-items:center;gap:24px;height:100%;display:flex}.brand{color:var(--text);letter-spacing:-.02em;align-items:center;gap:12px;margin-right:auto;font-size:1.3rem;font-weight:700;text-decoration:none;display:inline-flex}.brand-mark{background:var(--accent);width:36px;height:36px;color:var(--on-accent);letter-spacing:-.04em;border-radius:9px;place-items:center;font-size:1.25rem;font-weight:800;display:grid;position:relative}.brand-mark small{letter-spacing:.02em;background:#ffffff38;border-radius:3px;padding:0 2px;font-size:.45rem;font-weight:700;line-height:1.4;position:absolute;bottom:3px;right:3px}.nav{align-items:center;gap:28px;display:flex}.nav a{color:var(--text-2);white-space:nowrap;font-size:.95rem;text-decoration:none;transition:color .15s}.nav a:hover,.nav a[aria-current=true]{color:var(--text)}.nav a[aria-current=true]{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:8px;text-decoration-thickness:2px}.header-actions{align-items:center;gap:12px;display:flex}.icon-btn{border:1px solid var(--border-strong);background:var(--bg-elev);width:44px;height:44px;color:var(--text);cursor:pointer;border-radius:10px;place-items:center;transition:border-color .15s,background .15s;display:inline-grid}.icon-btn:hover{border-color:var(--text-2)}.icon-btn svg{width:18px;height:18px}.theme-switch{border:1px solid var(--border-strong);background:var(--bg-elev);border-radius:999px;align-items:center;gap:2px;height:44px;padding:4px;display:inline-flex}:root:not(.js) .theme-switch{display:none}.theme-switch button{width:34px;height:34px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;padding:0;transition:background .15s,color .15s;display:grid}.theme-switch button:hover{color:var(--text)}.theme-switch button[aria-checked=true]{background:var(--accent-soft);color:var(--accent-ink)}.theme-switch button:focus-visible{outline-offset:0;border-radius:999px}.theme-switch svg{width:17px;height:17px}.theme-auto{font-size:.9rem;font-weight:600;line-height:1}.nav-toggle{display:none}.btn{min-height:48px;font:inherit;white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:10px;padding:0 24px;font-size:1rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}.btn svg{flex:none;width:18px;height:18px}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:hover svg{transform:translate(2px)}.btn-primary svg{transition:transform .15s}.btn-secondary{background:var(--bg-elev);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover{border-color:var(--text-2)}.btn-sm{min-height:44px;padding:0 16px;font-size:.95rem}.btn-ghost-dark{color:var(--term-text);border-color:var(--term-border);background:0 0}.btn-ghost-dark:hover{border-color:var(--term-muted)}.pill{border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--text-2);border-radius:999px;align-items:center;gap:10px;padding:8px 16px;font-size:.9rem;display:inline-flex}.dot{background:var(--ok);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb, var(--ok) 20%, transparent);border-radius:50%;flex:none}.eyebrow{color:var(--accent-ink);font-family:var(--font-mono);letter-spacing:.01em;margin-bottom:14px;font-size:.85rem;font-weight:500;display:inline-block}.chips{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.chip{border:1px solid var(--border);background:var(--bg-sunken);color:var(--text-2);font-family:var(--font-mono);border-radius:7px;align-items:center;padding:4px 10px;font-size:.78rem;line-height:1.5;display:inline-flex}.chip-accent{background:var(--accent-soft);color:var(--accent-ink);border-color:#0000}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card)}.hero{padding:88px 0 104px}.hero-grid{grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);align-items:center;gap:64px;display:grid}.hero h1{letter-spacing:-.05em;margin-top:40px;font-size:clamp(3.2rem,7.2vw,5.6rem);font-weight:800;line-height:.96}.hero-title{color:var(--muted);letter-spacing:-.04em;margin-top:14px;font-size:clamp(1.9rem,3.6vw,2.9rem);font-weight:800;line-height:1.05;display:block}.hero .lead{max-width:34em;color:var(--text-2);margin-top:32px;font-size:1.22rem;line-height:1.6}.quote{border-left:3px solid var(--accent);max-width:32em;color:var(--text-2);margin:32px 0 0;padding:4px 0 4px 18px;font-size:1.05rem}.hero-actions{flex-wrap:wrap;gap:16px;margin-top:40px;display:flex}.footnote{color:var(--muted);margin-top:36px;font-size:.9rem}.terminal{background:var(--term-bg);border:1px solid var(--term-border);box-shadow:var(--shadow-term);color:var(--term-text);border-radius:18px;overflow:hidden}.term-bar{border-bottom:1px solid var(--term-border);font-family:var(--font-mono);color:var(--term-muted);align-items:center;gap:8px;padding:14px 20px;font-size:.8rem;display:flex}.term-bar .dots{gap:7px;margin-right:14px;display:inline-flex}.term-bar .dots i{background:#3a3c46;border-radius:50%;width:11px;height:11px}.term-bar b{color:var(--term-text);font-weight:500}.term-body{padding:20px}.stepper{grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:20px;list-style:none;display:grid}.stepper li{border-top:4px solid var(--term-accent);color:var(--term-muted);white-space:nowrap;text-overflow:ellipsis;border-radius:2px;padding-top:12px;font-size:.72rem;overflow:hidden}.stepper li.todo{border-top-color:#34363f}.tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tile{border:1px solid var(--term-border);border-radius:var(--radius-sm);background:var(--term-bg-2);padding:12px 14px}.tile dt{color:var(--term-muted);font-size:.72rem}.tile dd{color:var(--term-text);white-space:nowrap;text-overflow:ellipsis;margin:3px 0 0;font-size:.9rem;font-weight:600;overflow:hidden}.log{border:1px solid var(--term-border);border-radius:var(--radius-sm);background:var(--term-bg-2);font-family:var(--font-mono);margin-top:14px;padding:16px 18px;font-size:.8rem;line-height:1.85;list-style:none}.log li{white-space:nowrap;text-overflow:ellipsis;gap:16px;display:flex;overflow:hidden}.log time,.log .ts{color:var(--term-muted);flex:none}.log .ok{color:var(--term-ok)}.log .cursor:after{content:"";vertical-align:-.15em;background:var(--term-text);width:7px;height:1.05em;margin-left:4px;animation:1.1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@keyframes line-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.js .log[data-animate] li{opacity:0;animation:.35s ease-out forwards line-in}.js .log[data-animate] li:first-child{animation-delay:.25s}.js .log[data-animate] li:nth-child(2){animation-delay:.5s}.js .log[data-animate] li:nth-child(3){animation-delay:.75s}.js .log[data-animate] li:nth-child(4){animation-delay:1s}.js .log[data-animate] li:nth-child(5){animation-delay:1.25s}.js .log[data-animate] li:nth-child(6){animation-delay:1.5s}.js .log[data-animate] li:nth-child(7){animation-delay:1.75s}.js .log[data-animate] li:nth-child(8){animation-delay:2s}.js .log[data-animate] li:nth-child(9){animation-delay:2.25s}.js .log[data-animate] li:nth-child(10){animation-delay:2.6s}.js .log[data-animate] li:nth-child(11){animation-delay:2.9s}.js .log[data-animate] li:nth-child(12){animation-delay:3.2s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .log[data-animate] li{opacity:1;animation:none}.log .cursor:after{animation:none}}.section{border-top:1px solid var(--border);padding:104px 0}.section-alt{background:var(--bg-elev)}.section-head{max-width:46rem;margin-bottom:56px}.section-head h2{letter-spacing:-.04em;font-size:clamp(2.1rem,4.2vw,3.1rem);font-weight:800;line-height:1.04}.section-head p{color:var(--text-2);margin-top:18px;font-size:1.12rem}.about-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:64px;display:grid}.prose p+p{margin-top:18px}.prose p{font-size:1.08rem}.stats{grid-template-columns:1fr 1fr;gap:16px;margin:0;display:grid}.stat{padding:24px}.stat dd{color:var(--text);letter-spacing:-.05em;margin:0;font-size:3rem;font-weight:800;line-height:1}.stat dt{color:var(--muted);margin-top:10px;font-size:.92rem;line-height:1.4}.stat{flex-direction:column-reverse;justify-content:flex-end;display:flex}.features{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:72px;list-style:none;display:grid}.feature{flex-direction:column;gap:12px;padding:28px;display:flex}.feature-icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent-ink);border-radius:11px;place-items:center;display:grid}.feature-icon svg{width:22px;height:22px}.feature h3{margin-top:6px;font-size:1.15rem;font-weight:700}.feature p{color:var(--text-2);font-size:.98rem}.feature .chips{margin-top:auto;padding-top:8px}.skills{margin:0;overflow:hidden}.skill-row{border-bottom:1px solid var(--border);grid-template-columns:220px minmax(0,1fr);align-items:center;gap:24px;padding:18px 28px;display:grid}.skill-row:last-child{border-bottom:0}.skill-row dt{color:var(--text);font-family:var(--font-mono);font-size:.85rem;font-weight:500}.skill-row dd{margin:0}.skill-row .chip{background:var(--bg);font-size:.82rem}.timeline{list-style:none;position:relative}.tl-item{grid-template-columns:220px minmax(0,1fr);gap:48px;padding-bottom:28px;display:grid;position:relative}.tl-item:before{content:"";background:var(--border-strong);width:1px;position:absolute;top:34px;bottom:-6px;left:245px}.tl-item:last-child:before{display:none}.tl-meta{text-align:right;padding-top:26px}.tl-meta time{color:var(--text);font-family:var(--font-mono);font-size:.85rem;font-weight:500;display:block}.tl-meta span{color:var(--muted);margin-top:4px;font-size:.85rem;display:block}.tl-card{padding:24px 28px;position:relative}.tl-card:before{content:"";background:var(--bg);border:2px solid var(--border-strong);border-radius:50%;width:11px;height:11px;position:absolute;top:30px;left:-31px}.tl-item.current .tl-card:before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.tl-card h3{font-size:1.15rem;font-weight:700}.tl-company{color:var(--accent-ink);margin-top:4px;font-size:.98rem;font-weight:600}.tl-company .now{background:var(--accent-soft);font-family:var(--font-mono);vertical-align:2px;border-radius:6px;margin-left:8px;padding:2px 8px;font-size:.72rem;font-weight:500}.arrows{margin-top:14px;list-style:none}.arrows li{padding-left:24px;font-size:.98rem;position:relative}.arrows li+li{margin-top:6px}.arrows li:before{content:"→";color:var(--accent);font-family:var(--font-mono);position:absolute;left:0}.tl-card .chips{margin-top:16px}.projects{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;list-style:none;display:grid}.project{flex-direction:column;gap:10px;padding:26px;display:flex}.project h3{font-size:1.1rem;font-weight:700}.project p{font-size:.97rem}.project p code{background:var(--bg-sunken);color:var(--text);border-radius:5px;padding:1px 6px}.project .chips{margin-top:auto;padding-top:8px}.project.featured{background:var(--term-bg);border-color:var(--term-border);color:var(--term-text);box-shadow:var(--shadow-term);grid-column:span 2}.project.featured h3{color:#fff;letter-spacing:-.03em;font-size:1.6rem}.project.featured p{color:#c9ccd6;max-width:36em;font-size:1.05rem}.project.featured .chip{background:var(--term-bg-2);border-color:var(--term-border);color:#c9ccd6}.project .tag-line{color:var(--term-accent);font-family:var(--font-mono);font-size:.78rem}.project-link{color:#fff;align-items:center;gap:8px;margin-top:8px;font-weight:600;text-decoration:none;display:inline-flex}.project-link svg{width:16px;height:16px}.project-link:hover{text-decoration:underline}.certs{grid-template-columns:1fr 1fr;gap:20px;list-style:none;display:grid}.cert{align-items:center;gap:24px;padding:24px 28px;display:flex}.cert img{border-radius:4px;flex:none;width:92px}.cert h3{font-size:1.15rem}.cert p{color:var(--muted);margin-top:4px;font-size:.92rem}.cert a{align-items:center;gap:6px;margin-top:10px;font-size:.92rem;font-weight:600;display:inline-flex}.cert a svg{width:14px;height:14px}.subhead{letter-spacing:-.02em;margin:64px 0 20px;font-size:1.3rem;font-weight:700}.distinctions{grid-template-columns:1fr 1fr;list-style:none;display:grid;overflow:hidden}.distinctions li{border-bottom:1px solid var(--border);grid-template-columns:56px minmax(0,1fr);align-items:baseline;gap:14px;padding:16px 24px;display:grid}.distinctions li:nth-child(odd){border-right:1px solid var(--border)}.distinctions li:nth-last-child(-n+2){border-bottom:0}.distinctions .kind{color:var(--accent-ink);font-family:var(--font-mono);font-size:.75rem;font-weight:500}.distinctions strong{color:var(--text);font-size:.98rem;font-weight:600;display:block}.distinctions span{color:var(--muted);font-size:.88rem}.edu-grid{grid-template-columns:1.4fr 1fr;gap:20px;display:grid}.edu{padding:8px 28px}.edu-item,.lang-item{border-bottom:1px solid var(--border);justify-content:space-between;gap:16px;padding:16px 0;display:flex}.edu-item:last-child,.lang-item:last-child{border-bottom:0}.edu-item strong,.lang-item strong{color:var(--text);font-weight:600;display:block}.edu-item span,.lang-item span{color:var(--muted);font-size:.92rem}.edu-item time,.lang-item code{color:var(--muted);font-family:var(--font-mono);flex:none;font-size:.82rem}.contact-panel{background:var(--term-bg);border:1px solid var(--term-border);box-shadow:var(--shadow-term);color:#c9ccd6;border-radius:22px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:56px;padding:56px;display:grid}.contact-panel h2{color:#fff;letter-spacing:-.04em;font-size:clamp(2.1rem,4.2vw,3.1rem);font-weight:800;line-height:1.04}.contact-panel .eyebrow{color:var(--term-accent)}.contact-panel p{margin-top:18px;font-size:1.1rem}.contact-actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.contact-panel .prompt{color:var(--term-muted);font-family:var(--font-mono);margin-top:32px;font-size:.85rem}.contact-panel .prompt b{color:var(--term-text);font-weight:500}.search{border:1px solid var(--term-border);border-radius:var(--radius);background:var(--term-bg-2);margin:0;padding:8px 24px}.search div{border-bottom:1px solid var(--term-border);grid-template-columns:110px minmax(0,1fr);gap:16px;padding:14px 0;display:grid}.search div:last-child{border-bottom:0}.search dt{color:var(--term-muted);font-family:var(--font-mono);padding-top:2px;font-size:.8rem}.search dd{color:var(--term-text);margin:0;font-size:.96rem}.site-footer{border-top:1px solid var(--border);color:var(--muted);padding:40px 0 56px;font-size:.9rem}.site-footer .container{flex-wrap:wrap;justify-content:space-between;gap:12px 32px;display:flex}.site-footer a{color:var(--text-2)}.page{padding:80px 0 104px}.page h1{letter-spacing:-.05em;margin-top:28px;font-size:clamp(2.6rem,6vw,4.2rem);font-weight:800;line-height:1}.page .lead{max-width:38em;margin-top:24px;font-size:1.2rem}.page-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:24px;margin-top:56px;display:grid}.page-card{padding:32px}.page-card h2{margin-bottom:18px;font-size:1.3rem;font-weight:700}.kv{margin:0}.kv div{border-bottom:1px solid var(--border);grid-template-columns:140px minmax(0,1fr);gap:16px;padding:12px 0;display:grid}.kv div:last-child{border-bottom:0}.kv dt{color:var(--muted);font-family:var(--font-mono);padding-top:3px;font-size:.82rem}.kv dd{color:var(--text);margin:0}.stack-list{flex-direction:column;gap:12px;display:flex}.stack-list .btn{justify-content:flex-start}.notfound{min-height:calc(100vh - var(--header-h) - 140px);align-content:center;justify-items:start;display:grid}.notfound .terminal{width:100%;max-width:640px;margin-top:40px}@media (width<=1080px){.nav{gap:20px}.hero-grid,.about-grid,.contact-panel,.page-grid{grid-template-columns:minmax(0,1fr);gap:48px}.terminal{max-width:640px}.features,.projects{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=920px){.nav-toggle{display:inline-grid}.nav{top:var(--header-h);background:var(--bg);border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;gap:0;padding:8px 24px 20px;display:none;position:absolute;left:0;right:0;box-shadow:0 20px 30px -20px #0f111540}.site-header.open .nav{display:flex}.nav a{border-bottom:1px solid var(--border);padding:14px 0;font-size:1.05rem}.nav a:last-child{border-bottom:0}.nav a[aria-current=true]{text-underline-offset:6px}.site-header .nav-toggle .icon-x{display:none}.site-header.open .nav-toggle .icon-x{display:block}.site-header.open .nav-toggle .icon-menu{display:none}.tl-item{grid-template-columns:minmax(0,1fr);gap:8px;padding-left:28px}.tl-item:before{top:8px;left:5px}.tl-meta{text-align:left;padding-top:0}.tl-meta time,.tl-meta span{display:inline}.tl-meta span:before{content:" · "}.tl-card:before{top:-26px;left:-28px}.distinctions,.certs,.edu-grid{grid-template-columns:minmax(0,1fr)}.distinctions li:nth-child(odd){border-right:0}.distinctions li:nth-last-child(2){border-bottom:1px solid var(--border)}}@media (width<=640px){body{font-size:1rem}.container{padding-inline:18px}.brand-name,.header-cv-label{display:none}.site-header .container{gap:12px}.header-actions{gap:8px}.theme-switch{height:40px;padding:3px}.theme-switch button{width:32px;height:32px}.hero{padding:48px 0 72px}.hero h1{margin-top:28px}.hero .lead{font-size:1.08rem}.hero-actions .btn{flex:100%}.section{padding:72px 0}.section-head{margin-bottom:40px}.features,.projects{grid-template-columns:minmax(0,1fr)}.project.featured{grid-column:auto}.skill-row{grid-template-columns:minmax(0,1fr);gap:10px;padding:18px 20px}.stepper li{font-size:0}.term-bar{white-space:nowrap;text-overflow:ellipsis;padding-inline:16px;overflow:hidden}.term-body{padding:16px}.log{padding:12px 14px;font-size:.7rem}.log li{gap:10px}.tiles{grid-template-columns:minmax(0,1fr)}.stat dd{font-size:2.4rem}.stat{padding:20px}.contact-panel{border-radius:18px;padding:32px 22px}.search div,.kv div{grid-template-columns:minmax(0,1fr);gap:4px}.cert{flex-direction:column;align-items:flex-start}.page-card{padding:24px}}.print-only{display:none}@media print{@page{size:A4;margin:12mm 13mm 14mm}:root,:root[data-theme=dark]{--bg:#fff;--bg-elev:#fff;--bg-sunken:#fff;--text:#000;--text-2:#1f2328;--muted:#57606a;--border:#d0d7de;--border-strong:#d0d7de;--accent:#3730a3;--accent-ink:#3730a3;--accent-soft:#fff;color-scheme:light}html{font-size:9pt}body{background:#fff;line-height:1.4}.site-header,.site-footer,.skip-link,.hero-visual,.hero-actions,.quote,.footnote,.stats,.features,#projets,.section-head p,.eyebrow,.tl-card .chips,.contact-panel>div:first-child,.no-print{display:none!important}.print-only{display:block}.card,.terminal,.contact-panel{box-shadow:none!important}a{color:inherit;text-decoration:none}.container{max-width:none;padding:0}.hero{padding:0 0 8pt}.hero-grid{display:block}.pill{border:0;padding:0;font-size:8.5pt}.hero h1{margin-top:4pt;font-size:24pt;line-height:1}.hero h1 br{display:none}.hero-title{margin:0 0 0 6pt;font-size:14pt;display:inline}.hero .lead{max-width:none;margin-top:6pt;font-size:10pt}.print-contact{color:var(--text-2);font-family:var(--font-mono);margin-top:4pt;font-size:8.5pt}.section,.section-alt{border-top:1px solid var(--border);background:#fff;padding:8pt 0}.section-head{margin-bottom:6pt}.section-head h2,.about-grid h2{letter-spacing:-.02em;font-size:13pt}.about-grid{display:block}.prose p{font-size:9.5pt}.prose p+p{margin-top:4pt}.skills,.distinctions,.edu{border:0}.skill-row{border:0;grid-template-columns:110pt minmax(0,1fr);gap:8pt;padding:2pt 0}.skill-row dt{font-size:8.5pt}.skill-row .chips{gap:0}.skill-row .chip{background:0 0;border:0;padding:0;font-size:8.5pt}.skill-row .chip+.chip:before{content:"·";color:var(--muted);margin:0 5pt}.timeline .tl-item{break-inside:avoid;grid-template-columns:110pt minmax(0,1fr);gap:10pt;padding:0 0 6pt}.tl-item:before,.tl-card:before{display:none}.tl-meta{text-align:left;padding:0}.tl-meta time,.tl-meta span{font-size:8pt}.tl-card{border:0;padding:0}.tl-card h3{font-size:10pt}.tl-company{margin-top:0;font-size:9pt}.arrows{margin-top:2pt}.arrows li{padding-left:12pt;font-size:9pt}.arrows li+li{margin-top:0}.certs{grid-template-columns:1fr 1fr;gap:8pt}.cert{flex-direction:row;gap:10pt;padding:6pt}.cert img{width:44px}.cert h3{font-size:9.5pt}.cert p,.cert a{margin-top:0;font-size:8pt}.cert a svg{display:none}.subhead{margin:8pt 0 4pt;font-size:10.5pt}.distinctions{grid-template-columns:1fr 1fr}.distinctions li{break-inside:avoid;grid-template-columns:30pt minmax(0,1fr);gap:4pt;padding:2pt 0;border:0!important}.distinctions strong{font-size:8.5pt;display:inline}.distinctions span{font-size:8pt}.distinctions div span:before{content:" — "}.edu-grid{grid-template-columns:1.4fr 1fr;gap:12pt}.edu{padding:0}.edu-item,.lang-item{border:0;padding:2pt 0;font-size:9pt}.contact-panel{color:var(--text-2);background:#fff;border:0;padding:0;display:block}.search{background:#fff;border:0;padding:0}.search:before{content:"Recherche";color:#000;margin-bottom:4pt;font-size:10.5pt;font-weight:700;display:block}.search div{border:0;grid-template-columns:80pt minmax(0,1fr);padding:1pt 0}.search dt,.search dd{color:var(--text-2);font-size:8.5pt}}.page-grid+.page-card{margin-top:24px}
