utopia-fluid-scales

📁 matthewharwood/fantasy-phonics 📅 Jan 28, 2026
4
总安装量
2
周安装量
#52235
全站排名
安装命令
npx skills add https://github.com/matthewharwood/fantasy-phonics --skill utopia-fluid-scales

Agent 安装分布

opencode 2
codex 2
claude-code 2
gemini-cli 2
moltbot 1

Skill 文档

Utopia Fluid Scales

This project’s fluid typography and spacing system

Configuration

Generated from: https://utopia.fyi/space/calculator?c=360,18,1.2,1240,20,1.25,5,2,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12

Parameter Value
Min viewport 360px
Max viewport 1240px
Min base size 18px
Max base size 20px
Min scale ratio 1.2 (Minor Third)
Max scale ratio 1.25 (Major Third)

Unit: cqi (container query inline) – requires a container context to function.

Type Scale

Location: css/styles/typography.css

:root {
  --step--2: clamp(0.7813rem, 0.7736rem + 0.0341cqi, 0.8rem);
  --step--1: clamp(0.9375rem, 0.9119rem + 0.1136cqi, 1rem);
  --step-0: clamp(1.125rem, 1.0739rem + 0.2273cqi, 1.25rem);
  --step-1: clamp(1.35rem, 1.2631rem + 0.3864cqi, 1.5625rem);
  --step-2: clamp(1.62rem, 1.4837rem + 0.6057cqi, 1.9531rem);
  --step-3: clamp(1.944rem, 1.7405rem + 0.9044cqi, 2.4414rem);
  --step-4: clamp(2.3328rem, 2.0387rem + 1.3072cqi, 3.0518rem);
  --step-5: clamp(2.7994rem, 2.384rem + 1.8461cqi, 3.8147rem);
}

Type Step Reference

Token Min (360px) Max (1240px) Use Case
--step--2 12.5px 12.8px Captions, fine print
--step--1 15px 16px Small text, metadata
--step-0 18px 20px Body text (base)
--step-1 21.6px 25px Large body, lead text
--step-2 25.9px 31.3px H4 equivalent
--step-3 31.1px 39.1px H3 equivalent
--step-4 37.3px 48.8px H2 equivalent
--step-5 44.8px 61px H1 equivalent

Applied Styles

body {
  font-family: var(--font-base);
  font-size: var(--step-0);
  line-height: 1.5;
}

Note: No heading styles (h1-h6) are currently applied. Add as needed:

h1 { font-size: var(--step-5); }
h2 { font-size: var(--step-4); }
h3 { font-size: var(--step-3); }
h4 { font-size: var(--step-2); }
h5 { font-size: var(--step-1); }
h6 { font-size: var(--step-0); }

Space Scale

Location: css/styles/space.css

Individual Space Tokens

:root {
  --space-3xs: clamp(0.3125rem, 0.3125rem + 0cqi, 0.3125rem);
  --space-2xs: clamp(0.5625rem, 0.5369rem + 0.1136cqi, 0.625rem);
  --space-xs: clamp(0.875rem, 0.8494rem + 0.1136cqi, 0.9375rem);
  --space-s: clamp(1.125rem, 1.0739rem + 0.2273cqi, 1.25rem);
  --space-m: clamp(1.6875rem, 1.6108rem + 0.3409cqi, 1.875rem);
  --space-l: clamp(2.25rem, 2.1477rem + 0.4545cqi, 2.5rem);
  --space-xl: clamp(3.375rem, 3.2216rem + 0.6818cqi, 3.75rem);
  --space-2xl: clamp(4.5rem, 4.2955rem + 0.9091cqi, 5rem);
  --space-3xl: clamp(6.75rem, 6.4432rem + 1.3636cqi, 7.5rem);
}

Space Token Reference

Token Min (360px) Max (1240px)
--space-3xs 5px 5px
--space-2xs 9px 10px
--space-xs 14px 15px
--space-s 18px 20px
--space-m 27px 30px
--space-l 36px 40px
--space-xl 54px 60px
--space-2xl 72px 80px
--space-3xl 108px 120px

One-Up Space Pairs

Fluid transitions between adjacent sizes:

:root {
  --space-3xs-2xs: clamp(0.3125rem, 0.1847rem + 0.5682cqi, 0.625rem);
  --space-2xs-xs: clamp(0.5625rem, 0.4091rem + 0.6818cqi, 0.9375rem);
  --space-xs-s: clamp(0.875rem, 0.7216rem + 0.6818cqi, 1.25rem);
  --space-s-m: clamp(1.125rem, 0.8182rem + 1.3636cqi, 1.875rem);
  --space-m-l: clamp(1.6875rem, 1.3551rem + 1.4773cqi, 2.5rem);
  --space-l-xl: clamp(2.25rem, 1.6364rem + 2.7273cqi, 3.75rem);
  --space-xl-2xl: clamp(3.375rem, 2.7102rem + 2.9545cqi, 5rem);
  --space-2xl-3xl: clamp(4.5rem, 3.2727rem + 5.4545cqi, 7.5rem);
}

Custom Space Pair

:root {
  --space-s-l: clamp(1.125rem, 0.5625rem + 2.5cqi, 2.5rem);
}
Token Min Max Scaling
--space-s-l 18px 40px Dramatic (2.2x)

Usage Examples

/* Padding with space tokens */
.card {
  padding: var(--space-m);
}

/* Fluid gap */
.stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-s-m);
}

/* Typography */
.title {
  font-size: var(--step-3);
}

/* Section spacing */
.section {
  padding-block: var(--space-l-xl);
}

Container Requirement

These scales use cqi units which require a container context. Without a parent with container-type: inline-size, the fluid calculation may not work as expected.

/* Required for cqi units to function */
.parent {
  container-type: inline-size;
}

Files

  • css/styles/typography.css – Type scale and body styles
  • css/styles/space.css – Space tokens and pairs