@import"https://fonts.googleapis.com/css2?family=Lato:wght@100;300;400;700;900&family=Montserrat:wght@100;200;300;400;500;600;700;800;900&family=Nanum+Pen+Script&family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap";@font-face{font-family:Canela Web;src:url(https://www.harvard.edu/wp-content/themes/core/assets/fonts/theme/canela/Canela-Regular-Web.woff2) format("woff2")}body{margin:0!important;background:#fff;font-family:Canela Web}*{scroll-behavior:smooth}a{text-decoration:none}.slide-up{animation-duration:1s;animation-timing-function:ease-out;animation-fill-mode:forwards}.slide-up,.slide-up1{animation-name:slideFadeUp}.slide-up1{animation-duration:.6s;animation-timing-function:ease-out;animation-fill-mode:forwards}@keyframes slideFadeUp{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.slide-down{animation-name:slideFadeDown;animation-duration:1s;animation-timing-function:ease-out;animation-fill-mode:forwards}@keyframes slideFadeDown{0%{transform:translateY(0);opacity:1}to{transform:translateY(50px);opacity:0}}*{box-sizing:border-box}@keyframes blink-0abdf875{0%,to{opacity:1}50%{opacity:.3}}@keyframes slideDown-0abdf875{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}header[data-v-0abdf875]{font-family:Calibri,Trebuchet MS,sans-serif;display:flex;justify-content:space-between;align-items:center;padding:1.5rem 0;margin-bottom:3rem;gap:2rem}.profile[data-v-0abdf875]{display:flex;align-items:center;gap:.875rem}.profile-img[data-v-0abdf875]{width:50px;height:50px;border-radius:50%;flex-shrink:0}.profile-info[data-v-0abdf875]{display:flex;flex-direction:column;gap:.25rem}.profile-name[data-v-0abdf875]{font-size:1rem;font-weight:500;line-height:1.2}.occupation[data-v-0abdf875]{color:#999;font-weight:500;font-size:.875rem}nav[data-v-0abdf875]{flex:1;display:flex;justify-content:center}.nav-links[data-v-0abdf875]{display:flex;gap:2rem;align-items:center}nav a[data-v-0abdf875]{text-decoration:none;color:#999;font-size:.9375rem;font-weight:500;transition:color .2s ease;padding:.5rem 0}nav a[data-v-0abdf875]:hover{color:#666}nav a.active[data-v-0abdf875]{color:#000}.status[data-v-0abdf875]{display:flex;align-items:center;gap:.5rem;box-shadow:0 2px 8px #0000001a;padding:.625rem 1rem;border-radius:6px;font-size:.875rem;color:#666;white-space:nowrap}.status-text[data-v-0abdf875]{font-weight:500}.status-dot[data-v-0abdf875]{width:8px;height:8px;background-color:#4caf50;border-radius:50%;flex-shrink:0;animation:blink-0abdf875 2s infinite}.menu-icon[data-v-0abdf875]{display:none}@media (max-width: 768px){header[data-v-0abdf875]{flex-wrap:wrap;padding:1rem 0;gap:1rem}.profile[data-v-0abdf875]{order:1;flex:1}nav[data-v-0abdf875]{order:3;width:100%;justify-content:flex-start}.menu-icon[data-v-0abdf875]{display:flex;flex-direction:column;justify-content:space-around;width:22px;height:18px;order:2;cursor:pointer;padding:0;z-index:10}.menu-icon span[data-v-0abdf875]{width:100%;height:2px;background-color:#333;border-radius:2px;transition:all .3s ease;transform-origin:center}.menu-icon.open span[data-v-0abdf875]:nth-child(1){transform:translateY(8px) rotate(45deg)}.menu-icon.open span[data-v-0abdf875]:nth-child(2){opacity:0;transform:translate(-10px)}.menu-icon.open span[data-v-0abdf875]:nth-child(3){transform:translateY(-8px) rotate(-45deg)}.nav-links[data-v-0abdf875]{display:none;flex-direction:column;width:100%;gap:0;background-color:#f8f8f8;padding:.75rem;border-radius:6px;margin-top:.5rem}.nav-links.show-menu[data-v-0abdf875]{display:flex;animation:slideDown-0abdf875 .3s ease}.nav-links a[data-v-0abdf875]{padding:.75rem .5rem;border-bottom:1px solid #e5e5e5}.nav-links a[data-v-0abdf875]:last-child{border-bottom:none}.status[data-v-0abdf875]{display:none}}@media (max-width: 1024px){.nav-links[data-v-0abdf875]{gap:1.5rem}}@font-face{font-family:Google Sans;src:url(https://fonts.gstatic.com/s/googlesans/v58/4UaRrENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iq2vgCIhM907w.woff2) format("woff2")}.footer-content[data-v-43e0b4b3]{font-family:Google Sans,sans-serif;margin-top:5rem;padding:3rem 0 2rem;border-top:1px solid #e5e5e5}.footer-content h2[data-v-43e0b4b3]{font-size:2rem;font-weight:500;margin-bottom:1.25rem;letter-spacing:-.01em;color:#000}.footer-intro[data-v-43e0b4b3]{font-size:1rem;color:#555;margin-bottom:1.5rem;line-height:1.6}.email-link[data-v-43e0b4b3]{color:#06c;text-decoration:none;font-weight:500;transition:color .25s ease}.email-link[data-v-43e0b4b3]:hover{color:#0052a3;text-decoration:underline}.social-links[data-v-43e0b4b3]{display:flex;gap:1.5rem;flex-wrap:wrap}.social-links a[data-v-43e0b4b3]{color:#000;text-decoration:none;font-weight:500;font-size:.9375rem;transition:all .25s ease;padding-bottom:2px;border-bottom:1px solid transparent}.social-links a[data-v-43e0b4b3]:hover{color:#06c;border-bottom-color:#06c}@media (max-width: 768px){.footer-content[data-v-43e0b4b3]{margin-top:4rem;padding:2.5rem 0 1.5rem}.footer-content h2[data-v-43e0b4b3]{font-size:1.75rem;margin-bottom:1rem}.footer-intro[data-v-43e0b4b3]{font-size:.9375rem;margin-bottom:1.25rem}.social-links[data-v-43e0b4b3]{gap:1.25rem}.social-links a[data-v-43e0b4b3]{font-size:.875rem}}@media (max-width: 576px){.footer-content[data-v-43e0b4b3]{margin-top:3rem;padding:2rem 0 1.25rem}.footer-content h2[data-v-43e0b4b3]{font-size:1.5rem}.footer-intro[data-v-43e0b4b3]{font-size:.875rem}.social-links[data-v-43e0b4b3]{flex-direction:column;gap:.875rem}}@font-face{font-family:Google Sans;src:url(https://fonts.gstatic.com/s/googlesans/v58/4UaRrENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iq2vgCIhM907w.woff2) format("woff2")}@keyframes slideUp-631be762{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.slide-up[data-v-631be762]{animation:slideUp-631be762 .8s ease-out forwards}.container[data-v-631be762]{max-width:1200px;margin:0 auto;padding:1.5rem 5%;display:flex;flex-direction:column}main[data-v-631be762]{flex:1;line-height:1.7;font-size:1.0625rem;padding:2rem 0}h2[data-v-631be762]{font-size:2.75rem;margin-bottom:2.5rem;font-family:Google Sans,sans-serif;font-weight:500;line-height:1.2;letter-spacing:-.02em}.profile[data-v-631be762]{max-width:100%;font-family:Google Sans,sans-serif;margin-bottom:1.75rem;color:#333;font-weight:400}blockquote[data-v-631be762]{font-style:italic;border-left:4px solid #000;padding-left:1.5rem;margin:3rem 0;font-family:Google Sans,sans-serif}.quote-text[data-v-631be762]{margin:0 0 .75rem;font-size:1.125rem;line-height:1.6}blockquote footer[data-v-631be762]{font-style:normal;font-size:.9375rem;color:#666;font-weight:500}a[data-v-631be762]{color:#06c;text-decoration:none}@media (min-width: 768px){.profile[data-v-631be762]{max-width:65%}}@media (max-width: 767px){.container[data-v-631be762]{padding:1rem 4%}main[data-v-631be762]{padding:1.5rem 0}h2[data-v-631be762]{font-size:2rem;margin-bottom:2rem;letter-spacing:-.01em}main[data-v-631be762]{font-size:.9375rem;line-height:1.65}.profile[data-v-631be762]{margin-bottom:1.5rem}blockquote[data-v-631be762]{padding-left:1rem;margin:2.5rem 0}.quote-text[data-v-631be762]{font-size:1rem}blockquote footer[data-v-631be762]{font-size:.875rem}}@media (max-width: 480px){h2[data-v-631be762]{font-size:1.75rem}main[data-v-631be762]{font-size:.875rem}}@font-face{font-family:Google Sans;src:url(https://fonts.gstatic.com/s/googlesans/v58/4UaRrENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iq2vgCIhM907w.woff2) format("woff2")}@keyframes slideUp-78b15241{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.slide-up[data-v-78b15241]{animation:slideUp-78b15241 .8s ease-out forwards}main[data-v-78b15241]{padding:1.5rem 5%;font-family:Google Sans,sans-serif;max-width:1200px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.about[data-v-78b15241]{flex:1}main h1[data-v-78b15241]{text-align:center;font-family:Google Sans,sans-serif;font-size:3rem;font-weight:500;margin-bottom:1rem;letter-spacing:-.02em;line-height:1.2}.qualification[data-v-78b15241]{text-align:center;font-family:Google Sans,sans-serif;font-size:1.125rem;margin-bottom:3.5rem;color:#333}.qualification em[data-v-78b15241]{text-decoration:underline;font-style:normal}.description[data-v-78b15241]{display:flex;gap:3rem;padding:0 10%;align-items:flex-start}.description .image[data-v-78b15241]{flex:0 0 380px}.image img[data-v-78b15241]{width:100%;height:480px;object-fit:cover;border-radius:12px}.description .detail[data-v-78b15241]{flex:1;font-family:Google Sans,sans-serif;line-height:1.7;font-size:1.0625rem}.detail p[data-v-78b15241]{margin-bottom:1.5rem;color:#333}.quote[data-v-78b15241]{margin-top:3rem;padding-top:2rem;border-top:1px solid #e5e5e5}.quote-text[data-v-78b15241]{font-style:italic;font-size:1.125rem;line-height:1.6;margin-bottom:.75rem;color:#444}.quote-author[data-v-78b15241]{display:block;font-size:.9375rem;color:#666;font-weight:500}@media (max-width: 1200px){.description[data-v-78b15241]{padding:0 5%}}@media (max-width: 992px){.description[data-v-78b15241]{padding:0 2%;gap:2.5rem}.description .image[data-v-78b15241]{flex:0 0 320px}.image img[data-v-78b15241]{height:400px}}@media (max-width: 768px){main[data-v-78b15241]{padding:1.5rem 4%}main h1[data-v-78b15241]{font-size:2.25rem;margin-bottom:.75rem}.qualification[data-v-78b15241]{font-size:1rem;margin-bottom:2.5rem}.description[data-v-78b15241]{flex-direction:column;align-items:center;gap:2rem;padding:0}.description .image[data-v-78b15241]{flex:0 0 auto;width:100%;max-width:400px}.description .detail[data-v-78b15241]{width:100%}.image img[data-v-78b15241]{height:400px}.detail p[data-v-78b15241]{margin-bottom:1.25rem}.quote[data-v-78b15241]{margin-top:2rem;padding-top:1.5rem}}@media (max-width: 576px){main[data-v-78b15241]{padding:1rem 4%}main h1[data-v-78b15241]{font-size:1.875rem}.qualification[data-v-78b15241]{font-size:.9375rem;margin-bottom:2rem}.description .detail[data-v-78b15241]{font-size:.9375rem;line-height:1.65}.image img[data-v-78b15241]{height:350px}.quote-text[data-v-78b15241]{font-size:1rem}.quote-author[data-v-78b15241]{font-size:.875rem}}@media (max-width: 480px){main h1[data-v-78b15241]{font-size:1.625rem}.image img[data-v-78b15241]{height:300px}.description .detail[data-v-78b15241]{font-size:.875rem}}@font-face{font-family:Google Sans;src:url(https://fonts.gstatic.com/s/googlesans/v58/4UaRrENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iq2vgCIhM907w.woff2) format("woff2")}@keyframes slideUp-4a0ce930{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.slide-up[data-v-4a0ce930]{animation:slideUp-4a0ce930 .8s ease-out forwards}main[data-v-4a0ce930]{padding:1.5rem 5%;font-family:Google Sans,sans-serif;max-width:1200px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.intro[data-v-4a0ce930]{text-align:center;margin-bottom:3.5rem}.intro h1[data-v-4a0ce930]{font-size:3rem;font-weight:500;margin-bottom:2rem;letter-spacing:-.02em;line-height:1.2}.quote-text[data-v-4a0ce930]{font-style:italic;font-size:1.125rem;line-height:1.6;margin-bottom:.75rem;color:#444}.quote-author[data-v-4a0ce930]{display:inline-block;font-size:.9375rem;color:#666;font-weight:500}.projects-container[data-v-4a0ce930]{max-width:900px;margin:0 auto;width:100%}.header-section[data-v-4a0ce930]{margin-bottom:2.5rem}.main-title[data-v-4a0ce930]{font-size:1.75rem;font-weight:500;border-bottom:2px solid #000;padding-bottom:1rem;margin-bottom:1.5rem;letter-spacing:-.01em}.category-filters[data-v-4a0ce930]{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.category-button[data-v-4a0ce930]{padding:.625rem 1.25rem;border:2px solid #dee2e6;border-radius:24px;background-color:#fff;cursor:pointer;transition:all .25s ease;font-size:.875rem;font-weight:500;font-family:Google Sans,sans-serif}.category-button[data-v-4a0ce930]:hover{background-color:#f5f5f5;border-color:#000}.category-button.active[data-v-4a0ce930]{background-color:#000;color:#fff;border-color:#000}.clear-filter[data-v-4a0ce930]{padding:.625rem 1rem;cursor:pointer;border:none;background-color:transparent;color:#666;font-weight:600;font-size:.875rem;font-family:Google Sans,sans-serif;transition:all .25s ease;text-decoration:underline;text-underline-offset:3px}.clear-filter[data-v-4a0ce930]:hover,.clear-filter.active[data-v-4a0ce930]{color:#000}.projects-list[data-v-4a0ce930]{display:flex;flex-direction:column;gap:1.5rem}.project[data-v-4a0ce930]{padding:1.75rem;border:1px solid #e5e5e5;border-radius:10px;transition:all .3s ease;cursor:pointer;background-color:#fff}.project[data-v-4a0ce930]:hover{transform:translateY(-4px);box-shadow:0 8px 20px #00000014;border-color:#d0d0d0}.project-title[data-v-4a0ce930]{font-size:1.25rem;font-weight:500;margin-bottom:.875rem;line-height:1.3;color:#000}.project-description[data-v-4a0ce930]{color:#555;margin-bottom:1.25rem;line-height:1.65;font-size:.9375rem}.project-tags[data-v-4a0ce930]{display:flex;flex-wrap:wrap;gap:.875rem}.tag[data-v-4a0ce930]{display:flex;align-items:center;font-size:.875rem;color:#666;font-weight:500}.tag-dot[data-v-4a0ce930]{width:10px;height:10px;border-radius:50%;margin-right:.5rem;flex-shrink:0}.tag-dot.python[data-v-4a0ce930]{background-color:#3776ab}.tag-dot.html[data-v-4a0ce930]{background-color:#f37626}.tag-dot.react[data-v-4a0ce930]{background-color:#61dafb}.tag-dot.vue[data-v-4a0ce930]{background-color:#42b883}.tag-dot.django[data-v-4a0ce930]{background-color:#092e20}.tag-dot.docker[data-v-4a0ce930]{background-color:#2496ed}.tag-dot.nginx[data-v-4a0ce930]{background-color:#009639}.tag-dot.javascript[data-v-4a0ce930]{background-color:#f7df1e}.tag-dot.typescript[data-v-4a0ce930]{background-color:#3178c6}.tag-dot.postgis[data-v-4a0ce930]{background-color:#0064a5}.tag-dot.api[data-v-4a0ce930]{background-color:#e34f26}.tag-dot.git[data-v-4a0ce930]{background-color:#f34f29}.tag-dot.postgresql[data-v-4a0ce930]{background-color:#336791}.tag-dot.vue3[data-v-4a0ce930]{background-color:#3fb984}@media (max-width: 768px){main[data-v-4a0ce930]{padding:1.5rem 4%}.intro h1[data-v-4a0ce930]{font-size:2.25rem;margin-bottom:1.5rem}.quote-text[data-v-4a0ce930]{font-size:1rem}.quote-author[data-v-4a0ce930]{font-size:.875rem}.intro[data-v-4a0ce930]{margin-bottom:2.5rem}.main-title[data-v-4a0ce930]{font-size:1.5rem}.category-filters[data-v-4a0ce930]{gap:.625rem}.category-button[data-v-4a0ce930]{font-size:.8125rem;padding:.5rem 1rem}.project[data-v-4a0ce930]{padding:1.5rem}.project-title[data-v-4a0ce930]{font-size:1.125rem}.project-description[data-v-4a0ce930]{font-size:.875rem}}@media (max-width: 576px){main[data-v-4a0ce930]{padding:1rem 4%}.intro h1[data-v-4a0ce930]{font-size:1.875rem}.main-title[data-v-4a0ce930]{font-size:1.375rem}.project[data-v-4a0ce930]{padding:1.25rem}.project-title[data-v-4a0ce930]{font-size:1.0625rem}.project-description[data-v-4a0ce930]{font-size:.8125rem;line-height:1.6}.tag[data-v-4a0ce930]{font-size:.8125rem}}@font-face{font-family:Google Sans;src:url(https://fonts.gstatic.com/s/googlesans/v58/4UaRrENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iq2vgCIhM907w.woff2) format("woff2")}main[data-v-b1eafc46]{padding:1.5rem 5%;max-width:1200px;margin:0 auto;font-family:Google Sans,sans-serif;min-height:100vh;display:flex;flex-direction:column}.content[data-v-b1eafc46]{flex:1;padding:2rem 0}.header-section[data-v-b1eafc46]{text-align:center;margin-bottom:3.5rem}h1[data-v-b1eafc46]{font-size:3rem;font-weight:500;color:#000;letter-spacing:-.02em;line-height:1.2}.blog-grid[data-v-b1eafc46]{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:2rem;max-width:1100px;margin:0 auto}.blog-card[data-v-b1eafc46]{background:#fff;border-radius:12px;overflow:hidden;transition:all .3s ease;box-shadow:0 2px 12px #0000000f;border:1px solid #e5e5e5;display:flex;flex-direction:column}.blog-card[data-v-b1eafc46]:hover{transform:translateY(-6px);box-shadow:0 12px 24px #0000001a;border-color:#d0d0d0}.blog-content[data-v-b1eafc46]{padding:2rem;display:flex;flex-direction:column;height:100%}.blog-content h2[data-v-b1eafc46]{font-size:1.375rem;font-weight:500;color:#000;margin-bottom:1.25rem;line-height:1.3;letter-spacing:-.01em}.blog-meta[data-v-b1eafc46]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.25rem;gap:1rem;padding-bottom:1rem;border-bottom:1px solid #f0f0f0}.date[data-v-b1eafc46]{color:#666;font-size:.875rem;font-weight:500;flex-shrink:0}.tags[data-v-b1eafc46]{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.tag[data-v-b1eafc46]{background-color:#f5f5f5;color:#555;padding:.375rem .75rem;border-radius:16px;font-size:.75rem;font-weight:500;transition:all .25s ease}.blog-card:hover .tag[data-v-b1eafc46]{background-color:#e8e8e8}.description[data-v-b1eafc46]{color:#555;font-size:.9375rem;line-height:1.65;margin-bottom:auto;flex:1}.read-more[data-v-b1eafc46]{display:inline-flex;align-items:center;gap:.5rem;color:#06c;text-decoration:none;font-weight:600;font-size:.9375rem;margin-top:1.5rem;transition:all .25s ease;align-self:flex-start}.read-more[data-v-b1eafc46]:hover{color:#0052a3;gap:.75rem}.arrow[data-v-b1eafc46]{transition:transform .25s ease;font-size:1.1em}.read-more:hover .arrow[data-v-b1eafc46]{transform:translate(3px)}@media (max-width: 992px){.blog-grid[data-v-b1eafc46]{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.75rem}}@media (max-width: 768px){main[data-v-b1eafc46]{padding:1.5rem 4%}.content[data-v-b1eafc46]{padding:1.5rem 0}.header-section[data-v-b1eafc46]{margin-bottom:2.5rem}h1[data-v-b1eafc46]{font-size:2.25rem}.blog-grid[data-v-b1eafc46]{grid-template-columns:1fr;gap:1.5rem}.blog-content[data-v-b1eafc46]{padding:1.75rem}.blog-content h2[data-v-b1eafc46]{font-size:1.25rem}.blog-meta[data-v-b1eafc46]{flex-direction:column;gap:.75rem;align-items:flex-start}.tags[data-v-b1eafc46]{justify-content:flex-start}.description[data-v-b1eafc46]{font-size:.875rem}}@media (max-width: 576px){main[data-v-b1eafc46]{padding:1rem 4%}h1[data-v-b1eafc46]{font-size:1.875rem}.blog-grid[data-v-b1eafc46]{gap:1.25rem}.blog-content[data-v-b1eafc46]{padding:1.5rem}.blog-content h2[data-v-b1eafc46]{font-size:1.125rem;margin-bottom:1rem}.blog-meta[data-v-b1eafc46]{margin-bottom:1rem;padding-bottom:.875rem}.description[data-v-b1eafc46]{font-size:.8125rem;line-height:1.6}.blog-card[data-v-b1eafc46]:hover{transform:translateY(-4px)}}@media (max-width: 480px){h1[data-v-b1eafc46]{font-size:1.75rem}.blog-content[data-v-b1eafc46]{padding:1.25rem}}
