Fundação · Paper

Tokens do kit.

Cada valor vem de system.css e tokens-motion.css. Sem hex inventado. Copiar :root ou a linha.

00 · Cover

Capa

Identidade do kit. Soft Structuralism.

extract.sys · kit

Primitivos de agente.

Sistema default. Accent = acid. Lima banida. Prata, placas, Plus Jakarta + Azeret. Não um clone de Beautiful UI.

--acid #d8ff3e
HTML
<p class="type-kicker">extract.sys · kit</p>
<h1 class="type-display-lg">Primitivos de agente.</h1>

01 · Tokens

Tokens

59 de system.css + 10 só de motion. Cada linha copia --nome: valor;.

system.css

--night #08090b
--night-wash rgb(40, 39, 48)
--grid rgba(255, 255, 255, 0.024)
--ink #f3f2ee
--muted #9a9aa4
--acid #d8ff3e
--violet #8c5bff
--on-acid #10110d
--on-acid-ticket #11130c
--note rgb(199, 198, 202)
--note-strong #fff
--turn-secondary rgb(111, 111, 119)
--turn-body rgb(183, 182, 188)
--fine rgb(119, 119, 127)
--line rgba(255, 255, 255, 0.14)
--orbit-ring rgba(255, 255, 255, 0.13)
--line-on-acid rgba(0, 0, 0, 0.28)
--dash-on-acid rgba(0, 0, 0, 0.45)
--eyebrow-on-acid rgba(16, 17, 13, 0.6)
--ring-on-acid rgba(16, 17, 13, 0.06)
--contact-muted rgba(0, 0, 0, 0.55)
--orbit-glow rgba(140, 91, 255, 0.1)
--ticket-shadow rgba(0, 0, 0, 0.55) 0 40px 100px
--silver #eeeff2
--silver-mist #f7f7f9
--silver-deep #e4e5ea
--plate #ffffff
--plate-recess #f3f3f6
--ink-page #16171c
--ink-soft #5c5d66
--hair rgba(22, 23, 28, 0.06)
--hair-strong rgba(22, 23, 28, 0.1)
--ambient 50, 52, 60
--font-display "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif
--font-mono "Azeret Mono", ui-monospace, "Cascadia Mono", monospace
--space-1 8px
--space-2 16px
--space-3 24px
--space-4 36px
--space-5 48px
--space-6 64px
--space-7 96px
--space-8 110px
--space-9 140px
--radius-artifact 6px
--radius-invert 22px
--radius-invert-sm 14px
--radius-bezel 2rem
--radius-core calc(2rem - 0.375rem)
--bezel-pad 0.375rem
--ease cubic-bezier(0.32, 0.72, 0, 1)
--duration 600ms
--duration-slow 700ms
--wrap-max 1200px
--wrap-gutter 48px
--wrap-gutter-sm 32px
--z-nav 4
--z-grain 6
--z-skip 8

tokens-motion.css (extras)

--duration-fade 200ms
--duration-artifact 350ms
--duration-dots 1050ms
--duration-pix 1400ms
--duration-blink 1000ms
--duration-spin-orbit 900ms
--duration-spin-task 1100ms
--duration-stagger 80ms
--duration-stagger-2 160ms
--duration-stagger-3 240ms
HTML
:root {
  --night: #08090b;
  --night-wash: rgb(40, 39, 48);
  --grid: rgba(255, 255, 255, 0.024);
  --ink: #f3f2ee;
  --muted: #9a9aa4;
  --acid: #d8ff3e;
  --violet: #8c5bff;
  --on-acid: #10110d;
  --on-acid-ticket: #11130c;
  --note: rgb(199, 198, 202);
  --note-strong: #fff;
  --turn-secondary: rgb(111, 111, 119);
  --turn-body: rgb(183, 182, 188);
  --fine: rgb(119, 119, 127);
  --line: rgba(255, 255, 255, 0.14);
  --orbit-ring: rgba(255, 255, 255, 0.13);
  --line-on-acid: rgba(0, 0, 0, 0.28);
  --dash-on-acid: rgba(0, 0, 0, 0.45);
  --eyebrow-on-acid: rgba(16, 17, 13, 0.6);
  --ring-on-acid: rgba(16, 17, 13, 0.06);
  --contact-muted: rgba(0, 0, 0, 0.55);
  --orbit-glow: rgba(140, 91, 255, 0.1);
  --ticket-shadow: rgba(0, 0, 0, 0.55) 0 40px 100px;
  --silver: #eeeff2;
  --silver-mist: #f7f7f9;
  --silver-deep: #e4e5ea;
  --plate: #ffffff;
  --plate-recess: #f3f3f6;
  --ink-page: #16171c;
  --ink-soft: #5c5d66;
  --hair: rgba(22, 23, 28, 0.06);
  --hair-strong: rgba(22, 23, 28, 0.1);
  --ambient: 50, 52, 60;
  --font-display: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;
  --font-mono: "Azeret Mono", ui-monospace, "Cascadia Mono", monospace;
  --space-1: 8px;
  --space-2: 16px;
  --space-3: 24px;
  --space-4: 36px;
  --space-5: 48px;
  --space-6: 64px;
  --space-7: 96px;
  --space-8: 110px;
  --space-9: 140px;
  --radius-artifact: 6px;
  --radius-invert: 22px;
  --radius-invert-sm: 14px;
  --radius-bezel: 2rem;
  --radius-core: calc(2rem - 0.375rem);
  --bezel-pad: 0.375rem;
  --ease: cubic-bezier(0.32, 0.72, 0, 1);
  --duration: 600ms;
  --duration-slow: 700ms;
  --wrap-max: 1200px;
  --wrap-gutter: 48px;
  --wrap-gutter-sm: 32px;
  --z-nav: 4;
  --z-grain: 6;
  --z-skip: 8;
  --duration-fade: 200ms;
  --duration-artifact: 350ms;
  --duration-dots: 1050ms;
  --duration-pix: 1400ms;
  --duration-blink: 1000ms;
  --duration-spin-orbit: 900ms;
  --duration-spin-task: 1100ms;
  --duration-stagger: 80ms;
  --duration-stagger-2: 160ms;
  --duration-stagger-3: 240ms;
}

