Primary button — three sizes
The anodized button at 32 / 40 / 44px. Size is layout only — the material is the same.
- skeu-btn
- skeu-btn-primary
Everything a developer or an AI agent needs to adopt the GINI brand, in one place: a live library of 112 components with copy-ready code, a public MCP server any AI assistant can read, and files you import in one line — the same classes and tokens that run this site.
gini.iq/developerclaude mcp add --transport http gini-brand https://gini.iq/mcp<link rel="stylesheet" href="https://gini.iq/brand.css">
<link rel="stylesheet" href="https://gini.iq/skeu.css">@import url("https://gini.iq/brand.css");Copy-ready HTML for each
Streamable HTTP · JSON-RPC
CSS · Tailwind · Tokens · MD
HTML · React · Vue · Svelte
Pick what fits your project: an AI assistant that reads the brand over MCP, two stylesheets for any HTML page, or instruction files for coding agents. All three are fed from the same data and move together.
Add the server to Claude, ChatGPT, Cursor or VS Code, then ask it about any colour, logo or component.
claude mcp add --transport http gini-brand https://gini.iq/mcpTwo stylesheets with zero dependencies: the palette and typeface in brand.css, every material in skeu.css.
<link rel="stylesheet" href="https://gini.iq/brand.css">
<link rel="stylesheet" href="https://gini.iq/skeu.css">A rules file in the project root makes Cursor, Claude Code or Codex respect the brand on every edit.
curl https://gini.iq/AGENTS.md > AGENTS.mdNo keys, no sign-up: add gini.iq/mcp to your client and the assistant reads colours, logos, components and voice straight from the source — 17 tools, 6 resources and 3 ready prompts.
https://gini.iq/mcpStreamable HTTP, stateless, open CORS — paste it into any MCP-capable client, or pick your client below.
Every tool reads from the same source of truth that renders this page.
get_brand_overviewName, positioning, facts and every canonical endpointget_paletteColours in HEX/RGB/HSL/CMYK/Pantone with their rolescheck_contrastWCAG contrast ratio and rating for any two coloursget_typographyTypeface, weights and the type scaleget_logosThe right logo files for any surface, with rules and measurementsget_product_marksProduct marks and lock-up rules with the GINI markget_design_systemMaterials, lighting, elevation, radii, motion and tokenslist_componentsSearchable index of the copy-ready componentsget_componentThe full HTML of one componentget_layout_systemSpacing scale, grid and breakpointsget_iconographyIcon library and its rulesget_imagery_guidelinesPhotography and illustration principlesget_mascotsOfficial mascot poses with direct URLsget_voiceVoice traits and writing examplesget_press_kitBoilerplate, facts, trademark and FAQget_brand_promptThe complete system prompt for modelsget_stylesheetbrand.css, Tailwind, skeu.css or W3C tokensgini://brand/manifestThe full brand manifest (JSON)gini://brand/guideThe brand book (Markdown)gini://brand/promptThe system promptgini://brand/cssCSS variablesgini://component/{id}One component with its codegini://logo/{id}One logo file (SVG)gini_brand_systemLoad the whole GINI identity into the conversationdesign_gini_screenDesign a screen or page with GINI componentswrite_gini_copyWrite copy in the GINI voiceThe server is read-only, needs no keys, and is licensed for editorial and approved-partner use. For commercial co-branding email info@gini.iq.
shadcn-compatible CSS variables, a Tailwind v4 block, W3C-format tokens and ready system instructions for Claude, Cursor and coding agents. Every file is a stable URL, read directly and updated without you touching your project.
/* globals.css */
@import url("https://gini.iq/brand.css");
/* That's it — every --gini-* token + shadcn alias is now available. */
.btn-primary {
background: var(--gini-orange);
color: var(--gini-cream);
}112 live components built from the very same classes that run this site. Every card shows the component working, with copy-ready HTML that works in any app — plain HTML, React or Vue — with zero dependencies.
One line pulls in every skeu-* class and token. Pair it with brand.css for the palette and typeface.
<link rel="stylesheet" href="https://gini.iq/skeu.css">@import url("https://gini.iq/skeu.css");<link rel="stylesheet" href="https://gini.iq/brand.css">
<link rel="stylesheet" href="https://gini.iq/skeu.css">The classes work with plain HTML, React, Vue, Svelte or any framework — zero dependencies. RTL is supported automatically via dir="rtl". Layout utilities (h-10, px-4, gap-2…) are Tailwind and can be swapped for your own CSS.
The anodized button at 32 / 40 / 44px. Size is layout only — the material is the same.
Ceramic secondary, tinted, ghost, destructive, and dark for graphite surfaces.
A 40px square with only an icon — never without aria-label.
Icon at the start edge, label after it — flips automatically in RTL.
A spinner inside the control with aria-busy and pointer disabled.
55% opacity, desaturated, no motion — the disabled attribute is enough.
Adjoining keys sharing one radius; the split button separates the main action from its menu.
A raised round button for the screen's main action — lives at the floating level.
The field is a recessed well; the error state adds is-invalid and a message linked via aria-describedby.
As printed on your ID.
Enter a valid email address.
The icon is pinned to the start edge with logical properties (start-3 / ps-9).
A pill-shaped input with a search icon and a keyboard shortcut hint on the end edge.
A native select inside a recessed well with a hand-drawn chevron on the end edge.
The same well with free height and a character counter below.
Soft recessed rows; each row is a full label so the touch target is ≥ 44px.
Options as cards; the chosen card is pressed in with an accent rim (skeu-panel-selected).
A mechanical role=switch with aria-checked; the thumb slides 20px.
Raised keys inside a well; the active key is seated in a deeper fill (skeu-tab-active).
A native range with accent-color inside a well, with a value readout in a meter.
A recessed well with an inner dashed border and an icon tile; the real input is visually hidden.
Six recessed one-character cells, always LTR for digits.
A native input[type=date] in the same well — you get the browser picker for free.
A raised panel, one column on phones and two from sm, with the actions in a bottom row.
A raised error alert above the form listing the failing fields with jump links.
An instrument readout (skeu-meter): small label, big tabular number, helper line.
Three readouts in a grid, each with a green or neutral delta chip.
An interactive panel: image in a ceramic tile, badge, IQD price, add-to-cart.
-20%A raised-2 panel with a “Most popular” chip, big price, feature list and a primary button.
An anodized icon tile, title, short body — the basic unit of any features grid.
Order before 2 pm and receive it tonight anywhere in Baghdad.
Quote, stars, and the speaker row with a ceramic avatar.
“Ordered at noon, it was at my door by seven. Never using another app.”
A two-letter avatar, name and role, and a stacked avatar group with white rings.
skeu-table: a raised sticky header, recessed body, rows that light up on hover with an accent edge.
| Order | Customer | Status | Total | |
|---|---|---|---|---|
| #48213 | Sara A. | Delivered | 89,000 | |
| #48212 | Omar K. | Shipping | 142,500 |
Key/value pairs in a soft well with engraved dividers — for order details and invoices.
A column of nodes: done (green), current (anodized), upcoming (well).
Four materials: tinted, solid, neutral, success — plus a counter chip and a dismissible chip.
A recessed track with an anodized fill; the ring is an SVG in the same colour with a readout in the middle.
A semicircle inside an instrument readout — for satisfaction, capacity or quotas.
A recessed well with a dashed inner border, a tinted icon tile, short copy and one action.
Recessed blocks with a light sweep, in the same geometry as the card they stand in for.
A panel of tappable rows with icon, title, subtitle, and a chevron that mirrors in RTL.
A raised system object with a coloured start edge — success, error, warning, info.
A short floating notice with icon, action and dismiss; enters with animate-skeu-pop.
A full-width accent well for in-page announcements, with a link and dismiss.
Free delivery on orders above 50,000 IQD until Friday. Details
A dimmed backdrop + overlay panel with animate-skeu-dialog; Escape closes and focus is trapped inside.
A floating surface with animate-skeu-pop, role=menuitem rows that rise on hover, and a red destructive item.
A small graphite surface above the trigger, linked via aria-describedby.
A floating surface with rich content (title, body, action) tied to a trigger with aria-expanded.
Redeem 1,000 pts for 5,000 IQD off your next order.
The same dialog with a warning tile and a red destructive button — for irreversible actions.
A dialog pinned to the bottom of the screen with a drag handle — for phones.
The four standard GINI states: preparing, out for delivery, delivered, cancelled.
Thumbnail, name, variant, quantity stepper, line price and a ghost remove button.

