I TOMAS · LIMINAL
LIMINAL WHITESPACE
Studija, kuri pati pasitraukia, kad produktai galėtų kalbėti.
Santūrumas — garsiausias signalas. Ten, kur darbas (Feeldreamy) yra tamsus, tankus ir violetinis, apvalkalas, kuriame tas darbas gyvena, yra spindintis, erdvus ir spektrinis.
Vienintelė spalva, kurią leidžiame, yra prizminis refrakcija — plonas, animuotas konuso žiedas prie kraštų ir CTA — nes šis paviršius užsidirba lygiai vieną chromatinį gestą, ir mes jį panaudosime per prizmę lūžtančiai šviesai.
Ši stiliaus knyga — pati savaime sistemos pavyzdys. Skaityk slenkdamas, slinktis po slinkties.
A — BALSAS IR TONAS
Apvalkalas, kuris pasitraukia, kad produktai galėtų kalbėti.
Šeši principai. Šešios ribos. Iš jų išplaukia visa sistema.
BALSAS · 01
Apvalkalas pasitraukia.
Santūrumas yra garsiausias signalas. Niekas chromuose nesivaržo su produktu.
BALSAS · 02
Vienas chromatinis akcentas puslapiui.
Prizminis žiedas leidžiamas prie kraštų, CTA, fokuso žiedų. Niekada kaip užpildas ar fonas.
BALSAS · 03
Oras, ne triukšmas.
Tuščia erdvė yra struktūra. Skyriai yra 100lvh, nes pasitikime skaitytoju, kad slinks.
BALSAS · 04
Inter Display dirba.
Suporiame redakcinį šriftą su monospace antraštukais. Grafika beveik nepasirodo.
BALSAS · 05
Judesys atskleidžia, nepuošia.
Trys leistini gestai: tekstas išsiryškėja, šviesa lūžta, kraštai slenka. Be atšokimo, be persisukimo.
BALSAS · 06
Pirmas asmuo — numatytas balsas.
Sakome „mes“, nes du steigėjai rašo tekstus. Svetainė yra kūnas, ne brošiūra.
B — SPALVA
Šilta balta. Vienas chromatinis gestas.
OKLCH žetonai užtikrina tą pačią spalvos prasmę kiekviename renderyje. Prizminės stotelės — vienintelis chromatinis instrumentas; jos prie kraštų, niekada kaip užpildas.
Šviesus režimas — paviršiai
-
--lim-surface-page
Puslapio fonas
16,9:1 prieš ink-primary
-
--lim-surface-elevated
Kortelės, šoniniai blokai
15,4:1 prieš ink-primary
-
--lim-surface-sunken
Citatos, įdėtiniai blokai
13,8:1 prieš ink-primary
Šviesus režimas — rašalas
-
--lim-ink-primary
Tekstas, antraštės
16,9:1 ant puslapio (AAA)
-
--lim-ink-soft
Paantraštės, palaikantis tekstas
7,2:1 ant puslapio (AAA)
-
--lim-ink-mute
Antraštukai, smulkios pastabos
4,7:1 ant puslapio (AA riba)
-
--lim-ink-inverted
Tekstas ant tamsių paviršių
16,9:1 ant inverted
Plaukelio linijos
-
--lim-hairline
1px skirtuvai
Dekoratyvinis
-
--lim-hairline-strong
Skirtuvai per fokusą, mygtukų kraštai
3,1:1 prieš puslapį
Prizminės stotelės — vienintelis chromatinis gestas
-
--lim-prismatic-stop-1
Konuso stotelė 1 — violetinė
Tik akcentas
-
--lim-prismatic-stop-2
Konuso stotelė 2 — žalsva / cianas
Tik akcentas
-
--lim-prismatic-stop-3
Konuso stotelė 3 — šiltas gintaras
Tik akcentas
-
--lim-prismatic-stop-4
Konuso stotelė 4 — rožinė / magenta
Tik akcentas
-
--lim-prismatic-ink
Vientisas prizminis, prieinama atsarga
4,6:1 ant puslapio (AA)
Fokusas ir aureolė
-
--lim-focus-ring
2px fokuso kontūras
Minimum 3:1 prieš puslapį
-
--lim-focus-halo
4px aureolė už kontūro
Dekoratyvinė
Šešėliai
--lim-shadow-soft
Kortelė ramybėje
--lim-shadow-lifted
Kortelės hover
--lim-shadow-press
Mygtukas ramybėje
Tamsus režimas
-
--lim-surface-page
Šilta grafito drobė
15,5:1 prieš ink-primary
-
--lim-surface-elevated
Kortelės
13,0:1 prieš ink-primary
-
--lim-surface-sunken
Įdėtinė
17,2:1 prieš ink-primary
-
--lim-ink-primary
Tekstas, antraštė
15,5:1 ant drobės
-
--lim-ink-soft
Paantraštė
9,4:1 ant drobės
-
--lim-ink-mute
Antraštukai
4,7:1 ant drobės (AA)
-
--lim-prismatic-ink
Akcentinis tekstas
4,8:1 ant drobės
Patikrintos kontrasto poros
| Pora | Santykis | Verdiktas |
|---|---|---|
| ink-primary ant surface-page | 16,9:1 | AAA · tekstas, antraštės |
| ink-soft ant surface-page | 7,2:1 | AAA · paantraštė, palaikantis |
| ink-mute ant surface-page | 4,7:1 | AA · antraštukų riba |
| ink-mute ant surface-elevated | 4,4:1 | Nuleisti į ink-soft |
| ink-mute ant surface-sunken | 4,0:1 | AA neišlaiko — niekada |
| prismatic-ink ant surface-page | 4,6:1 | AA · akcentinis tekstas |
| ink-primary ant tamsios drobės | 15,5:1 | AAA · tamsus tekstas |
| prismatic-ink ant tamsios drobės | 4,8:1 | AA · tamsus akcentas |
DRAUDŽIAMA PORA
Niekada nedėk --lim-ink-mute ant --lim-surface-elevated ar
--lim-surface-sunken. Kontrastas nukrenta iki 4,4:1 ir 4,0:1 — abu
neišlaiko AA paprastam tekstui. Ant pakelto paviršiaus naudok --lim-ink-soft.
C — TIPOGRAFIJA
Inter Variable. Dvylika žingsnių. Vienas santykis.
Inter Variable neša display ir pagrindinį tekstą. JetBrains Mono Variable neša antraštukus, URL ir skyriaus numerius. Optinio dydžio ašis — auto.
Porinimo logika
Aptemptos tarpos display tekstams, nes Inter dideliais dydžiais turi dosnų numatytąjį tarpą, kuris skamba rinkodariškai. Šiek tiek neigiamos tarpos pagrindinis tekstas paryškina suvokiamą aiškumą Retina ekranuose. Dosni eilutė pagrindiniam tekstui — 1,65, apie 28px už 17px teksto eilutę — duoda redakcinę kvėpavimo erdvę.
Monospace ašis — vienas šriftas (JetBrains Mono Variable), skirtas antraštukams, URL ir skyrių numeriams. Nemaišome display ir mono viename žodyje; nemaišome mono ir sans viename mygtuko užraše. Mono signalizuoja palaikančią meta; sans — pagrindinę mintį.
Skalė (dvylika žingsnių)
Optinio dydžio ašies demonstracija
Inter siunčia tikrą optinio dydžio variantą. Su font-optical-sizing: auto
tas pats loginis dydis renderinasi display-tinkamais simboliais dideliuose ir
tekst-tinkamais simboliais mažuose. Skirtumas labiausiai matomas skyrybos ženkluose,
stiebelių storyje ir aprtūroje.
opsz auto · 14px
Apvalkalas, kuris pasitraukia.
opsz auto · 32px
Apvalkalas, kuris pasitraukia.
Redakcinės taisyklės
- Display tekstai naudoja
text-wrap: balance. Pagrindinis —text-wrap: pretty. - Display ne daugiau kaip trys eilutės. Jei netelpa — trumpink eilutę, ne dydį.
- Antraštuko tarpas fiksuotas 0,22em. Nesimuliuok per žodį.
- Lietuviški diakritikai Latin-Extended-A subsete. Nešalink jų.
- Mono tekstas niekada žemiau 13px. Pagrindinis tekstas niekada žemiau 15px (small).
D — JUDESYS
Trys gestai, ne daugiau.
Tekstas išsiryškėja. Šviesa lūžta. Kraštai slenka. CSS scroll-driven animacijos neša krūvį; JS pasirodo tik ten, kur reikia raf-lerp.
Gyvi pirmieji elementai
text-reveal-stagger
Žodžiai kyla iš migloto.
520ms kiekvienam · 24ms tarpas · ease-out-emphasis. Žodis po žodžio: blur 8 iki 0, translateY 0.4em iki 0.
lens-flare-hover
Tęstinis · 0.18 lerp. Spinduliuojantis žybsnis seka žymeklį 18%. Išjungtas šiurkščiame žymeklyje.
prismatic-ripple
180ms įeinant · 8000ms apsisukimas · ease-prism-spin. Opacity 0,45 iki 1,0.
scroll-snap-glide
900ms nustojimas · ease-glide. Slinkti plytelių stulpelį, kad pajustum snap.
hairline-grow
520ms · ease-out-emphasis. clip-path inset iki inset. Scroll-driven, niekada nesugrįžta.
language-flip
180ms · ease-in-out-soft. Aktyvus simbolis apsiverčia vertikaliai; view-transition perpildo turinį.
theme-fade
320ms · ease-in-out-soft. Per CSS view-transitions, be perskaičiavimo.
portrait-bloom
900ms · ease-out-emphasis. Sodrumas 0,92 iki 1,02. Subtilu, niekada nepersirita.
view-transition
320ms · ease-in-out-soft. Astro ClientRouter perėjimas; įvardyti perėjimai logotipui ir h1.
Pirmieji elementai, suvesti
| Vardas | Trukmė | Easing | Trigeris |
|---|---|---|---|
text-reveal-stagger | 520ms kiekvienam · 24ms tarpas | ease-out-emphasis · (0.16, 1, 0.3, 1) | Skyrius įeina į matomą sritį |
lens-flare-hover | Tęstinis · 0.18 lerp | Tiesinis (raf-lerp) | Pelės žymeklis virš CTA ar kortelės |
prismatic-ripple | 180ms įeinant · 8000ms apsisukimas | ease-out-soft · ease-prism-spin | Mygtuko hover ar fokusas |
scroll-snap-glide | 900ms nustojimas | ease-glide · (0.32, 0, 0.16, 1) | Ratukas, lytėjimas, ankeris |
hairline-grow | 520ms | ease-out-emphasis | Skirtuvas įeina į matomą sritį |
language-flip | 180ms | ease-in-out-soft | Kalbos perjungimo paspaudimas |
theme-fade | 320ms | ease-in-out-soft | Temos perjungimo paspaudimas |
portrait-bloom | 900ms | ease-out-emphasis | Steigėjo kortelė įeina į matomą sritį |
view-transition | 320ms | ease-in-out-soft | Maršruto keitimas |
Santūrumo principas
CSS scroll-driven animacijos neša kiekvieną įėjimo seką. Mes nesiunčiame IntersectionObserver. Nekrauname Framer Motion blukimams. Judesys atsiranda kaip CSS padarinys, ne kaip bibliotekos sprendimas.
Kai naudojame JS — lens-flare-hover ir tik pradinio puslapio Lenis provider — biudžetas
yra 5KB iki 12KB iš viso, ir scenarijus išjungia save per prefers-reduced-motion
ir per šiurkščius žymeklius.
Sumažinto judesio peržiūra
NUMATYTAS
Animacijos veikia. Prizminis žiedas sukasi. Tekstas išryškėja per laipsnį.
SUMAŽINTAS JUDESYS
Visos animacijos apkarpomos iki 0,001ms. Prizminis žiedas statiškas, opacity 1. Scroll-snap išjungtas.
E — KOMPONENTAI
Biblioteka, parodyta vietoje.
Kiekvienas žemiau esantis komponentas yra tas pats, kuris siunčiamas į produkciją. Išdėstymas — Section. Tipografija — Display, Lead, Prose. Paviršius — Card. Akcentas — PrismaticRing.
Pirmieji elementai
Display antraštė.
Lead tekstas užduoda kontekstą vienu sakiniu.
Pagrindinis tekstas alsuoja 1,65 eilutės aukščiu. Kursyvas — taupiai. Nuorodos su plaukelio pabraukimu.
KORTELĖ · PAKELTA
Mažas paviršius.
Plaukelio kraštas, švelnus šešėlis ramybėje, pakeltas per hover.
2
Steigėjai
10+
Metai prieš kamerą
1
Išleistas produktas
Turinys
-
2026 → dabar · current
Įkūrėjas ir techninis vadovas, Dreamchasers, MB
Inžinierius, architektas, kūrėjas.
-
2024 → dabar
Įkūrėjas ir techninis vadovas, Celper AI
Supaprastink savo įdarbinimo procesą su AI.
-
2022 → dabar
Įkūrėjas, rphgarage.lt
Automobilių detaling, Vilnius.
Tai, ką prižiūri po išleidimo, ir esi tu. Visa kita — tik juodraštis.
PERŽIŪRA
Naršyklės chrome mockup.
Talpina produktų ekrano kopijas ir įdėtas peržiūras. Trys taškai; mono URL juosta.
Sapno paaiškinimas akimirksniu.
Aprašyk sapną. Gauk septynių dalių interpretaciją, suderintą su mėnulio faze.
- Verdiktas
- Simbolio dekodavimas
- Pasikartojantis signalas
Dekoratyvūs
Standartinis plaukelis
Prizminis plaukelis (taupiai)
Pajudink žymeklį čia.
F — PARAŠO AKCENTAS
Prizminis refrakcija.
Plonas konuso gradientas, keturios stotelės, 1,5px storis, 8s sukimasis. Vienintelė vieta, kur sistema leidžia chromatinę spalvą — ir tik prie kraštų.
Gyvai keturiuose dydžiuose
8px
16px
32px
64px
Septynios leistinos vietos
-
01 · ALWAYS-ON
Pradinis CTA mygtukasPradinis CTA mygtukas
Visada įjungtas 0.45 opacity. Pilnas opacity per hover ir fokusą.
-
02 · HOVER
Kalbos perjungiklisKalbos perjungiklis
Nematomas ramybėje. Pasirodo per focus-visible ir maršruto perėjimą.
-
03 · STATIC
Aktyvi navigacijos nuorodaAktyvi navigacijos nuoroda
Statinis 1px prizminis pabraukimas žymi esamą skyrių.
-
04 · ALWAYS-ON
Feeldreamy CTAFeeldreamy CTA
Visada įjungtas — vienintelis chromatinis akcentas pagrindinio produkto skyriuje.
-
05 · STATIC
Steigėjo portreto rėmas
Statinis 0.25 opacity žiedas. Be sukimo; skamba kaip viena išlaikyta nata.
-
06 · HOVER
Poraštės logotipasPoraštės logotipas
Hover atskleidžia 1px prizminį pabraukimą, nubraižomą iš kairės į dešinę.
-
07 · HOVER
Kontaktų nuorodosKontaktų nuorodos
Hover nubraižo prizminį pabraukimą; paskutinis chromatinis akcentas puslapyje.
Įgyvendinimas
Grynas CSS konuso gradientas su mask-composite: exclude centrui iškirsti.
Sukamas per transform animaciją ant ::before pseudo —
GPU kompozicijos, rasterizuojama vieną kartą, kaštai apie 0,1ms už kadrą 2017 MacBook.
.lim-prismatic-ring::before {
content: "";
position: absolute;
inset: -2px;
border-radius: inherit;
background: conic-gradient(
from 0deg,
var(--lim-prismatic-stop-1),
var(--lim-prismatic-stop-2),
var(--lim-prismatic-stop-3),
var(--lim-prismatic-stop-4),
var(--lim-prismatic-stop-1)
);
padding: 1.5px;
-webkit-mask:
linear-gradient(#000 0 0) content-box,
linear-gradient(#000 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
animation: lim-prism-spin 8s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}
Našumas ir atsarga
- Vienas animuotas žiedas matomame ekrane. Kiti atvejai sąlyginiai per
:hoverar:focus. will-changenenurodyta; transform pats iškelia sluoksnį.- Atsarga, kai
mask-compositenepalaikomas: vientisas 1px--lim-prismatic-inkkraštas 4,6:1 kontrastu. Be animacijos. - Sumažintas judesys: statinis žiedas opacity 1, be sukimo.
G — TARPAI IR IŠDĖSTYMAS
Dosnūs tarpai. Dvylika stulpelių apačioje.
Tarpai sklandūs per clamp(). Tinklelis — dvylika stulpelių; praktikoje
naudojame siaurą, prose ir platų konteinerius.
Tarpų skalė
| Žetonas | Reikšmė | Naudojimas |
|---|---|---|
Skyriaus paddingas | clamp(48px, 8vw, 96px) clamp(24px, 5vw, 64px) | Vertikalus ritmas |
Vidinis tarpas | clamp(20px, 3vw, 32px) | Antraštukas iki antraštės, tarp blokų |
Kortelės paddingas | clamp(20px, 3vw, 32px) | Card, FounderCard viduje |
Konteinerio max-width — siauras | 640px | Manifesto stulpelis, siauras tekstas |
Konteinerio max-width — prose | 880px | Hero vidus, numatytas konteineris |
Konteinerio max-width — platus | 1120px | Poraštės tinklelis, pilno pločio skyriai |
--lim-radius-sm | 0.25rem · 4px | Fokuso žiedo kampas |
--lim-radius-md | 0.5rem · 8px | Etiketės, smulki UI |
--lim-radius-lg | 0.75rem · 12px | Portretų rėmai |
--lim-radius-xl | 1rem · 16px | Kortelės, naršyklės mockup |
--lim-radius-2xl | 1.5rem · 24px | Steigėjų kortelės, dideli paviršiai |
--lim-radius-full | 9999px | Mygtukai, etiketės, prizminis žiedas |
Tinklelio demonstracija (12 stulpelių)
Lūžio taškai
| Vardas | Plotis | Elgsena |
|---|---|---|
| Kompaktas | ≤ 540px | Steigėjų kortelės: portretas virš teksto. Etikečių eilė lankstosi. |
| Siauras | ≤ 720px | Antraštės nav. susitraukia; lieka tik logotipas ir kalbos perjungiklis. |
| Planšetė | ≤ 820px | Dviejų stulpelių manifestas tampa vienu. Steigėjų tinklelis susikrauna. |
| Platus | > 820px | Pilnas išdėstymas. Manifestas dviejuose stulpeliuose. Steigėjai vienas šalia kito. |
H — PASIEKIAMUMAS
WCAG 2.2 AA, patikrinta.
Kontrasto poros dokumentuotos ir patikrintos. Fokuso žiedai — prizminiai. Reduced-motion gerbiamas šaknyje, ne lopomas per komponentą.
Patikrintos kontrasto poros
| Pora | Santykis | Verdiktas |
|---|---|---|
| ink-primary ant surface-page | 16,9:1 | AAA · tekstas, antraštės |
| ink-soft ant surface-page | 7,2:1 | AAA · paantraštė, palaikantis |
| ink-mute ant surface-page | 4,7:1 | AA · antraštukų riba |
| ink-mute ant surface-elevated | 4,4:1 | Nuleisti į ink-soft |
| ink-mute ant surface-sunken | 4,0:1 | AA neišlaiko — niekada |
| prismatic-ink ant surface-page | 4,6:1 | AA · akcentinis tekstas |
| ink-primary ant tamsios drobės | 15,5:1 | AAA · tamsus tekstas |
| prismatic-ink ant tamsios drobės | 4,8:1 | AA · tamsus akcentas |
Fokuso stiliai
Kiekvienas fokusuojamas paviršius naudoja 2px kontūrą su --lim-focus-ring
ir 4px aureolę 18% opacity. Tarpas — 3px. Fokuso žiedas — prizminis-violetinis, tad jis
tarnauja kaip dvigubas: prekės ženklo signalas, kuris nesivaržo su prizmine refrakcija
(kuri yra dekoratyvinė; fokuso žiedas — funkcinis).
Sumažinto judesio santrauka
- Visos
animation-durationapkarpomos iki 0,001ms. - Visos
transition-durationapkarpomos iki 0,001ms. - Prizminis žiedas — statinis, opacity 1.
- Scroll-snap išjungtas konteinerio lygiu.
- Lens-flare grąžina null per mount.
- Lenis nepritvirtinamas šiurkščiame žymeklyje ar reduced motion.
Klaviatūros navigacija
- Tab eina per skip-link, header, main, footer.
- Esc uždaro krypties perjungiklį; Cmd-K jį atveria.
- Native
<details>SSS pateikia atskleidimo elgseną. - Kiekvienas interaktyvus paviršius turi matomą fokuso žiedą.
Ekrano skaitytuvo orientyrai
| Orientyras | Elementas | Pastabos |
|---|---|---|
| banner | <header> | Logotipas, nav, kalbos perjungiklis. |
| main | <main id="main"> | Skip-link tikslas. Vienas puslapiui. |
| contentinfo | <footer> | Įmonės faktai, kontaktai. |
| navigation | <nav> | Pirminė navigacija header viduje. |
| address | <address> | ContactBlock apjuosia semantine address. |
DRAUDŽIAMA PORA · PAKARTOTINAI
--lim-ink-mute ant --lim-surface-elevated ar
--lim-surface-sunken krenta žemiau 4,5:1. Ant pakelto paviršiaus naudok
--lim-ink-soft, ant įdėtinio — --lim-ink-primary.
I — TOMO PABAIGA
I tomas baigtas.
Likusią sistemos dalį pamatyk gyvai produkcijos puslapiuose arba atsisiųsk markdown dokumentaciją — joje surašyta kiekvieno žetono lentelė.