Wiki source code of Get Started

Last modified by Veronika Kocher on Friday, 04 Sep 2026 15:32

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;">
Veronika Kocher 8.9 45 <div class="arsn-eyebrow" style="color:#8a4d36;margin-bottom:5px;">PREPARE · GET STARTED · AUSTRIA</div>
Veronika Kocher 8.2 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.11 435 <!-- ARSN_TRAINING_WORKSHOPS_V2_START -->
436 <section class="arsn-training-workshops" data-arsn-training-workshops="v2" style="margin:27px 0 22px 0;">
437 <div style="padding:16px 18px;background:#eef8fa;border:1px solid #cfe8ef;border-left:5px solid #21b6d7;border-radius:9px;">
438 <div style="font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase;color:#3f6871;margin-bottom:5px;">TRAINING &amp; WORKSHOPS</div>
439 <h3 style="font-size:20px;line-height:1.3;margin:0 0 7px;color:#35312d;text-align:left;">Training, workshops &amp; consultation sessions</h3>
440 <p style="margin:0 0 10px;color:#5e5953;line-height:1.55;">Relevant opportunities for this topic will be shown here automatically from the central calendar.</p>
441 <span data-arsn-coming-soon="true" style="display:inline-block;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">COMING SOON</span>
442 </div>
443 </section>
444 <!-- ARSN_TRAINING_WORKSHOPS_V2_END -->
Veronika Kocher 8.10 445
Veronika Kocher 8.11 446 <!-- ARSN_PRACTICAL_RESOURCES_V2_START -->
447 <section class="arsn-practical-resources" data-arsn-practical-resources="v2" style="margin:0 0 27px;">
448 <div style="font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase;color:#8a4d36;margin-bottom:4px;">USEFUL MATERIALS</div>
449 <h3 style="font-size:22px;line-height:1.25;margin:0 0 8px;color:#35312d;text-align:left;">Practical Resources</h3>
450 <p style="margin:0 0 12px;color:#5e5953;line-height:1.55;">Use practical resources when you need a concise overview, a step-by-step procedure or a ready-to-use project aid.</p>
451 <div class="arsn-resource-grid" style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;">
452 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #21b6d7;border-radius:9px;"><strong>Info Sheets</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;">COMING SOON</span><div style="color:#625d56;line-height:1.45;">Short reference guides for common questions and decisions.</div></div>
453 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #e94b13;border-radius:9px;"><strong>Tutorials</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;">COMING SOON</span><div style="color:#625d56;line-height:1.45;">Step-by-step guidance for specific tasks and workflows.</div></div>
454 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #38b76a;border-radius:9px;"><strong>Checklists &amp; Templates</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;">COMING SOON</span><div style="color:#625d56;line-height:1.45;">Ready-to-use checklists and templates for planning, managing and closing projects.</div></div>
455 </div>
456 <style>@media(max-width:767px){.arsn-resource-grid{grid-template-columns:1fr!important}}</style>
457 </section>
458 <!-- ARSN_PRACTICAL_RESOURCES_V2_END -->
Veronika Kocher 8.10 459
Veronika Kocher 8.1 460 </div>
461 {{/html}}
Veronika Kocher 8.4 462
Veronika Kocher 8.7 463 {{html clean="false"}}
464 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
Veronika Kocher 8.6 465
Veronika Kocher 8.7 466 <style data-sn-service-navigator-master="1">
467 /* =========================================================
468 MASTER TYPOGRAPHY
469 ========================================================= */
Veronika Kocher 8.6 470 #xwikicontent h1,
471 #xwikicontent h2,
472 #xwikicontent h3,
473 #xwikicontent h4,
474 #xwikicontent h5,
475 #xwikicontent h6,
476 #xwikicontent .box-title,
477 #xwikicontent [role="heading"],
478 #xwikicontent h1 a,
479 #xwikicontent h2 a,
480 #xwikicontent h3 a,
481 #xwikicontent h4 a,
482 #xwikicontent h5 a,
483 #xwikicontent h6 a,
484 #xwikicontent .box-title a,
485 #xwikicontent [role="heading"] a{
486 text-align:left!important;
487 text-justify:auto!important;
488 word-spacing:normal!important;
489 }
490
Veronika Kocher 8.7 491 /* =========================================================
492 COMING SOON / IN VORBEREITUNG
493 ========================================================= */
494 .sn-coming-soon-badge{
495 display:inline-block;
496 vertical-align:middle;
497 margin-left:10px;
498 padding:4px 8px;
499 border-radius:14px;
500 border:1px solid #efd9cc;
501 background:#fff4ee;
502 color:#8a4d36;
503 font-size:11px;
504 font-weight:700;
505 letter-spacing:.055em;
506 line-height:1.2;
507 white-space:nowrap;
508 }
509
510 /* =========================================================
511 NATIVE / DETAIL CALLOUT GEOMETRY
512 Preserve existing backgrounds.
513 ========================================================= */
514 #xwikicontent .arsn-info,
515 #xwikicontent .dmp-info,
516 #xwikicontent .ido-info,
517 #xwikicontent .pp-info,
518 #xwikicontent .infomessage{
Veronika Kocher 8.6 519 box-sizing:border-box!important;
Veronika Kocher 8.7 520 border-left:4px solid #21b6d7!important;
521 border-radius:8px;
Veronika Kocher 8.6 522 text-align:left!important;
523 word-spacing:normal!important;
524 }
525
Veronika Kocher 8.7 526 #xwikicontent .arsn-warn,
527 #xwikicontent .dmp-warn,
528 #xwikicontent .ido-warn,
529 #xwikicontent .pp-warn,
530 #xwikicontent .warn,
531 #xwikicontent .warning,
532 #xwikicontent .warningmessage,
Veronika Kocher 8.6 533 #xwikicontent .errormessage{
Veronika Kocher 8.7 534 box-sizing:border-box!important;
535 border-left:4px solid #e94b13!important;
536 border-radius:8px;
537 text-align:left!important;
538 word-spacing:normal!important;
Veronika Kocher 8.6 539 }
540
Veronika Kocher 8.7 541 [data-sn-master-equal-height],
542 [data-sn-master-first-row]{
Veronika Kocher 8.5 543 box-sizing:border-box;
Veronika Kocher 8.4 544 }
Veronika Kocher 8.8 545
546 /* =========================================================
547 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
548 ========================================================= */
549 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
550 display:grid!important;
551 grid-template-columns:minmax(0,1fr)!important;
552 grid-auto-rows:auto!important;
553 width:100%!important;
554 max-width:none!important;
555 box-sizing:border-box!important;
556 justify-items:start!important;
557 align-items:start!important;
558 gap:2px!important;
559 text-align:left!important;
560 text-align-last:left!important;
561 text-justify:auto!important;
562 word-spacing:normal!important;
563 white-space:normal!important;
564 }
565 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
566 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
567 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
568 display:block!important;
569 width:100%!important;
570 margin:0!important;
571 text-align:left!important;
572 text-align-last:left!important;
573 text-justify:auto!important;
574 word-spacing:normal!important;
575 white-space:normal!important;
576 }
Veronika Kocher 8.4 577 </style>
Veronika Kocher 8.6 578
Veronika Kocher 8.7 579 <script data-sn-service-navigator-master="1">
Veronika Kocher 8.4 580 (function(){
581 "use strict";
582
Veronika Kocher 8.7 583 var PAGE_KIND="detail";
584 var PLACEHOLDER=false;
585 var PLACEHOLDER_LABEL="COMING SOON";
586
Veronika Kocher 8.4 587 var MOBILE_MAX=767;
Veronika Kocher 8.5 588 var ROW_TOLERANCE=6;
Veronika Kocher 8.6 589 var RESIZE_DEBOUNCE=220;
Veronika Kocher 8.4 590
591 var root=
592 document.getElementById("xwikicontent")||
593 document.querySelector(".xwiki-rendering-content")||
594 document.querySelector("main")||
595 document.body;
596
597 if(!root)return;
598
Veronika Kocher 8.7 599 var managedHeight=new Set();
600 var managedMargin=new Set();
601 var originalHeight=new WeakMap();
602 var originalMargin=new WeakMap();
Veronika Kocher 8.6 603
604 var resizeTimer=0;
Veronika Kocher 8.7 605 var running=false;
Veronika Kocher 8.6 606
Veronika Kocher 8.7 607 var THEMES=[
608 {
609 name:"BLUE",
610 accent:"#21b6d7",
611 bg:"#eaf7fb",
612 text:"#315d68",
613 labels:[
614 "HIER STARTEN",
615 "ENTSCHEIDEN",
616 "ÜBERPRÜFEN & ANPASSEN",
617 "START HERE",
618 "DECIDE",
619 "REVIEW & ADAPT"
620 ]
621 },
622 {
623 name:"RED",
624 accent:"#e94b13",
625 bg:"#fff1ec",
626 text:"#8a4d36",
627 labels:[
628 "PLANEN & ORGANISIEREN",
629 "ORGANISIEREN & DOKUMENTIEREN",
630 "PUBLIZIEREN & PRÄSENTIEREN",
631 "PLAN & ORGANISE",
632 "PLAN & ORGANIZE",
633 "ORGANISE & DOCUMENT",
634 "ORGANIZE & DOCUMENT",
635 "PUBLISH & PRESENT"
636 ]
637 },
638 {
639 name:"YELLOW",
640 accent:"#f0aa00",
641 bg:"#fff8e7",
642 text:"#785b17",
643 labels:[
644 "SCHÜTZEN & KLÄREN",
645 "STANDARDISIEREN & IDENTIFIZIEREN",
646 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
647 "PROTECT & CLARIFY",
648 "STANDARDISE & IDENTIFY",
649 "STANDARDIZE & IDENTIFY",
650 "OPEN, REUSE & MAKE FINDABLE"
651 ]
652 },
653 {
654 name:"GREEN",
655 accent:"#38b76a",
656 bg:"#edf9f1",
657 text:"#3f7451",
658 labels:[
659 "INFRASTRUKTUR EINRICHTEN",
660 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
661 "SPEICHERN & ZUGRIFF STEUERN",
662 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
663 "SET UP INFRASTRUCTURE",
664 "SET UP INFRASTRUCTURE & COLLABORATION",
665 "STORE & CONTROL ACCESS",
666 "REPOSITORY, PRESERVE & HAND OVER"
667 ]
Veronika Kocher 8.5 668 }
Veronika Kocher 8.7 669 ];
Veronika Kocher 8.5 670
Veronika Kocher 8.7 671 function num(value){
672 var n=parseFloat(value);
673 return Number.isFinite(n)?n:0;
Veronika Kocher 8.4 674 }
675
Veronika Kocher 8.7 676 function norm(value){
677 return String(value||"")
Veronika Kocher 8.6 678 .replace(/\s+/g," ")
679 .trim()
680 .toUpperCase();
681 }
682
Veronika Kocher 8.7 683 function visible(el){
684 if(!el||el.nodeType!==1)return false;
Veronika Kocher 8.4 685
Veronika Kocher 8.7 686 var style=getComputedStyle(el);
687 var rect=el.getBoundingClientRect();
Veronika Kocher 8.6 688
689 return (
Veronika Kocher 8.7 690 style.display!=="none"&&
691 style.visibility!=="hidden"&&
692 rect.width>20&&
693 rect.height>4
Veronika Kocher 8.6 694 );
Veronika Kocher 8.4 695 }
696
Veronika Kocher 8.7 697 function saveStyle(el,map,property){
Veronika Kocher 8.5 698 if(map.has(el))return;
699
700 map.set(el,{
Veronika Kocher 8.7 701 value:el.style.getPropertyValue(property),
702 priority:el.style.getPropertyPriority(property)
Veronika Kocher 8.5 703 });
704 }
705
Veronika Kocher 8.7 706 function restoreStyle(el,map,property){
Veronika Kocher 8.5 707 var original=map.get(el);
708
709 if(original&&original.value){
710 el.style.setProperty(
711 property,
712 original.value,
713 original.priority||""
714 );
715 }else{
Veronika Kocher 8.7 716 el.style.removeProperty(property);
Veronika Kocher 8.5 717 }
718 }
719
Veronika Kocher 8.6 720 function resetRuntime(){
Veronika Kocher 8.7 721 managedHeight.forEach(function(el){
722 restoreStyle(
Veronika Kocher 8.5 723 el,
Veronika Kocher 8.7 724 originalHeight,
Veronika Kocher 8.5 725 "min-height"
726 );
727 el.removeAttribute(
Veronika Kocher 8.7 728 "data-sn-master-equal-height"
Veronika Kocher 8.5 729 );
730 });
731
Veronika Kocher 8.7 732 managedMargin.forEach(function(el){
733 restoreStyle(
Veronika Kocher 8.5 734 el,
Veronika Kocher 8.7 735 originalMargin,
Veronika Kocher 8.5 736 "margin-top"
737 );
738 el.removeAttribute(
Veronika Kocher 8.7 739 "data-sn-master-first-row"
Veronika Kocher 8.5 740 );
741 });
742
Veronika Kocher 8.7 743 managedHeight.clear();
744 managedMargin.clear();
745 }
Veronika Kocher 8.6 746
Veronika Kocher 8.7 747 function themeFor(text){
748 var value=norm(text);
Veronika Kocher 8.6 749
Veronika Kocher 8.7 750 for(var i=0;i<THEMES.length;i++){
751 for(var j=0;j<THEMES[i].labels.length;j++){
752 var label=THEMES[i].labels[j];
753
754 if(
755 value===label||
756 value.indexOf(label+" ")===0||
757 value.indexOf(label+" -")===0||
758 value.indexOf(label+" ·")===0
759 ){
760 return THEMES[i];
761 }
762 }
763 }
764
765 return null;
Veronika Kocher 8.5 766 }
767
Veronika Kocher 8.7 768 /* =======================================================
Veronika Kocher 8.8 769 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
770 ======================================================= */
771
772 function colourDistance(a,b){
773 return Math.sqrt(
774 Math.pow(a[0]-b[0],2)+
775 Math.pow(a[1]-b[1],2)+
776 Math.pow(a[2]-b[2],2)
777 );
778 }
779
780 function makeFilledRedOrangeCTAsBorderless(){
781 var RED_ORANGE=[233,75,19];
782
783 Array.from(
784 root.querySelectorAll(
785 'a,button,[role="button"],input[type="submit"],input[type="button"]'
786 )
787 ).forEach(function(el){
788 if(!visible(el))return;
789
790 var style=getComputedStyle(el);
791 var rgb=parseRGB(style.backgroundColor);
792
793 if(!rgb)return;
794
795 if(
796 colourDistance(
797 rgb,
798 RED_ORANGE
799 )>55
800 ){
801 return;
802 }
803
804 var rect=el.getBoundingClientRect();
805
806 if(
807 rect.width<80||
808 rect.height<24
809 ){
810 return;
811 }
812
813 el.style.setProperty(
814 "border",
815 "none",
816 "important"
817 );
818
819 el.style.setProperty(
820 "border-left",
821 "none",
822 "important"
823 );
824
825 el.style.setProperty(
826 "border-top",
827 "none",
828 "important"
829 );
830
831 el.style.setProperty(
832 "border-right",
833 "none",
834 "important"
835 );
836
837 el.style.setProperty(
838 "border-bottom",
839 "none",
840 "important"
841 );
842
843 el.style.setProperty(
844 "box-shadow",
845 "none",
846 "important"
847 );
848 });
849 }
850
851 /* =======================================================
852 FULL-WIDTH THREE-LINE AREA LABELS
853 ======================================================= */
854
855 function compactText(value){
856 return String(value||"")
857 .replace(/\s+/g," ")
858 .trim();
859 }
860
861 function makeThreeLineAreaLabels(){
862 Array.from(
863 root.querySelectorAll(
864 ".arsn-area-label"
865 )
866 ).forEach(function(label){
867 if(
868 label.getAttribute(
869 "data-sn-three-line"
870 )==="1"
871 ){
872 return;
873 }
874
875 var number=
876 label.querySelector(
877 ":scope > .arsn-area-number"
878 );
879
880 var action=
881 label.querySelector(
882 ":scope > .arsn-area-action"
883 );
884
885 if(
886 !number||
887 !action
888 ){
889 return;
890 }
891
892 var clone=
893 label.cloneNode(true);
894
895 var cloneNumber=
896 clone.querySelector(
897 ":scope > .arsn-area-number"
898 );
899
900 var cloneAction=
901 clone.querySelector(
902 ":scope > .arsn-area-action"
903 );
904
905 if(cloneNumber){
906 cloneNumber.remove();
907 }
908
909 if(cloneAction){
910 cloneAction.remove();
911 }
912
913 var titleText=
914 compactText(
915 clone.textContent
916 );
917
918 if(!titleText){
919 return;
920 }
921
922 var numberNode=
923 number.cloneNode(true);
924
925 var actionNode=
926 action.cloneNode(true);
927
928 var titleNode=
929 document.createElement(
930 "span"
931 );
932
933 titleNode.className=
934 "sn-area-label-title";
935
936 titleNode.textContent=
937 titleText;
938
939 while(label.firstChild){
940 label.removeChild(
941 label.firstChild
942 );
943 }
944
945 label.appendChild(
946 numberNode
947 );
948
949 label.appendChild(
950 titleNode
951 );
952
953 label.appendChild(
954 actionNode
955 );
956
957 label.setAttribute(
958 "data-sn-three-line",
959 "1"
960 );
961
962 var head=
963 label.closest(
964 ".arsn-area-head"
965 );
966
967 if(head){
968 head.style.setProperty(
969 "width",
970 "100%",
971 "important"
972 );
973
974 head.style.setProperty(
975 "max-width",
976 "100%",
977 "important"
978 );
979
980 head.style.setProperty(
981 "box-sizing",
982 "border-box",
983 "important"
984 );
985 }
986 });
987 }
988
989 /* =======================================================
Veronika Kocher 8.7 990 PLACEHOLDER BADGE
991 ======================================================= */
Veronika Kocher 8.6 992
Veronika Kocher 8.7 993 function applyPlaceholderBadge(){
994 if(!PLACEHOLDER)return;
Veronika Kocher 8.6 995
996 if(
Veronika Kocher 8.7 997 document.querySelector(
998 ".sn-coming-soon-badge"
999 )
Veronika Kocher 8.6 1000 ){
Veronika Kocher 8.7 1001 return;
Veronika Kocher 8.6 1002 }
1003
Veronika Kocher 8.7 1004 var title=
1005 document.querySelector(
1006 "#document-title"
1007 )||
1008 document.querySelector(
1009 "h1"
1010 );
Veronika Kocher 8.6 1011
Veronika Kocher 8.7 1012 if(!title)return;
Veronika Kocher 8.6 1013
Veronika Kocher 8.7 1014 var badge=
1015 document.createElement(
1016 "span"
1017 );
1018
1019 badge.className=
1020 "sn-coming-soon-badge";
1021
1022 badge.textContent=
1023 PLACEHOLDER_LABEL;
1024
1025 badge.setAttribute(
1026 "aria-label",
1027 PLACEHOLDER_LABEL
Veronika Kocher 8.6 1028 );
1029
Veronika Kocher 8.7 1030 title.appendChild(
1031 badge
1032 );
1033 }
Veronika Kocher 8.6 1034
Veronika Kocher 8.7 1035 /* =======================================================
1036 DETAIL PAGE OWN-ACCENT PROPAGATION
1037 ======================================================= */
Veronika Kocher 8.6 1038
Veronika Kocher 8.7 1039 function parseRGB(value){
1040 var match=String(value||"").match(
1041 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
Veronika Kocher 8.6 1042 );
Veronika Kocher 8.7 1043
1044 if(!match)return null;
1045
1046 return [
1047 Number(match[1]),
1048 Number(match[2]),
1049 Number(match[3])
1050 ];
Veronika Kocher 8.6 1051 }
1052
Veronika Kocher 8.7 1053 function distance(a,b){
1054 return Math.sqrt(
1055 Math.pow(a[0]-b[0],2)+
1056 Math.pow(a[1]-b[1],2)+
1057 Math.pow(a[2]-b[2],2)
1058 );
1059 }
Veronika Kocher 8.4 1060
Veronika Kocher 8.7 1061 function paletteMatch(cssColor){
1062 var rgb=parseRGB(cssColor);
Veronika Kocher 8.5 1063
Veronika Kocher 8.7 1064 if(!rgb)return null;
Veronika Kocher 8.5 1065
Veronika Kocher 8.7 1066 var palette=[
1067 {hex:"#21b6d7",rgb:[33,182,215]},
1068 {hex:"#e94b13",rgb:[233,75,19]},
1069 {hex:"#f0aa00",rgb:[240,170,0]},
1070 {hex:"#38b76a",rgb:[56,183,106]}
1071 ];
Veronika Kocher 8.4 1072
Veronika Kocher 8.5 1073 var best=null;
Veronika Kocher 8.7 1074 var bestDistance=Infinity;
Veronika Kocher 8.4 1075
Veronika Kocher 8.7 1076 palette.forEach(function(item){
1077 var d=distance(rgb,item.rgb);
Veronika Kocher 8.4 1078
Veronika Kocher 8.7 1079 if(d<bestDistance){
1080 best=item;
1081 bestDistance=d;
1082 }
1083 });
Veronika Kocher 8.5 1084
Veronika Kocher 8.7 1085 return bestDistance<=30
1086 ?best
1087 :null;
1088 }
Veronika Kocher 8.4 1089
Veronika Kocher 8.7 1090 function propagateDetailAccents(){
1091 if(PAGE_KIND!=="detail")return;
1092
1093 Array.from(
1094 root.querySelectorAll(
1095 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
1096 ".arsn-source,.dmp-source,.ido-source,.pp-source"
1097 )
1098 ).forEach(function(el){
1099 if(!visible(el))return;
1100
1101 var style=getComputedStyle(el);
1102
Veronika Kocher 8.5 1103 if(
Veronika Kocher 8.7 1104 num(style.borderTopWidth)>=2
Veronika Kocher 8.5 1105 ){
Veronika Kocher 8.7 1106 var match=
1107 paletteMatch(
1108 style.borderTopColor
Veronika Kocher 8.5 1109 );
1110
Veronika Kocher 8.7 1111 if(match){
1112 el.style.setProperty(
1113 "border-left",
1114 "4px solid "+match.hex,
1115 "important"
Veronika Kocher 8.5 1116 );
Veronika Kocher 8.4 1117 }
1118 }
Veronika Kocher 8.7 1119 });
Veronika Kocher 8.4 1120
Veronika Kocher 8.7 1121 // Warning families: explicit safety override.
1122 Array.from(
1123 root.querySelectorAll(
1124 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
1125 ".warn,.warning,.warningmessage,.errormessage"
1126 )
1127 ).forEach(function(el){
1128 if(!visible(el))return;
Veronika Kocher 8.4 1129
Veronika Kocher 8.7 1130 el.style.setProperty(
1131 "border-left",
1132 "4px solid #e94b13",
1133 "important"
1134 );
1135 });
Veronika Kocher 8.4 1136
Veronika Kocher 8.7 1137 // Info families: explicit orientation override.
1138 Array.from(
1139 root.querySelectorAll(
1140 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
1141 )
1142 ).forEach(function(el){
1143 if(!visible(el))return;
Veronika Kocher 8.5 1144
Veronika Kocher 8.7 1145 el.style.setProperty(
1146 "border-left",
1147 "4px solid #21b6d7",
1148 "important"
1149 );
1150 });
1151 }
Veronika Kocher 8.5 1152
Veronika Kocher 8.7 1153 /* =======================================================
1154 OVERVIEW SEMANTIC THEME PALETTE
1155 ======================================================= */
Veronika Kocher 8.5 1156
Veronika Kocher 8.7 1157 function smallestThemeHeaders(){
1158 return Array.from(
1159 root.querySelectorAll(
1160 "div,span,p,strong,h3,h4,h5,h6"
1161 )
1162 ).filter(function(el){
1163 if(!visible(el))return false;
1164 if(!themeFor(el.textContent))return false;
Veronika Kocher 8.5 1165
Veronika Kocher 8.7 1166 return !Array.from(
1167 el.children||[]
1168 ).some(function(child){
1169 return !!themeFor(
1170 child.textContent
1171 );
Veronika Kocher 8.5 1172 });
Veronika Kocher 8.7 1173 });
Veronika Kocher 8.4 1174 }
1175
Veronika Kocher 8.7 1176 function findOverviewCard(header){
1177 var node=header.parentElement;
1178 var candidates=[];
Veronika Kocher 8.5 1179
Veronika Kocher 8.7 1180 while(node&&node!==root){
1181 var rect=node.getBoundingClientRect();
1182 var style=getComputedStyle(node);
Veronika Kocher 8.5 1183
Veronika Kocher 8.7 1184 var border=
1185 num(style.borderTopWidth)+
1186 num(style.borderRightWidth)+
1187 num(style.borderBottomWidth)+
1188 num(style.borderLeftWidth);
Veronika Kocher 8.5 1189
Veronika Kocher 8.7 1190 if(
1191 rect.width>=220&&
1192 rect.width<=800&&
1193 rect.height>=120&&
1194 border>=1
1195 ){
1196 candidates.push(node);
1197 }
Veronika Kocher 8.5 1198
Veronika Kocher 8.7 1199 node=node.parentElement;
1200 }
Veronika Kocher 8.5 1201
Veronika Kocher 8.7 1202 if(!candidates.length)return null;
Veronika Kocher 8.5 1203
Veronika Kocher 8.7 1204 candidates.sort(function(a,b){
1205 return (
1206 b.getBoundingClientRect().height-
1207 a.getBoundingClientRect().height
Veronika Kocher 8.6 1208 );
Veronika Kocher 8.7 1209 });
Veronika Kocher 8.5 1210
Veronika Kocher 8.7 1211 return candidates[0];
Veronika Kocher 8.5 1212 }
1213
Veronika Kocher 8.7 1214 function rowCandidates(link,card){
1215 var result=[];
Veronika Kocher 8.6 1216 var cardRect=
1217 card.getBoundingClientRect();
Veronika Kocher 8.5 1218
Veronika Kocher 8.7 1219 var node=link;
Veronika Kocher 8.5 1220
Veronika Kocher 8.7 1221 while(node&&node!==card){
1222 if(visible(node)){
1223 var rect=
1224 node.getBoundingClientRect();
Veronika Kocher 8.5 1225
Veronika Kocher 8.7 1226 if(
1227 rect.height<=105&&
1228 rect.width>=
1229 cardRect.width*.50&&
1230 rect.width<=
1231 cardRect.width*1.03
1232 ){
1233 result.push(node);
1234 }
1235 }
Veronika Kocher 8.5 1236
Veronika Kocher 8.7 1237 node=node.parentElement;
1238 }
1239
1240 return result;
1241 }
1242
1243 function chooseOuterRow(
1244 candidates,
1245 link
1246 ){
1247 if(!candidates.length){
1248 return link;
1249 }
1250
1251 var bordered=
1252 candidates.filter(function(el){
Veronika Kocher 8.6 1253 return (
Veronika Kocher 8.7 1254 num(
1255 getComputedStyle(el)
1256 .borderLeftWidth
1257 )>=1
Veronika Kocher 8.6 1258 );
1259 });
Veronika Kocher 8.5 1260
Veronika Kocher 8.7 1261 var pool=
1262 bordered.length
1263 ?bordered
1264 :candidates;
Veronika Kocher 8.5 1265
Veronika Kocher 8.7 1266 pool.sort(function(a,b){
1267 var ar=
1268 a.getBoundingClientRect();
Veronika Kocher 8.5 1269
Veronika Kocher 8.7 1270 var br=
1271 b.getBoundingClientRect();
Veronika Kocher 8.5 1272
Veronika Kocher 8.7 1273 return (
1274 ar.left-br.left||
1275 br.width-ar.width
1276 );
1277 });
Veronika Kocher 8.5 1278
Veronika Kocher 8.7 1279 return pool[0]||link;
1280 }
Veronika Kocher 8.5 1281
Veronika Kocher 8.7 1282 function applyOverviewPalette(){
1283 if(PAGE_KIND!=="overview"){
1284 return [];
Veronika Kocher 8.6 1285 }
Veronika Kocher 8.5 1286
Veronika Kocher 8.7 1287 var headers=
1288 smallestThemeHeaders()
1289 .map(function(el){
1290 return {
1291 el:el,
1292 theme:
1293 themeFor(
1294 el.textContent
1295 ),
1296 card:
1297 findOverviewCard(
1298 el
1299 )
1300 };
Veronika Kocher 8.6 1301 })
Veronika Kocher 8.7 1302 .filter(function(row){
1303 return !!row.card;
1304 });
Veronika Kocher 8.5 1305
Veronika Kocher 8.7 1306 var unique=[];
1307 var seenHeaders=new Set();
Veronika Kocher 8.5 1308
Veronika Kocher 8.7 1309 headers.forEach(function(row){
1310 var key=
1311 row.theme.name+
1312 "|"+
1313 Math.round(
1314 row.card
1315 .getBoundingClientRect()
1316 .left
1317 )+
1318 "|"+
1319 Math.round(
1320 row.el
1321 .getBoundingClientRect()
1322 .top
1323 );
Veronika Kocher 8.5 1324
Veronika Kocher 8.7 1325 if(!seenHeaders.has(key)){
1326 seenHeaders.add(key);
1327 unique.push(row);
1328 }
1329 });
Veronika Kocher 8.5 1330
Veronika Kocher 8.7 1331 unique.forEach(function(row){
1332 var headerRect=
1333 row.el
1334 .getBoundingClientRect();
Veronika Kocher 8.5 1335
Veronika Kocher 8.7 1336 row.el.style.setProperty(
1337 "background",
1338 row.theme.bg,
1339 "important"
Veronika Kocher 8.6 1340 );
1341
Veronika Kocher 8.7 1342 row.el.style.setProperty(
1343 "color",
1344 row.theme.text,
1345 "important"
Veronika Kocher 8.6 1346 );
1347
Veronika Kocher 8.7 1348 row.el.style.setProperty(
1349 "text-align",
1350 "left",
1351 "important"
Veronika Kocher 8.6 1352 );
Veronika Kocher 8.5 1353
Veronika Kocher 8.7 1354 row.el.style.setProperty(
1355 "word-spacing",
1356 "normal",
1357 "important"
1358 );
Veronika Kocher 8.6 1359
Veronika Kocher 8.7 1360 var later=
1361 unique
1362 .filter(function(other){
1363 return (
1364 other.card===row.card&&
1365 other.el
1366 .getBoundingClientRect()
1367 .top>
1368 headerRect.top+2
1369 );
1370 })
1371 .sort(function(a,b){
1372 return (
1373 a.el
1374 .getBoundingClientRect()
1375 .top-
1376 b.el
1377 .getBoundingClientRect()
1378 .top
1379 );
1380 });
Veronika Kocher 8.6 1381
Veronika Kocher 8.7 1382 var stopTop=
1383 later.length
1384 ?later[0].el
1385 .getBoundingClientRect()
1386 .top
1387 :Infinity;
Veronika Kocher 8.6 1388
1389 Array.from(
Veronika Kocher 8.7 1390 row.card.querySelectorAll("a")
1391 ).forEach(function(link){
1392 if(!visible(link))return;
Veronika Kocher 8.6 1393
Veronika Kocher 8.7 1394 var rect=
1395 link.getBoundingClientRect();
Veronika Kocher 8.6 1396
Veronika Kocher 8.7 1397 if(
1398 rect.top<=
1399 headerRect.bottom-2||
1400 rect.top>=
1401 stopTop-2
1402 ){
1403 return;
1404 }
Veronika Kocher 8.6 1405
Veronika Kocher 8.7 1406 var candidates=
1407 rowCandidates(
1408 link,
1409 row.card
1410 );
1411
1412 var target=
1413 chooseOuterRow(
1414 candidates,
1415 link
1416 );
1417
1418 candidates.forEach(function(el){
1419 el.style.setProperty(
1420 "border-left",
1421 "0 solid transparent",
1422 "important"
1423 );
1424 });
1425
1426 target.style.setProperty(
1427 "border-left",
1428 "3px solid "+
1429 row.theme.accent,
1430 "important"
Veronika Kocher 8.6 1431 );
Veronika Kocher 8.7 1432
1433 target.style.setProperty(
1434 "box-sizing",
1435 "border-box",
1436 "important"
Veronika Kocher 8.6 1437 );
Veronika Kocher 8.5 1438 });
Veronika Kocher 8.7 1439 });
Veronika Kocher 8.5 1440
Veronika Kocher 8.7 1441 return unique;
Veronika Kocher 8.6 1442 }
Veronika Kocher 8.5 1443
Veronika Kocher 8.7 1444 /* =======================================================
1445 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1446 ======================================================= */
Veronika Kocher 8.6 1447
Veronika Kocher 8.7 1448 function alignOverviewCards(headers){
1449 if(
1450 PAGE_KIND!=="overview"||
1451 window.innerWidth<=MOBILE_MAX
1452 ){
1453 return;
1454 }
Veronika Kocher 8.6 1455
Veronika Kocher 8.7 1456 var cards=[];
1457 var seen=new Set();
Veronika Kocher 8.6 1458
Veronika Kocher 8.7 1459 headers.forEach(function(row){
1460 if(!seen.has(row.card)){
1461 seen.add(row.card);
1462 cards.push(row.card);
1463 }
1464 });
Veronika Kocher 8.6 1465
Veronika Kocher 8.7 1466 if(cards.length<2){
1467 return;
1468 }
Veronika Kocher 8.6 1469
Veronika Kocher 8.7 1470 // Group cards by actual top position.
1471 var groups=[];
Veronika Kocher 8.6 1472
Veronika Kocher 8.7 1473 cards.forEach(function(card){
1474 var top=
1475 card.getBoundingClientRect().top;
Veronika Kocher 8.6 1476
Veronika Kocher 8.7 1477 var group=null;
Veronika Kocher 8.6 1478
Veronika Kocher 8.7 1479 for(var i=0;i<groups.length;i++){
Veronika Kocher 8.6 1480 if(
Veronika Kocher 8.7 1481 Math.abs(
1482 groups[i].top-top
1483 )<=ROW_TOLERANCE
Veronika Kocher 8.6 1484 ){
Veronika Kocher 8.7 1485 group=groups[i];
1486 break;
Veronika Kocher 8.6 1487 }
Veronika Kocher 8.7 1488 }
Veronika Kocher 8.6 1489
Veronika Kocher 8.7 1490 if(!group){
1491 group={
1492 top:top,
1493 cards:[]
1494 };
1495 groups.push(group);
1496 }
Veronika Kocher 8.6 1497
Veronika Kocher 8.7 1498 group.cards.push(card);
1499 });
Veronika Kocher 8.6 1500
Veronika Kocher 8.7 1501 groups.forEach(function(group){
1502 if(group.cards.length<2){
1503 return;
1504 }
Veronika Kocher 8.6 1505
Veronika Kocher 8.7 1506 var firstHeaders=
1507 group.cards.map(function(card){
1508 var candidates=
1509 headers
1510 .filter(function(row){
1511 return row.card===card;
1512 })
1513 .sort(function(a,b){
1514 return (
1515 a.el
1516 .getBoundingClientRect()
1517 .top-
1518 b.el
1519 .getBoundingClientRect()
1520 .top
1521 );
1522 });
Veronika Kocher 8.6 1523
Veronika Kocher 8.7 1524 return candidates.length
1525 ?candidates[0]
1526 :null;
1527 });
Veronika Kocher 8.6 1528
Veronika Kocher 8.7 1529 if(
1530 !firstHeaders.some(function(row){
1531 return !row;
1532 })
1533 ){
1534 var targetTop=
1535 Math.max.apply(
1536 Math,
1537 firstHeaders.map(function(row){
1538 return (
1539 row.el
1540 .getBoundingClientRect()
1541 .top-
1542 row.card
1543 .getBoundingClientRect()
1544 .top
1545 );
1546 })
1547 );
Veronika Kocher 8.4 1548
Veronika Kocher 8.7 1549 firstHeaders.forEach(function(row){
1550 var relativeTop=
1551 row.el
1552 .getBoundingClientRect()
1553 .top-
1554 row.card
1555 .getBoundingClientRect()
1556 .top;
Veronika Kocher 8.5 1557
Veronika Kocher 8.7 1558 var delta=
1559 targetTop-relativeTop;
Veronika Kocher 8.5 1560
Veronika Kocher 8.7 1561 if(delta>1){
1562 saveStyle(
1563 row.el,
1564 originalMargin,
1565 "margin-top"
1566 );
Veronika Kocher 8.6 1567
Veronika Kocher 8.7 1568 var current=
1569 num(
1570 getComputedStyle(
1571 row.el
1572 ).marginTop
1573 );
Veronika Kocher 8.5 1574
Veronika Kocher 8.7 1575 row.el.style.setProperty(
1576 "margin-top",
1577 (
1578 current+delta
1579 )+"px"
1580 );
Veronika Kocher 8.5 1581
Veronika Kocher 8.7 1582 row.el.setAttribute(
1583 "data-sn-master-first-row",
1584 "1"
1585 );
Veronika Kocher 8.5 1586
Veronika Kocher 8.7 1587 managedMargin.add(
1588 row.el
1589 );
1590 }
1591 });
1592 }
Veronika Kocher 8.5 1593
Veronika Kocher 8.7 1594 var maxHeight=0;
Veronika Kocher 8.5 1595
Veronika Kocher 8.7 1596 group.cards.forEach(function(card){
1597 maxHeight=
1598 Math.max(
1599 maxHeight,
1600 card
1601 .getBoundingClientRect()
1602 .height
1603 );
1604 });
Veronika Kocher 8.5 1605
Veronika Kocher 8.7 1606 maxHeight=
1607 Math.ceil(maxHeight);
Veronika Kocher 8.5 1608
Veronika Kocher 8.7 1609 group.cards.forEach(function(card){
1610 saveStyle(
1611 card,
1612 originalHeight,
1613 "min-height"
1614 );
Veronika Kocher 8.5 1615
Veronika Kocher 8.7 1616 card.style.setProperty(
1617 "min-height",
1618 maxHeight+"px"
Veronika Kocher 8.5 1619 );
1620
Veronika Kocher 8.7 1621 card.setAttribute(
1622 "data-sn-master-equal-height",
1623 "1"
1624 );
Veronika Kocher 8.5 1625
Veronika Kocher 8.7 1626 managedHeight.add(
1627 card
1628 );
1629 });
Veronika Kocher 8.5 1630 });
1631 }
1632
Veronika Kocher 8.7 1633 /* =======================================================
1634 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1635 ======================================================= */
Veronika Kocher 8.5 1636
Veronika Kocher 8.7 1637 function equaliseDetailGrids(){
Veronika Kocher 8.6 1638 if(
Veronika Kocher 8.7 1639 PAGE_KIND!=="detail"||
1640 window.innerWidth<=MOBILE_MAX
Veronika Kocher 8.6 1641 ){
Veronika Kocher 8.7 1642 return;
Veronika Kocher 8.6 1643 }
Veronika Kocher 8.5 1644
Veronika Kocher 8.7 1645 var selectors=[
1646 ".arsn-grid",
1647 ".arsn-grid-2",
1648 ".arsn-grid-3",
1649 ".dmp-grid",
1650 ".ido-grid",
1651 ".pp-grid"
1652 ];
Veronika Kocher 8.5 1653
Veronika Kocher 8.7 1654 selectors.forEach(function(selector){
1655 Array.from(
1656 root.querySelectorAll(selector)
1657 ).forEach(function(grid){
1658 var children=
1659 Array.from(
1660 grid.children||[]
1661 ).filter(visible);
Veronika Kocher 8.5 1662
Veronika Kocher 8.7 1663 if(children.length<2){
1664 return;
1665 }
Veronika Kocher 8.5 1666
Veronika Kocher 8.7 1667 var groups=[];
Veronika Kocher 8.5 1668
Veronika Kocher 8.7 1669 children.forEach(function(child){
1670 var top=
1671 child
1672 .getBoundingClientRect()
1673 .top;
Veronika Kocher 8.5 1674
Veronika Kocher 8.7 1675 var group=null;
Veronika Kocher 8.5 1676
Veronika Kocher 8.7 1677 for(var i=0;i<groups.length;i++){
1678 if(
1679 Math.abs(
1680 groups[i].top-top
1681 )<=ROW_TOLERANCE
1682 ){
1683 group=groups[i];
1684 break;
1685 }
1686 }
Veronika Kocher 8.5 1687
Veronika Kocher 8.7 1688 if(!group){
1689 group={
1690 top:top,
1691 items:[]
1692 };
1693 groups.push(group);
1694 }
Veronika Kocher 8.5 1695
Veronika Kocher 8.7 1696 group.items.push(child);
1697 });
Veronika Kocher 8.5 1698
Veronika Kocher 8.7 1699 groups.forEach(function(group){
1700 if(group.items.length<2){
1701 return;
1702 }
Veronika Kocher 8.4 1703
Veronika Kocher 8.7 1704 var maxHeight=0;
Veronika Kocher 8.6 1705
Veronika Kocher 8.7 1706 group.items.forEach(function(item){
1707 maxHeight=
1708 Math.max(
1709 maxHeight,
1710 item
1711 .getBoundingClientRect()
1712 .height
1713 );
1714 });
Veronika Kocher 8.6 1715
Veronika Kocher 8.7 1716 maxHeight=
1717 Math.ceil(maxHeight);
Veronika Kocher 8.4 1718
Veronika Kocher 8.7 1719 group.items.forEach(function(item){
1720 saveStyle(
1721 item,
1722 originalHeight,
1723 "min-height"
1724 );
Veronika Kocher 8.4 1725
Veronika Kocher 8.7 1726 item.style.setProperty(
1727 "min-height",
1728 maxHeight+"px"
1729 );
Veronika Kocher 8.5 1730
Veronika Kocher 8.7 1731 item.setAttribute(
1732 "data-sn-master-equal-height",
1733 "1"
1734 );
Veronika Kocher 8.4 1735
Veronika Kocher 8.7 1736 managedHeight.add(item);
1737 });
Veronika Kocher 8.4 1738 });
Veronika Kocher 8.7 1739 });
1740 });
1741 }
Veronika Kocher 8.4 1742
Veronika Kocher 8.7 1743 /* =======================================================
1744 RUN / RESPONSIVE SCHEDULING
1745 ======================================================= */
Veronika Kocher 8.4 1746
Veronika Kocher 8.7 1747 function run(){
1748 if(running)return;
Veronika Kocher 8.4 1749
Veronika Kocher 8.7 1750 running=true;
Veronika Kocher 8.6 1751
Veronika Kocher 8.7 1752 try{
1753 resetRuntime();
1754 applyPlaceholderBadge();
1755 propagateDetailAccents();
Veronika Kocher 8.6 1756
Veronika Kocher 8.7 1757 var headers=
1758 applyOverviewPalette();
Veronika Kocher 8.6 1759
Veronika Kocher 8.8 1760 makeThreeLineAreaLabels();
1761 makeFilledRedOrangeCTAsBorderless();
1762
Veronika Kocher 8.7 1763 if(
1764 window.innerWidth>
1765 MOBILE_MAX
1766 ){
1767 alignOverviewCards(
1768 headers
1769 );
Veronika Kocher 8.4 1770
Veronika Kocher 8.7 1771 equaliseDetailGrids();
1772 }
Veronika Kocher 8.6 1773 }finally{
Veronika Kocher 8.7 1774 running=false;
Veronika Kocher 8.6 1775 }
Veronika Kocher 8.4 1776 }
1777
Veronika Kocher 8.7 1778 function onResize(){
Veronika Kocher 8.6 1779 if(resizeTimer){
1780 clearTimeout(
1781 resizeTimer
1782 );
1783 }
Veronika Kocher 8.5 1784
Veronika Kocher 8.6 1785 resizeTimer=
1786 setTimeout(
1787 function(){
1788 resizeTimer=0;
Veronika Kocher 8.7 1789 run();
Veronika Kocher 8.6 1790 },
1791 RESIZE_DEBOUNCE
1792 );
Veronika Kocher 8.4 1793 }
1794
Veronika Kocher 8.7 1795 async function waitForReady(){
1796 if(
1797 document.readyState!=="complete"
1798 ){
1799 await new Promise(function(resolve){
1800 window.addEventListener(
1801 "load",
1802 resolve,
1803 {once:true}
1804 );
1805 });
1806 }
1807
1808 if(
1809 document.fonts&&
1810 document.fonts.ready
1811 ){
1812 try{
1813 await document.fonts.ready;
1814 }catch(error){}
1815 }
1816
Veronika Kocher 8.6 1817 var images=
1818 Array.from(
1819 root.querySelectorAll("img")
1820 );
Veronika Kocher 8.4 1821
Veronika Kocher 8.7 1822 await Promise.all(
Veronika Kocher 8.6 1823 images.map(function(img){
1824 if(img.complete){
1825 return Promise.resolve();
1826 }
Veronika Kocher 8.4 1827
Veronika Kocher 8.6 1828 return new Promise(function(resolve){
1829 var done=function(){
1830 resolve();
1831 };
1832
1833 img.addEventListener(
1834 "load",
1835 done,
1836 {once:true}
1837 );
1838
1839 img.addEventListener(
1840 "error",
1841 done,
1842 {once:true}
1843 );
1844 });
1845 })
1846 );
1847
Veronika Kocher 8.7 1848 run();
Veronika Kocher 8.4 1849 }
1850
Veronika Kocher 8.7 1851 window.addEventListener(
Veronika Kocher 8.6 1852 "resize",
Veronika Kocher 8.7 1853 onResize,
Veronika Kocher 8.6 1854 {passive:true}
1855 );
1856
Veronika Kocher 8.7 1857 waitForReady();
Veronika Kocher 8.4 1858 })();
1859 </script>
Veronika Kocher 8.6 1860
Veronika Kocher 8.7 1861 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1862 {{/html}}
1863