PageSourceSearch

https://pharma-concept.de/karriere/

html pharma-concept.de collected 2026-10-07 05:01:36 UTC 41,669 bytes, 846 lines download raw bytes

1<!doctype html>
2<html lang="de">
3<head>
4	<meta charset="UTF-8">
5	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
6	<title>Karriere &#8211; PHARMA CONCEPT</title>
7<meta name='robots' content='max-image-preview:large' />
8	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
9	<link rel="alternate" type="application/rss+xml" title="PHARMA CONCEPT &raquo; Feed" href="https://pharma-concept.de/feed/" />
10<link rel="alternate" type="application/rss+xml" title="PHARMA CONCEPT &raquo; Kommentar-Feed" href="https://pharma-concept.de/comments/feed/" />
11<style id='classic-theme-styles-inline-css'>
12/*! This file is auto-generated */
13.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
14</style>
15<link rel='stylesheet' id='minymal-style-custom-css' href='https://pharma-concept.de/wp-content/themes/e/dist/css/style.425fb0265631af219c498064d951bd9bc5b5b31d82444264c69fb47e5f47e774.css' media='all' />
16<script src="https://pharma-concept.de/wp/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
vendor: 1 bytes, line 16
16
17<script src="https://pharma-concept.de/wp/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
17
18<link rel="canonical" href="https://pharma-concept.de/karriere/" />
19<script>
20  var g_tqtools_structureddata_lang		=	'de';
21  var g_tqtools_structureddata_url_restv1 =	'https://pharma-concept.de/wp-json/tq-tools/structureddata/v1';
22</script>
vendor: 1 bytes, line 22
22
23<script>
24  var g_tqtools_easyrest_lang		=	'de';
25  var g_tqtools_easyrest_url_restv1 =	'https://pharma-concept.de/wp-json/tq-tools/easyrest/v1';
26</script>
26
27
28<link rel="icon" href="/wp-content/themes/e/dist/favicon/favicon.svg" type="image/svg+xml">
29<link rel="icon" href="/wp-content/themes/e/dist/favicon/favicon-16.png" sizes="16x16" type="image/png">
30<link rel="icon" href="/wp-content/themes/e/dist/favicon/favicon-32.png" sizes="32x32" type="image/png">
31<link rel="apple-touch-icon" href="/wp-content/themes/e/dist/favicon/favicon-180.png" sizes="180x180" type="image/png">
32<link rel="icon" href="/wp-content/themes/e/dist/favicon/favicon-192.png" sizes="192x192" type="image/png"><meta name="theme-color" content="#fff">
33<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":["MedicalBusiness"],"name":"PHARMA CONCEPT GmbH","address":{"@type":"PostalAddress","streetAddress":"Ma\u00dfholderstra\u00dfe 5","addressLocality":"Bad Endbach","addressRegion":"HE","postalCode":"35080","addressCountry":"DE"},"geo":{"@type":"GeoCoordinates","latitude":50.756727519055666,"longitude":8.46387532785336},"telephone":"+4927762338800","email":"[email protected]","sameAs":["https:\/\/www.facebook.com\/Einhundert.PharmaConcept#","https:\/\/www.linkedin.com\/company\/einhundert-pharma-concept\/","https:\/\/www.instagram.com\/einhundert_pharma_concept"],"url":"https:\/\/pharma-concept.de"}</script>
33</head>
34
35<body class="wp-singular page page-id-235 wp-theme-e karriere">
36<header class="container-fluid page-header">
37	<nav class="navbar navbar-expand-xl navbar-light py-0" role="navigation">
38		<div class="container ">
39			<a class="navbar-brand" href="https://pharma-concept.de/">
40				<img class="header-brand-logo" src="https://pharma-concept.de/wp-content/themes/e/dist/images/logo.svg"
41				     alt="PHARMA CONCEPT">
42			</a>
43			<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
44			        data-bs-target="#navbarNavDropdown"
45			        aria-controls="navbarNavDropdown" aria-expanded="false"
46			        aria-label="Navigation um/anschalten">
47				<span class="icon hamburger"></span>
48			</button>
49			<div class="collapse navbar-collapse" id="navbarNavDropdown">
50				<ul id="bs-primary-navbar-collapse-inner" class="navbar-nav main-nav"><li  id="12345" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-109"><a href="/#block_1" class="nav-link ">Über uns</a></li>
51<li  id="12345" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-111"><a href="/#block_2" class="nav-link ">Services</a></li>
52<li  id="12345" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-112"><a href="/#block_11" class="nav-link ">Kontakt</a></li>
53<li  id="12345" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-235 current_page_item nav-item nav-item-240"><a href="https://pharma-concept.de/karriere/" class="nav-link active">Karriere</a></li>
54</ul>			</div>
55		</div>
56	</nav>
57</header>
58<!-- end of header.php -->
59	<main id="main-content" class="hyphenate">
60			<div class="hero-banner">
61		<picture>
62	<source media="(min-width: 992px)" type="image/webp" width="1920" height="1080" srcset="https://pharma-concept.de/uploads/2025/11/Karriere-1920x1080.jpg.webp 1920w, https://pharma-concept.de/uploads/2025/11/Karriere-768x432.jpg.webp 768w, https://pharma-concept.de/uploads/2025/11/Karriere-384x216.jpg.webp 384w" sizes="1400px">
63	<source media="(min-width: 768px)" type="image/webp" width="1000" height="1000" srcset="https://pharma-concept.de/uploads/2025/11/Karriere-1000x1000.jpg.webp 1000w, https://pharma-concept.de/uploads/2025/11/Karriere-500x500.jpg.webp 500w, https://pharma-concept.de/uploads/2025/11/Karriere-250x250.jpg.webp 250w" sizes="100vw">
64	<source media="(min-width: 576px)" type="image/webp" width="500" height="1000" srcset="https://pharma-concept.de/uploads/2025/11/Karriere-500x1000.jpg.webp 500w, https://pharma-concept.de/uploads/2025/11/Karriere-250x500.jpg.webp 250w, https://pharma-concept.de/uploads/2025/11/Karriere-125x250.jpg.webp 125w" sizes="100vw">
65	<source media="(min-width: 992px)" type="image/jpeg" width="1920" height="1080" srcset="https://pharma-concept.de/uploads/2025/11/Karriere-1920x1080.jpg 1920w, https://pharma-concept.de/uploads/2025/11/Karriere-768x432.jpg 768w, https://pharma-concept.de/uploads/2025/11/Karriere-384x216.jpg 384w" sizes="1400px">
66	<source media="(min-width: 768px)" type="image/jpeg" width="1000" height="1000" srcset="https://pharma-concept.de/uploads/2025/11/Karriere-1000x1000.jpg 1000w, https://pharma-concept.de/uploads/2025/11/Karriere-500x500.jpg 500w, https://pharma-concept.de/uploads/2025/11/Karriere-250x250.jpg 250w" sizes="100vw">
67	<source media="(min-width: 576px)" type="image/jpeg" width="500" height="1000" srcset="https://pharma-concept.de/uploads/2025/11/Karriere-500x1000.jpg 500w, https://pharma-concept.de/uploads/2025/11/Karriere-250x500.jpg 250w, https://pharma-concept.de/uploads/2025/11/Karriere-125x250.jpg 125w" sizes="100vw">
68	<img srcset="https://pharma-concept.de/uploads/2025/11/Karriere-500x1000.jpg 500w, https://pharma-concept.de/uploads/2025/11/Karriere-250x500.jpg 250w, https://pharma-concept.de/uploads/2025/11/Karriere-125x250.jpg 125w" sizes="100vw" width="125" height="250" src="https://pharma-concept.de/uploads/2025/11/Karriere-125x250.jpg" loading="eager" alt="">
69</picture>		    <div class="content">
70        <h1 class='headline h2'>KARRIERE
71</h1>
72        <p class="hero-banner-text"></p>
73        
74    </div>		<div class="linear-gradient"></div>
75	</div>
76	<section class="accordion-standard-section light-background">
77	<div class="container">
78		<h2 class="h1">OFFENE STELLEN</h2>
79		<div id="accordion-1" class="accordion">
80			
81
82<div class="accordion-item">
83	<div class="accordion-header" id="item-1">
84		<button class="btn accordion-button collapsed"
85		        data-bs-toggle="collapse"
86		        data-bs-target="#collapse-1"
87		        aria-expanded="true>"
88		        aria-controls="collapse-1">
89			Experte CQV			<span class="angles down icon"></span>
90		</button>
91	</div>
92	<div id="collapse-1"
93	     class="accordion-collapse collapse"
94	     data-bs-parent="#accordion-1"
95	     aria-labelledby="item-1">
96		<div class="accordion-body">
97			<p><strong>Traumjob gesucht?</strong></p>
98<p><strong>Experte CQV (m/w/d)</strong></p>
99<p>Heftiger CQV-Experte?<br />
100Wir sollten reden!</p>
101<p><strong>Deine Verantwortung</strong></p>
102<ul>
103<li>Prozessvalidierung</li>
104<li>Enger Kundenkontakt</li>
105<li>Durchführung DQ/IQ/OQ/PQ</li>
106<li>Inbetriebnahme von Anlagen</li>
107<li>Computer System Validierung</li>
108<li>Programmierkenntnisse PCS7/TIA</li>
109<li>Prüfen technischer Dokumentation</li>
110<li>Qualifizierungsdokumente erstellen</li>
111</ul>
112<p><strong>Deine Erfahrung</strong></p>
113<ul>
114<li>Anlagenbau</li>
115<li>DQ/IQ/OQ/PQ</li>
116<li>GxP / Annex 1</li>
117<li>Sterile Abfüllung</li>
118<li>Prozessvalidierung</li>
119<li>SPS Programmierung</li>
120<li>Aseptic Process Simulation</li>
121</ul>
122<p><strong>Key Facts</strong></p>
123<p><em>Home Base</em><br />
124Bad Endbach oder Dessau-Roßlau</p>
125<p><em>Arbeitsort</em><br />
126Im Büro, mobil und bei unseren Kunden</p>
127<p><em>Arbeitszeit &amp; Urlaub</em><br />
128Entscheide selbst!</p>
129<p>Was wir tun und ob wir zueinander passen &#8211; jetzt checken!</p>
130		</div>
131	</div>
132</div>
133
134
135
136<div class="accordion-item">
137	<div class="accordion-header" id="item-2">
138		<button class="btn accordion-button collapsed"
139		        data-bs-toggle="collapse"
140		        data-bs-target="#collapse-2"
141		        aria-expanded="false>"
142		        aria-controls="collapse-2">
143			Experte Prozesstechnik			<span class="angles down icon"></span>
144		</button>
145	</div>
146	<div id="collapse-2"
147	     class="accordion-collapse collapse"
148	     data-bs-parent="#accordion-1"
149	     aria-labelledby="item-2">
150		<div class="accordion-body">
151			<p><strong>Traumjob gesucht?</strong></p>
152<p><strong>Experte Prozesstechnik (m/w/d)</strong></p>
153<p>Starker Pharmaprozess-Experte?<br />
154Wir sollten reden!</p>
155<p><strong>Deine Verantwortung</strong></p>
156<ul>
157<li>Fachliche Reviews</li>
158<li>Enger Kundenkontakt</li>
159<li>R+Is lesen &amp; erstellen</li>
160<li>Schnittstellenplanung</li>
161<li>Technologievergleiche</li>
162<li>Basic- &amp; Detail-Engineering</li>
163<li>Spezifikationen ausarbeiten</li>
164<li>Anforderungen prüfen &amp; bewerten</li>
165</ul>
166<p><strong>Deine Erfahrung</strong></p>
167<ul>
168<li>Anlagenbau</li>
169<li>GxP / Annex 1</li>
170<li>Hygienic Design</li>
171<li>Sterile Abfüllung</li>
172<li>Containment Systeme</li>
173</ul>
174<p><strong>Key Facts</strong></p>
175<p><em>Home Base</em><br />
176Bad Endbach oder Dessau-Roßlau</p>
177<p><em>Arbeitsort</em><br />
178Im Büro, mobil und bei unseren Kunden</p>
179<p><em>Arbeitszeit &amp; Urlaub</em><br />
180Entscheide selbst!</p>
181<p>Was wir tun und ob wir zueinander passen &#8211; jetzt checken!</p>
182		</div>
183	</div>
184</div>
185
186
187
188<div class="accordion-item">
189	<div class="accordion-header" id="item-3">
190		<button class="btn accordion-button collapsed"
191		        data-bs-toggle="collapse"
192		        data-bs-target="#collapse-3"
193		        aria-expanded="false>"
194		        aria-controls="collapse-3">
195			Technischer Vertrieb			<span class="angles down icon"></span>
196		</button>
197	</div>
198	<div id="collapse-3"
199	     class="accordion-collapse collapse"
200	     data-bs-parent="#accordion-1"
201	     aria-labelledby="item-3">
202		<div class="accordion-body">
203			<p><strong>Traumjob gesucht?</strong></p>
204<p><strong>Technischer Vertrieb (m/w/d)</strong></p>
205<p>Totaler Experte im technischen Vertrieb?<br />
206Wir sollten reden!</p>
207<p><strong>Deine Verantwortung</strong></p>
208<ul>
209<li>Betreuung &amp; Beratung von Kunden</li>
210<li>Erarbeitung geeigneter Leistungen</li>
211<li>Analyse technischer Anforderungen</li>
212<li>Planung &amp; Durchführung von Messen</li>
213<li>Erstgespräch mit Fach- &amp; Führungskräften</li>
214<li>Aufbau &amp; Pflege partnerschaftlicher Kundenbeziehungen</li>
215<li>Vertriebstechnische Projektbegleitung</li>
216</ul>
217<p><strong>Deine Erfahrung</strong></p>
218<ul>
219<li>B2B Vertrieb</li>
220<li>GxP / Annex 1</li>
221<li>MS-Office umfänglich</li>
222<li>Akquisition von Neukunden</li>
223<li>Deutsch &amp; Englisch fließend</li>
224<li>Kontinuierliche Marktbeobachtung</li>
225<li>Aufbereitung betriebswitschaftlicher Handlungsempfehlungen</li>
226</ul>
227<p><strong>Key Facts</strong></p>
228<p><em>Home Base</em><br />
229Bad Endbach</p>
230<p><em>Arbeitsort</em><br />
231Im Büro, mobil und bei unseren Kunden</p>
232<p><em>Arbeitszeit &amp; Urlaub</em><br />
233Entscheide selbst!</p>
234<p>Was wir tun und ob wir zueinander passen &#8211; jetzt checken!</p>
235		</div>
236	</div>
237</div>
238
239
240
241<div class="accordion-item">
242	<div class="accordion-header" id="item-4">
243		<button class="btn accordion-button collapsed"
244		        data-bs-toggle="collapse"
245		        data-bs-target="#collapse-4"
246		        aria-expanded="false>"
247		        aria-controls="collapse-4">
248			Experte Qualifizierung			<span class="angles down icon"></span>
249		</button>
250	</div>
251	<div id="collapse-4"
252	     class="accordion-collapse collapse"
253	     data-bs-parent="#accordion-1"
254	     aria-labelledby="item-4">
255		<div class="accordion-body">
256			<p><strong>Traumjob gesucht?</strong></p>
257<p><strong>Experte Qualifizierung (m/w/d)</strong></p>
258<p>Krasser Experte für Qualifizierung?<br />
259Wir sollten reden!</p>
260<p><strong>Deine Verantwortung</strong></p>
261<ul>
262<li>Risikoanalysen</li>
263<li>Enger Kundenkontakt</li>
264<li>Durchführung DQ/IQ/OQ/PQ</li>
265<li>Computer System Validierung</li>
266<li>Prozess- &amp; Designentwicklung</li>
267<li>Prüfen technischer Dokumentation</li>
268<li>Material- &amp; Schweißdokumentation</li>
269<li>Qualifizierungsdokumente erstellen</li>
270</ul>
271<p><strong>Deine Erfahrung</strong></p>
272<ul>
273<li>Anlagenbau</li>
274<li>DQ/IQ/OQ/PQ</li>
275<li>GxP / Annex 1</li>
276<li>Hygienic Design</li>
277<li>Sterile Abfüllung</li>
278<li>Containment Systeme</li>
279</ul>
280<p><strong>Key Facts</strong></p>
281<p><em>Home Base</em><br />
282Bad Endbach oder Dessau-Roßlau</p>
283<p><em>Arbeitsort</em><br />
284Im Büro, mobil und bei unseren Kunden</p>
285<p><em>Arbeitszeit &amp; Urlaub</em><br />
286Entscheide selbst!</p>
287<p>Was wir tun und ob wir zueinander passen &#8211; jetzt checken!</p>
288		</div>
289	</div>
290</div>
291
292
293
294<div class="accordion-item">
295	<div class="accordion-header" id="item-5">
296		<button class="btn accordion-button collapsed"
297		        data-bs-toggle="collapse"
298		        data-bs-target="#collapse-5"
299		        aria-expanded="false>"
300		        aria-controls="collapse-5">
301			Assistenz der Geschäftsführung			<span class="angles down icon"></span>
302		</button>
303	</div>
304	<div id="collapse-5"
305	     class="accordion-collapse collapse"
306	     data-bs-parent="#accordion-1"
307	     aria-labelledby="item-5">
308		<div class="accordion-body">
309			<p><strong>Traumjob gesucht?</strong></p>
310<p><strong>Assistenz der Geschäftsführung (m/w/d)</strong></p>
311<p>Multitalent oder Universalgenie?<br />
312Wir sollten reden!</p>
313<p><strong>Deine Verantwortung</strong></p>
314<ul>
315<li>Der erste Eindruck</li>
316<li>Dokumentenerstellung</li>
317<li>Recherche und Analyse</li>
318<li>Betriebsentwicklung unterstützen</li>
319<li>Planung von Meetings &amp; Dienstreisen</li>
320<li>Veranstaltungen planen &amp; organisieren</li>
321<li>Organisation, Ablage &amp; Verwaltung wichtiger Dokumente</li>
322</ul>
323<p><strong>Deine Erfahrung</strong></p>
324<ul>
325<li>Eventplanung</li>
326<li>MS-Office umfänglich</li>
327<li>Dokumentenmanagement</li>
328<li>Finanz- &amp; Lohnbuchhaltung</li>
329<li>Deutsch &amp; Englisch fließend</li>
330<li>Pflege &amp; Ablage digitaler Daten</li>
331<li>Effizient, freundlich &amp; zielgerichtet kommunizieren mit Kunden &amp; Partnern</li>
332</ul>
333<p><strong>Key Facts</strong></p>
334<p><em>Home Base</em><br />
335Bad Endbach</p>
336<p><em>Arbeitsort</em><br />
337Im Büro &amp; mobil</p>
338<p><em>Arbeitszeit &amp; Urlaub</em><br />
339Entscheide selbst!</p>
340<p>Was wir tun und ob wir zueinander passen &#8211; jetzt checken!</p>
341		</div>
342	</div>
343</div>
344
345		</div>
346	</div>
347</section>
348
349<section id="block_2" class="standard-content-editor dark-background">
350		<div class="container">
351			</div>
352	<div class="spalte-wrapper container two-column-one-one"><div class="spalte-1"><h2>DEINE QULIFIKATION</h2>
353<p>Du hast fundierte Berufserfahrung im Bereich der Arzneimittelherstellung? Genial! Du hast Ingenieurwesen studiert und kennst die Regeln der Pharma? Super! Du hast eine Ausbildung als Pharmakant:in oder Laborant:in und weißt, wovon du sprichst? Sehr gut! Du bist Quereinsteiger und nun Experte? Daumen hoch! Du hast promoviert und weißt, auf was es bei der Wirkstoffherstellung ankommt? Spitze! Du bist Verfa
353hrenstechniker und fit in pharmazeutischem Anlagenbau? Perfekt! Es kommt uns nicht darauf an, wie du zu deinem Können gekommen bist. Wir möchten unsere Erfahrung mit dir teilen. Ebenso solltest du dein Knowhow begeistert und kommunikationsstark mit uns und unseren Kunden teilen wollen. Die Hauptsache ist, du hast Lust etwas zu bewegen.</p>
354</div><div class="spalte-2"><h2>UNSER ANGEBOT</h2>
355<p>Durch kollegiale Zusammenarbeit auf Augenhöhe, Zukunft gemeinsam gestalten. Wir möchten, dass du in sinnstiftenden und abwechslungsreichen Projekten mitentscheidest. Dabei bieten wir dir die Möglichkeit, mobil und zeitlich flexibel zu arbeiten. Denn du weißt am besten, wann du auf Hochtouren läufst und wo du am produktivsten bist. Dazu entscheidest du selbst, wieviel Urlaub gut für dich ist und wie viele Stunden in der Woche du arbeiten möchtest. Ein Smartphone, ein Notebook und den eigenen Firmenwagen darfst du gerne auch privat nutzen. Und da nichts individueller ist als deine Bedürfnisse, gilt dies auch für deinen Karriereweg bei uns. Zugleich sind dir 13 Gehälter sicher und mit betrieblicher Altersversorgung, ebnen wir deinen entspannten Weg in Richtung Zukunft.</p>
356</div></div></section>
357<section id="block_3" class="contact-section bewerbung-section light-background">
358	<div class="container wrapper">
359		<h2>BOCK DRAUF? | JETZT ONLINE BEWERBEN</h2>
360		<p>Du hast Lust PHARMA CONCEPTER zu werden?</p>
361		<p>JETZT online bewerben:</p>
362		<div class="form-wrapper">
363			<div id="tqmailform" class="tqmailform-container"><form method="post" id="tqmailform_form"  enctype="multipart/form-data" class="tqmailform-form"  style=""><input type="hidden" name="formfile" value="bewerbung"><input type="hidden" name="themedir" value="wp-content/themes/e"><input type="hidden" name="baseid" value="tqmailform"><div class="row">
364	<div class="form-group col-md-6">
365		<input type="text" class="form-control" name="vorname" id="tqmailform_vorname" placeholder="Vorname*" required value="" >	</div>
366	<div class="form-group col-md-6">
367		<input type="text" class="form-control" name="nachname" id="tqmailform_nachname" placeholder="Nachname" required value="" >	</div>
368</div>
369<div class="row">
370	<div class="form-group col-md-6">
371		<input type="email" id="tqmailform_e_mail_adresse" name="e_mail_adresse"  placeholder="E-Mail-Adresse" value="" class="form-control"  required>	</div>
372	<div class="form-group col-md-6">
373		<input type="tel"  id="tqmailform_telefon" name="telefon"  placeholder="Telefon" value="" class="form-control"  required>	</div>
374</div>
375<div class="row">
376	<div class="form-group col-12">
377		<textarea rows="6" id="tqmailform_nachricht" name="nachricht" placeholder="Nachricht" class="form-control" ></textarea>	</div>
378	<div class="form-group col-12">
379		<input type="file" id="tqmailform_bewerbungsanlagen" name="bewerbungsanlagen"  placeholder="Bewerbungsanlagen (PDF)" onchange="tqmailform_checkMaxByteSize(tqmailform_bewerbungsanlagen, 2000000 )"  class="form-control form-control-file" required>	</div>
380</div>
381<p>
382		Wie wir mit Ihren Daten umgehen, erfahren Sie in unserer <a href="/datenschutz/">Datenschutzerklärung</a>.*</p>
383
384<div class="text-end">
385	<input type="submit" id="tqmailform_senden"  class="btn btn-primary" onClick="tqmailform_reload('https://pharma-concept.de/wp-content/plugins/tq-mailform/entrypoint.php', null, null, null, this); return false" value="Senden"></div>
386
387
388</form></div>
389<script>/**
390 * JS des Mailforms.
391 *
392 * Wird ins HTML eingebunden und nicht als JS-Datei geladen.
393 *
394 * @type {number}
395 */
396
397let tqmailform_activeFileUploadsCount = 0
398
399/**
400 * Holt den Node (div.tqmailform-container), in dem das Formular ist.
401 *
402 * @param node_element ein optionales Element des Formulars, z.B. der Submit-Button. Falls nicht, wird der
403 *                     erste passende Container geliefert.
404 * @return den Node oder null
405 */
406function tqmailform_getFormContainer(node_element = null) {
407
408    if (node_element) {
409        return node_element.closest('div.tqmailform-container');
410    } else {
411        return document.querySelector('div.tqmailform-container');
412    }
413
414}
415
416/**
417 * Diese Funktion wird vom onclick des Submit-Buttons aufgerufen.
418 *
419 * @param url
420 * @param before
421 * @param after
422 * @param success
423 * @param node_button Node des Submit-Buttons
424 * @returns {boolean}
425 */
426function tqmailform_reload(url, before, after, success, node_button = null) {
427
428    //  Den div.tqmailform-container, in dem das Formular ist, holen
429    let node_container = tqmailform_getFormContainer(node_button);
430    if (!node_container) {
431        alert("mailform: Container nicht gefunden.");
432        return false;
433    }
434
435    //  Das Form brauchen wir auch unten mehrmals
436    let node_form = node_container.querySelector('form');
437    if (!node_form) {
438        alert("mailform: Form nicht gefunden.");
439        return false;
440    }
441
442    if (tqmailform_activeFileUploadsCount > 0) {
443        alert('Bitte warten Sie, bis die Datei/n hochgeladen wurden.')
444        return false;
445    }
446
447    if (typeof before === 'function') {
448        before();
449    }
450
451    // Wir löschen hier alle Files, da die Dateien schon chunked gesendet wurde.
452    let file_inputs = node_form.querySelectorAll('.chunked_files');
453    file_inputs.forEach((input) => {
454        input.value = '';
455    })
456
457    const xhttp = new XMLHttpRequest();
458    xhttp.onreadystatechange = function () {
459        //  Callback für den AJAX-Request
460        if (this.readyState === 4 && this.status === 200) {
461
462            node_container.innerHTML = this.responseText;
463
464            //  BK 2025-11-28: Ich glaube, dass man das eval() hier nicht braucht, weil alles JS
465            //                 bereits beim ersten Laden dabei sein sollte.
466            let scriptElements = node_container.getElementsByTagName("script");
467            for (let scriptElement of scriptElements) {
468                eval(scriptElement.text)
469            }
470
471            let node_error = node_container.querySelector('#tqmailformerror');
472            let node_thankyou = node_container.querySelector('#tqmailformthankyou');
473            let node_success = node_container.querySelector('#tqmailformsuccess');
474            if (node_error) {
475                setTimeout(function () {
476                    // console.log( 'Scroling error.' );
477                    node_error.scrollIntoView({behavior: "smooth", block: "center", inline: "nearest"});
478                    node_error.focus();
479                }, 500);
480            } else {
481                if (node_thankyou) {
482                    // console.log( 'Scroling thank you.' );
483                    //  BK 2025-11-26: Das Scrollen funktioniert nur etwas zeitverzögert. Wohl wegen Repaint?
484                    setTimeout(function () {
485                        node_thankyou.scrollIntoView({behavior: "smooth", block: "center", inline: "nearest"});
486                        node_thankyou.focus();
487                    }, 500);
488                }
489            }
490            if (typeof after === 'function') {
491                after();
492            }
493            if (typeof success === 'function' && node_success) {
494                success();
495            }
496
497        }
498    };
499    xhttp.open("POST", url, true);
500
501    let formdata;
502    formdata = new FormData(node_form);
503
504    xhttp.send(formdata);
505}
506
507
508/**
509 * Ein input Feld so machen, dass die Datei chunked gesendet wird.
510 *
511 * Wird über das onchange-Event des file-Feldes aufgerufen
512 *
513 * @param node_input Node des Submit-Buttons
514 */
515async function tqmailform_sendChunkedFiles(inputname, formurl, maxbyte, node_input = null) {
516
517    //  Den div.tqmailform-container, in dem das Formular ist, holen
518    let node_container = tqmailform_getFormContainer(node_input);
519    if (!node_container) {
520        alert("mailform: Container nicht gefunden.");
521        return false;
522    }
523
524    tqmailform_activeFileUploadsCount++;
525    let input = node_container.querySelector('#file_' + inputname);
526    let label = node_container.querySelector('#label_' + inputname);
527    let file = input.files[0];
528    let data = new FormData();
529    let result_input = node_container.querySelector('#result_' + inputname);
530    let remove = node_container.querySelector('#remove_' + inputname);
531    let warning = node_container.querySelector('#warning_' + inputname);
532    let placeholder = node_container.querySelector('#placeholder_' + inputname);
533    let hiddenfield = node_container.querySelector('#' + inputname);
534    let form = input.form;
535    // Falls Input File leer ist
536    if (file === undefined) {
537        result_input.innerHTML = '';
538        hiddenfield.value = '';
539        tqmailform_activeFileUploadsCount--;
540        return;
541    }
542
543    // Falls Maxbyte überschritten ist
544    if (file.size >= parseInt(maxbyte)) {
545        result_input.style = 'right: 155px;position: relative;z-index: 999; min-width: 300px;top: 6px;';
546        result_input.innerHTML = '<span class="error">Bitte Dateigröße nicht überschreiten.<span>';
547        input.value = '';
548        tqmailform_activeFileUploadsCount--;
549        return;
550    }
551    result_input.style = 'right: 55px; position: absolute; z-index: 999; top: 6px;';
552    data.append('name', file.name);
553    data.append('size', file.size);
554    data.append('type', file.type);
555    data.append('chunkedfilerequestid', 0);
556
557    // holt sich das Formular vom Server erst mal eine ID
558    const sessionId = await fetch(formurl, {
559        method: 'POST', body: data,
560    }).then((response) => response.text());
561
562    // kleinen Chunks werden dann hochgeladen
563    let chunksize = 30720;
564    let filesize = file.size;
565    let chunkcount = Math.ceil(filesize / chunksize);
566    let chunkcountdown = chunkcount;
567    let percent;
568    let byte;
569    let chunkdata;
570    let $base64_code;
571
572    for (byte = 0; byte < file.size; byte = byte + chunksize) {
573        chunkdata = file.slice(byte, byte + chunksize);
574        let chunk = new FormData();
575
576        chunk.append('chunkedfilerequestid', sessionId);
577        chunk.append('chunknumber', chunkcount - chunkcountdown);
578        chunk.append('chunk', chunkdata);
579
580        const chunkok = await fetch(formurl, {
581            method: 'POST', body: chunk,
582        }).then((response) => {
583            response.text();
584        });
585        percent = Math.ceil(100 * (byte + chunksize) / filesize);
586        if (percent > 100) {
587            percent = 100;
588        }
589
590        if (byte + chunksize >= filesize) {
591            setTimeout(function () {
592                result_input.innerHTML = '&#10004;';
593            }, 1000);
594        }
595        // animieren Upload im Frontend
596        $base64_code = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCgRXhpZgAATU0AKgAAAAgABQEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAEyAAIAAAAUAAAAWodpAAQAAAABAAAAbgAAAAAAAABIAAAAAQAAAEgAAAABMjAyMzowMToxMSAxMjozNDoyOAAAA6ABAAMAAAABAAEAAKACAAMAAAABAAoAAKADAAMAAAABAAoAAAAAAAD/4QudaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjUuMCI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDEtMTFUMTI6Mjg6MjErMDEwMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDEtMTFUMTI6MzQ6MjgrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDEtMTFUMTI6MzQ6MjgrMDE6MDAiIHBob3Rvc2hvcDpEYXRlQ3JlYXRlZD0iMjAyMy0wMS0xMVQxMjoyODoyMSswMTAwIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgUGhvdG8gMiAyLjAuMCIgc3RFdnQ6d2hlbj0iMjAyMy0wMS0xMVQxMjozNDoyOCswMTowMCIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/tACxQaG90b3Nob3AgMy4wADhCSU0EJQAAAAAAENQdjNmPALIE6YAJmOz4Qn7/4gJkSUNDX1BST0ZJTEUAAQEAAAJUbGNtcwQwAABtbnRyUkdCIFhZWiAH5wABAAsACwAKABthY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAD5jcHJ0AAABSAAAAEx3d
596HB0AAABlAAAABRjaGFkAAABqAAAACxyWFlaAAAB1AAAABRiWFlaAAAB6AAAABRnWFlaAAAB/AAAABRyVFJDAAACEAAAACBnVFJDAAACEAAAACBiVFJDAAACEAAAACBjaHJtAAACMAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACIAAAAcAHMAUgBHAEIAIABJAEUAQwA2ADEAOQA2ADYALQAyAC4AMQAAbWx1YwAAAAAAAAABAAAADGVuVVMAAAAwAAAAHABOAG8AIABjAG8AcAB5AHIAaQBnAGgAdAAsACAAdQBzAGUAIABmAHIAZQBlAGwAeVhZWiAAAAAAAAD21gABAAAAANMtc2YzMgAAAAAAAQxCAAAF3v//8yUAAAeTAAD9kP//+6H///2iAAAD3AAAwG5YWVogAAAAAAAAb6AAADj1AAADkFhZWiAAAAAAAAAknwAAD4QAALbDWFlaIAAAAAAAAGKXAAC3hwAAGNlwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/bAEMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAoACgMBEQACEQEDEQH/xAAVAAEBAAAAAAAAAAAAAAAAAAAAB//EABQQAQAAAAAAAAAAAAAAAAAAAAD/xAAWAQEBAQAAAAAAAAAAAAAAAAAABwn/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCfp+wHAAAf/9k=';
597        input.type = 'text';
598        input.value = file.name;
599        input.style = `background-image: url(${$base64_code}); background-repeat: repeat-y; background-size: ${percent}% auto; color:#fff;z-index:99;`;
600        result_input.style.display = "block";
601        result_input.innerHTML = percent + '%';
602        chunkcountdown--;
603    }
604
605    // Upload fertig
606    result_input.style.color = "#fff";
607    hiddenfield.value = sessionId;
608    input.style = "display:none";
609    if (label) {
610        label.style = "display:none";
611    }
612    placeholder.value = file.name;
613    placeholder.style = "display:block; background-color: #1FA869; color: #fff;padding-right: 4rem;text-overflow: ellipsis;";
614    remove.style.display = "block";
615
616    tqmailform_activeFileUploadsCount--;
617
618}
619
620/**
621 * Delete-Button eines Upload-Feldes.
622 *
623 * @param inputname
624 * @param node_button Node des Submit-Buttons
625 */
626function tqmailform_deleteAttachment(inputname, node_button = null) {
627
628    //  Den div.tqmailform-container, in dem das Formular ist, holen
629    let node_container = tqmailform_getFormContainer(node_button);
630    if (!node_container) {
631        alert("mailform: Container nicht gefunden.");
632        return false;
633    }
634
635    // remove input file onclick
636    let input = node_container.querySelector('#file_' + inputname);
637    let label = node_container.querySelector('#label_' + inputname);
638    let remove = node_container.querySelector('#remove_' + inputname);
639    let placeholder = node_container.querySelector('#placeholder_' + inputname);
640    let hiddenfield = node_container.querySelector('#' + inputname);
641    let result_input = node_container.querySelector('#result_' + inputname);
642    input.value = '';
643    input.type = 'file';
644    input.style = 'display:block';
645    result_input.style.color = "#000";
646    if (label) {
647        label.style = 'display:block';
648    }
649    remove.style.display = "none";
650    placeholder.style.display = "none";
651    result_input.style.display = "none";
652    hiddenfield.value = "";
653    remove.classList.replace('d-block', 'd-none');
654}
655
656function tqmailform_checkMaxByteSize($inputname, $maxbytes) {
657    /* Wenn maxBytes überschreitet, wird eine Fehlermeldung in Frontend erscheint
658     * und der Input wird geleert.
659     */
660    if ($inputname.files[0].size > $maxbytes) {
661        alert('Die Dateigröße ist überschritten');
662        $inputname.value = '';
663    }
664}
665
666/**
667 * Klont ein Set von Formular-Feldern, z.B. um X Personen zu erfassen.
668 *
669 * @param source_id
670 * @param target_id
671 * @param data
672 * @returns {boolean}
673 */
674function tqmailform_addNewInputGroup(source_id, target_id, data = []) {
675
676    //  BK 2025-12-01: Hier kann ich leider kein this einbringen und daher das Formular nicht gezielt erfassen.
677    //                 Der Ersteller muss die Eindeutigkeit über Formulare hinweg selbst sicherstellen.
678
679    let source_el = document.getElementById(source_id);
680    let target_el = document.getElementById(target_id);
681
682    if (!source_el || !target_el) {
683        console.log('tqmailform_addNewInputGroup(): failed to found source or target.');
684        return;
685    }
686
687    //  Den div.tqmailform-container, in dem das Formular ist, holen
688    let node_container = tqmailform_getFormContainer(source_el);
689    if (!node_container) {
690        alert("mailform: Container nicht gefunden.");
691        return false;
692    }
693
694    let clone_source_el = source_el.cloneNode(true);
695    clone_source_el.style.display = 'block';
696    let allInputs = clone_source_el.querySelectorAll("input");
697    let allLabels = clone_source_el.querySelectorAll("label");
698
699    // ich will da nicht mitglied_counter als variable haben, die ich hochzähle,
700    // sondern der Name der Variablen soll target_id + "_counter" sein.
701
702    countername = target_id + '_counter';
703
704    // Inputs
705    allInputs.id = allInputs.id + '_' + window[countername];
706    clone_source_el.id = target_id + '-' + window[countername];
707
708    allInputs.forEach((e) => {
709        e.classList.add('form-control');
710        if (data[e.id]) {
711            e.classList += ' ' + data[e.id].classes;
712            if (e.type === 'checkbox') {
713                e.checked = (data[e.id].value === 'on');
714            } else {
715                e.value = data[e.id].value;
716            }
717
718        }
719
720        e.name = target_id + '[' + window[countername] + '][' + e.id + ']';
721        e.id = target_id + '_' + window[countername] + '_' + e.id;
722    });
723
724    // disable Elemente, wenn das Formular erfolgreich gesendet wird
725    let node_success = node_container.querySelector('#tqmailformsuccess');
726    if (node_success) {
727        allInputs.forEach((e) => {
728            e.disabled = true;
729        });
730        console.log('#' + target_id + '_button');
731        node_container.querySelector('#' + target_id + '_button').disabled = true;
732        let remove_buttons = node_container.querySelectorAll('.remove-btn');
733        remove_buttons.forEach((e) => {
734            e.disabled = true;
735        });
736    }
737
738    // Errors
739    let y = clone_source_el.querySelectorAll(".error");
740
741    y.forEach((e) => {
742        let myid = e.id.substring(6);
743        if (data[myid] && data[myid].error) {
744            e.innerHTML = data[myid].error;
745        } else {
746            e.remove();
747        }
748    });
749
750    // Labels "for" setzen
751    allLabels.forEach((e) => {
752        e.htmlFor = e.firstElementChild.id;
753    });
754
755
756    target_el.appendChild(clone_source_el);
757    window[countername]++;
758}
759
760function tqmailform_removeInputGroup(e) {
761    e.target.parentElement.parentElement.remove();
762}
763
764/* Kompatibilität nach besserer Benennung der Funktionen oben */
765
766function removeInputGroup(e) {
767    tqmailform_removeInputGroup(e);
768}
769
770</script>
770		</div>
771	</div>
772</section>
773	</main>
774<!-- BEGIN footer.php -->
775<footer id="page-footer" class="page-footer">
776	<div class="footer-inner">
777		<div class="container">
778			<div class="row py-5">
779				<div class="col-md-4 mb-5 mb-lg-0">
780					<ul>
781						<li class="company-name">PHARMA CONCEPT GmbH</li>
782						<li>Maßholderstraße 5</li>
783						<li>D-35080 Bad Endbach</li>
784					</ul>
785				</div>
786
787				<div class="col-md-4 mb-5 mb-lg-0">
788					<ul class="phone-email">
789						<li><span class="icon phone"></span><a
790								href="tel:+4927762338800">+49 (0) 2776 - 2338 800 </a></li>
791						<li><span class="icon envelope"></span><a
792								href="mailto:[email protected]">[email protected]</a></li>
793					</ul>
794				</div>
795
796				<div class="col-md-4">
797					<ul class="socials">
798						<li><a href="https://www.facebook.com/Einhundert.PharmaConcept#"><span class="icon facebook"></span></a> </li><li><a href="https://www.linkedin.com/company/einhundert-pharma-concept/"><span class="icon linkedin"></span></a> </li><li><a href="https://www.instagram.com/einhundert_pharma_concept"><span class="icon instagram"></span></a> </li>						<li class="linkedin-follow-wrapper">
799							
799<script type="IN/FollowCompany" data-id="72444395" data-counter="bottom"></script>
799
800						</li>
801					</ul>
802				</div>
803			</div>
804		</div>
805		<div class="footer-bottom dark-background">
806			<div class="col-12 footer-menu-wrapper">
807				<ul id="menu-fusszeile" class="footer-menu"><li class="menu-item menu-datenschutz"><a href="https://pharma-concept.de/datenschutz/">Datenschutz</a></li>
808<li class="menu-item menu-impressum"><a href="https://pharma-concept.de/impressum/">Impressum</a></li>
809</ul>			</div>
810		</div>
811	</div>
812	<div class="scroll-to-top">
813		<i class="icon up"></i>
814	</div>
815</footer>
816<script src="https://pharma-concept.de/wp-content/themes/e/assets/js/linkedin-in.js">lang: de_DE</script>
vendor: 1 bytes, line 816
816
817<script type="speculationrules">
818{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp\/wp-*.php","\/wp\/wp-admin\/*","\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/e\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
819</script>
819
820			
820<script>
821				window.PH_Child = {"ID":0,"user_login":false,"user_email":false,"display_name":false}			</script>
821
822			
823			
823<script>
824				(function(d, t, g, k) {
825					var ph = d.createElement(t),
826						s = d.getElementsByTagName(t)[0],
827						l = false,
828						t = (new URLSearchParams(window.location.search)).get(k);
829					t && localStorage.setItem(k, t);
830					t = localStorage.getItem(k)
831					if (!l && !t) return;
832					ph.type = 'text/javascript';
833					ph.async = true;
834					ph.defer = true;
835					ph.charset = 'UTF-8';
836					ph.src = g + '&v=' + (new Date()).getTime();
837					ph.src += t ? '&' + k + '=' + t : '';
838					s.parentNode.insertBefore(ph, s);
839				})(document, 'script', '//www.website-feedback.de?p=2661&ph_apikey=05b1743f15c3e9e46e66477c581c9823', 'ph_access_token');
840			</script>
840
841			
841<script src="https://pharma-concept.de/wp-content/plugins/tq-tools/src/Domain/StructuredData/js/structureddata-v1-20210521.js" id="tq-tools-structureddata-v1-js"></script>
vendor: 1 bytes, line 841
841
842<script src="https://pharma-concept.de/wp-content/plugins/tq-tools/src/Domain/EasyREST/js/easyrest-v1-20210521.js" id="tq-tools-easyrest-v1-js"></script>
vendor: 1 bytes, line 842
842
843<script src="https://pharma-concept.de/wp-content/themes/e/dist/js/bootstrap.bundle.min.4953edaa7a9fcd047b03a7c610a7088564d33911d3151f7e94bfe53a290500f8.js" id="bootstrapbundle-js"></script>
vendor: 1 bytes, line 843
843
844<script src="https://pharma-concept.de/wp-content/themes/e/dist/js/scripts.min.b32e430fc5b96145e259c24d13e6c5d3b375d5eaec591b16f01cf20b8018b0d5.js" id="scripts-js"></script>
844
845</body>
846</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.