decarbone/assets/css/style.css
2026-02-13 15:40:11 +01:00

755 lines
14 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* variables */
:root {
/* colors */
--color-grey-dark: #323131;
--color-grey-normal: #c8c8c8;
--color-grey-light: #e8e8e8;
--color-grey-dark-rgba: rgba(50, 49, 49, 1);
--color-grey-dark-rgba-unvisible: rgba(50, 49, 49, 0);
--color-grey-normal-rgba: rgba(200, 200, 200, 1);
--color-grey-normal-rgba-unvisible: rgba(200, 200, 200, 0);
--color-grey-light-rgba: rgba(232, 232, 232, 1);
--color-grey-light-rgba-unvisible: rgba(232, 232, 232, 0);
/* padding */
--padding-body: 9.375vw; /* 120px / 1280px */
/* font family */
--font-family-duo: "iA-Writer-duo-V", sans-serif; /* Monospace */
--font-family-quattro: "iA-Writer-Quattro-V", sans-serif; /* Sans serif */
/* font size */
--font-size-base: 1rem;
--font-size-scale: 1.44;
--font-size-demi-scale: 1.2;
--font-size-text: calc(
var(--font-size-base) * var(--font-size-scale)
); /* 23px */
--font-size-caption: calc(
var(--font-size-base) * var(--font-size-demi-scale)
); /* 19px */
--font-size-table: var(--font-size-caption);
--font-size-logo: calc(
calc(var(--font-size-h1) * var(--font-size-scale)) *
var(--font-size-demi-scale)
); /* 171px */
--font-size-introduction: var(--font-size-h4); /* 33px */
--font-size-h1: calc(var(--font-size-h2) * var(--font-size-scale)); /* 99px */
--font-size-h2: calc(var(--font-size-h3) * var(--font-size-scale)); /* 69px */
--font-size-h3: calc(var(--font-size-h4) * var(--font-size-scale)); /* 48px */
--font-size-h4: calc(var(--font-size-h5) * var(--font-size-scale)); /* 33px */
--font-size-h5: calc(var(--font-size-text)); /* 23px */
/* font weight */
--font-weight-text: 450;
--font-weight-semi-bold: 650;
--font-weight-bold: 700;
/* line height */
--line-height-text: 140%;
--line-height-heading: 120%;
/* margin */
--margin-heading: 1.5em;
--margin-text: 0.5em;
--margin-list: 0.25em;
--margin-right-p: calc(var(--padding-body) * 2);
/* linear gradient */
--linear-gradient-dotted: linear-gradient(
to right,
currentColor 50%,
transparent 50%
);
--linear-gradient-solid: linear-gradient(
to right,
currentColor 100%,
transparent 100%
);
--linear-gradient-background-size: 0.2em 0.09em;
}
/* scrollbar */
/* Works on Firefox */
body,
.layer {
scrollbar-width: thin;
scrollbar-color: var(--color-grey-dark) transparent;
}
/* Works on Chrome, Edge, and Safari */
body::-webkit-scrollbar,
.layer::-webkit-scrollbar,
table::-webkit-scrollbar {
width: 6px;
height: 6px;
}
body::-webkit-scrollbar-track,
.layer::-webkit-scrollbar-track,
table::-webkit-scrollbar-track {
background: transparent;
}
body::-webkit-scrollbar-thumb,
.layer::-webkit-scrollbar-thumb,
table::-webkit-scrollbar-thumb {
background-color: var(--color-grey-dark);
border-radius: 0px;
border: none;
}
figure {
width: 100%;
margin: 3rem 0; /*48px 0px */
}
img {
display: block;
width: 100%;
width: 100%;
}
.lazysrcset-ratio {
position: relative;
}
.lazysrcset-ratio > img {
display: block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.lazysrcset-ratio > img:after {
display: block;
width: 100%;
height: 0;
content: "";
}
/* html */
body,
html,
p {
margin: 0;
padding: 0;
font-family: var(--font-family-quattro);
}
body {
background-color: var(--color-grey-dark);
color: var(--color-grey-light);
font-size: var(--font-size-text);
width: 100vw;
height: 100vh;
overflow: hidden;
}
button {
background-color: transparent;
border: none;
display: inline-block;
font-size: inherit;
color: inherit;
}
a {
cursor: none;
}
hr {
color: inherit;
background-repeat: repeat-x;
background-image: var(--linear-gradient-dotted);
background-position: bottom;
background-size: var(--linear-gradient-background-size);
border: none;
height: 0.25rem;
margin: 2rem 0;
}
a,
button {
pointer-events: all;
}
/* texts */
@font-face {
font-family: "iA-Writer-duo-V";
font-style: normal;
src: url("/assets/fonts/iAWriterDuoV.woff2");
}
@font-face {
font-family: "iA-Writer-duo-V";
font-style: italic;
src: url("/assets/fonts/iAWriterDuoV-Italic.woff2");
}
@font-face {
font-family: "iA-Writer-Quattro-V";
font-style: normal;
src: url("/assets/fonts/iAWriterQuattroV.woff2");
}
@font-face {
font-family: "iA-Writer-Quattro-V";
font-style: italic;
src: url("/assets/fonts/iAWriterQuattroV-Italic.woff2");
}
h1,
h2,
h3,
h4,
h5 {
color: var(--color-grey-dark);
font-family: var(--font-family-duo);
font-style: normal;
font-variation-settings: "wght" var(--font-weight-bold);
line-height: var(--line-height-heading);
margin-top: var(--margin-heading);
margin-bottom: var(--margin-text);
overflow-wrap: break-word;
-webkit-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
}
h1 {
font-size: var(--font-size-h1);
margin-top: 0 !important;
}
h2 {
font-size: var(--font-size-h2);
}
h3 {
font-size: var(--font-size-h3);
}
h4 {
font-size: var(--font-size-h4);
}
h5 {
font-size: var(--font-size-h5);
}
button {
padding: 0;
cursor: none;
}
table th,
table td {
font-family: var(--font-family-duo);
font-size: var(--font-size-table);
}
table th {
font-variation-settings: "wght" var(--font-weight-semi-bold);
}
table td {
font-variation-settings: "wght" var(--font-weight-text);
}
#first-level a,
#first-level .note button {
text-shadow: -0.08em 0.08em 0 var(--color-grey-dark),
0px 0.08em 0 var(--color-grey-dark), 0.04em 0.08em 0 var(--color-grey-dark),
0.08em 0.08em 0 var(--color-grey-dark);
}
#second-level a,
#second-level .note button {
text-shadow: -0.08em 0.08em 0 var(--color-grey-light),
0px 0.08em 0 var(--color-grey-light),
0.04em 0.08em 0 var(--color-grey-light),
0.08em 0.08em 0 var(--color-grey-light);
}
#third-level a,
#third-level .note button {
text-shadow: -0.08em 0.08em 0 var(--color-grey-normal),
0px 0.08em 0 var(--color-grey-normal),
0.04em 0.08em 0 var(--color-grey-normal),
0.08em 0.08em 0 var(--color-grey-normal);
}
a:not(.layer-btn),
.note button {
color: inherit;
font-family: inherit;
font-variation-settings: inherit;
text-decoration: none;
background-repeat: repeat-x;
background-image: var(--linear-gradient-dotted);
background-position: bottom;
background-size: var(--linear-gradient-background-size);
}
a:hover:not(.layer-btn),
.note:hover button {
background-image: var(--linear-gradient-solid);
background-position: bottom;
background-size: 100% 0.09em;
}
a:not(figure a)::after {
content: "\00A0↗";
}
a:not([target], figure a)::after {
content: "\00A0→";
}
p {
margin-bottom: var(--margin-text);
margin-right: var(--margin-right-p);
font-size: var(--font-size-text);
font-variation-settings: "wght" var(--font-weight-text);
}
.column:not([style="--span:12"]) p {
margin-right: 0;
}
.column:not([style="--span:12"]) figure {
margin: 0;
}
blockquote footer,
figcaption,
.callout {
font-family: var(--font-family-duo);
}
blockquote,
blockquote footer {
font-size: var(--font-size-text);
font-synthesis: none;
}
blockquote {
font-style: italic;
font-variation-settings: "wght" var(--font-weight-semi-bold);
margin: 2rem 0 2rem 2.5rem;
}
blockquote footer {
font-style: normal;
font-variation-settings: "wght" var(--font-weight-text);
margin-top: var(--margin-text);
}
figcaption {
margin-top: var(--margin-text);
font-size: var(--font-size-caption);
}
.callout {
font-size: var(--font-size-introduction);
display: inline;
}
p.callout {
margin: var(--margin-heading) 0;
width: 100%;
display: block;
}
p.callout:first-child {
margin-top: 0;
}
/* note */
.note button::after {
content: "\00A0+";
display: inline-block;
}
.note.open button::after {
content: "";
transform: rotate(90deg);
margin-left: calc(var(--margin-text) / 1.25);
}
.details::after {
content: "";
margin-left: calc(var(--margin-text) / 1.25);
}
.details {
text-decoration: none !important;
opacity: 70%;
}
/* generic */
.hide {
display: none !important;
}
.unvisible {
color: rgba(0, 0, 0, 0);
}
/* cursor */
#cursor {
display: none;
position: absolute;
z-index: 999;
pointer-events: none;
background-color: var(--color-grey-dark);
}
#cursor span {
height: var(--font-size-introduction);
}
#cursor #target {
width: var(--font-size-introduction);
}
#cursor #text {
display: none;
background-color: var(--color-grey-light);
color: var(--color-grey-dark);
font-size: var(--font-size-caption);
align-items: center;
padding: 0 0.5rem;
}
#cursor.light {
background-color: var(--color-grey-light);
}
#cursor.light #text {
background-color: var(--color-grey-dark);
color: var(--color-grey-light);
}
/* layout */
.empty {
display: none;
}
#introduction {
position: fixed;
z-index: 999;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: var(--color-grey-dark);
padding: var(--padding-body);
}
/* logo */
.mobile,
.tablet {
display: none;
}
#introduction h1 {
font-size: var(--font-size-logo);
color: var(--color-grey-light);
hyphens: none;
}
#introduction p {
font-size: var(--font-size-introduction) !important;
}
.home p {
font-family: var(--font-family-duo);
font-size: var(--font-size-introduction);
margin-right: 0;
}
#first-level {
position: relative;
}
#logo {
color: var(--color-grey-light);
margin-top: 0;
margin-bottom: 6rem;
}
.layer {
box-sizing: border-box;
position: absolute;
top: 0;
left: 0;
width: 100vw;
padding: var(--padding-body);
background-color: var(--color-grey-dark);
color: var(--color-grey-light);
transition: left 0.5s ease-in-out, top 0.5s ease-in-out,
color 0.5s ease-in-out;
height: 100vh;
overflow-y: auto;
overflow-x: hidden;
}
#second-level {
background-color: var(--color-grey-light);
color: var(--color-grey-dark);
margin-left: var(--padding-body);
width: calc(100vw - var(--padding-body));
}
#third-level {
background-color: var(--color-grey-normal);
color: var(--color-grey-dark);
margin-left: calc(2 * var(--padding-body));
width: calc(100vw - 2 * (var(--padding-body)));
}
.out-screen {
left: 100%;
}
.layer-btn {
background-image: none;
position: absolute;
left: 0;
top: 0;
width: var(--padding-body);
height: 100%;
transition: color 0.2s ease-in-out;
color: rgba(0, 0, 0, 0);
}
.layer-btn::after {
content: "" !important;
}
table {
border-collapse: collapse;
margin: 2rem 0;
display: block;
width: calc(100vw - 2 * var(--padding-body));
overflow: auto;
}
table thead,
table tr:not(:last-child) {
background-repeat: repeat-x;
background-image: var(--linear-gradient-dotted);
background-position: bottom;
background-size: var(--linear-gradient-background-size);
}
table th,
table td {
padding: 1rem 3rem 1rem 0;
}
table tr th:last-child,
table tr td:last-child {
padding-right: 29rem;
}
.row {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 5vw;
margin-bottom: var(--margin-heading);
}
.row .column {
grid-column: span var(--span);
}
/* Collapsable section */
.collapsable__content {
height: 0;
overflow: hidden;
}
section.collapsable.open .collapsable__content {
height: auto;
}
section.collapsable button h4::after {
content: "▾";
/* content: "↓"; */
display: inline-block;
margin-left: 2rem;
}
section.collapsable.open button h4::after {
transform: rotate(180deg);
}
/* TABLETTE */
@media screen and (max-width: 820px) {
p {
margin-right: 0;
}
}
/* TABLET */
@media screen and (max-width: 1270px) {
.tablet {
display: inline;
}
}
/* MOBILE */
@media screen and (max-width: 640px) {
:root {
--padding-body: 10vw; /* 32px / 320px */
--layer-button-height: 3rem;
/* font size */
--font-size-scale: 1.2;
--font-size-demi-scale: 1;
--font-size-logo: calc(
calc(var(--font-size-h1) * var(--font-size-scale)) * 1.44
); /* 69px */
}
/* html */
.mobile {
display: inline;
}
body {
height: 100vh;
overflow: hidden;
}
hr {
margin: 1.5rem 0;
}
p {
margin-right: 0;
}
table th,
table td {
font-family: var(--font-family-duo);
}
table tr th:last-child,
table tr td:last-child {
padding-right: inherit;
}
.empty {
display: block;
height: var(--layer-button-height);
pointer-events: none;
}
/* layout */
#logo {
margin-bottom: 3rem;
}
.layer {
background-color: transparent;
margin-left: 0 !important;
width: 100% !important;
height: 100vh;
overflow-y: auto;
padding: 0;
background-color: transparent !important;
}
.layer:not(.current) {
height: 100vh;
overflow: hidden;
}
.layer:not(.current) .content-background {
z-index: -1;
}
.content-background > * {
opacity: 1;
transition: opacity 0.5s ease-in-out;
}
.layer:not(.current) .content-background > * {
opacity: 0;
}
.layer .content-background {
position: relative;
pointer-events: all;
padding: 0 var(--padding-body) 3rem var(--padding-body);
z-index: 2;
padding-bottom: 8rem;
}
#first-level .layer-btn {
background-color: var(--color-grey-dark);
color: var(--color-grey-light-rgba);
}
#first-level .layer-btn.unvisible {
color: var(--color-grey-light-rgba-unvisible);
}
#second-level {
background-color: transparent;
}
#second-level .layer-btn {
background-color: var(--color-grey-light);
color: var(--color-grey-dark-rgba);
}
#second-level .layer-btn.unvisible {
color: var(--color-grey-dark-rgba-unvisible);
}
#second-level .content-background {
background-color: var(--color-grey-light);
min-height: calc(100vh - var(--layer-button-height));
}
#second-level .layer-btn {
background-color: var(--color-grey-light);
}
#third-level .content-background {
background-color: var(--color-grey-normal);
min-height: calc(100vh - 2 * var(--layer-button-height));
}
.column {
margin-bottom: calc(var(--margin-text) * 2);
}
.out-screen {
top: 100vh;
left: 0;
}
.layer-btn {
position: sticky;
display: block;
top: 0;
background-color: inherit;
width: calc(100% - 2 * var(--padding-body));
height: calc(var(--layer-button-height) - 2 * 0.7rem);
font-size: var(--font-size-text);
text-decoration: none;
padding: 0.7rem var(--padding-body);
z-index: 2;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
p.callout {
margin: 2.16rem 0;
}
blockquote {
margin: 1.5rem 0 1.5rem 2rem;
}
.note {
display: inline;
}
.note button {
padding: 0;
}
.row {
display: block;
}
}