mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-12 22:26:38 +03:00
* Add design-aware detector rules * Fix design-aware detector noise * Unify CLI and hook detector ignores * Fix remaining design-system review findings * Add detector ignore CLI * Fix design detector review findings * Fix design color source false positives * Fix core test suite registration * Add design-aware detector docs * Fix font priority design-system parsing * Fix color ignore value matching
154 lines
5.4 KiB
CSS
154 lines
5.4 KiB
CSS
/* ============================================================================
|
|
Divider patterns — shared between /design-system (where they live as
|
|
foundation elements) and / (homepage, where they're applied between
|
|
sections via a dev toggle until we pick).
|
|
|
|
Four CSS-only geometries: D1 double-notch, D2 ticks, D3 dot grid,
|
|
D5 circle anchor. Each composes with:
|
|
• Tone modifier — --patina, --plinth (defaults to kinpaku via currentColor)
|
|
• Texture modifier — --tex-leaf, --tex-patina, --tex-dust (uses the brand
|
|
accent images as the actual fill, with the pattern as a mask)
|
|
|
|
Depends on the brand tokens in kinpaku-tokens.css (--ks-kinpaku, --ks-patina).
|
|
============================================================================ */
|
|
|
|
.ksd-divider {
|
|
width: 100%;
|
|
color: var(--ks-kinpaku);
|
|
}
|
|
|
|
/* Tone modifiers. Override currentColor so any pattern can be re-tinted
|
|
without touching its geometry. Patina reads as oxidized copper alongside
|
|
the gold; plinth is a low-chroma warm dark that sits one step above the
|
|
lacquer bg and reads as inscribed into the surface. */
|
|
.ksd-divider--patina { color: var(--ks-patina); }
|
|
.ksd-divider--plinth { color: oklch(42% 0 0); }
|
|
|
|
/* Texture-fill modifiers. The pattern's geometry becomes a mask; the brand
|
|
accent texture becomes the visible fill. Filters match the .ks-accent-band
|
|
tuning so the inline divider reads as the same material as the foundation
|
|
textures. */
|
|
.ksd-divider--tex-leaf {
|
|
--ksd-fill: url("/assets/neo-kinpaku/kinpaku-gold-leaf.png");
|
|
--ksd-fill-filter: saturate(1.15) contrast(1.08);
|
|
}
|
|
.ksd-divider--tex-patina {
|
|
--ksd-fill: url("/assets/neo-kinpaku/verdigris-patina.png");
|
|
--ksd-fill-filter: saturate(1.18) contrast(1.06);
|
|
}
|
|
.ksd-divider--tex-dust {
|
|
--ksd-fill: url("/assets/neo-kinpaku/gold-dust-rule.png");
|
|
--ksd-fill-filter: saturate(1.22) contrast(1.15) brightness(1.12);
|
|
}
|
|
|
|
/* ----- Geometry: D1 double-notch ----- */
|
|
.ksd-divider--double-notch {
|
|
position: relative;
|
|
height: 8px;
|
|
}
|
|
.ksd-divider--double-notch::before,
|
|
.ksd-divider--double-notch::after {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
height: 1.5px;
|
|
background: currentColor;
|
|
}
|
|
.ksd-divider--double-notch::before {
|
|
top: 0;
|
|
background: linear-gradient(90deg, currentColor 0 9%, transparent 9% 11.5%, currentColor 11.5%);
|
|
}
|
|
.ksd-divider--double-notch::after {
|
|
bottom: 0;
|
|
}
|
|
|
|
/* ----- Geometry: D2 ticks ----- */
|
|
.ksd-divider--ticks {
|
|
height: 18px;
|
|
background:
|
|
repeating-linear-gradient(
|
|
-65deg,
|
|
currentColor 0 1.4px,
|
|
transparent 1.4px 12px
|
|
);
|
|
}
|
|
|
|
/* ----- Geometry: D3 dots ----- */
|
|
.ksd-divider--dots {
|
|
height: 18px;
|
|
background-image: radial-gradient(circle, currentColor 0.9px, transparent 1.4px);
|
|
background-size: 7px 6px;
|
|
background-position: 0 1px;
|
|
background-repeat: repeat;
|
|
}
|
|
|
|
/* ----- Geometry: D5 anchor ----- */
|
|
.ksd-divider--anchor {
|
|
position: relative;
|
|
height: 14px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0;
|
|
}
|
|
.ksd-divider--anchor::before {
|
|
content: "";
|
|
width: 11px;
|
|
height: 11px;
|
|
border: 1.5px solid currentColor;
|
|
border-radius: 50%;
|
|
flex: none;
|
|
}
|
|
.ksd-divider--anchor::after {
|
|
content: "";
|
|
flex: 1;
|
|
height: 1.5px;
|
|
background: currentColor;
|
|
}
|
|
|
|
/* ----- Texture-masked overrides per pattern ----- */
|
|
.ksd-divider--ticks:is(.ksd-divider--tex-leaf, .ksd-divider--tex-patina, .ksd-divider--tex-dust) {
|
|
background: var(--ksd-fill) center / cover no-repeat;
|
|
filter: var(--ksd-fill-filter);
|
|
-webkit-mask-image: repeating-linear-gradient(-65deg, black 0 1.4px, transparent 1.4px 12px);
|
|
mask-image: repeating-linear-gradient(-65deg, black 0 1.4px, transparent 1.4px 12px);
|
|
}
|
|
|
|
.ksd-divider--dots:is(.ksd-divider--tex-leaf, .ksd-divider--tex-patina, .ksd-divider--tex-dust) {
|
|
background-image: var(--ksd-fill);
|
|
background-size: cover;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
filter: var(--ksd-fill-filter);
|
|
-webkit-mask-image: radial-gradient(circle, black 0.9px, transparent 1.4px);
|
|
mask-image: radial-gradient(circle, black 0.9px, transparent 1.4px);
|
|
-webkit-mask-size: 7px 6px;
|
|
mask-size: 7px 6px;
|
|
-webkit-mask-repeat: repeat;
|
|
mask-repeat: repeat;
|
|
-webkit-mask-position: 0 1px;
|
|
mask-position: 0 1px;
|
|
}
|
|
|
|
.ksd-divider--double-notch:is(.ksd-divider--tex-leaf, .ksd-divider--tex-patina, .ksd-divider--tex-dust)::before,
|
|
.ksd-divider--double-notch:is(.ksd-divider--tex-leaf, .ksd-divider--tex-patina, .ksd-divider--tex-dust)::after {
|
|
background: var(--ksd-fill) center / cover no-repeat;
|
|
filter: var(--ksd-fill-filter);
|
|
}
|
|
.ksd-divider--double-notch:is(.ksd-divider--tex-leaf, .ksd-divider--tex-patina, .ksd-divider--tex-dust)::before {
|
|
-webkit-mask-image: linear-gradient(90deg, black 0 9%, transparent 9% 11.5%, black 11.5%);
|
|
mask-image: linear-gradient(90deg, black 0 9%, transparent 9% 11.5%, black 11.5%);
|
|
}
|
|
|
|
.ksd-divider--anchor:is(.ksd-divider--tex-leaf, .ksd-divider--tex-patina, .ksd-divider--tex-dust)::before {
|
|
border: 0;
|
|
background: var(--ksd-fill) center / cover no-repeat;
|
|
filter: var(--ksd-fill-filter);
|
|
-webkit-mask-image: radial-gradient(circle, transparent 0 4px, black 4px 5.5px, transparent 5.5px);
|
|
mask-image: radial-gradient(circle, transparent 0 4px, black 4px 5.5px, transparent 5.5px);
|
|
}
|
|
.ksd-divider--anchor:is(.ksd-divider--tex-leaf, .ksd-divider--tex-patina, .ksd-divider--tex-dust)::after {
|
|
background: var(--ksd-fill) center / cover no-repeat;
|
|
filter: var(--ksd-fill-filter);
|
|
}
|