Version 5.13 by Veronika Kocher on Thursday, 03 Sep 2026 15:54

Show last authors
1 {{html clean="false"}}
2 <style>
3 .ido{max-width:1400px;margin:0 auto;color:#322f2b}.ido *{box-sizing:border-box}
4 .ido-card{border:1px solid #e3ded6;border-radius:11px;background:#fcfbf8;box-shadow:0 1px 3px rgba(0,0,0,.035)}
5 .ido-eye{font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase}
6 .ido-hero{height:125px;overflow:hidden;background:#f1eee9}.ido-hero img{width:100%;height:100%;object-fit:cover;object-position:center 48%;display:block}
7 .ido-sec{margin:0 0 30px}.ido-sec h3{font-size:22px;margin:0 0 7px;color:#35312d}.ido-sec>p{color:#6a655e;line-height:1.58;max-width:1180px}
8 .ido-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px}
9 .ido-type{padding:15px 16px;border:1px solid #e3ded6;border-radius:9px;background:#fcfbf8}.ido-type h4{font-size:17px;margin:0 0 6px;color:#35312d}.ido-type p{margin:0;color:#625d56;line-height:1.5}.ido-type ul{margin:8px 0 0 19px;padding:0;color:#625d56;line-height:1.5}
10 .ido-check{position:relative;padding:12px 13px 12px 37px;border:1px solid #e3ded6;border-radius:8px;background:#fffdf9;color:#504a44;line-height:1.5}.ido-check:before{content:"✓";position:absolute;left:13px;top:10px;color:#e94b13;font-weight:800}
11 .ido-info{padding:15px 17px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#eaf6f9;border-radius:8px;color:#365e68;line-height:1.55}.ido-info strong{color:#2d5661}
12 .ido-warn{padding:15px 17px;border:1px solid #efd9cc;border-left:5px solid #e94b13;background:#fff6f1;border-radius:8px;color:#67564e;line-height:1.55}.ido-warn strong{color:#744531}
13 .ido-rights{padding:15px 17px;border:1px solid #efdca7;border-left:5px solid #f0aa00;background:#fff9e9;border-radius:8px;color:#665a38;line-height:1.55}.ido-rights strong{color:#6d571c}
14 .ido-store{padding:15px 17px;border:1px solid #cfe8d8;border-left:5px solid #38b76a;background:#eff9f2;border-radius:8px;color:#45614e;line-height:1.55}.ido-store strong{color:#35543f}
15 .ido-tablewrap{overflow-x:auto;border-radius:9px}.ido-tbl{width:100%;border-collapse:collapse;background:#fffdf9;min-width:820px}.ido-tbl th,.ido-tbl td{border:1px solid #e3ded6;padding:10px 11px;vertical-align:top;text-align:left;line-height:1.45}.ido-tbl th{background:#f3efe8;color:#403b36}.ido-tbl td{color:#56504a}
16 .ido-step{padding:15px 16px;border:1px solid #e3ded6;border-top:4px solid #e94b13;border-radius:9px;background:#fcfbf8}.ido-step .n{font-size:12px;font-weight:800;color:#8a4d36;letter-spacing:.06em}.ido-step h4{font-size:17px;margin:3px 0 6px;color:#35312d}.ido-step p{margin:0;color:#625d56;line-height:1.5}
17 .ido-example{padding:15px 16px;border:1px solid #e3ded6;border-radius:9px;background:#fcfbf8}.ido-example h4{font-size:17px;margin:0 0 6px;color:#35312d}.ido-example p{margin:0;color:#625d56;line-height:1.5}
18 .ido-linkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px}.ido-navlink{display:block;padding:10px 11px;border:1px solid #e9e4dc;border-left:3px solid #e94b13;border-radius:6px;background:#fffdf9;color:#252321;text-decoration:none;font-weight:600;line-height:1.35}.ido-navlink:hover,.ido-navlink:focus{background:#fff7f1;text-decoration:none}
19 .ido-service{display:block;padding:14px 15px;border:1px solid #e3ded6;border-radius:9px;background:#fcfbf8;color:#322f2b;text-decoration:none}.ido-service:hover,.ido-service:focus{background:#fffdf9;text-decoration:none}.ido-service strong{display:block;margin-bottom:4px}.ido-service span{display:block;color:#625d56;line-height:1.45;font-weight:400}
20 .ido-chip{display:inline-block;padding:4px 8px;margin:3px 4px 3px 0;border-radius:14px;background:#f3efe8;border:1px solid #e3ded6;color:#5c5650;font-size:12px;text-decoration:none}
21 @media(max-width:680px){.ido-hero{height:105px}.ido-sec h3{font-size:20px}}
22 </style>
23
24 <div class="ido">
25
26 <section class="ido-card" style="margin-bottom:18px;overflow:hidden;border-left:6px solid #e94b13;">
27 <div class="ido-hero"><img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Research materials, documentation and project outputs"></div>
28 <div style="padding:18px 21px 20px">
29 <div class="ido-eye" style="color:#8a4d36;margin-bottom:5px">PREPARE · IDENTIFY DATA &amp; RESEARCH OUTPUTS</div>
30 <h2 style="font-size:27px;line-height:1.2;margin:0 0 8px;color:#2c2926">Know what your project creates, collects, reuses and needs to keep</h2>
31 <p style="margin:0;color:#5e5953;line-height:1.6;max-width:1160px">Before you can plan storage, rights, data protection, documentation, publication or preservation, you need a realistic inventory of the materials and outputs your project will work with. In artistic research this often includes much more than conventional “research data”: source material, physical objects, sketches, recordings, software, process documentation, performances, installations and the records that make them understandable later.</p>
32 </div>
33 </section>
34
35 <div class="ido-info" style="margin-bottom:16px"><strong>Start with types, not individual files.</strong> You do not need to list every photograph or document now. Identify the categories your project will create, collect or reuse, then record how each category needs to be handled.</div>
36
37 <div class="ido-rights" style="margin-bottom:28px"><strong>Do not force everything into the label “data”.</strong> Different disciplines and funders use the term differently. For planning purposes, inventory <strong>data, materials, documentation and research/artistic outputs</strong> together, then distinguish what each item actually is and what rules apply to it.</div>
38
39 <section class="ido-sec">
40 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 1 · MAP THE MATERIAL LANDSCAPE</div>
41 <h3>Identify five kinds of project material</h3>
42 <p>A single item can belong to more than one category. The purpose is not perfect classification; it is to make sure nothing important disappears from your planning.</p>
43 <div class="ido-grid">
44
45 <div class="ido-type" style="border-top:4px solid #21b6d7">
46 <h4>1 · Inputs &amp; reused source material</h4>
47 <p>Material that already exists before your project uses it.</p>
48 <ul>
49 <li>texts, images, films, music, archives and collections</li>
50 <li>existing datasets, databases and corpora</li>
51 <li>third-party code, software, models or templates</li>
52 <li>found material, objects, samples or reference works</li>
53 </ul>
54 </div>
55
56 <div class="ido-type" style="border-top:4px solid #21b6d7">
57 <h4>2 · Data or evidence created / collected</h4>
58 <p>Recorded material produced through your research or artistic process.</p>
59 <ul>
60 <li>interviews, surveys, observations and field notes</li>
61 <li>audio, video, photographs and scans</li>
62 <li>measurements, sensor logs and experimental records</li>
63 <li>annotations, transcripts, structured datasets or databases</li>
64 </ul>
65 </div>
66
67 <div class="ido-type" style="border-top:4px solid #e94b13">
68 <h4>3 · Process &amp; project documentation</h4>
69 <p>Records that explain how the work developed and how decisions were made.</p>
70 <ul>
71 <li>sketches, notebooks, rehearsal records and drafts</li>
72 <li>production files, technical plans and installation instructions</li>
73 <li>decision logs, version histories and provenance records</li>
74 <li>documentation of methods, workflows and transformations</li>
75 </ul>
76 </div>
77
78 <div class="ido-type" style="border-top:4px solid #f0aa00">
79 <h4>4 · Research &amp; artistic outputs</h4>
80 <p>What the project intends to deliver, publish, present or make available.</p>
81 <ul>
82 <li>artworks, performances, exhibitions and installations</li>
83 <li>publications, articles, books, catalogues and theses</li>
84 <li>films, audio works, scores, designs and prototypes</li>
85 <li>datasets, software, code, models, websites or teaching resources</li>
86 </ul>
87 </div>
88
89 <div class="ido-type" style="border-top:4px solid #38b76a">
90 <h4>5 · Administrative &amp; evidential records</h4>
91 <p>Records that may not be research outputs but are still needed for accountability or project closure.</p>
92 <ul>
93 <li>agreements, consent records and permissions</li>
94 <li>funder deliverables and reporting evidence</li>
95 <li>procurement, equipment or partner documentation</li>
96 <li>records of approvals, responsibilities and handover</li>
97 </ul>
98 </div>
99
100 </div>
101 </section>
102
103 <section class="ido-sec">
104 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 2 · BUILD A WORKING INVENTORY</div>
105 <h3>Record one row for each material or output type</h3>
106 <p>Your inventory is the bridge between the project idea and the practical decisions that follow. It should be specific enough to reveal risks, dependencies and responsibilities, but simple enough to maintain.</p>
107
108 <div class="ido-tablewrap">
109 <table class="ido-tbl">
110 <thead>
111 <tr><th>Inventory field</th><th>Record</th><th>Why it matters</th></tr>
112 </thead>
113 <tbody>
114 <tr><td><strong>Type / name</strong></td><td>A recognisable category such as “interview recordings”, “installation CAD files” or “final exhibition documentation”.</td><td>Creates a shared vocabulary for the team.</td></tr>
115 <tr><td><strong>Origin</strong></td><td>Created, collected, commissioned, received from a partner, or reused from a third party.</td><td>Origin affects rights, provenance and responsibilities.</td></tr>
116 <tr><td><strong>Format / material</strong></td><td>File formats, software dependencies, physical material, analogue carrier or specialist equipment needed.</td><td>Reveals technical and preservation dependencies.</td></tr>
117 <tr><td><strong>Scale</strong></td><td>Approximate quantity, duration, file size, number of objects or expected growth.</td><td>Helps plan storage, transfer, backup and costs.</td></tr>
118 <tr><td><strong>People &amp; sensitivity</strong></td><td>Whether it contains personal, confidential, culturally sensitive, restricted or otherwise sensitive material.</td><td>Determines access and protection requirements.</td></tr>
119 <tr><td><strong>Rights / permissions</strong></td><td>Who owns it, what licence applies, what permissions or consent exist, and what is still unresolved.</td><td>Determines what can be reused, published or shared.</td></tr>
120 <tr><td><strong>Working location</strong></td><td>Where the active copy is stored or the physical item is kept.</td><td>Makes responsibility and risk visible.</td></tr>
121 <tr><td><strong>Master / authoritative version</strong></td><td>Which file, object or record is the master and how it is distinguished from working or derivative copies.</td><td>Prevents ambiguity at handover and publication.</td></tr>
122 <tr><td><strong>Metadata / provenance</strong></td><td>What information is needed to understand source, creator, date, context, method, version and relationships.</td><td>Makes the material interpretable and reusable later.</td></tr>
123 <tr><td><strong>Lifecycle decision</strong></td><td>Keep, discard, restrict, share, publish, deposit, archive or preserve — and who decides.</td><td>Connects current work to project closure and long-term access.</td></tr>
124 </tbody>
125 </table>
126 </div>
127
128 <div class="ido-info" style="margin-top:14px"><strong>Useful minimum:</strong> if you can answer <em>what it is, where it came from, who is responsible, where the master is, whether it is sensitive, what rights apply and what should happen to it at project end</em>, you already have a strong first inventory.</div>
129 </section>
130
131 <section class="ido-sec">
132 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 3 · MAKE ARTISTIC PROCESSES VISIBLE</div>
133 <h3>Identify the documentation that will make the work understandable later</h3>
134 <p>For performative, spatial, process-based, participatory or otherwise ephemeral work, the work itself and its documentation are not the same thing. Decide deliberately what needs to be captured and what status that documentation has.</p>
135
136 <div class="ido-grid">
137 <div class="ido-example">
138 <h4>Performance / live work</h4>
139 <p>Possible records include score or script, rehearsal material, technical rider, stage or spatial plan, photographs, audio/video documentation, performer credits, audience/participant permissions and a description of the realised event.</p>
140 </div>
141 <div class="ido-example">
142 <h4>Installation / exhibition</h4>
143 <p>Possible records include concept material, plans, CAD/3D files, component lists, media masters, installation instructions, equipment dependencies, views of the installed work, labels/credits and de-installation or re-installation information.</p>
144 </div>
145 <div class="ido-example">
146 <h4>Design / architecture / making</h4>
147 <p>Possible records include research sources, drawings, models, prototypes, material tests, fabrication files, technical specifications, photographs, iterations, decisions and final presentation files.</p>
148 </div>
149 <div class="ido-example">
150 <h4>Participatory / interview-based work</h4>
151 <p>Possible records include recruitment or participant information, consent/permissions, recordings, transcripts, participant-created material, field notes, coding/analysis, access restrictions and public-facing outputs.</p>
152 </div>
153 <div class="ido-example">
154 <h4>Digital / computational work</h4>
155 <p>Possible records include source code, dependencies, configuration, datasets, training or processing inputs, documentation, build/export files, version information, licences and the environment needed to reproduce or understand the work.</p>
156 </div>
157 <div class="ido-example">
158 <h4>Publication / film / audio</h4>
159 <p>Possible records include research material, source assets, edit/project files, rights documentation, captions/subtitles, credits, high-resolution or preservation masters, distribution derivatives and publication metadata.</p>
160 </div>
161 </div>
162 </section>
163
164 <section class="ido-sec">
165 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 4 · DISTINGUISH WHAT MUST NOT BE MIXED</div>
166 <h3>These distinctions prevent problems later</h3>
167 <div class="ido-grid">
168 <div class="ido-rights"><strong>Created vs. reused.</strong><br>Material you create and third-party material may have very different rights and licence conditions.</div>
169 <div class="ido-info"><strong>Working file vs. master.</strong><br>A convenient editing copy is not automatically the authoritative or preservation-quality version.</div>
170 <div class="ido-info"><strong>Documentation vs. artwork/output.</strong><br>A photograph of a performance may document the work without being the work itself. Record the relationship explicitly.</div>
171 <div class="ido-warn"><strong>Public vs. restricted.</strong><br>A project may publish some outputs while keeping personal, confidential, embargoed or rights-restricted source material closed.</div>
172 <div class="ido-store"><strong>Storage vs. preservation.</strong><br>A file being stored today does not mean it can still be opened, understood or trusted years later.</div>
173 <div class="ido-rights"><strong>Retention vs. sharing.</strong><br>You may need to retain material for accountability while having no permission or reason to make it public.</div>
174 </div>
175 </section>
176
177 <section class="ido-sec">
178 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 5 · RUN THE PROJECT INVENTORY</div>
179 <h3>A practical sequence for the team</h3>
180 <div class="ido-grid">
181 <div class="ido-step"><div class="n">01</div><h4>List expected types</h4><p>Start from the proposal, work packages, methods, artistic process, deliverables and public outputs.</p></div>
182 <div class="ido-step"><div class="n">02</div><h4>Add reused material</h4><p>Include archives, existing datasets, third-party images/media, code, partner material and other inputs.</p></div>
183 <div class="ido-step"><div class="n">03</div><h4>Mark sensitive categories</h4><p>Identify personal, confidential, restricted, culturally sensitive or otherwise protected material early.</p></div>
184 <div class="ido-step"><div class="n">04</div><h4>Identify masters</h4><p>Decide which files or objects will be authoritative and how versions/derivatives will be distinguished.</p></div>
185 <div class="ido-step"><div class="n">05</div><h4>Record rights &amp; permissions</h4><p>Note ownership, licences, consent, partner terms and unresolved rights before dissemination is planned.</p></div>
186 <div class="ido-step"><div class="n">06</div><h4>Estimate scale &amp; dependencies</h4><p>Flag large volumes, specialist formats, software, hardware, equipment, physical storage and transfer needs.</p></div>
187 <div class="ido-step"><div class="n">07</div><h4>Connect to storage &amp; DMP</h4><p>Use the inventory to assign working locations, access rules, backup, documentation and lifecycle actions.</p></div>
188 <div class="ido-step"><div class="n">08</div><h4>Review at milestones</h4><p>Update the inventory when methods, partners, outputs, formats, rights, people or publication plans change.</p></div>
189 </div>
190 </section>
191
192 <section class="ido-sec">
193 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">KEY QUESTIONS</div>
194 <h3>Questions every project should be able to answer</h3>
195 <div class="ido-grid">
196 <div class="ido-check">What existing material will we reuse, and under what conditions?</div>
197 <div class="ido-check">What new data, records, objects or documentation will we create or collect?</div>
198 <div class="ido-check">Which outputs are contractual/funder deliverables and which are additional project outputs?</div>
199 <div class="ido-check">What is digital, analogue, physical, spatial or dependent on specialist software/equipment?</div>
200 <div class="ido-check">Which material contains personal, confidential, restricted or sensitive information?</div>
201 <div class="ido-check">Who owns or controls each type, and what permissions/licences are needed?</div>
202 <div class="ido-check">Which version will be the master or authoritative record?</div>
203 <div class="ido-check">What metadata or contextual information is needed to understand the material later?</div>
204 <div class="ido-check">What should be shared, restricted, retained, discarded, deposited or preserved at project end?</div>
205 <div class="ido-check">Who is responsible for each decision and for the final handover?</div>
206 </div>
207 </section>
208
209 <section class="ido-sec">
210 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STOP &amp; CHECK</div>
211 <h3>Common inventory gaps</h3>
212 <div class="ido-grid">
213 <div class="ido-warn"><strong>Only final deliverables are listed.</strong><br>Source material, process documentation and research evidence are missing from the plan.</div>
214 <div class="ido-warn"><strong>“Everything is in the cloud.”</strong><br>No one has identified the actual service, owner, access model, backup or master copy.</div>
215 <div class="ido-warn"><strong>Ephemeral work has no documentation strategy.</strong><br>The project may finish without enough information to understand, present or preserve what happened.</div>
216 <div class="ido-warn"><strong>Third-party material has no provenance.</strong><br>Source, creator, licence or permission cannot be reconstructed later.</div>
217 <div class="ido-warn"><strong>Personal or confidential material is mixed with publication files.</strong><br>Access decisions become difficult and accidental disclosure becomes more likely.</div>
218 <div class="ido-warn"><strong>The master is unclear.</strong><br>Several exports or copies exist but no authoritative version has been designated.</div>
219 <div class="ido-warn"><strong>Physical objects are absent from the data plan.</strong><br>Location, ownership, condition, documentation or handover responsibilities have not been recorded.</div>
220 <div class="ido-warn"><strong>Specialist formats are treated as self-explanatory.</strong><br>Software, hardware, plugins or context needed to reopen the work are not documented.</div>
221 </div>
222 </section>
223
224 <section class="ido-sec">
225 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">SERVICES &amp; TOOLS</div>
226 <h3>Use the inventory to involve the right support</h3>
227 <div class="ido-grid">
228 <a class="ido-service" href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/support_kunst_und_forschung" target="_blank" rel="noopener"><strong>Support Kunst und Forschung ↗</strong><span>Use for project/funder requirements, deliverables, proposal planning and project coordination.</span></a>
229 <a class="ido-service" href="https://www.dieangewandte.at/universitaetsbibliothek" target="_blank" rel="noopener"><strong>University Library ↗</strong><span>Use for research/discovery support and questions around publication, repository and information resources.</span></a>
230 <a class="ido-service" href="https://phaidra.bibliothek.uni-ak.ac.at/" target="_blank" rel="noopener"><strong>Angewandte Repository ↗</strong><span>Explore the institutional repository route for digital research and artistic outputs that are suitable for deposit.</span></a>
231 <a class="ido-service" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Plan%20Your%20Data%20Management/"><strong>Plan Your Data Management</strong><span>Turn the inventory into decisions about storage, access, backup, documentation, sharing and preservation.</span></a>
232 <a class="ido-service" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Data%20Protection%20%26%20Ethics/"><strong>Data Protection &amp; Ethics</strong><span>Use when people, personal data, consent, participants or ethical questions are involved.</span></a>
233 <a class="ido-service" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Copyright%2C%20Rights%20%26%20Licences/"><strong>Copyright, Rights &amp; Licences</strong><span>Clarify ownership, third-party material, permissions, licences and reuse conditions.</span></a>
234 </div>
235 </section>
236
237 <section class="ido-sec">
238 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">NEXT · TURN THE INVENTORY INTO A PLAN</div>
239 <h3>Related Service Navigator topics</h3>
240 <div class="ido-linkgrid">
241 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Plan%20Your%20Data%20Management/">Plan Your Data Management</a>
242 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/File%20Organisation%20%26%20Naming/">File Organisation &amp; Naming</a>
243 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Storage%2C%20Backup%20%26%20Security/">Storage, Backup &amp; Security</a>
244 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Infrastructure%2C%20Services%20%26%20Tools/">Infrastructure, Services &amp; Tools</a>
245 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Work%20%26%20Manage/Document%20Metadata%20%26%20Provenance/">Document Processes, Metadata &amp; Provenance</a>
246 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Work%20%26%20Manage/Manage%20Versions%20%26%20Master%20Files/">Manage Versions &amp; Master Files</a>
247 <a class="ido-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/">Decide What to Share</a>
248 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Publish%20%26%20Share/Preserve%20Data%20%26%20Artistic%20Outputs/">Preserve Data &amp; Artistic Outputs</a>
249 </div>
250 </section>
251
252 <div class="ido-info" style="margin-bottom:14px"><strong>Need help deciding what belongs in the inventory?</strong> Bring a one-paragraph project description, your planned methods/activities, expected outputs, likely source material and any funder requirements. For funded art/research projects, Support Kunst und Forschung can help connect these elements to the wider project plan.</div>
253
254 <!-- ARSN_SEARCH_TERMS_START -->
255 <details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6">
256 <summary style="cursor:pointer;color:#6a655e;font-size:13px">Search terms &amp; related topics</summary>
257 <div style="margin-top:9px;color:#5c5650;font-size:12px;line-height:1.7">research data · artistic research data · research outputs · artistic outputs · project materials · source material · reused data · third-party material · documentation · process documentation · performance documentation · installation documentation · interviews · recordings · photographs · video · audio · datasets · databases · software · source code · models · prototypes · physical objects · analogue material · master files · authoritative version · provenance · metadata · rights · copyright · licences · consent · personal data · sensitive data · confidential data · file formats · storage · backup · preservation · repository · data management plan · DMP · deliverables · funder requirements · project inventory · output inventory · handover</div>
258 </details>
259 <!-- ARSN_SEARCH_TERMS_END -->
260
261 </div>
262 {{/html}}
263
264 {{html clean="false"}}
265 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
266
267 <style data-sn-service-navigator-master="1">
268 /* =========================================================
269 MASTER TYPOGRAPHY
270 ========================================================= */
271 #xwikicontent h1,
272 #xwikicontent h2,
273 #xwikicontent h3,
274 #xwikicontent h4,
275 #xwikicontent h5,
276 #xwikicontent h6,
277 #xwikicontent .box-title,
278 #xwikicontent [role="heading"],
279 #xwikicontent h1 a,
280 #xwikicontent h2 a,
281 #xwikicontent h3 a,
282 #xwikicontent h4 a,
283 #xwikicontent h5 a,
284 #xwikicontent h6 a,
285 #xwikicontent .box-title a,
286 #xwikicontent [role="heading"] a{
287 text-align:left!important;
288 text-justify:auto!important;
289 word-spacing:normal!important;
290 }
291
292 /* =========================================================
293 COMING SOON / IN VORBEREITUNG
294 ========================================================= */
295 .sn-coming-soon-badge{
296 display:inline-block;
297 vertical-align:middle;
298 margin-left:10px;
299 padding:4px 8px;
300 border-radius:14px;
301 border:1px solid #efd9cc;
302 background:#fff4ee;
303 color:#8a4d36;
304 font-size:11px;
305 font-weight:700;
306 letter-spacing:.055em;
307 line-height:1.2;
308 white-space:nowrap;
309 }
310
311 /* =========================================================
312 NATIVE / DETAIL CALLOUT GEOMETRY
313 Preserve existing backgrounds.
314 ========================================================= */
315 #xwikicontent .arsn-info,
316 #xwikicontent .dmp-info,
317 #xwikicontent .ido-info,
318 #xwikicontent .pp-info,
319 #xwikicontent .infomessage{
320 box-sizing:border-box!important;
321 border-left:4px solid #21b6d7!important;
322 border-radius:8px;
323 text-align:left!important;
324 word-spacing:normal!important;
325 }
326
327 #xwikicontent .arsn-warn,
328 #xwikicontent .dmp-warn,
329 #xwikicontent .ido-warn,
330 #xwikicontent .pp-warn,
331 #xwikicontent .warn,
332 #xwikicontent .warning,
333 #xwikicontent .warningmessage,
334 #xwikicontent .errormessage{
335 box-sizing:border-box!important;
336 border-left:4px solid #e94b13!important;
337 border-radius:8px;
338 text-align:left!important;
339 word-spacing:normal!important;
340 }
341
342 [data-sn-master-equal-height],
343 [data-sn-master-first-row]{
344 box-sizing:border-box;
345 }
346
347 /* =========================================================
348 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
349 ========================================================= */
350 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
351 display:grid!important;
352 grid-template-columns:minmax(0,1fr)!important;
353 grid-auto-rows:auto!important;
354 width:100%!important;
355 max-width:none!important;
356 box-sizing:border-box!important;
357 justify-items:start!important;
358 align-items:start!important;
359 gap:2px!important;
360 text-align:left!important;
361 text-align-last:left!important;
362 text-justify:auto!important;
363 word-spacing:normal!important;
364 white-space:normal!important;
365 }
366 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
367 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
368 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
369 display:block!important;
370 width:100%!important;
371 margin:0!important;
372 text-align:left!important;
373 text-align-last:left!important;
374 text-justify:auto!important;
375 word-spacing:normal!important;
376 white-space:normal!important;
377 }
378 </style>
379
380 <script data-sn-service-navigator-master="1">
381 (function(){
382 "use strict";
383
384 var PAGE_KIND="detail";
385 var PLACEHOLDER=false;
386 var PLACEHOLDER_LABEL="COMING SOON";
387
388 var MOBILE_MAX=767;
389 var ROW_TOLERANCE=6;
390 var RESIZE_DEBOUNCE=220;
391
392 var root=
393 document.getElementById("xwikicontent")||
394 document.querySelector(".xwiki-rendering-content")||
395 document.querySelector("main")||
396 document.body;
397
398 if(!root)return;
399
400 var managedHeight=new Set();
401 var managedMargin=new Set();
402 var originalHeight=new WeakMap();
403 var originalMargin=new WeakMap();
404
405 var resizeTimer=0;
406 var running=false;
407
408 var THEMES=[
409 {
410 name:"BLUE",
411 accent:"#21b6d7",
412 bg:"#eaf7fb",
413 text:"#315d68",
414 labels:[
415 "HIER STARTEN",
416 "ENTSCHEIDEN",
417 "ÜBERPRÜFEN & ANPASSEN",
418 "START HERE",
419 "DECIDE",
420 "REVIEW & ADAPT"
421 ]
422 },
423 {
424 name:"RED",
425 accent:"#e94b13",
426 bg:"#fff1ec",
427 text:"#8a4d36",
428 labels:[
429 "PLANEN & ORGANISIEREN",
430 "ORGANISIEREN & DOKUMENTIEREN",
431 "PUBLIZIEREN & PRÄSENTIEREN",
432 "PLAN & ORGANISE",
433 "PLAN & ORGANIZE",
434 "ORGANISE & DOCUMENT",
435 "ORGANIZE & DOCUMENT",
436 "PUBLISH & PRESENT"
437 ]
438 },
439 {
440 name:"YELLOW",
441 accent:"#f0aa00",
442 bg:"#fff8e7",
443 text:"#785b17",
444 labels:[
445 "SCHÜTZEN & KLÄREN",
446 "STANDARDISIEREN & IDENTIFIZIEREN",
447 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
448 "PROTECT & CLARIFY",
449 "STANDARDISE & IDENTIFY",
450 "STANDARDIZE & IDENTIFY",
451 "OPEN, REUSE & MAKE FINDABLE"
452 ]
453 },
454 {
455 name:"GREEN",
456 accent:"#38b76a",
457 bg:"#edf9f1",
458 text:"#3f7451",
459 labels:[
460 "INFRASTRUKTUR EINRICHTEN",
461 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
462 "SPEICHERN & ZUGRIFF STEUERN",
463 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
464 "SET UP INFRASTRUCTURE",
465 "SET UP INFRASTRUCTURE & COLLABORATION",
466 "STORE & CONTROL ACCESS",
467 "REPOSITORY, PRESERVE & HAND OVER"
468 ]
469 }
470 ];
471
472 function num(value){
473 var n=parseFloat(value);
474 return Number.isFinite(n)?n:0;
475 }
476
477 function norm(value){
478 return String(value||"")
479 .replace(/\s+/g," ")
480 .trim()
481 .toUpperCase();
482 }
483
484 function visible(el){
485 if(!el||el.nodeType!==1)return false;
486
487 var style=getComputedStyle(el);
488 var rect=el.getBoundingClientRect();
489
490 return (
491 style.display!=="none"&&
492 style.visibility!=="hidden"&&
493 rect.width>20&&
494 rect.height>4
495 );
496 }
497
498 function saveStyle(el,map,property){
499 if(map.has(el))return;
500
501 map.set(el,{
502 value:el.style.getPropertyValue(property),
503 priority:el.style.getPropertyPriority(property)
504 });
505 }
506
507 function restoreStyle(el,map,property){
508 var original=map.get(el);
509
510 if(original&&original.value){
511 el.style.setProperty(
512 property,
513 original.value,
514 original.priority||""
515 );
516 }else{
517 el.style.removeProperty(property);
518 }
519 }
520
521 function resetRuntime(){
522 managedHeight.forEach(function(el){
523 restoreStyle(
524 el,
525 originalHeight,
526 "min-height"
527 );
528 el.removeAttribute(
529 "data-sn-master-equal-height"
530 );
531 });
532
533 managedMargin.forEach(function(el){
534 restoreStyle(
535 el,
536 originalMargin,
537 "margin-top"
538 );
539 el.removeAttribute(
540 "data-sn-master-first-row"
541 );
542 });
543
544 managedHeight.clear();
545 managedMargin.clear();
546 }
547
548 function themeFor(text){
549 var value=norm(text);
550
551 for(var i=0;i<THEMES.length;i++){
552 for(var j=0;j<THEMES[i].labels.length;j++){
553 var label=THEMES[i].labels[j];
554
555 if(
556 value===label||
557 value.indexOf(label+" ")===0||
558 value.indexOf(label+" -")===0||
559 value.indexOf(label+" ·")===0
560 ){
561 return THEMES[i];
562 }
563 }
564 }
565
566 return null;
567 }
568
569 /* =======================================================
570 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
571 ======================================================= */
572
573 function colourDistance(a,b){
574 return Math.sqrt(
575 Math.pow(a[0]-b[0],2)+
576 Math.pow(a[1]-b[1],2)+
577 Math.pow(a[2]-b[2],2)
578 );
579 }
580
581 function makeFilledRedOrangeCTAsBorderless(){
582 var RED_ORANGE=[233,75,19];
583
584 Array.from(
585 root.querySelectorAll(
586 'a,button,[role="button"],input[type="submit"],input[type="button"]'
587 )
588 ).forEach(function(el){
589 if(!visible(el))return;
590
591 var style=getComputedStyle(el);
592 var rgb=parseRGB(style.backgroundColor);
593
594 if(!rgb)return;
595
596 if(
597 colourDistance(
598 rgb,
599 RED_ORANGE
600 )>55
601 ){
602 return;
603 }
604
605 var rect=el.getBoundingClientRect();
606
607 if(
608 rect.width<80||
609 rect.height<24
610 ){
611 return;
612 }
613
614 el.style.setProperty(
615 "border",
616 "none",
617 "important"
618 );
619
620 el.style.setProperty(
621 "border-left",
622 "none",
623 "important"
624 );
625
626 el.style.setProperty(
627 "border-top",
628 "none",
629 "important"
630 );
631
632 el.style.setProperty(
633 "border-right",
634 "none",
635 "important"
636 );
637
638 el.style.setProperty(
639 "border-bottom",
640 "none",
641 "important"
642 );
643
644 el.style.setProperty(
645 "box-shadow",
646 "none",
647 "important"
648 );
649 });
650 }
651
652 /* =======================================================
653 FULL-WIDTH THREE-LINE AREA LABELS
654 ======================================================= */
655
656 function compactText(value){
657 return String(value||"")
658 .replace(/\s+/g," ")
659 .trim();
660 }
661
662 function makeThreeLineAreaLabels(){
663 Array.from(
664 root.querySelectorAll(
665 ".arsn-area-label"
666 )
667 ).forEach(function(label){
668 if(
669 label.getAttribute(
670 "data-sn-three-line"
671 )==="1"
672 ){
673 return;
674 }
675
676 var number=
677 label.querySelector(
678 ":scope > .arsn-area-number"
679 );
680
681 var action=
682 label.querySelector(
683 ":scope > .arsn-area-action"
684 );
685
686 if(
687 !number||
688 !action
689 ){
690 return;
691 }
692
693 var clone=
694 label.cloneNode(true);
695
696 var cloneNumber=
697 clone.querySelector(
698 ":scope > .arsn-area-number"
699 );
700
701 var cloneAction=
702 clone.querySelector(
703 ":scope > .arsn-area-action"
704 );
705
706 if(cloneNumber){
707 cloneNumber.remove();
708 }
709
710 if(cloneAction){
711 cloneAction.remove();
712 }
713
714 var titleText=
715 compactText(
716 clone.textContent
717 );
718
719 if(!titleText){
720 return;
721 }
722
723 var numberNode=
724 number.cloneNode(true);
725
726 var actionNode=
727 action.cloneNode(true);
728
729 var titleNode=
730 document.createElement(
731 "span"
732 );
733
734 titleNode.className=
735 "sn-area-label-title";
736
737 titleNode.textContent=
738 titleText;
739
740 while(label.firstChild){
741 label.removeChild(
742 label.firstChild
743 );
744 }
745
746 label.appendChild(
747 numberNode
748 );
749
750 label.appendChild(
751 titleNode
752 );
753
754 label.appendChild(
755 actionNode
756 );
757
758 label.setAttribute(
759 "data-sn-three-line",
760 "1"
761 );
762
763 var head=
764 label.closest(
765 ".arsn-area-head"
766 );
767
768 if(head){
769 head.style.setProperty(
770 "width",
771 "100%",
772 "important"
773 );
774
775 head.style.setProperty(
776 "max-width",
777 "100%",
778 "important"
779 );
780
781 head.style.setProperty(
782 "box-sizing",
783 "border-box",
784 "important"
785 );
786 }
787 });
788 }
789
790 /* =======================================================
791 PLACEHOLDER BADGE
792 ======================================================= */
793
794 function applyPlaceholderBadge(){
795 if(!PLACEHOLDER)return;
796
797 if(
798 document.querySelector(
799 ".sn-coming-soon-badge"
800 )
801 ){
802 return;
803 }
804
805 var title=
806 document.querySelector(
807 "#document-title"
808 )||
809 document.querySelector(
810 "h1"
811 );
812
813 if(!title)return;
814
815 var badge=
816 document.createElement(
817 "span"
818 );
819
820 badge.className=
821 "sn-coming-soon-badge";
822
823 badge.textContent=
824 PLACEHOLDER_LABEL;
825
826 badge.setAttribute(
827 "aria-label",
828 PLACEHOLDER_LABEL
829 );
830
831 title.appendChild(
832 badge
833 );
834 }
835
836 /* =======================================================
837 DETAIL PAGE OWN-ACCENT PROPAGATION
838 ======================================================= */
839
840 function parseRGB(value){
841 var match=String(value||"").match(
842 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
843 );
844
845 if(!match)return null;
846
847 return [
848 Number(match[1]),
849 Number(match[2]),
850 Number(match[3])
851 ];
852 }
853
854 function distance(a,b){
855 return Math.sqrt(
856 Math.pow(a[0]-b[0],2)+
857 Math.pow(a[1]-b[1],2)+
858 Math.pow(a[2]-b[2],2)
859 );
860 }
861
862 function paletteMatch(cssColor){
863 var rgb=parseRGB(cssColor);
864
865 if(!rgb)return null;
866
867 var palette=[
868 {hex:"#21b6d7",rgb:[33,182,215]},
869 {hex:"#e94b13",rgb:[233,75,19]},
870 {hex:"#f0aa00",rgb:[240,170,0]},
871 {hex:"#38b76a",rgb:[56,183,106]}
872 ];
873
874 var best=null;
875 var bestDistance=Infinity;
876
877 palette.forEach(function(item){
878 var d=distance(rgb,item.rgb);
879
880 if(d<bestDistance){
881 best=item;
882 bestDistance=d;
883 }
884 });
885
886 return bestDistance<=30
887 ?best
888 :null;
889 }
890
891 function propagateDetailAccents(){
892 if(PAGE_KIND!=="detail")return;
893
894 Array.from(
895 root.querySelectorAll(
896 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
897 ".arsn-source,.dmp-source,.ido-source,.pp-source"
898 )
899 ).forEach(function(el){
900 if(!visible(el))return;
901
902 var style=getComputedStyle(el);
903
904 if(
905 num(style.borderTopWidth)>=2
906 ){
907 var match=
908 paletteMatch(
909 style.borderTopColor
910 );
911
912 if(match){
913 el.style.setProperty(
914 "border-left",
915 "4px solid "+match.hex,
916 "important"
917 );
918 }
919 }
920 });
921
922 // Warning families: explicit safety override.
923 Array.from(
924 root.querySelectorAll(
925 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
926 ".warn,.warning,.warningmessage,.errormessage"
927 )
928 ).forEach(function(el){
929 if(!visible(el))return;
930
931 el.style.setProperty(
932 "border-left",
933 "4px solid #e94b13",
934 "important"
935 );
936 });
937
938 // Info families: explicit orientation override.
939 Array.from(
940 root.querySelectorAll(
941 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
942 )
943 ).forEach(function(el){
944 if(!visible(el))return;
945
946 el.style.setProperty(
947 "border-left",
948 "4px solid #21b6d7",
949 "important"
950 );
951 });
952 }
953
954 /* =======================================================
955 OVERVIEW SEMANTIC THEME PALETTE
956 ======================================================= */
957
958 function smallestThemeHeaders(){
959 return Array.from(
960 root.querySelectorAll(
961 "div,span,p,strong,h3,h4,h5,h6"
962 )
963 ).filter(function(el){
964 if(!visible(el))return false;
965 if(!themeFor(el.textContent))return false;
966
967 return !Array.from(
968 el.children||[]
969 ).some(function(child){
970 return !!themeFor(
971 child.textContent
972 );
973 });
974 });
975 }
976
977 function findOverviewCard(header){
978 var node=header.parentElement;
979 var candidates=[];
980
981 while(node&&node!==root){
982 var rect=node.getBoundingClientRect();
983 var style=getComputedStyle(node);
984
985 var border=
986 num(style.borderTopWidth)+
987 num(style.borderRightWidth)+
988 num(style.borderBottomWidth)+
989 num(style.borderLeftWidth);
990
991 if(
992 rect.width>=220&&
993 rect.width<=800&&
994 rect.height>=120&&
995 border>=1
996 ){
997 candidates.push(node);
998 }
999
1000 node=node.parentElement;
1001 }
1002
1003 if(!candidates.length)return null;
1004
1005 candidates.sort(function(a,b){
1006 return (
1007 b.getBoundingClientRect().height-
1008 a.getBoundingClientRect().height
1009 );
1010 });
1011
1012 return candidates[0];
1013 }
1014
1015 function rowCandidates(link,card){
1016 var result=[];
1017 var cardRect=
1018 card.getBoundingClientRect();
1019
1020 var node=link;
1021
1022 while(node&&node!==card){
1023 if(visible(node)){
1024 var rect=
1025 node.getBoundingClientRect();
1026
1027 if(
1028 rect.height<=105&&
1029 rect.width>=
1030 cardRect.width*.50&&
1031 rect.width<=
1032 cardRect.width*1.03
1033 ){
1034 result.push(node);
1035 }
1036 }
1037
1038 node=node.parentElement;
1039 }
1040
1041 return result;
1042 }
1043
1044 function chooseOuterRow(
1045 candidates,
1046 link
1047 ){
1048 if(!candidates.length){
1049 return link;
1050 }
1051
1052 var bordered=
1053 candidates.filter(function(el){
1054 return (
1055 num(
1056 getComputedStyle(el)
1057 .borderLeftWidth
1058 )>=1
1059 );
1060 });
1061
1062 var pool=
1063 bordered.length
1064 ?bordered
1065 :candidates;
1066
1067 pool.sort(function(a,b){
1068 var ar=
1069 a.getBoundingClientRect();
1070
1071 var br=
1072 b.getBoundingClientRect();
1073
1074 return (
1075 ar.left-br.left||
1076 br.width-ar.width
1077 );
1078 });
1079
1080 return pool[0]||link;
1081 }
1082
1083 function applyOverviewPalette(){
1084 if(PAGE_KIND!=="overview"){
1085 return [];
1086 }
1087
1088 var headers=
1089 smallestThemeHeaders()
1090 .map(function(el){
1091 return {
1092 el:el,
1093 theme:
1094 themeFor(
1095 el.textContent
1096 ),
1097 card:
1098 findOverviewCard(
1099 el
1100 )
1101 };
1102 })
1103 .filter(function(row){
1104 return !!row.card;
1105 });
1106
1107 var unique=[];
1108 var seenHeaders=new Set();
1109
1110 headers.forEach(function(row){
1111 var key=
1112 row.theme.name+
1113 "|"+
1114 Math.round(
1115 row.card
1116 .getBoundingClientRect()
1117 .left
1118 )+
1119 "|"+
1120 Math.round(
1121 row.el
1122 .getBoundingClientRect()
1123 .top
1124 );
1125
1126 if(!seenHeaders.has(key)){
1127 seenHeaders.add(key);
1128 unique.push(row);
1129 }
1130 });
1131
1132 unique.forEach(function(row){
1133 var headerRect=
1134 row.el
1135 .getBoundingClientRect();
1136
1137 row.el.style.setProperty(
1138 "background",
1139 row.theme.bg,
1140 "important"
1141 );
1142
1143 row.el.style.setProperty(
1144 "color",
1145 row.theme.text,
1146 "important"
1147 );
1148
1149 row.el.style.setProperty(
1150 "text-align",
1151 "left",
1152 "important"
1153 );
1154
1155 row.el.style.setProperty(
1156 "word-spacing",
1157 "normal",
1158 "important"
1159 );
1160
1161 var later=
1162 unique
1163 .filter(function(other){
1164 return (
1165 other.card===row.card&&
1166 other.el
1167 .getBoundingClientRect()
1168 .top>
1169 headerRect.top+2
1170 );
1171 })
1172 .sort(function(a,b){
1173 return (
1174 a.el
1175 .getBoundingClientRect()
1176 .top-
1177 b.el
1178 .getBoundingClientRect()
1179 .top
1180 );
1181 });
1182
1183 var stopTop=
1184 later.length
1185 ?later[0].el
1186 .getBoundingClientRect()
1187 .top
1188 :Infinity;
1189
1190 Array.from(
1191 row.card.querySelectorAll("a")
1192 ).forEach(function(link){
1193 if(!visible(link))return;
1194
1195 var rect=
1196 link.getBoundingClientRect();
1197
1198 if(
1199 rect.top<=
1200 headerRect.bottom-2||
1201 rect.top>=
1202 stopTop-2
1203 ){
1204 return;
1205 }
1206
1207 var candidates=
1208 rowCandidates(
1209 link,
1210 row.card
1211 );
1212
1213 var target=
1214 chooseOuterRow(
1215 candidates,
1216 link
1217 );
1218
1219 candidates.forEach(function(el){
1220 el.style.setProperty(
1221 "border-left",
1222 "0 solid transparent",
1223 "important"
1224 );
1225 });
1226
1227 target.style.setProperty(
1228 "border-left",
1229 "3px solid "+
1230 row.theme.accent,
1231 "important"
1232 );
1233
1234 target.style.setProperty(
1235 "box-sizing",
1236 "border-box",
1237 "important"
1238 );
1239 });
1240 });
1241
1242 return unique;
1243 }
1244
1245 /* =======================================================
1246 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1247 ======================================================= */
1248
1249 function alignOverviewCards(headers){
1250 if(
1251 PAGE_KIND!=="overview"||
1252 window.innerWidth<=MOBILE_MAX
1253 ){
1254 return;
1255 }
1256
1257 var cards=[];
1258 var seen=new Set();
1259
1260 headers.forEach(function(row){
1261 if(!seen.has(row.card)){
1262 seen.add(row.card);
1263 cards.push(row.card);
1264 }
1265 });
1266
1267 if(cards.length<2){
1268 return;
1269 }
1270
1271 // Group cards by actual top position.
1272 var groups=[];
1273
1274 cards.forEach(function(card){
1275 var top=
1276 card.getBoundingClientRect().top;
1277
1278 var group=null;
1279
1280 for(var i=0;i<groups.length;i++){
1281 if(
1282 Math.abs(
1283 groups[i].top-top
1284 )<=ROW_TOLERANCE
1285 ){
1286 group=groups[i];
1287 break;
1288 }
1289 }
1290
1291 if(!group){
1292 group={
1293 top:top,
1294 cards:[]
1295 };
1296 groups.push(group);
1297 }
1298
1299 group.cards.push(card);
1300 });
1301
1302 groups.forEach(function(group){
1303 if(group.cards.length<2){
1304 return;
1305 }
1306
1307 var firstHeaders=
1308 group.cards.map(function(card){
1309 var candidates=
1310 headers
1311 .filter(function(row){
1312 return row.card===card;
1313 })
1314 .sort(function(a,b){
1315 return (
1316 a.el
1317 .getBoundingClientRect()
1318 .top-
1319 b.el
1320 .getBoundingClientRect()
1321 .top
1322 );
1323 });
1324
1325 return candidates.length
1326 ?candidates[0]
1327 :null;
1328 });
1329
1330 if(
1331 !firstHeaders.some(function(row){
1332 return !row;
1333 })
1334 ){
1335 var targetTop=
1336 Math.max.apply(
1337 Math,
1338 firstHeaders.map(function(row){
1339 return (
1340 row.el
1341 .getBoundingClientRect()
1342 .top-
1343 row.card
1344 .getBoundingClientRect()
1345 .top
1346 );
1347 })
1348 );
1349
1350 firstHeaders.forEach(function(row){
1351 var relativeTop=
1352 row.el
1353 .getBoundingClientRect()
1354 .top-
1355 row.card
1356 .getBoundingClientRect()
1357 .top;
1358
1359 var delta=
1360 targetTop-relativeTop;
1361
1362 if(delta>1){
1363 saveStyle(
1364 row.el,
1365 originalMargin,
1366 "margin-top"
1367 );
1368
1369 var current=
1370 num(
1371 getComputedStyle(
1372 row.el
1373 ).marginTop
1374 );
1375
1376 row.el.style.setProperty(
1377 "margin-top",
1378 (
1379 current+delta
1380 )+"px"
1381 );
1382
1383 row.el.setAttribute(
1384 "data-sn-master-first-row",
1385 "1"
1386 );
1387
1388 managedMargin.add(
1389 row.el
1390 );
1391 }
1392 });
1393 }
1394
1395 var maxHeight=0;
1396
1397 group.cards.forEach(function(card){
1398 maxHeight=
1399 Math.max(
1400 maxHeight,
1401 card
1402 .getBoundingClientRect()
1403 .height
1404 );
1405 });
1406
1407 maxHeight=
1408 Math.ceil(maxHeight);
1409
1410 group.cards.forEach(function(card){
1411 saveStyle(
1412 card,
1413 originalHeight,
1414 "min-height"
1415 );
1416
1417 card.style.setProperty(
1418 "min-height",
1419 maxHeight+"px"
1420 );
1421
1422 card.setAttribute(
1423 "data-sn-master-equal-height",
1424 "1"
1425 );
1426
1427 managedHeight.add(
1428 card
1429 );
1430 });
1431 });
1432 }
1433
1434 /* =======================================================
1435 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1436 ======================================================= */
1437
1438 function equaliseDetailGrids(){
1439 if(
1440 PAGE_KIND!=="detail"||
1441 window.innerWidth<=MOBILE_MAX
1442 ){
1443 return;
1444 }
1445
1446 var selectors=[
1447 ".arsn-grid",
1448 ".arsn-grid-2",
1449 ".arsn-grid-3",
1450 ".dmp-grid",
1451 ".ido-grid",
1452 ".pp-grid"
1453 ];
1454
1455 selectors.forEach(function(selector){
1456 Array.from(
1457 root.querySelectorAll(selector)
1458 ).forEach(function(grid){
1459 var children=
1460 Array.from(
1461 grid.children||[]
1462 ).filter(visible);
1463
1464 if(children.length<2){
1465 return;
1466 }
1467
1468 var groups=[];
1469
1470 children.forEach(function(child){
1471 var top=
1472 child
1473 .getBoundingClientRect()
1474 .top;
1475
1476 var group=null;
1477
1478 for(var i=0;i<groups.length;i++){
1479 if(
1480 Math.abs(
1481 groups[i].top-top
1482 )<=ROW_TOLERANCE
1483 ){
1484 group=groups[i];
1485 break;
1486 }
1487 }
1488
1489 if(!group){
1490 group={
1491 top:top,
1492 items:[]
1493 };
1494 groups.push(group);
1495 }
1496
1497 group.items.push(child);
1498 });
1499
1500 groups.forEach(function(group){
1501 if(group.items.length<2){
1502 return;
1503 }
1504
1505 var maxHeight=0;
1506
1507 group.items.forEach(function(item){
1508 maxHeight=
1509 Math.max(
1510 maxHeight,
1511 item
1512 .getBoundingClientRect()
1513 .height
1514 );
1515 });
1516
1517 maxHeight=
1518 Math.ceil(maxHeight);
1519
1520 group.items.forEach(function(item){
1521 saveStyle(
1522 item,
1523 originalHeight,
1524 "min-height"
1525 );
1526
1527 item.style.setProperty(
1528 "min-height",
1529 maxHeight+"px"
1530 );
1531
1532 item.setAttribute(
1533 "data-sn-master-equal-height",
1534 "1"
1535 );
1536
1537 managedHeight.add(item);
1538 });
1539 });
1540 });
1541 });
1542 }
1543
1544 /* =======================================================
1545 RUN / RESPONSIVE SCHEDULING
1546 ======================================================= */
1547
1548 function run(){
1549 if(running)return;
1550
1551 running=true;
1552
1553 try{
1554 resetRuntime();
1555 applyPlaceholderBadge();
1556 propagateDetailAccents();
1557
1558 var headers=
1559 applyOverviewPalette();
1560
1561 makeThreeLineAreaLabels();
1562 makeFilledRedOrangeCTAsBorderless();
1563
1564 if(
1565 window.innerWidth>
1566 MOBILE_MAX
1567 ){
1568 alignOverviewCards(
1569 headers
1570 );
1571
1572 equaliseDetailGrids();
1573 }
1574 }finally{
1575 running=false;
1576 }
1577 }
1578
1579 function onResize(){
1580 if(resizeTimer){
1581 clearTimeout(
1582 resizeTimer
1583 );
1584 }
1585
1586 resizeTimer=
1587 setTimeout(
1588 function(){
1589 resizeTimer=0;
1590 run();
1591 },
1592 RESIZE_DEBOUNCE
1593 );
1594 }
1595
1596 async function waitForReady(){
1597 if(
1598 document.readyState!=="complete"
1599 ){
1600 await new Promise(function(resolve){
1601 window.addEventListener(
1602 "load",
1603 resolve,
1604 {once:true}
1605 );
1606 });
1607 }
1608
1609 if(
1610 document.fonts&&
1611 document.fonts.ready
1612 ){
1613 try{
1614 await document.fonts.ready;
1615 }catch(error){}
1616 }
1617
1618 var images=
1619 Array.from(
1620 root.querySelectorAll("img")
1621 );
1622
1623 await Promise.all(
1624 images.map(function(img){
1625 if(img.complete){
1626 return Promise.resolve();
1627 }
1628
1629 return new Promise(function(resolve){
1630 var done=function(){
1631 resolve();
1632 };
1633
1634 img.addEventListener(
1635 "load",
1636 done,
1637 {once:true}
1638 );
1639
1640 img.addEventListener(
1641 "error",
1642 done,
1643 {once:true}
1644 );
1645 });
1646 })
1647 );
1648
1649 run();
1650 }
1651
1652 window.addEventListener(
1653 "resize",
1654 onResize,
1655 {passive:true}
1656 );
1657
1658 waitForReady();
1659 })();
1660 </script>
1661
1662 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1663 {{/html}}