Skin Design
Specification

VERSION 1.0 · APRIL 2026
Contents
01 Overview 02 Base Themes 03 CSS Variable Reference 04 Custom CSS Rules 05 Typography & Fonts 06 Preview Images 07 Pricing & Tiers 08 Skin File Format (.json) 09 Submission Checklist 10 Review Process 11 Full Example

01 · Overview

A TΛPΛT Shop skin is a visual theme applied to a shopkeeper's storefront. Skins work by overriding a set of CSS custom properties (variables) that control colors, fonts, and shadows across the entire storefront.

You do not need to write or upload HTML. You supply:

💡 How it works
Your variable values are injected into a <style> tag on the shopkeeper's storefront as :root overrides. The storefront already handles all layout and functionality — you only control the visual layer.

02 · Base Themes

Every skin extends one of three TΛPΛT base themes. Choose the base whose structure best matches your design — your variable overrides will sit on top of it.

Tala
Navy & gold. Elegant, trust-forward. Default theme.
theme_base: "tala"
Isla
Terracotta & forest. Warm, artisanal, cultural.
theme_base: "isla"
Perlas
Blush & rose. Soft, feminine, boutique feel.
theme_base: "perlas"
Tip
You only need to include variables you're changing. If your skin only changes colors, leave the font variables out entirely — the base theme's typography will be inherited.

03 · CSS Variable Reference

Backgrounds

VariableDescriptionTala default
--bg requiredPage background. The dominant surface color.#F8F5F0
--bg2 requiredCard / panel background. Usually white or near-white.#FFFFFF
--bg3 optionalSubtle background — used for tags, chips, hover states.#F2EEE8

Navigation

VariableDescriptionTala default
--nav-bg requiredTop navigation bar background color.#0A2540
--nav-text optionalNav link text color. Should be legible on --nav-bg.rgba(255,255,255,0.85)

Brand Colors

VariableDescriptionTala default
--primary requiredPrimary brand color. Used for headings, links, key UI elements.#0A2540
--accent requiredAccent / call-to-action color. Buttons, badges, highlights.#D4AF37
--accent-dim optionalTranslucent version of accent. Background of accent-tinted elements.rgba(212,175,55,0.12)
--accent-hover optionalDarker shade of accent for button hover states.#c49e2a

Text

VariableDescriptionTala default
--text requiredPrimary body text. Must be high contrast against --bg.#1A1A2E
--text-2 optionalSecondary text — descriptions, subtitles.#3D3D55
--text-muted optionalMuted / helper text — hints, labels, metadata.#7B7B8F

Borders

VariableDescriptionTala default
--border optionalStandard divider and card border color.#E2DDD6
--border-soft optionalLighter border for subtle separators.#EDE9E2

Typography

VariableDescriptionTala default
--heading-font optionalFont stack for all headings (h1–h4). Include fallback serif.'Fraunces', serif
--body-font optionalFont stack for body text, buttons, UI. Include fallback sans-serif.'DM Sans', sans-serif

Badges & Shadows

VariableDescriptionTala default
--badge-bg optionalBackground of product category badge.#D4AF37
--badge-text optionalText color inside product badge. Must contrast with --badge-bg.#0A2540
--shadow optionalCard drop shadow. Full CSS box-shadow value.0 4px 24px rgba(10,37,64,0.10)
--shadow-lg optionalLarge shadow for modals and overlays.0 12px 48px rgba(10,37,64,0.16)

04 · Custom CSS Rules

In addition to variable overrides, you can include a block of raw CSS for fine-grained control. Custom CSS is injected after the base theme stylesheet.

✓ Allowed
✗ Not allowed — will be rejected

Key class names for targeting

Class / IDElement
.store-navTop navigation bar
.store-heroHero banner section
.product-cardIndividual product tile in the grid
.product-titleProduct name on card
.product-pricePrice display on card
.btn-add-cartAdd to cart button
.btn-buy-nowBuy now / checkout button
.category-chipCategory filter pill
.store-footerFooter bar
#cart-panelSlide-out cart drawer

05 · Typography & Fonts

If your skin uses custom Google Fonts, provide the full @import URL in the Font Imports field — not in custom CSS. This ensures fonts load before the stylesheet to prevent flash of unstyled text.

Example font import

/* Paste this exactly into the Font Imports field */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Lato:wght@300;400;700&display=swap');

Then reference the font in your variable overrides:

--heading-font: 'Playfair Display', serif;
--body-font:    'Lato', sans-serif;
💡 Font sources
Only Google Fonts URLs are permitted. Self-hosted fonts and other CDNs are not allowed. Browse free fonts at fonts.google.com.

06 · Preview Images

Shopkeepers browse skins in a marketplace and choose based on previews. Good screenshots are the most important factor in getting installs.

Requirements

What to show

💡 How to create previews
Apply your skin locally using browser dev tools: paste your CSS variables into the browser console with document.documentElement.style.setProperty('--bg', '#yourcolor'), then screenshot. Or use the TΛPΛT preview tool linked from your designer dashboard.

07 · Pricing & Tiers

Skins are priced as monthly subscriptions. Your tier is determined automatically from your USD-equivalent price. You can price in any currency — buyers see it in their chosen display currency.

Free
$0/mo
Available to all shops. Best for building reputation and unlocking extra free upload slots.
Boost
$0.01 – $39.99/mo
Available to Boost, Scale, and Enterprise shops.
Scale
$40 – $249.99/mo
Available to Scale and Enterprise shops. Higher-intent buyers, lower churn.
Enterprise
$250+/mo
Enterprise shops only. Also available via custom commission.

