|
|
| Line 1: |
Line 1: |
| /*********************************
| |
| * 70s Prog / Psych Sunburst BG
| |
| *********************************/
| |
|
| |
|
| :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;
| |
| }
| |
|
| |
| /* Content card styling so background peeks around edges */
| |
| body.prog70s-bg #content,
| |
| body.prog70s-bg .mw-body {
| |
| background: rgba(6, 3, 22, 0.92);
| |
| border-radius: 14px;
| |
| box-shadow:
| |
| 0 0 0 1px rgba(255, 255, 255, 0.03),
| |
| 0 30px 80px rgba(0, 0, 0, 0.9);
| |
| }
| |
|
| |
| /* Keep header areas clean-ish */
| |
| body.prog70s-bg #mw-page-base,
| |
| body.prog70s-bg #mw-head-base {
| |
| background: transparent;
| |
| }
| |
|
| |
| /* Rotating conic sunburst – big 70s record/poster vibe */
| |
| body.prog70s-bg::before {
| |
| content: "";
| |
| position: fixed;
| |
| inset: -40vh;
| |
| z-index: -2;
| |
| pointer-events: none;
| |
|
| |
| background:
| |
| radial-gradient(circle at 50% 50%, rgba(0, 0, 0, 0.9), transparent 60%),
| |
| 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(1px) saturate(1.3);
| |
| mix-blend-mode: screen;
| |
| animation: prog70s-spin 80s linear infinite;
| |
| opacity: 0.85;
| |
| }
| |
|
| |
| /* Horizontal psychedelic bands that drift + shimmer */
| |
| body.prog70s-bg::after {
| |
| content: "";
| |
| position: fixed;
| |
| inset: -20vh;
| |
| z-index: -1;
| |
| pointer-events: none;
| |
|
| |
| background-image:
| |
| linear-gradient(
| |
| 0deg,
| |
| rgba(0, 0, 0, 0.85),
| |
| rgba(0, 0, 0, 0.4),
| |
| rgba(0, 0, 0, 0.85)
| |
| ),
| |
| 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.9;
| |
| }
| |
|
| |
| /* “Off” state when user toggles it */
| |
| body.prog70s-bg.prog70s-off::before,
| |
| body.prog70s-bg.prog70s-off::after {
| |
| opacity: 0;
| |
| transition: opacity 0.6s ease-out;
| |
| }
| |
|
| |
| /* Slight color shift when off to keep the page readable */
| |
| body.prog70s-bg.prog70s-off {
| |
| background: #050009;
| |
| }
| |
|
| |
| /* Rotating record / sunburst */
| |
| @keyframes prog70s-spin {
| |
| 0% {
| |
| transform: rotate(0deg) scale(1.05);
| |
| }
| |
| 50% {
| |
| transform: rotate(180deg) scale(1.08);
| |
| }
| |
| 100% {
| |
| transform: rotate(360deg) scale(1.05);
| |
| }
| |
| }
| |
|
| |
| /* 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 like a warped LP */
| |
| @keyframes prog70s-bands-wobble {
| |
| 0% {
| |
| transform: translate3d(0, 0, 0) skewY(0deg);
| |
| filter: hue-rotate(0deg);
| |
| }
| |
| 50% {
| |
| transform: translate3d(0, -1.5%, 0) skewY(1.2deg);
| |
| filter: hue-rotate(25deg);
| |
| }
| |
| 100% {
| |
| transform: translate3d(0, 1.5%, 0) skewY(-1.2deg);
| |
| filter: hue-rotate(50deg);
| |
| }
| |
| }
| |
|
| |
| /* Optional: grain overlay for extra analog feel */
| |
| body.prog70s-bg #prog70s-grain {
| |
| pointer-events: none;
| |
| position: fixed;
| |
| inset: -20vh;
| |
| z-index: -1;
| |
| opacity: 0.12;
| |
| 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.15), rgba(0, 0, 0, 0.85));
| |
| 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 25px rgba(255, 0, 150, 0.4);
| |
| 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 35px rgba(0, 240, 255, 0.6);
| |
| }
| |