Wiki source code of Enable

Version 29.9 by Veronika Kocher on Thursday, 03 Sep 2026 10:09

Show last authors
1 {{html clean="false"}}
2
3 <style>
4 .arsn-phase {
5 max-width: 1400px;
6 margin: 0 auto;
7 color: #322f2b;
8 }
9
10 .arsn-phase * {
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
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
156 .arsn-area-grid {
157 display: grid;
158 grid-template-columns: repeat(auto-fit, minmax(310px,1fr));
159 gap: 18px;
160 align-items: stretch;
161 }
162
163 .arsn-area {
164 display: flex;
165 flex-direction: column;
166 overflow: hidden;
167 border: 1px solid #e3ded6;
168 border-radius: 11px;
169 background: #fcfbf8;
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 {
182 display: inline-flex;
183 align-items: center;
184 gap: 7px;
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
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
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;
222 border: 1px solid #e9e4dc;
223 border-radius: 6px;
224 background: #fffdf9;
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 {
233 background: #fff7f1;
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
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) {
284 .arsn-focus-grid {
285 grid-template-columns: 1fr;
286 }
287 }
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 }
311 </style>
312
313 <div class="arsn-phase">
314
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">
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" />
318 </div>
319 <div style="padding:18px 22px 21px 22px;">
320 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:6px;">PROJECT PHASE 1 · ENABLE</div>
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>
329
330 <div class="arsn-progress">
331
332 <div class="arsn-step active">
333 <div class="arsn-step-dot"></div>
334 <div class="arsn-step-label">1 · ENABLE</div>
335 <div class="arsn-step-desc">Plan & set up</div>
336 </div>
337
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>
342 </div>
343
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>
348 </div>
349 </div>
350
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;">
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>
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>
355
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>
366
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>
386 </div>
387 </section>
388
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
400 <div style="margin:0 0 15px 0;">
401 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">EXPLORE THIS PHASE</div>
402 <h3 style="font-size:24px;margin:0 0 5px 0;color:#35312d;">Four areas to get your project ready</h3>
403 <p style="margin:0;color:#6a655e;">Start with the area that matches what you need to decide or set up now.</p>
404 </div>
405
406 <div class="arsn-area-grid" style="margin-bottom:30px;">
407 <section class="arsn-area" style="border-top:4px solid #21b6d7;">
408 <div class="arsn-area-head">
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>
410 <h4>Orient yourself and choose the right level of setup</h4>
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>
412 </div>
413 <div class="arsn-area-body">
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>
416 </div>
417 </section>
418
419 <section class="arsn-area" style="border-top:4px solid #e94b13;">
420 <div class="arsn-area-head">
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>
422 <h4>Define what the project needs and how it will be organised</h4>
423 <p>Clarify scope, responsibilities, funding conditions, expected materials and outputs, and the basic data-management approach before active work begins.</p>
424 </div>
425 <div class="arsn-area-body">
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>
431 </div>
432 </section>
433
434 <section class="arsn-area" style="border-top:4px solid #f0aa00;">
435 <div class="arsn-area-head">
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>
437 <h4>Clarify rights, permissions, protection needs and responsibilities</h4>
438 <p>Identify legal, ethical or data-protection issues early enough to obtain permissions, make agreements and avoid unnecessary restrictions later.</p>
439 </div>
440 <div class="arsn-area-body">
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>
443 </div>
444 </section>
445
446 <section class="arsn-area" style="border-top:4px solid #38b76a;">
447 <div class="arsn-area-head">
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>
449 <h4>Create a working environment the project can actually use</h4>
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>
451 </div>
452 <div class="arsn-area-body">
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>
456 </div>
457 </section>
458 </div>
459
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;">
461 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:5px;">NEXT PHASE</div>
462 <h3 style="font-size:21px;margin:0 0 7px 0;color:#43332d;">Continue in Work &amp; Manage</h3>
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>
465 </section>
466
467 <div style="margin:0 0 13px 0;">
468 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">USEFUL MATERIALS</div>
469 <h3 style="font-size:22px;margin:0 0 4px 0;color:#35312d;">Practical resources</h3>
470 </div>
471
472 <div class="arsn-resource-grid" style="margin-bottom:27px;">
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>
476 </div>
477
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>
481 </aside>
482
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>
484
485 </div>
486 {{/html}}
487
488 \n\n
489 \n\n{{html clean="false"}}
490 <!-- SN_HORIZONTAL_BOX_HARMONIZER_START -->
491
492 <style data-sn-horizontal-box-harmonizer="7">
493 /* ---------- Typography: never justify headings ---------- */
494 #xwikicontent h1,
495 #xwikicontent h2,
496 #xwikicontent h3,
497 #xwikicontent h4,
498 #xwikicontent h5,
499 #xwikicontent h6,
500 #xwikicontent .box-title,
501 #xwikicontent [role="heading"],
502 #xwikicontent h1 a,
503 #xwikicontent h2 a,
504 #xwikicontent h3 a,
505 #xwikicontent h4 a,
506 #xwikicontent h5 a,
507 #xwikicontent h6 a,
508 #xwikicontent .box-title a,
509 #xwikicontent [role="heading"] a{
510 text-align:left!important;
511 text-justify:auto!important;
512 word-spacing:normal!important;
513 }
514
515 /* ---------- Native XWiki semantic callouts ---------- */
516 #xwikicontent .box.infomessage,
517 #xwikicontent .infomessage,
518 #xwikicontent .box.warningmessage,
519 #xwikicontent .warningmessage,
520 #xwikicontent .box.successmessage,
521 #xwikicontent .successmessage,
522 #xwikicontent .box.errormessage,
523 #xwikicontent .errormessage,
524 #xwikicontent [data-sn-callout-harmonized="1"]{
525 box-sizing:border-box!important;
526 border-radius:8px!important;
527 border-top:1px solid rgba(0,0,0,.08)!important;
528 border-right:1px solid rgba(0,0,0,.08)!important;
529 border-bottom:1px solid rgba(0,0,0,.08)!important;
530 border-left:4px solid var(--sn-callout-accent,#21b6d7)!important;
531 padding:14px 16px!important;
532 text-align:left!important;
533 text-justify:auto!important;
534 word-spacing:normal!important;
535 box-shadow:none!important;
536 }
537
538 #xwikicontent .box.infomessage,
539 #xwikicontent .infomessage{
540 --sn-callout-accent:#21b6d7;
541 background:#eaf7fb!important;
542 }
543
544 #xwikicontent .box.warningmessage,
545 #xwikicontent .warningmessage{
546 --sn-callout-accent:#f0aa00;
547 background:#fff8e7!important;
548 }
549
550 #xwikicontent .box.successmessage,
551 #xwikicontent .successmessage{
552 --sn-callout-accent:#38b76a;
553 background:#edf9f1!important;
554 }
555
556 #xwikicontent .box.errormessage,
557 #xwikicontent .errormessage{
558 --sn-callout-accent:#e94b13;
559 background:#fff1ec!important;
560 }
561
562 #xwikicontent [data-sn-callout-harmonized="1"] > :first-child,
563 #xwikicontent .infomessage > :first-child,
564 #xwikicontent .warningmessage > :first-child,
565 #xwikicontent .successmessage > :first-child,
566 #xwikicontent .errormessage > :first-child{
567 margin-top:0!important;
568 }
569
570 #xwikicontent [data-sn-callout-harmonized="1"] > :last-child,
571 #xwikicontent .infomessage > :last-child,
572 #xwikicontent .warningmessage > :last-child,
573 #xwikicontent .successmessage > :last-child,
574 #xwikicontent .errormessage > :last-child{
575 margin-bottom:0!important;
576 }
577
578 #xwikicontent [data-sn-equal-height-managed],
579 #xwikicontent [data-sn-first-section-aligned],
580 #xwikicontent [data-sn-first-content-aligned]{
581 box-sizing:border-box;
582 }
583 </style>
584
585 <script data-sn-horizontal-box-harmonizer="7">
586 (function(){
587 "use strict";
588
589 var MOBILE_MAX=767;
590 var ROW_TOLERANCE=6;
591 var MIN_W=150;
592 var MIN_H=36;
593 var MAX_PARENT_CHILDREN=18;
594 var SEARCH_DEPTH=5;
595 var RESIZE_DEBOUNCE=220;
596 var MIN_WIDTH_CHANGE=2;
597
598 var root=
599 document.getElementById("xwikicontent")||
600 document.querySelector(".xwiki-rendering-content")||
601 document.querySelector("main")||
602 document.body;
603
604 if(!root)return;
605
606 var heightManaged=new Set();
607 var sectionManaged=new Set();
608 var contentManaged=new Set();
609
610 var originalMinHeight=new WeakMap();
611 var originalMarginTop=new WeakMap();
612
613 var resizeTimer=0;
614 var lastWidth=-1;
615 var hasApplied=false;
616 var applying=false;
617
618 function num(v){
619 var n=parseFloat(v);
620 return Number.isFinite(n)?n:0;
621 }
622
623 function visible(el,minW,minH){
624 if(!el||el.nodeType!==1)return false;
625
626 var s=getComputedStyle(el);
627
628 if(
629 s.display==="none"||
630 s.visibility==="hidden"||
631 Number(s.opacity)===0
632 ){
633 return false;
634 }
635
636 var r=el.getBoundingClientRect();
637
638 return (
639 r.width>=(minW||1)&&
640 r.height>=(minH||1)
641 );
642 }
643
644 function normalizeText(text){
645 return String(text||"")
646 .replace(/\s+/g," ")
647 .trim()
648 .toUpperCase();
649 }
650
651 function excluded(el){
652 return (
653 !el.matches||
654 el.matches(
655 "button,input,select,textarea,option,label,img,svg,canvas,table,thead,tbody,tfoot,tr,td,th,summary,script,style,noscript,template,.btn,.chip,[role=button]"
656 )
657 );
658 }
659
660 /* ---------- Custom coloured callouts ---------- */
661
662 function nativeCallout(el){
663 var c=
664 typeof el.className==="string"
665 ? el.className.toLowerCase()
666 : "";
667
668 return (
669 /(^|\s)(infomessage|warningmessage|successmessage|errormessage)(\s|$)/.test(c)
670 );
671 }
672
673 function customCallout(el){
674 if(!visible(el,220,42)||excluded(el))return false;
675
676 var r=el.getBoundingClientRect();
677
678 if(r.height>520)return false;
679
680 var s=getComputedStyle(el);
681
682 var bg=
683 s.backgroundColor&&
684 s.backgroundColor!=="rgba(0, 0, 0, 0)"&&
685 s.backgroundColor!=="transparent"&&
686 s.backgroundColor!=="rgb(255, 255, 255)";
687
688 var left=
689 num(s.borderLeftWidth);
690
691 return (
692 bg&&
693 left>=2
694 );
695 }
696
697 function harmoniseCustomCallouts(){
698 Array.from(
699 root.querySelectorAll(
700 "div,aside,section"
701 )
702 ).forEach(function(el){
703 if(nativeCallout(el))return;
704 if(!customCallout(el))return;
705
706 var s=getComputedStyle(el);
707
708 el.setAttribute(
709 "data-sn-callout-harmonized",
710 "1"
711 );
712
713 if(
714 s.borderLeftColor
715 ){
716 el.style.setProperty(
717 "--sn-callout-accent",
718 s.borderLeftColor
719 );
720 }
721 });
722 }
723
724 /* ---------- Restore only values V7 itself changed ---------- */
725
726 function saveOriginal(el,map,property){
727 if(map.has(el))return;
728
729 map.set(el,{
730 value:
731 el.style.getPropertyValue(
732 property
733 ),
734 priority:
735 el.style.getPropertyPriority(
736 property
737 )
738 });
739 }
740
741 function restoreOriginal(el,map,property){
742 var original=map.get(el);
743
744 if(original&&original.value){
745 el.style.setProperty(
746 property,
747 original.value,
748 original.priority||""
749 );
750 }else{
751 el.style.removeProperty(
752 property
753 );
754 }
755 }
756
757 function resetRuntime(){
758 heightManaged.forEach(function(el){
759 restoreOriginal(
760 el,
761 originalMinHeight,
762 "min-height"
763 );
764
765 el.removeAttribute(
766 "data-sn-equal-height-managed"
767 );
768 });
769
770 sectionManaged.forEach(function(el){
771 restoreOriginal(
772 el,
773 originalMarginTop,
774 "margin-top"
775 );
776
777 el.removeAttribute(
778 "data-sn-first-section-aligned"
779 );
780 });
781
782 contentManaged.forEach(function(el){
783 restoreOriginal(
784 el,
785 originalMarginTop,
786 "margin-top"
787 );
788
789 el.removeAttribute(
790 "data-sn-first-content-aligned"
791 );
792 });
793
794 heightManaged.clear();
795 sectionManaged.clear();
796 contentManaged.clear();
797 }
798
799 /* ---------- Card detection ---------- */
800
801 function namedLikeBox(el){
802 var c=
803 typeof el.className==="string"
804 ? el.className
805 : "";
806
807 return /(^|[\s_-])(box|card|tile|panel|role|check|service|source|call|area|detail|resource|topic|warn|info)([\s_-]|$)/i.test(c);
808 }
809
810 function boxLike(el){
811 if(
812 !visible(el,MIN_W,MIN_H)||
813 excluded(el)
814 ){
815 return false;
816 }
817
818 var s=getComputedStyle(el);
819 var r=el.getBoundingClientRect();
820
821 var border=
822 num(s.borderTopWidth)+
823 num(s.borderRightWidth)+
824 num(s.borderBottomWidth)+
825 num(s.borderLeftWidth);
826
827 var radius=Math.max(
828 num(s.borderTopLeftRadius),
829 num(s.borderTopRightRadius),
830 num(s.borderBottomLeftRadius),
831 num(s.borderBottomRightRadius)
832 );
833
834 var bg=
835 s.backgroundColor&&
836 s.backgroundColor!=="rgba(0, 0, 0, 0)"&&
837 s.backgroundColor!=="transparent";
838
839 var shadow=
840 s.boxShadow&&
841 s.boxShadow!=="none";
842
843 return (
844 namedLikeBox(el)||
845 border>=1||
846 (bg&&radius>=3)||
847 (shadow&&r.width>=180)
848 );
849 }
850
851 function pickTarget(child){
852 if(!visible(child,MIN_W,MIN_H))return null;
853
854 if(boxLike(child))return child;
855
856 var cr=child.getBoundingClientRect();
857 var q=[];
858
859 Array.from(child.children||[]).forEach(function(el){
860 q.push({el:el,depth:1});
861 });
862
863 var best=null;
864 var bestScore=-Infinity;
865
866 while(q.length){
867 var item=q.shift();
868 var el=item.el;
869
870 if(!visible(el,MIN_W,MIN_H))continue;
871
872 var r=el.getBoundingClientRect();
873
874 if(
875 r.width>=cr.width*.68&&
876 boxLike(el)
877 ){
878 var widthFit=
879 1-Math.min(
880 1,
881 Math.abs(cr.width-r.width)/
882 Math.max(1,cr.width)
883 );
884
885 var topFit=
886 1-Math.min(
887 1,
888 Math.abs(cr.top-r.top)/100
889 );
890
891 var score=
892 widthFit*6+
893 topFit*3+
894 Math.min(r.height,900)/450+
895 Math.min(r.width*r.height,900000)/900000;
896
897 if(score>bestScore){
898 best=el;
899 bestScore=score;
900 }
901 }
902
903 if(item.depth<SEARCH_DEPTH){
904 Array.from(el.children||[]).forEach(function(next){
905 q.push({
906 el:next,
907 depth:item.depth+1
908 });
909 });
910 }
911 }
912
913 return best;
914 }
915
916 function groupRows(entries){
917 var groups=[];
918
919 entries
920 .slice()
921 .sort(function(a,b){
922 return (
923 a.rect.top-b.rect.top||
924 a.rect.left-b.rect.left
925 );
926 })
927 .forEach(function(entry){
928 var group=null;
929
930 for(var i=0;i<groups.length;i++){
931 if(
932 Math.abs(
933 groups[i].top-
934 entry.rect.top
935 )<=ROW_TOLERANCE
936 ){
937 group=groups[i];
938 break;
939 }
940 }
941
942 if(!group){
943 group={
944 top:entry.rect.top,
945 entries:[]
946 };
947 groups.push(group);
948 }
949
950 group.entries.push(entry);
951 });
952
953 return groups;
954 }
955
956 function validRow(group){
957 if(group.entries.length<2)return false;
958
959 var lefts=
960 group.entries
961 .map(function(e){return e.rect.left;})
962 .sort(function(a,b){return a-b;});
963
964 if(
965 lefts[lefts.length-1]-
966 lefts[0]<
967 80
968 ){
969 return false;
970 }
971
972 var widths=
973 group.entries
974 .map(function(e){return e.rect.width;})
975 .filter(function(w){return w>0;});
976
977 if(widths.length<2)return false;
978
979 var minW=
980 Math.min.apply(Math,widths);
981
982 var maxW=
983 Math.max.apply(Math,widths);
984
985 return (
986 maxW/
987 Math.max(1,minW)<=
988 1.9
989 );
990 }
991
992 /* ---------- Known ARSN first section bars ---------- */
993
994 function knownBar(el){
995 var text=
996 normalizeText(
997 el.textContent
998 );
999
1000 return (
1001 text==="HIER STARTEN"||
1002 text==="ORGANISIEREN & DOKUMENTIEREN"||
1003 text==="ENTSCHEIDEN"||
1004 text==="START HERE"||
1005 text==="GET STARTED"||
1006 text==="ORGANISE & DOCUMENT"||
1007 text==="ORGANIZE & DOCUMENT"||
1008 text==="DECIDE"
1009 );
1010 }
1011
1012 function findKnownBar(card){
1013 var cardRect=
1014 card.getBoundingClientRect();
1015
1016 var rows=
1017 Array.from(
1018 card.querySelectorAll(
1019 "div,p,span,strong,h3,h4,h5,h6"
1020 )
1021 )
1022 .filter(function(el){
1023 if(!visible(el,20,6))return false;
1024 if(!knownBar(el))return false;
1025
1026 var r=el.getBoundingClientRect();
1027
1028 var rel=
1029 r.top-
1030 cardRect.top;
1031
1032 return (
1033 rel>=35&&
1034 rel<=
1035 cardRect.height*.75
1036 );
1037 })
1038 .sort(function(a,b){
1039 return (
1040 a.getBoundingClientRect().top-
1041 b.getBoundingClientRect().top
1042 );
1043 });
1044
1045 return rows[0]||null;
1046 }
1047
1048 function alignKnownBars(cards){
1049 var rows=
1050 cards.map(function(card){
1051 var bar=
1052 findKnownBar(card);
1053
1054 if(!bar)return null;
1055
1056 var cr=
1057 card.getBoundingClientRect();
1058
1059 var br=
1060 bar.getBoundingClientRect();
1061
1062 return {
1063 bar:bar,
1064 relativeTop:
1065 br.top-
1066 cr.top
1067 };
1068 });
1069
1070 if(
1071 rows.some(function(row){
1072 return !row;
1073 })
1074 ){
1075 return false;
1076 }
1077
1078 var target=
1079 Math.max.apply(
1080 Math,
1081 rows.map(function(row){
1082 return row.relativeTop;
1083 })
1084 );
1085
1086 rows.forEach(function(row){
1087 var delta=
1088 target-
1089 row.relativeTop;
1090
1091 if(delta<=1)return;
1092
1093 saveOriginal(
1094 row.bar,
1095 originalMarginTop,
1096 "margin-top"
1097 );
1098
1099 var current=
1100 num(
1101 getComputedStyle(
1102 row.bar
1103 ).marginTop
1104 );
1105
1106 row.bar.style.setProperty(
1107 "margin-top",
1108 (
1109 current+
1110 delta
1111 )+"px"
1112 );
1113
1114 row.bar.setAttribute(
1115 "data-sn-first-section-aligned",
1116 "7"
1117 );
1118
1119 sectionManaged.add(
1120 row.bar
1121 );
1122 });
1123
1124 return true;
1125 }
1126
1127 /* ---------- Generic first content after heading ---------- */
1128
1129 function heading(card){
1130 var cr=
1131 card.getBoundingClientRect();
1132
1133 var rows=
1134 Array.from(
1135 card.querySelectorAll(
1136 "h1,h2,h3,h4,h5,h6,.box-title,[role=heading]"
1137 )
1138 )
1139 .filter(function(el){
1140 if(!visible(el,20,8))return false;
1141
1142 var r=el.getBoundingClientRect();
1143
1144 var rel=
1145 r.top-
1146 cr.top;
1147
1148 return (
1149 rel>=0&&
1150 rel<=
1151 Math.min(
1152 160,
1153 cr.height*.45
1154 )
1155 );
1156 })
1157 .sort(function(a,b){
1158 return (
1159 a.getBoundingClientRect().top-
1160 b.getBoundingClientRect().top
1161 );
1162 });
1163
1164 return rows[0]||null;
1165 }
1166
1167 function firstContent(card,h){
1168 if(!h)return null;
1169
1170 var cr=
1171 card.getBoundingClientRect();
1172
1173 var hr=
1174 h.getBoundingClientRect();
1175
1176 var rows=
1177 Array.from(
1178 card.querySelectorAll(
1179 "p,div,ul,ol,dl,blockquote"
1180 )
1181 )
1182 .filter(function(el){
1183 if(
1184 el===h||
1185 h.contains(el)||
1186 el.contains(h)
1187 ){
1188 return false;
1189 }
1190
1191 if(!visible(el,30,8))return false;
1192
1193 var text=
1194 String(el.textContent||"")
1195 .replace(/\s+/g," ")
1196 .trim();
1197
1198 if(text.length<3)return false;
1199
1200 var r=el.getBoundingClientRect();
1201
1202 if(
1203 r.top<
1204 hr.bottom-1
1205 ){
1206 return false;
1207 }
1208
1209 if(
1210 r.top-cr.top>
1211 Math.min(
1212 280,
1213 cr.height*.65
1214 )
1215 ){
1216 return false;
1217 }
1218
1219 if(
1220 r.height>
1221 cr.height*.58
1222 ){
1223 return false;
1224 }
1225
1226 return true;
1227 })
1228 .sort(function(a,b){
1229 var ar=
1230 a.getBoundingClientRect();
1231
1232 var br=
1233 b.getBoundingClientRect();
1234
1235 return (
1236 ar.top-br.top||
1237 ar.height-br.height
1238 );
1239 });
1240
1241 return rows[0]||null;
1242 }
1243
1244 function alignGeneric(cards){
1245 var rows=
1246 cards.map(function(card){
1247 var h=
1248 heading(card);
1249
1250 var c=
1251 firstContent(
1252 card,
1253 h
1254 );
1255
1256 if(!h||!c)return null;
1257
1258 var cr=
1259 card.getBoundingClientRect();
1260
1261 var rr=
1262 c.getBoundingClientRect();
1263
1264 return {
1265 content:c,
1266 relativeTop:
1267 rr.top-cr.top
1268 };
1269 });
1270
1271 if(
1272 rows.some(function(row){
1273 return !row;
1274 })
1275 ){
1276 return false;
1277 }
1278
1279 var target=
1280 Math.max.apply(
1281 Math,
1282 rows.map(function(row){
1283 return row.relativeTop;
1284 })
1285 );
1286
1287 rows.forEach(function(row){
1288 var delta=
1289 target-
1290 row.relativeTop;
1291
1292 if(delta<=1)return;
1293
1294 saveOriginal(
1295 row.content,
1296 originalMarginTop,
1297 "margin-top"
1298 );
1299
1300 var current=
1301 num(
1302 getComputedStyle(
1303 row.content
1304 ).marginTop
1305 );
1306
1307 row.content.style.setProperty(
1308 "margin-top",
1309 (
1310 current+
1311 delta
1312 )+"px"
1313 );
1314
1315 row.content.setAttribute(
1316 "data-sn-first-content-aligned",
1317 "7"
1318 );
1319
1320 contentManaged.add(
1321 row.content
1322 );
1323 });
1324
1325 return true;
1326 }
1327
1328 function applyRow(group){
1329 if(!validRow(group))return false;
1330
1331 var cards=[];
1332 var seen=new Set();
1333
1334 group.entries.forEach(function(entry){
1335 if(!seen.has(entry.target)){
1336 seen.add(entry.target);
1337 cards.push(entry.target);
1338 }
1339 });
1340
1341 if(cards.length<2)return false;
1342
1343 if(
1344 !alignKnownBars(cards)
1345 ){
1346 alignGeneric(cards);
1347 }
1348
1349 var maxHeight=0;
1350
1351 cards.forEach(function(card){
1352 maxHeight=
1353 Math.max(
1354 maxHeight,
1355 card.getBoundingClientRect().height
1356 );
1357 });
1358
1359 maxHeight=
1360 Math.ceil(
1361 maxHeight
1362 );
1363
1364 if(maxHeight<MIN_H)return false;
1365
1366 cards.forEach(function(card){
1367 saveOriginal(
1368 card,
1369 originalMinHeight,
1370 "min-height"
1371 );
1372
1373 card.style.setProperty(
1374 "min-height",
1375 maxHeight+"px"
1376 );
1377
1378 card.setAttribute(
1379 "data-sn-equal-height-managed",
1380 "7"
1381 );
1382
1383 heightManaged.add(card);
1384 });
1385
1386 return true;
1387 }
1388
1389 function calculate(force){
1390 if(applying)return;
1391
1392 var width=
1393 Math.round(
1394 window.innerWidth
1395 );
1396
1397 var meaningful=
1398 lastWidth<0||
1399 Math.abs(
1400 width-
1401 lastWidth
1402 )>=
1403 MIN_WIDTH_CHANGE;
1404
1405 if(
1406 hasApplied&&
1407 !force&&
1408 !meaningful
1409 ){
1410 return;
1411 }
1412
1413 applying=true;
1414
1415 try{
1416 harmoniseCustomCallouts();
1417
1418 if(width<=MOBILE_MAX){
1419 if(hasApplied){
1420 resetRuntime();
1421 }
1422
1423 hasApplied=false;
1424 lastWidth=width;
1425 return;
1426 }
1427
1428 if(hasApplied){
1429 resetRuntime();
1430 }
1431
1432 var parents=
1433 Array.from(
1434 root.querySelectorAll("*")
1435 )
1436 .filter(function(parent){
1437 return (
1438 visible(
1439 parent,
1440 MIN_W,
1441 MIN_H
1442 )&&
1443 parent.children&&
1444 parent.children.length>=2&&
1445 parent.children.length<=
1446 MAX_PARENT_CHILDREN
1447 );
1448 });
1449
1450 var touched=
1451 new Set();
1452
1453 parents.forEach(function(parent){
1454 var entries=[];
1455
1456 Array.from(
1457 parent.children
1458 ).forEach(function(child){
1459 if(
1460 !visible(
1461 child,
1462 MIN_W,
1463 MIN_H
1464 )
1465 ){
1466 return;
1467 }
1468
1469 var target=
1470 pickTarget(child);
1471
1472 if(!target)return;
1473
1474 entries.push({
1475 target:target,
1476 rect:
1477 target.getBoundingClientRect()
1478 });
1479 });
1480
1481 groupRows(
1482 entries
1483 ).forEach(function(group){
1484 if(!validRow(group))return;
1485
1486 var targets=
1487 group.entries.map(function(entry){
1488 return entry.target;
1489 });
1490
1491 if(
1492 !targets.some(function(el){
1493 return !touched.has(el);
1494 })
1495 ){
1496 return;
1497 }
1498
1499 if(applyRow(group)){
1500 targets.forEach(function(el){
1501 touched.add(el);
1502 });
1503 }
1504 });
1505 });
1506
1507 lastWidth=width;
1508 hasApplied=true;
1509 }finally{
1510 applying=false;
1511 }
1512 }
1513
1514 function resize(){
1515 if(resizeTimer){
1516 clearTimeout(
1517 resizeTimer
1518 );
1519 }
1520
1521 resizeTimer=
1522 setTimeout(
1523 function(){
1524 resizeTimer=0;
1525 calculate(false);
1526 },
1527 RESIZE_DEBOUNCE
1528 );
1529 }
1530
1531 function waitImages(){
1532 var images=
1533 Array.from(
1534 root.querySelectorAll("img")
1535 );
1536
1537 return Promise.all(
1538 images.map(function(img){
1539 if(img.complete){
1540 return Promise.resolve();
1541 }
1542
1543 return new Promise(function(resolve){
1544 var done=function(){
1545 resolve();
1546 };
1547
1548 img.addEventListener(
1549 "load",
1550 done,
1551 {once:true}
1552 );
1553
1554 img.addEventListener(
1555 "error",
1556 done,
1557 {once:true}
1558 );
1559 });
1560 })
1561 );
1562 }
1563
1564 async function initial(){
1565 if(
1566 document.readyState!==
1567 "complete"
1568 ){
1569 await new Promise(function(resolve){
1570 addEventListener(
1571 "load",
1572 resolve,
1573 {once:true}
1574 );
1575 });
1576 }
1577
1578 if(
1579 document.fonts&&
1580 document.fonts.ready
1581 ){
1582 try{
1583 await document.fonts.ready;
1584 }catch(error){}
1585 }
1586
1587 await waitImages();
1588
1589 // Exactly one initial layout calculation.
1590 calculate(true);
1591 }
1592
1593 addEventListener(
1594 "resize",
1595 resize,
1596 {passive:true}
1597 );
1598
1599 initial();
1600 })();
1601 </script>
1602
1603 <!-- SN_HORIZONTAL_BOX_HARMONIZER_END -->
1604 {{/html}}\n