MediaWiki:Common.css: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
/********************************* | /********************************* | ||
* 70s Prog / Psych Sunburst BG | * 70s Prog / Psych Sunburst BG | ||
* (Accessible / readable version) | |||
*********************************/ | *********************************/ | ||
| Line 18: | Line 19: | ||
} | } | ||
/* | /* MAIN CONTENT: solid dark “paper” card for readability */ | ||
body.prog70s-bg #content, | body.prog70s-bg #content, | ||
body.prog70s-bg .mw-body { | body.prog70s-bg .mw-body { | ||
background: rgba(6, | background: rgba(8, 6, 18, 0.98); /* almost opaque */ | ||
color: #f7f7fb; | |||
border-radius: 14px; | border-radius: 14px; | ||
box-shadow: | box-shadow: | ||
0 0 0 1px rgba(255, 255, 255, 0.03), | 0 0 0 1px rgba(255, 255, 255, 0.03), | ||
0 | 0 24px 60px rgba(0, 0, 0, 0.9); | ||
} | |||
/* Headings: high contrast, slightly warm */ | |||
body.prog70s-bg .mw-body h1, | |||
body.prog70s-bg .mw-body h2, | |||
body.prog70s-bg .mw-body h3, | |||
body.prog70s-bg .mw-body h4 { | |||
color: #ffe6c7; | |||
} | |||
/* Links: readable but still psychedelic */ | |||
body.prog70s-bg .mw-body a { | |||
color: #ffb347; | |||
} | |||
body.prog70s-bg .mw-body a:visited { | |||
color: #ff80c8; | |||
} | |||
body.prog70s-bg .mw-body a:hover { | |||
color: #ffe28a; | |||
} | |||
/* Tables, infoboxes, etc. */ | |||
body.prog70s-bg .wikitable, | |||
body.prog70s-bg table { | |||
background-color: rgba(12, 10, 24, 0.98); | |||
border-color: rgba(255, 255, 255, 0.08); | |||
} | |||
body.prog70s-bg .wikitable th, | |||
body.prog70s-bg .wikitable td { | |||
border-color: rgba(255, 255, 255, 0.08); | |||
} | } | ||
| Line 34: | Line 69: | ||
} | } | ||
/* Rotating conic sunburst – | /* Rotating conic sunburst – now pushed to edges & dimmed */ | ||
body.prog70s-bg::before { | body.prog70s-bg::before { | ||
content: ""; | content: ""; | ||
position: fixed; | position: fixed; | ||
inset: -40vh; | inset: -40vh; | ||
z-index: - | z-index: -3; | ||
pointer-events: none; | pointer-events: none; | ||
background: | background: | ||
radial-gradient(circle at 50% 50%, rgba(0, 0, 0, 0.9), transparent | radial-gradient(circle at 50% 50%, rgba(0, 0, 0, 0.9), transparent 55%), | ||
conic-gradient( | conic-gradient( | ||
from 0deg, | from 0deg, | ||
| Line 57: | Line 92: | ||
); | ); | ||
filter: blur( | filter: blur(2px) saturate(1.1); | ||
mix-blend-mode: screen; | mix-blend-mode: screen; | ||
animation: prog70s-spin 80s linear infinite; | animation: prog70s-spin 80s linear infinite; | ||
opacity: 0.85 | opacity: 0.35; /* was ~0.85 – MUCH softer */ | ||
} | } | ||
/* Horizontal | /* Horizontal bands: softer, mostly in the periphery */ | ||
body.prog70s-bg::after { | body.prog70s-bg::after { | ||
content: ""; | content: ""; | ||
position: fixed; | position: fixed; | ||
inset: -20vh; | inset: -20vh; | ||
z-index: - | z-index: -4; | ||
pointer-events: none; | pointer-events: none; | ||
| Line 74: | Line 109: | ||
linear-gradient( | linear-gradient( | ||
0deg, | 0deg, | ||
rgba(0, 0, 0, 0. | rgba(0, 0, 0, 0.95), | ||
rgba(0, 0, 0, 0. | rgba(0, 0, 0, 0.65), | ||
rgba(0, 0, 0, 0. | rgba(0, 0, 0, 0.95) | ||
), | ), | ||
repeating-linear-gradient( | repeating-linear-gradient( | ||
| Line 95: | Line 130: | ||
prog70s-bands-shift 55s ease-in-out infinite alternate, | prog70s-bands-shift 55s ease-in-out infinite alternate, | ||
prog70s-bands-wobble 18s ease-in-out infinite alternate; | prog70s-bands-wobble 18s ease-in-out infinite alternate; | ||
opacity: 0.9 | opacity: 0.25; /* was ~0.9 */ | ||
} | } | ||
/* “Off” state when user toggles it */ | /* “Off” state when user toggles it */ | ||
body.prog70s-bg.prog70s-off::before, | body.prog70s-bg.prog70s-off::before, | ||
body.prog70s-bg.prog70s-off::after { | body.prog70s-bg.prog70s-off::after, | ||
body.prog70s-bg.prog70s-off #prog70s-grain { | |||
opacity: 0; | opacity: 0; | ||
transition: opacity 0.6s ease-out; | transition: opacity 0.6s ease-out; | ||
} | } | ||
/* | /* Background stays plain dark when off */ | ||
body.prog70s-bg.prog70s-off { | body.prog70s-bg.prog70s-off { | ||
background: #050009; | background: #050009; | ||
| Line 113: | Line 149: | ||
@keyframes prog70s-spin { | @keyframes prog70s-spin { | ||
0% { | 0% { | ||
transform: rotate(0deg) scale(1. | transform: rotate(0deg) scale(1.04); | ||
} | } | ||
50% { | 50% { | ||
transform: rotate(180deg) scale(1. | transform: rotate(180deg) scale(1.06); | ||
} | } | ||
100% { | 100% { | ||
transform: rotate(360deg) scale(1. | transform: rotate(360deg) scale(1.04); | ||
} | } | ||
} | } | ||
| Line 133: | Line 169: | ||
} | } | ||
/* Gentle wobble | /* Gentle wobble */ | ||
@keyframes prog70s-bands-wobble { | @keyframes prog70s-bands-wobble { | ||
0% { | 0% { | ||
| Line 140: | Line 176: | ||
} | } | ||
50% { | 50% { | ||
transform: translate3d(0, -1 | transform: translate3d(0, -1%, 0) skewY(0.7deg); | ||
filter: hue-rotate( | filter: hue-rotate(18deg); | ||
} | } | ||
100% { | 100% { | ||
transform: translate3d(0, 1 | transform: translate3d(0, 1%, 0) skewY(-0.7deg); | ||
filter: hue-rotate( | filter: hue-rotate(36deg); | ||
} | } | ||
} | } | ||
/* | /* Grain overlay – very subtle */ | ||
body.prog70s-bg #prog70s-grain { | body.prog70s-bg #prog70s-grain { | ||
pointer-events: none; | pointer-events: none; | ||
position: fixed; | position: fixed; | ||
inset: -20vh; | inset: -20vh; | ||
z-index: - | z-index: -2; | ||
opacity: 0. | opacity: 0.08; | ||
mix-blend-mode: soft-light; | mix-blend-mode: soft-light; | ||
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E"); | background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E"); | ||
| Line 173: | Line 209: | ||
cursor: pointer; | cursor: pointer; | ||
background: radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0. | background: radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0.12), rgba(0, 0, 0, 0.9)); | ||
color: #ffe8ff; | color: #ffe8ff; | ||
font-size: 0.78rem; | font-size: 0.78rem; | ||
| Line 182: | Line 218: | ||
box-shadow: | box-shadow: | ||
0 0 0 1px rgba(0, 0, 0, 0.9), | 0 0 0 1px rgba(0, 0, 0, 0.9), | ||
0 0 | 0 0 20px rgba(255, 0, 150, 0.35); | ||
backdrop-filter: blur(5px); | backdrop-filter: blur(5px); | ||
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | ||
| Line 191: | Line 227: | ||
box-shadow: | box-shadow: | ||
0 0 0 1px rgba(0, 0, 0, 0.9), | 0 0 0 1px rgba(0, 0, 0, 0.9), | ||
0 0 | 0 0 28px rgba(0, 240, 255, 0.55); | ||
} | } | ||
Revision as of 06:23, 26 November 2025
/*********************************
* 70s Prog / Psych Sunburst BG
* (Accessible / readable version)
*********************************/
:root {
--prog70s-bg: #050009;
--prog70s-color-a: #ff9a00;
--prog70s-color-b: #ff005c;
--prog70s-color-c: #7b5cff;
--prog70s-color-d: #00f0ff;
}
/* Turned on from Common.js */
body.prog70s-bg {
background: var(--prog70s-bg);
color: #f5f5f5;
overflow-x: hidden;
}
/* MAIN CONTENT: solid dark “paper” card for readability */
body.prog70s-bg #content,
body.prog70s-bg .mw-body {
background: rgba(8, 6, 18, 0.98); /* almost opaque */
color: #f7f7fb;
border-radius: 14px;
box-shadow:
0 0 0 1px rgba(255, 255, 255, 0.03),
0 24px 60px rgba(0, 0, 0, 0.9);
}
/* Headings: high contrast, slightly warm */
body.prog70s-bg .mw-body h1,
body.prog70s-bg .mw-body h2,
body.prog70s-bg .mw-body h3,
body.prog70s-bg .mw-body h4 {
color: #ffe6c7;
}
/* Links: readable but still psychedelic */
body.prog70s-bg .mw-body a {
color: #ffb347;
}
body.prog70s-bg .mw-body a:visited {
color: #ff80c8;
}
body.prog70s-bg .mw-body a:hover {
color: #ffe28a;
}
/* Tables, infoboxes, etc. */
body.prog70s-bg .wikitable,
body.prog70s-bg table {
background-color: rgba(12, 10, 24, 0.98);
border-color: rgba(255, 255, 255, 0.08);
}
body.prog70s-bg .wikitable th,
body.prog70s-bg .wikitable td {
border-color: rgba(255, 255, 255, 0.08);
}
/* Keep header areas clean-ish */
body.prog70s-bg #mw-page-base,
body.prog70s-bg #mw-head-base {
background: transparent;
}
/* Rotating conic sunburst – now pushed to edges & dimmed */
body.prog70s-bg::before {
content: "";
position: fixed;
inset: -40vh;
z-index: -3;
pointer-events: none;
background:
radial-gradient(circle at 50% 50%, rgba(0, 0, 0, 0.9), transparent 55%),
conic-gradient(
from 0deg,
var(--prog70s-color-a) 0deg,
var(--prog70s-color-b) 45deg,
var(--prog70s-color-c) 90deg,
var(--prog70s-color-d) 135deg,
var(--prog70s-color-a) 180deg,
var(--prog70s-color-b) 225deg,
var(--prog70s-color-c) 270deg,
var(--prog70s-color-d) 315deg,
var(--prog70s-color-a) 360deg
);
filter: blur(2px) saturate(1.1);
mix-blend-mode: screen;
animation: prog70s-spin 80s linear infinite;
opacity: 0.35; /* was ~0.85 – MUCH softer */
}
/* Horizontal bands: softer, mostly in the periphery */
body.prog70s-bg::after {
content: "";
position: fixed;
inset: -20vh;
z-index: -4;
pointer-events: none;
background-image:
linear-gradient(
0deg,
rgba(0, 0, 0, 0.95),
rgba(0, 0, 0, 0.65),
rgba(0, 0, 0, 0.95)
),
repeating-linear-gradient(
0deg,
var(--prog70s-color-a) 0,
var(--prog70s-color-a) 15px,
var(--prog70s-color-b) 15px,
var(--prog70s-color-b) 30px,
var(--prog70s-color-c) 30px,
var(--prog70s-color-c) 45px,
var(--prog70s-color-d) 45px,
var(--prog70s-color-d) 60px
);
background-size: 100% 100%, 100% 260%;
mix-blend-mode: screen;
animation:
prog70s-bands-shift 55s ease-in-out infinite alternate,
prog70s-bands-wobble 18s ease-in-out infinite alternate;
opacity: 0.25; /* was ~0.9 */
}
/* “Off” state when user toggles it */
body.prog70s-bg.prog70s-off::before,
body.prog70s-bg.prog70s-off::after,
body.prog70s-bg.prog70s-off #prog70s-grain {
opacity: 0;
transition: opacity 0.6s ease-out;
}
/* Background stays plain dark when off */
body.prog70s-bg.prog70s-off {
background: #050009;
}
/* Rotating record / sunburst */
@keyframes prog70s-spin {
0% {
transform: rotate(0deg) scale(1.04);
}
50% {
transform: rotate(180deg) scale(1.06);
}
100% {
transform: rotate(360deg) scale(1.04);
}
}
/* Bands sliding up and down */
@keyframes prog70s-bands-shift {
0% {
background-position: 0 0, 0 0;
}
100% {
background-position: 0 0, 0 -200%;
}
}
/* Gentle wobble */
@keyframes prog70s-bands-wobble {
0% {
transform: translate3d(0, 0, 0) skewY(0deg);
filter: hue-rotate(0deg);
}
50% {
transform: translate3d(0, -1%, 0) skewY(0.7deg);
filter: hue-rotate(18deg);
}
100% {
transform: translate3d(0, 1%, 0) skewY(-0.7deg);
filter: hue-rotate(36deg);
}
}
/* Grain overlay – very subtle */
body.prog70s-bg #prog70s-grain {
pointer-events: none;
position: fixed;
inset: -20vh;
z-index: -2;
opacity: 0.08;
mix-blend-mode: soft-light;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E");
background-size: 160px 160px;
}
/* Toggle button */
#prog70s-toggle {
position: fixed;
right: 1.4rem;
bottom: 1.4rem;
z-index: 2000;
padding: 0.35rem 0.9rem;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.2);
cursor: pointer;
background: radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0.12), rgba(0, 0, 0, 0.9));
color: #ffe8ff;
font-size: 0.78rem;
letter-spacing: 0.14em;
text-transform: uppercase;
text-shadow: 0 0 4px rgba(0, 0, 0, 0.8);
box-shadow:
0 0 0 1px rgba(0, 0, 0, 0.9),
0 0 20px rgba(255, 0, 150, 0.35);
backdrop-filter: blur(5px);
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
#prog70s-toggle:hover {
transform: translateY(-1px);
box-shadow:
0 0 0 1px rgba(0, 0, 0, 0.9),
0 0 28px rgba(0, 240, 255, 0.55);
}