diff --git a/package.json b/package.json index 00653a4..048866e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mifi-ventures-landing", - "version": "4.0.1", + "version": "4.0.2", "private": true, "repository": "https://git.mifi.dev/mifi-ventures/landing.git", "packageManager": "pnpm@10.31.0+sha512.e3927388bfaa8078ceb79b748ffc1e8274e84d75163e67bc22e06c0d3aed43dd153151cbf11d7f8301ff4acb98c68bdc5cadf6989532801ffafe3b3e4a63c268", @@ -12,11 +12,11 @@ "dev": "vite dev", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "format": "prettier --write \"src/**/*.{ts,js,svelte,css,json}\"", + "format": "prettier --write \"src/**/*.{ts,js,svelte,css,json}\" \"static/**/*.{css,html,js}\"", "lint": "eslint .", "lint:fix": "eslint . --fix", - "lint:css": "stylelint \"src/**/*.css\" \"src/**/*.svelte\"", - "lint:css:fix": "stylelint \"src/**/*.css\" \"src/**/*.svelte\" --fix", + "lint:css": "stylelint \"src/**/*.css\" \"src/**/*.svelte\" \"static/**/*.css\"", + "lint:css:fix": "stylelint \"src/**/*.css\" \"src/**/*.svelte\" \"static/**/*.css\" --fix", "preview": "serve dist -p 4173", "test": "vitest run", "test:unit": "vitest run", diff --git a/src/app.css b/src/app.css index b844881..642084f 100644 --- a/src/app.css +++ b/src/app.css @@ -131,6 +131,42 @@ } } +/* ======================================== + Local Font Faces + ======================================== */ + +@font-face { + font-family: Inter; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('/assets/fonts/inter-v20-latin-regular.woff2') format('woff2'); +} + +@font-face { + font-family: Inter; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url('/assets/fonts/inter-v20-latin-500.woff2') format('woff2'); +} + +@font-face { + font-family: Inter; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('/assets/fonts/inter-v20-latin-700.woff2') format('woff2'); +} + +@font-face { + font-family: Fraunces; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('/assets/fonts/fraunces-v38-latin-600.woff2') format('woff2'); +} + /* ======================================== Base Styles ======================================== */ @@ -178,6 +214,11 @@ body { text-rendering: optimizeLegibility; } +strong, +b { + font-weight: var(--font-weight-bold); +} + /* ======================================== Skip Link (Accessibility) ======================================== */ diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 34f2065..5267c94 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -47,13 +47,6 @@ type="font/woff2" crossorigin="anonymous" /> - - - {section.heading} {#each section.body as para}

