@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-italic-DxWqP7Ku.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-italic-CGbN9UgK.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-italic-lSdLDfvT.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/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(/assets/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(/assets/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(/assets/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(/assets/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(/assets/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(/assets/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: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+460-52F,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+301,U+400-45F,U+490-491,U+4B0-4B1,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+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: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+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: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+??,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: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+460-52F,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+301,U+400-45F,U+490-491,U+4B0-4B1,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+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: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+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: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+??,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}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:auto}img,canvas{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}a{color:inherit;text-decoration:none}ul{list-style:none}::selection{background:var(--signal);color:var(--ink)}@font-face{font-family:Fraunces fallback;src:local(Georgia Italic),local(Georgia),local(Times New Roman Italic);font-style:italic;size-adjust:91%}:root{--ink:#0d1411;--ink-2:#121b17;--ink-3:#18241e;--bone:#e7eae6;--bone-2:#a8b2ac;--bone-3:#9aa39c;--signal:#4fa587;--signal-2:#77c4a6;--ember:#b8e0cd;--lit-hi:color-mix(in srgb, #fff 84%, var(--signal-2));--line:#e7eae624;--line-2:#e7eae645;--glass:#0d14118c;--field-shadow:#0a1310;--section-solid:#0f2e22;--f-display:"Bricolage Grotesque Variable", "Bricolage Grotesque", system-ui, sans-serif;--f-body:"Inter Variable", "Inter", system-ui, sans-serif;--f-serif:"Fraunces Variable", "Fraunces", "Fraunces fallback", Georgia, serif;--f-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--fs-mega:clamp(2.9rem, 1rem + 8vw, 9.5rem);--fs-h1:clamp(2.6rem, 1.4rem + 5vw, 6rem);--fs-h2:clamp(2rem, 1.2rem + 3.4vw, 4.2rem);--fs-h3:clamp(1.35rem, 1.05rem + 1.4vw, 2.1rem);--fs-lead:clamp(1.15rem, .98rem + .8vw, 1.6rem);--fs-body:clamp(1rem, .95rem + .25vw, 1.12rem);--fs-small:.85rem;--fs-meta:.72rem;--gutter:clamp(1.25rem, .6rem + 3vw, 3.5rem);--section-y:clamp(6rem, 3rem + 10vw, 13rem);--maxw:1440px;--ease:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1)}:root[data-palette=vermillon]{--ink:#14110c;--ink-2:#191510;--ink-3:#211c15;--bone:#ece6d8;--bone-2:#b3ac9c;--bone-3:#918a7e;--signal:#ff5a2d;--signal-2:#ff8a5a;--ember:#ffb27a;--line:#ece6d821;--line-2:#ece6d842;--field-shadow:#0b0b12;--section-solid:#241811}:root[data-palette=platine]{--ink:#111312;--ink-2:#191b1a;--ink-3:#212422;--bone:#dadcd7;--bone-2:#aaada8;--bone-3:#8b8e84;--signal:#c9cdc6;--signal-2:#e4e6e1;--ember:#f0f1ed;--line:#e9eae721;--line-2:#e9eae742;--field-shadow:#0d0f0e;--section-solid:#1b1d1c}html,body{background:var(--ink);color:var(--bone)}body{font-family:var(--f-body);font-size:var(--fs-body);letter-spacing:.005em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;min-height:100vh;font-weight:400;line-height:1.6;overflow-x:hidden}body.is-loading{height:100vh;overflow:hidden}h1,h2,h3,h4{font-family:var(--f-display);letter-spacing:-.02em;text-wrap:balance;font-weight:620;line-height:1.02}.serif{font-family:var(--f-serif);font-optical-sizing:auto;letter-spacing:-.01em;font-style:italic;font-weight:380}.signal{color:var(--signal)}.meta{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.22em;text-transform:uppercase;color:var(--bone-3);font-weight:500}.field-canvas{z-index:0;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}main{z-index:1;position:relative}.section{padding-block:var(--section-y);padding-inline:var(--gutter);border-top:1px solid var(--line);position:relative}.section:before{content:"";background:var(--signal);transform-origin:0;width:clamp(72px,22vw,200px);height:2px;transition:transform 1s var(--ease);position:absolute;top:-1px;left:0;transform:scaleX(0)}.section.is-in:before{transform:scaleX(1)}.section--solid{background:var(--section-solid);--signal:var(--signal-2)}.section--solid .skill,.section--solid .cert{background:var(--ink)}.section--solid .skill:hover,.section--solid .cert:hover{background:var(--ink-2)}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto}.sec-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1.5rem;margin-bottom:clamp(2.5rem,5vw,5rem);padding-bottom:clamp(2rem,4vw,4rem);display:flex}.sec-head h2{font-size:var(--fs-h2);max-width:16ch}.sec-index{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.2em;color:var(--signal);white-space:nowrap}.skip-link{z-index:200;background:var(--signal);color:var(--ink);font-family:var(--f-mono);font-size:var(--fs-small);padding:.75rem 1.25rem;position:absolute;top:0;left:-9999px}.skip-link:focus{top:1rem;left:1rem}:focus-visible{outline:2px solid var(--signal);outline-offset:3px}.grain{z-index:90;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:-50%}.loader{z-index:120;background:var(--ink);grid-template-rows:1fr auto;padding:clamp(1.5rem,4vw,3rem);display:grid;position:fixed;inset:0;overflow:hidden}.loader__center{text-align:center;place-self:center;max-width:90vw}.loader__eyebrow{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.35em;text-transform:uppercase;color:var(--bone-3);overflow:hidden}.loader__eyebrow span{display:inline-block}.loader__word{font-family:var(--f-display);letter-spacing:-.03em;margin-block:clamp(.75rem,2vw,1.5rem);font-size:clamp(2.6rem,1rem + 9vw,8.5rem);font-weight:640;line-height:.98}.loader__word em{font-family:var(--f-serif);color:var(--signal);font-style:italic;font-weight:340}.loader__tagline{font-family:var(--f-mono);font-size:var(--fs-small);color:var(--bone-2);letter-spacing:.04em;min-height:1.4em}.loader__caret{color:var(--signal)}.loader__foot{justify-content:space-between;align-items:end;gap:1rem;display:flex}.loader__count{font-family:var(--f-display);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:clamp(2.5rem,1rem + 6vw,5.5rem);font-weight:600;line-height:.85}.loader__count sup{font-family:var(--f-mono);vertical-align:super;color:var(--bone-3);letter-spacing:0;font-size:.9rem}.loader__meta{text-align:right;line-height:1.5}.loader__bar{background:var(--line);grid-column:1/-1;height:1px;margin-top:1.25rem;position:relative}.loader__bar i{background:var(--signal);width:0%;box-shadow:0 0 12px var(--signal);position:absolute;inset:0 auto 0 0}.nav{z-index:100;padding:clamp(.85rem, 2vw, 1.35rem) var(--gutter);border-bottom:1px solid var(--line);transition:border-color .4s var(--ease);justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.nav:before{content:"";z-index:-1;background:color-mix(in srgb, var(--ink) 62%, transparent);-webkit-backdrop-filter:blur(12px)saturate(120%);transition:background .4s var(--ease);position:absolute;inset:0}.nav.is-scrolled{border-color:var(--line-2)}.nav.is-scrolled:before{background:color-mix(in srgb, var(--ink) 85%, transparent)}.nav__mark{font-family:var(--f-display);letter-spacing:-.02em;white-space:nowrap;flex-shrink:0;align-items:center;gap:.6rem;font-size:1.05rem;font-weight:680;display:inline-flex}.nav__mark b{background:var(--signal);width:8px;height:8px;box-shadow:0 0 10px var(--signal);animation:pulse 3s var(--ease-in-out) infinite;border-radius:50%;flex-shrink:0}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.7)}}.nav__links{align-items:center;gap:clamp(1rem,2vw,2.4rem);display:flex}.nav__links a:not(.nav__cta){font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.16em;text-transform:uppercase;color:var(--bone-2);transition:color .3s var(--ease);padding:.4rem 0;position:relative}.nav__links a:not(.nav__cta):after{content:"";background:var(--signal);transform-origin:100%;width:100%;height:1px;transition:transform .4s var(--ease);position:absolute;bottom:0;left:0;transform:scaleX(0)}.nav__links a:not(.nav__cta):hover{color:var(--bone)}.nav__links a:not(.nav__cta):hover:after{transform-origin:0;transform:scaleX(1)}.nav__links a.is-active{color:var(--bone)}.nav__links a.is-active:after{transform-origin:0;transform:scaleX(1)}.nav__links a.nav__version{color:var(--bone-3);gap:.35em;display:inline-flex}.nav__cta{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--signal);border:1px solid var(--signal);transition:color .3s var(--ease), background .3s var(--ease), border-color .3s var(--ease);will-change:transform;border-radius:100px;align-items:center;gap:.5em;padding:.72em 1.05em;font-weight:500;line-height:1;display:inline-flex}.nav__cta svg{transition:transform .3s var(--ease);flex-shrink:0}.nav__cta:hover{color:var(--ink);background:var(--signal)}.nav__cta:hover svg{transform:translate(1px,-1px)}@media (width<=899px){.nav__links a.nav__hideable{display:none}}@media (width<=599px){.nav__links a:not(.nav__cta){display:none}}.hero{min-height:100svh;padding:clamp(4.5rem, 8.5vh, 6.5rem) var(--gutter) clamp(3rem, 7vh, 4.25rem);flex-direction:column;justify-content:center;display:flex;position:relative}.hero__wrap{width:100%;max-width:var(--maxw);margin-inline:auto}.hero__topline{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-bottom:clamp(1.5rem,3.5vh,3rem);padding-top:1rem;display:flex}.hero__title{font-size:min(var(--fs-mega), calc((100vw - 2 * var(--gutter)) / 7.2));letter-spacing:-.04em;font-weight:600;line-height:.9}.hero__title .line{clip-path:inset(0 -50vw);white-space:nowrap;margin-bottom:-.08em;padding-bottom:.16em;display:block}.hero__title .thin{font-family:var(--f-serif);letter-spacing:-.02em;font-style:italic;font-weight:300}@property --lit{syntax:"<number>";inherits:false;initial-value:0}.hero__g{--lit:0;color:color-mix(in oklab, var(--bone), var(--lit-hi) calc(var(--lit) * 100%));text-shadow:0 0 calc(var(--lit) * var(--lit) * .4em) color-mix(in srgb, var(--signal-2) calc(var(--lit) * 55%), transparent);display:inline-block}.hero__title .thin .hero__g{color:color-mix(in oklab, color-mix(in oklab, var(--bone), var(--bone-2) 55%), var(--lit-hi) calc(var(--lit) * 100%))}.hero__role{font-family:var(--f-mono);letter-spacing:.13em;text-transform:uppercase;color:var(--bone-2);margin-top:clamp(.9rem,2vh,1.4rem);font-size:clamp(.9rem,.78rem + .42vw,1.18rem);font-weight:500}.hero__lower{grid-template-columns:1fr;align-items:stretch;gap:clamp(2rem,5vw,3.5rem);margin-top:clamp(1.5rem,3vh,2.25rem);display:grid}@media (width>=820px){.hero__lower{grid-template-columns:1fr minmax(260px,.46fr)}}.hero__intro{flex-direction:column;gap:clamp(1.5rem,3vw,2rem);display:flex}.hero__lead{font-size:var(--fs-lead);max-width:34ch;color:var(--bone);font-weight:380;line-height:1.45}.hero__lead .serif{color:var(--signal)}.hero__foot{flex-direction:column;gap:clamp(1.25rem,2.5vh,1.75rem);margin-top:auto;display:flex}.hero__stats{flex-wrap:wrap;gap:clamp(1.5rem,4vw,2.75rem);margin:0;display:flex}.hstat{flex-direction:column;gap:.3rem;display:flex}.hstat dt{font-family:var(--f-display);letter-spacing:-.02em;color:var(--signal);font-size:clamp(1.75rem,1.2rem + 1.6vw,2.6rem);font-weight:640;line-height:1}.hstat dd{max-width:14ch;color:var(--bone-2);margin:0;font-size:.9rem;line-height:1.3}.hero__actions{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.hero__actions .btn svg{transition:transform .3s var(--ease)}.hero__actions .btn:hover svg{transform:translateY(2px)}.hero__portrait{justify-self:start;width:100%;max-width:285px;margin:0;position:relative}@media (width>=820px){.hero__portrait{place-self:end;max-width:min(420px,39vh)}}.hero__portrait img{aspect-ratio:4/5;object-fit:cover;object-position:center 15%;border:1px solid var(--line-2);filter:grayscale()sepia(.3)brightness(.94)contrast(1.05);width:100%;height:auto;transition:filter .6s var(--ease)}@media (width>=820px){.hero__portrait img{aspect-ratio:1}}.hero__portrait:after{content:"";background:linear-gradient(to bottom, color-mix(in srgb, var(--signal) 5%, transparent), color-mix(in srgb, var(--ink) 60%, transparent));mix-blend-mode:multiply;pointer-events:none;transition:opacity .6s var(--ease);position:absolute;inset:0}.hero__portrait:hover img{filter:grayscale(0)contrast(1.02)}.hero__portrait:hover:after{opacity:0}.hero__portrait figcaption{z-index:1;position:absolute;bottom:.7rem;left:.85rem}.hero__scroll{left:max(var(--gutter), calc((100vw - var(--maxw)) / 2));color:var(--bone-3);align-items:center;gap:.75rem;display:flex;position:absolute;bottom:clamp(1.5rem,4vh,2.5rem)}.hero__scroll .line-y{background:var(--line-2);width:1px;height:42px;position:relative;overflow:hidden}.hero__scroll .line-y:after{content:"";background:var(--signal);animation:scrolldrop 2.4s var(--ease-in-out) infinite;position:absolute;inset:0}@keyframes scrolldrop{0%{transform:translateY(-100%)}60%,to{transform:translateY(100%)}}@media (width<=640px){.hero{padding-top:4.25rem;padding-bottom:2rem}.hero__topline{margin-bottom:1rem}.hero__title{line-height:.88}.hero__lower{gap:1.5rem;margin-top:1rem}.hero__intro{gap:1.15rem}.hero__lead{font-size:1.07rem;line-height:1.36}.hero__foot{gap:1.1rem}.hero__stats{grid-template-columns:repeat(3,1fr);gap:.7rem;display:grid}.hstat dt{font-size:1.6rem}.hstat dd{max-width:none;font-size:.76rem;line-height:1.25}.hero__portrait{max-width:190px}.hero__actions .btn{min-height:44px}}@media (width<=820px){.hero__scroll{min-height:44px;margin-top:clamp(1.5rem,4vh,2.5rem);position:static}}@media (pointer:coarse){.hero__actions .btn,.nav__cta{min-height:44px}.hero__scroll{align-items:center;min-height:44px}}@media (width>=820px) and (height<=930px){.hero__title{font-size:clamp(2.6rem,.4rem + 6.4vw,6.4rem)}.hero__portrait{max-width:clamp(220px,32vh,360px)}.hero__topline{margin-bottom:1rem}.hero__lower{margin-top:1rem}.hero__intro{gap:1.25rem}.hero__foot{gap:1.15rem}}.manifesto__grid{grid-template-columns:1fr;gap:clamp(2rem,5vw,4rem);display:grid}@media (width>=860px){.manifesto__grid{grid-template-columns:.32fr .68fr}}.manifesto__text{font-family:var(--f-display);letter-spacing:-.02em;max-width:22ch;font-size:clamp(1.6rem,1rem + 2.6vw,3.4rem);font-weight:480;line-height:1.24}.manifesto__text .word{white-space:pre-wrap;will-change:transform, opacity;display:inline-block}.manifesto__text em{font-family:var(--f-serif);color:var(--signal);font-style:italic;font-weight:340}.manifesto__aside{align-self:start}@media (width>=860px){.manifesto__aside{position:sticky;top:20vh}}.manifesto__aside p{color:var(--bone-2);font-size:var(--fs-body);max-width:34ch;margin-top:1rem}.manifesto__stats{border-top:1px solid var(--line);flex-direction:column;gap:0;margin-top:clamp(2rem,4vw,3rem);display:flex}.mstat{border-bottom:1px solid var(--line);align-items:baseline;gap:1rem;padding-block:1rem;display:flex}.mstat b{font-family:var(--f-display);color:var(--signal);letter-spacing:-.02em;min-width:5.2ch;font-size:1.7rem;font-weight:640;line-height:1}.mstat span{color:var(--bone-2);font-size:.95rem;line-height:1.3}.foot__top{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.08em;color:var(--bone-2);transition:color .3s var(--ease)}.foot__top:hover{color:var(--signal)}.xp__list{border-top:1px solid var(--line)}.xp{border-bottom:1px solid var(--line);transition:background .5s var(--ease);grid-template-columns:1fr;gap:.75rem 1.6rem;padding-block:clamp(2rem,4vw,3.25rem);display:grid;position:relative}@media (width>=820px){.xp{grid-template-columns:clamp(130px,12vw,160px) minmax(0,1fr) minmax(0,1.35fr);align-items:start}}.xp:hover{background:linear-gradient(to right, color-mix(in srgb, var(--signal) 5%, transparent), transparent)}.xp__period{font-family:var(--f-mono);font-size:var(--fs-small);letter-spacing:.04em;color:var(--signal);padding-top:.35rem}.xp__role{font-family:var(--f-display);font-size:var(--fs-h3);font-weight:560;line-height:1.08}.xp__company{font-family:var(--f-mono);font-size:var(--fs-small);color:var(--bone-2);letter-spacing:.02em;margin-top:.5rem;display:block}.xp__items{flex-direction:column;gap:.55rem;display:flex}.xp__items li{color:var(--bone-2);font-size:var(--fs-body);padding-left:1.25rem;line-height:1.4;position:relative}.xp__items li:before{content:"";border:1px solid var(--signal);width:6px;height:6px;position:absolute;top:.55em;left:0;transform:rotate(45deg)}.xp__num{font-family:var(--f-mono);font-size:var(--fs-meta);color:var(--bone-3);position:absolute;top:clamp(2rem,4vw,3.25rem);right:0}@media (width<=819px){.xp__num{display:none}}.skills__grid{grid-template-columns:1fr;gap:clamp(.85rem,1.4vw,1.25rem);display:grid}@media (width>=680px){.skills__grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1080px){.skills__grid{grid-template-columns:repeat(3,1fr)}}.skill{background:var(--ink-2);border:1px solid var(--line);transition:background .5s var(--ease), border-color .5s var(--ease);border-radius:4px;min-height:100%;padding:clamp(1.75rem,3vw,2.6rem);position:relative;overflow:hidden}.skill:before{content:"";background:var(--signal);transform-origin:0;width:100%;height:2px;transition:transform .5s var(--ease);position:absolute;top:0;left:0;transform:scaleX(0)}.skill:hover{background:var(--ink-3);border-color:var(--line-2)}.skill:hover:before{transform:scaleX(1)}.skill__head{align-items:baseline;gap:.75rem;margin-bottom:1.5rem;display:flex}.skill__idx{font-family:var(--f-mono);font-size:var(--fs-meta);color:var(--signal)}.skill__cat{font-family:var(--f-display);font-size:var(--fs-h3);font-weight:560;line-height:1.05}.skill__items{flex-direction:column;gap:.75rem;display:flex}.skill__items li{color:var(--bone-2);padding-left:1rem;font-size:.98rem;line-height:1.45;position:relative}.skill__items li:before{content:"";background:var(--bone-3);border-radius:50%;width:5px;height:5px;position:absolute;top:.62em;left:0}.certs{grid-template-columns:1fr;gap:clamp(.85rem,1.4vw,1.25rem);display:grid}@media (width>=760px){.certs{grid-template-columns:repeat(2,1fr)}}.cert{background:var(--ink-2);border:1px solid var(--line);min-width:0;transition:background .5s var(--ease), border-color .5s var(--ease);border-radius:4px;flex-direction:column;gap:1.15rem;padding:clamp(1.85rem,3vw,2.85rem);display:flex;position:relative}.cert:hover{background:var(--ink-3);border-color:var(--line-2)}.cert__top{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.cert__top>div:first-child{min-width:0}.cert__name{font-family:var(--f-display);letter-spacing:-.02em;font-size:clamp(1.6rem,1.2rem + 1.5vw,2.4rem);font-weight:620}.cert__org{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.14em;text-transform:uppercase;color:var(--bone-2)}.cert__full{font-family:var(--f-mono);font-size:var(--fs-small);color:var(--signal);letter-spacing:.02em}.cert__detail{color:var(--bone-2);font-size:.98rem;line-height:1.5}.cert__status{white-space:nowrap;font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.13em;text-transform:uppercase;color:var(--signal);border:1px solid var(--signal);background:color-mix(in srgb, var(--signal) 14%, transparent);border-radius:100px;flex-shrink:0;align-self:flex-start;align-items:center;gap:.5em;margin-top:.35em;padding:.42em .8em .42em .68em;font-weight:600;display:inline-flex}.cert__status:before{content:"";background:var(--signal);width:5px;height:5px;box-shadow:0 0 8px var(--signal);animation:pulse 2.4s var(--ease-in-out) infinite;border-radius:50%}.split{grid-template-columns:1fr;gap:clamp(3rem,6vw,5rem);display:grid}@media (width>=940px){.split{grid-template-columns:1.15fr .85fr}}.block-label{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.2em;text-transform:uppercase;color:var(--bone-3);align-items:center;gap:.75rem;margin-bottom:2rem;display:flex}.block-label:before{content:"";background:var(--signal);width:24px;height:1px}.edu__row{border-bottom:1px solid var(--line);grid-template-columns:1fr;align-items:baseline;gap:.5rem 2rem;padding-block:clamp(1.25rem,2.5vw,2rem);display:grid}@media (width>=560px){.edu__row{grid-template-columns:.28fr .72fr}}.edu__row:first-of-type{border-top:1px solid var(--line)}.edu__period{font-family:var(--f-mono);font-size:var(--fs-small);color:var(--signal)}.edu__title{font-family:var(--f-display);font-size:var(--fs-h3);font-weight:520;line-height:1.1}.edu__school{color:var(--bone-2);margin-top:.3rem;font-size:.98rem}.edu__detail{color:var(--bone-3);font-family:var(--f-mono);font-size:var(--fs-small);margin-top:.2rem}.dist{align-content:start;gap:clamp(2.75rem,5.5vw,4.25rem);display:grid}.dist__block+.dist__block{border-top:1px solid var(--line);padding-top:clamp(2rem,4vw,3rem)}.dist__block h3{font-size:var(--fs-h3);margin-bottom:1.1rem}.dist__awards{flex-direction:column;gap:.75rem;display:flex}.dist__award{border:1px solid var(--line-2);transition:border-color .4s var(--ease), background .4s var(--ease);border-radius:4px;align-items:center;gap:.85rem;padding:.85rem 1.1rem;font-size:.98rem;display:flex}.dist__award:hover{border-color:var(--signal);background:color-mix(in srgb, var(--signal) 5%, transparent)}.dist__award b{font-family:var(--f-display);color:var(--signal);font-size:1.5rem;font-weight:640;line-height:1}.dist__list{flex-wrap:wrap;gap:.6rem .65rem;display:flex}.dist__list span{color:var(--bone-2);border:1px solid var(--line);transition:color .3s var(--ease), border-color .3s var(--ease);border-radius:100px;padding:.4rem .85rem;font-size:.98rem}.dist__list span:hover{color:var(--bone);border-color:var(--line-2)}.contact{flex-direction:column;justify-content:center;min-height:90svh;display:flex}.contact__lead{font-family:var(--f-display);font-size:var(--fs-h1);letter-spacing:-.03em;max-width:20ch;font-weight:560;line-height:1.02}.contact__lead em{font-family:var(--f-serif);color:var(--signal);font-style:italic;font-weight:320}.contact__mail{font-family:var(--f-display);letter-spacing:-.02em;overflow-wrap:anywhere;max-width:100%;margin-top:clamp(2rem,5vw,3.5rem);font-size:clamp(1.15rem,.7rem + 2.6vw,3.4rem);font-weight:520;display:inline-block;position:relative}.contact__mail:after{content:"";background:var(--signal);transform-origin:0;width:100%;height:2px;transition:transform .5s var(--ease);position:absolute;bottom:.05em;left:0;transform:scaleX(0)}.contact__mail:hover:after{transform:scaleX(1)}.contact__grid{border-top:1px solid var(--line);grid-template-columns:1fr;gap:2rem;margin-top:clamp(3rem,7vw,5.5rem);padding-top:2.5rem;display:grid}@media (width>=720px){.contact__grid{grid-template-columns:repeat(3,1fr)}}.contact__col h3{font-family:var(--f-mono);font-size:var(--fs-meta);letter-spacing:.2em;text-transform:uppercase;color:var(--bone-3);margin-bottom:.9rem;font-weight:500}.contact__col a,.contact__col p{color:var(--bone);font-size:var(--fs-body);transition:color .3s var(--ease);width:fit-content;display:block}.contact__col a:hover{color:var(--signal)}.foot{padding:2rem var(--gutter);border-top:1px solid var(--line);z-index:1;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:relative}.foot p,.foot span{font-family:var(--f-mono);font-size:var(--fs-meta);color:var(--bone-3);letter-spacing:.08em}.btn{font-family:var(--f-mono);font-size:var(--fs-small);letter-spacing:.14em;text-transform:uppercase;color:var(--bone);border:1px solid color-mix(in srgb, var(--bone) 34%, transparent);transition:color .3s var(--ease), border-color .3s var(--ease), background .3s var(--ease);border-radius:100px;justify-content:center;align-items:center;gap:.5rem;padding:.72em 1.2em .72em 1.34em;font-weight:500;line-height:1;display:inline-flex}.btn:hover,.btn--solid{color:var(--ink);background:var(--signal);border-color:var(--signal)}.btn--solid:hover{background:var(--signal-2);border-color:var(--signal-2)}:root[data-motion=reduced] .nav__mark b,:root[data-motion=reduced] .cert__status:before,:root[data-motion=reduced] .hero__scroll .line-y:after{opacity:1;animation:none;transform:none}:root[data-motion=reduced] .hero__scroll .line-y:after{opacity:.5}:root[data-motion=reduced] .section:before{transition:none}@media (prefers-reduced-motion:reduce){.nav__mark b,.cert__status:before{opacity:1;animation:none;transform:none}.hero__scroll .line-y:after{opacity:.5;animation:none;transform:none}.hero__g{transition:none}}
