HoneyBunner · Style guide · 01

Buttons

assets/hb-controls.css
Flat buttons · min-height 46px · Manrope 700 · ls 0.12em
.hb-btn--gold · one per screen · hover → honey
.hb-btn--dark · cart, checkout · hover → moss black
.hb-btn--light · secondary on paper, no border
.hb-btn--accent · follows var(--hb-accent)

Sharp rectangles, no radii, no borders: the fill is the border. Gold is the single primary on a screen and stays gold on every realm page — it reads the invariant gold channel. Only .hb-btn--accent follows the character colour.

States
click → loading 900ms → success 1.5s → default
[data-state="loading"] · three square dots
[data-state="success"] · inverts
[disabled] · paper-deep, text 38%

Focus is an inner 2px line inside the shape — tab through the row to see it. Nothing is ever drawn outside a control and the system focus ring is replaced, never stacked. Every hover is duplicated by :active so touch gets the same feedback.

Comic buttons · double contour from the art
.hb-btn--comic · gradient sweeps 340ms on hover
.hb-btn--beam · one per screen, drops only
.hb-btn--ghost · champagne rim light inside
.hb-btn--comic-solid · the light-background variant

Ink contour 1.5px outside. The gradient exists only on dark: restrained metallic, dark side on top (171°), no light line inside. On a light background the outlined button is always flat gold — a gradient there turns muddy. Showcase CTAs and hero only; service buttons stay flat.

Add & text link
.hb-add · 76×44 · hover inverts to ink
Read material guide .hb-text-link · never underlined · hover → deep gold
Placement · hero actions
Read material guide
.hb-actions · desktop row gap 28px · mobile column gap 10px, primary full width

Resize the window under 768px: the row becomes a stack, the primary goes full width and the text link pins left. Touch targets never drop below 44px.

HoneyBunner · Style guide · 02

Plates & badges

assets/hb-controls.css
Price plates · serif numerals, gold channel
€46.58 .hb-price
€59.00€46.58 .hb-price with <s> compare-at
€46.58 .hb-price--bare · buyline, PDP

Prices are set in the display serif so the numerals stop fighting the Manrope labels around them. The plate reads --hb-gold, not --hb-accent: a price is gold on the pink Vibrators page and gold on the blue BDSM page.

Badges · flat fills, no borders
Best seller New Low stock Realm

Ink/gold, gold/ink, paper-deep for neutral. .hb-badge--accent is the only one that follows the character colour — use it for realm labels, never for stock or sale.

Chips · subnav and filters

Chips carry the realm accent; the current one inverts to gold so the active position is always the brand colour, whatever realm the page is in.

Buyline · bottom strip of a product card
€46.58
.hb-buyline · desktop 58px, mobile 54px · fill paper-warm, top line --hb-line

Price left, square Add right. In the comic card the price moves up into the gold plate top-right and the buyline stays as the place for Add.

HoneyBunner · Style guide · 03

Form controls

assets/hb-controls.css
Size pills · 44px cells
.hb-pill · selected inverts to ink · sold out 30% + strike, not clickable
Quantity stepper
.hb-qty · 44px cells · the number is serif · at quantity 1 the minus becomes a remove icon
Toast + undo
Removed from cart

Destructive actions happen immediately, with no “are you sure?”: a 5-second toast with Undo. Adding to cart gets no toast at all — the button plays Added and the cart badge twitches.

HoneyBunner · Style guide · 04

Typography

