Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/luigitemu/pikante-landing/llms.txt

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

Every visual aspect of the Pikanté landing page — from the fiery accent color to product prices and store locations — lives in clearly scoped source files. This guide covers the most common customization scenarios with exact file paths and code snippets showing the lines to edit.

1. Changing brand colors

All colors are declared as CSS custom properties on the :root selector in src/styles/global.css. There are no hard-coded color values elsewhere in the stylesheet — everything references these variables via var(). The four variables with the broadest visual impact are:
VariableCurrent valueRole
--fireoklch(65% 0.21 35deg)Primary accent — CTAs, borders, active states
--chileoklch(56% 0.23 22deg)Secondary — Gracias city card, deep reds
--limeoklch(76% 0.17 130deg)Step labels (.mono in HowTo cards)
--bgoklch(5% 0.008 260deg)Page background — near-black with a cool hue
All colors use the OKLCH color space, which makes it easy to adjust hue while keeping perceived lightness and chroma consistent. The three parameters are: L (lightness 0–100%), C (chroma 0–0.4), H (hue angle 0–360°). Example — swapping --fire from orange to a teal accent:
src/styles/global.css
/* Before */
--fire: oklch(65% 0.21 35deg);

/* After — teal */
--fire: oklch(65% 0.18 195deg);
Because --accent is aliased to --fire, changing --fire immediately updates every button, border highlight, glow, and active nav indicator across the entire page.
Use oklch.com or the CSS Color Picker in Chrome DevTools (which supports OKLCH) to preview color values before committing them. DevTools also lets you live-edit custom properties on :root to see changes instantly.

2. Changing fonts

Three Google Fonts families are loaded in the <head> of src/pages/index.astro:
src/pages/index.astro
<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=Anton&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
  rel="stylesheet"
/>
Each family maps to a specific CSS class and usage context:
FamilyCSS class / selectorUsage
Anton.h-display, .section-head h2, .hero h1All display headings, stat numbers, section titles
InterbodyBody copy, descriptions, paragraph text
JetBrains Mono.mono, .eyebrow, .btnLabels, eyebrow tags, variant pills, nav links, price readouts
To swap a font, update the Google Fonts URL in src/pages/index.astro and update the font-family declaration in src/styles/global.css. For example, to replace Anton with Bebas Neue as the display typeface:
1
Update the Google Fonts import
2
In src/pages/index.astro, change the <link> href to include Bebas+Neue instead of (or in addition to) Anton:
3
<!-- Before -->
<link href="https://fonts.googleapis.com/css2?family=Anton&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"/>

<!-- After -->
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"/>
4
Update the CSS class definition
5
In src/styles/global.css, find the .h-display rule and update the font-family stack:
6
/* Before */
.h-display {
  font-family: 'Anton', 'Bebas Neue', Impact, sans-serif;
  font-weight: 400;
  letter-spacing: -.01em;
  line-height: .86;
  text-transform: uppercase;
}

/* After */
.h-display {
  font-family: 'Bebas Neue', Impact, sans-serif;
  font-weight: 400;
  letter-spacing: -.01em;
  line-height: .86;
  text-transform: uppercase;
}
Section headings (e.g. .section-head h2, .faq-q, .step-body h3) also hardcode font-family: 'Anton', sans-serif in their own CSS rules. If you swap the display font, search for all 'Anton' occurrences in global.css and update them as well.

The nav links are hardcoded in src/components/Nav.astro inside a .nav-links div:
src/components/Nav.astro
<div class="nav-links">
  <a href="#sabores">Sabores</a>
  <a href="#preparar">Preparar</a>
  <a href="#vida">Vida PIKANTÉ</a>
  <a href="#faq">FAQ</a>
</div>
Each link is a same-page anchor pointing to a section id. The scroll-spy script in src/pages/index.astro also uses these IDs to apply the .active class to the correct link as the user scrolls. To add a new nav link:
2
<div class="nav-links">
  <a href="#sabores">Sabores</a>
  <a href="#preparar">Preparar</a>
  <a href="#vida">Vida PIKANTÉ</a>
  <a href="#faq">FAQ</a>
  <a href="#proveedores">Tiendas</a>  <!-- new link -->
