@charset "UTF-8";@keyframes v-shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}/*!
 * ress.css • v2.0.4
 * MIT License
 * github.com/filipelinhares/ress
 */html{box-sizing:border-box;overflow-y:scroll;-webkit-text-size-adjust:100%;word-break:normal;-moz-tab-size:4;tab-size:4}*,:before,:after{background-repeat:no-repeat;box-sizing:inherit}:before,:after{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}hr{overflow:visible;height:0}details,main{display:block}summary{display:list-item}small{font-size:80%}[hidden]{display:none}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}a{background-color:transparent}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}pre{font-size:1em}b,strong{font-weight:bolder}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit],[role=button]{cursor:pointer;color:inherit}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{outline:1px dotted ButtonText}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button,input,select,textarea{background-color:transparent;border-style:none}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;white-space:normal;max-width:100%}::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}::-ms-clear,::-ms-reveal{display:none}img{border-style:none}progress{vertical-align:baseline}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.dialog-transition-enter-active,.dialog-bottom-transition-enter-active,.dialog-top-transition-enter-active{transition-duration:225ms!important;transition-timing-function:cubic-bezier(0,0,.2,1)!important}.dialog-transition-leave-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-leave-active{transition-duration:125ms!important;transition-timing-function:cubic-bezier(.4,0,1,1)!important}.dialog-transition-enter-active,.dialog-transition-leave-active,.dialog-bottom-transition-enter-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-enter-active,.dialog-top-transition-leave-active{transition-property:transform,opacity!important;pointer-events:none}.dialog-transition-enter-from,.dialog-transition-leave-to{transform:scale(.9);opacity:0}.dialog-transition-enter-to,.dialog-transition-leave-from{opacity:1}.dialog-bottom-transition-enter-from,.dialog-bottom-transition-leave-to{transform:translateY(calc(50vh + 50%))}.dialog-top-transition-enter-from,.dialog-top-transition-leave-to{transform:translateY(calc(-50vh - 50%))}.picker-transition-enter-active,.picker-reverse-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move,.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from,.picker-transition-leave-to,.picker-reverse-transition-enter-from,.picker-reverse-transition-leave-to{opacity:0}.picker-transition-leave-from,.picker-transition-leave-active,.picker-transition-leave-to,.picker-reverse-transition-leave-from,.picker-reverse-transition-leave-active,.picker-reverse-transition-leave-to{position:absolute!important}.picker-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-property:transform,opacity!important}.picker-transition-enter-active,.picker-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from{transform:translate(100%)}.picker-transition-leave-to{transform:translate(-100%)}.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-enter-from{transform:translate(-100%)}.picker-reverse-transition-leave-to{transform:translate(100%)}.expand-transition-enter-active,.expand-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-enter-active,.expand-transition-leave-active{transition-property:height!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-property:width!important}.scale-transition-enter-active,.scale-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-leave-to{opacity:0}.scale-transition-leave-active{transition-duration:.1s!important}.scale-transition-enter-from{opacity:0;transform:scale(0)}.scale-transition-enter-active,.scale-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-leave-to{opacity:0}.scale-rotate-transition-leave-active{transition-duration:.1s!important}.scale-rotate-transition-enter-from{opacity:0;transform:scale(0) rotate(-45deg)}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-leave-to{opacity:0}.scale-rotate-reverse-transition-leave-active{transition-duration:.1s!important}.scale-rotate-reverse-transition-enter-from{opacity:0;transform:scale(0) rotate(45deg)}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-property:transform,opacity!important}.message-transition-enter-active,.message-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-enter-from,.message-transition-leave-to{opacity:0;transform:translateY(-15px)}.message-transition-leave-from,.message-transition-leave-active{position:absolute}.message-transition-enter-active,.message-transition-leave-active{transition-property:transform,opacity!important}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-enter-from,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-property:transform,opacity!important}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-enter-from,.slide-y-reverse-transition-leave-to{opacity:0;transform:translateY(15px)}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-enter-from,.scroll-y-transition-leave-to{opacity:0}.scroll-y-transition-enter-from{transform:translateY(-15px)}.scroll-y-transition-leave-to{transform:translateY(15px)}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-enter-from,.scroll-y-reverse-transition-leave-to{opacity:0}.scroll-y-reverse-transition-enter-from{transform:translateY(15px)}.scroll-y-reverse-transition-leave-to{transform:translateY(-15px)}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-enter-from,.scroll-x-transition-leave-to{opacity:0}.scroll-x-transition-enter-from{transform:translate(-15px)}.scroll-x-transition-leave-to{transform:translate(15px)}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-enter-from,.scroll-x-reverse-transition-leave-to{opacity:0}.scroll-x-reverse-transition-enter-from{transform:translate(15px)}.scroll-x-reverse-transition-leave-to{transform:translate(-15px)}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-enter-from,.slide-x-transition-leave-to{opacity:0;transform:translate(-15px)}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-property:transform,opacity!important}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-enter-from,.slide-x-reverse-transition-leave-to{opacity:0;transform:translate(15px)}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-enter-from,.fade-transition-leave-to{opacity:0!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-property:opacity!important}.fab-transition-enter-active,.fab-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-enter-from,.fab-transition-leave-to{transform:scale(0) rotate(-45deg)}.fab-transition-enter-active,.fab-transition-leave-active{transition-property:transform!important}.v-locale--is-rtl{direction:rtl}.v-locale--is-ltr{direction:ltr}.blockquote{padding:16px 0 16px 24px;font-size:18px;font-weight:300}html{font-family:Roboto,sans-serif;line-height:1.5;font-size:1rem;overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0)}html.overflow-y-hidden{overflow-y:hidden!important}:root{--v-theme-overlay-multiplier: 1;--v-scrollbar-offset: 0px}@supports (-webkit-touch-callout: none){body{cursor:pointer}}.page-fade-enter-active,.page-fade-leave-active{transition:opacity .2s ease}.page-fade-enter-from,.page-fade-leave-to{opacity:0}.navbar[data-v-65b4c8fe]{position:fixed;top:0;left:0;right:0;z-index:100;transition:background var(--transition-normal) var(--ease-out),border-color var(--transition-normal) var(--ease-out),box-shadow var(--transition-normal) var(--ease-out);border-bottom:1px solid transparent}.navbar.scrolled[data-v-65b4c8fe]{background:#fffffff5;border-bottom-color:var(--color-border)}@media (hover: hover){.navbar.scrolled[data-v-65b4c8fe]{background:#ffffffe0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}}.nav-inner[data-v-65b4c8fe]{display:flex;align-items:center;justify-content:space-between;max-width:var(--max-width-content);margin:0 auto;padding:1rem var(--spacing-xl)}.nav-brand[data-v-65b4c8fe]{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text);letter-spacing:-.01em;min-height:var(--min-touch-target);min-width:var(--min-touch-target);display:flex;align-items:center}.nav-brand[data-v-65b4c8fe]:hover{color:var(--color-text);opacity:.7}.nav-links[data-v-65b4c8fe]{display:flex;align-items:center;gap:.25rem}.nav-link[data-v-65b4c8fe]{padding:.375rem .75rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-md);transition:color var(--transition-fast) var(--ease-out),background var(--transition-fast) var(--ease-out);min-height:var(--min-touch-target);min-width:var(--min-touch-target);display:flex;align-items:center}.nav-link[data-v-65b4c8fe]:hover{color:var(--color-text);background:#0000000a}.nav-link.active[data-v-65b4c8fe]{color:var(--color-text);font-weight:var(--font-weight-semibold)}.nav-toggle[data-v-65b4c8fe]{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:var(--min-touch-target);height:var(--min-touch-target);background:transparent;border:none;cursor:pointer;border-radius:var(--radius-md);z-index:101}.bar[data-v-65b4c8fe]{width:22px;height:1.5px;background:var(--color-text);border-radius:2px;transition:all var(--transition-fast) var(--ease-out);display:block}.navbar.menu-open .bar[data-v-65b4c8fe]:nth-child(1){transform:rotate(45deg) translate(4.5px,4.5px)}.navbar.menu-open .bar[data-v-65b4c8fe]:nth-child(2){opacity:0}.navbar.menu-open .bar[data-v-65b4c8fe]:nth-child(3){transform:rotate(-45deg) translate(4.5px,-4.5px)}@media (max-width: 768px){.nav-inner[data-v-65b4c8fe]{padding:.75rem var(--spacing-md)}.nav-toggle[data-v-65b4c8fe]{display:flex}.nav-links[data-v-65b4c8fe]{position:fixed;top:0;right:0;bottom:0;left:0;flex-direction:column;justify-content:center;align-items:center;gap:var(--spacing-sm);background:#fff;opacity:0;visibility:hidden;transition:opacity var(--transition-normal) var(--ease-out),visibility var(--transition-normal) var(--ease-out);z-index:100}.nav-links.open[data-v-65b4c8fe]{opacity:1;visibility:visible}.nav-link[data-v-65b4c8fe]{font-size:var(--font-size-xl);padding:var(--spacing-sm) var(--spacing-xl);min-width:180px;justify-content:center}}.skip-link[data-v-d6f0b63c]{position:absolute;top:-100px;left:50%;transform:translate(-50%);background:var(--color-text);color:#fff;padding:.5rem 1.25rem;border-radius:var(--radius-md);font-size:var(--font-size-sm);z-index:9999;transition:top var(--transition-fast)}.skip-link[data-v-d6f0b63c]:focus{top:1rem}.hero[data-v-d6f0b63c]{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6rem var(--spacing-xl) 4rem;position:relative}.hero-layout[data-v-d6f0b63c]{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-3xl);align-items:center;width:100%;max-width:var(--max-width-content)}.hero-avatar-col[data-v-d6f0b63c]{display:flex;align-items:center;justify-content:center}.hero-avatar[data-v-d6f0b63c]{width:min(340px,100%);height:auto;aspect-ratio:1;object-fit:cover;display:block;transform-origin:center center;will-change:transform}@media (prefers-reduced-motion: reduce){.hero-avatar[data-v-d6f0b63c]{transform:none!important;will-change:auto}.hero-role[data-v-d6f0b63c]:after{animation:none;opacity:1}}.hero-text-col[data-v-d6f0b63c]{display:flex;flex-direction:column;align-items:flex-start}.hero-sub[data-v-d6f0b63c]{font-size:var(--font-size-sm);color:var(--color-text-muted);letter-spacing:.08em;margin-bottom:.5rem}.hero-name[data-v-d6f0b63c]{font-size:clamp(2rem,4vw,3.5rem);font-weight:var(--font-weight-extrabold);letter-spacing:-.025em;color:var(--color-text);line-height:1.1;margin-bottom:1.25rem}.hero-role[data-v-d6f0b63c]{font-size:clamp(.9rem,2vw,1.1rem);color:var(--color-text-secondary);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;margin-bottom:1rem}.hero-role[data-v-d6f0b63c]:before{content:"$ ";color:var(--color-text-muted)}.hero-role[data-v-d6f0b63c]:after{content:"|";color:var(--color-accent);animation:blink-d6f0b63c 1s step-end infinite}@keyframes blink-d6f0b63c{0%,to{opacity:1}50%{opacity:0}}.hero-tagline[data-v-d6f0b63c]{font-size:var(--font-size-md);color:var(--color-text-muted);margin-bottom:2.5rem;line-height:var(--line-height-relaxed)}.hero-actions[data-v-d6f0b63c]{display:flex;gap:.75rem;flex-wrap:wrap}.scroll-hint[data-v-d6f0b63c]{position:absolute;bottom:2.5rem;display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-full);cursor:pointer;opacity:.5;transition:opacity var(--transition-fast)}.scroll-hint[data-v-d6f0b63c]:hover{opacity:1}.scroll-arrow[data-v-d6f0b63c]{width:8px;height:8px;border-right:1.5px solid var(--color-text);border-bottom:1.5px solid var(--color-text);transform:rotate(45deg);margin-bottom:3px;animation:bounce-d6f0b63c 1.8s ease-in-out infinite}@keyframes bounce-d6f0b63c{0%,to{transform:rotate(45deg) translateY(0)}50%{transform:rotate(45deg) translateY(4px)}}.section[data-v-d6f0b63c]{padding:var(--spacing-3xl) 0;contain:layout style}.section-alt[data-v-d6f0b63c]{background:#00000005}.section-head[data-v-d6f0b63c]{margin-bottom:var(--spacing-2xl)}.section-label[data-v-d6f0b63c]{display:block;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.14em;color:var(--color-text-muted);margin-bottom:.375rem}.section-title[data-v-d6f0b63c]{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text);line-height:var(--line-height-tight)}.projects-list[data-v-d6f0b63c]{border-top:1px solid var(--color-border)}.project-row[data-v-d6f0b63c]{display:grid;grid-template-columns:2.5rem 1fr auto auto;gap:var(--spacing-xl);align-items:center;padding:var(--spacing-lg) 0;border-bottom:1px solid var(--color-border);transition:padding-left var(--transition-fast) var(--ease-out)}.project-row[data-v-d6f0b63c]:hover{padding-left:var(--spacing-sm)}.project-num[data-v-d6f0b63c]{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-text-muted);font-family:SFMono-Regular,Consolas,monospace;letter-spacing:.05em}.project-info[data-v-d6f0b63c]{min-width:0}.project-name[data-v-d6f0b63c]{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-desc[data-v-d6f0b63c]{font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-tags[data-v-d6f0b63c]{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end}.project-actions[data-v-d6f0b63c]{display:flex;gap:var(--spacing-md);align-items:center;flex-shrink:0}.project-action-link[data-v-d6f0b63c]{display:inline-flex;align-items:center;gap:5px;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);white-space:nowrap;transition:color var(--transition-fast)}.project-action-link[data-v-d6f0b63c]:hover{color:var(--color-text)}.project-action-primary[data-v-d6f0b63c]{color:var(--color-accent)}.project-action-primary[data-v-d6f0b63c]:hover{color:var(--color-accent-hover)}.projects-more[data-v-d6f0b63c]{margin-top:var(--spacing-lg);font-size:var(--font-size-sm);color:var(--color-text-muted)}.projects-more a[data-v-d6f0b63c]{font-weight:var(--font-weight-medium)}.skills-grid[data-v-d6f0b63c]{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-xl) var(--spacing-2xl)}.skill-group-label[data-v-d6f0b63c]{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.skill-tags[data-v-d6f0b63c]{display:flex;flex-wrap:wrap;gap:6px}.exp-tabs[data-v-d6f0b63c]{position:relative;display:flex;gap:.25rem;margin-bottom:var(--spacing-xl);border-bottom:1px solid var(--color-border)}.exp-tab[data-v-d6f0b63c]{padding:.5rem 1rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);background:transparent;border:none;cursor:pointer;margin-bottom:-1px;transition:color var(--transition-normal) var(--ease-out);font-family:inherit}.exp-tab[data-v-d6f0b63c]:hover,.exp-tab.active[data-v-d6f0b63c]{color:var(--color-text)}.tab-indicator[data-v-d6f0b63c]{position:absolute;bottom:-1px;height:2px;background:var(--color-text);border-radius:1px;transition:left .22s var(--ease-out),width .22s var(--ease-out);pointer-events:none}.contact-intro[data-v-d6f0b63c]{font-size:var(--font-size-md);color:var(--color-text-secondary);margin-bottom:var(--spacing-xl)}.contact-list[data-v-d6f0b63c]{display:flex;flex-direction:column;border-top:1px solid var(--color-border)}.contact-item[data-v-d6f0b63c]{display:flex;align-items:center;gap:var(--spacing-lg);padding:var(--spacing-md) 0;border-bottom:1px solid var(--color-border);text-decoration:none;color:var(--color-text);transition:background var(--transition-fast),padding-left var(--transition-fast)}.contact-item[data-v-d6f0b63c]:hover{padding-left:var(--spacing-sm)}.contact-label[data-v-d6f0b63c]{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-secondary);min-width:80px}.contact-value[data-v-d6f0b63c]{font-size:var(--font-size-sm);color:var(--color-text);flex:1}.contact-arrow[data-v-d6f0b63c]{color:var(--color-text-secondary);font-size:var(--font-size-sm);transition:transform var(--transition-fast)}.contact-item:hover .contact-arrow[data-v-d6f0b63c]{transform:translate(4px);color:var(--color-text)}.site-footer[data-v-d6f0b63c]{padding:var(--spacing-xl) 0;border-top:1px solid var(--color-border)}.site-footer p[data-v-d6f0b63c]{font-size:var(--font-size-xs);color:var(--color-text-muted);text-align:center}.site-footer a[data-v-d6f0b63c]{color:var(--color-text-muted);text-decoration:underline}.tab-slide-enter-active[data-v-d6f0b63c],.tab-slide-leave-active[data-v-d6f0b63c]{transition:opacity .18s var(--ease-out),transform .18s var(--ease-out)}.tab-slide-enter-from[data-v-d6f0b63c]{opacity:0;transform:translateY(8px)}.tab-slide-leave-to[data-v-d6f0b63c]{opacity:0;transform:translateY(-4px)}.timeline[data-v-d6f0b63c]{display:flex;flex-direction:column}.timeline-item[data-v-d6f0b63c]{display:grid;grid-template-columns:20px 1fr;gap:0 var(--spacing-lg)}.timeline-track[data-v-d6f0b63c]{display:flex;flex-direction:column;align-items:center;padding-top:6px}.timeline-dot[data-v-d6f0b63c]{width:8px;height:8px;border-radius:50%;background:var(--color-text);flex-shrink:0;box-shadow:0 0 0 2px var(--color-bg),0 0 0 3px var(--color-border-strong)}.timeline-line[data-v-d6f0b63c]{width:1px;flex:1;background:var(--color-border);margin:4px 0;min-height:24px}.timeline-item:last-child .timeline-line[data-v-d6f0b63c]{display:none}.timeline-body[data-v-d6f0b63c]{padding-bottom:var(--spacing-xl)}.timeline-meta[data-v-d6f0b63c]{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:.25rem;display:flex;gap:.375rem}.timeline-title[data-v-d6f0b63c]{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:.15rem}.timeline-org[data-v-d6f0b63c]{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.back-to-top[data-v-d6f0b63c]{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:40px;height:40px;background:var(--color-text);color:#fff;border:none;border-radius:var(--radius-full);cursor:pointer;font-size:var(--font-size-md);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity var(--transition-normal),visibility var(--transition-normal),transform var(--transition-normal);z-index:50}.back-to-top.visible[data-v-d6f0b63c]{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top[data-v-d6f0b63c]:hover{background:#333}@media (max-width: 1024px){.projects-grid[data-v-d6f0b63c]{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.hero[data-v-d6f0b63c]{padding:5rem var(--spacing-md) 3rem}.hero-layout[data-v-d6f0b63c]{grid-template-columns:1fr;gap:var(--spacing-xl);text-align:center}.hero-text-col[data-v-d6f0b63c]{align-items:center}.hero-avatar[data-v-d6f0b63c]{width:min(200px,60vw)}.section[data-v-d6f0b63c]{padding:var(--spacing-2xl) 0}.project-row[data-v-d6f0b63c]{grid-template-columns:2rem 1fr;grid-template-rows:auto auto;row-gap:var(--spacing-sm)}.project-tags[data-v-d6f0b63c]{grid-column:2;justify-content:flex-start}.project-actions[data-v-d6f0b63c]{grid-column:2}.skills-grid[data-v-d6f0b63c]{grid-template-columns:1fr}.contact-label[data-v-d6f0b63c]{min-width:60px}.contact-value[data-v-d6f0b63c]{font-size:var(--font-size-xs)}.back-to-top[data-v-d6f0b63c]{bottom:var(--spacing-lg);right:var(--spacing-lg)}}@media (max-width: 480px){.hero-actions[data-v-d6f0b63c]{flex-direction:column;align-items:stretch;width:100%;max-width:240px}.btn[data-v-d6f0b63c]{justify-content:center}.scroll-hint[data-v-d6f0b63c]{display:none}}@media (hover: none) and (pointer: coarse){.project-row[data-v-d6f0b63c]:hover,.contact-item[data-v-d6f0b63c]:hover{padding-left:0}.contact-item:hover .contact-arrow[data-v-d6f0b63c]{transform:none}}@font-face{font-family:Inter fallback;src:local("Arial");ascent-override:90%;descent-override:22%;line-gap-override:0%;size-adjust:107%}:root{--grid-line: rgba(0, 0, 0, .055);--grid-size: 28px;--color-bg: #ffffff;--color-text: #111111;--color-text-secondary: #555555;--color-text-muted: #999999;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-border: rgba(0, 0, 0, .1);--color-border-strong: rgba(0, 0, 0, .2);--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--spacing-3xl: 5rem;--spacing-4xl: 7rem;--radius-sm: 3px;--radius-md: 6px;--radius-lg: 10px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .1);--font-size-xs: .72rem;--font-size-sm: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--font-size-3xl: 2.5rem;--font-size-4xl: 3.5rem;--line-height-tight: 1.2;--line-height-normal: 1.5;--line-height-relaxed: 1.7;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--transition-fast: .15s;--transition-normal: .25s;--ease-out: cubic-bezier(.25, .46, .45, .94);--min-touch-target: 44px;--max-width-content: 1080px;--color-bg-alt: rgba(0, 0, 0, .018)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html{scroll-behavior:smooth;font-size:16px;overscroll-behavior-y:none}@media (hover: none) and (pointer: coarse){.btn:hover,a:hover{transform:none!important}}body{font-family:Inter,Inter fallback,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--color-bg);color:var(--color-text);line-height:var(--line-height-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden}#app{min-height:100vh}.grid-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-color:#fff;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);pointer-events:none}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#00000026;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#0000004d}::selection{background:#2563eb26;color:var(--color-text)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast) var(--ease-out)}a:hover{color:var(--color-accent-hover)}.container{width:100%;max-width:var(--max-width-content);margin:0 auto;padding:0 var(--spacing-xl)}@media (max-width: 768px){.container{padding:0 var(--spacing-md)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:.6rem var(--spacing-lg);min-height:var(--min-touch-target);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);border:1px solid var(--color-border-strong);cursor:pointer;transition:all var(--transition-fast) var(--ease-out);text-decoration:none;background:transparent;color:var(--color-text);font-family:inherit}.btn:hover{background:var(--color-text);border-color:var(--color-text);color:#fff}.btn-primary{background:var(--color-text);color:#fff;border-color:var(--color-text)}.btn-primary:hover{background:#333;border-color:#333;color:#fff}.tag{display:inline-block;padding:2px 8px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text);background:#fff9;letter-spacing:.01em}md-icon,.material-icons{font-family:Material Icons;font-size:18px;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;color:inherit;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;overflow:visible}
