Wiki source code of Get Started

Version 8.8 by Veronika Kocher on Thursday, 03 Sep 2026 14:15

Hide last authors
Veronika Kocher 8.1 1 {{html clean="false"}}
Veronika Kocher 8.2 2
Veronika Kocher 8.1 3 <style>
4 .arsn-topic-page{max-width:1400px;margin:0 auto;color:#322f2b}
5 .arsn-topic-page *{box-sizing:border-box}
6 .arsn-card{border:1px solid #e3ded6;border-radius:11px;background:#fcfbf8;box-shadow:0 1px 3px rgba(0,0,0,.035)}
7 .arsn-eyebrow{font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase}
8 .arsn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:14px}
9 .arsn-grid-2{display:grid;grid-template-columns:repeat(2,minmax(300px,1fr));gap:14px}
10 .arsn-grid-3{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:14px}
11 .arsn-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}
12 .arsn-check{position:relative;padding:11px 12px 11px 36px;border:1px solid #e3ded6;border-radius:8px;background:#fffdf9}
13 .arsn-check:before{content:"✓";position:absolute;left:13px;top:9px;color:#e94b13;font-weight:800}
14 .arsn-call{padding:15px 16px;border:1px solid #e3ded6;border-top:4px solid #e94b13;border-radius:9px;background:#fcfbf8}
15 .arsn-call h4{font-size:17px;margin:0 0 6px 0;color:#35312d}
16 .arsn-call p{margin:0 0 8px 0;color:#625d56;line-height:1.5}
17 .arsn-call a{font-weight:600}
18 .arsn-section{margin:0 0 26px 0}
19 .arsn-section h3{font-size:22px;margin:0 0 6px 0;color:#35312d}
20 .arsn-section > p{color:#6a655e;line-height:1.55}
21 .arsn-info{padding:15px 17px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#eaf6f9;border-radius:8px;color:#365e68}
22 .arsn-info strong{color:#2d5661}
23 .arsn-warn{padding:15px 17px;border:1px solid #efd9cc;border-left:5px solid #e94b13;background:#fff6f1;border-radius:8px;color:#67564e}
24 .arsn-warn strong{color:#744531}
25 details.arsn-detail{margin:8px 0;border:1px solid #e3ded6;border-radius:8px;background:#fcfbf8;overflow:hidden}
26 details.arsn-detail summary{cursor:pointer;padding:12px 14px;font-weight:700;color:#403b36;background:#f3efe8}
27 details.arsn-detail[open] summary{border-bottom:1px solid #e3ded6}
28 details.arsn-detail .body{padding:14px 16px;color:#514c46;line-height:1.55}
29 .arsn-table{width:100%;border-collapse:collapse;background:#fffdf9}
30 .arsn-table th,.arsn-table td{border:1px solid #e3ded6;padding:10px 11px;vertical-align:top;text-align:left}
31 .arsn-table th{background:#f3efe8;color:#403b36}
32 .arsn-source{padding:12px 13px;border:1px solid #e3ded6;border-left:4px solid #21b6d7;border-radius:7px;background:#fffdf9}
33 .arsn-source strong{display:block;margin-bottom:3px}
34 .arsn-source small{color:#6a655e}
35 .arsn-hero-image{height:125px;overflow:hidden;background:#f1eee9}
36 .arsn-hero-image img{width:100%;height:100%;object-fit:cover;object-position:center 45%;display:block}
37 @media(max-width:850px){.arsn-grid-2,.arsn-grid-3{grid-template-columns:1fr}}
38 </style>
Veronika Kocher 8.2 39
Veronika Kocher 8.1 40 <div class="arsn-topic-page">
Veronika Kocher 8.2 41
42 <section class="arsn-card" style="margin-bottom:18px;overflow:hidden;border-left:6px solid #e94b13;">
43 <div class="arsn-hero-image"><img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Planning an artistic or research project" /></div>
44 <div style="padding:18px 21px 20px 21px;">
45 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:5px;">ENABLE · GET STARTED · AUSTRIA</div>
46 <h2 style="font-size:27px;line-height:1.2;margin:0 0 8px 0;color:#2c2926;">From project idea to a fundable, workable project</h2>
47 <p style="margin:0;color:#5e5953;line-height:1.6;max-width:1100px;">
48 Use this page to clarify your project before you search for funding or start spending money.
49 It is designed for artistic projects, arts-based research, artistic research, interdisciplinary work
50 and research projects in the Austrian university and cultural sector.
Veronika Kocher 8.1 51 </p>
Veronika Kocher 8.2 52 </div>
53 </section>
54
55 <div class="arsn-info" style="margin-bottom:20px;">
56 <strong>Start with one distinction:</strong>
57 Are you developing the project <strong>through the University of Applied Arts Vienna</strong>,
58 or are you applying <strong>independently as an artist, collective, association or other legal entity</strong>?
59 The applicant, employer, contracting route, budget rules, social insurance, tax treatment and signing authority can be different.
Veronika Kocher 8.1 60 </div>
Veronika Kocher 8.2 61
62 <div class="arsn-warn" style="margin-bottom:26px;">
63 <strong>Planning guidance — not legal or tax advice.</strong>
64 Funding rules, tax, social insurance, labour law, copyright, data protection and event requirements depend on your status,
65 the funder and the concrete project. Always use the current call document and current institutional rules as the binding source.
Veronika Kocher 8.1 66 </div>
Veronika Kocher 8.2 67
68 <!-- PROJECT PASSPORT -->
69 <section class="arsn-section">
70 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">STEP 1 · PROJECT PASSPORT</div>
71 <h3>Write down the project before looking for a call</h3>
72 <p>A call should fit the project — do not redesign the project around the first funding scheme you find.</p>
73
74 <div class="arsn-grid">
75 <div class="arsn-check"><strong>Working title + one-sentence idea</strong><br><span style="color:#6a655e;">What are you doing, with whom, and why now?</span></div>
76 <div class="arsn-check"><strong>Project type</strong><br><span style="color:#6a655e;">Arts-based research, artistic production, cultural project, research, education, mobility, innovation?</span></div>
77 <div class="arsn-check"><strong>Core question / objective</strong><br><span style="color:#6a655e;">What will be explored, created, tested, changed or made possible?</span></div>
78 <div class="arsn-check"><strong>Methods / artistic practice</strong><br><span style="color:#6a655e;">How does artistic practice, research or experimentation generate knowledge or results?</span></div>
79 <div class="arsn-check"><strong>People and roles</strong><br><span style="color:#6a655e;">PI/project lead, artists, researchers, technicians, partners, participants, administration.</span></div>
80 <div class="arsn-check"><strong>Host / applicant</strong><br><span style="color:#6a655e;">University, individual, association, company, consortium, partner institution?</span></div>
81 <div class="arsn-check"><strong>Duration and earliest start</strong><br><span style="color:#6a655e;">Include preparation, production/research, presentation, documentation and closure.</span></div>
82 <div class="arsn-check"><strong>Outputs</strong><br><span style="color:#6a655e;">Works, exhibitions, performances, publications, datasets, software, methods, workshops, documentation.</span></div>
83 <div class="arsn-check"><strong>Audience / users / communities</strong><br><span style="color:#6a655e;">Who should encounter, use or benefit from the work?</span></div>
84 <div class="arsn-check"><strong>Rough budget</strong><br><span style="color:#6a655e;">Personnel, fees, materials, travel, equipment, services, rights, access, documentation, publication.</span></div>
85 <div class="arsn-check"><strong>Risks / constraints</strong><br><span style="color:#6a655e;">Rights, personal data, participants, minors, safety, access, technical dependencies, permits.</span></div>
86 <div class="arsn-check"><strong>After the project</strong><br><span style="color:#6a655e;">What will be published, preserved, archived, handed over or deleted?</span></div>
87 </div>
88 </section>
89
90 <!-- FUNDING ROUTE -->
91 <section class="arsn-section">
92 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">STEP 2 · FUNDING ROUTE</div>
93 <h3>Where should I look for a call?</h3>
94 <p>Use the project type to narrow the funding landscape. These are starting points, not automatic matches.</p>
95
96 <div class="arsn-grid">
97 <div class="arsn-call" style="border-top-color:#21b6d7">
98 <h4>Arts-based research / artistic research</h4>
99 <p><strong>Start with:</strong> FWF Arts-Based Research (PEEK), Angewandte internal research funding and Support Art &amp; Research.</p>
100 <p style="font-size:13px;">PEEK is for high-quality arts-based research where artistic practice is central to the research question and the project is carried out at an Austrian research institution.</p>
101 <a href="https://www.fwf.ac.at/en/funding/portfolio/projects/arts-based-research" target="_blank" rel="noopener">FWF Arts-Based Research (PEEK)</a>
102 </div>
103
104 <div class="arsn-call" style="border-top-color:#21b6d7">
105 <h4>Basic research beyond PEEK</h4>
106 <p><strong>Start with:</strong> FWF project funding and the broader FWF portfolio.</p>
107 <p style="font-size:13px;">Use this when the project is primarily research and the arts-based PEEK profile is not the best fit.</p>
108 <a href="https://www.fwf.ac.at/en/funding/steps-to-your-fwf-project/find-funding" target="_blank" rel="noopener">FWF Find Funding</a>
109 </div>
110
111 <div class="arsn-call" style="border-top-color:#e94b13">
112 <h4>Small / short internal development at the Angewandte</h4>
113 <p><strong>Start with:</strong> SUP and current internal calls such as PORT or successor schemes.</p>
114 <p style="font-size:13px;">SUP is currently open on a rolling basis for employees and doctoral students for small-scale, short-term activities supporting art and research.</p>
115 <a href="https://www.dieangewandte.at/en/news/open_calls" target="_blank" rel="noopener">Angewandte Open Calls</a>
116 </div>
117
118 <div class="arsn-call" style="border-top-color:#e94b13">
119 <h4>Artistic production, exhibition, publication or presentation</h4>
120 <p><strong>Start with:</strong> BMWKMS federal arts funding and the relevant discipline; for Vienna-based work also check MA 7.</p>
121 <p style="font-size:13px;">Choose the artistic discipline first. Production funding is not automatically research funding.</p>
122 <a href="https://www.bmwkms.gv.at/themen/kunst-und-kultur/" target="_blank" rel="noopener">Federal arts &amp; culture calls</a>
123 </div>
124
125 <div class="arsn-call" style="border-top-color:#f0aa00">
126 <h4>Vienna-based cultural or research project</h4>
127 <p><strong>Start with:</strong> Stadt Wien Kultur (MA 7), then the relevant field.</p>
128 <p style="font-size:13px;">Read exclusions carefully. Current 2026 MA 7 visual/media-art rules explicitly exclude artistic-research projects, while the science/research field has different eligibility and exclusions.</p>
129 <a href="https://www.wien.gv.at/kultur/foerderungen" target="_blank" rel="noopener">MA 7 funding overview</a>
130 </div>
131
132 <div class="arsn-call" style="border-top-color:#38b76a">
133 <h4>European cultural cooperation</h4>
134 <p><strong>Start with:</strong> Creative Europe Culture.</p>
135 <p style="font-size:13px;">Best for transnational cooperation between cultural and creative organisations. Cooperation calls are organisational, not individual, funding instruments.</p>
136 <a href="https://culture.ec.europa.eu/funding/calls" target="_blank" rel="noopener">Creative Europe calls</a>
137 </div>
138
139 <div class="arsn-call" style="border-top-color:#38b76a">
140 <h4>Artist mobility / residency</h4>
141 <p><strong>Start with:</strong> Culture Moves Europe and current federal mobility / residency schemes.</p>
142 <p style="font-size:13px;">Use this route when international movement, exchange or residency is the primary funded activity.</p>
143 <a href="https://culture.ec.europa.eu/culture-moves-europe" target="_blank" rel="noopener">Culture Moves Europe</a>
144 </div>
145
146 <div class="arsn-call" style="border-top-color:#21b6d7">
147 <h4>European collaborative research on culture / society</h4>
148 <p><strong>Start with:</strong> Horizon Europe Cluster 2 via FFG.</p>
149 <p style="font-size:13px;">Relevant for larger international research and innovation consortia in culture, creativity, heritage, democracy and social transformation.</p>
150 <a href="https://www.ffg.at/europa/heu/cluster2" target="_blank" rel="noopener">FFG · Horizon Europe Cluster 2</a>
151 </div>
152
153 <div class="arsn-call" style="border-top-color:#21b6d7">
154 <h4>Teaching / curriculum / institutional cooperation</h4>
155 <p><strong>Start with:</strong> Erasmus+ Cooperation Partnerships via OeAD.</p>
156 <p style="font-size:13px;">Suitable when educational cooperation, curriculum, capacity building or institutional learning is central.</p>
157 <a href="https://erasmusplus.oead.at/de/hochschulbildung/kooperationen/kooperationspartnerschaften" target="_blank" rel="noopener">OeAD · Erasmus+ partnerships</a>
158 </div>
159 </div>
160 </section>
161
162 <div class="arsn-info" style="margin-bottom:26px;">
163 <strong>Best first contact at the Angewandte:</strong>
164 Support Kunst und Forschung supports the content, administrative and financial development of artistic,
165 scientific and arts-based research projects and works with FWF, FFG, EU programmes, City of Vienna and other funders.
Veronika Kocher 8.1 166 <div style="margin-top:7px;">
Veronika Kocher 8.2 167 <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>
Veronika Kocher 8.1 168 · <a href="mailto:projektsupport@uni-ak.ac.at">projektsupport@uni-ak.ac.at</a>
Veronika Kocher 8.2 169 </div>
Veronika Kocher 8.1 170 </div>
Veronika Kocher 8.2 171
172 <!-- CALL FIT -->
173 <section class="arsn-section">
174 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">STEP 3 · CALL FIT</div>
175 <h3>Read the funding conditions in this order</h3>
176 <p>If one of the first five points fails, stop and look for a better call before investing time in the proposal.</p>
177
178 <table class="arsn-table">
179 <thead><tr><th>#</th><th>Check</th><th>What to verify</th></tr></thead>
180 <tbody>
181 <tr><td>1</td><td><strong>Applicant</strong></td><td>Individual, university, association, company, consortium? Citizenship/residence/seat requirements?</td></tr>
182 <tr><td>2</td><td><strong>Project scope</strong></td><td>Does the call explicitly fund your kind of research, artistic practice, production, mobility or cooperation?</td></tr>
183 <tr><td>3</td><td><strong>Exclusions</strong></td><td>Students? University study projects? Already-started projects? Artistic research? Commercial activity? Foreign activity?</td></tr>
184 <tr><td>4</td><td><strong>Timing</strong></td><td>Deadline, internal deadline, earliest eligible project start, maximum duration, decision date.</td></tr>
185 <tr><td>5</td><td><strong>Funding amount</strong></td><td>Minimum/maximum grant, full or partial funding, required own contribution or co-financing.</td></tr>
186 <tr><td>6</td><td><strong>Eligible costs</strong></td><td>Personnel, fees, travel, materials, equipment, services, venue, publication, subcontracting, overhead, VAT.</td></tr>
187 <tr><td>7</td><td><strong>Personnel rules</strong></td><td>Salary rates, fair-pay requirements, employment status, eligible working time, honoraria.</td></tr>
188 <tr><td>8</td><td><strong>Partners</strong></td><td>Required number/countries, lead/partner roles, letters, consortium or cooperation agreements.</td></tr>
189 <tr><td>9</td><td><strong>Evaluation</strong></td><td>Quality, innovation, artistic/research excellence, impact, feasibility, audience, sustainability, inclusion/diversity.</td></tr>
190 <tr><td>10</td><td><strong>Submission route</strong></td><td>Who presses submit? Institution, PI, individual? ID Austria, elane, Funding & Tenders Portal, OID/PIC?</td></tr>
191 <tr><td>11</td><td><strong>Double funding</strong></td><td>May the same costs/project receive other public funding? Which co-funding must be declared?</td></tr>
192 <tr><td>12</td><td><strong>Rights / Open Science</strong></td><td>IP ownership, licences, publication, open access, research data, repository or communication obligations.</td></tr>
193 <tr><td>13</td><td><strong>Ethics / security</strong></td><td>Personal data, human participants, vulnerable groups, minors, dual use, confidential material.</td></tr>
194 <tr><td>14</td><td><strong>Reporting</strong></td><td>Financial evidence, final report, deliverables, time records, logos/acknowledgement, audits, retention periods.</td></tr>
195 <tr><td>15</td><td><strong>Change rules</strong></td><td>Which budget, team, timeline or output changes require prior approval?</td></tr>
196 </tbody>
197 </table>
198 </section>
199
200 <div class="arsn-warn" style="margin-bottom:26px;">
201 <strong>Do not choose a funding line by its title alone.</strong>
202 In Austria, neighbouring funding fields can have opposite exclusions. For example, current MA 7 visual/media-art rules
203 exclude artistic-research projects, while FWF PEEK is specifically designed for arts-based research.
Veronika Kocher 8.1 204 </div>
Veronika Kocher 8.2 205
206 <!-- AUSTRIA-SPECIFIC CLARIFICATIONS -->
207 <section class="arsn-section">
208 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">STEP 4 · AUSTRIA-SPECIFIC SETUP</div>
209 <h3>What should be clarified before submission or project start?</h3>
210
211 <details class="arsn-detail" open>
212 <summary>1 · Applicant, institution & signing authority</summary>
213 <div class="body">
214 <ul>
215 <li>Decide who is legally applying and receiving the grant.</li>
216 <li>If the project is hosted by the Angewandte, clarify the institutional submission and approval route early.</li>
217 <li>Check whether the funder requires an Austrian research institution, Austrian residence/citizenship, an Austrian legal entity or an international consortium.</li>
218 <li>Clarify who may sign applications, contracts, partner agreements and declarations.</li>
219 <li>For FWF programmes in PROFI mode, the research institution submits on behalf of the researcher; programme-specific rules still apply.</li>
220 </ul>
221 </div>
222 </details>
223
224 <details class="arsn-detail">
225 <summary>2 · Concept, artistic/research design & evidence of quality</summary>
226 <div class="body">
227 <ul>
228 <li>State the artistic/research question and why the project is needed now.</li>
229 <li>Describe the artistic practice, research methods and how they generate knowledge/results.</li>
230 <li>Position the project in relevant artistic, scholarly and cultural contexts.</li>
231 <li>Explain what is genuinely new, experimental or distinctive.</li>
232 <li>Define work packages, milestones, decision points and dependencies.</li>
233 <li>Describe expected outputs and how success/quality will be assessed.</li>
234 <li>Prepare relevant portfolio, CV, publications/works, prior projects and references.</li>
235 </ul>
236 </div>
237 </details>
238
239 <details class="arsn-detail">
240 <summary>3 · Budget, fair pay, co-financing & cash flow</summary>
241 <div class="body">
242 <ul>
243 <li>Budget personnel/employment, artist fees and external services separately.</li>
244 <li>Include employer costs/social contributions where applicable.</li>
245 <li>Budget materials, production, equipment, software, travel, accommodation, transport, venue, insurance, documentation, accessibility, rights/licences, publication and preservation.</li>
246 <li>Check funder-specific salary rates, fair-pay expectations and maximum eligible rates.</li>
247 <li>Check whether equipment is fully eligible, depreciated, capped or needs institutional procurement.</li>
248 <li>Clarify VAT treatment and whether it is an eligible cost for the applicant.</li>
249 <li>Check indirect costs/overheads and whether they are fixed, capped or excluded.</li>
250 <li>Identify co-funding, own contribution and in-kind contributions and whether they must already be confirmed.</li>
251 <li>Plan cash flow: when is funding actually paid, and who pre-finances costs?</li>
252 <li>Never assume costs incurred before the eligible project start can be reimbursed.</li>
253 </ul>
254 </div>
255 </details>
256
257 <details class="arsn-detail">
258 <summary>4 · Employment, contracts, tax & social insurance</summary>
259 <div class="body">
260 <ul>
261 <li>Clarify whether each person is employed, self-employed, contracted for a work/service, or participating through a partner institution.</li>
262 <li>Do not use freelance contracts to disguise an employment relationship; use the university/organisation's HR and legal process.</li>
263 <li>Clarify tax/VAT treatment for independent activity with the competent tax authority or professional advice.</li>
264 <li>Self-employed artists in Austria should check SVS status and whether a KSVF contribution subsidy may apply.</li>
265 <li>KSVF support requires an application and specific insurance/income/artistic-activity conditions; it is not automatic.</li>
266 <li>Keep a clean record of contracts, invoices, payment evidence and income/expense documentation.</li>
267 </ul>
268 <p><a href="https://www.ksvf.at/zuschuss" target="_blank" rel="noopener">KSVF contribution subsidy information</a></p>
269 </div>
270 </details>
271
272 <details class="arsn-detail">
273 <summary>5 · Copyright, performers' rights, licences & ownership</summary>
274 <div class="body">
275 <ul>
276 <li>List third-party images, texts, music, film, software, datasets, designs, archives and artworks you plan to use.</li>
277 <li>Clarify the exact rights needed: reproduction, adaptation, exhibition/performance, online publication, streaming, documentation, archive/repository deposit.</li>
278 <li>Ownership of a physical artwork/object does not automatically include copyright exploitation rights.</li>
279 <li>Clarify rights in newly created outputs between team members, institution, commissioned contributors and partners.</li>
280 <li>Clarify authorship/credit, moral rights, performers' rights and documentation/photo/video permissions.</li>
281 <li>Check collecting-society licences where relevant (e.g. music or represented visual works).</li>
282 <li>Decide which open licence or rights statement, if any, will be used for outputs and metadata.</li>
283 </ul>
284 <p><a href="https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10001848" target="_blank" rel="noopener">Austrian Copyright Act (RIS)</a></p>
285 </div>
286 </details>
287
288 <details class="arsn-detail">
289 <summary>6 · Ethics, personal data, consent & participants</summary>
290 <div class="body">
291 <ul>
292 <li>Identify whether you collect personal data, images, voices, interviews, location data, health data or other sensitive information.</li>
293 <li>Define the legal basis, information provided to participants, consent where needed, withdrawal process and retention period.</li>
294 <li>Separate consent to participate from permission to publish identifiable material where appropriate.</li>
295 <li>Plan anonymisation/pseudonymisation where possible.</li>
296 <li>Check secure storage, access, data sharing and transfers to external/cloud services or outside the EEA.</li>
297 <li>For minors or vulnerable participants, clarify child protection, consent/assent, safeguarding and funder/institutional requirements.</li>
298 <li>For participatory/co-creative artistic research, clarify ownership, attribution, benefit sharing and what participants can veto or withdraw.</li>
299 <li>Check whether institutional ethics review is required before data collection begins.</li>
300 </ul>
301 <p><a 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 &amp; Ethics</a></p>
302 </div>
303 </details>
304
305 <details class="arsn-detail">
306 <summary>7 · Venues, public events, safety, accessibility & insurance</summary>
307 <div class="body">
308 <ul>
309 <li>Clarify venue permission, capacity, fire/safety rules, technical approvals, noise, opening hours and accessibility.</li>
310 <li>In Vienna, public events can require notification or registration depending on type and audience capacity; check the Wiener Veranstaltungsgesetz and MA 36 guidance.</li>
311 <li>Budget security, first aid, awareness measures, waste, technical staff and accessibility where relevant.</li>
312 <li>If children/minors participate, check child-protection and safeguarding obligations.</li>
313 <li>Clarify liability, equipment, transport, exhibition, travel and event insurance.</li>
314 <li>For public space, construction/installation, animals, hazardous substances, lasers, drones or special technology, check additional permits early.</li>
315 </ul>
316 <p><a href="https://www.wien.gv.at/wirtschaft/oeffentliche-veranstaltung-planen-anmelden" target="_blank" rel="noopener">City of Vienna · planning public events</a></p>
317 </div>
318 </details>
319
320 <details class="arsn-detail">
321 <summary>8 · Data management, documentation, Open Science & preservation</summary>
322 <div class="body">
323 <ul>
324 <li>Identify all data/material types: raw, processed, documentation, code, audiovisual files, physical/digital works.</li>
325 <li>Define folder structure, file naming, versions/master files, storage, backup and access.</li>
326 <li>Plan metadata and provenance so the artistic/research process remains understandable.</li>
327 <li>Check whether the funder requires a Data Management Plan or open research data.</li>
328 <li>Separate what may be public from what must be restricted.</li>
329 <li>Plan identifiers, repository/deposit, file formats and preservation of technical dependencies.</li>
330 <li>Budget documentation and preservation work; do not leave it until the final month.</li>
331 </ul>
332 </div>
333 </details>
334
335 <details class="arsn-detail">
336 <summary>9 · Partners, governance, procurement & conflicts of interest</summary>
337 <div class="body">
338 <ul>
339 <li>Document partner roles, budget responsibility, decision-making, IP, data sharing and publication rights.</li>
340 <li>Use cooperation/consortium/subcontract agreements where required.</li>
341 <li>Clarify who can commit the institution financially or contractually.</li>
342 <li>Follow institutional/public procurement rules for purchases and external services.</li>
343 <li>Document quotations/tenders where required.</li>
344 <li>Identify conflicts of interest in commissioning, evaluation, procurement or partner selection.</li>
345 </ul>
346 </div>
347 </details>
348
349 <details class="arsn-detail">
350 <summary>10 · Reporting, evidence & audit trail</summary>
351 <div class="body">
352 <ul>
353 <li>Create a project cost centre/folder and evidence structure from day one.</li>
354 <li>Keep contracts, invoices, payment evidence, travel documentation, approvals and procurement records.</li>
355 <li>Track deliverables, milestones and funder communication.</li>
356 <li>Use correct funder acknowledgements/logos and record dissemination.</li>
357 <li>Request approval before material changes if the grant agreement requires it.</li>
358 <li>Plan final narrative/financial reporting, output deposit, data/repository work and retention of records.</li>
359 </ul>
360 </div>
361 </details>
362 </section>
363
364 <!-- APPLICATION PACK -->
365 <section class="arsn-section">
366 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">STEP 5 · APPLICATION PACK</div>
367 <h3>Prepare these documents once and adapt them to each call</h3>
368 <div class="arsn-grid">
369 <div class="arsn-check">1-page project summary / abstract</div>
370 <div class="arsn-check">full concept / research or artistic project description</div>
371 <div class="arsn-check">research/artistic context and relevance</div>
372 <div class="arsn-check">methods / artistic practice / work packages</div>
373 <div class="arsn-check">timeline and milestones</div>
374 <div class="arsn-check">team roles, CVs, portfolios, key works/publications</div>
375 <div class="arsn-check">partner list + letters/agreements where needed</div>
376 <div class="arsn-check">detailed budget + financing plan + co-funding</div>
377 <div class="arsn-check">rights / IP / licensing plan</div>
378 <div class="arsn-check">data protection / ethics / consent plan</div>
379 <div class="arsn-check">data management / documentation / repository plan</div>
380 <div class="arsn-check">communication / dissemination / audience plan</div>
381 <div class="arsn-check">accessibility / inclusion / fair-pay considerations</div>
382 <div class="arsn-check">risk register + mitigation</div>
383 <div class="arsn-check">venue / permits / safety requirements if relevant</div>
384 <div class="arsn-check">sustainability / environmental considerations if requested</div>
385 </div>
386 </section>
387
388 <!-- LIVE SOURCES -->
389 <section class="arsn-section">
390 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">LIVE SOURCES</div>
391 <h3>Where to check current calls and binding conditions</h3>
392 <p>Use these as live entry points. Deadlines and conditions change; do not copy an old deadline from this page into your planning.</p>
393
394 <div class="arsn-grid">
395 <div class="arsn-source"><strong>Angewandte Open Calls</strong><small>Internal and external opportunities surfaced by the University.</small><br><a href="https://www.dieangewandte.at/en/news/open_calls" target="_blank" rel="noopener">Open calls</a></div>
396 <div class="arsn-source"><strong>Support Kunst und Forschung</strong><small>Funding landscape, concept feedback, administrative/financial project design.</small><br><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/support_kunst_und_forschung" target="_blank" rel="noopener">Support Art &amp; Research</a></div>
397 <div class="arsn-source"><strong>FWF</strong><small>PEEK / Arts-Based Research and other research funding.</small><br><a href="https://www.fwf.ac.at/en/funding" target="_blank" rel="noopener">FWF funding</a></div>
398 <div class="arsn-source"><strong>BMWKMS · Kunst &amp; Kultur</strong><small>Federal artistic project funding, scholarships, mobility and discipline-specific calls.</small><br><a href="https://www.bmwkms.gv.at/themen/kunst-und-kultur/" target="_blank" rel="noopener">Current calls</a></div>
399 <div class="arsn-source"><strong>Stadt Wien Kultur · MA 7</strong><small>Vienna cultural and science/research funding by field.</small><br><a href="https://www.wien.gv.at/kultur/foerderungen" target="_blank" rel="noopener">Funding overview</a></div>
400 <div class="arsn-source"><strong>Creative Europe Desk Austria</strong><small>Advice on Creative Europe culture / cross-sectoral calls.</small><br><a href="https://www.creativeeurope.at/" target="_blank" rel="noopener">Creative Europe Austria</a></div>
401 <div class="arsn-source"><strong>Culture Moves Europe</strong><small>International mobility and residency routes for artists/cultural professionals.</small><br><a href="https://culture.ec.europa.eu/culture-moves-europe" target="_blank" rel="noopener">Culture Moves Europe</a></div>
402 <div class="arsn-source"><strong>FFG · Horizon Europe Cluster 2</strong><small>Culture, creativity, heritage, democracy and societal research/innovation.</small><br><a href="https://www.ffg.at/europa/heu/cluster2" target="_blank" rel="noopener">Cluster 2</a></div>
403 <div class="arsn-source"><strong>OeAD · Erasmus+</strong><small>Education, curriculum and institutional cooperation.</small><br><a href="https://erasmusplus.oead.at/de/hochschulbildung/kooperationen/kooperationspartnerschaften" target="_blank" rel="noopener">Cooperation Partnerships</a></div>
404 </div>
405 </section>
406
407 <!-- RED FLAGS -->
408 <section class="arsn-section">
409 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:4px;">STOP & CHECK</div>
410 <h3>Red flags before you submit or start</h3>
411 <div class="arsn-grid">
412 <div class="arsn-warn"><strong>The project has already started.</strong><br>Many schemes do not fund completed or already-started activities/costs.</div>
413 <div class="arsn-warn"><strong>The applicant is wrong.</strong><br>An individual cannot use a scheme for organisations, or vice versa.</div>
414 <div class="arsn-warn"><strong>The call excludes your project type.</strong><br>Read exclusions, especially for university projects and arts-based research.</div>
415 <div class="arsn-warn"><strong>The budget is built from wishes, not eligible costs.</strong><br>Rebuild it from the funder's cost rules.</div>
416 <div class="arsn-warn"><strong>Rights/consent are unresolved.</strong><br>Do not promise open publication of material you may not be allowed to publish.</div>
417 <div class="arsn-warn"><strong>No institutional lead time.</strong><br>External deadline ≠ internal deadline; get institutional approval early.</div>
418 </div>
419 </section>
420
421 <div class="arsn-info" style="margin-bottom:14px;">
422 <strong>Need help finding the right call?</strong>
423 Bring Support Kunst und Forschung a one-paragraph project idea, expected duration, rough budget,
424 applicant/partners and the type of output you want to create. That is usually enough to start a useful funding-fit conversation.
Veronika Kocher 8.1 425 </div>
Veronika Kocher 8.2 426
427 <div class="arsn-info">
428 <strong>Next:</strong>
429 Once the funding route and major constraints are clear, continue with
430 <a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Project%20Planning%20%26%20Organisation/">Project Planning &amp; Organisation</a>,
431 <a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Funding%20%26%20Funder%20Requirements/">Funding &amp; Funder Requirements</a>,
432 and <a 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>.
433 </div>
434
Veronika Kocher 8.1 435 </div>
436 {{/html}}
Veronika Kocher 8.4 437
Veronika Kocher 8.7 438 {{html clean="false"}}
439 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
Veronika Kocher 8.6 440
Veronika Kocher 8.7 441 <style data-sn-service-navigator-master="1">
442 /* =========================================================
443 MASTER TYPOGRAPHY
444 ========================================================= */
Veronika Kocher 8.6 445 #xwikicontent h1,
446 #xwikicontent h2,
447 #xwikicontent h3,
448 #xwikicontent h4,
449 #xwikicontent h5,
450 #xwikicontent h6,
451 #xwikicontent .box-title,
452 #xwikicontent [role="heading"],
453 #xwikicontent h1 a,
454 #xwikicontent h2 a,
455 #xwikicontent h3 a,
456 #xwikicontent h4 a,
457 #xwikicontent h5 a,
458 #xwikicontent h6 a,
459 #xwikicontent .box-title a,
460 #xwikicontent [role="heading"] a{
461 text-align:left!important;
462 text-justify:auto!important;
463 word-spacing:normal!important;
464 }
465
Veronika Kocher 8.7 466 /* =========================================================
467 COMING SOON / IN VORBEREITUNG
468 ========================================================= */
469 .sn-coming-soon-badge{
470 display:inline-block;
471 vertical-align:middle;
472 margin-left:10px;
473 padding:4px 8px;
474 border-radius:14px;
475 border:1px solid #efd9cc;
476 background:#fff4ee;
477 color:#8a4d36;
478 font-size:11px;
479 font-weight:700;
480 letter-spacing:.055em;
481 line-height:1.2;
482 white-space:nowrap;
483 }
484
485 /* =========================================================
486 NATIVE / DETAIL CALLOUT GEOMETRY
487 Preserve existing backgrounds.
488 ========================================================= */
489 #xwikicontent .arsn-info,
490 #xwikicontent .dmp-info,
491 #xwikicontent .ido-info,
492 #xwikicontent .pp-info,
493 #xwikicontent .infomessage{
Veronika Kocher 8.6 494 box-sizing:border-box!important;
Veronika Kocher 8.7 495 border-left:4px solid #21b6d7!important;
496 border-radius:8px;
Veronika Kocher 8.6 497 text-align:left!important;
498 word-spacing:normal!important;
499 }
500
Veronika Kocher 8.7 501 #xwikicontent .arsn-warn,
502 #xwikicontent .dmp-warn,
503 #xwikicontent .ido-warn,
504 #xwikicontent .pp-warn,
505 #xwikicontent .warn,
506 #xwikicontent .warning,
507 #xwikicontent .warningmessage,
Veronika Kocher 8.6 508 #xwikicontent .errormessage{
Veronika Kocher 8.7 509 box-sizing:border-box!important;
510 border-left:4px solid #e94b13!important;
511 border-radius:8px;
512 text-align:left!important;
513 word-spacing:normal!important;
Veronika Kocher 8.6 514 }
515
Veronika Kocher 8.7 516 [data-sn-master-equal-height],
517 [data-sn-master-first-row]{
Veronika Kocher 8.5 518 box-sizing:border-box;
Veronika Kocher 8.4 519 }
Veronika Kocher 8.8 520
521 /* =========================================================
522 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
523 ========================================================= */
524 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
525 display:grid!important;
526 grid-template-columns:minmax(0,1fr)!important;
527 grid-auto-rows:auto!important;
528 width:100%!important;
529 max-width:none!important;
530 box-sizing:border-box!important;
531 justify-items:start!important;
532 align-items:start!important;
533 gap:2px!important;
534 text-align:left!important;
535 text-align-last:left!important;
536 text-justify:auto!important;
537 word-spacing:normal!important;
538 white-space:normal!important;
539 }
540 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
541 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
542 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
543 display:block!important;
544 width:100%!important;
545 margin:0!important;
546 text-align:left!important;
547 text-align-last:left!important;
548 text-justify:auto!important;
549 word-spacing:normal!important;
550 white-space:normal!important;
551 }
Veronika Kocher 8.4 552 </style>
Veronika Kocher 8.6 553
Veronika Kocher 8.7 554 <script data-sn-service-navigator-master="1">
Veronika Kocher 8.4 555 (function(){
556 "use strict";
557
Veronika Kocher 8.7 558 var PAGE_KIND="detail";
559 var PLACEHOLDER=false;
560 var PLACEHOLDER_LABEL="COMING SOON";
561
Veronika Kocher 8.4 562 var MOBILE_MAX=767;
Veronika Kocher 8.5 563 var ROW_TOLERANCE=6;
Veronika Kocher 8.6 564 var RESIZE_DEBOUNCE=220;
Veronika Kocher 8.4 565
566 var root=
567 document.getElementById("xwikicontent")||
568 document.querySelector(".xwiki-rendering-content")||
569 document.querySelector("main")||
570 document.body;
571
572 if(!root)return;
573
Veronika Kocher 8.7 574 var managedHeight=new Set();
575 var managedMargin=new Set();
576 var originalHeight=new WeakMap();
577 var originalMargin=new WeakMap();
Veronika Kocher 8.6 578
579 var resizeTimer=0;
Veronika Kocher 8.7 580 var running=false;
Veronika Kocher 8.6 581
Veronika Kocher 8.7 582 var THEMES=[
583 {
584 name:"BLUE",
585 accent:"#21b6d7",
586 bg:"#eaf7fb",
587 text:"#315d68",
588 labels:[
589 "HIER STARTEN",
590 "ENTSCHEIDEN",
591 "ÜBERPRÜFEN & ANPASSEN",
592 "START HERE",
593 "DECIDE",
594 "REVIEW & ADAPT"
595 ]
596 },
597 {
598 name:"RED",
599 accent:"#e94b13",
600 bg:"#fff1ec",
601 text:"#8a4d36",
602 labels:[
603 "PLANEN & ORGANISIEREN",
604 "ORGANISIEREN & DOKUMENTIEREN",
605 "PUBLIZIEREN & PRÄSENTIEREN",
606 "PLAN & ORGANISE",
607 "PLAN & ORGANIZE",
608 "ORGANISE & DOCUMENT",
609 "ORGANIZE & DOCUMENT",
610 "PUBLISH & PRESENT"
611 ]
612 },
613 {
614 name:"YELLOW",
615 accent:"#f0aa00",
616 bg:"#fff8e7",
617 text:"#785b17",
618 labels:[
619 "SCHÜTZEN & KLÄREN",
620 "STANDARDISIEREN & IDENTIFIZIEREN",
621 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
622 "PROTECT & CLARIFY",
623 "STANDARDISE & IDENTIFY",
624 "STANDARDIZE & IDENTIFY",
625 "OPEN, REUSE & MAKE FINDABLE"
626 ]
627 },
628 {
629 name:"GREEN",
630 accent:"#38b76a",
631 bg:"#edf9f1",
632 text:"#3f7451",
633 labels:[
634 "INFRASTRUKTUR EINRICHTEN",
635 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
636 "SPEICHERN & ZUGRIFF STEUERN",
637 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
638 "SET UP INFRASTRUCTURE",
639 "SET UP INFRASTRUCTURE & COLLABORATION",
640 "STORE & CONTROL ACCESS",
641 "REPOSITORY, PRESERVE & HAND OVER"
642 ]
Veronika Kocher 8.5 643 }
Veronika Kocher 8.7 644 ];
Veronika Kocher 8.5 645
Veronika Kocher 8.7 646 function num(value){
647 var n=parseFloat(value);
648 return Number.isFinite(n)?n:0;
Veronika Kocher 8.4 649 }
650
Veronika Kocher 8.7 651 function norm(value){
652 return String(value||"")
Veronika Kocher 8.6 653 .replace(/\s+/g," ")
654 .trim()
655 .toUpperCase();
656 }
657
Veronika Kocher 8.7 658 function visible(el){
659 if(!el||el.nodeType!==1)return false;
Veronika Kocher 8.4 660
Veronika Kocher 8.7 661 var style=getComputedStyle(el);
662 var rect=el.getBoundingClientRect();
Veronika Kocher 8.6 663
664 return (
Veronika Kocher 8.7 665 style.display!=="none"&&
666 style.visibility!=="hidden"&&
667 rect.width>20&&
668 rect.height>4
Veronika Kocher 8.6 669 );
Veronika Kocher 8.4 670 }
671
Veronika Kocher 8.7 672 function saveStyle(el,map,property){
Veronika Kocher 8.5 673 if(map.has(el))return;
674
675 map.set(el,{
Veronika Kocher 8.7 676 value:el.style.getPropertyValue(property),
677 priority:el.style.getPropertyPriority(property)
Veronika Kocher 8.5 678 });
679 }
680
Veronika Kocher 8.7 681 function restoreStyle(el,map,property){
Veronika Kocher 8.5 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 8.7 691 el.style.removeProperty(property);
Veronika Kocher 8.5 692 }
693 }
694
Veronika Kocher 8.6 695 function resetRuntime(){
Veronika Kocher 8.7 696 managedHeight.forEach(function(el){
697 restoreStyle(
Veronika Kocher 8.5 698 el,
Veronika Kocher 8.7 699 originalHeight,
Veronika Kocher 8.5 700 "min-height"
701 );
702 el.removeAttribute(
Veronika Kocher 8.7 703 "data-sn-master-equal-height"
Veronika Kocher 8.5 704 );
705 });
706
Veronika Kocher 8.7 707 managedMargin.forEach(function(el){
708 restoreStyle(
Veronika Kocher 8.5 709 el,
Veronika Kocher 8.7 710 originalMargin,
Veronika Kocher 8.5 711 "margin-top"
712 );
713 el.removeAttribute(
Veronika Kocher 8.7 714 "data-sn-master-first-row"
Veronika Kocher 8.5 715 );
716 });
717
Veronika Kocher 8.7 718 managedHeight.clear();
719 managedMargin.clear();
720 }
Veronika Kocher 8.6 721
Veronika Kocher 8.7 722 function themeFor(text){
723 var value=norm(text);
Veronika Kocher 8.6 724
Veronika Kocher 8.7 725 for(var i=0;i<THEMES.length;i++){
726 for(var j=0;j<THEMES[i].labels.length;j++){
727 var label=THEMES[i].labels[j];
728
729 if(
730 value===label||
731 value.indexOf(label+" ")===0||
732 value.indexOf(label+" -")===0||
733 value.indexOf(label+" ·")===0
734 ){
735 return THEMES[i];
736 }
737 }
738 }
739
740 return null;
Veronika Kocher 8.5 741 }
742
Veronika Kocher 8.7 743 /* =======================================================
Veronika Kocher 8.8 744 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
745 ======================================================= */
746
747 function colourDistance(a,b){
748 return Math.sqrt(
749 Math.pow(a[0]-b[0],2)+
750 Math.pow(a[1]-b[1],2)+
751 Math.pow(a[2]-b[2],2)
752 );
753 }
754
755 function makeFilledRedOrangeCTAsBorderless(){
756 var RED_ORANGE=[233,75,19];
757
758 Array.from(
759 root.querySelectorAll(
760 'a,button,[role="button"],input[type="submit"],input[type="button"]'
761 )
762 ).forEach(function(el){
763 if(!visible(el))return;
764
765 var style=getComputedStyle(el);
766 var rgb=parseRGB(style.backgroundColor);
767
768 if(!rgb)return;
769
770 if(
771 colourDistance(
772 rgb,
773 RED_ORANGE
774 )>55
775 ){
776 return;
777 }
778
779 var rect=el.getBoundingClientRect();
780
781 if(
782 rect.width<80||
783 rect.height<24
784 ){
785 return;
786 }
787
788 el.style.setProperty(
789 "border",
790 "none",
791 "important"
792 );
793
794 el.style.setProperty(
795 "border-left",
796 "none",
797 "important"
798 );
799
800 el.style.setProperty(
801 "border-top",
802 "none",
803 "important"
804 );
805
806 el.style.setProperty(
807 "border-right",
808 "none",
809 "important"
810 );
811
812 el.style.setProperty(
813 "border-bottom",
814 "none",
815 "important"
816 );
817
818 el.style.setProperty(
819 "box-shadow",
820 "none",
821 "important"
822 );
823 });
824 }
825
826 /* =======================================================
827 FULL-WIDTH THREE-LINE AREA LABELS
828 ======================================================= */
829
830 function compactText(value){
831 return String(value||"")
832 .replace(/\s+/g," ")
833 .trim();
834 }
835
836 function makeThreeLineAreaLabels(){
837 Array.from(
838 root.querySelectorAll(
839 ".arsn-area-label"
840 )
841 ).forEach(function(label){
842 if(
843 label.getAttribute(
844 "data-sn-three-line"
845 )==="1"
846 ){
847 return;
848 }
849
850 var number=
851 label.querySelector(
852 ":scope > .arsn-area-number"
853 );
854
855 var action=
856 label.querySelector(
857 ":scope > .arsn-area-action"
858 );
859
860 if(
861 !number||
862 !action
863 ){
864 return;
865 }
866
867 var clone=
868 label.cloneNode(true);
869
870 var cloneNumber=
871 clone.querySelector(
872 ":scope > .arsn-area-number"
873 );
874
875 var cloneAction=
876 clone.querySelector(
877 ":scope > .arsn-area-action"
878 );
879
880 if(cloneNumber){
881 cloneNumber.remove();
882 }
883
884 if(cloneAction){
885 cloneAction.remove();
886 }
887
888 var titleText=
889 compactText(
890 clone.textContent
891 );
892
893 if(!titleText){
894 return;
895 }
896
897 var numberNode=
898 number.cloneNode(true);
899
900 var actionNode=
901 action.cloneNode(true);
902
903 var titleNode=
904 document.createElement(
905 "span"
906 );
907
908 titleNode.className=
909 "sn-area-label-title";
910
911 titleNode.textContent=
912 titleText;
913
914 while(label.firstChild){
915 label.removeChild(
916 label.firstChild
917 );
918 }
919
920 label.appendChild(
921 numberNode
922 );
923
924 label.appendChild(
925 titleNode
926 );
927
928 label.appendChild(
929 actionNode
930 );
931
932 label.setAttribute(
933 "data-sn-three-line",
934 "1"
935 );
936
937 var head=
938 label.closest(
939 ".arsn-area-head"
940 );
941
942 if(head){
943 head.style.setProperty(
944 "width",
945 "100%",
946 "important"
947 );
948
949 head.style.setProperty(
950 "max-width",
951 "100%",
952 "important"
953 );
954
955 head.style.setProperty(
956 "box-sizing",
957 "border-box",
958 "important"
959 );
960 }
961 });
962 }
963
964 /* =======================================================
Veronika Kocher 8.7 965 PLACEHOLDER BADGE
966 ======================================================= */
Veronika Kocher 8.6 967
Veronika Kocher 8.7 968 function applyPlaceholderBadge(){
969 if(!PLACEHOLDER)return;
Veronika Kocher 8.6 970
971 if(
Veronika Kocher 8.7 972 document.querySelector(
973 ".sn-coming-soon-badge"
974 )
Veronika Kocher 8.6 975 ){
Veronika Kocher 8.7 976 return;
Veronika Kocher 8.6 977 }
978
Veronika Kocher 8.7 979 var title=
980 document.querySelector(
981 "#document-title"
982 )||
983 document.querySelector(
984 "h1"
985 );
Veronika Kocher 8.6 986
Veronika Kocher 8.7 987 if(!title)return;
Veronika Kocher 8.6 988
Veronika Kocher 8.7 989 var badge=
990 document.createElement(
991 "span"
992 );
993
994 badge.className=
995 "sn-coming-soon-badge";
996
997 badge.textContent=
998 PLACEHOLDER_LABEL;
999
1000 badge.setAttribute(
1001 "aria-label",
1002 PLACEHOLDER_LABEL
Veronika Kocher 8.6 1003 );
1004
Veronika Kocher 8.7 1005 title.appendChild(
1006 badge
1007 );
1008 }
Veronika Kocher 8.6 1009
Veronika Kocher 8.7 1010 /* =======================================================
1011 DETAIL PAGE OWN-ACCENT PROPAGATION
1012 ======================================================= */
Veronika Kocher 8.6 1013
Veronika Kocher 8.7 1014 function parseRGB(value){
1015 var match=String(value||"").match(
1016 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
Veronika Kocher 8.6 1017 );
Veronika Kocher 8.7 1018
1019 if(!match)return null;
1020
1021 return [
1022 Number(match[1]),
1023 Number(match[2]),
1024 Number(match[3])
1025 ];
Veronika Kocher 8.6 1026 }
1027
Veronika Kocher 8.7 1028 function distance(a,b){
1029 return Math.sqrt(
1030 Math.pow(a[0]-b[0],2)+
1031 Math.pow(a[1]-b[1],2)+
1032 Math.pow(a[2]-b[2],2)
1033 );
1034 }
Veronika Kocher 8.4 1035
Veronika Kocher 8.7 1036 function paletteMatch(cssColor){
1037 var rgb=parseRGB(cssColor);
Veronika Kocher 8.5 1038
Veronika Kocher 8.7 1039 if(!rgb)return null;
Veronika Kocher 8.5 1040
Veronika Kocher 8.7 1041 var palette=[
1042 {hex:"#21b6d7",rgb:[33,182,215]},
1043 {hex:"#e94b13",rgb:[233,75,19]},
1044 {hex:"#f0aa00",rgb:[240,170,0]},
1045 {hex:"#38b76a",rgb:[56,183,106]}
1046 ];
Veronika Kocher 8.4 1047
Veronika Kocher 8.5 1048 var best=null;
Veronika Kocher 8.7 1049 var bestDistance=Infinity;
Veronika Kocher 8.4 1050
Veronika Kocher 8.7 1051 palette.forEach(function(item){
1052 var d=distance(rgb,item.rgb);
Veronika Kocher 8.4 1053
Veronika Kocher 8.7 1054 if(d<bestDistance){
1055 best=item;
1056 bestDistance=d;
1057 }
1058 });
Veronika Kocher 8.5 1059
Veronika Kocher 8.7 1060 return bestDistance<=30
1061 ?best
1062 :null;
1063 }
Veronika Kocher 8.4 1064
Veronika Kocher 8.7 1065 function propagateDetailAccents(){
1066 if(PAGE_KIND!=="detail")return;
1067
1068 Array.from(
1069 root.querySelectorAll(
1070 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
1071 ".arsn-source,.dmp-source,.ido-source,.pp-source"
1072 )
1073 ).forEach(function(el){
1074 if(!visible(el))return;
1075
1076 var style=getComputedStyle(el);
1077
Veronika Kocher 8.5 1078 if(
Veronika Kocher 8.7 1079 num(style.borderTopWidth)>=2
Veronika Kocher 8.5 1080 ){
Veronika Kocher 8.7 1081 var match=
1082 paletteMatch(
1083 style.borderTopColor
Veronika Kocher 8.5 1084 );
1085
Veronika Kocher 8.7 1086 if(match){
1087 el.style.setProperty(
1088 "border-left",
1089 "4px solid "+match.hex,
1090 "important"
Veronika Kocher 8.5 1091 );
Veronika Kocher 8.4 1092 }
1093 }
Veronika Kocher 8.7 1094 });
Veronika Kocher 8.4 1095
Veronika Kocher 8.7 1096 // Warning families: explicit safety override.
1097 Array.from(
1098 root.querySelectorAll(
1099 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
1100 ".warn,.warning,.warningmessage,.errormessage"
1101 )
1102 ).forEach(function(el){
1103 if(!visible(el))return;
Veronika Kocher 8.4 1104
Veronika Kocher 8.7 1105 el.style.setProperty(
1106 "border-left",
1107 "4px solid #e94b13",
1108 "important"
1109 );
1110 });
Veronika Kocher 8.4 1111
Veronika Kocher 8.7 1112 // Info families: explicit orientation override.
1113 Array.from(
1114 root.querySelectorAll(
1115 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
1116 )
1117 ).forEach(function(el){
1118 if(!visible(el))return;
Veronika Kocher 8.5 1119
Veronika Kocher 8.7 1120 el.style.setProperty(
1121 "border-left",
1122 "4px solid #21b6d7",
1123 "important"
1124 );
1125 });
1126 }
Veronika Kocher 8.5 1127
Veronika Kocher 8.7 1128 /* =======================================================
1129 OVERVIEW SEMANTIC THEME PALETTE
1130 ======================================================= */
Veronika Kocher 8.5 1131
Veronika Kocher 8.7 1132 function smallestThemeHeaders(){
1133 return Array.from(
1134 root.querySelectorAll(
1135 "div,span,p,strong,h3,h4,h5,h6"
1136 )
1137 ).filter(function(el){
1138 if(!visible(el))return false;
1139 if(!themeFor(el.textContent))return false;
Veronika Kocher 8.5 1140
Veronika Kocher 8.7 1141 return !Array.from(
1142 el.children||[]
1143 ).some(function(child){
1144 return !!themeFor(
1145 child.textContent
1146 );
Veronika Kocher 8.5 1147 });
Veronika Kocher 8.7 1148 });
Veronika Kocher 8.4 1149 }
1150
Veronika Kocher 8.7 1151 function findOverviewCard(header){
1152 var node=header.parentElement;
1153 var candidates=[];
Veronika Kocher 8.5 1154
Veronika Kocher 8.7 1155 while(node&&node!==root){
1156 var rect=node.getBoundingClientRect();
1157 var style=getComputedStyle(node);
Veronika Kocher 8.5 1158
Veronika Kocher 8.7 1159 var border=
1160 num(style.borderTopWidth)+
1161 num(style.borderRightWidth)+
1162 num(style.borderBottomWidth)+
1163 num(style.borderLeftWidth);
Veronika Kocher 8.5 1164
Veronika Kocher 8.7 1165 if(
1166 rect.width>=220&&
1167 rect.width<=800&&
1168 rect.height>=120&&
1169 border>=1
1170 ){
1171 candidates.push(node);
1172 }
Veronika Kocher 8.5 1173
Veronika Kocher 8.7 1174 node=node.parentElement;
1175 }
Veronika Kocher 8.5 1176
Veronika Kocher 8.7 1177 if(!candidates.length)return null;
Veronika Kocher 8.5 1178
Veronika Kocher 8.7 1179 candidates.sort(function(a,b){
1180 return (
1181 b.getBoundingClientRect().height-
1182 a.getBoundingClientRect().height
Veronika Kocher 8.6 1183 );
Veronika Kocher 8.7 1184 });
Veronika Kocher 8.5 1185
Veronika Kocher 8.7 1186 return candidates[0];
Veronika Kocher 8.5 1187 }
1188
Veronika Kocher 8.7 1189 function rowCandidates(link,card){
1190 var result=[];
Veronika Kocher 8.6 1191 var cardRect=
1192 card.getBoundingClientRect();
Veronika Kocher 8.5 1193
Veronika Kocher 8.7 1194 var node=link;
Veronika Kocher 8.5 1195
Veronika Kocher 8.7 1196 while(node&&node!==card){
1197 if(visible(node)){
1198 var rect=
1199 node.getBoundingClientRect();
Veronika Kocher 8.5 1200
Veronika Kocher 8.7 1201 if(
1202 rect.height<=105&&
1203 rect.width>=
1204 cardRect.width*.50&&
1205 rect.width<=
1206 cardRect.width*1.03
1207 ){
1208 result.push(node);
1209 }
1210 }
Veronika Kocher 8.5 1211
Veronika Kocher 8.7 1212 node=node.parentElement;
1213 }
1214
1215 return result;
1216 }
1217
1218 function chooseOuterRow(
1219 candidates,
1220 link
1221 ){
1222 if(!candidates.length){
1223 return link;
1224 }
1225
1226 var bordered=
1227 candidates.filter(function(el){
Veronika Kocher 8.6 1228 return (
Veronika Kocher 8.7 1229 num(
1230 getComputedStyle(el)
1231 .borderLeftWidth
1232 )>=1
Veronika Kocher 8.6 1233 );
1234 });
Veronika Kocher 8.5 1235
Veronika Kocher 8.7 1236 var pool=
1237 bordered.length
1238 ?bordered
1239 :candidates;
Veronika Kocher 8.5 1240
Veronika Kocher 8.7 1241 pool.sort(function(a,b){
1242 var ar=
1243 a.getBoundingClientRect();
Veronika Kocher 8.5 1244
Veronika Kocher 8.7 1245 var br=
1246 b.getBoundingClientRect();
Veronika Kocher 8.5 1247
Veronika Kocher 8.7 1248 return (
1249 ar.left-br.left||
1250 br.width-ar.width
1251 );
1252 });
Veronika Kocher 8.5 1253
Veronika Kocher 8.7 1254 return pool[0]||link;
1255 }
Veronika Kocher 8.5 1256
Veronika Kocher 8.7 1257 function applyOverviewPalette(){
1258 if(PAGE_KIND!=="overview"){
1259 return [];
Veronika Kocher 8.6 1260 }
Veronika Kocher 8.5 1261
Veronika Kocher 8.7 1262 var headers=
1263 smallestThemeHeaders()
1264 .map(function(el){
1265 return {
1266 el:el,
1267 theme:
1268 themeFor(
1269 el.textContent
1270 ),
1271 card:
1272 findOverviewCard(
1273 el
1274 )
1275 };
Veronika Kocher 8.6 1276 })
Veronika Kocher 8.7 1277 .filter(function(row){
1278 return !!row.card;
1279 });
Veronika Kocher 8.5 1280
Veronika Kocher 8.7 1281 var unique=[];
1282 var seenHeaders=new Set();
Veronika Kocher 8.5 1283
Veronika Kocher 8.7 1284 headers.forEach(function(row){
1285 var key=
1286 row.theme.name+
1287 "|"+
1288 Math.round(
1289 row.card
1290 .getBoundingClientRect()
1291 .left
1292 )+
1293 "|"+
1294 Math.round(
1295 row.el
1296 .getBoundingClientRect()
1297 .top
1298 );
Veronika Kocher 8.5 1299
Veronika Kocher 8.7 1300 if(!seenHeaders.has(key)){
1301 seenHeaders.add(key);
1302 unique.push(row);
1303 }
1304 });
Veronika Kocher 8.5 1305
Veronika Kocher 8.7 1306 unique.forEach(function(row){
1307 var headerRect=
1308 row.el
1309 .getBoundingClientRect();
Veronika Kocher 8.5 1310
Veronika Kocher 8.7 1311 row.el.style.setProperty(
1312 "background",
1313 row.theme.bg,
1314 "important"
Veronika Kocher 8.6 1315 );
1316
Veronika Kocher 8.7 1317 row.el.style.setProperty(
1318 "color",
1319 row.theme.text,
1320 "important"
Veronika Kocher 8.6 1321 );
1322
Veronika Kocher 8.7 1323 row.el.style.setProperty(
1324 "text-align",
1325 "left",
1326 "important"
Veronika Kocher 8.6 1327 );
Veronika Kocher 8.5 1328
Veronika Kocher 8.7 1329 row.el.style.setProperty(
1330 "word-spacing",
1331 "normal",
1332 "important"
1333 );
Veronika Kocher 8.6 1334
Veronika Kocher 8.7 1335 var later=
1336 unique
1337 .filter(function(other){
1338 return (
1339 other.card===row.card&&
1340 other.el
1341 .getBoundingClientRect()
1342 .top>
1343 headerRect.top+2
1344 );
1345 })
1346 .sort(function(a,b){
1347 return (
1348 a.el
1349 .getBoundingClientRect()
1350 .top-
1351 b.el
1352 .getBoundingClientRect()
1353 .top
1354 );
1355 });
Veronika Kocher 8.6 1356
Veronika Kocher 8.7 1357 var stopTop=
1358 later.length
1359 ?later[0].el
1360 .getBoundingClientRect()
1361 .top
1362 :Infinity;
Veronika Kocher 8.6 1363
1364 Array.from(
Veronika Kocher 8.7 1365 row.card.querySelectorAll("a")
1366 ).forEach(function(link){
1367 if(!visible(link))return;
Veronika Kocher 8.6 1368
Veronika Kocher 8.7 1369 var rect=
1370 link.getBoundingClientRect();
Veronika Kocher 8.6 1371
Veronika Kocher 8.7 1372 if(
1373 rect.top<=
1374 headerRect.bottom-2||
1375 rect.top>=
1376 stopTop-2
1377 ){
1378 return;
1379 }
Veronika Kocher 8.6 1380
Veronika Kocher 8.7 1381 var candidates=
1382 rowCandidates(
1383 link,
1384 row.card
1385 );
1386
1387 var target=
1388 chooseOuterRow(
1389 candidates,
1390 link
1391 );
1392
1393 candidates.forEach(function(el){
1394 el.style.setProperty(
1395 "border-left",
1396 "0 solid transparent",
1397 "important"
1398 );
1399 });
1400
1401 target.style.setProperty(
1402 "border-left",
1403 "3px solid "+
1404 row.theme.accent,
1405 "important"
Veronika Kocher 8.6 1406 );
Veronika Kocher 8.7 1407
1408 target.style.setProperty(
1409 "box-sizing",
1410 "border-box",
1411 "important"
Veronika Kocher 8.6 1412 );
Veronika Kocher 8.5 1413 });
Veronika Kocher 8.7 1414 });
Veronika Kocher 8.5 1415
Veronika Kocher 8.7 1416 return unique;
Veronika Kocher 8.6 1417 }
Veronika Kocher 8.5 1418
Veronika Kocher 8.7 1419 /* =======================================================
1420 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1421 ======================================================= */
Veronika Kocher 8.6 1422
Veronika Kocher 8.7 1423 function alignOverviewCards(headers){
1424 if(
1425 PAGE_KIND!=="overview"||
1426 window.innerWidth<=MOBILE_MAX
1427 ){
1428 return;
1429 }
Veronika Kocher 8.6 1430
Veronika Kocher 8.7 1431 var cards=[];
1432 var seen=new Set();
Veronika Kocher 8.6 1433
Veronika Kocher 8.7 1434 headers.forEach(function(row){
1435 if(!seen.has(row.card)){
1436 seen.add(row.card);
1437 cards.push(row.card);
1438 }
1439 });
Veronika Kocher 8.6 1440
Veronika Kocher 8.7 1441 if(cards.length<2){
1442 return;
1443 }
Veronika Kocher 8.6 1444
Veronika Kocher 8.7 1445 // Group cards by actual top position.
1446 var groups=[];
Veronika Kocher 8.6 1447
Veronika Kocher 8.7 1448 cards.forEach(function(card){
1449 var top=
1450 card.getBoundingClientRect().top;
Veronika Kocher 8.6 1451
Veronika Kocher 8.7 1452 var group=null;
Veronika Kocher 8.6 1453
Veronika Kocher 8.7 1454 for(var i=0;i<groups.length;i++){
Veronika Kocher 8.6 1455 if(
Veronika Kocher 8.7 1456 Math.abs(
1457 groups[i].top-top
1458 )<=ROW_TOLERANCE
Veronika Kocher 8.6 1459 ){
Veronika Kocher 8.7 1460 group=groups[i];
1461 break;
Veronika Kocher 8.6 1462 }
Veronika Kocher 8.7 1463 }
Veronika Kocher 8.6 1464
Veronika Kocher 8.7 1465 if(!group){
1466 group={
1467 top:top,
1468 cards:[]
1469 };
1470 groups.push(group);
1471 }
Veronika Kocher 8.6 1472
Veronika Kocher 8.7 1473 group.cards.push(card);
1474 });
Veronika Kocher 8.6 1475
Veronika Kocher 8.7 1476 groups.forEach(function(group){
1477 if(group.cards.length<2){
1478 return;
1479 }
Veronika Kocher 8.6 1480
Veronika Kocher 8.7 1481 var firstHeaders=
1482 group.cards.map(function(card){
1483 var candidates=
1484 headers
1485 .filter(function(row){
1486 return row.card===card;
1487 })
1488 .sort(function(a,b){
1489 return (
1490 a.el
1491 .getBoundingClientRect()
1492 .top-
1493 b.el
1494 .getBoundingClientRect()
1495 .top
1496 );
1497 });
Veronika Kocher 8.6 1498
Veronika Kocher 8.7 1499 return candidates.length
1500 ?candidates[0]
1501 :null;
1502 });
Veronika Kocher 8.6 1503
Veronika Kocher 8.7 1504 if(
1505 !firstHeaders.some(function(row){
1506 return !row;
1507 })
1508 ){
1509 var targetTop=
1510 Math.max.apply(
1511 Math,
1512 firstHeaders.map(function(row){
1513 return (
1514 row.el
1515 .getBoundingClientRect()
1516 .top-
1517 row.card
1518 .getBoundingClientRect()
1519 .top
1520 );
1521 })
1522 );
Veronika Kocher 8.4 1523
Veronika Kocher 8.7 1524 firstHeaders.forEach(function(row){
1525 var relativeTop=
1526 row.el
1527 .getBoundingClientRect()
1528 .top-
1529 row.card
1530 .getBoundingClientRect()
1531 .top;
Veronika Kocher 8.5 1532
Veronika Kocher 8.7 1533 var delta=
1534 targetTop-relativeTop;
Veronika Kocher 8.5 1535
Veronika Kocher 8.7 1536 if(delta>1){
1537 saveStyle(
1538 row.el,
1539 originalMargin,
1540 "margin-top"
1541 );
Veronika Kocher 8.6 1542
Veronika Kocher 8.7 1543 var current=
1544 num(
1545 getComputedStyle(
1546 row.el
1547 ).marginTop
1548 );
Veronika Kocher 8.5 1549
Veronika Kocher 8.7 1550 row.el.style.setProperty(
1551 "margin-top",
1552 (
1553 current+delta
1554 )+"px"
1555 );
Veronika Kocher 8.5 1556
Veronika Kocher 8.7 1557 row.el.setAttribute(
1558 "data-sn-master-first-row",
1559 "1"
1560 );
Veronika Kocher 8.5 1561
Veronika Kocher 8.7 1562 managedMargin.add(
1563 row.el
1564 );
1565 }
1566 });
1567 }
Veronika Kocher 8.5 1568
Veronika Kocher 8.7 1569 var maxHeight=0;
Veronika Kocher 8.5 1570
Veronika Kocher 8.7 1571 group.cards.forEach(function(card){
1572 maxHeight=
1573 Math.max(
1574 maxHeight,
1575 card
1576 .getBoundingClientRect()
1577 .height
1578 );
1579 });
Veronika Kocher 8.5 1580
Veronika Kocher 8.7 1581 maxHeight=
1582 Math.ceil(maxHeight);
Veronika Kocher 8.5 1583
Veronika Kocher 8.7 1584 group.cards.forEach(function(card){
1585 saveStyle(
1586 card,
1587 originalHeight,
1588 "min-height"
1589 );
Veronika Kocher 8.5 1590
Veronika Kocher 8.7 1591 card.style.setProperty(
1592 "min-height",
1593 maxHeight+"px"
Veronika Kocher 8.5 1594 );
1595
Veronika Kocher 8.7 1596 card.setAttribute(
1597 "data-sn-master-equal-height",
1598 "1"
1599 );
Veronika Kocher 8.5 1600
Veronika Kocher 8.7 1601 managedHeight.add(
1602 card
1603 );
1604 });
Veronika Kocher 8.5 1605 });
1606 }
1607
Veronika Kocher 8.7 1608 /* =======================================================
1609 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1610 ======================================================= */
Veronika Kocher 8.5 1611
Veronika Kocher 8.7 1612 function equaliseDetailGrids(){
Veronika Kocher 8.6 1613 if(
Veronika Kocher 8.7 1614 PAGE_KIND!=="detail"||
1615 window.innerWidth<=MOBILE_MAX
Veronika Kocher 8.6 1616 ){
Veronika Kocher 8.7 1617 return;
Veronika Kocher 8.6 1618 }
Veronika Kocher 8.5 1619
Veronika Kocher 8.7 1620 var selectors=[
1621 ".arsn-grid",
1622 ".arsn-grid-2",
1623 ".arsn-grid-3",
1624 ".dmp-grid",
1625 ".ido-grid",
1626 ".pp-grid"
1627 ];
Veronika Kocher 8.5 1628
Veronika Kocher 8.7 1629 selectors.forEach(function(selector){
1630 Array.from(
1631 root.querySelectorAll(selector)
1632 ).forEach(function(grid){
1633 var children=
1634 Array.from(
1635 grid.children||[]
1636 ).filter(visible);
Veronika Kocher 8.5 1637
Veronika Kocher 8.7 1638 if(children.length<2){
1639 return;
1640 }
Veronika Kocher 8.5 1641
Veronika Kocher 8.7 1642 var groups=[];
Veronika Kocher 8.5 1643
Veronika Kocher 8.7 1644 children.forEach(function(child){
1645 var top=
1646 child
1647 .getBoundingClientRect()
1648 .top;
Veronika Kocher 8.5 1649
Veronika Kocher 8.7 1650 var group=null;
Veronika Kocher 8.5 1651
Veronika Kocher 8.7 1652 for(var i=0;i<groups.length;i++){
1653 if(
1654 Math.abs(
1655 groups[i].top-top
1656 )<=ROW_TOLERANCE
1657 ){
1658 group=groups[i];
1659 break;
1660 }
1661 }
Veronika Kocher 8.5 1662
Veronika Kocher 8.7 1663 if(!group){
1664 group={
1665 top:top,
1666 items:[]
1667 };
1668 groups.push(group);
1669 }
Veronika Kocher 8.5 1670
Veronika Kocher 8.7 1671 group.items.push(child);
1672 });
Veronika Kocher 8.5 1673
Veronika Kocher 8.7 1674 groups.forEach(function(group){
1675 if(group.items.length<2){
1676 return;
1677 }
Veronika Kocher 8.4 1678
Veronika Kocher 8.7 1679 var maxHeight=0;
Veronika Kocher 8.6 1680
Veronika Kocher 8.7 1681 group.items.forEach(function(item){
1682 maxHeight=
1683 Math.max(
1684 maxHeight,
1685 item
1686 .getBoundingClientRect()
1687 .height
1688 );
1689 });
Veronika Kocher 8.6 1690
Veronika Kocher 8.7 1691 maxHeight=
1692 Math.ceil(maxHeight);
Veronika Kocher 8.4 1693
Veronika Kocher 8.7 1694 group.items.forEach(function(item){
1695 saveStyle(
1696 item,
1697 originalHeight,
1698 "min-height"
1699 );
Veronika Kocher 8.4 1700
Veronika Kocher 8.7 1701 item.style.setProperty(
1702 "min-height",
1703 maxHeight+"px"
1704 );
Veronika Kocher 8.5 1705
Veronika Kocher 8.7 1706 item.setAttribute(
1707 "data-sn-master-equal-height",
1708 "1"
1709 );
Veronika Kocher 8.4 1710
Veronika Kocher 8.7 1711 managedHeight.add(item);
1712 });
Veronika Kocher 8.4 1713 });
Veronika Kocher 8.7 1714 });
1715 });
1716 }
Veronika Kocher 8.4 1717
Veronika Kocher 8.7 1718 /* =======================================================
1719 RUN / RESPONSIVE SCHEDULING
1720 ======================================================= */
Veronika Kocher 8.4 1721
Veronika Kocher 8.7 1722 function run(){
1723 if(running)return;
Veronika Kocher 8.4 1724
Veronika Kocher 8.7 1725 running=true;
Veronika Kocher 8.6 1726
Veronika Kocher 8.7 1727 try{
1728 resetRuntime();
1729 applyPlaceholderBadge();
1730 propagateDetailAccents();
Veronika Kocher 8.6 1731
Veronika Kocher 8.7 1732 var headers=
1733 applyOverviewPalette();
Veronika Kocher 8.6 1734
Veronika Kocher 8.8 1735 makeThreeLineAreaLabels();
1736 makeFilledRedOrangeCTAsBorderless();
1737
Veronika Kocher 8.7 1738 if(
1739 window.innerWidth>
1740 MOBILE_MAX
1741 ){
1742 alignOverviewCards(
1743 headers
1744 );
Veronika Kocher 8.4 1745
Veronika Kocher 8.7 1746 equaliseDetailGrids();
1747 }
Veronika Kocher 8.6 1748 }finally{
Veronika Kocher 8.7 1749 running=false;
Veronika Kocher 8.6 1750 }
Veronika Kocher 8.4 1751 }
1752
Veronika Kocher 8.7 1753 function onResize(){
Veronika Kocher 8.6 1754 if(resizeTimer){
1755 clearTimeout(
1756 resizeTimer
1757 );
1758 }
Veronika Kocher 8.5 1759
Veronika Kocher 8.6 1760 resizeTimer=
1761 setTimeout(
1762 function(){
1763 resizeTimer=0;
Veronika Kocher 8.7 1764 run();
Veronika Kocher 8.6 1765 },
1766 RESIZE_DEBOUNCE
1767 );
Veronika Kocher 8.4 1768 }
1769
Veronika Kocher 8.7 1770 async function waitForReady(){
1771 if(
1772 document.readyState!=="complete"
1773 ){
1774 await new Promise(function(resolve){
1775 window.addEventListener(
1776 "load",
1777 resolve,
1778 {once:true}
1779 );
1780 });
1781 }
1782
1783 if(
1784 document.fonts&&
1785 document.fonts.ready
1786 ){
1787 try{
1788 await document.fonts.ready;
1789 }catch(error){}
1790 }
1791
Veronika Kocher 8.6 1792 var images=
1793 Array.from(
1794 root.querySelectorAll("img")
1795 );
Veronika Kocher 8.4 1796
Veronika Kocher 8.7 1797 await Promise.all(
Veronika Kocher 8.6 1798 images.map(function(img){
1799 if(img.complete){
1800 return Promise.resolve();
1801 }
Veronika Kocher 8.4 1802
Veronika Kocher 8.6 1803 return new Promise(function(resolve){
1804 var done=function(){
1805 resolve();
1806 };
1807
1808 img.addEventListener(
1809 "load",
1810 done,
1811 {once:true}
1812 );
1813
1814 img.addEventListener(
1815 "error",
1816 done,
1817 {once:true}
1818 );
1819 });
1820 })
1821 );
1822
Veronika Kocher 8.7 1823 run();
Veronika Kocher 8.4 1824 }
1825
Veronika Kocher 8.7 1826 window.addEventListener(
Veronika Kocher 8.6 1827 "resize",
Veronika Kocher 8.7 1828 onResize,
Veronika Kocher 8.6 1829 {passive:true}
1830 );
1831
Veronika Kocher 8.7 1832 waitForReady();
Veronika Kocher 8.4 1833 })();
1834 </script>
Veronika Kocher 8.6 1835
Veronika Kocher 8.7 1836 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1837 {{/html}}
1838