Card de Produto - Criando variáveis CSS globais

1 — O que é um Design System (visão geral)
Design System é o kit-base do projeto: cores, tipografia, espaçamentos e padrões que garantem consistência. Em vez de decidir tudo de novo a cada componente, você já tem as regras definidas. É isso que vamos aplicar aqui.
2 — Design System do projeto “Card de Produto”
No website Frontend Mentor, vamos trabalhar com este projeto:
https://www.frontendmentor.io/challenges/product-preview-card-component-GO7UmttRfa
Que é um projeto de card de produto (imagem, título, descrição, preço antigo/novo e botão de ação), perfeito para treinar organização de estilos e começar a estruturar componentes.
A ideia até aqui é aplicar os conhecimentos que adquiri durante a leitura da seção inicial do Vue.js (fundamentos).
Nesse caso, eu realmente paguei pelo Figma proposto pelo Frontend Mentor e, por motivos legais, não posso compartilhá-lo. Mas não tem problema algum em eu compartilhar como escrevi o código, o resultado pode ser igual, mas o código faz parte da minha propriedade intelectual.
Aqui vão as variáveis globais do projeto, pegas de acordo com o Figma (se você não quiser pagar por isso, pode usar direto):
:root {
/* Colors */
--black: #1c232b;
--gray: #6c7289;
--cream: #f2eae2;
--white: #ffffff;
--green-500: #3d8168;
--green-700: #1a4032;
/* Typography */
--text-preset-1: 700 1rem/1 'Fraunces', serif;
--text-preset-2: 700 0.875rem/1.1 'Montserrat', sans-serif;
--text-preset-3: 500 0.875rem/1.6 'Montserrat', sans-serif;
--text-preset-4: 500 0.75rem/1.2 'Montserrat', sans-serif;
--text-preset-5: 400 0.8125rem/1.2 'Montserrat', sans-serif;
/* Spacing */
--spacing-50: 0.25rem;
--spacing-100: 0.5rem;
--spacing-200: 1rem;
--spacing-300: 1.5rem;
--spacing-400: 2rem;
--spacing-500: 2.5rem;
}
O ponto aqui: não estamos estudando CSS agora e sim Vue. Seria ótimo você tentar fazer do seu jeito, mas não há problema em copiar o código e pular essa parte. Essas são as cores, fontes e espaçamentos que o design system fornece para o projeto.
Importando as fontes (passo a passo)
Além disso, será necessário importar duas fontes do Google Fonts: Montserrat e Fraunces.
Você pode fazer da forma que achar melhor, mas, de acordo com as boas práticas, as fontes devem ser importadas no <head> do HTML, para carregarem imediatamente junto com o site.
Passo 1 — O Google Fonts geralmente te entrega algo assim (com repetições):
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"
rel="stylesheet"
/>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,100..900;1,9..144,100..900&display=swap"
rel="stylesheet"
/>
Passo 2 — Remova as linhas repetidas (evita preconnect duplicado):
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,100..900;1,9..144,100..900&display=swap"
rel="stylesheet"
/>
Passo 3 — Unifique as duas famílias em uma requisição:
<link
href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,100..900;1,9..144,100..900&family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"
rel="stylesheet"
/>
Pronto. Com isso, você mantém o design system organizado e otimiza o carregamento (menos requisições).
Tags
Sobre o Autor

Gabriel Estéfono
Desenvolvedor Web
Desenvolvedor com mais de 3 anos de experiência em HTML, CSS e JavaScript.