Wiki source code of Service Navigator

Version 22.16 by Veronika Kocher on Thursday, 03 Sep 2026 13:04

Show last authors
1 {{html}}
2 <div style="max-width:1400px;margin:0 auto;">
3
4 <p style="margin:0 0 8px 0;">
5 Artistic and administrative services at the University support many different needs — from research projects and teaching to employment, IT, rooms, procurement, legal questions, international mobility and library services.
6 </p>
7
8 <p style="margin:0 0 22px 0;">
9 The <strong>Service Navigator</strong> is organised around what you need to do, not around the university's organisational chart.
10 </p>
11
12 <section style="margin:0 0 28px 0;padding:16px 18px;border:1px solid #e3ded6;border-radius:10px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);">
13 <h2 style="font-size:20px;margin:0 0 6px 0;color:#35312d;">Find a service</h2>
14 <p style="margin:0 0 12px 0;color:#6a655e;">
15 Search by task, topic or question — for example <em>room, invoice, disability, DOI, event, employment, data protection</em> or <em>library</em>.
16 </p>
17
18 <form action="https://xwiki.uni-ak.ac.at/bin/view/Main/SolrSearch" method="get" role="search" style="margin:0;">
19 <div style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;">
20 <label for="service-navigator-search" style="position:absolute;left:-10000px;">Search services</label>
21 <input
22 id="service-navigator-search"
23 name="text"
24 type="search"
25 placeholder="What do you need help with?"
26 autocomplete="off"
27 style="flex:1 1 520px;min-width:260px;padding:11px 13px;border:1px solid #cfc8bd;border-radius:6px;background:#fffdf9;font-size:16px;"
28 />
29 <button type="submit" class="btn btn-primary" style="padding:11px 22px;">Search</button>
30 </div>
31 </form>
32 </section>
33
34 <h2 style="font-size:24px;margin:0 0 16px 0;color:#35312d;">Find services by what you need to do</h2>
35
36 <div style="
37 display:grid;
38 grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
39 gap:18px;
40 align-items:stretch;
41 ">
42
43 <!-- 1. PEOPLE, EQUALITY, HEALTH & WORK -->
44 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #f0aa00;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
45 <div style="padding:18px 18px 14px 18px;flex:1;">
46 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">PEOPLE &amp; WORK</div>
47 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">People, Equality, Health &amp; Work</h3>
48 <p style="color:#6a655e;margin:0 0 14px 0;">Employment, equality, diversity, disability, accessibility and health.</p>
49
50 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
51 <ul style="margin:0 0 14px 18px;padding:0;">
52 <li>ask about employment, working conditions or labour law</li>
53 <li>get support concerning discrimination, equality or diversity</li>
54 <li>address disability, accessibility or health at work</li>
55 </ul>
56
57 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
58 HR · staff development · equal treatment · diversity · disability · accessibility · health · labour law
59 </div>
60 </div>
61 <div style="padding:0 18px 18px 18px;">
62 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore People &amp; Work</span>
63 </div>
64 </section>
65
66 <!-- 2. IT & DIGITAL SERVICES -->
67 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #38b76a;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
68 <div style="padding:18px 18px 14px 18px;flex:1;">
69 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">IT &amp; DIGITAL</div>
70 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">IT &amp; Digital Services</h3>
71 <p style="color:#6a655e;margin:0 0 14px 0;">Accounts, systems, software, digital infrastructure and IT support.</p>
72
73 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
74 <ul style="margin:0 0 14px 18px;padding:0;">
75 <li>access an account, system or digital service</li>
76 <li>solve an IT problem</li>
77 <li>plan or coordinate a digital or IT project</li>
78 </ul>
79
80 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
81 Accounts · IT support · software · digital tools · infrastructure · IT project coordination
82 </div>
83 </div>
84 <div style="padding:0 18px 18px 18px;">
85 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore IT &amp; Digital Services</span>
86 </div>
87 </section>
88
89 <!-- 3. ROOMS, BUILDINGS & CAMPUS -->
90 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #38b76a;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
91 <div style="padding:18px 18px 14px 18px;flex:1;">
92 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">CAMPUS</div>
93 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Rooms, Buildings &amp; Campus</h3>
94 <p style="color:#6a655e;margin:0 0 14px 0;">Rooms, buildings, facilities, campus use and operational support.</p>
95
96 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
97 <ul style="margin:0 0 14px 18px;padding:0;">
98 <li>book or use a room</li>
99 <li>report a building, equipment or safety issue</li>
100 <li>find information about campus facilities or house rules</li>
101 </ul>
102
103 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
104 Facility management · estates · room coordination · building services · safety · house rules · campus operations
105 </div>
106 </div>
107 <div style="padding:0 18px 18px 18px;">
108 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Rooms &amp; Campus</span>
109 </div>
110 </section>
111
112 <!-- 4. ART & RESEARCH SERVICES -->
113 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
114 <div style="padding:18px 18px 14px 18px;flex:1;">
115 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">ART &amp; RESEARCH</div>
116 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Art &amp; Research Services</h3>
117 <p style="color:#6a655e;margin:0 0 8px 0;">Cross-unit guidance for planning, managing, publishing, sharing and preserving artistic and research projects.</p>
118 <!-- ARSN_ROOT_SCOPE_ROUTING_V1 -->
119 <div style="font-size:12px;color:#506168;line-height:1.45;margin:0 0 14px 0;padding:7px 9px;background:#eef7f9;border-radius:5px;"><strong>Central project &amp; funding hub:</strong> Support Kunst und Forschung · specialist responsibilities remain with the relevant service units.</div>
120
121 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
122 <ul style="margin:0 0 14px 18px;padding:0;">
123 <li>develop or plan an artistic or research project</li>
124 <li>manage research data, documentation or collaboration</li>
125 <li>publish, cite, share or preserve outputs</li>
126 </ul>
127
128 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
129 Research projects · research data management · rights &amp; ethics · repositories · publication · preservation
130 </div>
131 </div>
132 <div style="padding:0 18px 18px 18px;">
133 <a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/" class="btn btn-primary btn-block">Explore Art &amp; Research Services</a>
134 </div>
135 </section>
136
137 <!-- 5. STUDY, TEACHING & CURRICULUM -->
138 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
139 <div style="padding:18px 18px 14px 18px;flex:1;">
140 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">STUDY &amp; TEACHING</div>
141 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Study, Teaching &amp; Curriculum</h3>
142 <p style="color:#6a655e;margin:0 0 14px 0;">Support for studying, teaching, curricula and the learning environment.</p>
143
144 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
145 <ul style="margin:0 0 14px 18px;padding:0;">
146 <li>clarify a study-related question</li>
147 <li>develop or change teaching or curricula</li>
148 <li>find support for final projects or accessibility in study</li>
149 </ul>
150
151 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
152 Student affairs · teaching quality · curriculum development · final projects · student workspace
153 </div>
154 </div>
155 <div style="padding:0 18px 18px 18px;">
156 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Study &amp; Teaching</span>
157 </div>
158 </section>
159
160 <!-- 6. RESEARCH & DISCOVERY RESOURCES -->
161 <section style="display:flex;flex-direction:column;min-height:340px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
162 <div style="padding:18px 18px 14px 18px;flex:1;">
163 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">FIND · SEARCH · DISCOVER</div>
164 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Research &amp; Discovery Resources</h3>
165 <p style="color:#6a655e;margin:0 0 14px 0;">Find literature, databases, archives, collections, repositories and specialist research resources across the University.</p>
166
167 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
168 <ul style="margin:0 0 14px 18px;padding:0;">
169 <li>find literature, media, databases or digital resources</li>
170 <li>research archival, artistic or institutional collections</li>
171 <li>discover repositories, specialist archives and research databases</li>
172 </ul>
173
174 <div style="font-size:12px;color:#6a655e;line-height:1.5;">
175 University Library &amp; supA · licensed databases · University Archive &amp; Art Collection · online collection databases · Oskar Kokoschka Centre · Viktor J. Papanek Foundation · Venedig Biennale Archiv Austria · Weibel Institute &amp; Peter Weibel Archive · Ursula Blickle Video Archive · Angewandte Repository
176 </div>
177 </div>
178 <div style="padding:0 18px 18px 18px;">
179 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Research &amp; Discovery</span>
180 </div>
181 </section>
182
183 <!-- 7. PURCHASING, FINANCE & LOGISTICS -->
184 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #38b76a;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
185 <div style="padding:18px 18px 14px 18px;flex:1;">
186 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">PURCHASE &amp; MOVE</div>
187 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Purchasing, Finance &amp; Logistics</h3>
188 <p style="color:#6a655e;margin:0 0 14px 0;">Buy, pay, budget, send, transport and move things.</p>
189
190 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
191 <ul style="margin:0 0 14px 18px;padding:0;">
192 <li>purchase materials or services</li>
193 <li>clarify an invoice, budget or financial process</li>
194 <li>send, transport or move items</li>
195 </ul>
196
197 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
198 Procurement · controlling · accounting · resource planning · mail &amp; logistics · transport · relocations
199 </div>
200 </div>
201 <div style="padding:0 18px 18px 18px;">
202 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Finance &amp; Logistics</span>
203 </div>
204 </section>
205
206 <!-- 8. LEGAL, DATA PROTECTION & GOVERNANCE -->
207 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #f0aa00;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
208 <div style="padding:18px 18px 14px 18px;flex:1;">
209 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">RIGHTS &amp; RULES</div>
210 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Legal, Data Protection &amp; Governance</h3>
211 <p style="color:#6a655e;margin:0 0 14px 0;">Legal questions, privacy, information rights and institutional rules.</p>
212
213 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
214 <ul style="margin:0 0 14px 18px;padding:0;">
215 <li>clarify a legal or contractual question</li>
216 <li>deal with personal data or privacy</li>
217 <li>understand an institutional rule or information-access requirement</li>
218 </ul>
219
220 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
221 Legal affairs · data protection · freedom of information · governance · institutional rules
222 </div>
223 </div>
224 <div style="padding:0 18px 18px 18px;">
225 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Legal &amp; Governance</span>
226 </div>
227 </section>
228
229 <!-- 9. COMMUNICATION, MEDIA & EVENTS -->
230 <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #e94b13;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
231 <div style="padding:18px 18px 14px 18px;flex:1;">
232 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">COMMUNICATE &amp; ORGANISE</div>
233 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Communication, Media &amp; Events</h3>
234 <p style="color:#6a655e;margin:0 0 14px 0;">Communicate, publish, print, promote and organise events.</p>
235
236 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
237 <ul style="margin:0 0 14px 18px;padding:0;">
238 <li>communicate or publicise something</li>
239 <li>produce a publication, flyer or printed material</li>
240 <li>organise or support an event</li>
241 </ul>
242
243 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
244 Press &amp; communications · publications · print materials · event management · Open House · festival
245 </div>
246 </div>
247 <div style="padding:0 18px 18px 18px;">
248 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Communication &amp; Events</span>
249 </div>
250 </section>
251
252 <!-- 10. INTERNATIONAL OFFICE -->
253 <section style="display:flex;flex-direction:column;min-height:300px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;">
254 <div style="padding:18px 18px 14px 18px;flex:1;">
255 <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">GO INTERNATIONAL</div>
256 <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">International Office</h3>
257 <p style="color:#6a655e;margin:0 0 14px 0;">International mobility, exchange and international support.</p>
258
259 <div style="font-weight:700;margin-bottom:6px;">I need to…</div>
260 <ul style="margin:0 0 14px 18px;padding:0;">
261 <li>plan an international stay or exchange</li>
262 <li>ask about mobility opportunities</li>
263 <li>find support for an international context</li>
264 </ul>
265
266 <div style="font-size:12px;color:#6a655e;line-height:1.45;">
267 Mobility · exchange · international cooperation · international support
268 </div>
269 </div>
270 <div style="padding:0 18px 18px 18px;">
271 <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore International Office</span>
272 </div>
273 </section>
274
275
276 </div>
277
278 <aside style="margin-top:26px;padding:14px 16px;border:1px solid #cfe8ef;border-left:4px solid #21b6d7;background:#eaf6f9;border-radius:6px;">
279 <strong>Not sure where to start?</strong>
280 <div style="margin-top:4px;">
281 Use the search at the top of the page or choose the card that best matches what you are trying to do. A service may deliberately appear in more than one area when this makes it easier to find.
282 </div>
283 </aside>
284
285 </div>
286 {{/html}}
287
288 {{html clean="false"}}
289 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
290
291 <style data-sn-service-navigator-master="1">
292 /* =========================================================
293 MASTER TYPOGRAPHY
294 ========================================================= */
295 #xwikicontent h1,
296 #xwikicontent h2,
297 #xwikicontent h3,
298 #xwikicontent h4,
299 #xwikicontent h5,
300 #xwikicontent h6,
301 #xwikicontent .box-title,
302 #xwikicontent [role="heading"],
303 #xwikicontent h1 a,
304 #xwikicontent h2 a,
305 #xwikicontent h3 a,
306 #xwikicontent h4 a,
307 #xwikicontent h5 a,
308 #xwikicontent h6 a,
309 #xwikicontent .box-title a,
310 #xwikicontent [role="heading"] a{
311 text-align:left!important;
312 text-justify:auto!important;
313 word-spacing:normal!important;
314 }
315
316 /* =========================================================
317 COMING SOON / IN VORBEREITUNG
318 ========================================================= */
319 .sn-coming-soon-badge{
320 display:inline-block;
321 vertical-align:middle;
322 margin-left:10px;
323 padding:4px 8px;
324 border-radius:14px;
325 border:1px solid #efd9cc;
326 background:#fff4ee;
327 color:#8a4d36;
328 font-size:11px;
329 font-weight:700;
330 letter-spacing:.055em;
331 line-height:1.2;
332 white-space:nowrap;
333 }
334
335 /* =========================================================
336 NATIVE / DETAIL CALLOUT GEOMETRY
337 Preserve existing backgrounds.
338 ========================================================= */
339 #xwikicontent .arsn-info,
340 #xwikicontent .dmp-info,
341 #xwikicontent .ido-info,
342 #xwikicontent .pp-info,
343 #xwikicontent .infomessage{
344 box-sizing:border-box!important;
345 border-left:4px solid #21b6d7!important;
346 border-radius:8px;
347 text-align:left!important;
348 word-spacing:normal!important;
349 }
350
351 #xwikicontent .arsn-warn,
352 #xwikicontent .dmp-warn,
353 #xwikicontent .ido-warn,
354 #xwikicontent .pp-warn,
355 #xwikicontent .warn,
356 #xwikicontent .warning,
357 #xwikicontent .warningmessage,
358 #xwikicontent .errormessage{
359 box-sizing:border-box!important;
360 border-left:4px solid #e94b13!important;
361 border-radius:8px;
362 text-align:left!important;
363 word-spacing:normal!important;
364 }
365
366 [data-sn-master-equal-height],
367 [data-sn-master-first-row]{
368 box-sizing:border-box;
369 }
370 </style>
371
372 <script data-sn-service-navigator-master="1">
373 (function(){
374 "use strict";
375
376 var PAGE_KIND="overview";
377 var PLACEHOLDER=false;
378 var PLACEHOLDER_LABEL="COMING SOON";
379
380 var MOBILE_MAX=767;
381 var ROW_TOLERANCE=6;
382 var RESIZE_DEBOUNCE=220;
383
384 var root=
385 document.getElementById("xwikicontent")||
386 document.querySelector(".xwiki-rendering-content")||
387 document.querySelector("main")||
388 document.body;
389
390 if(!root)return;
391
392 var managedHeight=new Set();
393 var managedMargin=new Set();
394 var originalHeight=new WeakMap();
395 var originalMargin=new WeakMap();
396
397 var resizeTimer=0;
398 var running=false;
399
400 var THEMES=[
401 {
402 name:"BLUE",
403 accent:"#21b6d7",
404 bg:"#eaf7fb",
405 text:"#315d68",
406 labels:[
407 "HIER STARTEN",
408 "ENTSCHEIDEN",
409 "ÜBERPRÜFEN & ANPASSEN",
410 "START HERE",
411 "DECIDE",
412 "REVIEW & ADAPT"
413 ]
414 },
415 {
416 name:"RED",
417 accent:"#e94b13",
418 bg:"#fff1ec",
419 text:"#8a4d36",
420 labels:[
421 "PLANEN & ORGANISIEREN",
422 "ORGANISIEREN & DOKUMENTIEREN",
423 "PUBLIZIEREN & PRÄSENTIEREN",
424 "PLAN & ORGANISE",
425 "PLAN & ORGANIZE",
426 "ORGANISE & DOCUMENT",
427 "ORGANIZE & DOCUMENT",
428 "PUBLISH & PRESENT"
429 ]
430 },
431 {
432 name:"YELLOW",
433 accent:"#f0aa00",
434 bg:"#fff8e7",
435 text:"#785b17",
436 labels:[
437 "SCHÜTZEN & KLÄREN",
438 "STANDARDISIEREN & IDENTIFIZIEREN",
439 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
440 "PROTECT & CLARIFY",
441 "STANDARDISE & IDENTIFY",
442 "STANDARDIZE & IDENTIFY",
443 "OPEN, REUSE & MAKE FINDABLE"
444 ]
445 },
446 {
447 name:"GREEN",
448 accent:"#38b76a",
449 bg:"#edf9f1",
450 text:"#3f7451",
451 labels:[
452 "INFRASTRUKTUR EINRICHTEN",
453 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
454 "SPEICHERN & ZUGRIFF STEUERN",
455 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
456 "SET UP INFRASTRUCTURE",
457 "SET UP INFRASTRUCTURE & COLLABORATION",
458 "STORE & CONTROL ACCESS",
459 "REPOSITORY, PRESERVE & HAND OVER"
460 ]
461 }
462 ];
463
464 function num(value){
465 var n=parseFloat(value);
466 return Number.isFinite(n)?n:0;
467 }
468
469 function norm(value){
470 return String(value||"")
471 .replace(/\s+/g," ")
472 .trim()
473 .toUpperCase();
474 }
475
476 function visible(el){
477 if(!el||el.nodeType!==1)return false;
478
479 var style=getComputedStyle(el);
480 var rect=el.getBoundingClientRect();
481
482 return (
483 style.display!=="none"&&
484 style.visibility!=="hidden"&&
485 rect.width>20&&
486 rect.height>4
487 );
488 }
489
490 function saveStyle(el,map,property){
491 if(map.has(el))return;
492
493 map.set(el,{
494 value:el.style.getPropertyValue(property),
495 priority:el.style.getPropertyPriority(property)
496 });
497 }
498
499 function restoreStyle(el,map,property){
500 var original=map.get(el);
501
502 if(original&&original.value){
503 el.style.setProperty(
504 property,
505 original.value,
506 original.priority||""
507 );
508 }else{
509 el.style.removeProperty(property);
510 }
511 }
512
513 function resetRuntime(){
514 managedHeight.forEach(function(el){
515 restoreStyle(
516 el,
517 originalHeight,
518 "min-height"
519 );
520 el.removeAttribute(
521 "data-sn-master-equal-height"
522 );
523 });
524
525 managedMargin.forEach(function(el){
526 restoreStyle(
527 el,
528 originalMargin,
529 "margin-top"
530 );
531 el.removeAttribute(
532 "data-sn-master-first-row"
533 );
534 });
535
536 managedHeight.clear();
537 managedMargin.clear();
538 }
539
540 function themeFor(text){
541 var value=norm(text);
542
543 for(var i=0;i<THEMES.length;i++){
544 for(var j=0;j<THEMES[i].labels.length;j++){
545 var label=THEMES[i].labels[j];
546
547 if(
548 value===label||
549 value.indexOf(label+" ")===0||
550 value.indexOf(label+" -")===0||
551 value.indexOf(label+" ·")===0
552 ){
553 return THEMES[i];
554 }
555 }
556 }
557
558 return null;
559 }
560
561 /* =======================================================
562 PLACEHOLDER BADGE
563 ======================================================= */
564
565 function applyPlaceholderBadge(){
566 if(!PLACEHOLDER)return;
567
568 if(
569 document.querySelector(
570 ".sn-coming-soon-badge"
571 )
572 ){
573 return;
574 }
575
576 var title=
577 document.querySelector(
578 "#document-title"
579 )||
580 document.querySelector(
581 "h1"
582 );
583
584 if(!title)return;
585
586 var badge=
587 document.createElement(
588 "span"
589 );
590
591 badge.className=
592 "sn-coming-soon-badge";
593
594 badge.textContent=
595 PLACEHOLDER_LABEL;
596
597 badge.setAttribute(
598 "aria-label",
599 PLACEHOLDER_LABEL
600 );
601
602 title.appendChild(
603 badge
604 );
605 }
606
607 /* =======================================================
608 DETAIL PAGE OWN-ACCENT PROPAGATION
609 ======================================================= */
610
611 function parseRGB(value){
612 var match=String(value||"").match(
613 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
614 );
615
616 if(!match)return null;
617
618 return [
619 Number(match[1]),
620 Number(match[2]),
621 Number(match[3])
622 ];
623 }
624
625 function distance(a,b){
626 return Math.sqrt(
627 Math.pow(a[0]-b[0],2)+
628 Math.pow(a[1]-b[1],2)+
629 Math.pow(a[2]-b[2],2)
630 );
631 }
632
633 function paletteMatch(cssColor){
634 var rgb=parseRGB(cssColor);
635
636 if(!rgb)return null;
637
638 var palette=[
639 {hex:"#21b6d7",rgb:[33,182,215]},
640 {hex:"#e94b13",rgb:[233,75,19]},
641 {hex:"#f0aa00",rgb:[240,170,0]},
642 {hex:"#38b76a",rgb:[56,183,106]}
643 ];
644
645 var best=null;
646 var bestDistance=Infinity;
647
648 palette.forEach(function(item){
649 var d=distance(rgb,item.rgb);
650
651 if(d<bestDistance){
652 best=item;
653 bestDistance=d;
654 }
655 });
656
657 return bestDistance<=30
658 ?best
659 :null;
660 }
661
662 function propagateDetailAccents(){
663 if(PAGE_KIND!=="detail")return;
664
665 Array.from(
666 root.querySelectorAll(
667 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
668 ".arsn-source,.dmp-source,.ido-source,.pp-source"
669 )
670 ).forEach(function(el){
671 if(!visible(el))return;
672
673 var style=getComputedStyle(el);
674
675 if(
676 num(style.borderTopWidth)>=2
677 ){
678 var match=
679 paletteMatch(
680 style.borderTopColor
681 );
682
683 if(match){
684 el.style.setProperty(
685 "border-left",
686 "4px solid "+match.hex,
687 "important"
688 );
689 }
690 }
691 });
692
693 // Warning families: explicit safety override.
694 Array.from(
695 root.querySelectorAll(
696 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
697 ".warn,.warning,.warningmessage,.errormessage"
698 )
699 ).forEach(function(el){
700 if(!visible(el))return;
701
702 el.style.setProperty(
703 "border-left",
704 "4px solid #e94b13",
705 "important"
706 );
707 });
708
709 // Info families: explicit orientation override.
710 Array.from(
711 root.querySelectorAll(
712 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
713 )
714 ).forEach(function(el){
715 if(!visible(el))return;
716
717 el.style.setProperty(
718 "border-left",
719 "4px solid #21b6d7",
720 "important"
721 );
722 });
723 }
724
725 /* =======================================================
726 OVERVIEW SEMANTIC THEME PALETTE
727 ======================================================= */
728
729 function smallestThemeHeaders(){
730 return Array.from(
731 root.querySelectorAll(
732 "div,span,p,strong,h3,h4,h5,h6"
733 )
734 ).filter(function(el){
735 if(!visible(el))return false;
736 if(!themeFor(el.textContent))return false;
737
738 return !Array.from(
739 el.children||[]
740 ).some(function(child){
741 return !!themeFor(
742 child.textContent
743 );
744 });
745 });
746 }
747
748 function findOverviewCard(header){
749 var node=header.parentElement;
750 var candidates=[];
751
752 while(node&&node!==root){
753 var rect=node.getBoundingClientRect();
754 var style=getComputedStyle(node);
755
756 var border=
757 num(style.borderTopWidth)+
758 num(style.borderRightWidth)+
759 num(style.borderBottomWidth)+
760 num(style.borderLeftWidth);
761
762 if(
763 rect.width>=220&&
764 rect.width<=800&&
765 rect.height>=120&&
766 border>=1
767 ){
768 candidates.push(node);
769 }
770
771 node=node.parentElement;
772 }
773
774 if(!candidates.length)return null;
775
776 candidates.sort(function(a,b){
777 return (
778 b.getBoundingClientRect().height-
779 a.getBoundingClientRect().height
780 );
781 });
782
783 return candidates[0];
784 }
785
786 function rowCandidates(link,card){
787 var result=[];
788 var cardRect=
789 card.getBoundingClientRect();
790
791 var node=link;
792
793 while(node&&node!==card){
794 if(visible(node)){
795 var rect=
796 node.getBoundingClientRect();
797
798 if(
799 rect.height<=105&&
800 rect.width>=
801 cardRect.width*.50&&
802 rect.width<=
803 cardRect.width*1.03
804 ){
805 result.push(node);
806 }
807 }
808
809 node=node.parentElement;
810 }
811
812 return result;
813 }
814
815 function chooseOuterRow(
816 candidates,
817 link
818 ){
819 if(!candidates.length){
820 return link;
821 }
822
823 var bordered=
824 candidates.filter(function(el){
825 return (
826 num(
827 getComputedStyle(el)
828 .borderLeftWidth
829 )>=1
830 );
831 });
832
833 var pool=
834 bordered.length
835 ?bordered
836 :candidates;
837
838 pool.sort(function(a,b){
839 var ar=
840 a.getBoundingClientRect();
841
842 var br=
843 b.getBoundingClientRect();
844
845 return (
846 ar.left-br.left||
847 br.width-ar.width
848 );
849 });
850
851 return pool[0]||link;
852 }
853
854 function applyOverviewPalette(){
855 if(PAGE_KIND!=="overview"){
856 return [];
857 }
858
859 var headers=
860 smallestThemeHeaders()
861 .map(function(el){
862 return {
863 el:el,
864 theme:
865 themeFor(
866 el.textContent
867 ),
868 card:
869 findOverviewCard(
870 el
871 )
872 };
873 })
874 .filter(function(row){
875 return !!row.card;
876 });
877
878 var unique=[];
879 var seenHeaders=new Set();
880
881 headers.forEach(function(row){
882 var key=
883 row.theme.name+
884 "|"+
885 Math.round(
886 row.card
887 .getBoundingClientRect()
888 .left
889 )+
890 "|"+
891 Math.round(
892 row.el
893 .getBoundingClientRect()
894 .top
895 );
896
897 if(!seenHeaders.has(key)){
898 seenHeaders.add(key);
899 unique.push(row);
900 }
901 });
902
903 unique.forEach(function(row){
904 var headerRect=
905 row.el
906 .getBoundingClientRect();
907
908 row.el.style.setProperty(
909 "background",
910 row.theme.bg,
911 "important"
912 );
913
914 row.el.style.setProperty(
915 "color",
916 row.theme.text,
917 "important"
918 );
919
920 row.el.style.setProperty(
921 "text-align",
922 "left",
923 "important"
924 );
925
926 row.el.style.setProperty(
927 "word-spacing",
928 "normal",
929 "important"
930 );
931
932 var later=
933 unique
934 .filter(function(other){
935 return (
936 other.card===row.card&&
937 other.el
938 .getBoundingClientRect()
939 .top>
940 headerRect.top+2
941 );
942 })
943 .sort(function(a,b){
944 return (
945 a.el
946 .getBoundingClientRect()
947 .top-
948 b.el
949 .getBoundingClientRect()
950 .top
951 );
952 });
953
954 var stopTop=
955 later.length
956 ?later[0].el
957 .getBoundingClientRect()
958 .top
959 :Infinity;
960
961 Array.from(
962 row.card.querySelectorAll("a")
963 ).forEach(function(link){
964 if(!visible(link))return;
965
966 var rect=
967 link.getBoundingClientRect();
968
969 if(
970 rect.top<=
971 headerRect.bottom-2||
972 rect.top>=
973 stopTop-2
974 ){
975 return;
976 }
977
978 var candidates=
979 rowCandidates(
980 link,
981 row.card
982 );
983
984 var target=
985 chooseOuterRow(
986 candidates,
987 link
988 );
989
990 candidates.forEach(function(el){
991 el.style.setProperty(
992 "border-left",
993 "0 solid transparent",
994 "important"
995 );
996 });
997
998 target.style.setProperty(
999 "border-left",
1000 "3px solid "+
1001 row.theme.accent,
1002 "important"
1003 );
1004
1005 target.style.setProperty(
1006 "box-sizing",
1007 "border-box",
1008 "important"
1009 );
1010 });
1011 });
1012
1013 return unique;
1014 }
1015
1016 /* =======================================================
1017 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1018 ======================================================= */
1019
1020 function alignOverviewCards(headers){
1021 if(
1022 PAGE_KIND!=="overview"||
1023 window.innerWidth<=MOBILE_MAX
1024 ){
1025 return;
1026 }
1027
1028 var cards=[];
1029 var seen=new Set();
1030
1031 headers.forEach(function(row){
1032 if(!seen.has(row.card)){
1033 seen.add(row.card);
1034 cards.push(row.card);
1035 }
1036 });
1037
1038 if(cards.length<2){
1039 return;
1040 }
1041
1042 // Group cards by actual top position.
1043 var groups=[];
1044
1045 cards.forEach(function(card){
1046 var top=
1047 card.getBoundingClientRect().top;
1048
1049 var group=null;
1050
1051 for(var i=0;i<groups.length;i++){
1052 if(
1053 Math.abs(
1054 groups[i].top-top
1055 )<=ROW_TOLERANCE
1056 ){
1057 group=groups[i];
1058 break;
1059 }
1060 }
1061
1062 if(!group){
1063 group={
1064 top:top,
1065 cards:[]
1066 };
1067 groups.push(group);
1068 }
1069
1070 group.cards.push(card);
1071 });
1072
1073 groups.forEach(function(group){
1074 if(group.cards.length<2){
1075 return;
1076 }
1077
1078 var firstHeaders=
1079 group.cards.map(function(card){
1080 var candidates=
1081 headers
1082 .filter(function(row){
1083 return row.card===card;
1084 })
1085 .sort(function(a,b){
1086 return (
1087 a.el
1088 .getBoundingClientRect()
1089 .top-
1090 b.el
1091 .getBoundingClientRect()
1092 .top
1093 );
1094 });
1095
1096 return candidates.length
1097 ?candidates[0]
1098 :null;
1099 });
1100
1101 if(
1102 !firstHeaders.some(function(row){
1103 return !row;
1104 })
1105 ){
1106 var targetTop=
1107 Math.max.apply(
1108 Math,
1109 firstHeaders.map(function(row){
1110 return (
1111 row.el
1112 .getBoundingClientRect()
1113 .top-
1114 row.card
1115 .getBoundingClientRect()
1116 .top
1117 );
1118 })
1119 );
1120
1121 firstHeaders.forEach(function(row){
1122 var relativeTop=
1123 row.el
1124 .getBoundingClientRect()
1125 .top-
1126 row.card
1127 .getBoundingClientRect()
1128 .top;
1129
1130 var delta=
1131 targetTop-relativeTop;
1132
1133 if(delta>1){
1134 saveStyle(
1135 row.el,
1136 originalMargin,
1137 "margin-top"
1138 );
1139
1140 var current=
1141 num(
1142 getComputedStyle(
1143 row.el
1144 ).marginTop
1145 );
1146
1147 row.el.style.setProperty(
1148 "margin-top",
1149 (
1150 current+delta
1151 )+"px"
1152 );
1153
1154 row.el.setAttribute(
1155 "data-sn-master-first-row",
1156 "1"
1157 );
1158
1159 managedMargin.add(
1160 row.el
1161 );
1162 }
1163 });
1164 }
1165
1166 var maxHeight=0;
1167
1168 group.cards.forEach(function(card){
1169 maxHeight=
1170 Math.max(
1171 maxHeight,
1172 card
1173 .getBoundingClientRect()
1174 .height
1175 );
1176 });
1177
1178 maxHeight=
1179 Math.ceil(maxHeight);
1180
1181 group.cards.forEach(function(card){
1182 saveStyle(
1183 card,
1184 originalHeight,
1185 "min-height"
1186 );
1187
1188 card.style.setProperty(
1189 "min-height",
1190 maxHeight+"px"
1191 );
1192
1193 card.setAttribute(
1194 "data-sn-master-equal-height",
1195 "1"
1196 );
1197
1198 managedHeight.add(
1199 card
1200 );
1201 });
1202 });
1203 }
1204
1205 /* =======================================================
1206 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1207 ======================================================= */
1208
1209 function equaliseDetailGrids(){
1210 if(
1211 PAGE_KIND!=="detail"||
1212 window.innerWidth<=MOBILE_MAX
1213 ){
1214 return;
1215 }
1216
1217 var selectors=[
1218 ".arsn-grid",
1219 ".arsn-grid-2",
1220 ".arsn-grid-3",
1221 ".dmp-grid",
1222 ".ido-grid",
1223 ".pp-grid"
1224 ];
1225
1226 selectors.forEach(function(selector){
1227 Array.from(
1228 root.querySelectorAll(selector)
1229 ).forEach(function(grid){
1230 var children=
1231 Array.from(
1232 grid.children||[]
1233 ).filter(visible);
1234
1235 if(children.length<2){
1236 return;
1237 }
1238
1239 var groups=[];
1240
1241 children.forEach(function(child){
1242 var top=
1243 child
1244 .getBoundingClientRect()
1245 .top;
1246
1247 var group=null;
1248
1249 for(var i=0;i<groups.length;i++){
1250 if(
1251 Math.abs(
1252 groups[i].top-top
1253 )<=ROW_TOLERANCE
1254 ){
1255 group=groups[i];
1256 break;
1257 }
1258 }
1259
1260 if(!group){
1261 group={
1262 top:top,
1263 items:[]
1264 };
1265 groups.push(group);
1266 }
1267
1268 group.items.push(child);
1269 });
1270
1271 groups.forEach(function(group){
1272 if(group.items.length<2){
1273 return;
1274 }
1275
1276 var maxHeight=0;
1277
1278 group.items.forEach(function(item){
1279 maxHeight=
1280 Math.max(
1281 maxHeight,
1282 item
1283 .getBoundingClientRect()
1284 .height
1285 );
1286 });
1287
1288 maxHeight=
1289 Math.ceil(maxHeight);
1290
1291 group.items.forEach(function(item){
1292 saveStyle(
1293 item,
1294 originalHeight,
1295 "min-height"
1296 );
1297
1298 item.style.setProperty(
1299 "min-height",
1300 maxHeight+"px"
1301 );
1302
1303 item.setAttribute(
1304 "data-sn-master-equal-height",
1305 "1"
1306 );
1307
1308 managedHeight.add(item);
1309 });
1310 });
1311 });
1312 });
1313 }
1314
1315 /* =======================================================
1316 RUN / RESPONSIVE SCHEDULING
1317 ======================================================= */
1318
1319 function run(){
1320 if(running)return;
1321
1322 running=true;
1323
1324 try{
1325 resetRuntime();
1326 applyPlaceholderBadge();
1327 propagateDetailAccents();
1328
1329 var headers=
1330 applyOverviewPalette();
1331
1332 if(
1333 window.innerWidth>
1334 MOBILE_MAX
1335 ){
1336 alignOverviewCards(
1337 headers
1338 );
1339
1340 equaliseDetailGrids();
1341 }
1342 }finally{
1343 running=false;
1344 }
1345 }
1346
1347 function onResize(){
1348 if(resizeTimer){
1349 clearTimeout(
1350 resizeTimer
1351 );
1352 }
1353
1354 resizeTimer=
1355 setTimeout(
1356 function(){
1357 resizeTimer=0;
1358 run();
1359 },
1360 RESIZE_DEBOUNCE
1361 );
1362 }
1363
1364 async function waitForReady(){
1365 if(
1366 document.readyState!=="complete"
1367 ){
1368 await new Promise(function(resolve){
1369 window.addEventListener(
1370 "load",
1371 resolve,
1372 {once:true}
1373 );
1374 });
1375 }
1376
1377 if(
1378 document.fonts&&
1379 document.fonts.ready
1380 ){
1381 try{
1382 await document.fonts.ready;
1383 }catch(error){}
1384 }
1385
1386 var images=
1387 Array.from(
1388 root.querySelectorAll("img")
1389 );
1390
1391 await Promise.all(
1392 images.map(function(img){
1393 if(img.complete){
1394 return Promise.resolve();
1395 }
1396
1397 return new Promise(function(resolve){
1398 var done=function(){
1399 resolve();
1400 };
1401
1402 img.addEventListener(
1403 "load",
1404 done,
1405 {once:true}
1406 );
1407
1408 img.addEventListener(
1409 "error",
1410 done,
1411 {once:true}
1412 );
1413 });
1414 })
1415 );
1416
1417 run();
1418 }
1419
1420 window.addEventListener(
1421 "resize",
1422 onResize,
1423 {passive:true}
1424 );
1425
1426 waitForReady();
1427 })();
1428 </script>
1429
1430 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1431 {{/html}}