Remixes of ported2browser.org
Latest remixes
No public remixes yet. Be the first to make one.
Remix itLatest remixes
No public remixes yet. Be the first to make one.
Remix itSwitch between the rendered Visual preview and the Raw DESIGN.md.
version: alpha
name: Ported2browser
description: |
Ported 2 Browser's design system embraces a playful, nostalgic gaming
aesthetic rooted in retro arcade and browser culture. The visual identity
combines bold, high-contrast elements with sharp edges, flat surfaces, and
vibrant accent colors that evoke classic game interfaces. The design
prioritizes clarity and accessibility through generous whitespace, strong
typographic contrast, and intentional use of color blocks rather than
gradients. Every interactive element has pronounced depth created through
offset shadows and geometric scale changes—nothing is subtle. The overall mood
is energetic, inviting, and unapologetically digital, celebrating the heritage
of web-based gaming while maintaining modern usability.
source:
url: "https://ported2browser.org/"
pagesAnalyzed: 6
extractedAt: 2026-11-07
tokensMeasured: true
colors:
primary: "#F8DB52"
link: "#1E293B"
canvas: "#F1F0EA"
surface: "#FFFFFF"
on-primary: "#0F0F14"
ink: "#0F0F14"
body: "#2C2A26"
muted: "#3C3B35"
faint: "#53534E"
hairline: "#D4D2C7"
accent-1: "#AEBED0"
accent-2: "#64748B"
accent-3: "#C2410C"
accent-4: "#22B8CD"
accent-5: "#D97757"
accent-6: "#3186FF"
neutral-1: "#DBE2ED"
typography:
display:
fontFamily: "Archivo Black"
fontSize: 52px
fontWeight: 400
lineHeight: 1.05
letterSpacing: -1.7px
heading-xxl:
fontFamily: "DM Sans"
fontSize: 27px
fontWeight: 800
lineHeight: 1.25
letterSpacing: -0.7px
heading-xl:
fontFamily: "DM Sans"
fontSize: 19px
fontWeight: 800
lineHeight: 1.5
letterSpacing: -0.5px
heading-lg:
fontFamily: "DM Sans"
fontSize: 16px
fontWeight: 800
lineHeight: 1.2
letterSpacing: 0px
heading-md:
fontFamily: "DM Sans"
fontSize: 13px
fontWeight: 800
lineHeight: 1.5
letterSpacing: 0px
heading-sm:
fontFamily: "DM Sans"
fontSize: 12px
fontWeight: 800
lineHeight: 1.3
letterSpacing: 0px
heading-xs:
fontFamily: "DM Sans"
fontSize: 10px
fontWeight: 800
lineHeight: 1.4
letterSpacing: 1.7px
textTransform: uppercase
body-xl:
fontFamily: "DM Sans"
fontSize: 17px
fontWeight: 400
lineHeight: 1
letterSpacing: 0px
body-lg:
fontFamily: "DM Sans"
fontSize: 16px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
body-md:
fontFamily: "DM Sans"
fontSize: 14px
fontWeight: 400
lineHeight: 1.85
letterSpacing: 0px
body-sm:
fontFamily: "DM Sans"
fontSize: 13px
fontWeight: 400
lineHeight: 1.65
letterSpacing: 0px
body-sm-strong:
fontFamily: "DM Sans"
fontSize: 13px
fontWeight: 700
lineHeight: 1.5
letterSpacing: 0px
body-xs:
fontFamily: "DM Sans"
fontSize: 11px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
button:
fontFamily: "DM Sans"
fontSize: 11px
fontWeight: 700
lineHeight: 1.5
letterSpacing: 0px
label:
fontFamily: "DM Sans"
fontSize: 14px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-xl:
fontFamily: "DM Sans"
fontSize: 12px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-lg:
fontFamily: "DM Sans"
fontSize: 11px
fontWeight: 400
lineHeight: 1.7
letterSpacing: 0px
caption-lg-strong:
fontFamily: "DM Sans"
fontSize: 11px
fontWeight: 800
lineHeight: 1.5
letterSpacing: 0px
caption-md:
fontFamily: "DM Sans"
fontSize: 10px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-sm:
fontFamily: "DM Sans"
fontSize: 9px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-xs:
fontFamily: "DM Sans"
fontSize: 8px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
code-sm:
fontFamily: monospace
fontSize: 13px
fontWeight: 400
letterSpacing: 0px
code-xs:
fontFamily: "JetBrains Mono"
fontSize: 12px
fontWeight: 600
lineHeight: 1.2
letterSpacing: 0px
rounded:
none: 0px
xs: 3px
sm: 6px
spacing:
xxs: 4px
xs: 8px
sm: 12px
md: 16px
lg: 20px
xl: 24px
xxl: 28px
xxxl: 32px
section: 36px
band: 40px
borderWidths:
thin: 1px
medium: 2px
thick: 3px
shadows:
sm: "rgb(15, 15, 20) 2px 2px 0px 0px"
md: "rgba(15, 23, 42, 0.07) 0px 8px 24px 0px"
lg: "rgb(15, 15, 20) 4px 4px 0px 0px"
xl: "rgb(15, 15, 20) 3px 3px 0px 0px"
elevationStrategy: progressive
themes:
derived: dark # the other theme is the site's measured palette
light:
bg: "#F1F0EA"
surface: "#FFFFFF"
surfaceRaised: "#F5F5F6"
text: "#0F0F14"
textMuted: "#2C2A26"
border: "#D4D2C7"
accent: "#A08506"
accentFg: "#000000"
focusRing: "#F8DB52"
elevation: shadow
dark:
bg: "#13110C"
surface: "#211F1B"
surfaceRaised: "#2D2B27"
text: "#FFFEF8"
textMuted: "#A5A49E"
border: "#393733"
accent: "#F8DB52"
accentFg: "#0B0B0C"
focusRing: "#F8DB52"
elevation: "border+surface"
gradients:
- context: section
kind: radial
value: "radial-gradient(rgba(21, 21, 21, 0.106) 0.8px, rgba(0, 0, 0, 0) 0.8px)"
components:
button-filled:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
border: "2px solid {colors.on-primary}"
height: 71.5938px
padding: "14px 13px 14px 13px"
boxShadow: "{colors.on-primary} 3px 3px 0px 0px"
backgroundColor: "{colors.surface}"
button-primary:
typography: "{typography.caption-lg-strong}"
textColor: "{colors.ink}"
border: "2px solid {colors.on-primary}"
height: 40px
padding: "9px 12px 9px 12px"
boxShadow: "{colors.on-primary} 3px 3px 0px 0px"
backgroundColor: "{colors.primary}"
button-filled-sm:
textColor: "{colors.ink}"
border: "2px solid {colors.on-primary}"
height: 40px
padding: "0px 14px 0px 14px"
fontSize: 13px
boxShadow: "{colors.on-primary} 3px 3px 0px 0px"
fontFamily: "Archivo Variable"
fontWeight: 800
lineHeight: 1.5
backgroundColor: "{colors.surface}"
button-secondary:
textColor: "{colors.surface}"
border: "2px solid {colors.on-primary}"
height: 46px
padding: "11px 18px 11px 18px"
fontSize: 12px
boxShadow: "{colors.on-primary} 3px 3px 0px 0px"
fontFamily: "DM Sans"
fontWeight: 800
lineHeight: 1.5
backgroundColor: "{colors.on-primary}"
button-primary-lg:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
height: 54px
padding: "15px 15px 15px 15px"
backgroundColor: "{colors.primary}"
card:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
border: "3px solid {colors.on-primary}"
boxShadow: "{colors.on-primary} 4px 4px 0px 0px"
backgroundColor: "{colors.surface}"
card-sm:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
border: "3px solid {colors.on-primary}"
padding: "19px 16px 19px 16px"
boxShadow: "{colors.on-primary} 4px 4px 0px 0px"
backgroundColor: "rgb(221, 208, 250)"
badge-icon:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
border: "2px solid {colors.on-primary}"
height: 39px
backgroundColor: "rgb(234, 223, 249)"
badge-icon-2:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
border: "2px solid {colors.on-primary}"
height: 39px
backgroundColor: "rgb(248, 230, 171)"
navigation:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
height: 39.5px
footer:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
padding: "40px 0px 22px 0px"
link:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
border: "3px solid {colors.on-primary}"
padding: "22px 26px 22px 26px"
boxShadow: "{colors.on-primary} 4px 4px 0px 0px"
backgroundColor: "{colors.primary}"
link-sm:
typography: "{typography.body-lg}"
textColor: "{colors.ink}"
border: "3px solid {colors.on-primary}"
padding: "19px 16px 19px 16px"
boxShadow: "{colors.on-primary} 4px 4px 0px 0px"
backgroundColor: "rgb(204, 235, 214)"
states:
button-disabled:
target: button
state: disabled
opacity: 0.45
button-focus-visible:
target: button
state: focus-visible
outline: "rgb(108, 66, 211) solid 3px"
outlineColor: "rgb(108, 66, 211)"
outlineWidth: 3px
button-hover:
target: button
state: hover
transform: "translate(-2px, -2px)"
button-active:
target: button
state: active
transform: "translate(2px, 2px)"
link-hover:
target: link
state: hover
textDecoration: underline
card-hover:
target: card
state: hover
transform: "translate(-2px, -2px)"
card-active:
target: card
state: active
boxShadow: none
transform: "translate(4px, 4px)"
card-focus-visible:
target: card
state: focus-visible
outline: "rgb(108, 66, 211) solid 3px"
outlineColor: "rgb(108, 66, 211)"
outlineWidth: 3px
other-hover:
target: other
state: hover
textDecoration: underline
nav-hover:
target: nav
state: hover
textColor: "{colors.surface}"
backgroundColor: "rgba(255, 255, 255, 0.063)"
link-active:
target: link
state: active
boxShadow: none
transform: "translate(3px, 3px)"
breakpoints:
- width: 375
containerWidth: 357
gridColumns: 3
navLinksVisible: 74
menuToggleVisible: true
headingPx: 24
bodyPx: 16
sectionPaddingX: 16
- width: 768
containerWidth: 738
gridColumns: 4
navLinksVisible: 19
menuToggleVisible: true
headingPx: 27
bodyPx: 16
sectionPaddingX: 22
- width: 1024
containerWidth: 988
gridColumns: 3
navLinksVisible: 74
menuToggleVisible: false
headingPx: 27
bodyPx: 16
sectionPaddingX: 28
- width: 1280
containerWidth: 1244
gridColumns: 4
navLinksVisible: 77
menuToggleVisible: false
headingPx: 27
bodyPx: 16
sectionPaddingX: 28
- width: 1440
containerWidth: 1404
gridColumns: 4
navLinksVisible: 77
menuToggleVisible: false
headingPx: 27
bodyPx: 16
sectionPaddingX: 28
coverage:
statesFound: 20
gradientsFound: 1
rolesUnassigned: 7
archetypesUnnamed: 0
archetypesDetected: 0
responsiveMeasured: true
stylesheetsBlocked: false
semanticRampDeclared: false
Ported 2 Browser's design system embraces a playful, nostalgic gaming aesthetic rooted in retro arcade and browser culture. The visual identity combines bold, high-contrast elements with sharp edges, flat surfaces, and vibrant accent colors that evoke classic game interfaces. The design prioritizes clarity and accessibility through generous whitespace, strong typographic contrast, and intentional use of color blocks rather than gradients. Every interactive element has pronounced depth created through offset shadows and geometric scale changes—nothing is subtle. The overall mood is energetic, inviting, and unapologetically digital, celebrating the heritage of web-based gaming while maintaining modern usability.
Key Characteristics
{colors.on-primary} — #0F0F14) for typography and borders{rounded.none} with 3px or 4px drops) creating tactile depth{colors.canvas} — #F1F0EA) as default page background{colors.primary} — #F8DB52) for CTAs, active states, and brand highlights{colors.primary} — #F8DB52): Primary call-to-action fill, brand accent, active navigation states, hero band highlights. Warm yellow used for maximum visibility and playful energy.{colors.link} — #1E293B): Inline link colour for navigation and referenced content.{colors.on-primary} — #0F0F14): Text and label colour on brand surfaces; primary heading color and highest-contrast ink.{colors.body} — #2C2A26): Body copy and standard text content.{colors.canvas} — #F1F0EA): Default page background, providing warm off-white base.{colors.surface} — #FFFFFF): Card and panel backgrounds, white for maximum contrast against dark text.{colors.muted} — #3C3B35): Captions and secondary text, muted brown-gray tone.{colors.faint} — #53534E): Tertiary text and placeholder content, lowest contrast in readable range.{colors.hairline} — #D4D2C7): 1px borders and dividers, subtle beige-gray stroke.{colors.neutral-1} — #DBE2ED): Neutral accent surface (light blue-gray), used for secondary panels and metadata backgrounds.{colors.accent-1} — #AEBED0): Decorative; pale blue-gray.{colors.accent-2} — #64748B): Decorative; slate gray.{colors.accent-3} — #C2410C): Decorative; rust orange.{colors.accent-4} — #22B8CD): Decorative; bright cyan, used for collection hero sections.{colors.accent-5} — #D97757): Decorative; warm terracotta, used for collection hero sections.{colors.accent-6} — #3186FF): Decorative; vibrant blue, used for collection hero sections."DM Sans", "Trebuchet MS", sans-serif"Archivo Black", impact, sans-serif"JetBrains Mono", "Courier New", monospace| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display | Archivo Black | 52px | 400 | 1.05 | −1.7px | Ultra-large hero headings; dramatic negative tracking |
| Heading XXL | DM Sans | 27px | 800 | 1.25 | −0.7px | Page titles and major section heads; bold with negative tracking |
| Heading XL | DM Sans | 19px | 800 | 1.5 | −0.5px | Section subheadings; strong weight with tight tracking |
| Heading LG | DM Sans | 16px | 800 | 1.2 | 0px | Card titles and prominent labels |
| Heading MD | DM Sans | 13px | 800 | 1.5 | 0px | Subsection headers and list titles |
| Heading SM | DM Sans | 12px | 800 | 1.3 | 0px | Sidebar labels and metadata headers |
| Heading XS | DM Sans | 10px | 800 | 1.4 | 1.7px | Uppercase labels and tag headers; tracked open |
| Body XL | DM Sans | 17px | 400 | 1 | 0px | Large body paragraphs |
| Body LG | DM Sans | 16px | 400 | 1.5 | 0px | Standard body text and larger descriptions |
| Body MD | DM Sans | 14px | 400 | 1.85 | 0px | Primary body copy; loose line height for readability |
| Body SM | DM Sans | 13px | 400 | 1.65 | 0px | Secondary body text |
| Body SM Strong | DM Sans | 13px | 700 | 1.5 | 0px | Emphasized secondary text |
| Body XS | DM Sans | 11px | 400 | 1.5 | 0px | Small body annotations |
| Button | DM Sans | 11px | 700 | 1.5 | 0px | Interactive button text; bold weight for prominence |
| Label | DM Sans | 14px | 400 | 1.5 | 0px | Form labels and input placeholders |
| Caption XL | DM Sans | 12px | 400 | 1.5 | 0px | Large captions and metadata |
| Caption LG | DM Sans | 11px | 400 | 1.7 | 0px | Standard captions with open line height |
| Caption LG Strong | DM Sans | 11px | 800 | 1.5 | 1.8px | Bold captions and tag labels; open tracking |
| Caption MD | DM Sans | 10px | 400 | 1.5 | 0px | Small captions |
| Caption SM | DM Sans | 9px | 400 | 1.5 | 0px | Smallest captions and timestamps |
| Caption XS | DM Sans | 8px | 400 | 1.6 | 0px | Minimal captions |
| Code XS | JetBrains Mono | 12px | 600 | 1.2 | 0px | Technical code snippets; monospace |
| Code SM | monospace | 13px | 400 | — | 0px | Secondary code blocks |
−1.7px and −0.5px) to tighten the visual presence and add sophistication.1.85 for Body MD) ensure comfortable reading at standard sizes; captions use tighter spacing (1.5).600) for legibility in technical contexts.Primary Button
{colors.primary} (#F8DB52){colors.on-primary} (#0F0F14)9px 12px{typography.button} (11px, weight 700)2px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 3px 3px 0px 0px5px 5px 0 var(--ink), transform translate(-2px, -2px)0 0 0 var(--ink), transform translate(2px, 2px)outline: 3px solid rgb(108, 66, 211)opacity: 0.45Secondary Button
{colors.on-primary} (#0F0F14)#FFFFFF11px 18px{typography.caption-lg-strong} (12px, weight 800)2px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 3px 3px 0px 0pxFilled Button (Large)
{colors.surface} (#FFFFFF){colors.on-primary} (#0F0F14)14px 13px{typography.body-lg} (16px, weight 400)2px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 3px 3px 0px 0pxFilled Button (Small)
{colors.surface} (#FFFFFF){colors.on-primary} (#0F0F14)0px 14px{typography.body-sm-strong} (13px, weight 800)2px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 3px 3px 0px 0pxPrimary Button (Large, No Border)
{colors.primary} (#F8DB52){colors.on-primary} (#0F0F14)15px 15px{typography.body-lg} (16px, weight 400)0px{rounded.none} (0px)noneCard (Default)
{colors.surface} (#FFFFFF){colors.on-primary} (#0F0F14)0px3px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 4px 4px 0px 0px6px 6px 0 var(--ink), transform translate(-2px, -2px)none, transform translate(4px, 4px)outline: 3px solid rgb(108, 66, 211)Card (Small)
#DDD8FA (light purple/lavender){colors.on-primary} (#0F0F14)19px 16px3px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 4px 4px 0px 0pxCollection Hero Card (Themed Variants)
19px 16px3px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 4px 4px 0px 0px{colors.accent-4} (cyan), {colors.accent-5} (terracotta), or {colors.primary} (yellow) for backgroundIcon Badge
#EADBF9 (pale purple){colors.on-primary} (#0F0F14)2px solid {colors.on-primary} (#0F0F14){rounded.none} (0px)none0px{typography.body-lg} (16px, weight 400)Icon Badge Variant
#F8E6AB (pale yellow){colors.on-primary} (#0F0F14)2px solid {colors.on-primary} (#0F0F14){rounded.none} (0px)none0pxForm Label
{typography.label} (14px, weight 400){colors.body} (#2C2A26)Navigation Link (Default)
rgba(0, 0, 0, 0) (transparent){colors.on-primary} (#0F0F14){typography.body-lg} (16px, weight 400)0px{rounded.none} (0px)none0pxcolor: rgb(255, 255, 255), backgroundColor: rgba(255, 255, 255, 0.063)Link with Box Shadow
{colors.primary} (#F8DB52){colors.on-primary} (#0F0F14)22px 26px3px solid {colors.on-primary} (#0F0F14){rounded.none} (0px){colors.on-primary} 4px 4px 0px 0px{typography.body-lg} (16px, weight 400)textDecoration: underline, box shadow 5px 5px 0 var(--ink), transform translate(-2px, -2px)none, transform translate(3px, 3px)outline: 2px solid var(--ink)Link (Inline, No Box)
{colors.link} (#1E293B)textDecoration: underline, color: var(--ink), or box shadow and transform appliedrgb(248, 250, 252) (very light blue)Footer Container
rgba(0, 0, 0, 0) (transparent){colors.on-primary} (#0F0F14){typography.body-lg} (16px, weight 400)40px 0px 22px 0px0pxBase unit: {spacing.xs} = 8px. All spacing values scale predictably:
{spacing.xxs} = 4px — Minimal gaps between inline elements{spacing.xs} = 8px — Small internal padding, tight grouping{spacing.sm} = 12px — Standard padding within components{spacing.md} = 16px — Medium spacing between sections{spacing.lg} = 20px — Large gaps for visual breathing{spacing.xl} = 24px — Prominent spacing between major sections{spacing.xxl} = 28px — Extra-large spacing for visual hierarchy{spacing.xxxl} = 32px — Generous spacing between page sections{spacing.section} = 36px — Section header to content separation{spacing.band} = 40px — Large horizontal section paddingUsage Context:
{spacing.md} (16px){spacing.xs} to {spacing.sm} (8–12px){spacing.band} (40px){spacing.md} (16px) bottomWhitespace is used deliberately to create rhythm and focus. Large cards and hero sections are surrounded by generous margins ({spacing.band}, 40px), while internal component spacing is tight ({spacing.sm}, 12px). The off-white canvas background ({colors.canvas} — #F1F0EA) provides natural breathing room without requiring additional margin. Dark ink text on light backgrounds ensures contrast even in sparse layouts. Vertical rhythm is maintained through consistent heading-to-body spacing ratios.
{rounded.none} = 0px — Primary system radius; all buttons, cards, badges, and major components{rounded.xs} = 3px — Minimal rounding, rarely used; very subtle softening{rounded.sm} = 6px — Secondary radius, used on specific component cornersComponent-specific radius:
{rounded.none} (0px, sharp corners){rounded.none} (0px, sharp corners){rounded.none} (0px, sharp corners)1px): Applied to navigation, subtle dividers2px): Button borders, badge borders, form element strokes3px): Card borders, major container outlines, primary visual hierarchyComponent usage:
2px border3px border2px border0px (no border, transparent background)3px border| Level | Treatment | Use |
|---|---|---|
| Base / Flat | box-shadow: none | Default surfaces, text, backgrounds |
| Dropdown (Small) | rgb(15, 15, 20) 2px 2px 0px 0px | Subtle menu panels, secondary overlays |
| Dropdown (Medium) | rgba(15, 23, 42, 0.07) 0px 8px 24px 0px | Navigation popovers, sticky elements |
| Card / Interactive | rgb(15, 15, 20) 4px 4px 0px 0px | Default card depth, primary containers |
| Button / Pressed | rgb(15, 15, 20) 3px 3px 0px 0px | Interactive buttons, emphasis |
Shadow Philosophy:
Depth is achieved through hard offset shadows, not soft blurs. Every shadow uses the ink color ({colors.on-primary} — #0F0F14) at full opacity, creating a bold, printed aesthetic reminiscent of vintage screens. Shadows never fade; they are crisp offsets that make elements appear lifted. On hover, shadows grow from 3px or 4px to 5px or 6px, with simultaneous upward transform (translate(-2px, -2px)), creating a tactile press-and-lift interaction. On active press, shadows collapse to near-zero, and the element moves down (translate(2px, 2px)), simulating a button being held down.
opacity: 0.45 on disabled buttons (slightly more aggressive than 60%)z-index: 1 — Standard page elements, cardsz-index: 2 — Slightly elevated surfacesz-index: 55, 60 — Menu panels, popoversz-index: 90, 99 — Modal backdrops, high-level overlaysz-index: 100 — Sticky headers, persistent navigation{colors.primary} (#F8DB52) for all primary CTAs — buttons, active states, and brand highlights. It is the system's visual anchor.3px or 4px hard offset shadows to cards and buttons, always in {colors.on-primary} (#0F0F14). Never use soft blurs.{spacing.md} (16px) increments for margins, padding, and gaps. Respect the 8px baseline.{typography.heading-xs}) for section headers and tag indicators; apply 1.7px letter spacing for openness.{rounded.none} (0px) for all interactive elements. Sharp corners are the system's identity.{colors.on-primary} on light {colors.surface} or {colors.primary}; light text only on dark backgrounds.+2px in each direction, transform: translate(-2px, -2px).{colors.canvas} (#F1F0EA) as the default page background for consistency and warmth.{colors.accent-4} cyan, {colors.accent-5} terracotta) only for thematic collection hero cards, not for status or interaction.{spacing.xs} to {spacing.md} (8–16px); oversized padding diminishes visual punch.{colors.on-primary}.#F8DB52), neutrals, and decorative accent roles. No custom gradient fills.translate + shadow growth) is integral to interactivity; a static hover state feels broken.| Viewport | Content Width | Grid Columns | Nav Links Visible | Menu Toggle | Largest Heading | Body Font | Section Padding X |
|---|---|---|---|---|---|---|---|
| 375px (Mobile) | 357px | 3 | 74 | Yes | 24px | 16px | 16px |
| 768px (Tablet) | 738px | 4 | 19 | Yes | 27px | 16px | 22px |
| 1024px (Desktop) | 988px | 3 | 74 | No | 27px | 16px | 28px |
| 1280px (Large) | 1244px | 4 | 77 | No | 27px | 16px | 28px |
| 1440px (XL) | 1404px | 4 | 77 | No | 27px | 16px | 28px |
Key Changes Across Breakpoints:
{spacing.md} (16px).{spacing.md} (16px) to prevent mis-taps.{typography.heading-xxl} at 27px, small form at 24px).{spacing.md} (16px) on mobile, {spacing.section} (36px) or {spacing.band} (40px) on desktop.{colors.primary} — #F8DB52) — use for all primary call-to-action buttons and active states{colors.on-primary} — #0F0F14) — headings, body text, labels, borders{colors.canvas} — #F1F0EA) — default page background{colors.surface} — #FFFFFF) — card and panel backgrounds{colors.body} — #2C2A26) — standard paragraph text{colors.muted} — #3C3B35) — captions and metadata{colors.hairline} — #D4D2C7) — thin strokes and lines{colors.link} — #1E293B) — inline hyperlinks#22B8CD), Terracotta (#D97757), Blue (#3186FF) — collection hero backgrounds only4px 4px, button shadows: 3px 3px. Grow on hover by 2px in each direction.box-shadow grows and transform: translate(-2px, -2px). Active press moves down: translate(2px, 2px).8px, 12px, 16px, 20px, 24px — no arbitrary values. Buttons get 9–15px, cards get 16–19px padding.#F8DB52) with dark text; secondary CTA is dark (#0F0F14) with white text. No other color swap.16px (mobile), 28px (desktop).opacity: 0.45 — slightly reduced opacity, no color change.3px solid outline in rgb(108, 66, 211) (purple).{colors.accent-1} through {colors.accent-6} have no measured semantic function. They appear in collection hero backgrounds but are not labeled or constrained to specific use cases.{rounded.sm} (6px) is the input radius, but border and shadow details under error conditions are unknown.0.2s ease-out transitions as reasonable defaults.