diff --git a/.postcssrc b/.postcssrc new file mode 100644 index 0000000..af7ee41 --- /dev/null +++ b/.postcssrc @@ -0,0 +1,5 @@ +{ + "plugins": { + "postcss-custom-media": true + } +} diff --git a/package.json b/package.json index d3acf73..3535397 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,8 @@ "@parcel/config-default": "^2.15.4", "markdown-it-sup": "^2.0.0", "parcel": "^2.15.4", + "postcss": "^8.5.6", + "postcss-custom-media": "^11.0.6", "posthtml": "^0.16.6", "posthtml-component": "^2.2.0", "posthtml-include": "^2.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba978a3..1f56403 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: htmx.org: specifier: ^2.0.6 version: 2.0.6 + postcss-custom-media: + specifier: ^11.0.6 + version: 11.0.6(postcss@8.5.6) devDependencies: '@parcel/compressor-brotli': specifier: ^2.15.4 @@ -30,6 +33,9 @@ importers: parcel: specifier: ^2.15.4 version: 2.15.4(@swc/helpers@0.5.17) + postcss: + specifier: ^8.5.6 + version: 8.5.6 posthtml: specifier: ^0.16.6 version: 0.16.6 @@ -45,6 +51,30 @@ importers: packages: + '@csstools/cascade-layer-name-parser@2.0.5': + resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@lezer/common@1.2.3': resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} @@ -829,6 +859,11 @@ packages: msgpackr@1.11.4: resolution: {integrity: sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} @@ -864,9 +899,19 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + postcss-custom-media@11.0.6: + resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + posthtml-attrs-parser@1.1.2: resolution: {integrity: sha512-9Que9y4k8c33iv8h5QyTfHKlurmsJIscozy7oeFRxuWeX/osXjVGu9o9MKrmo4TI6Vr9a9vh9b4LYXqm3/GvhA==} engines: {node: '>=16.0.0'} @@ -931,6 +976,10 @@ packages: engines: {node: '>=10'} hasBin: true + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + style-to-object@1.0.9: resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} @@ -971,6 +1020,22 @@ packages: snapshots: + '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@lezer/common@1.2.3': {} '@lezer/lr@1.4.2': @@ -1980,6 +2045,8 @@ snapshots: optionalDependencies: msgpackr-extract: 3.0.3 + nanoid@3.3.11: {} + node-addon-api@6.1.0: {} node-addon-api@7.1.1: {} @@ -2024,8 +2091,22 @@ snapshots: picomatch@2.3.1: {} + postcss-custom-media@11.0.6(postcss@8.5.6): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 + postcss-value-parser@4.2.0: {} + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + posthtml-attrs-parser@1.1.2: {} posthtml-component@2.2.0: @@ -2095,6 +2176,8 @@ snapshots: semver@7.7.2: {} + source-map-js@1.2.1: {} + style-to-object@1.0.9: dependencies: inline-style-parser: 0.2.4 diff --git a/src/components/link/instagram.html b/src/components/link/instagram.html new file mode 100644 index 0000000..1eb345a --- /dev/null +++ b/src/components/link/instagram.html @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/partials/who_we_are.html b/src/partials/who_we_are.html index 9aeadaa..968bb0f 100644 --- a/src/partials/who_we_are.html +++ b/src/partials/who_we_are.html @@ -65,48 +65,52 @@ Step on it, Richard! - - - I love everything from making distributed systems, to physically building them. I'm in my element when I'm - making software with Python, and deploying it via Docker. - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + # Gunnar Huscroft + + + + #### CEO of c0re (same thing) + + + + + + + + + + + + + + Nothing but the courage and unselfishness of individuals is ever going to make any system work properly + + + + + + + + + + + + + + @@ -130,13 +134,13 @@ You only live once, die trying - - - Just a guy making cool stuff for the love of the game. Like fast beep boops too 🎶⚡️ - - + + + + + - + @@ -161,12 +165,12 @@ Pog - - - I'm a software engineer and computer scientist who loves harnessing the power of technology to solve problems! - Ever since I was 7, my specialization has always been in looking for problems to solve, and working with people - to solve them. - - + + + + + + + \ No newline at end of file diff --git a/src/style.css b/src/style.css index aba4335..8eca2d3 100644 --- a/src/style.css +++ b/src/style.css @@ -1,9 +1,18 @@ +@custom-media --tablet only screen and (max-width: 1200px); +@custom-media --phone only screen and (max-width: 700px); +@custom-media --smaller-phone only screen and (max-width: 500px); + :root { --energy: 0px; --page-width: min(100%, 1024px); color: white; } +html { + color-scheme: dark; + font-family: system-ui; +} + .title { font-size: min(10vw, 36pt); margin-bottom: 48px; @@ -18,6 +27,12 @@ h1 { font-size: 48pt; } + + @media (--tablet) { + text-align: center; + display: flex; + flex-direction: column-reverse; + } } center:has(> blockquote) { @@ -43,11 +58,10 @@ blockquote { &+p { text-align: right; } -} -html { - color-scheme: dark; - font-family: system-ui; + @media (--phone) { + margin: 0px auto; + } } #page-content { @@ -87,6 +101,20 @@ html { &>div { padding: 16px; } + + @media (--phone) { + flex-direction: column; + padding: 18px; + + &>div { + padding-top: 0; + padding-bottom: 0; + } + + p { + font-size: 14pt; + } + } } .project-title { @@ -100,6 +128,10 @@ html { .description { width: 100%; + + @media (--phone) { + width: unset; + } } .links { @@ -127,6 +159,24 @@ html { font-weight: bold; border-bottom: solid 6px #eee; } + + @media (--smaller-phone) { + flex-direction: column; + + a { + background-color: transparent; + border: solid 3px #999; + font-size: 16pt; + padding: 8px; + } + + a[aria-selected=true] { + background-color: #eee; + font-weight: bold; + color: black; + border: solid 12px #eee; + } + } } .figure { @@ -193,57 +243,4 @@ a { color: inherit; /* no underline */ text-decoration: none; -} - - -@media only screen and (max-width: 1200px) { - .section-header { - text-align: center; - display: flex; - flex-direction: column-reverse; - } -} - -@media only screen and (max-width: 700px) { - .description { - width: unset; - } - - .project { - flex-direction: column; - padding: 18px; - - &>div { - padding-top: 0; - padding-bottom: 0; - } - - p { - font-size: 14pt; - } - } - - blockquote { - margin: 0px auto; - } -} - -@media only screen and (max-width: 500px) { - .tab-list { - flex-direction: column; - - a { - background-color: transparent; - border: solid 3px #999; - font-size: 16pt; - padding: 8px; - } - - a[aria-selected=true] { - background-color: #eee; - font-weight: bold; - color: black; - border: solid 12px #eee; - } - } } \ No newline at end of file