summaryrefslogtreecommitdiff
path: root/style.css
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-08 18:17:20 +0200
committerPaul Buetow <paul@buetow.org>2026-03-08 18:17:20 +0200
commit8a78337ea4dcb0b154bd1c754218ca01c8f9015d (patch)
tree2501c4ab66bffff5bc443553e769bedd9f035b33 /style.css
parenta37a644c48e824796989d532cefa564e7a3c89c1 (diff)
Update content for html
Diffstat (limited to 'style.css')
-rw-r--r--style.css437
1 files changed, 393 insertions, 44 deletions
diff --git a/style.css b/style.css
index 4d428726..9f6569b8 100644
--- a/style.css
+++ b/style.css
@@ -1,101 +1,450 @@
@font-face {
font-family: 'text';
- src: url("./text.ttf") format("truetype");
+ src: url('./text.ttf') format('truetype');
}
@font-face {
font-family: 'heading';
- src: url("./heading.ttf") format("truetype");
+ src: url('./heading.ttf') format('truetype');
}
@font-face {
font-family: 'code';
- src: url("./code.ttf") format("truetype");
+ src: url('./code.ttf') format('truetype');
}
@font-face {
font-family: 'handnotes';
- src: url("./handnotes.ttf") format("truetype");
+ src: url('./handnotes.ttf') format('truetype');
+}
+
+@font-face {
+ font-family: 'typewriter';
+ src: url('./typewriter.ttf') format('truetype');
+}
+
+:root {
+ --bg-void: #05030a;
+ --bg-deep: #0f0620;
+ --bg-electric: #1f0e3f;
+ --neon-cyan: #2ef7ff;
+ --neon-magenta: #ff2fa9;
+ --neon-lime: #8eff58;
+ --neon-gold: #ffd866;
+ --text-main: #d8fcff;
+ --text-muted: #9be9f4;
+ --panel-bg: rgba(6, 12, 31, 0.82);
+ --panel-border: rgba(46, 247, 255, 0.5);
+ --panel-shadow: 0 0 22px rgba(46, 247, 255, 0.24), 0 0 70px rgba(255, 47, 169, 0.14);
+ --rfx-scroll: 0px;
}
html {
- background-color: #f0f0f0;
- background-image: linear-gradient(45deg, #e6e6e6 25%, transparent 25%, transparent 75%, #e6e6e6 75%, #e6e6e6),
- linear-gradient(45deg, #e6e6e6 25%, transparent 25%, transparent 75%, #e6e6e6 75%, #e6e6e6);
- background-size: 20px 20px;
- background-position: 0 0, 10px 10px;
+ min-height: 100%;
+ background-color: var(--bg-void);
+ background-image:
+ radial-gradient(circle at 10% 18%, rgba(255, 47, 169, 0.3), rgba(255, 47, 169, 0) 32%),
+ radial-gradient(circle at 88% 12%, rgba(46, 247, 255, 0.26), rgba(46, 247, 255, 0) 30%),
+ radial-gradient(circle at 50% 120%, rgba(142, 255, 88, 0.12), rgba(142, 255, 88, 0) 45%),
+ linear-gradient(160deg, var(--bg-void), var(--bg-deep) 40%, var(--bg-electric));
+ background-size: cover;
+ color: var(--text-main);
}
body {
font-family: text, sans-serif;
- background: #ffffff;
- max-width: 1200px;
- padding: 20px;
- margin: 20px auto;
- border: 5px solid #dddddd;
- border-radius: 15px;
+ color: var(--text-main);
+ max-width: 980px;
+ margin: 1.3rem auto;
+ padding: 1.3rem 1.6rem;
+ border: 1px solid var(--panel-border);
+ border-radius: 12px;
+ background: var(--panel-bg);
+ box-shadow: var(--panel-shadow);
word-wrap: break-word;
+ overflow-x: hidden;
+ transform-origin: 50% 0%;
+ animation: body-boot 0.8s ease-out forwards;
+}
+
+body.rfx-boot {
+ opacity: 0.02;
+}
+
+html.rfx-ready body {
+ opacity: 1;
+}
+
+body > :not(#rfx-stars):not(.rfx-overlay-grid):not(.rfx-overlay-scanlines):not(.rfx-vignette) {
+ position: relative;
+ z-index: 2;
}
-h1, h2, h3 {
+#rfx-stars,
+.rfx-overlay-grid,
+.rfx-overlay-scanlines,
+.rfx-vignette {
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ pointer-events: none;
+}
+
+#rfx-stars {
+ z-index: 0;
+ overflow: hidden;
+}
+
+#rfx-stars .star {
+ position: absolute;
+ border-radius: 50%;
+ background: rgba(255, 255, 255, 0.9);
+ box-shadow: 0 0 6px rgba(46, 247, 255, 0.75), 0 0 12px rgba(255, 47, 169, 0.28);
+ animation: twinkle var(--twinkle-speed, 3.8s) ease-in-out infinite;
+}
+
+.rfx-overlay-grid {
+ z-index: 0;
+ opacity: 0.24;
+ background-image:
+ linear-gradient(rgba(46, 247, 255, 0.1) 1px, transparent 1px),
+ linear-gradient(90deg, rgba(46, 247, 255, 0.1) 1px, transparent 1px),
+ linear-gradient(0deg, rgba(255, 47, 169, 0.15), rgba(255, 47, 169, 0));
+ background-size: 48px 48px, 48px 48px, 100% 100%;
+ background-position:
+ 0 calc(var(--rfx-scroll) * -0.06),
+ calc(var(--rfx-scroll) * 0.03) 0,
+ 0 0;
+}
+
+.rfx-overlay-scanlines {
+ z-index: 1;
+ opacity: 0.2;
+ background: repeating-linear-gradient(
+ 0deg,
+ rgba(255, 255, 255, 0.06) 0px,
+ rgba(255, 255, 255, 0.02) 1px,
+ rgba(0, 0, 0, 0.2) 2px,
+ rgba(0, 0, 0, 0) 4px
+ );
+ mix-blend-mode: screen;
+ animation: scanline-shift 8s linear infinite;
+}
+
+.rfx-vignette {
+ z-index: 1;
+ background: radial-gradient(circle at 50% 40%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0.52) 100%);
+}
+
+h1,
+h2,
+h3 {
+ display: inline-block !important;
font-family: heading, serif;
- color: #6ca0dc;
+ font-weight: normal;
+ margin-top: 1.1rem;
+ margin-bottom: 0.2rem;
+ color: var(--neon-cyan);
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ text-shadow:
+ 0 0 4px rgba(46, 247, 255, 0.9),
+ 0 0 11px rgba(46, 247, 255, 0.7),
+ 0 0 22px rgba(255, 47, 169, 0.35);
+}
+
+h1 {
+ color: var(--neon-lime);
+}
+
+h1::after,
+h2::after,
+h3::after {
+ content: '';
+ display: block;
+ width: 100%;
+ height: 2px;
+ margin-top: 2px;
+ background: linear-gradient(90deg, rgba(255, 47, 169, 0.05), rgba(46, 247, 255, 0.9), rgba(255, 47, 169, 0.05));
+ box-shadow: 0 0 7px rgba(46, 247, 255, 0.6);
+}
+
+h1.glitch,
+h2.glitch,
+h3.glitch {
+ position: relative;
+ animation: glitch-shake 0.22s steps(2, end) 1;
+}
+
+h1.glitch::before,
+h1.glitch::after,
+h2.glitch::before,
+h2.glitch::after,
+h3.glitch::before,
+h3.glitch::after {
+ content: attr(data-rfx-text);
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ overflow: hidden;
+ pointer-events: none;
+}
+
+h1.glitch::before,
+h2.glitch::before,
+h3.glitch::before {
+ color: var(--neon-magenta);
+ transform: translate(-2px, 0);
+ opacity: 0.7;
+ clip-path: inset(0 0 48% 0);
+}
+
+h1.glitch::after,
+h2.glitch::after,
+h3.glitch::after {
+ color: var(--neon-cyan);
+ transform: translate(2px, 0);
+ opacity: 0.72;
+ clip-path: inset(58% 0 0 0);
+}
+
+p,
+span {
+ color: var(--text-main);
+ text-shadow: 0 0 7px rgba(46, 247, 255, 0.1);
+}
+
+p.header,
+p.footer {
+ font-family: handnotes, sans-serif;
+ letter-spacing: 0.04em;
+ color: var(--text-muted);
}
a {
- font-family: code, monospace;
+ color: var(--neon-cyan);
text-decoration: none;
- color: #8e44ad;
- padding: 0 0 0 0;
+ transition: color 0.18s ease-in-out, text-shadow 0.18s ease-in-out, transform 0.18s ease-in-out;
}
a:hover {
- text-decoration: underline;
+ color: var(--neon-gold);
+ text-shadow: 0 0 8px rgba(255, 216, 102, 0.8), 0 0 18px rgba(255, 47, 169, 0.45);
+ transform: translateY(-1px);
+}
+
+a.textlink {
+ display: inline-block;
+ margin: 0.05rem 0;
}
a.textlink:before {
- content: "⇒ ";
+ content: '>>';
+ color: var(--neon-magenta);
+ letter-spacing: -0.05em;
+ margin-right: 0.45rem;
+ text-shadow: 0 0 6px rgba(255, 47, 169, 0.8);
+}
+
+a.textlink.link-pulse {
+ animation: link-pulse 0.3s ease-out 1;
+}
+
+ul {
+ list-style: none;
+ padding-left: 0.7rem;
+ margin: 0.7rem 0;
+}
+
+li {
+ margin: 0.28rem 0 0.28rem 1rem;
+ color: var(--text-main);
+ text-shadow: 0 0 5px rgba(46, 247, 255, 0.26);
+}
+
+li:before {
+ content: '::';
+ color: var(--neon-lime);
+ margin-right: 0.45rem;
+ text-shadow: 0 0 6px rgba(142, 255, 88, 0.75);
}
.quote {
+ color: #a9f5ff;
font-style: italic;
+ text-shadow: 0 0 8px rgba(46, 247, 255, 0.45);
}
.quote:before {
- content: "« ";
- padding-left: 2px;
+ content: '[';
+ color: var(--neon-magenta);
}
.quote:after {
- content: " »";
- padding-right: 2px;
+ content: ']';
+ color: var(--neon-magenta);
}
-ul {
- list-style: none;
- margin: 0 0 0 0;
- padding: 0 0 0 0;
+pre {
+ font-family: code, monospace;
+ font-size: 0.95rem;
+ background: linear-gradient(180deg, rgba(5, 11, 30, 0.9), rgba(10, 17, 44, 0.92));
+ border: 1px solid rgba(46, 247, 255, 0.4);
+ border-left: 4px solid var(--neon-magenta);
+ color: #9afcff;
+ padding: 0.9rem;
+ border-radius: 8px;
+ overflow-x: auto;
+ box-shadow: inset 0 0 20px rgba(46, 247, 255, 0.12), 0 0 16px rgba(255, 47, 169, 0.18);
}
-li:before {
- content: "★";
- padding-right: 5px;
- color: #9b59b6;
+span.inlinecode {
+ font-family: code, monospace;
+ color: #a7f9ff;
+ border: 1px solid rgba(46, 247, 255, 0.45);
+ border-radius: 4px;
+ background: rgba(9, 20, 43, 0.88);
+ padding: 0.07rem 0.26rem;
+ box-shadow: inset 0 0 8px rgba(46, 247, 255, 0.2), 0 0 8px rgba(46, 247, 255, 0.13);
}
img {
- max-width: 90%;
+ max-width: 92%;
+ display: block;
+ margin: 1rem auto;
+ border: 1px solid rgba(46, 247, 255, 0.45);
+ border-radius: 8px;
+ box-shadow: 0 0 20px rgba(46, 247, 255, 0.28), 0 0 30px rgba(255, 47, 169, 0.18);
+ filter: saturate(1.12) contrast(1.08);
}
-pre {
- font-family: code, monospace;
- padding: 20px;
- border: 1px solid #dddddd;
- border-radius: 15px;
+.rfx-reveal {
+ opacity: 0;
+ transform: translateY(14px) scale(0.99);
+ animation: reveal-up 0.78s cubic-bezier(0.2, 0.72, 0.2, 1) forwards;
+ animation-delay: var(--rfx-delay, 0ms);
}
-span.inlinecode {
- font-family: code, monospace;
- border: 1px solid #999999;
- border-radius: 2px;
+.rfx-cursor-burst {
+ position: fixed;
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ border: 1px solid var(--neon-cyan);
+ box-shadow: 0 0 8px rgba(46, 247, 255, 0.95), 0 0 16px rgba(255, 47, 169, 0.6);
+ pointer-events: none;
+ z-index: 4;
+ transform: translate(-50%, -50%);
+ animation: cursor-burst 0.45s ease-out forwards;
+}
+
+@keyframes body-boot {
+ 0% {
+ transform: translateY(10px) scale(0.98);
+ filter: blur(3px);
+ }
+ 100% {
+ transform: translateY(0) scale(1);
+ filter: blur(0);
+ }
+}
+
+@keyframes twinkle {
+ 0%,
+ 100% {
+ opacity: 0.18;
+ transform: scale(1);
+ }
+ 50% {
+ opacity: 0.92;
+ transform: scale(1.28);
+ }
+}
+
+@keyframes scanline-shift {
+ 0% {
+ transform: translateY(0);
+ }
+ 100% {
+ transform: translateY(6px);
+ }
+}
+
+@keyframes glitch-shake {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 25% {
+ transform: translate(-1px, 0);
+ }
+ 50% {
+ transform: translate(1px, 0);
+ }
+ 75% {
+ transform: translate(-1px, 0);
+ }
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+@keyframes reveal-up {
+ 0% {
+ opacity: 0;
+ transform: translateY(14px) scale(0.99);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0) scale(1);
+ }
+}
+
+@keyframes cursor-burst {
+ 0% {
+ opacity: 1;
+ transform: translate(-50%, -50%) scale(0.5);
+ }
+ 100% {
+ opacity: 0;
+ transform: translate(-50%, -50%) scale(2.2);
+ }
+}
+
+@keyframes link-pulse {
+ 0% {
+ text-shadow: 0 0 0 rgba(255, 216, 102, 0);
+ }
+ 100% {
+ text-shadow: 0 0 14px rgba(255, 216, 102, 0.8);
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 0.4rem;
+ padding: 0.9rem;
+ border-radius: 9px;
+ }
+
+ h1,
+ h2,
+ h3 {
+ letter-spacing: 0.07em;
+ text-wrap: balance;
+ }
+}
+
+html.reduce-motion *,
+html.reduce-motion *::before,
+html.reduce-motion *::after {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0ms !important;
+}
+
+html.reduce-motion #rfx-stars .star:nth-child(n + 32) {
+ display: none;
}