diff options
| author | Volpeon <git@volpeon.ink> | 2021-04-12 20:39:04 +0200 | 
|---|---|---|
| committer | Volpeon <git@volpeon.ink> | 2021-04-12 20:39:04 +0200 | 
| commit | 6b2c6c4260b2af2adad37dc1f8c50a904e04f13d (patch) | |
| tree | 46db61ecffa196c31f19b7f437b554ad1c2a193c | |
| parent | WIP: Redesign (diff) | |
| download | volpeon.ink-6b2c6c4260b2af2adad37dc1f8c50a904e04f13d.tar.gz volpeon.ink-6b2c6c4260b2af2adad37dc1f8c50a904e04f13d.tar.bz2 volpeon.ink-6b2c6c4260b2af2adad37dc1f8c50a904e04f13d.zip | |
Update
| -rw-r--r-- | assets/css/_basics.scss | 7 | ||||
| -rw-r--r-- | assets/css/_vars.scss | 37 | ||||
| -rw-r--r-- | assets/css/components/_card.scss | 15 | ||||
| -rw-r--r-- | assets/css/components/_footer.scss | 24 | ||||
| -rw-r--r-- | assets/css/components/_landing-banner.scss | 16 | ||||
| -rw-r--r-- | assets/css/components/_logo.scss | 19 | ||||
| -rw-r--r-- | assets/css/components/_nav.scss | 109 | ||||
| -rw-r--r-- | assets/css/components/_outer-button.scss | 67 | ||||
| -rw-r--r-- | assets/css/layouts/_card-grid.scss | 10 | ||||
| -rw-r--r-- | assets/css/layouts/_landing.scss | 20 | ||||
| -rw-r--r-- | assets/css/layouts/_section.scss | 17 | ||||
| -rw-r--r-- | assets/css/scopes/_body.scss | 2 | ||||
| -rw-r--r-- | assets/css/style.scss | 4 | ||||
| -rw-r--r-- | content/index.md | 21 | ||||
| -rw-r--r-- | metadata/metadata.yaml | 40 | ||||
| -rw-r--r-- | templates/base.html | 12 | ||||
| -rw-r--r-- | templates/layouts/index.html | 79 | ||||
| -rw-r--r-- | templates/symbols.svg | 41 | 
18 files changed, 315 insertions, 225 deletions
| diff --git a/assets/css/_basics.scss b/assets/css/_basics.scss index 3e67b76..b739d2a 100644 --- a/assets/css/_basics.scss +++ b/assets/css/_basics.scss | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | ::selection { | 1 | ::selection { | 
| 2 | background-color: var(--select--bg); | 2 | background-color: prop(--colors --select --bg); | 
| 3 | color: var(--select--fg); | 3 | color: prop(--colors --select --fg); | 
| 4 | } | 4 | } | 
| 5 | 5 | ||
| 6 | img::selection { | 6 | img::selection { | 
| 7 | background-color: var(--select--img-bg); | 7 | background-color: prop(--colors --select --img-bg); | 
| 8 | } | 8 | } | 
| 9 | 9 | ||
| 10 | html, | 10 | html, | 
| @@ -26,6 +26,7 @@ html { | |||
| 26 | font-family: $font-fam--text; | 26 | font-family: $font-fam--text; | 
| 27 | font-size: 1em / 16px * $font-size; | 27 | font-size: 1em / 16px * $font-size; | 
| 28 | line-height: $line-height; | 28 | line-height: $line-height; | 
| 29 | scroll-behavior: smooth; | ||
| 29 | } | 30 | } | 
| 30 | 31 | ||
| 31 | body { | 32 | body { | 
| diff --git a/assets/css/_vars.scss b/assets/css/_vars.scss index 1063dc8..b19ebee 100644 --- a/assets/css/_vars.scss +++ b/assets/css/_vars.scss | |||
| @@ -30,7 +30,8 @@ $gray6: hsl(220, 0%, 100%); | |||
| 30 | 30 | ||
| 31 | @include store(( | 31 | @include store(( | 
| 32 | --dims: ( | 32 | --dims: ( | 
| 33 | --outer: 4.5rem, | 33 | --outer: 4rem, | 
| 34 | --outer-spacing: 2rem, | ||
| 34 | ), | 35 | ), | 
| 35 | --colors: ( | 36 | --colors: ( | 
| 36 | --bg-hi: $gray0, // Darker background | 37 | --bg-hi: $gray0, // Darker background | 
| @@ -44,11 +45,17 @@ $gray6: hsl(220, 0%, 100%); | |||
| 44 | --fg-lo: $gray6, // Strong text | 45 | --fg-lo: $gray6, // Strong text | 
| 45 | 46 | ||
| 46 | --accent: ( | 47 | --accent: ( | 
| 47 | --h: 354, | 48 | --h: 354, | 
| 48 | --s: 84%, | 49 | --s: 84%, | 
| 49 | --l: 55%, | 50 | --l: 55%, | 
| 50 | --color: hsl(var(--colors--accent--h), var(--colors--accent--s), var(--colors--accent--l)), | 51 | --color: hsl(var(--colors--accent--h), var(--colors--accent--s), var(--colors--accent--l)), | 
| 51 | ) | 52 | ), | 
| 53 | |||
| 54 | --select: ( | ||
| 55 | --bg: hsla(var(--colors--accent--h), var(--colors--accent--s), var(--colors--accent--l), .996), | ||
| 56 | --img-bg: hsla(var(--colors--accent--h), var(--colors--accent--s), var(--colors--accent--l), .5), | ||
| 57 | --fg: var(--colors--bg-hi), | ||
| 58 | ), | ||
| 52 | ) | 59 | ) | 
| 53 | )); | 60 | )); | 
| 54 | 61 | ||
| @@ -69,30 +76,26 @@ $gray6: hsl(220, 0%, 100%); | |||
| 69 | :root { | 76 | :root { | 
| 70 | --heading--fg: var(--colors--fg-lo); | 77 | --heading--fg: var(--colors--fg-lo); | 
| 71 | 78 | ||
| 72 | --select--bg: hsla(270, 2%, 100%, .996); | ||
| 73 | --select--img-bg: hsla(270, 2%, 100%, .5); | ||
| 74 | --select--fg: var(--colors--bg-hi); | ||
| 75 | |||
| 76 | --code--fg: var(--colors--fg-hi); | 79 | --code--fg: var(--colors--fg-hi); | 
| 77 | 80 | ||
| 78 | --code-block--fg: var(--colors--fg-hi); | 81 | --code-block--fg: var(--colors--fg-hi); | 
| 79 | 82 | ||
| 80 | --link--idle--fg: var(--colors--fg-lo); | 83 | --link--idle--fg: var(--colors--fg-lo); | 
| 81 | --link--hover--bg: var(--link--idle--fg); | 84 | --link--hover--bg: var(--link--idle--fg); | 
| 82 | --link--hover--fg: #000; | 85 | --link--hover--fg: #000; | 
| 83 | 86 | ||
| 84 | --hero--back-fg: var(--colors--bg-hi); | 87 | --hero--back-fg: var(--colors--bg-hi); | 
| 85 | 88 | ||
| 86 | --nav--bg: var(--colors--bg); | 89 | --nav--bg: var(--colors--bg); | 
| 87 | --nav--logo--fg: var(--colors--fg-hi); | 90 | --nav--logo--fg: var(--colors--fg-hi); | 
| 88 | --nav--item--idle--fg: var(--colors--fg); | 91 | --nav--item--idle--fg: var(--colors--fg); | 
| 89 | --nav--item--hover--fg: var(--colors--fg-lo); | 92 | --nav--item--hover--fg: var(--colors--fg-lo); | 
| 90 | --nav--item--active--fg: var(--colors--fg-lo); | 93 | --nav--item--active--fg: var(--colors--fg-lo); | 
| 91 | 94 | ||
| 92 | --footer--bg: var(--colors--bg); | 95 | --footer--bg: var(--colors--bg); | 
| 93 | 96 | ||
| 94 | --page--link--idle--fg: var(--link--idle--fg); // hsl(45, 100%, 70%); // hsl(215, 100%, 80%); // var(--link--idle--fg); // #ffd866; | 97 | --page--link--idle--fg: var(--link--idle--fg); // hsl(45, 100%, 70%); // hsl(215, 100%, 80%); // var(--link--idle--fg); // #ffd866; | 
| 95 | --page--link--visited--fg: var(--colors--fg); // hsl(23, 89%, 65%); // hsl(260, 58%, 78%); // var(--fg-lo); // #f59458; | 98 | --page--link--visited--fg: var(--colors--fg); // hsl(23, 89%, 65%); // hsl(260, 58%, 78%); // var(--fg-lo); // #f59458; | 
| 96 | --page--link--hover--bg: var(--page--link--idle--fg); | 99 | --page--link--hover--bg: var(--page--link--idle--fg); | 
| 97 | --page--link--hover--fg: #000; | 100 | --page--link--hover--fg: #000; | 
| 98 | } | 101 | } | 
| diff --git a/assets/css/components/_card.scss b/assets/css/components/_card.scss index 6260518..bb8b4d2 100644 --- a/assets/css/components/_card.scss +++ b/assets/css/components/_card.scss | |||
| @@ -12,6 +12,13 @@ | |||
| 12 | ) | 12 | ) | 
| 13 | )); | 13 | )); | 
| 14 | 14 | ||
| 15 | @include store(( | ||
| 16 | --dims: ( | ||
| 17 | --pad-x: .9em, | ||
| 18 | --pad-y: .6em | ||
| 19 | ) | ||
| 20 | ), 'md'); | ||
| 21 | |||
| 15 | @include component(namespace()) { | 22 | @include component(namespace()) { | 
| 16 | display: flex; | 23 | display: flex; | 
| 17 | position: relative; | 24 | position: relative; | 
| @@ -29,9 +36,7 @@ | |||
| 29 | @include element('content') { | 36 | @include element('content') { | 
| 30 | @include modifier('flip') { | 37 | @include modifier('flip') { | 
| 31 | visibility: visible; | 38 | visibility: visible; | 
| 32 | transition: | 39 | transition: visibility 0s, opacity .2s; | 
| 33 | visibility 0s, | ||
| 34 | opacity .2s; | ||
| 35 | opacity: 1; | 40 | opacity: 1; | 
| 36 | } | 41 | } | 
| 37 | } | 42 | } | 
| @@ -48,9 +53,7 @@ | |||
| 48 | top: 0; | 53 | top: 0; | 
| 49 | left: 0; | 54 | left: 0; | 
| 50 | height: 100%; | 55 | height: 100%; | 
| 51 | transition: | 56 | transition: visibility 0s linear .2s, opacity .2s; | 
| 52 | visibility 0s linear .2s, | ||
| 53 | opacity .2s; | ||
| 54 | opacity: 0; | 57 | opacity: 0; | 
| 55 | background-color: prop(--colors --flip --bg); | 58 | background-color: prop(--colors --flip --bg); | 
| 56 | } | 59 | } | 
| diff --git a/assets/css/components/_footer.scss b/assets/css/components/_footer.scss index db30fcd..c20bc22 100644 --- a/assets/css/components/_footer.scss +++ b/assets/css/components/_footer.scss | |||
| @@ -1,17 +1,25 @@ | |||
| 1 | @include namespace('footer') { | 1 | @include namespace('footer') { | 
| 2 | @include store(( | 2 | @include store(( | 
| 3 | --dims: ( | ||
| 4 | --pad-y: .8em | ||
| 5 | ), | ||
| 6 | --colors: ( | 3 | --colors: ( | 
| 7 | --fg: prop(--colors --obj, $global: true) | 4 | --fg: prop(--colors --obj, $global: true), | 
| 5 | --border: prop(--colors --bg-lo, $global: true), | ||
| 8 | ) | 6 | ) | 
| 9 | )); | 7 | )); | 
| 10 | 8 | ||
| 11 | @include component(namespace()) { | 9 | @include component(namespace()) { | 
| 12 | padding-top: prop(--dims --pad-y); | 10 | display: flex; | 
| 13 | padding-bottom: prop(--dims --pad-y); | 11 | align-items: center; | 
| 14 | color: prop(--colors --fg); | 12 | justify-content: space-between; | 
| 15 | text-align: right; | 13 | height: prop(--dims --outer, $global: true); | 
| 14 | |||
| 15 | @include element('content') { | ||
| 16 | width: 100%; | ||
| 17 | height: 100%; | ||
| 18 | margin-right: prop(--dims --outer-spacing, $global: true); | ||
| 19 | margin-left: prop(--dims --outer-spacing, $global: true); | ||
| 20 | border-top: 1px solid prop(--colors --border); | ||
| 21 | color: prop(--colors --fg); | ||
| 22 | line-height: prop(--dims --outer, $global: true); | ||
| 23 | } | ||
| 16 | } | 24 | } | 
| 17 | } | 25 | } | 
| diff --git a/assets/css/components/_landing-banner.scss b/assets/css/components/_landing-banner.scss index 412ca8a..8f07c37 100644 --- a/assets/css/components/_landing-banner.scss +++ b/assets/css/components/_landing-banner.scss | |||
| @@ -7,17 +7,19 @@ | |||
| 7 | )); | 7 | )); | 
| 8 | 8 | ||
| 9 | @include component(namespace()) { | 9 | @include component(namespace()) { | 
| 10 | font-size: 1 / 16 * 17em; | ||
| 11 | |||
| 12 | @include element('title') { | 10 | @include element('title') { | 
| 13 | max-width: 7em; | 11 | max-width: 7em; | 
| 14 | margin-top: 0; | 12 | margin-top: 0; | 
| 15 | transform: translateX(-.04em); | 13 | transform: translateX(-.05em); | 
| 16 | font-family: $font-fam--large; | 14 | font-family: $font-fam--large; | 
| 17 | font-weight: 350; | 15 | font-weight: 350; | 
| 18 | text-transform: none; | 16 | text-transform: none; | 
| 19 | } | 17 | } | 
| 20 | 18 | ||
| 19 | @include element('text') { | ||
| 20 | font-size: 1 / 16 * 17em; | ||
| 21 | } | ||
| 22 | |||
| 21 | @include element('title-inner') { | 23 | @include element('title-inner') { | 
| 22 | background-image: linear-gradient( | 24 | background-image: linear-gradient( | 
| 23 | to top, | 25 | to top, | 
| @@ -33,9 +35,15 @@ | |||
| 33 | font-weight: 550; | 35 | font-weight: 550; | 
| 34 | } | 36 | } | 
| 35 | 37 | ||
| 38 | @include media('<=md') { | ||
| 39 | @include element('title') { | ||
| 40 | max-width: none; | ||
| 41 | } | ||
| 42 | } | ||
| 43 | |||
| 36 | @include iro-responsive-env(('md', 'lg')) { | 44 | @include iro-responsive-env(('md', 'lg')) { | 
| 37 | @include element('title') { | 45 | @include element('title') { | 
| 38 | font-size: iro-responsive-set((2.6rem, 3rem)); | 46 | font-size: iro-responsive-set((2.6rem, 3.4rem)); | 
| 39 | } | 47 | } | 
| 40 | } | 48 | } | 
| 41 | } | 49 | } | 
| diff --git a/assets/css/components/_logo.scss b/assets/css/components/_logo.scss new file mode 100644 index 0000000..13587c8 --- /dev/null +++ b/assets/css/components/_logo.scss | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | @include namespace('logo') { | ||
| 2 | @include store(( | ||
| 3 | --colors: ( | ||
| 4 | --fg: prop(--colors --fg-lo, $global: true), | ||
| 5 | --bg: prop(--colors --bg-hi, $global: true), | ||
| 6 | --hover: ( | ||
| 7 | --fg: prop(--colors --bg-hi, $global: true), | ||
| 8 | --bg: prop(--colors --accent --color, $global: true), | ||
| 9 | ) | ||
| 10 | ) | ||
| 11 | )); | ||
| 12 | |||
| 13 | @include component(namespace()) { | ||
| 14 | position: fixed; | ||
| 15 | z-index: 10000; | ||
| 16 | top: 0; | ||
| 17 | left: 0; | ||
| 18 | } | ||
| 19 | } | ||
| diff --git a/assets/css/components/_nav.scss b/assets/css/components/_nav.scss deleted file mode 100644 index d0a255e..0000000 --- a/assets/css/components/_nav.scss +++ /dev/null | |||
| @@ -1,109 +0,0 @@ | |||
| 1 | @include namespace('nav') { | ||
| 2 | @include store(( | ||
| 3 | --dims: ( | ||
| 4 | --font-size: 15px, | ||
| 5 | --pad-x: 2.5rem, | ||
| 6 | --item: ( | ||
| 7 | --pad-x: 1rem, | ||
| 8 | ), | ||
| 9 | ), | ||
| 10 | --colors: ( | ||
| 11 | --bg: prop(--colors --bg-hi, $global: true), | ||
| 12 | --logo: ( | ||
| 13 | --idle: ( | ||
| 14 | --fg: prop(--colors --accent --color, $global: true), | ||
| 15 | ), | ||
| 16 | --hover: ( | ||
| 17 | --fg: prop(--colors --fg-lo, $global: true), | ||
| 18 | ) | ||
| 19 | ), | ||
| 20 | --item: ( | ||
| 21 | --idle: ( | ||
| 22 | --fg: prop(--colors --fg, $global: true), | ||
| 23 | ), | ||
| 24 | --hover: ( | ||
| 25 | --fg: prop(--colors --fg-lo, $global: true), | ||
| 26 | ), | ||
| 27 | --active: ( | ||
| 28 | --fg: prop(--colors --fg-lo, $global: true), | ||
| 29 | ) | ||
| 30 | ) | ||
| 31 | ) | ||
| 32 | )); | ||
| 33 | |||
| 34 | @include store(( | ||
| 35 | --dims: ( | ||
| 36 | --pad-x: prop(--container --dims --pad-x, $global: true), | ||
| 37 | ) | ||
| 38 | ), 'md'); | ||
| 39 | |||
| 40 | @include store(( | ||
| 41 | --dims: ( | ||
| 42 | --item: ( | ||
| 43 | --pad-x: .75em, | ||
| 44 | ), | ||
| 45 | ) | ||
| 46 | ), 'sm'); | ||
| 47 | |||
| 48 | @include component(namespace()) { | ||
| 49 | display: flex; | ||
| 50 | position: fixed; | ||
| 51 | z-index: 10000; | ||
| 52 | top: 0; | ||
| 53 | left: 0; | ||
| 54 | height: prop(--dims --outer, $global: true); | ||
| 55 | padding: 0 prop(--dims --pad-x); | ||
| 56 | background-color: prop(--colors --bg); | ||
| 57 | font-size: prop(--dims --font-size); | ||
| 58 | |||
| 59 | @include element('logo', 'item') { | ||
| 60 | display: flex; | ||
| 61 | align-items: center; | ||
| 62 | height: 100%; | ||
| 63 | } | ||
| 64 | |||
| 65 | @include element('logo') { | ||
| 66 | color: prop(--colors --logo --idle --fg); | ||
| 67 | font-family: $font-fam--mono; | ||
| 68 | text-decoration: none; | ||
| 69 | |||
| 70 | &:link, | ||
| 71 | &:visited { | ||
| 72 | &:hover { | ||
| 73 | background-color: transparent; | ||
| 74 | color: prop(--colors --logo --hover --fg); | ||
| 75 | } | ||
| 76 | } | ||
| 77 | } | ||
| 78 | |||
| 79 | @include element('logo-symbol') { | ||
| 80 | display: block; | ||
| 81 | width: $line-height * .9em; | ||
| 82 | height: $line-height * 1em; | ||
| 83 | } | ||
| 84 | |||
| 85 | @include element('item') { | ||
| 86 | margin: 0 calc(-1 * #{prop(--dims --item --pad-x)}) 0 prop(--dims --item --pad-x); | ||
| 87 | padding: 0 prop(--dims --item --pad-x); | ||
| 88 | color: prop(--colors --item --idle --fg); | ||
| 89 | text-decoration: none; | ||
| 90 | text-transform: uppercase; | ||
| 91 | |||
| 92 | &:hover { | ||
| 93 | background-color: transparent; | ||
| 94 | color: prop(--colors --item --hover --fg); | ||
| 95 | text-decoration: underline; | ||
| 96 | } | ||
| 97 | |||
| 98 | @include modifier('active') { | ||
| 99 | border-color: prop(--colors --item --active --fg); | ||
| 100 | color: prop(--colors --item --active --fg); | ||
| 101 | font-weight: bold; | ||
| 102 | } | ||
| 103 | } | ||
| 104 | |||
| 105 | @include media('<=md') { | ||
| 106 | width: 100%; | ||
| 107 | } | ||
| 108 | } | ||
| 109 | } | ||
| diff --git a/assets/css/components/_outer-button.scss b/assets/css/components/_outer-button.scss new file mode 100644 index 0000000..13614bb --- /dev/null +++ b/assets/css/components/_outer-button.scss | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | @include namespace('outer-button') { | ||
| 2 | @include store(( | ||
| 3 | --colors: ( | ||
| 4 | --fg: prop(--colors --bg-hi, $global: true), | ||
| 5 | --bg: prop(--colors --fg-lo, $global: true), | ||
| 6 | --hover: ( | ||
| 7 | --bg: prop(--colors --accent --color, $global: true), | ||
| 8 | --fg: prop(--colors --bg-hi, $global: true), | ||
| 9 | ), | ||
| 10 | --logo: ( | ||
| 11 | --fg: prop(--colors --fg-lo, $global: true), | ||
| 12 | --bg: prop(--colors --bg-hi, $global: true), | ||
| 13 | --hover: ( | ||
| 14 | --fg: prop(--colors --bg-hi, $global: true), | ||
| 15 | --bg: prop(--colors --accent --color, $global: true), | ||
| 16 | ) | ||
| 17 | ) | ||
| 18 | ) | ||
| 19 | )); | ||
| 20 | |||
| 21 | @include component(namespace()) { | ||
| 22 | display: flex; | ||
| 23 | height: prop(--dims --outer, $global: true); | ||
| 24 | transition: background-color .2s, color .2s; | ||
| 25 | background-color: prop(--colors --bg); | ||
| 26 | color: prop(--colors --fg); | ||
| 27 | font-weight: 500; | ||
| 28 | text-decoration: none; | ||
| 29 | |||
| 30 | &:hover { | ||
| 31 | background-color: prop(--colors --hover --bg); | ||
| 32 | color: prop(--colors --hover --fg); | ||
| 33 | } | ||
| 34 | |||
| 35 | @include modifier('logo') { | ||
| 36 | background-color: prop(--colors --logo --bg); | ||
| 37 | color: prop(--colors --logo --fg); | ||
| 38 | |||
| 39 | &:hover { | ||
| 40 | background-color: prop(--colors --logo --hover --bg); | ||
| 41 | color: prop(--colors --logo --hover --fg); | ||
| 42 | } | ||
| 43 | } | ||
| 44 | |||
| 45 | @include element('icon') { | ||
| 46 | display: flex; | ||
| 47 | position: relative; | ||
| 48 | align-items: center; | ||
| 49 | justify-content: center; | ||
| 50 | width: prop(--dims --outer, $global: true); | ||
| 51 | height: 100%; | ||
| 52 | } | ||
| 53 | |||
| 54 | @include element('icon-symbol') { | ||
| 55 | display: block; | ||
| 56 | width: 1.5em; | ||
| 57 | height: 1.5em; | ||
| 58 | } | ||
| 59 | |||
| 60 | @include element('content') { | ||
| 61 | height: 100%; | ||
| 62 | padding-right: prop(--dims --outer-spacing, $global: true); | ||
| 63 | padding-left: prop(--dims --outer-spacing, $global: true); | ||
| 64 | line-height: prop(--dims --outer, $global: true); | ||
| 65 | } | ||
| 66 | } | ||
| 67 | } | ||
| diff --git a/assets/css/layouts/_card-grid.scss b/assets/css/layouts/_card-grid.scss index 8e9091a..cbc4388 100644 --- a/assets/css/layouts/_card-grid.scss +++ b/assets/css/layouts/_card-grid.scss | |||
| @@ -1,7 +1,13 @@ | |||
| 1 | @include namespace('card-grid') { | 1 | @include namespace('card-grid') { | 
| 2 | @include store(( | ||
| 3 | --dims: ( | ||
| 4 | --card-width: 17em | ||
| 5 | ) | ||
| 6 | )); | ||
| 7 | |||
| 2 | @include layout(namespace()) { | 8 | @include layout(namespace()) { | 
| 3 | display: grid; | 9 | display: grid; | 
| 4 | grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); | 10 | grid-template-columns: repeat(auto-fit, minmax(#{prop(--dims --card-width)}, 1fr)); | 
| 5 | gap: .7rem; | 11 | gap: .6rem; | 
| 6 | } | 12 | } | 
| 7 | } | 13 | } | 
| diff --git a/assets/css/layouts/_landing.scss b/assets/css/layouts/_landing.scss index 03af39f..a332528 100644 --- a/assets/css/layouts/_landing.scss +++ b/assets/css/layouts/_landing.scss | |||
| @@ -13,19 +13,15 @@ | |||
| 13 | box-sizing: border-box; | 13 | box-sizing: border-box; | 
| 14 | flex-direction: row; | 14 | flex-direction: row; | 
| 15 | align-items: center; | 15 | align-items: center; | 
| 16 | min-height: 100%; | ||
| 17 | padding-bottom: prop(--dims --outer, $global: true); | ||
| 18 | 16 | ||
| 19 | @include element('banner') { | 17 | @include element('banner') { | 
| 20 | flex-shrink: 1.2; | 18 | width: 70%; | 
| 21 | width: 100%; | ||
| 22 | max-width: prop(--dims --banner-width); | 19 | max-width: prop(--dims --banner-width); | 
| 23 | background-color: prop(--colors --banner-bg); | 20 | background-color: prop(--colors --banner-bg); | 
| 24 | } | 21 | } | 
| 25 | 22 | ||
| 26 | @include element('content') { | 23 | @include element('content') { | 
| 27 | width: 100%; | 24 | width: 100%; | 
| 28 | min-width: 0; | ||
| 29 | } | 25 | } | 
| 30 | 26 | ||
| 31 | @include iro-responsive-env(('md', 'lg')) { | 27 | @include iro-responsive-env(('md', 'lg')) { | 
| @@ -38,9 +34,15 @@ | |||
| 38 | } | 34 | } | 
| 39 | 35 | ||
| 40 | @include media('<=md') { | 36 | @include media('<=md') { | 
| 41 | display: block; | 37 | display: block; | 
| 42 | height: auto; | 38 | |
| 43 | padding-bottom: 0; | 39 | @include element('side') { | 
| 40 | display: none; | ||
| 41 | |||
| 42 | @include sibling-element('side') { | ||
| 43 | display: block; | ||
| 44 | } | ||
| 45 | } | ||
| 44 | 46 | ||
| 45 | @include element('banner', 'content') { | 47 | @include element('banner', 'content') { | 
| 46 | width: auto; | 48 | width: auto; | 
| diff --git a/assets/css/layouts/_section.scss b/assets/css/layouts/_section.scss new file mode 100644 index 0000000..94a145b --- /dev/null +++ b/assets/css/layouts/_section.scss | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | @include namespace('section') { | ||
| 2 | @include layout(namespace()) { | ||
| 3 | display: flex; | ||
| 4 | flex-direction: column; | ||
| 5 | align-items: flex-start; | ||
| 6 | min-height: 100%; | ||
| 7 | margin-bottom: calc(-1 * #{prop(--dims --outer, $global: true)}); | ||
| 8 | padding-bottom: prop(--dims --outer, $global: true); | ||
| 9 | |||
| 10 | @include element('heading') { | ||
| 11 | position: sticky; | ||
| 12 | z-index: 9000; | ||
| 13 | top: 0; | ||
| 14 | left: 0; | ||
| 15 | } | ||
| 16 | } | ||
| 17 | } | ||
| diff --git a/assets/css/scopes/_body.scss b/assets/css/scopes/_body.scss index 7adda03..6fbacff 100644 --- a/assets/css/scopes/_body.scss +++ b/assets/css/scopes/_body.scss | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | @include namespace('body') { | 1 | @include namespace('body') { | 
| 2 | @include scope(namespace()) { | 2 | @include scope(namespace()) { | 
| 3 | > :first-child { | 3 | > :first-child { | 
| 4 | margin-top: 0; | 4 | //margin-top: 0; | 
| 5 | } | 5 | } | 
| 6 | } | 6 | } | 
| 7 | } | 7 | } | 
| diff --git a/assets/css/style.scss b/assets/css/style.scss index 89b7837..d095dec 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss | |||
| @@ -10,13 +10,15 @@ | |||
| 10 | @import 'basics'; | 10 | @import 'basics'; | 
| 11 | 11 | ||
| 12 | @import 'layouts/container'; | 12 | @import 'layouts/container'; | 
| 13 | @import 'layouts/section'; | ||
| 13 | @import 'layouts/landing'; | 14 | @import 'layouts/landing'; | 
| 14 | @import 'layouts/card-grid'; | 15 | @import 'layouts/card-grid'; | 
| 15 | 16 | ||
| 16 | @import 'objects/icon'; | 17 | @import 'objects/icon'; | 
| 17 | @import 'objects/button'; | 18 | @import 'objects/button'; | 
| 18 | 19 | ||
| 19 | @import 'components/nav'; | 20 | @import 'components/outer-button'; | 
| 21 | @import 'components/logo'; | ||
| 20 | @import 'components/landing-banner'; | 22 | @import 'components/landing-banner'; | 
| 21 | @import 'components/section-heading'; | 23 | @import 'components/section-heading'; | 
| 22 | @import 'components/footer'; | 24 | @import 'components/footer'; | 
| diff --git a/content/index.md b/content/index.md index 85ef328..e144d39 100644 --- a/content/index.md +++ b/content/index.md | |||
| @@ -1,24 +1,3 @@ | |||
| 1 | --- | 1 | --- | 
| 2 | title: Home | 2 | title: Home | 
| 3 | |||
| 4 | profiles: | ||
| 5 | - platform: Bandcamp | ||
| 6 | icon: bandcamp | ||
| 7 | username: volpeon | ||
| 8 | url: https://bandcamp.com/volpeon | ||
| 9 | - platform: E-Mail | ||
| 10 | icon: envelope | ||
| 11 | username: me@volpeon.ink | ||
| 12 | - platform: Fediverse | ||
| 13 | icon: share | ||
| 14 | username: "@volpeon@fedi.vulpes.one" | ||
| 15 | - platform: IRC | ||
| 16 | icon: hash | ||
| 17 | username: volpeon | ||
| 18 | - platform: PeerTube | ||
| 19 | icon: play | ||
| 20 | username: "@volpeon@pt.vulpes.one" | ||
| 21 | - platform: XMPP | ||
| 22 | icon: messages | ||
| 23 | username: "<available>" | ||
| 24 | --- | 3 | --- | 
| diff --git a/metadata/metadata.yaml b/metadata/metadata.yaml index eeb6f62..972de8d 100644 --- a/metadata/metadata.yaml +++ b/metadata/metadata.yaml | |||
| @@ -37,3 +37,43 @@ rewrites: | |||
| 37 | path: | 37 | path: | 
| 38 | - from: ^/personal | 38 | - from: ^/personal | 
| 39 | to: /9thPK7O3xn | 39 | to: /9thPK7O3xn | 
| 40 | |||
| 41 | profiles: | ||
| 42 | - platform: Bandcamp | ||
| 43 | icon: parallelogram | ||
| 44 | username: volpeon | ||
| 45 | url: https://bandcamp.com/volpeon | ||
| 46 | featured: true | ||
| 47 | |||
| 48 | - platform: E-Mail | ||
| 49 | icon: envelope | ||
| 50 | username: me@volpeon.ink | ||
| 51 | featured: true | ||
| 52 | |||
| 53 | - platform: Fediverse | ||
| 54 | icon: graph | ||
| 55 | username: "@volpeon@fedi.vulpes.one" | ||
| 56 | featured: true | ||
| 57 | |||
| 58 | - platform: GitHub | ||
| 59 | username: volpeon | ||
| 60 | url: "https://github.com/volpeon" | ||
| 61 | |||
| 62 | - platform: IRC | ||
| 63 | icon: hash | ||
| 64 | username: volpeon | ||
| 65 | featured: true | ||
| 66 | |||
| 67 | - platform: PeerTube | ||
| 68 | icon: video | ||
| 69 | username: "@volpeon@pt.vulpes.one" | ||
| 70 | featured: true | ||
| 71 | |||
| 72 | - platform: Steam | ||
| 73 | username: volpeon | ||
| 74 | url: https://steamcommunity.com/id/volpeon/ | ||
| 75 | |||
| 76 | - platform: XMPP | ||
| 77 | icon: messages | ||
| 78 | username: "<available>" | ||
| 79 | featured: true | ||
| diff --git a/templates/base.html b/templates/base.html index 1d0da4d..c7f641c 100644 --- a/templates/base.html +++ b/templates/base.html | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | </head> | 32 | </head> | 
| 33 | 33 | ||
| 34 | <body> | 34 | <body> | 
| 35 | <nav class="c-nav"> | 35 | <!--<nav class="c-nav"> | 
| 36 | <a class="c-nav__logo" href="/" title="$site.title$"> | 36 | <a class="c-nav__logo" href="/" title="$site.title$"> | 
| 37 | <svg class="c-nav__logo-symbol"> | 37 | <svg class="c-nav__logo-symbol"> | 
| 38 | <use href="#logo"></use> | 38 | <use href="#logo"></use> | 
| @@ -41,7 +41,15 @@ | |||
| 41 | $for(menus.main.items)$ | 41 | $for(menus.main.items)$ | 
| 42 | <a class="c-nav__item $if(it.active)$c-nav__item--active$endif$" href="$it.url$">$it.label$</a> | 42 | <a class="c-nav__item $if(it.active)$c-nav__item--active$endif$" href="$it.url$">$it.label$</a> | 
| 43 | $endfor$ | 43 | $endfor$ | 
| 44 | </nav> | 44 | </nav>--> | 
| 45 | |||
| 46 | <a class="c-outer-button c-outer-button--logo c-logo" href="/" title="$site.title$"> | ||
| 47 | <span class="c-outer-button__icon"> | ||
| 48 | <svg class="c-outer-button__icon-symbol"> | ||
| 49 | <use href="#logo"></use> | ||
| 50 | </svg> | ||
| 51 | </span> | ||
| 52 | </a> | ||
| 45 | 53 | ||
| 46 | $if(section.is_index)$ | 54 | $if(section.is_index)$ | 
| 47 | ${layouts/index()} | 55 | ${layouts/index()} | 
| diff --git a/templates/layouts/index.html b/templates/layouts/index.html index d819455..3145b69 100644 --- a/templates/layouts/index.html +++ b/templates/layouts/index.html | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | <main> | 1 | <main> | 
| 2 | <section class="l-landing"> | 2 | <section class="l-section l-landing"> | 
| 3 | <header class="l-landing__banner"> | 3 | <header class="l-landing__banner"> | 
| 4 | <div class="c-landing-banner l-container l-container--pad-x l-container--pad-y l-container--content"> | 4 | <div class="c-landing-banner l-container l-container--pad-x l-container--pad-y l-container--content"> | 
| 5 | <h1 class="c-landing-banner__title"> | 5 | <h1 class="c-landing-banner__title"> | 
| @@ -8,41 +8,40 @@ | |||
| 8 | </span> | 8 | </span> | 
| 9 | </h1> | 9 | </h1> | 
| 10 | <p class="c-landing-banner__text"> | 10 | <p class="c-landing-banner__text"> | 
| 11 | Welcome to my website! I'm Volpeon, a red fox disguised as a human. | 11 | Hi, I'm Volpeon. I enjoy programming, creating vector art and designing user interfaces. | 
| 12 | I enjoy programming, creating vector art and designing user interfaces. | ||
| 13 | </p> | 12 | </p> | 
| 14 | </div> | 13 | </div> | 
| 15 | </header> | 14 | </header> | 
| 16 | 15 | ||
| 17 | <section class="l-landing__content"> | 16 | <section class="l-landing__content"> | 
| 18 | <div class="l-container l-container--pad-x l-container--pad-y l-container--content s-body"> | 17 | <div class="l-container l-container--pad-x l-container--pad-y l-container--content s-body"> | 
| 19 | <h1 class="c-section-heading">My profiles</h1> | ||
| 20 | |||
| 21 | <div class="l-card-grid"> | 18 | <div class="l-card-grid"> | 
| 22 | $for(profiles)$ | 19 | $for(profiles)$ | 
| 23 | $if(it.url)$ | 20 | $if(it.featured)$ | 
| 24 | <a class="c-card" href="$it.url$"> | 21 | $if(it.url)$ | 
| 25 | $else$ | 22 | <a class="l-card-grid__card c-card" href="$it.url$"> | 
| 26 | <div class="c-card"> | 23 | $else$ | 
| 27 | $endif$ | 24 | <div class="l-card-grid__card c-card"> | 
| 28 | $if(it.icon)$ | ||
| 29 | <svg class="c-card__icon o-icon"> | ||
| 30 | <use href="#icon-$it.icon$"></use> | ||
| 31 | </svg> | ||
| 32 | $endif$ | 25 | $endif$ | 
| 33 | <div class="c-card__content"> | 26 | $if(it.icon)$ | 
| 34 | <strong class="u-db">$it.platform$</strong> | 27 | <svg class="c-card__icon o-icon"> | 
| 35 | <small class="u-db">$it.username$</small> | 28 | <use href="#icon-$it.icon$"></use> | 
| 36 | </div> | 29 | </svg> | 
| 30 | $endif$ | ||
| 31 | <div class="c-card__content"> | ||
| 32 | <strong class="u-db">$it.platform$</strong> | ||
| 33 | <small class="u-db">$it.username$</small> | ||
| 34 | </div> | ||
| 35 | $if(it.url)$ | ||
| 36 | <svg class="c-card__icon o-icon"> | ||
| 37 | <use href="#icon-link-external"></use> | ||
| 38 | </svg> | ||
| 39 | $endif$ | ||
| 37 | $if(it.url)$ | 40 | $if(it.url)$ | 
| 38 | <svg class="c-card__icon o-icon"> | 41 | </a> | 
| 39 | <use href="#icon-link-external"></use> | 42 | $else$ | 
| 40 | </svg> | 43 | </div> | 
| 41 | $endif$ | 44 | $endif$ | 
| 42 | $if(it.url)$ | ||
| 43 | </a> | ||
| 44 | $else$ | ||
| 45 | </div> | ||
| 46 | $endif$ | 45 | $endif$ | 
| 47 | $endfor$ | 46 | $endfor$ | 
| 48 | </div> | 47 | </div> | 
| @@ -52,7 +51,31 @@ $body$ | |||
| 52 | </section> | 51 | </section> | 
| 53 | </section> | 52 | </section> | 
| 54 | 53 | ||
| 55 | $-- <footer class="c-footer l-container"> | 54 | <section class="l-section"> | 
| 56 | $-- 9thPK7O3xn | 55 | <header class="l-section__heading"> | 
| 57 | $-- </footer> | 56 | <a class="c-outer-button" href="#projects" id="projects"> | 
| 57 | <span class="c-outer-button__icon"> | ||
| 58 | <svg class="c-outer-button__icon-symbol o-icon"> | ||
| 59 | <use href="#icon-arrow-down-right"></use> | ||
| 60 | </svg> | ||
| 61 | </span> | ||
| 62 | <span class="c-outer-button__content"> | ||
| 63 | Projects | ||
| 64 | </span> | ||
| 65 | </a> | ||
| 66 | </header> | ||
| 67 | </section> | ||
| 68 | |||
| 69 | <footer class="c-footer"> | ||
| 70 | <div class="c-footer__content"> | ||
| 71 | 9thPK7O3xn | ||
| 72 | </div> | ||
| 73 | <a class="c-outer-button" href="#"> | ||
| 74 | <span class="c-outer-button__icon"> | ||
| 75 | <svg class="c-outer-button__icon-symbol o-icon"> | ||
| 76 | <use href="#icon-arrow-up"></use> | ||
| 77 | </svg> | ||
| 78 | </span> | ||
| 79 | </a> | ||
| 80 | </footer> | ||
| 58 | </main> | 81 | </main> | 
| diff --git a/templates/symbols.svg b/templates/symbols.svg index 7972457..902cc35 100644 --- a/templates/symbols.svg +++ b/templates/symbols.svg | |||
| @@ -7,36 +7,49 @@ | |||
| 7 | <path fill="currentColor" stroke="none" d="M 9.915975,13 H 12.08401 L 15.584018,3 h -2.168036 z" /> | 7 | <path fill="currentColor" stroke="none" d="M 9.915975,13 H 12.08401 L 15.584018,3 h -2.168036 z" /> | 
| 8 | </symbol> | 8 | </symbol> | 
| 9 | 9 | ||
| 10 | <symbol id="icon-arrow-down-right" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
| 11 | <path d="m5.25 11.75h6.5v-6.5m0 6.5-7.5-7.5" fill="none" stroke="currentColor" /> | ||
| 12 | </symbol> | ||
| 13 | |||
| 14 | <symbol id="icon-arrow-up" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
| 15 | <path d="m12.25 7.25-4.5-4.5-4.5 4.5m4.5-4.5v10.5" fill="none" stroke="currentColor" /> | ||
| 16 | </symbol> | ||
| 17 | |||
| 10 | <symbol id="icon-envelope" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 18 | <symbol id="icon-envelope" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 
| 11 | <path fill="none" stroke="currentColor" | 19 | <path | 
| 12 | d="m1.25 4.9995 6.75 4.25 6.75-4.25m-12.75-2.125h12c0.4155 0 0.75 0.3345 0.75 0.75v8.8755c0 0.4155-0.3345 0.75-0.75 0.75h-12c-0.4155 0-0.75-0.3345-0.75-0.75v-8.8755c0-0.4155 0.3345-0.75 0.75-0.75z" /> | 20 | d="m1.25 3.5c0-0.4155 0.3345-0.75 0.75-0.75h12c0.4155 0 0.75 0.3345 0.75 0.75v8.5c0 0.4155-0.3345 0.75-0.75 0.75h-12c-0.4155 0-0.75-0.3345-0.75-0.75zm0 0.25 5.2845 4.3681c1.0065 0.83198 1.9181 0.82912 2.9676-0.03704l5.2479-4.3311" | 
| 21 | fill="none" stroke="currentColor" /> | ||
| 13 | </symbol> | 22 | </symbol> | 
| 14 | 23 | ||
| 15 | <symbol id="icon-hash" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 24 | <symbol id="icon-hash" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 
| 16 | <path fill="none" stroke="currentColor" d="m5.2497 13.75 1.0003-11m2.9997 11 1.0003-11m-7.5 3.5h10m-10 4h10" /> | 25 | <path d="m4.7501 14.25 0.99984-12m4 12 1.0002-12m-8.5001 3.5h11m-11 5h11" fill="none" stroke="currentColor" /> | 
| 17 | </symbol> | 26 | </symbol> | 
| 18 | 27 | ||
| 19 | <symbol id="icon-messages" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 28 | <symbol id="icon-messages" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 
| 20 | <path fill="none" stroke="currentColor" | 29 | <path | 
| 21 | d="m 2.5,1.75 h 8 c 0.4155,0 0.75,0.3345 0.75,0.75 v 5.499875 c 0,0.4155 -0.3345,0.75 -0.75,0.75 H 4.75 l -3,3.00025 V 2.5 C 1.75,2.0845 2.0845,1.75 2.5,1.75 Z" /> | 30 | d="m1.5 1.25h9c0.4155 0 0.75 0.3345 0.75 0.75v6.9999c0 0.4155-0.3345 0.75-0.75 0.75h-7.25l-2.5 2.5001v-10.25c0-0.4155 0.3345-0.75 0.75-0.75z" | 
| 22 | <path fill="none" stroke="currentColor" d="m 6.75,11.750125 h 4.5 l 3,3 V 6.25" /> | 31 | fill="none" stroke="currentColor" /> | 
| 32 | <path d="m5.25 12.75h7.5l2.5 2.5001v-10.25c0-0.4155-0.3345-0.75-0.75-0.75h-0.25" fill="none" | ||
| 33 | stroke="currentColor" /> | ||
| 23 | </symbol> | 34 | </symbol> | 
| 24 | 35 | ||
| 25 | <symbol id="icon-link-external" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 36 | <symbol id="icon-link-external" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 
| 26 | <path fill="none" stroke="currentColor" d="m 5.25,4.25 h 6.5 v 6.5 m 0,-6.5 -7.5,7.5" /> | 37 | <path d="m5.25 4.25h6.5v6.5m0-6.5-7.5 7.5" fill="none" stroke="currentColor" /> | 
| 27 | </symbol> | 38 | </symbol> | 
| 28 | 39 | ||
| 29 | <symbol id="icon-bandcamp" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 40 | <symbol id="icon-parallelogram" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 
| 30 | <path fill="none" stroke="currentColor" d="m 15.25,4.25 -5,7.5 h -9.5 l 5,-7.5 z" /> | 41 | <path d="m15.25 4.25-5 7.5h-9.5l5-7.5z" fill="none" stroke="currentColor" /> | 
| 31 | </symbol> | 42 | </symbol> | 
| 32 | 43 | ||
| 33 | <symbol id="icon-play" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 44 | <symbol id="icon-video" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 
| 34 | <path fill="none" stroke="currentColor" d="M 4.25,3.25 11.75,8 4.25,12.75 Z" /> | 45 | <path d="m6.75 6.25 2.5 2-2.5 2z" fill="currentColor" stroke="currentColor" /> | 
| 46 | <rect x=".75" y="2.25" width="14.5" height="12" ry=".75" fill="none" stroke="currentColor" /> | ||
| 35 | </symbol> | 47 | </symbol> | 
| 36 | 48 | ||
| 37 | <symbol id="icon-share" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 49 | <symbol id="icon-graph" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 
| 38 | <path fill="none" stroke="currentColor" | 50 | <path | 
| 39 | d="M 5.75,8 A 1.75,1.75 0 0 1 4,9.75 1.75,1.75 0 0 1 2.25,8 1.75,1.75 0 0 1 4,6.25 1.75,1.75 0 0 1 5.75,8 Z m 7.5,-4 A 1.75,1.75 0 0 1 11.5,5.75 1.75,1.75 0 0 1 9.75,4 1.75,1.75 0 0 1 11.5,2.25 1.75,1.75 0 0 1 13.25,4 Z m 0,8 A 1.75,1.75 0 0 1 11.5,13.75 1.75,1.75 0 0 1 9.75,12 1.75,1.75 0 0 1 11.5,10.25 1.75,1.75 0 0 1 13.25,12 Z M 5.5273914,7.1280734 9.9,4.75 M 5.5098034,8.8930085 9.9,11.25" /> | 51 | d="m15.25 10.5a2.25 2.25 0 0 1-2.25 2.25 2.25 2.25 0 0 1-2.25-2.25 2.25 2.25 0 0 1 2.25-2.25 2.25 2.25 0 0 1 2.25 2.25zm-10 2.5a2.25 2.25 0 0 1-2.25 2.25 2.25 2.25 0 0 1-2.25-2.25 2.25 2.25 0 0 1 2.25-2.25 2.25 2.25 0 0 1 2.25 2.25zm2.5-10a2.25 2.25 0 0 1-2.25 2.25 2.25 2.25 0 0 1-2.25-2.25 2.25 2.25 0 0 1 2.25-2.25 2.25 2.25 0 0 1 2.25 2.25zm-2.5378 9.4469 5.5686-1.3921m0.61265-2.1613-4.2845-4.2845m-2.1627 0.6058-1.4004 5.6015" | 
| 52 | fill="none" stroke="currentColor" /> | ||
| 40 | </symbol> | 53 | </symbol> | 
| 41 | </defs> | 54 | </defs> | 
| 42 | </svg> | 55 | </svg> | 
