.layout[data-v-884f18c5]{min-height:100vh;display:flex;flex-direction:column;padding-top:88px;background:var(--bg-app);color:var(--text)}.skip-link[data-v-884f18c5]{position:fixed;top:12px;left:12px;z-index:2000;padding:.7rem 1rem;border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--text-strong);font-weight:700;text-decoration:none;transform:translateY(-140%);transition:transform .2s ease}.skip-link[data-v-884f18c5]:focus{transform:translateY(0)}.header[data-v-884f18c5]{position:fixed;inset:0 0 auto;z-index:1200;padding:1rem;transition:padding .25s ease,background-color .25s ease}.header.scrolled[data-v-884f18c5]{padding-top:.55rem;background:var(--nav-scrim);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.nav[data-v-884f18c5]{width:min(1120px,100%);min-height:64px;margin:0 auto;display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem .8rem .55rem .65rem;border:1px solid var(--nav-border);border-radius:12px;background:var(--nav-bg);box-shadow:0 14px 34px #00000057}.logo[data-v-884f18c5]{flex:0 1 auto;min-width:0;display:inline-flex;align-items:center;gap:.75rem;color:var(--nav-text);text-decoration:none}.logo-icon[data-v-884f18c5]{flex:0 0 auto;border-radius:50%;background:#fff;object-fit:contain;box-shadow:0 6px 16px #00000047;transition:transform .3s cubic-bezier(.22,.61,.36,1)}.logo:hover .logo-icon[data-v-884f18c5],.logo:focus-visible .logo-icon[data-v-884f18c5]{transform:translateY(-1px) scale(1.05) rotate(-2deg)}.logo-copy[data-v-884f18c5]{min-width:0;display:grid;line-height:1.1}.logo-copy strong[data-v-884f18c5]{min-width:0;color:var(--nav-text);font-family:var(--font-mono);font-size:.86rem;font-weight:600;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logo-copy small[data-v-884f18c5]{min-width:0;color:var(--nav-accent);font-family:var(--font-mono);font-size:.64rem;font-weight:500;letter-spacing:0;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-toggle[data-v-884f18c5]{display:none;width:42px;height:42px;border:1px solid var(--nav-border);border-radius:var(--radius-sm);background:#f4faf414;color:var(--nav-text);transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.nav-toggle[data-v-884f18c5]:hover,.nav-toggle[data-v-884f18c5]:focus-visible{background:#a3d89b29;border-color:#a3d89b80}.nav-toggle[data-v-884f18c5]:active{transform:scale(.94)}.nav-actions[data-v-884f18c5]{display:flex;align-items:center;gap:.5rem}.theme-toggle[data-v-884f18c5]{flex:0 0 auto;width:42px;height:42px;display:inline-grid;place-items:center;border:1px solid var(--nav-border);border-radius:var(--radius-sm);background:#f4faf414;color:var(--nav-text);cursor:pointer;transition:background-color .3s ease,border-color .3s ease,color .3s ease,transform .3s var(--ease-out)}.theme-toggle[data-v-884f18c5]:hover,.theme-toggle[data-v-884f18c5]:focus-visible{background:#a3d89b2e;border-color:#a3d89b8c;color:var(--nav-accent);transform:translateY(-2px)}.theme-toggle[data-v-884f18c5]:active{transform:scale(.94)}.theme-toggle-icons[data-v-884f18c5]{position:relative;width:18px;height:18px;display:grid;place-items:center}.theme-toggle-icons i[data-v-884f18c5]{position:absolute;font-size:.95rem;transition:opacity .35s ease,transform .5s var(--ease-out)}.theme-toggle-icons .fa-sun[data-v-884f18c5]{opacity:1;transform:rotate(0) scale(1)}.theme-toggle-icons .fa-moon[data-v-884f18c5]{opacity:0;transform:rotate(-80deg) scale(.5)}.theme-toggle.is-dark .theme-toggle-icons .fa-sun[data-v-884f18c5]{opacity:0;transform:rotate(80deg) scale(.5)}.theme-toggle.is-dark .theme-toggle-icons .fa-moon[data-v-884f18c5]{opacity:1;transform:rotate(0) scale(1)}.nav-items[data-v-884f18c5]{flex:1 1 auto;display:flex;align-items:center;justify-content:flex-end;gap:.35rem;margin:0;padding:0;list-style:none}.nav-items a[data-v-884f18c5]{position:relative;display:inline-flex;align-items:center;min-height:40px;padding:0 .75rem;border-radius:var(--radius-sm);color:var(--nav-text);font-size:.86rem;font-weight:600;text-decoration:none;transition:background-color .25s ease,color .25s ease,transform .25s ease}.nav-items a[data-v-884f18c5]:after{content:"";position:absolute;left:.75rem;right:.75rem;bottom:6px;height:2px;border-radius:2px;background:var(--nav-accent);transform:scaleX(0);transform-origin:center;transition:transform .3s cubic-bezier(.22,.61,.36,1)}.nav-items a[data-v-884f18c5]:hover,.nav-items a[data-v-884f18c5]:focus,.nav-items a.router-link-exact-active[data-v-884f18c5]{background:#a3d89b1f;color:var(--nav-accent)}.nav-items a[data-v-884f18c5]:hover:after,.nav-items a.router-link-exact-active[data-v-884f18c5]:after{transform:scaleX(1)}.main-content[data-v-884f18c5]{flex:1;width:min(1180px,100% - 2rem);margin:0 auto 2rem;border:1px solid var(--shell-border);border-radius:var(--radius-lg);background:var(--shell);box-shadow:var(--shadow-lg);overflow:hidden}.footer[data-v-884f18c5]{position:relative;width:min(1180px,100% - 2rem);margin:0 auto 1.25rem;padding:1.65rem 1.6rem 1.05rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--surface) 0%,var(--surface-sunken) 100%);color:var(--text-strong);box-shadow:var(--shadow-lg);overflow:hidden}.footer-accent[data-v-884f18c5]{position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--accent-strong),var(--accent) 35%,var(--nav-accent) 70%,rgba(163,216,155,0))}.footer-container[data-v-884f18c5]{display:grid;grid-template-columns:minmax(0,1.9fr) repeat(3,minmax(0,1fr));gap:1.6rem}.footer-brand[data-v-884f18c5]{display:grid;align-content:start;gap:.7rem;min-width:0}.footer-identity[data-v-884f18c5]{display:flex;align-items:center;gap:.75rem;min-width:0}.footer-identity img[data-v-884f18c5]{flex:0 0 auto;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .3s var(--ease-out)}.footer-identity:hover img[data-v-884f18c5]{transform:scale(1.04)}.footer-identity div[data-v-884f18c5]{display:grid;align-content:center;gap:.18rem;min-width:0}.footer-identity strong[data-v-884f18c5]{min-width:0;color:var(--text-strong);font-family:var(--font-mono);font-size:.82rem;font-weight:600;letter-spacing:0;line-height:1.25;overflow-wrap:anywhere}.footer-identity span[data-v-884f18c5]{color:var(--accent-soft);font-family:var(--font-mono);font-size:.63rem;font-weight:500;letter-spacing:0;line-height:1.35;text-transform:uppercase}.footer-tagline[data-v-884f18c5]{max-width:44ch;margin:0;color:var(--text);font-size:.86rem;line-height:1.6}.footer-mail[data-v-884f18c5]{width:fit-content;color:var(--accent);font-weight:600;text-decoration:none;overflow-wrap:anywhere;transition:color .2s ease}.footer-mail[data-v-884f18c5]:hover,.footer-mail[data-v-884f18c5]:focus-visible{color:var(--text-strong);text-decoration:underline}.footer-links[data-v-884f18c5],.footer-social[data-v-884f18c5]{display:grid;align-content:start;gap:.5rem;min-width:0}.footer-links h2[data-v-884f18c5],.footer-social h2[data-v-884f18c5]{margin:0 0 .35rem;color:var(--accent-soft);font-family:var(--font-mono);font-size:.68rem;font-weight:600;letter-spacing:0;text-transform:uppercase}.footer-links a[data-v-884f18c5],.footer-social a[data-v-884f18c5]{width:fit-content;color:var(--text-strong);font-size:.84rem;font-weight:500;text-decoration:none;transition:color .2s ease,transform .25s cubic-bezier(.22,.61,.36,1)}.footer-links a[data-v-884f18c5]:hover,.footer-links a[data-v-884f18c5]:focus-visible,.footer-social a[data-v-884f18c5]:hover,.footer-social a[data-v-884f18c5]:focus-visible{color:var(--accent);transform:translate(3px)}.social-links[data-v-884f18c5]{display:flex;flex-wrap:wrap;gap:.5rem}.social-links a[data-v-884f18c5]{width:38px;height:38px;display:inline-grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--accent);font-size:1rem;transition:transform .25s cubic-bezier(.22,.61,.36,1),background-color .25s ease,color .25s ease,border-color .25s ease}.social-links a[data-v-884f18c5]:hover,.social-links a[data-v-884f18c5]:focus-visible{transform:translateY(-3px);border-color:var(--accent);background:var(--accent);color:var(--accent-contrast)}.footer-bottom[data-v-884f18c5]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-top:1.5rem;padding-top:.95rem;border-top:1px solid var(--border);color:var(--text-soft);font-size:.78rem}.to-top[data-v-884f18c5]{display:inline-flex;align-items:center;gap:.45rem;padding:.4rem .8rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface);color:var(--text-strong);font-family:var(--font-mono);font-size:.66rem;font-weight:500;letter-spacing:0;text-transform:uppercase;cursor:pointer;transition:transform .25s cubic-bezier(.22,.61,.36,1),border-color .25s ease,color .25s ease}.to-top i[data-v-884f18c5]{font-size:.7rem}.to-top[data-v-884f18c5]:hover,.to-top[data-v-884f18c5]:focus-visible{transform:translateY(-2px);border-color:var(--accent);color:var(--accent)}@media (max-width: 1100px){.nav-items a[data-v-884f18c5]{padding:0 .5rem;font-size:.85rem}.nav-items a[data-v-884f18c5]:after{left:.5rem;right:.5rem}}@media (max-width: 920px){.layout[data-v-884f18c5]{padding-top:82px}.nav[data-v-884f18c5]{position:relative}.nav-toggle[data-v-884f18c5]{display:inline-grid;place-items:center;flex:0 0 auto}.nav-items[data-v-884f18c5]{position:absolute;top:calc(100% + 10px);left:0;right:0;display:grid;justify-content:stretch;justify-items:center;gap:.35rem;padding:.65rem;border:1px solid var(--nav-border);border-radius:12px;background:var(--nav-panel);box-shadow:0 20px 40px #00000057;transform-origin:top;transform:scaleY(.96);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s}.nav-items.open[data-v-884f18c5]{transform:scaleY(1);opacity:1;visibility:visible;pointer-events:auto;transition:opacity .2s ease,transform .2s ease,visibility 0s}.nav-items li[data-v-884f18c5]{width:100%;opacity:0;transform:translateY(-6px);transition:opacity .25s ease,transform .25s cubic-bezier(.22,.61,.36,1);transition-delay:calc(var(--item-index, 0) * 25ms)}.nav-items.open li[data-v-884f18c5]{opacity:1;transform:none}.nav-items a[data-v-884f18c5]{justify-content:center;width:100%;min-height:44px;text-align:center}.nav-items a[data-v-884f18c5]:after{display:none}.footer-container[data-v-884f18c5]{grid-template-columns:repeat(2,minmax(0,1fr));justify-items:center;text-align:center}.footer-brand[data-v-884f18c5]{grid-column:1/-1;justify-items:center;text-align:center}.footer-identity[data-v-884f18c5]{justify-content:center;text-align:center}.footer-tagline[data-v-884f18c5]{margin-inline:auto}.footer-mail[data-v-884f18c5]{justify-content:center;width:100%}.footer-links[data-v-884f18c5],.footer-social[data-v-884f18c5]{justify-items:center;text-align:center}.social-links[data-v-884f18c5]{justify-content:center}.footer-bottom[data-v-884f18c5]{justify-content:center;text-align:center}.to-top[data-v-884f18c5]{justify-content:center}}@media (max-width: 640px){.header[data-v-884f18c5]{padding-inline:.75rem}.nav[data-v-884f18c5]{min-height:58px;border-radius:12px}.logo-copy strong[data-v-884f18c5]{font-size:.76rem;max-width:100%}.logo-copy small[data-v-884f18c5]{display:none}.main-content[data-v-884f18c5],.footer[data-v-884f18c5]{width:min(100% - 1rem,1180px);border-radius:12px}.footer[data-v-884f18c5]{padding:1.2rem}.footer-container[data-v-884f18c5]{grid-template-columns:1fr;gap:1.3rem}}.certifications[data-v-aa556eda]{display:grid;gap:.9rem;align-content:start;padding:1.15rem 1.2rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,border-color .3s ease}.certifications[data-v-aa556eda]:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.certifications-head[data-v-aa556eda]{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem}.certifications-logo[data-v-aa556eda]{width:44px;height:44px;display:inline-grid;place-items:center;padding:.25rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--logo-plate)}.certifications-logo img[data-v-aa556eda]{width:100%;height:100%;object-fit:contain;filter:grayscale(1) contrast(.95);opacity:.72;transition:filter .35s ease,opacity .35s ease,transform .35s cubic-bezier(.22,.61,.36,1)}.certifications:hover .certifications-logo img[data-v-aa556eda],.certifications:focus-within .certifications-logo img[data-v-aa556eda]{filter:none;opacity:1;transform:scale(1.06)}.certifications-titles[data-v-aa556eda]{min-width:0;display:grid;gap:.15rem}.certifications-titles h3[data-v-aa556eda]{margin:0;color:var(--text-strong);font-size:1rem;font-weight:700;line-height:1.25}.certifications-link[data-v-aa556eda]{width:fit-content;display:inline-flex;align-items:center;gap:.35rem;color:var(--accent);font-size:.8rem;font-weight:600;text-decoration:none;transition:color .2s ease}.certifications-link i[data-v-aa556eda]{font-size:.66rem;transition:transform .25s cubic-bezier(.22,.61,.36,1)}.certifications-link[data-v-aa556eda]:hover,.certifications-link[data-v-aa556eda]:focus-visible{color:var(--text-strong);text-decoration:underline}.certifications-link:hover i[data-v-aa556eda],.certifications-link:focus-visible i[data-v-aa556eda]{transform:translate(2px,-2px)}.certifications-count[data-v-aa556eda]{padding:.24rem .55rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-alt);color:var(--accent-soft);font-family:var(--font-mono);font-size:.66rem;font-weight:600;letter-spacing:0;white-space:nowrap}.certifications-list[data-v-aa556eda]{display:grid;gap:.45rem;margin:0;padding:0;list-style:none}.certifications-list li[data-v-aa556eda]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:start;color:var(--text);font-size:.87rem;line-height:1.45;transition:color .25s ease,transform .25s var(--ease-out)}.certifications-list li[data-v-aa556eda]:hover{color:var(--text-strong);transform:translate(3px)}.certifications-list i[data-v-aa556eda]{margin-top:.22rem;color:var(--accent);font-size:.78rem}@media (max-width: 520px){.certifications-head[data-v-aa556eda]{grid-template-columns:auto minmax(0,1fr)}.certifications-count[data-v-aa556eda]{grid-column:1/-1;justify-self:start}}.timeline[data-v-e244eddf]{display:grid;gap:.85rem;margin:0;padding:0;list-style:none}.timeline-item[data-v-e244eddf]{position:relative;display:grid;grid-template-columns:24px minmax(0,1fr);align-items:start}.timeline-item[data-v-e244eddf]:before{content:"";position:absolute;top:1.9rem;bottom:-.85rem;left:5px;width:2px;background:var(--border)}.timeline-item[data-v-e244eddf]:last-child:before{display:none}.timeline-marker[data-v-e244eddf]{width:12px;height:12px;margin-top:1.05rem;border:3px solid var(--accent);border-radius:50%;background:var(--surface);box-shadow:0 0 0 4px var(--accent-tint)}.timeline-card[data-v-e244eddf]{display:grid;gap:.45rem;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,border-color .3s ease}.timeline-card[data-v-e244eddf]:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.timeline-top[data-v-e244eddf]{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem}.timeline-logo[data-v-e244eddf]{width:42px;height:42px;display:inline-grid;place-items:center;padding:.3rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--logo-bg)}.timeline-logo img[data-v-e244eddf]{width:100%;height:100%;object-fit:contain;filter:grayscale(1) contrast(.95);opacity:.72;transition:filter .35s ease,opacity .35s ease,transform .35s cubic-bezier(.22,.61,.36,1)}.timeline-card:hover .timeline-logo img[data-v-e244eddf],.timeline-card:focus-within .timeline-logo img[data-v-e244eddf]{filter:none;opacity:1;transform:scale(1.06)}.timeline-titles[data-v-e244eddf]{min-width:0;display:grid;gap:.1rem}.timeline-titles h3[data-v-e244eddf]{margin:0;color:var(--text-strong);font-size:1rem;font-weight:800;line-height:1.25}.timeline-company[data-v-e244eddf]{margin:0;color:var(--text-strong);font-size:.85rem;font-weight:600}.timeline-company.is-link[data-v-e244eddf]{width:fit-content;display:inline-flex;align-items:center;gap:.35rem;color:var(--accent);text-decoration:none;transition:color .2s ease}.timeline-company.is-link i[data-v-e244eddf]{font-size:.68rem;transition:transform .25s cubic-bezier(.22,.61,.36,1)}.timeline-company.is-link[data-v-e244eddf]:hover,.timeline-company.is-link[data-v-e244eddf]:focus-visible{color:var(--text-strong);text-decoration:underline}.timeline-company.is-link:hover i[data-v-e244eddf],.timeline-company.is-link:focus-visible i[data-v-e244eddf]{transform:translate(2px,-2px)}.timeline-period[data-v-e244eddf]{align-self:start;margin-top:.15rem;color:var(--accent);font-family:var(--font-mono);font-size:.68rem;font-weight:600;letter-spacing:0;text-transform:uppercase;white-space:nowrap}.timeline-summary[data-v-e244eddf]{margin:0;color:var(--text);font-size:.89rem;line-height:1.55}.timeline-tags[data-v-e244eddf]{display:flex;flex-wrap:wrap;gap:.35rem;margin:.1rem 0 0;padding:0;list-style:none}.timeline-tags li[data-v-e244eddf]{padding:.2rem .5rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-alt);color:var(--text);font-family:var(--font-mono);font-size:.68rem;font-weight:500}@media (max-width: 560px){.timeline-top[data-v-e244eddf]{grid-template-columns:auto minmax(0,1fr)}.timeline-period[data-v-e244eddf]{grid-column:1/-1;margin-top:0}}.project-card[data-v-0e9adf32]{--accent: #5e7d3a;position:relative;display:grid;gap:.7rem;align-content:start;padding:1.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,border-color .3s ease}.project-card[data-v-0e9adf32]:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--accent),rgba(94,125,58,0));transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.22,.61,.36,1)}.project-card[data-v-0e9adf32]:hover,.project-card[data-v-0e9adf32]:focus-within{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.project-card[data-v-0e9adf32]:hover:before,.project-card[data-v-0e9adf32]:focus-within:before{transform:scaleX(1)}.project-head[data-v-0e9adf32]{display:flex;align-items:center;gap:.8rem}.project-head h3[data-v-0e9adf32]{margin:0 0 .15rem;color:var(--text-strong);font-size:1.12rem;font-weight:800;line-height:1.2}.project-name[data-v-0e9adf32]{color:inherit;text-decoration:none;transition:color .2s ease}.project-name[data-v-0e9adf32]:hover,.project-name[data-v-0e9adf32]:focus-visible{color:var(--accent);text-decoration:underline}.project-icon[data-v-0e9adf32]{flex:0 0 auto;width:52px;height:52px;display:inline-grid;place-items:center;padding:.35rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--logo-bg);color:var(--accent);font-size:1.1rem;transition:transform .3s cubic-bezier(.22,.61,.36,1),border-color .3s ease}.project-icon img[data-v-0e9adf32]{width:100%;height:100%;object-fit:contain;transition:transform .35s var(--ease-out)}.project-card:hover .project-icon[data-v-0e9adf32],.project-card:focus-within .project-icon[data-v-0e9adf32]{border-color:var(--accent);transform:translateY(-2px) scale(1.04)}.project-card:hover .project-icon img[data-v-0e9adf32],.project-card:focus-within .project-icon img[data-v-0e9adf32]{transform:scale(1.07)}.project-role[data-v-0e9adf32]{margin:0;color:var(--accent);font-family:var(--font-mono);font-size:.7rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.project-tagline[data-v-0e9adf32]{margin:0;color:var(--text-strong);font-size:.95rem;font-weight:800}.project-description[data-v-0e9adf32]{margin:0;color:var(--text);font-size:.92rem;line-height:1.6}.project-highlights[data-v-0e9adf32]{display:grid;gap:.4rem;margin:0;padding:0;list-style:none}.project-highlights li[data-v-0e9adf32]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;color:var(--text);font-size:.87rem;line-height:1.45}.project-highlights i[data-v-0e9adf32]{margin-top:.2rem;color:var(--accent);font-size:.72rem}.project-link[data-v-0e9adf32]{width:fit-content;display:inline-flex;align-items:center;gap:.45rem;color:var(--text-strong);font-size:.83rem;font-weight:600;text-decoration:none;transition:color .2s ease}.project-link i[data-v-0e9adf32]{font-size:.78rem;transition:transform .25s cubic-bezier(.22,.61,.36,1)}.project-link[data-v-0e9adf32]:hover,.project-link[data-v-0e9adf32]:focus{color:var(--accent)}.project-link:hover i[data-v-0e9adf32],.project-link:focus i[data-v-0e9adf32]{transform:translate(2px,-2px)}.tech-carousel[data-v-03d78fb2]{display:grid;gap:.75rem}.carousel-toolbar[data-v-03d78fb2]{display:flex;align-items:center;justify-content:space-between;gap:1rem}.carousel-status[data-v-03d78fb2]{color:var(--accent-soft);font-size:.85rem;font-weight:800}.carousel-actions[data-v-03d78fb2]{display:flex;gap:.5rem}.carousel-actions button[data-v-03d78fb2]{width:36px;height:36px;display:inline-grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface);color:var(--text-strong);cursor:pointer;transition:border-color .2s ease,color .2s ease,transform .2s ease,opacity .2s ease}.carousel-actions button[data-v-03d78fb2]:hover:not(:disabled),.carousel-actions button[data-v-03d78fb2]:focus-visible:not(:disabled){border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.carousel-actions button[data-v-03d78fb2]:disabled{opacity:.4;cursor:default}.tech-track[data-v-03d78fb2]{--per-view: 7;--track-gap: .62rem;display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - var(--track-gap) * (var(--per-view) - 1)) / var(--per-view));gap:var(--track-gap);margin:0;padding:.35rem 0;list-style:none;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;scrollbar-width:none;-ms-overflow-style:none}.tech-track[data-v-03d78fb2]::-webkit-scrollbar{display:none}.tech-item[data-v-03d78fb2]{min-height:90px;display:grid;place-items:center;gap:.45rem;padding:.75rem .62rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface);color:var(--text-strong);text-align:center;font-size:.83rem;font-weight:600;scroll-snap-align:start;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.tech-item img[data-v-03d78fb2]{width:32px;height:32px;object-fit:contain;transition:filter .35s ease,opacity .35s ease,transform .35s var(--ease-out)}.tech-item span[data-v-03d78fb2]{max-width:100%;overflow-wrap:anywhere}.tech-item[data-v-03d78fb2]:hover,.tech-item[data-v-03d78fb2]:focus-visible{border-color:var(--accent);box-shadow:0 10px 24px var(--accent-tint);transform:translateY(-2px)}.carousel-dots[data-v-03d78fb2]{display:flex;justify-content:center;gap:.45rem}.carousel-dots button[data-v-03d78fb2]{width:10px;height:10px;padding:0;border:0;border-radius:999px;background:var(--border);cursor:pointer;transition:width .2s ease,background-color .2s ease}.carousel-dots button[data-v-03d78fb2]:hover{background:var(--accent-soft);transform:scale(1.15)}.carousel-dots button.active[data-v-03d78fb2]{width:28px;background:var(--accent);transform:none}:root[data-theme=dark] .tech-item img.invert-on-dark[data-v-03d78fb2]{filter:brightness(0) invert(1);opacity:.92}:root[data-theme=dark] .tech-item:hover img.invert-on-dark[data-v-03d78fb2],:root[data-theme=dark] .tech-item:focus-visible img.invert-on-dark[data-v-03d78fb2]{opacity:1}.tech-item:hover img[data-v-03d78fb2],.tech-item:focus-visible img[data-v-03d78fb2]{transform:scale(1.06)}@media (max-width: 1200px){.tech-track[data-v-03d78fb2]{--per-view: 6}}@media (max-width: 1040px){.tech-track[data-v-03d78fb2]{--per-view: 5}}@media (max-width: 820px){.tech-track[data-v-03d78fb2]{--per-view: 3}}@media (max-width: 620px){.tech-track[data-v-03d78fb2]{--per-view: 2}}@media (prefers-reduced-motion: reduce){.tech-track[data-v-03d78fb2]{scroll-behavior:auto}}.portfolio-page[data-v-86eebbff]{color:var(--text);border-radius:inherit;overflow:hidden}.hero[data-v-86eebbff]{--hero-pad: 2rem;position:relative;display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.1fr);gap:2rem;align-items:stretch;padding:var(--hero-pad);background:var(--surface-alt);overflow:hidden}.hero-media[data-v-86eebbff]{position:relative;min-height:380px;display:grid;place-items:center}.banner-image[data-v-86eebbff]{width:min(100%,390px);height:auto;display:block;border-radius:10px;object-fit:contain;filter:drop-shadow(0 18px 30px rgba(39,50,56,.16));transition:transform .55s var(--ease-out),filter .55s ease}.avatar-image[data-v-86eebbff]{--avatar-size: 250px;position:absolute;right:-1.25rem;bottom:calc(var(--hero-pad) * -1);width:auto;height:var(--avatar-size);border:0;border-radius:0;background:transparent;object-fit:contain;object-position:bottom center;filter:drop-shadow(0 14px 22px rgba(39,50,56,.22));-webkit-mask-image:linear-gradient(to bottom,#000 84%,rgba(0,0,0,0) 100%);mask-image:linear-gradient(to bottom,#000 84%,#0000);transition:transform .55s var(--ease-out),filter .55s ease}.hero-media:hover .banner-image[data-v-86eebbff]{transform:scale(1.025);filter:drop-shadow(0 20px 34px rgba(39,50,56,.2))}.hero-media:hover .avatar-image[data-v-86eebbff]{transform:translateY(-3px) scale(1.02)}.hero-copy[data-v-86eebbff]{display:grid;gap:1rem;align-content:center}.eyebrow[data-v-86eebbff],.section-kicker[data-v-86eebbff]{display:inline-flex;align-items:center;gap:.45rem;margin:0;color:var(--accent);font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:0;text-transform:uppercase}.eyebrow i[data-v-86eebbff],.section-kicker i[data-v-86eebbff]{font-size:.78rem}h1[data-v-86eebbff],h2[data-v-86eebbff],h3[data-v-86eebbff],p[data-v-86eebbff]{margin-top:0}h1[data-v-86eebbff]{margin-bottom:0;color:var(--text-strong);font-size:clamp(1.68rem,1.12rem + 1.95vw,2.18rem);line-height:1.08;font-weight:800}h2[data-v-86eebbff]{color:var(--text-strong);font-size:clamp(1.2rem,1.02rem + .72vw,1.48rem);line-height:1.2;font-weight:800}h3[data-v-86eebbff]{color:var(--text-strong);font-size:1rem;line-height:1.25;font-weight:800}.intro-text[data-v-86eebbff],.section-heading p[data-v-86eebbff],.about-copy p[data-v-86eebbff],.focus-card p[data-v-86eebbff],.summary-section p[data-v-86eebbff]{color:var(--text);font-size:.95rem;line-height:1.65}.intro-text[data-v-86eebbff]{max-width:680px;margin-bottom:0}.hero-actions[data-v-86eebbff]{display:flex;flex-wrap:wrap;gap:.75rem}.primary-action[data-v-86eebbff],.secondary-action[data-v-86eebbff],.inline-link[data-v-86eebbff]{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-size:.87rem;font-weight:600;text-decoration:none;transition:transform .2s ease,background-color .2s ease,color .2s ease,border-color .2s ease}.primary-action[data-v-86eebbff],.secondary-action[data-v-86eebbff]{min-height:42px;padding:0 1.05rem;border-radius:var(--radius-xs);letter-spacing:0}.primary-action[data-v-86eebbff]{border:1px solid var(--accent);background:var(--accent);color:var(--accent-contrast)}.secondary-action[data-v-86eebbff]{border:1px solid var(--border);background:var(--surface);color:var(--text-strong)}.inline-link[data-v-86eebbff]{width:fit-content;color:var(--accent);font-size:.86rem}.primary-action[data-v-86eebbff]:hover,.primary-action[data-v-86eebbff]:focus,.secondary-action[data-v-86eebbff]:hover,.secondary-action[data-v-86eebbff]:focus,.inline-link[data-v-86eebbff]:hover,.inline-link[data-v-86eebbff]:focus{transform:translateY(-2px)}.primary-action[data-v-86eebbff]:active,.secondary-action[data-v-86eebbff]:active{transform:translateY(0) scale(.98)}.primary-action[data-v-86eebbff]:hover,.primary-action[data-v-86eebbff]:focus{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--accent-contrast)}.secondary-action[data-v-86eebbff]:hover,.secondary-action[data-v-86eebbff]:focus,.inline-link[data-v-86eebbff]:hover,.inline-link[data-v-86eebbff]:focus{color:var(--text-strong)}.role-badges[data-v-86eebbff]{display:flex;flex-wrap:wrap;gap:.55rem;margin:0;padding:0;list-style:none}.role-badge[data-v-86eebbff]{min-height:34px;transition:transform .25s cubic-bezier(.22,.61,.36,1),box-shadow .25s ease;display:inline-flex;align-items:center;gap:.4rem;padding:0 .75rem;border-radius:var(--radius-sm);color:var(--badge-fg);font-size:.78rem;font-weight:600}.role-badge[data-v-86eebbff]:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}.badge-blue[data-v-86eebbff]{background:var(--badge-a)}.badge-green[data-v-86eebbff]{background:var(--badge-b)}.badge-gray[data-v-86eebbff]{background:var(--badge-c)}.section[data-v-86eebbff]{padding:2rem;border-top:1px solid var(--border);background:var(--surface)}.section[data-v-86eebbff]:nth-of-type(2n){background:var(--surface-alt)}.about-section[data-v-86eebbff]{padding-block:1.65rem}.section-heading[data-v-86eebbff]{max-width:780px;margin-bottom:1.4rem}.section-heading h2[data-v-86eebbff],.section-heading p[data-v-86eebbff]{margin-bottom:0}.section-heading h2+p[data-v-86eebbff],.section-heading p+.inline-link[data-v-86eebbff]{margin-top:.7rem}.about-grid[data-v-86eebbff]{display:grid;grid-template-columns:minmax(0,.8fr) minmax(420px,1.2fr);gap:1rem;align-items:start}.about-copy[data-v-86eebbff]{display:grid;gap:.75rem}.about-copy p[data-v-86eebbff]{margin-bottom:0;line-height:1.58}.detail-list[data-v-86eebbff]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:0;padding:0;list-style:none}.detail-list li[data-v-86eebbff],.focus-card[data-v-86eebbff],.home-skill-card[data-v-86eebbff]{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.detail-list li[data-v-86eebbff]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.62rem;align-items:start;padding:.85rem;transition:transform .3s var(--ease-out),border-color .3s ease,box-shadow .3s ease}.detail-list li[data-v-86eebbff]:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.detail-list li>i[data-v-86eebbff]{width:30px;height:30px;display:inline-grid;place-items:center;border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--accent);font-size:.78rem;transition:transform .3s var(--ease-out),background-color .3s ease}.detail-list li:hover>i[data-v-86eebbff]{transform:scale(1.05);background:var(--accent-tint)}.detail-list li div[data-v-86eebbff]{display:grid;gap:.28rem}.detail-list li strong[data-v-86eebbff]{color:var(--text-strong);font-size:.9rem;line-height:1.25}.detail-list li span[data-v-86eebbff]{color:var(--text);font-size:.88rem;line-height:1.48}.focus-grid[data-v-86eebbff]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem}.focus-card[data-v-86eebbff]{display:grid;gap:.65rem;padding:1rem;transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,border-color .3s ease}.focus-card[data-v-86eebbff]:hover{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.focus-card i[data-v-86eebbff]{transition:transform .3s cubic-bezier(.22,.61,.36,1)}.focus-card:hover i[data-v-86eebbff]{transform:translateY(-2px) scale(1.05)}.focus-card i[data-v-86eebbff]{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--accent)}.focus-card h3[data-v-86eebbff],.focus-card p[data-v-86eebbff]{margin-bottom:0}.projects-grid[data-v-86eebbff]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.projects-subtitle[data-v-86eebbff]{margin:1.7rem 0 .9rem;color:var(--accent-soft);font-family:var(--font-mono);font-size:.68rem;font-weight:600;letter-spacing:0;text-transform:uppercase}.collaborations-grid[data-v-86eebbff]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:1rem}.education-grid[data-v-86eebbff]{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:1.2rem;align-items:start}.education-column[data-v-86eebbff]{display:grid;gap:.8rem}.education-subtitle[data-v-86eebbff]{margin:0;color:var(--accent-soft);font-family:var(--font-mono);font-size:.68rem;font-weight:600;letter-spacing:0;text-transform:uppercase}@keyframes hero-rise-86eebbff{0%{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:none}}@keyframes hero-zoom-86eebbff{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}.hero-copy[data-v-86eebbff]>*{animation:hero-rise-86eebbff .7s cubic-bezier(.22,.61,.36,1) both}.hero-copy[data-v-86eebbff]>*:nth-child(1){animation-delay:.05s}.hero-copy[data-v-86eebbff]>*:nth-child(2){animation-delay:.12s}.hero-copy[data-v-86eebbff]>*:nth-child(3){animation-delay:.19s}.hero-copy[data-v-86eebbff]>*:nth-child(4){animation-delay:.26s}.hero-copy[data-v-86eebbff]>*:nth-child(5){animation-delay:.33s}.banner-image[data-v-86eebbff]{animation:hero-zoom-86eebbff .9s cubic-bezier(.22,.61,.36,1) both}.avatar-image[data-v-86eebbff]{animation:hero-rise-86eebbff .85s .2s cubic-bezier(.22,.61,.36,1) both}.stack-section[data-v-86eebbff]{display:grid;gap:1.35rem}.stack-block[data-v-86eebbff]{display:grid;gap:.85rem}.stack-block h3[data-v-86eebbff]{margin-bottom:0}.skills-section[data-v-86eebbff]{overflow:hidden}.skills-grid-home[data-v-86eebbff]{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.85rem}.home-skill-card[data-v-86eebbff]{min-height:166px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem;align-items:start;padding:1rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .3s var(--ease-out),border-color .3s ease,box-shadow .3s ease}.home-skill-card[data-v-86eebbff]:nth-child(-n+3){grid-column:span 2}.home-skill-card[data-v-86eebbff]:nth-child(n+4){grid-column:span 3}.home-skill-card>i[data-v-86eebbff]{width:42px;height:42px;display:inline-grid;place-items:center;border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--accent);font-size:1.08rem;transition:transform .3s var(--ease-out),background-color .3s ease}.home-skill-card div[data-v-86eebbff]{min-width:0}.home-skill-card h3[data-v-86eebbff],.home-skill-card p[data-v-86eebbff]{margin:0}.home-skill-card h3[data-v-86eebbff]{margin-bottom:.45rem;color:var(--text-strong);font-size:.98rem;font-weight:800;line-height:1.25}.home-skill-card p[data-v-86eebbff]{color:var(--text);font-size:.9rem;line-height:1.58}.home-skill-card[data-v-86eebbff]:hover,.home-skill-card[data-v-86eebbff]:focus-within{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.home-skill-card:hover>i[data-v-86eebbff],.home-skill-card:focus-within>i[data-v-86eebbff]{transform:scale(1.07);background:var(--accent-tint)}.contact-section[data-v-86eebbff]{text-align:center}.contact-section .section-heading[data-v-86eebbff]{margin-left:auto;margin-right:auto}.contact-list[data-v-86eebbff]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,128px),1fr));gap:.75rem;margin:0;padding:0;list-style:none}.contact-link[data-v-86eebbff]{min-height:82px;display:grid;place-items:center;gap:.45rem;padding:.8rem .6rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-alt);color:var(--text-strong);font-size:.76rem;line-height:1.3;font-weight:600;text-decoration:none;transition:transform .2s ease,border-color .2s ease,color .2s ease}.contact-link i[data-v-86eebbff]{color:var(--accent);font-size:1.15rem}.contact-link[data-v-86eebbff]:hover,.contact-link[data-v-86eebbff]:focus{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.summary-section[data-v-86eebbff]{text-align:center}.summary-section .section-heading[data-v-86eebbff],.summary-section p[data-v-86eebbff]{max-width:780px;margin-left:auto;margin-right:auto}.summary-section p[data-v-86eebbff]{margin-bottom:0}@media (prefers-reduced-motion: reduce){.hero-copy[data-v-86eebbff]>*,.banner-image[data-v-86eebbff],.avatar-image[data-v-86eebbff]{animation:none}.hero-media:hover .banner-image[data-v-86eebbff],.hero-media:hover .avatar-image[data-v-86eebbff]{transform:none}}@media (max-width: 1040px){.hero[data-v-86eebbff],.about-grid[data-v-86eebbff],.projects-grid[data-v-86eebbff],.education-grid[data-v-86eebbff]{grid-template-columns:1fr}.hero[data-v-86eebbff]{--hero-pad: 1.5rem}.hero-media[data-v-86eebbff]{min-height:330px}.avatar-image[data-v-86eebbff]{--avatar-size: 215px}.hero-copy[data-v-86eebbff]{text-align:center;justify-items:center}.focus-grid[data-v-86eebbff],.skills-grid-home[data-v-86eebbff]{grid-template-columns:repeat(2,minmax(0,1fr))}.home-skill-card[data-v-86eebbff]:nth-child(n){grid-column:auto}}@media (max-width: 700px){.hero[data-v-86eebbff]{--hero-pad: 1.15rem}.section[data-v-86eebbff]{padding:1.15rem}h1[data-v-86eebbff]{font-size:1.78rem}h2[data-v-86eebbff]{font-size:1.22rem}.hero-media[data-v-86eebbff]{min-height:270px}.banner-image[data-v-86eebbff]{width:min(100%,300px)}.avatar-image[data-v-86eebbff]{--avatar-size: 170px;right:-.5rem}.hero-actions[data-v-86eebbff],.role-badges[data-v-86eebbff]{justify-content:center}.primary-action[data-v-86eebbff],.secondary-action[data-v-86eebbff]{width:100%}.focus-grid[data-v-86eebbff],.detail-list[data-v-86eebbff],.skills-grid-home[data-v-86eebbff]{grid-template-columns:1fr}.home-skill-card[data-v-86eebbff]{min-height:0;grid-template-columns:1fr;text-align:center;justify-items:center}}@media (max-width: 420px){h1[data-v-86eebbff]{font-size:1.58rem}}.sub-page[data-v-a6e3dfe2]{color:var(--text);border-radius:inherit;background:var(--surface);overflow:hidden}.page-hero[data-v-a6e3dfe2]{display:grid;gap:.5rem;padding:1.05rem 2rem 1.15rem;border-bottom:1px solid var(--border);background:var(--surface-alt)}.page-crumbs[data-v-a6e3dfe2]{display:flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.67rem;letter-spacing:0;text-transform:uppercase}.crumb-link[data-v-a6e3dfe2]{display:inline-flex;align-items:center;gap:.4rem;color:var(--accent);font-weight:500;text-decoration:none;transition:color .2s ease,transform .25s cubic-bezier(.22,.61,.36,1)}.crumb-link i[data-v-a6e3dfe2]{font-size:.62rem}.crumb-link[data-v-a6e3dfe2]:hover,.crumb-link[data-v-a6e3dfe2]:focus-visible{color:var(--text-strong);transform:translate(-2px)}.crumb-sep[data-v-a6e3dfe2]{color:var(--text-soft)}.crumb-current[data-v-a6e3dfe2]{color:var(--accent-soft);font-weight:500}.page-hero-main[data-v-a6e3dfe2]{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .85rem}.page-hero-main h1[data-v-a6e3dfe2]{margin:0;color:var(--text-strong);font-size:clamp(1.42rem,1.08rem + 1.15vw,1.86rem);font-weight:700;line-height:1.15}.page-hero-main p[data-v-a6e3dfe2]{max-width:68ch;margin:0;color:var(--text);font-size:.92rem;line-height:1.5}.content-section[data-v-a6e3dfe2]{padding:2rem}.content-section h2[data-v-a6e3dfe2]{margin:0 0 1rem;color:var(--text-strong);font-size:1.34rem;font-weight:800}.content-section>p[data-v-a6e3dfe2]{max-width:760px;color:var(--text);line-height:1.65}.projects-list[data-v-a6e3dfe2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:1rem;margin-top:1.2rem}.experience-block[data-v-a6e3dfe2]{margin-top:1.2rem}.certifications-block[data-v-a6e3dfe2]{max-width:640px}.block-subtitle[data-v-a6e3dfe2]{margin:2rem 0 0;color:var(--accent-soft);font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:0;text-transform:uppercase}.about-intro[data-v-a6e3dfe2]{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:1.4rem;align-items:start;margin-top:1.2rem}.profile-photo[data-v-a6e3dfe2]{display:grid;gap:.7rem;margin:0;padding:.7rem;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .35s cubic-bezier(.22,.61,.36,1),box-shadow .35s ease}.profile-photo img[data-v-a6e3dfe2]{width:100%;height:auto;aspect-ratio:1/1;display:block;border-radius:var(--radius-sm);object-fit:cover;object-position:center 12%;filter:grayscale(1) contrast(1.03);transition:filter .5s ease,transform .5s cubic-bezier(.22,.61,.36,1)}.profile-photo figcaption[data-v-a6e3dfe2]{display:grid;gap:.12rem;padding:0 .3rem .25rem}.profile-photo figcaption strong[data-v-a6e3dfe2]{color:var(--text-strong);font-size:.95rem;line-height:1.25}.profile-photo figcaption span[data-v-a6e3dfe2]{color:var(--text);font-size:.78rem;line-height:1.4}.profile-photo[data-v-a6e3dfe2]:hover,.profile-photo[data-v-a6e3dfe2]:focus-within{transform:translateY(-3px);box-shadow:var(--shadow-md)}.profile-photo:hover img[data-v-a6e3dfe2],.profile-photo:focus-within img[data-v-a6e3dfe2]{filter:grayscale(0) contrast(1);transform:scale(1.025)}.about-facts[data-v-a6e3dfe2]{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.about-facts li[data-v-a6e3dfe2]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.6rem;align-items:start;color:var(--text);font-size:.9rem;line-height:1.5}.about-facts i[data-v-a6e3dfe2]{margin-top:.22rem;color:var(--accent);font-size:.85rem}.about-facts a[data-v-a6e3dfe2]{color:var(--accent);font-weight:600;text-decoration:none}.about-facts a[data-v-a6e3dfe2]:hover,.about-facts a[data-v-a6e3dfe2]:focus-visible{color:var(--text-strong);text-decoration:underline}.inline-cta[data-v-a6e3dfe2]{width:fit-content;display:inline-flex;align-items:center;gap:.45rem;color:var(--accent);font-size:.87rem;font-weight:600;text-decoration:none;transition:color .2s ease}.inline-cta i[data-v-a6e3dfe2]{font-size:.8rem;transition:transform .25s cubic-bezier(.22,.61,.36,1)}.inline-cta[data-v-a6e3dfe2]:hover,.inline-cta[data-v-a6e3dfe2]:focus-visible{color:var(--text-strong)}.inline-cta:hover i[data-v-a6e3dfe2],.inline-cta:focus-visible i[data-v-a6e3dfe2]{transform:translate(3px)}.two-column[data-v-a6e3dfe2]{display:grid;grid-template-columns:minmax(0,.85fr) minmax(320px,1.15fr);gap:1.2rem}.copy-block[data-v-a6e3dfe2]{display:grid;gap:1rem;align-content:start}.copy-block p[data-v-a6e3dfe2]{margin:0;color:var(--text);line-height:1.65}.stack-groups[data-v-a6e3dfe2]{display:grid;gap:1rem}.focus-list[data-v-a6e3dfe2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:1rem;margin-top:1.3rem}.focus-list article[data-v-a6e3dfe2],.skills-grid article[data-v-a6e3dfe2],.tech-list li[data-v-a6e3dfe2],.contact-list a[data-v-a6e3dfe2]{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.focus-list article[data-v-a6e3dfe2]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem;padding:1rem;transition:transform .3s var(--ease-out),border-color .3s ease,box-shadow .3s ease}.focus-list article[data-v-a6e3dfe2]:hover{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.focus-list article:hover i[data-v-a6e3dfe2]{transform:translateY(-2px) scale(1.05)}.focus-list article i[data-v-a6e3dfe2]{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--accent);transition:transform .3s var(--ease-out)}.focus-list article h3[data-v-a6e3dfe2],.focus-list article p[data-v-a6e3dfe2]{margin:0}.focus-list article h3[data-v-a6e3dfe2]{color:var(--text-strong);font-size:1rem}.focus-list article p[data-v-a6e3dfe2]{margin-top:.35rem;color:var(--text);line-height:1.55}.stack-groups h3[data-v-a6e3dfe2]{margin:0 0 .8rem;color:var(--text-strong);font-size:1rem;font-weight:800}.tech-list[data-v-a6e3dfe2],.skills-grid[data-v-a6e3dfe2],.contact-list[data-v-a6e3dfe2]{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}.tech-list[data-v-a6e3dfe2]{grid-template-columns:repeat(auto-fit,minmax(min(100%,132px),1fr))}.tech-list li[data-v-a6e3dfe2]{transition:transform .25s cubic-bezier(.22,.61,.36,1),border-color .25s ease,box-shadow .25s ease;min-height:98px;display:grid;place-items:center;gap:.55rem;padding:.85rem .7rem;color:var(--text-strong);text-align:center;font-size:.86rem;font-weight:800}.tech-list li[data-v-a6e3dfe2]:hover,.tech-list li[data-v-a6e3dfe2]:focus-visible{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 10px 24px var(--accent-tint)}.tech-list li img[data-v-a6e3dfe2]{width:34px;height:34px;object-fit:contain;transition:filter .35s ease,opacity .35s ease,transform .35s var(--ease-out)}.tech-list li:hover img[data-v-a6e3dfe2],.tech-list li:focus-visible img[data-v-a6e3dfe2]{transform:scale(1.06)}:root[data-theme=dark] .tech-list li img.invert-on-dark[data-v-a6e3dfe2]{filter:brightness(0) invert(1);opacity:.92}:root[data-theme=dark] .tech-list li:hover img.invert-on-dark[data-v-a6e3dfe2],:root[data-theme=dark] .tech-list li:focus-visible img.invert-on-dark[data-v-a6e3dfe2]{opacity:1}.skills-grid[data-v-a6e3dfe2]{grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}.skills-grid article[data-v-a6e3dfe2]{display:grid;gap:.65rem;min-height:180px;padding:1rem;transition:transform .3s cubic-bezier(.22,.61,.36,1),border-color .3s ease,box-shadow .3s ease}.skills-grid article[data-v-a6e3dfe2]:hover{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.skills-grid article i[data-v-a6e3dfe2]{color:var(--accent);font-size:1.4rem}.skills-grid article h3[data-v-a6e3dfe2],.skills-grid article p[data-v-a6e3dfe2]{margin:0}.skills-grid article h3[data-v-a6e3dfe2]{color:var(--text-strong);font-size:.92rem;font-weight:800;line-height:1.22}.skills-grid article p[data-v-a6e3dfe2]{color:var(--text);font-size:.85rem;line-height:1.5}.blogs-page[data-v-a6e3dfe2]{display:grid;gap:1.2rem}.blogs-heading[data-v-a6e3dfe2]{display:flex;align-items:start;justify-content:space-between;gap:1rem}.blogs-heading h2[data-v-a6e3dfe2]{margin-bottom:.45rem}.blogs-heading p[data-v-a6e3dfe2]{max-width:720px;margin:0;color:var(--text);line-height:1.6}.source-link[data-v-a6e3dfe2],.blog-link[data-v-a6e3dfe2]{width:fit-content;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;color:var(--accent);font-size:.85rem;font-weight:700;text-decoration:none;transition:color .2s ease,transform .25s var(--ease-out)}.source-link i[data-v-a6e3dfe2],.blog-link i[data-v-a6e3dfe2]{font-size:.82rem;transition:transform .25s var(--ease-out)}.source-link[data-v-a6e3dfe2]:hover,.source-link[data-v-a6e3dfe2]:focus-visible,.blog-link[data-v-a6e3dfe2]:hover,.blog-link[data-v-a6e3dfe2]:focus-visible{color:var(--text-strong);transform:translateY(-2px)}.source-link:hover i[data-v-a6e3dfe2],.source-link:focus-visible i[data-v-a6e3dfe2],.blog-link:hover i[data-v-a6e3dfe2],.blog-link:focus-visible i[data-v-a6e3dfe2]{transform:translate(2px,-2px)}.source-link[data-v-a6e3dfe2]{flex:0 0 auto;min-height:38px;padding:0 .75rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-alt);color:var(--text-strong)}.source-link .fa-linkedin[data-v-a6e3dfe2]{color:#0a66c2}.blogs-grid[data-v-a6e3dfe2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:1rem}.blog-card[data-v-a6e3dfe2]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem;align-items:start;padding:1.05rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .3s var(--ease-out),border-color .3s ease,box-shadow .3s ease}.blog-card[data-v-a6e3dfe2]:hover,.blog-card[data-v-a6e3dfe2]:focus-within{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.blog-icon[data-v-a6e3dfe2]{width:42px;height:42px;display:inline-grid;place-items:center;border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--accent);font-size:1rem;transition:transform .3s var(--ease-out),background-color .3s ease}.blog-card:hover .blog-icon[data-v-a6e3dfe2],.blog-card:focus-within .blog-icon[data-v-a6e3dfe2]{transform:scale(1.07);background:var(--accent-tint)}.blog-copy[data-v-a6e3dfe2]{min-width:0;display:grid;gap:.45rem}.blog-copy h3[data-v-a6e3dfe2],.blog-copy p[data-v-a6e3dfe2]{margin:0}.blog-copy h3[data-v-a6e3dfe2]{color:var(--text-strong);font-size:1rem;font-weight:800;line-height:1.28}.blog-copy h3 a[data-v-a6e3dfe2]{color:inherit;text-decoration:none}.blog-copy h3 a[data-v-a6e3dfe2]:hover,.blog-copy h3 a[data-v-a6e3dfe2]:focus-visible{color:var(--accent);text-decoration:underline}.blog-copy p[data-v-a6e3dfe2]{color:var(--text);font-size:.9rem;line-height:1.55}.blog-copy .blog-source[data-v-a6e3dfe2]{color:var(--accent);font-family:var(--font-mono);font-size:.68rem;font-weight:700;text-transform:uppercase}.blog-tags[data-v-a6e3dfe2]{display:flex;flex-wrap:wrap;gap:.35rem;margin:.1rem 0 0;padding:0;list-style:none}.blog-tags li[data-v-a6e3dfe2]{padding:.2rem .5rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-alt);color:var(--text);font-family:var(--font-mono);font-size:.67rem;font-weight:500}.blog-link[data-v-a6e3dfe2]{grid-column:2;margin-top:.15rem;font-size:.82rem}.blog-show-page[data-v-a6e3dfe2]{display:grid;gap:1.15rem}.blog-show-head[data-v-a6e3dfe2]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.9rem;align-items:start;padding:1.1rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.blog-show-head p[data-v-a6e3dfe2]{margin:0}.blog-icon.is-large[data-v-a6e3dfe2]{width:48px;height:48px;font-size:1.12rem}.blog-show-actions[data-v-a6e3dfe2]{display:flex;flex-wrap:wrap;gap:.65rem}.blog-show-actions .blog-link[data-v-a6e3dfe2]{grid-column:auto;min-height:38px;margin-top:0;padding:0 .75rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface);color:var(--text-strong)}.blog-tags.is-show[data-v-a6e3dfe2]{margin:0}.blog-meta[data-v-a6e3dfe2]{display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin:.55rem 0 0;padding:0;list-style:none}.blog-meta li[data-v-a6e3dfe2]{display:inline-flex;align-items:center;gap:.35rem;color:var(--text-soft);font-size:.78rem;font-weight:600}.blog-meta i[data-v-a6e3dfe2]{color:var(--accent);font-size:.74rem}.blog-article[data-v-a6e3dfe2],.blog-more[data-v-a6e3dfe2],.takeaways[data-v-a6e3dfe2],.empty-state[data-v-a6e3dfe2]{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.blog-article[data-v-a6e3dfe2]{padding:1.15rem;color:var(--text)}.blog-article h2[data-v-a6e3dfe2]{margin:1.35rem 0 .55rem;color:var(--text-strong);font-size:1.02rem;font-weight:800;line-height:1.3}.blog-article h2[data-v-a6e3dfe2]:first-child{margin-top:0}.blog-article p[data-v-a6e3dfe2]{margin:0 0 .85rem;font-size:.93rem;line-height:1.72}.blog-article p[data-v-a6e3dfe2]:last-child{margin-bottom:0}.blog-article-list[data-v-a6e3dfe2]{display:grid;gap:.55rem;margin:0 0 .95rem;padding:0;list-style:none}.blog-article-list li[data-v-a6e3dfe2]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;color:var(--text);font-size:.9rem;line-height:1.62}.blog-article-list i[data-v-a6e3dfe2]{margin-top:.3rem;color:var(--accent);font-size:.72rem}.blog-article-list strong[data-v-a6e3dfe2]{color:var(--text-strong);font-weight:800}.blog-highlight[data-v-a6e3dfe2]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.6rem;margin:1.05rem 0 0;padding:.85rem .95rem;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-xs);background:var(--surface-alt)}.blog-highlight i[data-v-a6e3dfe2]{margin-top:.2rem;color:var(--accent);font-size:.9rem}.blog-highlight span[data-v-a6e3dfe2]{color:var(--text-strong);font-size:.9rem;font-weight:600;line-height:1.62}.blog-more[data-v-a6e3dfe2]{display:grid;gap:.7rem;padding:1rem}.blog-more h2[data-v-a6e3dfe2]{margin:0;color:var(--text-strong);font-size:1rem;font-weight:800}.blog-more ul[data-v-a6e3dfe2]{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.blog-more a[data-v-a6e3dfe2]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.6rem;padding:.7rem .8rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-alt);color:var(--text-strong);font-size:.88rem;font-weight:700;text-decoration:none;transition:transform .25s var(--ease-out),border-color .25s ease,color .2s ease}.blog-more a i[data-v-a6e3dfe2]{color:var(--accent);font-size:.8rem;transition:transform .25s var(--ease-out)}.blog-more a[data-v-a6e3dfe2]:hover,.blog-more a[data-v-a6e3dfe2]:focus-visible{transform:translateY(-2px);border-color:var(--border-strong);color:var(--accent)}.blog-more a:hover i[data-v-a6e3dfe2],.blog-more a:focus-visible i[data-v-a6e3dfe2]{transform:translate(3px)}.takeaways[data-v-a6e3dfe2]{display:grid;gap:.75rem;padding:1rem}.takeaways h2[data-v-a6e3dfe2]{margin:0;color:var(--text-strong);font-size:1rem;font-weight:800}.takeaways ul[data-v-a6e3dfe2]{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.takeaways li[data-v-a6e3dfe2]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;color:var(--text);font-size:.9rem;line-height:1.5}.takeaways i[data-v-a6e3dfe2]{margin-top:.22rem;color:var(--accent);font-size:.74rem}.empty-state[data-v-a6e3dfe2]{display:grid;gap:.75rem;padding:1.1rem}.empty-state h2[data-v-a6e3dfe2],.empty-state p[data-v-a6e3dfe2]{margin:0}.contact-list[data-v-a6e3dfe2]{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));margin-top:1rem}.contact-list a[data-v-a6e3dfe2]{min-height:82px;display:grid;place-items:center;gap:.45rem;padding:.8rem .6rem;color:var(--text-strong);font-size:.76rem;line-height:1.3;font-weight:600;text-align:center;text-decoration:none;transition:transform .25s cubic-bezier(.22,.61,.36,1),border-color .25s ease,color .25s ease}.contact-list a i[data-v-a6e3dfe2]{color:var(--accent);font-size:1.15rem}.contact-list a[data-v-a6e3dfe2]:hover,.contact-list a[data-v-a6e3dfe2]:focus{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}@media (max-width: 880px){.about-intro[data-v-a6e3dfe2]{grid-template-columns:1fr;justify-items:center}.profile-photo[data-v-a6e3dfe2]{width:min(100%,340px)}.copy-block[data-v-a6e3dfe2]{justify-items:start}}@media (max-width: 780px){.page-hero[data-v-a6e3dfe2]{padding:.95rem 1.25rem 1.05rem}.content-section[data-v-a6e3dfe2]{padding:1.25rem}.two-column[data-v-a6e3dfe2]{grid-template-columns:1fr}.focus-list article[data-v-a6e3dfe2]{grid-template-columns:auto minmax(0,1fr)}.blogs-heading[data-v-a6e3dfe2]{display:grid}.blog-card[data-v-a6e3dfe2]{grid-template-columns:1fr}.blog-link[data-v-a6e3dfe2]{grid-column:auto}.blog-show-head[data-v-a6e3dfe2]{grid-template-columns:1fr}.blog-article[data-v-a6e3dfe2]{padding:1.05rem}}:root,:root[data-theme=light]{--radius-xs: 6px;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--font-sans: Manrope, Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-ui: Inter, var(--font-sans);--font-display: "Space Grotesk", var(--font-sans);--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ease-out: cubic-bezier(.22, .61, .36, 1);--bg-app: #1a2b1a;--shell: rgba(244, 250, 244, .96);--shell-border: rgba(209, 223, 201, .7);--surface: #ffffff;--surface-alt: #f4faf4;--surface-sunken: #f2f8f1;--logo-plate: #f4faf4;--border: #d1dfc9;--border-strong: #b9cfae;--text-strong: #344731;--text: #5a6459;--text-soft: #6c7a6c;--accent: #5e7d3a;--accent-strong: #344731;--accent-soft: #6a8052;--accent-contrast: #ffffff;--accent-tint: rgba(94, 125, 58, .12);--badge-a: #5e7d3a;--badge-b: #344731;--badge-c: #929999;--badge-fg: #ffffff;--nav-bg: linear-gradient(135deg, #2c3e2a 1%, #1b2618 99%);--nav-border: rgba(209, 223, 201, .22);--nav-text: #ffffff;--nav-accent: #a3d89b;--nav-panel: #1b2618;--nav-scrim: rgba(26, 43, 26, .86);--shadow-sm: 0 10px 26px rgba(39, 50, 56, .06);--shadow-md: 0 16px 32px rgba(39, 50, 56, .1);--shadow-lg: 0 20px 55px rgba(0, 0, 0, .22);color-scheme:light}:root[data-theme=dark]{--bg-app: #080d0a;--shell: rgba(18, 26, 21, .96);--shell-border: rgba(90, 120, 92, .28);--surface: #16201b;--surface-alt: #111a15;--surface-sunken: #0e1611;--logo-plate: #eef3ea;--border: #26372c;--border-strong: #3c5744;--text-strong: #e9f2e6;--text: #a7bda4;--text-soft: #87a086;--accent: #8fc45f;--accent-strong: #b7e28d;--accent-soft: #9dbb84;--accent-contrast: #0d140f;--accent-tint: rgba(143, 196, 95, .16);--badge-a: #3f6b28;--badge-b: #24371f;--badge-c: #465446;--badge-fg: #eaf3e6;--nav-bg: linear-gradient(135deg, #1b2a1e 1%, #10180f 99%);--nav-border: rgba(143, 196, 95, .2);--nav-text: #eaf3e6;--nav-accent: #a3d89b;--nav-panel: #101a12;--nav-scrim: rgba(8, 13, 10, .92);--shadow-sm: 0 10px 26px rgba(0, 0, 0, .4);--shadow-md: 0 16px 34px rgba(0, 0, 0, .5);--shadow-lg: 0 22px 60px rgba(0, 0, 0, .6);color-scheme:dark}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth;scrollbar-color:var(--accent) var(--bg-app);scrollbar-width:thin;text-size-adjust:100%}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg-app)}::-webkit-scrollbar-thumb{border:3px solid var(--bg-app);border-radius:999px;background:linear-gradient(180deg,var(--accent-strong),var(--accent))}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--accent),var(--nav-accent))}body{min-width:320px;margin:0;background-color:var(--bg-app);color:var(--text);font-family:var(--font-sans);line-height:1.55;text-rendering:optimizeLegibility;font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .35s ease,color .35s ease}h1,h2,h3,h4,.font-display{font-family:var(--font-display);letter-spacing:0}img,svg{max-width:100%}body,img,svg,a,button{-webkit-user-select:none;-moz-user-select:none;user-select:none}img,svg{-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;user-drag:none;pointer-events:none}a img,button img,[role=button] img{pointer-events:auto}input,textarea,select,[contenteditable=true]{-webkit-user-select:text;-moz-user-select:text;user-select:text}button,a{-webkit-tap-highlight-color:transparent;transition:color .25s ease,background-color .25s ease,border-color .25s ease,box-shadow .25s ease,transform .25s var(--ease-out)}button{font:inherit}a{color:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:2px}::selection{background:transparent}[v-cloak]{display:none}[data-reveal]{opacity:0;transform:translate3d(0,18px,0);transition:opacity .6s var(--ease-out),transform .6s var(--ease-out);transition-delay:var(--reveal-delay, 0ms);will-change:opacity,transform}[data-reveal=left]{transform:translate3d(-22px,0,0)}[data-reveal=right]{transform:translate3d(22px,0,0)}[data-reveal=zoom]{transform:scale(.96)}[data-reveal].is-revealed{opacity:1;transform:none}.page-enter-active,.page-leave-active{transition:opacity .28s ease,transform .28s var(--ease-out)}.page-enter-from{opacity:0;transform:translate3d(0,12px,0)}.page-leave-to{opacity:0;transform:translate3d(0,-8px,0)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}[data-reveal]{opacity:1;transform:none;transition:none}.page-enter-active,.page-leave-active{transition:none}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
