@font-face{font-family:Caladea;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/caladea-latin-400-normal-CEHWF4nY.woff2)format("woff2"),url(/assets/caladea-latin-400-normal-BdRVtv9R.woff)format("woff")}@font-face{font-family:Caladea;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/caladea-latin-400-italic-LV4kG-PE.woff2)format("woff2"),url(/assets/caladea-latin-400-italic-BXgumMrY.woff)format("woff")}@font-face{font-family:Caladea;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/caladea-latin-700-normal-Emkxzyyt.woff2)format("woff2"),url(/assets/caladea-latin-700-normal-0s3Ufwiy.woff)format("woff")}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.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}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--accent:#1f6cad;--accent-soft:#1f6cad29;--ink:#15191e;--text:#2a3037;--muted:#5a626c;--line:#d8dde3;--line-soft:#e8ebef;--line-strong:#7f8892;--page:#f3f5f7;--sheet:#fff;--field:#f7f8fa;--on-ink:#fff;--danger:#b42318;--danger-bg:#fdf3f2;--danger-line:#f1c4bf;--shadow-sheet:0 1px 2px #1520300a, 0 10px 30px #1520300f;--shadow-lift:0 6px 18px #15203029;--backdrop:#0a0e14db;--radius:4px;--font-serif:Cambria, "Caladea", serif;--font-body:"Geist Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--max-width:900px;--section-gap:3rem;--ease-out:cubic-bezier(.2, .7, .2, 1)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--accent:#6ea8dc;--accent-soft:#6ea8dc33;--ink:#eef1f4;--text:#d5dae0;--muted:#9ba4ae;--line:#2f363f;--line-soft:#252b33;--line-strong:#66707b;--page:#0e1115;--sheet:#161a1f;--field:#1c2127;--on-ink:#0e1115;--danger:#ff9b91;--danger-bg:#b4231829;--danger-line:#ff9b9159;--shadow-sheet:0 1px 2px #02060c4d, 0 10px 30px #02060c59;--shadow-lift:0 6px 18px #02060c80}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--accent:#6ea8dc;--accent-soft:#6ea8dc33;--ink:#eef1f4;--text:#d5dae0;--muted:#9ba4ae;--line:#2f363f;--line-soft:#252b33;--line-strong:#66707b;--page:#0e1115;--sheet:#161a1f;--field:#1c2127;--on-ink:#0e1115;--danger:#ff9b91;--danger-bg:#b4231829;--danger-line:#ff9b9159;--shadow-sheet:0 1px 2px #02060c4d, 0 10px 30px #02060c59;--shadow-lift:0 6px 18px #02060c80}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-body);color:var(--text);background:var(--page);-webkit-font-smoothing:antialiased;padding:2.5rem 1rem;font-size:1rem;line-height:1.6}a{color:var(--accent);text-underline-offset:.18em;text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}.icon{fill:currentColor;flex-shrink:0;width:1em;height:1em}.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}.button-primary{font:inherit;color:var(--on-ink);background:var(--ink);border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;padding:.8rem 1rem;font-size:1rem;font-weight:600;transition:background-color .2s,transform .1s}.button-primary:hover:not(:disabled){background:var(--accent)}.button-primary:active:not(:disabled){transform:translateY(1px)scale(.99)}.button-primary:disabled{opacity:.6;cursor:progress}.theme-toggle{z-index:10;width:2.25rem;height:2.25rem;color:var(--muted);background:var(--sheet);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sheet);cursor:pointer;place-items:center;padding:0;font-size:1.15rem;transition:color .15s,border-color .15s,transform .1s;display:grid;position:absolute;top:1rem;right:1rem}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle:active{transform:translateY(1px)scale(.97)}@media (width<=1000px){body{padding-top:4rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.login-gate{place-items:center;min-height:100dvh;margin:-2.5rem 0;padding:2rem 0;transition:opacity .25s;display:grid}.login-gate[hidden]{display:none}.login-gate.is-leaving{opacity:0}.login-card{background:var(--sheet);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow-sheet);text-align:center;animation:login-fade-in .5s var(--ease-out);padding:2.75rem 2.5rem 2.25rem}@keyframes login-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.login-title{font-family:var(--font-serif);color:var(--ink);margin-bottom:2rem;font-size:2rem;font-weight:400;line-height:1.15}.login-form{text-align:left;flex-direction:column;gap:1rem;display:flex}.field{flex-direction:column;gap:.5rem;display:flex}.field-label{color:var(--text);font-size:.9rem;font-weight:500}.field-input{font:inherit;color:var(--ink);background:var(--field);border:1px solid var(--line-strong);border-radius:var(--radius);width:100%;padding:.75rem .9rem;font-size:1rem;transition:border-color .2s,box-shadow .2s}.field-input:focus,.field-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field-input[aria-invalid=true]{border-color:var(--danger)}.login-error{background:var(--danger-bg);border:1px solid var(--danger-line);border-radius:var(--radius);color:var(--danger);padding:.65rem .85rem;font-size:.9rem;line-height:1.45;animation:.35s ease-out login-shake}@keyframes login-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.turnstile-slot:empty{display:none}.login-form .button-primary{margin-top:.25rem}.login-footer{color:var(--muted);margin-top:2rem;font-size:.9rem}@media (width<=480px){.login-card{padding:2.25rem 1.5rem 1.75rem}.login-title{font-size:1.75rem}}.cv-container{max-width:var(--max-width);background:var(--sheet);border-radius:var(--radius);box-shadow:var(--shadow-sheet);margin:0 auto;padding:3.5rem 4rem 2.5rem}.cv-container.is-entering{animation:cv-fade-in .35s var(--ease-out)}@keyframes cv-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.skeleton{gap:1rem;display:grid}.skeleton-head{align-items:center;gap:1.5rem;margin-bottom:1.5rem;display:flex}.skeleton-block{background:var(--line-soft);border-radius:var(--radius);animation:1.4s ease-in-out infinite skeleton-pulse}.skeleton-text{flex:1}.skeleton-photo{border-radius:50%;width:110px;height:110px}.skeleton-line{height:.9rem}.skeleton-line.is-title{width:55%;height:2rem}.skeleton-line.is-short{width:40%}.skeleton-line.is-mid{width:70%}@keyframes skeleton-pulse{50%{opacity:.55}}.cv-header{margin-bottom:var(--section-gap);grid-template-columns:auto 1fr auto;align-items:center;gap:1.75rem;display:grid}.cv-photo-trigger{cursor:zoom-in;transition:transform .2s var(--ease-out), box-shadow .2s ease;background:0 0;border:none;border-radius:50%;padding:0;line-height:0;display:block}.cv-photo-trigger:hover{box-shadow:var(--shadow-lift);transform:scale(1.04)}.cv-photo-trigger:focus-visible{outline-offset:3px;border-radius:50%}.cv-photo{object-fit:cover;background:var(--field);border-radius:50%;width:110px;height:110px;display:block}.cv-name{font-family:var(--font-serif);letter-spacing:.1em;color:var(--ink);margin-bottom:.4rem;font-size:2.5rem;font-weight:700;line-height:1.1}.cv-tagline{font-family:var(--font-serif);color:var(--muted);font-size:1.05rem;font-style:italic}.cv-contact{border-left:1px solid var(--line);color:var(--muted);flex-direction:column;gap:.4rem;padding-left:1.75rem;font-size:.9rem;display:flex}.cv-contact-item{align-items:center;gap:.55rem;display:flex}.cv-contact-item .icon{color:var(--muted);font-size:1rem}.cv-phone{font-variant-numeric:tabular-nums}.cv-section{margin-bottom:var(--section-gap)}.cv-section-title{font-family:var(--font-serif);color:var(--ink);border-bottom:1px solid var(--line);margin-bottom:1.25rem;padding-bottom:.5rem;font-size:1.5rem;font-weight:700;line-height:1.25}.cv-section-body>p,.cv-section-body>ul:not([class*=-list]):not([class*=-grid]){max-width:65ch}.cv-section-body p+p,.cv-section-body ul+p,.cv-section-body p+ul{margin-top:.75rem}.bullets{padding-left:1.25rem;list-style:outside}.bullets li+li{margin-top:.3rem}.bullets li::marker{color:var(--accent)}.work-list{list-style:none}.work-item{break-inside:avoid;grid-template-columns:8.5rem 1fr;gap:.25rem 1.5rem;display:grid}.work-item+.work-item{border-top:1px solid var(--line-soft);margin-top:1.75rem;padding-top:1.75rem}.work-period{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;padding-top:.15rem;font-size:.9rem}.work-title{color:var(--ink);font-size:1rem;font-weight:600}.work-company{color:var(--muted);font-size:.9rem}.work-description{max-width:65ch;margin-top:.6rem;font-size:1rem}.work-description .bullets{margin-top:.5rem}.references-list{gap:1.5rem;list-style:none;display:grid}.reference-name{color:var(--ink);font-weight:600}.reference-role,.reference-context{color:var(--muted);font-size:.9rem}.reference-contact{color:var(--muted);flex-wrap:wrap;gap:.4rem 1.75rem;margin-top:.6rem;font-size:.9rem;display:flex}.group-intro{margin-bottom:1.25rem}.groups-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.75rem 2.5rem;display:grid}.group{break-inside:avoid}.group-topic{font-family:var(--font-serif);color:var(--ink);margin-bottom:.5rem;font-size:1.1rem;font-weight:700}.group .bullets{font-size:1rem}.competency-list{list-style:none}.competency-row{break-inside:avoid;grid-template-columns:11rem 1fr;gap:.25rem 1.5rem;display:grid}.competency-row+.competency-row{border-top:1px solid var(--line-soft);margin-top:1.25rem;padding-top:1.25rem}.competency-area{font-family:var(--font-serif);color:var(--ink);font-size:1.1rem;font-weight:700;line-height:1.35}.competency-body{max-width:65ch}.competency-summary{color:var(--text)}.competency-items{color:var(--text);margin-top:.35rem;font-size:.9rem}.competency-tools{color:var(--muted);margin-top:.35rem;font-size:.9rem}.competency-tools-label{margin-right:.4rem;font-weight:600}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.skill-card{background:var(--field);border:1px solid var(--line-soft);border-radius:var(--radius);break-inside:avoid;flex-direction:column;gap:.5rem;padding:1.25rem 1.35rem;display:flex}.skill-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.skill-name{font-family:var(--font-serif);color:var(--ink);font-size:1.1rem;font-weight:700;line-height:1.3}.skill-years{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:.8rem}.skill-years-value{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:.2rem;font-size:1.35rem;font-weight:600}.skill-proof{font-size:1rem}.skill-where{color:var(--muted);margin-top:auto;padding-top:.25rem;font-size:.9rem}.education-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 2.5rem;list-style:none;display:grid}.education-item-title{color:var(--ink);font-size:1rem;font-weight:600;line-height:1.4}.education-item-institution{color:var(--muted);font-size:.9rem}.languages-list{flex-wrap:wrap;gap:1rem 3rem;list-style:none;display:flex}.language-name{color:var(--ink);font-weight:600}.language-level{color:var(--muted);font-size:.9rem}.cv-footer{border-top:1px solid var(--line);text-align:center;color:var(--muted);margin-top:3.5rem;padding-top:1.25rem;font-size:.8rem}.cv-footer-updated{margin-top:.2rem;font-size:.8rem}.cv-error{background:var(--danger-bg);border:1px solid var(--danger-line);border-radius:var(--radius);color:var(--danger);padding:1.5rem}.cv-error strong{margin-bottom:.25rem;display:block}.photo-modal{z-index:100;opacity:0;place-items:center;padding:2rem;transition:opacity .2s;display:grid;position:fixed;inset:0}.photo-modal[hidden]{display:none}.photo-modal.is-open{opacity:1}.photo-modal-backdrop{background:var(--backdrop);cursor:zoom-out;position:absolute;inset:0}.photo-modal-content{line-height:0;position:relative}.photo-modal-image{border-radius:var(--radius);max-width:min(90vw,900px);max-height:85dvh;box-shadow:var(--shadow-lift);transition:transform .2s var(--ease-out);cursor:zoom-out;display:block;transform:scale(.96)}.photo-modal.is-open .photo-modal-image{transform:scale(1)}.photo-modal-close{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff4d;border-radius:50%;place-items:center;width:2.25rem;height:2.25rem;padding:0;font-size:1.1rem;transition:background-color .15s;display:grid;position:absolute;top:-2.75rem;right:0}.photo-modal-close:hover,.photo-modal-close:focus-visible{background:#ffffff47;outline-color:#fff}@media (width<=760px){body{padding:3.75rem .5rem 1rem}.cv-container{padding:2rem 1.35rem 1.5rem}:root{--section-gap:2.5rem}.cv-header{grid-template-columns:auto 1fr;gap:1.25rem}.cv-photo,.skeleton-photo{width:84px;height:84px}.cv-name{letter-spacing:.08em;font-size:1.85rem}.cv-contact{border-left:none;grid-column:1/-1;padding-left:0}.groups-grid,.skills-grid,.education-list,.work-item,.competency-row{grid-template-columns:1fr}.work-period{order:2;padding-top:0}.work-role{display:contents}.work-role .work-title{order:1}.work-role .work-company{order:3}.work-role .work-description{order:4}.photo-modal{padding:.75rem}.photo-modal-close{background:#0a0e1499;top:.5rem;right:.5rem}}@media print{:root,:root:not([data-theme=light]),:root[data-theme]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--accent:#1f6cad;--ink:#15191e;--text:#2a3037;--muted:#5a626c;--line:#d8dde3;--line-soft:#e8ebef;--page:#fff;--sheet:#fff;--field:#fff;--section-gap:1.75rem}body{background:#fff;padding:0;font-size:10.5pt}.login-gate,.theme-toggle,.photo-modal,.cv-footer{display:none!important}.cv-container{max-width:100%;box-shadow:none;border-radius:0;padding:0;animation:none}.cv-photo-trigger{cursor:default;box-shadow:none!important;transform:none!important}.cv-section-title{break-after:avoid}.skill-card{border-color:var(--line)}a{color:inherit}}
