Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/gcsconsultores/gcs-website/llms.txt

Use this file to discover all available pages before exploring further.

The GCS design system is implemented as a set of Tailwind CSS v4 custom properties declared in a single @theme inline block inside app/globals.css, combined with shadcn/ui components styled via CSS variables in the :root and .dark selectors. Every color, font, and radius used across the site derives from these tokens — no hardcoded hex values appear in component files.

Corporate Color Palette

The five brand colors are derived from the GCS Manual de Identidad Corporativa. They are exposed as Tailwind utility classes (bg-brand-navy, text-brand-lime, etc.) through the @theme inline block.
TokenCSS VariableHexUsage
brand-navy--color-brand-navy#2A3A6EPrimary brand color, dark backgrounds, body text
brand-blue--color-brand-blue#007DC2Interactive elements, links, accent highlights
brand-blue-dark--color-brand-blue-dark#155C98Hover states, darker variants of brand-blue
brand-lime--color-brand-lime#ABC42ECTAs, highlighted indicators, active states
brand-gray--color-brand-gray#C6C6C5Borders, separators, neutral surfaces

@theme inline Block

The @theme inline directive in Tailwind CSS v4 registers tokens as CSS custom properties and simultaneously generates utility classes. The full brand token block from app/globals.css:
@theme inline {
  /* Typography exposed as font-sans / font-heading utility classes */
  --font-sans: var(--font-open-sans), 'Open Sans Fallback', sans-serif;
  --font-heading: var(--font-open-sans), sans-serif;
  --font-mono: var(--font-geist-mono), 'Geist Mono Fallback';

  /* Brand tokens exposed as bg-brand-*, text-brand-*, border-brand-* */
  --color-brand-navy: #2a3a6e;
  --color-brand-blue: #007dc2;
  --color-brand-blue-dark: #155c98;
  --color-brand-lime: #abc42e;
  --color-brand-gray: #c6c6c5;

  /* Radius scale derived from --radius base value */
  --radius-sm: calc(var(--radius) * 0.6);
  --radius-md: calc(var(--radius) * 0.8);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) * 1.4);
  --radius-2xl: calc(var(--radius) * 1.8);
  --radius-3xl: calc(var(--radius) * 2.2);
  --radius-4xl: calc(var(--radius) * 2.6);
}

Semantic Tokens (:root)

The :root block maps the brand palette to semantic role names that shadcn/ui components consume. This is the light-mode default.
TokenValueRole
--primary#2a3a6eBrand navy — primary buttons, active states
--primary-foreground#ffffffText on primary surfaces
--secondary#f3f5faLight neutral — section backgrounds
--secondary-foreground#2a3a6eText on secondary surfaces
--accent#007dc2Brand blue — focus rings, links
--accent-foreground#ffffffText on accent surfaces
--foreground#1a2138Default body text (dark navy)
--background#ffffffPage background
--muted#f3f5faMuted backgrounds
--muted-foreground#5b647dSecondary text, captions
--border#e2e5eeDefault border color
--input#d9dde8Input field borders
--ring#007dc2Focus ring color
--radius0.625remBase border radius
:root {
  color-scheme: light;
  --background: #ffffff;
  --foreground: #1a2138;
  --primary: #2a3a6e;
  --primary-foreground: #ffffff;
  --secondary: #f3f5fa;
  --secondary-foreground: #2a3a6e;
  --accent: #007dc2;
  --accent-foreground: #ffffff;
  --muted: #f3f5fa;
  --muted-foreground: #5b647d;
  --border: #e2e5ee;
  --input: #d9dde8;
  --ring: #007dc2;
  --radius: 0.625rem;
}

Typography

Fonts are loaded via next/font/google in app/layout.tsx and injected as CSS custom properties on the <html> element. The @theme inline block maps those properties to Tailwind font utility classes.
RoleFont FamilyCSS VariableTailwind Class
Body textOpen Sans--font-open-sansfont-sans
HeadingsOpen Sans--font-open-sansfont-heading
Monospace / codeGeist Mono--font-geist-monofont-mono
Nunito is also loaded in layout.tsx (variable --font-nunito) and is available as a CSS custom property for components that want a rounder, more approachable display typeface for headings — Nunito communicates trust and professionalism with a softer character than condensed display fonts.
Heading elements (h1h4) receive global base styles in app/globals.css:
@layer base {
  h1, h2, h3, h4 {
    @apply font-heading;
    letter-spacing: -0.01em;
    line-height: 1.2;
  }
}

Utility Class Reference

Tailwind v4 generates utility classes for every --color-* token registered in @theme inline. The five brand tokens produce the following class families:
bg-brand-navy        /* #2a3a6e */
bg-brand-blue        /* #007dc2 */
bg-brand-blue-dark   /* #155c98 */
bg-brand-lime        /* #abc42e */
bg-brand-gray        /* #c6c6c5 */

Background Pattern Utility

A custom @utility is defined for section backgrounds that need a subtle dot-grid texture, used throughout the site to add visual depth without heavy imagery:
@utility bg-grid-soft {
  background-image: radial-gradient(
    rgba(42, 58, 110, 0.06) 1px,
    transparent 1px
  );
  background-size: 22px 22px;
}

shadcn/ui Components

The following shadcn/ui components are installed and available under components/ui/. All are configured via components.json with the base-nova style preset and CSS variable theming.
ComponentFilePrimary Use
accordioncomponents/ui/accordion.tsxExpandable content panels
buttoncomponents/ui/button.tsxCTAs, form submissions, navigation actions
cardcomponents/ui/card.tsxSolution cards, insight cards, center cards
checkboxcomponents/ui/checkbox.tsxData consent checkbox in contact form
dialogcomponents/ui/dialog.tsxModal overlays
inputcomponents/ui/input.tsxForm text fields
labelcomponents/ui/label.tsxAccessible form labels
selectcomponents/ui/select.tsxInterest area dropdown in contact form
sheetcomponents/ui/sheet.tsxMobile navigation drawer
sonnercomponents/ui/sonner.tsxToast notifications (form feedback)
textareacomponents/ui/textarea.tsxOptional message field in contact form

The cn() Utility

All component files use the cn() function from lib/utils.ts to compose Tailwind class strings. It combines clsx (conditional class logic) with tailwind-merge (deduplication of conflicting Tailwind classes):
// lib/utils.ts
import { clsx, type ClassValue } from 'clsx'
import { twMerge } from 'tailwind-merge'

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}
Usage in a component:
// Conditional classes merge cleanly — no duplicate or conflicting utilities
<div className={cn(
  'rounded-lg border bg-card p-6',
  isActive && 'border-brand-blue bg-brand-blue/5',
  className
)} />
Dark mode is supported. The .dark selector in app/globals.css redefines the semantic tokens with darker background values (--background: #11162a), a lighter foreground (--foreground: #f4f6fb), and an adjusted primary (--primary: #4d7fd6). Brand colors like --accent (#007dc2) and --color-brand-lime remain unchanged in dark mode, preserving corporate identity. Dark mode is activated by toggling the dark class on a parent element, managed via next-themes.

Build docs developers (and LLMs) love