# The other pages, in order, with what each needs Written 2026-10-11 at the end of the home-page redesign session. The home page's new design is **staged at `/preview/` and not live** — the operator chose to sit with it. Nothing below should start before that decision, because every page inherits whatever the home page settles. ## What already reached every page in this session Two things were approved at STOP 3 and are **live on all 18 public pages now**: - The shared footer's em dash became the correct spaced en dash. - `.cta-button` is 1.2rem/700, which puts it in WCAG's large-text band and clears the 3:1 floor (R-930). Verified one line and no overflow on every page at 390 px and at 1440 px. Neither is page-specific work, and neither needs repeating below. ## The measured backlog this session uncovered **300 em dashes remain in the bodies of the other 19 pages.** The preview is the only page at zero. Per page, counted 2026-10-11: | Page | `—` in body | Twin | `—` in twin | |---|---|---|---| | `gyik.html` | **53** | `en/faq.html` | **53** | | `adatkezeles.html` | **33** | none (Hungarian only, R-813) | — | | `szolgaltatasok-nonpublic.html` | 27 | none (hidden) | — | | `teszteles.html` | 23 | `en/testing.html` | 24 | | `index.html` | 17 | `en/index.html` | 19 | | `technologiak.html` | 8 | `en/technology.html` | 8 | | `feltetelek.html` | 7 | none (Hungarian only) | — | | `biztonsagimentes.html` | 5 | `en/backups.html` | 5 | | `kapcsolat.html` | 5 | `en/contact.html` | 6 | | `alkalmazasok.html` | 3 | `en/apps.html` | 1 | | `letoltes.html` | 1 | `en/download.html` | 2 | A dash sweep is **not** a mechanical find-and-replace. In Hungarian the gondolatjel is a spaced en dash, but most of these want a colon, a comma or a full stop instead, and `felhom-web-design` §4 rations the en dash to one per paragraph. Each one is a sentence-level decision. --- ## The order, and why ### 1. `/teszteles` + `/en/testing` — do these first The destination of every call to action on the site, and the newest page, so the least likely to need structural change. - **Needs:** the dash sweep (23 + 24). A read against the home page's new voice once that is settled. - **Watch:** it was styled in `69035f4af5` by joining the `.page-technologiak` scope, and it carries justified body copy that no other page uses. Do not "tidy" that into the shared rules without checking both pages. ### 2. `/gyik` + `/en/faq` — the biggest content win and the biggest trap 106 dashes between them, 41 questions each. - **Needs:** the dash sweep, and the long-list treatment the home page just got. 41 questions in one flat list is the same defect as the home page's ten equal cards. - **The trap, stated plainly:** `site_gates.py` gate 17 requires the `FAQPage` JSON-LD to equal the **visible** questions and answers exactly. Every copy edit is therefore a **two-place edit**, and the gate will catch a half-done one. Budget for that. ### 3. `/technologiak` + `/en/technology` — the worst remaining marketing language - **Needs:** „Ipari szintű megoldások, otthoni környezetben" and „Professzionális Technológiák" are the exact phrasing the home page just removed. Replace with what the box actually runs. - **Note:** the home page's new band already links here and names Docker, Proxmox, the three backup tiers and the tunnel. Keep the two consistent. ### 4. `/alkalmazasok` + `/en/apps` — blocked on a number - **Needs:** only 4 dashes, so the copy work is small. - **Blocked on R-929:** the prose says **58**, the page renders **59** cards, the catalog holds **60** templates. The home page's new band says 58, matching every other prose claim on the site. **Do not touch any app count until R-929 is settled**, or the site will disagree with itself in a new place. ### 5. `/biztonsagimentes` + `/en/backups` - **Needs:** 10 dashes. The 3-2-1 figure on the home page moved off the mono font (R-6b); check whether this page uses the same pattern and should follow. ### 6. `/kapcsolat` + `/en/contact` - **Needs:** 11 dashes. **Do not touch the form's field names, order or endpoint** — the analytics and the `?tema=` preselect depend on them, and taste-skill §11.F puts form fields behind an explicit approval anyway. ### 7. `/letoltes` + `/en/download` — smallest, 3 dashes - **Watch:** `site_gates.py` checks the two download pages agree on the ISO file name and its sha. A copy edit must not disturb those strings. ### 8. `/adatkezeles` and `/feltetelek` — legal, text frozen 33 and 7 dashes, and **the task that created this plan explicitly excluded their text**. These are reviewed legal documents with dated records in `documentation/legal/`. A dash sweep here is a change to a legal text and needs the operator's word, separately. Layout and typography may be improved without touching a word. ### 9. `/404.html` and `/szolgaltatasok-nonpublic` — last Neither is in the conversion path. `404.html` has no twin by design; the prices page is hidden and stays Hungarian. --- ## Two things that will pay more than any page 1. **R-931 — nothing on felhom.eu is compressed.** `site.css` ships as 94 310 raw bytes with no `Content-Encoding`, even when gzip is offered. Roughly a fifth of that with gzip, on **every** page. It is an nginx setting in `manifests/webpage.yaml`. This is worth more than the whole redesign and it is one config block. 2. **The shared stylesheet is now 94 KB and only ever grows.** This session added ~7 KB and every page pays it uncompressed. Before the next page lands, it is worth asking whether the retired home-page classes (`.why-grid`, `.problem-grid`, `.service-list`, `.apps-showcase`, `.process-steps`, `.step-number`, the `float` keyframe) can be deleted — but **only after the switch**, because until then `index.html` still uses every one of them. ## The method that worked, so nobody re-derives it `resize_window` does not move `window.innerWidth` on this workstation and DevTools device mode cannot be driven from the extension. Render the page in a **same-origin iframe** at the width you want and screenshot that rectangle: the media queries fire on the iframe's width. Two positive observables prove it is the real mobile layout rather than a squeezed desktop one — the hamburger computes to `display: block`, and `clientWidth == scrollWidth`. In a **background** tab the lazy-load observer never fires, so set `loading = 'eager'` and re-assign `src` before measuring or capturing, or you will photograph a page of empty image boxes. Recorded in `felhom-web-design` §10.