:root{--ink:#16384c;--blue:#146d94;--teal:#158479;--paper:#f3f7fa;--line:#cedce5;--muted:#567084;--pending:#91a1ad}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 'Segoe UI',Arial,sans-serif}a{color:var(--blue)}button,input,select{font:inherit}button,select{cursor:pointer}button{background:white;color:var(--ink);border:1px solid var(--line);border-radius:5px;padding:8px 13px}button:hover{background:#e6f1f5}button:disabled{opacity:.5;cursor:wait}:focus-visible{outline:3px solid var(--teal);outline-offset:3px}.masthead{display:flex;justify-content:space-between;align-items:center;padding:18px 4vw;background:white;border-bottom:1px solid var(--line)}.masthead-actions{display:flex;align-items:center;gap:16px}.lang-switcher{display:flex;gap:4px}.lang-switcher button{padding:5px 10px;font-size:11px;font-weight:700;letter-spacing:.5px;border-radius:4px}.lang-switcher button[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:white}.brand{font-size:28px;font-weight:750;text-decoration:none;letter-spacing:-1px}.brand span{font:11px 'Segoe UI',sans-serif;letter-spacing:2px;margin-left:16px}main{max-width:1540px;margin:auto;padding:0 4vw 50px}.intro{display:flex;justify-content:space-between;gap:40px;align-items:end;padding:45px 0 30px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700}h1{font-family:Georgia,serif;font-size:clamp(36px,4.2vw,62px);font-weight:400;line-height:1.06;letter-spacing:-1.7px;margin:12px 0 20px}.subtitle{max-width:570px;color:var(--muted);margin:0}.profile{font-size:14px;border-left:3px solid var(--teal);padding-left:22px;max-width:380px}.profile p:first-child{font-weight:650}.filters{display:flex;gap:16px;align-items:end;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0}.filters label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;min-width:85px}.filters label:nth-child(n+3){flex:1;min-width:0}select,input{background:white;color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:9px;width:100%}#status{font-size:13px;color:var(--muted);min-height:21px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 290px;grid-template-rows:1fr;height:clamp(560px,calc(100vh - 150px),920px);border:1px solid var(--line);background:white;border-radius:8px;overflow:hidden}.network-panel{min-width:0;min-height:0;display:flex;flex-direction:column}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 22px}h2{font-size:19px;margin:0;font-weight:600}.legend{display:flex;gap:18px;flex-wrap:wrap;padding:0 22px;font-size:11px;color:var(--muted)}.legend span:before{content:'';display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.seed-dot:before{background:var(--teal)}.author-dot:before{background:var(--blue)}.pending-dot:before{background:var(--pending)}#network{display:block;width:100%;flex:1;height:auto;min-height:0;background:radial-gradient(ellipse at center,#edf5f9 0,white 70%);touch-action:none}.graph-hint{margin:0 22px 16px;font-size:12px;color:var(--muted)}.panel-footer{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid var(--line);padding:14px 22px;font-size:12px}.details{border-left:1px solid var(--line);padding:20px;background:#f9fbfc;display:flex;flex-direction:column;min-height:0}.details label{display:block;font-size:13px;margin:16px 0 6px}.author-list{flex:1;min-height:0;overflow:auto;margin-top:15px}.author-item{display:block;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;width:100%;padding:10px 4px;background:transparent;font-size:14px}.author-item small{display:block;color:var(--muted);font-size:12px}.author-item[aria-pressed=true]{background:#dceef4}.author-item.pending{color:var(--muted);font-style:italic}.author-item.pending small{font-style:normal}.id-dot{display:inline-flex;align-items:center}.id-dot:before{content:'';width:8px;height:8px;border-radius:50%;margin-right:7px;flex:none}.id-dot.seed:before{background:var(--teal)}.id-dot.confirmed:before{background:var(--blue)}.id-dot.pending:before{background:var(--pending)}.bibliography{margin-top:30px;background:white;border:1px solid var(--line);border-radius:8px}.publication{display:grid;grid-template-columns:65px 1fr;gap:15px;padding:20px 24px;border-top:1px solid var(--line)}.publication h3{font-size:16px;line-height:1.4;margin:0 0 7px}.publication p{font-size:13px;color:var(--muted);margin:4px 0}.publication details{font-size:12px;color:var(--muted)}.publication summary{cursor:pointer}.pub-year{font:24px Georgia,serif;color:var(--teal)}#more{margin:15px 24px}.methodology{display:grid;grid-template-columns:1fr 2fr;gap:40px;padding-top:40px}.methodology p{font-size:13px;color:var(--muted);margin-top:0}.metrics{margin-top:30px;background:white;border:1px solid var(--line);border-radius:8px;padding-bottom:4px}
.metrics .graph-hint{margin:0 22px 16px}
.metrics-result{padding:0 22px 20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.metrics-result:empty{display:none}
.metric-card h3{font-size:13px;margin:0 0 4px;color:var(--muted);font-weight:700;letter-spacing:.4px;text-transform:uppercase}
.metric-card ol{margin:0;padding-left:18px;font-size:13px}
.metric-card li{margin:4px 0}
.metric-card .val{font-variant-numeric:tabular-nums;color:var(--teal);font-weight:600}
.metrics-summary{grid-column:1/-1;display:flex;gap:22px;flex-wrap:wrap;font-size:13px;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:2px}
.metrics-summary b{color:var(--ink);font-variant-numeric:tabular-nums}
.empty{padding:24px;color:var(--muted)}@media(max-width:850px){.intro{align-items:start;flex-direction:column;gap:20px}.profile{max-width:none}.workspace{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto}.network-panel{height:clamp(400px,calc(100vh - 200px),700px)}.details{border-left:0;border-top:1px solid var(--line);height:auto}.author-list{max-height:230px}.filters{flex-wrap:wrap}.filters label:nth-child(n){flex:1 1 40%}.methodology{grid-template-columns:1fr;gap:15px}}@media(max-width:480px){.masthead-actions>a{font-size:11px;max-width:110px;text-align:right}.brand span{display:block;margin:0;font-size:9px}.panel-footer{align-items:start;flex-direction:column}.legend{gap:8px}.publication{grid-template-columns:1fr;gap:0}.network-panel{height:clamp(320px,calc(100vh - 170px),560px)}.panel-heading{padding:15px}.panel-heading button{font-size:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;scroll-snap-type:none!important}}

/* Al hacer scroll, cada mapa/grafo queda centrado en pantalla (proximity: no
   fuerza el snap en secciones de texto como intro/metodología, solo "atrapa"
   cuando ya se está cerca de un panel de grafo). */
html{scroll-snap-type:y proximity;scroll-behavior:smooth}
.workspace{scroll-snap-align:center;scroll-margin-block:24px}

/* Resumen: mismos indicadores que LACompNet, adaptados a lo que aplica en Neurociencias (sin Qualis). */
.summary{display:grid;grid-template-columns:1fr 1fr 2fr;gap:16px;padding:24px 0}
.summary-tile{background:white;border:1px solid var(--line);border-radius:8px;padding:18px 22px;display:flex;flex-direction:column;gap:14px;justify-content:center}
.summary-tile-wide{justify-content:flex-start}
.summary-label{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-weight:700}
.summary-number{font-family:Georgia,serif;font-size:64px;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.summary-donut-row{display:flex;align-items:center;gap:22px;margin-top:6px}
#summary-countries{width:160px;height:160px;flex:none}
.summary-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);flex-wrap:wrap;max-height:160px;overflow-y:auto}
.summary-legend li{display:flex;align-items:center;gap:7px}
.summary-legend .swatch{width:9px;height:9px;border-radius:50%;flex:none}
.summary-legend b{color:var(--ink);font-variant-numeric:tabular-nums;margin-left:auto;padding-left:10px}
@media(max-width:850px){.summary{grid-template-columns:1fr 1fr}.summary-tile-wide{grid-column:1/-1}}
@media(max-width:480px){.summary{grid-template-columns:1fr}.summary-number{font-size:52px}}

/* Pantalla completa del mapa de coautoría: nodos pequeños y navegación por
   zoom/pan más cómodos con todo el alto/ancho de la pantalla disponible. */
.panel-actions{display:flex;gap:8px}
.network-panel:fullscreen{background:white;display:flex;flex-direction:column;padding:16px 0}
.network-panel:fullscreen #network{flex:1;height:auto;min-height:0}
.network-panel:fullscreen .panel-heading,.network-panel:fullscreen .legend,.network-panel:fullscreen .graph-hint,.network-panel:fullscreen .panel-footer{padding-left:24px;padding-right:24px}

/* Pantalla completa del mapa de coautoría: el elemento que pasa a fullscreen
   es la sección .workspace completa (no solo .network-panel), para que
   "Explorar autores" siga visible al costado en vez de desaparecer. */
.workspace:fullscreen{height:100vh;border-radius:0}

/* Mapa de instituciones: mismo panel que el de coautoría, pero de ancho
   completo (sin la columna lateral de "Explorar autores"). */
.workspace-single{grid-template-columns:1fr;margin-top:30px}
#institutions-network,#countries-network{display:block;width:100%;flex:1;height:auto;min-height:0;background:radial-gradient(ellipse at center,#edf5f9 0,white 70%);touch-action:none}
#institutions-status,#countries-status{margin:0;padding:0 22px;font-size:13px;color:var(--muted)}

#topics-network{display:block;width:100%;flex:1;height:auto;min-height:0;background:radial-gradient(ellipse at center,#edf5f9 0,white 70%);touch-action:none}
#topics-status{margin:0;padding:0 22px;font-size:13px;color:var(--muted)}

/* Mapa mundial de países: proyección geográfica real (D3-geo + TopoJSON),
   distinto del grafo de fuerza de #countries-network. */
#countries-map{display:block;width:100%;flex:1;height:auto;min-height:0;background:#eef5f8;touch-action:none;cursor:grab}
#countries-map:active{cursor:grabbing}
#countries-map-status{margin:0;padding:0 22px;font-size:13px;color:var(--muted)}
.countries-map-country{fill:#dbe6ec;stroke:#fff;stroke-width:.5}
.countries-map-country.has-data{fill:#8fd0c4;cursor:pointer}
.countries-map-country.has-data:hover{fill:#158479}
.countries-map-link{fill:none;stroke:#146d94;stroke-linecap:round}
.countries-map-node{fill:#158479;stroke:#fff;stroke-width:1.2}

/* Chips de temas frecuentes (mapa de temas): filtro rápido que resalta un
   tema y sus vecinos directos en el grafo sin recargar datos. Columna fija
   a la derecha del grafo; el tamaño de letra de cada chip escala con la
   cantidad de publicaciones (ver fontSize inline en buildChips()). */
.topics-body{display:flex;flex:1;min-height:0}
#topics-network{flex:1;min-width:0}
.chips-col{width:240px;flex:none;display:flex;flex-direction:column;gap:6px;padding:16px 18px;overflow-y:auto;border-left:1px solid var(--line)}
.chip{border:1px solid var(--line);border-radius:999px;background:white;color:var(--muted);padding:6px 14px;cursor:pointer;text-align:left;line-height:1.25}
.chip:hover{background:#e6f1f5}
.chip[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:white}
.chip-all{border-radius:999px;text-align:center;font-size:13px;font-weight:600;margin-bottom:4px}
.chip-all[aria-pressed=true]{background:var(--ink);border-color:var(--ink)}
@media(max-width:850px){.topics-body{flex-direction:column}.chips-col{width:auto;flex-direction:row;flex-wrap:wrap;border-left:0;border-top:1px solid var(--line);max-height:180px}}

.graph-params-wrap{margin:20px 0;background:white;border:1px solid var(--line);border-radius:8px}
.graph-params-wrap>summary{cursor:pointer;padding:14px 22px;font-weight:600}
.graph-params .panel-actions{display:flex;gap:10px;align-items:center}.graph-params select{width:auto}
.gp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px 28px;padding:0 22px 8px}
.gp-grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600}
.gp-grid output{color:var(--teal);font-variant-numeric:tabular-nums;margin-left:6px}
.gp-grid input[type=range]{padding:0;border:0;background:none}