The current price is bold, the old one struck through, and the discount lives in a success chip.
Or 3 × 29,667 IQD with installments
Two ceramic keys around a readout well; the minimum disables the decrease key.
Three horizontal stops with a progress track between them — the mobile form of the timeline.
Logo in a ceramic tile, name, verified chip, rating, and a follow button.
Payment options as radio cards: Qi Card, ZainCash, cash on delivery.
A coupon field with an apply button, and an anodized loyalty chip with a tabular balance.
A pulse chip, a headline with an accent word, a lead, two buttons, and the official mascot on the other side.
Payments, delivery and business tools in one ecosystem — for merchants of every size.

A monospaced counter, an eyebrow chip, a large title and a lead at a comfortable reading width.
Storefront, payments, delivery and loyalty — connected, so growth is one decision away.
Three raised cards with an anodized icon tile, a title and a short body — collapses 1 / 2 / 3 columns.
Qi Card, ZainCash and cash on delivery — settled to your account automatically.
Nationwide couriers with live tracking for you and your customer.
Points on every order bring customers back without a second app.
Four instrument readouts inside a recessed well — for headline numbers on the home page or in reports.
Numbered steps with anodized tiles and a connecting rule between them; stacks on phones.
Register in minutes and list your products with photos and prices.
Customers pay online or on delivery; you confirm from the merchant app.
A courier picks up the parcel and your settlement lands automatically.
A graphite surface with an orange glow, a strong title, and a primary button with a secondary link — closes the page.
Join 2,500+ merchants already growing with GINI. No setup fee.
Native details/summary rows inside one panel; no JavaScript and keyboard-accessible by default.
A recessed well holding partner logos on raised tiles, greyscale until hovered.
Trusted by

