: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}*,*:before,*:after{box-sizing:border-box}.glow-cursor{position:fixed;left:0;top:0;pointer-events:none;z-index:9999;transform:translate3d(-100px,-100px,0)}.glow-cursor--ring{width:44px;height:44px;margin-left:-22px;margin-top:-22px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#7c5cff73,#3fd0c94d 55%,#7c5cff00 70%);filter:blur(10px)}.glow-cursor--dot{position:fixed;width:10px;height:10px;margin-left:-5px;margin-top:-5px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #7c5cffd9,0 0 24px #3fd0c98c}@media (pointer: coarse){.glow-cursor{display:none}}@media (prefers-reduced-motion: reduce){.glow-cursor{display:none}}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;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}}html{scroll-behavior:smooth}:root{--bg: #0b0b0e;--surface: #121218;--text: #e6e6f0;--muted: #a2a2b5;--accent: #7c5cff;--accent-2: #3fd0c9;--border: #232336;--radius: 12px;--nav-h: 64px}.light{--bg: #f7f7fb;--surface: #ffffff;--text: #10121a;--muted: #4b5162;--accent: #6a5cff;--accent-2: #16b3a8;--border: #e5e7eb}.reveal{opacity:0;transform:translateY(12px);transition:opacity .5s ease,transform .6s cubic-bezier(.22,1,.36,1)}.reveal.show{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none;transition:none}}body{background:var(--bg);color:var(--text)}.accent{color:var(--accent)}.container{width:100%;max-width:1100px;margin:0 auto;padding:0 1.25rem}.navbar{position:sticky;top:0;z-index:50;background:#0b0b0e99;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.light .navbar{background:#ffffffb3}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:var(--nav-h)}.brand{font-weight:700;letter-spacing:.3px;color:var(--text)}.nav-links{display:flex;gap:1rem;overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 640px){.nav-links{gap:.5rem;overflow-x:scroll;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.nav-links::-webkit-scrollbar{display:none}}.nav-links a{color:var(--muted);padding:.5rem .75rem;border-radius:8px;transition:background .2s,color .2s}.nav-links a:hover{background:var(--surface);color:var(--text)}.nav-links a.active{background:var(--surface);color:var(--text);border:1px solid var(--accent)}.section{padding:40px 0;transition:opacity .35s ease}.section h2{font-size:2rem;margin-bottom:1rem;text-align:center}.section p{color:var(--muted)}.section p+p{margin-top:.6rem}.hero{min-height:calc(100vh - var(--nav-h));padding-block:24px;display:flex;justify-content:center}.hero-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem}.hero .container{margin:0 auto}.hero-text{text-align:center;max-width:900px;margin:0 auto}.hero-avatar img{width:140px;height:140px;aspect-ratio:1 / 1;object-fit:cover;border-radius:50%;border:1px solid var(--border);box-shadow:0 8px 24px #00000059}.hero-avatar{--ring: conic-gradient(from 220deg at 50% 50%, var(--accent), var(--accent-2), var(--accent));padding:3px;border-radius:50%;background:var(--ring);display:inline-flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #7c5cff26,0 6px 18px #3fd0c91f}.hero-text h1{font-size:3rem;line-height:1.1;margin:0 0 .5rem}.subtitle{color:var(--muted);font-size:1.125rem;margin-bottom:1.25rem;text-align:center}.subtitle span{display:block}.cta{display:flex;gap:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;border-radius:10px;border:1px solid var(--border);color:var(--text);background:var(--surface);transition:transform .05s ease,background .2s,border-color .2s}.btn:hover{transform:translateY(-1px);border-color:var(--accent)}.btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent-2));border:none}.icon-btn{width:42px;height:42px;padding:0}.icon-btn svg{width:22px;height:22px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;margin-top:1rem}.video-editing-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:1rem}@media (max-width: 640px){.video-editing-grid{grid-template-columns:1fr;gap:.75rem}}@media (max-width: 768px){.video-editing-grid{grid-template-columns:1fr}}.card.project{background:linear-gradient(180deg,#7c5cff14,#3fd0c90f);border:1px solid var(--border);padding:1rem;border-radius:var(--radius);text-decoration:none;color:var(--text);position:relative;overflow:hidden;display:flex;flex-direction:column}.card.project h3{margin:0 0 .25rem}.card.project p{color:var(--muted);margin:0 0 1.25rem}.card.project .arrow{position:absolute;right:14px;bottom:10px;opacity:.7}.contact-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem;justify-content:center;text-align:center}.contact-form{margin-top:1rem;max-width:720px;margin-left:auto;margin-right:auto;background:linear-gradient(180deg,#7c5cff0f,#3fd0c90a);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;box-shadow:0 10px 30px #00000040;width:100%}.form-row{display:flex;flex-direction:column;gap:.4rem;margin-top:.9rem}.form-row label{color:var(--text);font-size:.95rem}.form-row input,.form-row textarea{width:100%;max-width:100%;box-sizing:border-box;color:var(--text);background:#ffffff05;border:1px solid var(--border);border-radius:10px;padding:.75rem .9rem;outline:none;transition:border-color .2s,box-shadow .2s,background .2s}.form-row input::placeholder,.form-row textarea::placeholder{color:var(--muted)}.form-row input:focus,.form-row textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #7c5cff40;background:#ffffff0a}.form-row textarea{resize:vertical;overflow:auto;word-break:break-word}.form-actions{display:flex;justify-content:center;margin-top:1rem}.form-status{margin-top:.75rem;text-align:center;font-weight:600}.form-status.success{color:#3fd0c9}.form-status.error{color:#ff6b6b}@media (max-width: 640px){.contact-form{padding:.85rem}}.footer{border-top:1px solid var(--border);padding:24px 0 48px;color:var(--muted)}.muted{color:var(--muted)}.cert-block{margin-top:1rem;padding:1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.cert-block h3{margin:0 0 .25rem}.cert-block ul{margin:.5rem 0 0;padding-left:1.1rem;color:var(--muted)}.skills-grid{display:grid;grid-template-columns:1fr;gap:1rem}.badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.9rem}.badge:hover{transform:translateY(-1px);border-color:var(--accent)}section{scroll-margin-top:70px}.section--hidden{opacity:0!important;visibility:hidden;pointer-events:none}main{scroll-snap-type:y proximity}.hero,.section{scroll-snap-align:start}.image-container{width:100%;height:160px;overflow:hidden;border-radius:8px;margin-bottom:1rem;background:var(--surface);border:1px solid var(--border);position:relative;cursor:pointer}.project-image{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.project-image:hover{transform:scale(1.05)}.project-image:hover .video-container{width:100%;height:200px;overflow:hidden;border-radius:8px;margin-bottom:1rem;background:var(--surface);border:1px solid var(--border);position:relative;cursor:pointer}.project-image:hover .video-thumbnail{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.project-image:hover .video-thumbnail:hover{transform:scale(1.05)}.project-image:hover .play-button-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#0000004d;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.project-image:hover .video-container:hover .play-button-overlay{opacity:1}.project-image:hover .play-button{width:50px;height:50px;background:#ffffffe6;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--accent);transition:transform .2s ease,background .2s ease}.project-image:hover .play-button:hover{transform:scale(1.1);background:#fff}.project-image:hover .image-container{width:100%;height:200px;overflow:hidden;border-radius:8px;margin-bottom:1rem;background:var(--surface);border:1px solid var(--border);position:relative;cursor:pointer}.project-image:hover .project-image{width:100%;height:100%;object-fit:contain;transition:transform .3s ease}.project-image:hover .project-image:hover{transform:scale(1.05)}.project-image:hover .project-content{flex:1}.project-image:hover .project-link{position:absolute;right:14px;bottom:10px;opacity:.7;color:var(--text);text-decoration:none}.project-image:hover .project-link:hover{opacity:1}@media (max-width: 640px){.project-image:hover .video-container{height:140px}.project-image:hover .play-button{width:40px;height:40px;font-size:16px}.project-image:hover .image-container{height:140px}}.project-image:hover .project-category{margin-top:2rem}.project-image:hover .category-title{font-size:1.5rem;font-weight:600;margin-bottom:1rem;color:var(--text);display:flex;align-items:center;justify-content:center;gap:.5rem}.project-image:hover .badge--lang{background:#7c5cff1f;border-color:#7c5cff59}.project-image:hover .badge--fw{background:#3fd0c91f;border-color:#3fd0c959}.project-image:hover .badge--tools{background:#ffc8571f;border-color:#ffc85759}.project-image:hover .badge--soft{background:#7e84a32e;border-color:#7e84a359}.project-image:hover .badge--train{background:#ff69b41f;border-color:#ff69b459}@media (max-width: 480px){.project-image:hover .badge{padding:4px 8px;font-size:.8rem}}@media (min-width: 800px){.project-image:hover .hero-inner{flex-direction:row;gap:2rem}.project-image:hover .hero-text h1{font-size:3.5rem}.project-image:hover .skills-grid{grid-template-columns:1fr 1fr}.project-image:hover .hero-avatar img{width:200px;height:200px}.project-image:hover .hero-avatar{padding:4px}.project-image:hover .subtitle span{display:inline;margin:0 6px}}@media (max-width: 640px){.project-image:hover :root{--nav-h: 56px}.project-image:hover .container{padding:0 1rem}.project-image:hover .nav-inner{height:var(--nav-h)}.project-image:hover .brand{white-space:nowrap;flex-shrink:0;overflow:hidden;text-overflow:ellipsis}.project-image:hover .nav-links{gap:.5rem;overflow-x:scroll;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.project-image:hover .nav-links::-webkit-scrollbar{display:none}.project-image:hover .section{padding:32px 0}.project-image:hover section{scroll-margin-top:65px}.project-image:hover .hero-text h1{font-size:2.2rem}.project-image:hover .subtitle{font-size:1rem}.project-image:hover .btn{height:44px;padding:0 14px;font-size:.95rem}.project-image:hover .icon-btn{width:44px;height:44px}.project-image:hover .icon-btn svg{width:24px;height:24px}.project-image:hover .grid{gap:.75rem;grid-template-columns:1fr}.project-image:hover .video-editing-grid{grid-template-columns:1fr;gap:.75rem}.project-image:hover .video-container{height:140px}.project-image:hover .play-button{width:40px;height:40px;font-size:16px}.project-image:hover .image-container{height:140px}.project-image:hover .project-category{margin-top:1.5rem}}@media (max-width: 480px){.project-image:hover .video-container{height:120px}.project-image:hover .play-button{width:35px;height:35px;font-size:14px}.project-image:hover .image-container{height:120px}}@media (min-width: 1200px){.project-image:hover .container{max-width:1200px}.project-image:hover .section{padding:48px 0}.project-image:hover section{scroll-margin-top:75px}}@media (pointer: fine){.project-image:hover html,.project-image:hover body,.project-image:hover #root,.project-image:hover *{cursor:none!important}}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
