:root{--primary-h: 165;--primary-s: 100%;--primary-l: 36%;--primary: hsl(var(--primary-h), var(--primary-s), var(--primary-l));--primary-light: hsl(var(--primary-h), var(--primary-s), 50%);--secondary-h: 210;--secondary-s: 100%;--secondary-l: 50%;--secondary: hsl(var(--secondary-h), var(--secondary-s), var(--secondary-l));--accent-h: 280;--accent-s: 80%;--accent-l: 60%;--accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l));--bg-dark: #0f172a;--bg-darker: #020617;--text-main: #f8fafc;--text-muted: #94a3b8;--glass-bg: rgba(255, 255, 255, .03);--glass-border: rgba(255, 255, 255, .1);--glass-blur: blur(12px);--section-padding: 3.5rem 1rem;--container-max-width: 1200px;--touch-target-min: 44px;--transition-smooth: all .3s cubic-bezier(.4, 0, .2, 1)}@media(min-width:768px){:root{--section-padding: 5rem 1.5rem}}@media(min-width:1024px){:root{--section-padding: 6rem 2rem;--container-max-width: 1280px}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip;max-width:100%}body{font-family:Outfit,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--bg-darker);color:var(--text-main);line-height:1.6;overflow-x:clip;max-width:100%;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}@supports not (overflow-x: clip){html,body{overflow-x:hidden}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-darker)}::-webkit-scrollbar-thumb{background:var(--bg-dark);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}.container{width:100%;max-width:var(--container-max-width);margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}@media(min-width:640px){.container{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width:1024px){.container{padding-left:2rem;padding-right:2rem}}.glass-card{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:1.25rem;padding:1.25rem;transition:var(--transition-smooth)}@media(min-width:768px){.glass-card{border-radius:1.5rem;padding:2rem}.glass-card:hover{background:#ffffff0f;border-color:#fff3;transform:translateY(-5px)}}.btn-primary{display:inline-flex;align-items:center;justify-content:center;min-height:48px;min-width:var(--touch-target-min);padding:.8rem 1.75rem;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;text-decoration:none;border-radius:.75rem;font-weight:600;font-size:1rem;transition:var(--transition-smooth);border:none;cursor:pointer;box-shadow:0 4px 15px #00b8944d;touch-manipulation:manipulation}.btn-primary:hover,.btn-primary:focus-visible{box-shadow:0 8px 25px #00b89480;transform:translateY(-2px)}.btn-primary:active{transform:scale(.98)}.navbar{position:fixed;top:0;left:0;width:100%;z-index:1000;padding:.875rem 0;transition:var(--transition-smooth)}.navbar-scrolled{background:#020617eb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:.625rem 0;box-shadow:0 4px 25px #0009;border-bottom:1px solid rgba(255,255,255,.06)}.nav-container{display:flex;justify-content:space-between;align-items:center;width:100%}.logo{display:flex;align-items:center;gap:.625rem;font-family:Outfit,sans-serif;font-weight:700;font-size:1.15rem;color:var(--text-main);text-decoration:none;min-height:var(--touch-target-min);touch-manipulation:manipulation}.logo img{width:32px;height:32px;object-fit:contain}.mobile-menu-btn{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:var(--touch-target-min);height:var(--touch-target-min);min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:#ffffff0a;border:1px solid var(--glass-border);border-radius:.625rem;cursor:pointer;padding:8px;z-index:1002;touch-manipulation:manipulation;transition:var(--transition-smooth)}.mobile-menu-btn:hover,.mobile-menu-btn:focus-visible{background:#ffffff1a;border-color:var(--primary-light)}.hamburger-bar{display:block;width:22px;height:2px;background-color:var(--text-main);border-radius:2px;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease}.mobile-menu-btn.is-active .hamburger-bar:nth-child(1){transform:translateY(7px) rotate(45deg)}.mobile-menu-btn.is-active .hamburger-bar:nth-child(2){opacity:0}.mobile-menu-btn.is-active .hamburger-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-backdrop{position:fixed;inset:0;background:#020617bf;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:998;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility .3s ease}.nav-backdrop.active{opacity:1;visibility:visible;pointer-events:auto}.nav-links{position:fixed;top:0;right:0;bottom:0;width:min(300px,85vw);max-width:100%;background:#0f172afa;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-left:1px solid var(--glass-border);padding:calc(4.5rem + env(safe-area-inset-top,0px)) 1.25rem calc(2rem + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:.5rem;list-style:none;transform:translate(100%);transition:transform .35s cubic-bezier(.32,.72,0,1);box-shadow:-10px 0 35px #000c;z-index:999;overflow-y:auto;-webkit-overflow-scrolling:touch}.nav-links.nav-open{transform:translate(0)}.nav-links li{width:100%;list-style:none}.nav-link,.nav-links a{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--touch-target-min);padding:.625rem 1rem;border-radius:.625rem;color:var(--text-muted);font-family:inherit;font-size:1rem;font-weight:500;text-decoration:none;background:transparent;border:none;cursor:pointer;touch-manipulation:manipulation;transition:var(--transition-smooth)}.nav-link:hover,.nav-link:focus-visible,.nav-links a:hover,.nav-links a:focus-visible{color:var(--primary-light);background:#ffffff0d}.nav-projects-trigger{width:100%;text-align:left}.nav-caret{font-size:.8rem;transition:transform .3s ease}.nav-projects-trigger[aria-expanded=true] .nav-caret{transform:rotate(180deg);color:var(--primary-light)}@media(min-width:768px){.navbar{padding:1.25rem 0}.mobile-menu-btn{display:none}.nav-backdrop{display:none!important}.nav-links{position:static;width:auto;max-width:none;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border-left:none;padding:0;flex-direction:row;align-items:center;gap:1.75rem;transform:none;box-shadow:none;overflow-y:visible}.nav-links li{width:auto}.nav-link,.nav-links a{width:auto;min-height:var(--touch-target-min);padding:.5rem .625rem;font-size:.95rem;justify-content:center;gap:.4rem}}@media(min-width:1024px){.nav-links{gap:2.25rem}}.hero{min-height:100vh;min-height:100dvh;position:relative;display:flex;align-items:center;overflow:hidden;padding-top:calc(4.75rem + env(safe-area-inset-top,0px));padding-bottom:calc(2rem + env(safe-area-inset-bottom,0px));background:radial-gradient(circle at 70% 30%,rgba(0,184,148,.1),transparent 50%),radial-gradient(circle at 10% 80%,rgba(99,102,241,.08),transparent 40%)}.code-rain{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;width:100%;max-width:100%;contain:strict}.hero-content{display:flex;flex-direction:column-reverse;align-items:center;text-align:center;gap:2rem;width:100%}.hero-text{width:100%;max-width:100%}.hero-title{font-family:Outfit,sans-serif;font-size:clamp(2rem,7.5vw,3.25rem);font-weight:700;line-height:1.15;margin-bottom:.75rem;background:linear-gradient(135deg,#fff 30%,var(--primary-light));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;word-break:break-word}.hero-subtitle{font-size:clamp(1rem,3.5vw,1.25rem);color:var(--text-muted);margin-bottom:1.5rem;font-weight:500;line-height:1.4}.animated-text{min-height:4.5em;font-size:clamp(.95rem,3vw,1.1rem);color:var(--text-main);margin-bottom:2rem;line-height:1.5}.hero-btns{display:flex;flex-direction:column;align-items:center;gap:1.25rem;width:100%}.social-icons{display:flex;align-items:center;justify-content:center;gap:.75rem}.social-icons a{display:flex;align-items:center;justify-content:center;width:var(--touch-target-min);height:var(--touch-target-min);min-width:var(--touch-target-min);min-height:var(--touch-target-min);border-radius:50%;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-main);font-size:1.15rem;text-decoration:none;touch-manipulation:manipulation;transition:var(--transition-smooth)}.social-icons a:hover,.social-icons a:focus-visible,.social-icons a:active{background:#00b89433;border-color:var(--primary);color:var(--primary-light);transform:translateY(-2px)}.hero-image{position:relative;display:flex;justify-content:center;width:100%}.image-wrapper{position:relative;width:min(240px,70vw);height:min(240px,70vw);border-radius:1.5rem;overflow:hidden;border:1px solid var(--glass-border);box-shadow:0 15px 35px #00000080}.image-wrapper img{width:100%;height:100%;object-fit:cover;transition:var(--transition-smooth)}.image-wrapper:hover img{transform:scale(1.05)}@media(min-width:480px){.hero-btns{flex-direction:row;justify-content:center;gap:1.5rem;width:auto}.image-wrapper{width:min(280px,60vw);height:min(280px,60vw)}}@media(min-width:768px){.hero{padding-top:calc(5.5rem + env(safe-area-inset-top,0px));padding-bottom:3rem}.hero-content{display:grid;grid-template-columns:1.2fr .8fr;text-align:left;gap:3rem;align-items:center}.hero-btns{justify-content:flex-start}.animated-text{min-height:2.5em}.hero-image{justify-content:flex-end}.image-wrapper{width:300px;height:300px;border-radius:2rem}}@media(min-width:1024px){.hero-content{gap:4rem}.image-wrapper{width:350px;height:350px}.hero-title{font-size:clamp(2.5rem,6vw,4.25rem)}.animated-text{min-height:2em}}.section{padding:var(--section-padding);width:100%;max-width:100%}.section-title{font-family:Outfit,sans-serif;font-size:clamp(1.75rem,5vw,2.5rem);margin-bottom:2rem;position:relative;display:inline-block}.section-title:after{content:"";position:absolute;left:0;bottom:-8px;width:50px;height:4px;background:var(--primary);border-radius:2px}.grid{display:grid;grid-template-columns:1fr;gap:1.5rem;width:100%}.grid-2,.grid-3{grid-template-columns:1fr}@media(min-width:640px){.grid{gap:1.75rem}}@media(min-width:768px){.grid{gap:2rem}.grid-2,.grid-3{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.grid-3{grid-template-columns:repeat(3,1fr)}}.sobre-content{display:flex;flex-direction:column}.sobre-chart{display:flex;align-items:center;justify-content:center;padding:1.25rem;width:100%;max-width:100%}.skill-web-container{width:100%;max-width:380px;aspect-ratio:1 / 1;height:auto;margin:0 auto;display:flex;align-items:center;justify-content:center}.soft-skills{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.25rem}.skill-tag{display:inline-flex;align-items:center;min-height:36px;padding:.35rem 1rem;background:var(--bg-dark);border:1px solid var(--glass-border);border-radius:2rem;font-size:.85rem;color:var(--primary-light)}.tech-carousel-container{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;position:relative;padding:1.5rem 0;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;scrollbar-width:none;touch-action:pan-x}.tech-carousel-container::-webkit-scrollbar{display:none}.tech-carousel{display:flex;gap:1.25rem;width:max-content}.tech-card{width:200px;min-height:280px;flex-shrink:0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.5rem;scroll-snap-align:center;touch-manipulation:manipulation}.tech-card img{width:56px;height:56px;object-fit:contain;margin-bottom:.5rem}.stars-container{display:flex;justify-content:center;gap:.25rem;margin-top:auto;padding-top:.75rem}.star-icon{font-size:1.1rem;background:linear-gradient(135deg,var(--primary-light),var(--secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 5px rgba(0,184,148,.3));opacity:0;transform:scale(0)}.star-icon.filled{animation:starPop .4s cubic-bezier(.175,.885,.32,1.275) forwards}.star-icon.empty{background:var(--bg-dark);-webkit-text-fill-color:var(--bg-dark);opacity:.4;transform:scale(1)}@media(hover:hover)and (pointer:fine){.tech-carousel:hover{animation-play-state:paused}}@media(min-width:768px){.tech-carousel-container{overflow:hidden;padding:2rem 0}.tech-carousel{gap:1.5rem;animation:scrollLoop 30s linear infinite}}.proj-card{display:flex;flex-direction:column;gap:.875rem;height:100%}.proj-card h3{font-family:Outfit,sans-serif;font-size:1.25rem;color:var(--text-main)}.link-more{background:none;border:none;cursor:pointer;min-height:var(--touch-target-min);min-width:var(--touch-target-min);padding:.5rem 0;color:var(--primary-light);text-decoration:none;font-size:.95rem;font-weight:600;font-family:inherit;display:inline-flex;align-items:center;gap:.5rem;margin-top:auto;touch-manipulation:manipulation;transition:var(--transition-smooth)}.link-more:after{content:"→";transition:var(--transition-smooth)}.link-more:hover:after,.link-more:focus-visible:after{transform:translate(5px)}.servico-item{display:flex;flex-direction:column}.servico-item i{font-size:2rem;color:var(--primary);margin-bottom:1.25rem}.text-center{text-align:center}.mb-2{margin-bottom:1.5rem}.contato-reveal{display:flex;flex-direction:column;align-items:center;width:100%}.contato-box{margin-top:1.5rem;padding:1.5rem;width:100%;max-width:480px;text-align:left;word-break:break-word}.contato-box p{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;font-size:clamp(.9rem,3.5vw,1rem)}.contato-box p:last-child{margin-bottom:0}.contato-box i{color:var(--primary-light);font-size:1.1rem;flex-shrink:0}.contact-link{color:inherit;text-decoration:none;display:inline-flex;align-items:center;min-height:var(--touch-target-min);touch-manipulation:manipulation;transition:var(--transition-smooth)}.contact-link:hover,.contact-link:focus-visible{color:var(--primary-light)}.footer{padding:3rem 0;border-top:1px solid var(--glass-border);text-align:center;color:var(--text-muted);font-size:.875rem}.project-modal{position:fixed;inset:0;min-height:100vh;min-height:100dvh;background:#020617e6;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;justify-content:center;align-items:center;z-index:2000;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility .3s ease;padding:1rem}.project-modal.active{opacity:1;visibility:visible;pointer-events:auto}.modal-content{max-width:600px;width:100%;max-height:85dvh;overflow-y:auto;position:relative;padding:2.25rem 1.5rem 1.5rem;animation:modalIn .35s cubic-bezier(.34,1.56,.64,1)}@media(min-width:640px){.modal-content{padding:2.5rem 2rem 2rem}}.close-btn{position:absolute;top:.75rem;right:.75rem;width:var(--touch-target-min);height:var(--touch-target-min);min-width:var(--touch-target-min);min-height:var(--touch-target-min);display:flex;align-items:center;justify-content:center;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:50%;color:var(--text-muted);font-size:1.5rem;line-height:1;cursor:pointer;touch-manipulation:manipulation;transition:var(--transition-smooth)}.close-btn:hover,.close-btn:focus-visible{background:#ffffff26;color:#fff}.modal-content h3{font-family:Outfit,sans-serif;font-size:clamp(1.4rem,4vw,2rem);margin-bottom:1rem;color:var(--primary-light)}.modal-content p{font-size:1rem;line-height:1.7;color:var(--text-main)}@keyframes fall{0%{transform:translateY(0);opacity:0}10%{opacity:.3}90%{opacity:.3}to{transform:translateY(110vh);opacity:0}}@keyframes fadeIn{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1;stroke-width:0}50%{transform:scale(1.4);opacity:.5;stroke-width:10px}to{transform:scale(1);opacity:1;stroke-width:0}}@keyframes modalIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}@keyframes starPop{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scrollLoop{0%{transform:translate(0)}to{transform:translate(-50%)}}.skill-poly{animation:polyFadeIn 1.5s ease-out forwards}@keyframes polyFadeIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.skill-node{transform-origin:center}.animate-on-scroll{opacity:0}.animate-visible{animation:fadeIn .8s ease forwards}.hidden{display:none!important}
