CSS and @font-face fixes

This commit is contained in:
2026-03-12 16:31:58 -03:00
parent 0c4823d263
commit beffd5f4e8
30 changed files with 128 additions and 90 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "mifi-ventures-landing", "name": "mifi-ventures-landing",
"version": "4.0.1", "version": "4.0.2",
"private": true, "private": true,
"repository": "https://git.mifi.dev/mifi-ventures/landing.git", "repository": "https://git.mifi.dev/mifi-ventures/landing.git",
"packageManager": "pnpm@10.31.0+sha512.e3927388bfaa8078ceb79b748ffc1e8274e84d75163e67bc22e06c0d3aed43dd153151cbf11d7f8301ff4acb98c68bdc5cadf6989532801ffafe3b3e4a63c268", "packageManager": "pnpm@10.31.0+sha512.e3927388bfaa8078ceb79b748ffc1e8274e84d75163e67bc22e06c0d3aed43dd153151cbf11d7f8301ff4acb98c68bdc5cadf6989532801ffafe3b3e4a63c268",
@@ -12,11 +12,11 @@
"dev": "vite dev", "dev": "vite dev",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "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": "eslint .",
"lint:fix": "eslint . --fix", "lint:fix": "eslint . --fix",
"lint:css": "stylelint \"src/**/*.css\" \"src/**/*.svelte\"", "lint:css": "stylelint \"src/**/*.css\" \"src/**/*.svelte\" \"static/**/*.css\"",
"lint:css:fix": "stylelint \"src/**/*.css\" \"src/**/*.svelte\" --fix", "lint:css:fix": "stylelint \"src/**/*.css\" \"src/**/*.svelte\" \"static/**/*.css\" --fix",
"preview": "serve dist -p 4173", "preview": "serve dist -p 4173",
"test": "vitest run", "test": "vitest run",
"test:unit": "vitest run", "test:unit": "vitest run",

View File

@@ -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 Base Styles
======================================== */ ======================================== */
@@ -178,6 +214,11 @@ body {
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
} }
strong,
b {
font-weight: var(--font-weight-bold);
}
/* ======================================== /* ========================================
Skip Link (Accessibility) Skip Link (Accessibility)
======================================== */ ======================================== */

View File

@@ -47,13 +47,6 @@
type="font/woff2" type="font/woff2"
crossorigin="anonymous" crossorigin="anonymous"
/> />
<link
rel="preload"
href="/assets/fonts/fraunces-v38-latin-700.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
<link <link
rel="preload" rel="preload"
href="/assets/fonts/inter-v20-latin-regular.woff2" href="/assets/fonts/inter-v20-latin-regular.woff2"
@@ -61,13 +54,6 @@
type="font/woff2" type="font/woff2"
crossorigin="anonymous" crossorigin="anonymous"
/> />
<link
rel="preload"
href="/assets/fonts/inter-v20-latin-italic.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
<link <link
rel="preload" rel="preload"
href="/assets/fonts/inter-v20-latin-500.woff2" href="/assets/fonts/inter-v20-latin-500.woff2"
@@ -75,13 +61,6 @@
type="font/woff2" type="font/woff2"
crossorigin="anonymous" crossorigin="anonymous"
/> />
<link
rel="preload"
href="/assets/fonts/inter-v20-latin-600.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
<link <link
rel="preload" rel="preload"
href="/assets/fonts/inter-v20-latin-700.woff2" href="/assets/fonts/inter-v20-latin-700.woff2"

View File

