@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #121211;--bg-elev: #181817;--surface: #1b1b19;--text: #eceae4;--muted: #a3a099;--border: rgba(236, 234, 228, .16);--border-strong: rgba(236, 234, 228, .5);--accent: #eceae4;--accent-soft: rgba(236, 234, 228, .08);--accent-text: #121211;--ink: #eceae4;--ink-text: #121211;--gold: #e0a86b;--dusk: #7d9bd1;--marker: var(--gold);--error: #ff8a80;--warn-bg: #3a2f10;--placeholder: rgba(224, 180, 90, .22);--shadow: none;--section-gap: clamp(64px, 8vw, 104px);--font-display: "Instrument Sans Variable", "Helvetica Neue", Arial, sans-serif;--font-body: "Instrument Sans Variable", "Helvetica Neue", Arial, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;color-scheme:dark;font-family:var(--font-body);line-height:1.6;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text)}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(60rem 38rem at 88% -12%,color-mix(in srgb,var(--gold) 14%,transparent),transparent 65%),radial-gradient(52rem 34rem at -8% 18%,color-mix(in srgb,var(--dusk) 11%,transparent),transparent 65%)}a{color:var(--accent);text-underline-offset:3px;transition:color .15s ease,text-decoration-color .15s ease}a:hover{text-decoration-color:var(--gold)}h1,h2,h3{font-family:var(--font-display);font-weight:500;line-height:1.15;letter-spacing:-.02em}h2{font-size:clamp(1.6rem,3.5vw,2.1rem);margin:0 0 20px}:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.container{max-width:1240px;margin:0 auto;padding:0 clamp(16px,3vw,32px)}.narrow{max-width:480px}.muted{color:var(--muted)}.error{color:var(--error)}.mono,.eyebrow{font-family:var(--font-mono)}.eyebrow{display:block;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.env-banner{background:var(--warn-bg);text-align:center;font-family:var(--font-mono);font-size:.8125rem;padding:4px}.site-header{position:sticky;top:0;z-index:10;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.nav{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;min-height:64px}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-body);font-weight:600;color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:6px;background:var(--ink);font-family:var(--font-display);font-size:.8rem;font-weight:700;color:var(--ink-text)}.nav-links{display:flex;flex-wrap:wrap;gap:18px;align-items:center;font-family:var(--font-body);font-size:.9375rem;font-weight:500}.nav-links a{color:var(--muted);text-decoration:none}.nav-links a:hover,.nav-links a.active{color:var(--text)}.nav-links button.link{font-family:inherit;font-weight:inherit}@media(max-width:560px){.nav{flex-wrap:nowrap;min-height:56px}.brand-name{display:none}.nav-links{gap:12px;font-size:.75rem}}.footer{border-top:1px solid var(--border);margin-top:0;padding-top:20px;padding-bottom:40px;font-family:var(--font-mono);font-size:.75rem}main.container{padding-top:calc(var(--section-gap) * .6)}main>*{margin-top:0;margin-bottom:var(--section-gap)}section>:last-child,section>.card:last-child{margin-bottom:0}main>section.hero{margin-bottom:calc(var(--section-gap) * .4)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.card{background:var(--surface);border:1px solid transparent;border-radius:16px;padding:20px 24px;margin-bottom:16px}.card h3{margin-top:0}.tags{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}.tags li{font-family:var(--font-mono);font-size:.75rem;border:1px solid var(--border);border-radius:4px;padding:3px 8px;color:var(--muted)}.timeline{list-style:none;padding-left:20px;border-left:1px dashed var(--border)}.timeline>li{margin-bottom:24px}.arch-wrap{margin:8px 0 40px;overflow-x:auto}.arch{display:block;width:100%;min-width:820px;height:auto}.arch-node rect,.arch-band rect{fill:var(--bg-elev);stroke:var(--border);stroke-width:1.5}.arch-node.security rect,.arch-legend rect{fill:var(--accent-soft);stroke:var(--accent)}.arch text{text-anchor:middle}.arch-title{fill:var(--text);font-family:var(--font-body);font-size:14px;font-weight:700}.arch-sub,.arch-label,.arch-legend text{fill:var(--muted);font-family:var(--font-mono);font-size:10.5px}.arch-legend text,.arch-node text,.arch-band text,.arch-group text{text-anchor:start}.arch-group rect{fill:none;stroke-width:1.5;stroke-dasharray:6 5}.arch-group.edge rect{stroke:var(--muted)}.arch-group.region rect{stroke:var(--marker)}.arch-group text{fill:var(--text);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.06em}.arch-node.external>rect,.arch-legend rect.external{stroke-dasharray:4 3}.arch-legend rect.external{fill:var(--bg-elev);stroke:var(--muted)}.arch-glyph path,.arch-glyph rect{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.arch-label{paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round}.arch-edge{fill:none;stroke:var(--muted);stroke-width:1.5}.arch-edge.dashed{stroke-dasharray:4 4}.arch-head{fill:var(--muted)}.tour{margin-bottom:0;padding:0;overflow:hidden}.tour-bar{display:flex;align-items:center;gap:16px;padding:10px 16px;border-bottom:1px solid var(--border)}.tour-bar .eyebrow{margin:0;min-width:13ch}.tour-tabs{display:flex;flex:1;gap:4px;overflow-x:auto}.tour-tab,.tour-tab:hover:not(:disabled){flex:none;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:none;color:var(--muted);font-family:var(--font-mono);font-size:.8rem;font-weight:500;box-shadow:none;transform:none}.tour-tab:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.tour-tab.seen{color:var(--marker)}.tour-tab.current,.tour-tab.current:hover:not(:disabled){color:var(--accent-text);background:var(--marker);border-color:var(--marker)}.tour-nav{display:flex;align-items:center;gap:6px}.tour-reset{margin-right:6px;font-size:.875rem}.tour-nav button{padding:3px 12px}.tour-step{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:8px 32px;padding:16px 20px 18px;animation:stage-in .3s ease both}.tour-step h2{margin:0 0 4px;font-size:1.3rem}.tour-summary{margin:0;color:var(--muted)}.tour-points{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 24px;margin:2px 0 0;padding:0;list-style:none;font-size:.95rem;line-height:1.4}.tour-points li{position:relative;padding-left:16px}.tour-points li:before{content:"";position:absolute;top:.5em;left:0;width:6px;height:6px;border-radius:50%;background:var(--marker)}.tour-progress{height:3px;background:var(--border)}.tour-progress span{display:block;height:100%;background:var(--marker);transition:width .3s ease}.arch-stage .arch-explorer{margin-bottom:0}@media(min-width:1100px){.arch-stage{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}.arch-stage .arch{min-width:0}.arch-stage .tour-bar{flex-wrap:wrap;gap:10px}.arch-stage .tour-bar .eyebrow{flex:1}.arch-stage .tour-tabs{order:3;flex-basis:100%;flex-wrap:wrap;gap:3px}.arch-stage .tour-tab{padding:4px 7px}.arch-stage .tour-step,.arch-stage .tour-points{grid-template-columns:1fr}.arch-stage .tour-points{gap:8px;margin-top:8px}}@media(max-width:820px){.tour-bar{flex-wrap:wrap}.tour-tabs{order:3;flex-basis:100%}.tour-step,.tour-points{grid-template-columns:1fr}}.arch.has-active .arch-band:not(.dim) rect{stroke:var(--marker);stroke-width:2.5}@media(max-width:820px){.tour-body{grid-template-columns:1fr}.tour-tabs{flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border)}.tour-tab,.tour-tab:hover:not(:disabled){width:auto;flex:none;white-space:nowrap}.tour-tab.current,.tour-tab.current:hover:not(:disabled){box-shadow:inset 0 -2px 0 var(--marker)}.tour-step{padding:20px}}.details{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px}.details dt{color:var(--muted)}.details dd{margin:0;overflow-wrap:anywhere}@supports (animation-timeline: view()){.reveal{animation:reveal linear both;animation-timeline:view();animation-range:entry 0% cover 20%}}@keyframes reveal{0%{opacity:0;transform:translateY(24px)}}.hero h1{font-size:clamp(2.2rem,6vw,3.25rem);margin:0 0 12px}.hero-home{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);grid-template-areas:"text portrait" "stats stats";gap:32px 48px;align-content:center;align-items:center}.hero-text{grid-area:text}.hero-home h1{font-size:clamp(2.6rem,7vw,4.6rem);line-height:1.02;letter-spacing:-.025em}.hero-home h1 .accent{position:relative;white-space:nowrap}.status{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:.8125rem;border:1px solid var(--border);background:var(--bg-elev);border-radius:999px;padding:6px 14px;margin:8px 0 20px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 color-mix(in srgb,var(--gold) 60%,transparent);animation:ping 2.2s ease-out infinite}@keyframes ping{70%{box-shadow:0 0 0 8px transparent}to{box-shadow:0 0 0 0 transparent}}.hero-summary{font-size:1.0625rem;margin:0;max-width:56ch;color:var(--muted)}.actions,.links,.row-actions{display:flex;flex-wrap:wrap;gap:12px}.actions{margin:24px 0 16px}.links{font-family:var(--font-mono);font-size:.8125rem}.stats{grid-area:stats;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stat{background:linear-gradient(90deg,color-mix(in srgb,var(--dusk) 55%,transparent),color-mix(in srgb,var(--gold) 55%,transparent)) top / 100% 1px no-repeat,var(--surface);border-radius:14px;padding:18px 20px 16px}.stat-value{font-family:var(--font-display);font-size:clamp(1.9rem,4vw,2.5rem);font-weight:600;line-height:1;font-variant-numeric:tabular-nums}.stat-label{margin-top:8px;font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}@media(max-width:860px){.hero-home{grid-template-columns:1fr;grid-template-areas:"text" "portrait" "stats";min-height:0;gap:24px}.stats{grid-template-columns:1fr 1fr}}.portrait{grid-area:portrait;display:grid;justify-items:center;gap:16px;width:100%;max-width:520px;justify-self:center}.portrait-ring{position:relative;width:clamp(240px,28vw,340px);aspect-ratio:1}.portrait-ring:before,.portrait-ring:after{content:"";position:absolute;border-radius:50%}.portrait-ring:before{inset:0;border:2px dashed color-mix(in srgb,var(--dusk) 40%,transparent);animation:spin 40s linear infinite}.portrait-ring:after{inset:4%;border:1px solid color-mix(in srgb,var(--gold) 25%,transparent);animation:breathe 5s ease-in-out infinite}.portrait-core{position:absolute;inset:8%;display:grid;place-items:center;overflow:hidden;border:2px solid color-mix(in srgb,var(--gold) 75%,var(--text));border-radius:50%;background:var(--bg-elev);box-shadow:0 0 0 6px color-mix(in srgb,var(--gold) 10%,transparent),0 0 70px color-mix(in srgb,var(--gold) 18%,transparent);font-family:var(--font-display);font-size:clamp(3.4rem,6vw,4.8rem);font-weight:700;letter-spacing:-.04em;color:var(--accent)}.portrait-core img{width:100%;height:100%;object-fit:cover}.skills-title{margin:0;font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.skill-cards{list-style:none;margin:0;padding:0;width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:10px}.skill-cards li{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:10px 14px;border:1px solid var(--border);border-radius:10px;background:transparent;animation:pop .5s ease both calc(var(--i) * 90ms),highlight calc(var(--n) * 2s) ease-in-out infinite calc(1s + var(--i) * 2s)}.skill-cards li:last-child:nth-child(odd){grid-column:span 2}.skill-cards strong{font-family:var(--font-body);font-size:.9375rem;line-height:1.25}.skill-cards span{font-family:var(--font-mono);font-size:.6875rem;color:var(--muted)}@keyframes highlight{0%,to{border-color:var(--border);background:transparent}6%,12%{border-color:color-mix(in srgb,var(--gold) 60%,transparent);background:color-mix(in srgb,var(--gold) 6%,transparent)}18%{border-color:var(--border);background:transparent}}@keyframes spin{to{rotate:360deg}}@keyframes breathe{50%{transform:scale(1.06);opacity:.5}}mark.placeholder{background:var(--placeholder);color:var(--text);border:1px dashed var(--accent);border-radius:4px;padding:0 4px}.now{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:32px;align-items:center;padding:28px;margin-bottom:0}.now h3{font-size:1.5rem;margin:0 0 4px}@media(max-width:760px){.now{grid-template-columns:1fr;padding:20px}}.impact{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;max-width:560px;margin:12px 0}.impact>div{border-top:2px solid;border-image:linear-gradient(90deg,var(--dusk),var(--gold)) 1;padding-top:10px}.impact-value{font-family:var(--font-display);font-size:1.6rem;font-weight:600;line-height:1.1}.form{display:flex;flex-direction:column;gap:14px}.form label{display:flex;flex-direction:column;gap:4px;font-weight:500}input,textarea{font:inherit;color:inherit;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:10px 12px}input:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}.hp{position:absolute;left:-9999px}.captcha{min-height:65px}button,.button{font:inherit;font-weight:600;cursor:pointer;border:1px solid var(--ink);background:var(--ink);color:var(--ink-text);font-family:var(--font-body);border-radius:8px;padding:10px 18px;text-decoration:none;display:inline-block;transition:box-shadow .15s ease,transform .15s ease,background .15s ease}button:hover:not(:disabled),.button:hover{box-shadow:0 6px 24px color-mix(in srgb,var(--gold) 16%,transparent);transform:translateY(-1px)}button.secondary:hover:not(:disabled),.button.secondary:hover{border-color:var(--gold)}button.secondary,.button.secondary{background:transparent;color:var(--ink)}button.link{background:none;border:none;padding:0;color:var(--muted);font-family:var(--font-mono);font-size:inherit;font-weight:400;text-transform:inherit;letter-spacing:inherit}button.link:hover{color:var(--text);box-shadow:none;transform:none}button:disabled{opacity:.45;cursor:default}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.tabs button{background:transparent;color:var(--muted);border-color:var(--border);font-family:var(--font-mono);font-size:.8125rem;padding:6px 14px}.tabs button[aria-selected=true]{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9375rem}th,td{text-align:left;vertical-align:top;padding:8px;border-bottom:1px solid var(--border)}th{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.career-toolbar{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end;align-items:center;margin-bottom:16px}.career-toolbar .row-actions button{font-family:var(--font-mono);font-size:.8125rem;padding:6px 14px}.stage-panel{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:32px;align-items:center;padding:24px}@media(max-width:720px){.stage-panel{grid-template-columns:1fr}}.stage-visual{position:relative;aspect-ratio:16 / 9;display:grid;place-items:center;border:1px solid var(--border);border-radius:12px;background:var(--bg-elev);overflow:hidden}.stage-photo{width:100%;height:100%;object-fit:cover;animation:stage-in .4s ease both}.stage-text{animation:stage-in .4s ease both}.stage-text h3{font-size:1.5rem;margin:0 0 4px}.stage-company{margin:0 0 12px;font-weight:500}.stage-period{font-family:var(--font-mono);font-size:.75rem;color:var(--muted)}.stage-text ul{padding-left:18px;margin-bottom:0}.stage-text li::marker{color:var(--accent)}@keyframes stage-in{0%{opacity:0;transform:translateY(8px)}}.scene{width:100%;height:100%;animation:stage-in .4s ease both}.scene *{fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.scene .a{stroke:var(--accent)}.scene .m{stroke:var(--marker)}.scene .fill-bg{fill:var(--bg-elev)}.scene .fill-soft{fill:var(--accent-soft)}.scene .fill-a{fill:var(--accent);stroke:none}.scene .fill-m{fill:var(--marker);stroke:none}.scene .faint{stroke:var(--border);stroke-width:1.5}.scene .dash{stroke-dasharray:5 6}.scene .flow{stroke-dasharray:5 6;animation:flow 1.4s linear infinite}.scene text{fill:var(--text);stroke:none;font-family:var(--font-mono);font-size:13px;font-weight:600;text-anchor:middle}.scene text.a{fill:var(--accent)}.scene text.big{font-family:var(--font-display);font-size:30px;font-weight:700}.scene text.small{fill:var(--muted);font-size:10px;font-weight:400;letter-spacing:.08em}.scene .draw{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.1s ease forwards}.scene .d1{animation-delay:.15s}.scene .d2{animation-delay:.35s}.scene .d3{animation-delay:.55s}.scene .d4{animation-delay:.75s}.scene .pop{transform-box:fill-box;transform-origin:center;animation:pop .5s ease both}.scene .rise{transform-box:fill-box;transform-origin:bottom;animation:rise .8s ease both}.scene .pulse{transform-box:fill-box;transform-origin:center;animation:pulse 2s ease-out infinite}.scene .needle{transform-box:view-box;transform-origin:400px 138px;animation:settle 2.6s ease-out .6s both}.scene .pointer{transform-box:view-box;transform-origin:266px 116px;animation:tap 1.6s ease-in-out 1.4s infinite alternate}@keyframes tap{0%{transform:rotate(0)}to{transform:rotate(-4deg)}}.scene .descend{transform-box:view-box;transform-origin:300px 40px;animation:sway 3.2s ease-in-out 1.2s infinite alternate}@keyframes sway{0%{transform:rotate(-3deg) translateY(-3px)}to{transform:rotate(3deg) translateY(3px)}}.scene .tassel{transform-box:view-box;transform-origin:262px 104px;animation:swing 2.6s ease-in-out 1.4s infinite alternate}@keyframes swing{0%{transform:rotate(9deg)}to{transform:rotate(-7deg)}}@keyframes settle{0%{transform:rotate(-80deg)}30%{transform:rotate(45deg)}50%{transform:rotate(-22deg)}66%{transform:rotate(10deg)}82%{transform:rotate(-4deg)}to{transform:rotate(0)}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes flow{to{stroke-dashoffset:-22}}@keyframes rise{0%{transform:scaleY(0)}}@keyframes pulse{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(1.6)}}.track{position:relative;height:196px;margin:28px 16px 8px;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.track-rail{position:absolute;top:64px;left:0;right:0;height:2px;background-image:linear-gradient(90deg,var(--border) 60%,transparent 0);background-size:10px 2px}.track-fill{height:100%;background:var(--accent);transition:width .4s ease}.track-stage{position:absolute;top:56px;width:18px;height:18px;padding:0;border:none;background:none;transform:translate(-50%)}.track-stage:hover{box-shadow:none;transform:translate(-50%)}.track-stage:before{content:"";position:absolute;inset:2px;border:2px solid var(--border);border-radius:2px;background:var(--bg);transform:rotate(45deg);transition:border-color .3s ease,background .3s ease,transform .2s ease}.track-stage:hover:before{transform:rotate(45deg) scale(1.25)}.track-stage.passed:before{border-color:var(--accent)}.track-stage.current:before{border-color:var(--marker);background:var(--marker)}.track-stage span{position:absolute;left:50%;width:max-content;max-width:96px;text-align:center;transform:translate(-50%);font-family:var(--font-mono);font-size:.6875rem;font-weight:600;line-height:1.3;color:var(--muted);pointer-events:none;transition:color .3s ease}.track-stage:first-of-type span{left:-2px;text-align:left;transform:none}.track-stage:last-of-type span{left:auto;right:-2px;text-align:right;transform:none}.track-stage:hover span,.track-stage.passed span{color:var(--text)}.track-stage.current span{color:var(--marker)}.track-stage.above span{bottom:28px}.track-stage.below span{top:36px}.track-handle{position:absolute;top:47px;width:36px;height:36px;border-radius:50%;border:2px solid var(--accent);background:var(--bg-elev);box-shadow:0 0 0 6px var(--accent-soft);transform:translate(-50%);transition:left .4s ease;cursor:grab;z-index:1}.track-handle:before,.track-handle:after{content:"";position:absolute;background:var(--accent)}.track-handle:before{left:50%;top:5px;bottom:5px;width:2px;transform:translate(-50%)}.track-handle:after{top:50%;left:5px;right:5px;height:2px;transform:translateY(-50%)}.track.dragging .track-handle,.track.dragging .track-fill{transition:none;cursor:grabbing}.track-handle:focus-visible{outline:2px solid var(--marker);outline-offset:6px}.track-studies{position:absolute;top:160px;left:0;right:0;height:26px}.track-study,.track-study:hover:not(:disabled){position:absolute;top:0;height:26px;display:flex;align-items:center;gap:6px;min-width:0;padding:0 8px;border:1px solid var(--border);border-radius:6px;background:linear-gradient(90deg,var(--accent-soft) var(--done),transparent var(--done));color:var(--muted);font-family:var(--font-mono);font-size:.6875rem;font-weight:600;white-space:nowrap;overflow:hidden;box-shadow:none;transform:none;transition:border-color .3s ease,color .3s ease}.track-study:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.track-study.current,.track-study.current:hover:not(:disabled){color:var(--marker);border-color:var(--marker)}.track-study span{overflow:hidden;text-overflow:ellipsis}.mortarboard{flex:none;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.stage-study{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0;padding:10px 12px;border:1px solid var(--border);border-radius:10px;color:var(--muted);font-size:.95rem}.stage-study .mortarboard{width:18px;height:18px;margin-top:2px;color:var(--marker)}.stage-study strong{color:var(--text);font-weight:600}.track-years{position:absolute;top:134px;left:0;right:0;font-family:var(--font-mono);font-size:.6875rem;color:var(--muted)}.track-years span{position:absolute;transform:translate(-50%)}.track-years span:first-child{transform:none}.track-years span:last-child{transform:translate(-100%)}@media(max-width:640px){.track-stage span,.track-years span:not(:first-child):not(:last-child){display:none}}.skills-heading{font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:16px 0 10px}.skills button{font-family:var(--font-mono);font-size:.75rem;font-weight:400;border:1px solid var(--border);border-radius:4px;padding:3px 8px;background:transparent;color:var(--muted)}.skills button:hover{color:var(--text);border-color:var(--muted);box-shadow:none}.skills li{border:none;padding:0}.skills li.new button{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);animation:pop .5s ease both}.hero-cv{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:center;gap:48px}.cv-route{width:100%;max-width:420px;height:auto;justify-self:end}.cv-route text{font-size:11px;fill:var(--muted)}.cv-route-pulse{transform-box:fill-box;transform-origin:center;animation:pulse 2.4s ease-out 2.2s infinite both}@media(max-width:899px){.hero-cv{grid-template-columns:minmax(0,1fr)}.cv-route{display:none}}@keyframes pop{0%{opacity:0;transform:scale(.6)}}.career-list{display:none}.certs{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}.cert{display:flex;flex-direction:column;gap:10px;align-items:center;height:100%;text-align:center;background:var(--surface);border:1px solid transparent;border-radius:14px;padding:18px 12px 14px;transition:border-color .2s ease,transform .2s ease}.cert:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.cert img{flex:none;width:88px;height:88px;transition:transform .3s ease}.cert:hover img{transform:rotate(-6deg) scale(1.08)}.cert-name{font-weight:600;line-height:1.3}.cert-meta{font-family:var(--font-mono);font-size:.6875rem;color:var(--muted);margin-top:4px}.cert-meta a{display:block;margin-top:2px}.education{list-style:none;padding:0;margin:0}.education li{display:grid;grid-template-columns:130px 48px 1fr;gap:16px;align-items:center;padding:14px 0;border-bottom:1px dashed var(--border)}.education li:last-child{border-bottom:none}.education .mono{font-size:.75rem;color:var(--muted);padding-top:3px}.crest{display:block;width:48px;height:56px;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(20,40,30,.18))}.crest-drawn path{fill:var(--marker);stroke:color-mix(in srgb,var(--marker) 60%,var(--text));stroke-width:1.5}.crest-drawn text{fill:var(--bg-elev);font-family:var(--font-display);font-size:12px;font-weight:700;letter-spacing:.02em;text-anchor:middle}@media(max-width:520px){.education li{grid-template-columns:48px 1fr;gap:2px 14px}.education .mono{grid-column:1 / -1}}.project h3{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px}.project p{color:var(--muted)}.project-icon{display:grid;place-items:center;width:56px;height:56px;margin-bottom:16px;border:1px solid var(--border);border-radius:12px;background:var(--bg-elev);transition:border-color .2s ease,transform .2s ease}.project-icon svg{width:32px;height:32px;fill:none;stroke:var(--text);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.project-icon .m{stroke:var(--marker)}.project-icon .cut{fill:var(--bg-elev)}.project:hover .project-icon{border-color:var(--marker);transform:rotate(-4deg)}.scroll-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,var(--dusk),var(--gold));transform:scaleX(0);transform-origin:0 50%}@supports (animation-timeline: scroll()){.scroll-progress{animation:grow linear both;animation-timeline:scroll(root)}}@keyframes grow{to{transform:scaleX(1)}}.site-header{view-transition-name:site-header}.stage-panel{view-transition-name:stage-panel}::view-transition-old(root){animation:.18s ease both page-out}::view-transition-new(root){animation:.28s ease both page-in}::view-transition-group(stage-panel){animation-duration:.3s}@keyframes page-out{to{opacity:0;transform:translateY(-6px)}}@keyframes page-in{0%{opacity:0;transform:translateY(10px)}}.spotlight{position:relative;isolation:isolate}.spotlight:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:radial-gradient(320px circle at var(--mx, 50%) var(--my, 50%),var(--glow, var(--accent-soft)),transparent 70%);opacity:0;transition:opacity .3s ease;pointer-events:none}@media(hover:hover){.spotlight:hover:before{opacity:1}.stat,.project{transition:transform .2s ease,box-shadow .2s ease}.stat:hover,.project:hover{transform:translateY(-2px);box-shadow:var(--shadow)}}.cert{position:relative;overflow:hidden}.cert:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,var(--sheen) 50%,transparent 65%);transform:translate(-110%);pointer-events:none}:root{--sheen: rgba(255, 255, 255, .1)}@media(hover:hover)and (prefers-reduced-motion:no-preference){.tilt{transition:transform .3s ease}.tilt:hover{transform:perspective(700px) rotateX(calc(var(--ty, 0) * -12deg)) rotateY(calc(var(--tx, 0) * 12deg)) translateY(-2px);transition:transform 80ms linear}.cert:hover:after{transform:translate(110%);transition:transform .8s ease}}.skeleton .hero{margin-bottom:calc(var(--section-gap) * .4)}.bone{display:block;height:14px;margin:12px 0;border-radius:6px;background:linear-gradient(90deg,var(--surface),var(--border),var(--surface));background-size:200% 100%;animation:shimmer 1.6s ease-in-out infinite}.card .bone{background-image:linear-gradient(90deg,var(--bg-elev),var(--border),var(--bg-elev))}.bone.title{width:min(360px,60%);height:44px;margin-bottom:20px}.bone.heading{width:60%;height:22px}.bone.short{width:55%}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.cv-timeline{position:relative;list-style:none;margin:0;padding:0 0 0 40px}.cv-timeline:before,.cv-timeline:after{content:"";position:absolute;left:11px;top:12px;bottom:12px;width:2px;background:var(--border)}.cv-timeline:after{background:var(--marker);transform:scaleY(var(--progress, 0));transform-origin:top}.cv-timeline>li{position:relative;margin-bottom:40px}.cv-timeline>li:last-child{margin-bottom:0}.cv-dot{position:absolute;z-index:1;left:-36px;top:14px;width:16px;height:16px;border:2px solid var(--border);border-radius:50%;background:var(--bg);transition:border-color .3s ease,background .3s ease,box-shadow .3s ease}.cv-timeline>li.reached .cv-dot{border-color:var(--marker);background:var(--marker);box-shadow:0 0 0 5px color-mix(in srgb,var(--marker) 22%,transparent)}.cv-role{position:sticky;top:var(--header-h, 64px);z-index:2;padding:10px 0;margin-bottom:8px;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.cv-role h3{margin:0;font-size:1.35rem}.cv-role p{margin:2px 0 0;font-weight:500}.cv-timeline .card{margin-bottom:0}.cv-timeline .card .impact{margin-top:0}.cv-timeline .card ul{padding-left:18px;margin:0}.cv-timeline .card li+li{margin-top:6px}.cv-timeline .card li::marker{color:var(--accent)}.contact-card{--glow: color-mix(in srgb, var(--marker) 35%, transparent);border-radius:20px;padding:clamp(24px,4vw,44px);background:var(--ink);color:var(--ink-text)}.contact-card .eyebrow{color:inherit;opacity:.7}.contact-card h2{margin-bottom:8px}.contact-card a{color:inherit}.contact-card :focus-visible{outline-color:var(--ink-text)}.contact-email{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 28px;font-family:var(--font-display);font-size:clamp(1.3rem,4vw,2.1rem);font-weight:600;overflow-wrap:anywhere}.contact-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px 24px;margin:0}.contact-rows>div{padding-top:10px;border-top:1px solid color-mix(in srgb,var(--ink-text) 25%,transparent)}.contact-rows dt{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;opacity:.7}.contact-rows dd{margin:2px 0 0;overflow-wrap:anywhere}button.copy{padding:4px 12px;font-family:var(--font-mono);font-size:.75rem;font-weight:500;border-color:color-mix(in srgb,var(--ink-text) 45%,transparent);color:var(--ink-text)}.arch-explorer{margin-bottom:40px}.arch-explorer .arch-wrap{margin-bottom:12px;border:1px solid var(--border);border-radius:16px;background:var(--bg)}.arch-node[role=button]{cursor:pointer;outline:none}.arch-node:focus-visible rect{stroke:var(--marker);stroke-width:2.5}.arch-node,.arch-band,.arch-edge,.arch-label,.arch-packet{transition:opacity .2s ease,stroke .2s ease}.arch .dim,.arch.has-active .arch-edge:not(.lit){opacity:.2}.arch-edge.lit{stroke:var(--accent);stroke-width:2.25}.arch-node.active rect{stroke:var(--marker);stroke-width:2.5}.arch-node.linked rect{stroke:var(--accent)}.arch-packet{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-dasharray:.001 .999;animation:packet 2.4s linear infinite;pointer-events:none}.arch.has-active .arch-packet:not(.lit){opacity:0}.arch-packet.lit{stroke:var(--marker);animation-duration:1.2s}@keyframes packet{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.arch-detail{min-height:72px;margin-bottom:12px;padding:12px 20px}.arch-detail .eyebrow{margin-bottom:2px}.arch-detail strong{font-family:var(--font-display);font-size:1.15rem}.arch-detail p{margin:0;max-width:110ch}.arch-detail strong{margin-right:6px}.auth{display:grid;grid-template-columns:minmax(0,440px) minmax(0,1fr);gap:clamp(32px,6vw,80px);align-items:center}.auth-form h1{font-size:clamp(2.2rem,6vw,3.25rem);margin:0 0 12px}.auth-visual{margin-bottom:0;padding:0;overflow:hidden;border-color:var(--border);background:var(--bg-elev)}.auth-visual svg{display:block;width:100%;height:auto}.auth-visual .route{stroke-width:2.5;stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.4s ease-in-out forwards}.auth-visual .stop,.auth-visual .stop *{stroke-width:1.6}.auth-visual .traveller{transform-box:view-box;offset-rotate:0deg;opacity:0;animation:travel 7s ease-in-out 2.8s infinite}@keyframes travel{0%{offset-distance:0%;opacity:0}8%,90%{opacity:1}to{offset-distance:100%;opacity:0}}.auth-caption{padding:16px 24px 22px;border-top:1px solid var(--border)}.auth-caption p{margin:0;color:var(--muted)}@media(max-width:820px){.auth{grid-template-columns:1fr}.auth-visual{display:none}}@media print{:root{--bg: #fff;--bg-elev: #fff;--surface: #f3f2ef;--text: #121211;--muted: #55534e;--border: rgba(18, 18, 17, .2);--border-strong: rgba(18, 18, 17, .5);--accent: #121211;--accent-soft: rgba(18, 18, 17, .06);--accent-text: #fff;--ink: #121211;--ink-text: #fff;--gold: #9a6a2f;--marker: var(--gold);color-scheme:light}body:before{display:none}.portrait-core{box-shadow:none}.site-header,.career-toolbar,.career-interactive{display:none}.career-list{display:block}body{background:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:1ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.reveal{animation:none!important}.arch-packet{display:none}}
