:root{--section-padding-y:2rem;--section-padding-x:1.5rem;--section-padding:var(--section-padding-y)var(--section-padding-x);--card-padding:.9rem 1.1rem;--content-max-width:960px;--bg:#fff;--text:#1f2937;--card:#f8fafc;--card-border:#0f172a1a;--card-hover-border:#0891b273;--card-hover-shadow:0 14px 36px -14px #0891b247;--muted-chip:#0f172a0d;--tag-text:#0e7490;--glow-a:#06b6d421;--glow-b:#6366f117;--glow-c:#06b6d41a;--dot:#0f172a12;--navbar-bg:#ffffffb8;--navbar-text:#334155;--navbar-divider:#33415524;--navbar-hover:#33415514;--navbar-overlay:#fff}.dark{--bg:#050505;--text:#ededed;--card:#0d0d0e;--card-border:#ffffff17;--card-hover-border:#22d3ee66;--card-hover-shadow:0 14px 40px -14px #22d3ee38;--muted-chip:#ffffff0f;--tag-text:#67e8f9;--glow-a:#22d3ee2e;--glow-b:#818cf824;--glow-c:#22d3ee1f;--dot:#ffffff12;--navbar-bg:#050505b3;--navbar-text:#e5e7eb;--navbar-divider:#ffffff1a;--navbar-hover:#ffffff12;--navbar-overlay:#0a0a0a;--surface-ground:#050505;--surface-card:#0d0d0e;--surface-border:#ffffff1a;--surface-200:#ffffff1a;--surface-700:#d4d4d8;--text-color:#ededed;--text-color-secondary:#a1a1aa;--primary-color:#22d3ee;--primary-color-text:#031318}html{scroll-behavior:smooth}body{font-family:var(--font-geist-sans,system-ui,sans-serif);-webkit-font-smoothing:antialiased;background:var(--bg);color:var(--text);margin:0;padding-top:50px}body:after{content:"";z-index:-1;pointer-events:none;background-image:radial-gradient(var(--dot)1px,transparent 1px);background-size:22px 22px;height:520px;position:absolute;top:0;left:0;right:0;-webkit-mask-image:radial-gradient(55% 90% at 50% 0,#000,#0000 75%);mask-image:radial-gradient(55% 90% at 50% 0,#000,#0000 75%)}.top-effect{z-index:-1;pointer-events:none;height:560px;position:absolute;top:0;left:0;right:0;overflow:hidden;-webkit-mask-image:linear-gradient(#000 40%,#0000);mask-image:linear-gradient(#000 40%,#0000)}.top-effect span{will-change:transform;border-radius:50%;width:min(60rem,80vw);height:32rem;position:absolute;top:-15rem}.top-effect span:first-child{background:radial-gradient(closest-side,var(--glow-a),transparent);animation:22s ease-in-out infinite alternate blob-a;left:-10%}.top-effect span:nth-child(2){background:radial-gradient(closest-side,var(--glow-b),transparent);animation:28s ease-in-out infinite alternate blob-b;left:28%}.top-effect span:nth-child(3){background:radial-gradient(closest-side,var(--glow-c),transparent);animation:25s ease-in-out infinite alternate blob-c;right:-12%}@keyframes blob-a{0%{transform:translate(0,0)}to{transform:translate(24vw,3rem)}}@keyframes blob-b{0%{transform:translate(-12vw,2rem)}to{transform:translate(14vw,-1rem)}}@keyframes blob-c{0%{transform:translateY(1rem)}to{transform:translate(-22vw,3.5rem)}}@media (prefers-reduced-motion:reduce){.top-effect span{animation:none}}h1,h2,h3{letter-spacing:-.02em}.app-loading{background:var(--bg);color:var(--text);z-index:10000;opacity:1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.app-loading-visible{opacity:1}.app-loading-fade-out{opacity:0;pointer-events:none;transition:opacity .12s}.app-loading-spinner{border:3px solid var(--navbar-divider);border-top-color:var(--navbar-text);border-radius:50%;width:2rem;height:2rem;animation:.8s linear infinite app-spin}@keyframes app-spin{to{transform:rotate(360deg)}}main{text-align:justify;-webkit-hyphens:auto;hyphens:auto}section{padding:var(--section-padding);max-width:var(--content-max-width);margin:0 auto;scroll-margin-top:4rem}main section>h2.text-primary{color:var(--text);align-items:center;gap:.75rem;display:flex}main section>h2.text-primary:before{content:"";background:linear-gradient(to bottom,var(--primary-color),#818cf8);border-radius:4px;width:.4rem;height:1.5rem}main section>h2.text-primary:after{content:"";background:linear-gradient(to right,var(--card-border),transparent);flex:1;height:1px}.reveal{opacity:0;transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1);transform:translateY(28px)}.reveal.is-visible{opacity:1;transform:none}.reveal.reveal-instant{transition:none}.portfolio-card,.skill-group,.info-row{color:var(--text);border:1px solid var(--card-border);border-radius:16px;background:var(--card)!important;box-shadow:none!important}.portfolio-card .p-card-body,.portfolio-card .p-card-content{color:inherit;background:0 0!important}.portfolio-card .p-card-body{padding:var(--card-padding)}.portfolio-card .p-card-content{padding:0}.portfolio-card h3.text-primary{color:var(--text)}.skill-group,.info-row{padding:var(--card-padding)}.skills-grid,.projects-grid{gap:1rem;display:grid}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.projects-grid{grid-template-columns:1fr}.project-main{flex-direction:column;align-items:flex-start;gap:.5rem;min-width:0;display:flex}.project-desc{white-space:pre-line;margin:0}.project-desc.is-clamped{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.project-footer{border-top:1px solid var(--card-border);flex-direction:column;align-self:stretch;align-items:flex-start;gap:.6rem;margin-top:.4rem;padding-top:.75rem;display:flex}main .p-tag{background:color-mix(in srgb,var(--primary-color)13%,transparent);color:var(--tag-text);border:1px solid color-mix(in srgb,var(--primary-color)28%,transparent);border-radius:999px;padding:.18rem .65rem;font-size:.8rem;font-weight:500;transition:background-color .2s,border-color .2s}main .p-tag:hover{background:color-mix(in srgb,var(--primary-color)22%,transparent);border-color:color-mix(in srgb,var(--primary-color)50%,transparent)}main .p-tag.p-tag-secondary{background:var(--muted-chip);color:var(--text-color-secondary);border-color:var(--card-border)}main .p-tag.p-tag-secondary:hover{background:color-mix(in srgb,var(--text)10%,transparent);border-color:color-mix(in srgb,var(--text)25%,transparent)}.date-chip{border:1px solid var(--card-border);background:var(--muted-chip);color:var(--text-color-secondary);white-space:nowrap;border-radius:999px;padding:.15rem .7rem;font-size:.8rem;display:inline-block}main .p-button{border-radius:10px;transition:transform .2s,background-color .2s,box-shadow .2s}main .p-button:not(.p-button-text):hover{transform:translateY(-1px)}.hero-avatar{box-shadow:0 0 0 4px var(--bg),0 0 0 5px color-mix(in srgb,var(--primary-color)45%,transparent),0 22px 60px -12px color-mix(in srgb,var(--primary-color)40%,transparent)}.hero-title{background:linear-gradient(180deg,var(--text)35%,color-mix(in srgb,var(--text)55%,transparent));-webkit-text-fill-color:transparent;color:#0000;letter-spacing:-.035em;-webkit-background-clip:text;background-clip:text;font-size:clamp(2.4rem,7vw,3.6rem);line-height:1.05}.hero-role{border:1px solid var(--card-border);background:var(--muted-chip);color:var(--text-color-secondary);border-radius:999px;align-items:center;gap:.55rem;padding:.35rem .95rem;font-size:.95rem;display:inline-flex}.hero-role:before{content:"";background:var(--primary-color);width:.45rem;height:.45rem;box-shadow:0 0 0 4px color-mix(in srgb,var(--primary-color)22%,transparent);border-radius:50%}.social-btn.p-button{border:1px solid var(--card-border);background:var(--card);border-radius:50%;width:3rem;height:3rem;padding:0;overflow:hidden}.social-btn.p-button:hover{border-color:var(--card-hover-border);box-shadow:var(--card-hover-shadow);background:var(--card)!important}.dark .github-icon,.app-dark .github-icon{filter:invert()}.custom-navbar.p-menubar{-webkit-backdrop-filter:blur(14px)saturate(150%);backdrop-filter:blur(14px)saturate(150%);padding-left:.75rem;padding-right:.75rem;position:relative;background:var(--navbar-bg)!important;color:var(--navbar-text)!important;border:none!important;border-bottom:1px solid var(--navbar-divider)!important;box-shadow:none!important;border-radius:0!important}.custom-navbar.p-menubar:after{content:"";pointer-events:none;background:linear-gradient(90deg,transparent,var(--primary-color),transparent);opacity:.8;background-position:-50% 0;background-repeat:no-repeat;background-size:35% 100%;height:1px;animation:9s ease-in-out infinite navbar-run;position:absolute;bottom:-1px;left:0;right:0}@keyframes navbar-run{0%{background-position:-50% 0}to{background-position:150% 0}}@media (prefers-reduced-motion:reduce){.custom-navbar.p-menubar:after{opacity:0;animation:none}}.custom-navbar.p-menubar .p-menuitem.nav-active>.p-menuitem-content{position:relative;background:var(--navbar-hover)!important}.custom-navbar.p-menubar .p-menuitem.nav-active>.p-menuitem-content:after{content:"";background:var(--primary-color);border-radius:2px;height:2px;position:absolute;bottom:.15rem;left:.9rem;right:.9rem}.custom-navbar.p-menubar .p-menubar-root-list{background:0 0!important}.custom-navbar.p-menubar .p-menubar-start,.custom-navbar.p-menubar .p-menubar-end{align-items:center;display:flex}.navbar-controls{border:1px solid var(--navbar-divider);border-radius:999px;align-items:center;gap:.15rem;padding:.1rem .2rem;display:inline-flex}.lang-toggle{align-items:center;display:inline-flex}.lang-toggle .lang-toggle-button.p-button.p-button-text{min-width:auto;color:var(--navbar-text)!important;border-radius:999px!important;padding:.2rem .5rem!important}.lang-toggle .lang-toggle-button.p-button.p-button-text.is-active{opacity:1;font-weight:500}.lang-toggle .lang-toggle-button.p-button.p-button-text:hover{opacity:.9;background:var(--navbar-hover)!important}.theme-toggle-inline.p-button.p-button-text{min-width:auto;color:var(--navbar-text)!important;border-radius:999px!important;padding:.2rem .35rem!important}.theme-toggle-inline.p-button.p-button-text:hover{background:var(--navbar-hover)!important}.custom-navbar.p-menubar .p-menuitem{background:0 0!important}.custom-navbar.p-menubar .p-menuitem>.p-menuitem-content{background:0 0!important;border-radius:10px!important}.custom-navbar.p-menubar .p-menuitem>.p-menuitem-content>.p-menuitem-link{transition:background-color .2s,color .2s;color:var(--navbar-text)!important;box-shadow:none!important;background:0 0!important;border:none!important;border-radius:10px!important}.custom-navbar.p-menubar .p-menuitem-text,.custom-navbar.p-menubar .p-menuitem-icon,.custom-navbar.p-menubar .p-menubar-button,.custom-navbar.p-menubar .p-submenu-icon{color:var(--navbar-text)!important}.custom-navbar.p-menubar .p-menuitem:not(.p-disabled)>.p-menuitem-content:hover,.custom-navbar.p-menubar .p-menuitem:not(.p-disabled).p-focus>.p-menuitem-content,.custom-navbar.p-menubar .p-menuitem:not(.p-disabled).p-highlight>.p-menuitem-content,.custom-navbar.p-menubar .p-menuitem:not(.p-disabled).p-menuitem-active>.p-menuitem-content{background:var(--navbar-hover)!important;color:var(--navbar-text)!important}.custom-navbar.p-menubar .p-menuitem:not(.p-disabled)>.p-menuitem-content:hover>.p-menuitem-link,.custom-navbar.p-menubar .p-menuitem:not(.p-disabled).p-focus>.p-menuitem-content>.p-menuitem-link,.custom-navbar.p-menubar .p-menuitem:not(.p-disabled).p-highlight>.p-menuitem-content>.p-menuitem-link,.custom-navbar.p-menubar .p-menuitem:not(.p-disabled).p-menuitem-active>.p-menuitem-content>.p-menuitem-link,.custom-navbar.p-menubar .p-menuitem>.p-menuitem-content>.p-menuitem-link:focus,.custom-navbar.p-menubar .p-menuitem>.p-menuitem-content>.p-menuitem-link:active{color:var(--navbar-text)!important;box-shadow:none!important;background:0 0!important;outline:none!important}.dark .custom-navbar.p-menubar .p-menuitem.p-focus>.p-menuitem-content,.dark .custom-navbar.p-menubar .p-menuitem.p-highlight>.p-menuitem-content,.dark .custom-navbar.p-menubar .p-menuitem.p-menuitem-active>.p-menuitem-content,.dark .custom-navbar.p-menubar .p-menuitem:not(.p-disabled)>.p-menuitem-content:hover{background:var(--navbar-hover)!important}.dark .custom-navbar.p-menubar .p-menuitem.p-focus>.p-menuitem-content>.p-menuitem-link,.dark .custom-navbar.p-menubar .p-menuitem.p-highlight>.p-menuitem-content>.p-menuitem-link,.dark .custom-navbar.p-menubar .p-menuitem.p-menuitem-active>.p-menuitem-content>.p-menuitem-link,.dark .custom-navbar.p-menubar .p-menuitem:not(.p-disabled)>.p-menuitem-content:hover>.p-menuitem-link{color:var(--navbar-text)!important;background:0 0!important}.custom-navbar.p-menubar .p-menubar-button{box-shadow:none!important;color:var(--navbar-text)!important;border-radius:999px!important}.custom-navbar.p-menubar .p-menubar-button:hover,.custom-navbar.p-menubar .p-menubar-button:focus,.custom-navbar.p-menubar .p-menubar-button:active{background:var(--navbar-hover)!important;color:var(--navbar-text)!important;box-shadow:none!important;outline:none!important}.custom-navbar.p-menubar :focus{box-shadow:none!important}.custom-navbar.p-menubar :focus-visible{box-shadow:none!important;outline:none!important}@media screen and (max-width:960px){.custom-navbar.p-menubar{padding-left:.5rem;padding-right:.5rem}.custom-navbar.p-menubar .p-menubar-root-list{background:var(--navbar-overlay)!important;border:1px solid var(--navbar-divider)!important;border-top:none!important;border-radius:0 0 12px 12px!important;padding:.5rem 0!important;box-shadow:0 12px 30px #0000002e!important}.custom-navbar.p-menubar .p-menuitem{width:100%}.custom-navbar.p-menubar .p-menuitem>.p-menuitem-content{border-radius:0!important}.custom-navbar.p-menubar .p-menuitem>.p-menuitem-content>.p-menuitem-link{border-radius:0!important;padding:.9rem 1.25rem!important}.custom-navbar.p-menubar .p-menuitem-text,.custom-navbar.p-menubar .p-menuitem-icon{color:var(--navbar-text)!important}}
