:root{color-scheme:light dark;--color-page: light-dark(#f5f5f5, #101317);--color-surface: light-dark(#fff, #1a1e24);--color-accent: light-dark(#2d7788, #5cc0d6);--color-accent-dark: light-dark(#1a454f, #a4e0ee);--color-on-accent: light-dark(#fff, #0d1f25);--color-sidebar: light-dark(#247589, #164552);--color-heading: light-dark(#3F4650, #e6e9ee);--color-muted: light-dark(#66788F, #96a4b8);--color-text: light-dark(#545E6C, #b8c0cc);--color-on-sidebar: #fff;--color-on-sidebar-muted: rgba(255, 255, 255, 0.9);--section-gap: 45px}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,*::before,*::after{box-sizing:border-box}h1,h2,h3,h4,h5,h6,p,ul,dl,dd{margin:0}ul{padding:0;list-style:none}img,svg{vertical-align:middle}img{max-width:100%}body{margin:0;font-family:"Roboto",sans-serif;font-size:14px;line-height:1.5;color:var(--color-text);background:var(--color-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2}a{color:var(--color-accent);text-decoration:none;transition:color .4s ease-in-out}a:hover{color:var(--color-accent-dark);text-decoration:underline}a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.nowrap{white-space:nowrap}.print-only{display:none}.skip-link{position:absolute;top:-4rem;left:0;z-index:1;padding:.5rem 1rem;background:var(--color-surface)}.skip-link:focus{top:0}.theme-toggle{position:fixed;top:12px;right:12px;z-index:1;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--color-muted);border-radius:50%;background:var(--color-surface);color:var(--color-heading);cursor:pointer}.theme-toggle[hidden]{display:none}.theme-toggle:hover{color:var(--color-accent)}.theme-toggle:focus-visible{outline:2px solid currentColor;outline-offset:2px}.theme-toggle svg{width:18px;height:18px;fill:currentColor}.theme-toggle .icon-sun,:root[data-theme=dark] .theme-toggle .icon-moon{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:inline}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:0}::view-transition-new(root){z-index:1}.wrapper{display:grid;grid-template-columns:minmax(0, 1fr);max-width:960px;margin:0 auto;background:var(--color-sidebar);box-shadow:0 2px 4px rgba(0,0,0,.1)}@media(min-width: 992px){.wrapper{margin:3rem auto}}.sidebar-wrapper{background:var(--color-sidebar);color:var(--color-on-sidebar)}.sidebar-wrapper a{color:var(--color-on-sidebar)}.sidebar-wrapper .avatar-container{padding:30px;text-align:center;color:var(--color-on-sidebar);background:rgba(0,0,0,.2)}.sidebar-wrapper .avatar{width:25%;height:auto;aspect-ratio:1;object-fit:cover;margin-bottom:15px;border-radius:50%}.sidebar-wrapper .name{margin-bottom:10px;font-size:32px;font-weight:900}.sidebar-wrapper .tagline{font-size:16px;line-height:1.2;color:var(--color-on-sidebar-muted)}.sidebar-wrapper .container-block{padding:10px 15px}.sidebar-wrapper .container-block-title{display:inline-flex;margin-bottom:15px;font-size:16px;text-transform:uppercase}.sidebar-wrapper .container-block-title svg{width:1em;height:1em;margin-right:.5em;fill:var(--color-on-sidebar)}.sidebar-wrapper .contact-info{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;column-gap:3rem}.sidebar-wrapper .contact-item{align-self:stretch;margin-bottom:10px}.sidebar-wrapper .contact-item:last-child{margin-bottom:0}.sidebar-wrapper .contact-item svg{width:14px;height:1em;margin-right:.5em;fill:var(--color-on-sidebar)}.sidebar-wrapper .education-list{display:flex;flex-wrap:wrap;justify-content:space-between;column-gap:1rem}.sidebar-wrapper .education-container .item{margin-bottom:15px}.sidebar-wrapper .education-container .item:last-child{margin-bottom:0}.sidebar-wrapper .degree{margin-bottom:2px;font-size:14px}.sidebar-wrapper .grade{display:block}.sidebar-wrapper .education-container .meta,.sidebar-wrapper .education-container .time{font-weight:500;color:var(--color-on-sidebar-muted)}.sidebar-wrapper .lang-desc{color:var(--color-on-sidebar-muted)}.sidebar-wrapper .sidebar-list{display:flex;flex-wrap:wrap;justify-content:space-around;column-gap:3rem}.sidebar-wrapper .sidebar-list.nowrap-list{flex-wrap:nowrap}.sidebar-wrapper .sidebar-list li{margin-bottom:10px}.sidebar-wrapper .sidebar-list li:last-child{margin-bottom:0}@keyframes hero-in{from{opacity:0;transform:translateY(12px) scale(0.97)}to{opacity:1;transform:none}}.sidebar-wrapper .name .word{display:inline-block}@media(prefers-reduced-motion: no-preference){.sidebar-wrapper .avatar,.sidebar-wrapper .name .word,.sidebar-wrapper .tagline{animation:hero-in .8s cubic-bezier(0.2, 0.7, 0.2, 1) both}.sidebar-wrapper .name .word:first-child{animation-delay:.15s}.sidebar-wrapper .name .word:last-child{animation-delay:.3s}.sidebar-wrapper .tagline{animation-delay:.5s}}.main-wrapper{padding:20px;background:var(--color-surface)}.main-wrapper .section:not(:last-child){margin-bottom:var(--section-gap)}.main-wrapper .section-title{position:relative;margin-bottom:20px;font-size:20px;font-weight:500;text-transform:uppercase;color:var(--color-accent)}.main-wrapper .section-title .icon-holder{position:relative;display:inline-block;width:30px;height:30px;margin-right:8px;padding:0 8px;border-radius:50%;background:var(--color-accent);font-size:16px;text-align:center;vertical-align:middle}.main-wrapper .section-title .icon-holder svg{width:100%;height:100%;fill:var(--color-on-accent)}.main-wrapper .experiences-section .item{margin-bottom:30px}@media screen{.main-wrapper .experiences-section .item{position:relative;padding-left:28px}.main-wrapper .experiences-section .item::before{content:"";position:absolute;top:5px;left:0;width:12px;height:12px;border:2px solid var(--color-accent);border-radius:50%;background:var(--color-surface)}.main-wrapper .experiences-section .item.current::before{background:var(--color-accent)}.main-wrapper .experiences-section .item.side::before{border-radius:3px;background:var(--color-surface)}.main-wrapper .experiences-section .item:not(:last-child)::after{content:"";position:absolute;top:22px;bottom:-27px;left:5px;width:2px;border-radius:1px;background:linear-gradient(var(--color-accent), var(--color-accent)) no-repeat top/100% 100%,var(--color-muted);opacity:.6}}@keyframes timeline-pulse{from{box-shadow:0 0 0 0 var(--color-accent)}to{box-shadow:0 0 0 9px rgba(0,0,0,0)}}@media screen and (prefers-reduced-motion: no-preference){.main-wrapper .experiences-section .item.current::before{animation:timeline-pulse 2.4s ease-out infinite}}@keyframes timeline-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes timeline-node{from{transform:scale(0)}to{transform:scale(1)}}@keyframes timeline-draw{from{background-size:100% 0,auto}to{background-size:100% 100%,auto}}@media screen and (prefers-reduced-motion: no-preference){@supports(animation-timeline: view()){.main-wrapper .experiences-section .item{animation:timeline-in linear both;animation-timeline:view();animation-range:entry 0% entry 35%}.main-wrapper .experiences-section .item::before{animation:timeline-node linear both;animation-timeline:view();animation-range:entry 10% entry 40%}.main-wrapper .experiences-section .item.current::before{animation:timeline-node linear both,timeline-pulse 2.4s ease-out infinite;animation-timeline:view(),auto;animation-range:entry 10% entry 40%,normal}.main-wrapper .experiences-section .item:not(:last-child)::after{animation:timeline-draw linear both;animation-timeline:view();animation-range:entry 30% cover 70%}}}.main-wrapper .upper-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;column-gap:1rem;margin-bottom:2px}.main-wrapper .job-title{font-size:16px;font-weight:500;color:var(--color-heading)}.main-wrapper .badge{display:inline-block;margin-left:6px;padding:1px 8px;border:1px solid var(--color-accent);border-radius:10px;color:var(--color-accent-dark);font-size:11px;font-weight:500;letter-spacing:.03em;text-transform:uppercase;vertical-align:1px}.main-wrapper .time{color:var(--color-muted)}.main-wrapper .duration{white-space:nowrap}.main-wrapper .roles{margin-left:2px;border-left:2px solid color-mix(in srgb, var(--color-muted) 40%, transparent)}.main-wrapper .role{position:relative;padding-left:18px;margin-bottom:18px}.main-wrapper .role:last-child{margin-bottom:0}.main-wrapper .role::before{content:"";position:absolute;top:7px;left:-5px;width:8px;height:8px;border-radius:50%;background:var(--color-accent)}.main-wrapper .role .details{margin-top:6px}.main-wrapper .role-title{font-size:15px;font-weight:500;color:var(--color-heading)}.main-wrapper .company{margin-bottom:10px;color:var(--color-muted)}.main-wrapper .company img{width:1em}:root[data-theme=dark] .main-wrapper .company img{padding:1px;border-radius:3px;background:#fff}.main-wrapper .details p,.main-wrapper .summary p{margin-bottom:1rem}.main-wrapper .details p:last-child,.main-wrapper .summary p:last-child{margin-bottom:0}.main-wrapper .project-title{font-size:16px}.main-wrapper .other-experiences-section .item{margin-bottom:15px}.skillset{display:grid;grid-template-columns:33% 1fr;row-gap:1em}.skill-title{font-size:14px;font-weight:700}.skill-title svg{width:1em;height:1em;margin-right:.5em;fill:var(--color-heading)}.skill-description{display:flex;flex-wrap:wrap;gap:.4em;margin:0}.skill{appearance:none;background:rgba(0,0,0,0);color:inherit;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:.4em;padding:.1em .7em;border:1px solid color-mix(in srgb, var(--color-muted) 40%, transparent);border-radius:1em;font-size:13px;transition:border-color .2s,color .2s,background-color .2s}.skill:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.skill svg{width:1.1em;height:1.1em;fill:var(--color-muted);transition:fill .2s}.skill:hover{border-color:var(--brand, var(--color-accent));background-color:color-mix(in srgb, var(--brand, var(--color-accent)) 14%, transparent);color:var(--color-heading)}.skill:hover svg{fill:var(--brand, var(--color-accent))}@media(prefers-reduced-motion: reduce){.skill,.skill svg{transition:none}}@media print,(min-width: 768px){.wrapper{grid-template-columns:minmax(0, 1fr) 28%}.sidebar-wrapper{grid-column:2;grid-row:1}.main-wrapper{grid-column:1;grid-row:1;padding:60px}.main-wrapper .experiences-section .details,.main-wrapper .summary,.main-wrapper .other-experiences-section .item{text-align:justify}.sidebar-wrapper .container-block{padding:30px 15px}.sidebar-wrapper .avatar{width:100%}.sidebar-wrapper .contact-info{display:grid;justify-content:start}.sidebar-wrapper .education-list,.sidebar-wrapper .sidebar-list{display:block}}.palette-trigger{position:fixed;top:12px;right:64px;z-index:1;display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--color-muted);border-radius:20px;background:var(--color-surface);color:var(--color-heading);font:inherit;cursor:pointer}.palette-trigger:hover{color:var(--color-accent)}.palette-trigger:focus-visible,.palette-input:focus-visible{outline:2px solid currentColor;outline-offset:2px}.palette-trigger svg,.palette-search svg,.palette-item svg{flex:none;width:16px;height:16px;fill:currentColor}.palette kbd,.palette-trigger kbd{padding:1px 6px;border:1px solid var(--color-muted);border-radius:4px;font:inherit;font-size:12px;color:var(--color-muted)}@media(max-width: 767px){.palette-trigger-label,.palette-trigger kbd{display:none}.palette-trigger{width:40px;justify-content:center;padding:0;border-radius:50%}}.palette{width:min(560px,100vw - 32px);margin:12vh auto auto;padding:0;border:1px solid var(--color-muted);border-radius:12px;background:var(--color-surface);color:var(--color-text);box-shadow:0 20px 60px rgba(0,0,0,.35)}.palette::backdrop{background:rgba(0,0,0,.45);backdrop-filter:blur(3px)}.palette-search{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--color-muted);color:var(--color-muted)}.palette-input{flex:1;min-width:0;padding:16px 0;border:0;background:none;color:var(--color-heading);font:inherit;font-size:16px}.palette-input:focus{outline:none}.palette-list{max-height:min(50vh,380px);padding:6px;overflow-y:auto}.palette-group{padding:8px 10px 4px;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--color-muted)}.palette-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--color-heading);cursor:pointer}.palette-item[aria-selected=true]{background:var(--color-accent);color:var(--color-on-accent)}.palette-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-hint{flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;opacity:.85}.palette-item:not([aria-selected=true]) .palette-hint{color:var(--color-muted)}.palette-empty{padding:24px 16px;text-align:center;color:var(--color-muted)}.palette-footer{display:flex;gap:6px;align-items:center;padding:8px 16px;border-top:1px solid var(--color-muted);font-size:12px;color:var(--color-muted)}@media(hover: none){.palette-footer{display:none}}@keyframes jump-flash{from{outline:2px solid var(--color-accent);outline-offset:6px}to{outline:2px solid rgba(0,0,0,0);outline-offset:6px}}.jump-flash{scroll-margin-top:24px;animation:jump-flash 1.6s ease-out;border-radius:4px}.skill-dialog{width:min(440px,100vw - 32px);margin:12vh auto auto;padding:0;border:1px solid color-mix(in srgb, var(--color-muted) 60%, transparent);border-top:3px solid var(--brand, var(--color-accent));border-radius:12px;background:var(--color-surface);color:var(--color-text);box-shadow:0 20px 60px rgba(0,0,0,.35),0 0 48px color-mix(in srgb, var(--brand, var(--color-accent)) 22%, transparent)}.skill-dialog::backdrop{background:rgba(0,0,0,.45);backdrop-filter:blur(3px)}.skill-dialog[open]{animation:skill-dialog-in .2s ease-out}@keyframes skill-dialog-in{from{opacity:0;transform:translateY(8px) scale(0.98)}}.skill-dialog-header{display:flex;align-items:center;gap:14px;padding:18px 18px 8px 20px}.skill-dialog-logo svg{display:block;width:32px;height:32px;fill:var(--brand, var(--color-accent))}.skill-dialog-header>div{flex:1;min-width:0}.skill-dialog-title{margin:0;font-size:18px;color:var(--color-heading)}.skill-dialog-count{margin:0;font-size:13px;color:var(--color-muted)}.skill-dialog-close{flex:none;align-self:flex-start;padding:6px;border:0;border-radius:6px;background:none;color:var(--color-muted);cursor:pointer}.skill-dialog-close svg{display:block;width:14px;height:14px;fill:currentColor}.skill-dialog-close:hover{color:var(--color-heading)}.skill-dialog-list{margin:0;padding:6px 10px 12px;list-style:none}.skill-use{display:flex;align-items:flex-start;gap:12px;width:100%;padding:9px 10px;border:0;border-radius:8px;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.skill-use svg{flex:none;width:16px;height:16px;margin-top:3px;fill:var(--color-muted)}.skill-use-title,.skill-use-meta{display:block}.skill-use-title{font-weight:600;color:var(--color-heading)}.skill-use-meta{font-size:13px;color:var(--color-muted)}.skill-use:hover{background:color-mix(in srgb, var(--brand, var(--color-accent)) 12%, transparent)}.skill-use:hover svg{fill:var(--brand, var(--color-accent))}.skill-dialog-close:focus-visible,.skill-use:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}@media(prefers-reduced-motion: reduce){.skill-dialog[open]{animation:none}}@page{margin:0}@media print{:root,:root[data-theme]{color-scheme:light}:root{--section-gap: 30px}.theme-toggle,.palette-trigger,.palette{display:none}.sidebar-wrapper .avatar,.sidebar-wrapper .name .word,.sidebar-wrapper .tagline{animation:none}:root[data-theme] .main-wrapper .company img{padding:0;background:none}*{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}body{color:#000;background:#fff}.print-only{display:inline}.wrapper{margin:0;box-shadow:none}.sidebar-wrapper .avatar-container{padding:30px 30px 5px 30px}.sidebar-wrapper .name{font-size:18px;font-weight:700}.sidebar-wrapper .tagline{font-size:14px;color:var(--color-on-sidebar)}.sidebar-wrapper .container-block{padding:15px 10px}.sidebar-wrapper .contact-item{font-size:12px}.main-wrapper{padding:30px}.main-wrapper .section-title{margin-bottom:12px}.main-wrapper .duration{display:none}.main-wrapper .job-title,.main-wrapper .role-title,.main-wrapper .company,.main-wrapper .time{color:#000}.skill-title svg{fill:#000}.skill-description{display:block}.skill{display:inline;padding:0;border:0;border-radius:0;font-size:inherit}.skill svg{display:none}.skill:not(:last-child)::after{content:","}}.skill-amazonaws{--brand:light-dark(#cf7c00, #ff9900)}.skill-amazonredshift{--brand:light-dark(#8c4fff, #8c4fff)}.skill-android{--brand:light-dark(#34a853, #34a853)}.skill-apacheairflow{--brand:light-dark(#017cee, #017cee)}.skill-gnubash{--brand:light-dark(#469921, #4eaa25)}.skill-c{--brand:light-dark(#00599c, #3079af)}.skill-cplusplus{--brand:light-dark(#00599c, #3079af)}.skill-css3{--brand:light-dark(#1572b6, #1572b6)}.skill-celery{--brand:light-dark(#37814a, #37814a)}.skill-cloudflare{--brand:light-dark(#db731d, #f38020)}.skill-dbt{--brand:light-dark(#e65f44, #ff694b)}.skill-docker{--brand:light-dark(#2496ed, #2496ed)}.skill-fastapi{--brand:light-dark(#009688, #009688)}.skill-flask{--brand:light-dark(#000000, #686868)}.skill-googlecloud{--brand:light-dark(#4285f4, #4285f4)}.skill-githubactions{--brand:light-dark(#2088ff, #2088ff)}.skill-go{--brand:light-dark(#009cc2, #00add8)}.skill-googlebigquery{--brand:light-dark(#5c8ddd, #669df6)}.skill-html5{--brand:light-dark(#e34f26, #e34f26)}.skill-helm{--brand:light-dark(#0f1689, #6266b2)}.skill-openjdk{--brand:light-dark(#5382a1, #5382a1)}.skill-javascript{--brand:light-dark(#a29214, #f7df1e)}.skill-jenkins{--brand:light-dark(#d24939, #d24939)}.skill-kubernetes{--brand:light-dark(#326ce5, #326ce5)}.skill-mongodb{--brand:light-dark(#47a248, #47a248)}.skill-php{--brand:light-dark(#777bb4, #777bb4)}.skill-postgresql{--brand:light-dark(#4169e1, #4169e1)}.skill-python{--brand:light-dark(#3776ab, #3776ab)}.skill-react{--brand:light-dark(#479fb7, #61dafb)}.skill-reactrouter{--brand:light-dark(#ca4245, #ca4245)}.skill-redis{--brand:light-dark(#ff4438, #ff4438)}.skill-ruby{--brand:light-dark(#cc342d, #cc342d)}.skill-rubyonrails{--brand:light-dark(#d30001, #d30001)}.skill-springboot{--brand:light-dark(#62a139, #6db33f)}.skill-svelte{--brand:light-dark(#ff3e00, #ff3e00)}.skill-terraform{--brand:light-dark(#844fba, #844fba)}.skill-typescript{--brand:light-dark(#3178c6, #3178c6)}