:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:start;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.app-root{display:flex;flex-direction:column;min-height:100vh}.app-content{flex:1 1 auto}.header-root{display:flex;flex-direction:row;justify-content:space-evenly;align-items:center;gap:1rem;padding:.75rem 1rem;width:100vw;align-self:stretch;height:60px;flex:0 0 100%;background-color:#ffffff0a;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:10px;margin-bottom:1rem auto;box-sizing:border-box;box-shadow:0 4px 30px #0000001a}.header-item{flex:1;display:flex;align-items:center}.header-left{justify-content:flex-start;padding-left:.25rem;font-weight:700;font-size:25px}.header-center{justify-content:center;gap:1rem}.header-center a{text-decoration:none;color:inherit;padding:.25rem .5rem}.header-right{justify-content:flex-end;padding-right:.25rem}.header-right button{padding:.5rem .95rem;border-radius:999px;border:none;background:linear-gradient(90deg,#646cff,#535bf2);color:#fff;font-weight:600;font-size:.95rem;box-shadow:0 6px 20px #535bf22e;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;transition:transform .16s ease,box-shadow .16s ease,opacity .12s ease}.header-right button:hover{transform:translateY(-3px);box-shadow:0 12px 30px #535bf238}.header-right button:active{transform:translateY(-1px);box-shadow:0 6px 18px #535bf22e}.header-right button:focus{outline:none;box-shadow:0 0 0 4px #646cff1f}.contact-btn{padding:.45rem .9rem;border-radius:999px;border:none;background:linear-gradient(90deg,#646cff,#535bf2);color:#fff;font-weight:600;font-size:.95rem;box-shadow:0 6px 20px #535bf22e;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.6rem;transition:transform .18s cubic-bezier(.2,.9,.3,1),box-shadow .18s ease,opacity .12s ease;will-change:transform}.contact-icon{display:block;width:18px;height:18px;color:#fff;transition:transform .2s cubic-bezier(.2,.9,.3,1),opacity .15s;transform-origin:center}.contact-label{display:inline-block;line-height:1;letter-spacing:.01em}.contact-btn:hover{transform:translateY(-3px) scale(1.01);box-shadow:0 12px 30px #535bf238}.contact-btn:active{transform:translateY(-1px);box-shadow:0 6px 18px #535bf22e}.contact-btn:hover .contact-icon{transform:translate(-4px) rotate(-6deg) scale(1.02)}.contact-btn:focus{outline:none;box-shadow:0 0 0 4px #646cff1f}@media(max-width:420px){.contact-btn{padding:.35rem .6rem;gap:.4rem}.contact-label{display:none}}.nav-list{display:flex;gap:.75rem;list-style:none;margin:0;padding:0;align-items:center}.nav-item{margin:0}.nav-link{display:inline-block;padding:.4rem .65rem;color:inherit;text-decoration:none;border-radius:8px;font-weight:600;transition:background .14s ease,transform .14s ease,color .12s}.nav-link:hover,.nav-link:focus{background:#ffffff08;transform:translateY(-2px);outline:none}.nav-link.active,.nav-link[aria-current=page]{background:linear-gradient(90deg,#646cff,#535bf2);color:#fff;box-shadow:0 8px 20px #535bf229}@media(max-width:420px){.nav-list{gap:.4rem}.nav-link{padding:.32rem .5rem;font-size:.9rem}}.contact-dialog-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#06080c99;z-index:2000;padding:1.25rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:dialog-fade .18s ease}@keyframes dialog-fade{0%{opacity:0;transform:scale(.995)}to{opacity:1;transform:scale(1)}}.contact-dialog{width:100%;max-width:560px;background:linear-gradient(180deg,#0b0b0b,#141414);color:#fff;border-radius:12px;padding:1rem;box-shadow:0 20px 45px #02061799;border:1px solid rgba(255,255,255,.04);outline:none}.contact-dialog{position:relative}.contact-dialog-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.contact-close{background:transparent;color:#ffffffe6;border:none;font-size:1.05rem;padding:.25rem .5rem;border-radius:8px;cursor:pointer}.contact-close:hover{background:#ffffff08}.contact-dialog-body{margin-top:.75rem;display:flex;flex-direction:column;gap:.75rem;max-height:65vh;overflow:auto;box-sizing:border-box}.contact-list{list-style:none;padding:0;margin:0 0 .75rem;display:flex;flex-direction:column;gap:.45rem}.contact-list a{color:#dfe7ff;text-decoration:none;font-weight:600}.contact-list a:hover{text-decoration:underline}.contact-socials{display:flex;gap:.6rem;margin-top:.5rem;flex-wrap:wrap;align-items:center}.social-link.dialog{display:inline-flex;align-items:center;gap:.5rem;padding:.45rem .7rem;border-radius:10px;background:linear-gradient(90deg,#646cff24,#535bf20f);color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.03);font-weight:600;transition:transform .14s ease,box-shadow .14s ease;flex:1 1 150px;min-width:120px;max-width:calc(50% - .6rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.social-link.dialog:hover{transform:translateY(-3px);box-shadow:0 10px 26px #00000047}.social-link.dialog svg{flex:0 0 auto}.social-link.dialog span{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:520px){.contact-dialog{padding:.75rem;border-radius:10px}.social-link.dialog{max-width:100%;flex:1 1 100%;padding:.5rem;font-size:.95rem}.contact-socials{flex-direction:column;gap:.5rem}}.site-footer{background:#000;color:#fff;width:100vw;box-sizing:border-box;padding:1rem 0;display:flex;justify-content:center;align-items:center}.footer-container{width:100%;max-width:1000px;padding:0 1rem;text-align:center;font-size:.95rem}.home-hero{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:3rem 1rem;box-sizing:border-box;background:linear-gradient(135deg,#242424,#0b0b0b 60%);color:#ffffffeb}@media(prefers-color-scheme:light){.home-hero{background:linear-gradient(135deg,#fff,#f3f7fb 60%);color:#213547}}.hero-inner{width:100%;max-width:900px;text-align:center}.hero-name{margin:0;font-size:clamp(2rem,7vw,4rem);line-height:1;font-weight:800;letter-spacing:-.02em}.hero-highlight{display:inline-block;padding-left:.4rem;background:linear-gradient(90deg,#646cff,#535bf2);-webkit-background-clip:text;background-clip:text;color:transparent}.skill-item{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.6rem;min-width:92px;border-radius:12px;background:linear-gradient(180deg,#0003,#00000014);border:1px solid rgba(255,255,255,.04)}@supports not ((-webkit-background-clip: text) or (background-clip: text)){.hero-highlight{color:#646cff}}.hero-summary{margin:1.25rem auto 0;max-width:70%;font-size:clamp(1rem,2.4vw,1.125rem);line-height:1.6;color:#ffffffd9}@media(prefers-color-scheme:light){.hero-summary{color:#213547e6}.skill-label{color:#10202a;background:#fffffff0;box-shadow:0 6px 18px #0000000f;text-shadow:none}.skill-item{background:linear-gradient(180deg,#ffffff05,#fff0);border:1px solid rgba(0,0,0,.06)}.skill-icon{color:#213547;background:linear-gradient(135deg,#646cff24,#535bf20f);box-shadow:0 6px 18px #0000000f}}.hero-skills{display:flex;justify-content:center;gap:1rem;margin:1.75rem auto 0;align-items:flex-end;padding:.6rem;border-radius:14px;background:linear-gradient(90deg,#646cff0f,#535bf208);border:1px solid rgba(255,255,255,.03);max-width:680px}.skill-item{background:linear-gradient(180deg,#ffffff05,#fff0);border:1px solid rgba(255,255,255,.04)}.skill-icon{width:56px;height:56px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,#646cfff2,#535bf2bf);border-radius:12px;padding:8px;box-shadow:0 10px 30px #535bf229;animation:float 4s ease-in-out calc(var(--delay) + .2s) infinite}.skill-label{font-size:.86rem;font-weight:800;color:#fff;text-align:center;letter-spacing:.01em;background:#0000008c;padding:.22rem .6rem;border-radius:999px;box-shadow:0 6px 18px #00000059;text-shadow:0 1px 0 rgba(0,0,0,.6);transition:background .16s ease,transform .16s ease}.skill-item:hover .skill-label{transform:translateY(-2px);background:#000000a6}.skill-item:hover{transform:translateY(-6px) scale(1.02);box-shadow:0 16px 36px #00000038}.skill-item:active{transform:translateY(-2px) scale(.995)}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-6px)}to{transform:translateY(0)}}.hero-skills .skill-item:nth-child(1){animation-delay:0ms}.hero-skills .skill-item:nth-child(2){animation-delay:.12s}.hero-skills .skill-item:nth-child(3){animation-delay:.24s}@media(prefers-reduced-motion:reduce){.skill-item,.skill-icon{animation:none!important;transition:none!important}}@media(max-width:520px){.hero-summary{max-width:100%;padding:0 .25rem}.hero-skills{gap:.6rem;padding:.4rem;max-width:100%}.skill-item{min-width:72px;padding:.4rem}.skill-icon{width:48px;height:48px;padding:6px}.skill-label{font-size:.78rem}}.summary{display:flex;justify-content:center;padding:2rem 1rem;box-sizing:border-box}.summary-inner{width:100%;max-width:900px;background:#ffffff08;color:inherit;padding:1.5rem 1.75rem;border-radius:12px;box-shadow:0 8px 30px #0000002e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.03)}.summary-title{margin:0 0 .5rem;font-size:1.25rem;line-height:1.2}.summary-text{margin:0;color:#000000d9;font-size:1rem;line-height:1.6}@media(max-width:480px){.summary-inner{padding:1rem;border-radius:10px}}.contents{display:flex;justify-content:center;padding:2rem 1rem;box-sizing:border-box}.contents-inner{width:100%;max-width:1100px;display:grid;grid-template-columns:1fr;gap:1.25rem}.section{background:#ffffff08;padding:1.25rem;border-radius:12px;box-shadow:0 10px 30px #0000002e;border:1px solid rgba(255,255,255,.03);color:inherit}.section-title{margin:0 0 .75rem;font-size:1.05rem;font-weight:700}.skills-list{display:flex;flex-wrap:wrap;gap:.5rem}.skill-chip{background:linear-gradient(180deg,#ffffff08,#ffffff03);padding:.4rem .7rem;border-radius:999px;font-size:.9rem;color:inherit;border:1px solid rgba(255,255,255,.04)}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem}.project-card{padding:.9rem;border-radius:10px;background:linear-gradient(180deg,#0000002e,#0000000a);display:flex;flex-direction:column;gap:.6rem}.project-title{margin:0;font-size:.98rem;font-weight:700}.project-desc{margin:0;color:#fffc;font-size:.92rem;flex:1 1 auto}.project-link{align-self:flex-start;background:#ffffff0f;color:inherit;padding:.36rem .6rem;border-radius:8px;text-decoration:none;font-weight:600;border:1px solid rgba(255,255,255,.04);transition:transform .14s ease,box-shadow .14s ease}.project-link:hover{transform:translateY(-3px);box-shadow:0 6px 18px #00000040}.socials-row{display:flex;gap:.75rem;align-items:center}.social-link{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:44px;height:44px;border-radius:10px;background:#ffffff08;color:inherit;text-decoration:none;border:1px solid rgba(255,255,255,.04);transition:transform .14s ease,box-shadow .14s ease}.social-link:hover{transform:translateY(-4px);box-shadow:0 10px 22px #00000038}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(max-width:880px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.contents-inner{gap:.8rem}.projects-grid{grid-template-columns:1fr}.section{padding:1rem}}.project-thumb{width:88px;height:88px;flex:0 0 88px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:linear-gradient(135deg,#646cff2e,#535bf214);color:#fff;box-shadow:inset 0 -6px 18px #535bf20f,0 8px 20px #0206174d}.project-body{display:flex;flex-direction:column;gap:.6rem;min-width:0}.project-title{margin:0;font-size:1.05rem;font-weight:700;color:inherit;letter-spacing:-.01em}.project-desc{margin:0;color:#ffffffd9;font-size:.95rem;line-height:1.45;overflow:hidden;text-overflow:ellipsis}.project-tags{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.25rem}.project-tag{font-size:.78rem;padding:.28rem .52rem;border-radius:999px;background:#ffffff08;color:#ffffffe6;border:1px solid rgba(255,255,255,.03);font-weight:600}.project-actions{margin-top:auto;display:flex;gap:.6rem;align-items:center}.project-link{display:inline-block;padding:.45rem .75rem;border-radius:10px;background:linear-gradient(90deg,#646cff,#535bf2);color:#fff;font-weight:700;text-decoration:none;box-shadow:0 8px 20px #535bf224;transition:transform .16s ease,box-shadow .16s ease,opacity .12s}.project-link.disabled{opacity:.6;background:#ffffff08;color:#ffffffa6;cursor:default}.project-cta-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:#ffffff05;color:inherit;text-decoration:none;border:1px solid rgba(255,255,255,.03);transition:transform .16s ease,box-shadow .16s ease}.project-cta-icon svg{color:currentColor}.project-link:hover{transform:translateY(-3px);box-shadow:0 14px 36px #535bf22e}.project-cta-icon:hover{transform:translateY(-3px);box-shadow:0 10px 26px #0000003d}.project-card:focus{outline:none;box-shadow:0 0 0 4px #646cff14,0 12px 30px #02061773;transform:translateY(-6px)}@media(max-width:720px){.project-card{flex-direction:column;align-items:stretch}.project-thumb{width:100%;height:140px;flex:0 0 140px;border-radius:10px}.project-actions{justify-content:space-between;gap:.5rem}.project-cta-icon{width:44px;height:44px}}@media(prefers-color-scheme:light){.project-card{background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid rgba(0,0,0,.06);box-shadow:0 8px 24px #0206170f;color:#10202a}.project-thumb{background:linear-gradient(135deg,#646cff24,#535bf20a);color:#10202a}.project-desc{color:#10202acc}.project-tag{background:#00000008;color:#10202a}.project-link{box-shadow:0 8px 18px #535bf214}}.skill-chip{display:inline-block;margin:.28rem;line-height:1}.chip-inner{--chip-grad: linear-gradient(135deg, #7c5cff, #5b8cff);display:inline-flex;align-items:center;gap:.72rem;padding:.44rem .9rem;border-radius:14px;background:linear-gradient(180deg,#ffffff05,#ffffff02);border:1px solid rgba(255,255,255,.04);box-shadow:0 8px 24px #02061773;transition:transform .22s cubic-bezier(.2,.9,.3,1),box-shadow .22s;position:relative;overflow:visible;cursor:default}.chip-bubble{display:inline-grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:12px;color:#fff;font-weight:800;font-size:.95rem;letter-spacing:-.02em;background:var(--chip-grad);box-shadow:0 10px 22px #00000057,inset 0 3px 10px #ffffff0f;position:relative;transform-origin:center}.chip-bubble:after{content:"";position:absolute;left:6px;top:6px;width:18px;height:10px;border-radius:8px;background:linear-gradient(180deg,#ffffff52,#ffffff0f);filter:blur(6px);opacity:.9;pointer-events:none}.chip-text{color:#0009;font-weight:700;font-size:.92rem;text-shadow:0 1px 0 rgba(0,0,0,.45);max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip-inner:hover,.chip-inner:focus{transform:translateY(-8px) scale(1.02);box-shadow:0 28px 60px #02061799;outline:none}.chip-inner:hover .chip-bubble,.chip-inner:focus .chip-bubble{transform:translateY(-4px) scale(1.04)}@keyframes bubble-breathe{0%{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.02)}to{transform:translateY(0) scale(1)}}.chip-bubble{animation:bubble-breathe 6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.chip-inner,.chip-bubble{transition:none!important;animation:none!important}}@media(max-width:520px){.chip-bubble{width:38px;height:38px;font-size:.86rem}.chip-text{font-size:.88rem;max-width:120px}.chip-inner{padding:.36rem .64rem;gap:.5rem}}.contents{padding:2rem 1rem}.contents-inner{max-width:1100px;margin:0 auto}.section-title{font-size:1.25rem;margin:0 0 .75rem;font-weight:800;color:inherit}.skills-list{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:1.25rem}.category-chip{background:transparent;border:none;padding:0;cursor:pointer}.category-chip:focus{outline:none}.category-clear{background:linear-gradient(90deg,#ff6b6b,#ff9a9a);color:#fff;padding:.45rem .7rem;border-radius:10px;border:none;font-weight:700;cursor:pointer}.category-clear.hidden{display:none}.section.projects{margin-top:1.5rem;padding:1.25rem;border-radius:14px;background:linear-gradient(180deg,#0a0c1099,#1214188c);border:1px solid rgba(255,255,255,.03);box-shadow:0 18px 50px #0206178c}.section.projects:before{content:"";position:absolute;pointer-events:none}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:.75rem}.project-card{display:flex;gap:1rem;align-items:stretch;padding:1rem;border-radius:12px;background:linear-gradient(180deg,#ffffff05,#ffffff03);border:1px solid rgba(255,255,255,.04);box-shadow:0 8px 28px #02061773;transition:transform .22s cubic-bezier(.2,.9,.3,1),box-shadow .22s;overflow:hidden}.project-visual{position:relative;width:120px;min-width:120px;height:100%;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#646cff1f,#535bf20f)}.visual-gradient{position:absolute;inset:0;background:radial-gradient(circle at 20% 20%,rgba(100,108,255,.16),transparent 25%),radial-gradient(circle at 80% 80%,rgba(83,91,242,.08),transparent 30%);filter:blur(8px)}.visual-title{position:relative;z-index:1;font-weight:800;color:#fff;text-shadow:0 6px 18px rgba(0,0,0,.55);font-size:1.1rem}.project-body{display:flex;flex-direction:column;gap:.5rem;min-width:0}.project-title{margin:0;font-size:1rem;font-weight:800}.project-desc{margin:0;color:#ffffffd9;font-size:.95rem;line-height:1.4}.project-tags{display:flex;gap:.4rem;flex-wrap:wrap}.project-tag{font-size:.78rem;padding:.24rem .48rem;border-radius:999px;background:#ffffff08;color:#ffffffe6;border:1px solid rgba(255,255,255,.03);font-weight:700}.project-actions{margin-top:auto}.project-link{display:inline-block;padding:.45rem .75rem;border-radius:10px;background:linear-gradient(90deg,#646cff,#535bf2);color:#fff;font-weight:700;text-decoration:none;box-shadow:0 8px 20px #535bf224}.project-link.disabled{opacity:.6;background:#ffffff08;color:#ffffffa6}.project-card:hover{transform:translateY(-8px);box-shadow:0 20px 40px #02061780}.no-results{color:#ffffffb8;padding:1rem;grid-column:1/-1;text-align:center}@media(max-width:720px){.project-card{flex-direction:column;align-items:stretch}.project-visual{width:100%;min-height:120px}}@media(prefers-color-scheme:light){.section.projects{background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid rgba(0,0,0,.06);box-shadow:0 8px 24px #0206170f;color:#10202a}.project-card{background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid rgba(0,0,0,.06);box-shadow:0 8px 24px #0206170f}.project-desc{color:#10202acc}.project-tag{background:#00000008;color:#10202a}.project-visual{background:linear-gradient(135deg,#646cff14,#535bf205)}}
