diff options
Diffstat (limited to 'css')
-rw-r--r-- | css/font.scss (renamed from css/fonts.scss) | 0 | ||||
-rw-r--r-- | css/footer.scss | 68 | ||||
-rw-r--r-- | css/glyph.scss | 78 | ||||
-rw-r--r-- | css/header.scss | 117 | ||||
-rw-r--r-- | css/main.scss | 20 | ||||
-rw-r--r-- | css/navBar.scss | 43 | ||||
-rw-r--r-- | css/noScript.scss | 4 | ||||
-rw-r--r-- | css/overview.scss | 42 | ||||
-rw-r--r-- | css/page.scss | 126 | ||||
-rw-r--r-- | css/sideMenu.scss | 75 |
10 files changed, 186 insertions, 387 deletions
diff --git a/css/fonts.scss b/css/font.scss index 603c9ec..603c9ec 100644 --- a/css/fonts.scss +++ b/css/font.scss diff --git a/css/footer.scss b/css/footer.scss index 159fa10..4095b0f 100644 --- a/css/footer.scss +++ b/css/footer.scss @@ -1,26 +1,38 @@ +@use "sass:list"; + #footer { - background-color: var(--foregroundColour); - border-radius: 1rem; - font-family: $monospaceFont; - margin-top: 1rem; - padding: 1rem; - text-align: center; + background-color: var(--foregroundColour); + border-top-left-radius: $padding; + border-top-right-radius: $padding; + font-family: $monospaceFont; + margin: auto; + max-width: calc($contentWidth + $padding * 2); + padding: $padding; + text-align: center; + width: 100%; - h1 { - font-size: 2em; - font-weight: bold; - text-align: center; + #romanisation { + $width: 31; + $height: 11; - &::after { - background-color: var(--textColour); - border-radius: $separatorWidth; - content: ""; - display: block; - height: $separatorWidth; - margin-bottom: 1rem; - margin-top: $separatorWidth; - width: 100%; - } + $actualHeight: 4em; + + aspect-ratio: list.slash($width, $height); + background-color: var(--textColour); + image-rendering: pixelated; + margin: auto; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAALCAQAAAAt4J4/AAAAS0lEQVQoz9WRMQ4AIAgDW+P/v1xHIKIRNhlpuQYgmqWG4nVBqVObL+fGvtHu85YpYDgcnzamB87A3fNCMEFlQXG4cO55vEz1H//VAg5FJOyjOJa9AAAAAElFTkSuQmCC"); + mask-size: cover; + max-height: $actualHeight; + max-width: calc($actualHeight * ($width / $height)); + } + + #systemDescription { + font-style: italic; + margin: $padding auto; + max-width: calc($contentWidth / 2); + text-align: justify; + text-align-last: center; } #cvrNumber { @@ -30,17 +42,20 @@ } #emailAddress { - aspect-ratio: 183/8; + $width: 183; + $height: 8; + + $actualHeight: 1em; + + aspect-ratio: list.slash($width, $height); background-color: var(--textColour); display: block; image-rendering: pixelated; margin: auto; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALcAAAAICAYAAAC78m4/AAAA80lEQVRYw+1YQQ7EIAiETf//ZfeyJqRRhAFN18rNEhGGAbFMRFRKKXTkyEbCzMyV2MzMUikJ39Pdv0d0VW/RIcXoicF6hgezXgxy7cWlZUNbe3LkiTvCF8uZo33d86yAZ+ruTo++WXQWcLy+oDY9MWTua9mJ5igaewbWHr7I9YV2rV5lZY04kS79L9fmjNg1u2+Ty0pUDTRZNXLUiRB/BqlnJB61iY4GKJ6WYtqtmXyswJafIEkczVyrBI1htU0UT80Pzc8n5Si9c9dZKaMrIA8SbZbyPFieIi08kXkevfFWEbSV9yiXvHzRztt6rj3y7l+BX5T3s/pA2wdgAAAAAElFTkSuQmCC"); - mask-position: center; - mask-repeat: no-repeat; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALcAAAAICAQAAAAR+6a0AAAA0klEQVRIx+1W0Q4CMQhrzf3/L9eHM25zwJAzi4nyomSw0kLYEYDwtz1GQgD4cE/he4/P0MgDZHh+G+neEkWO+Ozy5dbSIsZfm5GNHesyZ76edXk0C895cP7N3lyOglwv0kbInbWYFaMV+rpqWxcC0BHOVt+tzMrh5tXEN9D5DdvkMEUdSzt7w+HMpqWiUNXIaB1EdbI4TpftZharAFzT7qqY0vRUFELGq2Tf+RlG6ekWmJgF/ymh+Zh4VK+0iOGdMZ5KgjbuK5U8XYa83dv2xz8E70XwbQlyNNhzAAAAAElFTkSuQmCC"); mask-size: cover; - max-height: 1em; - max-width: calc(183em / 8); + max-height: $actualHeight; + max-width: calc($actualHeight * $width / $height); width: 100%; } @@ -49,7 +64,6 @@ font-weight: bold; gap: 1rem; margin: auto; - margin-top: 1rem; width: fit-content; a { diff --git a/css/glyph.scss b/css/glyph.scss deleted file mode 100644 index d547bc2..0000000 --- a/css/glyph.scss +++ /dev/null @@ -1,78 +0,0 @@ -#glyph { - aspect-ratio: 1; - background-position: center; - background-repeat: no-repeat; - background-size: contain; - left: 50vw; - position: absolute; - top: 50vh; - transform: translate(-50%, -50%); - width: 50vmin; - - body[data-page = "achernar"] & { - $pixelWIdth: calc(100vmax / 256); - - --glyphWidth: 154; - --glyphHeight: 42; - - background-image: url("/image/achernarPixelated.webp"); - height: calc($pixelWIdth * var(--glyphHeight)); - width: calc($pixelWIdth * var(--glyphWidth)); - - @media (orientation: portrait) { - --glyphWidth: 90; - --glyphHeight: 74; - - background-image: url("/image/achernarVerticalPixelated.webp"); - } - } - - body[data-page = "agbsum"] & { - background-image: url("/svg/glyph/ax.svg"); - } - - body[data-page = "ax"] & { - background-image: url("/svg/glyph/ax.svg"); - } - - body[data-page = "backspace"] & { - background-image: url("/svg/glyph/backspace.svg"); - } - - body[data-page = "benoit"] & { - background-image: url("/svg/glyph/benoit.svg"); - } - - body[data-page = "bowshock"] & { - background-image: url("/svg/glyph/bowshock.svg"); - } - - body[data-page = "bzipper"] & { - background-image: url("/svg/glyph/bzipper.svg"); - } - - body[data-page = "deltaWorld"] & { - background-image: url("/svg/glyph/deltaWorld.svg"); - filter: drop-shadow(0 0 calc(100vmin / 128) var(--textColour)); - } - - body[data-page = "dux"] & { - background-image: url("/svg/glyph/dux.svg"); - } - - body[data-page = "eas"] & { - background-image: url("/svg/glyph/eas.svg"); - } - - body[data-page = "luma"] & { - background-image: url("/svg/glyph/luma.svg"); - } - - body[data-page = "pollex"] & { - background-image: url("/svg/glyph/pollex.svg"); - } - - body[data-page = "u8c"] & { - background-image: url("/svg/glyph/u8c.svg"); - } -} diff --git a/css/header.scss b/css/header.scss index a90ff5d..49e6597 100644 --- a/css/header.scss +++ b/css/header.scss @@ -1,114 +1,31 @@ #header { - $gap: 1rem; - $hamburgerHeight: 2rem; - $sideMenuToggleDuration: 0.5s; + $gap: 1rem; + --foregroundColour: var(--backgroundColour); + + align-items: center; background-color: var(--backgroundColour); background-size: cover; - border-bottom-left-radius: var(--padding); - border-bottom-right-radius: var(--padding); - height: fit-content; + border-bottom-left-radius: $padding; + border-bottom-right-radius: $padding; + box-shadow: 0 0 calc($padding / 2) $shadowColour; + display: flex; + height: 100vh; image-rendering: pixelated; + justify-content: center; overflow: hidden; position: relative; user-select: none; width: 100%; - body[data-page = "achernar"] & { - --backgroundColour: #007B34; - --textColour: white; - - @media not (prefers-reduced-motion) { - background-image: url("/image/vertex.webp"); - } - } - - body[data-page = "agbsum"] & { - --backgroundColour: #422984; - --textColour: #FFFFFF; - } - - body[data-page = "ax"] & { - --backgroundColour: #422984; - --textColour: #FFFFFF; - } - - body[data-page = "backspace"] & { - --backgroundColour: #000000; - --textColour: #FFFFFF; - } - - body[data-page = "benoit"] & { - --backgroundColour: #BA0035; - --textColour: #FFFFFF; - - background-image: url("/svg/benoitBackground.svg"); - } - - body[data-page = "bowshock"] & { - --backgroundColour: #B61833; - --textColour: #FFEEE0; - } - - body[data-page = "bzipper"] & { - --backgroundColour: #FFFFFF; - --textColour: #B4202D; - } - - body[data-page = "deltaWorld"] & { - --backgroundColour: #000000; - --textColour: #FFFFFF; - } - - body[data-page = "dux"] & { - --backgroundColour: #131313; - --textColour: #06fbb2; - - background-image: url("/image/duxBackground.webp"); - } - - body[data-page = "eas"] & { - --backgroundColour: #01CD93; - --textColour: #00291B; - } - - body[data-page = "luma"] & { - --backgroundColour: #6051B2; - --textColour: #FFFFFF; - } - - body[data-page = "pollex"] & { - --backgroundColour: #4D4084; - --textColour: #FFFFFF; - } - - body[data-page = "u8c"] & { - --backgroundColour: #444747; - --textColour: #A9E13D; - } - - p, a { - @media not (prefers-reduced-motion) { - transition-timing-function: ease-in-out; - } - } - - a { - cursor: pointer; - font-weight: bold; - text-decoration: underline; - text-decoration-color: #00000000; - - @media not (prefers-reduced-motion) { - transition: text-decoration-color 0.125s; - } - - &:hover { - text-decoration-color: var(--textColour); - } + #glyph { + aspect-ratio: 1; + display: block; + image-rendering: pixelated; + object-fit: contain; + pointer-events: none; + width: 50vmin; } @import "navBar"; - @import "sideMenu"; - @import "glyph"; } diff --git a/css/main.scss b/css/main.scss index d408d19..7687479 100644 --- a/css/main.scss +++ b/css/main.scss @@ -1,12 +1,15 @@ -@import "fonts"; - $monospaceFont: "Fira Mono", "monospace"; $contentWidth: 72rem; +$padding: 1rem; $separatorWidth: 0.25rem; +$shadowColour: color-mix(in srgb, black, transparent 50%); + :root { font-family: "Raleway", "sans-serif"; + + scroll-behavior: smooth; } * { @@ -17,19 +20,16 @@ $separatorWidth: 0.25rem; } body { - --backgroundColour: oklch( 20% 0.029600 253.71); - --foregroundColour: oklch( 25% 0.029600 253.71); - --textColour: oklch(100% 0 0); - - --padding: 1rem; + --backgroundColour: oklch( 25% 0 0); + --foregroundColour: oklch( 20% 0 0); + --textColour: oklch(100% 0 0); background-color: var(--backgroundColour); color: var(--textColour); z-index: -1; - @media (pointer: coarse) { - --padding: 2rem; - } + // Default. + //&.dark { } &.light { --backgroundColour: oklch(96.875% 0 0); diff --git a/css/navBar.scss b/css/navBar.scss index 60f4d8d..2ef4d3a 100644 --- a/css/navBar.scss +++ b/css/navBar.scss @@ -2,36 +2,39 @@ align-items: center; display: flex; justify-content: space-between; - padding: var(--padding); + left: 50%; + max-width: calc($contentWidth + $padding * 2); + padding: $padding; position: absolute; top: 0; + transform: translateX(-50%); width: 100%; - body[data-page = "achernar"] & { - a, #home, #hamburger { - mix-blend-mode: difference; - } - } - section { display: flex; - flex: 1; + flex: 1 1 0; gap: $gap; justify-content: center; + text-align: center; &:first-of-type { justify-content: start; + text-align: left; } &:last-of-type { justify-content: end; + text-align: right; } a { + cursor: pointer; + font-weight: bold; position: relative; + text-decoration: underline; text-decoration-color: #00000000; - &[aria-current = "page"]:not(#home)::after { + &[aria-current = "page"]::after { background-color: var(--textColour); border-radius: $separatorWidth; content: ""; @@ -45,11 +48,12 @@ } @media not (prefers-reduced-motion) { - transition: opacity $sideMenuToggleDuration, text-decoration-color 0.125s; + transition: text-decoration-color 0.125s; + transition-timing-function: ease-in-out; } @media (orientation: portrait) or (pointer: coarse) { - &:not(#home, #hamburger) { + &:not(#home, #themeToggler) { display: none; } } @@ -58,22 +62,5 @@ text-decoration-color: var(--textColour); } } - - #home, #hamburger { - aspect-ratio: 1; - background-color: var(--textColour); - cursor: pointer; - height: $hamburgerHeight; - mask-size: cover; - z-index: 255; - } - - #home { - mask-image: url("/svg/icon/home.svg"); - } - - #hamburger { - mask-image: url("/svg/icon/hamburger.svg"); - } } } diff --git a/css/noScript.scss b/css/noScript.scss index c76d9e2..4cc630c 100644 --- a/css/noScript.scss +++ b/css/noScript.scss @@ -1,7 +1,3 @@ -#navBar { - display: none; -} - #themeToggler { display: none; } diff --git a/css/overview.scss b/css/overview.scss new file mode 100644 index 0000000..874ae2b --- /dev/null +++ b/css/overview.scss @@ -0,0 +1,42 @@ +#overview { + $cardsPerRow: 3; + + align-items: center; + background-color: var(--foregroundColour); + border-radius: $padding; + display: flex; + flex-wrap: wrap; + gap: $padding; + padding: $padding; + width: 100%; + + a { + --foregroundColour: var(--backgroundColour); + + align-items: center; + aspect-ratio: 1; + background-color: var(--backgroundColour); + background-size: cover; + border-radius: $padding; + display: flex; + flex-basis: calc((100% - $padding * ($cardsPerRow - 1)) / $cardsPerRow); + justify-content: center; + padding: $padding; + width: $padding; + + @media not (prefers-reduced-motion) { + transition: box-shadow 0.25s; + transition-timing-function: steps(4); + } + + &:hover { + box-shadow: inset 0 0 $padding $shadowColour; + } + + img { + display: block; + pointer-events: none; + width: 50%; + } + } +} diff --git a/css/page.scss b/css/page.scss index 6033f34..3ede81a 100644 --- a/css/page.scss +++ b/css/page.scss @@ -1,8 +1,6 @@ #page { - $padding: var(--padding); - margin: auto; - max-width: $contentWidth; + max-width: calc($contentWidth + $padding * 2); padding: $padding; a, a:visited { @@ -11,10 +9,9 @@ } h1 { - font-size: 2em; - font-weight: bold; - margin-bottom: 1rem; - width: 100%; + font-size: 2em; + font-weight: bold; + width: 100%; &:nth-of-type(even) { text-align: right; @@ -26,42 +23,58 @@ content: ""; display: block; height: $separatorWidth; - margin-bottom: 1rem; margin-top: $separatorWidth; width: 100%; - }; + } + + a.anchor { + aspect-ratio: 1; + background-color: var(--textColour); + display: inline-block; + mask-image: url("/svg/glyph/chain.svg"); + mask-size: cover; + vertical-align: middle; + width: 0.5em; + } } section { - font-family: "Montserrat"; + font-family: "Montserrat", "sans-serif"; line-height: 2em; max-width: calc($contentWidth / 2 - $padding); text-align: justify; width: 100%; - &:nth-of-type(even) { - margin-left: auto; - - ol, ul { - margin-left: auto; - text-align: left - } + &:nth-of-type(even):not(.fullWidth) { + margin-left: auto; + text-align-last: right; } &.fullWidth { - max-width: 100%; + max-width: 100%; + text-align: center; } - & + h1 { - margin-top: 1rem; + p.codeblock { + background-color: var(--textColour); + border-radius: $padding; + color: var(--backgroundColour); + font-family: $monospaceFont; + line-height: normal; + padding: $padding; + text-align: left; + text-align-last: left; + white-space: preserve; } p.note { - font-weight: bold; - text-align: center; + font-style: italic; + font-weight: bold; + text-align: left; + text-align-last: left; &::before { - content: "Note:\0020"; + content: "\2014\0020Note:\0020"; } } @@ -73,60 +86,43 @@ padding: $padding; } - em { - font-style: normal; - font-weight: bold; - } - ul { background-color: var(--foregroundColour); - border-radius: 1rem; - padding: 1rem; + border-radius: $padding; + display: block; + padding: $padding; text-align: left; + text-align-last: left; width: 100%; } - div.codeblock { - background-color: var(--textColour); - border-radius: 1rem; - color: var(--backgroundColour); - font-family: $monospaceFont; - line-height: normal; - padding: 1rem; - white-space: preserve; - } - } - - x-image { - display: block; - position:relative; - width: 100%; - - &:nth-of-type(odd) { - margin-right: auto; - } - - &:nth-of-type(even) { - margin-left: auto; - } - - img.blur { - filter: blur(1rem) saturate(200%); - position: absolute; + div.image { + position: relative; width: 100%; - } - a { - position: relative; + a { + border-radius: $padding; + display: block; + position: relative; + } img { - border-radius: 1rem; - display: block; - image-rendering: pixelated; - width: 100%; + border-radius: $padding; + display: block; + width: 100%; + + &.blur { + filter: blur($padding) saturate(200%); + pointer-events: none; + position: absolute; + } } } } - @import "footer"; + h1 + section, section + h1 { + margin-top: $padding; + } + + @import "overview"; } diff --git a/css/sideMenu.scss b/css/sideMenu.scss deleted file mode 100644 index 7fea9f2..0000000 --- a/css/sideMenu.scss +++ /dev/null @@ -1,75 +0,0 @@ -#sideMenu { - align-items: center; - background-color: var(--backgroundColour); - display: flex; - flex-direction: column; - gap: $separatorWidth; - justify-content: space-between; - left: 100vw; - min-height: calc(100vh + var(--padding)); - padding: 1rem; - padding-bottom: 2rem; - padding-top: calc($hamburgerHeight + var(--padding) * 2); - position: relative; - width: 100%; - z-index: 127; - - body[data-page = "achernar"] & { - background-color: var(--backgroundColour); - } - - @media (pointer: fine) and (not (prefers-reduced-motion)) { - transition: left $sideMenuToggleDuration; - transition-timing-function: ease-in-out; - } - - &.visible { - left: 0; - } - - section.links { - display: flex; - gap: $separatorWidth; - justify-content: end; - max-width: $contentWidth; - padding: 0 1rem; - width: 100%; - - @media (orientation: portrait) { - flex-direction: column; - } - - section { - display: flex; - flex-direction: column; - gap: $separatorWidth; - - p { - background-color: var(--textColour); - border-radius: $separatorWidth; - color: var(--backgroundColour); - font-weight: bold; - padding: $separatorWidth 1rem; - text-align: center; - } - - a { - padding: 0 calc($separatorWidth * 2); - position: relative; - - &[aria-current = "page"]::after { - background-color: var(--textColour); - border-radius: $separatorWidth; - content: ""; - display: block; - height: 100%; - position: absolute; - right: 0; - top: 50%; - transform: translateY(-50%); - width: $separatorWidth; - } - } - } - } -} |