Commit Graph

7 Commits

Author SHA1 Message Date
admin 9b90a02bb4 website: the contact pages' header no longer slides under the sidebar
gates / gates (push) Successful in 8m20s
kapcsolat.html and en/contact.html keep their page header OUTSIDE <main>. Left
there, the converted header became a FLEX SIBLING of the sidebar: measured, it
took 401px and pushed .content from x=240 to x=642, so the header sat behind the
sidebar and the form rendered at two thirds width.

Anything before <main> now moves inside it. Checked structurally across all 19
pages rather than by looking at two: no page has stray top-level content, and
every .content starts at x=240 with the full 1185px column.

Found by measuring where elements actually sit, after a screenshot looked wrong -
the same check also confirmed the two elements at x=-9999 on those pages are the
form's intentional spam honeypot, not a layout fault.
2026-10-11 14:21:24 +02:00
admin f6044dc0a7 website: long checksums and URLs no longer scroll a phone sideways
gates / gates (push) Successful in 8m15s
Measured at 390px on the LIVE pages, so this is pre-existing and not something the
shell introduced:
  /letoltes    scrollWidth 609 - the 64-character SHA-256 inside <code>
  /adatkezeles scrollWidth 478 - a long facebook.com legal URL used as link text
and the same on their English twins.

overflow-wrap: anywhere changes only where the line breaks; selecting and copying
still yields the whole unbroken string, which matters for a checksum. The legal
pages' words are untouched - this is CSS.

Small enough to fix in the session rather than file.
2026-10-11 14:16:59 +02:00
admin 0b34be8449 website: M3 part C - all 18 remaining pages moved into the shell
gates / gates (push) Successful in 8m50s
Staged under /preview/m3/. Nothing live. 19 shell pages in total with the home.

Each page keeps its own <head> byte-for-byte apart from two additions (shell.css
and the no-js/js hook), so title, meta description, canonical, hreflang, Open Graph
and JSON-LD all survive the move untouched. The body loses the website's
<nav>/<footer> and the old hamburger script, and gains the shell.

PROVED, not assumed - a word-level diff of every page's visible text, live vs
shell, with the nav and footer removed from both:
  * 18 of 18 pages: visible text IDENTICAL after the one allowed substitution
  * adatkezeles and feltetelek: identical with NO substitution permitted at all.
    The legal texts are reviewed documents; the frame changed, the words did not.

That check earned itself immediately. The first version of the page-header
transform rebuilt the block from its <h1> and first <p> and SILENTLY DROPPED the
rest: the "Fontos tudnivalok" / "Good to know" disclaimer banner on both apps
pages and the 404's English line - 168 words across three pages. Nothing looked
wrong on the page. The diff found it.

Em dashes: 318 replaced with the Hungarian gondolatjel across 16 pages (gyik and
en/faq 104 each). The FAQ pages' JSON-LD is swept with the SAME substitution, so
gate 17's equality with the visible answers still holds - it does, on both.

scripts/site_gates.py:
  * SHELL now holds all 19 pages.
  * is_en(): a page is English if it is a TWINS value OR lives under an en/
    directory. Without the second half the dash-language, <html lang> and
    no-Hungarian gates all judged preview/m3/en/* as Hungarian - 30 false fails.
  * norm_block() also drops `is-open` and `aria-expanded`, because the shell
    renders the nav group containing the active page open, exactly as the
    controller does, and that legitimately differs per page.

The last change LOOSENS a check, so it was red-proofed BOTH ways: a one-character
difference in one menu label still convicts, and a state-only difference (the
active marker moving to another item) correctly does not.

One generator now owns the shell. The home page's content comes from m3.py and its
shell from the same function every other page uses, so the two cannot drift - which
they already had, and gate 3b caught it.
2026-10-11 14:14:37 +02:00
admin 11242c5110 website: AA on the shell's copied button and group label
gates / gates (push) Successful in 6m58s
Measured on the deployed M3 page: .btn-primary 4.01:1 (white on --blue, 13.6px/600)
and .nav-group-label 3.14:1 (--text-3), both under the 4.5 floor.

This is R-930 arriving a second time by a different route: fixing .cta-button on
the website did not fix the CONTROLLER's button, and the shell imports it. Same
remedy the operator already chose - 1.2rem/700 puts the label in WCAG's large-text
band where 3:1 applies - so --blue stays untouched.

The sidebar's own CTA becomes an OUTLINE button rather than a filled one: blue on
transparent passes comfortably, and a 19.2px filled button does not fit a 240px
sidebar without wrapping. Measured both ways rather than guessed.

The controller has both defects on its own surface. Not fixed here - that repo is
read-only this session - so it is going to the register.
2026-10-11 13:58:07 +02:00
admin cada79e990 website: M3 home page has one heading, not two
gates / gates (push) Successful in 7m21s
The page header and the hero both carried a title, which read as two headings
stacked. The brief's shape is one: .page-header holds the h1 - and it holds
today's indexed headline, 'Sajat felhod, sajat szabalyaid', unchanged - and the
hero row below is the lede sentence plus the button beside the dashboard window.
2026-10-11 13:52:48 +02:00
admin 71df90f9fc website: neutralise the six declarations that leak into the shell
gates / gates (push) Successful in 7m3s
shell.css loads after site.css, but later-wins is per PROPERTY, not per rule.
Where site.css declares something the controller's rule does not, the website's
value survives inside the shell. Measured: exactly six declarations, three
selectors, and the first one was visibly broken on the deployed page -

  .nav-links        display:flex + gap:32px -> the sidebar menu rendered as a
                    HORIZONTAL row spilling across the content column
  .lang-globe-menu  top + right -> fought the controller's bottom/left
  .page-header      padding + text-align -> the website's centred subpage header
                    fought the controller's left-aligned flex row

Reset in site.css, the website's own file, so shell.css stays a verbatim copy.
Found by diffing the two files' declaration sets per selector rather than by
spotting the one that happened to be visible.
2026-10-11 13:51:23 +02:00
admin 80659232bc website: M3 part A - the controller's shell, and the home page inside it
gates / gates (push) Successful in 6m58s
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 <nav class="sidebar"> after the active
  marker is normalised. RED-PROOFED: a one-character change to one menu label on a
  second shell page convicts. It also prints "DIFFER" rather than a reassuring
  "identical" count when it fails - a false reassurance printed beside a conviction
  is the exact defect this repo files rows about.

documentation/design/design-system.md - new "Shell" section: what is shared (tokens
  + shell + atoms), what each side owns, how a change flows (controller first, the
  website's copy the same week), and that the cross-repo gate is deliberately NOT
  built yet.
2026-10-11 13:48:50 +02:00