@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Syne:wght@700;800&display=swap";
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
*{box-sizing:border-box;margin:0;padding:0}.bg-dots{background-color:#fafafa;background-image:radial-gradient(circle,#7c3aed18 1px,#0000 1px);background-size:30px 30px}.bg-dots-alt{background-color:#f4f3ff;background-image:radial-gradient(circle,#7c3aed12 1px,#0000 1px);background-size:30px 30px}.grad{background:linear-gradient(135deg,#7c3aed,#a855f7);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.grad-subtle{background:linear-gradient(135deg,#6d28d9,#a855f7);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.blob{filter:blur(100px);opacity:.1;pointer-events:none;border-radius:50%;position:absolute}.pill{letter-spacing:.1em;text-transform:uppercase;color:#7c3aed;background:#7c3aed14;border:1px solid #7c3aed33;border-radius:999px;align-items:center;gap:6px;margin-bottom:18px;padding:6px 14px;font-size:11px;font-weight:700;display:inline-flex}.nav-btn{color:#9090b0;cursor:pointer;text-transform:capitalize;background:0 0;border:none;border-radius:10px;padding:8px 14px;font-family:Plus Jakarta Sans,sans-serif;font-size:14px;font-weight:600;transition:all .2s}.nav-btn:hover{color:#1a1a2e;background:#7c3aed08}.nav-btn.active{color:#7c3aed;background:#7c3aed12}.btn-primary{color:#fff;cursor:pointer;background:linear-gradient(135deg,#7c3aed,#a855f7);border:none;border-radius:14px;align-items:center;gap:10px;padding:14px 28px;font-family:Plus Jakarta Sans,sans-serif;font-size:15px;font-weight:700;transition:all .25s;display:inline-flex;box-shadow:0 8px 32px #7c3aed30}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 42px #7c3aed44}.btn-send{color:#fff;cursor:pointer;background:linear-gradient(135deg,#7c3aed,#a855f7);border:none;border-radius:14px;justify-content:center;align-items:center;gap:10px;width:100%;padding:14px 28px;font-family:Plus Jakarta Sans,sans-serif;font-size:15px;font-weight:700;transition:all .25s;display:flex;box-shadow:0 8px 28px #7c3aed30}.btn-send:hover{transform:translateY(-2px);box-shadow:0 14px 42px #7c3aed44}.card{background:#fff;border:1px solid #e8e4fc;border-radius:20px;transition:all .3s;box-shadow:0 2px 12px #7c3aed08}.card:hover{border-color:#a855f755;transform:translateY(-4px);box-shadow:0 20px 50px #7c3aed14}.chip{color:#6d28d9;background:#ede9fe;border:1px solid #c4b5fd44;border-radius:10px;padding:6px 12px;font-size:13px;font-weight:600}.proj-tag{letter-spacing:.07em;text-transform:uppercase;color:#7c3aed;background:#ede9fe;border:1px solid #c4b5fd55;border-radius:8px;padding:4px 10px;font-size:10px;font-weight:700}.form-label{color:#9090b0;letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px;font-size:12px;font-weight:700;display:block}.form-input{color:#1a1a2e;background:#f8f7ff;border:1.5px solid #e8e4fc;border-radius:12px;outline:none;width:100%;padding:12px 16px;font-family:Plus Jakarta Sans,sans-serif;font-size:14px;transition:all .2s;display:block}.form-input:focus{background:#f3f0ff;border-color:#7c3aed88;box-shadow:0 0 0 3px #7c3aed18}.form-input::placeholder{color:#c4c4da}.social-btn{cursor:pointer;color:#a0a0c0;background:#f4f3ff;border:1.5px solid #e8e4fc;border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;transition:all .25s;display:flex}.social-btn:hover{color:#fff;background:linear-gradient(135deg,#7c3aed,#a855f7);border-color:#0000;transform:translateY(-3px);box-shadow:0 10px 28px #7c3aed33}.testi-quote{color:#7c3aed;opacity:.06;pointer-events:none;z-index:0;font-family:Georgia,serif;font-size:120px;font-weight:900;line-height:1;position:absolute;top:-10px;right:18px}.timeline-line{background:linear-gradient(#7c3aed,#a855f744);width:2px;position:absolute;top:26px;bottom:0;left:12px}.cursor{color:#7c3aed;animation:1s infinite blink}@keyframes blink{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-12px)}to{transform:translateY(0)}}.profile-img{transition:transform .4s,box-shadow .4s}.profile-img:hover{transform:scale(1.06)rotate(1deg);box-shadow:0 20px 60px #7c3aed55}.img-inner{transition:transform .4s}.profile-img:hover .img-inner{transform:scale(1.08)}.chip{color:#6d28d9;cursor:pointer;background:#ede9fe;border:1px solid #c4b5fd44;border-radius:10px;padding:6px 12px;font-size:13px;font-weight:600;transition:all .25s}.chip:hover{color:#fff;background:linear-gradient(135deg,#7c3aed,#a855f7);transform:translateY(-4px)scale(1.05);box-shadow:0 10px 20px #7c3aed33}.fade-up{opacity:0;animation:.8s forwards fadeUp;transform:translateY(30px)}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(40px)scale(.98)}.reveal.active{opacity:1;transform:translateY(0)scale(1)}.reveal-d1{transition-delay:50ms}.reveal-d2{transition-delay:.15s}.reveal-d3{transition-delay:.25s}.reveal-d4{transition-delay:.35s}.about-img-wrap{background:#ede9fe;border-radius:24px;height:540px;position:relative;overflow:hidden}.about-img-wrap img{object-fit:cover;will-change:transform;width:100%;height:100%;transition:transform .8s cubic-bezier(.25,.46,.45,.94)}.about-img-wrap:hover img{transform:scale(1.04)}.about-img-wrap:after{content:"";pointer-events:none;background:linear-gradient(105deg,#0000 30%,#ffffff2e 50%,#0000 70%) -100% 0/200% 100%;border-radius:24px;transition:none;position:absolute;inset:0}.about-img-wrap.shimmer-active:after{animation:1.1s .4s forwards shimmer-once}@keyframes shimmer-once{0%{opacity:1;background-position:-100% 0}80%{opacity:1;background-position:200% 0}to{opacity:0;background-position:200% 0}}.about-img-wrap:before{content:"";z-index:2;pointer-events:none;background:linear-gradient(#7c3aed,#a855f7,#0000);border-radius:0 0 4px 4px;width:3px;height:0%;position:absolute;top:0;left:0}.about-img-wrap.shimmer-active:before{animation:.9s cubic-bezier(.22,1,.36,1) forwards line-grow}@keyframes line-grow{0%{opacity:1;height:0%}to{opacity:1;height:100%}}.proj-card{background:#fff;border:1px solid #e8e4fc;border-radius:20px;transition:border-color .35s,box-shadow .35s,transform .35s;position:relative;overflow:hidden;box-shadow:0 2px 12px #7c3aed08}.proj-card:hover{border-color:#a855f755;transform:translateY(-6px);box-shadow:0 24px 56px #7c3aed18}.proj-card-img{height:200px;position:relative;overflow:hidden}.proj-card-img img{object-fit:cover;will-change:transform;width:100%;height:100%;transition:transform .6s cubic-bezier(.25,.46,.45,.94)}.proj-card:hover .proj-card-img img{transform:scale(1.08)}.proj-card-overlay{opacity:0;background:linear-gradient(#0000 0%,#7c3aed4d 50%,#7c3aedd1 100%);align-items:flex-end;padding:18px;transition:opacity .35s;display:flex;position:absolute;inset:0}.proj-card:hover .proj-card-overlay{opacity:1}.proj-card-overlay-text{color:#fff;letter-spacing:.02em;font-size:13px;font-weight:600;transition:transform .35s;transform:translateY(8px)}.proj-card:hover .proj-card-overlay-text{transform:translateY(0)}.proj-live-dot{color:#7c3aed;letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:6px;font-size:11px;font-weight:700;display:inline-flex}.proj-live-dot:before{content:"";background:#7c3aed;border-radius:50%;width:7px;height:7px;animation:2s infinite pulse-dot;box-shadow:0 0 #7c3aed44}@keyframes pulse-dot{0%{box-shadow:0 0 #7c3aed44}70%{box-shadow:0 0 0 7px #0000}to{box-shadow:0 0 #0000}}@media (max-width:900px){section{padding:70px 0!important}nav div{padding:0 12px!important}nav div div:last-child{overflow-x:auto;gap:6px!important}.hero-grid{text-align:center;grid-template-columns:1fr!important;gap:40px!important}h1{font-size:42px!important;line-height:1.1!important}h2{font-size:18px!important}p{font-size:14px!important}.profile-img{width:240px!important;height:240px!important}.about-grid{grid-template-columns:1fr!important;gap:40px!important}.skills-grid,.projects-grid,#testimonios div[style*=grid-template-columns]{grid-template-columns:1fr!important}#experiencia div[style*="max-width: 720px"]{padding:0 10px}#contacto div[style*="grid-template-columns: 1fr 1fr"]{grid-template-columns:1fr!important}footer div[style*="grid-template-columns: repeat(4, 1fr)"]{grid-template-columns:1fr!important;gap:30px!important}.btn-primary{justify-content:center;width:100%}}.cursor-glow{pointer-events:none;z-index:9999;background:radial-gradient(circle,#7c3aed26,#0000 60%);border-radius:50%;width:250px;height:250px;transition:transform 80ms;position:fixed;transform:translate(-50%,-50%)}.glass{-webkit-backdrop-filter:blur(14px);background:#fff9;border:1px solid #ffffff4d;transition:all .3s;box-shadow:0 4px 20px #7c3aed14}.glass:hover{border:1px solid #7c3aed66;transform:translateY(-6px);box-shadow:0 12px 40px #7c3aed40}.glass:before{content:"";border-radius:inherit;opacity:0;pointer-events:none;background:linear-gradient(120deg,#0000 30%,#ffffff80,#0000 70%);transition:opacity .4s;position:absolute;inset:0}.glass:hover:before{opacity:1;animation:1s shine}@keyframes shine{0%{transform:translate(-100%)}to{transform:translate(100%)}}.proj-card:before{content:none!important;animation:none!important;display:none!important}.testimonial-card{--x:50%;--y:50%;transition:box-shadow .35s,border-color .35s;position:relative;overflow:hidden;flex-direction:column!important;justify-content:flex-start!important;align-items:stretch!important;display:flex!important}.testimonial-card:before{content:"";border-radius:inherit;background:radial-gradient(circle 500px at var(--x) var(--y), #a855f738, #7c3aed14 40%, transparent 70%);opacity:0;pointer-events:none;z-index:0;transition:opacity .35s;position:absolute;inset:0;animation:none!important}.testimonial-card.hovering:before{opacity:1}.testimonial-card>*{z-index:1;position:relative}.testimonial-card .testi-author{padding-top:22px;margin-top:auto!important}.testimonial-card.glass:hover{transform:none}.bg-dots-alt{background-color:#ede9fe;background-image:radial-gradient(circle,#7c3aed12 1px,#0000 1px);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:30px 30px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box}.exp-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffbf;border:1px solid #7c3aed26;border-radius:18px;padding:24px;transition:all .3s}.exp-card:hover{border-color:#a855f766;transform:translateY(-6px)scale(1.02);box-shadow:0 20px 40px #7c3aed26}.reveal-exp{opacity:0;transition:all .7s cubic-bezier(.22,1,.36,1);transform:translateY(40px)translate(-20px)}.reveal-exp.active{opacity:1;transform:translateY(0)translate(0)}.exp-card.active{animation:.8s expGlow}.lang-toggle{position:relative;overflow:hidden}.lang-label{transition:opacity .25s,transform .25s;display:inline-block}.lang-out{opacity:0;pointer-events:none;transform:translateY(-6px)}.fade-t{transition:opacity .25s,transform .25s;display:inline-block}.fade-text{animation:.35s forwards fadeSlideIn}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.lang-toggle:hover{background:#f3f0ff;transform:translateY(-2px)scale(1.05);box-shadow:0 8px 25px #7c3aed33}.lang-toggle:active{transform:scale(.95)}.lang-toggle svg{transition:transform .3s}.lang-toggle:hover svg{transform:rotate(20deg)scale(1.15)}.lang-label{transition:all .25s}.lang-out{opacity:0;transform:translateY(-6px)}.lang-in{opacity:1;transform:translateY(0)}.lang-toggle:after{content:"";background:linear-gradient(120deg,#0000,#ffffff80,#0000);width:50%;height:100%;position:absolute;top:0;left:-75%;transform:skew(-20deg)}.lang-toggle:hover:after{transition:all .6s;left:130%}.download-anim{animation:.6s pulseDownload;transform:scale(.95)}@keyframes pulseDownload{0%{transform:scale(1)}50%{transform:scale(.92)}to{transform:scale(1)}}@media (max-width:768px){.desktop-menu{display:none!important}.hamburger{display:block!important}}
