new version

This commit is contained in:
2026-03-31 20:48:49 +02:00
parent 5f606fec6e
commit b22c5aa093
4 changed files with 583 additions and 196 deletions

40
CLAUDE.md Normal file
View File

@@ -0,0 +1,40 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project
Static website for **Dr. med. Carina Kautsch**, Ärztin für Allgemeinmedizin, 1160 Wien.
Served via `nginx:alpine` in Docker. No build step, no framework, no CMS.
Full project context (infrastructure, design decisions, open items) is in `meineordi-project-summary.md`.
## Architecture
Everything is a single file: `index.html` contains all HTML, CSS, and JavaScript inline.
`logo.png` and `favicon.svg` are served as static assets alongside it.
The only dynamic behaviour is client-side JavaScript:
- **`SCHLIESSZEITEN` array** — at the very top of `<body>`, the sole place to edit holiday closures. `renderClosures()` reads it and builds cards; empty array shows a "no closures" message automatically.
- **Today's hours** — populated on load from a hardcoded day→time map.
- **Font size toggle** — switches `body.large-font` class (18px → 22px), persisted in `localStorage`.
- **Hamburger menu** — toggles `.open` class on mobile nav.
## Deployment
Changes go live by:
1. Commit & push to `https://git.stranto.com/cgasser/web_meineordi` (branch: `master`)
2. Portainer → Stacks → `meineordi`**Pull and redeploy**
Portainer builds the Docker image directly from the repo (via `build: .` in `docker-compose.yml`).
The container joins `nginx_internal_network` (shared with Nginx Proxy Manager).
NPM routes `new.meineordi.at` → container `meineordi-web` port `80`.
## Key constraints
- **No external CSS/JS files** — everything must stay embedded in `index.html`.
- **No framework, no npm, no build step** — plain HTML/CSS/JS only.
- **`logo.png` must exist** in the repo root — it is `COPY`'d into the image by the Dockerfile. Missing it breaks the Docker build.
- **Primary color is `#C8102E`** — do not change, it is extracted from the practice logo.
- **Base font size is 18px** — deliberately large for older patients; large mode is 22px.
- Google Maps embed uses a no-API-key URL. If Google blocks it, switch to the official Maps Embed API (`/maps/embed/v1/place?key=...`).

View File

@@ -1,4 +1,5 @@
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
COPY impressum.html /usr/share/nginx/html/impressum.html
COPY logo.png /usr/share/nginx/html/logo.png
COPY favicon.svg /usr/share/nginx/html/favicon.svg

511
impressum.html Normal file
View File

