:root{--shadow: 0 4px 24px rgba(100,60,200,.08);--shadow-hover: 0 8px 32px rgba(100,60,200,.13);--shadow-up: 0 -4px 24px rgba(100,60,200,.08);--bg: #FAFAFA;--bg-card: #F0F0F5;--text: #0F0F11;--text-muted: #6B6B7A;--accent: #7C3AED;--accent-hover: #6D28D9;--border: #E2E2EA;--nav-bg: rgba(250,250,250,.88);--glow: radial-gradient(ellipse 80% 50% at 50% -10%, rgba(124,58,237,.07) 0%, transparent 70%)}[data-theme=dark]{--shadow: 0 2px 0 rgba(255,255,255,.03), 0 8px 32px rgba(100,60,200,.18);--shadow-hover: 0 2px 0 rgba(255,255,255,.05), 0 12px 40px rgba(100,60,200,.26);--shadow-up: 0 -2px 0 rgba(255,255,255,.03), 0 -8px 32px rgba(100,60,200,.18);--bg: #181818;--bg-card: #18181B;--text: #FAFAFA;--text-muted: #939393;--accent: #A78BFA;--accent-hover: #C4B5FD;--border: #27272A;--nav-bg: rgba(24,24,24,.88);--glow: radial-gradient(ellipse 80% 55% at 50% -5%, rgba(167,139,250,.06) 0%, transparent 65%)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:Plus Jakarta Sans,sans-serif;background:var(--bg);color:var(--text);transition:background .4s,color .4s;min-height:100vh}body:before{content:"";position:fixed;inset:0;background:var(--glow);pointer-events:none;z-index:0}nav,section,footer{position:relative;z-index:1}nav{position:fixed;top:0;left:0;right:0;z-index:100;height:64px;padding:0 48px;display:flex;align-items:center;justify-content:space-between;background:var(--nav-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);box-shadow:var(--shadow);transition:background .4s,border-color .4s}.nav-logo{font-family:Fraunces,serif;font-size:1.55rem;letter-spacing:-.02em;color:var(--text);text-decoration:none}.nav-logo span{color:var(--accent)}.nav-links{display:flex;gap:36px;list-style:none}.nav-links a{font-size:.875rem;font-weight:400;letter-spacing:.03em;color:var(--text-muted);text-decoration:none;position:relative;transition:color .2s}.nav-links a:after{content:"";position:absolute;bottom:-3px;left:0;width:0;height:2px;background:var(--accent);border-radius:2px;transition:width .3s}.nav-links a:hover{color:var(--text)}.nav-links a:hover:after{width:100%}.nav-controls{display:flex;align-items:center;gap:10px}.nav-hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;padding:6px}.nav-hamburger span{display:block;width:22px;height:2px;background:var(--text);border-radius:2px;transition:all .25s}.nav-hamburger span:nth-child(2){background:var(--accent)}nav.nav-open .nav-hamburger span:nth-child(1){transform:translateY(7px) rotate(45deg);background:var(--text)}nav.nav-open .nav-hamburger span:nth-child(2){opacity:0}nav.nav-open .nav-hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg);background:var(--accent)}.lang-switch{display:flex;align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:999px;padding:3px;gap:2px}.lang-switch button{font-family:Plus Jakarta Sans,sans-serif;font-size:.75rem;font-weight:500;letter-spacing:.06em;padding:4px 12px;border:none;border-radius:999px;cursor:pointer;background:transparent;color:var(--text-muted);transition:all .2s}.lang-switch button.active{background:var(--accent);color:#fff}.theme-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all .2s}.theme-btn:hover{color:var(--accent);border-color:var(--accent)}.theme-btn svg{width:15px;height:15px}.hero{padding-top:64px;min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.hero-ripple-overlay{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(circle at 50% 50%,#6d28d9,#4c1d95,#2e1065);clip-path:circle(0% at 50% 50%);transition:clip-path 1.1s cubic-bezier(.4,0,.2,1)}.hero.ripple-active .hero-text p{color:#ffffffd9;transition:color .6s ease .3s}.hero.ripple-active .social-row a{background:#fff;border-color:#ffffff4d;color:#6d28d9;transition:background .5s ease .3s,border-color .5s ease .3s,color .5s ease .3s}.hero-inner{max-width:1100px;width:100%;padding:80px 48px 72px;display:flex;flex-direction:column;align-items:center;position:relative;z-index:1}.hero-top{display:flex;align-items:center;justify-content:space-between;gap:48px;width:100%;margin-bottom:40px}.hero-text{flex:1}.hero-text h1{font-family:Fraunces,serif;font-size:clamp(2.8rem,5.5vw,5rem);line-height:1.05;letter-spacing:-.03em;color:var(--text);margin-bottom:20px}.hero-text h1 span,.hero-text h1 em{font-style:normal;display:inline-block;transition:color .4s ease,text-shadow .4s ease}.hero-text h1 span{color:var(--text)}.hero-text h1 em,.hero-text h1:hover span{color:var(--accent);text-shadow:0 0 40px color-mix(in srgb,var(--accent) 50%,transparent)}.hero-text h1:hover em{color:var(--text);text-shadow:none}.hero-text p{font-size:1.05rem;line-height:1.8;color:var(--text-muted);font-weight:300;max-width:560px;transition:color .6s ease}.hero-photo{width:220px;height:260px;flex-shrink:0;border-radius:52% 48% 44% 56%/58% 46% 54% 42%;position:relative;overflow:hidden;box-shadow:var(--shadow);transition:transform .45s cubic-bezier(.34,1.56,.64,1),box-shadow .4s ease;cursor:pointer}.hero-photo:hover{transform:scale(1.04) rotate(-1deg);box-shadow:0 20px 48px #7c3aed4d}.hero-photo-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}.hero-photo:hover .hero-photo-img{transform:scale(1.06)}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-bottom:28px;width:100%}.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:8px;font-family:Plus Jakarta Sans,sans-serif;font-size:.875rem;font-weight:500;text-decoration:none;cursor:pointer;transition:all .22s;white-space:nowrap;border:1.5px solid transparent}.btn svg{width:16px;height:16px;flex-shrink:0}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-outline{background:transparent;border-color:var(--border);color:var(--text)}.btn-outline:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-card)}.social-row{display:flex;gap:12px;align-items:center;justify-content:center}.social-row a{width:40px;height:40px;border-radius:10px;background:var(--bg-card);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-muted);text-decoration:none;transition:all .2s,background .5s ease,border-color .5s ease,color .5s ease;box-shadow:var(--shadow)}.social-row a:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-2px)}.social-row svg{width:18px;height:18px}.section-label{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;display:inline-flex;align-items:center;gap:10px}.section-label:before,.section-label:after{content:"";display:block;width:22px;height:1.5px;background:currentColor;border-radius:2px}.sobre-mi{padding:100px 48px;max-width:1100px;margin:0 auto;width:100%;display:flex;flex-direction:column;align-items:center;text-align:center}.section-title{font-family:Fraunces,serif;font-size:clamp(2rem,3.5vw,3rem);letter-spacing:-.03em;line-height:1.1;color:var(--text);margin-bottom:48px}.section-title em{font-style:italic;color:var(--accent)}.sobre-bio{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:40px 48px;margin-bottom:24px;width:100%;max-width:780px}.sobre-bio p{font-size:1.05rem;line-height:1.85;color:var(--text-muted);font-weight:300;text-align:center}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:100%;max-width:780px}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:28px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;transition:border-color .2s,transform .2s}.stat-card:hover{border-color:var(--accent);transform:translateY(-2px)}.stat-icon{width:40px;height:40px;border-radius:8px;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--accent)}.stat-icon svg{width:18px;height:18px}.stat-label{font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-weight:500}.stat-value{font-family:Fraunces,serif;font-size:1.6rem;letter-spacing:-.02em;color:var(--text);line-height:1}.habilidades{padding:100px 48px;max-width:1100px;margin:0 auto;width:100%;display:flex;flex-direction:column;align-items:center;text-align:center}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;width:100%;margin-top:8px;border:1px solid var(--border);border-radius:16px}.skill-card{position:relative;overflow:hidden;background:transparent;border-right:1px solid var(--border);padding:28px 24px;text-align:left}.skill-card:first-child{border-radius:16px 0 0 16px}.skill-card:last-child{border-right:none;border-radius:0 16px 16px 0}.skill-card-header{display:flex;align-items:center;gap:10px;padding-bottom:16px;margin-bottom:18px;border-bottom:1px solid var(--border)}.skill-card-icon{width:30px;height:30px;border-radius:7px;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--accent);flex-shrink:0}.skill-card-icon svg{width:14px;height:14px}.skill-card-label{font-size:.72rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.skill-tags{display:flex;flex-direction:row;flex-wrap:wrap;gap:6px;align-items:flex-start}.tag{font-size:.78rem;font-weight:400;padding:4px 11px;border-radius:999px;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;cursor:default;user-select:none;opacity:0;transform:translateY(10px);transition:opacity .3s ease,transform .3s ease,background .18s ease,color .18s ease}.tag:hover{background:var(--accent);border-color:var(--accent);color:#fff;transition-delay:0s}.tag-active:after{content:"★";font-size:.6rem;color:var(--text);margin-left:5px;vertical-align:.1em}.skill-card.visible .tag{opacity:1;transform:translateY(0)}.skill-card.visible .tag:nth-child(1){transition-delay:.1s}.skill-card.visible .tag:nth-child(2){transition-delay:.17s}.skill-card.visible .tag:nth-child(3){transition-delay:.24s}.skill-card.visible .tag:nth-child(4){transition-delay:.31s}.skill-card.visible .tag:nth-child(5){transition-delay:.38s}.skill-card.visible .tag:nth-child(6){transition-delay:.45s}.skill-card.visible .tag:nth-child(7){transition-delay:.52s}.skill-card.visible .tag:nth-child(8){transition-delay:.59s}.skill-card.visible .tag:nth-child(9){transition-delay:.66s}.reveal{opacity:0;transform:translateY(28px);transition:opacity .6s ease,transform .6s ease}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.hero-top{animation:fadeUp .65s ease both}.hero-actions{animation:fadeUp .65s .15s ease both}.social-row{animation:fadeUp .65s .28s ease both}.proyectos{padding:100px 48px;max-width:1100px;margin:0 auto;width:100%;display:flex;flex-direction:column;align-items:center;text-align:center}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;width:100%;margin-top:8px}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:12px}.project-tag{font-size:.75rem;padding:3px 10px;border-radius:999px;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;user-select:none}.project-action-overlay{position:absolute;inset:0;background:#00000094;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;gap:24px;opacity:0;transition:opacity .25s ease}.overlay-action-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}.overlay-action{width:52px;height:52px;border-radius:50%;background:#ffffff1a;border:1.5px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;color:#fff;text-decoration:none;transition:all .2s;backdrop-filter:blur(4px)}.overlay-action:hover{background:var(--accent);border-color:var(--accent);transform:scale(1.1)}.overlay-action svg{width:20px;height:20px}.overlay-action-label{font-size:.62rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:#ffffffa6}.project-card{display:flex;flex-direction:column;min-width:300px;transition:transform .45s cubic-bezier(.34,1.56,.64,1)}.project-card:hover{transform:translateY(-8px)}.project-card-border{border-radius:16px;padding:12px;background:var(--border);transition:box-shadow .45s ease;height:100%;position:relative}.project-card-border:before{content:"";position:absolute;inset:0;border-radius:16px;background:linear-gradient(135deg,#3b0f8c,#7c3aed,#a78bfa,#c4b5fd,#7c3aed,#3b0f8c);background-size:300% 300%;opacity:0;transition:opacity .45s ease;z-index:0}.project-card-content{position:relative;z-index:1}.project-card:hover .project-card-border{box-shadow:0 16px 48px #7c3aed59,0 0 0 0 transparent}.project-card:hover .project-card-border:before{opacity:1;animation:cardGradientFlow 3s ease infinite}[data-theme=light] .project-card:hover .project-card-border{box-shadow:0 16px 48px #7c3aed33}@keyframes cardGradientFlow{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.project-card-content{border-radius:6px;background:var(--bg-card);overflow:hidden;display:flex;flex-direction:column;height:100%}.project-img-wrap{position:relative;height:220px;flex-shrink:0;overflow:hidden}.project-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}.project-card:hover .project-img{transform:scale(1.05)}.project-img-logo{width:60%;height:60%;object-fit:contain;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.project-card:hover .project-action-overlay{opacity:1}.project-body{padding:28px 26px 26px;display:flex;flex-direction:column;gap:14px;flex:1}.project-title{font-family:Fraunces,serif;font-size:1.1rem;letter-spacing:-.02em;color:var(--text);text-align:left}.project-desc{font-size:.875rem;line-height:1.7;color:var(--text-muted);font-weight:300;text-align:left;flex:1}.contacto{padding:100px 48px;max-width:1100px;margin:0 auto;width:100%;display:flex;flex-direction:column;align-items:center;text-align:center}.contact-location{display:flex;align-items:center;gap:6px;font-size:.875rem;color:var(--text-muted);margin-bottom:48px}.contact-location svg{width:14px;height:14px;color:var(--accent)}.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;width:100%;max-width:780px}.contact-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:36px 24px;display:flex;flex-direction:column;align-items:center;gap:14px;text-decoration:none;color:inherit;box-shadow:var(--shadow);transition:border-color .2s,transform .2s,box-shadow .2s}.contact-card:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:var(--shadow-hover)}.contact-icon{width:56px;height:56px;border-radius:12px;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:border-color .2s,color .2s,background .2s}.contact-icon svg{width:22px;height:22px}.contact-card:hover .contact-icon{border-color:var(--accent);color:#fff;background:var(--accent)}.contact-card-title{font-family:Fraunces,serif;font-size:1.1rem;letter-spacing:-.02em;color:var(--text)}.contact-card-desc{font-size:.82rem;line-height:1.6;color:var(--text-muted);font-weight:300}.contact-card-link{display:flex;align-items:center;gap:5px;font-size:.82rem;font-weight:500;color:var(--accent)}.contact-card-link svg{width:12px;height:12px}footer{background:var(--bg-card);border-top:1px solid var(--border);box-shadow:var(--shadow-up)}.footer-main{max-width:1100px;margin:0 auto;padding:72px 48px 52px;display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:56px}.footer-logo{font-family:Fraunces,serif;font-size:2.2rem;letter-spacing:-.02em;color:var(--text);text-decoration:none;display:block;margin-bottom:14px}.footer-logo span{color:var(--accent)}.footer-tagline{font-size:.875rem;line-height:1.75;color:var(--text-muted);margin-bottom:24px}.footer-available{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:500;color:var(--text-muted)}.available-dot{width:7px;height:7px;border-radius:50%;background:#4ade80;flex-shrink:0;box-shadow:0 0 8px #4ade80b3;animation:pulse-dot 2.4s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.35}}.footer-col-title{display:block;font-size:.65rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);opacity:.6;margin-bottom:22px}.footer-nav-list{list-style:none;display:flex;flex-direction:column;gap:13px}.footer-nav-list a{font-size:.875rem;color:var(--text-muted);text-decoration:none;transition:color .25s ease,text-shadow .25s ease}.footer-nav-list a:hover{color:var(--accent);text-shadow:0 0 1px var(--accent),.3px 0 0 var(--accent)}.footer-links{display:flex;flex-direction:column}.footer-ext-link{display:block;font-size:.875rem;color:var(--text-muted);text-decoration:none;padding:12px 16px;border-bottom:1px solid var(--border);border-radius:6px;transition:color .2s,background .2s}.footer-ext-link:first-of-type{border-top:1px solid var(--border)}.footer-ext-link:hover{color:var(--accent);background:#7c3aed12}.footer-bottom{max-width:1100px;margin:0 auto;padding:20px 48px 36px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);font-size:.78rem;color:var(--text-muted);flex-wrap:wrap;gap:8px}.footer-bottom span{color:var(--text);font-weight:500}@media (max-width: 700px){.footer-main{grid-template-columns:1fr;gap:40px;padding:52px 24px 40px}.footer-bottom{padding:20px 24px 32px}}@media (max-width: 860px){nav{padding:0 24px}.nav-hamburger{display:flex}.nav-links{display:none;position:fixed;top:64px;left:0;right:0;background:var(--bg-card);border-top:1px solid var(--border);box-shadow:0 12px 32px #0000002e;flex-direction:column;gap:0;padding:8px 0;z-index:99}nav.nav-open .nav-links{display:flex}.nav-links li{text-align:right}.nav-links li a{display:block;padding:14px 28px;font-size:.95rem;border-radius:0;transition:color .2s,background .2s}.nav-links li a:after{display:none}.nav-links li a:hover{color:var(--accent);background:#7c3aed12}.projects-grid{grid-template-columns:repeat(2,1fr);gap:16px}}@media (max-width: 620px){.hero-inner{padding:60px 24px 56px}.hero-top{flex-direction:column-reverse;align-items:center;gap:32px}.hero-text{text-align:center}.hero-text p{max-width:100%}.hero-photo{width:240px;height:280px}.hero-photo-img{object-position:center top}.sobre-mi{padding:64px 24px}.sobre-bio{padding:28px 24px}.stats-grid{grid-template-columns:1fr}.habilidades{padding:64px 24px}.skills-grid{grid-template-columns:repeat(2,1fr)}.skill-card{padding:24px}.proyectos{padding:64px 24px}.projects-grid{grid-template-columns:1fr;gap:14px}.contacto{padding:64px 24px}.contact-grid{grid-template-columns:1fr}footer{padding:24px;flex-direction:column;align-items:flex-start}}@media (max-width: 480px){.skills-grid{grid-template-columns:1fr}}
