Änderungen von Dokument Data Protection & Ethics
Zuletzt geändert von Veronika Kocher am Freitag, 18 Sep. 2026 16:47
Von Version 2.1
bearbeitet von Veronika Kocher
am Donnerstag, 03 Sep. 2026 16:21
am Donnerstag, 03 Sep. 2026 16:21
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version 1.9
bearbeitet von Veronika Kocher
am Donnerstag, 03 Sep. 2026 13:04
am Donnerstag, 03 Sep. 2026 13:04
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -1,235 +1,1215 @@ 1 +Prüfe personenbezogene Daten, Vertraulichkeit, Einwilligungen, sensible Materialien und ethische Fragen frühzeitig im Projekt. 2 + 3 +== Überblick == 4 + 5 +Personenbezogene, vertrauliche oder sensible Informationen brauchen eine klare Rechtsgrundlage, angemessene Schutzmaßnahmen und nachvollziehbare Informationen für Betroffene. Ethische Fragen können zusätzlich über die reine Rechtskonformität hinausgehen. 6 + 7 +== Was du wissen solltest == 8 + 9 +* Kläre, welche personenbezogenen oder sensiblen Daten tatsächlich benötigt werden. 10 +* Trenne Einwilligung zur Teilnahme gegebenenfalls von der Erlaubnis zur Veröffentlichung identifizierbarer Inhalte. 11 +* Plane Zugriff, Speicherung, Aufbewahrung, Löschung und mögliche Weitergabe bereits vor der Datenerhebung. 12 + 13 +== Was du tun solltest == 14 + 15 +1. Prüfe, was auf dein Projekt zutrifft. 16 +2. Dokumentiere die relevanten Entscheidungen. 17 +3. Nutze bei Bedarf geeignete institutionelle Services und Unterstützungsangebote. 18 + 19 +== Schlüsselfragen == 20 + 21 +* Was muss entschieden werden? 22 +* Wer ist verantwortlich? 23 +* Was muss dokumentiert werden? 24 +* Gibt es rechtliche, ethische oder technische Rahmenbedingungen? 25 +* Was muss vor der nächsten Projektphase erledigt sein? 26 + 27 +== Services & Tools == 28 + 29 +Nutze die institutionellen Services, Infrastrukturen und Tools, die zu deinem Projekt und seinen Anforderungen passen. Konkrete Verlinkungen werden ergänzt, sobald die jeweiligen Angebote im Navigator erfasst sind. 30 + 31 +== Info-Blätter & Checklisten == 32 + 33 +Passende Info-Blätter, Checklisten und Vorlagen werden hier ergänzt, sobald sie verfügbar sind. 34 + 35 +== Anleitungen == 36 + 37 + 38 +{{html}}<span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px 0;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">IN VORBEREITUNG</span>{{/html}} 39 +Schritt-für-Schritt-Anleitungen werden hier ergänzt, sobald sie verfügbar sind. 40 + 41 +== Verwandte Themen == 42 + 43 +Weitere Orientierung findest du in den angrenzenden Phasen Vorbereiten, Arbeiten & Verwalten sowie Publizieren & Teilen. 44 + 45 +== Wer ist zuständig? == 46 + 47 + 48 +{{info title="Service-Routing"}} 49 +**Primäre Fachzuständigkeit:** Datenschutzbeauftragter für Fragen zu personenbezogenen Daten; Projekt-/tragende Einheit und der jeweils anwendbare Ethik- bzw. Förderweg für ethische Prüfungen. 50 + 51 +**Rolle von Support Kunst und Forschung (SKF):** Koordiniert Projekt- und Förderanforderungen und unterstützt beim Routing zur Fachprüfung; SKF ist nicht die Datenschutzinstanz. 52 +{{/info}} 53 + 54 +Wenn du unsicher bist, welcher Weg gilt, starte bei der oben genannten Fachstelle. Bei geförderter oder projektbasierter Forschung mit mehreren beteiligten Einheiten kann SKF den Projektweg koordinieren. 55 + 56 +{{html}} 57 +<!-- ARSN_SEARCH_TERMS_START --> 58 +<details class="arsn-search-terms" style="margin-top:28px;padding-top:10px;border-top:1px solid #eee;"> 59 +<summary style="cursor:pointer;color:#666;font-size:13px;">Suchbegriffe & verwandte Themen</summary> 60 +<div style="margin-top:9px;color:#555;font-size:13px;"> 61 +<p style="margin:0 0 8px 0;"> 62 +Dieses Thema kann auch über verwandte Begriffe, Synonyme und häufige Suchanfragen gefunden werden. 63 +Wähle einen Begriff aus, um den Service-Navigator Kunst & Forschung zu durchsuchen. 64 +</p> 65 +<p style="margin:0;"><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=kunst%20und%20forschung#arsn-search-input" class="arsn-search-term" data-search-term="kunst und forschung" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">kunst und forschung</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=vorbereiten#arsn-search-input" class="arsn-search-term" data-search-term="vorbereiten" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">vorbereiten</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=datenschutz#arsn-search-input" class="arsn-search-term" data-search-term="datenschutz" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">datenschutz</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=personenbezogene%20daten#arsn-search-input" class="arsn-search-term" data-search-term="personenbezogene daten" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">personenbezogene daten</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=DSGVO#arsn-search-input" class="arsn-search-term" data-search-term="DSGVO" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">DSGVO</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=ethik#arsn-search-input" class="arsn-search-term" data-search-term="ethik" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">ethik</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=einwilligung#arsn-search-input" class="arsn-search-term" data-search-term="einwilligung" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">einwilligung</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=sensible%20daten#arsn-search-input" class="arsn-search-term" data-search-term="sensible daten" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">sensible daten</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=vertraulichkeit#arsn-search-input" class="arsn-search-term" data-search-term="vertraulichkeit" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">vertraulichkeit</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=datenprivatsph%C3%A4re#arsn-search-input" class="arsn-search-term" data-search-term="datenprivatsphäre" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">datenprivatsphäre</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=anonymisierung#arsn-search-input" class="arsn-search-term" data-search-term="anonymisierung" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">anonymisierung</a><a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/?q=pseudonymisierung#arsn-search-input" class="arsn-search-term" data-search-term="pseudonymisierung" style="display:inline-block;margin:3px 5px 3px 0;padding:3px 8px;border:1px solid #d7d7d7;border-radius:14px;background:#fff;color:#333;text-decoration:none;font-size:12px;">pseudonymisierung</a></p> 66 +</div> 67 +</details> 68 +<!-- ARSN_SEARCH_TERMS_END --> 69 +{{/html}} 70 + 1 1 {{html clean="false"}} 72 +<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START --> 2 2 3 -<style> 4 -.dpe{max-width:1400px;margin:0 auto;color:#322f2b} 5 -.dpe *{box-sizing:border-box} 6 -.dpe-card{border:1px solid #e3ded6;border-radius:11px;background:#fcfbf8;box-shadow:0 1px 3px rgba(0,0,0,.035)} 7 -.dpe-hero{height:132px;overflow:hidden;background:#f1eee9;border-radius:11px 11px 0 0} 8 -.dpe-hero img{width:100%;height:100%;object-fit:cover;object-position:center 45%;display:block} 9 -.dpe-eye{font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase} 10 -.dpe-sec{margin:0 0 27px 0} 11 -.dpe-sec h3{font-size:22px;line-height:1.25;margin:0 0 7px;color:#35312d;text-align:left!important;text-align-last:left!important;text-justify:auto!important;word-spacing:normal!important} 12 -.dpe-sec>p{color:#625d56;line-height:1.58;margin:0 0 13px} 13 -.dpe-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:12px} 14 -.dpe-grid-2{display:grid;grid-template-columns:repeat(2,minmax(300px,1fr));gap:12px} 15 -.dpe-info{padding:15px 17px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#eaf6f9;border-radius:8px;color:#365e68;line-height:1.5} 16 -.dpe-info strong{color:#2d5661} 17 -.dpe-protect{padding:15px 17px;border:1px solid #ecdba3;border-left:5px solid #f0aa00;background:#fff8e7;border-radius:8px;color:#675a35;line-height:1.5} 18 -.dpe-protect strong{color:#705416} 19 -.dpe-warn{padding:15px 17px;border:1px solid #efd9cc;border-left:5px solid #e94b13;background:#fff6f1;border-radius:8px;color:#67564e;line-height:1.5} 20 -.dpe-warn strong{color:#744531} 21 -.dpe-check{position:relative;padding:12px 13px 12px 37px;border:1px solid #e3ded6;border-radius:8px;background:#fffdf9;color:#504a44;line-height:1.5} 22 -.dpe-check:before{content:"✓";position:absolute;left:13px;top:10px;color:#f0aa00;font-weight:800} 23 -.dpe-step{position:relative;padding:13px 14px 13px 50px;border:1px solid #e3ded6;border-radius:8px;background:#fcfbf8;min-height:76px} 24 -.dpe-step .n{position:absolute;left:13px;top:13px;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff3d5;color:#765812;font-weight:800;font-size:12px} 25 -.dpe-step h4{margin:0 0 4px;font-size:16px;line-height:1.3;color:#3b352e;text-align:left!important;text-align-last:left!important;text-justify:auto!important;word-spacing:normal!important} 26 -.dpe-step p{margin:0;color:#625d56;line-height:1.45} 27 -.dpe-scenario{padding:14px 15px;border:1px solid #e3ded6;border-top:4px solid #f0aa00;border-radius:9px;background:#fcfbf8} 28 -.dpe-scenario h4{margin:0 0 6px;font-size:16px;color:#3e372e;text-align:left!important;word-spacing:normal!important} 29 -.dpe-scenario p{margin:0;color:#625d56;line-height:1.5} 30 -.dpe-table-wrap{overflow-x:auto;border:1px solid #e3ded6;border-radius:8px} 31 -.dpe-table{width:100%;border-collapse:collapse;background:#fffdf9;min-width:920px} 32 -.dpe-table th,.dpe-table td{padding:10px 11px;border-bottom:1px solid #e3ded6;vertical-align:top;text-align:left;line-height:1.4} 33 -.dpe-table th{background:#f3efe8;color:#403b36;font-weight:700} 34 -.dpe-table tr:last-child td{border-bottom:0} 35 -.dpe-service-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px} 36 -.dpe-service{display:block;padding:13px 14px;border:1px solid #e3ded6;border-left:4px solid #f0aa00;border-radius:8px;background:#fcfbf8;color:#2f2b27} 37 -.dpe-service strong{display:block;margin-bottom:4px} 38 -.dpe-service span{display:block;color:#625d56;line-height:1.45;font-weight:400} 39 -.dpe-linkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px} 40 -.dpe-navlink{display:block;padding:10px 11px;border:1px solid #e9e4dc;border-left:3px solid #f0aa00;border-radius:6px;background:#fffdf9;color:#252321;text-decoration:none;font-weight:600;line-height:1.35} 41 -.dpe-navlink:hover,.dpe-navlink:focus{background:#fffaf0;text-decoration:none} 42 -.dpe-resource-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px} 43 -.dpe-resource{padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-radius:9px} 44 -.dpe-resource strong{display:block;color:#4c4130;margin-bottom:4px} 45 -.dpe-badge{display:inline-block;margin:5px 0 7px;padding:4px 8px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.055em;line-height:1.2} 46 -.dpe h1,.dpe h2,.dpe h3,.dpe h4,.dpe h5,.dpe h6,.dpe h1 a,.dpe h2 a,.dpe h3 a,.dpe h4 a,.dpe h5 a,.dpe h6 a{text-align:left!important;text-align-last:left!important;text-justify:auto!important;word-spacing:normal!important} 47 -@media(max-width:850px){.dpe-grid-2,.dpe-resource-grid{grid-template-columns:1fr}} 48 -@media(max-width:680px){.dpe-hero{height:105px}.dpe-sec h3{font-size:20px}} 74 +<style data-sn-service-navigator-master="1"> 75 +/* ========================================================= 76 + MASTER TYPOGRAPHY 77 + ========================================================= */ 78 +#xwikicontent h1, 79 +#xwikicontent h2, 80 +#xwikicontent h3, 81 +#xwikicontent h4, 82 +#xwikicontent h5, 83 +#xwikicontent h6, 84 +#xwikicontent .box-title, 85 +#xwikicontent [role="heading"], 86 +#xwikicontent h1 a, 87 +#xwikicontent h2 a, 88 +#xwikicontent h3 a, 89 +#xwikicontent h4 a, 90 +#xwikicontent h5 a, 91 +#xwikicontent h6 a, 92 +#xwikicontent .box-title a, 93 +#xwikicontent [role="heading"] a{ 94 + text-align:left!important; 95 + text-justify:auto!important; 96 + word-spacing:normal!important; 97 +} 98 + 99 +/* ========================================================= 100 + COMING SOON / IN VORBEREITUNG 101 + ========================================================= */ 102 +.sn-coming-soon-badge{ 103 + display:inline-block; 104 + vertical-align:middle; 105 + margin-left:10px; 106 + padding:4px 8px; 107 + border-radius:14px; 108 + border:1px solid #efd9cc; 109 + background:#fff4ee; 110 + color:#8a4d36; 111 + font-size:11px; 112 + font-weight:700; 113 + letter-spacing:.055em; 114 + line-height:1.2; 115 + white-space:nowrap; 116 +} 117 + 118 +/* ========================================================= 119 + NATIVE / DETAIL CALLOUT GEOMETRY 120 + Preserve existing backgrounds. 121 + ========================================================= */ 122 +#xwikicontent .arsn-info, 123 +#xwikicontent .dmp-info, 124 +#xwikicontent .ido-info, 125 +#xwikicontent .pp-info, 126 +#xwikicontent .infomessage{ 127 + box-sizing:border-box!important; 128 + border-left:4px solid #21b6d7!important; 129 + border-radius:8px; 130 + text-align:left!important; 131 + word-spacing:normal!important; 132 +} 133 + 134 +#xwikicontent .arsn-warn, 135 +#xwikicontent .dmp-warn, 136 +#xwikicontent .ido-warn, 137 +#xwikicontent .pp-warn, 138 +#xwikicontent .warn, 139 +#xwikicontent .warning, 140 +#xwikicontent .warningmessage, 141 +#xwikicontent .errormessage{ 142 + box-sizing:border-box!important; 143 + border-left:4px solid #e94b13!important; 144 + border-radius:8px; 145 + text-align:left!important; 146 + word-spacing:normal!important; 147 +} 148 + 149 +[data-sn-master-equal-height], 150 +[data-sn-master-first-row]{ 151 + box-sizing:border-box; 152 +} 49 49 </style> 50 50 51 -<div class="dpe"> 155 +<script data-sn-service-navigator-master="1"> 156 +(function(){ 157 + "use strict"; 52 52 53 -<section class="dpe-card" style="margin-bottom:18px;overflow:hidden;border-left:6px solid #f0aa00;"> 54 - <div class="dpe-hero"> 55 - <img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Datenschutz und Ethik in Kunst- und Forschungsprojekten" /> 56 - </div> 57 - <div style="padding:18px 21px 20px;"> 58 - <div class="dpe-eye" style="color:#7a5b12;margin-bottom:5px;">VORBEREITEN · SCHÜTZEN & KLÄREN</div> 59 - <h2 style="font-size:27px;line-height:1.2;margin:0 0 8px;color:#2c2926;">Personenbezogene, vertrauliche und sensible Informationen früh erkennen – und den Umgang damit bewusst planen</h2> 60 - <p style="margin:0;color:#5e5953;line-height:1.6;max-width:1160px;"> 61 - Datenschutz, Vertraulichkeit, Einwilligungen und ethische Fragen beeinflussen, welche Informationen ein Projekt tatsächlich braucht, 62 - wer darauf zugreifen darf, wie lange sie aufbewahrt werden und was später geteilt oder veröffentlicht werden kann. 63 - Kläre diese Fragen möglichst vor Erhebung, Produktion oder Veröffentlichung. 64 - </p> 65 - </div> 66 -</section> 159 + var PAGE_KIND="detail"; 160 + var PLACEHOLDER=true; 161 + var PLACEHOLDER_LABEL="IN VORBEREITUNG"; 67 67 68 -<div class="dpe-info" style="margin-bottom:14px;"> 69 - <strong>Beginne mit dem tatsächlichen Informationsfluss.</strong> 70 - Halte fest, welche personenbezogenen, vertraulichen oder sensiblen Informationen entstehen oder genutzt werden, 71 - wer sie erhält, wo sie gespeichert werden und was am Projektende damit geschehen soll. 72 -</div> 163 + var MOBILE_MAX=767; 164 + var ROW_TOLERANCE=6; 165 + var RESIZE_DEBOUNCE=220; 73 73 74 - <divclass="dpe-warn"style="margin-bottom:27px;">75 - <strong>Planungshilfe– keine verbindlicheDatenschutz- oder Ethikentscheidung.</strong>76 - DieseSeitehilft, Fragen früh sichtbarzu machenundzu dokumentieren.77 - Datenschutzfragengehörenzur zuständigenDatenschutzstelle; ethische Prüfungen folgen dem jeweils anwendbaren Projekt-, Förder-oderPrüfweg.78 - </div>167 + var root= 168 + document.getElementById("xwikicontent")|| 169 + document.querySelector(".xwiki-rendering-content")|| 170 + document.querySelector("main")|| 171 + document.body; 79 79 80 -<section class="dpe-sec"> 81 - <div class="dpe-eye" style="color:#8a4d36;margin-bottom:4px;">SCHRITT 1 · DATENSCHUTZ- & ETHIKINVENTAR ANLEGEN</div> 82 - <h3>Erfasse nicht nur Daten, sondern auch Zweck, Zugriff und spätere Nutzung</h3> 83 - <p>Für jedes relevante Material oder jede Informationsgruppe sollte nachvollziehbar sein, warum sie benötigt wird und wie mit ihr umgegangen werden soll.</p> 84 - <div class="dpe-grid"> 85 - <div class="dpe-check"><strong>Informationsart:</strong> Welche personenbezogenen, vertraulichen oder sensiblen Informationen enthält das Material?</div> 86 - <div class="dpe-check"><strong>Notwendigkeit:</strong> Welche dieser Informationen werden für das Projekt tatsächlich benötigt?</div> 87 - <div class="dpe-check"><strong>Personen / Beteiligte:</strong> Von wem stammen die Informationen und wer ist davon betroffen?</div> 88 - <div class="dpe-check"><strong>Zweck:</strong> Wofür werden die Informationen erhoben, erzeugt, analysiert oder dokumentiert?</div> 89 - <div class="dpe-check"><strong>Zugriff:</strong> Wer darf während des Projekts auf die Informationen zugreifen?</div> 90 - <div class="dpe-check"><strong>Speicherung:</strong> Wo werden die Informationen gespeichert und wie werden sie angemessen geschützt?</div> 91 - <div class="dpe-check"><strong>Aufbewahrung / Löschung:</strong> Was soll wie lange aufbewahrt und was später gelöscht werden?</div> 92 - <div class="dpe-check"><strong>Teilen / Veröffentlichen:</strong> Welche Inhalte sollen intern bleiben, eingeschränkt geteilt oder öffentlich zugänglich werden?</div> 93 - <div class="dpe-check"><strong>Einwilligungen / Informationen:</strong> Welche Vereinbarungen oder Informationen für Beteiligte sind erforderlich?</div> 94 - <div class="dpe-check"><strong>Ethik- oder Förderweg:</strong> Gibt es einen anwendbaren Prüf-, Genehmigungs- oder Förderweg, der berücksichtigt werden muss?</div> 95 - </div> 96 -</section> 173 + if(!root)return; 97 97 98 -<section class="dpe-sec"> 99 - <div class="dpe-eye" style="color:#7a5b12;margin-bottom:4px;">WICHTIGE UNTERSCHEIDUNGEN</div> 100 - <h3>Diese Entscheidungen sollten getrennt betrachtet werden</h3> 101 - <div class="dpe-grid"> 102 - <div class="dpe-protect"><strong>Teilnahme ≠ Veröffentlichung.</strong><br>Eine Zustimmung zur Teilnahme an einem Projekt ist nicht automatisch dasselbe wie die Erlaubnis, identifizierbare Inhalte öffentlich zu zeigen oder zu publizieren.</div> 103 - <div class="dpe-protect"><strong>Rechtskonform ≠ ethisch unproblematisch.</strong><br>Ethische Fragen können über die reine Einhaltung rechtlicher Anforderungen hinausgehen und zusätzliche Abwägungen verlangen.</div> 104 - <div class="dpe-protect"><strong>Erheben ≠ Teilen.</strong><br>Dass Informationen für die Projektarbeit benötigt werden, bedeutet nicht automatisch, dass sie später weitergegeben oder veröffentlicht werden sollten.</div> 105 - <div class="dpe-protect"><strong>Zugriff im Projekt ≠ Zugriff nach Projektende.</strong><br>Lege fest, wer während der aktiven Arbeit Zugriff braucht und was nach Abschluss aufbewahrt, eingeschränkt oder gelöscht wird.</div> 106 - <div class="dpe-protect"><strong>Mehr Daten ≠ besseres Projekt.</strong><br>Prüfe, welche personenbezogenen oder sensiblen Informationen tatsächlich erforderlich sind, bevor sie erhoben oder gespeichert werden.</div> 107 - <div class="dpe-protect"><strong>Projektkoordination ≠ Datenschutzentscheidung.</strong><br>SKF kann Projekt- und Förderwege koordinieren, ist aber nicht die Datenschutzinstanz.</div> 108 - </div> 109 -</section> 175 + var managedHeight=new Set(); 176 + var managedMargin=new Set(); 177 + var originalHeight=new WeakMap(); 178 + var originalMargin=new WeakMap(); 110 110 111 -<section class="dpe-sec"> 112 - <div class="dpe-eye" style="color:#8a4d36;margin-bottom:4px;">SCHRITT 2 · PRAKTISCHER ABLAUF</div> 113 - <h3>Datenschutz und Ethik als Teil des Projektworkflows organisieren</h3> 114 - <div class="dpe-grid"> 115 - <div class="dpe-step"><div class="n">01</div><h4>Informationsbedarf klären</h4><p>Bestimme, welche personenbezogenen, vertraulichen oder sensiblen Informationen für das Vorhaben tatsächlich benötigt werden.</p></div> 116 - <div class="dpe-step"><div class="n">02</div><h4>Informationsfluss beschreiben</h4><p>Halte fest, woher Informationen kommen, wer sie erhält, wo sie gespeichert werden und wie sie das Projekt verlassen können.</p></div> 117 - <div class="dpe-step"><div class="n">03</div><h4>Zuständigkeit festlegen</h4><p>Bestimme, wer im Projekt für Entscheidungen, Dokumentation, Zugriffe und gegebenenfalls fachliche Rückfragen verantwortlich ist.</p></div> 118 - <div class="dpe-step"><div class="n">04</div><h4>Einwilligungen und Informationen planen</h4><p>Trenne bei Bedarf Teilnahme, Dokumentation und Veröffentlichung identifizierbarer Inhalte voneinander.</p></div> 119 - <div class="dpe-step"><div class="n">05</div><h4>Speicherung und Zugriff festlegen</h4><p>Plane geeignete Speicherorte, Zugriffsbeschränkungen und Schutzmaßnahmen vor Beginn der Datenerhebung oder Produktion.</p></div> 120 - <div class="dpe-step"><div class="n">06</div><h4>Aufbewahrung und Löschung planen</h4><p>Entscheide, welche Informationen wie lange benötigt werden und was nach Abschluss gelöscht, eingeschränkt oder aufbewahrt wird.</p></div> 121 - <div class="dpe-step"><div class="n">07</div><h4>Fachprüfung rechtzeitig einplanen</h4><p>Binde die Datenschutzstelle sowie den jeweils anwendbaren Ethik- oder Förderweg ein, wenn das Projekt dies erfordert.</p></div> 122 - <div class="dpe-step"><div class="n">08</div><h4>Vor Veröffentlichung erneut prüfen</h4><p>Kontrolliere vor Teilen oder Publizieren, ob die geplante Form der Sichtbarkeit mit den dokumentierten Entscheidungen übereinstimmt.</p></div> 123 - </div> 124 -</section> 180 + var resizeTimer=0; 181 + var running=false; 125 125 126 -<section class="dpe-sec"> 127 - <div class="dpe-eye" style="color:#7a5b12;margin-bottom:4px;">TYPISCHE SZENARIEN</div> 128 - <h3>Bei diesen Projektformen sollte der Informationsfluss besonders früh geklärt werden</h3> 129 - <div class="dpe-grid"> 130 - <div class="dpe-scenario"><h4>Interviews, Gespräche & Porträts</h4><p>Trenne Teilnahme, Aufzeichnung, interne Auswertung und mögliche Veröffentlichung identifizierbarer Inhalte klar voneinander.</p></div> 131 - <div class="dpe-scenario"><h4>Partizipative & kollaborative Arbeit</h4><p>Prüfe, welche Informationen über Beteiligte entstehen, wer sie sehen kann und welche späteren Formen der Darstellung oder Veröffentlichung vorgesehen sind.</p></div> 132 - <div class="dpe-scenario"><h4>Vertrauliche oder sensible Materialien</h4><p>Definiere Zugriff, Speicherort, Weitergabe, Aufbewahrung und Löschung ausdrücklich, statt sie dem allgemeinen Projektworkflow zu überlassen.</p></div> 133 - <div class="dpe-scenario"><h4>Externe Projektpartner:innen</h4><p>Kläre, welche Informationen zwischen Einheiten ausgetauscht werden, wer jeweils zuständig ist und wie Übergaben oder Projektende behandelt werden.</p></div> 134 - <div class="dpe-scenario"><h4>Öffentliche Outputs</h4><p>Prüfe vor Website, Ausstellung, Publikation oder Repositoriumsablage erneut, welche identifizierbaren oder sensiblen Informationen tatsächlich sichtbar werden sollen.</p></div> 135 - <div class="dpe-scenario"><h4>Geförderte Projekte</h4><p>Beziehe zusätzliche Förderanforderungen, Berichtspflichten oder anwendbare Prüfwege in die Projektplanung ein.</p></div> 136 - </div> 137 -</section> 183 + var THEMES=[ 184 + { 185 + name:"BLUE", 186 + accent:"#21b6d7", 187 + bg:"#eaf7fb", 188 + text:"#315d68", 189 + labels:[ 190 + "HIER STARTEN", 191 + "ENTSCHEIDEN", 192 + "ÜBERPRÜFEN & ANPASSEN", 193 + "START HERE", 194 + "DECIDE", 195 + "REVIEW & ADAPT" 196 + ] 197 + }, 198 + { 199 + name:"RED", 200 + accent:"#e94b13", 201 + bg:"#fff1ec", 202 + text:"#8a4d36", 203 + labels:[ 204 + "PLANEN & ORGANISIEREN", 205 + "ORGANISIEREN & DOKUMENTIEREN", 206 + "PUBLIZIEREN & PRÄSENTIEREN", 207 + "PLAN & ORGANISE", 208 + "PLAN & ORGANIZE", 209 + "ORGANISE & DOCUMENT", 210 + "ORGANIZE & DOCUMENT", 211 + "PUBLISH & PRESENT" 212 + ] 213 + }, 214 + { 215 + name:"YELLOW", 216 + accent:"#f0aa00", 217 + bg:"#fff8e7", 218 + text:"#785b17", 219 + labels:[ 220 + "SCHÜTZEN & KLÄREN", 221 + "STANDARDISIEREN & IDENTIFIZIEREN", 222 + "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN", 223 + "PROTECT & CLARIFY", 224 + "STANDARDISE & IDENTIFY", 225 + "STANDARDIZE & IDENTIFY", 226 + "OPEN, REUSE & MAKE FINDABLE" 227 + ] 228 + }, 229 + { 230 + name:"GREEN", 231 + accent:"#38b76a", 232 + bg:"#edf9f1", 233 + text:"#3f7451", 234 + labels:[ 235 + "INFRASTRUKTUR EINRICHTEN", 236 + "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN", 237 + "SPEICHERN & ZUGRIFF STEUERN", 238 + "REPOSITORIUM, ERHALTEN & ÜBERGEBEN", 239 + "SET UP INFRASTRUCTURE", 240 + "SET UP INFRASTRUCTURE & COLLABORATION", 241 + "STORE & CONTROL ACCESS", 242 + "REPOSITORY, PRESERVE & HAND OVER" 243 + ] 244 + } 245 + ]; 138 138 139 -<section class="dpe-sec"> 140 - <div class="dpe-eye" style="color:#8a4d36;margin-bottom:4px;">SCHRITT 3 · ENTSCHEIDUNGEN DOKUMENTIEREN</div> 141 - <h3>Ein einfaches Datenschutz- & Ethik-Log macht Entscheidungen nachvollziehbar</h3> 142 - <p>Das Log kann Teil des Projektordners, Materialinventars oder Datenmanagementplans sein. Entscheidend ist, dass Zuständigkeit, Zugriff, Aufbewahrung und geplante Weitergabe nachvollziehbar bleiben.</p> 143 - <div class="dpe-table-wrap"> 144 - <table class="dpe-table"> 145 - <thead><tr><th>Feld</th><th>Was festhalten?</th><th>Warum?</th></tr></thead> 146 - <tbody> 147 - <tr><td><strong>Material / Informationsgruppe</strong></td><td>Eindeutige Bezeichnung für Daten, Dokumentation, Aufzeichnung oder Materialgruppe.</td><td>Verknüpft Entscheidungen mit dem richtigen Projektmaterial.</td></tr> 148 - <tr><td><strong>Personenbezug / Sensibilität</strong></td><td>Welche personenbezogenen, vertraulichen oder sensiblen Informationen enthalten sind.</td><td>Macht Schutzbedarf früh sichtbar.</td></tr> 149 - <tr><td><strong>Zweck</strong></td><td>Warum die Information benötigt, erhoben, erzeugt oder aufbewahrt wird.</td><td>Verhindert unklare oder unnötige Datensammlung.</td></tr> 150 - <tr><td><strong>Zugriff</strong></td><td>Welche Personen, Rollen oder Projektpartner:innen zugreifen dürfen.</td><td>Macht Verantwortlichkeit und Zugriffsbeschränkungen nachvollziehbar.</td></tr> 151 - <tr><td><strong>Speicherung</strong></td><td>Wo die Information gespeichert wird und wer den Speicherort verwaltet.</td><td>Verbindet Schutzanforderungen mit der tatsächlichen Arbeitsumgebung.</td></tr> 152 - <tr><td><strong>Einwilligung / Information</strong></td><td>Welche Teilnahme-, Dokumentations- oder Veröffentlichungsentscheidungen festgehalten wurden.</td><td>Trennt unterschiedliche Verwendungszwecke voneinander.</td></tr> 153 - <tr><td><strong>Aufbewahrung / Löschung</strong></td><td>Wie lange die Information benötigt wird und was am Projektende geschieht.</td><td>Verhindert unbeabsichtigte unbegrenzte Aufbewahrung.</td></tr> 154 - <tr><td><strong>Teilen / Publikation</strong></td><td>Ob und in welcher Form Inhalte intern, eingeschränkt oder öffentlich genutzt werden.</td><td>Verbindet Projektarbeit mit späterer Veröffentlichung.</td></tr> 155 - <tr><td><strong>Review</strong></td><td>Datum oder Ereignis für eine erneute Prüfung, etwa vor Veröffentlichung oder Projektabschluss.</td><td>Stellt sicher, dass geänderte Projektpläne erneut bewertet werden.</td></tr> 156 - </tbody> 157 - </table> 158 - </div> 159 -</section> 247 + function num(value){ 248 + var n=parseFloat(value); 249 + return Number.isFinite(n)?n:0; 250 + } 160 160 161 -<section class="dpe-sec"> 162 - <div class="dpe-eye" style="color:#8a4d36;margin-bottom:4px;">STOPP & PRÜFEN</div> 163 - <h3>Typische Warnsignale bei Datenschutz- und Ethikfragen</h3> 164 - <div class="dpe-grid"> 165 - <div class="dpe-warn"><strong>Es werden mehr personenbezogene Informationen gesammelt als tatsächlich benötigt.</strong><br>Der Informationsbedarf wurde nicht vor Beginn der Arbeit geklärt.</div> 166 - <div class="dpe-warn"><strong>Teilnahme und Veröffentlichung werden als dieselbe Entscheidung behandelt.</strong><br>Die Erlaubnis zur Teilnahme deckt nicht automatisch jede spätere Sichtbarkeit identifizierbarer Inhalte ab.</div> 167 - <div class="dpe-warn"><strong>Zugriffsrechte sind nicht festgelegt.</strong><br>Es ist unklar, wer während des Projekts personenbezogene, vertrauliche oder sensible Informationen sehen darf.</div> 168 - <div class="dpe-warn"><strong>Aufbewahrung und Löschung sind offen.</strong><br>Niemand hat festgelegt, was nach Projektende behalten, eingeschränkt oder gelöscht wird.</div> 169 - <div class="dpe-warn"><strong>Öffentliche Präsentation ist geplant, aber noch nicht geprüft.</strong><br>Vor Publikation, Ausstellung oder Online-Stellung muss erneut geklärt werden, welche Informationen sichtbar werden.</div> 170 - <div class="dpe-warn"><strong>Mehrere Einheiten sind beteiligt, aber Zuständigkeiten fehlen.</strong><br>Projektkoordination, Datenschutzprüfung und gegebenenfalls ethische Prüfung müssen klar voneinander unterschieden werden.</div> 171 - </div> 172 -</section> 252 + function norm(value){ 253 + return String(value||"") 254 + .replace(/\s+/g," ") 255 + .trim() 256 + .toUpperCase(); 257 + } 173 173 174 -<section class="dpe-sec"> 175 - <div class="dpe-eye" style="color:#7a5b12;margin-bottom:4px;">SERVICES & UNTERSTÜTZUNG</div> 176 - <h3>Wer bei Datenschutz- und Ethikfragen zuständig ist</h3> 177 - <div class="dpe-service-grid"> 178 - <div class="dpe-service"> 179 - <strong>Datenschutzbeauftragter / Datenschutzstelle</strong> 180 - <span>Primäre Fachzuständigkeit für Fragen zu personenbezogenen Daten und zur datenschutzrechtlichen Prüfung.</span> 181 - </div> 182 - <div class="dpe-service"> 183 - <strong>Projekt- / tragende Einheit</strong> 184 - <span>Für projektbezogene Verantwortung, Arbeitsabläufe und die organisatorische Verankerung von Entscheidungen.</span> 185 - </div> 186 - <div class="dpe-service"> 187 - <strong>Anwendbarer Ethik- oder Förderweg</strong> 188 - <span>Für ethische Prüfungen oder zusätzliche Anforderungen, wenn der konkrete Projekt- oder Förderkontext dies vorsieht.</span> 189 - </div> 190 - <div class="dpe-service"> 191 - <strong>Support Kunst und Forschung (SKF)</strong> 192 - <span>Koordiniert Projekt- und Förderanforderungen und unterstützt beim Routing zur Fachprüfung; SKF ist nicht die Datenschutzinstanz.</span> 193 - </div> 194 - </div> 195 -</section> 259 + function visible(el){ 260 + if(!el||el.nodeType!==1)return false; 196 196 197 -<section class="dpe-sec"> 198 - <div class="dpe-eye" style="color:#8a4d36;margin-bottom:4px;">VERWANDTE THEMEN</div> 199 - <h3>Datenschutz- und Ethikentscheidungen hängen oft mit diesen Themen zusammen</h3> 200 - <div class="dpe-linkgrid"> 201 - <a class="dpe-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Copyright%2C%20Rights%20%26%20Licences/">Urheberrecht, Rechte & Lizenzen</a> 202 - <a class="dpe-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Identify%20Your%20Data%20%26%20Research%20Outputs/">Daten & Forschungsoutputs bestimmen</a> 203 - <a class="dpe-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Plan%20Your%20Data%20Management/">Datenmanagement planen</a> 204 - <a class="dpe-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Work%20%26%20Manage/Store%2C%20Back%20Up%20%26%20Control%20Access/">Speichern, sichern & Zugriff steuern</a> 205 - <a class="dpe-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Publish%20%26%20Share/Decide%20What%20to%20Share/">Entscheiden, was du teilst</a> 206 - <a class="dpe-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Publish%20%26%20Share/Manage%20Access%2C%20Reuse%20%26%20Licensing/">Zugang, Nachnutzung & Lizenzen regeln</a> 207 - </div> 208 -</section> 262 + var style=getComputedStyle(el); 263 + var rect=el.getBoundingClientRect(); 209 209 210 -<section class="dpe-sec"> 211 - <div class="dpe-eye" style="color:#8a4d36;margin-bottom:4px;">PRAKTISCHE RESSOURCEN</div> 212 - <h3>Info-Blätter, Anleitungen und Vorlagen</h3> 213 - <div class="dpe-resource-grid"> 214 - <div class="dpe-resource"><strong>Info-Blätter</strong><span class="dpe-badge">IN VORBEREITUNG</span><div style="color:#625d56;line-height:1.45;">Kurze Orientierung zu personenbezogenen Daten, Vertraulichkeit, Einwilligungen und ethischen Projektfragen.</div></div> 215 - <div class="dpe-resource"><strong>Anleitungen</strong><span class="dpe-badge">IN VORBEREITUNG</span><div style="color:#625d56;line-height:1.45;">Schritt-für-Schritt-Abläufe für Informationsinventar, Zugriffsplanung, Aufbewahrung und Publikationsprüfung.</div></div> 216 - <div class="dpe-resource"><strong>Checklisten & Vorlagen</strong><span class="dpe-badge">IN VORBEREITUNG</span><div style="color:#625d56;line-height:1.45;">Vorlagen für Entscheidungslog, Projektprüfung und Übergabe.</div></div> 217 - </div> 218 -</section> 265 + return ( 266 + style.display!=="none"&& 267 + style.visibility!=="hidden"&& 268 + rect.width>20&& 269 + rect.height>4 270 + ); 271 + } 219 219 220 -<div class="dpe-info" style="margin-bottom:14px;"> 221 - <strong>Brauchst du Hilfe beim richtigen Weg?</strong> 222 - Bei Fragen zu personenbezogenen Daten starte bei der Datenschutzstelle. 223 - Wenn mehrere Einheiten oder Förderanforderungen beteiligt sind, kann SKF den Projektweg koordinieren und zur zuständigen Fachprüfung weiterleiten. 224 -</div> 273 + function saveStyle(el,map,property){ 274 + if(map.has(el))return; 225 225 226 -<details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6;"> 227 - <summary style="cursor:pointer;color:#6a655e;font-size:13px;">Suchbegriffe & verwandte Themen</summary> 228 - <div style="margin-top:9px;color:#5c5650;font-size:12px;line-height:1.7;"> 229 - Datenschutz · Ethik · personenbezogene Daten · sensible Daten · Vertraulichkeit · Einwilligung · Zustimmung · Teilnahme · Veröffentlichung · identifizierbare Inhalte · Zugriff · Zugriffskontrolle · Speicherung · Aufbewahrung · Löschung · Weitergabe · Datenmanagement · Forschungsdaten · Projektdokumentation · Datenschutzbeauftragter · Ethikprüfung · Förderbedingungen · Projektpartner:innen · Publikation · Repositorium 230 - </div> 231 -</details> 276 + map.set(el,{ 277 + value:el.style.getPropertyValue(property), 278 + priority:el.style.getPropertyPriority(property) 279 + }); 280 + } 232 232 233 -</div> 282 + function restoreStyle(el,map,property){ 283 + var original=map.get(el); 284 + 285 + if(original&&original.value){ 286 + el.style.setProperty( 287 + property, 288 + original.value, 289 + original.priority||"" 290 + ); 291 + }else{ 292 + el.style.removeProperty(property); 293 + } 294 + } 295 + 296 + function resetRuntime(){ 297 + managedHeight.forEach(function(el){ 298 + restoreStyle( 299 + el, 300 + originalHeight, 301 + "min-height" 302 + ); 303 + el.removeAttribute( 304 + "data-sn-master-equal-height" 305 + ); 306 + }); 307 + 308 + managedMargin.forEach(function(el){ 309 + restoreStyle( 310 + el, 311 + originalMargin, 312 + "margin-top" 313 + ); 314 + el.removeAttribute( 315 + "data-sn-master-first-row" 316 + ); 317 + }); 318 + 319 + managedHeight.clear(); 320 + managedMargin.clear(); 321 + } 322 + 323 + function themeFor(text){ 324 + var value=norm(text); 325 + 326 + for(var i=0;i<THEMES.length;i++){ 327 + for(var j=0;j<THEMES[i].labels.length;j++){ 328 + var label=THEMES[i].labels[j]; 329 + 330 + if( 331 + value===label|| 332 + value.indexOf(label+" ")===0|| 333 + value.indexOf(label+" -")===0|| 334 + value.indexOf(label+" ·")===0 335 + ){ 336 + return THEMES[i]; 337 + } 338 + } 339 + } 340 + 341 + return null; 342 + } 343 + 344 + /* ======================================================= 345 + PLACEHOLDER BADGE 346 + ======================================================= */ 347 + 348 + function applyPlaceholderBadge(){ 349 + if(!PLACEHOLDER)return; 350 + 351 + if( 352 + document.querySelector( 353 + ".sn-coming-soon-badge" 354 + ) 355 + ){ 356 + return; 357 + } 358 + 359 + var title= 360 + document.querySelector( 361 + "#document-title" 362 + )|| 363 + document.querySelector( 364 + "h1" 365 + ); 366 + 367 + if(!title)return; 368 + 369 + var badge= 370 + document.createElement( 371 + "span" 372 + ); 373 + 374 + badge.className= 375 + "sn-coming-soon-badge"; 376 + 377 + badge.textContent= 378 + PLACEHOLDER_LABEL; 379 + 380 + badge.setAttribute( 381 + "aria-label", 382 + PLACEHOLDER_LABEL 383 + ); 384 + 385 + title.appendChild( 386 + badge 387 + ); 388 + } 389 + 390 + /* ======================================================= 391 + DETAIL PAGE OWN-ACCENT PROPAGATION 392 + ======================================================= */ 393 + 394 + function parseRGB(value){ 395 + var match=String(value||"").match( 396 + /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i 397 + ); 398 + 399 + if(!match)return null; 400 + 401 + return [ 402 + Number(match[1]), 403 + Number(match[2]), 404 + Number(match[3]) 405 + ]; 406 + } 407 + 408 + function distance(a,b){ 409 + return Math.sqrt( 410 + Math.pow(a[0]-b[0],2)+ 411 + Math.pow(a[1]-b[1],2)+ 412 + Math.pow(a[2]-b[2],2) 413 + ); 414 + } 415 + 416 + function paletteMatch(cssColor){ 417 + var rgb=parseRGB(cssColor); 418 + 419 + if(!rgb)return null; 420 + 421 + var palette=[ 422 + {hex:"#21b6d7",rgb:[33,182,215]}, 423 + {hex:"#e94b13",rgb:[233,75,19]}, 424 + {hex:"#f0aa00",rgb:[240,170,0]}, 425 + {hex:"#38b76a",rgb:[56,183,106]} 426 + ]; 427 + 428 + var best=null; 429 + var bestDistance=Infinity; 430 + 431 + palette.forEach(function(item){ 432 + var d=distance(rgb,item.rgb); 433 + 434 + if(d<bestDistance){ 435 + best=item; 436 + bestDistance=d; 437 + } 438 + }); 439 + 440 + return bestDistance<=30 441 + ?best 442 + :null; 443 + } 444 + 445 + function propagateDetailAccents(){ 446 + if(PAGE_KIND!=="detail")return; 447 + 448 + Array.from( 449 + root.querySelectorAll( 450 + ".arsn-call,.dmp-call,.ido-call,.pp-call,"+ 451 + ".arsn-source,.dmp-source,.ido-source,.pp-source" 452 + ) 453 + ).forEach(function(el){ 454 + if(!visible(el))return; 455 + 456 + var style=getComputedStyle(el); 457 + 458 + if( 459 + num(style.borderTopWidth)>=2 460 + ){ 461 + var match= 462 + paletteMatch( 463 + style.borderTopColor 464 + ); 465 + 466 + if(match){ 467 + el.style.setProperty( 468 + "border-left", 469 + "4px solid "+match.hex, 470 + "important" 471 + ); 472 + } 473 + } 474 + }); 475 + 476 + // Warning families: explicit safety override. 477 + Array.from( 478 + root.querySelectorAll( 479 + ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+ 480 + ".warn,.warning,.warningmessage,.errormessage" 481 + ) 482 + ).forEach(function(el){ 483 + if(!visible(el))return; 484 + 485 + el.style.setProperty( 486 + "border-left", 487 + "4px solid #e94b13", 488 + "important" 489 + ); 490 + }); 491 + 492 + // Info families: explicit orientation override. 493 + Array.from( 494 + root.querySelectorAll( 495 + ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage" 496 + ) 497 + ).forEach(function(el){ 498 + if(!visible(el))return; 499 + 500 + el.style.setProperty( 501 + "border-left", 502 + "4px solid #21b6d7", 503 + "important" 504 + ); 505 + }); 506 + } 507 + 508 + /* ======================================================= 509 + OVERVIEW SEMANTIC THEME PALETTE 510 + ======================================================= */ 511 + 512 + function smallestThemeHeaders(){ 513 + return Array.from( 514 + root.querySelectorAll( 515 + "div,span,p,strong,h3,h4,h5,h6" 516 + ) 517 + ).filter(function(el){ 518 + if(!visible(el))return false; 519 + if(!themeFor(el.textContent))return false; 520 + 521 + return !Array.from( 522 + el.children||[] 523 + ).some(function(child){ 524 + return !!themeFor( 525 + child.textContent 526 + ); 527 + }); 528 + }); 529 + } 530 + 531 + function findOverviewCard(header){ 532 + var node=header.parentElement; 533 + var candidates=[]; 534 + 535 + while(node&&node!==root){ 536 + var rect=node.getBoundingClientRect(); 537 + var style=getComputedStyle(node); 538 + 539 + var border= 540 + num(style.borderTopWidth)+ 541 + num(style.borderRightWidth)+ 542 + num(style.borderBottomWidth)+ 543 + num(style.borderLeftWidth); 544 + 545 + if( 546 + rect.width>=220&& 547 + rect.width<=800&& 548 + rect.height>=120&& 549 + border>=1 550 + ){ 551 + candidates.push(node); 552 + } 553 + 554 + node=node.parentElement; 555 + } 556 + 557 + if(!candidates.length)return null; 558 + 559 + candidates.sort(function(a,b){ 560 + return ( 561 + b.getBoundingClientRect().height- 562 + a.getBoundingClientRect().height 563 + ); 564 + }); 565 + 566 + return candidates[0]; 567 + } 568 + 569 + function rowCandidates(link,card){ 570 + var result=[]; 571 + var cardRect= 572 + card.getBoundingClientRect(); 573 + 574 + var node=link; 575 + 576 + while(node&&node!==card){ 577 + if(visible(node)){ 578 + var rect= 579 + node.getBoundingClientRect(); 580 + 581 + if( 582 + rect.height<=105&& 583 + rect.width>= 584 + cardRect.width*.50&& 585 + rect.width<= 586 + cardRect.width*1.03 587 + ){ 588 + result.push(node); 589 + } 590 + } 591 + 592 + node=node.parentElement; 593 + } 594 + 595 + return result; 596 + } 597 + 598 + function chooseOuterRow( 599 + candidates, 600 + link 601 + ){ 602 + if(!candidates.length){ 603 + return link; 604 + } 605 + 606 + var bordered= 607 + candidates.filter(function(el){ 608 + return ( 609 + num( 610 + getComputedStyle(el) 611 + .borderLeftWidth 612 + )>=1 613 + ); 614 + }); 615 + 616 + var pool= 617 + bordered.length 618 + ?bordered 619 + :candidates; 620 + 621 + pool.sort(function(a,b){ 622 + var ar= 623 + a.getBoundingClientRect(); 624 + 625 + var br= 626 + b.getBoundingClientRect(); 627 + 628 + return ( 629 + ar.left-br.left|| 630 + br.width-ar.width 631 + ); 632 + }); 633 + 634 + return pool[0]||link; 635 + } 636 + 637 + function applyOverviewPalette(){ 638 + if(PAGE_KIND!=="overview"){ 639 + return []; 640 + } 641 + 642 + var headers= 643 + smallestThemeHeaders() 644 + .map(function(el){ 645 + return { 646 + el:el, 647 + theme: 648 + themeFor( 649 + el.textContent 650 + ), 651 + card: 652 + findOverviewCard( 653 + el 654 + ) 655 + }; 656 + }) 657 + .filter(function(row){ 658 + return !!row.card; 659 + }); 660 + 661 + var unique=[]; 662 + var seenHeaders=new Set(); 663 + 664 + headers.forEach(function(row){ 665 + var key= 666 + row.theme.name+ 667 + "|"+ 668 + Math.round( 669 + row.card 670 + .getBoundingClientRect() 671 + .left 672 + )+ 673 + "|"+ 674 + Math.round( 675 + row.el 676 + .getBoundingClientRect() 677 + .top 678 + ); 679 + 680 + if(!seenHeaders.has(key)){ 681 + seenHeaders.add(key); 682 + unique.push(row); 683 + } 684 + }); 685 + 686 + unique.forEach(function(row){ 687 + var headerRect= 688 + row.el 689 + .getBoundingClientRect(); 690 + 691 + row.el.style.setProperty( 692 + "background", 693 + row.theme.bg, 694 + "important" 695 + ); 696 + 697 + row.el.style.setProperty( 698 + "color", 699 + row.theme.text, 700 + "important" 701 + ); 702 + 703 + row.el.style.setProperty( 704 + "text-align", 705 + "left", 706 + "important" 707 + ); 708 + 709 + row.el.style.setProperty( 710 + "word-spacing", 711 + "normal", 712 + "important" 713 + ); 714 + 715 + var later= 716 + unique 717 + .filter(function(other){ 718 + return ( 719 + other.card===row.card&& 720 + other.el 721 + .getBoundingClientRect() 722 + .top> 723 + headerRect.top+2 724 + ); 725 + }) 726 + .sort(function(a,b){ 727 + return ( 728 + a.el 729 + .getBoundingClientRect() 730 + .top- 731 + b.el 732 + .getBoundingClientRect() 733 + .top 734 + ); 735 + }); 736 + 737 + var stopTop= 738 + later.length 739 + ?later[0].el 740 + .getBoundingClientRect() 741 + .top 742 + :Infinity; 743 + 744 + Array.from( 745 + row.card.querySelectorAll("a") 746 + ).forEach(function(link){ 747 + if(!visible(link))return; 748 + 749 + var rect= 750 + link.getBoundingClientRect(); 751 + 752 + if( 753 + rect.top<= 754 + headerRect.bottom-2|| 755 + rect.top>= 756 + stopTop-2 757 + ){ 758 + return; 759 + } 760 + 761 + var candidates= 762 + rowCandidates( 763 + link, 764 + row.card 765 + ); 766 + 767 + var target= 768 + chooseOuterRow( 769 + candidates, 770 + link 771 + ); 772 + 773 + candidates.forEach(function(el){ 774 + el.style.setProperty( 775 + "border-left", 776 + "0 solid transparent", 777 + "important" 778 + ); 779 + }); 780 + 781 + target.style.setProperty( 782 + "border-left", 783 + "3px solid "+ 784 + row.theme.accent, 785 + "important" 786 + ); 787 + 788 + target.style.setProperty( 789 + "box-sizing", 790 + "border-box", 791 + "important" 792 + ); 793 + }); 794 + }); 795 + 796 + return unique; 797 + } 798 + 799 + /* ======================================================= 800 + OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW 801 + ======================================================= */ 802 + 803 + function alignOverviewCards(headers){ 804 + if( 805 + PAGE_KIND!=="overview"|| 806 + window.innerWidth<=MOBILE_MAX 807 + ){ 808 + return; 809 + } 810 + 811 + var cards=[]; 812 + var seen=new Set(); 813 + 814 + headers.forEach(function(row){ 815 + if(!seen.has(row.card)){ 816 + seen.add(row.card); 817 + cards.push(row.card); 818 + } 819 + }); 820 + 821 + if(cards.length<2){ 822 + return; 823 + } 824 + 825 + // Group cards by actual top position. 826 + var groups=[]; 827 + 828 + cards.forEach(function(card){ 829 + var top= 830 + card.getBoundingClientRect().top; 831 + 832 + var group=null; 833 + 834 + for(var i=0;i<groups.length;i++){ 835 + if( 836 + Math.abs( 837 + groups[i].top-top 838 + )<=ROW_TOLERANCE 839 + ){ 840 + group=groups[i]; 841 + break; 842 + } 843 + } 844 + 845 + if(!group){ 846 + group={ 847 + top:top, 848 + cards:[] 849 + }; 850 + groups.push(group); 851 + } 852 + 853 + group.cards.push(card); 854 + }); 855 + 856 + groups.forEach(function(group){ 857 + if(group.cards.length<2){ 858 + return; 859 + } 860 + 861 + var firstHeaders= 862 + group.cards.map(function(card){ 863 + var candidates= 864 + headers 865 + .filter(function(row){ 866 + return row.card===card; 867 + }) 868 + .sort(function(a,b){ 869 + return ( 870 + a.el 871 + .getBoundingClientRect() 872 + .top- 873 + b.el 874 + .getBoundingClientRect() 875 + .top 876 + ); 877 + }); 878 + 879 + return candidates.length 880 + ?candidates[0] 881 + :null; 882 + }); 883 + 884 + if( 885 + !firstHeaders.some(function(row){ 886 + return !row; 887 + }) 888 + ){ 889 + var targetTop= 890 + Math.max.apply( 891 + Math, 892 + firstHeaders.map(function(row){ 893 + return ( 894 + row.el 895 + .getBoundingClientRect() 896 + .top- 897 + row.card 898 + .getBoundingClientRect() 899 + .top 900 + ); 901 + }) 902 + ); 903 + 904 + firstHeaders.forEach(function(row){ 905 + var relativeTop= 906 + row.el 907 + .getBoundingClientRect() 908 + .top- 909 + row.card 910 + .getBoundingClientRect() 911 + .top; 912 + 913 + var delta= 914 + targetTop-relativeTop; 915 + 916 + if(delta>1){ 917 + saveStyle( 918 + row.el, 919 + originalMargin, 920 + "margin-top" 921 + ); 922 + 923 + var current= 924 + num( 925 + getComputedStyle( 926 + row.el 927 + ).marginTop 928 + ); 929 + 930 + row.el.style.setProperty( 931 + "margin-top", 932 + ( 933 + current+delta 934 + )+"px" 935 + ); 936 + 937 + row.el.setAttribute( 938 + "data-sn-master-first-row", 939 + "1" 940 + ); 941 + 942 + managedMargin.add( 943 + row.el 944 + ); 945 + } 946 + }); 947 + } 948 + 949 + var maxHeight=0; 950 + 951 + group.cards.forEach(function(card){ 952 + maxHeight= 953 + Math.max( 954 + maxHeight, 955 + card 956 + .getBoundingClientRect() 957 + .height 958 + ); 959 + }); 960 + 961 + maxHeight= 962 + Math.ceil(maxHeight); 963 + 964 + group.cards.forEach(function(card){ 965 + saveStyle( 966 + card, 967 + originalHeight, 968 + "min-height" 969 + ); 970 + 971 + card.style.setProperty( 972 + "min-height", 973 + maxHeight+"px" 974 + ); 975 + 976 + card.setAttribute( 977 + "data-sn-master-equal-height", 978 + "1" 979 + ); 980 + 981 + managedHeight.add( 982 + card 983 + ); 984 + }); 985 + }); 986 + } 987 + 988 + /* ======================================================= 989 + DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY 990 + ======================================================= */ 991 + 992 + function equaliseDetailGrids(){ 993 + if( 994 + PAGE_KIND!=="detail"|| 995 + window.innerWidth<=MOBILE_MAX 996 + ){ 997 + return; 998 + } 999 + 1000 + var selectors=[ 1001 + ".arsn-grid", 1002 + ".arsn-grid-2", 1003 + ".arsn-grid-3", 1004 + ".dmp-grid", 1005 + ".ido-grid", 1006 + ".pp-grid" 1007 + ]; 1008 + 1009 + selectors.forEach(function(selector){ 1010 + Array.from( 1011 + root.querySelectorAll(selector) 1012 + ).forEach(function(grid){ 1013 + var children= 1014 + Array.from( 1015 + grid.children||[] 1016 + ).filter(visible); 1017 + 1018 + if(children.length<2){ 1019 + return; 1020 + } 1021 + 1022 + var groups=[]; 1023 + 1024 + children.forEach(function(child){ 1025 + var top= 1026 + child 1027 + .getBoundingClientRect() 1028 + .top; 1029 + 1030 + var group=null; 1031 + 1032 + for(var i=0;i<groups.length;i++){ 1033 + if( 1034 + Math.abs( 1035 + groups[i].top-top 1036 + )<=ROW_TOLERANCE 1037 + ){ 1038 + group=groups[i]; 1039 + break; 1040 + } 1041 + } 1042 + 1043 + if(!group){ 1044 + group={ 1045 + top:top, 1046 + items:[] 1047 + }; 1048 + groups.push(group); 1049 + } 1050 + 1051 + group.items.push(child); 1052 + }); 1053 + 1054 + groups.forEach(function(group){ 1055 + if(group.items.length<2){ 1056 + return; 1057 + } 1058 + 1059 + var maxHeight=0; 1060 + 1061 + group.items.forEach(function(item){ 1062 + maxHeight= 1063 + Math.max( 1064 + maxHeight, 1065 + item 1066 + .getBoundingClientRect() 1067 + .height 1068 + ); 1069 + }); 1070 + 1071 + maxHeight= 1072 + Math.ceil(maxHeight); 1073 + 1074 + group.items.forEach(function(item){ 1075 + saveStyle( 1076 + item, 1077 + originalHeight, 1078 + "min-height" 1079 + ); 1080 + 1081 + item.style.setProperty( 1082 + "min-height", 1083 + maxHeight+"px" 1084 + ); 1085 + 1086 + item.setAttribute( 1087 + "data-sn-master-equal-height", 1088 + "1" 1089 + ); 1090 + 1091 + managedHeight.add(item); 1092 + }); 1093 + }); 1094 + }); 1095 + }); 1096 + } 1097 + 1098 + /* ======================================================= 1099 + RUN / RESPONSIVE SCHEDULING 1100 + ======================================================= */ 1101 + 1102 + function run(){ 1103 + if(running)return; 1104 + 1105 + running=true; 1106 + 1107 + try{ 1108 + resetRuntime(); 1109 + applyPlaceholderBadge(); 1110 + propagateDetailAccents(); 1111 + 1112 + var headers= 1113 + applyOverviewPalette(); 1114 + 1115 + if( 1116 + window.innerWidth> 1117 + MOBILE_MAX 1118 + ){ 1119 + alignOverviewCards( 1120 + headers 1121 + ); 1122 + 1123 + equaliseDetailGrids(); 1124 + } 1125 + }finally{ 1126 + running=false; 1127 + } 1128 + } 1129 + 1130 + function onResize(){ 1131 + if(resizeTimer){ 1132 + clearTimeout( 1133 + resizeTimer 1134 + ); 1135 + } 1136 + 1137 + resizeTimer= 1138 + setTimeout( 1139 + function(){ 1140 + resizeTimer=0; 1141 + run(); 1142 + }, 1143 + RESIZE_DEBOUNCE 1144 + ); 1145 + } 1146 + 1147 + async function waitForReady(){ 1148 + if( 1149 + document.readyState!=="complete" 1150 + ){ 1151 + await new Promise(function(resolve){ 1152 + window.addEventListener( 1153 + "load", 1154 + resolve, 1155 + {once:true} 1156 + ); 1157 + }); 1158 + } 1159 + 1160 + if( 1161 + document.fonts&& 1162 + document.fonts.ready 1163 + ){ 1164 + try{ 1165 + await document.fonts.ready; 1166 + }catch(error){} 1167 + } 1168 + 1169 + var images= 1170 + Array.from( 1171 + root.querySelectorAll("img") 1172 + ); 1173 + 1174 + await Promise.all( 1175 + images.map(function(img){ 1176 + if(img.complete){ 1177 + return Promise.resolve(); 1178 + } 1179 + 1180 + return new Promise(function(resolve){ 1181 + var done=function(){ 1182 + resolve(); 1183 + }; 1184 + 1185 + img.addEventListener( 1186 + "load", 1187 + done, 1188 + {once:true} 1189 + ); 1190 + 1191 + img.addEventListener( 1192 + "error", 1193 + done, 1194 + {once:true} 1195 + ); 1196 + }); 1197 + }) 1198 + ); 1199 + 1200 + run(); 1201 + } 1202 + 1203 + window.addEventListener( 1204 + "resize", 1205 + onResize, 1206 + {passive:true} 1207 + ); 1208 + 1209 + waitForReady(); 1210 +})(); 1211 +</script> 1212 + 1213 +<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END --> 234 234 {{/html}} 235 235