@font-face{font-family:KnileSemiBold;src:url(https://taz.de/lib/taz-verlag-node/fonts/Knile-SemiBold.woff2) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:AktivGrotesk_Rg;src:url(https://taz.de/lib/taz-verlag-node/fonts/AktivGrotesk_W_Rg.woff2) format("woff2"),url(https://taz.de/lib/taz-verlag-node/fonts/AktivGrotesk_W_Rg.woff) format("woff");font-display:swap}html,body{margin:0;padding:0;height:100vh;overflow:hidden;background:#fff;font-family:KnileSemiBold,serif;color:#000}.container{display:flex;flex-direction:column;height:100vh;width:100%;overflow:hidden}.float-tooltip-kap{background:transparent!important;padding:0!important;border-radius:5px!important;color:inherit!important;box-shadow:none!important}.scene-tooltip{background:transparent!important;border:none!important;padding:0!important;border-radius:5px!important}.overlay-box{border-width:1px;border-radius:5px;border-color:#d3d3d3;background-color:#fff;opacity:.9}.overlay-box .overlay-text{opacity:1;line-height:1.2em;color:#000;padding:1px 4px;font-family:AktivGrotesk_Rg,sans-serif;font-weight:400;text-align:center}h3{font-size:22px;margin:5px;font-weight:700}.my-legend .legend-title{text-align:left;margin-left:5px;margin-bottom:3px;font-family:AktivGrotesk_Rg,sans-serif;font-weight:400;font-size:80%}.my-legend .legend-scale ul{margin:5px;padding:0;float:left;list-style:none}.my-legend .legend-scale ul li{display:block;float:left;width:20px;padding-left:1px;padding-right:1px;margin-bottom:3px;font-family:AktivGrotesk_Rg,sans-serif;text-align:center;font-size:65%;list-style:none}.my-legend .legend-scale ul li+li{border-left:1px solid #000}.my-legend ul.legend-labels li span{display:block;float:left;height:10px;width:20px}.my-legend .legend-source{font-family:AktivGrotesk_Rg,sans-serif;font-size:55%;margin-left:5px;color:#999;clear:both}.my-legend a{color:#777}#globeViz{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.globe-placeholder{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.placeholder-image{max-width:100%;max-height:100%;object-fit:contain}.load-button{position:absolute;padding:20px 40px;min-width:280px;font-size:18px;font-weight:600;line-height:1.4;color:#fff;background:linear-gradient(135deg,#50505080,#32323280);border:3px solid rgba(255,255,255,.4);border-radius:16px;cursor:pointer;transition:all .3s ease;box-shadow:0 8px 24px #0000004d;text-align:center;white-space:normal;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.load-button:hover{background:linear-gradient(135deg,#64646499,#46464699);transform:translateY(-2px);box-shadow:0 12px 32px #0006;border-color:#fff9}.load-button:active{transform:translateY(0);box-shadow:0 4px 16px #0000004d}body{font-family:KnileSemiBold,serif}#wrapper h3{font-family:KnileSemiBold,serif;font-size:22px;margin:5px;font-weight:700;color:#000}#legend{font-family:AktivGrotesk_Rg,sans-serif}#legend .legend-title{font-family:KnileSemiBold,serif}:root{--bg: #ffffff;--surface: #fafafa;--border: #d0d0d0;--border-light: #e0e0e0;--text: #1a1a1a;--text-muted: #666666;--col-familial: #8b1a1a;--col-employ: #1a4a6b;--col-mitglied: #5a3e8a;--col-nahestehend: #b06a00;--col-institution: #2d6a3f}*{box-sizing:border-box;margin:0;padding:0}html,body{margin:0;padding:0;height:100vh;overflow:hidden}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;width:100vw}#title-bar{position:absolute;top:0;left:0;right:0;height:48px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;background:var(--surface);border-bottom:2px solid var(--text);z-index:19}#title-text{font-size:1rem;font-weight:600;color:var(--text);letter-spacing:.01em}#load-status{font-size:.62rem;color:var(--text-muted);white-space:nowrap}#load-status.error{color:var(--col-familial)}#graph-container{position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden;cursor:grab}#graph-container:active{cursor:grabbing}svg{width:100%;height:100%}.link{fill:none;stroke-width:1.5px}.link.familiäre-verbindung{stroke:var(--col-familial);stroke-opacity:.45;stroke-dasharray:5 3}.link.beschäftigt{stroke:var(--col-employ);stroke-opacity:.65}.link.mitglied{stroke:var(--col-mitglied);stroke-opacity:.3;stroke-width:6px;stroke-linecap:round}.link.nahestehend{stroke:var(--col-nahestehend);stroke-opacity:.45;stroke-dasharray:5 3}.node circle{cursor:pointer;transition:r .15s}.node circle.named{fill:var(--surface);stroke:var(--text);stroke-width:1.8px}.node circle.anonymous{fill:var(--text-muted);stroke:var(--bg);stroke-width:1px}.node circle.highlighted{stroke-width:3px;stroke:var(--col-familial)}.node rect.institution{fill:var(--surface);stroke:var(--col-institution);stroke-width:2px}.node text{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;font-size:9px;fill:var(--text);pointer-events:none;text-anchor:middle}.node text.anon-label{fill:var(--text-muted);font-size:7.5px;font-style:italic}.node text.institution-label{fill:var(--col-institution);font-size:9px;font-weight:500}#tooltip{position:absolute;background:var(--surface);border:1.5px solid var(--text);padding:8px 12px;font-size:.65rem;pointer-events:none;opacity:0;transition:opacity .12s;z-index:30;max-width:220px;line-height:1.5;box-shadow:3px 3px #0000001a}#tooltip .tip-name{font-size:1rem;font-weight:600;margin-bottom:6px;border-bottom:1px solid var(--border-light);padding-bottom:6px}#tooltip .tip-connections{font-size:.62rem;color:var(--text-muted)}#tooltip .tip-conn-row{display:block;font-size:.62rem;margin-bottom:3px}#tooltip .tip-conn-type{display:block;color:var(--text-muted);font-style:italic;font-size:.58rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:1px}#legend{position:absolute;bottom:20px;left:20px;background:var(--surface);border:1.5px solid var(--text);padding:14px 18px;font-size:.65rem;line-height:1.5;z-index:20;box-shadow:3px 3px #0000001a;width:190px;overflow:hidden}#legend .legend-title{font-size:.9rem;font-weight:600;margin-bottom:6px}.legend-row{display:flex;align-items:center;gap:10px;color:var(--text-muted);padding:3px}.legend-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.legend-line-sample{width:26px;height:2px;flex-shrink:0}.legend-line-sample-dashed{width:26px;height:2px;flex-shrink:0;background-image:repeating-linear-gradient(to right,currentColor 0px,currentColor 5px,transparent 5px,transparent 8px)}#empty-state{position:absolute;top:48px;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;pointer-events:none}#empty-state h2{font-size:1.5rem;font-weight:400;color:var(--text-muted)}#empty-state p{font-size:.68rem;color:var(--text-muted);text-align:center;max-width:360px;line-height:1.9;letter-spacing:.04em}@media (max-width: 768px){#title-bar{height:40px;padding:0 16px}#title-text{font-size:.9rem}#load-status{font-size:.55rem}#graph-container{top:40px}#legend{bottom:12px;left:12px;padding:10px 14px;font-size:.6rem}.node text{font-size:8px}}.node text,#legend,#title-bar,#tooltip{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#load-placeholder{position:absolute;top:48px;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:var(--bg)}#load-placeholder img{position:absolute;width:100%;height:100%;object-fit:contain;opacity:.7}#load-viz-button{position:absolute;padding:20px 40px;min-width:280px;font-size:18px;font-weight:600;line-height:1.4;color:#fff;background:linear-gradient(135deg,#50505080,#32323280);border:3px solid rgba(255,255,255,.4);border-radius:16px;cursor:pointer;transition:all .3s ease;box-shadow:0 8px 24px #0000004d;text-align:center;white-space:normal;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10}#load-viz-button:hover{background:linear-gradient(135deg,#64646499,#46464699);transform:translateY(-2px);box-shadow:0 12px 32px #0006;border-color:#fff9}#load-viz-button:active{transform:translateY(0);box-shadow:0 4px 16px #0000004d}#load-viz-button:disabled{opacity:.7;cursor:wait;transform:none}.node circle.named{fill:var(--surface);stroke:var(--text);stroke-width:2px}.node circle.named[style*=url]{stroke-width:.5px}