@@ -50,7 +50,9 @@
<h2 id={`${section.id}-heading`}>{section.heading}</h2> <h2 id={`${section.id}-heading`}>{section.heading}</h2>
{#each section.body as para} {#each section.body as para}
<p> <p>
{#if section.id === 'contact' && para === 'legal@mifi.ventures'} {#if section.id === 'contact' && para === 'mifi Ventures LLC'}
<strong>{para}</strong>
{:else if section.id === 'contact' && para === 'legal@mifi.ventures'}
<a href="mailto:legal@mifi.ventures" <a href="mailto:legal@mifi.ventures"
>legal@mifi.ventures</a >legal@mifi.ventures</a
> >

View File

@@ -28,7 +28,9 @@
<h2 id={`${section.id}-heading`}>{section.heading}</h2> <h2 id={`${section.id}-heading`}>{section.heading}</h2>
{#each section.body as para} {#each section.body as para}
<p> <p>
{#if section.id === 'contact' && para === 'legal@mifi.ventures'} {#if section.id === 'contact' && para === 'mifi Ventures LLC'}
<strong>{para}</strong>
{:else if section.id === 'contact' && para === 'legal@mifi.ventures'}
<a href="mailto:legal@mifi.ventures" <a href="mailto:legal@mifi.ventures"
>legal@mifi.ventures</a >legal@mifi.ventures</a
> >

View File

@@ -1,13 +1,17 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>404 Not Found — mifi Ventures</title> <title>404 Not Found — mifi Ventures</title>
<meta name="theme-color" content="#0052cc" media="(prefers-color-scheme: light)"> <meta
<meta name="theme-color" content="#4da6ff" media="(prefers-color-scheme: dark)"> name="theme-color"
<link rel="icon" type="image/svg+xml" href="/favicon.svg"> content="#0052cc"
<link rel="stylesheet" href="/assets/error-pages.css"> media="(prefers-color-scheme: light)"
/>
<meta name="theme-color" content="#4da6ff" media="(prefers-color-scheme: dark)" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="stylesheet" href="/assets/error-pages.css" />
</head> </head>
<body class="error-page"> <body class="error-page">
<main> <main>

View File

@@ -1,13 +1,17 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>410 Gone — mifi Ventures</title> <title>410 Gone — mifi Ventures</title>
<meta name="theme-color" content="#0052cc" media="(prefers-color-scheme: light)"> <meta
<meta name="theme-color" content="#4da6ff" media="(prefers-color-scheme: dark)"> name="theme-color"
<link rel="icon" type="image/svg+xml" href="/favicon.svg"> content="#0052cc"
<link rel="stylesheet" href="/assets/error-pages.css"> media="(prefers-color-scheme: light)"
/>
<meta name="theme-color" content="#4da6ff" media="(prefers-color-scheme: dark)" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="stylesheet" href="/assets/error-pages.css" />
</head> </head>
<body class="error-page"> <body class="error-page">
<main> <main>

View File

@@ -32,22 +32,33 @@
} }
/* Local fonts — same paths as +layout.svelte preloads */ /* Local fonts — same paths as +layout.svelte preloads */
@font-face { @font-face {
font-family: 'Inter'; font-family: Inter;
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url('/assets/fonts/inter-v20-latin-regular.woff2') format('woff2'); src: url('/assets/fonts/inter-v20-latin-regular.woff2') format('woff2');
} }
@font-face { @font-face {
font-family: 'Inter'; font-family: Inter;
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap; font-display: swap;
src: url('/assets/fonts/inter-v20-latin-500.woff2') format('woff2'); src: url('/assets/fonts/inter-v20-latin-500.woff2') format('woff2');
} }
@font-face { @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-style: normal;
font-weight: 600; font-weight: 600;
font-display: swap; font-display: swap;
@@ -67,15 +78,18 @@
color: var(--ep-text); color: var(--ep-text);
background-color: var(--ep-bg-alt); background-color: var(--ep-bg-alt);
} }
.error-page main { .error-page main {
text-align: center; text-align: center;
padding: 2rem 1.5rem; padding: 2rem 1.5rem;
max-width: 28rem; max-width: 28rem;
} }
.error-page .emoji { .error-page .emoji {
font-size: 4rem; font-size: 4rem;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
} }
.error-page h1 { .error-page h1 {
font-family: var(--ep-font-heading); font-family: var(--ep-font-heading);
font-size: 2rem; font-size: 2rem;
@@ -83,19 +97,23 @@
margin: 0 0 0.75rem; margin: 0 0 0.75rem;
color: var(--ep-text); color: var(--ep-text);
} }
.error-page p { .error-page p {
margin: 0 0 1.5rem; margin: 0 0 1.5rem;
color: var(--ep-text-secondary); color: var(--ep-text-secondary);
} }
.error-page a { .error-page a {
color: var(--ep-primary); color: var(--ep-primary);
font-weight: 500; font-weight: 500;
text-decoration: none; text-decoration: none;
} }
.error-page a:hover { .error-page a:hover {
color: var(--ep-primary-hover); color: var(--ep-primary-hover);
text-decoration: underline; text-decoration: underline;
} }
.error-page a:focus-visible { .error-page a:focus-visible {
outline: 2px solid var(--ep-primary); outline: 2px solid var(--ep-primary);
outline-offset: 2px; outline-offset: 2px;

View File

@@ -69,10 +69,7 @@
try { try {
var clarityScript = document.createElement('script'); var clarityScript = document.createElement('script');
clarityScript.defer = true; clarityScript.defer = true;
setScriptSrc( setScriptSrc(clarityScript, 'https://www.clarity.ms/tag/vuo5q3yf79?ref=bwt');
clarityScript,
'https://www.clarity.ms/tag/vuo5q3yf79?ref=bwt',
);
document.head.appendChild(clarityScript); document.head.appendChild(clarityScript);
} catch (e2) { } catch (e2) {
console.error('Failed to load Microsoft Clarity', e2); console.error('Failed to load Microsoft Clarity', e2);
@@ -142,4 +139,3 @@
init(); init();
} }
})(); })();

