diff --git a/DESIGN.md b/DESIGN.md index 583c5ae..8155aa1 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -85,19 +85,13 @@ the relevant values for making a decision. We want to ensure all accents can reach >4.5 WCAG 2 contrast ratio (the standard requirement for small text on the web) against all biome monotones for each theme: -+ For BG l20 (harsh, dark) -> l65 is min lightness where all accents have CR - >=4.5 -+ For BG l25 (regular, dark) -> l65 is min lightness where all accents have CR - >=4.5 -+ For BG l30 (soft, dark) -> l70 is min lightness where all accents have CR - >=4.5 ++ For BG l20 (harsh, dark) -> l65 is min lightness where all accents have CR >=4.5 ++ For BG l25 (regular, dark) -> l65 is min lightness where all accents have CR >=4.5 ++ For BG l30 (soft, dark) -> l70 is min lightness where all accents have CR >=4.5 -+ For BG l90 (harsh, dark) -> l45 is max lightness where all accents have CR - >=4.5 -+ For BG l85 (regular, dark) -> l45 is min lightness where all accents have CR - >=4.5 -+ For BG l80 (soft, dark) -> l40 is min lightness where all accents have CR - >=4.5 ++ For BG l90 (harsh, dark) -> l45 is max lightness where all accents have CR >=4.5 ++ For BG l85 (regular, dark) -> l45 is min lightness where all accents have CR >=4.5 ++ For BG l80 (soft, dark) -> l40 is min lightness where all accents have CR >=4.5 For the monotone boundaries (l15 and l95, neither of which are possible backgrounds for terminal or nvim in the current theme definitions), the @@ -117,3 +111,76 @@ shade" of the l15-l95 shade group is l55, meaning these groups are very central (the light triplet could move down by one shade step, but we want these accents to be as bright as we can get away with; otherwise, they are extremely dull in the light modes, and we thus don't mind bias toward a brighter lightness). + +The following table shows the lightness thresholds of accent colors required to achieve various +contrast ratios under different lightness levels of monotone backgrounds. These +ratios correspond to WCAG 2.2 standards: + +- WCAG AA: contrast ratio ≥3:1 for large text, ≥4.5:1 for normal text +- WCAG AAA: contrast ratio ≥4.5:1 for large text, ≥7:1 for normal text + +The official theme variants treat WCAG AA for normal text as the sweet spot, +but one could redefine accent selection around a more extreme contrast +threshold as desired. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Monotone
lightness
Accent lightness for contrast ratio
3:14.5:17:1
=15%≥50%≥60%≥75%
=20%≥55%≥65%≥75%
=25%≥55%≥65%≥80%
=30%≥60%≥70%≥80%
=80%≤50%≤40%≤30%
=85%≤50%≤45%≤30%
=90%≤55%≤45%≤35%
=95%≤60%≤50%≤40%
+ diff --git a/templates/groups/monobiome-oklch.json b/templates/groups/monobiome-oklch.json new file mode 100644 index 0000000..d9d1974 --- /dev/null +++ b/templates/groups/monobiome-oklch.json @@ -0,0 +1,222 @@ +{ + "default": { + "l15": "oklch(15% 0 137.33)", + "l20": "oklch(20% 0 137.33)", + "l25": "oklch(25% 0 137.33)", + "l30": "oklch(30% 0 137.33)", + "l35": "oklch(35% 0 137.33)", + "l40": "oklch(40% 0 137.33)", + "l45": "oklch(45% 0 137.33)", + "l50": "oklch(50% 0 137.33)", + "l55": "oklch(55% 0 137.33)", + "l60": "oklch(60% 0 137.33)", + "l65": "oklch(65% 0 137.33)", + "l70": "oklch(70% 0 137.33)", + "l75": "oklch(75% 0 137.33)", + "l80": "oklch(80% 0 137.33)", + "l85": "oklch(85% 0 137.33)", + "l90": "oklch(90% 0 137.33)", + "l95": "oklch(95% 0 137.33)", + "l98": "oklch(97.5% 0 137.33)" + }, + "badlands": { + "l15": "oklch(15% 0.011 29)", + "l20": "oklch(20% 0.011 29)", + "l25": "oklch(25% 0.011 29)", + "l30": "oklch(30% 0.011 29)", + "l35": "oklch(35% 0.011 29)", + "l40": "oklch(40% 0.011 29)", + "l45": "oklch(45% 0.011 29)", + "l50": "oklch(50% 0.011 29)", + "l55": "oklch(55% 0.011 29)", + "l60": "oklch(60% 0.011 29)", + "l65": "oklch(65% 0.011 29)", + "l70": "oklch(70% 0.011 29)", + "l75": "oklch(75% 0.011 29)", + "l80": "oklch(80% 0.011 29)", + "l85": "oklch(85% 0.011 29)", + "l90": "oklch(90% 0.011 29)", + "l95": "oklch(95% 0.011 29)", + "l98": "oklch(97.5% 0.011 29)" + }, + "chaparral": { + "l15": "oklch(15% 0.011 62.5)", + "l20": "oklch(20% 0.011 62.5)", + "l25": "oklch(25% 0.011 62.5)", + "l30": "oklch(30% 0.011 62.5)", + "l35": "oklch(35% 0.011 62.5)", + "l40": "oklch(40% 0.011 62.5)", + "l45": "oklch(45% 0.011 62.5)", + "l50": "oklch(50% 0.011 62.5)", + "l55": "oklch(55% 0.011 62.5)", + "l60": "oklch(60% 0.011 62.5)", + "l65": "oklch(65% 0.011 62.5)", + "l70": "oklch(70% 0.011 62.5)", + "l75": "oklch(75% 0.011 62.5)", + "l80": "oklch(80% 0.011 62.5)", + "l85": "oklch(85% 0.011 62.5)", + "l90": "oklch(90% 0.011 62.5)", + "l95": "oklch(95% 0.011 62.5)", + "l98": "oklch(97.5% 0.011 62.5)" + }, + "savanna": { + "l15": "oklch(15% 0.011 104)", + "l20": "oklch(20% 0.011 104)", + "l25": "oklch(25% 0.011 104)", + "l30": "oklch(30% 0.011 104)", + "l35": "oklch(35% 0.011 104)", + "l40": "oklch(40% 0.011 104)", + "l45": "oklch(45% 0.011 104)", + "l50": "oklch(50% 0.011 104)", + "l55": "oklch(55% 0.011 104)", + "l60": "oklch(60% 0.011 104)", + "l65": "oklch(65% 0.011 104)", + "l70": "oklch(70% 0.011 104)", + "l75": "oklch(75% 0.011 104)", + "l80": "oklch(80% 0.011 104)", + "l85": "oklch(85% 0.011 104)", + "l90": "oklch(90% 0.011 104)", + "l95": "oklch(95% 0.011 104)", + "l98": "oklch(97.5% 0.011 104)" + }, + "grassland": { + "l15": "oklch(15.01% 0.011 148)", + "l20": "oklch(20% 0.011 148)", + "l25": "oklch(25% 0.011 148)", + "l30": "oklch(30% 0.011 148)", + "l35": "oklch(35% 0.011 148)", + "l40": "oklch(40% 0.011 148)", + "l45": "oklch(45% 0.011 148)", + "l50": "oklch(50% 0.011 148)", + "l55": "oklch(55% 0.011 148)", + "l60": "oklch(60% 0.011 148)", + "l65": "oklch(65% 0.011 148)", + "l70": "oklch(70% 0.011 148)", + "l75": "oklch(75% 0.011 148)", + "l80": "oklch(80% 0.011 148)", + "l85": "oklch(85% 0.011 148)", + "l90": "oklch(90% 0.011 148)", + "l95": "oklch(95% 0.011 148)", + "l98": "oklch(97.5% 0.011 148)" + }, + "tundra": { + "l15": "oklch(15% 0.011 262)", + "l20": "oklch(20% 0.011 262)", + "l25": "oklch(25% 0.011 262)", + "l30": "oklch(30% 0.011 262)", + "l35": "oklch(35% 0.011 262)", + "l40": "oklch(40% 0.011 262)", + "l45": "oklch(45% 0.011 262)", + "l50": "oklch(50% 0.011 262)", + "l55": "oklch(55% 0.011 262)", + "l60": "oklch(60% 0.011 262)", + "l65": "oklch(65% 0.011 262)", + "l70": "oklch(70% 0.011 262)", + "l75": "oklch(75% 0.011 262)", + "l80": "oklch(80% 0.011 262)", + "l85": "oklch(85% 0.011 262)", + "l90": "oklch(90% 0.011 262)", + "l95": "oklch(95% 0.011 262)", + "l98": "oklch(97.5% 0.011 262)" + }, + "red": { + "l15": "oklch(15% 0.058 29)", + "l20": "oklch(20% 0.074 29)", + "l25": "oklch(25% 0.092 29)", + "l30": "oklch(30% 0.11 29)", + "l35": "oklch(35% 0.128 29)", + "l40": "oklch(40% 0.147 29)", + "l45": "oklch(45% 0.167 29)", + "l50": "oklch(50% 0.183 29)", + "l55": "oklch(55% 0.193 29)", + "l60": "oklch(60% 0.193 29)", + "l65": "oklch(65% 0.182 29)", + "l70": "oklch(70% 0.164 29)", + "l75": "oklch(75% 0.14 29)", + "l80": "oklch(80% 0.112 29)", + "l85": "oklch(85% 0.081 29)", + "l90": "oklch(90% 0.052 29)", + "l95": "oklch(95% 0.024 29)", + "l98": "oklch(97.5% 0.012 29)" + }, + "orange": { + "l15": "oklch(15% 0.0301 62.5)", + "l20": "oklch(20% 0.038 62.5)", + "l25": "oklch(25% 0.046 62.5)", + "l30": "oklch(30% 0.058 62.5)", + "l35": "oklch(35% 0.07 62.5)", + "l40": "oklch(40% 0.084 62.5)", + "l45": "oklch(45% 0.1 62.5)", + "l50": "oklch(50% 0.114 62.5)", + "l55": "oklch(55% 0.125 62.5)", + "l60": "oklch(60% 0.134 62.5)", + "l65": "oklch(65% 0.138 62.5)", + "l70": "oklch(70% 0.136 62.5)", + "l75": "oklch(75% 0.128 62.5)", + "l80": "oklch(80% 0.112 62.5)", + "l85": "oklch(85% 0.092 62.5)", + "l90": "oklch(90% 0.064 62.5)", + "l95": "oklch(95% 0.032 62.5)", + "l98": "oklch(97.5% 0.008 62.5)" + }, + "yellow": { + "l15": "oklch(14.99% 0.02 104)", + "l20": "oklch(20% 0.024 104)", + "l25": "oklch(25% 0.03 104)", + "l30": "oklch(30% 0.036 104)", + "l35": "oklch(35% 0.044 104)", + "l40": "oklch(40% 0.05 104)", + "l45": "oklch(45% 0.06 104)", + "l50": "oklch(50% 0.068 104)", + "l55": "oklch(55% 0.076 104)", + "l60": "oklch(60% 0.082 104)", + "l65": "oklch(65% 0.088 104)", + "l70": "oklch(70% 0.088 104)", + "l75": "oklch(75% 0.086 104)", + "l80": "oklch(80% 0.082 104)", + "l85": "oklch(85% 0.072 104)", + "l90": "oklch(90% 0.058 104)", + "l95": "oklch(95% 0.04 104)", + "l98": "oklch(97.5% 0.016 104)" + }, + "green": { + "l15": "oklch(14.99% 0.0401 148)", + "l20": "oklch(20% 0.048 148)", + "l25": "oklch(25% 0.056 148)", + "l30": "oklch(30% 0.064 148)", + "l35": "oklch(35% 0.072 148)", + "l40": "oklch(40% 0.08 148)", + "l45": "oklch(45% 0.09 148)", + "l50": "oklch(50% 0.098 148)", + "l55": "oklch(55% 0.104 148)", + "l60": "oklch(60% 0.108 148)", + "l65": "oklch(65% 0.11 148)", + "l70": "oklch(70% 0.108 148)", + "l75": "oklch(75% 0.102 148)", + "l80": "oklch(80% 0.094 148)", + "l85": "oklch(85% 0.084 148)", + "l90": "oklch(90% 0.072 148)", + "l95": "oklch(95% 0.05 148)", + "l98": "oklch(97.5% 0.024 148)" + }, + "blue": { + "l15": "oklch(15% 0.06 262)", + "l20": "oklch(20% 0.072 262)", + "l25": "oklch(25% 0.084 262)", + "l30": "oklch(30% 0.096 262)", + "l35": "oklch(35% 0.106 262)", + "l40": "oklch(40% 0.116 262.01)", + "l45": "oklch(45% 0.124 262)", + "l50": "oklch(50% 0.13 262)", + "l55": "oklch(55% 0.132 262)", + "l60": "oklch(60% 0.128 262)", + "l65": "oklch(65% 0.122 262)", + "l70": "oklch(70% 0.11 262)", + "l75": "oklch(75% 0.096 262)", + "l80": "oklch(80% 0.08 262)", + "l85": "oklch(85% 0.064 262)", + "l90": "oklch(90% 0.044 262)", + "l95": "oklch(95% 0.023 262)", + "l98": "oklch(97.5% 0.011 262)" + } +} diff --git a/templates/groups/palette/monobiome.toml b/templates/groups/palette/monobiome.toml index a0f8545..09b75f5 100644 --- a/templates/groups/palette/monobiome.toml +++ b/templates/groups/palette/monobiome.toml @@ -1,4 +1,4 @@ -version = "1.1.0" +version = "1.1.1" [default] l15 = "#0b0b0b"