assets/hb-base.css
Heading one, condensed.
.hb-h1 · Oswald 600 uppercase · clamp(28px, 4.6vw, 46px) · ls 0.01em · lh 1.02 · one per page
Heading two for sections
.hb-h2 · clamp(22px, 3vw, 32px) · ls 0.015em · lh 1.06
Heading three inside content
.hb-h3 · clamp(18px, 2vw, 21px) · ls 0.015em · lh 1.1
Product card title
.hb-title · same voice one step down · clamp(15px, 6.2cqw, 19px) · container units, no media query
The Intimacy Edit · Issue 06
.hb-kicker · Manrope 700 · 11px · ls 0.16em · above a heading, never alone
Lead paragraph in serif carries the editorial voice: one calm sentence that sets the section before the interface takes over.
.hb-lead · serif · lh 1.5 · the serif is for leads and prices only
Body text is calm Manrope: descriptions, guides and cart copy. It holds a comfortable 1.6 line height with body-safe silicone marked inline in flat gold.
.hb-body · Manrope 400 · 14–15px · lh 1.6 · .hb-mark for the marker
Caption · Sku D-243579 · Silicone · 24 × 5 cm
.hb-caption · Manrope 700 · 10.5px · ls 0.1em · metadata, specs, footnotes
Lists
  • Bullet items get a flat gold square marker
  • Two-line items hang cleanly off the marker with a 12px gutter
  • Never round dots, never dashes
  1. Numbered steps use serif gold numerals
  2. Same rhythm as bullets, numerals align left
  3. Used in guides and how-to blocks
Callout
Material note Callout is a flat night block: gold kicker, calm body, no borders, no icons. Used for material guides, care notes and policy hints.
.hb-callout + .hb-callout__label
HoneyBunner · Style guide · 05

Variables

assets/hb-tokens.css
Gold — the invariant brand channel
--hb-gold
price, CTA, accent
--hb-honey
hover shadow, secondary gold
--hb-gold-deep
gold on light, link hover, numerals
--hb-champagne
inner comic contour, rim light
--hb-on-gold
text on gold

Never re-tinted by a page. Price plates, the one primary CTA, the logo, the card lift shadow. Click any swatch to copy its var().

Accent — the realm channel, live on this page
--hb-accent
realm primary, defaults to gold
--hb-accent-strong
hover state — primary darkened 8%
--hb-accent-secondary
decorative second tone, never a state
--hb-on-accent
text on the accent fill
--hb-accent-surface
realm page tint
--hb-accent-tint
12% wash for backgrounds

These values are read from the live page, so on a plain page they are gold. Open a collection with a character to watch the whole channel move:

Buzzbringer #FF5FA2 · vibrators Reign Demon #2D4CC8 · bdsm-kink Slick Alchemist #2970F5 · essentials Mad Tinker #57A639 · toy box Iron Cock #E25822 · cock-ball-gear Peach Devourer #A4161A · invades all Strap Witch #6C2DC7 · clothing The Sculptor #C9A227 · dildos
Ink & surfaces
--hb-ink
contour, text, panels
--hb-night
dark sections, hero
--hb-moss-black
hover of dark buttons
--hb-ink-soft
secondary copy on paper
--hb-ink-dim
tertiary copy on dark
--hb-paper
light section background
--hb-paper-deep
underlays, secondary buttons
--hb-paper-warm
card buyline strip
--hb-panel
card window
--hb-rule
rules, dividers
--hb-rule-soft
hairline inside light panels
--hb-line
buyline top line
Gold gradient
--hb-gold-gradient · 171°, dark side on top · hero slabs, showcase CTAs
--hb-gold-gradient-btn · shorter ramp, swept on hover via background-position

Small plates stay flat --hb-gold. On a bright gradient fill the light inner contour is not drawn.

Type
--hb-font-title
--hb-font-ui
--hb-font-serif
--hb-font-mono
--hb-h1-size
--hb-h1-tracking
--hb-h1-leading
--hb-h2-size
--hb-h3-size
--hb-title-size
--hb-title-weight
--hb-kicker-size
--hb-kicker-tracking
--hb-ui-size
--hb-ui-tracking
--hb-lead-size
--hb-body-size
--hb-body-leading
--hb-caption-size
Motion
--hb-dur-micro
--hb-dur-ui
--hb-dur-lift
--hb-dur-slow
--hb-lift
--hb-lift-shadow
--hb-image-hover-scale
.hb-lift — hover me

One shared hover gesture: translate(−3px, −3px) plus a hard shadow, no blur. prefers-reduced-motion zeroes every duration and the lift in one place, in the tokens file — nothing else has to check for it.

Control geometry & layout
--hb-tap
--hb-btn-height
--hb-btn-height-comic
--hb-btn-pad-x
--hb-add-min-width
--hb-add-height
--hb-buyline-height
--hb-outline-width
--hb-outline-hairline
--hb-page-max
--hb-content-max
--hb-gutter
--hb-section-gap