:root{color-scheme:dark;--bg: #111111;--panel: #1c1c1c;--text: #e5e5e5;--muted: #9ca3af;--border: #333333;--accent: #3b82f6;--accent-strong: #2563eb;--shadow: 0 12px 24px rgba(0, 0, 0, .3)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);line-height:1.6}.container{width:min(1080px,92vw);margin:0 auto}section{padding:5rem 0}h1,h2,h3{line-height:1.2;margin:0 0 .8rem}h1{font-size:clamp(2rem,4vw,3rem)}h2{font-size:clamp(1.75rem,2.8vw,2rem);font-weight:700;margin-bottom:1.6rem}p{margin:0 0 1rem;color:var(--muted)}.hero{padding:5rem 0 3rem}.hero-layout{display:grid;grid-template-columns:1fr auto;gap:3rem;align-items:center}.hero p.lead{color:var(--text);font-size:clamp(1.05rem,1.6vw,1.2rem);max-width:70ch}.foto-perfil{width:280px;height:280px;object-fit:cover;border-radius:50%;box-shadow:0 8px 32px #0000002e;display:block}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.hero-content{animation:fadeInUp .6s ease both}.hero-foto{animation:fadeInUp .6s ease .2s both}@media(prefers-reduced-motion:reduce){.hero-content,.hero-foto{animation:none}.btn{transition:none}}.button-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.4rem}.btn-primary{display:inline-flex;align-items:center;padding:.65rem 1.5rem;border-radius:6px;font-weight:500;font-size:.95rem;background:var(--accent);color:#fff;text-decoration:none;transition:background .2s,transform .1s}.btn-primary:hover,.btn-primary:focus-visible{background:var(--accent-strong);transform:translateY(-1px)}.btn-secondary{display:inline-flex;align-items:center;padding:.65rem 1.5rem;border-radius:6px;font-weight:500;font-size:.95rem;border:1.5px solid #94a3b8;color:var(--text);text-decoration:none;background:transparent;transition:border-color .2s,text-decoration .1s,transform .1s}.btn-secondary:hover,.btn-secondary:focus-visible{border-color:var(--accent);color:var(--accent);text-decoration:underline;transform:translateY(-1px)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:1rem;padding:1.1rem;box-shadow:var(--shadow)}.portfolio-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;max-width:1100px;margin:0 auto;padding:0 1.5rem}.proyecto-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 1px 6px #0000000f;transition:transform .25s ease,box-shadow .25s ease}.proyecto-card:hover{transform:translateY(-5px);box-shadow:0 8px 28px #0000001a}.proyecto-imagen{width:100%;height:200px;overflow:hidden}.proyecto-imagen img{width:100%;height:100%;object-fit:cover;object-position:top}.proyecto-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.proyecto-placeholder-bigdata{background:linear-gradient(135deg,#f97316,#eab308)}.proyecto-placeholder-gemini{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.proyecto-contenido{padding:1.5rem}.proyecto-contenido h3{margin-bottom:.5rem}.tags{display:flex;flex-wrap:wrap;gap:.45rem;padding:0;list-style:none;margin:.8rem 0 0}.tags li{border:1px solid var(--border);border-radius:999px;padding:.2rem .55rem;font-size:.85rem;color:var(--muted)}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem}.skills .card h3{font-size:1rem}.notice{border-left:4px solid var(--border);background:var(--panel);padding:1rem 1.1rem;border-radius:.6rem}footer{padding:2rem 0 3rem;border-top:1px solid var(--border)}.footer-dark{background:#111;border-top:1px solid #333333;border-radius:1rem;padding:3rem;margin:2rem 0 3rem}.footer-dark h2{color:#e5e5e5}.footer-dark p{color:#9ca3af}.footer-dark a{color:var(--accent);text-decoration:underline}.footer-dark a:hover,.footer-dark a:focus-visible{color:var(--accent-strong)}.contact-links{list-style:none;padding:0;margin:1.5rem 0 0;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:2rem}.contact-links a{display:inline-flex;align-items:center;gap:.6rem;font-size:1.1rem;text-decoration:none;color:var(--accent)}.contact-links a:hover,.contact-links a:focus-visible{color:var(--accent-strong);text-decoration:underline}a{color:var(--accent);text-decoration:underline}a:hover,a:focus-visible{color:var(--accent-strong)}#portfolio{padding:6rem 0}.reveal{opacity:0;transform:translateY(20px);transition:opacity .9s ease-out,transform .9s ease-out}.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}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}.editor-block{background:#1e1e1e;border-radius:10px;overflow:hidden;border:1px solid #3a3a3a;max-width:760px;margin:2.5rem auto 0}.editor-bar{background:#252525;padding:10px 16px;display:flex;align-items:center;gap:7px;border-bottom:1px solid #3a3a3a}.editor-bar .dot{width:11px;height:11px;border-radius:50%}.dot-red{background:#f38ba8}.dot-yellow{background:#f9e2af}.dot-green{background:#a6e3a1}.editor-filename{color:#6c7086;font-size:12px;font-family:Consolas,JetBrains Mono,Fira Code,monospace;margin-left:8px}.editor-body{padding:20px 24px;font-family:Consolas,JetBrains Mono,Fira Code,monospace}.editor-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px;line-height:1.9;font-size:.9rem}.editor-line .ln{color:#555;font-size:11px;min-width:18px;text-align:right;user-select:none}.editor-line .kw{color:#569cd6}.editor-line .fw{color:#4ec9b0}.editor-line .tool{color:#dcdcaa}.editor-line .area{color:#ce9178}.editor-line .num{color:#b5cea8}.editor-line .cmt{color:#6a9955;font-style:italic}.editor-line .sep{color:gray}@media(max-width:640px){.editor-body{padding:14px 16px}.editor-line{font-size:.78rem}}@media(max-width:768px){.hero-layout,.portfolio-grid{grid-template-columns:1fr}.hero-foto{order:-1;text-align:center}.foto-perfil{width:120px;height:120px;margin:0 auto 1.5rem}}@media(max-width:640px){section{padding:3rem 0}.hero{padding-top:3rem}.footer-dark{padding:2rem 1.2rem;border-radius:.75rem}}
