:root{--hue:223;--bg:#fafafc;--fg:#000;--primary:hsl(var(--hue),90%,50%);--trans-dur:.3s;--trans-timing:cubic-bezier(.76,.05,.24,.95);--trans-timing-in:cubic-bezier(.76,.05,.86,.06);--trans-timing-out:cubic-bezier(.05,.76,.06,.86);--color-white:#fff;--color-black-overlay-50:rgba(0,0,0,.5);--color-black-overlay-55:rgba(0,0,0,.55);--color-black-shadow-15:rgba(0,0,0,.15);--color-dark-surface:#161617;--color-brand:#444;--color-brand-alt:#666;--color-brand-hover:#707070;--color-focus:#06c;--color-gray-ccc:#ccc;--color-gray-223:#dfdede;--color-gray-b3:#b3b3b3;--color-gray-ef:#efefef;--color-gray-eee:#eee;--color-text-444:#444;--color-text-949:#949494;--color-text-6e:#6e6e73;--color-text-light-muted:hsla(0,0%,100%,.5);--color-footer-bg:#fff;--color-linkedin:#0077b5;--color-bitbucket:#205081;--color-github:#501daf;--color-tech-typescript:#3178c6;--color-tech-nuxt:#00dc82;--color-tech-node:#3c873a;--color-tech-swift:#ff7f00;--color-tech-react:#61dbfb;--color-tech-php:#474a8a;--color-tech-java:#007396;--color-tech-python-blue:#327ebd;--color-tech-python-yellow:#f9c600;--color-text-f1:#f1f1f1;--color-switch-checked:#666;--color-dot-pattern:#f5f5f5;--surface-page:#fafafc;--surface-elevated:#fff;--text-primary:#444;--text-muted:#949494;--text-subtle:#6e6e73;--border-default:#eee;--header-backdrop:hsla(0,0%,100%,.5);--slider-track:#ccc;--slider-btn:#dfdede;--slider-btn-hover:#b3b3b3;--slider-btn-disabled:#efefef;--input-bg:#fcfcfc;--input-border:#ccc;--modal-surface:#fff;--overlay-backdrop:rgba(0,0,0,.55);--typewriter-cursor:#949494;--text-on-brand:#fff;--text-error:#b91c1c;--text-success:#166534;--space-0:0;--space-1:.25rem;--space-1-6:.4rem;--space-2-2:.55rem;--space-2:.5rem;--space-3:.75rem;--space-3-5:.875rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-14:3.5rem;--space-16:4rem;--space-18:5.5rem;--space-29:7.25rem;--space-36:9rem;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-md:1.125rem;--font-size-lg:1.5rem;--font-size-xl:1.9rem;--font-size-2xl:2rem;--font-size-3xl:2.5rem;--font-size-4xl:3rem;--font-size-15:15px;--font-size-16:16px;--font-size-28:28px;--font-family-sans:"Work Sans",sans-serif;--font-family-heading:"Work Sans",serif;--line-height-base:1.5;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700}*{border:0;box-sizing:border-box;margin:0;padding:0}body{background-color:var(--surface-page);color:var(--text-primary);font-family:var(--font-family-sans);font-weight:var(--font-weight-regular);max-width:100vw;overflow-x:hidden;transition:background-color var(--trans-dur),color var(--trans-dur)}body.dark,html.dark-init{--surface-page:#161617;--surface-elevated:#1e1e1f;--text-primary:#f1f1f1;--text-muted:hsla(0,0%,100%,.65);--text-subtle:hsla(0,0%,100%,.5);--border-default:#333;--header-backdrop:rgba(22,22,23,.75);--color-footer-bg:#161617;--slider-track:#2a2a2b;--slider-btn:#3a3a3c;--slider-btn-hover:#4a4a4c;--slider-btn-disabled:#2a2a2b;--color-dot-pattern:#2a2a2b;--input-bg:#2a2a2b;--input-border:#444;--modal-surface:#1e1e1f;--overlay-backdrop:rgba(0,0,0,.75);--typewriter-cursor:hsla(0,0%,100%,.5);--color-brand:#fff;--color-brand-hover:#f1f1f1;--color-text-444:#f1f1f1;--color-text-949:hsla(0,0%,100%,.65);--color-text-6e:hsla(0,0%,100%,.5);--text-error:#fca5a5;--text-success:#86efac}#app,h1,h2,h3,h4,h5,h6,section{color:var(--text-primary);transition:color var(--trans-dur)}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading);font-weight:var(--font-weight-bold)}p{color:var(--text-primary);transition:color var(--trans-dur)}a{color:inherit;text-decoration:none}.bg-dot-pattern{background-image:radial-gradient(circle,var(--color-dot-pattern) 1px,transparent 0);background-size:8px 8px}.bg-slanted-lines{background-image:repeating-linear-gradient(45deg,transparent,transparent 10px,var(--color-dot-pattern) 0,var(--color-dot-pattern) 11px)}.bg-grid{background-image:linear-gradient(to right,var(--color-dot-pattern) 1px,transparent 1px),linear-gradient(to bottom,var(--color-dot-pattern) 1px,transparent 1px);background-size:8px 8px}.bg-animate{animation:moveDots 20s linear infinite}@keyframes moveDots{0%{background-position:0 0,20px 20px}to{background-position:40px 40px,60px 60px}}@font-face{font-family:Work Sans;font-style:italic;font-weight:100 900;src:url(./Work_Sans-italic-100_900-vietnamese.BstnRPhj.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Work Sans;font-style:italic;font-weight:100 900;src:url(./Work_Sans-italic-100_900-latin-ext.wzbUBIXC.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Work Sans;font-style:italic;font-weight:100 900;src:url(./Work_Sans-italic-100_900-latin.C1pcBsqQ.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;src:url(./Work_Sans-normal-100_900-vietnamese.BKsN3ITN.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;src:url(./Work_Sans-normal-100_900-latin-ext.B5dZ8C4S.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;src:url(./Work_Sans-normal-100_900-latin.Bl-S9Xys.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}.scroll-progress[data-v-87af127e]{background-color:var(--color-brand-alt);height:var(--space-1);left:var(--space-0);opacity:.5;position:fixed;top:var(--space-0);transition:width .4s ease-out;z-index:9999}.switch-container[data-v-879919e6]{width:56px}.switch[data-v-879919e6]{margin:auto}.switch__icon[data-v-879919e6],.switch__input[data-v-879919e6]{display:block}.switch__icon[data-v-879919e6]{height:1.125rem;position:absolute;right:var(--space-1-6);top:var(--space-2-2);transition:opacity calc(var(--trans-dur)/2),transform calc(var(--trans-dur)/2);width:1.125rem}.switch__icon polyline[data-v-879919e6]{transition:stroke-dashoffset calc(var(--trans-dur)/2)}.switch__icon--light[data-v-879919e6],.switch__icon--light polyline[data-v-879919e6]{transition-delay:calc(var(--trans-dur)/2);transition-timing-function:var(--trans-timing-out)}.switch__icon--dark[data-v-879919e6]{opacity:0;transform:translate(-.75em) rotate(30deg) scale(.75);transition-timing-function:var(--trans-timing-in)}.switch__input[data-v-879919e6]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-gray-ccc);border-radius:48px;box-shadow:0 0 0 .125em hsla(var(--hue),90%,50%,0),.125em .125em .25em hsla(var(--hue),90%,10%,.2);height:36px;outline:transparent;position:relative;width:56px;-webkit-tap-highlight-color:transparent;transition:background-color var(--trans-dur) var(--trans-timing),box-shadow .15s linear}.switch__input[data-v-879919e6]:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.switch__input[data-v-879919e6]:after,.switch__input[data-v-879919e6]:before{content:"";display:block;position:absolute}.switch__input[data-v-879919e6]:before{border-radius:inherit;inset:0;transition:background-color var(--trans-dur) var(--trans-timing)}.switch__input[data-v-879919e6]:after{background-color:var(--color-white);border-radius:50%;box-shadow:.05em .05em .05em hsla(var(--hue),90%,10%,.1);height:22px;left:var(--space-1);top:50%;transform:translateY(-50%);transition:background-color var(--trans-dur) var(--trans-timing),transform var(--trans-dur) var(--trans-timing);width:22px;z-index:1}.switch__input[data-v-879919e6]:checked:before{background-color:var(--color-switch-checked)}.switch__input[data-v-879919e6]:checked:after{transform:translate(calc(100% + .25rem),-50%)}.switch__input:checked~.switch__icon--light[data-v-879919e6],.switch__input:checked~.switch__icon--light polyline[data-v-879919e6]{transition-delay:0s;transition-timing-function:var(--trans-timing-in)}.switch__input:checked~.switch__icon--light[data-v-879919e6]{opacity:0;transform:translate(-.75em) rotate(-30deg) scale(.75)}.switch__input:checked~.switch__icon--light polyline[data-v-879919e6]{stroke-dashoffset:1.5}.switch__input:checked~.switch__icon--dark[data-v-879919e6]{opacity:1;transform:translate(-1.6em);transition-delay:calc(var(--trans-dur)/2);transition-timing-function:var(--trans-timing-out)}.switch__sr[data-v-879919e6]{height:1px;overflow:hidden;position:absolute;width:1px}.header[data-v-9cb18298]{align-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:var(--header-backdrop);display:flex;height:84px;left:var(--space-0);position:fixed;right:var(--space-0);top:var(--space-0);z-index:50}.header[data-v-9cb18298]:after{background:var(--header-backdrop);content:"";height:100%;left:0;position:absolute;top:0;width:100%}button[data-v-9cb18298]{background:none;border:none;border-radius:50%;cursor:pointer;height:2.25rem;left:var(--space-6);outline:none;position:fixed;top:var(--space-6);transition:opacity .4s ease-out;width:2.25rem;z-index:99999}@media (min-width:640px){button[data-v-9cb18298]{left:32px}}button[data-v-9cb18298]:hover{opacity:.8}button[data-v-9cb18298]:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}button img[data-v-9cb18298]{height:2.25rem;width:2.25rem}.theme-switch[data-v-9cb18298],a[data-v-9cb18298]{background:none;border:none;border-radius:4px;cursor:pointer;outline:none;position:fixed;right:var(--space-6);top:var(--space-6);transition:opacity .4s ease-out;z-index:99999}@media (min-width:640px){.theme-switch[data-v-9cb18298],a[data-v-9cb18298]{right:32px}}a[data-v-9cb18298]:hover{opacity:.8}a[data-v-9cb18298]:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}a img[data-v-9cb18298]{height:2.25rem;width:2.25rem}.nav-drawer[data-v-7e323db3]{background:var(--surface-page);display:none;height:100%;left:0;position:fixed;top:0;transition:all .125s ease-in-out;width:0;z-index:49}@media (min-width:1060px){.nav-drawer[data-v-7e323db3]{display:block;width:calc(64px + 2.5rem)}.nav-drawer.nav-drawer-open[data-v-7e323db3]{width:240px}}.nav-drawer-content[data-v-7e323db3]{display:flex;flex-direction:column;gap:var(--space-8);height:100%;justify-content:center}.nav-drawer-list[data-v-7e323db3]{display:flex;flex-direction:column;gap:var(--space-2)}.nav-drawer-link[data-v-7e323db3]{color:var(--text-primary);display:block;font-family:var(--font-family-sans);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);letter-spacing:.01em;padding:var(--space-3) var(--space-6) var(--space-3) 24px}.nav-drawer-link[data-v-7e323db3]:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.nav-drawer-button[data-v-7e323db3]{background:none;border:none;border-radius:.25rem;bottom:var(--space-6);cursor:pointer;height:1.5rem;outline:none;position:absolute;right:42px;width:1.5rem}.nav-drawer-button[data-v-7e323db3]:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.nav-drawer-button svg[data-v-7e323db3]{color:var(--text-primary);height:1.5rem;width:1.5rem}.footer[data-v-4f29c6c6]{background-color:var(--surface-page);border-top:4px solid var(--color-dot-pattern);color:var(--text-primary);position:relative;transition:color var(--trans-dur),background-color var(--trans-dur)}@media (min-width:640px){.footer[data-v-4f29c6c6]{left:104px;max-width:calc(100% - 104px)}}.footer.nav-drawer-open[data-v-4f29c6c6]{left:240px;max-width:calc(100% - 240px)}.container[data-v-4f29c6c6]{align-items:center;display:flex;justify-content:space-between;line-height:25px;margin:var(--space-0) auto;max-width:60rem;padding:var(--space-6)}p[data-v-4f29c6c6]{color:var(--text-muted);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);margin-bottom:var(--space-0)}.copyright[data-v-4f29c6c6]{color:var(--text-primary)}ul[data-v-4f29c6c6]{display:flex;gap:var(--space-4);height:1.25rem;list-style:none;margin:var(--space-0);padding:var(--space-0)}a[data-v-4f29c6c6]{border-radius:4px;display:block;height:1.55rem}a svg[data-v-4f29c6c6]{color:var(--text-muted);transition:color .4s ease-out}a[data-v-4f29c6c6]:focus-visible{opacity:1;outline:3px solid var(--color-focus);outline-offset:2px}img[data-v-4f29c6c6],svg[data-v-4f29c6c6]{height:1.5rem;width:1.5rem}html{scroll-behavior:smooth}body{height:100%;overflow-x:hidden}#app{min-height:100vh}
