# 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 ``, 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=...`).