Version 5.14 by Veronika Kocher on Friday, 04 Sep 2026 14:23

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_TRAINING_WORKSHOPS_INCLUDE_V1_START -->
255 {{include reference="Service Navigator.Art & Research Services Navigator.Code.TrainingWorkshopsBlock" author="target" /}}
256 <!-- ARSN_TRAINING_WORKSHOPS_INCLUDE_V1_END -->
257
258 <!-- ARSN_PRACTICAL_RESOURCES_FALLBACK_V1_START -->
259 {{include reference="Service Navigator.Art & Research Services Navigator.Code.PracticalResourcesFallbackBlock" author="target" /}}
260 <!-- ARSN_PRACTICAL_RESOURCES_FALLBACK_V1_END -->
261
262 <!-- ARSN_SEARCH_TERMS_START -->
263 <details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6">
264 <summary style="cursor:pointer;color:#6a655e;font-size:13px">Search terms &amp; related topics</summary>
265 <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>
266 </details>
267 <!-- ARSN_SEARCH_TERMS_END -->
268
269 </div>
270 {{/html}}
271
272 {{html clean="false"}}
273 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
274
275 <style data-sn-service-navigator-master="1">
276 /* =========================================================
277 MASTER TYPOGRAPHY
278 ========================================================= */
279 #xwikicontent h1,
280 #xwikicontent h2,
281 #xwikicontent h3,
282 #xwikicontent h4,
283 #xwikicontent h5,
284 #xwikicontent h6,
285 #xwikicontent .box-title,
286 #xwikicontent [role="heading"],
287 #xwikicontent h1 a,
288 #xwikicontent h2 a,
289 #xwikicontent h3 a,
290 #xwikicontent h4 a,
291 #xwikicontent h5 a,
292 #xwikicontent h6 a,
293 #xwikicontent .box-title a,
294 #xwikicontent [role="heading"] a{
295 text-align:left!important;
296 text-justify:auto!important;
297 word-spacing:normal!important;
298 }
299
300 /* =========================================================
301 COMING SOON / IN VORBEREITUNG
302 ========================================================= */
303 .sn-coming-soon-badge{
304 display:inline-block;
305 vertical-align:middle;
306 margin-left:10px;
307 padding:4px 8px;
308 border-radius:14px;
309 border:1px solid #efd9cc;
310 background:#fff4ee;
311 color:#8a4d36;
312 font-size:11px;
313 font-weight:700;
314 letter-spacing:.055em;
315 line-height:1.2;
316 white-space:nowrap;
317 }
318
319 /* =========================================================
320 NATIVE / DETAIL CALLOUT GEOMETRY
321 Preserve existing backgrounds.
322 ========================================================= */
323 #xwikicontent .arsn-info,
324 #xwikicontent .dmp-info,
325 #xwikicontent .ido-info,
326 #xwikicontent .pp-info,
327 #xwikicontent .infomessage{
328 box-sizing:border-box!important;
329 border-left:4px solid #21b6d7!important;
330 border-radius:8px;
331 text-align:left!important;
332 word-spacing:normal!important;
333 }
334
335 #xwikicontent .arsn-warn,
336 #xwikicontent .dmp-warn,
337 #xwikicontent .ido-warn,
338 #xwikicontent .pp-warn,
339 #xwikicontent .warn,
340 #xwikicontent .warning,
341 #xwikicontent .warningmessage,
342 #xwikicontent .errormessage{
343 box-sizing:border-box!important;
344 border-left:4px solid #e94b13!important;
345 border-radius:8px;
346 text-align:left!important;
347 word-spacing:normal!important;
348 }
349
350 [data-sn-master-equal-height],
351 [data-sn-master-first-row]{
352 box-sizing:border-box;
353 }
354
355 /* =========================================================
356 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
357 ========================================================= */
358 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
359 display:grid!important;
360 grid-template-columns:minmax(0,1fr)!important;
361 grid-auto-rows:auto!important;
362 width:100%!important;
363 max-width:none!important;
364 box-sizing:border-box!important;
365 justify-items:start!important;
366 align-items:start!important;
367 gap:2px!important;
368 text-align:left!important;
369 text-align-last:left!important;
370 text-justify:auto!important;
371 word-spacing:normal!important;
372 white-space:normal!important;
373 }
374 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
375 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
376 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
377 display:block!important;
378 width:100%!important;
379 margin:0!important;
380 text-align:left!important;
381 text-align-last:left!important;
382 text-justify:auto!important;
383 word-spacing:normal!important;
384 white-space:normal!important;
385 }
386 </style>
387
388 <script data-sn-service-navigator-master="1">
389 (function(){
390 "use strict";
391
392 var PAGE_KIND="detail";
393 var PLACEHOLDER=false;
394 var PLACEHOLDER_LABEL="COMING SOON";
395
396 var MOBILE_MAX=767;
397 var ROW_TOLERANCE=6;
398 var RESIZE_DEBOUNCE=220;
399
400 var root=
401 document.getElementById("xwikicontent")||
402 document.querySelector(".xwiki-rendering-content")||
403 document.querySelector("main")||
404 document.body;
405
406 if(!root)return;
407
408 var managedHeight=new Set();
409 var managedMargin=new Set();
410 var originalHeight=new WeakMap();
411 var originalMargin=new WeakMap();
412
413 var resizeTimer=0;
414 var running=false;
415
416 var THEMES=[
417 {
418 name:"BLUE",
419 accent:"#21b6d7",
420 bg:"#eaf7fb",
421 text:"#315d68",
422 labels:[
423 "HIER STARTEN",
424 "ENTSCHEIDEN",
425 "ÜBERPRÜFEN & ANPASSEN",
426 "START HERE",
427 "DECIDE",
428 "REVIEW & ADAPT"
429 ]
430 },
431 {
432 name:"RED",
433 accent:"#e94b13",
434 bg:"#fff1ec",
435 text:"#8a4d36",
436 labels:[
437 "PLANEN & ORGANISIEREN",
438 "ORGANISIEREN & DOKUMENTIEREN",
439 "PUBLIZIEREN & PRÄSENTIEREN",
440 "PLAN & ORGANISE",
441 "PLAN & ORGANIZE",
442 "ORGANISE & DOCUMENT",
443 "ORGANIZE & DOCUMENT",
444 "PUBLISH & PRESENT"
445 ]
446 },
447 {
448 name:"YELLOW",
449 accent:"#f0aa00",
450 bg:"#fff8e7",
451 text:"#785b17",
452 labels:[
453 "SCHÜTZEN & KLÄREN",
454 "STANDARDISIEREN & IDENTIFIZIEREN",
455 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
456 "PROTECT & CLARIFY",
457 "STANDARDISE & IDENTIFY",
458 "STANDARDIZE & IDENTIFY",
459 "OPEN, REUSE & MAKE FINDABLE"
460 ]
461 },
462 {
463 name:"GREEN",
464 accent:"#38b76a",
465 bg:"#edf9f1",
466 text:"#3f7451",
467 labels:[
468 "INFRASTRUKTUR EINRICHTEN",
469 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
470 "SPEICHERN & ZUGRIFF STEUERN",
471 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
472 "SET UP INFRASTRUCTURE",
473 "SET UP INFRASTRUCTURE & COLLABORATION",
474 "STORE & CONTROL ACCESS",
475 "REPOSITORY, PRESERVE & HAND OVER"
476 ]
477 }
478 ];
479
480 function num(value){
481 var n=parseFloat(value);
482 return Number.isFinite(n)?n:0;
483 }
484
485 function norm(value){
486 return String(value||"")
487 .replace(/\s+/g," ")
488 .trim()
489 .toUpperCase();
490 }
491
492 function visible(el){
493 if(!el||el.nodeType!==1)return false;
494
495 var style=getComputedStyle(el);
496 var rect=el.getBoundingClientRect();
497
498 return (
499 style.display!=="none"&&
500 style.visibility!=="hidden"&&
501 rect.width>20&&
502 rect.height>4
503 );
504 }
505
506 function saveStyle(el,map,property){
507 if(map.has(el))return;
508
509 map.set(el,{
510 value:el.style.getPropertyValue(property),
511 priority:el.style.getPropertyPriority(property)
512 });
513 }
514
515 function restoreStyle(el,map,property){
516 var original=map.get(el);
517
518 if(original&&original.value){
519 el.style.setProperty(
520 property,
521 original.value,
522 original.priority||""
523 );
524 }else{
525 el.style.removeProperty(property);
526 }
527 }
528
529 function resetRuntime(){
530 managedHeight.forEach(function(el){
531 restoreStyle(
532 el,
533 originalHeight,
534 "min-height"
535 );
536 el.removeAttribute(
537 "data-sn-master-equal-height"
538 );
539 });
540
541 managedMargin.forEach(function(el){
542 restoreStyle(
543 el,
544 originalMargin,
545 "margin-top"
546 );
547 el.removeAttribute(
548 "data-sn-master-first-row"
549 );
550 });
551
552 managedHeight.clear();
553 managedMargin.clear();
554 }
555
556 function themeFor(text){
557 var value=norm(text);
558
559 for(var i=0;i<THEMES.length;i++){
560 for(var j=0;j<THEMES[i].labels.length;j++){
561 var label=THEMES[i].labels[j];
562
563 if(
564 value===label||
565 value.indexOf(label+" ")===0||
566 value.indexOf(label+" -")===0||
567 value.indexOf(label+" ·")===0
568 ){
569 return THEMES[i];
570 }
571 }
572 }
573
574 return null;
575 }
576
577 /* =======================================================
578 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
579 ======================================================= */
580
581 function colourDistance(a,b){
582 return Math.sqrt(
583 Math.pow(a[0]-b[0],2)+
584 Math.pow(a[1]-b[1],2)+
585 Math.pow(a[2]-b[2],2)
586 );
587 }
588
589 function makeFilledRedOrangeCTAsBorderless(){
590 var RED_ORANGE=[233,75,19];
591
592 Array.from(
593 root.querySelectorAll(
594 'a,button,[role="button"],input[type="submit"],input[type="button"]'
595 )
596 ).forEach(function(el){
597 if(!visible(el))return;
598
599 var style=getComputedStyle(el);
600 var rgb=parseRGB(style.backgroundColor);
601
602 if(!rgb)return;
603
604 if(
605 colourDistance(
606 rgb,
607 RED_ORANGE
608 )>55
609 ){
610 return;
611 }
612
613 var rect=el.getBoundingClientRect();
614
615 if(
616 rect.width<80||
617 rect.height<24
618 ){
619 return;
620 }
621
622 el.style.setProperty(
623 "border",
624 "none",
625 "important"
626 );
627
628 el.style.setProperty(
629 "border-left",
630 "none",
631 "important"
632 );
633
634 el.style.setProperty(
635 "border-top",
636 "none",
637 "important"
638 );
639
640 el.style.setProperty(
641 "border-right",
642 "none",
643 "important"
644 );
645
646 el.style.setProperty(
647 "border-bottom",
648 "none",
649 "important"
650 );
651
652 el.style.setProperty(
653 "box-shadow",
654 "none",
655 "important"
656 );
657 });
658 }
659
660 /* =======================================================
661 FULL-WIDTH THREE-LINE AREA LABELS
662 ======================================================= */
663
664 function compactText(value){
665 return String(value||"")
666 .replace(/\s+/g," ")
667 .trim();
668 }
669
670 function makeThreeLineAreaLabels(){
671 Array.from(
672 root.querySelectorAll(
673 ".arsn-area-label"
674 )
675 ).forEach(function(label){
676 if(
677 label.getAttribute(
678 "data-sn-three-line"
679 )==="1"
680 ){
681 return;
682 }
683
684 var number=
685 label.querySelector(
686 ":scope > .arsn-area-number"
687 );
688
689 var action=
690 label.querySelector(
691 ":scope > .arsn-area-action"
692 );
693
694 if(
695 !number||
696 !action
697 ){
698 return;
699 }
700
701 var clone=
702 label.cloneNode(true);
703
704 var cloneNumber=
705 clone.querySelector(
706 ":scope > .arsn-area-number"
707 );
708
709 var cloneAction=
710 clone.querySelector(
711 ":scope > .arsn-area-action"
712 );
713
714 if(cloneNumber){
715 cloneNumber.remove();
716 }
717
718 if(cloneAction){
719 cloneAction.remove();
720 }
721
722 var titleText=
723 compactText(
724 clone.textContent
725 );
726
727 if(!titleText){
728 return;
729 }
730
731 var numberNode=
732 number.cloneNode(true);
733
734 var actionNode=
735 action.cloneNode(true);
736
737 var titleNode=
738 document.createElement(
739 "span"
740 );
741
742 titleNode.className=
743 "sn-area-label-title";
744
745 titleNode.textContent=
746 titleText;
747
748 while(label.firstChild){
749 label.removeChild(
750 label.firstChild
751 );
752 }
753
754 label.appendChild(
755 numberNode
756 );
757
758 label.appendChild(
759 titleNode
760 );
761
762 label.appendChild(
763 actionNode
764 );
765
766 label.setAttribute(
767 "data-sn-three-line",
768 "1"
769 );
770
771 var head=
772 label.closest(
773 ".arsn-area-head"
774 );
775
776 if(head){
777 head.style.setProperty(
778 "width",
779 "100%",
780 "important"
781 );
782
783 head.style.setProperty(
784 "max-width",
785 "100%",
786 "important"
787 );
788
789 head.style.setProperty(
790 "box-sizing",
791 "border-box",
792 "important"
793 );
794 }
795 });
796 }
797
798 /* =======================================================
799 PLACEHOLDER BADGE
800 ======================================================= */
801
802 function applyPlaceholderBadge(){
803 if(!PLACEHOLDER)return;
804
805 if(
806 document.querySelector(
807 ".sn-coming-soon-badge"
808 )
809 ){
810 return;
811 }
812
813 var title=
814 document.querySelector(
815 "#document-title"
816 )||
817 document.querySelector(
818 "h1"
819 );
820
821 if(!title)return;
822
823 var badge=
824 document.createElement(
825 "span"
826 );
827
828 badge.className=
829 "sn-coming-soon-badge";
830
831 badge.textContent=
832 PLACEHOLDER_LABEL;
833
834 badge.setAttribute(
835 "aria-label",
836 PLACEHOLDER_LABEL
837 );
838
839 title.appendChild(
840 badge
841 );
842 }
843
844 /* =======================================================
845 DETAIL PAGE OWN-ACCENT PROPAGATION
846 ======================================================= */
847
848 function parseRGB(value){
849 var match=String(value||"").match(
850 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
851 );
852
853 if(!match)return null;
854
855 return [
856 Number(match[1]),
857 Number(match[2]),
858 Number(match[3])
859 ];
860 }
861
862 function distance(a,b){
863 return Math.sqrt(
864 Math.pow(a[0]-b[0],2)+
865 Math.pow(a[1]-b[1],2)+
866 Math.pow(a[2]-b[2],2)
867 );
868 }
869
870 function paletteMatch(cssColor){
871 var rgb=parseRGB(cssColor);
872
873 if(!rgb)return null;
874
875 var palette=[
876 {hex:"#21b6d7",rgb:[33,182,215]},
877 {hex:"#e94b13",rgb:[233,75,19]},
878 {hex:"#f0aa00",rgb:[240,170,0]},
879 {hex:"#38b76a",rgb:[56,183,106]}
880 ];
881
882 var best=null;
883 var bestDistance=Infinity;
884
885 palette.forEach(function(item){
886 var d=distance(rgb,item.rgb);
887
888 if(d<bestDistance){
889 best=item;
890 bestDistance=d;
891 }
892 });
893
894 return bestDistance<=30
895 ?best
896 :null;
897 }
898
899 function propagateDetailAccents(){
900 if(PAGE_KIND!=="detail")return;
901
902 Array.from(
903 root.querySelectorAll(
904 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
905 ".arsn-source,.dmp-source,.ido-source,.pp-source"
906 )
907 ).forEach(function(el){
908 if(!visible(el))return;
909
910 var style=getComputedStyle(el);
911
912 if(
913 num(style.borderTopWidth)>=2
914 ){
915 var match=
916 paletteMatch(
917 style.borderTopColor
918 );
919
920 if(match){
921 el.style.setProperty(
922 "border-left",
923 "4px solid "+match.hex,
924 "important"
925 );
926 }
927 }
928 });
929
930 // Warning families: explicit safety override.
931 Array.from(
932 root.querySelectorAll(
933 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
934 ".warn,.warning,.warningmessage,.errormessage"
935 )
936 ).forEach(function(el){
937 if(!visible(el))return;
938
939 el.style.setProperty(
940 "border-left",
941 "4px solid #e94b13",
942 "important"
943 );
944 });
945
946 // Info families: explicit orientation override.
947 Array.from(
948 root.querySelectorAll(
949 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
950 )
951 ).forEach(function(el){
952 if(!visible(el))return;
953
954 el.style.setProperty(
955 "border-left",
956 "4px solid #21b6d7",
957 "important"
958 );
959 });
960 }
961
962 /* =======================================================
963 OVERVIEW SEMANTIC THEME PALETTE
964 ======================================================= */
965
966 function smallestThemeHeaders(){
967 return Array.from(
968 root.querySelectorAll(
969 "div,span,p,strong,h3,h4,h5,h6"
970 )
971 ).filter(function(el){
972 if(!visible(el))return false;
973 if(!themeFor(el.textContent))return false;
974
975 return !Array.from(
976 el.children||[]
977 ).some(function(child){
978 return !!themeFor(
979 child.textContent
980 );
981 });
982 });
983 }
984
985 function findOverviewCard(header){
986 var node=header.parentElement;
987 var candidates=[];
988
989 while(node&&node!==root){
990 var rect=node.getBoundingClientRect();
991 var style=getComputedStyle(node);
992
993 var border=
994 num(style.borderTopWidth)+
995 num(style.borderRightWidth)+
996 num(style.borderBottomWidth)+
997 num(style.borderLeftWidth);
998
999 if(
1000 rect.width>=220&&
1001 rect.width<=800&&
1002 rect.height>=120&&
1003 border>=1
1004 ){
1005 candidates.push(node);
1006 }
1007
1008 node=node.parentElement;
1009 }
1010
1011 if(!candidates.length)return null;
1012
1013 candidates.sort(function(a,b){
1014 return (
1015 b.getBoundingClientRect().height-
1016 a.getBoundingClientRect().height
1017 );
1018 });
1019
1020 return candidates[0];
1021 }
1022
1023 function rowCandidates(link,card){
1024 var result=[];
1025 var cardRect=
1026 card.getBoundingClientRect();
1027
1028 var node=link;
1029
1030 while(node&&node!==card){
1031 if(visible(node)){
1032 var rect=
1033 node.getBoundingClientRect();
1034
1035 if(
1036 rect.height<=105&&
1037 rect.width>=
1038 cardRect.width*.50&&
1039 rect.width<=
1040 cardRect.width*1.03
1041 ){
1042 result.push(node);
1043 }
1044 }
1045
1046 node=node.parentElement;
1047 }
1048
1049 return result;
1050 }
1051
1052 function chooseOuterRow(
1053 candidates,
1054 link
1055 ){
1056 if(!candidates.length){
1057 return link;
1058 }
1059
1060 var bordered=
1061 candidates.filter(function(el){
1062 return (
1063 num(
1064 getComputedStyle(el)
1065 .borderLeftWidth
1066 )>=1
1067 );
1068 });
1069
1070 var pool=
1071 bordered.length
1072 ?bordered
1073 :candidates;
1074
1075 pool.sort(function(a,b){
1076 var ar=
1077 a.getBoundingClientRect();
1078
1079 var br=
1080 b.getBoundingClientRect();
1081
1082 return (
1083 ar.left-br.left||
1084 br.width-ar.width
1085 );
1086 });
1087
1088 return pool[0]||link;
1089 }
1090
1091 function applyOverviewPalette(){
1092 if(PAGE_KIND!=="overview"){
1093 return [];
1094 }
1095
1096 var headers=
1097 smallestThemeHeaders()
1098 .map(function(el){
1099 return {
1100 el:el,
1101 theme:
1102 themeFor(
1103 el.textContent
1104 ),
1105 card:
1106 findOverviewCard(
1107 el
1108 )
1109 };
1110 })
1111 .filter(function(row){
1112 return !!row.card;
1113 });
1114
1115 var unique=[];
1116 var seenHeaders=new Set();
1117
1118 headers.forEach(function(row){
1119 var key=
1120 row.theme.name+
1121 "|"+
1122 Math.round(
1123 row.card
1124 .getBoundingClientRect()
1125 .left
1126 )+
1127 "|"+
1128 Math.round(
1129 row.el
1130 .getBoundingClientRect()
1131 .top
1132 );
1133
1134 if(!seenHeaders.has(key)){
1135 seenHeaders.add(key);
1136 unique.push(row);
1137 }
1138 });
1139
1140 unique.forEach(function(row){
1141 var headerRect=
1142 row.el
1143 .getBoundingClientRect();
1144
1145 row.el.style.setProperty(
1146 "background",
1147 row.theme.bg,
1148 "important"
1149 );
1150
1151 row.el.style.setProperty(
1152 "color",
1153 row.theme.text,
1154 "important"
1155 );
1156
1157 row.el.style.setProperty(
1158 "text-align",
1159 "left",
1160 "important"
1161 );
1162
1163 row.el.style.setProperty(
1164 "word-spacing",
1165 "normal",
1166 "important"
1167 );
1168
1169 var later=
1170 unique
1171 .filter(function(other){
1172 return (
1173 other.card===row.card&&
1174 other.el
1175 .getBoundingClientRect()
1176 .top>
1177 headerRect.top+2
1178 );
1179 })
1180 .sort(function(a,b){
1181 return (
1182 a.el
1183 .getBoundingClientRect()
1184 .top-
1185 b.el
1186 .getBoundingClientRect()
1187 .top
1188 );
1189 });
1190
1191 var stopTop=
1192 later.length
1193 ?later[0].el
1194 .getBoundingClientRect()
1195 .top
1196 :Infinity;
1197
1198 Array.from(
1199 row.card.querySelectorAll("a")
1200 ).forEach(function(link){
1201 if(!visible(link))return;
1202
1203 var rect=
1204 link.getBoundingClientRect();
1205
1206 if(
1207 rect.top<=
1208 headerRect.bottom-2||
1209 rect.top>=
1210 stopTop-2
1211 ){
1212 return;
1213 }
1214
1215 var candidates=
1216 rowCandidates(
1217 link,
1218 row.card
1219 );
1220
1221 var target=
1222 chooseOuterRow(
1223 candidates,
1224 link
1225 );
1226
1227 candidates.forEach(function(el){
1228 el.style.setProperty(
1229 "border-left",
1230 "0 solid transparent",
1231 "important"
1232 );
1233 });
1234
1235 target.style.setProperty(
1236 "border-left",
1237 "3px solid "+
1238 row.theme.accent,
1239 "important"
1240 );
1241
1242 target.style.setProperty(
1243 "box-sizing",
1244 "border-box",
1245 "important"
1246 );
1247 });
1248 });
1249
1250 return unique;
1251 }
1252
1253 /* =======================================================
1254 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1255 ======================================================= */
1256
1257 function alignOverviewCards(headers){
1258 if(
1259 PAGE_KIND!=="overview"||
1260 window.innerWidth<=MOBILE_MAX
1261 ){
1262 return;
1263 }
1264
1265 var cards=[];
1266 var seen=new Set();
1267
1268 headers.forEach(function(row){
1269 if(!seen.has(row.card)){
1270 seen.add(row.card);
1271 cards.push(row.card);
1272 }
1273 });
1274
1275 if(cards.length<2){
1276 return;
1277 }
1278
1279 // Group cards by actual top position.
1280 var groups=[];
1281
1282 cards.forEach(function(card){
1283 var top=
1284 card.getBoundingClientRect().top;
1285
1286 var group=null;
1287
1288 for(var i=0;i<groups.length;i++){
1289 if(
1290 Math.abs(
1291 groups[i].top-top
1292 )<=ROW_TOLERANCE
1293 ){
1294 group=groups[i];
1295 break;
1296 }
1297 }
1298
1299 if(!group){
1300 group={
1301 top:top,
1302 cards:[]
1303 };
1304 groups.push(group);
1305 }
1306
1307 group.cards.push(card);
1308 });
1309
1310 groups.forEach(function(group){
1311 if(group.cards.length<2){
1312 return;
1313 }
1314
1315 var firstHeaders=
1316 group.cards.map(function(card){
1317 var candidates=
1318 headers
1319 .filter(function(row){
1320 return row.card===card;
1321 })
1322 .sort(function(a,b){
1323 return (
1324 a.el
1325 .getBoundingClientRect()
1326 .top-
1327 b.el
1328 .getBoundingClientRect()
1329 .top
1330 );
1331 });
1332
1333 return candidates.length
1334 ?candidates[0]
1335 :null;
1336 });
1337
1338 if(
1339 !firstHeaders.some(function(row){
1340 return !row;
1341 })
1342 ){
1343 var targetTop=
1344 Math.max.apply(
1345 Math,
1346 firstHeaders.map(function(row){
1347 return (
1348 row.el
1349 .getBoundingClientRect()
1350 .top-
1351 row.card
1352 .getBoundingClientRect()
1353 .top
1354 );
1355 })
1356 );
1357
1358 firstHeaders.forEach(function(row){
1359 var relativeTop=
1360 row.el
1361 .getBoundingClientRect()
1362 .top-
1363 row.card
1364 .getBoundingClientRect()
1365 .top;
1366
1367 var delta=
1368 targetTop-relativeTop;
1369
1370 if(delta>1){
1371 saveStyle(
1372 row.el,
1373 originalMargin,
1374 "margin-top"
1375 );
1376
1377 var current=
1378 num(
1379 getComputedStyle(
1380 row.el
1381 ).marginTop
1382 );
1383
1384 row.el.style.setProperty(
1385 "margin-top",
1386 (
1387 current+delta
1388 )+"px"
1389 );
1390
1391 row.el.setAttribute(
1392 "data-sn-master-first-row",
1393 "1"
1394 );
1395
1396 managedMargin.add(
1397 row.el
1398 );
1399 }
1400 });
1401 }
1402
1403 var maxHeight=0;
1404
1405 group.cards.forEach(function(card){
1406 maxHeight=
1407 Math.max(
1408 maxHeight,
1409 card
1410 .getBoundingClientRect()
1411 .height
1412 );
1413 });
1414
1415 maxHeight=
1416 Math.ceil(maxHeight);
1417
1418 group.cards.forEach(function(card){
1419 saveStyle(
1420 card,
1421 originalHeight,
1422 "min-height"
1423 );
1424
1425 card.style.setProperty(
1426 "min-height",
1427 maxHeight+"px"
1428 );
1429
1430 card.setAttribute(
1431 "data-sn-master-equal-height",
1432 "1"
1433 );
1434
1435 managedHeight.add(
1436 card
1437 );
1438 });
1439 });
1440 }
1441
1442 /* =======================================================
1443 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1444 ======================================================= */
1445
1446 function equaliseDetailGrids(){
1447 if(
1448 PAGE_KIND!=="detail"||
1449 window.innerWidth<=MOBILE_MAX
1450 ){
1451 return;
1452 }
1453
1454 var selectors=[
1455 ".arsn-grid",
1456 ".arsn-grid-2",
1457 ".arsn-grid-3",
1458 ".dmp-grid",
1459 ".ido-grid",
1460 ".pp-grid"
1461 ];
1462
1463 selectors.forEach(function(selector){
1464 Array.from(
1465 root.querySelectorAll(selector)
1466 ).forEach(function(grid){
1467 var children=
1468 Array.from(
1469 grid.children||[]
1470 ).filter(visible);
1471
1472 if(children.length<2){
1473 return;
1474 }
1475
1476 var groups=[];
1477
1478 children.forEach(function(child){
1479 var top=
1480 child
1481 .getBoundingClientRect()
1482 .top;
1483
1484 var group=null;
1485
1486 for(var i=0;i<groups.length;i++){
1487 if(
1488 Math.abs(
1489 groups[i].top-top
1490 )<=ROW_TOLERANCE
1491 ){
1492 group=groups[i];
1493 break;
1494 }
1495 }
1496
1497 if(!group){
1498 group={
1499 top:top,
1500 items:[]
1501 };
1502 groups.push(group);
1503 }
1504
1505 group.items.push(child);
1506 });
1507
1508 groups.forEach(function(group){
1509 if(group.items.length<2){
1510 return;
1511 }
1512
1513 var maxHeight=0;
1514
1515 group.items.forEach(function(item){
1516 maxHeight=
1517 Math.max(
1518 maxHeight,
1519 item
1520 .getBoundingClientRect()
1521 .height
1522 );
1523 });
1524
1525 maxHeight=
1526 Math.ceil(maxHeight);
1527
1528 group.items.forEach(function(item){
1529 saveStyle(
1530 item,
1531 originalHeight,
1532 "min-height"
1533 );
1534
1535 item.style.setProperty(
1536 "min-height",
1537 maxHeight+"px"
1538 );
1539
1540 item.setAttribute(
1541 "data-sn-master-equal-height",
1542 "1"
1543 );
1544
1545 managedHeight.add(item);
1546 });
1547 });
1548 });
1549 });
1550 }
1551
1552 /* =======================================================
1553 RUN / RESPONSIVE SCHEDULING
1554 ======================================================= */
1555
1556 function run(){
1557 if(running)return;
1558
1559 running=true;
1560
1561 try{
1562 resetRuntime();
1563 applyPlaceholderBadge();
1564 propagateDetailAccents();
1565
1566 var headers=
1567 applyOverviewPalette();
1568
1569 makeThreeLineAreaLabels();
1570 makeFilledRedOrangeCTAsBorderless();
1571
1572 if(
1573 window.innerWidth>
1574 MOBILE_MAX
1575 ){
1576 alignOverviewCards(
1577 headers
1578 );
1579
1580 equaliseDetailGrids();
1581 }
1582 }finally{
1583 running=false;
1584 }
1585 }
1586
1587 function onResize(){
1588 if(resizeTimer){
1589 clearTimeout(
1590 resizeTimer
1591 );
1592 }
1593
1594 resizeTimer=
1595 setTimeout(
1596 function(){
1597 resizeTimer=0;
1598 run();
1599 },
1600 RESIZE_DEBOUNCE
1601 );
1602 }
1603
1604 async function waitForReady(){
1605 if(
1606 document.readyState!=="complete"
1607 ){
1608 await new Promise(function(resolve){
1609 window.addEventListener(
1610 "load",
1611 resolve,
1612 {once:true}
1613 );
1614 });
1615 }
1616
1617 if(
1618 document.fonts&&
1619 document.fonts.ready
1620 ){
1621 try{
1622 await document.fonts.ready;
1623 }catch(error){}
1624 }
1625
1626 var images=
1627 Array.from(
1628 root.querySelectorAll("img")
1629 );
1630
1631 await Promise.all(
1632 images.map(function(img){
1633 if(img.complete){
1634 return Promise.resolve();
1635 }
1636
1637 return new Promise(function(resolve){
1638 var done=function(){
1639 resolve();
1640 };
1641
1642 img.addEventListener(
1643 "load",
1644 done,
1645 {once:true}
1646 );
1647
1648 img.addEventListener(
1649 "error",
1650 done,
1651 {once:true}
1652 );
1653 });
1654 })
1655 );
1656
1657 run();
1658 }
1659
1660 window.addEventListener(
1661 "resize",
1662 onResize,
1663 {passive:true}
1664 );
1665
1666 waitForReady();
1667 })();
1668 </script>
1669
1670 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1671 {{/html}}