Skip to content

fix: unify field geometry across desktop and mobile - #35

Merged
axisrow merged 1 commit into
mainfrom
ao/axisrow.github.io-25/fix/unified-field-geometry
Aug 13, 2026
Merged

fix: unify field geometry across desktop and mobile#35
axisrow merged 1 commit into
mainfrom
ao/axisrow.github.io-25/fix/unified-field-geometry

Conversation

@axisrow

@axisrow axisrow commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Closes #34

Проблема

.experience-field и .about-field были единственными блоками с собственной геометрией: ширина 1340px вместо 1440px плюс горизонтальный сдвиг ±min(4vw, …). Измерено на 1512px:

Блок x right w
stars / projects / proof / contact 36 1476 1440
experience-field 26 1366 1340
about-field 146 1486 1340

Отсюда «поля заполняются не до конца» на третьем скриншоте issue: experience не доходит до правого края, about — до левого.

На мобильном та же тройка (experience/about/contact-field) вычитала 24px поверх гуттера, который .section уже применяет, и вставала на 36px от края, тогда как копи-панели внутри full-bleed полей оставались на 24px, а hero использовал 20px. Три разных отступа — то самое «у каждого свой шаблон».

Что сделано

  • experience/about получили ту же full-bleed геометрию, что и остальные поля; акцент остаётся в градиенте, а не в позиции блока
  • Удалён медиазапрос 981–1364px и правило в 721–980px — оба существовали только чтобы гасить сдвиг
  • Мобильные отступы нормализованы к единому гуттеру 24px (включая hero)

Проверка

Геометрия замерена headless-Chrome на 1512 / 1280 / 1024 / 820 / 390px — все блоки делят одну пару краёв. Визуально проверены experience, contact и карточки проектов на мобильном: канвас-эффекты и градиенты не затронуты.

  • npm test — 36/36 ✅
  • python3 -m unittest discover -s profile/tests — 42/42 ✅

Версия styles.css?v= забамплена, как требует CLAUDE.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH

`.experience-field` and `.about-field` carried their own width (1340px vs
1440px) and a ±4vw horizontal offset, so at 1512px they landed at
x=26/right=1366 and x=146/right=1486 while stars, projects, proof and
contact all sat at x=36/right=1476. The panels visibly failed to reach
the edge the other blocks reached.

Give both the same full-bleed geometry as every other field and keep the
accent in the gradient instead of the box position. The 981–1364px media
query only existed to cancel the offset, so it goes too.

On mobile the same three blocks subtracted 24px on top of the 24px gutter
`.section` already applies, landing 36px off the edge while the copy
panels inside the full-bleed fields stayed at 24px; the hero used 20px.
Normalise all of them to one 24px gutter.

Measured at 1512/1280/1024/820/390px: every block now shares one pair of
edges. npm test (36) and profile generators (42) pass.

Closes #34

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH
@axisrow

axisrow commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

🔍 Local review (cycle 1) — round 0a9a8fce-8a45-493b-a502-dba7b36631b1

Reviewed locally (/review + Codex companion), no bots pinged.

Verdict Reviewer Finding Location
claude No critical issues found in the CSS geometry diff
codex No bug, security, data-loss, performance, or logic risk supported by the diff

Both reviewers returned a clean verdict on this round — no FIX items.

@axisrow

axisrow commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

📋 Review summary — all cycles

Cycle Reviewer Finding Verdict Resolution
1 claude No critical issues in the CSS geometry unification diff Clean, no action needed
1 codex No bug, security, data-loss, performance, or logic risk found Clean, no action needed

Totals: 0 FIX, 0 SKIP, 0 UNVERIFIED. Both configured local reviewers approved on round 1.

@axisrow
axisrow merged commit be22fac into main Aug 13, 2026
1 check passed
@axisrow
axisrow deleted the ao/axisrow.github.io-25/fix/unified-field-geometry branch August 13, 2026 04:11
axisrow added a commit that referenced this pull request Aug 13, 2026
The task was to widen the fields. The two follow-up commits went past that
into the contact section -- stretching .contact-card to the field box, then
reworking the copperBars layer and the card fill to compensate -- and broke
a composition that was fine to begin with.