A raised panel with a recessed email field and a primary button on one line, and a small privacy note below.
Pricing, delivery and growth ideas from the GINI team. No spam.
By subscribing you agree to our privacy policy.
Two graphite buttons for the App Store and Google Play with an icon and two lines of text — always shown together.
Phone, email and hours as rows with soft icon tiles, plus a tinted WhatsApp button.
A graphite surface with four link columns, the white wordmark, and a rights line with legal links.
The full merchant-dashboard frame: a frosted top rail with search and notifications, a side rail of sections that becomes a horizontal strip on phones, and a content area carrying a raised card with readouts.
TechZone · Karrada · Saturday, 26 Sep
A text breadcrumb above a large title with status chips, an icon meta line, and the actions grouped on the end edge; the actions drop below the title on narrow screens.
Ali HassanKarrada, Baghdad12 Sep 2026, 14:023 items · 267,000 IQD
A list column with selectable rows and a search field beside a detail panel with a header, a summary and action buttons; the chosen row is an accent well, and the panes stack on phones.
Karrada, Baghdad · Qi Card •••• 4821
A vertical tab list of raised keys inside a well, the active key seated in orange, beside the settings panel with fields, toggles and save buttons; the tabs become a horizontal strip on phones.
What customers see on your GINI storefront.
A frosted rail that sticks to the bottom of the scroll area: the total summary on the start edge, a secondary and a primary button on the end edge; the buttons stretch full-width on phones.
Wireless headphones ANCBlack · × 1178,000
Clear phone caseTransparent · × 284,000A recessed search field, a sort select, a filters button with a count, soft category tabs, removable active-filter chips, and the result count on the end edge.
128 results
Seven CSS columns with day labels and hairline y-axis rules; the peak column is anodized with its value on the cap, the rest lightly tinted.
A seven-day by six-slot grid; each cell steps from an empty well through three accent tints to the anodized fill for the peak, with a less-to-more legend.
A headline value with a delta chip, then an inline SVG sparkline with a light area wash and an end marker — 30 days of direction at a glance.
Horizontal segments stacked in a recessed track with a surface gap between them, plus a four-category legend carrying names and shares.
Five rows: a label, a horizontal bar proportional to the value, and a tabular figure in an aligned column — a quiet alternative to the bar chart.
An instrument readout that measures the month against a target: a measure bar with an anodized fill on a recessed track, a dark target tick across it, a scale beneath, and the gap to target in IQD.
A conversation panel: merchant avatar with presence in the header, bubbles seated in a recessed well — incoming on raised ceramic, outgoing on the anodized plate with read ticks — a three-dot typing indicator, and a pill composer with attach and send.
A parent comment with avatar, name, a verified-buyer chip and relative time, ghost like and reply actions; the merchant's reply nests one level behind a start rule, and a reply box with a recessed textarea and post button closes the panel.
Battery lasts two full days and delivery to Karrada took under three hours. Does the black version come with the same one-year warranty?
Yes — every colour ships with the same one-year warranty, registered automatically to your GINI account.
A header with the unread count and a mark-all-read button, then four rows with a tiled icon, title, body and time; unread rows are bolder and carry an accent dot at the end, and the tile material signals the kind of notification.
A vertical timeline of merchant-dashboard events — new order, settlement, low stock, review, new branch — each with an icon tile whose material signals its kind, a relative time at the end, a detail line with chips, and a load-earlier button.
New order #48214 from Sara A. — 2 items, 142,500 IQD
Settlement sent — 2,340,000 IQD to Qi Card •••• 4821
Low stock — Wireless headphones ANC, 3 left
Zainab A. left a 5-star review
Omar K. added the Mansour branch
Three inbox rows: sender avatar, name and time on one line, subject, a truncated preview, a neutral attachment chip and an unread dot; unread rows are bolder with an accent time, and each row rises into ceramic on hover.
A ticket card: monospaced id, status chip, red-flag priority, title, a definition list for customer, order, category and due time, the last message in a soft well with its sender and time, then the assignee with escalate and reply buttons.
The app says delivered at 16:20 but nobody rang the bell, and the building guard did not receive anything either. Can you check with the courier?
A raised-2 panel with an anodized lock tile and greeting, a phone-or-email field with a leading icon, a password field with a ghost show/hide key, a remember-me row with a recovery link, then a full-width primary sign-in button, an engraved divider and a create-account link whose arrow mirrors in RTL.
A registration form: a name field, a phone field with a +964 prefix pinned to the start edge, a password field with a show key and a four-segment strength meter on a recessed track with a semantically coloured caption, a terms-and-privacy checkbox, then a primary create button and a sign-in link for existing accounts. The snippet ships the static Good state with an empty field; the live twin seeds a demo password to drive the meter.
A round avatar on a ceramic tile, the name with a role chip, a store-and-location line, LTR email and phone, and a secondary edit button on the end side; below, three instrument readouts in a three-column grid for orders, rating and member-since year.

