Skip to content

fix: add gap between footer contact links - #120

Merged
romahawk merged 1 commit into
mainfrom
fix/footer-contact-gap
Oct 14, 2026
Merged

romahawk merged 1 commit into
mainfrom
fix/footer-contact-gap

Conversation

@romahawk

@romahawk romahawk commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

What and why

In the footer's Contact column, the "Download CV" button and the email link touched each other with no space between them, on every page and at every width. This adds a gap.

No linked issue.

Changes

CSS (src/assets/css/footer.css)

  • .footer__cta-col becomes a wrapping flex row with gap: 12px 20px: 20px between the button and the email link, 12px between rows when they wrap. The "Contact" heading takes its own row
  • The email link's margin-top: 12px is removed (the gap replaces it). The heading's bottom margin in this column is 2px, so heading to button stays 14px, as in the other footer columns

Verification

  • npm run lint exits 0
  • npm run build exits 0 (this runs scripts/check-consistency.mjs first)
  • CI green on this PR (CI + Lighthouse CI)
  • Vercel preview opened and checked, not just localhost

Local check on vite preview with headless Edge, light theme, at 1366px and 390px: the button and email link sit side by side with a clear gap.

How to test

  1. Open the Vercel preview from the checks below
  2. Scroll to the footer on /, /services and /ai
  3. Contact column: there is space between "Download CV" and the email address, on desktop and on a phone
  4. Narrow the window until they wrap: the email link sits below the button with a small gap

Core loop: home → Work → a proof link → Contact (email copy, CV download) still works.

Not tested: real iOS Safari / Android Chrome, dark mode.

Quality gates

  • Mobile checked (iOS Safari or Android Chrome, or a 375px viewport): 390px emulation only
  • No console errors in the preview
  • Accessibility kept: landmarks, aria-label on icon-only controls, focus rings, prefers-reduced-motion
  • No new npm dependency, or the reason is given in Notes
  • Lucide icons use named imports and are registered in the component's ICONS map (no icon changes)
  • Redirects in vercel.json checked if a route was added, moved or removed (no route changes)

Docs

  • CHANGELOG.md updated under [Unreleased]
  • docs/ / CLAUDE.md updated if architecture, routing or scope changed (CSS only)

Screenshots

Taken locally, not attached.

Notes for review

Rebased onto main after #119 merged, so the Vercel preview also shows the new /ai. The CHANGELOG conflict is resolved: both entries are kept, with this one on top.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
portfolio-fullstack Ready Ready Preview Oct 14, 2026 4:29pm UTC
portfolio-react Ready Ready Preview Oct 14, 2026 4:29pm UTC

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch was successfully deployed

2 active deployments
Preview – portfolio-fullstack — b0ca345b Deployed Oct 14, 2026 by vercel[bot]
Preview – portfolio-react — b0ca345b Deployed Oct 14, 2026 by vercel[bot]
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