</div>
3
Confirm the matching section id exists
4
In the target component (e.g. src/components/Stores.astro), the <section> must carry the matching id:
5
<section class="stores" id="proveedores">
6
Register the id in the scroll-spy (optional)
7
If you want the new link to receive the .active class while the section is in view, add its id to the sections array in the <script> block of src/pages/index.astro:
8
const sections = ['sabores', 'preparar', 'vida', 'faq', 'proveedores'];
Nav links use anchor IDs — if the corresponding section element does not have a matching id attribute, the link will point to a dead hash and the scroll-spy will silently ignore it. Always add the anchor and the id together.

4. Adding a product variant size

Each product card in src/components/Products.astro uses data-v* attributes on the .price element to store the label for each size option. The active variant’s label is rendered by a small inline script. The existing sizes and their data attributes are:
AttributeLabel
data-v250L 70 · 250ml
data-v570L 150 · 570ml
data-v1lL 260 · 1L
To add a 2L variant:
1
Add the data attribute to the .price element
2
<!-- Before -->
<span class="price"
  data-v250="L 70 · 250ml"
  data-v570="L 150 · 570ml"
  data-v1l="L 260 · 1L"
>L 150 <span style="color:var(--text-4)">&middot; 570ml</span></span>

<!-- After — add data-v2l -->
<span class="price"
  data-v250="L 70 · 250ml"
  data-v570="L 150 · 570ml"
  data-v1l="L 260 · 1L"
  data-v2l="L 480 · 2L"
>L 150 <span style="color:var(--text-4)">&middot; 570ml</span></span>
3
Add the corresponding variant pill button
4
Inside the same product card’s .prod-variants div, add a new <button> with data-variant="v2l":
5
<div class="prod-variants">
  <button class="variant-pill" data-variant="v250">250ml</button>
  <button class="variant-pill active" data-variant="v570">570ml</button>
  <button class="variant-pill" data-variant="v1l">1 Litro</button>
  <button class="variant-pill" data-variant="v2l">2 Litros</button>  <!-- new -->
</div>
The existing script at the bottom of Products.astro already handles any data-variant key dynamically — no JavaScript changes are needed. When the user clicks the 2 Litros pill, the script reads priceEl.dataset['v2l'] and updates the displayed price automatically.

5. Adding a store location

All store data lives in the cities array at the top of src/components/Stores.astro. Each object in the array represents a city card:
src/components/Stores.astro
const cities = [
  {
    city: 'Tegucigalpa',
    dept: 'Francisco Morazán',
    code: 'TGU',
    featured: false,
    class: 'city-card--tegus',
    places: [
      { name: 'Carnicería El Corte', type: 'Carnicería' },
    ],
  },
  {
    city: 'Gracias',
    class: 'city-card--gracias',
    dept: 'Lempira',
    code: 'GRA',
    featured: true,
    places: [
      { name: 'Texaco Las Torres',        type: 'Estación' },
      { name: 'Supermercado Denisse',     type: 'Supermercado' },
      // ... more places
    ],
  },
  {
    city: 'Lepaera',
    class: 'city-card--lepaera',
    dept: 'Lempira',
    code: 'LPA',
    featured: false,
    places: [
      { name: "Elena's Bakery", type: 'Repostería' },
    ],
  },
];

Add a new place to an existing city

Find the target city object and append a new { name, type } entry to its places array:
src/components/Stores.astro
{
  city: 'Tegucigalpa',
  dept: 'Francisco Morazán',
  code: 'TGU',
  featured: false,
  class: 'city-card--tegus',
  places: [
    { name: 'Carnicería El Corte',    type: 'Carnicería' },
    { name: 'Pulpería La Esquina',    type: 'Pulpería' },    // new
    { name: 'Restaurante El Fogón',   type: 'Restaurante' }, // new
  ],
},
The city card header automatically recalculates the place count ({c.places.length}) and the section header shows the updated total across all cities (totalPlaces).

Add an entirely new city

Append a new city object to the cities array. Pick a CSS modifier class that matches one of the existing gradient skins, or add a new one in global.css:
src/components/Stores.astro
{
  city: 'San Pedro Sula',
  dept: 'Cortés',
  code: 'SAP',
  featured: false,
  class: 'city-card--tegus', // reuse an existing skin, or create a new one
  places: [
    { name: 'Supermercado El Ahorro', type: 'Supermercado' },
    { name: 'Barra La Ceiba',         type: 'Bar' },
  ],
},
To give the new city its own color skin, add a new CSS rule to src/styles/global.css following the same pattern as .city-card--tegus, .city-card--gracias, and .city-card--lepaera. Set a unique OKLCH hue for the radial gradient and adjust the border-color and hover box-shadow to match.

Build docs developers (and LLMs) love