Pooru/public/css/style.css
Lucas Gabriel Vuotto 005560bd4c site: css polishing
- relocate a couple of specific blocks out of the general area
- rename --gap to --vertical-unit
2025-04-28 13:39:51 +00:00

424 lines
7.5 KiB
CSS

/*
* Copyright (c) 2025 Lucas Gabriel Vuotto <lucas@lgv5.net>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
:root {
--dark-theme-bg: black;
--dark-theme-text: white;
--dark-theme-accent: royalblue;
--dark-theme-accent-hover: orange;
--dark-theme-tag-kind-a: crimson;
--dark-theme-tag-kind-c: seagreen;
--dark-theme-tag-kind-r: mediumorchid;
--dark-theme-suggetion-hover-bg: rgba(255, 255, 255, 0.1);
--light-theme-bg: white;
--light-theme-text: black;
--light-theme-accent: royalblue;
--light-theme-accent-hover: orange;
--light-theme-tag-kind-a: crimson;
--light-theme-tag-kind-c: seagreen;
--light-theme-tag-kind-r: mediumorchid;
--light-theme-suggetion-hover-bg: rgba(0, 0, 0, 0.1);
--bg: var(--light-theme-bg);
--text: var(--light-theme-text);
--accent: var(--light-theme-accent);
--accent-hover: var(--light-theme-accent-hover);
--tag-kind-a: var(--light-theme-tag-kind-a);
--tag-kind-c: var(--light-theme-tag-kind-c);
--tag-kind-r: var(--light-theme-tag-kind-r);
--suggestion-hover-bg: var(--light-theme-suggetion-hover-bg);
--vertical-unit: 1.5rem;
--viewport-width: 90rem;
--border-thin: 0.0625rem solid var(--accent);
--gallery-column-gap: 1.2rem;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
dl,
form,
h1,
h2,
h3,
input,
ol,
p,
ul {
margin: 0;
}
body {
margin: 0 auto;
min-height: 100vh;
background-color: var(--bg);
color: var(--text);
font-family: monospace;
font-size: 1rem;
line-height: 1.5;
}
dl,
form,
h1,
h2,
h3,
ol,
p,
ul {
margin-bottom: var(--vertical-unit);
}
h1 {
text-align: center;
font-size: 3rem;
line-height: 2;
}
h2 {
font-size: 2.5rem;
line-height: 1.2;
}
h3 {
font-size: 2rem;
line-height: 1.5;
}
dd {
margin-left: var(--vertical-unit);
}
dt {
font-weight: bold;
}
ol,
ul {
padding-left: calc(var(--vertical-unit) * 2);
}
a,
a:link,
a:visited {
color: var(--accent);
}
a:hover,
a:focus,
a:active {
color: var(--accent-hover);
}
img {
max-width: 100%;
height: auto;
}
input {
background-color: var(--bg);
color: var(--text);
font: inherit;
border: var(--border-thin);
padding: 0 0.1875rem;
}
input[type=submit] {
background-color: var(--accent);
color: var(--bg);
font-weight: bold;
}
input[type=submit]:active {
background-color: var(--accent-hover);
border-color: var(--accent-hover);
}
body > header {
border-bottom: var(--border-thin);
font-size: 1.25rem;
line-height: 2.4;
}
body > header > nav {
gap: 0 var(--vertical-unit);
/* Make the navbar horizontally scrollable. Used for mobile. */
white-space: nowrap;
overflow-x: auto;
}
body > header > nav > a {
font-weight: bold;
text-decoration: none;
}
body > footer {
border-top: var(--border-thin);
}
body > footer > p {
padding-top: calc(var(--vertical-unit) / 2);
margin-bottom: calc(var(--vertical-unit) / 2);
}
main {
border-top: var(--border-thin);
border-bottom: var(--border-thin);
margin-top: 0.1875rem;
margin-bottom: 0.1875rem;
padding-top: var(--vertical-unit);
padding-bottom: var(--vertical-unit);
}
[x-cloak] {
display: none;
}
.text-center {
text-align: center;
}
.float-right {
float: right;
}
.position-relative {
position: relative;
}
.layout-viewport {
margin-left: auto;
margin-right: auto;
width: var(--viewport-width);
}
.layout-flex-row {
display: flex;
flex-direction: row;
}
.layout-flex-column {
display: flex;
flex-direction: column;
}
.layout-flex-item-fullsize {
flex: auto;
}
.accent {
color: var(--accent);
}
.pager > a,
.pager > span {
display: inline-block;
padding-left: 0.5rem;
padding-right: 0.5rem;
border: var(--border-thin);
}
.pager > a {
text-decoration: none;
}
.pager > a:hover,
.pager > a:focus {
color: var(--bg);
background-color: var(--accent);
}
.pager > a:active {
color: var(--bg);
background-color: var(--accent-hover);
border-color: var(--accent-hover);
}
.pager > span {
border-color: var(--text);
}
form[name=search] {
gap: 0 var(--gallery-column-gap);
justify-content: center;
align-items: center;
}
form[name=search] input[type=submit] {
width: 7rem;
}
form[name=search] input[name=tags] {
width: 100%;
}
ul.suggestions {
position: absolute;
background-color: var(--bg);
width: 100%;
border: var(--border-thin);
box-shadow: rgba(0, 0, 0, 0.5) 0 0.25rem 0.5rem -0.25rem;
padding-left: 0;
list-style: none;
}
ul.suggestions li {
padding-left: 0.1875rem;
padding-right: 0.1875rem;
}
.suggestion-hover {
background-color: var(--suggestion-hover-bg);
}
.gallery {
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: var(--vertical-unit) var(--gallery-column-gap);
margin-bottom: var(--vertical-unit);
}
.gallery > a {
flex: 0 1 14rem;
padding: 0.1875rem;
line-height: 0;
}
.gallery > a:link,
.gallery > a:visited {
border: var(--border-thin);
}
.gallery > a:hover,
.gallery > a:focus,
.gallery > a:active {
border-color: var(--accent-hover);
}
.media {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: flex-start;
gap: var(--vertical-unit) var(--gallery-column-gap);
}
.media-metadata {
flex: 1;
}
.media-item {
flex: 3;
line-height: 0;
}
span.tag-kind-a,
a.tag-kind-a:link,
a.tag-kind-a:visited {
color: var(--tag-kind-a);
}
span.tag-kind-c,
a.tag-kind-c:link,
a.tag-kind-c:visited {
color: var(--tag-kind-c);
}
span.tag-kind-r,
a.tag-kind-r:link,
a.tag-kind-r:visited {
color: var(--tag-kind-r);
}
a.tag-kind-a:hover,
a.tag-kind-a:focus,
a.tag-kind-a:active,
a.tag-kind-c:hover,
a.tag-kind-c:focus,
a.tag-kind-c:active,
a.tag-kind-r:hover,
a.tag-kind-r:focus,
a.tag-kind-r:active {
color: var(--accent-hover);
}
@media screen and (max-width: 60rem) {
:root {
--viewport-width: 100%;
--gallery-column-gap: 1rem;
}
body > header > nav,
body > footer,
main {
padding-left: var(--vertical-unit);
padding-right: var(--vertical-unit);
}
.media { flex-direction: column-reverse; }
.media-metadata { flex: auto; }
.media-item { flex: auto; }
}
@media screen and (min-width: 60rem) {
:root {
--viewport-width: 60rem;
--gallery-column-gap: 1.3125rem;
}
body > header > nav,
body > footer,
main {
padding-left: 0;
padding-right: 0;
}
.media { flex-direction: row; }
.media-metadata { flex: 1; }
.media-item { flex: 3; }
}
@media screen and (min-width: 90rem) {
:root {
--viewport-width: 90rem;
--gallery-column-gap: 1.2rem;
}
}
@media (prefers-color-scheme: dark) {
:root {
--bg: var(--dark-theme-bg);
--text: var(--dark-theme-text);
--accent: var(--dark-theme-accent);
--accent-hover: var(--dark-theme-accent-hover);
--tag-kind-a: var(--dark-theme-tag-kind-a);
--tag-kind-c: var(--dark-theme-tag-kind-c);
--tag-kind-r: var(--dark-theme-tag-kind-r);
--suggestion-hover-bg: var(--dark-theme-suggetion-hover-bg);
}
}