- {#if section.id === 'contact' && para === 'legal@mifi.ventures'} + {#if section.id === 'contact' && para === 'mifi Ventures LLC'} + {para} + {:else if section.id === 'contact' && para === 'legal@mifi.ventures'} legal@mifi.ventures diff --git a/src/routes/terms-of-service/+page.svelte b/src/routes/terms-of-service/+page.svelte index 986660a..bfc49ee 100644 --- a/src/routes/terms-of-service/+page.svelte +++ b/src/routes/terms-of-service/+page.svelte @@ -28,7 +28,9 @@

{section.heading}

{#each section.body as para}

- {#if section.id === 'contact' && para === 'legal@mifi.ventures'} + {#if section.id === 'contact' && para === 'mifi Ventures LLC'} + {para} + {:else if section.id === 'contact' && para === 'legal@mifi.ventures'} legal@mifi.ventures diff --git a/static/404.html b/static/404.html index a815eb5..c296c96 100644 --- a/static/404.html +++ b/static/404.html @@ -1,20 +1,24 @@ - + - - - - 404 Not Found — mifi Ventures - - - - - - -

- -

404 Not Found

-

This page went off to find itself. We’re not sure it’s coming back.

-

Back to mifi Ventures →

-
- + + + + 404 Not Found — mifi Ventures + + + + + + +
+ +

404 Not Found

+

This page went off to find itself. We’re not sure it’s coming back.

+

Back to mifi Ventures →

+
+ diff --git a/static/410.html b/static/410.html index fa2db08..afff3fe 100644 --- a/static/410.html +++ b/static/410.html @@ -1,20 +1,24 @@ - + - - - - 410 Gone — mifi Ventures - - - - - - -
- -

410 Gone

-

This page has left the building. We’ve moved on—and so should you.

-

Back to mifi Ventures →

-
- + + + + 410 Gone — mifi Ventures + + + + + + +
+ +

410 Gone

+

This page has left the building. We’ve moved on—and so should you.

+

Back to mifi Ventures →

+
+ diff --git a/static/assets/error-pages.css b/static/assets/error-pages.css index 4251131..a9de8ff 100644 --- a/static/assets/error-pages.css +++ b/static/assets/error-pages.css @@ -32,22 +32,33 @@ } /* Local fonts — same paths as +layout.svelte preloads */ + @font-face { - font-family: 'Inter'; + font-family: Inter; font-style: normal; font-weight: 400; font-display: swap; src: url('/assets/fonts/inter-v20-latin-regular.woff2') format('woff2'); } + @font-face { - font-family: 'Inter'; + font-family: Inter; font-style: normal; font-weight: 500; font-display: swap; src: url('/assets/fonts/inter-v20-latin-500.woff2') format('woff2'); } + @font-face { - font-family: 'Fraunces'; + font-family: Inter; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('/assets/fonts/inter-v20-latin-700.woff2') format('woff2'); +} + +@font-face { + font-family: Fraunces; font-style: normal; font-weight: 600; font-display: swap; @@ -67,15 +78,18 @@ color: var(--ep-text); background-color: var(--ep-bg-alt); } + .error-page main { text-align: center; padding: 2rem 1.5rem; max-width: 28rem; } + .error-page .emoji { font-size: 4rem; margin-bottom: 0.5rem; } + .error-page h1 { font-family: var(--ep-font-heading); font-size: 2rem; @@ -83,19 +97,23 @@ margin: 0 0 0.75rem; color: var(--ep-text); } + .error-page p { margin: 0 0 1.5rem; color: var(--ep-text-secondary); } + .error-page a { color: var(--ep-primary); font-weight: 500; text-decoration: none; } + .error-page a:hover { color: var(--ep-primary-hover); text-decoration: underline; } + .error-page a:focus-visible { outline: 2px solid var(--ep-primary); outline-offset: 2px; diff --git a/static/assets/js/cookie-consent.js b/static/assets/js/cookie-consent.js index 0908572..32e11a0 100644 --- a/static/assets/js/cookie-consent.js +++ b/static/assets/js/cookie-consent.js @@ -69,10 +69,7 @@ try { var clarityScript = document.createElement('script'); clarityScript.defer = true; - setScriptSrc( - clarityScript, - 'https://www.clarity.ms/tag/vuo5q3yf79?ref=bwt', - ); + setScriptSrc(clarityScript, 'https://www.clarity.ms/tag/vuo5q3yf79?ref=bwt'); document.head.appendChild(clarityScript); } catch (e2) { console.error('Failed to load Microsoft Clarity', e2); @@ -142,4 +139,3 @@ init(); } })(); - diff --git a/static/assets/js/copyright-year.js b/static/assets/js/copyright-year.js index 23eead6..f0561ad 100644 --- a/static/assets/js/copyright-year.js +++ b/static/assets/js/copyright-year.js @@ -1,5 +1,5 @@ (function () { - 'use strict'; - var el = document.getElementById('copyright-year'); - if (el) el.textContent = new Date().getFullYear(); + 'use strict'; + var el = document.getElementById('copyright-year'); + if (el) el.textContent = new Date().getFullYear(); })(); diff --git a/static/assets/js/ga-init.js b/static/assets/js/ga-init.js index 5e66bd2..108454a 100644 --- a/static/assets/js/ga-init.js +++ b/static/assets/js/ga-init.js @@ -1,8 +1,10 @@ window.dataLayer = window.dataLayer || []; -function gtag(){ window.dataLayer.push(arguments); } +function gtag() { + window.dataLayer.push(arguments); +} -gtag("js", new Date()); -gtag("config", "G-36F29PDKRT", { +gtag('js', new Date()); +gtag('config', 'G-36F29PDKRT', { // optional, but often helpful: anonymize_ip: true, }); diff --git a/static/assets/js/mobile-menu-helper.js b/static/assets/js/mobile-menu-helper.js index b9c0ff9..4f3d03d 100644 --- a/static/assets/js/mobile-menu-helper.js +++ b/static/assets/js/mobile-menu-helper.js @@ -1,8 +1,7 @@ const MOBILE_BREAKPOINT_PX = 768; /** All focusable elements inside the menu (links). */ -const getMenuFocusables = (menu) => - menu.querySelectorAll('a[href]'); +const getMenuFocusables = (menu) => menu.querySelectorAll('a[href]'); const mobileMenuHelper = () => { const mobileMenu = document.getElementById('nav-menu'); @@ -15,10 +14,7 @@ const mobileMenuHelper = () => { const syncMenuAriaHidden = () => { if (isMobile()) { const hidden = !mobileMenuToggle.checked; - mobileMenu.setAttribute( - 'aria-hidden', - hidden ? 'true' : 'false', - ); + mobileMenu.setAttribute('aria-hidden', hidden ? 'true' : 'false'); // inert removes the subtree from the a11y tree and makes descendants non-focusable if (hidden) { mobileMenu.setAttribute('inert', ''); diff --git a/static/assets/js/umami-helper.js b/static/assets/js/umami-helper.js index 17c9f14..80c64a1 100644 --- a/static/assets/js/umami-helper.js +++ b/static/assets/js/umami-helper.js @@ -1,9 +1,6 @@ // Umami: safe track (no-op if script blocked or not loaded) function umamiTrack(name, data) { - if ( - typeof window.umami !== 'undefined' && - typeof window.umami.track === 'function' - ) { + if (typeof window.umami !== 'undefined' && typeof window.umami.track === 'function') { if (data != null) window.umami.track(name, data); else window.umami.track(name); } diff --git a/tests/unit/cookie-consent.test.ts b/tests/unit/cookie-consent.test.ts index 7c0d678..8a5e0c5 100644 --- a/tests/unit/cookie-consent.test.ts +++ b/tests/unit/cookie-consent.test.ts @@ -39,7 +39,6 @@ describe('cookie-consent.js', () => { dom = createBannerDOM(); const code = readFileSync(SCRIPT_PATH, 'utf8'); - // eslint-disable-next-line no-eval eval(code); document.dispatchEvent(new Event('DOMContentLoaded')); }); @@ -62,7 +61,6 @@ describe('cookie-consent.js', () => { const appendChildSpy = vi.spyOn(document.head, 'appendChild'); const code = readFileSync(SCRIPT_PATH, 'utf8'); - // eslint-disable-next-line no-eval eval(code); document.dispatchEvent(new Event('DOMContentLoaded')); @@ -82,7 +80,6 @@ describe('cookie-consent.js', () => { const appendChildSpy = vi.spyOn(document.head, 'appendChild'); const code = readFileSync(SCRIPT_PATH, 'utf8'); - // eslint-disable-next-line no-eval eval(code); document.dispatchEvent(new Event('DOMContentLoaded')); diff --git a/tests/visual.spec.ts-snapshots/home-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/home-chromium-desktop-linux.png index b2a0895..0698112 100644 Binary files a/tests/visual.spec.ts-snapshots/home-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/home-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/home-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/home-chromium-mobile-linux.png index d4b89bc..91cfa26 100644 Binary files a/tests/visual.spec.ts-snapshots/home-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/home-chromium-mobile-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/privacy-policy-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/privacy-policy-chromium-desktop-linux.png index a773a39..a2ce647 100644 Binary files a/tests/visual.spec.ts-snapshots/privacy-policy-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/privacy-policy-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/privacy-policy-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/privacy-policy-chromium-mobile-linux.png index ddea19a..42c093d 100644 Binary files a/tests/visual.spec.ts-snapshots/privacy-policy-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/privacy-policy-chromium-mobile-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/services-chromium-desktop-linux.png index 4545a2f..fd9f04e 100644 Binary files a/tests/visual.spec.ts-snapshots/services-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/services-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/services-chromium-mobile-linux.png index da47c15..50fb136 100644 Binary files a/tests/visual.spec.ts-snapshots/services-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/services-chromium-mobile-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-desktop-linux.png index f641f5f..1b8a8b8 100644 Binary files a/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-mobile-linux.png index f687805..35cc5ff 100644 Binary files a/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/services-fractional-cto-for-early-stage-saas-chromium-mobile-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-desktop-linux.png index ed82f7b..979143c 100644 Binary files a/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-mobile-linux.png index daaeda6..08345ee 100644 Binary files a/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/services-hands-on-saas-architecture-consultant-chromium-mobile-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-desktop-linux.png index a8bd853..e26443d 100644 Binary files a/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-mobile-linux.png index 0eba1dd..9196b2d 100644 Binary files a/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/services-mvp-architecture-and-launch-chromium-mobile-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-desktop-linux.png index c0b1eee..4b2e63e 100644 Binary files a/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-mobile-linux.png index 5e2759a..7fa1818 100644 Binary files a/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/services-stage-aligned-infrastructure-chromium-mobile-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/terms-of-service-chromium-desktop-linux.png b/tests/visual.spec.ts-snapshots/terms-of-service-chromium-desktop-linux.png index 7468c16..a4a90e8 100644 Binary files a/tests/visual.spec.ts-snapshots/terms-of-service-chromium-desktop-linux.png and b/tests/visual.spec.ts-snapshots/terms-of-service-chromium-desktop-linux.png differ diff --git a/tests/visual.spec.ts-snapshots/terms-of-service-chromium-mobile-linux.png b/tests/visual.spec.ts-snapshots/terms-of-service-chromium-mobile-linux.png index 3c1c4b9..412ceaf 100644 Binary files a/tests/visual.spec.ts-snapshots/terms-of-service-chromium-mobile-linux.png and b/tests/visual.spec.ts-snapshots/terms-of-service-chromium-mobile-linux.png differ