:root{--bg: #000000;--bg-soft: #04120c;--text: #f3f4f6;--muted: #d1d5db;--accent: #34d399;--card: #020a07;--border: #10b981;--header-bg: rgba(0, 0, 0, .95);--footer-bg: rgba(0, 0, 0, .9);--header-height: 4rem}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}html{scroll-behavior:smooth;scroll-snap-type:y mandatory;scroll-padding-top:calc(var(--header-height) + .75rem)}a{color:var(--accent);text-decoration:none;transition:color .2s ease,text-shadow .2s ease}a:hover{text-decoration:underline;text-shadow:0 0 10px rgba(52,211,153,.55)}.container{width:min(100% - 2rem,980px);margin-inline:auto}.section{padding:4rem 0;border-top:none;min-height:calc(100svh - var(--header-height));scroll-margin-top:calc(var(--header-height) + .75rem);scroll-snap-align:center}.section+.section{background:transparent}.section>.container{min-height:calc(100svh - var(--header-height) - 8rem);display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:left}.hero>.container{align-items:center;text-align:center}#proyectos>.container>h2{width:100%;text-align:center}.js-enhanced .section{opacity:.76;transform:translateY(10px);transition:opacity .4s ease,transform .4s ease}.js-enhanced .section.is-visible{opacity:.88;transform:translateY(0)}.js-enhanced .section.is-active{opacity:1}.site-header{position:sticky;top:0;z-index:1000;background:var(--header-bg);backdrop-filter:blur(6px);border-bottom:1px solid var(--border);box-shadow:0 0 14px #10b9812e}.nav-wrapper{display:flex;align-items:center;justify-content:space-between;min-height:4rem}.logo{font-weight:700;color:var(--text)}.nav-list{list-style:none;display:flex;align-items:center;gap:1rem;margin:0;padding:0}.nav-list li{display:flex;align-items:center}.nav-list a{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.92rem}.nav-contact-btn{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.92rem;color:var(--accent);background:transparent;border:none;padding:0;cursor:pointer;transition:color .2s ease,text-shadow .2s ease}.nav-contact-btn:hover{text-decoration:underline;text-shadow:0 0 10px rgba(52,211,153,.55)}.hero{padding:6rem 0 5rem;background:radial-gradient(circle at 20% 0%,rgba(52,211,153,.08),transparent 40%);min-height:calc(100svh - var(--header-height));scroll-margin-top:calc(var(--header-height) + .75rem)}@media(max-width:768px){.nav-wrapper{flex-wrap:wrap;gap:.65rem 1rem;padding-top:.7rem;padding-bottom:.7rem}.nav-wrapper nav{width:100%}.logo{display:inline-block;margin-right:.5rem}.nav-list{flex-wrap:wrap;justify-content:flex-start;gap:.55rem .9rem}.nav-list a,.nav-contact-btn{font-size:.84rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;scroll-snap-type:none}.js-enhanced .section,.js-enhanced .section.is-visible,.js-enhanced .section.is-active{opacity:1;transform:none;transition:none}.section{scroll-snap-align:none}}.eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;margin-bottom:.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}h1,h2,h3{line-height:1.2;margin-top:0}h1{font-size:clamp(2rem,5vw,3.4rem)}.hero-copy{max-width:60ch;color:var(--muted)}.btn{display:inline-block;margin-top:1rem;background:#000;color:var(--accent);border:1px solid var(--accent);padding:.7rem 1.2rem;border-radius:.5rem;font-weight:600;transition:box-shadow .2s ease,transform .2s ease}.btn:hover{text-decoration:none;box-shadow:0 0 15px #34d39980;transform:translateY(-1px)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1.5rem;margin-top:1.5rem;width:100%;text-align:left}.projects-grid--single,.projects-grid:has(>.card:only-child){display:flex;justify-content:center}.projects-grid--single .card,.projects-grid:has(>.card:only-child) .card{width:min(100%,540px)}.card{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:1.25rem;box-shadow:inset 0 0 0 1px #34d39912;transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease;display:flex;flex-direction:column}.card:hover{border-color:#34d399;box-shadow:0 0 18px #34d39959;transform:translateY(-2px)}.project-cover{width:100%;aspect-ratio:16 / 9;height:auto;min-height:180px;object-fit:cover;border-radius:.5rem;border:1px solid var(--border);margin-bottom:.9rem}.project-cover--placeholder,.project-detail-cover--placeholder{display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,rgba(52,211,153,.18),transparent 45%),linear-gradient(135deg,#10b98114,#020a07a6);color:var(--text);text-align:center}.project-cover--placeholder span,.project-detail-cover--placeholder span{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.92rem;letter-spacing:.03em;opacity:.95;padding:0 .75rem}.project-short-desc{color:var(--muted);line-height:1.55;margin:.4rem 0 1rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.project-actions{display:flex;gap:1rem;margin-top:auto;padding-top:.5rem;flex-wrap:wrap}.project-actions--izquierda{justify-content:flex-start}.project-actions--centro{justify-content:center}.project-actions--derecha{justify-content:flex-end}.project-actions a{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.card p,.empty-state,#sobre-mi p,#contacto p{color:var(--muted)}#sobre-mi p+p{margin-top:.75rem}.contact-links{margin-top:.75rem}.contact-form{display:grid;gap:.6rem;margin-top:.5rem;width:100%}.contact-form label{font-size:.9rem;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.contact-form input,.contact-form textarea{width:100%;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:.5rem;padding:.65rem .75rem;font:inherit}.contact-form input:focus,.contact-form textarea:focus{outline:none;box-shadow:0 0 0 2px #34d39940}.contact-submit{width:fit-content;margin-top:.35rem;color:var(--text);background:linear-gradient(135deg,#10b98133,#04120cf2);border-color:var(--border);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.contact-submit:hover{box-shadow:0 0 14px #34d39961}.contact-submit:disabled{opacity:.6;cursor:not-allowed}.contact-status{margin:0;min-height:1.2rem;color:var(--muted);border-radius:.5rem;padding:.35rem .55rem;border:1px solid transparent;font-size:.9rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.contact-status.is-loading{color:#bbf7d0;background:#10b9811a;border-color:#10b98147}.contact-status.is-success{color:#d1fae5;background:#10b98124;border-color:#10b98185;box-shadow:inset 0 0 0 1px #34d3992e}.contact-status.is-error{color:#fde68a;background:#f59e0b1f;border-color:#f59e0b66}.contact-honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.contact-modal{border:none;padding:0;width:min(100% - 2rem,680px);background:transparent}.contact-modal::backdrop{background:#000000bf;backdrop-filter:blur(3px)}.contact-modal-card{border:1px solid var(--border);border-radius:.85rem;background:var(--card);box-shadow:0 0 22px #34d39947;padding:1rem}.contact-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.contact-modal-header h2{margin:0;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;letter-spacing:.02em;text-shadow:0 0 8px rgba(52,211,153,.2)}.contact-modal-close{border:1px solid var(--border);background:transparent;color:var(--text);width:2rem;height:2rem;border-radius:.45rem;cursor:pointer}.contact-modal-close:hover{box-shadow:0 0 10px #34d39966}.contact-modal-copy{margin:.65rem 0 .35rem;color:var(--muted)}.project-detail{max-width:820px}.project-detail-cover-wrapper{margin:.8rem 0 1.2rem;padding:0;width:100%}.project-detail-cover{width:100%;aspect-ratio:16 / 9;max-height:440px;object-fit:cover;border-radius:.75rem;border:1px solid var(--border);display:block}.project-detail-cover--placeholder{max-height:none;min-height:260px;margin:.8rem 0 1rem}.lightbox-trigger-btn{background:transparent;border:none;padding:0;cursor:pointer;width:100%;position:relative;display:block;border-radius:.75rem;overflow:hidden;text-align:left}.lightbox-trigger-btn:hover .project-detail-cover{border-color:#34d399;box-shadow:0 0 18px #34d39959}.lightbox-zoom-badge{position:absolute;bottom:.75rem;right:.75rem;background:#000000d9;border:1px solid var(--border);color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8rem;padding:.35rem .65rem;border-radius:.4rem;display:inline-flex;align-items:center;gap:.4rem;backdrop-filter:blur(4px);transition:background-color .2s ease,border-color .2s ease}.lightbox-trigger-btn:hover .lightbox-zoom-badge{background:#04120cf2;border-color:var(--accent)}.project-richtext{color:var(--muted)}.project-richtext>*:first-child{margin-top:0}.project-richtext p,.project-richtext li,.project-richtext blockquote{color:var(--muted);line-height:1.7}.project-richtext p+p,.project-richtext ul,.project-richtext ol,.project-richtext blockquote{margin-top:1rem}.project-richtext ul,.project-richtext ol{padding-left:1.25rem}.project-richtext strong,.project-richtext b{color:var(--text)}.project-richtext code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;background:#34d39914;border:1px solid rgba(52,211,153,.18);border-radius:.35rem;padding:.1rem .35rem;color:var(--text)}.project-richtext blockquote{margin-inline:0;padding-left:1rem;border-left:2px solid var(--border)}.project-gallery-section{margin-top:2.2rem;width:100%}.project-gallery-section h2{font-size:1.3rem;margin-bottom:.9rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.project-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:1rem;margin:1rem 0;width:100%}.gallery-item-btn{background:transparent;border:none;padding:0;cursor:pointer;position:relative;border-radius:.5rem;overflow:hidden;display:block;width:100%;aspect-ratio:16 / 10;transition:transform .2s ease,box-shadow .2s ease}.gallery-item-btn:hover{transform:translateY(-2px);box-shadow:0 0 16px #34d39966}.gallery-item-btn img{width:100%;height:100%;object-fit:cover;border-radius:.5rem;border:1px solid var(--border);display:block;transition:border-color .2s ease}.gallery-item-btn:hover img{border-color:var(--accent)}.gallery-hover-overlay{position:absolute;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;color:var(--accent);opacity:0;transition:opacity .2s ease}.gallery-item-btn:hover .gallery-hover-overlay{opacity:1}.project-demo-action{margin-top:2rem}.back-link{display:inline-block;margin-bottom:1rem}.lightbox-modal{position:fixed;inset:0;width:100vw;height:100vh;max-width:100vw;max-height:100vh;background:#020805;color:var(--text);overflow:hidden;z-index:999999;display:flex;align-items:stretch;justify-content:center;box-sizing:border-box}.lightbox-modal:fullscreen,.lightbox-modal:-webkit-full-screen{width:100vw;height:100vh;background:#020805}.lightbox-container{display:flex;flex-direction:column;width:100%;height:100%;padding:1rem 1.5rem;box-sizing:border-box;background:#020805}.lightbox-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:.75rem;border-bottom:1px solid rgba(16,185,129,.25);min-height:2.75rem;flex-shrink:0}.lightbox-counter{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.95rem;color:var(--accent);background:#34d3991a;border:1px solid rgba(52,211,153,.3);padding:.25rem .6rem;border-radius:.35rem}.lightbox-title{font-size:.95rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}.lightbox-actions{display:flex;align-items:center;gap:.5rem}.lightbox-btn{background:#04120ccc;border:1px solid var(--border);color:var(--text);width:2.25rem;height:2.25rem;border-radius:.45rem;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.1rem;transition:border-color .2s ease,box-shadow .2s ease,color .2s ease}.lightbox-btn:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 0 10px #34d39966}.lightbox-main{flex:1;display:flex;align-items:center;justify-content:space-between;position:relative;min-height:0;margin-top:.75rem}.lightbox-stage{flex:1;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:.5rem}.lightbox-active-img{max-width:100%;max-height:calc(100vh - 7rem);object-fit:contain;border-radius:.5rem;border:1px solid rgba(16,185,129,.35);box-shadow:0 0 30px #000c,0 0 15px #34d39926;user-select:none}.lightbox-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;border:1px dashed var(--border);border-radius:.75rem;background:#04120c99;max-width:460px}.lightbox-fallback-icon{font-size:2.5rem;margin-bottom:.75rem}.lightbox-fallback p{margin:0 0 .5rem;color:var(--text);font-size:1.05rem}.lightbox-fallback small{color:var(--muted);font-size:.85rem;line-height:1.4}.lightbox-nav-btn{background:#000000a6;border:1px solid var(--border);color:var(--text);font-size:2.5rem;line-height:1;width:3rem;height:3.5rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10;backdrop-filter:blur(4px);user-select:none}.lightbox-nav-btn:hover{border-color:var(--accent);color:var(--accent);background:#04120ce6;box-shadow:0 0 14px #34d39973}@media(max-width:768px){.lightbox-container{padding:.75rem .5rem}.lightbox-title{display:none}.lightbox-nav-btn{position:absolute;width:2.5rem;height:3rem;font-size:2rem;background:#000c}.lightbox-nav-btn--prev{left:.5rem}.lightbox-nav-btn--next{right:.5rem}.lightbox-active-img{max-height:calc(100vh - 6rem)}}.site-footer{border-top:1px solid var(--border);background:var(--footer-bg);padding:1.5rem 0;scroll-snap-align:end;scroll-snap-stop:normal}.site-footer p{margin:0;color:var(--muted);text-align:center}
