:root{--sidebar-w:230px;--topbar-h:48px;--linea:#151515;--texto:#111;--fondo:#fff;--gris:#6b6b6b;--magenta:#ec2f87;--magenta-soft:#ffd4e7;--font-mono:"Courier New",Courier,monospace;--margen:clamp(22px,4vw,52px)}
*{box-sizing:border-box}html{scroll-padding-top:calc(var(--topbar-h) + 20px)}html,body{margin:0;min-height:100%;font-family:var(--font-mono);color:var(--texto);background:var(--fondo)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.app{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);border-right:1px solid var(--linea);background:var(--fondo);z-index:20;overflow-y:auto}.sidebar-top{height:var(--topbar-h);display:flex;align-items:center;padding:0 20px;border-bottom:1px solid var(--linea)}.sidebar-title{font-weight:bold;font-size:15px}.proyectos-nav{padding:22px 20px}.proyectos-label{display:block;margin-bottom:12px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--gris)}#lista-proyectos,.indice-proyectos{list-style:none;margin:0;padding:0}#lista-proyectos li{margin-bottom:10px}#lista-proyectos a,.sidebar-secondary a{display:inline-block;font-size:14px;line-height:1.4;border-bottom:1px solid transparent}.sidebar-secondary{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:30px;padding-top:18px;border-top:1px solid #d7d7d7}.col-derecha{margin-left:var(--sidebar-w);flex:1;min-width:0}.topbar{position:fixed;top:0;left:var(--sidebar-w);right:0;height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--linea);background:rgba(255,255,255,.96);backdrop-filter:blur(8px);z-index:30}.topbar-item{font:13px var(--font-mono);letter-spacing:.03em}.topbar-separado{padding-left:22px;border-left:1px solid var(--linea)}.lang-btn{background:none;border:1px solid var(--linea);padding:3px 9px;cursor:pointer}.contenido{padding:calc(var(--topbar-h) + var(--margen)) var(--margen) var(--margen);max-width:1280px;margin:0 auto}.page{display:none;scroll-margin-top:calc(var(--topbar-h) + 22px)}.page.activa{display:block}.page-title{font-size:20px;margin:0 0 28px;line-height:1.2}.topbar-item:hover,.topbar-item:focus-visible,.topbar-item:active,.topbar-item.activo,#lista-proyectos a:hover,#lista-proyectos a:focus-visible,#lista-proyectos a:active,#lista-proyectos a.activo,.sidebar-secondary a:hover,.sidebar-secondary a:focus-visible,.sidebar-secondary a:active,.sidebar-secondary a.activo,.indice-proyectos a:hover,.indice-proyectos a:focus-visible,.indice-proyectos a:active,.project-meta a:hover,.project-meta a:focus-visible,.project-meta a:active,.contacto-correo a:hover,.contacto-correo a:active,.bio-descarga:hover,.bio-descarga:active{color:var(--magenta);border-color:var(--magenta);outline-color:var(--magenta)}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--magenta);outline-offset:2px}.lang-btn:hover,.lang-btn:active,.lang-btn.activo,.form-contacto button:hover,.form-contacto button:active,.form-contacto button:focus-visible{background:var(--magenta);border-color:var(--magenta);color:#fff}
.page-inicio{width:100%}.inicio-layout{width:100%}.grafo-wrap{position:relative;width:100%;min-height:calc(100vh - var(--topbar-h) - (var(--margen) * 2));overflow:hidden;background:#f7f7f7}#grafo-conceptos,#grafo-conceptos svg{width:100%;height:100%;min-height:inherit;display:block}#grafo-conceptos svg{cursor:grab}#grafo-conceptos svg:active{cursor:grabbing}.node{cursor:pointer}.node-symbol{stroke:#ec2f87;stroke-width:.5px}.node-text{font:11px var(--font-mono);font-weight:normal;pointer-events:none;fill:#4b5563}.link{stroke:#9ca3af;stroke-opacity:.5;stroke-width:1px}.grafo-etiqueta{position:absolute;left:14px;bottom:8px;margin:0;font-size:11px;color:var(--gris);pointer-events:none}.indice-proyectos li{border-bottom:1px solid var(--linea)}.indice-proyectos a{display:block;padding:14px 2px;font-size:15px}
.project-meta{margin:0 0 12px;font-size:12px;color:var(--gris)}.project-meta a{color:var(--texto);border-bottom:1px solid var(--texto)}.project-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;align-items:start}.project-column{display:flex;flex-direction:column;gap:20px}.project-column p,.proyecto-texto-simple p,.entre-textos p,.bio-derecha p{font-size:14px;line-height:1.65;margin:0}.project-column img{width:100%;height:auto;margin-top:4px}.umbral-layout{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(300px,.88fr);gap:42px;align-items:start}.proyecto-texto-simple{display:flex;flex-direction:column;gap:20px}.umbral-gif{width:100%;height:auto}.epigrafe{font-style:italic;font-size:15px;line-height:1.6;max-width:760px;padding-left:18px;border-left:2px solid var(--magenta);margin:0 0 40px;color:var(--gris)}.entre-textos{display:flex;flex-direction:column;gap:28px;width:100%;margin-bottom:42px}.idioma-label{display:block;margin-bottom:8px;font-size:11px;color:var(--magenta);letter-spacing:.1em}.entre-galeria{display:flex;flex-direction:column;gap:30px}.entre-galeria img{width:100%;height:auto}.proximamente{font-size:14px;color:var(--gris)}
.bio-grid{display:grid;grid-template-columns:minmax(280px,420px) 1fr;gap:50px;align-items:start}.bio-izquierda{display:flex;flex-direction:column;gap:14px}.bio-descarga,.contacto-correo a{font-size:13px;border-bottom:1px solid var(--linea);width:fit-content}.bio-lugar{font-weight:normal;color:var(--gris);font-size:15px}.bio-derecha p{margin-bottom:18px}.firma{width:107px;height:35px;max-width:none;margin:0 auto 24px}.contacto-correo{font-size:15px;margin:0 0 30px;text-align:center}.form-contacto{display:flex;flex-direction:column;gap:6px;max-width:460px;margin:0 auto 40px}.form-contacto label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--gris);margin-top:10px}.form-contacto input,.form-contacto textarea{font:14px var(--font-mono);padding:8px 10px;border:1px solid var(--linea);background:#fff;resize:vertical}.form-contacto button{margin-top:14px;align-self:flex-start;font:13px var(--font-mono);padding:8px 20px;background:var(--linea);color:#fff;border:1px solid var(--linea);cursor:pointer}
@media(max-width:920px){:root{--sidebar-w:190px}.topbar{padding:0 14px;gap:12px}.topbar-separado{padding-left:10px}.grafo-wrap{min-height:calc(100vh - var(--topbar-h) - (var(--margen) * 2))}.project-columns,.umbral-layout,.bio-grid{grid-template-columns:1fr}.umbral-gif{max-width:620px}}
@media(max-width:620px){:root{--sidebar-w:0px;--margen:18px}.sidebar{position:fixed;inset:0 0 auto 0;width:100%;height:var(--topbar-h);border-right:0;border-bottom:1px solid var(--linea);overflow:hidden;z-index:40}.sidebar-top{justify-content:center}.proyectos-nav{display:none}.app{display:block}.col-derecha{margin-left:0}.topbar{left:0;top:var(--topbar-h);overflow-x:auto;justify-content:flex-start;background:#fff}.topbar-item{white-space:nowrap}.contenido{padding-top:calc(var(--topbar-h) * 2 + var(--margen))}.page-inicio{overflow:hidden}.grafo-wrap{height:calc(100svh - (var(--topbar-h) * 2) - (var(--margen) * 2));min-height:360px;max-height:720px;overflow:hidden;overscroll-behavior:contain}#grafo-conceptos,#grafo-conceptos svg{height:100%;min-height:0;touch-action:none}.project-columns{gap:32px}.page-title{margin-bottom:22px}}

/* Alineación compartida entre texto e imágenes de las dos columnas */
.project-columns{grid-template-rows:auto auto;gap:20px 40px}
.project-column{display:grid;grid-template-rows:subgrid;grid-row:span 2;gap:20px}
.project-copy{display:flex;flex-direction:column;gap:18px}
.project-column img{margin:0;align-self:start}
.project-column img{width:100%;height:auto;object-fit:cover;object-position:center}
.node-text{pointer-events:all;cursor:pointer}
.node-symbol{filter:drop-shadow(0 0 3px rgba(255,47,146,.9))}

/* Hiper_Archivo integrado */
.page-archivo{min-height:calc(100vh - var(--topbar-h) - (var(--margen) * 2))}
.archivo-title{width:100%;font-size:18px;font-weight:bold;color:#ff2f92;margin:0 0 30px}
.archivo-cursor{display:inline-block;width:10px;height:22px;margin-left:3px;vertical-align:middle;background:#ff2f92;animation:archivo-blink 1s step-start infinite;box-shadow:0 0 10px rgba(255,47,146,.8)}
@keyframes archivo-blink{50%{opacity:.25}}
.archivo-tags{display:flex;flex-wrap:wrap;align-content:flex-start}
.archivo-tag,.archivo-related{font:14px var(--font-mono);margin:5px;padding:5px 10px;border:0;background:transparent;color:#111;cursor:pointer;transition:color .15s,box-shadow .2s}
.archivo-tag:hover,.archivo-tag:focus-visible,.archivo-related:hover,.archivo-related:focus-visible{color:#ff2f92;box-shadow:0 0 14px 5px rgba(255,47,146,.45);outline:none}
.archivo-loading{font-size:13px;color:var(--gris)}
.archivo-popup{position:fixed;top:10%;left:calc(var(--sidebar-w) + 8%);right:8%;height:calc(80% - 30px);display:grid;grid-template-columns:1fr 1fr;background:#fff;border:2px solid #ff2f92;color:#111;padding:20px;overflow:hidden;box-shadow:0 0 24px rgba(255,47,146,.3);z-index:100}
.archivo-popup-left,.archivo-popup-right{overflow-y:auto;padding:12px}.archivo-popup-left{border-right:1px solid #ff2f92}.archivo-popup-header{font-size:20px;font-weight:bold;color:#ff2f92;margin-bottom:20px}.archivo-popup-link{display:inline-block;margin:2px 0;padding:2px 5px;border-bottom:1px solid transparent}.archivo-popup-link:hover,.archivo-popup-link:focus-visible{color:#ff2f92;border-color:#ff2f92}.archivo-popup-close{position:absolute;top:10px;right:14px;border:0;background:transparent;color:#ff2f92;font:700 18px var(--font-mono);cursor:pointer}.archivo-popup ::-webkit-scrollbar{width:9px}.archivo-popup ::-webkit-scrollbar-thumb{background:#ff2f92;border-radius:6px}.archivo-error{color:#ff2f92;font-size:13px}

@media(max-width:920px){
  .project-columns{grid-template-rows:auto;gap:32px}
  .project-column{display:flex;grid-row:auto}
  .project-column img{height:auto}
  .archivo-popup{left:calc(var(--sidebar-w) + 3%);right:3%;grid-template-columns:1fr}.archivo-popup-left{border-right:0;border-bottom:1px solid #ff2f92}
}

@media(max-width:920px){
  .project-column img{height:auto;max-height:none;object-fit:contain}
}
.form-estado{min-height:18px;margin:8px 0 0;font-size:12px;color:var(--magenta)}

/* Ajustes finales del grafo */
.page-inicio,.inicio-layout,.grafo-wrap,#grafo-conceptos,#grafo-conceptos svg{background:#fff!important}
.nodes{isolation:isolate}
.node-text{paint-order:stroke fill;stroke:#fff;stroke-width:2.5px;stroke-linejoin:round}
@media(max-width:920px){
  .node-text{font-size:9px}
  .node-symbol{filter:drop-shadow(0 0 2px rgba(255,47,146,.75))}
}
