website/_src/assets/css/citrus.css

766 lines
15 KiB
CSS
Raw Normal View History

2025-06-11 10:09:06 +03:00
:root {
--primary: rgb(255, 190, 0);
--secondary: rgb(255, 110, 0);
--tertiary: rgb(255, 236, 180);
--quaternary: rgb(105, 50, 0);
--shadow: 0.2rem 0.2rem 0.4rem 0.2rem #0003;
--checker: url('/assets/img/theme/citrus/checker.png');
--checker-dark: url('/assets/img/theme/citrus/checker-dark.png');
--dot: url('/assets/img/theme/citrus/dot.png');
--dot-dark: url('/assets/img/theme/citrus/dot-dark.png');
--line: url('/assets/img/theme/citrus/line.png');
--paper: url('/assets/img/theme/citrus/paper.png');
--noise: url('/assets/img/theme/citrus/imagedoc-lightnoise.png');
}
::selection {
background-color: rgb(172, 255, 0)
}
/* Page specific - Index */
#index {
width: 100%;
background-color: rgb(255, 190, 0);
background-image: url('/assets/img/theme/citrus/sundae.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center;
margin: 0;
padding: 0;
main {
display: flex;
}
a img {
width: 100%;
transition: 0.5s;
transform: scale(0.9);
}
a img:hover {
transform: scale(0.95) translateY(-1rem);
}
}
/* Main style */
hr {
border-bottom: unset;
border-left: unset;
border-right: unset;
border-top: 1px solid #aaa;
}
body {
background-attachment: local, fixed;
background-color: var(--primary);
background-image: var(--checker), linear-gradient(var(--primary), var(--secondary));
background-size: 32px, contain;
font-family: Rubik, sans-serif;
}
body>nav,
header h1 {
box-shadow: inset -2px -2px 0 2px var(--quaternary);
}
body>nav,
header h1 {
background-attachment: fixed;
background-blend-mode: screen;
background-image: var(--dot), linear-gradient(var(--primary), var(--secondary) 20%);
background-size: 6px;
}
/* Header */
header {
& h1 {
border-radius: 0 0 5rem 0;
color: var(--quaternary);
margin: 0 0 0 -4px;
padding: 0 64px 0 16px;
}
}
header,
footer {
height: 4rem;
}
/* Navigation */
body>nav {
border-radius: 0 0 2rem 0;
& a {
background-image: linear-gradient(var(--tertiary), var(--primary) 20%, var(--primary) 80%, var(--tertiary) 100%);
border-radius: 0 1rem 1rem 0;
box-shadow: 0 0 0 2px var(--quaternary), inset 0 0 8px 2px var(--primary);
color: var(--quaternary);
margin: 0 0 8px 0;
&:hover:not([aria-current="page"]) {
box-shadow: 0 0 0 2px var(--quaternary);
}
}
& [aria-current="page"] {
background-image: linear-gradient(darkorange, var(--quaternary) 10%, chocolate);
box-shadow: 0 0 0 2px var(--quaternary), inset 0 0 4px 2px var(--quaternary);
color: var(--tertiary);
& svg {
color: var(--tertiary);
}
}
&>ul div svg {
font-size: 24px;
font-weight: bold;
}
& svg text {
fill: var(--tertiary);
paint-order: stroke markers fill;
stroke-width: 4;
stroke: var(--quaternary);
}
& li:last-child a {
margin-bottom: 0;
}
}
#flags {
flex-wrap: wrap;
display: flex;
gap: 0.8rem;
margin-bottom: 32px;
}
img[src*="/assets/img/flag/"] {
border-radius: 0.2rem;
box-shadow: 0 0 0 2px #fff, 1px 1px 0px 3px #0006;
}
/* Page-specific - Blog */
#blog {
background-attachment: local;
background-color: #eef;
background-image: var(--noise), var(--dot-dark);
background-size: auto, 4px;
}
.blog {
margin: 0 auto;
background-color: #fff;
background-image: var(--noise), url('/assets/img/theme/citrus/pawprint.svg');
background-size: auto, 64px;
background-repeat: repeat, no-repeat;
background-position-y: bottom;
background-position-x: center;
background-origin: content-box;
box-shadow: inset 0 0 2rem -0.5rem #ccc;
& ul {
padding: 0 16px;
}
& p[class="warning"] {
color: #ffcc4d;
background-color: #000;
font-weight: bold;
padding: 2px 8px;
text-align: center;
&::before,
&::after {
content: "⚠️"
}
}
& li {
margin: 0;
}
& u {
text-decoration: underline red;
}
& em {
font-weight: 200;
}
& code {
padding: 0 4px;
}
& pre {
padding: 15px;
}
& pre,
code:not(pre code) {
background-color: lightgray;
border: 1px solid darkgray;
border-radius: 0.4rem;
}
& h2 {
display: flex;
flex-direction: column;
margin: 0 auto;
text-align: center;
padding: 0 0 1rem 0
}
& time {
margin: inherit;
}
& aside {
background: #eee;
border-radius: 0.4rem;
border: 2px solid #ccc;
float: right;
margin-bottom: 0.8rem;
padding: 1rem;
width: 40ch;
}
& h3 {
border-bottom: 1px solid #aaa;
font-size: 1.6rem;
margin-bottom: 1rem;
}
}
.blog>[aria-label="Postscript"] {
display: grid;
margin: 0 0 auto auto;
padding: 0 0 4rem 0;
grid-template-columns: repeat(2, 1fr);
width: min-content;
& p,
img {
box-shadow: inset 0 0 1px #666;
}
& p {
background: #fff;
border-radius: 5rem 5rem 0 5rem;
font-size: 12px;
margin: 0 0.2rem 1rem 0;
padding: 4px 8px;
width: max-content;
}
& img {
background-color: #eee;
border-radius: 100%;
box-sizing: content-box;
height: 16px;
margin: auto 0 0 auto;
image-rendering: pixelated;
padding: 4px;
width: 16px;
}
}
#posts {
width: max-content;
& ul {
display: flex;
flex-direction: column;
padding: 0;
margin: 0;
list-style-type: none;
}
& li:not(:first-of-type) {
margin: 1rem 0 0 0;
}
& a {
display: flex;
flex-direction: column;
background-color: #fff;
transition: 0.3s;
padding: .8rem;
width: auto;
text-decoration: none;
font-size: 1.125rem;
font-weight: bold;
border: 4px solid;
border-color: #fff;
box-shadow: var(--shadow);
border-radius: 0.4rem;
&:is(:hover, :focus) {
border-color: currentColor
}
& time,
p {
font-weight: initial;
font-size: initial;
display: flex;
color: initial;
}
}
}
/* Page specific - Home */
main>section:has(nav) {
display: flex;
flex-direction: column;
}
#changelog {
width: fit-content;
& iframe {
min-width: 640px;
min-height: 480px
}
}
#buttons {
width: 640px;
& fieldset {
display: flex;
flex-wrap: wrap;
gap: 4px;
}
& nav {
& ul {
margin: 0;
padding: 0;
display: grid;
}
& img:hover {
filter: drop-shadow(4px 6px 0 #0006);
transform: translateY(-4px);
transition: 0.3s;
}
}
}
#pkmn {
display: flex;
flex-wrap: wrap;
background-image: url("/assets/img/theme/citrus/box.png");
border-radius: 5px;
width: fit-content;
justify-content: space-around;
border-bottom-color: #78a068;
border-left-color: #c8f8c0;
border-right-color: #78a068;
border-top-color: #c8f8c0;
border-width: 3px;
border-style: solid;
margin-top: 18px;
& img:hover {
filter: drop-shadow(0 -2px 0 #fff) drop-shadow(0 2px 0 #fff) drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff) drop-shadow(0 2px 3px #0006);
animation: jump 200ms infinite alternate;
}
}
.note {
background-color: var(--tertiary);
background-image: var(--noise), var(--paper);
background-size: auto, 4px;
font-family: Pangolin, sans-serif;
& p {
text-transform: lowercase;
&:not(:last-of-type) {
margin-bottom: 32px;
}
}
& p,
li,
h2 {
line-height: 32px;
margin: 0;
font-size: 20px;
}
& h3 {
font-size: 32px;
line-height: 32px;
}
}
#portrait {
background-color: var(--primary);
border-radius: 100%;
height: 120px;
margin: 4px 16px;
width: 120px;
float: right;
box-shadow: 0 0 0 4px #fff, .2em .2em .1em .2em #0006;
overflow: hidden;
transition: 0.3s;
& img {
height: 120px;
transition: none;
pointer-events: none;
}
&::before {
content: "";
width: inherit;
height: inherit;
border-radius: inherit;
position: absolute;
pointer-events: none;
z-index: 1;
background-image: linear-gradient(to bottom, #fffb, transparent 50%);
}
&:hover {
transform: rotateZ(4deg);
}
&:active {
transform: scale(1.2) rotateZ(4deg) translateY(4px);
box-shadow: 0 0 0 4px #fff, .4em .4em .4em .4em #0006;
& img {
transform: translateX(-120px);
}
}
}
#collection {
& ul {
background-image: var(--line), linear-gradient(to top, chocolate 80%, var(--quaternary));
background-size: 32px;
box-shadow: inset 0 0 24px 8px var(--quaternary);
margin-bottom: 2rem;
border: 4px solid chocolate;
border-top: 0;
display: flex;
padding: 25px 0 0 25px;
overflow-x: scroll;
margin: 0;
overflow-y: hidden;
align-items: baseline;
}
& hr {
height: 2rem;
margin: 0;
border: none;
background-image: linear-gradient(darkorange 10%, chocolate 30%);
box-shadow: inset 0 4px 4px chocolate;
}
& li {
display: flex;
list-style-type: none;
position: relative;
z-index: 1;
align-self: baseline;
transition: 0.3s;
& a {
width: 100%;
}
&:hover {
transform: translateY(-6px) rotateZ(2deg);
z-index: 2;
margin: 0 -1rem 0 0;
}
& h3 {
height: 2rem;
position: absolute;
text-align: center;
transition: 0.3s;
color: transparent;
display: grid;
align-items: center;
width: inherit;
z-index: 1;
font-size: 1rem;
&:hover {
background-image: linear-gradient(#000, transparent);
color: #fff;
height: 100%;
}
}
}
}
main>section:not([id]) {
display: flex;
gap: 2rem;
}
main>*:not(*:last-child) {
margin-bottom: 2rem;
}
.games img,
.music img {
width: 160px;
}
.games li {
margin: 0 -8rem 0 0;
}
.games img {
display: flex;
width: 12rem;
}
.music {
& li {
margin: 0 -5rem 0 0;
box-shadow: inset 0 0 0.2rem #666;
background-image: linear-gradient(-45deg, #333 50%, #666);
height: 10rem;
width: 10rem;
&::before {
width: 1rem;
box-shadow: inset 1rem 0 0 0 #222;
margin: 0 -1rem;
}
&::after {
border: .2rem solid #ccc;
border-left: 0;
z-index: 1;
background-image: linear-gradient(-45deg, #fff3, transparent, #fffb);
width: 11rem;
margin: 0 0 0 -1rem;
}
&:hover::after {
animation: caseOpen .4s ease-in-out both;
}
}
& img {
border-radius: 100%;
box-shadow: 0 0 0 0.2rem #eee, 0 0 0 0.3rem #222;
height: 9rem;
width: 9rem;
margin: 0.5rem;
}
& li::before,
& li::after,
& a::after {
content: "";
box-sizing: border-box;
height: inherit;
pointer-events: none;
position: absolute;
}
& a::after {
background-image: radial-gradient(circle, #444 40%, #666);
border-radius: 100%;
box-shadow: 0 0 0 0.25rem #eee, 0 0 0 .3rem #222;
height: 32px;
content: url("/assets/img/theme/citrus/popper.svg");
margin: 4rem -6rem;
}
}
/* Page specific - Gallery */
#artworks {
background-image: var(--noise), var(--line);
background-color: #fff;
padding: 1rem;
background-size: auto, 32px;
& h2 {
padding: 0 2rem 0 1rem;
margin: 2rem 0;
border-bottom: 2px dotted;
font-size: 2rem;
font-family: Pangolin, sans-serif;
&:first-of-type {
margin: 0 0 2rem 0;
}
}
& img {
display: flex;
height: 12rem;
width: 100%;
transition: 0.3s;
border-bottom: unset;
object-fit: cover;
}
& ul {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(208px, 100%), 1fr));
padding: 0;
margin: 0;
gap: 1rem;
}
& a {
display: block;
text-decoration: unset;
transition: 0.3s;
&:is(:hover, :focus) {
figure {
transition: 0.3s;
background-color: currentColor;
border-color: currentColor;
}
figcaption {
color: #fff;
}
time {
color: #fffa
}
}
}
& figure {
margin: 0;
background-color: #fff;
border: 4px solid #fff;
box-shadow: var(--shadow);
border-radius: 0.4rem;
}
& figcaption {
font-family: Urbanist, sans-serif;
font-size: 1.2rem;
}
& time {
color: #666;
}
}
@font-face {
font-family: Rubik;
src: url('/assets/fonts/Rubik.ttf') format('truetype');
}
@font-face {
font-family: Urbanist;
src: url('/assets/fonts/Urbanist-Bold.ttf') format('truetype');
}
@font-face {
font-family: Pangolin;
src: url('/assets/fonts/Pangolin-Regular.ttf') format('truetype');
}
/* Mobile view */
@media screen and (max-width: 1400px) {
header h1 {
display: none
}
body>nav {
height: 3rem;
border-radius: 0;
box-shadow: inset 0 -4px 0 0 var(--quaternary);
}
body>nav,
header h1 {
background-color: var(--secondary);
background-attachment: unset;
background-blend-mode: unset;
background-image: unset;
}
body>nav a {
border-radius: 1rem;
margin: 6px 4px 8px 4px;
padding: 0 8px 0 0;
}
header {
display: flex;
justify-content: bottom;
background-position-y: initial;
}
.blog aside {
width: initial;
}
#posts,
#posts li {
width: auto;
}
#blog header {
height: 3rem;
}
#changelog, #buttons {
min-width: initial;
width: 100%;
}
#buttons ul {
display: flex !important;
flex-wrap: wrap;
}
#buttons fieldset {
width: 100%;
}
#changelog iframe {
min-width: initial;
width: 100%;
}
}
@keyframes caseOpen {
50% {
width: 0rem;
margin: 0 0 0 -1rem;
}
51% {
border: 0.3rem solid #999;
}
100% {
width: 11rem;
border: 0.3rem solid #999;
border-right: 0;
margin: 0 -12rem;
background-image: linear-gradient(-45deg, #ccc8, #fffa);
}
}
@keyframes jump {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-4px);
}
}