Measured at 390px: the sidebar stayed an in-flow flex child and squeezed the
content column to ~208px, so the launcher grid collapsed to ONE column and the
front page became 15 597px tall on a phone; the contact page overflowed
horizontally (scrollWidth 467 in a 375 viewport).
The cause was not missing CSS - the controller's off-canvas rules were all copied.
They are gated on a 'js' class that layout.html sets in an inline head script and
the mockup shell did not. Copied that hook verbatim, so the drawer engages only
where the drawer script can open it, and the no-js path (sidebar static and full
width, burger hidden) is the controller's own.
Design studies only. Nothing live changes, nothing is linked from a live page, both
carry noindex and /preview/ is already Disallow-ed in robots.txt. felhom-controller
was read ONLY (baseline dcd89364a4); nothing in it was touched.
M1 website/preview/m1/ - the website wearing the controller's shell
index (Indítópult) welcome card + all 58 launcher tiles
alkalmazasok the catalog in the site's own five buckets, vanilla search
mentesek the three backup levels, every number marked "minta"
hogyan / teszteles / kapcsolat today's copy inside the dashboard shell
M2 website/preview/m2/ - short hero beside a window holding a clickable launcher
Real data, not invented:
* 58 apps from app-catalog-felhom.eu @ 8ea72aa: real names, logos, Hungarian
taglines, use cases and first steps out of each .felhom.yml app_info.
* Tile colours reproduce the controller's OWN tileColor (funcmap.go): FNV-1a 32
of the slug -> hue, 45% 38%. No brand_color exists in the catalog, so every
tile here is the colour a real launcher would paint.
* Page copy is today's live website only.
* Category labels are the five buckets alkalmazasok.html already uses. None invented.
The 58 is now measured, not quoted: 60 templates minus plant-it (abandoned) and
wger (hidden) = 58 offered, which is exactly what the site's prose says. See the
R-929 note in the audit folder.
Mockup rules honoured:
* No value pretends to be live - every sample wears a "minta" badge.
* No control does nothing: the disabled sidebar entries (Tárhely, Megosztás,
Rendszermonitor, Beállítások) say "a saját dobozodon működik" rather than
404-ing, and the contact form's submit is disabled with the same kind of hint.
The consent text is the live one, unchanged.
* App panels open with :target, so they work with JavaScript switched OFF and
their text is real HTML a crawler can read - not JS-built content.
* No login form anywhere. No external request, no AI or stock image.
CSS: website/preview/mockup.css is three labelled blocks so the shared-design
report can count them - adapted base (font URLs repointed /static -> /assets),
188 rules copied VERBATIM from the controller, and the mockup-only rules. The
burger is the website's own three-span control, copied rather than hand-rolling an
SVG: the shared sprite carries no i-menu.
scripts/site_gates.py gains a MOCKUPS set, with the reasoning in a comment. The
mockups keep every correctness check (BOM, emoji, banned strings and CDN hosts, no
<style>, cache-busting, <html lang>, clean tail, dashboard-picture language, the
picture-viewer rules) and are excluded from exactly the three chrome-consistency
checks a dashboard-shell study must fail by construction: nav/footer identical to
index.html, the NO_TWIN language globe, and analytics - the last deliberately, so a
hidden mockup cannot pollute the real stats. Delete the set with the directories.
site_gates.py green.