Files
blog/sass/_crt.scss
2024-10-26 18:13:34 +03:00

109 lines
2.1 KiB
SCSS

.crt {
margin: 1rem 0 1rem;
box-shadow:
var(--edge-highlight),
0 0 0 0.0625rem var(--accent-color-alpha),
0 0.125rem 0.375rem 0.125rem var(--accent-color-alpha),
0 0.25rem 1.5rem 0.25rem var(--accent-color-alpha);
border-radius: var(--rounded-corner);
background-image: radial-gradient(
color-mix(in srgb, var(--accent-color) 30%, black),
color-mix(in srgb, var(--accent-color) 10%, black) 80%,
color-mix(in srgb, var(--accent-color) 5%, black)
);
pre {
--text-shadow-1: hsl(from var(--accent-color) h s l / 0.5);
--text-shadow-2: hsl(from var(--accent-color) h calc(s * 2) l);
animation: flicker 0.25s alternate infinite;
margin: 0;
box-shadow: none;
background-color: transparent !important;
padding: 1rem 1rem;
color: var(--accent-color) !important;
text-shadow:
var(--text-shadow-1) 0 0 0.25rem,
var(--text-shadow-2) 0 0 0.75rem;
@keyframes flicker {
25% {
opacity: 0.95;
}
50% {
opacity: 0.85;
}
75% {
opacity: 1;
}
to {
opacity: 0.9;
}
}
}
}
.scanlines {
position: relative;
overflow: hidden;
&::before {
display: block;
position: absolute;
z-index: 1;
animation: scanlines 0.1s linear infinite;
inset: 0;
background-image: repeating-linear-gradient(
to bottom,
rgb(0 0 0 / 0.25),
rgb(0 0 0 / 0.25) 0.125rem,
transparent 0.125rem,
transparent 0.25rem
);
pointer-events: none;
content: "";
@keyframes scanlines {
to {
background-position-y: 0.25rem;
}
}
}
&::after {
--scanline-color: rgb(from var(--accent-color) r g b / 0.05);
display: block;
position: absolute;
animation: scanline 5s linear infinite;
inset: 0;
background-image: linear-gradient(
to bottom,
transparent,
var(--scanline-color) 16rem
);
background-size: auto 16rem;
background-repeat: no-repeat;
background-position-y: -16rem;
pointer-events: none;
content: "";
@keyframes scanline {
to {
background-position-y: calc(100% + 16rem);
}
}
}
}
.cursor {
animation: cursor-blink 1s infinite;
@keyframes cursor-blink {
50% {
opacity: 0;
}
}
}