diff --git a/workloads/ecommerce/app/globals.css b/workloads/ecommerce/app/globals.css index c94cc02..ffa6535 100644 --- a/workloads/ecommerce/app/globals.css +++ b/workloads/ecommerce/app/globals.css @@ -1,10 +1,17 @@ @import "tailwindcss"; @theme { - --color-ari-cyan: #06b6d4; - --color-ari-magenta: #ec4899; - --color-ari-yellow: #fde047; - --color-ari-blue: #0f172a; + /* ADR 0007 -- identidad visual propia (no derivada de ningun + competidor). Cada token tiene un rol unico y deliberado, ver + docs-portal/docs/decisiones/0007-identidad-visual-propia.md */ + --color-ari-terracota: #C1502E; /* CTA -- unico uso reservado a accion */ + --color-ari-espresso: #2B1B13; /* ancla oscura: header/footer */ + --color-ari-pino: #2F6F62; /* links / senales de confianza */ + --color-ari-crema: #FBF3E7; /* fondo general */ + --color-ari-carbon: #2E2620; /* texto principal */ + --color-ari-oro: #E3A008; /* badge "destacado" */ + --color-ari-ladrillo: #A83232; /* badge de descuento */ + --font-display: var(--font-fraunces), ui-serif, Georgia, serif; --animate-accordion-down: accordion-down .2s ease-out; --animate-accordion-up: accordion-up .2s ease-out; } @@ -15,10 +22,10 @@ :root { color-scheme: light; } * { border-color: rgb(226 232 240); } html { scroll-behavior: smooth; } -body { margin: 0; background: #fff; color: #0f172a; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; text-rendering: optimizeLegibility; } +body { margin: 0; background: var(--color-ari-crema); color: var(--color-ari-carbon); font-family: var(--font-inter), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; text-rendering: optimizeLegibility; } button, a { -webkit-tap-highlight-color: transparent; } -button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid rgb(167 139 250 / .55); outline-offset: 3px; } -::selection { background: #fde047; color: #0f172a; } +button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid rgb(47 111 98 / .45); outline-offset: 3px; } +::selection { background: rgb(193 80 46 / .25); color: var(--color-ari-carbon); } .content-auto { content-visibility: auto; diff --git a/workloads/ecommerce/app/layout.tsx b/workloads/ecommerce/app/layout.tsx index 2293db6..56e4243 100644 --- a/workloads/ecommerce/app/layout.tsx +++ b/workloads/ecommerce/app/layout.tsx @@ -1,4 +1,5 @@ import type { Metadata, Viewport } from "next"; +import { Fraunces, Inter } from "next/font/google"; import "./globals.css"; import { CartDrawer } from "@/components/cart/cart-drawer"; import { Footer } from "@/components/layout/footer"; @@ -20,9 +21,15 @@ export const metadata: Metadata = { openGraph: { title: "ARI Shopping", description: "Tesoros para cada aventura.", type: "website", locale: "es_CO" }, }; -export const viewport: Viewport = { width: "device-width", initialScale: 1, themeColor: "#0f172a" }; +export const viewport: Viewport = { width: "device-width", initialScale: 1, themeColor: "#2B1B13" }; + +// ADR 0007: Fraunces (titulares/precio) + Inter (UI/cuerpo) cargadas via +// next/font -- antes "Inter" era solo un nombre de fallback en el CSS, sin +// garantia real de que el navegador tuviera esa fuente instalada. +const inter = Inter({ subsets: ["latin"], variable: "--font-inter", display: "swap" }); +const fraunces = Fraunces({ subsets: ["latin"], variable: "--font-fraunces", display: "swap" }); export default async function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) { const [products, categories] = await Promise.all([getProducts(), getCategories()]); - return
{children}