PageSourceSearch

https://www.goyanetwork.com/

html goyanetwork.com collected 2026-09-25 21:53:37 UTC 64,661 bytes, 1,498 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="en">
4<head>
5  <meta charset="UTF-8">
6  <title>Goya Network</title>
7
8  <meta property="og:title" content="The Goya Network">
9  <meta property="og:description" content="Explore the social and artistic network around Francisco de Goya in 19th-century France and Spain.">
10  <meta property="og:image" content="https://www.goyanetwork.com/images/og-thumbnail.jpg">
11  <meta property="og:url" content="https://www.goyanetwork.com">
12  <meta property="og:type" content="website">
13
14  <!-- Font Awesome para iconos -->
15  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
16  <style>
17    body {
18      font-family: "EB Garamond", serif;
19      font-size: 18px;
20      background-color: #111;
21      color: white;
22      margin: 0;
23      padding: 0;
24      overflow-x: hidden;
25      overflow-y: auto;
26    }
27
28    /* Add this to unify fonts */
29    #network, 
30    #search, 
31    #searchButton, 
32    #professionFilter, 
33    #nationalityFilter {
34      font-family: "EB Garamond", serif;
35    }
36
37    /* Add this to style form elements */
38    input, select, button {
39      font-family: "EB Garamond", serif;
40      font-size: 16px;
41      padding: 5px 10px;
42      background-color: #222;
43      color: white;
44      border: 1px solid #444;
45      border-radius: 4px;
46    }
47
48    #network, #network canvas { pointer-events: auto !important; }
49    #newInPanel[style*="display: none"],
50    #shareModal[style*="display: none"] { pointer-events: none !important; }
51
52    #newInPanel[style*="visibility: hidden"],
53    #shareModal[style*="visibility: hidden"] { pointer-events: none !important; }
54
55    #about strong {
56      display: block;
57      margin-top: 1.5rem;
58      font-size: 1.1em;
59      color: white; /* Ya no azul */
60      text-transform: uppercase;
61      letter-spacing: 0.5px;
62      font-weight: bold;
63      padding-bottom: 0.3rem;
64    }
65
66    #about ul li strong {
67      display: inline;        /* evita salto de línea */
68      text-transform: none;   /* no pone mayúsculas */
69    }
70
71    #about a {
72      color: #66ccff;
73      font-weight: normal;
74      text-decoration: none;
75    }
76    
77    button:hover {
78      background-color: #333;
79    }
80    
81    .header {
82      display: flex;
83      justify-content: space-between;
84      align-items: center; /* <-- esta línea alinea verticalmente */
85      padding: 10px 20px;
86    }
87
88    .header-container {
89      display: flex;
90      align-items: center;
91      gap: 2rem;
92      padding: 1rem 2rem;
93      position: relative;
94      text-align: left;     /* ← antes estaba center */
95      margin-bottom: 1rem;
96      padding-left: 140px;  /* antes 160 */
97    }
98  
99    .logo {
100      position: absolute;
101      left: 1rem;
102      top: 50%;
103      transform: translateY(-50%);
104      height: 100px; /* aumenta el tamaño del logo */
105      width: auto;
106    }
107
108    .node-overview {
109      margin-bottom: 1em;
110      font-size: 1.1em;
111      background: #f8f8f8;
112      color: #111; /* ✅ texto oscuro */
113      padding: 0.5em;
114      border-radius: 6px;
115    }
116
117    .title-group h1 {
118      margin: 0;
119      font-size: 3rem; /* más grande */
120      color: white;
121    }
122    
123    .title-group p {
124      margin: 0;
125      font-size: 1.4rem; /* MÁS grande */
126      color: #ccc;
127    }
128
129    .menu-bar {
130      display: flex;
131      flex-wrap: wrap;
132      align-items: center;
133      gap: 0.7rem;
134      padding: 0.5rem 1.5rem;
135      margin-top: -1rem; /* más pegado al título */
136    }
137    
138    .menu-buttons button {
139      padding: 6px 12px;
140      border: 1px solid #555; /* igual que los select probablemente */
141      background-color: #1a1a1a;
142      color: white;
143      font-size: 16px;
144      box-sizing: border-box;
145    }
146
147    /* Adjust menu buttons to align better */
148    .menu-buttons {
149      display: flex;
150      gap: 0.7rem; /* Match the gap in .controls */
151      align-items: center; /* Vertical alignment */
152    }
153
154    .nav-buttons,
155    .controls {
156      display: flex;
157      gap: 10px;
158    }
159
160    /* Dropdown menu styles */
161    .menu-dropdown {
162      position: relative;
163      display: inline-block;
164    }
165
166    .menu-toggle {
167      padding: 6px 12px;
168      border: 1px solid #555;
169      background-color: #1a1a1a;
170      color: white;
171      font-size: 16px;
172      cursor: pointer;
173      border-radius: 4px;
174      min-width: 100px;
175    }
176
177    .menu-toggle:hover {
178      background-color: #2a2a2a;
179    }
180
181    .menu-content {
182      display: none;
183      position: absolute;
184      background-color: #1a1a1a;
185      border: 1px solid #555;
186      border-top: none;
187      border-radius: 0 0 4px 4px;
188      z-index: 1000;
189      min-width: 320px;
190      box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
191    }
192
193    .menu-content.show {
194      display: flex;
195      flex-direction: column;
196    }
197
198    .menu-content button {
199      display: block;
200      width: 100%;
201      padding: 12px 16px;
202      border: none;
203      background-color: #1a1a1a;
204      color: white;
205      font-size: 18px;
206      text-align: left;
207      cursor: pointer;
208      box-sizing: border-box;
209    }
210
211    .menu-content button:hover {
212      background-color: #2a2a2a;
213    }
214
215    .menu-content select {
216      display: block;
217      width: 100%;
218      padding: 12px 16px;
219      border: none;
220      background-color: #2a2a2a;
221      color: white;
222      font-size: 18px;
223      box-sizing: border-box;
224      max-height: 200px;
225    }
226
227    .menu-content select:focus {
228      outline: none;
229      background-color: #3a3a3a;
230    }
231
232    .menu-content button:first-child {
233      border-radius: 0;
234    }
235
236    .menu-content button:last-child {
237      border-radius: 0 0 4px 4px;
238    }
239
240    /* Optional: If the search bar is still misaligned, adjust its margin */
241    #search {
242      margin: 0;
243    }
244      
245    .top-bar {
246      display: flex;
247      gap: 1rem;
248      align-items: center;
249      padding: 0.5rem 1rem;
250      background-color: #0d0d0d;
251      border-bottom: 1px solid #333;
252    }
253
254    .nav-buttons {
255      display: flex;
256      gap: 10px;
257      flex-shrink: 0;
258    }
259
260    .controls {
261      display: flex;
262      flex: 1;
263      justify-content: center;
264    }
265
266    .search-section {
267      display: flex;
268      gap: 0.5rem;
269      align-items: center;
270    }
271
272    .filters-section {
273      display: flex;
274      gap: 0.7rem;
275      align-items: center;
276      flex-shrink: 0;
277    }
278
279    .controls select,
280    .controls input,
281    .controls button {
282      padding: 6px 12px;
283      border: 1px solid #555;
284      background-color: #1a1a1a;
285      color: white;
286      font-size: 16px;
287      box-sizing: border-box;
288    }
289
290    .search-bar {
291      min-width: 200px;
292    }
293
294    .search-button {
295      white-space: nowrap;
296    }
297
298    .menu-buttons button,
299    .controls select,
300    .controls button {
301      min-width: unset;
302    }
303
304    .layout-container {
305      display: flex;
306      align-items: stretch !important;
307      height: auto !important;
308      max-height: none !important;
309      overflow: visible !important;
310      position: relative;  /* Enable absolute positioning of buttons */
311     }
312      
313    .layout-container.visible {
314      display: flex;
315      flex-direction: row;
316      gap: 1rem;
317      padding: 0 1rem; /* sin padding vertical */
318      width: 100%;
319      height: 80vh; /* 🔥 esta es la clave */
320      align-items: stretch !important;
321      flex-wrap: nowrap;
322      position: relative;  /* Enable absolute positioning of buttons */
323    }
324  
325    .layout-container.hidden {
326      display: none;
327    }
328  
329    /* Versión responsive para móviles */
330    @media (max-width: 768px) {
331      .layout-container {
332        display: flex;
333        flex-direction: column;
334        height: 100vh;
335      }
336    
337        #nodeInfo {
338          width: 100%;
339          height: 50vh !important;
340          overflow-y: auto;
341          flex-grow: 1;
342          max-width: none; /* Remove max-width restriction in mobile */
343          line-height: 1.4; /* Adjust line height for better spacing */
344        }
345    
346        #network {
347          height: 50vh !important;
348          flex-grow: 1;
349        }
350      
351        #network {
352          min-width: 60%;
353        }
354      
355        #nodeInfo::after {
356          display: none;
357        }
358      }
359    
360  #network {
361    width: 100%;
362    flex: 1;
363    height: 80vh;
364    background: black;
365    position: relative;
366  }
367    
368  #network.hidden {
369    display: none;
370    height: 0;
371  }
372    
373    /* Evita que #network deje espacio cuando está oculto */
374  #network[style*="display: none"] {
375    height: 0 !important;
376  }
377
378  #nodeInfo {
379    flex: 1;
380    max-width: 30%;
381    background-color: #222;
382    padding: 1rem;
383    font-size: 16px;
384    text-align: left;
385    color: white;
386    min-height: 80vh;
387    box-sizing: border-box;
388    overflow-y: auto;
389    display: flex;
390    flex-direction: column;
391  }
392    
393    #nodeInfo::after {
394      display: none;
395    }
396      
397  .node-info {
398    display: flex;
399    flex-direction: column;
400    align-items: flex-start;
401  }
402      
403  .node-info img {
404    max-width: 200px;
405    margin-bottom: 1rem;
406  }
407
408    #nodeInfo ul {
409      list-style-type: disc;
410      padding-left: 1.5rem;
411      margin-top: 0.3rem;
412      margin-bottom: 0.3rem;
413    }
414    
415    #nodeInfo li {
416      margin-bottom: 0.4rem;
417      line-height: 1.4;
418    }
419
420    /* Add this to fix the spacing issues */
421    #nodeInfo p {
422      margin-top: 0.2rem;
423      margin-bottom: 0.2rem;
424    }
425    
426    #nodeInfo h2 {
427      margin-top: 0.5rem;
428      margin-bottom: 0.5rem;
429    }
430    
431    #nodeInfo ul {
432      margin-top: 0.2rem;
433      margin-bottom: 0.2rem;
434    }
435    
436    #nodeInfo strong {
437      display: inline; /* Ensures strong tags don't create line breaks */
438      font-weight: bold;
439    }
440    
441    /* ——— Members list: hacer que ocupe todo el alto disponible del panel ——— */
442    #nodeInfo { display: flex; flex-direction: column; } /* ya lo tienes */
443    #membersSection {
444      display: flex;
445      flex-direction: column;
446      flex: 1 1 auto;   /* ocupa el espacio libre del panel */
447      min-height: 0;    /* IMPORTANTÍSIMO para permitir scroll interno */
448    }
449    #membersList {
450      flex: 1 1 auto;   /* la lista crece dentro de la sección */
451      min-height: 0;    /* permite que el overflow funcione */
452      max-height: none !important; /* elimina límites previos */
453      overflow-y: auto; /* SOLO la lista hace scroll */
454      padding-right: 6px;
455      line-height: 1.5;
456    }
457  /* Contenedor del header como punto de referencia */
458  .header { position: relative; }
459
460  /* Colocar el selector de idioma arriba a la derecha del header */
461  #langSwitcher {
462    position: absolute;
463    right: 20px;
464    top: 12px;
465    z-index: 10;
466    margin: 0;
467  }
468
469  .contributions-section {
470    width: 100%;
471    text-align: center;
472    margin-top: 1rem;
473  }
474
475  .news-section ul {
476    padding-left: 1.2rem;
477  }
478
479  .news-section li {
480    margin-bottom: 1.2rem;
481  }
482
483  footer {
484    font-family: "EB Garamond", serif;
485    font-size: 0.85rem;
486    padding: 0.3rem 0.5rem;
487    text-align: center;
488    background-color: #f9f9f9;
489    color: black;
490    line-height: 1.2;      /* Compacta líneas */
491  }
492
493    a {
494      color: #66ccff;
495      font-weight: normal;
496      text-decoration: none;
497    }
498
499  .social-icons {
500    margin-top: 1rem;
501  }
502
503  .social-icons a {
504    display: inline-flex;
505    align-items: center;
506    justify-content: center;
507    width: 2rem;
508    height: 2rem;
509    margin: 0 10px;
510    font-size: 1.5rem;
511    color: #ccc;
512    transition: color 0.2s ease, transform 0.2s ease;
513    text-decoration: none;
514  }
515
516  .social-icons a:hover {
517    color: white;
518    transform: scale(1.1);
519  }
520
521  .social-icons i {
522    vertical-align: middle;
523  }
524  
525  html, body {
526    height: auto !important;
527    max-height: none !important;
528    overflow: visible !important;
529  }
530
531  .section-heading {
532    margin-top: 1.2em;
533    margin-bottom: 0.5em;
534    font-size: 1.1em;
535    font-weight: bold;
536    border-bottom: 1px solid #666;
537    padding-bottom: 0.2em;
538    color: #ccc;
539  }
540    
541  /* ===== Logos de autoridades (Wikidata, Getty, BnF, etc.) ===== */
542  .authority-badges{
543    display: grid;
544    grid-template-columns: auto auto;
545    grid-auto-rows: min-content;
546    gap: 10px 10px;
547    justify-content: end;
548    justify-items: end;
549    align-content: start;
550    justify-self: end;      /* clave para pegarlo al borde derecho */
551  }
552
553  .authority-badges img{
554    display: block;
555    opacity: 0.95;
556    transition: transform 0.2s ease, opacity 0.2s ease;
557    width: auto;
558    object-fit: contain;
559    max-width: none;
560    margin-bottom: 0;
561  }
562
563  .photo-with-authorities{
564    display: grid;
565    grid-template-columns: auto 1fr auto;
566    align-items: start;
567    width: 100%;
568  }
569
570  /* Tamaños individuales (ajustados según tu comentario) */
571  .authority-badges img[src*="Wikidata"] {
572    height: 46px;  /* antes 40 */
573  }
574
575  .authority-badges img[src*="Getty"] {
576    height: 43px;  /* antes 32 */
577  }
578
579  .authority-badges img[src*="BnF"] {
580    height: 28px;  /* antes 34 */
581  }
582
583  .authority-badges img[src*="RAH"] {
584    height: 50px;
585  }
586
587  .authority-badges img:hover {
588    transform: scale(1.1);
589    opacity: 1;
590  }
591
592  #newNodesList .new-node-item {
593    margin-bottom: 0.4rem;
594  }
595
596  #newNodesList .new-node-date {
597    color: #bbb;
598    font-size: 0.95em;
599  }
600
601  #newNodesToggle::after {
602    content: " ▾";
603    font-size: 0.9em;
604  }
605
606  #newNodesToggle.open::after {
607    content: " ▴";
608  }
609
610  #newNodesDropdown {
611    max-height: 220px;
612    overflow-y: auto;
613  }
614
615  /* ===== Custom Navigation Buttons (Orange Arrows) ===== */
616  .custom-nav-buttons {
617    position: absolute;
618    bottom: 20px;
619    display: flex;
620    flex-direction: column;
621    gap: 8px;
622    z-index: 100;
623    font-family: "EB Garamond", serif;
624    pointer-events: auto;
625  }
626  
627  .custom-nav-buttons#customPanButtons {
628    left: 20px;
629  }
630
631  .custom-nav-buttons#customZoomButtons {
632    right: 20px;  /* Align with network edge, not container edge */
633  }
634
635  .nav-button-row {
636    display: flex;
637    justify-content: center;
638    gap: 8px;
639  }
640
641  .custom-nav-btn {
642    width: 40px;
643    height: 40px;
644    border: 2px solid #1a4d99;
645    border-radius: 50%;
646    background-color: #2B7CE9;
647    color: #FF6B35;
648    font-size: 24px;
649    font-weight: bold;
650    font-family: "EB Garamond", serif;
651    cursor: pointer;
652    display: flex;
653    align-items: center;
654    justify-content: center;
655    transition: all 0.2s ease;
656    user-select: none;
657  }
658
659  .custom-nav-btn:hover {
660    background-color: #3d8de9;
661    border-color: #0d2d79;
662    transform: scale(1.1);
663  }
664
665  .custom-nav-btn:active {
666    background-color: #1e5bb8;
667    border-color: #0d1a4d;
668    transform: scale(0.95);
669  }
670
671  /* ===== Vis.js Navigation Buttons Styling ===== */
672  /* Enhanced visibility with blue color and higher contrast */
673  .vis-navigation {
674    width: 100px;
675    height: 100px;
676  }
677
678  .vis-button {
679    background-color: #2B7CE9;
680    border: 2px solid #1a4d99;
681    border-radius: 4px;
682    width: 36px;
683    height: 36px;
684    font-size: 20px;
685    color: white;
686    cursor: pointer;
687    transition: all 0.2s ease;
688    display: flex;
689    align-items: center;
690    justify-content: center;
691  }
692
693  .vis-button:hover {
694    background-color: #3d8de9;
695    border-color: #0d2d79;
696    transform: scale(1.1);
697  }
698
699  .vis-button:active {
700    background-color: #1e5bb8;
701    border-color: #0d1a4d;
702  }
703
704  /* Make arrow icons bright orange - keep blue background */
705  .vis-button svg {
706    filter: hue-rotate(-110deg) saturate(2) brightness(1.1) !important;
707  }
708
709  .vis-button svg path {
710    stroke: #FF6B35 !important;
711    fill: #FF6B35 !important;
712    paint-order: stroke !important;
713  }
714
715  .vis-button svg polygon {
716    stroke: #FF6B35 !important;
717    fill: #FF6B35 !important;
718    paint-order: stroke !important;
719  }
720
721  .vis-button svg line {
722    stroke: #FF6B35 !important;
723  }
724
725  .vis-button svg polyline {
726    stroke: #FF6B35 !important;
727    fill: #FF6B35 !important;
728  }
729
730  /* Override any inline styles on SVG elements */
731  .vis-button svg [fill="#4CAF50"],
732  .vis-button svg [stroke="#4CAF50"],
733  .vis-button svg [fill="rgb(76, 175, 80)"],
734  .vis-button svg [stroke="rgb(76, 175, 80)"] {
735    fill: #FF6B35 !important;
736    stroke: #FF6B35 !important;
737  }
738
739</style>
740
741  
742  
742<script defer type="text/javascript" src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
742
743  
743<script defer src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
743
744  <!-- Font Awesome para iconos -->
745  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
746
747    <meta name="twitter:card" content="summary_large_image">
748    <meta name="twitter:title" content="The Goya Network">
749    <meta name="twitter:description" content="Explore Goya's network of artists, collectors, and writers.">
750    <meta name="twitter:image" content="https://www.goyanetwork.com/images/og-thumbnail.jpg">
751  
752  <!-- Estilos del footer y redes sociales -->
753  <style>
754    .footer {
755      font-size: 1.1rem;
756      padding: 0.5rem 1rem;
757      text-align: center;
758      background-color: #f9f9f9;
759      color: black;
760      line-height: 1.3;
761    }
762  
763  </style>
764
765  <!-- Google tag (gtag.js) -->
vendor: 66 bytes, lines 765-766
765
766  <script async src="https://www.googletagmanager.com/gtag/js?id=
766G-XXXXXXXXXX
vendor: 14 bytes, lines 766-767
766"></script>
767  
767<script>
768    
vendor: 139 bytes, lines 768-771
768window.dataLayer = window.dataLayer || [];
769    function gtag(){dataLayer.push(arguments);}
770    gtag('js', new Date());
771    gtag('config', '
771G-NYR5EFSWLL
vendor: 6 bytes, lines 771-772
771');
772  
772</script>
772
773  
774</head>
775<body>
776  
777  <div class="header">
778    <div class="header-container">
779      <img src="images/GoyaNetwork_logo.jpg" alt="Goya Logo" class="logo">
780      <div class="title-group">
781        <h1 data-i18n="SITE_TITLE"></h1>
782        <p class="subtitle" data-i18n="SITE_SUBTITLE"></p>
783      </div>
784    </div>
785    <!-- Selector de idioma -->
786    <select id="langSwitcher" onchange="setLanguage(this.value)" style="margin-left:8px">
787      <option value="en">English</option>
788      <option value="es">Español</option>
789    </select>
790  </div>
791
792  <div class="top-bar">
793    <div class="nav-buttons">
794      <button onclick="showSection('network'); returnToNetworkHome();">Network</button>
795      <div class="menu-dropdown">
796        <button class="menu-toggle" onclick="toggleMenuDropdown()">Menu ▼</button>
797        <div class="menu-content" id="menuContent">
798          <button onclick="showSection('about'); closeMenuDropdown();">About</button>
799          <button onclick="showSection('people'); closeMenuDropdown();">People</button>
800          <button onclick="showSection('partners'); closeMenuDropdown();">Partners</button>
801          <button onclick="showSection('news'); closeMenuDropdown();">News</button>
802          <button onclick="showSection('mentions'); closeMenuDropdown();">Mentions</button>
803          <button onclick="showSection('artworks'); closeMenuDropdown();">Goya's work</button>
804          <button onclick="showSection('bibliography'); closeMenuDropdown();">Bibliography</button>
805          <button onclick="showSection('relevant-links'); closeMenuDropdown();">Relevant links</button>
806          <button onclick="showSection('cite'); closeMenuDropdown();">How to cite</button>
807          <button onclick="showSection('contact'); closeMenuDropdown();">Contact</button>
808        </div>
809      </div>
810    </div>
811
812    <div class="controls">
813      <!-- Search Section (centered) -->
814      <div class="search-section">
815        <input type="text" id="searchInput" placeholder="Search..." class="search-bar">
816        <button onclick="search()" class="search-button">Search</button>
817      </div>
818    </div>
819
820    <!-- Filters Section (right) -->
821    <div class="filters-section">
822      <!-- Clusters Dropdown -->
823      <div class="menu-dropdown">
824        <button class="menu-toggle" onclick="toggleMenu(event, 'clustersMenu')">Clusters ▼</button>
825        <div class="menu-content" id="clustersMenu">
826          <button onclick="toggleClusterEdgeColoring(); closeAllMenus();" id="clusterToggleOption">Cluster edges: On</button>
827          <div style="border-top: 1px solid #444; margin: 4px 0;"></div>
828          <select id="clusterSelect" onchange="selectCluster(this.value); closeAllMenus();" style="width: 100%; padding: 8px; border: none; background-color: #2a2a2a; color: white; cursor: pointer;">
829            <option value="">Select cluster...</option>
830          </select>
831        </div>
832      </div>
833
834      <!-- Search Filters Dropdown -->
835      <div class="menu-dropdown">
836        <button class="menu-toggle" onclick="toggleMenu(event, 'filtersMenu')">Search Filters ▼</button>
837        <div class="menu-content" id="filtersMenu" style="min-width: 220px;">
838          <div style="padding: 8px; color: #aaa; font-size: 12px; text-transform: uppercase; border-bottom: 1px solid #444;">Profession</div>
839          <select id="professionFilter" onchange="filterGraph()" style="width: 100%; padding: 8px; border: none; background-color: #2a2a2a; color: white; cursor: pointer;">
840            <option value="">All professions</option>
841            <option value="Actor">Actor</option>
842            <option value="Anthropologist">Anthropologist</option>
843            <option value="Archaeologist">Archaeologist</option>
844            <option value="Architect">Architect</option>
845            <option value="Aristocrat">Aristocrat</option>
846            <option value="Art critic">Art critic</option>
847            <option value="Art dealer">Art dealer</option>
848            <option value="Art patron">Art patron</option>
849            <option value="Art historian">Art historian</option>
850            <option value="Art theorist">Art theorist</option>
851            <option value="Artist">Artist</option>
852            <option value="Banker">Banker</option>
853            <option value="Bibliographer">Bibliographer</option>
854            <option value="Bibliophile">Bibliophile</option>
855            <option value="Businessman">Businessman</option>
856            <option value="Caricaturist">Caricaturist</option>
857            <option value="Ceramist">Ceramist</option>
858            <option value="Civil servant">Civil servant</option>
859            <option value="Clergyman">Clergyman</option>
860            <option value="Collector">Collector</option>
861            <option value="Composer">Composer</option>
862            <option value="Curator">Curator</option>
863            <option value="Designer">Designer</option>
864            <option value="Diplomat">Diplomat</option>
865            <option value="Draughtsman">Draughtsman</option>
866            <option value="Economist">Economist</option>
867            <option value="Editor">Editor</option>
868            <option value="Engineer">
868Engineer</option>
869            <option value="Engraver">Engraver</option>
870            <option value="Essayist">Essayist</option>
871            <option value="Femme de lettres">Femme de lettres</option>
872            <option value="Hispanist">Hispanist</option>
873            <option value="Historian">Historian</option>
874            <option value="Illustrator">Illustrator</option>
875            <option value="Journalist">Journalist</option>
876            <option value="Jurist">Jurist</option>
877            <option value="Lawyer">Lawyer</option>
878            <option value="Librarian">Librarian</option>
879            <option value="Librettist">Librettist</option>
880            <option value="Lithographer">Lithographer</option>
881            <option value="Lithographic printer">Lithographic printer</option>
882            <option value="Medical doctor">Medical doctor</option>
883            <option value="Military member">Military member</option>
884            <option value="Musician">Musician</option>
885            <option value="Novelist">Novelist</option>
886            <option value="Painter">Painter</option>
887            <option value="Philanthropist">Philanthropist</option>
888            <option value="Philosopher">Philosopher</option>
889            <option value="Photographer">Photographer</option>
890            <option value="Pianist">Pianist</option>
891            <option value="Playwright">Playwright</option>
892            <option value="Poet">Poet</option>
893            <option value="Politician">Politician</option>
894            <option value="Printer">Printer</option>
895            <option value="Real estate agent">Real estate agent</option>
896            <option value="Salonnière">Salonnière</option>
897            <option value="Scholar">Scholar</option>
898            <option value="Scientist">Scientist</option>
899            <option value="Sculptor">Sculptor</option>
900            <option value="Secret agent">Secret agent</option>
901            <option value="Singer">Singer</option>
902            <option value="Socialite">Socialite</option>
903            <option value="Teacher">Teacher</option>
904            <option value="Translator">Translator</option>
905            <option value="Traveller">Traveller</option>
906            <option value="Writer">Writer</option>
907          </select>
908          <div style="border-top: 1px solid #444; margin: 8px 0;"></div>
909          <div style="padding: 8px; color: #aaa; font-size: 12px; text-transform: uppercase;">Nationality</div>
910          <select id="nationalityFilter" onchange="filterGraph()" style="width: 100%; padding: 8px; border: none; background-color: #2a2a2a; color: white; cursor: pointer;">
911            <option value="">All nationalities</option>
912            <option value="British">British</option>
913            <option value="Cuban">Cuban</option>
914            <option value="French">French</option>
915            <option value="German">German</option>
916            <option value="Irish">Irish</option>
917            <option value="Italian">Italian</option>
918            <option value="Polish">Polish</option>
919            <option value="Spanish">Spanish</option>
920            <option value="Swiss">Swiss</option>
921          </select>
922        </div>
923      </div>
924    </div>
925  </div>
926    
927  <div id="loadingMessage" style="text-align:center; padding: 2rem; font-size: 1.2rem;">
928  Loading network… <span id="loadingProgress">0%</span>
929</div>
930  
931  <!-- 🔧 Layout principal con grafo y panel de info -->
932  <div class="layout-container visible" id="layout">
933    <div id="network"></div>
934    
935    <!-- Navigation buttons (pre-rendered in HTML for instant appearance) -->
936    <div class="custom-nav-buttons" id="customPanButtons">
937      <div class="nav-button-row">
938        <button class="custom-nav-btn" id="navUp" title="Pan Up">↑</button>
939      </div>
940      <div class="nav-button-row">
941        <button class="custom-nav-btn" id="navLeft" title="Pan Left">←</button>
942        <button class="custom-nav-btn" id="navDown" title="Pan Down">↓</button>
943        <button class="custom-nav-btn" id="navRight" title="Pan Right">→</button>
944      </div>
945    </div>
946    
947    <div class="custom-nav-buttons zoom" id="customZoomButtons">
948      <div class="nav-button-row">
949        <button class="custom-nav-btn" id="navZoomIn" title="Zoom In">+</button>
950      </div>
951      <div class="nav-button-row">
952        <button class="custom-nav-btn" id="navZoomOut" title="Zoom Out">−</button>
953      </div>
954      <div class="nav-button-row">
955        <button class="custom-nav-btn" id="navFitAll" title="Fit All Nodes">⊙</button>
956      </div>
957    </div>
958    
959    <div id="nodeInfo">
960      <p data-i18n="HELP_TEXT_1"></p>
961      <p data-i18n="HELP_TEXT_2"></p>
962
963      <div id="newNodesSection" style="margin-top: 1rem; position: relative;">
964        <div id="newNodesToggle"
965            class="section-heading"
966            data-i18n="NEW_NODES_TITLE"
967            style="cursor:pointer; user-select:none; margin-bottom:0;">
968        </div>
969
970        <div id="newNodesDropdown"
971            style="display:none; margin-top:0.5rem; background:#1a1a1a; border:1px solid #444; border-radius:6px; padding:0.75rem;">
972          <div id="newNodesList" style="line-height:1.5;"></div>
973        </div>
974      </div>
975
976      <!-- NEW: Members list (A–Z by surname) -->
977      <div id="membersSection" style="margin-top: 1rem;">
978        <div class="section-heading">Members (A–Z by surname)</div>
979        <div id="membersList"></div>
980      </div>
981    </div>
982  </div>
983  
984<div style="display: flex; justify-content: space-between; align-items: center; margin: 0.5rem 1rem 0 1rem;">
985  <div id="networkStats" style="font-size: 0.9rem; color: #ccc;">
986    Nodes: – | Connections: –<br>
987    <span style="font-size: 0.8rem; color: #999;">Last update: 7 June 2025</span>
988  </div>
989  <div>
990    <button onclick="toggleFullScreen()" title="Toggle fullscreen"
991      style="padding: 0.4rem 0.8rem; background:#333; color:white; border:1px solid #555; border-radius:4px;">
992      <i class="fas fa-expand"></i> Fullscreen
993    </button>
994  </div>
995</div>
996
997<div id="about" style="display:none; padding:2rem; max-width:800px; margin:auto; line-height:1.6;">
998  <h2 data-i18n="ABOUT_TITLE"></h2>
999  <div data-i18n="ABOUT_BODY"></div>
1000</div>
1001
1002<div id="people" style="display:none; padding:2rem; max-width:800px; margin:auto; line-height:1.6;">
1003  <h2 data-i18n="PEOPLE_TITLE"></h2>
1004  <div data-i18n="PEOPLE_BODY"></div>
1005</div>
1006
1007
1008<div id="bibliography" style="display: none; padding: 2rem; max-width: 800px; margin: auto; line-height: 1.6;">
1009  <h2 data-i18n="BIB_TITLE"></h2>
1010  <p data-i18n="BIB_INTRO"></p>
1011  <ul>
1012    <li>Adhémar 1958. Jean Adhémar, <em>Inventaire du fonds français après 1800, Bibliothèque national, Départament des estampes, vol. 10</em>, Paris, 1958</li>
1013    <li>Águeda & Salas 1982. Águeda & Salas (eds.), <em>Goya. Cartas a Martín Zapater</em>, 1982.</li>
1014    <li>Albarrán 2018. Virginia Albarrán Martín, 'Pintura de tema religioso de Agustín Esteve', in Alejandro Cañestro Donoso, ed. <em>Scripta artium in honorem prof. José Manuel Cruz Valdovinos</em>, 1, Madrid, pp. 297-318.</li>
1015    <li>Albarrán (upcoming). Virginia Albarrán Martín, 'De Goyas que son Esteves', in <em>Goya: Collecting the Grotesque</em>, upcoming.</li>
1016    <li>Alcantara 1961. Odette d'Alcantara, <em>Marcello: Adèle d'Affry, duchesse Castiglione-Colonna, 1836-1879, sa vie, son œuvre, sa pensée et ses amis</em>, Genève, Éditions générales, 1961.</li>
1017    <li>Alzaga 2012. Amaya Alzaga, <em>Raimundo de Madrazo y Garreta (1841-1920)</em>, PhD thesis, UNED, 2012.</li>
1018    <li>Alzaga 2018. Amaya Alzaga, 'Federico de Madrazo en París (1837-1839): su mirada sobre la pintura francesa de su tiempo y viceversa', in <em>Federico de Madrazo y Carlos Luis de Ribera. Pintores Del Romanticismo Español</em>, 2018, pp.8-28.</li>
1019    <li>Antigüedad del Castillo-Olivares 1987. María Dolores Antigüedad del Castillo-Olivares, <em>José Bonaparte y El Patrimonio Artístico de Los Conventos Madrileños</em>, Universidad Complutense de Madrid, Departamento de Historia del Arte, 1987.</li>
1020    <li>Antigüedad del Castillo-Olivares 1999. María Dolores Antigüedad del Castillo-Olivares, <em>El Patrimonio Artístico de Madrid Durante El Gobierno Intruso (1808-1813)</em>, UNED, 1999.</li>
1021    <li>Antigüedad del Castillo-Olivares & Alzaga 2011. María Dolores Antigüedad del Castillo-Olivares & Amaya Alzaga Ruiz, <em>Colecciones, Expolio, Museos y Mercado Artístico En España En Los Siglos XVIII Y XIX</em>, Centro de Estudios Ramon Areces / UNED, 2011.</li>
1022    <li>Avrett 1954. Robert Avrett, 'Ochoa's Translation of Hugo's Hernani: A Study in Racial Psychologies' <em>The Modern Language Journal</em>, Vol. 38 no. 7, Nov 1954, pp.362-65.</li>
1023    <li>Aymes 2008. Jean René Aymes, <em>Españoles en París en la época romántica 1808-1848</em>, 2008.</li>
1024    <li>Aymes & Fernández Sebastián 1997. Jean René Aymes & Javier Fernández Sebastián, <em>La imagen de Francia en España (1808-1850)</em>, Presses de la Sorbonne Nouvelle / Universidad del País Vasco, 1997.</li>
1025    <li>Baridon 2022. Laurent Baridon, <em>De Grandville à Topor : Le fantastique des dessinauteurs</em>, INHA, 2022.</li>
1026    <li>Baridon & Guédron 2000. Laurent Baridon & Martial Guédron, <em>Corps et arts: physionomies et physiologies dans les arts visuels</em>, Paris, 2000.</li>
1027    <li>Baridon & Guédron 2021. Laurent Baridon & Martial Guédron, <em>L'art et l'histoire de la caricature</em>, Paris, 2021 (new edition).</li>
1028    <li>Baudelaire 1906. Charles Baudelaire, <em>Lettres: 1841-1866</em>, Paris, 1906.</li>
1029    <li>Baudelaire-Le Dantec & Pichois 1961 <em>Baudelaire. Œuvres complètes</em>, ed. Yves-Gérard Le Dantec & Claude Pichois, Paris, 1961.</li>
1030    <li>Baudelaire-Pichois 1976. <em>Baudelaire. Œuvres complètes</em>, ed. Claude Pichois, Gallimard, Bibliothèque de la Pléiade, t.II, 1976.</li>
1031    <li>Bénichou 2004. Paul Bénichou, <em>Romantismes français</em> t.I, ed. 2004.</li>
1032    <li>Bonnafé 1890. Edmond Bonnafé, <em>Eugène Piot</em>, 1890.</li>
1033    <li>Bouteron 1941. Marcel Bouteron, 'L'amitié de Balzac et de Stendhal', <em>Revue des Deux Mondes</em>, July 1941, pp.95-106.</li>
1034    <li>Bozal 1994. Valeriano Bozal, <em>Goya y el gusto moderno</em>, 1994.</li>
1035    <li>Cachin, Moffett & Wilson-Bareau 1983. Françoise Cachin, Charles S. Moffett & Juliet Wilson-Bareau, <em>Manet: 1832-1883</em>, Paris, Réunion des Musées Nationaux, 1983.</li>
1036    <li>Calvo Ruata 2020. José Ignacio Calvo Ruata, 'Coleccionistas de Goya en el siglo XIX', in <em>El siglo XIX: el arte en la Corte Española y en las nuevas colecciones peninsulares</em>, edited by María del Carmen Lacarra Ducay, pp.15-62.</li>
1037    <li>Canavaggio 2016. Jean Canavaggio, <em>Les Espagnes de Mérimée</em>, CEEH, 2016.</li>
1038    <li>Cano Díaz 2022. Emiliano Cano Díaz, 'Sobre el Autorretrato de Goya en el Museum of Fine Arts de Boston', <em>Archivo Español de Arte</em>, vol.95, no.379, pp.251-66.</li>
1039    <li>Carrete & Vega 1991. Carrete Parrondo & Jesusa Vega, <em>Goya grabador</em>, 1991.</li>
1040    <li>Chagniot 2016. Claire Chagniot, <em>Baudelaire et l'estampe</em>, Presses de l'universités Paris-Sorbonne, 2016.</li>
1041    <li>Champfleury 1885. Jules Champfleury, <em>Histoire de la caricature</em>, 1885.</li>
1042    <li>Chazal 2008. Gilles Chazal (ed.), <em>Goya graveur</em>, exhibition catalogue, Paris, Petit Palais / INHA, 2008.</li>
1043    <li>Courajod 1890. Louis Courajod, "Eugène Piot et les objets d'art légués au Louvre", <em>Gazette des Beaux-arts</em>, 66, 1890, pp.395-425.</li>
1044    <li>
1044Delesalle 1982. J. F. Delesalle, 'Théophile Gautier et Les Désastres de La Guerre de Goya', <em>Bulletin de La Société Théophile Gautier</em>, vol. 4, 1982, pp. 103-06.</li>
1045    <li>Delesalle 1983. Jean-François Delesalle, 'Théophile Gautier, et les Désastres de la Guerre de Goya (à propos d'un billet de Charles Asselineau à Philippe Burty)', in <em>Théophile Gautier: l'art et l'artiste. Actes du colloque internationale, Montpellier, Université Paul-Valéry, septembre 1982</em>, vol. 1, Montpellier, 1983, pp.103-106.</li>
1046    <li>Delteil-Hazard 1904. Loÿs Delteil & Nicolas Auguste Hazard, <em>Catalogue raisonné de l'œuvre lithographié de Honoré Daumier</em>, 1904. </li>
1047    <li>Dengler Gassin 1991. Roberto Dengler Gassin, 'Algunas consideraciones a propósito de Hernani, drama de Victor Hugo (1830), versión castellana de Eugenio de Ochoa (1836)', in ed. Donaire & Lafarga, <em>Traducción y adaptación cultural: España-Francia</em>, 1991, pp.337-345.</li>
1048    <li>Díez 1994. José Luis Díez, <em>Federico de Madrazo: epistolario, vol. 1</em>, 1994.</li>
1049    <li>Dumas et al. 1997. Ann Dumas et al., <em>The Private Collection of Edgar Degas: A Summary Catalogue</em>, New York, 1997.</li>
1050    <li>Dumas-Schopp 2014. Alexandre Dumas, <em>Correspondance générale</em>, ed. Claude Schopp, tome 1 (1820 à 1832), 2014.</li>
1051    <li>Fauqué & Villanueva Etcheverría 1982. Jacques Fauqué & Ramón Villanueva Etcheverría, <em>Goya y Burdeos 1824-1828</em>, 1982.</li>
1052    <li>Fayos Pérez 2019-A. Paula Fayos Pérez, 'Delacroix after Goya's Caprichos: A New Sheet of Drawings', <em>The Burlington Magazine</em>, vol. 161, no. 1395, June 2019, pp. 474-81.</li>
1053    <li>Fayos Pérez 2019-B. Paula Fayos Pérez, 'Grandville: la transformación fantástica de la fisionomía', in <em>El Arte Fantástico</em>, 2019, pp. 231-250.</li>
1054    <li>Fayos Pérez 2020. Paula Fayos Pérez, 'Valentín Carderera and the Dissemination of Goya's Graphic Work in France', <em>The Burlington Magazine</em>, vol. 162, no. 1413, 2020, pp. 1048-55.</li>
1055    <li>Fayos Pérez 2021. Paula Fayos Pérez, "Lettre de Mérimée à Valentín Carderera du 8 juillet 1856", <em>Cahiers Mérimée</em>, no.13, 2021, Classiques Garnier, Paris, pp.119-127.</li>
1056    <li>Fayos Pérez 2024. Paula Fayos Pérez, <em>Goya's Caprichos in Nineteenth-Century France. Politics of the Grotesque</em>, 2024.</li>
1057    <li>Fayos Pérez 2026. Paula Fayos Pérez, 'Goya y el retrato satírico: los mitos en torno a <em>La familia de Carlos IV</em>', <em>Trayectorias satíricas. Carnets de l'ASCIGE</em> 3, pp.20-42, 2026.</li>
1058    <li>Fontaney-Jasinski 1925. <em>Antoine Fontaney, Journal Intime</em>, René Jasinski (ed.), Les Presses françaises, 1925.</li>
1059    <li>Gandon 1966. Jean Gandon, 'Hugo juge de Delacroix', <em>Gazette des Beaux-arts</em>, no.108, sept 1966, p.173-75.</li>
1060    <li>Garnery 2023. Lucille Garnery, <em>Des bizarrerie du marché de l'art : les rachats Piot lors de ses propres ventes</em>, 2023 <a href="https://venteanti>que.hypotheses.org/4531" target="_blank">(venteantique)</a></li>
1061    <li>Gassier 1973. Pierre Gassier, <em>The Drawings of Goya: The Complete Albums</em>, 1973.</li>
1062    <li>Gassier & Wilson-Bareau 1971. Pierre Gassier & Juliet Wilson-Bareau, <em>Goya: His Life and Work</em>, catalogue raisonné, 1971.</li>
1063    <li>Géal 2017. François Géal, 2017, 'Mérimée/Goya, chronique d'un désamour annoncé', <em>Cahiers Mérimée</em>, 9, 2017, pp.55-90.</li>
1064    <li>Gerard Powell 2014. Véronique Gerard Powell, 'Les Collectionneurs Espagnols et La Vente d'œuvres d'art à Paris Au XIXe Siècle (1826-1880)'', in <em>El Arte Español Entre Roma y París (Siglos XVIII y XIX): Intercambios Artísticos y Circulación de Modelos</em>, edited by Luis Sazatornil Ruiz and Jiméno Frédéric, Casa de Velázquez, 2014, pp. 305-23.</li>
1065    <li>Gilarranz Ibáñez 2020. Ainhoa Gilarranz Ibáñez, 'No Solo Es Arte: Las Redes de Federico de Madrazo Durante Su Pensionado En París y Roma (1837-1842)'', <em>Bulletin Hispanique</em>, no. 122-1, June 2020, pp. 277-92.</li>
1066    <li>Glendinning 1977. Nigel Glendinning, <em>Goya and his Critics</em>
1066, 1977 (new edition, ed. Vega, 2017).</li>
1067    <li>González López 1981. Carlos González López, <em>Federico de Madrazo y Küntz</em>, 1981.</li>
1068    <li>González López 1994. Carlos González López, 'Federico de Madrazo en el París de 1833', <em>Archivo Español de Arte</em>, 1994, vol. 67, no. 267, pp.211-24.</li>
1069    <li>González Navarro 2023. Carlos González Navarro, <em>José de Madrazo (1781-1859), Dibujante</em>, PhD thesis, Madrid, Universidad Complutense de Madrid, 2023.</li>
1070    <li>Griener & Guerdat 2015. Pascal Griener and Pamella Guerdat, <em>Marcello, une sculptrice à l'œuvre: correspondence, I</em>, Fribourg, 2015.</li>
1071    <li>Griffiths 2009. Antony Griffiths, review of Juliet Wilson-Bareau, 'Goya in France', in <em>Goya graveur</em> (2008), <em>Print Quarterly</em>, 26, 2, 2009, pp.188-189.</li>
1072    <li>Guédron 2018. Martial Guédron, <em>Les monstres: Créatures étranges et fantastiques, de la préhistoire à la science-fiction</em>, 2018.</li>
1073    <li>Guinard 1967-A. Paul Guinard, <em>Dauzats et Blanchard: Peintres de l'Espagne Romantique</em>, 1967.</li>
1074    <li>Guinard 1967-B. Paul Guinard, 'Baudelaire, Le Musée Espagnol et Goya', <em>Revue d'Histoire Littéraire de La France</em>, vol. 67, no. 2, April 1967, pp. 310-28.</li>
1075    <li>Hansen 2021. Dorothee Hansen, <em>Manet and Astruc. Friendship and Inspiration</em>, CEEH, 2021.</li>
1076    <li>Harris 1964. Tomas Harris, <em>Goya. Engravings and Lithographs</em>, 1964.</li>
1077    <li>Hopkins 2021. Claudia Hopkins, <em>Romantic Spain: David Roberts and Genaro Pérez Villaamil</em>, CEEH, 2021.</li>
1078    <li>Hopkins 2024. Claudia Hopkins, <em>Art and Identity in Spain 1833-1956: The Orient Within</em>, Bloomsbury, 2024.</li>
1079    <li>Hovasse 2001. Jean-Marc Hovasse, <em>Victor Hugo. vol.I: Avant l'exil, 1802-1851</em>, Paris, 2001.</li>
1080    <li>Kaenel 2005. Philippe Kaenel, <em>Le métier de l'illustrateur 1830-1880: Rodolphe Töpffer, J. J. Grandville, Gustave Doré, 2005 (1st ed. 1996).</em></li>
1081    <li>Lacoste-Veysseyre  1982. Claudine Lacoste-Veysseyre, <em>Théophile Gautier et Les Artistes de Son Temps: Exposition</em>, Montpellier, Musée Fabre, 1982.</li>
1082    <li>Lacoste-Veysseyre 2014. Claudine Lacoste-Veysseyre (ed.), <em>Théophile Gautier. Œuvres Complètes Section 8 Tome 1; Feuilletons Divers (1833-1837); Ménagerie Intime; La Nature Chez Elle</em>, Paris, 2014.</li>
1083    <li>Lafuente Ferrari 1987. Enrique Lafuente Ferrari, <em>Breve historia de la pintura española</em>, vol. 2, 1987.</li>
1084    <li>Lanzarote Guiral 2016. José María Lanzarote Guiral, <em>Diarios de viaje de Valentín Carderera por Europa (1841-1861). París, Londres, Bélgica y Alemania</em>, 2016.</li>
1085    <li>Le Men 2008. Ségolène Le Men, <em>Daumier et la caricature</em>, 2008.</li>
1086    <li>Lescure 1995. Maurice Lescure, <em>Madame Hamelin : Merveilleuse et turbulente fortunée, 1776-1851</em>, 1995.</li>
1087    <li>Lethève 1968. Jacques Lethève, 'Le public du Cabinet des Estampes au XIXe siècle', in <em>Humanisme actif: mélanges d'art et litterature offerts à Julien Cain</em>, Paris, 1968, pp.101-111.</li>
1088    <li>Lipschutz 1972. Ilse Hempel Lipschutz, <em>Spanish Painting and the French Romantics</em>, Harvard University Press, 1972.</li>
1089    <li>Lipschutz 1980. Ilse Hempel Lipschutz, 'Théophile Gautier et Son Espagne Retrouvée Dans l'œuvre de Goya', <em>Bulletin de La Société Théophile Gautier</em>, vol. 2, 1980, pp.9-34.</li>
1090    <li>López Canellas 1981. Ángel López Canellas (ed.), <em>Goya. Diplomatario</em>, 1981.</li>
1091    <li>López-Morell 2025. López-Morell, Miguel Ángel, ed. <em>Poder, patrimonio y cultura en España. Desde la Ilustración a la Restauración</em>, Madrid, Real Academia de Bellas Artes de San Fernando, 2025. <a href="https://www.poderycultura.es" target="_blank">(link)</a>.</li>
1092    <li>Los Llanos & Assante di Panzillo. José de los Llanos & Maryline Assante di Panzillo, 'Goya et les frères Dutuit', in Chazal 2008, pp.151-160.</li>
1093    <li>Luxenberg 2008. Alisa Luxenberg, <em>The Galerie Espagnole and the Museo Nacional, 1835-1853: Saving Spanish Art, or the Politics of Patrimony</em>, 2008.</li>
1094    <li>Mano 2008. José de la Mano, "Goya intruso. Arte y política en el reinado de José I (1808-1813)", <em>Goya en tiempos de guerra</em>, Madrid, Museo Nacional del Prado, 2008, pp.55-82.</li>
1095    <li>Mano 2021. José de la Mano, <em>Javier Goya's legacy. The albums of his father's drawings</em>, 2021</li>
1096    <li>Martí 2007. Monte Martí, <em>El mundo de los Madrazo: colección de la Comunidad de Madrid</em>, 2007.</li>
1097    <li>Martínez Pérez et al, 2015. Alejandro Martínez Pérez et al., <em>Patrimonio en conflicto: memoria del botín napoleónico recuperado (1815-1819)</em>, Madrid, RABASF, 2015.</li>
1098    <li>Martínez Plaza 2017. Pedro J. Martínez Plaza, <em>Epistolario del Archivo de Madrazo del Museo del Prado. Cartas de Mariano Fortuny, Cecilia, Ricardo, Raimundo e Isabel de Madrazo</em>, 2017.</li>
1099    <li>Maynial 1943. Édouard Maynial, <em>Anthologie des romanciers du XIXe siècle</em>, 1943.</li>
1100    <li>McDonald 2012. Mark McDonald, <em>Renaissance to Goya: Prints and Drawings from Spain</em>, The British Museum Press, 2012.</li>
1101    <li>Melot 1984. Michel Melot, <em>The Art of Illustration</em>, 1984.</li>
1102    <li>Mena-Marqués 2008. Manuela B. Mena-Marqués (dir.), <em>Goya en tiempos de guerra</em>, exhibition catalogue, 2008.</li>
1103    <li>Mena-Marqués & Matilla 2018. Manuela B. Mena-Marqués & José Manuel Matilla (dirs.), <em>Catálogo Razonado de Los Dibujos de Francisco de Goya, vol. 2 (1771-1792)</em>, with G. Maurer, G. Solache, J. Carrete, J. Wilson & V. Albarrán, 2018.</li>
1104    <li>Mena-Marqués & Matilla 2019. Manuela B. Mena-Marqués & José Manuel Matilla, <em>Goya: dibujos. 'Solo la voluntad me sobra'</em>, exhibition catalogue, 2019.</li>
1105    <li>Mina 2014. Gianna A. Mina (dir.), <em>Marcello, Adèle d'Affry (1836-1879), duchesse de Castiglione Colonna</em>, exhibition catalogue, Fribourg, Musée d'art et d'histoire, 2014.</li>
1106    <li>Monneret 1987. Sophie Monneret, <em>L'Impressionnisme et son époque</em>
1106, vol.2, t.1, Paris, Robert Laffont, 1987.</li>
1107    <li>Moulinat 1995. Francis Moulinat, <em>Théophile Gautier, critique d'art, dans les années 1830</em>, Paris, Université Paris-Sorbonne, 1995.</li>
1108    <li>Ochoa 1861. Eugenio de Ochoa, <em>Paris, Londres y Madrid, Paris</em>, Dramard Baudry, 1861.</li>
1109    <li>Ozaeta 2002. Mª Rosario Ozaeta, 'Eugenio de Ochoa, Traductor de Hugo', in <em>Neoclásicos y románticos ante la traducción</em>, edited by Francisco Lafarga et al, Universidad de Murcia, 2002, pp.419-36.</li>
1110    <li>Pierrot & Yon 2017. Roger Pierrot & Hervé Yon, <em>Honoré de Balzac, Correspondance III (1842-1850)</em>, Gallimard, Bibliothèque de la Pleiade, 2017.</li>
1111    <li>Pierrot & Yon 2011. Roger Pierrot & Hervé Yon, <em>Honoré de Balzac, Correspondance II (1836-1841)</em>, Gallimard, Bibliothèque de la Pleiade, 2011.</li>
1112    <li>Pierrot 2009. Roger Pierrot, 'Balzac et Astolphe de Custine: Lectures Critiques de Leurs Œuvres Dans La Correspondance Échangée de 1835 à 1846', <em>L'Année Balzacienne</em>, vol. no. 9, no. 1, January 2009, pp.105-38.</li>
1113    <li>Pierrot & Yon 2006. Roger Pierrot & Hervé Yon, <em>Honoré de Balzac, Correspondance I (1809-1835)</em>, Gallimard, Bibliothèque de la Pleiade, 2006.</li>
1114    <li>Piot 1999. Charlotte Piot, <em>Eugène Piot, amateur d'art et collectionneur</em>, Mémoire de DEA, Université Paris IV, 1999.</li>
1115    <li>Raineau-Lehuédé 2025. Joëlle Raineau-Lehuédé, 'Eugène Dutuit et l'estampe : du collectionneur à l'érudit', <em>Nouvelles de l'Estampe</em>, no.273, 2025. <a href="https://journals.openedition.org/estampe/6079"target="_blank">(Nouvelles de l'Estampe)</a></li>
1116    <li>Robaut 1885. Alfred Robaut, <em>L'œuvre complet de Eugène Delacroix: peintures, dessins, gravures, lithographies</em>, Paris, 1885.</li>
1117    <li>Romero Tobar 1997. Leonardo Romero Tobar, 'Españoles En París: Contactos de Románticos Españoles y Escritores Franceses Contemporáneos', <em>La Imagen de Francia En España (1808-1850)</em>, Presses de la Sorbonne Nouvelle / Universidad del País Vasco, 1997, pp.215-26.</li>
1118    <li>Salas 1964. Xavier de Salas, 'Portrait of Spanish Artists by Goya', <em>The Burlington Magazine</em>, Jan.1964, vol.106, no.730, pp.14-19.</li>
1119    <li>Sánchez 2024. Raquel Sánchez, 'José de Madrazo y los deberes del padre perfecto', in <em>Hijos del Siglo</em>, 2024.</li>
1120    <li>Sancho 2001. José Luis Sancho, 'Francisco de Goya y Fréderic Quilliet en el Palacio Real de Madrid, 1808', <em>Boletín del Museo del Prado</em>, vo.19, no.37, 2001, pp.115-142.</li>
1121    <li>Sazatornil & Jimeno 2014 (eds.). Luis Sazatornil Ruiz & Frédéric Jiméno, <em>El arte español entre Roma y París (siglos XVIII y XIX): Intercambios artísticos y circulación de modelos</em>, Casa de Velázquez, 2014.</li>
1122    <li>Schopp 1993. Claude Schopp (ed.), <em>Frères d'armes de la révolution romantique. Lettres d'Alexandre Dumas au Baron Taylor et à Adrien Dauzats</em>, Cahiers Alexandre Dumas, 1993, no. 20 (reedited in 2023).</li>
1123    <li>Schopp 2015. Claude Schopp (ed.), <em>Une amitié capitale: Correspondance Victor Hugo - Alexandre Dumas</em>, 2015.</li>
1124    <li>Schulz 2005. Andrew Schulz, <em>Goya's Caprichos: Aesthetics, Perception, and the Body</em>, 2005.</li>
1125    <li>Schwander 2021. Martin Schwander (ed.), <em>Goya</em>, exhibition catalogue, Beyeler Foundation, 2021 (English/Spanish/German).</li>
1126    <li>Tabarant 1947. Adolphe Tabarant, <em>Manet et ses œuvres</em>, Paris, Gallimard, 1947 (1st ed. 1897).</li>
1127    <li>Thompson 1970. Christopher W. Thompson, <em>Victor Hugo and the Graphic Arts (1820-1833)</em>, 1970.</li>
1128    <li>Tinterow 2003. Gary Tinterow et al. <em>Manet/Velázquez: The French Taste for Spanish Painting</em>, New York, Metropolitan Museum of Art, 2003.</li>
1129    <li>Tomlinson 1992. Janis Tomlinson, <em>Goya in the Twilight of Enlightenment</em>, 1992.</li>
1130    <li>Tomlinson 2020. Janis Tomlinson, <em>Goya: A Portrait of the Artist</em>, 2020.</li>
1131    <li>Torres González 2009. Begoña Torres González, 'La Hermandad Romántica: Larra y las artes plásticas', in <i>Larra: Fígaro de vuelta, 1809-2009</i>, 2009, pp.183-203.</li>
1132    <li>Viñaza 1887. Conde de la Viñaza, <i>Goya. Su tiempo, su vida, sus obras</i>, Madrid, 1887.</li>
1133    <li>Wilson-Bareau 1992. Juliet Wilson-Bareau, <em>Manet: The Execution of Maximilian: Painting, Politics and Censorship</em>, Princeton (New Jersey), Princeton University Press, 1992.</li>
1134    <li>Wilson-Bareau & Mena Marqués 1993. Juliet Wilson-Bareau & Manuela B. Mena Marqués, <em>Goya: el capricho y la invención. Cuadros de gabinete, bocetos y miniaturas</em>, Museo del Prado, 1993.</li>
1135    <li>Wilson-Bareau 2016. Juliet Wilson-Bareau, <em>Goya in the Norton Simon Museum</em>, New Haven, 2016.</li>
1136    <li>Wolf 1991. Reva Wolf, <em>Goya and the Satirical Print: in England and on the Continent, 1730-1850</em>, 1991.</li>
1137    <li>Wolohojian & Dunn 2023. Stephan Wolohojian and Ashley Dunn, <em>Manet/Degas</em>, The Metropolitan Museum of Art, 2023.</i></li>
1138  </ul>
1139</div>
1140
1141<div id="artworks" style="display:none; padding:2rem; max-width:800px; margin:auto; line-height:1.6;">
1142  <h2 data-i18n="ARTWORKS_TITLE"></h2>
1143  <div data-i18n="ARTWORKS_BODY"></div>
1144</div>
1145
1146<div id="news" class="news-section" style="display:none; padding:2rem; max-width:800px; margin:auto; line-height:1.6;">
1147  <h2 data-i18n="NEWS_TITLE"></h2>
1148  <div data-i18n="NEWS_BODY"></div>
1149</div>
1150
1151<div id="mentions" style="display:none; padding:2rem; max-width:800px; margin:auto; line-height:1.6;">
1152  <h2 data-i18n="MENTIONS_TITLE"></h2>
1153  <div data-i18n="MENTIONS_BODY"></div>
1154</div>
1155
1156<div id="relevant-links" style="display:none; padding:2rem; max-width:800px; margin:auto; line-height:1.6;">
1157  <h2 data-i18n="RELEVANT_LINKS_TITLE"></h2>
1158  <div data-i18n="RELEVANT_LINKS_BODY"></div>
1159</div>
1160
1161<div id="cite" style="display: none; padding: 2rem; max-width: 800px; margin: auto; line-height: 1.6;">
1162  <h2 data-i18n="CITE_TITLE"></h2>
1163  <ul>
1164    <li>
1165      <strong>MLA (Modern Language Association):</strong><br>
1166      Fayos-Pérez, Paula, editor. <em>The Goya Network</em>. Anita Vero, contributor. 2025. GoyaNetwork.com. Accessed 17 May 2025.
1167    </li>
1168    <li>
1169      <strong>APA (American Psychological Association):</strong><br>
1170      Fayos-Pérez, P. (ed.). (2025). <em>The Goya Network</em>. [Anita Vero, contributor]. Retrieved May 17, 2025, from https://www.goyanetwork.com
1171    </li>
1172    <li>
1173      <strong>Chicago (Notes and Bibliography):</strong><br>
1174      Paula Fayos-Pérez, ed., <em>The Goya Network</em>, with Anita Vero as contributor, 2025, https://www.goyanetwork.com (accessed May 17, 2025).
1175    </li>
1176  </ul>
1177  <p style="font-size: 0.9rem; color: #999; margin-top: 1rem;">
1178    <strong data-i18n="RIGHTS_LABEL"></strong> <span data-i18n="NOTARIAL_PROTECTION"></span>
1179  </p>
1180  <div style="margin-top: 1rem;">
1181    <button onclick="downloadRIS()" style="margin-right: 1rem; padding: 0.5rem 1rem; background:#444; color:white; border:1px solid #555; border-radius:4px;">
1182      <i class="fas fa-file-alt"></i> Export RIS
1183    </button>
1184    <button onclick="downloadCSV()" style="padding: 0.5rem 1rem; background:#444; color:white; border:1px solid #555; border-radius:4px;">
1185      <i class="fas fa-file-csv"></i> Export CSV
1186    </button>
1187  </div>
1188</div>
1189
1190<div id="contact" style="display:none; padding:2rem; max-width:800px; margin:auto; line-height:1.6;">
1191  <h2 data-i18n="CONTACT_TITLE"></h2>
1192  <div data-i18n="CONTACT_BODY"></div>
1193</div>
1194
1195 <div id="partners" style="display: none; padding: 2rem; max-width: 1200px; margin: auto; line-height: 1.6; text-align: center;">
1196  <h2 data-i18n="PARTNERS_TITLE"></h2>
1197
1198  <!-- FUNDING PARTNERS -->
1199  <h3 style="margin-top:2.5rem; margin-bottom:2rem; font-size:1.1em; text-transform:uppercase; letter-spacing:0.5px;" data-i18n="FUNDING_PARTNERS"></h3>
1200  <div style="display:flex; justify-content:center; align-items:flex-start; flex-wrap:nowrap; gap:6rem; margin-bottom:3rem;">
1201
1202    <!-- BBVA -->
1203    <div style="flex:0 1 300px; max-width:300px; text-align:center;">
1204      <a href="https://www.fbbva.es/" target="_blank">
1205        <img src="images/BBVA_Foundation_logo.jpg" alt="BBVA Logo" style="max-width:220px; display:block; margin:0 auto;">
1206      </a>
1207      <p style="margin-top:0.5rem;">
1208        <a href="https://www.fbbva.es/" target="_blank" style="color:#66ccff; text-decoration:none;">Fundación BBVA</a>
1209      </p>
1210    </div>
1211
1212    <!-- GERDA HENKEL -->
1213    <div style="flex:0 1 300px; max-width:300px; text-align:center;">
1214      <a href="https://www.gerda-henkel-stiftung.de/" target="_blank">
1215        <img src="images/Gerda_Henkel_logo.jpg" alt="Gerda Henkel Logo" style="max-width:280px; display:block; margin:0 auto;">
1216      </a>
1217      <p style="margin-top:0.5rem;">
1218        <a href="https://www.gerda-henkel-stiftung.de/" target="_blank" style="color:#66ccff; text-decoration:none;" data-i18n="GERDA_HENKEL_NAME"></a>
1219      </p>
1220    </div>
1221
1222  </div>
1223
1224  <!-- ACADEMIC PARTNERS -->
1225  <h3 style="margin-top:2.5rem; margin-bottom:2rem; font-size:1.1em; text-transform:uppercase; letter-spacing:0.5px;" data-i18n="ACADEMIC_PARTNERS"></h3>
1226  <div style="display:flex; justify-content:center; align-items:flex-start; flex-wrap:nowrap; gap:6rem;">
1227
1228    <!-- ARTES -->
1229    <div style="flex:0 1 300px; max-width:300px; text-align:center;">
1230      <a href="https://artes-uk.org/" target="_blank">
1231        <img src="images/ARTES_logo.jpg" alt="ARTES Logo" style="max-width:220px; display:block; margin:0 auto;">
1232      </a>
1233      <p style="margin-top:0.5rem;">
1234        <a href="https://artes-uk.org/" target="_blank" style="color:#66ccff; text-decoration:none;">
1235          ARTES: Iberian & Latin American Visual Culture Group
1236        </a>
1237      </p>
1238    </div>
1239
1240    <!-- CRIMIC -->
1241    <div style="flex:0 1 300px; max-width:300px; text-align:center;">
1242      <a href="https://crimic-sorbonne.fr/" target="_blank">
1243        <img src="images/CRIMIC_logo.jpg" alt="CRIMIC Logo" style="max-width:220px; display:block; margin:0 auto;">
1244      </a>
1245      <p style="margin-top:0.5rem; line-height:1.3;">
1246        <a href="https://crimic-sorbonne.fr/" target="_blank" style="color:#66ccff; text-decoration:none;">
1247          CRIMIC<br>
1248          (Centre de Recherches Interdisciplinaires<br>
1249          sur les Mondes Ibéro-américains Contemporains)
1250        </a>
1251      </p>
1252    </div>
1253
1254    <!-- Instituto Cervantes -->
1255    <div style="flex:0 1 300px; max-width:300px; text-align:center;">
1256      <a href="https://www.cervantes.es/" target="_blank">
1257        <img src="images/Instituto_Cervantes_logo.jpg" alt="Instituto Cervantes Logo" style="max-width:160px; display:block; margin:0 auto;">
1258      </a>
1259      <p style="margin-top:0.5rem; line-height:1.3;">
1260        <a href="https://www.cervantes.es/" target="_blank" style="color:#66ccff; text-decoration:none;">
1261          Instituto Cervantes<br>
1262        </a>
1263      </p>
1264    </div>
1265
1266  </div>
1267</div>
1268
1269  
1269<script>
1270  function downloadRIS() {
1271    const ris = `TY  - ELEC\nTI  - The Goya Network\nAU  - Fayos-Pérez, Paula\nA2  - Vero, Anita\nDA  - 2025///\nPY  - 2025\nLA  - English\nUR  - https://www.goyanetwork.com\nER  - `;
1272    const blob = new Blob([ris], { type: 'text/plain' });
1273    const link = document.createElement('a');
1274    link.href = URL.createObjectURL(blob);
1275    link.download = 'GoyaNetwork.ris';
1276    link.click();
1277  }
1278  
1279  function downloadCSV() {
1280    const csv = `title,url,author,contributor,year,language\n"The Goya Network","https://www.goyanetwork.com","Paula Fayos-Pérez","Anita Vero","2025","English"`;
1281    const blob = new Blob([csv], { type: 'text/csv' });
1282    const link = document.createElement('a');
1283    link.href = URL.createObjectURL(blob);
1284    link.download = 'GoyaNetwork.csv';
1285    link.click();
1286  }
1287  </script>
1287
1288  
1289  <div class="contributions-section">
1290    <h2 data-i18n="CONTRIBUTIONS_TITLE"></h2>
1291    <div data-i18n="CONTRIBUTIONS_TEXT"></div>
1292    <p>
1293      <a href="https://docs.google.com/forms/d/1Gxl6_Usf45QV_qKfp-ez3BQt-0Mxirm6Ok6xg-VUnN0/edit"
1294        target="_blank"
1295        data-i18n="ACCESS_FORM"></a>
1296    </p>
1297  </div>
1298
1299<footer class="footer" style="margin-top: 0;">
1300  <div style="display: flex; justify-content: center; align-items: center; gap: 5rem; flex-wrap: wrap;">
1301    <p style="margin: 0; text-align: left;">
1302      © 2025 Paula Fayos-Pérez · 
1303      <a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" style="color:#66ccff;">CC BY-NC 4.0</a><br>
1304      <span data-i18n="NOTARIAL_PROTECTION"></span>
1305    </p>
1306    <div style="display: flex; gap: 3rem; align-items: center;">
1307      <a href="https://www.fbbva.es/" target="_blank">
1308        <img src="images/BBVA_Foundation_logo.jpg" alt="BBVA Foundation Logo" style="height: 40px;">
1309      </a>
1310      <a href="https://www.gerda-henkel-stiftung.de/" target="_blank">
1311        <img src="images/Gerda_Henkel_logo.jpg" alt="Gerda Henkel Logo" style="height: 40px;">
1312      </a>
1313    </div>
1314  </div>
1315</footer>
1316
1317  <div class="social-icons">
1318    <!-- Goya Network -->
1319    <a href="https://x.com/GoyaNetwork" target="_blank" aria-label="X">
1320      <i class="fab fa-x-twitter"></i>
1321    </a>
1322    <!-- Personal -->
1323    <a href="https://x.com/PaulaFayosPerez" target="_blank" aria-label="X">
1324      <i class="fab fa-x-twitter"></i>
1325    </a>
1326    <a href="https://ucm.academia.edu/PaulaFayosPerez" target="_blank" aria-label="Academia.edu">
1327      <i class="fas fa-graduation-cap"></i>
1328    </a>
1329    <a href="https://www.researchgate.net/profile/Paula-Fayos-Perez-2" target="_blank" aria-label="ResearchGate">
1330      <i class="fab fa-researchgate"></i>
1331    </a>
1332    <a href="https://github.com/PFayosP/GoyaNetworkWeb" target="_blank" aria-label="GitHub">
1333      <i class="fab fa-github"></i>
1334    </a>
1335  </div>
1336</footer>
1337
1338<script>
1339function showSection(section) {
1340  const layout = document.getElementById('layout');
1341  const aboutDiv = document.getElementById('about');
1342  const people = document.getElementById('people');
1343  const partners = document.getElementById('partners');
1344  const artworks = document.getElementById('artworks');
1345  const bibliography = document.getElementById('bibliography'); 
1346  const cite = document.getElementById('cite');
1347  const news = document.getElementById('news');
1348  const mentions = document.getElementById('mentions');
1349  const relevantLinks = document.getElementById('relevant-links');
1350  const contact = document.getElementById('contact');
1351
1352  layout.classList.add('hidden');
1353  aboutDiv.style.display = 'none';
1354  people.style.display = 'none';
1355  partners.style.display = 'none';
1356  artworks.style.display = 'none';
1357  bibliography.style.display = 'none';
1358  cite.style.display = 'none';
1359  news.style.display = 'none';
1360  mentions.style.display = 'none';
1361  relevantLinks.style.display = 'none';
1362  contact.style.display = 'none';
1363
1364  if (section === 'network') {
1365    layout.classList.remove('hidden');
1366    // Forzar la reconstrucción completa del panel
1367    setTimeout(() => {
1368      if (window.showDefaultNodeInfo) {
1369        window.showDefaultNodeInfo();
1370      } else {
1371        // Si showDefaultNodeInfo no funciona, reconstruir manualmente
1372        const nodeInfo = document.getElementById('nodeInfo');
1373        if (nodeInfo) {
1374          nodeInfo.innerHTML = `
1375            <p>Click a <strong>node</strong> (an individual) or <strong>edge</strong> (a connection between two individuals) to view the data they contain.</p>
1376            <p style="color: #ccc; margin-top: 1em;">(It might take a few seconds for the website to show the network)</p>
1377            <div id="membersSection" style="margin-top: 1rem;">
1378              <div class="section-heading">Members (A–Z by surname)</div>
1379              <div id="membersList"></div>
1380            </div>
1381          `;
1382          // Llamar a buildMembersList si está disponible
1383          if (window.buildMembersList) {
1384            setTimeout(() => window.buildMembersList(), 100);
1385          }
1386        }
1387      }
1388    }, 50);
1389  } else if (section === 'about') {
1390    aboutDiv.style.display = 'block';
1391  } else if (section === 'people') {
1392    people.style.display = 'block';
1393  } else if (section === 'partners') {
1394    partners.style.display = 'block';
1395  } else if (section === 'artworks') { 
1396    artworks.style.display = 'block';
1397  } else if (section === 'bibliography') {
1398    bibliography.style.display = 'block';
1399  } else if (section === 'cite') {
1400  cite.style.display = 'block';
1401  } else if (section === 'contact') {
1402    contact.style.display = 'block';
1403  } else if (section === 'news') {
1404    news.style.display = 'block';
1405  } else if (section === 'mentions') {
1406    mentions.style.display = 'block';
1407  } else if (section === 'relevant-links') {
1408    relevantLinks.style.display = 'block';
1409  }
1410}
1411</script>
1411
1412
1413<script src="network.js"></script>
1413
1414
1415<!-- Social Share Modal -->
1416<div id="shareModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); z-index:1000; justify-content:center; align-items:center;">
1417  <div style="background:#222; padding:2rem; border-radius:8px; max-width:500px;">
1418    <h3 style="margin-top:0;">Share</h3>
1419    <div style="display:flex; gap:1rem; margin-bottom:1rem;">
1420      <a id="twitterShare" target="_blank" style="background:#1DA1F2; color:white; padding:0.5rem 1rem; border-radius:4px; text-decoration:none;">
1421        <i class="fab fa-twitter"></i> Twitter
1422      </a>
1423      <a id="linkedinShare" target="_blank" style="background:#0077B5; color:white; padding:0.5rem 1rem; border-radius:4px; text-decoration:none;">
1424        <i class="fab fa-linkedin"></i> LinkedIn
1425      </a>
1426      <a id="facebookShare" target="_blank" style="background:#4267B2; color:white; padding:0.5rem 1rem; border-radius:4px; text-decoration:none;">
1427        <i class="fab fa-facebook"></i> Facebook
1428      </a>
1429    </div>
1430    <div style="margin-bottom:1rem;">
1431      <input type="text" id="shareUrl" style="width:100%; padding:0.5rem; background:#333; color:white; border:1px solid #555;" readonly>
1432    </div>
1433    <button onclick="document.getElementById('shareModal').style.display='none'" style="padding:0.5rem 1rem; background:#444; color:white; border:none; border-radius:4px;">Close</button>
1434  </div>
1435</div>
1436
1437<script>
1438  // Initialize button event handlers
1439  function initializeNavButtons() {
1440    const network = window.VIS_NETWORK;
1441    if (!network) return false;
1442
1443    // Pan buttons
1444    document.getElementById('navUp')?.addEventListener('click', () => {
1445      const pos = network.getViewPosition();
1446      network.moveTo({position: {x: pos.x, y: pos.y - 100}, animation: {duration: 300}});
1447    });
1448    
1449    document.getElementById('navDown')?.addEventListener('click', () => {
1450      const pos = network.getViewPosition();
1451      network.moveTo({position: {x: pos.x, y: pos.y + 100}, animation: {duration: 300}});
1452    });
1453    
1454    document.getElementById('navLeft')?.addEventListener('click', () => {
1455      const pos = network.getViewPosition();
1456      network.moveTo({position: {x: pos.x - 100, y: pos.y}, animation: {duration: 300}});
1457    });
1458    
1459    document.getElementById('navRight')?.addEventListener('click', () => {
1460      const pos = network.getViewPosition();
1461      network.moveTo({position: {x: pos.x + 100, y: pos.y}, animation: {duration: 300}});
1462    });
1463
1464    // Zoom buttons
1465    document.getElementById('navZoomIn')?.addEventListener('click', () => {
1466      network.moveTo({scale: network.getScale() * 1.2, animation: {duration: 300}});
1467    });
1468    
1469    document.getElementById('navZoomOut')?.addEventListener('click', () => {
1470      network.moveTo({scale: network.getScale() / 1.2, animation: {duration: 300}});
1471    });
1472    
1473    document.getElementById('navFitAll')?.addEventListener('click', () => {
1474      network.fit({animation: {duration: 500}});
1475    });
1476
1477    console.log('Navigation buttons initialized');
1478    return true;
1479  }
1480
1481  // Wait for network and initialize buttons
1482  window.addEventListener('load', () => {
1483    const checkNetwork = setInterval(() => {
1484      if (window.VIS_NETWORK && initializeNavButtons()) {
1485        clearInterval(checkNetwork);
1486        console.log('Buttons ready');
1487      }
1488    }, 50);
1489
1490    // Fallback
1491    setTimeout(() => {
1492      if (window.VIS_NETWORK) initializeNavButtons();
1493    }, 500);
1494  });
1495</script>
1495
1496  
1497</body>
1498</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.