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

Hide last authors
Veronika Kocher 6.1 1 {{html clean="false"}}
2 <style>
3 .pp{max-width:1400px;margin:0 auto;color:#322f2b} .pp *{box-sizing:border-box}
4 .card{border:1px solid #e3ded6;border-radius:11px;background:#fcfbf8;box-shadow:0 1px 3px rgba(0,0,0,.035)}
5 .eye{font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase}
6 .hero{height:125px;overflow:hidden;background:#f1eee9} .hero img{width:100%;height:100%;object-fit:cover;object-position:center 48%;display:block}
7 .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:14px}
8 .check{position:relative;padding:12px 13px 12px 37px;border:1px solid #e3ded6;border-radius:8px;background:#fffdf9;color:#504a44;line-height:1.5}
9 .check:before{content:"✓";position:absolute;left:13px;top:10px;color:#e94b13;font-weight:800}
10 .info{padding:15px 17px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#eaf6f9;border-radius:8px;color:#365e68}
11 .info strong{color:#2d5661} .warn{padding:15px 17px;border:1px solid #efd9cc;border-left:5px solid #e94b13;background:#fff6f1;border-radius:8px;color:#67564e} .warn strong{color:#744531}
12 .sec{margin:0 0 28px 0} .sec h3{font-size:22px;margin:0 0 6px;color:#35312d} .sec>p{color:#6a655e;line-height:1.55}
13 .role{padding:15px 16px;border:1px solid #e3ded6;border-top:4px solid #e94b13;border-radius:9px;background:#fcfbf8} .role h4{font-size:17px;margin:0 0 6px;color:#35312d} .role p{margin:0;color:#625d56;line-height:1.5}
14 .detail{margin:8px 0;border:1px solid #e3ded6;border-radius:8px;background:#fcfbf8;overflow:hidden} .detail summary{cursor:pointer;padding:12px 14px;font-weight:700;color:#403b36;background:#f3efe8} .detail[open] summary{border-bottom:1px solid #e3ded6} .detail .body{padding:14px 16px;color:#514c46;line-height:1.55}
Veronika Kocher 8.1 15 .chip{display:inline-block;padding:4px 8px;margin:3px 4px 3px 0;border-radius:14px;background:#f3efe8;border:1px solid #e3ded6;color:#5c5650;font-size:12px;text-decoration:none}.chip:hover,.chip:focus{background:#fff7f1;border-color:#e7c8b8;color:#6f3f2e;text-decoration:none}
Veronika Kocher 6.1 16 .tbl{width:100%;border-collapse:collapse;background:#fffdf9} .tbl th,.tbl td{border:1px solid #e3ded6;padding:10px 11px;vertical-align:top;text-align:left} .tbl th{background:#f3efe8;color:#403b36}
17 .linkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px} .navlink{display:block;padding:10px 11px;border:1px solid #e9e4dc;border-left:3px solid #e94b13;border-radius:6px;background:#fffdf9;color:#252321;text-decoration:none;font-weight:600} .navlink:hover{background:#fff7f1;text-decoration:none}
18 </style>
Veronika Kocher 2.1 19
Veronika Kocher 9.1 20 <style>
21 .research-example-grid{
22 display:grid;
23 grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
24 gap:14px;
25 margin-top:12px;
26 }
27 .research-example{
28 padding:16px 17px;
29 border:1px solid #e3ded6;
30 border-radius:9px;
31 background:#fcfbf8;
32 box-shadow:0 1px 3px rgba(0,0,0,.03);
33 }
34 .research-example h4{
35 font-size:18px;
36 margin:0 0 7px 0;
37 color:#35312d;
38 }
39 .research-example p{
40 margin:0 0 10px 0;
41 color:#625d56;
42 line-height:1.5;
43 }
44 .research-example a{
45 display:inline-block;
46 font-weight:700;
47 text-decoration:none;
48 }
49 .research-example a:hover,
50 .research-example a:focus{
51 text-decoration:underline;
52 }
53 </style>
54
55
Veronika Kocher 6.1 56 <div class="pp">
Veronika Kocher 2.1 57
Veronika Kocher 6.1 58 <section class="card" style="margin-bottom:18px;overflow:hidden;border-left:6px solid #e94b13;">
59 <div class="hero"><img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Planning and organising an artistic or research project"></div>
60 <div style="padding:18px 21px 20px">
61 <div class="eye" style="color:#8a4d36;margin-bottom:5px">ENABLE · PROJECT PLANNING &amp; ORGANISATION</div>
62 <h2 style="font-size:27px;line-height:1.2;margin:0 0 8px;color:#2c2926">Build a project that can actually be hosted, funded, staffed and delivered</h2>
63 <p style="margin:0;color:#5e5953;line-height:1.6;max-width:1120px">Project planning at the Angewandte is not only a timeline and a budget. A workable project needs an artistic or research home, clear responsibilities, an appropriate funding and administrative route, and early coordination with the university structures triggered by your project.</p>
64 </div></section>
Veronika Kocher 2.1 65
Veronika Kocher 6.1 66 <div class="info" style="margin-bottom:20px"><strong>Do not contact every unit at once.</strong> Start with your <strong>academic/artistic home</strong> and, for funded or project-based art/research, <strong>Support Kunst und Forschung</strong>. Then involve other structures only when a project trigger makes them relevant: staff, money, contracts, IT, rooms, events, data, students, accessibility, international partners, etc.</div>
Veronika Kocher 2.1 67
Veronika Kocher 6.1 68 <div class="warn" style="margin-bottom:28px"><strong>Current structures can change.</strong> This page follows the current 2026 organisational structure and links to live university pages. For approvals, signatures, internal deadlines and binding procedures, confirm the current route with the responsible unit.</div>
Veronika Kocher 2.1 69
Veronika Kocher 6.1 70 <section class="sec">
71 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 1 · PROJECT GOVERNANCE</div>
72 <h3>Define the internal project structure before the detailed work plan</h3>
73 <p>Write down names, not just functions. One person can hold several roles in a small project, but the responsibility should still be explicit.</p>
74 <div class="grid">
75 <div class="role"><h4>Project / artistic-research lead</h4><p>Owns the concept, scope, key decisions, quality and external commitments.</p></div>
76 <div class="role"><h4>Institutional / academic home</h4><p>The institute, department, special university facility or organisational unit in which the project is anchored.</p></div>
77 <div class="role"><h4>Project administration</h4><p>Coordinates proposal documents, deadlines, funder communication, contracts, evidence and internal routing.</p></div>
78 <div class="role"><h4>Budget responsibility</h4><p>Maintains the working budget, funding conditions, approvals, cost tracking and change control.</p></div>
79 <div class="role"><h4>People / team responsibility</h4><p>Clarifies staffing, recruitment, workload, contracts, onboarding, external contributors and collaboration.</p></div>
80 <div class="role"><h4>Data / documentation responsibility</h4><p>Coordinates files, storage, backup, access, metadata, consent, documentation and handover.</p></div>
81 <div class="role"><h4>Infrastructure / production responsibility</h4><p>Coordinates rooms, workshops, equipment, IT, procurement, logistics, safety and technical dependencies.</p></div>
82 <div class="role"><h4>Communication / dissemination responsibility</h4><p>Plans public communication, publication, events, documentation, credits, visibility and audiences.</p></div>
83 <div class="role"><h4>Partner contact</h4><p>Coordinates external institutions, deliverables, budget interfaces and agreements.</p></div>
84 </div>
85 </section>
Veronika Kocher 2.1 86
Veronika Kocher 6.1 87 <section class="sec">
88 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 2 · INTERNAL ROUTE</div>
89 <h3>Use this order to navigate the Angewandte</h3>
90 <div class="grid">
91 <div class="check"><strong>1 · Anchor the project</strong><br>Clarify the institute, department, special university facility or organisational unit that hosts it.</div>
92 <div class="check"><strong>2 · Clarify funding / project route</strong><br>For art, research and externally funded projects, involve Support Kunst und Forschung early.</div>
93 <div class="check"><strong>3 · Trigger specialist services</strong><br>Finance, HR, Legal, IT, Facility, Events, Communication, International, Library, Studies, DEI, etc. only where needed.</div>
94 <div class="check"><strong>4 · Confirm institutional approvals</strong><br>Clarify internal deadlines, budget/HR approval, signing authority, contracts and external submission route.</div>
95 <div class="check"><strong>5 · Freeze the submission baseline</strong><br>Store the final call, approved budget, work plan, roles and submitted documents.</div>
96 <div class="check"><strong>6 · Plan change control</strong><br>Decide who must approve changes to scope, staff, budget, partners, timeline or public outputs.</div>
97 </div>
98 </section>
Veronika Kocher 2.1 99
Veronika Kocher 9.1 100
Veronika Kocher 6.1 101 <section class="sec">
Veronika Kocher 9.1 102 <div class="eye" style="color:#8a4d36;margin-bottom:4px">EXAMPLES · HOW RESEARCH IS SITUATED AT THE ANGEWANDTE</div>
103 <h3>Use existing projects to understand possible research profiles and institutional homes</h3>
104 <p>
105 The Angewandte presents research projects through several research-focus perspectives.
106 These pages are useful when you are trying to understand how a project like yours might be framed,
107 where comparable projects are located in the University, which funding programmes have been used,
108 and which institutes or research environments have hosted related work.
109 </p>
110
111 <div class="research-example-grid">
112
113 <div class="research-example" style="border-top:4px solid #e94b13;">
114 <div class="eye" style="font-size:11px;color:#8a4d36;margin-bottom:5px;">ARTISTIC RESEARCH</div>
115 <h4>Fokus Künstlerische Forschung</h4>
116 <p>
117 Examples of artistic and arts-based research projects at the Angewandte, including many projects
118 funded through FWF PEEK and related programmes. Use this page to see how artistic practice,
119 research questions, project leadership and institutional affiliation come together in funded projects.
120 </p>
121 <a href="https://dieangewandte.at/kunst_und_forschung/projekte_fokus_forschung/kuenstlerische_forschung"
122 target="_blank" rel="noopener">
123 View artistic research projects ↗
124 </a>
125 </div>
126
127 <div class="research-example" style="border-top:4px solid #21b6d7;">
128 <div class="eye" style="font-size:11px;color:#3f6871;margin-bottom:5px;">SCIENTIFIC RESEARCH</div>
129 <h4>Fokus Wissenschaftliche Forschung</h4>
130 <p>
131 Examples of scientific research across the University's institutes and fields, including FWF-funded
132 basic research, ESPRIT projects and other externally funded research. Use this page to compare project types,
133 hosts, funding programmes and disciplinary or interdisciplinary research settings.
134 </p>
135 <a href="https://dieangewandte.at/kunst_und_forschung/projekte_fokus_forschung/wissenschaftliche_forschung"
136 target="_blank" rel="noopener">
137 View scientific research projects ↗
138 </a>
139 </div>
140
141 <div class="research-example" style="border-top:4px solid #38b76a;">
142 <div class="eye" style="font-size:11px;color:#4a6c53;margin-bottom:5px;">RELATIONAL / CROSS-CUTTING RESEARCH</div>
143 <h4>Fokus Relationale Forschung</h4>
144 <p>
145 Examples of projects organised through specific calls, thematic relationships and cross-cutting research
146 frameworks, including INTRA, digital and social transformation and research-infrastructure initiatives.
147 Use this page when your project connects disciplines, infrastructures, institutions or thematic programmes.
148 </p>
149 <a href="https://dieangewandte.at/kunst_und_forschung/projekte_fokus_forschung/fokus_relationale_forschung"
150 target="_blank" rel="noopener">
151 View relational research projects ↗
152 </a>
153 </div>
154
155 </div>
156
157 <div class="info" style="margin-top:14px;">
158 <strong>How to use these examples:</strong>
159 do not copy a project's structure simply because the topic looks similar.
160 Compare the <strong>project type, host unit, funding programme, project lead, partners, duration and outputs</strong>.
161 These are the elements that help you judge whether an existing project is a useful planning reference for your own proposal.
162 </div>
163 </section>
164
165 <section class="sec">
Veronika Kocher 6.1 166 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 3 · WHO SHOULD I INVOLVE?</div>
167 <h3>Project-relevant structures of the Angewandte</h3>
168 <p>Not every project needs every unit. Use the trigger descriptions below.</p>
169 <details class="detail" open>
170 <summary>A · Your institute, department, workshop or special university facility — the project home</summary>
171 <div class="body">
172 <p><strong>Involve early when:</strong> the project uses the unit's name, staff time, rooms, workshops, equipment, teaching, budget, infrastructure or institutional commitments.</p>
173 <p><strong>Current institutes:</strong></p>
Veronika Kocher 8.1 174 <div><a class="chip" href="https://www.dieangewandte.at/en/institutes/architecture/institute_of_architecture" target="_blank" rel="noopener" title="Open Institute of Architecture on dieAngewandte">Institute of Architecture</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/fine_arts_and_media_art" target="_blank" rel="noopener" title="Open Institute of Fine Arts & Media Art on dieAngewandte">Institute of Fine Arts &amp; Media Art</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/design" target="_blank" rel="noopener" title="Open Institute of Design on dieAngewandte">Institute of Design</a><a class="chip" href="https://www.dieangewandte.at/en/ikr_institut" target="_blank" rel="noopener" title="Open Institute of Conservation and Restoration on dieAngewandte">Institute of Conservation and Restoration</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/arts_and_society/institute_of_arts_and_society" target="_blank" rel="noopener" title="Open Institute of Art and Society on dieAngewandte">Institute of Art and Society</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/art_and_technology" target="_blank" rel="noopener" title="Open Institute of Art and Technology on dieAngewandte">Institute of Art and Technology</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/studies_in_art_and_art_education" target="_blank" rel="noopener" title="Open Institute of Art Sciences, Art Education and Art Mediation on dieAngewandte">Institute of Art Sciences, Art Education and Art Mediation</a><a class="chip" href="https://www.dieangewandte.at/languagearts" target="_blank" rel="noopener" title="Open Institute of Language Arts on dieAngewandte">Institute of Language Arts</a></div>
Veronika Kocher 6.1 175 <p style="margin-top:12px;"><strong>Special university facilities that can become project homes, partners, infrastructures or research resources:</strong></p>
Veronika Kocher 8.1 176 <div><a class="chip" href="https://www.dieangewandte.at/en/university/organisation/special_university_facilities/angewandte_interdisciplinary_laboratory" target="_blank" rel="noopener" title="Open Angewandte Interdisciplinary Lab on dieAngewandte">Angewandte Interdisciplinary Lab</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/angewandte_performance_laboratory_apl" target="_blank" rel="noopener" title="Open Angewandte Performance Lab on dieAngewandte">Angewandte Performance Lab</a><a class="chip" href="https://www.dieangewandte.at/art_science_school_transformation" target="_blank" rel="noopener" title="Open Art x Science School for Transformation on dieAngewandte">Art x Science School for Transformation</a><a class="chip" href="https://www.dieangewandte.at/doctoral_centre" target="_blank" rel="noopener" title="Open Doctoral Centre on dieAngewandte">Doctoral Centre</a><a class="chip" href="https://www.dieangewandte.at/universitaet/organisation/rektorat/vizerektorin_studium_lehre_diversitaet/diversitaet_und_gleichstellung" target="_blank" rel="noopener" title="Open Diversity, Equity, Inclusion on dieAngewandte">Diversity, Equity, Inclusion</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/collection_and_archive" target="_blank" rel="noopener" title="Open Art Collection and Archive on dieAngewandte">Art Collection and Archive</a><a class="chip" href="https://www.dieangewandte.at/en/university/university_gallery" target="_blank" rel="noopener" title="Open University Gallery on dieAngewandte">University Gallery</a><a class="chip" href="https://www.dieangewandte.at/institute/peterweibel" target="_blank" rel="noopener" title="Open Weibel Institute for Digital Cultures on dieAngewandte">Weibel Institute for Digital Cultures</a></div>
Veronika Kocher 6.1 177 <p style="margin-top:12px;"><a href="https://www.dieangewandte.at/universitaet/organisation" target="_blank" rel="noopener">Current university organisation</a></p>
178 </div>
179 </details><details class="detail" open>
180 <summary>B · Support Kunst und Forschung — project and funding coordination</summary>
181 <div class="body">
182 <p><strong>Use when:</strong> developing artistic, scientific or arts-based research projects; looking for funding; preparing external proposals; coordinating third-party funded projects.</p>
183 <ul>
184 <li>concept development and feedback</li>
185 <li>funding landscape and call fit</li>
186 <li>administrative and financial project co-design</li>
187 <li>coordination of funded projects and partners</li>
188 <li>support involving FWF, FFG, EU programmes, City of Vienna and other funders</li>
189 </ul>
190 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/support_kunst_und_forschung" target="_blank" rel="noopener">Support Kunst und Forschung</a> · <a href="mailto:support_kf@uni-ak.ac.at">support_kf@uni-ak.ac.at</a></p>
191 </div>
192 </details><details class="detail">
193 <summary>C · Rektorat — strategy, institutional commitment and university-level responsibility</summary>
194 <div class="body">
195 <p>Most projects do <strong>not</strong> begin by contacting the Rektorat directly. It becomes relevant when a project requires university-level decisions, commitments, strategy, resources, partnerships or signing authority. Route questions through your host unit and responsible service wherever possible.</p>
196 <ul>
197 <li><strong>Rector:</strong> overall strategy, budget/personnel allocation to organisational units, institutional representation, international university partnerships, employment/service contracts and powers of attorney.</li>
198 <li><strong>Vice-Rector for Science, Research & Digitality:</strong> research strategy, artistic/scientific research support, digital development, IT & Digitalisation, Support Art & Research, University Library and doctoral admissions.</li>
199 <li><strong>Vice-Rector for Finance & Infrastructure:</strong> financial management, third-party funds management, resources, procurement/infrastructure, estates, Facility Management and Event Management.</li>
200 <li><strong>Vice-Rector for Art, Teaching & Learning:</strong> study/examination matters, teaching, teaching quality, curricular/learning issues and teaching resources.</li>
201 <li><strong>Vice-Rector for Cooperative Disciplinarity, Engagement & Innovation:</strong> international relations and partnerships, Diversity/Equity/Inclusion, International Office, AIL and Art x Science School for Transformation.</li>
202 </ul>
203 <p><a href="https://www.dieangewandte.at/universitaet/organisation/rektorat" target="_blank" rel="noopener">Current Rektorat and portfolios</a></p>
204 </div>
205 </details><details class="detail">
206 <summary>D · Finances — budget, accounting, controlling and resource planning</summary>
207 <div class="body">
208 <p><strong>Use when:</strong> the project has a budget, third-party funds, invoices, income, cost planning, co-funding, financial reporting or institutional resources.</p>
209 <ul>
210 <li><strong>Controlling:</strong> budget planning, monitoring, steering data, financial plans and reporting interfaces.</li>
211 <li><strong>Financial Accounting:</strong> university payments, creditors/debtors, service contracts/guest lectures, bookkeeping, assets, VAT/tax information and financial statements.</li>
212 <li><strong>Resource Planning:</strong> clarify current responsibilities for institutional resource planning and the project's budget route.</li>
213 </ul>
214 <p><a href="https://dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/finanzen" target="_blank" rel="noopener">Finances</a> ·
215 <a href="https://dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/finanzen/controlling" target="_blank" rel="noopener">Controlling</a> ·
216 <a href="https://dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/finanzen/finanzbuchhaltung" target="_blank" rel="noopener">Financial Accounting</a></p>
217 </div>
218 </details><details class="detail">
219 <summary>E · Personnel — staffing, contracts, workload, onboarding and team development</summary>
220 <div class="body">
221 <p><strong>Use when:</strong> the project creates or changes employment, recruits project staff, uses existing staff time, requires onboarding or needs help with team collaboration.</p>
222 <ul>
223 <li><strong>Personnel Management:</strong> employment and personnel administration; clarify the current route for project staff and contract types.</li>
224 <li><strong>Personnel Development:</strong> onboarding, team coaching, organisational development, conflict support/mediation, leadership coaching and staff development.</li>
225 <li>Clarify personnel lead times before promising start dates in a proposal.</li>
226 <li>Do not assume an external budget line automatically creates an employment route.</li>
227 </ul>
228 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/personal_finanzen_recht" target="_blank" rel="noopener">Personnel</a> ·
229 <a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/personalentwicklung" target="_blank" rel="noopener">Personnel Development</a></p>
230 </div>
231 </details><details class="detail">
232 <summary>F · Legal & Data Protection — contracts, rights, IP, personal data and legal risk</summary>
233 <div class="body">
234 <p><strong>Use when:</strong> agreements, external partners, licences, copyright/IP, personal data, confidentiality, complex terms or institutional legal commitments are involved.</p>
235 <ul>
236 <li><strong>Legal Department:</strong> supports university members with legal questions.</li>
237 <li><strong>Data Protection Officer:</strong> involve where personal-data processing, data-sharing, processors/platforms or other privacy questions require specialist review.</li>
238 <li>Plan legal review before the proposal deadline if funder/partner contracts are part of submission.</li>
239 </ul>
240 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/recht" target="_blank" rel="noopener">Legal</a> · <a href="mailto:rechtsabteilung@uni-ak.ac.at">rechtsabteilung@uni-ak.ac.at</a></p>
241 </div>
242 </details><details class="detail">
243 <summary>G · IT & Digitalisation — systems, digital services, infrastructure and IT projects</summary>
244 <div class="body">
245 <p><strong>Use when:</strong> the project needs accounts, university IT, servers/storage, networking, specialist digital systems, integration, new software/services or a digital institutional process.</p>
246 <ul>
247 <li><strong>Base</strong></li>
248 <li><strong>ITD Project Coordination</strong></li>
249 <li><strong>Central IT Services (ZID):</strong> university-wide information and communication infrastructure, service/support, networks, servers and art-university-specific IT systems.</li>
250 </ul>
251 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/it_digitalisierung" target="_blank" rel="noopener">IT & Digitalisation</a> · <a href="mailto:helpdesk@uni-ak.ac.at">helpdesk@uni-ak.ac.at</a></p>
252 </div>
253 </details><details class="detail">
254 <summary>H · Facility Management — rooms, procurement, material, building services, logistics and safety</summary>
255 <div class="body">
256 <p><strong>Use when:</strong> the project needs space, temporary rooms, equipment/material procurement, technical building requirements, logistics, deliveries, storage, access or safety coordination.</p>
257 <ul>
258 <li><strong>Procurement & Material Management:</strong> procurement advice, quotations, purchasing, orders/invoices, assets/inventory, materials.</li>
259 <li><strong>Building Technology & Safety</strong></li>
260 <li><strong>Estates & Room Coordination:</strong> room and estate coordination, centrally bookable rooms.</li>
261 <li><strong>Post & Logistics</strong></li>
262 <li><strong>Service & Operations</strong></li>
263 </ul>
264 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/facility_management" target="_blank" rel="noopener">Facility Management</a> ·
265 <a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/facility_management/logistik__beschaffung" target="_blank" rel="noopener">Procurement & Material Management</a> ·
266 <a href="https://www.dieangewandte.at/liegenschaften_und_raumkoordination" target="_blank" rel="noopener">Estates & Room Coordination</a></p>
267 </div>
268 </details><details class="detail">
269 <summary>I · Event Management — public events, event rooms and production coordination</summary>
270 <div class="body">
271 <p><strong>Use when:</strong> the project contains a symposium, screening, performance, public presentation, conference, major exhibition event or requires centrally managed event rooms/services.</p>
272 <ul>
273 <li>supports employees with planning and implementation of university events</li>
274 <li>supports idea and room finding, preparation, event delivery and follow-up</li>
275 <li>coordinate early with Facility Management for room/building/technical dependencies</li>
276 <li>coordinate public communication with Press & Communication</li>
277 </ul>
278 <p><a href="https://dieangewandte.at/veranstaltungsmanagement" target="_blank" rel="noopener">Event Management</a> · <a href="mailto:veranstaltungen@uni-ak.ac.at">veranstaltungen@uni-ak.ac.at</a></p>
279 </div>
280 </details><details class="detail">
281 <summary>J · Press & Communication — public visibility, media, publications, web and cooperation</summary>
282 <div class="body">
283 <p><strong>Use when:</strong> the project will represent the University publicly, needs press/media work, web/social communication, marketing, institutional publications, graphical/CI support or public cooperation communication.</p>
284 <ul>
285 <li>Press</li><li>Publications / Edition Angewandte</li><li>Cooperations</li><li>Marketing</li>
286 <li>Website / social media / newsletter</li><li>institutional visual identity / CI considerations</li>
287 </ul>
288 <p><a href="https://www.dieangewandte.at/presse_kommunikation" target="_blank" rel="noopener">Press & Communication</a></p>
289 </div>
290 </details><details class="detail">
291 <summary>K · International Office — mobility and international project context</summary>
292 <div class="body">
293 <p><strong>Use when:</strong> staff/student mobility, exchange routes, international visitors or mobility funding are part of the project.</p>
294 <p>For broader university partnerships and institutional international cooperation, the responsible Vice-Rectorate / Rectorate route may also become relevant.</p>
295 <p><a href="https://www.dieangewandte.at/studium/auslandsaufenthalte/personalmobilitaet" target="_blank" rel="noopener">International Office · staff mobility</a> · <a href="mailto:international.office@uni-ak.ac.at">international.office@uni-ak.ac.at</a></p>
296 </div>
297 </details><details class="detail">
298 <summary>L · University Library & research/discovery structures</summary>
299 <div class="body">
300 <p><strong>Use when:</strong> the project needs literature, licensed databases, research discovery, publication/repository routes or library expertise.</p>
301 <p>Also think beyond the Library where your project uses institutional collections, archives or specialist research resources: Art Collection and Archive, Weibel Institute and other special university facilities can be relevant depending on the topic.</p>
302 <p><a href="https://www.dieangewandte.at/universitaetsbibliothek" target="_blank" rel="noopener">University Library</a></p>
303 </div>
304 </details><details class="detail">
305 <summary>M · Studies, Teaching, Curricula & Doctoral Centre</summary>
306 <div class="body">
307 <p><strong>Use when:</strong> the project directly affects teaching, courses, curricula, assessment, students, graduation work or doctoral study.</p>
308 <ul>
309 <li><strong>Study Affairs:</strong> student administration and study-law processes from admission to graduation.</li>
310 <li><strong>Vice-Rector for Art, Teaching & Learning:</strong> teaching, studies/exams, teaching quality and teaching resources.</li>
311 <li><strong>Doctoral Centre:</strong> central contact for doctoral candidates; supports networking and project initiation across doctoral programmes.</li>
312 <li><strong>Quality Culture Teaching & Curriculum Workshop:</strong> involve for relevant teaching/curricular/quality-development questions according to current remit.</li>
313 </ul>
314 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/studienangelegenheiten" target="_blank" rel="noopener">Study Affairs</a> ·
315 <a href="https://prod.dieangewandte.at/doktoratszentrum" target="_blank" rel="noopener">Doctoral Centre</a></p>
316 </div>
317 </details><details class="detail">
318 <summary>N · Diversity, Equity, Inclusion & Accessibility</summary>
319 <div class="body">
320 <p><strong>Use when:</strong> accessibility, inclusion, participation design, equal opportunity, diversity, disability, structural barriers or inclusive communication need to be planned into the project.</p>
321 <ul>
322 <li>DEI connects diversity, equity/inclusion and accessibility expertise.</li>
323 <li>Team Barrierefrei provides practical accessibility information and contacts for staff/students with disabilities.</li>
324 <li>For events, plan accessibility early enough to budget interpretation, technical support, accessible rooms or other measures.</li>
325 </ul>
326 <p><a href="https://www.dieangewandte.at/universitaet/organisation/rektorat/vizerektorin_studium_lehre_diversitaet/diversitaet_und_gleichstellung" target="_blank" rel="noopener">Diversity, Equity, Inclusion</a> ·
327 <a href="https://www.dieangewandte.at/barrierefrei" target="_blank" rel="noopener">Accessibility at the Angewandte</a></p>
328 </div>
329 </details><details class="detail">
330 <summary>O · University Development & Quality Culture</summary>
331 <div class="body">
332 <p><strong>Use when:</strong> the project is institution-wide, strategically relevant, develops organisational/quality processes, creates new cross-unit structures or needs connection to university development and quality culture.</p>
333 <p>For ordinary project delivery this is not a default project-administration unit. Involve it where the project's purpose genuinely touches institutional development or quality processes.</p>
334 <p><a href="mailto:uq@uni-ak.ac.at">uq@uni-ak.ac.at</a></p>
335 </div>
336 </details><details class="detail">
337 <summary>P · Equality / staff / student representation — independent advice and representation</summary>
338 <div class="body">
339 <p>These structures are not project-management offices, but they can be essential when a project raises employment, discrimination, participation or conflict questions.</p>
340 <ul>
341 <li><strong>Arbeitskreis für Gleichbehandlungsfragen (AKG):</strong> confidential contact on equality, discrimination and harassment.</li>
342 <li><strong>Works Councils:</strong> representation of artistic/scientific and general university staff in employment matters.</li>
343 <li><strong>HUFAK / Students' Union:</strong> student representation; relevant where student participation and student interests are central.</li>
344 <li><strong>Arbitration Commission:</strong> part of the University's governance/interest-representation structure; not a routine project-planning service.</li>
345 </ul>
346 <p><a href="https://dieangewandte.at/gleichbehandlung" target="_blank" rel="noopener">AKG</a> ·
347 <a href="https://www.dieangewandte.at/universitaet/organisation/interessensvertretung/betriebsrat_fuer_das_kuenstlerische_und_wissenschaftliche_personal" target="_blank" rel="noopener">Works Council artistic/scientific staff</a> ·
348 <a href="https://www.dieangewandte.at/hufak" target="_blank" rel="noopener">HUFAK</a></p>
349 </div>
350 </details>
351 </section>
Veronika Kocher 2.1 352
Veronika Kocher 6.1 353 <section class="sec">
354 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 4 · TRIGGER MATRIX</div>
355 <h3>If the project does this, involve these structures early</h3>
356 <table class="tbl">
357 <thead><tr><th>Project trigger</th><th>Start with</th><th>Then check</th></tr></thead>
358 <tbody><tr><td>External research / arts-based research funding</td><td>Host unit + Support Kunst und Forschung</td><td>Finances, Personnel, Legal, Rectorate route as required</td></tr><tr><td>New staff / project employment / changed workload</td><td>Host unit + Personnel</td><td>Finances, Support Kunst und Forschung, Works Council if representation advice is needed</td></tr><tr><td>Large purchase / equipment / external service</td><td>Procurement &amp; Material Management</td><td>Finances, host unit, IT or Facility depending on item</td></tr><tr><td>New software, server, database, digital platform or integration</td><td>IT &amp; Digitalisation / ZID</td><td>Data Protection, Legal, procurement, research-data planning</td></tr><tr><td>Rooms, workshop, exhibition build, building intervention</td><td>Host unit + Facility / Room Coordination</td><td>Safety, procurement, Event Management, accessibility</td></tr><tr><td>Public event / symposium / screening / performance</td><td>Event Management</td><td>Facility, Press &amp; Communication, rights, accessibility, safety</td></tr><tr><td>External contract / cooperation agreement / IP / confidentiality</td><td>Legal</td><td>Support Kunst und Forschung, Rectorate route, Finance, Data Protection</td></tr><tr><td>Personal data / participant data / interviews / recordings</td><td>Data Protection + project lead</td><td>Ethics/consent, IT/storage, Legal, funder requirements</td></tr><tr><td>Publication, media campaign, university web/social media</td><td>Press &amp; Communication</td><td>Rights/licensing, Support Kunst und Forschung, repository/library</td></tr><tr><td>International mobility</td><td>International Office</td><td>Host unit, Support Kunst und Forschung, Personnel/Finance depending on funding</td></tr><tr><td>Formal international university partnership</td><td>Host unit + responsible Rectorate route</td><td>International Office, Legal, Support Kunst und Forschung</td></tr><tr><td>Teaching / curriculum / study-law component</td><td>Host institute/department</td><td>Vice-Rector Art/Teaching/Learning, Study Affairs, quality/curriculum structures</td></tr><tr><td>Doctoral project / doctoral candidate structure</td><td>Doctoral Centre + relevant programme</td><td>Research Vice-Rectorate/admission route, Support Kunst und Forschung</td></tr><tr><td>Accessibility / inclusion / disability requirements</td><td>DEI / Team Barrierefrei</td><td>Facility, Event Management, Communication, Personnel or Study Affairs</td></tr><tr><td>Discrimination / equality / harassment concern</td><td>AKG</td><td>Independent/confidential route; other units only as appropriate</td></tr></tbody>
359 </table>
360 </section>
Veronika Kocher 2.1 361
Veronika Kocher 6.1 362 <section class="sec">
363 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 5 · THE ACTUAL PROJECT PLAN</div>
364 <h3>Your planning file should contain these components</h3>
365 <div class="grid">
366 <div class="check"><strong>Project Charter</strong><br>Purpose, scope, non-scope, project type, host, lead, partners, start/end, outputs.</div>
367 <div class="check"><strong>Role &amp; responsibility matrix</strong><br>Who decides, does, approves, is consulted and must be informed.</div>
368 <div class="check"><strong>Work plan</strong><br>Work packages, milestones, dependencies, decision points, public outputs and closure.</div>
369 <div class="check"><strong>Budget baseline</strong><br>Costs, funding source, co-funding, institutional resources, assumptions and contingencies.</div>
370 <div class="check"><strong>People plan</strong><br>Existing staff, new hires, external contributors, workload, contracts, onboarding and handover.</div>
371 <div class="check"><strong>Procurement / infrastructure plan</strong><br>Purchases, equipment, rooms, workshops, IT, logistics, safety and lead times.</div>
372 <div class="check"><strong>Partner plan</strong><br>Roles, budget interfaces, deliverables, agreements, IP, data, communication and escalation.</div>
373 <div class="check"><strong>Rights / ethics / data plan</strong><br>Third-party material, consent, personal data, licences, confidentiality and ethics review.</div>
374 <div class="check"><strong>Communication / event plan</strong><br>Audiences, media, publication, event needs, CI, accessibility and documentation.</div>
375 <div class="check"><strong>Risk register</strong><br>Funding, people, rights, data, schedule, supplier, technical, venue, partner and reputational risks.</div>
376 <div class="check"><strong>Decision log</strong><br>Important decisions, date, responsible person, reason and impact.</div>
377 <div class="check"><strong>Closure / handover plan</strong><br>Final files, reporting, repository/archive, equipment, accounts, access, retention and responsibilities.</div>
378 </div>
379 </section>
Veronika Kocher 2.1 380
Veronika Kocher 6.1 381 <section class="sec">
382 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 6 · PLAN BACKWARDS</div>
383 <h3>The external deadline is not your first deadline</h3>
384 <table class="tbl">
385 <thead><tr><th>Planning point</th><th>Question</th></tr></thead>
386 <tbody>
387 <tr><td><strong>External submission / public opening</strong></td><td>What must be complete and approved here?</td></tr>
388 <tr><td><strong>Institutional approval / signature</strong></td><td>Who needs final documents and review time?</td></tr>
389 <tr><td><strong>Legal / partner agreements</strong></td><td>What must be reviewed before submission?</td></tr>
390 <tr><td><strong>Budget / personnel / procurement review</strong></td><td>Are rates, hires, purchases and resources realistic and permitted?</td></tr>
391 <tr><td><strong>Project concept freeze</strong></td><td>When must scope, roles, work packages and outputs stop changing?</td></tr>
392 <tr><td><strong>Partner input</strong></td><td>When must partners deliver text, budgets, letters and approvals?</td></tr>
393 <tr><td><strong>Internal start</strong></td><td>When must planning begin to make all of this possible?</td></tr>
394 </tbody></table>
395 </section>
Veronika Kocher 2.1 396
Veronika Kocher 6.1 397 <section class="sec">
398 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STOP &amp; CHECK</div>
399 <h3>Project-planning red flags</h3>
400 <div class="grid">
401 <div class="warn"><strong>No institutional home.</strong><br>The project uses the University's name/resources but no host unit has accepted responsibility.</div>
402 <div class="warn"><strong>External commitment without approval.</strong><br>A partner, funder, venue or supplier has been promised something before the internal route is clear.</div>
403 <div class="warn"><strong>People appear only as budget lines.</strong><br>Employment/contract routes and lead times have not been checked.</div>
404 <div class="warn"><strong>Equipment appears only as a price.</strong><br>Procurement, ownership, installation, IT, safety, maintenance and storage have not been planned.</div>
405 <div class="warn"><strong>Public output planned, rights unresolved.</strong><br>Publication/exhibition/streaming has been promised without confirming rights, consent or data protection.</div>
406 <div class="warn"><strong>No owner for project end.</strong><br>No one is responsible for final reporting, master files, repository/archive, equipment, accounts and access closure.</div>
407 </div>
408 </section>
Veronika Kocher 2.1 409
Veronika Kocher 6.1 410 <section class="sec">
411 <div class="eye" style="color:#8a4d36;margin-bottom:4px">CONTINUE PLANNING</div>
412 <h3>Related Enable topics</h3>
413 <div class="linkgrid"><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Funding%20%26%20Funder%20Requirements/">Funding & Funder Requirements</a><a class="navlink" 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/">Identify Your Data & Research Outputs</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Plan%20Your%20Data%20Management/">Plan Your Data Management</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Copyright%2C%20Rights%20%26%20Licences/">Copyright, Rights & Licences</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Data%20Protection%20%26%20Ethics/">Data Protection & Ethics</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/File%20Organisation%20%26%20Naming/">File Organisation & Naming</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Storage%2C%20Backup%20%26%20Security/">Storage, Backup & Security</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Infrastructure%2C%20Services%20%26%20Tools/">Infrastructure, Services & Tools</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Collaboration%20Setup/">Collaboration Setup</a></div>
414 </section>
Veronika Kocher 2.1 415
Veronika Kocher 6.1 416 <div class="info" style="margin-bottom:14px"><strong>Need help structuring the project?</strong> For funded, artistic, scientific and arts-based research projects, Support Kunst und Forschung is a central coordination point. Bring a short project description, host unit, likely applicant, partners, duration, rough budget and the main things you need from the University.</div>
Veronika Kocher 2.1 417
Veronika Kocher 4.1 418 <!-- ARSN_SEARCH_TERMS_START -->
Veronika Kocher 6.1 419 <details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6">
420 <summary style="cursor:pointer;color:#6a655e;font-size:13px">Search terms &amp; related topics</summary>
421 <div style="margin-top:9px;color:#5c5650;font-size:12px;line-height:1.7">project planning · project organisation · project management · project governance · roles and responsibilities · RACI · work packages · timeline · milestones · dependencies · budget planning · risk management · project host · institute · department · Rektorat · Support Kunst und Forschung · third-party funding · finance · controlling · accounting · personnel · HR · contracts · legal · data protection · IT · digital services · procurement · room planning · facility management · event management · press and communication · international cooperation · mobility · library · doctoral project · teaching · curriculum · accessibility · diversity · equality · inclusion · AKG · works council · project partners · institutional approval · signing authority · decision log · handover</div>
Veronika Kocher 4.1 422 </details>
423 <!-- ARSN_SEARCH_TERMS_END -->
Veronika Kocher 6.1 424
425 </div>
Veronika Kocher 4.1 426 {{/html}}
Veronika Kocher 8.1 427
Veronika Kocher 9.5 428 \n\n
429 \n\n{{html clean="false"}}
Veronika Kocher 9.3 430 <!-- SN_HORIZONTAL_BOX_HARMONIZER_START -->
Veronika Kocher 9.5 431
432 <style data-sn-horizontal-box-harmonizer="7">
433 /* ---------- Typography: never justify headings ---------- */
434 #xwikicontent h1,
435 #xwikicontent h2,
436 #xwikicontent h3,
437 #xwikicontent h4,
438 #xwikicontent h5,
439 #xwikicontent h6,
440 #xwikicontent .box-title,
441 #xwikicontent [role="heading"],
442 #xwikicontent h1 a,
443 #xwikicontent h2 a,
444 #xwikicontent h3 a,
445 #xwikicontent h4 a,
446 #xwikicontent h5 a,
447 #xwikicontent h6 a,
448 #xwikicontent .box-title a,
449 #xwikicontent [role="heading"] a{
450 text-align:left!important;
451 text-justify:auto!important;
452 word-spacing:normal!important;
453 }
454
455 /* ---------- Native XWiki semantic callouts ---------- */
456 #xwikicontent .box.infomessage,
457 #xwikicontent .infomessage,
458 #xwikicontent .box.warningmessage,
459 #xwikicontent .warningmessage,
460 #xwikicontent .box.successmessage,
461 #xwikicontent .successmessage,
462 #xwikicontent .box.errormessage,
463 #xwikicontent .errormessage,
464 #xwikicontent [data-sn-callout-harmonized="1"]{
465 box-sizing:border-box!important;
466 border-radius:8px!important;
467 border-top:1px solid rgba(0,0,0,.08)!important;
468 border-right:1px solid rgba(0,0,0,.08)!important;
469 border-bottom:1px solid rgba(0,0,0,.08)!important;
470 border-left:4px solid var(--sn-callout-accent,#21b6d7)!important;
471 padding:14px 16px!important;
472 text-align:left!important;
473 text-justify:auto!important;
474 word-spacing:normal!important;
475 box-shadow:none!important;
476 }
477
478 #xwikicontent .box.infomessage,
479 #xwikicontent .infomessage{
480 --sn-callout-accent:#21b6d7;
481 background:#eaf7fb!important;
482 }
483
484 #xwikicontent .box.warningmessage,
485 #xwikicontent .warningmessage{
486 --sn-callout-accent:#f0aa00;
487 background:#fff8e7!important;
488 }
489
490 #xwikicontent .box.successmessage,
491 #xwikicontent .successmessage{
492 --sn-callout-accent:#38b76a;
493 background:#edf9f1!important;
494 }
495
496 #xwikicontent .box.errormessage,
497 #xwikicontent .errormessage{
498 --sn-callout-accent:#e94b13;
499 background:#fff1ec!important;
500 }
501
502 #xwikicontent [data-sn-callout-harmonized="1"] > :first-child,
503 #xwikicontent .infomessage > :first-child,
504 #xwikicontent .warningmessage > :first-child,
505 #xwikicontent .successmessage > :first-child,
506 #xwikicontent .errormessage > :first-child{
507 margin-top:0!important;
508 }
509
510 #xwikicontent [data-sn-callout-harmonized="1"] > :last-child,
511 #xwikicontent .infomessage > :last-child,
512 #xwikicontent .warningmessage > :last-child,
513 #xwikicontent .successmessage > :last-child,
514 #xwikicontent .errormessage > :last-child{
515 margin-bottom:0!important;
516 }
517
518 #xwikicontent [data-sn-equal-height-managed],
519 #xwikicontent [data-sn-first-section-aligned],
520 #xwikicontent [data-sn-first-content-aligned]{
Veronika Kocher 9.4 521 box-sizing:border-box;
Veronika Kocher 9.3 522 }
523 </style>
Veronika Kocher 9.5 524
525 <script data-sn-horizontal-box-harmonizer="7">
Veronika Kocher 9.3 526 (function(){
527 "use strict";
528
529 var MOBILE_MAX=767;
Veronika Kocher 9.4 530 var ROW_TOLERANCE=6;
Veronika Kocher 9.3 531 var MIN_W=150;
532 var MIN_H=36;
Veronika Kocher 9.5 533 var MAX_PARENT_CHILDREN=18;
Veronika Kocher 9.4 534 var SEARCH_DEPTH=5;
Veronika Kocher 9.5 535 var RESIZE_DEBOUNCE=220;
536 var MIN_WIDTH_CHANGE=2;
Veronika Kocher 9.3 537
538 var root=
539 document.getElementById("xwikicontent")||
540 document.querySelector(".xwiki-rendering-content")||
541 document.querySelector("main")||
542 document.body;
543
544 if(!root)return;
545
Veronika Kocher 9.4 546 var heightManaged=new Set();
547 var sectionManaged=new Set();
Veronika Kocher 9.5 548 var contentManaged=new Set();
549
Veronika Kocher 9.4 550 var originalMinHeight=new WeakMap();
551 var originalMarginTop=new WeakMap();
Veronika Kocher 9.3 552
Veronika Kocher 9.5 553 var resizeTimer=0;
554 var lastWidth=-1;
555 var hasApplied=false;
556 var applying=false;
557
Veronika Kocher 9.3 558 function num(v){
559 var n=parseFloat(v);
560 return Number.isFinite(n)?n:0;
561 }
562
Veronika Kocher 9.4 563 function visible(el,minW,minH){
Veronika Kocher 9.3 564 if(!el||el.nodeType!==1)return false;
Veronika Kocher 9.4 565
Veronika Kocher 9.3 566 var s=getComputedStyle(el);
Veronika Kocher 9.4 567
568 if(
569 s.display==="none"||
570 s.visibility==="hidden"||
571 Number(s.opacity)===0
572 ){
573 return false;
574 }
575
Veronika Kocher 9.3 576 var r=el.getBoundingClientRect();
Veronika Kocher 9.4 577
578 return (
579 r.width>=(minW||1)&&
580 r.height>=(minH||1)
581 );
Veronika Kocher 9.3 582 }
583
Veronika Kocher 9.5 584 function normalizeText(text){
585 return String(text||"")
586 .replace(/\s+/g," ")
587 .trim()
588 .toUpperCase();
589 }
590
Veronika Kocher 9.3 591 function excluded(el){
Veronika Kocher 9.4 592 return (
593 !el.matches||
594 el.matches(
595 "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]"
596 )
Veronika Kocher 9.3 597 );
598 }
599
Veronika Kocher 9.5 600 /* ---------- Custom coloured callouts ---------- */
601
602 function nativeCallout(el){
Veronika Kocher 9.4 603 var c=
604 typeof el.className==="string"
Veronika Kocher 9.5 605 ? el.className.toLowerCase()
Veronika Kocher 9.4 606 : "";
607
Veronika Kocher 9.5 608 return (
609 /(^|\s)(infomessage|warningmessage|successmessage|errormessage)(\s|$)/.test(c)
610 );
Veronika Kocher 9.3 611 }
612
Veronika Kocher 9.5 613 function customCallout(el){
614 if(!visible(el,220,42)||excluded(el))return false;
Veronika Kocher 9.4 615
Veronika Kocher 9.3 616 var r=el.getBoundingClientRect();
Veronika Kocher 9.4 617
Veronika Kocher 9.5 618 if(r.height>520)return false;
Veronika Kocher 9.4 619
Veronika Kocher 9.5 620 var s=getComputedStyle(el);
Veronika Kocher 9.4 621
622 var bg=
623 s.backgroundColor&&
624 s.backgroundColor!=="rgba(0, 0, 0, 0)"&&
Veronika Kocher 9.5 625 s.backgroundColor!=="transparent"&&
626 s.backgroundColor!=="rgb(255, 255, 255)";
Veronika Kocher 9.4 627
Veronika Kocher 9.5 628 var left=
629 num(s.borderLeftWidth);
Veronika Kocher 9.4 630
631 return (
Veronika Kocher 9.5 632 bg&&
633 left>=2
Veronika Kocher 9.4 634 );
Veronika Kocher 9.3 635 }
636
Veronika Kocher 9.5 637 function harmoniseCustomCallouts(){
638 Array.from(
639 root.querySelectorAll(
640 "div,aside,section"
641 )
642 ).forEach(function(el){
643 if(nativeCallout(el))return;
644 if(!customCallout(el))return;
645
646 var s=getComputedStyle(el);
647
648 el.setAttribute(
649 "data-sn-callout-harmonized",
650 "1"
651 );
652
653 if(
654 s.borderLeftColor
655 ){
656 el.style.setProperty(
657 "--sn-callout-accent",
658 s.borderLeftColor
659 );
660 }
661 });
662 }
663
664 /* ---------- Restore only values V7 itself changed ---------- */
665
Veronika Kocher 9.4 666 function saveOriginal(el,map,property){
667 if(map.has(el))return;
668
669 map.set(el,{
Veronika Kocher 9.5 670 value:
671 el.style.getPropertyValue(
672 property
673 ),
674 priority:
675 el.style.getPropertyPriority(
676 property
677 )
Veronika Kocher 9.4 678 });
679 }
680
681 function restoreOriginal(el,map,property){
682 var original=map.get(el);
683
684 if(original&&original.value){
685 el.style.setProperty(
686 property,
687 original.value,
688 original.priority||""
689 );
690 }else{
Veronika Kocher 9.5 691 el.style.removeProperty(
692 property
693 );
Veronika Kocher 9.4 694 }
695 }
696
Veronika Kocher 9.5 697 function resetRuntime(){
Veronika Kocher 9.4 698 heightManaged.forEach(function(el){
699 restoreOriginal(
700 el,
701 originalMinHeight,
702 "min-height"
703 );
704
705 el.removeAttribute(
706 "data-sn-equal-height-managed"
707 );
708 });
709
710 sectionManaged.forEach(function(el){
711 restoreOriginal(
712 el,
713 originalMarginTop,
714 "margin-top"
715 );
716
717 el.removeAttribute(
718 "data-sn-first-section-aligned"
719 );
720 });
721
Veronika Kocher 9.5 722 contentManaged.forEach(function(el){
723 restoreOriginal(
724 el,
725 originalMarginTop,
726 "margin-top"
727 );
728
729 el.removeAttribute(
730 "data-sn-first-content-aligned"
731 );
732 });
733
Veronika Kocher 9.4 734 heightManaged.clear();
735 sectionManaged.clear();
Veronika Kocher 9.5 736 contentManaged.clear();
Veronika Kocher 9.4 737 }
738
Veronika Kocher 9.5 739 /* ---------- Card detection ---------- */
740
741 function namedLikeBox(el){
742 var c=
743 typeof el.className==="string"
744 ? el.className
745 : "";
746
747 return /(^|[\s_-])(box|card|tile|panel|role|check|service|source|call|area|detail|resource|topic|warn|info)([\s_-]|$)/i.test(c);
748 }
749
750 function boxLike(el){
751 if(
752 !visible(el,MIN_W,MIN_H)||
753 excluded(el)
754 ){
755 return false;
756 }
757
758 var s=getComputedStyle(el);
759 var r=el.getBoundingClientRect();
760
761 var border=
762 num(s.borderTopWidth)+
763 num(s.borderRightWidth)+
764 num(s.borderBottomWidth)+
765 num(s.borderLeftWidth);
766
767 var radius=Math.max(
768 num(s.borderTopLeftRadius),
769 num(s.borderTopRightRadius),
770 num(s.borderBottomLeftRadius),
771 num(s.borderBottomRightRadius)
772 );
773
774 var bg=
775 s.backgroundColor&&
776 s.backgroundColor!=="rgba(0, 0, 0, 0)"&&
777 s.backgroundColor!=="transparent";
778
779 var shadow=
780 s.boxShadow&&
781 s.boxShadow!=="none";
782
783 return (
784 namedLikeBox(el)||
785 border>=1||
786 (bg&&radius>=3)||
787 (shadow&&r.width>=180)
788 );
789 }
790
Veronika Kocher 9.3 791 function pickTarget(child){
Veronika Kocher 9.4 792 if(!visible(child,MIN_W,MIN_H))return null;
Veronika Kocher 9.3 793
Veronika Kocher 9.5 794 if(boxLike(child))return child;
Veronika Kocher 9.4 795
Veronika Kocher 9.3 796 var cr=child.getBoundingClientRect();
797 var q=[];
Veronika Kocher 9.4 798
Veronika Kocher 9.3 799 Array.from(child.children||[]).forEach(function(el){
800 q.push({el:el,depth:1});
801 });
802
Veronika Kocher 9.4 803 var best=null;
804 var bestScore=-Infinity;
Veronika Kocher 9.3 805
806 while(q.length){
807 var item=q.shift();
808 var el=item.el;
809
Veronika Kocher 9.4 810 if(!visible(el,MIN_W,MIN_H))continue;
811
Veronika Kocher 9.3 812 var r=el.getBoundingClientRect();
813
Veronika Kocher 9.4 814 if(
815 r.width>=cr.width*.68&&
816 boxLike(el)
817 ){
818 var widthFit=
819 1-Math.min(
820 1,
821 Math.abs(cr.width-r.width)/
822 Math.max(1,cr.width)
823 );
824
825 var topFit=
826 1-Math.min(
827 1,
828 Math.abs(cr.top-r.top)/100
829 );
830
831 var score=
832 widthFit*6+
833 topFit*3+
834 Math.min(r.height,900)/450+
835 Math.min(r.width*r.height,900000)/900000;
836
Veronika Kocher 9.3 837 if(score>bestScore){
838 best=el;
839 bestScore=score;
840 }
841 }
842
Veronika Kocher 9.4 843 if(item.depth<SEARCH_DEPTH){
Veronika Kocher 9.3 844 Array.from(el.children||[]).forEach(function(next){
Veronika Kocher 9.4 845 q.push({
846 el:next,
847 depth:item.depth+1
848 });
Veronika Kocher 9.3 849 });
850 }
851 }
852
853 return best;
854 }
855
Veronika Kocher 9.5 856 function groupRows(entries){
Veronika Kocher 9.4 857 var groups=[];
858
859 entries
860 .slice()
861 .sort(function(a,b){
862 return (
863 a.rect.top-b.rect.top||
864 a.rect.left-b.rect.left
865 );
866 })
867 .forEach(function(entry){
868 var group=null;
869
870 for(var i=0;i<groups.length;i++){
871 if(
872 Math.abs(
873 groups[i].top-
874 entry.rect.top
875 )<=ROW_TOLERANCE
876 ){
877 group=groups[i];
878 break;
879 }
880 }
881
882 if(!group){
883 group={
884 top:entry.rect.top,
885 entries:[]
886 };
887 groups.push(group);
888 }
889
890 group.entries.push(entry);
891 });
892
893 return groups;
Veronika Kocher 9.3 894 }
895
Veronika Kocher 9.5 896 function validRow(group){
Veronika Kocher 9.4 897 if(group.entries.length<2)return false;
898
899 var lefts=
900 group.entries
901 .map(function(e){return e.rect.left;})
902 .sort(function(a,b){return a-b;});
903
904 if(
905 lefts[lefts.length-1]-
906 lefts[0]<
907 80
908 ){
909 return false;
Veronika Kocher 9.3 910 }
Veronika Kocher 9.4 911
912 var widths=
913 group.entries
914 .map(function(e){return e.rect.width;})
915 .filter(function(w){return w>0;});
916
917 if(widths.length<2)return false;
918
Veronika Kocher 9.5 919 var minW=
920 Math.min.apply(Math,widths);
Veronika Kocher 9.4 921
Veronika Kocher 9.5 922 var maxW=
923 Math.max.apply(Math,widths);
924
Veronika Kocher 9.4 925 return (
Veronika Kocher 9.5 926 maxW/
927 Math.max(1,minW)<=
Veronika Kocher 9.4 928 1.9
929 );
Veronika Kocher 9.3 930 }
931
Veronika Kocher 9.5 932 /* ---------- Known ARSN first section bars ---------- */
Veronika Kocher 9.4 933
Veronika Kocher 9.5 934 function knownBar(el){
935 var text=
936 normalizeText(
937 el.textContent
938 );
Veronika Kocher 9.4 939
940 return (
941 text==="HIER STARTEN"||
942 text==="ORGANISIEREN & DOKUMENTIEREN"||
943 text==="ENTSCHEIDEN"||
944 text==="START HERE"||
945 text==="GET STARTED"||
946 text==="ORGANISE & DOCUMENT"||
947 text==="ORGANIZE & DOCUMENT"||
948 text==="DECIDE"
949 );
950 }
951
Veronika Kocher 9.5 952 function findKnownBar(card){
953 var cardRect=
954 card.getBoundingClientRect();
Veronika Kocher 9.4 955
Veronika Kocher 9.5 956 var rows=
957 Array.from(
958 card.querySelectorAll(
959 "div,p,span,strong,h3,h4,h5,h6"
960 )
Veronika Kocher 9.4 961 )
Veronika Kocher 9.5 962 .filter(function(el){
963 if(!visible(el,20,6))return false;
964 if(!knownBar(el))return false;
Veronika Kocher 9.4 965
Veronika Kocher 9.5 966 var r=el.getBoundingClientRect();
Veronika Kocher 9.4 967
Veronika Kocher 9.5 968 var rel=
969 r.top-
970 cardRect.top;
Veronika Kocher 9.4 971
Veronika Kocher 9.5 972 return (
973 rel>=35&&
974 rel<=
975 cardRect.height*.75
976 );
977 })
978 .sort(function(a,b){
979 return (
980 a.getBoundingClientRect().top-
981 b.getBoundingClientRect().top
982 );
983 });
Veronika Kocher 9.4 984
Veronika Kocher 9.5 985 return rows[0]||null;
986 }
Veronika Kocher 9.4 987
Veronika Kocher 9.5 988 function alignKnownBars(cards){
989 var rows=
990 cards.map(function(card){
991 var bar=
992 findKnownBar(card);
Veronika Kocher 9.4 993
Veronika Kocher 9.5 994 if(!bar)return null;
Veronika Kocher 9.4 995
Veronika Kocher 9.5 996 var cr=
997 card.getBoundingClientRect();
Veronika Kocher 9.4 998
Veronika Kocher 9.5 999 var br=
1000 bar.getBoundingClientRect();
Veronika Kocher 9.4 1001
Veronika Kocher 9.5 1002 return {
1003 bar:bar,
1004 relativeTop:
1005 br.top-
1006 cr.top
1007 };
1008 });
Veronika Kocher 9.4 1009
Veronika Kocher 9.5 1010 if(
1011 rows.some(function(row){
1012 return !row;
1013 })
1014 ){
1015 return false;
1016 }
Veronika Kocher 9.4 1017
Veronika Kocher 9.5 1018 var target=
1019 Math.max.apply(
1020 Math,
1021 rows.map(function(row){
1022 return row.relativeTop;
1023 })
1024 );
Veronika Kocher 9.4 1025
Veronika Kocher 9.5 1026 rows.forEach(function(row){
1027 var delta=
1028 target-
1029 row.relativeTop;
Veronika Kocher 9.4 1030
Veronika Kocher 9.5 1031 if(delta<=1)return;
Veronika Kocher 9.4 1032
Veronika Kocher 9.5 1033 saveOriginal(
1034 row.bar,
1035 originalMarginTop,
1036 "margin-top"
1037 );
Veronika Kocher 9.4 1038
Veronika Kocher 9.5 1039 var current=
1040 num(
1041 getComputedStyle(
1042 row.bar
1043 ).marginTop
1044 );
Veronika Kocher 9.4 1045
Veronika Kocher 9.5 1046 row.bar.style.setProperty(
1047 "margin-top",
1048 (
1049 current+
1050 delta
1051 )+"px"
1052 );
1053
1054 row.bar.setAttribute(
1055 "data-sn-first-section-aligned",
1056 "7"
1057 );
1058
1059 sectionManaged.add(
1060 row.bar
1061 );
Veronika Kocher 9.4 1062 });
1063
Veronika Kocher 9.5 1064 return true;
1065 }
1066
1067 /* ---------- Generic first content after heading ---------- */
1068
1069 function heading(card){
1070 var cr=
1071 card.getBoundingClientRect();
1072
1073 var rows=
1074 Array.from(
1075 card.querySelectorAll(
1076 "h1,h2,h3,h4,h5,h6,.box-title,[role=heading]"
1077 )
1078 )
1079 .filter(function(el){
1080 if(!visible(el,20,8))return false;
1081
1082 var r=el.getBoundingClientRect();
1083
1084 var rel=
1085 r.top-
1086 cr.top;
1087
1088 return (
1089 rel>=0&&
1090 rel<=
1091 Math.min(
1092 160,
1093 cr.height*.45
1094 )
1095 );
1096 })
1097 .sort(function(a,b){
1098 return (
1099 a.getBoundingClientRect().top-
1100 b.getBoundingClientRect().top
1101 );
Veronika Kocher 9.4 1102 });
1103
Veronika Kocher 9.5 1104 return rows[0]||null;
1105 }
Veronika Kocher 9.4 1106
Veronika Kocher 9.5 1107 function firstContent(card,h){
1108 if(!h)return null;
1109
1110 var cr=
1111 card.getBoundingClientRect();
1112
1113 var hr=
1114 h.getBoundingClientRect();
1115
1116 var rows=
1117 Array.from(
1118 card.querySelectorAll(
1119 "p,div,ul,ol,dl,blockquote"
1120 )
1121 )
1122 .filter(function(el){
1123 if(
1124 el===h||
1125 h.contains(el)||
1126 el.contains(h)
1127 ){
1128 return false;
1129 }
1130
1131 if(!visible(el,30,8))return false;
1132
1133 var text=
1134 String(el.textContent||"")
1135 .replace(/\s+/g," ")
1136 .trim();
1137
1138 if(text.length<3)return false;
1139
1140 var r=el.getBoundingClientRect();
1141
1142 if(
1143 r.top<
1144 hr.bottom-1
1145 ){
1146 return false;
1147 }
1148
1149 if(
1150 r.top-cr.top>
1151 Math.min(
1152 280,
1153 cr.height*.65
1154 )
1155 ){
1156 return false;
1157 }
1158
1159 if(
1160 r.height>
1161 cr.height*.58
1162 ){
1163 return false;
1164 }
1165
1166 return true;
1167 })
1168 .sort(function(a,b){
1169 var ar=
1170 a.getBoundingClientRect();
1171
1172 var br=
1173 b.getBoundingClientRect();
1174
1175 return (
1176 ar.top-br.top||
1177 ar.height-br.height
1178 );
1179 });
1180
1181 return rows[0]||null;
Veronika Kocher 9.3 1182 }
1183
Veronika Kocher 9.5 1184 function alignGeneric(cards){
Veronika Kocher 9.4 1185 var rows=
1186 cards.map(function(card){
Veronika Kocher 9.5 1187 var h=
1188 heading(card);
Veronika Kocher 9.4 1189
Veronika Kocher 9.5 1190 var c=
1191 firstContent(
1192 card,
1193 h
1194 );
Veronika Kocher 9.4 1195
Veronika Kocher 9.5 1196 if(!h||!c)return null;
1197
1198 var cr=
Veronika Kocher 9.4 1199 card.getBoundingClientRect();
1200
Veronika Kocher 9.5 1201 var rr=
1202 c.getBoundingClientRect();
Veronika Kocher 9.4 1203
1204 return {
Veronika Kocher 9.5 1205 content:c,
Veronika Kocher 9.4 1206 relativeTop:
Veronika Kocher 9.5 1207 rr.top-cr.top
Veronika Kocher 9.4 1208 };
1209 });
1210
1211 if(
1212 rows.some(function(row){
1213 return !row;
1214 })
1215 ){
Veronika Kocher 9.5 1216 return false;
Veronika Kocher 9.4 1217 }
1218
Veronika Kocher 9.5 1219 var target=
Veronika Kocher 9.4 1220 Math.max.apply(
1221 Math,
1222 rows.map(function(row){
1223 return row.relativeTop;
1224 })
1225 );
1226
1227 rows.forEach(function(row){
1228 var delta=
Veronika Kocher 9.5 1229 target-
Veronika Kocher 9.4 1230 row.relativeTop;
1231
1232 if(delta<=1)return;
1233
1234 saveOriginal(
Veronika Kocher 9.5 1235 row.content,
Veronika Kocher 9.4 1236 originalMarginTop,
1237 "margin-top"
1238 );
1239
Veronika Kocher 9.5 1240 var current=
Veronika Kocher 9.4 1241 num(
1242 getComputedStyle(
Veronika Kocher 9.5 1243 row.content
Veronika Kocher 9.4 1244 ).marginTop
1245 );
1246
Veronika Kocher 9.5 1247 row.content.style.setProperty(
Veronika Kocher 9.4 1248 "margin-top",
1249 (
Veronika Kocher 9.5 1250 current+
Veronika Kocher 9.4 1251 delta
1252 )+"px"
1253 );
1254
Veronika Kocher 9.5 1255 row.content.setAttribute(
1256 "data-sn-first-content-aligned",
1257 "7"
Veronika Kocher 9.4 1258 );
1259
Veronika Kocher 9.5 1260 contentManaged.add(
1261 row.content
1262 );
Veronika Kocher 9.4 1263 });
1264
Veronika Kocher 9.5 1265 return true;
Veronika Kocher 9.4 1266 }
1267
Veronika Kocher 9.5 1268 function applyRow(group){
1269 if(!validRow(group))return false;
Veronika Kocher 9.4 1270
1271 var cards=[];
1272 var seen=new Set();
1273
1274 group.entries.forEach(function(entry){
1275 if(!seen.has(entry.target)){
1276 seen.add(entry.target);
1277 cards.push(entry.target);
1278 }
1279 });
1280
Veronika Kocher 9.5 1281 if(cards.length<2)return false;
Veronika Kocher 9.4 1282
Veronika Kocher 9.5 1283 if(
1284 !alignKnownBars(cards)
1285 ){
1286 alignGeneric(cards);
1287 }
Veronika Kocher 9.4 1288
1289 var maxHeight=0;
1290
1291 cards.forEach(function(card){
Veronika Kocher 9.5 1292 maxHeight=
1293 Math.max(
1294 maxHeight,
1295 card.getBoundingClientRect().height
1296 );
Veronika Kocher 9.4 1297 });
1298
Veronika Kocher 9.5 1299 maxHeight=
1300 Math.ceil(
1301 maxHeight
1302 );
Veronika Kocher 9.4 1303
Veronika Kocher 9.5 1304 if(maxHeight<MIN_H)return false;
Veronika Kocher 9.4 1305
1306 cards.forEach(function(card){
1307 saveOriginal(
1308 card,
1309 originalMinHeight,
1310 "min-height"
1311 );
1312
1313 card.style.setProperty(
1314 "min-height",
1315 maxHeight+"px"
1316 );
1317
1318 card.setAttribute(
1319 "data-sn-equal-height-managed",
Veronika Kocher 9.5 1320 "7"
Veronika Kocher 9.4 1321 );
1322
1323 heightManaged.add(card);
1324 });
1325
Veronika Kocher 9.5 1326 return true;
Veronika Kocher 9.4 1327 }
1328
Veronika Kocher 9.5 1329 function calculate(force){
1330 if(applying)return;
Veronika Kocher 9.3 1331
Veronika Kocher 9.5 1332 var width=
1333 Math.round(
1334 window.innerWidth
1335 );
1336
1337 var meaningful=
1338 lastWidth<0||
1339 Math.abs(
1340 width-
1341 lastWidth
1342 )>=
1343 MIN_WIDTH_CHANGE;
1344
Veronika Kocher 9.4 1345 if(
Veronika Kocher 9.5 1346 hasApplied&&
1347 !force&&
1348 !meaningful
Veronika Kocher 9.4 1349 ){
1350 return;
1351 }
Veronika Kocher 9.3 1352
Veronika Kocher 9.5 1353 applying=true;
Veronika Kocher 9.3 1354
Veronika Kocher 9.5 1355 try{
1356 harmoniseCustomCallouts();
Veronika Kocher 9.4 1357
Veronika Kocher 9.5 1358 if(width<=MOBILE_MAX){
1359 if(hasApplied){
1360 resetRuntime();
1361 }
Veronika Kocher 9.3 1362
Veronika Kocher 9.5 1363 hasApplied=false;
1364 lastWidth=width;
1365 return;
1366 }
Veronika Kocher 9.4 1367
Veronika Kocher 9.5 1368 if(hasApplied){
1369 resetRuntime();
1370 }
Veronika Kocher 9.4 1371
Veronika Kocher 9.5 1372 var parents=
1373 Array.from(
1374 root.querySelectorAll("*")
1375 )
1376 .filter(function(parent){
1377 return (
1378 visible(
1379 parent,
1380 MIN_W,
1381 MIN_H
1382 )&&
1383 parent.children&&
1384 parent.children.length>=2&&
1385 parent.children.length<=
1386 MAX_PARENT_CHILDREN
1387 );
Veronika Kocher 9.3 1388 });
1389
Veronika Kocher 9.5 1390 var touched=
1391 new Set();
Veronika Kocher 9.3 1392
Veronika Kocher 9.5 1393 parents.forEach(function(parent){
1394 var entries=[];
Veronika Kocher 9.3 1395
Veronika Kocher 9.5 1396 Array.from(
1397 parent.children
1398 ).forEach(function(child){
1399 if(
1400 !visible(
1401 child,
1402 MIN_W,
1403 MIN_H
1404 )
1405 ){
1406 return;
1407 }
1408
1409 var target=
1410 pickTarget(child);
1411
1412 if(!target)return;
1413
1414 entries.push({
1415 target:target,
1416 rect:
1417 target.getBoundingClientRect()
Veronika Kocher 9.4 1418 });
Veronika Kocher 9.5 1419 });
Veronika Kocher 9.3 1420
Veronika Kocher 9.5 1421 groupRows(
1422 entries
1423 ).forEach(function(group){
1424 if(!validRow(group))return;
Veronika Kocher 9.3 1425
Veronika Kocher 9.5 1426 var targets=
1427 group.entries.map(function(entry){
1428 return entry.target;
1429 });
Veronika Kocher 9.3 1430
Veronika Kocher 9.5 1431 if(
1432 !targets.some(function(el){
1433 return !touched.has(el);
1434 })
1435 ){
1436 return;
1437 }
1438
1439 if(applyRow(group)){
1440 targets.forEach(function(el){
1441 touched.add(el);
1442 });
1443 }
1444 });
Veronika Kocher 9.3 1445 });
Veronika Kocher 9.5 1446
1447 lastWidth=width;
1448 hasApplied=true;
1449 }finally{
1450 applying=false;
1451 }
Veronika Kocher 9.3 1452 }
1453
Veronika Kocher 9.5 1454 function resize(){
1455 if(resizeTimer){
1456 clearTimeout(
1457 resizeTimer
1458 );
1459 }
Veronika Kocher 9.4 1460
Veronika Kocher 9.5 1461 resizeTimer=
1462 setTimeout(
1463 function(){
1464 resizeTimer=0;
1465 calculate(false);
1466 },
1467 RESIZE_DEBOUNCE
1468 );
Veronika Kocher 9.3 1469 }
1470
Veronika Kocher 9.5 1471 function waitImages(){
1472 var images=
1473 Array.from(
1474 root.querySelectorAll("img")
1475 );
Veronika Kocher 9.3 1476
Veronika Kocher 9.5 1477 return Promise.all(
1478 images.map(function(img){
1479 if(img.complete){
1480 return Promise.resolve();
1481 }
Veronika Kocher 9.3 1482
Veronika Kocher 9.5 1483 return new Promise(function(resolve){
1484 var done=function(){
1485 resolve();
1486 };
1487
1488 img.addEventListener(
1489 "load",
1490 done,
1491 {once:true}
1492 );
1493
1494 img.addEventListener(
1495 "error",
1496 done,
1497 {once:true}
1498 );
1499 });
1500 })
1501 );
1502 }
1503
1504 async function initial(){
1505 if(
1506 document.readyState!==
1507 "complete"
1508 ){
1509 await new Promise(function(resolve){
1510 addEventListener(
1511 "load",
1512 resolve,
1513 {once:true}
1514 );
1515 });
Veronika Kocher 9.4 1516 }
1517
Veronika Kocher 9.5 1518 if(
1519 document.fonts&&
1520 document.fonts.ready
1521 ){
1522 try{
1523 await document.fonts.ready;
1524 }catch(error){}
1525 }
1526
1527 await waitImages();
1528
1529 // Exactly one initial layout calculation.
1530 calculate(true);
Veronika Kocher 9.3 1531 }
1532
Veronika Kocher 9.5 1533 addEventListener(
1534 "resize",
1535 resize,
1536 {passive:true}
1537 );
1538
1539 initial();
Veronika Kocher 9.3 1540 })();
1541 </script>
Veronika Kocher 9.5 1542
Veronika Kocher 9.3 1543 <!-- SN_HORIZONTAL_BOX_HARMONIZER_END -->
Veronika Kocher 9.5 1544 {{/html}}\n