Your earnings

70% of every monthly subscription goes directly to your TΛPΛT wallet. The remaining 30% feeds the TΛPΛT reward ecosystem (10% your referral tree, 10% the shopkeeper's referral tree, 10% platform).

Free skin upload quota

You can list up to 2 free skins at no cost. Every time a shopkeeper actively installs one of your free skins, you earn an additional free upload slot. There is no limit on paid skin submissions.

08 · Skin File Format (.json)

You can define your entire skin in a single .json file and import it directly into the designer portal. All form fields populate automatically — no copy-pasting required.

How to use it
In the Submit a Skin form, click ↑ Import JSON, select your tapat-skin.json file, then add your preview screenshots and submit.

Full file schema

The portal accepts two common variations — use whichever feels natural:

FieldAccepted formats
CSS variables key"variables" or "css_variables" — both work
PriceFlat number: "price": 19  or  object: "price": {"amount": 19, "currency": "USD"}
Description"description" or "short_description" — portal uses whichever is present
{
  // ── Identity (required)
  "name":         "Washi",               // skin display name
  "description":  "Japanese minimalist...",

  // ── Base theme (required)
  "theme_base":   "tala",             // "tala" | "isla" | "perlas"
  "category":     "minimal",          // minimal | bold | elegant | playful | cultural | tech | natural

  // ── Pricing (required)
  "price":        29,                 // 0 for free
  "currency":     "USD",             // USD | PHP | EUR | GBP | CAD | AUD | JPY | SGD

  // ── CSS variables (required — include only variables you're changing)
  "variables": {
    "--bg":            "#FAFAF8",
    "--bg2":           "#FFFFFF",
    "--nav-bg":        "#1C1C1C",
    "--primary":       "#1C1C1C",
    "--accent":        "#C84B31",
    "--text":          "#1C1C1C",
    "--heading-font":  "'Noto Serif JP', serif",
    "--body-font":     "'Noto Sans JP', sans-serif"
  },

  // ── Custom CSS (optional)
  "custom_css":   ".product-card { border-radius: 2px; }",

  // ── Google Fonts import (optional — include if using custom fonts)
  "font_imports": "@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@300;400&display=swap');"
}

Download starter template

Save this as tapat-skin.json and edit in any text editor or VS Code:

{
  "name": "My Skin Name",
  "description": "Describe the aesthetic and best-fit shop types.",
  "theme_base": "tala",
  "category": "minimal",
  "price": 0,
  "currency": "USD",
  "variables": {
    "--bg":      "#F8F5F0",
    "--bg2":     "#FFFFFF",
    "--nav-bg":  "#0A2540",
    "--primary": "#0A2540",
    "--accent":  "#D4AF37",
    "--text":    "#1A1A2E"
  },
  "custom_css": "",
  "font_imports": ""
}

09 · Submission Checklist

Before submitting, verify all of the following:

ItemRequirement
Required variablesAll 6 required variables are set: --bg, --bg2, --nav-bg, --primary, --accent, --text
ContrastText on backgrounds meets WCAG AA contrast (4.5:1 minimum). Check at webaim.org/resources/contrastchecker
Buttons visibleAdd to Cart and Buy Now buttons are clearly visible and legible in all states
Prices visibleProduct prices are readable on the product card background
No JSCustom CSS contains no <script> tags or JavaScript
Font importsCustom fonts use a Google Fonts @import URL in the Font Imports field, not in custom CSS
Preview imagesAt minimum 1 screenshot at 1280×800px showing the storefront with your skin applied
Base themeA base theme is selected (tala, isla, or perlas)
Name & descriptionSkin name is unique and descriptive. Description explains aesthetic, mood, and best-fit shop types.
Price setMonthly price is entered (0 for free). Currency is selected.

10 · Review Process

All skins go through a two-stage review before appearing in the marketplace:

You'll receive an email when your skin is approved or if changes are needed. If changes are requested, you can resubmit from your designer dashboard — no need to create a new skin entry.

11 · Full Example

A complete skin submission for a Japanese minimalist theme called "Washi":

CSS Variables (what you enter in the form)

/* Required */
--bg:         #FAFAF8;
--bg2:        #FFFFFF;
--bg3:        #F2F0EB;
--nav-bg:     #1C1C1C;
--primary:    #1C1C1C;
--accent:     #C84B31;
--text:       #1C1C1C;

/* Optional enhancements */
--text-2:     #444444;
--text-muted: #999999;
--border:     #E8E5E0;
--accent-dim: rgba(200,75,49,0.08);
--badge-bg:   #1C1C1C;
--badge-text: #FFFFFF;
--shadow:     0 2px 16px rgba(28,28,28,0.06);
--heading-font: 'Noto Serif JP', serif;
--body-font:    'Noto Sans JP', sans-serif;

Font Imports field

@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@300;400&family=Noto+Sans+JP:wght@300;400;500&display=swap');

Custom CSS field

/* Rounded product cards */
.product-card { border-radius: 2px; }

/* Uppercase category chips */
.category-chip { letter-spacing: 1.5px; text-transform: uppercase; font-size: 10px; }

/* Thinner button style */
.btn-add-cart { border-radius: 2px; letter-spacing: 1px; text-transform: uppercase; font-size: 12px; }
Ready to submit?
Head to shops.tapat.dev/designers, sign in to your designer account, and click + Upload Skin.
TΛPΛT HOLDINGS, INC. · DESIGNER PROGRAM SPECIFICATION v1.0 · 2026