@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@media screen and (prefers-reduced-motion:no-preference){html.js [data-reveal]{opacity:0;transition:opacity .55s cubic-bezier(.2,.7,.2,1),transform .55s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0s);transform:translateY(10px)}html.js [data-reveal].is-visible{opacity:1;transform:none}}.template-switcher[data-astro-cid-ld5tovrm]{z-index:50;-webkit-backdrop-filter:blur(8px);background:#18181bd1;border-radius:999px;gap:6px;padding:6px;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;display:flex;position:fixed;bottom:20px;right:20px;box-shadow:0 1px 2px #0003,0 8px 24px #0000002e}.bubble[data-astro-cid-ld5tovrm]{color:#ffffffc7;border-radius:999px;place-items:center;width:32px;height:32px;font-size:13px;font-weight:600;line-height:1;text-decoration:none;transition:background-color .18s,color .18s,transform .18s;display:grid}.bubble[data-astro-cid-ld5tovrm]:hover{color:#fff;background:#ffffff24;text-decoration:none}.bubble[data-astro-cid-ld5tovrm]:focus-visible{outline-offset:2px;outline:2px solid #fff}.bubble[data-astro-cid-ld5tovrm].active{color:#18181b;background:#fff}.bubble[data-astro-cid-ld5tovrm]:active{transform:scale(.94)}@media screen and (width<=767px){.template-switcher[data-astro-cid-ld5tovrm]{bottom:12px;right:12px}.bubble[data-astro-cid-ld5tovrm]{width:30px;height:30px}}@media print{.template-switcher[data-astro-cid-ld5tovrm]{display:none!important}}html.t-swiss{--ink:#111;--ink-2:#3d3d3d;--ink-3:#6a6a6a;--rule:#111;--accent:#b42318;--bg:#fff;background:var(--bg)}.t-swiss *{box-sizing:border-box}.t-swiss body{color:var(--ink);font-feature-settings:"ss01", "cv11", "tnum";-webkit-font-smoothing:antialiased;margin:0;font-family:Inter Variable,Inter,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5}.t-swiss .page{max-width:880px;margin:0 auto;padding:72px 48px 96px}.t-swiss a{color:inherit;text-decoration:none;transition:text-decoration-color .2s}.t-swiss a:hover{text-underline-offset:2px;text-decoration:underline 1px}.t-swiss .masthead{border-bottom:2px solid var(--rule);grid-template-columns:repeat(12,1fr);align-items:end;column-gap:24px;padding-bottom:24px;display:grid}.t-swiss .identity{grid-column:1/span 8}.t-swiss .contact{grid-column:9/span 4}.t-swiss h1{letter-spacing:-.03em;margin:0 0 4px;font-size:48px;font-weight:800;line-height:1}.t-swiss .role{letter-spacing:-.01em;color:var(--ink-2);margin:0 0 14px;font-size:18px;font-weight:500}.t-swiss .tagline{max-width:52ch;color:var(--ink-2);margin:0;font-size:14px;line-height:1.5}.t-swiss .contact{text-align:right;flex-direction:column;align-items:flex-end;gap:1px;font-size:13px;font-style:normal;line-height:1.55;display:flex}.t-swiss .contact .download{text-underline-offset:3px;margin-top:12px;font-weight:600;text-decoration:underline 1px}.t-swiss .sec{border-top:1px solid var(--accent);margin-top:44px;padding-top:12px}.t-swiss .sec>h2{letter-spacing:.14em;text-transform:uppercase;margin:0 0 18px;font-size:11px;font-weight:700}.t-swiss .summary p{max-width:72ch;margin:0;font-size:15px;line-height:1.55}.t-swiss .entry+.entry{margin-top:26px}.t-swiss .entry-head{grid-template-columns:1fr auto;align-items:baseline;column-gap:24px;display:grid}.t-swiss h3{letter-spacing:-.01em;margin:0;font-size:16px;font-weight:600;line-height:1.3}.t-swiss .org{color:var(--ink-2);margin:2px 0 0;font-size:14px}.t-swiss .when{color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums;margin:0;font-size:13px;font-weight:500}.t-swiss .entry>p,.t-swiss .desc{max-width:72ch;color:var(--ink-2);margin:10px 0 0}.t-swiss .entry ul{max-width:76ch;margin:10px 0 0;padding-left:18px}.t-swiss .entry ul.meta:empty{display:none}.t-swiss .entry li{margin:0 0 4px;padding-left:2px}.t-swiss .entry li::marker{color:var(--ink);font-size:.85em}.t-swiss .entry li b{font-weight:600}.t-swiss .skills dl{grid-template-columns:148px 1fr;gap:8px 24px;margin:0;display:grid}.t-swiss .skills dt{font-size:14px;font-weight:600}.t-swiss .skills dd{color:var(--ink-2);margin:0;font-size:14px}@media screen and (width<=767px){.t-swiss .page{padding:40px 22px 64px}.t-swiss .masthead{grid-template-columns:1fr;row-gap:20px}.t-swiss .identity,.t-swiss .contact{grid-column:1}.t-swiss .contact{text-align:left;align-items:flex-start}.t-swiss h1{font-size:38px}.t-swiss .entry-head,.t-swiss .skills dl{grid-template-columns:1fr;row-gap:2px}.t-swiss .skills dd{margin-bottom:8px}}@page{size:A4;margin:14mm 16mm 16mm}@media print{html.t-swiss,.t-swiss body{background:#fff}.t-swiss body{color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-size:9.2pt;line-height:1.38}.t-swiss .page{max-width:none;margin:0;padding:0}.t-swiss .no-print{display:none!important}.t-swiss a{color:inherit;text-decoration:none}.t-swiss .masthead{border-bottom-width:1.5pt;padding-bottom:12pt}.t-swiss h1{font-size:28pt}.t-swiss .role{margin-bottom:6pt;font-size:11.5pt}.t-swiss .tagline{font-size:9.2pt}.t-swiss .contact{font-size:9pt}.t-swiss .sec{break-inside:auto;margin-top:15pt;padding-top:6pt}.t-swiss .sec>h2{break-after:avoid;margin-bottom:8pt;font-size:7.8pt}.t-swiss .summary p{font-size:9.4pt}.t-swiss .entry{break-inside:avoid}.t-swiss .entry+.entry{margin-top:9pt}.t-swiss h3{break-after:avoid;font-size:10pt}.t-swiss .org{font-size:9pt}.t-swiss .when{font-size:8.8pt}.t-swiss .entry>p,.t-swiss .desc{margin-top:3.5pt}.t-swiss .entry ul{margin-top:3.5pt;padding-left:11pt}.t-swiss .entry li{margin-bottom:1pt}.t-swiss p,.t-swiss li{orphans:3;widows:3}.t-swiss .skills dl{grid-template-columns:100pt 1fr;row-gap:3pt}.t-swiss .skills dt,.t-swiss .skills dd{font-size:9.3pt}}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-wght-normal.cHuGMAiY.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-wght-normal.DwHjdM4S.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-wght-normal.ece1310W.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-wght-normal.D-yuW59g.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-wght-normal.CxNHBx-q.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-wght-normal.D9elroTD.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}html.t-timeline{--accent:#1e3a8a;--accent-soft:#e8edf8;--ink:#1a1d24;--ink-2:#4b5160;--ink-3:#6b7280;--line:#d9dde6;--paper:#fff;--bg:#f4f5f8;--date-col:120px;--rail-col:28px;--dot:11px;-webkit-text-size-adjust:100%}.t-timeline *{box-sizing:border-box}.t-timeline body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0;font-family:Inter Variable,Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.55}.t-timeline .page{background:var(--paper);max-width:880px;margin:40px auto;padding:56px 64px 64px;box-shadow:0 1px 2px #1418280f,0 12px 40px #14182814}.t-timeline a{color:var(--accent);text-decoration:none}.t-timeline a:hover{text-decoration:underline}.t-timeline h1,.t-timeline h2,.t-timeline h3{margin:0;font-weight:600}.t-timeline h1,.t-timeline h2{letter-spacing:-.01em;font-family:"Source Serif 4 Variable","Source Serif 4",Georgia,Times New Roman,serif}.t-timeline .masthead{border-bottom:3px solid var(--accent);grid-template-columns:1fr auto;align-items:start;gap:24px 32px;margin-bottom:36px;padding-bottom:28px;display:grid}.t-timeline .masthead h1{color:var(--ink);font-size:40px;font-weight:600;line-height:1.05}.t-timeline .masthead .role{color:var(--accent);letter-spacing:.01em;margin:8px 0 0;font-size:17px;font-weight:500}.t-timeline .masthead .tagline{max-width:58ch;color:var(--ink-2);margin:14px 0 0;font-size:15px}.t-timeline .contact{color:var(--ink-2);text-align:right;justify-items:end;gap:6px;padding-top:6px;font-size:13.5px;font-style:normal;display:grid}.t-timeline .contact a{color:var(--ink)}.t-timeline .contact a:hover{color:var(--accent)}.t-timeline .download{background:var(--accent);border-radius:999px;margin-top:10px;padding:7px 14px;font-size:13px;font-weight:500;display:inline-block;color:#fff!important}.t-timeline .download:hover{background:#172c6b;text-decoration:none}.t-timeline section{margin-bottom:36px}.t-timeline .section-head{grid-template-columns:var(--date-col) var(--rail-col) 1fr;align-items:baseline;margin-bottom:18px;display:grid}.t-timeline .section-head h2{color:var(--ink);grid-column:3;font-size:22px}.t-timeline .section-head .kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--accent);grid-column:1;align-self:baseline;font-size:11px;font-weight:600}.t-timeline .timeline{margin:0;padding:0;list-style:none}.t-timeline .entry{grid-template-columns:var(--date-col) var(--rail-col) 1fr;break-inside:avoid;page-break-inside:avoid;column-gap:0;padding-bottom:26px;display:grid;position:relative}.t-timeline .entry:last-child{padding-bottom:6px}.t-timeline .entry:before{content:"";left:calc(var(--date-col) + (var(--rail-col) / 2) - 1px);background:var(--line);width:2px;position:absolute;top:0;bottom:0}.t-timeline .entry:first-child:before{top:10px}.t-timeline .entry:last-child:before{height:10px;bottom:auto}.t-timeline .entry:after{content:"";left:calc(var(--date-col) + (var(--rail-col) / 2) - (var(--dot) / 2));width:var(--dot);height:var(--dot);background:var(--paper);border:2.5px solid var(--accent);border-radius:50%;position:absolute;top:6px}.t-timeline .entry.current:after{background:var(--accent)}.t-timeline .entry time{color:var(--ink-2);text-align:right;font-variant-numeric:tabular-nums;grid-column:1;padding-top:2px;padding-right:20px;font-size:13px;font-weight:500;line-height:1.4}.t-timeline .entry .body{grid-column:3;min-width:0}.t-timeline .entry h3{color:var(--ink);font-size:16.5px;line-height:1.3}.t-timeline .entry .org{color:var(--ink-2);margin:2px 0 0;font-size:14px}.t-timeline .entry .org strong{color:var(--ink);font-weight:500}.t-timeline .entry .body>p:not(.org){color:var(--ink-2);margin:10px 0 0;font-size:14.5px}.t-timeline .entry ul{color:var(--ink);margin:10px 0 0;padding-left:18px;font-size:14.5px}.t-timeline .entry li{margin:4px 0;padding-left:2px}.t-timeline .entry li::marker{color:var(--accent)}.t-timeline .meta{color:var(--ink-2);margin:10px 0 0;font-size:13.5px}.t-timeline .meta dt{color:var(--ink);font-weight:600;display:inline}.t-timeline .meta dt:after{content:": "}.t-timeline .meta dd{margin:0;display:inline}.t-timeline .meta div{margin:3px 0}.t-timeline .summary-body,.t-timeline .skills{grid-template-columns:var(--date-col) var(--rail-col) 1fr;display:grid}.t-timeline .summary-body>p{color:var(--ink-2);grid-column:3;margin:0}.t-timeline .skills dl{grid-column:3;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0;font-size:14.5px;display:grid}.t-timeline .skills dt{color:var(--accent);white-space:nowrap;font-weight:600}.t-timeline .skills dd{color:var(--ink);margin:0}.t-timeline footer{border-top:1px solid var(--line);color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:44px;padding-top:14px;font-size:12.5px;display:flex}@media screen and (width<=767px){html.t-timeline{--date-col:0px;--rail-col:26px}.t-timeline body{font-size:15px}.t-timeline .page{box-shadow:none;margin:0;padding:28px 20px 40px}.t-timeline .masthead{grid-template-columns:1fr;gap:16px}.t-timeline .masthead h1{font-size:32px}.t-timeline .contact{text-align:left;justify-items:start;padding-top:0}.t-timeline .section-head{grid-template-columns:1fr}.t-timeline .section-head .kicker{grid-column:1;margin-bottom:2px}.t-timeline .section-head h2{grid-column:1}.t-timeline .entry{grid-template-columns:var(--rail-col) 1fr}.t-timeline .entry:before{left:calc(var(--rail-col) / 2 - 1px)}.t-timeline .entry:after{left:calc(var(--rail-col) / 2 - (var(--dot) / 2))}.t-timeline .entry time{text-align:left;color:var(--accent);grid-area:1/2;padding:0 0 2px}.t-timeline .entry .body{grid-area:2/2}.t-timeline .summary-body,.t-timeline .skills{grid-template-columns:1fr}.t-timeline .summary-body>p{grid-column:1}.t-timeline .skills dl{grid-column:1;grid-template-columns:1fr;gap:4px}.t-timeline .skills dt{margin-top:8px}}@page{size:A4;margin:12mm 14mm 14mm}@media print{html.t-timeline{--date-col:86px;--rail-col:20px;--dot:9px}html.t-timeline,.t-timeline body{background:#fff}.t-timeline body{color:#000;font-size:9.5pt;line-height:1.32}.t-timeline .page{max-width:none;box-shadow:none;margin:0;padding:0}.t-timeline .no-print{display:none!important}.t-timeline .masthead{border-bottom-width:2pt;margin-bottom:12pt;padding-bottom:10pt}.t-timeline .masthead h1{font-size:24pt}.t-timeline .masthead .role{margin-top:3pt;font-size:11.5pt}.t-timeline .masthead .tagline{margin-top:6pt;font-size:9.5pt}.t-timeline .contact{gap:2pt;font-size:8.75pt}.t-timeline .download{display:none}.t-timeline section{margin-bottom:10pt}.t-timeline .section-head{break-after:avoid;page-break-after:avoid;margin-bottom:7pt}.t-timeline .section-head h2{font-size:14pt}.t-timeline .section-head .kicker{font-size:7.25pt}.t-timeline .entry{padding-bottom:6pt}.t-timeline .entry time{padding-right:12pt;font-size:8.5pt}.t-timeline .entry h3{font-size:10.5pt}.t-timeline .entry .org{font-size:9pt}.t-timeline .entry .body>p:not(.org),.t-timeline .entry ul{margin-top:5pt;font-size:9pt}.t-timeline .entry li{margin:1.5pt 0}.t-timeline .meta{margin-top:4pt;font-size:8.75pt}.t-timeline .meta div{margin:2pt 0}.t-timeline .skills dl{gap:3pt 14pt;font-size:9pt}.t-timeline a{color:var(--accent)}.t-timeline .entry a[href^=http]:after,.t-timeline .skills a[href^=http]:after{content:" (" attr(href) ")";color:var(--ink-3);font-size:.9em}.t-timeline footer{display:none}.t-timeline h2,.t-timeline h3{break-after:avoid;page-break-after:avoid}.t-timeline ul,.t-timeline li,.t-timeline p{orphans:3;widows:3}}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/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}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.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}html.t-technical{--accent:#0f766e;--accent-ink:#0b5c56;--accent-bg:#e6f3f1;--ink:#16181d;--ink-2:#4a4f5a;--ink-3:#71767f;--rule:#cfd3da;--rule-soft:#e6e8ec;--grid:#16181d0b;--chip-bg:#f1f2f4;--chip-border:#d7dadf;--paper:#fff;--bg:#ededf0;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--sans:"IBM Plex Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--gutter:132px;background:var(--bg)}.t-technical *{box-sizing:border-box}.t-technical body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0;font-size:15px;line-height:1.55}.t-technical .sheet{background-color:var(--paper);background-image:linear-gradient(to right, var(--grid) 1px, transparent 1px), linear-gradient(to bottom, var(--grid) 1px, transparent 1px);background-position:0 0;background-size:24px 24px;max-width:900px;margin:40px auto;padding:48px 56px 56px;position:relative;box-shadow:0 1px 2px #0000000d,0 14px 40px #00000014}.t-technical a{color:var(--accent-ink);text-decoration:none}.t-technical a:hover{text-decoration:underline}.t-technical h1,.t-technical h2,.t-technical h3,.t-technical p,.t-technical ul,.t-technical dl{margin:0}.t-technical .mono{font-family:var(--mono);font-feature-settings:"zero" 1}.t-technical .label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:500}.t-technical .masthead{border-bottom:1px solid var(--ink);grid-template-columns:1fr 290px;gap:24px 40px;margin-bottom:8px;padding-bottom:28px;display:grid}.t-technical .masthead .doc-id{font-family:var(--mono);color:var(--ink-3);letter-spacing:.04em;border-bottom:1px solid var(--rule-soft);grid-column:1/-1;justify-content:space-between;gap:16px;padding-bottom:14px;font-size:11.5px;display:flex}.t-technical .masthead h1{letter-spacing:-.02em;font-size:38px;font-weight:600;line-height:1.05}.t-technical .masthead .role{font-family:var(--mono);color:var(--accent-ink);margin-top:8px;font-size:14px;font-weight:500}.t-technical .masthead .tagline{color:var(--ink-2);max-width:56ch;margin-top:16px}.t-technical .contact{grid-template-columns:max-content 1fr;align-content:start;gap:7px 16px;padding-top:4px;font-size:13.5px;font-style:normal;display:grid}.t-technical .contact .label{align-self:baseline;padding-top:2px}.t-technical .contact a,.t-technical .contact span.v{color:var(--ink);font-family:var(--mono);word-break:break-word;font-size:13px}.t-technical .contact a:hover{color:var(--accent-ink)}.t-technical .download{font-family:var(--mono);border:1px solid var(--ink);background:var(--paper);grid-column:1/-1;justify-self:start;margin-top:8px;padding:7px 12px;font-size:12px;font-weight:500;color:var(--ink)!important}.t-technical .download:hover{background:var(--ink);text-decoration:none;color:var(--paper)!important}.t-technical main>section{border-top:1px solid var(--rule);margin-top:22px;padding-top:22px}.t-technical main>section:first-of-type{border-top:0;margin-top:0}.t-technical .section-head{grid-template-columns:var(--gutter) 1fr;align-items:baseline;margin-bottom:18px;display:grid}.t-technical .section-head .num{font-family:var(--mono);color:var(--accent-ink);letter-spacing:.04em;font-size:12.5px;font-weight:500}.t-technical .section-head .num:after{content:" /";color:var(--ink-3)}.t-technical .section-head h2{letter-spacing:-.01em;font-size:19px;font-weight:600}.t-technical .summary-grid{grid-template-columns:var(--gutter) 1fr;display:grid}.t-technical .summary-grid p{color:var(--ink);grid-column:2;max-width:72ch}.t-technical .entries{margin:0;padding:0;list-style:none}.t-technical .entry{grid-template-columns:var(--gutter) 1fr;break-inside:avoid;page-break-inside:avoid;padding:0 0 22px;display:grid}.t-technical .entry+.entry{border-top:1px solid var(--rule-soft);padding-top:22px}.t-technical .entry:last-child{padding-bottom:4px}.t-technical .entry .when{font-family:var(--mono);color:var(--ink-2);white-space:nowrap;padding-top:3px;padding-right:16px;font-size:12.5px;line-height:1.5}.t-technical .entry .when .to{color:var(--ink-3);display:block}.t-technical .entry h3{font-size:16px;font-weight:600;line-height:1.35}.t-technical .entry .org{color:var(--ink-2);margin-top:2px;font-size:14px}.t-technical .entry .org strong{color:var(--ink);font-weight:500}.t-technical .entry .body>p:not(.org){color:var(--ink-2);max-width:72ch;margin-top:10px;font-size:14.5px}.t-technical .entry ul{margin-top:10px;padding-left:0;font-size:14.5px;list-style:none}.t-technical .entry li{margin:4px 0;padding-left:18px;position:relative}.t-technical .entry li:before{content:"";background:var(--accent);width:7px;height:1px;position:absolute;top:.72em;left:2px}.t-technical .kv{grid-template-columns:max-content 1fr;align-items:start;gap:8px 14px;margin-top:12px;font-size:13.5px;display:grid}.t-technical .kv dt{padding-top:3px}.t-technical .kv dd{color:var(--ink-2);margin:0}.t-technical .chips{flex-wrap:wrap;gap:5px;display:flex}.t-technical .chip{font-family:var(--mono);border:1px solid var(--chip-border);background:var(--chip-bg);color:var(--ink);white-space:nowrap;border-radius:3px;padding:5px 7px 4px;font-size:11.5px;line-height:1}.t-technical .skills{grid-template-columns:var(--gutter) 1fr;display:grid}.t-technical .skills dl{grid-column:2;grid-template-columns:max-content 1fr;align-items:start;gap:10px 18px;display:grid}.t-technical .skills dt{padding-top:4px}.t-technical .skills dd{margin:0}.t-technical footer{border-top:1px solid var(--ink);font-family:var(--mono);color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:32px;padding-top:12px;font-size:11.5px;display:flex}@media screen and (width<=767px){html.t-technical{--gutter:0px}.t-technical .sheet{box-shadow:none;background-size:20px 20px;margin:0;padding:24px 18px 40px}.t-technical .masthead{grid-template-columns:1fr;gap:18px}.t-technical .masthead h1{font-size:30px}.t-technical .masthead .doc-id{flex-direction:column;gap:4px}.t-technical .contact{padding-top:0}.t-technical .section-head{grid-template-columns:1fr;gap:2px}.t-technical .summary-grid,.t-technical .skills{grid-template-columns:1fr}.t-technical .summary-grid p,.t-technical .skills dl{grid-column:1}.t-technical .skills dl{grid-template-columns:1fr;gap:6px}.t-technical .skills dt{margin-top:8px}.t-technical .entry{grid-template-columns:1fr}.t-technical .entry .when{color:var(--accent-ink);white-space:normal;padding:0 0 6px}.t-technical .entry .when .to{margin-left:6px;display:inline}.t-technical .kv{grid-template-columns:1fr;gap:6px}.t-technical .kv dt{padding-top:0}}@page{size:A4;margin:12mm 14mm 14mm}@media print{html.t-technical{--gutter:82px}html.t-technical,.t-technical body{background:#fff}.t-technical body{font-size:9.25pt;line-height:1.32}.t-technical .sheet{max-width:none;box-shadow:none;background-image:none;margin:0;padding:0}.t-technical .masthead{grid-template-columns:1fr 190pt;gap:8pt 24pt;padding-bottom:10pt}.t-technical .masthead .doc-id{padding-bottom:8pt;font-size:8pt}.t-technical .masthead h1{font-size:23pt}.t-technical .masthead .role{margin-top:4pt;font-size:10pt}.t-technical .masthead .tagline{margin-top:8pt;font-size:9.75pt}.t-technical .contact{gap:3pt 10pt;font-size:9pt}.t-technical .contact a,.t-technical .contact span.v{font-size:8.75pt}.t-technical .label{font-size:7.5pt}.t-technical .download{display:none}.t-technical main>section{margin-top:8pt;padding-top:8pt}.t-technical .section-head{break-after:avoid;page-break-after:avoid;margin-bottom:6pt}.t-technical .section-head .num{font-size:8.5pt}.t-technical .section-head h2{font-size:13.5pt}.t-technical .entry{padding-bottom:6pt}.t-technical .entry+.entry{padding-top:6pt}.t-technical .entry .when{padding-right:8pt;font-size:8pt}.t-technical .entry h3{font-size:10.5pt}.t-technical .entry .org{font-size:9pt}.t-technical .entry .body>p:not(.org),.t-technical .entry ul{max-width:none;margin-top:4pt;font-size:8.9pt}.t-technical .entry li{margin:1pt 0;padding-left:11pt}.t-technical .entry li:before{width:5pt;left:1pt}.t-technical .kv{gap:3pt 8pt;margin-top:5pt;font-size:8.75pt}.t-technical .kv dt,.t-technical .skills dt{padding-top:2pt}.t-technical .chips{gap:3pt}.t-technical .chip{padding:2.5pt 4pt 2pt;font-size:7.25pt}.t-technical .skills dl{gap:6pt 12pt}.t-technical footer{display:none}.t-technical a{color:var(--accent-ink)}.t-technical .entry a[href^=http]:not(.src):after{content:" (" attr(href) ")";color:var(--ink-3);font-size:.9em}.t-technical h2,.t-technical h3{break-after:avoid;page-break-after:avoid}.t-technical p,.t-technical li{orphans:3;widows:3}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.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 Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.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 Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.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 Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.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}html.t-vercel{--background:#fff;--foreground:#09090b;--card:#fff;--muted:#f4f4f5;--muted-foreground:#71717a;--border:#e4e4e7;--primary:#18181b;--primary-foreground:#fafafa;--ring:#a1a1aa;--radius:.5rem;--font-sans:"Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--date-col:112px;color-scheme:light;-webkit-text-size-adjust:100%}@media (prefers-color-scheme:dark){html.t-vercel:not([data-theme=light]):not([data-mode=print]){--background:#09090b;--foreground:#fafafa;--card:#09090b;--muted:#27272a;--muted-foreground:#a1a1aa;--border:#27272a;--primary:#fafafa;--primary-foreground:#18181b;--ring:#d4d4d8;color-scheme:dark}}html.t-vercel[data-theme=dark]:not([data-mode=print]){--background:#09090b;--foreground:#fafafa;--card:#09090b;--muted:#27272a;--muted-foreground:#a1a1aa;--border:#27272a;--primary:#fafafa;--primary-foreground:#18181b;--ring:#d4d4d8;color-scheme:dark}.t-vercel *{box-sizing:border-box;border-color:var(--border)}.t-vercel body{background:var(--background);color:var(--foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-feature-settings:"rlig" 1, "calt" 1;-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0;font-size:14px;line-height:1.5}.t-vercel a{color:inherit;text-decoration:none}.t-vercel a:hover{text-underline-offset:3px;text-decoration:underline}.t-vercel h1,.t-vercel h2,.t-vercel h3,.t-vercel p,.t-vercel ul,.t-vercel ol,.t-vercel dl{margin:0}.t-vercel .container{max-width:880px;margin:0 auto;padding:0 24px 64px}.t-vercel .text-muted{color:var(--muted-foreground)}.t-vercel .mono{font-family:var(--font-mono);font-size:12px}.t-vercel .topbar{z-index:10;background:color-mix(in srgb, var(--background) 85%, transparent);backdrop-filter:saturate(180%)blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.t-vercel .topbar-inner{justify-content:space-between;align-items:center;gap:12px;max-width:880px;margin:0 auto;padding:10px 24px;display:flex}.t-vercel .brand{align-items:center;gap:10px;font-size:13px;font-weight:500;display:flex}.t-vercel .brand .logo{background:var(--primary);width:18px;height:18px;color:var(--primary-foreground);font-size:10px;font-weight:600;font-family:var(--font-mono);border-radius:4px;place-items:center;display:grid}.t-vercel .brand .sep{color:var(--muted-foreground);font-weight:400}.t-vercel .actions{align-items:center;gap:8px;display:flex}.t-vercel .btn{border-radius:calc(var(--radius) - 2px);border:1px solid var(--border);background:var(--background);height:32px;color:var(--foreground);font:inherit;cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;line-height:1;transition:background-color .15s,border-color .15s,opacity .15s;display:inline-flex}.t-vercel .btn:hover{background:var(--muted);text-decoration:none}.t-vercel .btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.t-vercel .btn.primary{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary)}.t-vercel .btn.primary:hover{opacity:.9}.t-vercel .btn.icon{justify-content:center;width:32px;padding:0}.t-vercel .btn svg{stroke:currentColor;fill:none;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.t-vercel .icon-sun,.t-vercel .icon-moon{display:none}html.t-vercel[data-theme=light] .icon-sun,html.t-vercel[data-theme=dark] .icon-moon,html.t-vercel:not([data-theme]) .icon-sun{display:block}@media (prefers-color-scheme:dark){html.t-vercel:not([data-theme]) .icon-sun{display:none}html.t-vercel:not([data-theme]) .icon-moon{display:block}}.t-vercel .hero{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;align-items:start;gap:24px 40px;padding:48px 0 32px;display:grid}.t-vercel .hero h1{letter-spacing:-.03em;font-size:34px;font-weight:600;line-height:1.1}.t-vercel .hero .role{margin-top:8px;font-size:15px;font-weight:500}.t-vercel .hero .tagline{color:var(--muted-foreground);max-width:58ch;margin-top:12px;font-size:14px}.t-vercel .contact{color:var(--muted-foreground);grid-template-columns:max-content;gap:6px;padding-top:6px;font-size:13px;font-style:normal;display:grid}.t-vercel .contact li{align-items:center;gap:8px;display:flex}.t-vercel .contact svg{stroke:currentColor;fill:none;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:14px;height:14px}.t-vercel .contact a{color:var(--foreground);transition:color .15s}.t-vercel .contact ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.t-vercel section{padding:32px 0 8px}.t-vercel section+section{border-top:1px solid var(--border)}.t-vercel .section-head{align-items:baseline;gap:12px;margin-bottom:20px;display:flex}.t-vercel .section-head h2{letter-spacing:-.02em;font-size:18px;font-weight:600}.t-vercel .section-head .count{font-family:var(--font-mono);color:var(--muted-foreground);font-size:11.5px}.t-vercel .summary p{max-width:72ch;color:var(--foreground);font-size:14px}.t-vercel .stack{gap:12px;margin:0;padding:0;list-style:none;display:grid}.t-vercel .card{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);grid-template-columns:var(--date-col) 1fr;break-inside:avoid;page-break-inside:avoid;gap:6px 20px;padding:16px 18px;transition:border-color .2s;display:grid}@media screen and (hover:hover){.t-vercel .card:hover{border-color:color-mix(in srgb, var(--border) 45%, var(--ring))}}.t-vercel .card .when{font-family:var(--font-mono);color:var(--muted-foreground);padding-top:3px;font-size:12px;line-height:1.5}.t-vercel .card .when .to{display:block}.t-vercel .card h3{letter-spacing:-.01em;font-size:15px;font-weight:600;line-height:1.35}.t-vercel .card .org{color:var(--muted-foreground);margin-top:1px;font-size:13px}.t-vercel .card .org strong{color:var(--foreground);font-weight:500}.t-vercel .body>p:not(.org){color:var(--muted-foreground);max-width:72ch;margin-top:8px;font-size:13.5px}.t-vercel .body>ul{margin-top:8px;padding-left:18px;font-size:13.5px}.t-vercel .body>ul>li{margin:3px 0}.t-vercel .body>ul>li::marker{color:var(--muted-foreground)}.t-vercel .meta{gap:6px;margin-top:10px;font-size:13px;display:grid}.t-vercel .meta>div{grid-template-columns:48px 1fr;align-items:start;gap:10px;display:grid}.t-vercel .meta dt{padding-top:1px;font-weight:500}.t-vercel .meta dd{color:var(--muted-foreground);margin:0}.t-vercel .badges{flex-wrap:wrap;gap:5px;display:flex}.t-vercel .badge{border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);height:20px;font-family:var(--font-mono);color:var(--foreground);white-space:nowrap;background:0 0;align-items:center;padding:0 7px;font-size:11px;line-height:1;transition:border-color .15s;display:inline-flex}.t-vercel .badge.secondary{background:var(--muted);border-color:#0000}@media screen and (hover:hover){.t-vercel .badge:hover{border-color:var(--ring)}.t-vercel .badge.secondary:hover{border-color:var(--border)}}.t-vercel .skills dl{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.t-vercel .skills .row{grid-template-columns:var(--date-col) 1fr;break-inside:avoid;align-items:start;gap:20px;padding:10px 18px;display:grid}.t-vercel .skills .row+.row{border-top:1px solid var(--border)}.t-vercel .skills dt{padding-top:2px;font-size:13px;font-weight:500}.t-vercel .skills dd{margin:0}.t-vercel footer{border-top:1px solid var(--border);color:var(--muted-foreground);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:32px;padding-top:16px;font-size:12.5px;display:flex}@media screen and (width<=767px){.t-vercel .container{padding:0 16px 48px}.t-vercel .topbar-inner{padding:10px 16px}.t-vercel .brand .sep,.t-vercel .brand .sub{display:none}.t-vercel .hero{grid-template-columns:1fr;gap:20px;padding-top:32px}.t-vercel .hero h1{font-size:28px}.t-vercel .contact{padding-top:0}.t-vercel .card{grid-template-columns:1fr;gap:4px;padding:14px}.t-vercel .card .when{padding-top:0}.t-vercel .card .when .to{margin-left:6px;display:inline}.t-vercel .skills .row{grid-template-columns:1fr;gap:8px;padding:12px 14px}}@page{size:A4;margin:12mm 14mm 14mm}@media print{html.t-vercel,html.t-vercel[data-theme=dark],html.t-vercel:not([data-theme=light]){--background:#fff;--foreground:#09090b;--card:#fff;--muted:#f4f4f5;--muted-foreground:#58585f;--border:#d4d4d9;--primary:#18181b;--primary-foreground:#fff;--date-col:80px;color-scheme:light}html.t-vercel,.t-vercel body{background:#fff}.t-vercel body{font-size:9pt;line-height:1.32}.t-vercel .container{max-width:none;padding:0}.t-vercel .no-print,.t-vercel .topbar,.t-vercel footer{display:none!important}.t-vercel .hero{gap:6pt 20pt;padding:0 0 8pt}.t-vercel .hero h1{font-size:20pt}.t-vercel .hero .role{margin-top:2pt;font-size:10.5pt}.t-vercel .hero .tagline{margin-top:4pt;font-size:9pt}.t-vercel .contact{gap:1.5pt;padding-top:1pt;font-size:8.5pt}.t-vercel .contact ul{gap:1.5pt}.t-vercel section{padding:8pt 0 2pt}.t-vercel .section-head{break-after:avoid;page-break-after:avoid;margin-bottom:6pt}.t-vercel .section-head h2{font-size:12pt}.t-vercel .section-head .count{font-size:7.5pt}.t-vercel .summary p{max-width:none;font-size:9pt}.t-vercel .stack{gap:4pt}.t-vercel .card{border-radius:4pt;gap:2pt 10pt;padding:5pt 8pt}.t-vercel .card .when{padding-top:1.5pt;font-size:8pt}.t-vercel .card h3{font-size:10pt}.t-vercel .card .org{font-size:8.75pt}.t-vercel .body>p:not(.org),.t-vercel .body>ul{max-width:none;font-size:8.75pt}.t-vercel .body>p:not(.org){margin-top:3pt}.t-vercel .body>ul{margin-top:3pt;padding-left:11pt}.t-vercel .body>ul>li{margin:.75pt 0}.t-vercel .meta{gap:2pt;margin-top:3pt;font-size:8.25pt}.t-vercel .meta>div{grid-template-columns:36px 1fr;gap:6px}.t-vercel .badges{gap:2pt}.t-vercel .badge{border-radius:3pt;height:auto;padding:1.5pt 3.5pt;font-size:7pt}.t-vercel .skills .row{gap:10pt;padding:3pt 8pt}.t-vercel .skills dt{padding-top:1.5pt;font-size:8.75pt}.t-vercel .skills dl{border-radius:4pt}.t-vercel h2,.t-vercel h3{break-after:avoid;page-break-after:avoid}.t-vercel p,.t-vercel li{orphans:3;widows:3}}