View File

@@ -1,8 +1,10 @@
window.dataLayer = window.dataLayer || []; window.dataLayer = window.dataLayer || [];
function gtag(){ window.dataLayer.push(arguments); } function gtag() {
window.dataLayer.push(arguments);
}
gtag("js", new Date()); gtag('js', new Date());
gtag("config", "G-36F29PDKRT", { gtag('config', 'G-36F29PDKRT', {
// optional, but often helpful: // optional, but often helpful:
anonymize_ip: true, anonymize_ip: true,
}); });

View File

@@ -1,8 +1,7 @@
const MOBILE_BREAKPOINT_PX = 768; const MOBILE_BREAKPOINT_PX = 768;
/** All focusable elements inside the menu (links). */ /** All focusable elements inside the menu (links). */
const getMenuFocusables = (menu) => const getMenuFocusables = (menu) => menu.querySelectorAll('a[href]');
menu.querySelectorAll('a[href]');
const mobileMenuHelper = () => { const mobileMenuHelper = () => {
const mobileMenu = document.getElementById('nav-menu'); const mobileMenu = document.getElementById('nav-menu');
@@ -15,10 +14,7 @@ const mobileMenuHelper = () => {
const syncMenuAriaHidden = () => { const syncMenuAriaHidden = () => {
if (isMobile()) { if (isMobile()) {
const hidden = !mobileMenuToggle.checked; const hidden = !mobileMenuToggle.checked;
mobileMenu.setAttribute( mobileMenu.setAttribute('aria-hidden', hidden ? 'true' : 'false');
'aria-hidden',
hidden ? 'true' : 'false',
);
// inert removes the subtree from the a11y tree and makes descendants non-focusable // inert removes the subtree from the a11y tree and makes descendants non-focusable
if (hidden) { if (hidden) {
mobileMenu.setAttribute('inert', ''); mobileMenu.setAttribute('inert', '');

View File

@@ -1,9 +1,6 @@
// Umami: safe track (no-op if script blocked or not loaded) // Umami: safe track (no-op if script blocked or not loaded)
function umamiTrack(name, data) { function umamiTrack(name, data) {
if ( if (typeof window.umami !== 'undefined' && typeof window.umami.track === 'function') {
typeof window.umami !== 'undefined' &&
typeof window.umami.track === 'function'
) {
if (data != null) window.umami.track(name, data); if (data != null) window.umami.track(name, data);
else window.umami.track(name); else window.umami.track(name);
} }

View File

@@ -39,7 +39,6 @@ describe('cookie-consent.js', () => {
dom = createBannerDOM(); dom = createBannerDOM();
const code = readFileSync(SCRIPT_PATH, 'utf8'); const code = readFileSync(SCRIPT_PATH, 'utf8');
// eslint-disable-next-line no-eval
eval(code); eval(code);
document.dispatchEvent(new Event('DOMContentLoaded')); document.dispatchEvent(new Event('DOMContentLoaded'));
}); });
@@ -62,7 +61,6 @@ describe('cookie-consent.js', () => {
const appendChildSpy = vi.spyOn(document.head, 'appendChild'); const appendChildSpy = vi.spyOn(document.head, 'appendChild');
const code = readFileSync(SCRIPT_PATH, 'utf8'); const code = readFileSync(SCRIPT_PATH, 'utf8');
// eslint-disable-next-line no-eval
eval(code); eval(code);
document.dispatchEvent(new Event('DOMContentLoaded')); document.dispatchEvent(new Event('DOMContentLoaded'));
@@ -82,7 +80,6 @@ describe('cookie-consent.js', () => {
const appendChildSpy = vi.spyOn(document.head, 'appendChild'); const appendChildSpy = vi.spyOn(document.head, 'appendChild');
const code = readFileSync(SCRIPT_PATH, 'utf8'); const code = readFileSync(SCRIPT_PATH, 'utf8');
// eslint-disable-next-line no-eval
eval(code); eval(code);
document.dispatchEvent(new Event('DOMContentLoaded')); document.dispatchEvent(new Event('DOMContentLoaded'));

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 KiB

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 571 KiB

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 784 KiB

After

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 801 KiB

After

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 KiB

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 805 KiB

After

Width:  |  Height:  |  Size: 582 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 817 KiB

After

Width:  |  Height:  |  Size: 871 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 927 KiB

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 941 KiB

After

Width:  |  Height:  |  Size: 1009 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 703 KiB

After

Width:  |  Height:  |  Size: 543 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 KiB

After

Width:  |  Height:  |  Size: 746 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 886 KiB

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 891 KiB

After

Width:  |  Height:  |  Size: 960 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 KiB

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 KiB

After

Width:  |  Height:  |  Size: 532 KiB