clairity.css 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/main.yml +27 -0
- data/.gitignore +66 -0
- data/CHANGELOG.md +423 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +373 -0
- data/README.md +170 -0
- data/Rakefile +12 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/clairity.css.gemspec +51 -0
- data/lib/assets/css/clairity/base.css +951 -0
- data/lib/assets/css/clairity/classes.css +264 -0
- data/lib/assets/css/clairity/components.css +946 -0
- data/lib/assets/css/clairity/cosmetic.css +157 -0
- data/lib/assets/css/clairity/functions.css +46 -0
- data/lib/assets/css/clairity/icons.css +44 -0
- data/lib/assets/css/clairity/normalize.css +239 -0
- data/lib/assets/css/clairity/palette.css +329 -0
- data/lib/assets/css/clairity/shims.css +20 -0
- data/lib/assets/css/clairity/states.css +756 -0
- data/lib/assets/css/clairity/utilities.css +68 -0
- data/lib/assets/css/clairity/variables.css +301 -0
- data/lib/assets/css/clairity.basic.css +28 -0
- data/lib/assets/css/clairity.classless.css +50 -0
- data/lib/assets/css/clairity.css +109 -0
- data/lib/assets/images/input-image.png +0 -0
- data/lib/assets/images/logo.png +0 -0
- data/lib/assets/images/profile-avatar.png +0 -0
- data/lib/assets/js/clairity.css.js +6 -0
- data/lib/assets/media/t-rex_roar.mp3 +0 -0
- data/lib/clairity.css/version.rb +5 -0
- data/lib/clairity.css.rb +10 -0
- data/sig/clairity.css.rbs +4 -0
- data/test/test_clairity_css.rb +17 -0
- data/test/test_helper.rb +5 -0
- metadata +128 -0
@@ -0,0 +1,157 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
COSMETIC - a few cosmetic adjustments to base.css that make it a little nicer
|
3
|
+
to use with a basic text-oriented site without additional styling.
|
4
|
+
these are generally combo selectors that are separated out because
|
5
|
+
they're beyond base html elements/pseudos.
|
6
|
+
\******************************************************************************/
|
7
|
+
|
8
|
+
|
9
|
+
/* -----------------------------------------------------------------------------
|
10
|
+
// #sectioning - block type elements meant to hold other content elements
|
11
|
+
// -------------------------------------------------------------------------- */
|
12
|
+
|
13
|
+
/* TODO: moved from components.css; make sure no unintended consequences appear;
|
14
|
+
sectioning children of body should be .readable by default - keep in sync
|
15
|
+
with classes.css - [0001] specificity */
|
16
|
+
body > :where(header, nav, main, section, div, figure, footer) {
|
17
|
+
width: 100%;
|
18
|
+
max-width: var(--line-length); /* for horizontal centering */
|
19
|
+
margin-inline: auto; /* centers if width is set */
|
20
|
+
}
|
21
|
+
|
22
|
+
/* bare pages should not have grid applied */
|
23
|
+
body:not(:has(main)):has(h1, p) { /* [0003] specificity */
|
24
|
+
display: block;
|
25
|
+
max-width: var(--line-length);
|
26
|
+
}
|
27
|
+
|
28
|
+
/* #aside - to align with main, remove initial top margin- [0011] specificity */
|
29
|
+
aside > :first-child { margin-top: 0; }
|
30
|
+
|
31
|
+
/* #nav #form #a #menu #li - inline nav elements by default - [0002] / [0003]
|
32
|
+
// .......................................................................... */
|
33
|
+
nav form { display: inline; } /* typically a search form */
|
34
|
+
nav a { max-height: var(--height); } /* contain <a> links/buttons */
|
35
|
+
nav > menu > li { display: inline; } /* only direct children, as menu
|
36
|
+
<li> can contain dropdown lists */
|
37
|
+
|
38
|
+
|
39
|
+
/* -----------------------------------------------------------------------------
|
40
|
+
// #headers - #header #hgroup #h1 #h2 #h3 #h4 #h5 #h6 + #p
|
41
|
+
// -------------------------------------------------------------------------- */
|
42
|
+
|
43
|
+
/* headings/<p>s in headers don't need their own margin - [0001] specificity */
|
44
|
+
:where(header, hgroup) :is(h1, h2, h3, h4, h5, h6, p) {
|
45
|
+
margin: 0;
|
46
|
+
}
|
47
|
+
|
48
|
+
/* dampen the prominence of links in headings */
|
49
|
+
:where(h1, h2, h3, h4, h5, h6) a {
|
50
|
+
font-weight: unset;
|
51
|
+
text-decoration-style: dotted;
|
52
|
+
}
|
53
|
+
|
54
|
+
|
55
|
+
/* -----------------------------------------------------------------------------
|
56
|
+
// #lists - ordered and unordered lists of items
|
57
|
+
// -------------------------------------------------------------------------- */
|
58
|
+
|
59
|
+
/* #nav #ul #li - nav lists should let parent nav dictate style- [0002] / [0003]
|
60
|
+
// .......................................................................... */
|
61
|
+
nav ul {
|
62
|
+
list-style: none;
|
63
|
+
margin: 0;
|
64
|
+
padding-left: 0;
|
65
|
+
}
|
66
|
+
nav ul li { max-width: 100%; }
|
67
|
+
|
68
|
+
/* safari 15.4+, chrome 105+ - ignored by other browsers - [0001] specificity */
|
69
|
+
ul:where(:has(li [type="checkbox"], li [type="radio"])) {
|
70
|
+
grid-column: full; /* otherwise radios/checks get squished */
|
71
|
+
list-style: none;
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
/* -----------------------------------------------------------------------------
|
76
|
+
// #forms - for submitting data to the server
|
77
|
+
// -------------------------------------------------------------------------- */
|
78
|
+
|
79
|
+
/* #form #section #p #div - would prefer subgrid to have containers layout
|
80
|
+
contents on the grid, but its not yet supported by chrome/edge. use
|
81
|
+
display: contents; to pierce the grid instead - [0002] specificity
|
82
|
+
// .......................................................................... */
|
83
|
+
form section, form p, form div {
|
84
|
+
display: contents; /* make contents align to form grid */
|
85
|
+
margin: 0; /* let contents, not container, set spacing */
|
86
|
+
}
|
87
|
+
/* #h2 - make form headers/paragraphs span the full width - [0002] specificity*/
|
88
|
+
form h2, form p { grid-column: full; }
|
89
|
+
|
90
|
+
|
91
|
+
/* -----------------------------------------------------------------------------
|
92
|
+
// #selections - dropdown/selection form controls
|
93
|
+
// -------------------------------------------------------------------------- */
|
94
|
+
|
95
|
+
/* redefine selects to use the clairity.css icons defined in icons.css */
|
96
|
+
select { background-image: var(--i-chevron); }
|
97
|
+
|
98
|
+
/* only pad options inside optgroups - [0002] specificity */
|
99
|
+
optgroup option { padding: 0 0 0 var(--m); }
|
100
|
+
|
101
|
+
|
102
|
+
/* -----------------------------------------------------------------------------
|
103
|
+
// #inputs - core form elements
|
104
|
+
// -------------------------------------------------------------------------- */
|
105
|
+
|
106
|
+
/* #label #checkbox - checkboxes inside labels is a common layout - firefox
|
107
|
+
only understands simple :has() selectors, so can't use the direct descendent
|
108
|
+
selector > here until it understands it - [0011] specificity
|
109
|
+
// ...........................................................................*/
|
110
|
+
label:has([type="checkbox"]) {
|
111
|
+
grid-column: elements;
|
112
|
+
justify-self: left;
|
113
|
+
}
|
114
|
+
|
115
|
+
label + [type="image"] {
|
116
|
+
max-height: var(--height);
|
117
|
+
object-fit: contain;
|
118
|
+
vertical-align: middle;
|
119
|
+
}
|
120
|
+
|
121
|
+
/* -----------------------------------------------------------------------------
|
122
|
+
// #blocks - elements that contain text blocks
|
123
|
+
// -------------------------------------------------------------------------- */
|
124
|
+
|
125
|
+
/* #pre #code #xmp - [0001] specificity
|
126
|
+
// ...........................................................................*/
|
127
|
+
pre > code, xmp {
|
128
|
+
border-radius: 0 var(--radius) var(--radius) 0;
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
/* -----------------------------------------------------------------------------
|
133
|
+
// #inline elements - elements that occur principally within text blocks.
|
134
|
+
// -------------------------------------------------------------------------- */
|
135
|
+
|
136
|
+
/* #pre #code - <code> inside <pre> is apparently the semantic way of marking up
|
137
|
+
code listings according to whatwg via prism.js - [0002] specificity */
|
138
|
+
pre > code {
|
139
|
+
/*color: var(--text);*/
|
140
|
+
/*line-height: var(--relaxed);*/
|
141
|
+
/*background-color: var(--background);*/
|
142
|
+
display: block; /* needed for background to cover container */
|
143
|
+
width: max-content; /* needed to stretch background-color or
|
144
|
+
overflowing code blocks */
|
145
|
+
min-width: var(--line-length);
|
146
|
+
/*white-space: pre;*/ /* don't wrap text */
|
147
|
+
padding: var(--m);
|
148
|
+
}
|
149
|
+
|
150
|
+
|
151
|
+
/* -----------------------------------------------------------------------------
|
152
|
+
// #interactive - built-in interactive components
|
153
|
+
// -------------------------------------------------------------------------- */
|
154
|
+
|
155
|
+
/* a method="dialog" #form with a plain <button> closes the dialog without js!*/
|
156
|
+
/* makes form/close button not be full-width - [0010] specificity */
|
157
|
+
[method="dialog"] { width: min-content; }
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
CSS FUNCTIONS - these are global functions embedded into css variables
|
3
|
+
|
4
|
+
* can't use unitless numbers in clamp
|
5
|
+
\******************************************************************************/
|
6
|
+
|
7
|
+
:root {
|
8
|
+
/* root variables for fluid typography - these are in px, but without the
|
9
|
+
dimension to facilitate calculatons - for more infor, see
|
10
|
+
https://smashingmagazine.com/2022/01/modern-fluid-typography-css-clamp/ */
|
11
|
+
--font-base: 16; /* what 1rem represents in px */
|
12
|
+
--min-vw: 400; /* the lower bound view width for clamping */
|
13
|
+
--max-vw: 800; /* the upper bound view width for clamping */
|
14
|
+
}
|
15
|
+
|
16
|
+
/* CSS variables with formulas can't be put in :root, so scope them closer to
|
17
|
+
their use - https://css-tricks.com/the-big-gotcha-with-custom-properties/ */
|
18
|
+
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { /* [0001] / [0010] */
|
19
|
+
/* rise (in rem) over run (in px) * 100 (since vw is a %) * conversion
|
20
|
+
factor (16px/1rem) => unitless slope */
|
21
|
+
--slope: ( (var(--max-font) - var(--min-font)) * 100 *
|
22
|
+
var(--font-base) / (var(--max-vw) - var(--min-vw)) );
|
23
|
+
--intercept: ( (var(--min-font) * var(--font-base)) -
|
24
|
+
(var(--slope) * var(--min-vw) / 100) );
|
25
|
+
--clamp: clamp((var(--min-font) * 1rem),
|
26
|
+
(var(--intercept)/var(--font-base) * 1rem +
|
27
|
+
var(--slope) * 1vw), (var(--max-font) * 1rem));
|
28
|
+
}
|
29
|
+
|
30
|
+
/* this function suffers from the "big gotcha with custom properties" as well,
|
31
|
+
so scope it closer to where it is used [0001] specificity */
|
32
|
+
a, i, input {
|
33
|
+
--colorize-icon: linear-gradient(var(--icon-color), var(--icon-color));
|
34
|
+
}
|
35
|
+
|
36
|
+
/* grid functions for typical containers */
|
37
|
+
body, main, header, footer, aside, article, nav, section, div {
|
38
|
+
/* Layout - note 1rem = 16px; 1 ch ≅ 10px; 2rem = 24 columns at 1200px wide,
|
39
|
+
since --grid + --m padding = 48px; 48px * 24 + 16px padding * 3 = 1200px */
|
40
|
+
--grid: 2rem; /* 24 columns @ 1200px & 1rem = 16px */
|
41
|
+
/*--grid: 5rem;*/ /* 12 columns @ 1200px & 1rem = 16px */
|
42
|
+
--gap: clamp(var(--s), 2vw, var(--m)); /* 400 - 800px */
|
43
|
+
/* padding column on each extent of the grid -
|
44
|
+
ranges from 2px @ 400px wide to 16px @ 1200px wide, without media queries */
|
45
|
+
--padding: clamp(var(--xxs), (1.75vw - 5px), var(--m));
|
46
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
ICONS - svg icons that can be included as CSS variables
|
3
|
+
|
4
|
+
https://css-tricks.com/how-i-made-an-icon-system-out-of-css-custom-properties/
|
5
|
+
* masking applies to the icon as well as any element at the same level, so
|
6
|
+
background icons need to be put in a pseudo-element
|
7
|
+
* icons are colored using the --icon-color linear-gradient function
|
8
|
+
\******************************************************************************/
|
9
|
+
|
10
|
+
:root {
|
11
|
+
/* modified from almond.css and other sources */
|
12
|
+
--i-burger: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 10 8'><path d='M1 1h8M1 4h 8M1 7h8' stroke='white' stroke-width='2' stroke-linecap='round'/></svg>");
|
13
|
+
--i-check: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><title>check</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M5 12l5 5l10 -10' /></svg>");
|
14
|
+
--i-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M0,10 20,30 40,10' fill='none' stroke='%23999' stroke-width='1.5'/></svg>");
|
15
|
+
--i-dash: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>");
|
16
|
+
--i-download: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M5,2 28,2 35,9 35,38 5,38Z M28,2 28,9 35,9 M20,10 20,30 M11,21 20,30 29,21' fill='none' stroke='%23999' stroke-width='1.5'/></svg>");
|
17
|
+
--i-external: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M28,4 39,4 39,15 M39,4 23,20 M28,9 7,9 7,34 35,34 35,15' fill='none' stroke='white' stroke-width='1.5'/></svg>");
|
18
|
+
--i-search: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M36,36 25,25' stroke='%23ccc' stroke-width='3' /><circle cx='15' cy='15' r='14' fill='none' stroke='%23ccc' stroke-width='1.5' /></svg>");
|
19
|
+
--i-sms: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M2,2 38,2 38,28 22,28 12,38 12,28 2,28Z' fill='none' stroke='%23999' stroke-width='1.5'/></svg>");
|
20
|
+
--i-tel: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><g fill='none' stroke-width='1.5'><path d='M8,1 34,1 34,39 8,39Z M12,5 30,5 30,30 12,30Z' /><circle cx='21' cy='34' r='2'/></g></svg>");
|
21
|
+
/* modified tabler icons */
|
22
|
+
--i-bookmark: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M9 4h6a2 2 0 0 1 2 2v14l-5 -3l-5 3v-14a2 2 0 0 1 2 -2' /></svg>");
|
23
|
+
--i-browser: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><rect x='4' y='4' width='16' height='16' rx='1' /><line x1='4' y1='8' x2='20' y2='8' /><line x1='8' y1='4' x2='8' y2='8' /></svg>");
|
24
|
+
--i-calendar: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><rect x='4' y='5' width='16' height='16' rx='2' /><line x1='16' y1='3' x2='16' y2='7' /><line x1='8' y1='3' x2='8' y2='7' /><line x1='4' y1='11' x2='20' y2='11' /><line x1='11' y1='15' x2='12' y2='15' /><line x1='12' y1='15' x2='12' y2='18' /></svg>");
|
25
|
+
--i-calendar-time: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M11.795 21h-6.795a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v4' /><circle cx='18' cy='18' r='4' /><path d='M15 3v4' /><path d='M7 3v4' /><path d='M3 11h16' /><path d='M18 16.496v1.504l1 1' /></svg>");
|
26
|
+
--i-external-link: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M11 7h-5a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-5' /><line x1='10' y1='14' x2='20' y2='4' /><polyline points='15 4 20 4 20 9' /></svg>");
|
27
|
+
--i-edit: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><title>edit</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1' /><path d='M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z' /><path d='M16 5l3 3' /></svg>");
|
28
|
+
--i-file: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M14 3v4a1 1 0 0 0 1 1h4' /><path d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z' /></svg>");
|
29
|
+
--i-file-download: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M14 3v4a1 1 0 0 0 1 1h4' /><path d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z' /><path d='M12 17v-6' /><path d='M9.5 14.5l2.5 2.5l2.5 -2.5' /></svg>");
|
30
|
+
--i-home-edit: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M9 21v-6a2 2 0 0 1 2 -2h2c.645 0 1.218 .305 1.584 .78' /><path d='M20.004 11.004l-8.004 -8.004l-9 9h2v7a2 2 0 0 0 2 2h4' /><path d='M18.42 15.61a2.1 2.1 0 0 1 2.97 2.97l-3.39 3.42h-3v-3l3.42 -3.39z' /></svg>");
|
31
|
+
--i-lock: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><rect x='5' y='11' width='14' height='10' rx='2' /><circle cx='12' cy='16' r='1' /><path d='M8 11v-4a4 4 0 0 1 8 0v4' /></svg>");
|
32
|
+
--i-mail: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><rect x='3' y='5' width='18' height='14' rx='2' /><polyline points='3 7 12 13 21 7' /></svg>");
|
33
|
+
--i-mail-check: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><title>mail check</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M11 19h-6a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v6' /><path d='M3 7l9 6l9 -6' /><path d='M15 19l2 2l4 -4' /></svg>");
|
34
|
+
--i-mail-x: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><title>mail x</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M13.5 19h-8.5a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v6' /><path d='M3 7l9 6l9 -6' /><path d='M22 22l-5 -5' /><path d='M17 22l5 -5' /></svg>");
|
35
|
+
|
36
|
+
--i-message-2: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M12 20l-3 -3h-2a3 3 0 0 1 -3 -3v-6a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v6a3 3 0 0 1 -3 3h-2l-3 3' /><line x1='8' y1='9' x2='16' y2='9' /><line x1='8' y1='13' x2='14' y2='13' /></svg>");
|
37
|
+
--i-numbers: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M8 10v-7l-2 2' /><path d='M6 16a2 2 0 1 1 4 0c0 .591 -.601 1.46 -1 2l-3 3.001h4' /><path d='M15 14a2 2 0 1 0 2 -2a2 2 0 1 0 -2 -2' /><path d='M6.5 10h3' /></svg>");
|
38
|
+
--i-phone: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M5 4h4l2 5l-2.5 1.5a11 11 0 0 0 5 5l1.5 -2.5l5 2v4a2 2 0 0 1 -2 2a16 16 0 0 1 -15 -15a2 2 0 0 1 2 -2' /></svg>");
|
39
|
+
--i-send: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><title>send</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><line x1='10' y1='14' x2='21' y2='3' /><path d='M21 3l-6.5 18a0.55 .55 0 0 1 -1 0l-3.5 -7l-7 -3.5a0.55 .55 0 0 1 0 -1l18 -6.5' /></svg>");
|
40
|
+
--i-server-cog: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><title>server cog</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><rect x='3' y='4' width='18' height='8' rx='3' /><path d='M12 20h-6a3 3 0 0 1 -3 -3v-2a3 3 0 0 1 3 -3h10.5' /><circle cx='18.001' cy='18' r='2' /><path d='M18.001 14.5v1.5' /><path d='M18.001 20v1.5' /><path d='M21.032 16.25l-1.299 .75' /><path d='M16.27 19l-1.3 .75' /><path d='M14.97 16.25l1.3 .75' /><path d='M19.733 19l1.3 .75' /><path d='M7 8v.01' /><path d='M7 16v.01' /></svg>");
|
41
|
+
--i-trash: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><title>delete</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><line x1='4' y1='7' x2='20' y2='7' /><line x1='10' y1='11' x2='10' y2='17' /><line x1='14' y1='11' x2='14' y2='17' /><path d='M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12' /><path d='M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3' /></svg>");
|
42
|
+
--i-user-circle: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><circle cx='12' cy='12' r='9' /><circle cx='12' cy='10' r='3' /><path d='M6.168 18.849a4 4 0 0 1 3.832 -2.849h4a4 4 0 0 1 3.834 2.855' /></svg>");
|
43
|
+
--i-user-off: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><title>disable</title><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M14.274 10.291a4 4 0 1 0 -5.554 -5.58m-.548 3.453a4.01 4.01 0 0 0 2.62 2.65' /><path d='M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 1.147 .167m2.685 2.681a4 4 0 0 1 .168 1.152v2' /><line x1='3' y1='3' x2='21' y2='21' /></svg>");
|
44
|
+
}
|
@@ -0,0 +1,239 @@
|
|
1
|
+
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css | as
|
2
|
+
reformatted by clairity.css */
|
3
|
+
|
4
|
+
/* Document - [0001] specificity unless otherwise noted
|
5
|
+
========================================================================== */
|
6
|
+
/** #html
|
7
|
+
* 1. Correct the line height in all browsers.
|
8
|
+
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
9
|
+
*/
|
10
|
+
html {
|
11
|
+
line-height: 1.15; /* 1 */
|
12
|
+
-webkit-text-size-adjust: 100%; /* 2 */
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
/* Sections
|
17
|
+
========================================================================== */
|
18
|
+
|
19
|
+
/** #body - Remove the margin in all browsers. */
|
20
|
+
body { margin: 0; }
|
21
|
+
|
22
|
+
/** #mail - Render the `main` element consistently in IE. */
|
23
|
+
main { display: block; }
|
24
|
+
|
25
|
+
/** #h1
|
26
|
+
* Correct the font size and margin on `h1` elements within `section` and
|
27
|
+
* `article` contexts in Chrome, Firefox, and Safari.
|
28
|
+
*/
|
29
|
+
h1 {
|
30
|
+
font-size: 2em;
|
31
|
+
margin: 0.67em 0;
|
32
|
+
}
|
33
|
+
|
34
|
+
|
35
|
+
/* Grouping content
|
36
|
+
========================================================================== */
|
37
|
+
|
38
|
+
/** #hr
|
39
|
+
* 1. Add the correct box sizing in Firefox.
|
40
|
+
* 2. Show the overflow in Edge and IE.
|
41
|
+
*/
|
42
|
+
hr {
|
43
|
+
box-sizing: content-box; /* 1 */
|
44
|
+
height: 0; /* 1 */
|
45
|
+
overflow: visible; /* 2 */
|
46
|
+
}
|
47
|
+
|
48
|
+
/** #pre
|
49
|
+
* 1. Correct the inheritance and scaling of font size in all browsers.
|
50
|
+
* 2. Correct the odd `em` font sizing in all browsers.
|
51
|
+
*/
|
52
|
+
pre {
|
53
|
+
font-family: monospace, monospace; /* 1 */
|
54
|
+
font-size: 1em; /* 2 */
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
/* Text-level semantics
|
59
|
+
========================================================================== */
|
60
|
+
|
61
|
+
/** #a - Remove the gray background on active links in IE 10. */
|
62
|
+
a { background-color: transparent; }
|
63
|
+
|
64
|
+
/** #abbr
|
65
|
+
* 1. Remove the bottom border in Chrome 57-
|
66
|
+
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
67
|
+
*/
|
68
|
+
abbr[title] { /* [0011] specificity */
|
69
|
+
border-bottom: none; /* 1 */
|
70
|
+
text-decoration: underline; /* 2 */
|
71
|
+
text-decoration: underline dotted; /* 2 */
|
72
|
+
}
|
73
|
+
|
74
|
+
/** #b #strong - Add the correct font weight in Chrome, Edge, and Safari. */
|
75
|
+
b, strong { font-weight: bolder; }
|
76
|
+
|
77
|
+
/** #code #kbd #samp
|
78
|
+
* 1. Correct the inheritance and scaling of font size in all browsers.
|
79
|
+
* 2. Correct the odd `em` font sizing in all browsers.
|
80
|
+
*/
|
81
|
+
code, kbd, samp {
|
82
|
+
font-family: monospace, monospace; /* 1 */
|
83
|
+
font-size: 1em; /* 2 */
|
84
|
+
}
|
85
|
+
|
86
|
+
/** #small - Add the correct font size in all browsers. */
|
87
|
+
small { font-size: 80%; }
|
88
|
+
|
89
|
+
/** #sub #sup - Prevent sub & sup from affecting line height in all browsers. */
|
90
|
+
sub, sup {
|
91
|
+
font-size: 75%;
|
92
|
+
line-height: 0;
|
93
|
+
position: relative;
|
94
|
+
vertical-align: baseline;
|
95
|
+
}
|
96
|
+
sub { bottom: -0.25em; }
|
97
|
+
sup { top: -0.5em; }
|
98
|
+
|
99
|
+
|
100
|
+
/* Embedded content
|
101
|
+
========================================================================== */
|
102
|
+
|
103
|
+
/** #img - Remove the border on images inside links in IE 10. */
|
104
|
+
img { border-style: none; }
|
105
|
+
|
106
|
+
|
107
|
+
/* Forms
|
108
|
+
========================================================================== */
|
109
|
+
|
110
|
+
/** #button #input #optgroup #select #textarea
|
111
|
+
* 1. Change the font styles in all browsers.
|
112
|
+
* 2. Remove the margin in Firefox and Safari.
|
113
|
+
*/
|
114
|
+
button, input, optgroup, select, textarea {
|
115
|
+
font-family: inherit; /* 1 */
|
116
|
+
font-size: 100%; /* 1 */
|
117
|
+
line-height: 1.15; /* 1 */
|
118
|
+
margin: 0; /* 2 */
|
119
|
+
}
|
120
|
+
|
121
|
+
/** #button #input
|
122
|
+
* Show the overflow in IE.
|
123
|
+
* 1. Show the overflow in Edge.
|
124
|
+
*/
|
125
|
+
button,
|
126
|
+
input { /* 1 */
|
127
|
+
overflow: visible;
|
128
|
+
}
|
129
|
+
|
130
|
+
/** #button #select
|
131
|
+
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
132
|
+
* 1. Remove the inheritance of text transform in Firefox.
|
133
|
+
*/
|
134
|
+
button,
|
135
|
+
select { /* 1 */
|
136
|
+
text-transform: none;
|
137
|
+
}
|
138
|
+
|
139
|
+
/** #button #reset #submit - Correct inability to style clickable types in iOS
|
140
|
+
and Safari. - [0001] / [0010] specificity */
|
141
|
+
button, [type="button"], [type="reset"], [type="submit"] {
|
142
|
+
-webkit-appearance: button;
|
143
|
+
}
|
144
|
+
|
145
|
+
/** #button #reset #submit - Remove the inner border and padding in Firefox. -
|
146
|
+
[0002] / [0011] specificity */
|
147
|
+
button::-moz-focus-inner, [type="button"]::-moz-focus-inner,
|
148
|
+
[type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
|
149
|
+
border-style: none;
|
150
|
+
padding: 0;
|
151
|
+
}
|
152
|
+
/** button #reset #submit - Restore focus styles unset by the previous rule. -
|
153
|
+
[0011] / [0020] specificity */
|
154
|
+
button:-moz-focusring, [type="button"]:-moz-focusring,
|
155
|
+
[type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring {
|
156
|
+
outline: 1px dotted ButtonText;
|
157
|
+
}
|
158
|
+
|
159
|
+
/** #fieldset - Correct the padding in Firefox. */
|
160
|
+
fieldset { padding: 0.35em 0.75em 0.625em; }
|
161
|
+
|
162
|
+
/** #legend
|
163
|
+
* 1. Correct the text wrapping in Edge and IE.
|
164
|
+
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
165
|
+
* 3. Remove the padding so developers are not caught out when they zero out
|
166
|
+
* `fieldset` elements in all browsers.
|
167
|
+
*/
|
168
|
+
legend {
|
169
|
+
box-sizing: border-box; /* 1 */
|
170
|
+
color: inherit; /* 2 */
|
171
|
+
display: table; /* 1 */
|
172
|
+
max-width: 100%; /* 1 */
|
173
|
+
padding: 0; /* 3 */
|
174
|
+
white-space: normal; /* 1 */
|
175
|
+
}
|
176
|
+
|
177
|
+
/** #progress - Add correct vertical alignment in Chrome, Firefox, and Opera. */
|
178
|
+
progress { vertical-align: baseline; }
|
179
|
+
|
180
|
+
/** #textarea - Remove the default vertical scrollbar in IE 10+. */
|
181
|
+
textarea { overflow: auto; }
|
182
|
+
|
183
|
+
/** #checkbox #radio - [0010] specificity
|
184
|
+
* 1. Add the correct box sizing in IE 10.
|
185
|
+
* 2. Remove the padding in IE 10.
|
186
|
+
*/
|
187
|
+
[type="checkbox"], [type="radio"] {
|
188
|
+
box-sizing: border-box; /* 1 */
|
189
|
+
padding: 0; /* 2 */
|
190
|
+
}
|
191
|
+
|
192
|
+
/** #number - Correct cursor style of increment/decrement buttons in Chrome. -
|
193
|
+
[0011] specificity */
|
194
|
+
[type="number"]::-webkit-inner-spin-button,
|
195
|
+
[type="number"]::-webkit-outer-spin-button {
|
196
|
+
height: auto;
|
197
|
+
}
|
198
|
+
|
199
|
+
/** #search - [0010] specificity
|
200
|
+
* 1. Correct the odd appearance in Chrome and Safari.
|
201
|
+
* 2. Correct the outline style in Safari.
|
202
|
+
*/
|
203
|
+
[type="search"] {
|
204
|
+
-webkit-appearance: textfield; /* 1 */
|
205
|
+
outline-offset: -2px; /* 2 */
|
206
|
+
}
|
207
|
+
|
208
|
+
/** #search - Remove the inner padding in Chrome and Safari on macOS. -
|
209
|
+
[0011] specificity */
|
210
|
+
[type="search"]::-webkit-search-decoration {
|
211
|
+
-webkit-appearance: none;
|
212
|
+
}
|
213
|
+
|
214
|
+
/**
|
215
|
+
* 1. Correct the inability to style clickable types in iOS and Safari.
|
216
|
+
* 2. Change font properties to `inherit` in Safari.
|
217
|
+
*/
|
218
|
+
::-webkit-file-upload-button {
|
219
|
+
-webkit-appearance: button; /* 1 */
|
220
|
+
font: inherit; /* 2 */
|
221
|
+
}
|
222
|
+
|
223
|
+
|
224
|
+
/* Interactive
|
225
|
+
========================================================================== */
|
226
|
+
/** #details - Add the correct display in Edge, IE 10+, and Firefox. */
|
227
|
+
details { display: block; }
|
228
|
+
|
229
|
+
/** #summary - Add the correct display in all browsers. */
|
230
|
+
summary { display: list-item; }
|
231
|
+
|
232
|
+
|
233
|
+
/* Misc
|
234
|
+
========================================================================== */
|
235
|
+
/** #template - Add the correct display in IE 10+. */
|
236
|
+
template { display: none; }
|
237
|
+
|
238
|
+
/** #hidden - Add the correct display in IE 10. - [0010] specificity */
|
239
|
+
[hidden] { display: none; }
|