From 80659232bc9ea9cdc9c5cbbd73e41e90d69d3366 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sun, 11 Oct 2026 13:48:50 +0200 Subject: [PATCH] website: M3 part A - the controller's shell, and the home page inside it The direction the operator chose: the controller's FRAME around the website's own content. Staged at /preview/m3/, noindex, nothing live. website/assets/shell.css - 117 rules COPIED VERBATIM from felhom-controller style.css @ dcd89364a4 (sidebar, mobile top bar, off-canvas drawer, and the component atoms the restyled pages use: btn, alert, app-info-card, launch-*, stack-detail-card, form-*). Exactly ONE rule is not verbatim and says so: body.shell { display:flex; min-height:100vh }, which lives in the controller's base rather than in a component, scoped to .shell so other pages are untouched. The generator NAMES every rule it copies and REFUSES to write the file if one has disappeared upstream. That is not ceremony: it already caught two things this session. It refused because .sidebar::-webkit-scrollbar does not exist (only the -track override does), and because prefers-reduced-motion is split across FIVE separate blocks in the controller - reading only the first would have silently lost four rules. The M1 round lost a rule exactly this way. The bare `body { flex-direction: column }` that broke M1's phone layout is copied this time, by name, as are body.nav-open and the no-js/js pair. Load order is deliberate: shell.css AFTER site.css. Thirteen selectors exist in both files with different meanings (.nav-links, .page-header, .lang-globe*, .ico) - a horizontal site nav there, a vertical sidebar here. Later wins, and a page that does not load shell.css is completely unaffected. website/preview/m3/index.html - the home page in the shell. Content is /preview/'s cleaned text; body carries `shell page-index` so the existing .page-index content rules (caps, flow, vs, band, who-mini) are reused rather than duplicated. Six sections, left-aligned headers, the controller's cards. Head tags (title, meta description, canonical, hreflang) are already the FINAL values, so the switch in part D needs no head edit. Four changes from the operator's mockup, each with its reason in the generator: 1. the active item follows the page (the mockups show Inditopult active on all) 2. Teszteles is ALSO a primary button at the top of the lower group - it is the one action we want and the mockup buries it at the bottom 3. the Alkalmazasok categories are anchors on /alkalmazasok: real URLs, no JS-only state 4. ADDED GYIK. It is in today's nav; dropping it silently would take a page out of navigation, which is not a change a restyle gets to make. scripts/site_gates.py - gate 3 extended rather than duplicated, as asked: a SHELL set whose pages must carry an IDENTICAL