02 · Type

Type

Dez papéis. Jakarta no display. Azeret no kicker.

Kicker

Display.

Lede com uma palavra ácida.

Corpo 17 / 1.7. Plus Jakarta.

Meta Azeret · 10px

HTML
<p class="type-kicker">Kicker</p>
<h1 class="type-display-lg">Display.</h1>
<p class="type-lede">Lede com uma palavra <em>ácida</em>.</p>
<p class="type-body">Corpo 17 / 1.7.</p>
<p class="type-meta">Meta Azeret</p>

21 · License

License

MIT Shane Levine. Padrões Beautiful UI. Visual Grupo Ecom.

MIT License

Copyright (c) 2026 Shane Levine

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
HTML
MIT License

Copyright (c) 2026 Shane Levine

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

22 · DESIGN.md

DESIGN.md

Contrato. Não é specimen.

Soft Structuralism.
Prata, placas, um invert. Acid #d8ff3e. Lima banida.
Plus Jakarta + Azeret. Nunca Geist.
--ease do kit. Nunca easing genérico.
Paper = fonte visual. Pages = copiar e implementar.
Violeta só atmosfera.
HTML
Soft Structuralism.
Prata, placas, um invert. Acid #d8ff3e. Lima banida.
Plus Jakarta + Azeret. Nunca Geist.
--ease do kit. Nunca easing genérico.
Paper = fonte visual. Pages = copiar e implementar.
Violeta só atmosfera.

26 · Spacing

Spacing

Escala --space-1 … --space-9.

--space-18px
--space-216px
--space-324px
--space-436px
--space-548px
--space-664px
--space-796px
--space-8110px
--space-9140px
HTML
/* --space-1: 8px … --space-9: 140px */
<div style="height:var(--space-3)"></div>

27 · Type scale

Type scale

Métricas dos papéis em system.css.

display-xlclamp(76px, 10.5vw, 164px) / 800 / -0.08em
display-lgclamp(48px, 7vw, 102px) / 700
ledeclamp(26px, 3vw, 43px) / 500
title-sm28px / 700
body17px / 400 / 1.7
kicker11px Azeret / 0.12em
meta10px Azeret / 0.08em
wordmark21px / 800 / -0.06em
HTML
/* type roles in system.css */

28 · Size

Size

Wrap e gutters canónicos.

--wrap-max1200px
--wrap-gutter48px
--wrap-gutter-sm32px

Icon button 36×36. Avatar 36. Handle 2.6rem. Números do CSS canónico — sem inventar.

HTML
.wrap { width: min(var(--wrap-max), 100% - var(--wrap-gutter)); }

29 · Radii

Radii

Artifact, invert, bezel, core.

artifact 6 · invert-sm 14 · invert 22 · core calc(2rem - 0.375rem)

HTML
border-radius: var(--radius-core);

30 · Elevation

Elevation

Hair, ambiente, bezel. Sem shadow-md.

Hair
Ambiente
Bezel
HTML
<div class="bezel"><div class="bezel-core"></div></div>

31 · Layout

Layout

Catalog 228 + stack. Wrap 1200.

toc 228
stack
HTML
<div class="catalog"><nav class="toc"></nav><div class="stack"></div></div>

32 · Motion + States

Motion + States

Hover / ativo / foco acid / disabled. Durações do kit.

--ease cubic-bezier(0.32, 0.72, 0, 1) · --duration 600ms · --duration-slow 700ms. Foco = anel acid. Sem lima.

HTML
<button class="state-pill" type="button">Ativo</button>

33 · Status + Z

Status + Z

Camadas sistémicas só. --z-nav 4 · --z-grain 6 · --z-skip 8.

z-nav 4
z-grain 6
z-skip 8
HTML
--z-nav: 4;
--z-grain: 6;
--z-skip: 8;