the home site for me: also iteration 3 or 4 of my site

feat: add better link styling and fix header links

dunkirk.sh f02db066 54ce34ef

verified
Changed files
+355 -334
sass
static
templates
+26 -5
sass/css/mods.css
···
padding: 0.625rem 0 0 0;
display: flex;
flex-direction: row;
-
gap: 0.25rem;
flex-wrap: wrap;
justify-content: flex-end;
align-items: center;
align-content: flex-end;
}
+
#nav-bar a {
+
text-decoration: none;
+
color: var(--link);
+
padding: 0 0.25rem;
+
border-radius: 0.25rem;
+
transition: all 120ms ease;
+
position: relative;
+
font-weight: 600;
+
}
+
+
#nav-bar a:hover {
+
color: var(--accent);
+
background-color: color-mix(in oklab, var(--accent) 15%, transparent);
+
}
+
+
#nav-bar a.active {
+
color: var(--link-visited);
+
background-color: color-mix(in oklab, var(--accent) 20%, transparent);
+
margin: 0 0.15rem;
+
}
+
#footer-container {
display: flex;
flex-direction: column;
···
float: left;
}
-
div > code,
+
div>code,
li code,
p code {
padding: 0.1em 0.3em 0.1em 0.3em;
···
opacity: 0;
transform: translateY(10px) scale(0.95);
}
+
100% {
opacity: 1;
transform: translateY(0) scale(1);
···
:root {
--nightshade-violet: oklch(0.27 0.0242 287.67);
--purple-night: oklch(27.58% 0.0203 289.13);
-
--red-crushed-grape: oklch(0.656 0.1189 296.74);
+
--red-crushed-grape: oklch(0.6829 0.1189 296.74);
--dark-crushed-grape: oklch(0.6261 0.1289 284.99);
-
--light-crushed-grape: oklch(73.48% 0.1008 284.99);
+
--light-crushed-grape: oklch(0.7727 0.094 296.74);
--reseda-green: oklch(62.33% 0.0475 126.94);
--earth-yellow: oklch(86.49% 0.018 73.05);
--sunset: oklch(0.86 0.0213 73.05);
···
--lavendar-breeze: oklch(91.06% 0.0223 290.76);
--purple-gray: oklch(25.63% 0.0002 290.76);
--alice-blue: oklch(95.38% 0.0118 239.91);
-
}
+
}
+310 -316
sass/css/suCSS.css
···
:root,
::backdrop {
-
/* set sans-serif & mono fonts */
-
--sans-font:
-
-apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
-
"Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
-
"Helvetica Neue", sans-serif;
-
--serif-font:
-
Superclarendon, "Bookman Old Style", "URW Bookman", "URW Bookman L",
-
"Georgia Pro", Georgia, serif;
-
--mono-font:
-
ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas,
-
"DejaVu Sans Mono", monospace;
-
--standard-border-radius: 5px;
+
/* set sans-serif & mono fonts */
+
--sans-font:
+
-apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
+
"Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
+
"Helvetica Neue", sans-serif;
+
--serif-font:
+
Superclarendon, "Bookman Old Style", "URW Bookman", "URW Bookman L",
+
"Georgia Pro", Georgia, serif;
+
--mono-font:
+
ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas,
+
"DejaVu Sans Mono", monospace;
+
--standard-border-radius: 5px;
-
/* default colors */
-
color-scheme: dark;
-
--bg: var(--purple-night);
-
--noise-strength: 0.15;
-
--bg-light: var(--ultra-violet);
-
--text: var(--lavendar-breeze);
-
--text-light: var(--pink-puree);
-
--text-dark: oklch(80.28% 0.0111 204.11);
-
--accent: var(--rose-quartz);
-
--accent-dark: var(--dark-crushed-grape);
-
--accent-text: var(--purple-gray);
-
--link: var(--light-crushed-grape);
-
--link-visited: var(--red-crushed-grape);
-
--border: var(--pink-puree);
-
--selection: color-mix(in oklab, var(--accent), var(--purple-night) 50%);
+
/* default colors */
+
color-scheme: dark;
+
--bg: var(--purple-night);
+
--noise-strength: 0.15;
+
--bg-light: var(--ultra-violet);
+
--text: var(--lavendar-breeze);
+
--text-light: var(--pink-puree);
+
--text-dark: oklch(80.28% 0.0111 204.11);
+
--accent: var(--rose-quartz);
+
--accent-dark: var(--dark-crushed-grape);
+
--accent-text: var(--purple-gray);
+
--link: var(--light-crushed-grape);
+
--link-visited: var(--red-crushed-grape);
+
--border: var(--pink-puree);
+
--selection: color-mix(in oklab, var(--accent), var(--purple-night) 50%);
}
::selection,
::-moz-selection {
-
color: var(--bg);
-
background: var(--selection);
+
color: var(--bg);
+
background: var(--selection);
}
/* chromium scrollbars */
::-webkit-scrollbar {
-
width: 8px;
-
height: 8px;
-
overflow: visible;
+
width: 8px;
+
height: 8px;
+
overflow: visible;
}
+
::-webkit-scrollbar-thumb {
-
background: var(--accent);
-
width: 12px;
+
background: var(--accent);
+
width: 12px;
}
+
::-webkit-scrollbar-track {
-
background: var(--bg-light);
+
background: var(--bg-light);
}
/* firefox scrollbars */
* {
-
scrollbar-color: var(--accent) var(--bg-light);
-
scrollbar-width: auto;
+
scrollbar-color: var(--accent) var(--bg-light);
+
scrollbar-width: auto;
}
html {
-
color-scheme: light dark;
-
font-family: var(--mono-font);
-
scroll-behavior: smooth;
+
color-scheme: light dark;
+
font-family: var(--mono-font);
+
scroll-behavior: smooth;
}
body {
-
min-height: 100svh;
-
color: var(--text);
-
background: var(--bg);
-
position: relative;
-
font-size: 1rem;
-
display: grid;
-
grid-template-columns: 1fr min(45rem, 90%) 1fr;
-
grid-template-rows: auto 1fr auto;
-
grid-row-gap: 0.625rem;
+
min-height: 100svh;
+
color: var(--text);
+
background: var(--bg);
+
position: relative;
+
font-size: 1rem;
+
display: grid;
+
grid-template-columns: 1fr min(45rem, 90%) 1fr;
+
grid-template-rows: auto 1fr auto;
+
grid-row-gap: 0.625rem;
}
-
body > * {
-
grid-column: 2;
+
+
body>* {
+
grid-column: 2;
}
-
body > footer {
-
color: var(--text-light);
-
font-size: 0.875;
+
body>footer {
+
color: var(--text-light);
+
font-size: 0.875;
}
/* Format headers */
h1 {
-
font-size: 2rem;
+
font-size: 2rem;
}
+
h2 {
-
font-size: 1.75rem;
+
font-size: 1.75rem;
}
+
h3 {
-
font-size: 1.5rem;
+
font-size: 1.5rem;
}
+
h4 {
-
font-size: 1.25rem;
+
font-size: 1.25rem;
}
+
h5 {
-
font-size: 1rem;
+
font-size: 1rem;
}
+
h6 {
-
font-size: 0.75rem;
+
font-size: 0.75rem;
}
h1,
···
h4,
h5,
h6 {
-
margin: 0.5em 0 0.5em 0;
-
padding: 0.22em 0.4em 0.22em 0.4em;
-
background-color: var(--accent);
-
border-bottom: 5px solid var(--bg-light);
-
border-radius: 0.2em 0.2em 0.27em 0.27em;
-
color: var(--accent-text);
-
width: fit-content;
+
margin: 0.5em 0 0.5em 0;
+
padding: 0.22em 0.4em 0.22em 0.4em;
+
background-color: var(--accent);
+
border-bottom: 5px solid var(--bg-light);
+
border-radius: 0.2em 0.2em 0.27em 0.27em;
+
color: var(--accent-text);
+
width: fit-content;
}
/* Fix line height when title wraps */
h1,
h2,
h3 {
-
line-height: 1.1;
+
line-height: 1.1;
}
@media only screen and (max-width: 720px) {
-
h1 {
-
font-size: 1.5rem;
-
}
-
h2 {
-
font-size: 1.25rem;
-
}
-
h3 {
-
font-size: 1rem;
-
}
-
h4 {
-
font-size: 0.75rem;
-
}
-
h5 {
-
font-size: 0.5rem;
-
}
-
h6 {
-
font-size: 0.25rem;
-
}
+
h1 {
+
font-size: 1.5rem;
+
}
+
+
h2 {
+
font-size: 1.25rem;
+
}
+
+
h3 {
+
font-size: 1rem;
+
}
+
+
h4 {
+
font-size: 0.75rem;
+
}
+
+
h5 {
+
font-size: 0.5rem;
+
}
+
+
h6 {
+
font-size: 0.25rem;
+
}
}
p {
-
margin: 1rem 0;
+
margin: 1rem 0;
}
/* format links */
a {
-
color: var(--link);
-
text-decoration: underline;
-
text-decoration-color: color-mix(
-
in oklab,
-
var(--link) 100%,
-
transparent 65%
-
);
-
text-decoration-thickness: 0.06em;
-
text-underline-offset: 0.14em;
-
transition:
-
color 120ms ease,
-
text-decoration-color 120ms ease,
-
text-underline-offset 120ms ease,
-
text-decoration-thickness 120ms ease;
+
color: var(--link);
+
text-decoration: none;
+
font-weight: 600;
+
transition: color 120ms ease;
}
a:visited {
-
color: var(--link-visited); /* deeper purple */
-
text-decoration-color: color-mix(
-
in oklab,
-
var(--link-visited) 100%,
-
transparent 55%
-
);
+
color: var(--link-visited);
}
a:hover,
a:focus-visible {
-
color: var(--accent-dark); /* bright purple */
-
text-decoration-thickness: 0.1em;
-
text-underline-offset: 0.18em;
-
text-decoration-color: var(--accent-dark);
-
outline: none;
+
color: var(--accent);
+
outline: none;
}
a:visited:hover,
a:visited:focus-visible {
-
color: var(--accent-dark);
-
text-decoration-color: var(--accent-dark);
+
color: var(--accent);
}
/* format lists */
ul {
-
list-style: none;
-
margin-top: 0.25rem;
-
margin-bottom: 0.25rem;
+
list-style: none;
+
margin-top: 0.25rem;
+
margin-bottom: 0.25rem;
}
ol {
-
list-style-type: decimal;
-
margin-top: 0.25rem;
-
margin-bottom: 0.25rem;
+
list-style-type: decimal;
+
margin-top: 0.25rem;
+
margin-bottom: 0.25rem;
}
li {
-
margin-bottom: 0.125rem;
+
margin-bottom: 0.125rem;
}
ul li::marker {
-
content: "* ";
-
color: var(--accent);
-
font-size: 1.1rem;
+
content: "* ";
+
color: var(--accent);
+
font-size: 1.1rem;
}
ol li::marker {
-
color: var(--accent);
+
color: var(--accent);
}
ol li:hover::marker {
-
font-weight: 700;
-
color: var(--link);
+
font-weight: 700;
+
color: var(--link);
}
/* Use flexbox to allow items to wrap, as needed */
-
header > nav ul,
-
header > nav ol {
-
display: flex;
-
flex-direction: row;
-
flex-wrap: wrap;
-
align-content: space-around;
-
justify-content: right;
-
list-style-type: none;
-
margin: 0.5rem 0 0 0;
-
padding: 0;
-
gap: 1rem;
+
header>nav ul,
+
header>nav ol {
+
display: flex;
+
flex-direction: row;
+
flex-wrap: wrap;
+
align-content: space-around;
+
justify-content: right;
+
list-style-type: none;
+
margin: 0.5rem 0 0 0;
+
padding: 0;
+
gap: 1rem;
}
/* List items are inline elements, make them behave more like blocks */
-
header > nav ul li,
-
header > nav ol li {
-
display: inline-block;
+
header>nav ul li,
+
header>nav ol li {
+
display: inline-block;
}
/* Consolidate box styling */
aside,
details,
progress {
-
background-color: var(--bg-light);
-
border-radius: var(--standard-border-radius);
+
background-color: var(--bg-light);
+
border-radius: var(--standard-border-radius);
}
aside {
-
font-size: 1rem;
-
width: 35%;
-
padding: 0 10px;
-
margin-inline-start: 10px;
-
float: right;
+
font-size: 1rem;
+
width: 35%;
+
padding: 0 10px;
+
margin-inline-start: 10px;
+
float: right;
}
+
*[dir="rtl"] aside {
-
float: left;
+
float: left;
}
/* make aside full-width on mobile */
@media only screen and (max-width: 720px) {
-
aside {
-
width: 100%;
-
float: none;
-
margin-inline-start: 0;
-
}
+
aside {
+
width: 100%;
+
float: none;
+
margin-inline-start: 0;
+
}
}
details {
-
padding: 0.5rem;
+
padding: 0.5rem;
}
summary {
-
cursor: pointer;
-
font-weight: bold;
-
word-break: break-all;
+
cursor: pointer;
+
font-weight: bold;
+
word-break: break-all;
}
-
details[open] > summary + * {
-
margin-top: 0;
+
details[open]>summary+* {
+
margin-top: 0;
}
-
details[open] > summary {
-
margin-bottom: 0.5rem;
+
details[open]>summary {
+
margin-bottom: 0.5rem;
}
-
details[open] > :last-child {
-
margin-bottom: 0;
+
details[open]> :last-child {
+
margin-bottom: 0;
}
/* Format tables */
table {
-
border-collapse: collapse;
-
margin: 1.5rem 0;
-
display: block;
-
overflow-x: auto;
-
white-space: nowrap;
+
border-collapse: collapse;
+
margin: 1.5rem 0;
+
display: block;
+
overflow-x: auto;
+
white-space: nowrap;
}
td,
th {
-
border: 1px solid var(--border);
-
text-align: start;
-
padding: 0.5rem;
+
border: 1px solid var(--border);
+
text-align: start;
+
padding: 0.5rem;
}
th {
-
background-color: var(--bg-light);
-
font-weight: bold;
+
background-color: var(--bg-light);
+
font-weight: bold;
}
tr:nth-child(even) {
-
background-color: var(--bg-light);
+
background-color: var(--bg-light);
}
table caption {
-
text-align: left;
-
font-weight: bold;
-
margin: 0 0 0.4rem 1rem;
+
text-align: left;
+
font-weight: bold;
+
margin: 0 0 0.4rem 1rem;
}
/* format forms */
fieldset {
-
border: 1px dashed var(--accent);
-
border-radius: var(--standard-border-radius);
+
border: 1px dashed var(--accent);
+
border-radius: var(--standard-border-radius);
}
-
fieldset > legend {
-
color: var(--accent);
+
fieldset>legend {
+
color: var(--accent);
}
textarea,
···
input,
button,
.button {
-
font-size: inherit;
-
font-family: inherit;
-
padding: 0.25rem;
-
border-radius: var(--standard-border-radius);
-
box-shadow: none;
-
max-width: 100%;
-
display: inline-block;
+
font-size: inherit;
+
font-family: inherit;
+
padding: 0.25rem;
+
border-radius: var(--standard-border-radius);
+
box-shadow: none;
+
max-width: 100%;
+
display: inline-block;
}
textarea,
select,
input {
-
color: var(--text);
-
background-color: var(--bg);
-
border: 1px dashed var(--border);
+
color: var(--text);
+
background-color: var(--bg);
+
border: 1px dashed var(--border);
}
label {
-
display: block;
+
display: block;
}
fieldset label {
-
margin: 0 0 0.3rem 0;
+
margin: 0 0 0.3rem 0;
}
textarea {
-
max-width: 43.5rem;
-
resize: both;
+
max-width: 43.5rem;
+
resize: both;
}
textarea:not([cols]) {
-
width: 100%;
+
width: 100%;
}
@media only screen and (max-width: 720px) {
-
textarea,
-
select,
-
input {
-
width: 100%;
-
}
+
+
textarea,
+
select,
+
input {
+
width: 100%;
+
}
}
/* format buttons */
···
input[type="reset"],
input[type="button"],
label[type="button"] {
-
border: 1px solid var(--accent);
-
background-color: var(--accent);
-
color: var(--accent-text);
-
padding: 0.5rem 0.9rem;
-
text-decoration: none;
-
line-height: normal;
+
border: 1px solid var(--accent);
+
background-color: var(--accent);
+
color: var(--accent-text);
+
padding: 0.5rem 0.9rem;
+
text-decoration: none;
+
line-height: normal;
}
.button[aria-disabled="true"],
···
textarea:disabled,
select:disabled,
button[disabled] {
-
cursor: not-allowed;
-
background-color: var(--bg-light);
-
border-color: var(--bg-light);
-
color: var(--text-light);
+
cursor: not-allowed;
+
background-color: var(--bg-light);
+
border-color: var(--bg-light);
+
color: var(--text-light);
}
input[type="range"] {
-
padding: 0;
-
color: var(--accent);
+
padding: 0;
+
color: var(--accent);
}
abbr[title] {
-
cursor: help;
-
text-decoration-line: underline;
-
text-decoration-style: dotted;
+
cursor: help;
+
text-decoration-line: underline;
+
text-decoration-style: dotted;
}
button:enabled:hover,
···
input[type="reset"]:enabled:hover,
input[type="button"]:enabled:hover,
label[type="button"]:hover {
-
background-color: var(--accent-dark);
-
border-color: var(--accent-dark);
-
cursor: pointer;
+
background-color: var(--accent-dark);
+
border-color: var(--accent-dark);
+
cursor: pointer;
}
.button:focus-visible,
button:focus-visible:where(:enabled),
-
input:enabled:focus-visible:where(
-
[type="submit"],
-
[type="reset"],
-
[type="button"]
-
) {
-
outline: 2px solid var(--accent);
-
outline-offset: 1px;
+
input:enabled:focus-visible:where([type="submit"],
+
[type="reset"],
+
[type="button"]) {
+
outline: 2px solid var(--accent);
+
outline-offset: 1px;
}
/* checkbox and radio button style */
input[type="checkbox"],
input[type="radio"] {
-
vertical-align: middle;
-
position: relative;
-
width: 14px;
-
height: 14px;
+
vertical-align: middle;
+
position: relative;
+
width: 14px;
+
height: 14px;
}
-
input[type="checkbox"] + label,
-
input[type="radio"] + label {
-
display: inline-block;
+
input[type="checkbox"]+label,
+
input[type="radio"]+label {
+
display: inline-block;
}
input[type="radio"] {
-
border-radius: 100%;
+
border-radius: 100%;
}
input[type="checkbox"]:checked,
input[type="radio"]:checked {
-
background-color: var(--accent);
+
background-color: var(--accent);
}
@media only screen and (max-width: 720px) {
-
textarea,
-
select,
-
input {
-
width: 100%;
-
}
+
+
textarea,
+
select,
+
input {
+
width: 100%;
+
}
}
input[type="color"] {
-
height: 2.5rem;
-
padding: 0.2rem;
+
height: 2.5rem;
+
padding: 0.2rem;
}
input[type="file"] {
-
border: 0;
+
border: 0;
}
/* misc body elements */
hr {
-
border: 1px dashed var(--accent);
-
margin: 0.5rem 0 0.5rem 0;
+
border: 1px dashed var(--accent);
+
margin: 0.5rem 0 0.5rem 0;
}
mark {
-
padding: 0 0.25em 0 0.25em;
-
border-radius: var(--standard-border-radius);
-
background-color: var(--accent);
-
color: var(--bg);
+
padding: 0 0.25em 0 0.25em;
+
border-radius: var(--standard-border-radius);
+
background-color: var(--accent);
+
color: var(--bg);
}
mark a {
-
color: var(--link);
+
color: var(--link);
}
img,
video,
iframe[src^="https://www.youtube-nocookie.com"],
-
iframe[src^="https://www.youtube.com"]
-
{
-
max-width: 90%;
-
margin: 1rem;
-
height: auto;
-
border: dashed 2px var(--accent);
-
border-radius: 15px;
-
opacity: 0.95;
+
iframe[src^="https://www.youtube.com"] {
+
max-width: 90%;
+
margin: 1rem;
+
height: auto;
+
border: dashed 2px var(--accent);
+
border-radius: 15px;
+
opacity: 0.95;
}
figure {
-
margin: 0;
-
display: block;
-
overflow-x: auto;
+
margin: 0;
+
display: block;
+
overflow-x: auto;
}
figcaption {
-
text-align: left;
-
font-size: 0.875rem;
-
color: var(--text-light);
-
margin: 0 0 1rem 1rem;
+
text-align: left;
+
font-size: 0.875rem;
+
color: var(--text-light);
+
margin: 0 0 1rem 1rem;
}
blockquote {
-
margin: 0 0 0 1.25rem;
-
padding: 0.5rem 0 0 0.5rem;
-
border-inline-start: 0.375rem solid var(--accent);
-
color: var(--text-light);
-
font-style: italic;
+
margin: 0 0 0 1.25rem;
+
padding: 0.5rem 0 0 0.5rem;
+
border-inline-start: 0.375rem solid var(--accent);
+
color: var(--text-light);
+
font-style: italic;
}
p:has(cite) {
-
text-align: right;
-
font-size: 0.875rem;
-
color: var(--text-light);
-
font-weight: 600;
+
text-align: right;
+
font-size: 0.875rem;
+
color: var(--text-light);
+
font-weight: 600;
}
cite::before {
-
content: "— ";
+
content: "— ";
}
dt {
-
color: var(--text-light);
+
color: var(--text-light);
}
code,
···
pre span,
kbd,
samp {
-
font-family: var(--mono-font);
+
font-family: var(--mono-font);
}
pre {
-
border: 1px solid var(--accent);
-
max-height: 30rem;
-
padding: 0.625rem;
-
overflow-x: auto;
-
font-style: monospace;
+
border: 1px solid var(--accent);
+
max-height: 30rem;
+
padding: 0.625rem;
+
overflow-x: auto;
+
font-style: monospace;
}
p code,
li code,
div code {
-
padding: 0 0.125rem 0 0.125rem;
-
border-radius: 3px;
-
color: var(--bg);
-
background-color: var(--text);
+
padding: 0 0.125rem 0 0.125rem;
+
border-radius: 3px;
+
color: var(--bg);
+
background-color: var(--text);
}
pre code {
-
padding: 0;
-
border-radius: 0;
-
color: inherit;
-
background-color: inherit;
+
padding: 0;
+
border-radius: 0;
+
color: inherit;
+
background-color: inherit;
}
iframe {
-
max-width: 90%;
+
max-width: 90%;
}
/* progress bars */
progress {
-
width: 100%;
+
width: 100%;
}
progress:indeterminate {
-
background-color: var(--bg-light);
+
background-color: var(--bg-light);
}
progress::-webkit-progress-bar {
-
border-radius: var(--standard-border-radius);
-
background-color: var(--bg-light);
+
border-radius: var(--standard-border-radius);
+
background-color: var(--bg-light);
}
progress::-webkit-progress-value {
-
border-radius: var(--standard-border-radius);
-
background-color: var(--accent);
+
border-radius: var(--standard-border-radius);
+
background-color: var(--accent);
}
progress::-moz-progress-bar {
-
border-radius: var(--standard-border-radius);
-
background-color: var(--accent);
-
transition-property: width;
-
transition-duration: 0.3s;
+
border-radius: var(--standard-border-radius);
+
background-color: var(--accent);
+
transition-property: width;
+
transition-duration: 0.3s;
}
progress:indeterminate::-moz-progress-bar {
-
background-color: var(--bg-light);
+
background-color: var(--bg-light);
}
dialog {
-
max-width: 40rem;
-
margin: auto;
+
max-width: 40rem;
+
margin: auto;
}
dialog::backdrop {
-
background-color: var(--bg);
-
opacity: 0.8;
+
background-color: var(--bg);
+
opacity: 0.8;
}
@media only screen and (max-width: 720px) {
-
dialog {
-
max-width: 100%;
-
margin: auto 1em;
-
}
+
dialog {
+
max-width: 100%;
+
margin: auto 1em;
+
}
}
/* superscript & subscript */
/* prevent scripts from affecting line-height. */
sup,
sub {
-
vertical-align: baseline;
-
position: relative;
+
vertical-align: baseline;
+
position: relative;
}
sup {
-
top: -0.4em;
+
top: -0.4em;
}
sub {
-
top: 0.3em;
-
}
+
top: 0.3em;
+
}
+1
static/badges/MadeByAHuman_04.svg
···
+
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="88" height="31" viewBox="0 0 88 31"><g id="Background"><rect width="88" height="31" fill="#b39ddb"/></g><g id="_3D"><polygon points="88 0 88 31 0 31 2 29 86 29 86 2 88 0" fill="#263238" opacity=".5"/><polygon points="88 0 86 2 2 2 2 29 0 31 0 0 88 0" fill="#fff" opacity=".5"/></g><g id="Text"><path d="m40.86,9.65c0-1.08-.59-1.64-1.48-1.64s-1.49.56-1.49,1.64v3.31h-1.21v-3.31c0-1.08-.59-1.64-1.48-1.64s-1.49.56-1.49,1.64v3.31h-1.22v-5.92h1.22v.68c.4-.48,1.04-.77,1.75-.77.93,0,1.72.4,2.13,1.17.37-.72,1.2-1.17,2.06-1.17,1.39,0,2.44.87,2.44,2.52v3.49h-1.21v-3.31Z" fill="#263238"/><path d="m46.01,6.94c1,0,1.69.47,2.05.96v-.86h1.24v5.92h-1.24v-.88c-.38.5-1.08.98-2.07.98-1.54,0-2.77-1.26-2.77-3.08s1.24-3.03,2.79-3.03Zm.26,1.06c-.91,0-1.79.69-1.79,1.97s.88,2.02,1.79,2.02,1.79-.72,1.79-2-.87-1.99-1.79-1.99Z" fill="#263238"/><path d="m53.31,6.94c.77,0,1.59.37,2.04.92v-2.86h1.24v7.95h-1.24v-.89c-.38.54-1.08.99-2.05.99-1.56,0-2.79-1.26-2.79-3.08s1.24-3.03,2.8-3.03Zm.25,1.06c-.91,0-1.79.69-1.79,1.97s.88,2.02,1.79,2.02,1.79-.72,1.79-2-.87-1.99-1.79-1.99Z" fill="#263238"/><path d="m60.73,13.05c-1.7,0-2.95-1.2-2.95-3.06s1.2-3.05,2.95-3.05,2.88,1.17,2.88,2.91c0,.2-.01.4-.04.6h-4.52c.09.98.78,1.57,1.69,1.57.75,0,1.17-.37,1.4-.83h1.32c-.33,1.03-1.27,1.86-2.72,1.86Zm-1.68-3.59h3.28c-.02-.91-.74-1.49-1.65-1.49-.83,0-1.49.56-1.62,1.49Z" fill="#263238"/><path d="m70.89,6.94c1.57,0,2.78,1.2,2.78,3.03s-1.22,3.08-2.78,3.08c-.98,0-1.68-.44-2.06-.96v.86h-1.22v-7.95h1.22v2.91c.39-.54,1.13-.98,2.06-.98Zm-.27,1.06c-.91,0-1.79.72-1.79,1.99s.88,2,1.79,2,1.8-.74,1.8-2.02-.88-1.97-1.8-1.97Z" fill="#263238"/><path d="m78.95,7.04h1.27l-3.63,8.7h-1.27l1.2-2.88-2.33-5.82h1.36l1.67,4.51,1.73-4.51Z" fill="#263238"/><path d="m34.48,17.94c1,0,1.69.47,2.05.96v-.86h1.24v5.92h-1.24v-.88c-.38.5-1.08.98-2.07.98-1.54,0-2.77-1.26-2.77-3.08s1.24-3.03,2.79-3.03Zm.26,1.06c-.91,0-1.79.69-1.79,1.97s.88,2.02,1.79,2.02,1.79-.72,1.79-2-.87-1.99-1.79-1.99Z" fill="#263238"/><path d="m42.17,16.01h1.22v2.72c.41-.49,1.07-.78,1.84-.78,1.32,0,2.35.87,2.35,2.52v3.49h-1.21v-3.31c0-1.08-.59-1.64-1.48-1.64s-1.49.56-1.49,1.64v3.31h-1.22v-7.95Z" fill="#263238"/><path d="m54.5,23.96h-1.22v-.71c-.39.5-1.05.79-1.75.79-1.39,0-2.44-.87-2.44-2.52v-3.48h1.21v3.3c0,1.08.59,1.64,1.48,1.64s1.49-.56,1.49-1.64v-3.3h1.22v5.92Z" fill="#263238"/><path d="m64.5,20.65c0-1.08-.59-1.64-1.48-1.64s-1.49.56-1.49,1.64v3.31h-1.21v-3.31c0-1.08-.59-1.64-1.48-1.64s-1.49.56-1.49,1.64v3.31h-1.22v-5.92h1.22v.68c.4-.48,1.04-.77,1.75-.77.93,0,1.72.4,2.13,1.17.37-.72,1.2-1.17,2.06-1.17,1.39,0,2.44.87,2.44,2.52v3.49h-1.21v-3.31Z" fill="#263238"/><path d="m69.65,17.94c1,0,1.69.47,2.05.96v-.86h1.24v5.92h-1.24v-.88c-.38.5-1.08.98-2.07.98-1.54,0-2.77-1.26-2.77-3.08s1.24-3.03,2.79-3.03Zm.26,1.06c-.91,0-1.79.69-1.79,1.97s.88,2.02,1.79,2.02,1.79-.72,1.79-2-.87-1.99-1.79-1.99Z" fill="#263238"/><path d="m78.74,20.65c0-1.08-.59-1.64-1.48-1.64s-1.49.56-1.49,1.64v3.31h-1.22v-5.92h1.22v.68c.4-.48,1.05-.77,1.76-.77,1.39,0,2.43.87,2.43,2.52v3.49h-1.21v-3.31Z" fill="#263238"/></g><g id="Image"><circle cx="15.37" cy="15.5" r="10.3" fill="#ffcc80" stroke="#263238" stroke-miterlimit="10" stroke-width="1.5"/><rect x="7.55" y="13.8" width="2.54" height="3.4" rx="1.27" ry="1.27" fill="#263238"/><rect x="20.65" y="13.8" width="2.54" height="3.4" rx="1.27" ry="1.27" fill="#263238"/><path d="m18.44,15.5c0,1.7-1.37,3.07-3.07,3.07s-3.07-1.37-3.07-3.07" fill="none" stroke="#263238" stroke-miterlimit="10" stroke-width="1.5"/></g></svg>
+1 -2
templates/footer.html
···
<p class="badge-row">
<a href="https://512kb.club"><img src="/badges/green-team.gif"
alt="a proud member of the green team of 512KB club" /></a>
-
<a href="https://yesterweb.org/no-to-web3/index.html?s=09"><img src="/badges/no-web3.gif"
-
alt="say no to web3, keep the web free" /></a>
<a href="https://hackclub.com"><img src="/badges/hackclub.png" alt="linux powered" /></a>
+
<a href="https://dunkirk.sh/ai"><img src="/badges/MadeByAHuman_04.svg" alt="made by a human" /></a>
<a href="https://tangled.org"><img src="/badges/tangled.png" alt="tangled beta" /></a>
<a href="https://www.netscape-communications.com/download/"><img src="/badges/get-netscape.gif"
alt="get netscape" /></a>
+17 -11
templates/header.html
···
-
{% if config.extra.header_nav %} {% if not current_url %} {% set current_url =
-
"" %} {% endif %}
+
{% if config.extra.header_nav %}
+
{% if page %}
+
{% set active_path = page.path | trim_end_matches(pat="/") %}
+
{% elif section %}
+
{% set active_path = section.path | trim_end_matches(pat="/") %}
+
{% elif current_path %}
+
{% set active_path = current_path | trim_end_matches(pat="/") %}
+
{% else %}
+
{% set active_path = "" %}
+
{% endif %}
<nav id="nav-bar">
-
{% for nav_item in config.extra.header_nav %}
-
<a
-
href="{{ nav_item.url }}"
-
class="{% if nav_item.url == current_url %}active{% endif %} text-glow"
-
>
-
{{ nav_item.name }}
-
</a>
-
{% endfor %}
+
{% for nav_item in config.extra.header_nav %}
+
<a href="{{ nav_item.url }}"
+
class="{% if nav_item.url == active_path or (nav_item.url == '/' and active_path == '') %}active{% endif %}">
+
{{ nav_item.name }}
+
</a>
+
{% endfor %}
</nav>
-
{% endif %}
+
{% endif %}