Reset styles.css and index.html to their pre-#35 state and reapply only the
original change: .experience-field/.about-field move from a 1340px box with
per-panel offsets to the min(1440px, 100vw - 24px) box every other field
already uses. The two media blocks that existed solely to cancel those
offsets go with them.

The contact section is untouched: the card keeps its width and offset, and
the copper bars keep showing in the gap beside it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH
axisrow added a commit that referenced this pull request Aug 13, 2026
* fix: align contact card edges with the other field panels

The previous commit unified the outer field geometry, but contact stayed
visually off: it is the only field holding a separately positioned card
(width: min(940px, 82%) + margin-left: 4%), which left ~285px of dead
space on its right at 1440px.

Give .contact-card the field's full content box and drop the field's own
clamp() padding so the card border sits on the field edge, exactly like
the experience/about panels. The mobile overrides that hand-reset these
values are now redundant with the base rules and are removed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH

* fix: let the copper bars show through the contact card

Widening the card to the full field box covered the copperBars canvas
entirely: the bars used to be visible only in the dead space the narrow
card left on its right, so removing that gap removed the effect.

Fade the card background towards the bottom-right instead of filling it
with an opaque --veil, matching how the experience/about panels expose
their own canvases. The gradient targets the same focus point as the
visual's mask (78% 72%), so the bars read across the panel while the
copy side keeps a near-opaque backing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH

* revert: undo the contact-section rework, keep only the field widening

The task was to widen the fields. The two follow-up commits went past that
into the contact section -- stretching .contact-card to the field box, then
reworking the copperBars layer and the card fill to compensate -- and broke
a composition that was fine to begin with.

Reset styles.css and index.html to their pre-#35 state and reapply only the
original change: .experience-field/.about-field move from a 1340px box with
per-panel offsets to the min(1440px, 100vw - 24px) box every other field
already uses. The two media blocks that existed solely to cancel those
offsets go with them.

The contact section is untouched: the card keeps its width and offset, and
the copper bars keep showing in the gap beside it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH

* fix: restore the starfield canvas the bot sync dropped

The 2026-08-13 sync regenerated the PROFILE:STARS block from a stale copy
of the template and removed .stars-field-visual along with the starfield
canvas, so main now renders six accents instead of seven. Merging main
into this branch pulled that deletion in and turned the smoke test red.

Put the three lines back, byte-identical to
profile/sync/templates/stars.html.j2, which still carries them. This is
exactly the drift the 'starfield canvas lives in the bot-managed template'
test exists to catch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH

* feat: run every field edge to edge

The fields carried a 12px side gutter (min(1440px, 100vw - 24px)) that read
as a margin around each panel. Drop the cap so all six -- stars, projects,
proof, experience, about, contact -- span the full viewport width.

With no page showing beside them, the vertical borders and corner radius on
experience/about no longer read as a panel edge, so those become border-block
like contact already was. Mobile loses its own calc(100% - 24px) gutter for
the same reason.

html already carries overflow-x: clip, so 100vw does not introduce sideways
scrolling. Measured at a 1440px viewport: every field is L=0 R=1440 W=1440,
document scrollWidth stays 1440.

The smoke test pinned the old max-width formula; it now pins width: 100vw.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH

* fix: cap experience/about content width and drop stray borders

The edge-to-edge rewrite widened .experience-field/.about-field to
100vw without an inner max-width, so timeline/about content stretched
past the site's normal content column on wide viewports. Both panels
also kept veil-panel's border-inline/border-radius since border-block
never cleared them, contradicting the edge-to-edge design intent.

- Cap horizontal padding at max(--panel-space, half the max-width
  gutter), matching the pattern .projects-field already uses.
- Explicitly reset border/border-radius before re-adding border-block.
- Drop the now-dead mobile override that duplicated the unconditional
  base rule.
- Bump styles.css?v=edge-to-edge-fields-2.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0197KCvwKXu9TZh3Ry8RBerH

---------

Co-authored-by: axisrow <axisrow@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Унифицировать отображение блоков на декстопе и мобильном

1 participant