/* YOGURT.CSS v1.1 */
/* HTML/CSS layout template from https://ribo.zone/free/layouts/ */
/* last updated: may 03, 2026 */
:root {
/* QUICK CUSTOMIZATION ZONE */
/* changing these variables will update the style of mutiple elements at once */
--pagewidth: 70vw; /* sets the width of the container in units of viewport width */
--pageheight: 80vh; /* sets the height of the container in units of viewport height */
--sidebarwidth: 150px; /* width of the icon and navigation on the side */
--outerborder: 2px dotted; /* width and style borders between sections */
--innerborder: 4px solid; /* width and style of decorative border within sections + between nav links */
--border-radius: 10px; /* border radius on the main section's header and footer */
--border-radius-2: calc(var(--sidebarwidth) / 2); /* some math to make the sidebar round no matter its width */
--text-color: darkslateblue;
--bg-1: white; /* main section background color */
--bg-2: aliceblue; /* used in the background pattern, hover effects, other flourishes */
--accent-1: thistle; /* header/footer color, even level headings */
--accent-2: lavenderblush; /* inner border color, odd level heading backgrounds */
--accent-3: palevioletred; /* links and some heading text */
--border-color: steelblue; /* outer border color */
--headingfont: "Arial";
--bodyfont: "Times New Roman";
}
html, body { margin: 0; padding: 0; }
::selection { color: var(--bg-1); background: var(--accent-3); }
*, *::before, *::after {
box-sizing: border-box;
scrollbar-color: var(--accent-1) var(--accent-2);
scrollbar-width: thin;
max-width: 100%;
}
body {
font-family: var(--bodyfont), serif;
color: var(--text-color);
background: linear-gradient(var(--bg-2) 50%, var(--bg-1) 50%), var(--bg-1); /* this sets the background of the whole page */
background-size: 6px 6px;
}
.container {
display: grid;
grid-template-areas:
"head ."
"main icon"
"main nav"
"foot .";
width: var(--pagewidth);
height: var(--pageheight);
margin: calc((100vh - var(--pageheight)) / 2) auto;
max-width: calc(70rem + var(--sidebarwidth)); /* this prevents the main section from getting too wide to read comfortable on large monitors */
grid-template-columns: auto var(--sidebarwidth);
grid-template-rows: min-content var(--sidebarwidth) auto min-content;
gap: 2px; /* the space between sections. if you change the --outerborder variable above, you'll probably will want to adjust this too */
}
header {
grid-area: head;
background: var(--accent-1);
outline: var(--outerborder) var(--border-color);
border-radius: var(--border-radius) var(--border-radius) 0 0;
font-family: var(--headingfont), sans-serif;
font-size: 125%;
text-align: center;
align-content: center;
justify-content: center;
text-wrap: balance;
overflow: hidden;
font-weight: bold;
letter-spacing: 1px;
}
header span {
display: block;
padding: 5px;
}
.container > figure {
grid-area: icon;
margin: 0; padding: 0;
}
.container > figure img {
width: 100%;
object-fit: cover;
aspect-ratio: 1 / 1;
border-radius: 0 var(--border-radius-2) 0 0;
border: var(--innerborder) var(--accent-2);
outline: var(--outerborder) var(--border-color);
}
nav {
grid-area: nav;
overflow: auto;
border: var(--innerborder) var(--accent-2);
outline: var(--outerborder) var(--border-color);
border-radius: 0 0 var(--border-radius-2) 0;
background: var(--bg-1);
align-self: start;
max-height: 100%;
line-height: 1;
scrollbar-width: none;
}
nav p {
font-family: var(--headingfont), sans-serif;
font-weight: bold;
margin: 0;
padding: 5px 8px;
background: var(--accent-1);
border-bottom: var(--innerborder) var(--accent-2);
line-height: 1;
}
nav p:not(:first-child) { border-top: var(--innerborder) var(--accent-2); }
nav ul { display: grid; list-style-type: none; margin: 0; padding: 0; overflow: visible; }
nav li:not(:first-child) { border-top: var(--innerborder) var(--accent-2); }
nav a { display: block; padding: 5px 8px; text-decoration: none; line-height: 1; }
nav a:hover, nav a:focus { background: var(--bg-2); }
main {
grid-area: main;
background: var(--bg-1);
border: var(--innerborder) var(--accent-2);
outline: var(--outerborder) var(--border-color);
overflow-Y: scroll;
max-height: 100%;
}
footer {
grid-area: foot;
background: var(--accent-1);
outline: var(--outerborder) var(--border-color);
border-radius: 0 0 var(--border-radius) var(--border-radius);
}
footer p { margin: 4px; font-size: 80%; padding: 0; text-align: center; }
footer a { color: inherit; }
h1, h2, h3, h4 {
font-family: var(--headingfont), sans-serif;
outline: 2px solid var(--bg-2);
padding: 0.5rem 1rem;
margin: 0;
line-height:1;
}
h1, h3 { background: var(--accent-2); color: var(--accent-3); }
h2, h4 { background: var(--accent-1); }
h2, h3, h4 { margin: 1rem 0; }
a {
position: relative;
color: var(--accent-3);
text-decoration-color: var(--border-color);
text-decoration-style: dotted;
}
a:hover, a:focus {
color: var(--border-color);
}
main a:hover, main a:focus {
top: 1px;
box-shadow: inset 0 -5px var(--bg-2);
}
p, ul, ol, dl, details, table, pre code, blockquote {
margin: 1rem;
}
p, li, dd, dt, cite, code {
line-height: 1.4;
}
sup, sub {
line-height: 0;
}
s, del {
text-decoration-color: var(--accent-1);
text-decoration-thickness: 2px;
}
ul, ol {
padding-left: 1rem;
}
ul ul, ol ul {
margin: 0;
}
li {
margin: 0;
}
dd {
margin-left: 1rem;
}
dd + dt {
margin-top: 0.5rem;
}
table {
border: 2px solid var(--bg-2);
width: fit-content;
max-width: 100%;
overflow-x: auto;
display: block;
}
th, td {
padding: 3px 5px;
}
th {
color: var(--section);
background: var(--accent-1);
border: 2px solid var(--link);
}
td {
background: var(--accent-2);
}
code {
display: inline-block;
border-radius: var(--border-radius);
padding: 2px 5px;
background: var(--bg-2);
}
pre code {
display: block;
overflow-x: auto;
}
details {
border: var(--outerborder) var(--border-color);
border-radius: var(--border-radius);
}
summary {
padding: 0.5rem;
cursor: pointer;
border-radius: var(--border-radius);
}
summary:hover {
background: var(--bg-2);
}
details[open] summary {
margin-bottom: -0.5rem;
border-radius: var(--border-radius) var(--border-radius) 0 0;
}
blockquote {
border-left: var(--innerborder) var(--accent-1);
border-radius: var(--border-radius);
padding: 0.25rem 0.5rem;
}
blockquote p, blockquote cite {
margin: 0.5rem;
display: block;
}
/* adjustments for mobile */
@media (max-width: 700px) {
.container {
grid-template-areas:
"head icon"
"nav nav"
"main main"
"foot foot";
width: calc(100% - 20px);
height: fit-content;
margin: 10px;
grid-template-columns: auto var(--sidebarwidth);
grid-template-rows: var(--sidebarwidth) var(--sidebarwidth) auto min-content;
}
nav { border-radius: 0; }
header { border-radius: var(--border-radius) 0 0 0; }
.container > figure img { border-radius: 0 var(--border-radius) 0 0; }
:root { --sidebarwidth: 125px; }
}