Wiki source code of Prepare

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

Hide last authors
Veronika Kocher 22.1 1 {{html clean="false"}}
Veronika Kocher 28.1 2
Veronika Kocher 23.1 3 <style>
Veronika Kocher 28.1 4 .arsn-phase {
Veronika Kocher 23.1 5 max-width: 1400px;
6 margin: 0 auto;
7 color: #322f2b;
8 }
Veronika Kocher 16.1 9
Veronika Kocher 28.1 10 .arsn-phase * {
Veronika Kocher 23.1 11 box-sizing: border-box;
12 }
13
14 .arsn-eyebrow {
15 font-size: 12px;
16 font-weight: 700;
17 letter-spacing: .075em;
18 text-transform: uppercase;
19 }
20
21 .arsn-card {
22 border-radius: 11px;
23 box-shadow: 0 1px 3px rgba(0,0,0,.035);
24 }
25
Veronika Kocher 28.1 26 .arsn-hero-image {
27 height: 138px;
28 overflow: hidden;
29 border-radius: 11px 11px 0 0;
30 background: #f1eee9;
31 }
32
33 .arsn-hero-image img {
34 width: 100%;
35 height: 100%;
36 object-fit: cover;
37 display: block;
38 }
39
40 .arsn-progress {
41 position: relative;
42 display: grid;
43 grid-template-columns: repeat(3, minmax(0,1fr));
44 gap: 14px;
45 margin: 0 0 26px 0;
46 padding: 4px 0 0 0;
47 }
48
49 .arsn-progress:before {
50 content: "";
51 position: absolute;
52 top: 21px;
53 left: 9%;
54 right: 9%;
55 height: 2px;
56 background: #e9cfc2;
57 z-index: 0;
58 }
59
60 .arsn-step {
61 position: relative;
62 z-index: 1;
63 text-align: center;
64 }
65
66 .arsn-step-dot {
67 width: 14px;
68 height: 14px;
69 margin: 0 auto 7px auto;
70 border-radius: 50%;
71 border: 3px solid #fff;
72 box-shadow: 0 0 0 1px #d5cfc7;
73 background: #d8d2ca;
74 }
75
76 .arsn-step.active .arsn-step-dot {
77 background: #e94b13;
78 box-shadow: 0 0 0 1px #e94b13;
79 }
80
81 .arsn-step.done .arsn-step-dot {
82 background: #8c837a;
83 box-shadow: 0 0 0 1px #8c837a;
84 }
85
86 .arsn-step-label {
87 font-size: 11px;
88 font-weight: 700;
89 letter-spacing: .06em;
90 color: #746d65;
91 }
92
93 .arsn-step.active .arsn-step-label {
94 color: #7d4a37;
95 }
96
97 .arsn-step-desc {
98 margin-top: 3px;
99 font-size: 13px;
100 color: #6a655e;
101 }
102
103 .arsn-focus-grid {
104 display: grid;
105 grid-template-columns: repeat(3, minmax(230px,1fr));
106 gap: 12px;
107 }
108
109 .arsn-focus-group {
110 padding: 13px 14px;
111 background: rgba(255,255,255,.52);
112 border: 1px solid #cfe8ef;
113 border-radius: 8px;
114 }
115
116 .arsn-focus-group strong {
117 display: block;
118 margin-bottom: 6px;
119 color: #2f5661;
120 }
121
122 .arsn-focus-group ul {
123 margin: 0 0 0 17px;
124 padding: 0;
125 color: #365862;
126 }
127
128 .arsn-focus-group li {
129 margin: 4px 0;
130 }
131
132 .arsn-outcome-grid {
133 display: grid;
134 grid-template-columns: repeat(auto-fit, minmax(230px,1fr));
135 gap: 10px;
136 }
137
138 .arsn-outcome {
139 position: relative;
140 padding: 12px 13px 12px 36px;
141 background: #fcfbf8;
142 border: 1px solid #e3ded6;
143 border-radius: 8px;
144 color: #4f4a44;
145 }
146
147 .arsn-outcome:before {
148 content: "✓";
149 position: absolute;
150 left: 13px;
151 top: 10px;
152 color: #e94b13;
153 font-weight: 800;
154 }
155
Veronika Kocher 23.1 156 .arsn-area-grid {
157 display: grid;
Veronika Kocher 28.1 158 grid-template-columns: repeat(auto-fit, minmax(310px,1fr));
Veronika Kocher 23.1 159 gap: 18px;
160 align-items: stretch;
161 }
162
163 .arsn-area {
164 display: flex;
165 flex-direction: column;
166 overflow: hidden;
Veronika Kocher 24.1 167 border: 1px solid #e3ded6;
Veronika Kocher 23.1 168 border-radius: 11px;
Veronika Kocher 24.1 169 background: #fcfbf8;
Veronika Kocher 23.1 170 box-shadow: 0 1px 3px rgba(0,0,0,.035);
171 }
172
173 .arsn-area-head {
174 padding: 18px 19px 12px 19px;
175 }
176
177 .arsn-area-body {
178 padding: 3px 19px 19px 19px;
179 }
180
181 .arsn-area-label {
Veronika Kocher 28.1 182 display: inline-flex;
183 align-items: center;
184 gap: 7px;
Veronika Kocher 23.1 185 padding: 5px 8px;
186 margin-bottom: 9px;
187 border-radius: 5px;
188 font-size: 12px;
189 font-weight: 700;
190 letter-spacing: .065em;
191 }
192
Veronika Kocher 28.1 193 .arsn-area-number {
194 opacity: .72;
195 }
196
197 .arsn-area-action {
198 margin-left: 2px;
199 font-weight: 600;
200 opacity: .74;
201 letter-spacing: .02em;
202 text-transform: none;
203 }
204
Veronika Kocher 23.1 205 .arsn-area h4 {
206 font-size: 19px;
207 line-height: 1.3;
208 margin: 0 0 7px 0;
209 color: #2f2b27;
210 }
211
212 .arsn-area p {
213 margin: 0;
214 line-height: 1.5;
215 color: #625d56;
216 }
217
218 .arsn-topic {
219 display: block;
220 margin: 6px 0;
221 padding: 10px 11px;
Veronika Kocher 24.1 222 border: 1px solid #e9e4dc;
Veronika Kocher 23.1 223 border-radius: 6px;
Veronika Kocher 25.1 224 background: #fffdf9;
Veronika Kocher 23.1 225 color: #252321;
226 text-decoration: none;
227 font-weight: 600;
228 transition: transform .08s ease, box-shadow .08s ease, background .08s ease;
229 }
230
231 .arsn-topic:hover,
232 .arsn-topic:focus {
Veronika Kocher 25.1 233 background: #fff7f1;
Veronika Kocher 23.1 234 text-decoration: none;
235 transform: translateY(-1px);
236 box-shadow: 0 2px 5px rgba(0,0,0,.06);
237 }
238
239 .arsn-resource-grid {
240 display: grid;
241 grid-template-columns: repeat(auto-fit, minmax(230px,1fr));
242 gap: 12px;
243 }
244
Veronika Kocher 28.1 245 .arsn-related-grid {
246 display: grid;
247 grid-template-columns: repeat(auto-fit, minmax(260px,1fr));
248 gap: 8px;
249 }
250
251 .arsn-related-link {
252 display: block;
253 padding: 9px 10px;
254 border: 1px solid #e9e4dc;
255 border-left: 3px solid #e94b13;
256 border-radius: 6px;
257 background: #fffdf9;
258 color: #252321;
259 text-decoration: none;
260 font-weight: 600;
261 }
262
263 .arsn-related-link:hover,
264 .arsn-related-link:focus {
265 background: #fff7f1;
266 text-decoration: none;
267 }
268
269 .arsn-tip {
270 padding: 12px 15px;
271 border: 1px solid #c7e5ed;
272 border-left: 4px solid #21b6d7;
273 background: #eaf6f9;
274 border-radius: 7px;
275 color: #365e68;
276 font-size: 13px;
277 }
278
279 .arsn-tip strong {
280 color: #2d5661;
281 }
282
283 @media (max-width: 800px) {
Veronika Kocher 23.1 284 .arsn-focus-grid {
Veronika Kocher 28.1 285 grid-template-columns: 1fr;
Veronika Kocher 23.1 286 }
287 }
Veronika Kocher 28.1 288
289 @media (max-width: 700px) {
290 .arsn-progress:before {
291 display: none;
292 }
293 .arsn-progress {
294 grid-template-columns: 1fr;
295 gap: 8px;
296 }
297 .arsn-step {
298 text-align: left;
299 display: grid;
300 grid-template-columns: 24px 1fr;
301 column-gap: 8px;
302 align-items: center;
303 }
304 .arsn-step-dot {
305 margin: 0;
306 }
307 .arsn-step-desc {
308 grid-column: 2;
309 }
310 }
Veronika Kocher 23.1 311 </style>
312
Veronika Kocher 28.1 313 <div class="arsn-phase">
Veronika Kocher 23.1 314
Veronika Kocher 28.1 315 <section class="arsn-card" style="margin:0 0 18px 0;border:1px solid #e3ded6;border-left:6px solid #e94b13;background:#fcfbf8;overflow:hidden;">
316 <div class="arsn-hero-image">
Veronika Kocher 29.1 317 <img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Enable — planning and setting up an artistic or research project" />
Veronika Kocher 22.1 318 </div>
Veronika Kocher 28.1 319 <div style="padding:18px 22px 21px 22px;">
Veronika Kocher 30.2 320 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:6px;">PROJECT PHASE 1 · PREPARE</div>
Veronika Kocher 28.1 321 <h2 style="font-size:28px;line-height:1.18;margin:0 0 9px 0;color:#2c2926;">I develop my project idea — I plan, fund &amp; set up my project</h2>
322 <p style="font-size:15px;line-height:1.58;color:#5e5953;max-width:1080px;margin:0;">
323 Before active project work begins, clarify how the project will be organised, funded and supported,
324 what materials and research outputs are expected, and how rights, responsibilities, infrastructure
325 and data management will be handled from the start.
326 </p>
327 </div>
328 </section>
Veronika Kocher 16.1 329
Veronika Kocher 28.1 330 <div class="arsn-progress">
Veronika Kocher 16.1 331
Veronika Kocher 28.1 332 <div class="arsn-step active">
333 <div class="arsn-step-dot"></div>
Veronika Kocher 30.2 334 <div class="arsn-step-label">1 · PREPARE</div>
Veronika Kocher 28.1 335 <div class="arsn-step-desc">Plan & set up</div>
Veronika Kocher 22.1 336 </div>
Veronika Kocher 16.1 337
Veronika Kocher 28.1 338 <div class="arsn-step">
339 <div class="arsn-step-dot"></div>
340 <div class="arsn-step-label">2 · WORK & MANAGE</div>
341 <div class="arsn-step-desc">Run & document</div>
Veronika Kocher 22.1 342 </div>
Veronika Kocher 16.1 343
Veronika Kocher 28.1 344 <div class="arsn-step">
345 <div class="arsn-step-dot"></div>
346 <div class="arsn-step-label">3 · PUBLISH & SHARE</div>
347 <div class="arsn-step-desc">Publish, preserve & hand over</div>
Veronika Kocher 22.1 348 </div>
Veronika Kocher 28.1 349 </div>
Veronika Kocher 16.1 350
Veronika Kocher 28.1 351 <section class="arsn-card" style="margin:0 0 22px 0;padding:19px 21px;background:#eaf6f9;border:1px solid #cfe8ef;border-left:5px solid #21b6d7;">
Veronika Kocher 25.1 352 <div class="arsn-eyebrow" style="color:#3f6871;margin-bottom:5px;">RIGHT NOW</div>
353 <h3 style="font-size:22px;margin:0 0 8px 0;color:#2f4e56;">What should I be focusing on now?</h3>
Veronika Kocher 28.1 354 <p style="margin:0 0 15px 0;color:#49636a;">You do not need every detail fixed before you start. You do need enough shared decisions to make the project workable, responsible and easy to continue.</p>
Veronika Kocher 16.1 355
Veronika Kocher 28.1 356 <div class="arsn-focus-grid">
357 <div class="arsn-focus-group">
358 <strong>Project</strong>
359 <ul>
360 <li>What is the scope, and who is responsible for which decisions?</li>
361 <li>Which funding opportunities and funder requirements apply?</li>
362 <li>What data, materials and outputs will be created, collected or reused?</li>
363 <li>Do I need a Data Management Plan?</li>
364 </ul>
365 </div>
Veronika Kocher 17.1 366
Veronika Kocher 28.1 367 <div class="arsn-focus-group">
368 <strong>Rights & responsibilities</strong>
369 <ul>
370 <li>Which copyright, permissions or licences need to be clarified?</li>
371 <li>Will personal, sensitive, confidential or ethically complex materials be involved?</li>
372 <li>Which decisions should be documented from the beginning?</li>
373 <li>Who will be responsible for shared accounts, access and handover?</li>
374 </ul>
375 </div>
376
377 <div class="arsn-focus-group">
378 <strong>Working setup</strong>
379 <ul>
380 <li>How should files and folders be organised and named?</li>
381 <li>Where will materials be stored and backed up?</li>
382 <li>Who should have access?</li>
383 <li>Which infrastructure, services and tools are appropriate?</li>
384 </ul>
385 </div>
Veronika Kocher 22.1 386 </div>
387 </section>
Veronika Kocher 17.1 388
Veronika Kocher 28.1 389 <section style="margin:0 0 28px 0;">
390 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:5px;">BY THE END OF THIS PHASE</div>
391 <h3 style="font-size:21px;margin:0 0 10px 0;color:#35312d;">You should have a workable project setup</h3>
392 <div class="arsn-outcome-grid">
393 <div class="arsn-outcome">a clear project scope and named responsibilities</div>
394 <div class="arsn-outcome">a basic plan for data, materials and expected outputs</div>
395 <div class="arsn-outcome">key rights, ethics and protection issues identified</div>
396 <div class="arsn-outcome">agreed storage, backup, access and collaboration arrangements</div>
397 </div>
398 </section>
399
Veronika Kocher 23.1 400 <div style="margin:0 0 15px 0;">
Veronika Kocher 25.1 401 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">EXPLORE THIS PHASE</div>
Veronika Kocher 23.1 402 <h3 style="font-size:24px;margin:0 0 5px 0;color:#35312d;">Four areas to get your project ready</h3>
Veronika Kocher 28.1 403 <p style="margin:0;color:#6a655e;">Start with the area that matches what you need to decide or set up now.</p>
Veronika Kocher 22.1 404 </div>
Veronika Kocher 17.1 405
Veronika Kocher 23.1 406 <div class="arsn-area-grid" style="margin-bottom:30px;">
Veronika Kocher 26.1 407 <section class="arsn-area" style="border-top:4px solid #21b6d7;">
Veronika Kocher 23.1 408 <div class="arsn-area-head">
Veronika Kocher 28.1 409 <div class="arsn-area-label" style="background:#eaf6f9;color:#355f69;"><span class="arsn-area-number">01</span> START HERE <span class="arsn-area-action">· Orient</span></div>
Veronika Kocher 23.1 410 <h4>Orient yourself and choose the right level of setup</h4>
Veronika Kocher 28.1 411 <p>Use these pages if you are just starting out, unsure which topics apply, or need a practical minimum setup for a smaller project.</p>
Veronika Kocher 22.1 412 </div>
Veronika Kocher 23.1 413 <div class="arsn-area-body">
Veronika Kocher 28.1 414 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Get%20Started/" style="border-left:3px solid #21b6d7;">Get Started</a>
415 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Quick%20Start%20for%20Small%20Projects/" style="border-left:3px solid #21b6d7;">Quick Start for Small Projects</a>
Veronika Kocher 22.1 416 </div>
417 </section>
Veronika Kocher 16.1 418
Veronika Kocher 25.1 419 <section class="arsn-area" style="border-top:4px solid #e94b13;">
Veronika Kocher 23.1 420 <div class="arsn-area-head">
Veronika Kocher 28.1 421 <div class="arsn-area-label" style="background:#f7e6dd;color:#7b4430;"><span class="arsn-area-number">02</span> PLAN &amp; ORGANISE <span class="arsn-area-action">· Decide</span></div>
Veronika Kocher 23.1 422 <h4>Define what the project needs and how it will be organised</h4>
Veronika Kocher 28.1 423 <p>Clarify scope, responsibilities, funding conditions, expected materials and outputs, and the basic data-management approach before active work begins.</p>
Veronika Kocher 22.1 424 </div>
Veronika Kocher 23.1 425 <div class="arsn-area-body">
Veronika Kocher 28.1 426 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Project%20Planning%20%26%20Organisation/" style="border-left:3px solid #e94b13;">Project Planning &amp; Organisation</a>
427 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Funding%20%26%20Funder%20Requirements/" style="border-left:3px solid #e94b13;">Funding &amp; Funder Requirements</a>
428 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Identify%20Your%20Data%20%26%20Research%20Outputs/" style="border-left:3px solid #e94b13;">Identify Your Data &amp; Research Outputs</a>
429 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Plan%20Your%20Data%20Management/" style="border-left:3px solid #e94b13;">Plan Your Data Management</a>
430 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/File%20Organisation%20%26%20Naming/" style="border-left:3px solid #e94b13;">File Organisation &amp; Naming</a>
Veronika Kocher 22.1 431 </div>
432 </section>
433
Veronika Kocher 26.1 434 <section class="arsn-area" style="border-top:4px solid #f0aa00;">
Veronika Kocher 23.1 435 <div class="arsn-area-head">
Veronika Kocher 28.1 436 <div class="arsn-area-label" style="background:#fff3d5;color:#7a5b12;"><span class="arsn-area-number">03</span> PROTECT &amp; CLARIFY <span class="arsn-area-action">· Check</span></div>
Veronika Kocher 23.1 437 <h4>Clarify rights, permissions, protection needs and responsibilities</h4>
Veronika Kocher 28.1 438 <p>Identify legal, ethical or data-protection issues early enough to obtain permissions, make agreements and avoid unnecessary restrictions later.</p>
Veronika Kocher 22.1 439 </div>
Veronika Kocher 23.1 440 <div class="arsn-area-body">
Veronika Kocher 28.1 441 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Copyright%2C%20Rights%20%26%20Licences/" style="border-left:3px solid #f0aa00;">Copyright, Rights &amp; Licences</a>
442 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Data%20Protection%20%26%20Ethics/" style="border-left:3px solid #f0aa00;">Data Protection &amp; Ethics</a>
Veronika Kocher 22.1 443 </div>
444 </section>
445
Veronika Kocher 26.1 446 <section class="arsn-area" style="border-top:4px solid #38b76a;">
Veronika Kocher 23.1 447 <div class="arsn-area-head">
Veronika Kocher 28.1 448 <div class="arsn-area-label" style="background:#e6f3e9;color:#3f6d4b;"><span class="arsn-area-number">04</span> SET UP INFRASTRUCTURE &amp; COLLABORATION <span class="arsn-area-action">· Prepare</span></div>
Veronika Kocher 23.1 449 <h4>Create a working environment the project can actually use</h4>
Veronika Kocher 28.1 450 <p>Decide where project materials live, how they are backed up and protected, which tools are appropriate and how access and collaboration will work.</p>
Veronika Kocher 22.1 451 </div>
Veronika Kocher 23.1 452 <div class="arsn-area-body">
Veronika Kocher 28.1 453 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Storage%2C%20Backup%20%26%20Security/" style="border-left:3px solid #38b76a;">Storage, Backup &amp; Security</a>
454 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Infrastructure%2C%20Services%20%26%20Tools/" style="border-left:3px solid #38b76a;">Infrastructure, Services &amp; Tools</a>
455 <a class="arsn-topic" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Collaboration%20Setup/" style="border-left:3px solid #38b76a;">Collaboration Setup</a>
Veronika Kocher 22.1 456 </div>
457 </section>
458 </div>
459
Veronika Kocher 28.1 460 <section class="arsn-card" style="margin:0 0 27px 0;padding:18px 20px;background:#fcfbf8;border:1px solid #e3ded6;border-left:5px solid #e94b13;">
Veronika Kocher 25.1 461 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:5px;">NEXT PHASE</div>
Veronika Kocher 23.1 462 <h3 style="font-size:21px;margin:0 0 7px 0;color:#43332d;">Continue in Work &amp; Manage</h3>
Veronika Kocher 28.1 463 <p style="margin:0 0 13px 0;color:#68564e;line-height:1.5;">The setup decisions made here should guide the project, but they are not fixed forever. During active project work, organise, document, secure and review how the project is actually working.</p>
464 <a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Work%20%26%20Manage/" class="btn btn-default" style="background:#fff7f1;border-color:#e4cabc;color:#493a34;">Continue to Work &amp; Manage</a>
Veronika Kocher 22.1 465 </section>
466
467 <div style="margin:0 0 13px 0;">
Veronika Kocher 25.1 468 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">USEFUL MATERIALS</div>
Veronika Kocher 23.1 469 <h3 style="font-size:22px;margin:0 0 4px 0;color:#35312d;">Practical resources</h3>
Veronika Kocher 22.1 470 </div>
471
Veronika Kocher 23.1 472 <div class="arsn-resource-grid" style="margin-bottom:27px;">
Veronika Kocher 29.5 473 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #21b6d7;border-radius:9px;"><strong style="color:#3a5d66;">Info Sheets</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px 0;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">COMING SOON</span><div style="margin-top:5px;color:#625d56;">Short reference guides for common questions and decisions.</div></div>
474 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #e94b13;border-radius:9px;"><strong style="color:#503a31;">Tutorials</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px 0;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">COMING SOON</span><div style="margin-top:5px;color:#625d56;">Step-by-step instructions for specific tasks and workflows.</div></div>
475 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #38b76a;border-radius:9px;"><strong style="color:#3f6b4b;">Checklists &amp; Templates</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px 0;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">COMING SOON</span><div style="margin-top:5px;color:#625d56;">Reusable aids for planning, documenting and reviewing your project setup.</div></div>
Veronika Kocher 22.1 476 </div>
477
Veronika Kocher 29.6 478 <aside style="margin:0 0 14px 0;padding:16px 18px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#e5f5f9;border-radius:8px;"><!-- ARSN_PHASE_ROUTING_V1 -->
479 <strong style="color:#2d5661;">Need help finding the right route?</strong>
480 <div style="margin-top:5px;color:#365e68;line-height:1.5;"><strong>Start with Support Kunst und Forschung</strong> for project development, funding, proposals and coordination of funded art/research projects. For rights, data, IT, finance, HR, rooms or other specialist questions, follow the responsible service named on the topic page.</div>
Veronika Kocher 22.1 481 </aside>
482
Veronika Kocher 28.1 483 <div class="arsn-tip"><strong>Tip · A useful rule of thumb:</strong> Plan early, document decisions, and review them as the project changes. A simple setup that is actually used is usually more effective than a complex plan that is never updated.</div>
Veronika Kocher 22.1 484
485 </div>
486 {{/html}}
Veronika Kocher 29.7 487
Veronika Kocher 29.10 488 {{html clean="false"}}
489 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
Veronika Kocher 29.9 490
Veronika Kocher 29.10 491 <style data-sn-service-navigator-master="1">
492 /* =========================================================
493 MASTER TYPOGRAPHY
494 ========================================================= */
Veronika Kocher 29.9 495 #xwikicontent h1,
496 #xwikicontent h2,
497 #xwikicontent h3,
498 #xwikicontent h4,
499 #xwikicontent h5,
500 #xwikicontent h6,
501 #xwikicontent .box-title,
502 #xwikicontent [role="heading"],
503 #xwikicontent h1 a,
504 #xwikicontent h2 a,
505 #xwikicontent h3 a,
506 #xwikicontent h4 a,
507 #xwikicontent h5 a,
508 #xwikicontent h6 a,
509 #xwikicontent .box-title a,
510 #xwikicontent [role="heading"] a{
511 text-align:left!important;
512 text-justify:auto!important;
513 word-spacing:normal!important;
514 }
515
Veronika Kocher 29.10 516 /* =========================================================
517 COMING SOON / IN VORBEREITUNG
518 ========================================================= */
519 .sn-coming-soon-badge{
520 display:inline-block;
521 vertical-align:middle;
522 margin-left:10px;
523 padding:4px 8px;
524 border-radius:14px;
525 border:1px solid #efd9cc;
526 background:#fff4ee;
527 color:#8a4d36;
528 font-size:11px;
529 font-weight:700;
530 letter-spacing:.055em;
531 line-height:1.2;
532 white-space:nowrap;
533 }
534
535 /* =========================================================
536 NATIVE / DETAIL CALLOUT GEOMETRY
537 Preserve existing backgrounds.
538 ========================================================= */
539 #xwikicontent .arsn-info,
540 #xwikicontent .dmp-info,
541 #xwikicontent .ido-info,
542 #xwikicontent .pp-info,
543 #xwikicontent .infomessage{
Veronika Kocher 29.9 544 box-sizing:border-box!important;
Veronika Kocher 29.10 545 border-left:4px solid #21b6d7!important;
546 border-radius:8px;
Veronika Kocher 29.9 547 text-align:left!important;
548 word-spacing:normal!important;
549 }
550
Veronika Kocher 29.10 551 #xwikicontent .arsn-warn,
552 #xwikicontent .dmp-warn,
553 #xwikicontent .ido-warn,
554 #xwikicontent .pp-warn,
555 #xwikicontent .warn,
556 #xwikicontent .warning,
557 #xwikicontent .warningmessage,
Veronika Kocher 29.9 558 #xwikicontent .errormessage{
Veronika Kocher 29.10 559 box-sizing:border-box!important;
560 border-left:4px solid #e94b13!important;
561 border-radius:8px;
562 text-align:left!important;
563 word-spacing:normal!important;
Veronika Kocher 29.9 564 }
565
Veronika Kocher 29.10 566 [data-sn-master-equal-height],
567 [data-sn-master-first-row]{
Veronika Kocher 29.8 568 box-sizing:border-box;
Veronika Kocher 29.7 569 }
Veronika Kocher 29.11 570
571 /* =========================================================
572 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
573 ========================================================= */
574 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
575 display:grid!important;
576 grid-template-columns:minmax(0,1fr)!important;
577 grid-auto-rows:auto!important;
578 width:100%!important;
579 max-width:none!important;
580 box-sizing:border-box!important;
581 justify-items:start!important;
582 align-items:start!important;
583 gap:2px!important;
584 text-align:left!important;
585 text-align-last:left!important;
586 text-justify:auto!important;
587 word-spacing:normal!important;
588 white-space:normal!important;
589 }
590 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
591 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
592 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
593 display:block!important;
594 width:100%!important;
595 margin:0!important;
596 text-align:left!important;
597 text-align-last:left!important;
598 text-justify:auto!important;
599 word-spacing:normal!important;
600 white-space:normal!important;
601 }
Veronika Kocher 29.7 602 </style>
Veronika Kocher 29.9 603
Veronika Kocher 29.10 604 <script data-sn-service-navigator-master="1">
Veronika Kocher 29.7 605 (function(){
606 "use strict";
607
Veronika Kocher 29.10 608 var PAGE_KIND="overview";
609 var PLACEHOLDER=false;
610 var PLACEHOLDER_LABEL="COMING SOON";
611
Veronika Kocher 29.7 612 var MOBILE_MAX=767;
Veronika Kocher 29.8 613 var ROW_TOLERANCE=6;
Veronika Kocher 29.9 614 var RESIZE_DEBOUNCE=220;
Veronika Kocher 29.7 615
616 var root=
617 document.getElementById("xwikicontent")||
618 document.querySelector(".xwiki-rendering-content")||
619 document.querySelector("main")||
620 document.body;
621
622 if(!root)return;
623
Veronika Kocher 29.10 624 var managedHeight=new Set();
625 var managedMargin=new Set();
626 var originalHeight=new WeakMap();
627 var originalMargin=new WeakMap();
Veronika Kocher 29.9 628
629 var resizeTimer=0;
Veronika Kocher 29.10 630 var running=false;
Veronika Kocher 29.9 631
Veronika Kocher 29.10 632 var THEMES=[
633 {
634 name:"BLUE",
635 accent:"#21b6d7",
636 bg:"#eaf7fb",
637 text:"#315d68",
638 labels:[
639 "HIER STARTEN",
640 "ENTSCHEIDEN",
641 "ÜBERPRÜFEN & ANPASSEN",
642 "START HERE",
643 "DECIDE",
644 "REVIEW & ADAPT"
645 ]
646 },
647 {
648 name:"RED",
649 accent:"#e94b13",
650 bg:"#fff1ec",
651 text:"#8a4d36",
652 labels:[
653 "PLANEN & ORGANISIEREN",
654 "ORGANISIEREN & DOKUMENTIEREN",
655 "PUBLIZIEREN & PRÄSENTIEREN",
656 "PLAN & ORGANISE",
657 "PLAN & ORGANIZE",
658 "ORGANISE & DOCUMENT",
659 "ORGANIZE & DOCUMENT",
660 "PUBLISH & PRESENT"
661 ]
662 },
663 {
664 name:"YELLOW",
665 accent:"#f0aa00",
666 bg:"#fff8e7",
667 text:"#785b17",
668 labels:[
669 "SCHÜTZEN & KLÄREN",
670 "STANDARDISIEREN & IDENTIFIZIEREN",
671 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
672 "PROTECT & CLARIFY",
673 "STANDARDISE & IDENTIFY",
674 "STANDARDIZE & IDENTIFY",
675 "OPEN, REUSE & MAKE FINDABLE"
676 ]
677 },
678 {
679 name:"GREEN",
680 accent:"#38b76a",
681 bg:"#edf9f1",
682 text:"#3f7451",
683 labels:[
684 "INFRASTRUKTUR EINRICHTEN",
685 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
686 "SPEICHERN & ZUGRIFF STEUERN",
687 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
688 "SET UP INFRASTRUCTURE",
689 "SET UP INFRASTRUCTURE & COLLABORATION",
690 "STORE & CONTROL ACCESS",
691 "REPOSITORY, PRESERVE & HAND OVER"
692 ]
Veronika Kocher 29.8 693 }
Veronika Kocher 29.10 694 ];
Veronika Kocher 29.8 695
Veronika Kocher 29.10 696 function num(value){
697 var n=parseFloat(value);
698 return Number.isFinite(n)?n:0;
Veronika Kocher 29.7 699 }
700
Veronika Kocher 29.10 701 function norm(value){
702 return String(value||"")
Veronika Kocher 29.9 703 .replace(/\s+/g," ")
704 .trim()
705 .toUpperCase();
706 }
707
Veronika Kocher 29.10 708 function visible(el){
709 if(!el||el.nodeType!==1)return false;
Veronika Kocher 29.7 710
Veronika Kocher 29.10 711 var style=getComputedStyle(el);
712 var rect=el.getBoundingClientRect();
Veronika Kocher 29.9 713
714 return (
Veronika Kocher 29.10 715 style.display!=="none"&&
716 style.visibility!=="hidden"&&
717 rect.width>20&&
718 rect.height>4
Veronika Kocher 29.9 719 );
Veronika Kocher 29.7 720 }
721
Veronika Kocher 29.10 722 function saveStyle(el,map,property){
Veronika Kocher 29.8 723 if(map.has(el))return;
724
725 map.set(el,{
Veronika Kocher 29.10 726 value:el.style.getPropertyValue(property),
727 priority:el.style.getPropertyPriority(property)
Veronika Kocher 29.8 728 });
729 }
730
Veronika Kocher 29.10 731 function restoreStyle(el,map,property){
Veronika Kocher 29.8 732 var original=map.get(el);
733
734 if(original&&original.value){
735 el.style.setProperty(
736 property,
737 original.value,
738 original.priority||""
739 );
740 }else{
Veronika Kocher 29.10 741 el.style.removeProperty(property);
Veronika Kocher 29.8 742 }
743 }
744
Veronika Kocher 29.9 745 function resetRuntime(){
Veronika Kocher 29.10 746 managedHeight.forEach(function(el){
747 restoreStyle(
Veronika Kocher 29.8 748 el,
Veronika Kocher 29.10 749 originalHeight,
Veronika Kocher 29.8 750 "min-height"
751 );
752 el.removeAttribute(
Veronika Kocher 29.10 753 "data-sn-master-equal-height"
Veronika Kocher 29.8 754 );
755 });
756
Veronika Kocher 29.10 757 managedMargin.forEach(function(el){
758 restoreStyle(
Veronika Kocher 29.8 759 el,
Veronika Kocher 29.10 760 originalMargin,
Veronika Kocher 29.8 761 "margin-top"
762 );
763 el.removeAttribute(
Veronika Kocher 29.10 764 "data-sn-master-first-row"
Veronika Kocher 29.8 765 );
766 });
767
Veronika Kocher 29.10 768 managedHeight.clear();
769 managedMargin.clear();
770 }
Veronika Kocher 29.9 771
Veronika Kocher 29.10 772 function themeFor(text){
773 var value=norm(text);
Veronika Kocher 29.9 774
Veronika Kocher 29.10 775 for(var i=0;i<THEMES.length;i++){
776 for(var j=0;j<THEMES[i].labels.length;j++){
777 var label=THEMES[i].labels[j];
778
779 if(
780 value===label||
781 value.indexOf(label+" ")===0||
782 value.indexOf(label+" -")===0||
783 value.indexOf(label+" ·")===0
784 ){
785 return THEMES[i];
786 }
787 }
788 }
789
790 return null;
Veronika Kocher 29.8 791 }
792
Veronika Kocher 29.10 793 /* =======================================================
Veronika Kocher 29.11 794 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
795 ======================================================= */
796
797 function colourDistance(a,b){
798 return Math.sqrt(
799 Math.pow(a[0]-b[0],2)+
800 Math.pow(a[1]-b[1],2)+
801 Math.pow(a[2]-b[2],2)
802 );
803 }
804
805 function makeFilledRedOrangeCTAsBorderless(){
806 var RED_ORANGE=[233,75,19];
807
808 Array.from(
809 root.querySelectorAll(
810 'a,button,[role="button"],input[type="submit"],input[type="button"]'
811 )
812 ).forEach(function(el){
813 if(!visible(el))return;
814
815 var style=getComputedStyle(el);
816 var rgb=parseRGB(style.backgroundColor);
817
818 if(!rgb)return;
819
820 if(
821 colourDistance(
822 rgb,
823 RED_ORANGE
824 )>55
825 ){
826 return;
827 }
828
829 var rect=el.getBoundingClientRect();
830
831 if(
832 rect.width<80||
833 rect.height<24
834 ){
835 return;
836 }
837
838 el.style.setProperty(
839 "border",
840 "none",
841 "important"
842 );
843
844 el.style.setProperty(
845 "border-left",
846 "none",
847 "important"
848 );
849
850 el.style.setProperty(
851 "border-top",
852 "none",
853 "important"
854 );
855
856 el.style.setProperty(
857 "border-right",
858 "none",
859 "important"
860 );
861
862 el.style.setProperty(
863 "border-bottom",
864 "none",
865 "important"
866 );
867
868 el.style.setProperty(
869 "box-shadow",
870 "none",
871 "important"
872 );
873 });
874 }
875
876 /* =======================================================
877 FULL-WIDTH THREE-LINE AREA LABELS
878 ======================================================= */
879
880 function compactText(value){
881 return String(value||"")
882 .replace(/\s+/g," ")
883 .trim();
884 }
885
886 function makeThreeLineAreaLabels(){
887 Array.from(
888 root.querySelectorAll(
889 ".arsn-area-label"
890 )
891 ).forEach(function(label){
892 if(
893 label.getAttribute(
894 "data-sn-three-line"
895 )==="1"
896 ){
897 return;
898 }
899
900 var number=
901 label.querySelector(
902 ":scope > .arsn-area-number"
903 );
904
905 var action=
906 label.querySelector(
907 ":scope > .arsn-area-action"
908 );
909
910 if(
911 !number||
912 !action
913 ){
914 return;
915 }
916
917 var clone=
918 label.cloneNode(true);
919
920 var cloneNumber=
921 clone.querySelector(
922 ":scope > .arsn-area-number"
923 );
924
925 var cloneAction=
926 clone.querySelector(
927 ":scope > .arsn-area-action"
928 );
929
930 if(cloneNumber){
931 cloneNumber.remove();
932 }
933
934 if(cloneAction){
935 cloneAction.remove();
936 }
937
938 var titleText=
939 compactText(
940 clone.textContent
941 );
942
943 if(!titleText){
944 return;
945 }
946
947 var numberNode=
948 number.cloneNode(true);
949
950 var actionNode=
951 action.cloneNode(true);
952
953 var titleNode=
954 document.createElement(
955 "span"
956 );
957
958 titleNode.className=
959 "sn-area-label-title";
960
961 titleNode.textContent=
962 titleText;
963
964 while(label.firstChild){
965 label.removeChild(
966 label.firstChild
967 );
968 }
969
970 label.appendChild(
971 numberNode
972 );
973
974 label.appendChild(
975 titleNode
976 );
977
978 label.appendChild(
979 actionNode
980 );
981
982 label.setAttribute(
983 "data-sn-three-line",
984 "1"
985 );
986
987 var head=
988 label.closest(
989 ".arsn-area-head"
990 );
991
992 if(head){
993 head.style.setProperty(
994 "width",
995 "100%",
996 "important"
997 );
998
999 head.style.setProperty(
1000 "max-width",
1001 "100%",
1002 "important"
1003 );
1004
1005 head.style.setProperty(
1006 "box-sizing",
1007 "border-box",
1008 "important"
1009 );
1010 }
1011 });
1012 }
1013
1014 /* =======================================================
Veronika Kocher 29.10 1015 PLACEHOLDER BADGE
1016 ======================================================= */
Veronika Kocher 29.9 1017
Veronika Kocher 29.10 1018 function applyPlaceholderBadge(){
1019 if(!PLACEHOLDER)return;
Veronika Kocher 29.9 1020
1021 if(
Veronika Kocher 29.10 1022 document.querySelector(
1023 ".sn-coming-soon-badge"
1024 )
Veronika Kocher 29.9 1025 ){
Veronika Kocher 29.10 1026 return;
Veronika Kocher 29.9 1027 }
1028
Veronika Kocher 29.10 1029 var title=
1030 document.querySelector(
1031 "#document-title"
1032 )||
1033 document.querySelector(
1034 "h1"
1035 );
Veronika Kocher 29.9 1036
Veronika Kocher 29.10 1037 if(!title)return;
Veronika Kocher 29.9 1038
Veronika Kocher 29.10 1039 var badge=
1040 document.createElement(
1041 "span"
1042 );
1043
1044 badge.className=
1045 "sn-coming-soon-badge";
1046
1047 badge.textContent=
1048 PLACEHOLDER_LABEL;
1049
1050 badge.setAttribute(
1051 "aria-label",
1052 PLACEHOLDER_LABEL
Veronika Kocher 29.9 1053 );
1054
Veronika Kocher 29.10 1055 title.appendChild(
1056 badge
1057 );
1058 }
Veronika Kocher 29.9 1059
Veronika Kocher 29.10 1060 /* =======================================================
1061 DETAIL PAGE OWN-ACCENT PROPAGATION
1062 ======================================================= */
Veronika Kocher 29.9 1063
Veronika Kocher 29.10 1064 function parseRGB(value){
1065 var match=String(value||"").match(
1066 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
Veronika Kocher 29.9 1067 );
Veronika Kocher 29.10 1068
1069 if(!match)return null;
1070
1071 return [
1072 Number(match[1]),
1073 Number(match[2]),
1074 Number(match[3])
1075 ];
Veronika Kocher 29.9 1076 }
1077
Veronika Kocher 29.10 1078 function distance(a,b){
1079 return Math.sqrt(
1080 Math.pow(a[0]-b[0],2)+
1081 Math.pow(a[1]-b[1],2)+
1082 Math.pow(a[2]-b[2],2)
1083 );
1084 }
Veronika Kocher 29.7 1085
Veronika Kocher 29.10 1086 function paletteMatch(cssColor){
1087 var rgb=parseRGB(cssColor);
Veronika Kocher 29.8 1088
Veronika Kocher 29.10 1089 if(!rgb)return null;
Veronika Kocher 29.8 1090
Veronika Kocher 29.10 1091 var palette=[
1092 {hex:"#21b6d7",rgb:[33,182,215]},
1093 {hex:"#e94b13",rgb:[233,75,19]},
1094 {hex:"#f0aa00",rgb:[240,170,0]},
1095 {hex:"#38b76a",rgb:[56,183,106]}
1096 ];
Veronika Kocher 29.7 1097
Veronika Kocher 29.8 1098 var best=null;
Veronika Kocher 29.10 1099 var bestDistance=Infinity;
Veronika Kocher 29.7 1100
Veronika Kocher 29.10 1101 palette.forEach(function(item){
1102 var d=distance(rgb,item.rgb);
Veronika Kocher 29.7 1103
Veronika Kocher 29.10 1104 if(d<bestDistance){
1105 best=item;
1106 bestDistance=d;
1107 }
1108 });
Veronika Kocher 29.8 1109
Veronika Kocher 29.10 1110 return bestDistance<=30
1111 ?best
1112 :null;
1113 }
Veronika Kocher 29.7 1114
Veronika Kocher 29.10 1115 function propagateDetailAccents(){
1116 if(PAGE_KIND!=="detail")return;
1117
1118 Array.from(
1119 root.querySelectorAll(
1120 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
1121 ".arsn-source,.dmp-source,.ido-source,.pp-source"
1122 )
1123 ).forEach(function(el){
1124 if(!visible(el))return;
1125
1126 var style=getComputedStyle(el);
1127
Veronika Kocher 29.8 1128 if(
Veronika Kocher 29.10 1129 num(style.borderTopWidth)>=2
Veronika Kocher 29.8 1130 ){
Veronika Kocher 29.10 1131 var match=
1132 paletteMatch(
1133 style.borderTopColor
Veronika Kocher 29.8 1134 );
1135
Veronika Kocher 29.10 1136 if(match){
1137 el.style.setProperty(
1138 "border-left",
1139 "4px solid "+match.hex,
1140 "important"
Veronika Kocher 29.8 1141 );
Veronika Kocher 29.7 1142 }
1143 }
Veronika Kocher 29.10 1144 });
Veronika Kocher 29.7 1145
Veronika Kocher 29.10 1146 // Warning families: explicit safety override.
1147 Array.from(
1148 root.querySelectorAll(
1149 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
1150 ".warn,.warning,.warningmessage,.errormessage"
1151 )
1152 ).forEach(function(el){
1153 if(!visible(el))return;
Veronika Kocher 29.7 1154
Veronika Kocher 29.10 1155 el.style.setProperty(
1156 "border-left",
1157 "4px solid #e94b13",
1158 "important"
1159 );
1160 });
Veronika Kocher 29.7 1161
Veronika Kocher 29.10 1162 // Info families: explicit orientation override.
1163 Array.from(
1164 root.querySelectorAll(
1165 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
1166 )
1167 ).forEach(function(el){
1168 if(!visible(el))return;
Veronika Kocher 29.8 1169
Veronika Kocher 29.10 1170 el.style.setProperty(
1171 "border-left",
1172 "4px solid #21b6d7",
1173 "important"
1174 );
1175 });
1176 }
Veronika Kocher 29.8 1177
Veronika Kocher 29.10 1178 /* =======================================================
1179 OVERVIEW SEMANTIC THEME PALETTE
1180 ======================================================= */
Veronika Kocher 29.8 1181
Veronika Kocher 29.10 1182 function smallestThemeHeaders(){
Veronika Kocher 30.2 1183 // Phase overview rule:
1184 // only explicit three-line area-label blocks carry semantic colour.
1185 // Ordinary h4 and focus-card headings stay neutral.
Veronika Kocher 29.10 1186 return Array.from(
1187 root.querySelectorAll(
Veronika Kocher 30.2 1188 ".arsn-area-label"
Veronika Kocher 29.10 1189 )
1190 ).filter(function(el){
Veronika Kocher 30.2 1191 return (
1192 visible(el)&&
1193 !!themeFor(
1194 el.textContent
1195 )
1196 );
Veronika Kocher 29.10 1197 });
Veronika Kocher 29.7 1198 }
1199
Veronika Kocher 29.10 1200 function findOverviewCard(header){
1201 var node=header.parentElement;
1202 var candidates=[];
Veronika Kocher 29.8 1203
Veronika Kocher 29.10 1204 while(node&&node!==root){
1205 var rect=node.getBoundingClientRect();
1206 var style=getComputedStyle(node);
Veronika Kocher 29.8 1207
Veronika Kocher 29.10 1208 var border=
1209 num(style.borderTopWidth)+
1210 num(style.borderRightWidth)+
1211 num(style.borderBottomWidth)+
1212 num(style.borderLeftWidth);
Veronika Kocher 29.8 1213
Veronika Kocher 29.10 1214 if(
1215 rect.width>=220&&
1216 rect.width<=800&&
1217 rect.height>=120&&
1218 border>=1
1219 ){
1220 candidates.push(node);
1221 }
Veronika Kocher 29.8 1222
Veronika Kocher 29.10 1223 node=node.parentElement;
1224 }
Veronika Kocher 29.8 1225
Veronika Kocher 29.10 1226 if(!candidates.length)return null;
Veronika Kocher 29.8 1227
Veronika Kocher 29.10 1228 candidates.sort(function(a,b){
1229 return (
1230 b.getBoundingClientRect().height-
1231 a.getBoundingClientRect().height
Veronika Kocher 29.9 1232 );
Veronika Kocher 29.10 1233 });
Veronika Kocher 29.8 1234
Veronika Kocher 29.10 1235 return candidates[0];
Veronika Kocher 29.8 1236 }
1237
Veronika Kocher 29.10 1238 function rowCandidates(link,card){
1239 var result=[];
Veronika Kocher 29.9 1240 var cardRect=
1241 card.getBoundingClientRect();
Veronika Kocher 29.8 1242
Veronika Kocher 29.10 1243 var node=link;
Veronika Kocher 29.8 1244
Veronika Kocher 29.10 1245 while(node&&node!==card){
1246 if(visible(node)){
1247 var rect=
1248 node.getBoundingClientRect();
Veronika Kocher 29.8 1249
Veronika Kocher 29.10 1250 if(
1251 rect.height<=105&&
1252 rect.width>=
1253 cardRect.width*.50&&
1254 rect.width<=
1255 cardRect.width*1.03
1256 ){
1257 result.push(node);
1258 }
1259 }
Veronika Kocher 29.8 1260
Veronika Kocher 29.10 1261 node=node.parentElement;
1262 }
1263
1264 return result;
1265 }
1266
1267 function chooseOuterRow(
1268 candidates,
1269 link
1270 ){
1271 if(!candidates.length){
1272 return link;
1273 }
1274
1275 var bordered=
1276 candidates.filter(function(el){
Veronika Kocher 29.9 1277 return (
Veronika Kocher 29.10 1278 num(
1279 getComputedStyle(el)
1280 .borderLeftWidth
1281 )>=1
Veronika Kocher 29.9 1282 );
1283 });
Veronika Kocher 29.8 1284
Veronika Kocher 29.10 1285 var pool=
1286 bordered.length
1287 ?bordered
1288 :candidates;
Veronika Kocher 29.8 1289
Veronika Kocher 29.10 1290 pool.sort(function(a,b){
1291 var ar=
1292 a.getBoundingClientRect();
Veronika Kocher 29.8 1293
Veronika Kocher 29.10 1294 var br=
1295 b.getBoundingClientRect();
Veronika Kocher 29.8 1296
Veronika Kocher 29.10 1297 return (
1298 ar.left-br.left||
1299 br.width-ar.width
1300 );
1301 });
Veronika Kocher 29.8 1302
Veronika Kocher 29.10 1303 return pool[0]||link;
1304 }
Veronika Kocher 29.8 1305
Veronika Kocher 29.10 1306 function applyOverviewPalette(){
1307 if(PAGE_KIND!=="overview"){
1308 return [];
Veronika Kocher 29.9 1309 }
Veronika Kocher 29.8 1310
Veronika Kocher 29.10 1311 var headers=
1312 smallestThemeHeaders()
1313 .map(function(el){
1314 return {
1315 el:el,
1316 theme:
1317 themeFor(
1318 el.textContent
1319 ),
1320 card:
1321 findOverviewCard(
1322 el
1323 )
1324 };
Veronika Kocher 29.9 1325 })
Veronika Kocher 29.10 1326 .filter(function(row){
1327 return !!row.card;
1328 });
Veronika Kocher 29.8 1329
Veronika Kocher 29.10 1330 var unique=[];
1331 var seenHeaders=new Set();
Veronika Kocher 29.8 1332
Veronika Kocher 29.10 1333 headers.forEach(function(row){
1334 var key=
1335 row.theme.name+
1336 "|"+
1337 Math.round(
1338 row.card
1339 .getBoundingClientRect()
1340 .left
1341 )+
1342 "|"+
1343 Math.round(
1344 row.el
1345 .getBoundingClientRect()
1346 .top
1347 );
Veronika Kocher 29.8 1348
Veronika Kocher 29.10 1349 if(!seenHeaders.has(key)){
1350 seenHeaders.add(key);
1351 unique.push(row);
1352 }
1353 });
Veronika Kocher 29.8 1354
Veronika Kocher 29.10 1355 unique.forEach(function(row){
1356 var headerRect=
1357 row.el
1358 .getBoundingClientRect();
Veronika Kocher 29.8 1359
Veronika Kocher 29.10 1360 row.el.style.setProperty(
1361 "background",
1362 row.theme.bg,
1363 "important"
Veronika Kocher 29.9 1364 );
1365
Veronika Kocher 29.10 1366 row.el.style.setProperty(
1367 "color",
1368 row.theme.text,
1369 "important"
Veronika Kocher 29.9 1370 );
1371
Veronika Kocher 29.10 1372 row.el.style.setProperty(
1373 "text-align",
1374 "left",
1375 "important"
Veronika Kocher 29.9 1376 );
Veronika Kocher 29.8 1377
Veronika Kocher 29.10 1378 row.el.style.setProperty(
1379 "word-spacing",
1380 "normal",
1381 "important"
1382 );
Veronika Kocher 29.9 1383
Veronika Kocher 29.10 1384 var later=
1385 unique
1386 .filter(function(other){
1387 return (
1388 other.card===row.card&&
1389 other.el
1390 .getBoundingClientRect()
1391 .top>
1392 headerRect.top+2
1393 );
1394 })
1395 .sort(function(a,b){
1396 return (
1397 a.el
1398 .getBoundingClientRect()
1399 .top-
1400 b.el
1401 .getBoundingClientRect()
1402 .top
1403 );
1404 });
Veronika Kocher 29.9 1405
Veronika Kocher 29.10 1406 var stopTop=
1407 later.length
1408 ?later[0].el
1409 .getBoundingClientRect()
1410 .top
1411 :Infinity;
Veronika Kocher 29.9 1412
1413 Array.from(
Veronika Kocher 29.10 1414 row.card.querySelectorAll("a")
1415 ).forEach(function(link){
1416 if(!visible(link))return;
Veronika Kocher 29.9 1417
Veronika Kocher 29.10 1418 var rect=
1419 link.getBoundingClientRect();
Veronika Kocher 29.9 1420
Veronika Kocher 29.10 1421 if(
1422 rect.top<=
1423 headerRect.bottom-2||
1424 rect.top>=
1425 stopTop-2
1426 ){
1427 return;
1428 }
Veronika Kocher 29.9 1429
Veronika Kocher 29.10 1430 var candidates=
1431 rowCandidates(
1432 link,
1433 row.card
1434 );
1435
1436 var target=
1437 chooseOuterRow(
1438 candidates,
1439 link
1440 );
1441
1442 candidates.forEach(function(el){
1443 el.style.setProperty(
1444 "border-left",
1445 "0 solid transparent",
1446 "important"
1447 );
1448 });
1449
1450 target.style.setProperty(
1451 "border-left",
1452 "3px solid "+
1453 row.theme.accent,
1454 "important"
Veronika Kocher 29.9 1455 );
Veronika Kocher 29.10 1456
1457 target.style.setProperty(
1458 "box-sizing",
1459 "border-box",
1460 "important"
Veronika Kocher 29.9 1461 );
Veronika Kocher 29.8 1462 });
Veronika Kocher 29.10 1463 });
Veronika Kocher 29.8 1464
Veronika Kocher 29.10 1465 return unique;
Veronika Kocher 29.9 1466 }
Veronika Kocher 29.8 1467
Veronika Kocher 29.10 1468 /* =======================================================
1469 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1470 ======================================================= */
Veronika Kocher 29.9 1471
Veronika Kocher 29.10 1472 function alignOverviewCards(headers){
1473 if(
1474 PAGE_KIND!=="overview"||
1475 window.innerWidth<=MOBILE_MAX
1476 ){
1477 return;
1478 }
Veronika Kocher 29.9 1479
Veronika Kocher 29.10 1480 var cards=[];
1481 var seen=new Set();
Veronika Kocher 29.9 1482
Veronika Kocher 29.10 1483 headers.forEach(function(row){
1484 if(!seen.has(row.card)){
1485 seen.add(row.card);
1486 cards.push(row.card);
1487 }
1488 });
Veronika Kocher 29.9 1489
Veronika Kocher 29.10 1490 if(cards.length<2){
1491 return;
1492 }
Veronika Kocher 29.9 1493
Veronika Kocher 29.10 1494 // Group cards by actual top position.
1495 var groups=[];
Veronika Kocher 29.9 1496
Veronika Kocher 29.10 1497 cards.forEach(function(card){
1498 var top=
1499 card.getBoundingClientRect().top;
Veronika Kocher 29.9 1500
Veronika Kocher 29.10 1501 var group=null;
Veronika Kocher 29.9 1502
Veronika Kocher 29.10 1503 for(var i=0;i<groups.length;i++){
Veronika Kocher 29.9 1504 if(
Veronika Kocher 29.10 1505 Math.abs(
1506 groups[i].top-top
1507 )<=ROW_TOLERANCE
Veronika Kocher 29.9 1508 ){
Veronika Kocher 29.10 1509 group=groups[i];
1510 break;
Veronika Kocher 29.9 1511 }
Veronika Kocher 29.10 1512 }
Veronika Kocher 29.9 1513
Veronika Kocher 29.10 1514 if(!group){
1515 group={
1516 top:top,
1517 cards:[]
1518 };
1519 groups.push(group);
1520 }
Veronika Kocher 29.9 1521
Veronika Kocher 29.10 1522 group.cards.push(card);
1523 });
Veronika Kocher 29.9 1524
Veronika Kocher 29.10 1525 groups.forEach(function(group){
1526 if(group.cards.length<2){
1527 return;
1528 }
Veronika Kocher 29.9 1529
Veronika Kocher 29.10 1530 var firstHeaders=
1531 group.cards.map(function(card){
1532 var candidates=
1533 headers
1534 .filter(function(row){
1535 return row.card===card;
1536 })
1537 .sort(function(a,b){
1538 return (
1539 a.el
1540 .getBoundingClientRect()
1541 .top-
1542 b.el
1543 .getBoundingClientRect()
1544 .top
1545 );
1546 });
Veronika Kocher 29.9 1547
Veronika Kocher 29.10 1548 return candidates.length
1549 ?candidates[0]
1550 :null;
1551 });
Veronika Kocher 29.9 1552
Veronika Kocher 29.10 1553 if(
1554 !firstHeaders.some(function(row){
1555 return !row;
1556 })
1557 ){
1558 var targetTop=
1559 Math.max.apply(
1560 Math,
1561 firstHeaders.map(function(row){
1562 return (
1563 row.el
1564 .getBoundingClientRect()
1565 .top-
1566 row.card
1567 .getBoundingClientRect()
1568 .top
1569 );
1570 })
1571 );
Veronika Kocher 29.7 1572
Veronika Kocher 29.10 1573 firstHeaders.forEach(function(row){
1574 var relativeTop=
1575 row.el
1576 .getBoundingClientRect()
1577 .top-
1578 row.card
1579 .getBoundingClientRect()
1580 .top;
Veronika Kocher 29.8 1581
Veronika Kocher 29.10 1582 var delta=
1583 targetTop-relativeTop;
Veronika Kocher 29.8 1584
Veronika Kocher 29.10 1585 if(delta>1){
1586 saveStyle(
1587 row.el,
1588 originalMargin,
1589 "margin-top"
1590 );
Veronika Kocher 29.9 1591
Veronika Kocher 29.10 1592 var current=
1593 num(
1594 getComputedStyle(
1595 row.el
1596 ).marginTop
1597 );
Veronika Kocher 29.8 1598
Veronika Kocher 29.10 1599 row.el.style.setProperty(
1600 "margin-top",
1601 (
1602 current+delta
1603 )+"px"
1604 );
Veronika Kocher 29.8 1605
Veronika Kocher 29.10 1606 row.el.setAttribute(
1607 "data-sn-master-first-row",
1608 "1"
1609 );
Veronika Kocher 29.8 1610
Veronika Kocher 29.10 1611 managedMargin.add(
1612 row.el
1613 );
1614 }
1615 });
1616 }
Veronika Kocher 29.8 1617
Veronika Kocher 29.10 1618 var maxHeight=0;
Veronika Kocher 29.8 1619
Veronika Kocher 29.10 1620 group.cards.forEach(function(card){
1621 maxHeight=
1622 Math.max(
1623 maxHeight,
1624 card
1625 .getBoundingClientRect()
1626 .height
1627 );
1628 });
Veronika Kocher 29.8 1629
Veronika Kocher 29.10 1630 maxHeight=
1631 Math.ceil(maxHeight);
Veronika Kocher 29.8 1632
Veronika Kocher 29.10 1633 group.cards.forEach(function(card){
1634 saveStyle(
1635 card,
1636 originalHeight,
1637 "min-height"
1638 );
Veronika Kocher 29.8 1639
Veronika Kocher 29.10 1640 card.style.setProperty(
1641 "min-height",
1642 maxHeight+"px"
Veronika Kocher 29.8 1643 );
1644
Veronika Kocher 29.10 1645 card.setAttribute(
1646 "data-sn-master-equal-height",
1647 "1"
1648 );
Veronika Kocher 29.8 1649
Veronika Kocher 29.10 1650 managedHeight.add(
1651 card
1652 );
1653 });
Veronika Kocher 29.8 1654 });
1655 }
1656
Veronika Kocher 29.10 1657 /* =======================================================
1658 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1659 ======================================================= */
Veronika Kocher 29.8 1660
Veronika Kocher 29.10 1661 function equaliseDetailGrids(){
Veronika Kocher 29.9 1662 if(
Veronika Kocher 29.10 1663 PAGE_KIND!=="detail"||
1664 window.innerWidth<=MOBILE_MAX
Veronika Kocher 29.9 1665 ){
Veronika Kocher 29.10 1666 return;
Veronika Kocher 29.9 1667 }
Veronika Kocher 29.8 1668
Veronika Kocher 29.10 1669 var selectors=[
1670 ".arsn-grid",
1671 ".arsn-grid-2",
1672 ".arsn-grid-3",
1673 ".dmp-grid",
1674 ".ido-grid",
1675 ".pp-grid"
1676 ];
Veronika Kocher 29.8 1677
Veronika Kocher 29.10 1678 selectors.forEach(function(selector){
1679 Array.from(
1680 root.querySelectorAll(selector)
1681 ).forEach(function(grid){
1682 var children=
1683 Array.from(
1684 grid.children||[]
1685 ).filter(visible);
Veronika Kocher 29.8 1686
Veronika Kocher 29.10 1687 if(children.length<2){
1688 return;
1689 }
Veronika Kocher 29.8 1690
Veronika Kocher 29.10 1691 var groups=[];
Veronika Kocher 29.8 1692
Veronika Kocher 29.10 1693 children.forEach(function(child){
1694 var top=
1695 child
1696 .getBoundingClientRect()
1697 .top;
Veronika Kocher 29.8 1698
Veronika Kocher 29.10 1699 var group=null;
Veronika Kocher 29.8 1700
Veronika Kocher 29.10 1701 for(var i=0;i<groups.length;i++){
1702 if(
1703 Math.abs(
1704 groups[i].top-top
1705 )<=ROW_TOLERANCE
1706 ){
1707 group=groups[i];
1708 break;
1709 }
1710 }
Veronika Kocher 29.8 1711
Veronika Kocher 29.10 1712 if(!group){
1713 group={
1714 top:top,
1715 items:[]
1716 };
1717 groups.push(group);
1718 }
Veronika Kocher 29.8 1719
Veronika Kocher 29.10 1720 group.items.push(child);
1721 });
Veronika Kocher 29.8 1722
Veronika Kocher 29.10 1723 groups.forEach(function(group){
1724 if(group.items.length<2){
1725 return;
1726 }
Veronika Kocher 29.7 1727
Veronika Kocher 29.10 1728 var maxHeight=0;
Veronika Kocher 29.9 1729
Veronika Kocher 29.10 1730 group.items.forEach(function(item){
1731 maxHeight=
1732 Math.max(
1733 maxHeight,
1734 item
1735 .getBoundingClientRect()
1736 .height
1737 );
1738 });
Veronika Kocher 29.9 1739
Veronika Kocher 29.10 1740 maxHeight=
1741 Math.ceil(maxHeight);
Veronika Kocher 29.7 1742
Veronika Kocher 29.10 1743 group.items.forEach(function(item){
1744 saveStyle(
1745 item,
1746 originalHeight,
1747 "min-height"
1748 );
Veronika Kocher 29.7 1749
Veronika Kocher 29.10 1750 item.style.setProperty(
1751 "min-height",
1752 maxHeight+"px"
1753 );
Veronika Kocher 29.8 1754
Veronika Kocher 29.10 1755 item.setAttribute(
1756 "data-sn-master-equal-height",
1757 "1"
1758 );
Veronika Kocher 29.7 1759
Veronika Kocher 29.10 1760 managedHeight.add(item);
1761 });
Veronika Kocher 29.7 1762 });
Veronika Kocher 29.10 1763 });
1764 });
1765 }
Veronika Kocher 29.7 1766
Veronika Kocher 29.10 1767 /* =======================================================
1768 RUN / RESPONSIVE SCHEDULING
1769 ======================================================= */
Veronika Kocher 29.7 1770
Veronika Kocher 29.10 1771 function run(){
1772 if(running)return;
Veronika Kocher 29.7 1773
Veronika Kocher 29.10 1774 running=true;
Veronika Kocher 29.9 1775
Veronika Kocher 29.10 1776 try{
1777 resetRuntime();
1778 applyPlaceholderBadge();
1779 propagateDetailAccents();
Veronika Kocher 29.9 1780
Veronika Kocher 29.10 1781 var headers=
1782 applyOverviewPalette();
Veronika Kocher 29.9 1783
Veronika Kocher 29.11 1784 makeThreeLineAreaLabels();
1785 makeFilledRedOrangeCTAsBorderless();
1786
Veronika Kocher 29.10 1787 if(
1788 window.innerWidth>
1789 MOBILE_MAX
1790 ){
1791 alignOverviewCards(
1792 headers
1793 );
Veronika Kocher 29.7 1794
Veronika Kocher 29.10 1795 equaliseDetailGrids();
1796 }
Veronika Kocher 29.9 1797 }finally{
Veronika Kocher 29.10 1798 running=false;
Veronika Kocher 29.9 1799 }
Veronika Kocher 29.7 1800 }
1801
Veronika Kocher 29.10 1802 function onResize(){
Veronika Kocher 29.9 1803 if(resizeTimer){
1804 clearTimeout(
1805 resizeTimer
1806 );
1807 }
Veronika Kocher 29.8 1808
Veronika Kocher 29.9 1809 resizeTimer=
1810 setTimeout(
1811 function(){
1812 resizeTimer=0;
Veronika Kocher 29.10 1813 run();
Veronika Kocher 29.9 1814 },
1815 RESIZE_DEBOUNCE
1816 );
Veronika Kocher 29.7 1817 }
1818
Veronika Kocher 29.10 1819 async function waitForReady(){
1820 if(
1821 document.readyState!=="complete"
1822 ){
1823 await new Promise(function(resolve){
1824 window.addEventListener(
1825 "load",
1826 resolve,
1827 {once:true}
1828 );
1829 });
1830 }
1831
1832 if(
1833 document.fonts&&
1834 document.fonts.ready
1835 ){
1836 try{
1837 await document.fonts.ready;
1838 }catch(error){}
1839 }
1840
Veronika Kocher 29.9 1841 var images=
1842 Array.from(
1843 root.querySelectorAll("img")
1844 );
Veronika Kocher 29.7 1845
Veronika Kocher 29.10 1846 await Promise.all(
Veronika Kocher 29.9 1847 images.map(function(img){
1848 if(img.complete){
1849 return Promise.resolve();
1850 }
Veronika Kocher 29.7 1851
Veronika Kocher 29.9 1852 return new Promise(function(resolve){
1853 var done=function(){
1854 resolve();
1855 };
1856
1857 img.addEventListener(
1858 "load",
1859 done,
1860 {once:true}
1861 );
1862
1863 img.addEventListener(
1864 "error",
1865 done,
1866 {once:true}
1867 );
1868 });
1869 })
1870 );
1871
Veronika Kocher 29.10 1872 run();
Veronika Kocher 29.7 1873 }
1874
Veronika Kocher 29.10 1875 window.addEventListener(
Veronika Kocher 29.9 1876 "resize",
Veronika Kocher 29.10 1877 onResize,
Veronika Kocher 29.9 1878 {passive:true}
1879 );
1880
Veronika Kocher 29.10 1881 waitForReady();
Veronika Kocher 29.7 1882 })();
1883 </script>
Veronika Kocher 29.9 1884
Veronika Kocher 29.10 1885 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1886 {{/html}}
1887