:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#111827;background-color:#f3f4f6;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at top,#f9fafb 0,#e5e7eb 35% 100%)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}@media screen and (min-width:1700px){body{max-width:1700px;margin:auto}}.app{min-height:100vh;background:linear-gradient(180deg,#f9fafb,#edf1f7 40%,#f5f5f7);color:#0f172a;display:flex;flex-direction:column}.top-bar{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:linear-gradient(to right,#f9fafbe6,#eff6ffe6);border-bottom:1px solid rgba(148,163,184,.2);padding:1.25rem 6vw;display:flex;align-items:center;justify-content:space-between}.brand{display:inline-flex;align-items:center;gap:.5rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:inherit;transition:opacity .14s ease-out}.brand:hover{opacity:.88}.brand-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#6366f1,#ec4899);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:.75rem;font-weight:800;letter-spacing:-.02em}.brand-text{font-size:1rem;font-weight:700}.nav ul{display:flex;gap:1.75rem;list-style:none;padding:0;margin:0;font-size:.95rem}.nav a{position:relative;color:#4b5563;font-weight:500}.nav a:after{content:"";position:absolute;left:0;bottom:-.3rem;width:0;height:2px;background:linear-gradient(90deg,#6366f1,#ec4899);border-radius:999px;transition:width .16s ease-out}.nav a:hover:after{width:100%}.primary-btn{border:none;border-radius:999px;padding:.65rem 1.6rem;font-size:.95rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;background:linear-gradient(135deg,#6366f1,#ec4899);color:#fff;box-shadow:0 10px 25px #6366f159;cursor:pointer;transition:transform .12s ease-out,box-shadow .12s ease-out,opacity .12s ease-out}.primary-btn:hover{transform:translateY(-1px);box-shadow:0 16px 35px #6366f173;opacity:.96}.primary-btn:active{transform:translateY(0);box-shadow:0 6px 16px #4f46e573}main{flex:1;padding:3.5rem 6vw 4rem}.hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:3rem;align-items:center;padding:2.75rem 2.75rem 3.25rem;border-radius:32px;background:radial-gradient(circle at top left,#fff,#f3f4ff 50%,#eef2ff);box-shadow:0 24px 60px #0f172a1f,0 0 0 1px #94a3b82e}.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.72rem;color:#9ca3af;margin:0 0 .75rem}.hero-title{margin:0;font-size:clamp(2.6rem,3.1vw,3.4rem);line-height:1.1;color:#111827}.hero-title .highlight{color:#111827}.hero-title .accent{color:#ef4444;font-weight:700}.hero-description{margin-top:1.25rem;max-width:34rem;font-size:.98rem;color:#6b7280}.hero-actions{margin-top:2.25rem;display:flex;flex-wrap:wrap;gap:2.5rem}.section-label{margin:0 0 .8rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.16em;color:#9ca3af}.icon-row{display:flex;gap:.75rem}.action-grid{display:flex;gap:1rem}.square-card{width:64px;height:64px;border-radius:14px;border:1px solid rgba(226,232,240,1);background:linear-gradient(145deg,#f8fafc,#eef2f7);box-shadow:0 16px 32px #0f172a1a,inset 0 1px #ffffffa6;display:inline-flex;align-items:center;justify-content:center;transition:transform .14s ease-out,box-shadow .14s ease-out,border-color .14s ease-out;color:#334155}.square-card:hover{transform:translateY(-3px);box-shadow:0 22px 44px #0f172a1f,inset 0 1px #ffffffa6;border-color:#94a3b8cc}.square-card:active{transform:translateY(-1px)}.icon{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center}.icon svg{width:28px;height:28px;display:block}.badge{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:#ffffffbf;color:#111827;box-shadow:0 10px 18px #0f172a14}.badge svg{width:22px;height:22px}.badge-text{font-weight:800;font-size:1.05rem;letter-spacing:-.02em}.badge-pink{color:#ec4899}.badge-amber{color:#f59e0b}.badge-multi{background:#ffffffe6}.badge-img{width:22px;height:22px;object-fit:contain;display:block}.badge-node{color:#539e43}.badge-react{color:#087ea4}.badge-postgres{color:#336791}.skill-badge-wrap{display:flex;flex-direction:column;align-items:center;gap:0}.skill-badge-card{cursor:default}.skill-badge-tooltip{margin-top:.45rem;font-size:.7rem;font-weight:700;color:#374151;letter-spacing:.04em;text-align:center;white-space:nowrap;opacity:0;transform:translateY(-6px);transition:opacity .22s ease-out,transform .22s ease-out;pointer-events:none}.skill-badge-wrap:hover .skill-badge-tooltip{opacity:1;transform:translateY(0)}.hero-image{display:flex;justify-content:flex-end}.hero-card{width:min(360px,100%);border-radius:54%;background:linear-gradient(145deg,#f9fafb,#e5e7eb);box-shadow:-8px -1px 53px 28px #0f172a2e,0 0 0 1px #d1d5dbcc}.hero-photo{border-radius:50%;overflow:hidden;background:#e5e7eb}.hero-photo img{width:100%;height:100%;object-fit:cover}.section-header{margin-top:4.5rem;margin-bottom:2rem}.section-header h2{margin:.3rem 0 0;font-size:1.65rem;color:#111827}.section-header-tight{margin-top:4rem;max-width:62rem}.section-subtitle{margin:1rem 0 0;max-width:52rem;color:#6b7280;font-size:.96rem}.experience{margin-top:1.25rem}.experience-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:2.25rem;align-items:stretch}.timeline{border-radius:22px;background:#ffffffa6;border:1px solid rgba(209,213,219,.9);box-shadow:0 18px 50px #94a3b82e;padding:1.6rem}.timeline-item{display:grid;grid-template-columns:44px minmax(0,1fr);gap:1rem;padding:1rem 0}.timeline-item:first-child{padding-top:.2rem}.timeline-item:last-child{padding-bottom:.2rem}.timeline-rail{position:relative;display:flex;justify-content:center}.timeline-rail:before{content:"";position:absolute;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#1aa6a633,#1aa6a68c,#1aa6a633);border-radius:999px}.timeline-dot{width:14px;height:14px;margin-top:.35rem;border-radius:999px;background:#1aa6a6;box-shadow:0 10px 20px #1aa6a640;border:3px solid rgba(255,255,255,.95);position:relative;z-index:1}.timeline-body{padding:.1rem 0 .2rem}.timeline-range{margin:0 0 .35rem;color:#0f766e;font-weight:700;font-size:.86rem}.timeline-title{margin:0;font-size:1.05rem;color:#111827}.timeline-org{color:#6b7280;font-weight:600;font-size:.96rem}.timeline-desc{margin:.55rem 0 0;color:#6b7280;font-size:.94rem;line-height:1.6}.skills-panel{border-radius:22px;background:#ffffffb3;border:1px solid rgba(209,213,219,.9);box-shadow:0 18px 50px #94a3b82e;padding:1.6rem 1.4rem;display:grid;gap:1.2rem}.donut-wrap{display:flex;justify-content:center;padding:.5rem 0;margin-top:-36px;margin-bottom:-80px}.donut-wrap canvas{max-width:340px;max-height:340px;filter:drop-shadow(0 12px 30px rgba(15,23,42,.12))}.skills-legend{display:grid;gap:.55rem}.legend-row{display:grid;grid-template-columns:10px minmax(0,1fr) 110px;gap:.65rem;align-items:center;padding:.38rem .35rem;border-radius:10px;transition:background .16s ease}.legend-row:hover{background:#f1f5f9e6}.legend-swatch{width:10px;height:10px;border-radius:3px;box-shadow:0 4px 8px #0f172a24}.legend-name{font-weight:600;color:#111827;font-size:.88rem}.legend-bar-wrap{height:7px;background:#e2e8f0;border-radius:999px;overflow:hidden}.legend-bar-fill{height:100%;border-radius:999px;transition:width .9s cubic-bezier(.16,1,.3,1)}.side-skill-card{margin-top:1.4rem;width:100%;border-radius:20px;padding:1.4rem 1.6rem 1.6rem;background:#ffffffe6;border:1px solid rgba(209,213,219,.85);box-shadow:0 16px 45px #94a3b83d}.eyebrow-soft{letter-spacing:.16em;font-size:.76rem}.side-skill-title{margin:.3rem 0 .4rem;font-size:1.2rem;color:#111827}.side-skill-desc{margin:.4rem 0 .9rem;font-size:.95rem;color:#6b7280;line-height:1.6}.side-skill-links{display:flex;flex-wrap:wrap;gap:.85rem}.side-skill-link{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:12px;font-size:.9rem;font-weight:600;text-decoration:none;transition:transform .14s ease-out,box-shadow .14s ease-out}.side-skill-link:hover{transform:translateY(-2px)}.side-skill-icon{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center}.side-skill-icon svg{width:100%;height:100%}.side-skill-link-youtube{color:#c00;border:1px solid rgba(255,0,0,.25)}.side-skill-link-youtube:hover{background:#ff00001f;box-shadow:0 8px 20px #f003}.side-skill-link-instagram{color:#c13584;border:1px solid rgba(225,48,108,.3)}.side-skill-link-instagram:hover{background:linear-gradient(135deg,#e1306c24,#fd1d1d1a,#fcaf451a);box-shadow:0 8px 20px #c1358440}.portfolio{margin-top:3.5rem}.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.6rem}.portfolio-card{border-radius:20px;overflow:hidden;background:#fff;border:1px solid rgba(209,213,219,.9);box-shadow:0 18px 45px #94a3b838;transition:transform .16s ease-out,box-shadow .16s ease-out}.portfolio-card:hover{transform:translateY(-4px);box-shadow:0 28px 60px #94a3b84d}.portfolio-thumb{height:170px;background:linear-gradient(135deg,#6366f1,#ec4899);opacity:.9}.portfolio-gif{width:100%;height:230px;object-fit:cover;display:block;opacity:1;object-position:top}.project-tag{display:inline-block;margin:1rem 1.25rem 0;padding:.2rem .65rem;border-radius:999px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;width:fit-content}.project-tag-self{color:#4f46e5;border:1px solid rgba(99,102,241,.3)}.project-tag-company{color:#15803d;border:1px solid rgba(34,197,94,.3)}.portfolio-card h3,.portfolio-card-title{margin:.5rem 1.25rem .4rem;font-size:1.02rem;color:#111827;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.project-stars-badge{font-size:.72rem;font-weight:700;color:#b45309;background:#f59e0b1f;border:1px solid rgba(245,158,11,.3);border-radius:999px;padding:.15rem .55rem;letter-spacing:.03em;white-space:nowrap}.portfolio-card p{margin:0 1.25rem .8rem;font-size:.9rem;color:#6b7280}.project-tech{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 1.25rem 1rem}.tech-tag{padding:.18rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600;background:#6366f114;color:#4f46e5;border:1px solid rgba(99,102,241,.2);letter-spacing:.02em}.project-links{display:flex;gap:.75rem;margin:0 1.25rem 1.25rem}.project-link{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;font-weight:600;color:#6b7280;text-decoration:none;padding:.3rem .75rem;border-radius:8px;border:1px solid rgba(209,213,219,.9);background:#f8fafccc;transition:color .14s ease-out,border-color .14s ease-out,background .14s ease-out}.project-link:hover{color:#111827;border-color:#94a3b8cc;background:#fff}.project-link-live{color:#0f766e;border-color:#14b8a64d;background:#14b8a60f}.project-link-live:hover{color:#0d5c53;border-color:#14b8a699;background:#14b8a61a}.project-link-private{cursor:default;color:#9ca3af;border-color:#9ca3af4d;background:#9ca3af0f;font-size:.82rem;font-weight:600;padding:.3rem .75rem;border-radius:8px;border:1px solid rgba(156,163,175,.3);display:inline-flex;align-items:center}.project-link .resume-link-icon{width:11px;height:11px;opacity:.7}.project-link:hover .resume-link-icon{opacity:1}.open-source-section{margin-top:4rem}.open-source-link{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.4rem;border-radius:14px;font-size:.95rem;font-weight:600;color:#111827;background:#ffffffe6;border:1px solid rgba(209,213,219,.9);box-shadow:0 14px 40px #94a3b82e;text-decoration:none;transition:transform .14s ease-out,box-shadow .14s ease-out,border-color .14s ease-out}.open-source-link:hover{transform:translateY(-2px);box-shadow:0 20px 50px #94a3b83d;border-color:#6366f159}.open-source-link .resume-link-icon{width:16px;height:16px}.resume-section{margin-top:4rem}.resume-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.resume-card{display:flex;flex-direction:column;padding:1.6rem 1.5rem;border-radius:20px;background:#ffffffe6;border:1px solid rgba(209,213,219,.9);box-shadow:0 18px 45px #94a3b82e;transition:box-shadow .16s ease-out,border-color .16s ease-out}.resume-card:hover{box-shadow:0 22px 50px #94a3b838;border-color:#d1d5db}.resume-card-icon{font-size:2rem;margin-bottom:.6rem;line-height:1}.resume-card h3{margin:0 0 .4rem;font-size:1.1rem;color:#111827}.resume-card p{margin:0 0 1rem;font-size:.92rem;color:#6b7280;line-height:1.5;flex:1}.resume-card-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.resume-card-link{display:inline-flex;align-items:center;gap:.45rem;font-size:.9rem;font-weight:600;color:#2563eb;text-decoration:none;transition:color .14s ease-out,gap .14s ease-out}.resume-card-link:hover{color:#1d4ed8}.resume-card-link .resume-link-icon{width:14px;height:14px;flex-shrink:0;opacity:.85}.resume-card-link:hover .resume-link-icon{opacity:1}.contact-section{margin-top:4.25rem}.contact-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:2rem;align-items:start}.contact-intro{font-size:.96rem;color:#6b7280;max-width:34rem}.contact-card{border-radius:20px;padding:1.6rem 1.7rem;background:#ffffffe6;border:1px solid rgba(209,213,219,.9);box-shadow:0 18px 45px #94a3b838;display:grid;gap:.9rem}.contact-row{display:grid;grid-template-columns:130px minmax(0,1fr);gap:.9rem;align-items:baseline}.contact-label{font-size:.85rem;text-transform:uppercase;letter-spacing:.14em;color:#9ca3af}.contact-value{font-size:.95rem;font-weight:600;color:#0f172a;word-break:break-word}.contact-value:hover{color:#2563eb}.footer{border-top:1px solid rgba(209,213,219,.8);padding:1.4rem 6vw 1.8rem;font-size:.82rem;color:#9ca3af;text-align:center}@media(max-width:1024px){.hero{grid-template-columns:minmax(0,1fr)}.hero-image{justify-content:center}.portfolio-grid,.resume-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.experience-grid{grid-template-columns:minmax(0,1fr)}.top-bar{padding-inline:4vw;gap:1.25rem}.nav ul{gap:1.25rem;font-size:.88rem}.contact-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:768px){main{padding:2.25rem 5vw 3rem}.top-bar{padding-inline:5vw}.nav{display:none}.hero{padding:1.9rem 1.6rem 2.3rem;border-radius:24px}.hero-actions{flex-direction:column;gap:1.75rem}.portfolio-grid,.resume-grid{grid-template-columns:minmax(0,1fr)}.contact-card{padding-inline:1.4rem}}