@@ -0,0 +1,511 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Impressum und Datenschutzerklärung Dr. med. Carina Kautsch, Ärztin für Allgemeinmedizin, 1160 Wien." />
<title>Impressum Dr. Carina Kautsch</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400&family=DM+Sans:wght@400;500;600&display=swap" rel="stylesheet" />
<style>
/* ─── Reset & Base ─────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: 'DM Sans', sans-serif;
font-size: 18px;
color: #222;
background: #fff;
line-height: 1.6;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
/* ─── Variables ─────────────────────────────────────────── */
:root {
--red: #C8102E;
--red-dk: #a00d24;
--bg-alt: #f7f7f7;
--shadow: 0 6px 28px rgba(0,0,0,.14);
--radius: 12px;
}
/* ─── Header / Nav ──────────────────────────────────────── */
header {
position: sticky;
top: 0;
z-index: 100;
background: #fff;
border-bottom: 1px solid #eee;
box-shadow: 0 2px 12px rgba(0,0,0,.07);
}
nav {
max-width: 1100px;
margin: 0 auto;
padding: 0 24px;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.nav-logo img { height: 42px; width: auto; }
.nav-links {
display: flex;
align-items: center;
gap: 28px;
list-style: none;
}
.nav-links a {
font-size: 15px;
font-weight: 500;
color: #444;
transition: color .2s;
}
.nav-links a:hover { color: var(--red); }
.nav-phone {
display: inline-flex;
align-items: center;
gap: 8px;
background: var(--red);
color: #fff;
font-weight: 600;
font-size: 15px;
padding: 9px 18px;
border-radius: 8px;
white-space: nowrap;
transition: background .2s;
}
.nav-phone:hover { background: var(--red-dk); }
/* Hamburger */
.hamburger {
display: none;
flex-direction: column;
gap: 5px;
cursor: pointer;
background: none;
border: none;
padding: 4px;
}
.hamburger span {
display: block;
width: 26px;
height: 2px;
background: #333;
border-radius: 2px;
transition: all .3s;
}
.hamburger.open span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }
.mobile-menu {
display: none;
flex-direction: column;
background: #fff;
border-top: 1px solid #eee;
padding: 16px 24px 20px;
gap: 16px;
}
.mobile-menu.open { display: flex; }
.mobile-menu a {
font-size: 17px;
font-weight: 500;
color: #333;
padding: 6px 0;
border-bottom: 1px solid #f0f0f0;
}
.mobile-menu a:last-child { border-bottom: none; }
.mobile-menu .nav-phone {
margin-top: 4px;
justify-content: center;
}
/* ─── Font Size Toggle ──────────────────────────────────── */
.font-toggle-wrap {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
}
.font-toggle-wrap button {
background: none;
border: 2px solid #ddd;
border-radius: 7px;
cursor: pointer;
font-family: 'DM Sans', sans-serif;
font-weight: 700;
color: #666;
line-height: 1;
transition: all .2s;
padding: 5px 9px;
}
.font-toggle-wrap button.active {
border-color: var(--red);
color: var(--red);
background: #fff0f2;
}
.font-toggle-wrap button:first-child { font-size: 14px; }
.font-toggle-wrap button:last-child { font-size: 18px; }
/* Large font overrides */
body.large-font { font-size: 22px; }
body.large-font .nav-links a { font-size: 17px; }
body.large-font .nav-phone { font-size: 17px; }
/* ─── Section Helpers ───────────────────────────────────── */
section { padding: 72px 24px; }
section.alt { background: var(--bg-alt); }
.section-inner {
max-width: 1100px;
margin: 0 auto;
}
.section-title {
font-family: 'Cormorant Garamond', serif;
font-size: clamp(2rem, 4vw, 2.8rem);
font-weight: 700;
color: var(--red);
margin-bottom: 10px;
}
.section-sub {
font-size: 16px;
color: #666;
margin-bottom: 40px;
}
/* ─── Impressum / Datenschutz ──────────────────────────── */
.legal-section h3 {
font-family: 'Cormorant Garamond', serif;
font-size: 1.4rem;
font-weight: 700;
color: var(--red);
margin: 32px 0 10px;
}
.legal-section h3:first-of-type { margin-top: 0; }
.legal-section p, .legal-section li {
font-size: 16px;
color: #444;
line-height: 1.7;
margin-bottom: 8px;
}
.legal-section ul {
padding-left: 20px;
margin-bottom: 12px;
}
.legal-section a { color: var(--red); text-decoration: underline; }
.legal-section .legal-box {
background: #fff;
border-radius: var(--radius);
border-left: 4px solid var(--red);
padding: 20px 24px;
margin-top: 8px;
}
body.large-font .legal-section p,
body.large-font .legal-section li { font-size: 18px; }
/* ─── Back link ─────────────────────────────────────────── */
.back-link {
display: inline-flex;
align-items: center;
gap: 6px;
color: var(--red);
font-weight: 600;
font-size: 15px;
margin-bottom: 32px;
text-decoration: none;
transition: color .2s;
}
.back-link:hover { color: var(--red-dk); }
/* ─── Footer ────────────────────────────────────────────── */
footer {
background: #1a1a1a;
color: #aaa;
padding: 36px 24px;
text-align: center;
}
.footer-inner {
max-width: 1100px;
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
footer img { height: 38px; filter: brightness(0) invert(1); opacity: .7; }
footer p { font-size: 14px; }
footer a { color: #ccc; }
footer a:hover { color: #fff; }
/* ─── Responsive ────────────────────────────────────────── */
@media (max-width: 768px) {
.nav-links, .nav-phone { display: none; }
.hamburger { display: flex; }
}
@media (max-width: 540px) {
section { padding: 52px 16px; }
}
</style>
</head>
<body>
<!-- ─── Header ───────────────────────────────────────────── -->
<header>
<nav>
<a class="nav-logo" href="/">
<img src="/logo.png" alt="meineOrdi Logo" />
</a>
<ul class="nav-links">
<li><a href="/#oeffnungszeiten">Öffnungszeiten</a></li>
<li><a href="/#leistungen">Leistungen</a></li>
<li><a href="/#aktuelles">Aktuelles</a></li>
<li><a href="/#kontakt">Kontakt</a></li>
</ul>
<div class="font-toggle-wrap" aria-label="Schriftgröße">
<button id="font-normal" title="Normale Schriftgröße">A</button>
<button id="font-large" title="Große Schriftgröße">A+</button>
</div>
<a class="nav-phone" href="tel:+4314931773">
📞 +43 1 493 17 73
</a>
<button class="hamburger" id="hamburger" aria-label="Menü öffnen">
<span></span><span></span><span></span>
</button>
</nav>
<div class="mobile-menu" id="mobile-menu">
<a href="/#oeffnungszeiten">Öffnungszeiten</a>
<a href="/#leistungen">Leistungen</a>
<a href="/#aktuelles">Aktuelles</a>
<a href="/#kontakt">Kontakt</a>
<a class="nav-phone" href="tel:+4314931773">📞 +43 1 493 17 73</a>
<div class="font-toggle-wrap" style="justify-content:center;">
<button id="font-normal-mobile" title="Normale Schriftgröße">A</button>
<button id="font-large-mobile" title="Große Schriftgröße">A+</button>
</div>
</div>
</header>
<!-- ─── Impressum ────────────────────────────────────────── -->
<section id="impressum">
<div class="section-inner legal-section">
<a class="back-link" href="/">&#8592; Zurück zur Startseite</a>
<h2 class="section-title">Impressum</h2>
<p class="section-sub">Angaben gemäß §5 ECG und §25 MedienG</p>
<h3>Diensteanbieter</h3>
<div class="legal-box">
<p>
<strong>Dr. med. Carina Kautsch</strong><br>
Ärztin für Allgemeinmedizin<br>
Pfenninggeldgasse 1B/3<br>
A-1160 Wien<br>
Österreich
</p>
<p>
Telefon: <a href="tel:+4314931773">+43 / 1 / 493 17 73</a><br>
E-Mail: <a href="mailto:info@meineordi.at">info@meineordi.at</a>
</p>
</div>
<h3>Berufsbezeichnung und Berufsrecht</h3>
<p>
Berufsbezeichnung: <strong>Ärztin für Allgemeinmedizin</strong><br>
Verliehen in: Österreich<br>
Berufsrecht: Ärztegesetz 1998 (ÄrzteG 1998)
<a href="https://www.ris.bka.gv.at" target="_blank" rel="noopener">www.ris.bka.gv.at</a>
</p>
<h3>Aufsichtsbehörde / Kammer</h3>
<p>
Ärztekammer Wien<br>
Weihburggasse 1012, 1010 Wien<br>
<a href="https://www.aekwien.at" target="_blank" rel="noopener">www.aekwien.at</a>
</p>
<h3>Haftungsausschluss</h3>
<p>
Die Inhalte dieser Website wurden mit größtmöglicher Sorgfalt erstellt. Für die Richtigkeit,
Vollständigkeit und Aktualität der Inhalte wird jedoch keine Gewähr übernommen.
Diese Website enthält keine medizinischen Diagnosen oder Therapieempfehlungen.
Im Krankheitsfall wenden Sie sich bitte an eine Ärztin oder einen Arzt.
</p>
<h3>Urheberrecht</h3>
<p>
Die durch den Seitenbetreiber erstellten Inhalte und Werke auf dieser Website unterliegen
dem österreichischen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und
jede Art der Verwertung außerhalb der Grenzen des Urheberrechts bedürfen der schriftlichen
Zustimmung des jeweiligen Autors bzw. Erstellers.
</p>
</div>
</section>
<!-- ─── Datenschutz ───────────────────────────────────────── -->
<section id="datenschutz" class="alt">
<div class="section-inner legal-section">
<h2 class="section-title">Datenschutzerklärung</h2>
<p class="section-sub">Gemäß DSGVO (EU 2016/679) und DSG 2018</p>
<h3>Verantwortlicher</h3>
<div class="legal-box">
<p>
<strong>Dr. med. Carina Kautsch</strong><br>
Pfenninggeldgasse 1B/3, A-1160 Wien<br>
E-Mail: <a href="mailto:info@meineordi.at">info@meineordi.at</a><br>
Telefon: <a href="tel:+4314931773">+43 / 1 / 493 17 73</a>
</p>
</div>
<h3>Allgemeines zur Datenverarbeitung</h3>
<p>
Wir nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Diese Website erhebt und
verarbeitet personenbezogene Daten nur im technisch notwendigen Umfang und ausschließlich
auf Basis der geltenden Rechtsvorschriften (DSGVO, DSG 2018).
</p>
<h3>Server-Logfiles</h3>
<p>
Beim Aufruf dieser Website werden durch den Webserver automatisch folgende Daten
in sogenannten Server-Logfiles gespeichert:
</p>
<ul>
<li>IP-Adresse des anfragenden Geräts</li>
<li>Datum und Uhrzeit des Zugriffs</li>
<li>Name und URL der abgerufenen Datei</li>
<li>Browsertyp und -version, Betriebssystem</li>
<li>Referrer-URL (zuvor besuchte Seite)</li>
</ul>
<p>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse
an der Sicherheit und dem ordnungsgemäßen Betrieb der Website).<br>
<strong>Speicherdauer:</strong> Die Logfiles werden nach spätestens 30 Tagen gelöscht.
</p>
<h3>Kontaktaufnahme</h3>
<p>
Wenn Sie uns per Telefon oder E-Mail kontaktieren, werden Ihre übermittelten Daten
(Name, E-Mail-Adresse, Inhalt Ihrer Anfrage) zum Zweck der Bearbeitung Ihrer Anfrage
und für den Fall von Anschlussfragen gespeichert.<br>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. b DSGVO (Vertragsanbahnung bzw.
berechtigtes Interesse). Die Daten werden nach abschließender Bearbeitung gelöscht,
sofern keine gesetzliche Aufbewahrungspflicht besteht.
</p>
<h3>Google Maps</h3>
<p>
Diese Website verwendet Google Maps zur Darstellung einer interaktiven Karte.
Anbieter ist Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland.<br>
Bei Nutzung von Google Maps werden Daten (insbesondere Ihre IP-Adresse) an Google-Server
übertragen, die sich in den USA befinden können. Google ist unter dem EU-US Data Privacy
Framework zertifiziert.<br>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse
an einer benutzerfreundlichen Standortdarstellung).<br>
Weitere Informationen finden Sie in der Datenschutzerklärung von Google:
<a href="https://policies.google.com/privacy" target="_blank" rel="noopener">policies.google.com/privacy</a>
</p>
<h3>Lokaler Speicher (localStorage)</h3>
<p>
Diese Website speichert Ihre Schriftgrößen-Einstellung (normal/groß) im lokalen Speicher
(localStorage) Ihres Browsers. Dabei werden keine personenbezogenen Daten erfasst oder
an Server übertragen. Der Eintrag kann jederzeit über die Browser-Einstellungen gelöscht
werden. Es werden keine Cookies gesetzt.
</p>
<h3>Ihre Rechte</h3>
<p>Sie haben gemäß DSGVO folgende Rechte:</p>
<ul>
<li><strong>Auskunft</strong> (Art. 15 DSGVO) — Recht auf Auskunft über Ihre gespeicherten Daten</li>
<li><strong>Berichtigung</strong> (Art. 16 DSGVO) — Recht auf Korrektur unrichtiger Daten</li>
<li><strong>Löschung</strong> (Art. 17 DSGVO) — Recht auf Löschung Ihrer Daten</li>
<li><strong>Einschränkung</strong> (Art. 18 DSGVO) — Recht auf Einschränkung der Verarbeitung</li>
<li><strong>Widerspruch</strong> (Art. 21 DSGVO) — Recht auf Widerspruch gegen die Verarbeitung</li>
<li><strong>Datenübertragbarkeit</strong> (Art. 20 DSGVO) — Recht auf Erhalt Ihrer Daten in maschinenlesbarem Format</li>
</ul>
<p>
Zur Ausübung Ihrer Rechte wenden Sie sich bitte an:
<a href="mailto:info@meineordi.at">info@meineordi.at</a>
</p>
<h3>Beschwerderecht bei der Aufsichtsbehörde</h3>
<p>
Sie haben das Recht, eine Beschwerde bei der österreichischen Datenschutzbehörde einzureichen:<br>
<strong>Datenschutzbehörde</strong><br>
Barichgasse 4042, 1030 Wien<br>
Telefon: +43 1 52 152-0<br>
E-Mail: <a href="mailto:dsb@dsb.gv.at">dsb@dsb.gv.at</a><br>
<a href="https://www.dsb.gv.at" target="_blank" rel="noopener">www.dsb.gv.at</a>
</p>
<h3>Aktualität dieser Datenschutzerklärung</h3>
<p>
Diese Datenschutzerklärung ist aktuell gültig und hat den Stand März 2025.
Durch die Weiterentwicklung unserer Website kann eine Anpassung notwendig werden.
</p>
</div>
</section>
<!-- ─── Footer ────────────────────────────────────────────── -->
<footer>
<div class="footer-inner">
<img src="/logo.png" alt="meineOrdi" />
<p>
&copy; <span id="footer-year"></span> Dr. med. Carina Kautsch &nbsp;·&nbsp;
Ärztin für Allgemeinmedizin &nbsp;·&nbsp; 1160 Wien
</p>
<p style="font-size:13px;">
<a href="/impressum.html#impressum">Impressum</a> &nbsp;·&nbsp; <a href="/impressum.html#datenschutz">Datenschutz</a>
</p>
</div>
</footer>
<!-- ─── Scripts ───────────────────────────────────────────── -->
<script>
// Hamburger menu
const hamburger = document.getElementById('hamburger');
const mobileMenu = document.getElementById('mobile-menu');
hamburger.addEventListener('click', () => {
hamburger.classList.toggle('open');
mobileMenu.classList.toggle('open');
});
mobileMenu.querySelectorAll('a').forEach(a => {
a.addEventListener('click', () => {
hamburger.classList.remove('open');
mobileMenu.classList.remove('open');
});
});
// Footer year
document.getElementById('footer-year').textContent = new Date().getFullYear();
// Font size toggle
(function() {
const body = document.body;
const btnNorm = document.getElementById('font-normal');
const btnLrg = document.getElementById('font-large');
const btnNormM = document.getElementById('font-normal-mobile');
const btnLrgM = document.getElementById('font-large-mobile');
function setSize(large) {
body.classList.toggle('large-font', large);
btnNorm.classList.toggle('active', !large);
btnLrg.classList.toggle('active', large);
btnNormM.classList.toggle('active', !large);
btnLrgM.classList.toggle('active', large);
localStorage.setItem('fontSize', large ? 'large' : 'normal');
}
setSize(localStorage.getItem('fontSize') === 'large');
btnNorm.addEventListener('click', () => setSize(false));
btnLrg.addEventListener('click', () => setSize(true));
btnNormM.addEventListener('click', () => setSize(false));
btnLrgM.addEventListener('click', () => setSize(true));
})();
</script>
</body>
</html>

View File

@@ -415,36 +415,6 @@
footer a { color: #ccc; }
footer a:hover { color: #fff; }
/* ─── Impressum / Datenschutz ──────────────────────────── */
.legal-section h3 {
font-family: 'Cormorant Garamond', serif;
font-size: 1.4rem;
font-weight: 700;
color: var(--red);
margin: 32px 0 10px;
}
.legal-section h3:first-of-type { margin-top: 0; }
.legal-section p, .legal-section li {
font-size: 16px;
color: #444;
line-height: 1.7;
margin-bottom: 8px;
}
.legal-section ul {
padding-left: 20px;
margin-bottom: 12px;
}
.legal-section a { color: var(--red); text-decoration: underline; }
.legal-section .legal-box {
background: #fff;
border-radius: var(--radius);
border-left: 4px solid var(--red);
padding: 20px 24px;
margin-top: 8px;
}
body.large-font .legal-section p,
body.large-font .legal-section li { font-size: 18px; }
/* ─── Font Size Toggle ──────────────────────────────────── */
.font-toggle-wrap {
display: flex;
@@ -682,12 +652,12 @@ const SCHLIESSZEITEN = [
<div class="leistung-card">
<div class="leistung-icon">💊</div>
<div class="leistung-title">Rezepte & Überweisungen</div>
<div class="leistung-desc">Ausstellung von Rezepten, Überweisungen und ärztlichen Attesten.</div>
<div class="leistung-desc">Ausstellung von Rezepten und Überweisungen.</div>
</div>
<div class="leistung-card">
<div class="leistung-icon">🩸</div>
<div class="leistung-title">Laboruntersuchungen</div>
<div class="leistung-desc">Blutabnahme und Auswertung gängiger Laborparameter direkt in der Ordination.</div>
<div class="leistung-desc">Blutabnahme und Befundbesprechung in der Ordination.</div>
</div>
<div class="leistung-card">
<div class="leistung-icon">❤️</div>
@@ -789,165 +759,6 @@ const SCHLIESSZEITEN = [
</div>
</section>
<!-- ─── Impressum ────────────────────────────────────────── -->
<section id="impressum">
<div class="section-inner legal-section">
<h2 class="section-title">Impressum</h2>
<p class="section-sub">Angaben gemäß §5 ECG und §25 MedienG</p>
<h3>Diensteanbieter</h3>
<div class="legal-box">
<p>
<strong>Dr. med. Carina Kautsch</strong><br>
Ärztin für Allgemeinmedizin<br>
Pfenninggeldgasse 1B/3<br>
A-1160 Wien<br>
Österreich
</p>
<p>
Telefon: <a href="tel:+4314931773">+43 / 1 / 493 17 73</a><br>
E-Mail: <a href="mailto:info@meineordi.at">info@meineordi.at</a>
</p>
</div>
<h3>Berufsbezeichnung und Berufsrecht</h3>
<p>
Berufsbezeichnung: <strong>Ärztin für Allgemeinmedizin</strong><br>
Verliehen in: Österreich<br>
Berufsrecht: Ärztegesetz 1998 (ÄrzteG 1998)
<a href="https://www.ris.bka.gv.at" target="_blank" rel="noopener">www.ris.bka.gv.at</a>
</p>
<h3>Aufsichtsbehörde / Kammer</h3>
<p>
Ärztekammer Wien<br>
Weihburggasse 1012, 1010 Wien<br>
<a href="https://www.aekwien.at" target="_blank" rel="noopener">www.aekwien.at</a>
</p>
<h3>Haftungsausschluss</h3>
<p>
Die Inhalte dieser Website wurden mit größtmöglicher Sorgfalt erstellt. Für die Richtigkeit,
Vollständigkeit und Aktualität der Inhalte wird jedoch keine Gewähr übernommen.
Diese Website enthält keine medizinischen Diagnosen oder Therapieempfehlungen.
Im Krankheitsfall wenden Sie sich bitte an eine Ärztin oder einen Arzt.
</p>
<h3>Urheberrecht</h3>
<p>
Die durch den Seitenbetreiber erstellten Inhalte und Werke auf dieser Website unterliegen
dem österreichischen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und
jede Art der Verwertung außerhalb der Grenzen des Urheberrechts bedürfen der schriftlichen
Zustimmung des jeweiligen Autors bzw. Erstellers.
</p>
</div>
</section>
<!-- ─── Datenschutz ───────────────────────────────────────── -->
<section id="datenschutz" class="alt">
<div class="section-inner legal-section">
<h2 class="section-title">Datenschutzerklärung</h2>
<p class="section-sub">Gemäß DSGVO (EU 2016/679) und DSG 2018</p>
<h3>Verantwortlicher</h3>
<div class="legal-box">
<p>
<strong>Dr. med. Carina Kautsch</strong><br>
Pfenninggeldgasse 1B/3, A-1160 Wien<br>
E-Mail: <a href="mailto:info@meineordi.at">info@meineordi.at</a><br>
Telefon: <a href="tel:+4314931773">+43 / 1 / 493 17 73</a>
</p>
</div>
<h3>Allgemeines zur Datenverarbeitung</h3>
<p>
Wir nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Diese Website erhebt und
verarbeitet personenbezogene Daten nur im technisch notwendigen Umfang und ausschließlich
auf Basis der geltenden Rechtsvorschriften (DSGVO, DSG 2018).
</p>
<h3>Server-Logfiles</h3>
<p>
Beim Aufruf dieser Website werden durch den Webserver automatisch folgende Daten
in sogenannten Server-Logfiles gespeichert:
</p>
<ul>
<li>IP-Adresse des anfragenden Geräts</li>
<li>Datum und Uhrzeit des Zugriffs</li>
<li>Name und URL der abgerufenen Datei</li>
<li>Browsertyp und -version, Betriebssystem</li>
<li>Referrer-URL (zuvor besuchte Seite)</li>
</ul>
<p>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse
an der Sicherheit und dem ordnungsgemäßen Betrieb der Website).<br>
<strong>Speicherdauer:</strong> Die Logfiles werden nach spätestens 30 Tagen gelöscht.
</p>
<h3>Kontaktaufnahme</h3>
<p>
Wenn Sie uns per Telefon oder E-Mail kontaktieren, werden Ihre übermittelten Daten
(Name, E-Mail-Adresse, Inhalt Ihrer Anfrage) zum Zweck der Bearbeitung Ihrer Anfrage
und für den Fall von Anschlussfragen gespeichert.<br>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. b DSGVO (Vertragsanbahnung bzw.
berechtigtes Interesse). Die Daten werden nach abschließender Bearbeitung gelöscht,
sofern keine gesetzliche Aufbewahrungspflicht besteht.
</p>
<h3>Google Maps</h3>
<p>
Diese Website verwendet Google Maps zur Darstellung einer interaktiven Karte.
Anbieter ist Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland.<br>
Bei Nutzung von Google Maps werden Daten (insbesondere Ihre IP-Adresse) an Google-Server
übertragen, die sich in den USA befinden können. Google ist unter dem EU-US Data Privacy
Framework zertifiziert.<br>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse
an einer benutzerfreundlichen Standortdarstellung).<br>
Weitere Informationen finden Sie in der Datenschutzerklärung von Google:
<a href="https://policies.google.com/privacy" target="_blank" rel="noopener">policies.google.com/privacy</a>
</p>
<h3>Lokaler Speicher (localStorage)</h3>
<p>
Diese Website speichert Ihre Schriftgrößen-Einstellung (normal/groß) im lokalen Speicher
(localStorage) Ihres Browsers. Dabei werden keine personenbezogenen Daten erfasst oder
an Server übertragen. Der Eintrag kann jederzeit über die Browser-Einstellungen gelöscht
werden. Es werden keine Cookies gesetzt.
</p>
<h3>Ihre Rechte</h3>
<p>Sie haben gemäß DSGVO folgende Rechte:</p>
<ul>
<li><strong>Auskunft</strong> (Art. 15 DSGVO) — Recht auf Auskunft über Ihre gespeicherten Daten</li>
<li><strong>Berichtigung</strong> (Art. 16 DSGVO) — Recht auf Korrektur unrichtiger Daten</li>
<li><strong>Löschung</strong> (Art. 17 DSGVO) — Recht auf Löschung Ihrer Daten</li>
<li><strong>Einschränkung</strong> (Art. 18 DSGVO) — Recht auf Einschränkung der Verarbeitung</li>
<li><strong>Widerspruch</strong> (Art. 21 DSGVO) — Recht auf Widerspruch gegen die Verarbeitung</li>
<li><strong>Datenübertragbarkeit</strong> (Art. 20 DSGVO) — Recht auf Erhalt Ihrer Daten in maschinenlesbarem Format</li>
</ul>
<p>
Zur Ausübung Ihrer Rechte wenden Sie sich bitte an:
<a href="mailto:info@meineordi.at">info@meineordi.at</a>
</p>
<h3>Beschwerderecht bei der Aufsichtsbehörde</h3>
<p>
Sie haben das Recht, eine Beschwerde bei der österreichischen Datenschutzbehörde einzureichen:<br>
<strong>Datenschutzbehörde</strong><br>
Barichgasse 4042, 1030 Wien<br>
Telefon: +43 1 52 152-0<br>
E-Mail: <a href="mailto:dsb@dsb.gv.at">dsb@dsb.gv.at</a><br>
<a href="https://www.dsb.gv.at" target="_blank" rel="noopener">www.dsb.gv.at</a>
</p>
<h3>Aktualität dieser Datenschutzerklärung</h3>
<p>
Diese Datenschutzerklärung ist aktuell gültig und hat den Stand März 2025.
Durch die Weiterentwicklung unserer Website kann eine Anpassung notwendig werden.
</p>
</div>
</section>
<!-- ─── Footer ────────────────────────────────────────────── -->
<footer>
<div class="footer-inner">
@@ -957,7 +768,7 @@ const SCHLIESSZEITEN = [
Ärztin für Allgemeinmedizin &nbsp;·&nbsp; 1160 Wien
</p>
<p style="font-size:13px;">
<a href="#impressum">Impressum</a> &nbsp;·&nbsp; <a href="#datenschutz">Datenschutz</a>
<a href="/impressum.html">Impressum</a> &nbsp;·&nbsp; <a href="/impressum.html#datenschutz">Datenschutz</a>
</p>
</div>
</footer>
@@ -990,9 +801,33 @@ const SCHLIESSZEITEN = [
4: '13:00 17:00',
5: '09:00 12:00',
};
// Check if today falls within any defined closure period
function isClosureDay() {
const today = new Date();
today.setHours(0, 0, 0, 0);
for (const c of SCHLIESSZEITEN) {
// Parse date strings like "30.3." from "30.3. 3.4."
const parts = c.dates.split('');
if (parts.length !== 2) continue;
function parseDate(s) {
const p = s.trim().replace(/\.$/, '').split('.');
const d = parseInt(p[0]), m = parseInt(p[1]) - 1;
let start = new Date(today.getFullYear(), m, d);
return start;
}
const start = parseDate(parts[0]);
const end = parseDate(parts[1]);
// Handle year wrap (e.g. 28.12. 3.1.)
if (end < start) end.setFullYear(end.getFullYear() + 1);
if (today >= start && today <= end) return true;
}
return false;
}
const day = new Date().getDay(); // 0=Sun, 1=Mon, …
const el = document.getElementById('todays-hours');
el.textContent = hours[day] || 'Geschlossen';
el.textContent = isClosureDay() ? 'Geschlossen' : (hours[day] || 'Geschlossen');
})();
// Render closure cards