@font-face{font-family:Roboto Condensed;font-weight:700;font-style:normal;font-display:swap;src:url(/fonts/roboto-condensed/roboto-condensed-700.ttf)format("truetype")}#root{text-align:left;box-sizing:border-box;flex-direction:column;max-width:100%;min-height:100svh;margin:0 auto;display:flex}a:link:not([role=button]),a:visited:not([role=button]){color:var(--color-primary-text);text-decoration:none}.link-arrow{color:var(--color-primary-text);font-weight:700;font-size:var(--text-xl)}:root{--color-background:#f7f4ec;--color-background-surface:#fbf9f3;--color-primary:#e5ad32;--color-primary-dark:#c98e18;--color-primary-darker:#b07a14;--color-primary-soft:#e5ad3224;--color-text:#111;--color-text-secondary:#555;--color-text-muted:#888;--color-text-inverse:#f7f4ec;--color-border:#1111112e;--color-border-strong:#11111159;--color-overlay:#1111110a;--color-portrait-glow:#e5ad323d;--color-portrait-glow-soft:#e5ad321a;--shadow-hero-card:0 20px 40px #1111111a;--color-skill-card-bg:#2a2520;--color-skill-card-border:#ffffff0f;--color-skill-progress-empty:#ffffff1f;--color-timeline-divider:#1111111f;--color-dot-grid:#11111126;--color-code-glyph:#e5ad3240;--shadow-skill-card:0 2px 8px #00000026;--shadow-skill-card-hover:0 4px 16px #00000040;--shadow-journal-card:0 4px 24px #1111110f;--color-impact-box-border:var(--color-primary);--color-impact-box-bg:var(--color-primary-soft);--color-tech-badge-border:var(--color-border);--color-projects-bg:#1e1b16;--color-projects-surface:#272319;--color-projects-text:#f0ece3;--color-projects-text-secondary:#a8a298;--color-projects-text-muted:#7a756c;--color-projects-border:#f0ece31a;--color-projects-border-strong:#f0ece32e;--border-color:var(--color-border);--border-color-strong:var(--color-border-strong);--color-white:#fff;--color-footer-bg:#1a1a1a;--color-footer-border:#ffffff1a;--color-text-primary:var(--color-text);--color-text-on-primary:var(--color-text-inverse);--color-bg-page-white:var(--color-background-surface);--color-primary-text:var(--color-primary);--color-focus:var(--color-primary-dark);--color-border-light:var(--color-border);--color-border-default:var(--color-border);--color-border-header:var(--color-border);--color-bg-light:var(--color-background-surface);--color-bg-alt:var(--color-background);--container-max-width:1320px;--container-padding:16px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--space-8:40px;--space-9:48px;--space-10:64px;--space-11:80px;--space-12:96px;--radius-none:0;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:16px;--radius-xl:20px;--radius-pill:999px;--hero-panel-radius:0;--button-radius:0;--tag-radius:var(--radius-pill);--border-width:1px;--hero-padding-desktop:32px;--hero-padding-tablet:24px;--hero-padding-mobile:16px;--hero-panel-padding-desktop:28px;--hero-panel-padding-tablet:24px;--hero-panel-padding-mobile:20px;--hero-max-width:1440px;--hero-min-height:820px;--hero-preferred-height:900px;--hero-capabilities-height:64px;--hero-grid-columns:12;--hero-grid-gap:0;--hero-left-columns:4;--hero-center-columns:5;--hero-right-columns:3;--portrait-width-desktop:min(41vw, 590px);--portrait-width-tablet:min(52vw, 520px);--portrait-width-mobile:min(88vw, 420px);--portrait-max-width:620px;--portrait-desktop-top:55px;--portrait-tablet-top:90px;--z-background:0;--z-decoration:1;--z-panels:2;--z-portrait-back:3;--z-portrait-mid:5;--z-panels-front:6;--z-portrait-front:7;--z-testimonial:8;--z-header:20;--portrait-glow-size:42%;--portrait-glow-opacity:.2;--portrait-glow-blur:80px;--portrait-decoration-opacity:.18;--portrait-decoration-blur:40px;--header-height-desktop:78px;--header-height-tablet:72px;--header-height-mobile:64px;--header-padding-desktop:32px;--header-padding-tablet:24px;--header-padding-mobile:16px;--button-height:44px;--button-padding-x:20px;--button-font-size:12px;--button-font-weight:600;--button-letter-spacing:.08em;--button-icon-size:14px;--button-icon-offset:6px;--button-transition-duration:.25s;--carousel-transition-duration:.4s;--carousel-transition-easing:cubic-bezier(.22, 1, .36, 1);--carousel-control-size:40px;--carousel-gap:12px;--carousel-card-padding-desktop:32px;--carousel-card-padding-tablet:24px;--carousel-card-padding-mobile:20px;--motion-fast:.18s;--motion-normal:.3s;--motion-slow:.5s;--motion-ease-out:cubic-bezier(.22, 1, .36, 1);--motion-ease-in-out:cubic-bezier(.65, 0, .35, 1);--hero-reveal-duration:.7s;--hero-reveal-stagger:80ms;--hero-portrait-duration:1s;--hero-introduction-span:4;--hero-portrait-span:5;--hero-currently-span:3;--hero-experience-span:4;--hero-testimonial-span:5;--hero-availability-span:3;--portrait-center-x:50%;--portrait-focus-y:48%;--portrait-overlap-top:55px;--portrait-overlap-bottom:80px;--hero-portrait-scale-tablet:.82;--hero-portrait-scale-mobile:1;--experience-padding-y:48px;--experience-padding-x:48px;--experience-stat-gap:32px;--experience-timeline-gap:32px;--experience-timeline-row-gap:8px;--skill-card-padding:12px;--skill-card-progress-height:3px;--skills-band-top-padding:40px;--skills-band-bottom-padding:48px;--skill-progress-radius:2px;--experience-reveal-duration:.5s;--skills-reveal-duration:.4s;--skill-card-hover-duration:.3s;--journal-padding-y:60px;--journal-padding-bottom:70px;--journal-featured-padding:32px;--journal-card-radius:14px;--journal-image-radius:10px;--projects-row-height:200px;--projects-panel-padding:48px;--font-primary:"Inter", sans-serif;--font-display:"Montserrat", sans-serif;--font-accent:"Cormorant Garamond", serif;--font-name-design:"Roboto Condensed", sans-serif;--font-secondary:var(--font-display);--font-script:"Allura", cursive;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--hero-name-weight:800;--hero-heading-weight:700;--hero-label-weight:600;--font-regular:400;--font-normal:500;--font-semi-bold:600;--font-bold:700;--font-size-xs:10px;--font-size-sm:12px;--font-size-md:14px;--font-size-base:16px;--font-size-lg:18px;--font-size-xl:24px;--font-size-2xl:32px;--font-size-3xl:48px;--text-xs:12px;--text-sm:14px;--text-md:16px;--text-lg:20px;--text-xl:24px;--text-xxl:32px;--text-xxxl:40px;--hero-name-size-desktop:clamp(72px, 7vw, 72px);--hero-name-size-tablet:clamp(56px, 8vw, 88px);--hero-name-size-mobile:clamp(52px, 15vw, 76px);--hero-heading-size-desktop:clamp(32px, 3vw, 52px);--hero-heading-size-tablet:clamp(28px, 4vw, 42px);--hero-heading-size-mobile:clamp(28px, 8vw, 38px);--line-height-tight:.88;--line-height-heading:.95;--line-height-normal:1.4;--line-height-relaxed:1.6;--hero-name-line-height:.82;--tracking-tight:-.04em;--tracking-heading:-.055em;--tracking-normal:0;--tracking-wide:.08em;--tracking-label:.12em;--hero-name-letter-spacing:-.06em;--hero-label-letter-spacing:.12em;--font-size-experience-stat:120px;--font-size-experience-stat-tablet:96px;--font-size-experience-stat-mobile:80px;--font-size-experience-label:14px;--font-size-timeline-period:11px;--font-size-timeline-role:16px;--font-size-timeline-company:13px;--font-size-skill-name:13px;--font-size-skill-meta-label:8px;--font-size-skill-meta-value:13px;--font-size-skill-unit:11px;--font-size-section-title:22px;--font-size-journal-headline:clamp(32px, 3.5vw, 48px);--font-size-project-title:clamp(28px, 3vw, 48px);--font-size-project-number:48px;--font-size-cta-headline:clamp(28px, 4vw, 56px);--font-size-footer-signature:clamp(28px, 2.5vw, 36px)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}@font-face{font-family:Inter;font-weight:400;font-display:swap;src:url(/fonts/Inter-400.ttf)format("truetype")}@font-face{font-family:Inter;font-weight:500;font-display:swap;src:url(/fonts/Inter-500.ttf)format("truetype")}@font-face{font-family:Inter;font-weight:600;font-display:swap;src:url(/fonts/Inter-600.ttf)format("truetype")}@font-face{font-family:Inter;font-weight:700;font-display:swap;src:url(/fonts/Inter-700.ttf)format("truetype")}@font-face{font-family:Allura;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Allura-400-vietnamese.woff2)format("woff2");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:Allura;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Allura-400-latin-ext.woff2)format("woff2");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:Allura;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Allura-400-latin.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/CormorantGaramond-400-vietnamese.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/CormorantGaramond-400-latin-ext.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/CormorantGaramond-400-latin.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/CormorantGaramond-500-vietnamese.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/CormorantGaramond-500-latin-ext.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/CormorantGaramond-500-latin.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/CormorantGaramond-600-vietnamese.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/CormorantGaramond-600-latin-ext.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/CormorantGaramond-600-latin.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/CormorantGaramond-700-vietnamese.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/CormorantGaramond-700-latin-ext.woff2)format("woff2");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:Cormorant Garamond;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/CormorantGaramond-700-latin.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Montserrat-400-vietnamese.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Montserrat-400-latin-ext.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Montserrat-400-latin.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/Montserrat-500-vietnamese.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/Montserrat-500-latin-ext.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/Montserrat-500-latin.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/Montserrat-600-vietnamese.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/Montserrat-600-latin-ext.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/Montserrat-600-latin.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Montserrat-700-vietnamese.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Montserrat-700-latin-ext.woff2)format("woff2");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:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Montserrat-700-latin.woff2)format("woff2");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:Roboto Condensed;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto-condensed/roboto-condensed-700.woff2)format("woff2");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}html{overflow-x:clip}body{background-color:var(--color-bg-page-white);color:var(--color-text-primary);font-family:var(--font-primary);font-size:var(--text-md)}img{max-width:100%;height:auto}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.d-none{display:none}.d-block{display:block}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.mt-0{margin-top:0}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.ml-0{margin-left:0}.ml-1{margin-left:4px}.ml-2{margin-left:8px}.ml-3{margin-left:12px}.ml-4{margin-left:16px}.mr-0{margin-right:0}.mr-1{margin-right:4px}.mr-2{margin-right:8px}.mr-3{margin-right:12px}.mr-4{margin-right:16px}.pt-0{padding-top:0}.pt-1{padding-top:4px}.pt-2{padding-top:8px}.pt-3{padding-top:12px}.pt-4{padding-top:16px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:4px}.pb-2{padding-bottom:8px}.pb-3{padding-bottom:12px}.pb-4{padding-bottom:16px}.pl-0{padding-left:0}.pl-1{padding-left:4px}.pl-2{padding-left:8px}.pl-3{padding-left:12px}.pl-4{padding-left:16px}.pr-0{padding-right:0}.pr-1{padding-right:4px}.pr-2{padding-right:8px}.pr-3{padding-right:12px}.pr-4{padding-right:16px}.p-relative{position:relative}.content-end{justify-content:end}.content-between{justify-content:space-between}.content-center{justify-content:center}.items-center{align-items:center}.flex-column{flex-direction:column}.skip-link{background:var(--color-primary);color:var(--color-text-on-primary);font-size:var(--text-sm);border-radius:0 0 var(--radius-md) var(--radius-md);z-index:9999;padding:12px 24px;font-weight:600;text-decoration:none;transition:top .2s;position:absolute;top:-100%;left:50%;transform:translate(-50%)}.skip-link:focus{outline:3px solid var(--color-focus);outline-offset:2px;top:0}:focus-visible,button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-loading{min-height:200px;font-size:var(--text-md);color:var(--color-text-secondary);justify-content:center;align-items:center;display:flex}.h1{font-family:var(--font-primary);font-size:var(--text-xxxl);font-weight:var(--font-bold)}.h2{font-family:var(--font-primary);font-size:var(--text-xxl);font-weight:var(--font-bold)}.text-md{font-family:var(--font-primary);font-size:var(--text-md);font-weight:var(--font-regular)}.text-sm{font-family:var(--font-primary);font-size:var(--text-sm)}.text-secondary{font-family:var(--font-secondary)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--container-padding:16px}.header-container{max-width:1280px;margin:0 auto}.page-container{background:linear-gradient(to bottom, var(--color-bg-page-white) 0%, var(--color-border-light) 100%);padding-bottom:80px}.page-sub-container{max-width:1280px;margin:0 auto}.section{max-width:var(--container-max-width);margin:0 auto;padding:0 80px 80px}@media (width<=576px){.section{padding:40px 20px}}@media (width<=768px){.section{padding:40px 20px}}@media (width<=1440px){.section{padding:40px 20px}}:root{--color-background:#f7f4ec;--color-background-surface:#fbf9f3;--color-primary:#e5ad32;--color-primary-dark:#c98e18;--color-primary-darker:#b07a14;--color-primary-soft:#e5ad3224;--color-text:#111;--color-text-secondary:#555;--color-text-muted:#888;--color-text-inverse:#f7f4ec;--color-border:#1111112e;--color-border-strong:#11111159;--color-overlay:#1111110a;--color-portrait-glow:#e5ad323d;--color-portrait-glow-soft:#e5ad321a;--shadow-hero-card:0 20px 40px #1111111a;--color-skill-card-bg:#2a2520;--color-skill-card-border:#ffffff0f;--color-skill-progress-empty:#ffffff1f;--color-timeline-divider:#1111111f;--color-dot-grid:#11111126;--color-code-glyph:#e5ad3240;--shadow-skill-card:0 2px 8px #00000026;--shadow-skill-card-hover:0 4px 16px #00000040;--shadow-journal-card:0 4px 24px #1111110f;--color-impact-box-border:var(--color-primary);--color-impact-box-bg:var(--color-primary-soft);--color-tech-badge-border:var(--color-border);--color-projects-bg:#1e1b16;--color-projects-surface:#272319;--color-projects-text:#f0ece3;--color-projects-text-secondary:#a8a298;--color-projects-text-muted:#7a756c;--color-projects-border:#f0ece31a;--color-projects-border-strong:#f0ece32e;--border-color:var(--color-border);--border-color-strong:var(--color-border-strong);--color-white:#fff;--color-footer-bg:#1a1a1a;--color-footer-border:#ffffff1a;--color-text-primary:var(--color-text);--color-text-on-primary:var(--color-text-inverse);--color-bg-page-white:var(--color-background-surface);--color-primary-text:var(--color-primary);--color-focus:var(--color-primary-dark);--color-border-light:var(--color-border);--color-border-default:var(--color-border);--color-border-header:var(--color-border);--color-bg-light:var(--color-background-surface);--color-bg-alt:var(--color-background);--font-primary:"Inter", sans-serif;--font-display:"Montserrat", sans-serif;--font-accent:"Cormorant Garamond", serif;--font-name-design:"Roboto Condensed", sans-serif;--font-secondary:var(--font-display);--font-script:"Allura", cursive;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--hero-name-weight:800;--hero-heading-weight:700;--hero-label-weight:600;--font-regular:400;--font-normal:500;--font-semi-bold:600;--font-bold:700;--font-size-xs:10px;--font-size-sm:12px;--font-size-md:14px;--font-size-base:16px;--font-size-lg:18px;--font-size-xl:24px;--font-size-2xl:32px;--font-size-3xl:48px;--text-xs:12px;--text-sm:14px;--text-md:16px;--text-lg:20px;--text-xl:24px;--text-xxl:32px;--text-xxxl:40px;--hero-name-size-desktop:clamp(72px, 7vw, 72px);--hero-name-size-tablet:clamp(56px, 8vw, 88px);--hero-name-size-mobile:clamp(52px, 15vw, 76px);--hero-heading-size-desktop:clamp(32px, 3vw, 52px);--hero-heading-size-tablet:clamp(28px, 4vw, 42px);--hero-heading-size-mobile:clamp(28px, 8vw, 38px);--line-height-tight:.88;--line-height-heading:.95;--line-height-normal:1.4;--line-height-relaxed:1.6;--hero-name-line-height:.82;--tracking-tight:-.04em;--tracking-heading:-.055em;--tracking-normal:0;--tracking-wide:.08em;--tracking-label:.12em;--hero-name-letter-spacing:-.06em;--hero-label-letter-spacing:.12em;--font-size-experience-stat:120px;--font-size-experience-stat-tablet:96px;--font-size-experience-stat-mobile:80px;--font-size-experience-label:14px;--font-size-timeline-period:11px;--font-size-timeline-role:16px;--font-size-timeline-company:13px;--font-size-skill-name:13px;--font-size-skill-meta-label:8px;--font-size-skill-meta-value:13px;--font-size-skill-unit:11px;--font-size-section-title:22px;--font-size-journal-headline:clamp(32px, 3.5vw, 48px);--font-size-project-title:clamp(28px, 3vw, 48px);--font-size-project-number:48px;--font-size-cta-headline:clamp(28px, 4vw, 56px);--font-size-footer-signature:clamp(28px, 2.5vw, 36px)}.language-switcher{display:inline-block;position:relative}.language-switcher__button{border:1px solid color-mix(in srgb, var(--color-text-white) 30%, transparent);border-radius:var(--radius-md);color:var(--color-text-white);font-family:var(--font-primary);font-size:var(--text-sm);font-weight:var(--font-normal);cursor:pointer;background:0 0;align-items:center;gap:8px;padding:8px 12px;transition:all .2s;display:flex}.language-switcher__button:hover{background:color-mix(in srgb, var(--color-primary) 15%, transparent);border-color:var(--color-primary)}.language-switcher__button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (width<=768px){.language-switcher__button{font-size:var(--text-xs);padding:6px 10px}}.language-switcher__icon{flex-shrink:0;width:16px;height:16px}.language-switcher__current{text-transform:uppercase;letter-spacing:.5px}.language-switcher__dropdown{background:var(--color-bg-page-dark-secondary);border:1px solid var(--color-border-header);border-radius:var(--radius-md);min-width:140px;box-shadow:var(--shadow-lg);z-index:1000;pointer-events:auto;margin:0;padding:8px;list-style:none;animation:.15s dropdownFadeIn;position:absolute;top:calc(100% + 8px);right:0}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.language-switcher__option{border-radius:var(--radius-sm);width:100%;color:var(--color-text-white);font-family:var(--font-primary);font-size:var(--text-sm);font-weight:var(--font-normal);text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;transition:background .15s;display:flex}.language-switcher__option:hover,.language-switcher__option:focus-visible{background:color-mix(in srgb, var(--color-primary) 15%, transparent);outline:none}.language-switcher__option.active{background:color-mix(in srgb, var(--color-primary) 20%, transparent);font-weight:var(--font-semi-bold)}.language-switcher__option-label{flex:1}.language-switcher__check{color:var(--color-primary);flex-shrink:0;font-size:14px;font-weight:700}@media (width<=768px){.language-switcher__button{padding:6px 8px}.language-switcher__current{display:none}.language-switcher__dropdown{min-width:120px;right:-20px}}.header--menu-open{background:#101010f5}.header{z-index:1000;background:var(--color-bg-page-dark-secondary);width:100%;padding:0;transition:background-color .25s,-webkit-backdrop-filter .25s,backdrop-filter .25s,box-shadow .25s,height .25s,border-color .25s;position:relative;inset:0 0 auto}.header--homepage{background:0 0;position:absolute}.header__container{justify-content:space-between;align-items:center;height:100%;margin:0 auto;padding:24px 32px;transition:max-width .25s,padding .25s;display:flex}.header__logo{letter-spacing:1px;color:#fff;-webkit-user-select:none;user-select:none;align-items:center;font-size:30px;font-weight:800;display:flex}.header__logo span{color:var(--color-primary)}.header__logo img{width:auto;max-height:48px;display:block}.header__nav{align-items:center;gap:40px;display:flex}.header__nav-link{font-family:inherit;font-size:var(--text-md);color:#fff;cursor:pointer;background:0 0;border:none;align-items:center;font-weight:600;line-height:1;text-decoration:none;transition:color .25s;display:flex;position:relative}.header__nav-link:after{content:"";background:var(--color-primary);width:0;height:3px;transition:width .25s;position:absolute;bottom:-12px;left:0}.header__nav-link:hover{color:var(--color-primary)}.header__nav-link:hover:after{width:100%}.header__signin:hover{transform:translateY(-2px);box-shadow:0 12px 28px #d4af3740}.header__lang-wrapper{align-items:center;margin-left:24px;display:flex}.header__toggle{color:var(--color-primary);cursor:pointer;background:0 0;border:none;font-size:28px;display:none;position:relative;top:4px}.header__mobile{display:none}.header--transparent{-webkit-backdrop-filter:none;backdrop-filter:none;height:88px;box-shadow:none;background:0 0;border-bottom:none}@media (width<=768px){.header{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid #ffffff0f;background:#101010eb!important;height:72px!important}.header .header__container{padding:0 24px}.header__nav,.header__lang-wrapper{display:none}.header__toggle{display:block}.header__mobile{background:#101010fa;flex-direction:column;max-height:0;transition:max-height .3s;display:flex;overflow:hidden}.header__mobile .header__nav-link{font-family:inherit;font-size:var(--text-md);color:#fff;text-align:left;cursor:pointer;background:0 0;border:none;padding:18px 24px;font-weight:600;transition:color .2s}.header__mobile .header__nav-link:hover{color:var(--color-primary)}.header__mobile.active{max-height:320px}.header__signin--mobile{justify-content:center;margin:18px 24px 24px}}.footer{background:var(--color-footer-bg)}.footer__shell{max-width:var(--hero-max-width);padding:var(--space-10) var(--hero-padding-desktop) var(--space-8);margin:0 auto}.footer__grid{grid-template-columns:repeat(4,1fr);display:grid}.footer__col{padding:var(--space-6) var(--space-8);border-right:var(--border-width) solid var(--color-footer-border);flex-direction:column;align-items:flex-start;display:flex}.footer__col:last-child{border-right:0}.footer__title{align-items:baseline;gap:var(--space-2);font-family:var(--font-primary);font-size:var(--font-size-section-title);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-inverse);margin:0;display:flex}.footer__title-index{font-weight:var(--font-weight-semibold);color:var(--color-primary)}.footer__accent{width:40px;height:2px;margin:var(--space-4) 0 var(--space-6);background:var(--color-primary);display:block}.footer__bio{font-family:var(--font-primary);font-size:var(--font-size-md);line-height:var(--line-height-relaxed);color:var(--color-text-muted);margin:0}.footer__signature{margin:var(--space-6) 0 0;font-family:var(--font-script);font-size:var(--font-size-footer-signature);color:var(--color-primary);line-height:1}.footer__tagline{margin:var(--space-3) 0 0;font-family:var(--font-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.footer__list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.footer__link{align-items:center;gap:var(--space-2);font-family:var(--font-primary);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-inverse);transition:color var(--motion-fast) ease;text-decoration:none;display:inline-flex}.footer__link svg{color:var(--color-primary);transition:transform var(--motion-fast) ease}.footer__link-icon{font-size:var(--font-size-lg)}.footer__link:hover{color:var(--color-primary)}.footer__link:hover svg{transform:translate(3px)}.footer__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-xs)}.footer__contact-row{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:var(--border-width) solid var(--color-footer-border);display:flex}.footer__contact-row:first-child{padding-top:0}.footer__contact-row:last-child{border-bottom:0;padding-bottom:0}.footer__contact-row>svg{color:var(--color-primary);font-size:var(--font-size-md);flex-shrink:0;align-self:center}.footer__contact-icon{color:var(--color-primary);font-size:var(--font-size-lg);flex-shrink:0;align-self:flex-start}.footer__contact-copy{gap:var(--space-1);flex-direction:column;display:flex}.footer__contact-label{font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-primary)}.footer__contact-value{color:var(--color-text-inverse);word-break:break-word;text-decoration:none}.footer__contact-value:hover{color:var(--color-primary)}.footer__contact-value:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-xs)}.footer__bottom{justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-10);padding-top:var(--space-6);border-top:var(--border-width) solid var(--color-footer-border);display:flex}.footer__copyright{font-family:var(--font-primary);font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.footer__glyph{font-family:var(--font-primary);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);color:var(--color-primary)}@media (width<=768px){.footer__glyph{opacity:.3}}.footer__built{font-family:var(--font-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-primary);margin:0}@media (width<=1200px){.footer__grid{grid-template-columns:repeat(2,1fr)}.footer__col{border-right:var(--border-width) solid var(--color-footer-border);border-bottom:var(--border-width) solid var(--color-footer-border)}.footer__col:nth-child(2n){border-right:0}.footer__col:nth-child(-n+2){border-top:var(--border-width) solid var(--color-footer-border)}.footer__col:last-child{border-right:0}}@media (width<=768px){.footer__grid{grid-template-columns:1fr}.footer__col{border-right:0;border-bottom:var(--border-width) solid var(--color-footer-border);padding:var(--space-6) 0}.footer__col:nth-child(-n+2){border-top:0}.footer__col:last-child{border-bottom:0}.footer__bottom{text-align:center;align-items:center;gap:var(--space-3);flex-direction:column}}.scroll-to-top{z-index:999;border:1px solid var(--color-text-primary);background:var(--color-bg-page-white);width:56px;height:56px;color:var(--color-text-primary);cursor:pointer;box-shadow:0 12px 30px var(--shadow-2xl);opacity:0;visibility:hidden;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;font-size:24px;transition:opacity .3s,transform .3s,visibility .3s;display:flex;position:fixed;bottom:32px;right:32px;transform:scale(.8)translateY(15px)}.scroll-to-top:hover{transform:scale(1.08)translateY(0)}.scroll-to-top:active{transform:scale(.95)}.scroll-to-top.show{opacity:1;visibility:visible;pointer-events:auto;transform:scale(1)translateY(0)}.scroll-to-top svg{font-size:24px}@media (width<=768px){.scroll-to-top{width:48px;height:48px;bottom:20px;right:20px}.scroll-to-top svg{font-size:20px}}@media (prefers-reduced-motion:reduce){.scroll-to-top{transition:none}}.floating-contact{z-index:999;flex-direction:column;align-items:center;display:flex;position:fixed;bottom:104px;right:32px}.contact-list{flex-direction:column;gap:12px;margin-bottom:12px;display:flex}.contact-list a{background:var(--color);width:52px;height:52px;color:var(--color-text-white);box-shadow:0 12px 30px var(--shadow-xl);opacity:0;pointer-events:none;transition:all .3s;transition-delay:var(--delay);border-radius:50%;justify-content:center;align-items:center;font-size:22px;text-decoration:none;display:flex;transform:translateY(15px)scale(.8)}.floating-contact.open a{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.floating-contact.open a:after{content:"";background:0 0;width:0;height:0}.floating-contact.open a:hover{color:var(--color-text-white);transform:scale(1.1)}.floating-contact__toggle{background:var(--color-primary-darker);width:56px;height:56px;color:var(--color-text-on-primary);cursor:pointer;box-shadow:0 12px 30px var(--shadow-2xl);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:24px;transition:all .25s;display:flex}.floating-contact__toggle:hover{transform:scale(1.08)}@media (width<=768px){.floating-contact{bottom:88px;right:20px}.floating-contact__toggle,.contact-list a{width:48px;height:48px;font-size:20px}}li[role=listitem]::marker{color:#0000}