TechZone · Karrada, Baghdad
ali.hassan@techzone.iq · +964 770 123 4567
A panel with a header and a list of divided rows for the settings a toggle cannot express: recessed selects with a drawn chevron for language and currency, a radio group of raised keys in a well for the appearance, a navigation row to change the password with a chevron that mirrors in RTL, and a single toggle for two-factor authentication with a Recommended chip; selects are tied to their labels through label/for, the group and the toggle through aria-labelledby.
Changes are saved automatically.
A header with a device count and three session rows: the device icon on a tile, device and browser name, a green this-device chip for the current session, location and last-active time with small icons, and a secondary revoke button for the others; a footer button in the error colour signs out of every other device.
Devices signed in to your account. Revoke any you don't recognise.
An alert panel with a red error edge on the start side and an error-coloured title beside a warning icon on a ceramic tile; an export-data row with a secondary button, an engraved divider, then a delete-account row with a red destructive button — the buttons wrap under the copy on narrow screens.
These actions affect your whole account. Read carefully before you continue.
A raised panel with three compact lines (thumbnail, name, variant and quantity, line price), then subtotal, delivery and a success-coloured discount, an accent divider before the large total, and a full-width place-order button with a security line.
Secure checkout · Qi Card, ZainCash or cash on delivery
A header with a step chip and a three-segment progress track, name and +964 phone fields in a grid that splits into two columns, a pressed-in saved-address card with a default chip and a ghost 'Change' button, three delivery-slot radio cards with one pressed in, and back / continue buttons.
A listing section that complements the single product card instead of repeating it: a header with the title, result count and a sort select, then a grid — one column on phones, two from sm, three from lg — holding two product cards as-is and a skeleton in the same geometry for the card still loading, and a footer with a 'showing x of y' counter and a ceramic 'Load more' button.
128 products · Delivered today across Baghdad
-20%
NewA graphite card with an orange glow carrying the balance, a partially masked account number, a verified chip and a quick-action row (Top up, Send, Pay QR), with a 'Pending' well beneath holding two items: an incoming refund with a signed amount and a pending chip, and an auto top-up schedule with a switch.
Tactile rows in one panel: an icon tile per movement type, the merchant, a category chip and date, and a signed amount — green for money in, red for money out — with a month select in the header and the net in the footer.
An invoice on the raised-header, recessed-body table: invoice meta (number, issue and payment dates, buyer) with a paid chip, item rows with quantity, unit price and amount, a footer with subtotal, delivery, discount and total, and download / print buttons.
TechZone · Karrada, Baghdad · Order #48213
| Item | Qty | Unit price | Amount |
|---|---|---|---|
| Wireless headphones ANCBlack · SKU TZ-HP-204 | 1 | 89,000 | 89,000 |
| USB-C fast charger 65WWhite · SKU TZ-CH-065 | 2 | 24,000 | 48,000 |
| Silicone phone caseClear · SKU TZ-CS-118 | 1 | 18,000 | 18,000 |
| Subtotal | 155,000 | ||
| Delivery · Baghdad | 5,000 | ||
| Discount · WELCOME10 | −15,500 | ||
| Total | 144,500 IQD | ||
Three avatar sizes (32 / 40 / 56px) on a round ceramic tile carrying a photo or initials, with a white-ringed presence dot (online / away) on the end corner; beside them three more shapes: a square merchant or entity avatar carrying its logo, an avatar topped by a solid chip counting unread notifications, and a round skeleton placeholder that holds the spot until the photo arrives — the white ring sits on a plain wrapper so the material's shadow cannot swallow it.
56A panel whose header carries a soft keyboard tile, a title, a subtitle explaining that “?” opens the list and a decorative “?” key on the end side, then a definition list with the action on the start side and its keys on the end side; each key is an embossed neutral chip in monospace, key groups are pinned LTR so their order never flips in Arabic, and sequences are joined with “then”.
Press ? anywhere in the merchant dashboard to open this list. Ctrl is ⌘ on Mac.
A code window on the graphite surface: a top bar with the filename, the language and a dark copy button that announces its state through aria-live, and a body that keeps line numbers in a separate, unselectable column so they never copy with the code; long lines scroll horizontally, the whole block is pinned LTR, and comments are dimmed.
import { GiniClient } from "@gini/sdk"const gini = new GiniClient({ apiKey: process.env.GINI_API_KEY })const quote = await gini.checkout.quote({ merchant: "techzone", items: [{ sku: "ANC-200", qty: 2 }], currency: "IQD",})console.log(quote.total) // 178000 — IQD, no decimalsA recessed input well holding removable tag chips, each with a small ghost remove key, and a transparent field that takes the remaining space and wraps to a new line when full; the whole well lights up on focus through focus-within, and a help line below explains the add and delete keys next to a tag counter.
Press Enter to add, Backspace to remove the last tag.3 / 10
A panel with the rating label on the start side and the average with its count on the end side, then a five-star radio group — filled stars in orange, empty ones drawn as outlines, only the chosen option in the tab order (roving tabindex) — and a caption below announcing the selected grade through aria-live.
Very good · 4 of 5
A read-only value in a recessed well, monospace and pinned LTR, with a ceramic copy button seated on its end edge sharing the corners; the second row shows the copied state — a green check on an inner span so the button's own colour rule cannot override it — announced through aria-live, and a help line sits under the key.
Safe to use in the browser. Rotate it any time from the developer settings.
This same library — names, classes and HTML snippets — is available to any AI agent through the MCP server, brand.json and brand.md, and is embedded in brand-prompt.md, cursorrules and AGENTS.md.
Every skeu-* class is a physical material with a fixed recipe of light, shadow and edge. Know what you are putting on screen before you copy it, and use the same tokens in your own CSS when you need something the library does not have.
| Level | Token | Classes | Used for |
|---|---|---|---|
| 00Recessed | --skeu-shadow-recessed | .skeu-well | Functional content trays, progress tracks, the soft selected tab |
| 01Well | --skeu-shadow-well | .skeu-input / .skeu-well-soft | Inputs, checkboxes and switches, row lists |
| 02Flush | --skeu-shadow-flush | .skeu-btn-ghost / .skeu-list-item | Menu rows and ghost buttons at rest — they rise on interaction |
| 03Raised 1 | --skeu-shadow-raised-1 | .skeu-panel | Standard cards, large chips, alerts |
| 04Raised 2 | --skeu-shadow-raised-2 | .skeu-panel-2 / .skeu-rail | Hero panels, major containers, the header rail, any card on hover |
| 05Floating | --skeu-shadow-floating | .skeu-floating | Dropdowns, floating pills, popovers |
| 06Overlay | --skeu-shadow-overlay | .skeu-dialog | Dialogs above a lightly dimmed backdrop |
| 07Pressed | --skeu-shadow-pressed | :active / .skeu-tab-active | The instant any control is pressed, and the selected tab |
The exact names in skeu.css and brand.css — copy them as they are.
| Token | Value | Meaning |
|---|---|---|
| --skeu-bg | oklch(0.962 0.012 72) | Polymer base |
| --skeu-surface | oklch(0.993 0.004 80) | Ceramic surface |
| --skeu-well | oklch(0.955 0.01 72) | Recessed well colour |
| --skeu-accent | #f05d25 | GINI orange |
| --skeu-accent-deep | #c9481a | Anodized control edge |
| --skeu-accent-text | #b8410f | Text-safe orange (AA body text) |
| --skeu-accent-text-strong | #8f3210 | Orange text on 13–16% accent tints |
| --skeu-edge-control | oklch(0.62 0.02 66) | Form-control boundary (≥3:1) |
| --skeu-edge | oklch(0.86 0.018 68) | Surface edge colour |
| --skeu-highlight | rgba(255,255,255,0.92) | Lit top edge |
| --skeu-ink | 37, 22, 10 | Warm shadow ink (RGB) |
| --skeu-shadow-raised-1 | inset 0 1px 0 highlight, 0 1px 1px, 0 2px 4px -1px, 0 10px 24px -14px | Standard card stack |
| --skeu-shadow-control | inset 0 1px 0 white/38, inset 0 -2px 0 dark/32, 0 1px 2px, 0 6px 14px -6px orange/55 | Primary control stack |
| --skeu-focus-rim | 0 0 0 2px #fff, 0 0 0 4px --skeu-accent-deep + inset | Two-tone focus rim (≥3:1) |
| --skeu-transition-fast / -normal | 150ms / 260ms | Press timing / lift timing |
A JSON manifest with a formal schema, a Markdown book, the logo files, the mascot pack and llms.txt — for any browser, agent or build pipeline. No HTML to parse and no session to hold.
/mcpMCP/en/brand.jsonJSON/en/brand.mdMD/schemas/brand-manifest.jsonSchema/brand/Folder/brand/mascots/Folder/llms.txtTXTcurl -s https://gini.iq/en/brand.json | jq '.palette[0]'curl -s https://gini.iq/skeu.css | grep -c '^\.skeu-'curl -s https://gini.iq/mcp -H 'Accept: application/json'The version is stamped in the page head, in brand.json and in skeu.css together. The URLs never change; link to them directly and you always get the latest.
Short answers on authentication, frameworks, direction, versions and licensing. Not here? Email info@gini.iq.
Send your technical question or partner-access request to info@gini.iq and we reply within one business day. For everything about identity — logo, colours, typography, voice — there is the brand guide.