diff options
Diffstat (limited to 'assets')
-rw-r--r-- | assets/css/_basics.scss | 6 | ||||
-rw-r--r-- | assets/css/_vars.scss | 42 | ||||
-rw-r--r-- | assets/css/components/_hero.scss | 53 | ||||
-rw-r--r-- | assets/css/components/_landing-banner.scss | 40 | ||||
-rw-r--r-- | assets/css/components/_nav.scss | 27 | ||||
-rw-r--r-- | assets/css/layouts/_container.scss | 19 | ||||
-rw-r--r-- | assets/css/layouts/_landing.scss | 60 | ||||
-rw-r--r-- | assets/css/layouts/_site.scss | 46 | ||||
-rw-r--r-- | assets/css/scopes/_body.scss | 7 | ||||
-rw-r--r-- | assets/css/style.scss | 6 | ||||
-rw-r--r-- | assets/logo/logo.svg | 72 |
11 files changed, 245 insertions, 133 deletions
diff --git a/assets/css/_basics.scss b/assets/css/_basics.scss index 740b293..eee48f4 100644 --- a/assets/css/_basics.scss +++ b/assets/css/_basics.scss | |||
@@ -34,6 +34,12 @@ code { | |||
34 | font-feature-settings: 'calt' 0, 'dlig' 1, 'ss09' 1; | 34 | font-feature-settings: 'calt' 0, 'dlig' 1, 'ss09' 1; |
35 | } | 35 | } |
36 | 36 | ||
37 | html, | ||
38 | body, | ||
39 | main { | ||
40 | height: 100%; | ||
41 | } | ||
42 | |||
37 | html { | 43 | html { |
38 | background-color: prop(--colors --bg); | 44 | background-color: prop(--colors --bg); |
39 | color: prop(--colors --fg); | 45 | color: prop(--colors --fg); |
diff --git a/assets/css/_vars.scss b/assets/css/_vars.scss index 3461b81..0c6102d 100644 --- a/assets/css/_vars.scss +++ b/assets/css/_vars.scss | |||
@@ -1,9 +1,8 @@ | |||
1 | $iro-root-size: 16px; | ||
2 | |||
3 | $breakpoints: ( | 1 | $breakpoints: ( |
4 | xs: 320px, | 2 | xs: 320px, |
5 | sm: 700px, | 3 | sm: 600px, |
6 | md: 1100px, | 4 | md: 900px, |
5 | lg: 1400px, | ||
7 | ); | 6 | ); |
8 | 7 | ||
9 | $unit-intervals: ( | 8 | $unit-intervals: ( |
@@ -18,28 +17,35 @@ $font-fam--large: 'Garet Variable', $font-fam--text; | |||
18 | $font-fam--mono: 'Iosevka Term SS09', 'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace; | 17 | $font-fam--mono: 'Iosevka Term SS09', 'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace; |
19 | $font-size: 16px; | 18 | $font-size: 16px; |
20 | $line-height: 1.7; | 19 | $line-height: 1.7; |
21 | $content--width: 56rem; | 20 | $content--width: 42rem; |
22 | $subcontent--indent: 2em; | 21 | $subcontent--indent: 2em; |
23 | 22 | ||
24 | $gray0: hsl(220, 0%, 7%); | 23 | $gray0: hsl(220, 0%, 6%); |
25 | $gray1: hsl(220, 0%, 10%); | 24 | $gray1: hsl(220, 0%, 9%); |
26 | $gray2: hsl(220, 0%, 29%); | 25 | $gray2: hsl(220, 0%, 16%); |
27 | $gray3: hsl(220, 0%, 54%); | 26 | $gray3: hsl(220, 0%, 29%); |
28 | $gray4: hsl(220, 0%, 73%); | 27 | $gray4: hsl(220, 0%, 54%); |
29 | $gray5: hsl(220, 0%, 100%); | 28 | $gray5: hsl(220, 0%, 73%); |
29 | $gray6: hsl(220, 0%, 100%); | ||
30 | 30 | ||
31 | @include store(( | 31 | @include store(( |
32 | --colors: ( | 32 | --colors: ( |
33 | --bg-hi: $gray0, // Lighter background | 33 | --bg-hi: $gray0, // Darker background |
34 | --bg: $gray1, // Background | 34 | --bg: $gray1, // Background |
35 | --bg-lo: $gray2, // Lighter background | ||
35 | 36 | ||
36 | --obj: $gray2, | 37 | --obj: $gray3, |
37 | 38 | ||
38 | --fg-hi: $gray3, // Faint text | 39 | --fg-hi: $gray4, // Faint text |
39 | --fg: $gray4, // Text | 40 | --fg: $gray5, // Text |
40 | --fg-lo: $gray5, // Strong text | 41 | --fg-lo: $gray6, // Strong text |
41 | 42 | ||
42 | --accent: hsl(354, 84%, 55%), | 43 | --accent: ( |
44 | --h: 354, | ||
45 | --s: 84%, | ||
46 | --l: 55%, | ||
47 | --color: hsl(var(--colors--accent--h), var(--colors--accent--s), var(--colors--accent--l)), | ||
48 | ) | ||
43 | ) | 49 | ) |
44 | )); | 50 | )); |
45 | 51 | ||
diff --git a/assets/css/components/_hero.scss b/assets/css/components/_hero.scss deleted file mode 100644 index 3d8890e..0000000 --- a/assets/css/components/_hero.scss +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | @include namespace('hero') { | ||
2 | @include store(( | ||
3 | --colors: ( | ||
4 | --emph-fg: prop(--colors --accent, $global: true), | ||
5 | --back-fg: prop(--colors --bg-hi, $global: true) | ||
6 | ) | ||
7 | )); | ||
8 | |||
9 | @include component(namespace()) { | ||
10 | display: flex; | ||
11 | position: relative; | ||
12 | align-items: center; | ||
13 | justify-content: center; | ||
14 | text-align: center; | ||
15 | |||
16 | @include element('title') { | ||
17 | margin-top: 0; | ||
18 | font-family: $font-fam--large; | ||
19 | text-transform: none; | ||
20 | |||
21 | @include modifier('front') { | ||
22 | max-width: 7em; | ||
23 | font-size: 2.5rem; | ||
24 | font-weight: 200; | ||
25 | } | ||
26 | |||
27 | @include modifier('back') { | ||
28 | position: absolute; | ||
29 | z-index: -10; | ||
30 | transform: translateY(-.08em); | ||
31 | color: prop(--colors --back-fg); | ||
32 | } | ||
33 | } | ||
34 | |||
35 | @include element('emph') { | ||
36 | color: prop(--colors --emph-fg); | ||
37 | font-weight: 500; | ||
38 | } | ||
39 | |||
40 | @include iro-responsive-env(('xs', 'sm', 'md')) { | ||
41 | @include element('title') { | ||
42 | @include modifier('front') { | ||
43 | padding: iro-responsive-set((7rem, 7rem, 10rem)) 0; | ||
44 | font-size: iro-responsive-set((2.2rem, 3rem, 3.5rem)); | ||
45 | } | ||
46 | |||
47 | @include modifier('back') { | ||
48 | font-size: iro-responsive-set((12rem, 14rem, 16rem)); | ||
49 | } | ||
50 | } | ||
51 | } | ||
52 | } | ||
53 | } | ||
diff --git a/assets/css/components/_landing-banner.scss b/assets/css/components/_landing-banner.scss new file mode 100644 index 0000000..ee5deab --- /dev/null +++ b/assets/css/components/_landing-banner.scss | |||
@@ -0,0 +1,40 @@ | |||
1 | @include namespace('landing-banner') { | ||
2 | @include store(( | ||
3 | --colors: ( | ||
4 | --emph-fg: prop(--colors --accent --color, $global: true), | ||
5 | --emph-bg: prop(--colors --bg-hi, $global: true) | ||
6 | ) | ||
7 | )); | ||
8 | |||
9 | @include component(namespace()) { | ||
10 | @include element('title') { | ||
11 | max-width: 7em; | ||
12 | margin-top: 0; | ||
13 | transform: translateX(-.04em); | ||
14 | font-family: $font-fam--large; | ||
15 | font-weight: 350; | ||
16 | text-transform: none; | ||
17 | } | ||
18 | |||
19 | @include element('title-inner') { | ||
20 | background-image: linear-gradient( | ||
21 | to top, | ||
22 | transparent .15em, | ||
23 | #{prop(--colors --emph-bg)} .15em, | ||
24 | #{prop(--colors --emph-bg)} .6em, | ||
25 | transparent .6em | ||
26 | ); | ||
27 | } | ||
28 | |||
29 | @include element('emph') { | ||
30 | color: prop(--colors --emph-fg); | ||
31 | font-weight: 550; | ||
32 | } | ||
33 | |||
34 | @include iro-responsive-env(('md', 'lg')) { | ||
35 | @include element('title') { | ||
36 | font-size: iro-responsive-set((2.6rem, 3rem)); | ||
37 | } | ||
38 | } | ||
39 | } | ||
40 | } | ||
diff --git a/assets/css/components/_nav.scss b/assets/css/components/_nav.scss index 8fc4564..03118a9 100644 --- a/assets/css/components/_nav.scss +++ b/assets/css/components/_nav.scss | |||
@@ -2,16 +2,17 @@ | |||
2 | @include store(( | 2 | @include store(( |
3 | --dims: ( | 3 | --dims: ( |
4 | --font-size: 15px, | 4 | --font-size: 15px, |
5 | --pad-y: 1em, | 5 | --pad-y: .5rem, |
6 | --item: ( | 6 | --item: ( |
7 | --pad-x: 1em, | 7 | --pad-x: 1rem, |
8 | --pad-y: 1em, | 8 | --pad-y: 1rem, |
9 | ), | 9 | ), |
10 | ), | 10 | ), |
11 | --colors: ( | 11 | --colors: ( |
12 | --bg: prop(--colors --bg-hi, $global: true), | ||
12 | --logo: ( | 13 | --logo: ( |
13 | --idle: ( | 14 | --idle: ( |
14 | --fg: prop(--colors --fg-hi, $global: true), | 15 | --fg: prop(--colors --accent --color, $global: true), |
15 | ), | 16 | ), |
16 | --hover: ( | 17 | --hover: ( |
17 | --fg: prop(--colors --fg-lo, $global: true), | 18 | --fg: prop(--colors --fg-lo, $global: true), |
@@ -33,7 +34,6 @@ | |||
33 | 34 | ||
34 | @include store(( | 35 | @include store(( |
35 | --dims: ( | 36 | --dims: ( |
36 | --pad-y: .5em, | ||
37 | --item: ( | 37 | --item: ( |
38 | --pad-x: .75em, | 38 | --pad-x: .75em, |
39 | --pad-y: .75em, | 39 | --pad-y: .75em, |
@@ -42,10 +42,15 @@ | |||
42 | ), 'sm'); | 42 | ), 'sm'); |
43 | 43 | ||
44 | @include component(namespace()) { | 44 | @include component(namespace()) { |
45 | display: flex; | 45 | display: flex; |
46 | align-items: center; | 46 | position: fixed; |
47 | padding: prop(--dims --pad-y) 0; | 47 | z-index: 10000; |
48 | font-size: prop(--dims --font-size); | 48 | top: 0; |
49 | left: 0; | ||
50 | align-items: center; | ||
51 | padding: prop(--dims --pad-y) 0; | ||
52 | background-color: prop(--colors --bg); | ||
53 | font-size: prop(--dims --font-size); | ||
49 | 54 | ||
50 | @include element('logo') { | 55 | @include element('logo') { |
51 | display: inline-block; | 56 | display: inline-block; |
@@ -90,5 +95,9 @@ | |||
90 | font-weight: bold; | 95 | font-weight: bold; |
91 | } | 96 | } |
92 | } | 97 | } |
98 | |||
99 | @include media('<=md') { | ||
100 | position: static; | ||
101 | } | ||
93 | } | 102 | } |
94 | } | 103 | } |
diff --git a/assets/css/layouts/_container.scss b/assets/css/layouts/_container.scss index 2e102ee..0726950 100644 --- a/assets/css/layouts/_container.scss +++ b/assets/css/layouts/_container.scss | |||
@@ -1,10 +1,17 @@ | |||
1 | @include namespace('container') { | 1 | @include namespace('container') { |
2 | @include store(( | 2 | @include store(( |
3 | --dims: ( | 3 | --dims: ( |
4 | --pad-x: 3rem, | ||
5 | --pad-y: $line-height * 3rem | ||
6 | ) | ||
7 | )); | ||
8 | |||
9 | @include store(( | ||
10 | --dims: ( | ||
4 | --pad-x: 2rem, | 11 | --pad-x: 2rem, |
5 | --pad-y: $line-height * 2rem | 12 | --pad-y: $line-height * 2rem |
6 | ) | 13 | ) |
7 | )); | 14 | ), 'md'); |
8 | 15 | ||
9 | @include store(( | 16 | @include store(( |
10 | --dims: ( | 17 | --dims: ( |
@@ -14,16 +21,18 @@ | |||
14 | ), 'sm'); | 21 | ), 'sm'); |
15 | 22 | ||
16 | @include layout(namespace()) { | 23 | @include layout(namespace()) { |
17 | padding-right: prop(--dims --pad-x); | ||
18 | padding-left: prop(--dims --pad-x); | ||
19 | |||
20 | @include modifier('content') { | 24 | @include modifier('content') { |
21 | max-width: $content--width; | 25 | max-width: $content--width; |
22 | margin-right: auto; | 26 | margin-right: auto; |
23 | margin-left: auto; | 27 | margin-left: auto; |
24 | } | 28 | } |
25 | 29 | ||
26 | @include modifier('pad-v') { | 30 | @include modifier('pad-x') { |
31 | padding-right: prop(--dims --pad-x); | ||
32 | padding-left: prop(--dims --pad-x); | ||
33 | } | ||
34 | |||
35 | @include modifier('pad-y') { | ||
27 | padding-top: prop(--dims --pad-y); | 36 | padding-top: prop(--dims --pad-y); |
28 | padding-bottom: prop(--dims --pad-y); | 37 | padding-bottom: prop(--dims --pad-y); |
29 | } | 38 | } |
diff --git a/assets/css/layouts/_landing.scss b/assets/css/layouts/_landing.scss new file mode 100644 index 0000000..b824005 --- /dev/null +++ b/assets/css/layouts/_landing.scss | |||
@@ -0,0 +1,60 @@ | |||
1 | @include namespace('landing') { | ||
2 | @include store(( | ||
3 | --dims: ( | ||
4 | --banner-width: 30rem, | ||
5 | ), | ||
6 | --colors: ( | ||
7 | --banner-bg: prop(--colors --bg, $global: true) | ||
8 | ) | ||
9 | )); | ||
10 | |||
11 | @include layout(namespace()) { | ||
12 | display: flex; | ||
13 | flex-direction: row; | ||
14 | align-items: center; | ||
15 | min-height: 100%; | ||
16 | |||
17 | @include element('banner') { | ||
18 | flex-shrink: 1.2; | ||
19 | width: 100%; | ||
20 | max-width: prop(--dims --banner-width); | ||
21 | background-color: prop(--colors --banner-bg); | ||
22 | } | ||
23 | |||
24 | @include element('content') { | ||
25 | width: 100%; | ||
26 | min-width: 0; | ||
27 | } | ||
28 | |||
29 | @include iro-responsive-env(('md', 'lg')) { | ||
30 | @include element('banner') { | ||
31 | padding: | ||
32 | iro-responsive-set((2rem, 6rem)) | ||
33 | iro-responsive-set((0, 6rem)); | ||
34 | } | ||
35 | |||
36 | @include element('content') { | ||
37 | padding: | ||
38 | iro-responsive-set((2rem, 6rem)) | ||
39 | iro-responsive-set((0, 6rem)) | ||
40 | iro-responsive-set((2rem, 6rem)) | ||
41 | 0; | ||
42 | } | ||
43 | } | ||
44 | |||
45 | @include media('<=md') { | ||
46 | display: block; | ||
47 | height: auto; | ||
48 | |||
49 | @include element('banner', 'content') { | ||
50 | width: auto; | ||
51 | padding-right: 0; | ||
52 | padding-left: 0; | ||
53 | } | ||
54 | |||
55 | @include element('banner') { | ||
56 | max-width: none; | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | } | ||
diff --git a/assets/css/layouts/_site.scss b/assets/css/layouts/_site.scss deleted file mode 100644 index 2c06606..0000000 --- a/assets/css/layouts/_site.scss +++ /dev/null | |||
@@ -1,46 +0,0 @@ | |||
1 | @include namespace('site') { | ||
2 | @include store(( | ||
3 | --dims: ( | ||
4 | --outer-pad-x: 6rem, | ||
5 | --inner-pad-x: 2rem, | ||
6 | --pad-y: 6rem, | ||
7 | ) | ||
8 | )); | ||
9 | |||
10 | @include layout(namespace()) { | ||
11 | display: flex; | ||
12 | flex-direction: row; | ||
13 | justify-content: space-around; | ||
14 | |||
15 | @include element('col') { | ||
16 | box-sizing: border-box; | ||
17 | flex: 0 0 auto; | ||
18 | width: 100%; | ||
19 | min-width: 0; | ||
20 | max-width: 35rem; | ||
21 | height: 100%; | ||
22 | padding: prop(--dims --pad-y) prop(--dims --inner-pad-x) prop(--dims --pad-y) prop(--dims --outer-pad-x); | ||
23 | |||
24 | @include next-twin-element { | ||
25 | flex: 1 1 auto; | ||
26 | max-width: 45rem; | ||
27 | height: auto; | ||
28 | padding-right: prop(--dims --outer-pad-x); | ||
29 | padding-left: prop(--dims --inner-pad-x); | ||
30 | } | ||
31 | } | ||
32 | |||
33 | @include media('<=sm') { | ||
34 | display: block; | ||
35 | |||
36 | @include element('col') { | ||
37 | width: auto; | ||
38 | height: auto; | ||
39 | |||
40 | @include next-twin-element { | ||
41 | width: auto; | ||
42 | } | ||
43 | } | ||
44 | } | ||
45 | } | ||
46 | } | ||
diff --git a/assets/css/scopes/_body.scss b/assets/css/scopes/_body.scss new file mode 100644 index 0000000..7adda03 --- /dev/null +++ b/assets/css/scopes/_body.scss | |||
@@ -0,0 +1,7 @@ | |||
1 | @include namespace('body') { | ||
2 | @include scope(namespace()) { | ||
3 | > :first-child { | ||
4 | margin-top: 0; | ||
5 | } | ||
6 | } | ||
7 | } | ||
diff --git a/assets/css/style.scss b/assets/css/style.scss index c8fd0c1..f4c6db7 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss | |||
@@ -9,12 +9,14 @@ | |||
9 | @import 'basics'; | 9 | @import 'basics'; |
10 | 10 | ||
11 | @import 'components/nav'; | 11 | @import 'components/nav'; |
12 | @import 'components/hero'; | 12 | @import 'components/landing-banner'; |
13 | @import 'components/footer'; | 13 | @import 'components/footer'; |
14 | 14 | ||
15 | @import 'layouts/site'; | 15 | @import 'layouts/landing'; |
16 | @import 'layouts/container'; | 16 | @import 'layouts/container'; |
17 | 17 | ||
18 | @import 'scopes/body'; | ||
19 | |||
18 | @import 'utils'; | 20 | @import 'utils'; |
19 | 21 | ||
20 | :root { | 22 | :root { |
diff --git a/assets/logo/logo.svg b/assets/logo/logo.svg new file mode 100644 index 0000000..ff5f3de --- /dev/null +++ b/assets/logo/logo.svg | |||
@@ -0,0 +1,72 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
4 | xmlns:cc="http://creativecommons.org/ns#" | ||
5 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
6 | xmlns:svg="http://www.w3.org/2000/svg" | ||
7 | xmlns="http://www.w3.org/2000/svg" | ||
8 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | aria-hidden="true" | ||
11 | version="1.1" | ||
12 | id="svg8" | ||
13 | sodipodi:docname="logo.svg" | ||
14 | width="22.271938" | ||
15 | height="15.456" | ||
16 | inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> | ||
17 | <metadata | ||
18 | id="metadata14"> | ||
19 | <rdf:RDF> | ||
20 | <cc:Work | ||
21 | rdf:about=""> | ||
22 | <dc:format>image/svg+xml</dc:format> | ||
23 | <dc:type | ||
24 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
25 | <dc:title></dc:title> | ||
26 | </cc:Work> | ||
27 | </rdf:RDF> | ||
28 | </metadata> | ||
29 | <defs | ||
30 | id="defs12" /> | ||
31 | <sodipodi:namedview | ||
32 | pagecolor="#ffffff" | ||
33 | bordercolor="#666666" | ||
34 | borderopacity="1" | ||
35 | objecttolerance="10" | ||
36 | gridtolerance="10" | ||
37 | guidetolerance="10" | ||
38 | inkscape:pageopacity="0" | ||
39 | inkscape:pageshadow="2" | ||
40 | inkscape:window-width="1920" | ||
41 | inkscape:window-height="992" | ||
42 | id="namedview10" | ||
43 | showgrid="false" | ||
44 | fit-margin-top="0" | ||
45 | fit-margin-left="0" | ||
46 | fit-margin-right="0" | ||
47 | fit-margin-bottom="0" | ||
48 | inkscape:zoom="15.546667" | ||
49 | inkscape:cx="14.053597" | ||
50 | inkscape:cy="2.8249734" | ||
51 | inkscape:window-x="1536" | ||
52 | inkscape:window-y="0" | ||
53 | inkscape:window-maximized="1" | ||
54 | inkscape:current-layer="svg8" | ||
55 | inkscape:document-rotation="0" | ||
56 | units="mm" /> | ||
57 | <path | ||
58 | fill="currentColor" | ||
59 | stroke="none" | ||
60 | d="M 4.928,15.456 H 6.24 L 1.312,0 H 0 Z" | ||
61 | id="path2" /> | ||
62 | <path | ||
63 | fill="currentColor" | ||
64 | stroke="none" | ||
65 | d="m 14.44797,15.456 h 1.36 L 9.3439695,0 h -1.36 z" | ||
66 | id="path4" /> | ||
67 | <path | ||
68 | fill="currentColor" | ||
69 | stroke="none" | ||
70 | d="m 14.447939,15.456 h 1.36 L 22.271939,0 h -1.36 z" | ||
71 | id="path6" /> | ||
72 | </svg> | ||