clairity.css 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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; }