.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
.card
View Compiled
$w: 13em;
$h: 19em;
$f: $h/$w;
$n: 7;
$g: 1em;
$c0: #ff9528;
$c1: #3f7ea6;

@function int_ch($ch0, $ch1) {
	@return calc(
		var(--i)*#{$ch1} + var(--noti)*#{$ch0})
}

@function int_col($c0, $c1) {
	$ch: 'red' 'green' 'blue';
	$n: length($ch);
	$args: ();
	
	@each $fn in $ch {
		$args: $args, int_ch(call($fn, $c0), call($fn, $c1))
	}
	
	@return RGB(#{$args})
}

body {
	--sqrt2: 1.41421356237;
	--h: #{$f*$w};
	display: grid;
	grid-template-columns: repeat(var(--n, #{$n}), var(--w, #{$w}));
	grid-gap: $g;
	place-content: center;
	margin: 0;
	padding: 2vmin;
	min-width: $w;
	min-height: 100vh;
	background: #333;
	
	@for $i from 1 to $n {
		@media (max-width: ($n - $i + 1)*$w + ($n - $i + 2)*$g) {
			--n: #{$n - $i}
		}
	}
}

.card {	
	overflow: hidden;
	position: relative;
	width: var(--w, #{$w});
	height: var(--h, #{$h});
	border-radius: .5em;
	box-shadow: 2px 2px 17px #000;
	background: linear-gradient(var(--ang, 180deg), $c0, $c1);
	
	&, &:before, &:after {
		--strip-stop: 100%;
		--strip-f: .25;
		--strip-stop-0: calc(var(--strip-f)*var(--strip-stop));
		--strip-stop-1: calc(var(--strip-stop) - var(--strip-stop-0));
		--strip-end: red;
		--strip-mid: transparent;
		--strip-list:
			var(--strip-end) 0,
			var(--strip-end) var(--strip-stop-0), 
			var(--strip-mid) 0, 
			var(--strip-mid) var(--strip-stop-1), 
			var(--strip-end) 0, 
			var(--strip-end) var(--strip-stop);
		--joint-list: 
			var(--joint-end, red) var(--joint-stop, 25%), 
			var(--joint-mid, transparent) 0;
		--joint-0: 
			linear-gradient(135deg, var(--joint-list));
		--joint-1: 
			linear-gradient(-135deg, var(--joint-list));
		--joint-2:
			linear-gradient(-45deg, var(--joint-list));
		--joint-3: 
			linear-gradient(45deg, var(--joint-list));
	}
	
	&:before, &:after {
		--i: 0;
		--noti: calc(1 - var(--i));
		--sgni: calc(2*var(--i) - 1);
		--c: hsl(0, 0%, 0%, var(--i));
		--notc: hsl(0, 0%, 0%, var(--noti));
		--fill: linear-gradient(var(--c), var(--c));
		position: absolute;
		top: 0; right: 0; bottom: 0; left: 0;
		--c0: #{int_col($c0, $c1)};
		--c1: #{int_col($c1, $c0)};
		-webkit-mask: var(--mask);
						mask: var(--mask);
		-webkit-mask-position: var(--mask-o, 50% 50%);
						mask-position: var(--mask-o, 50% 50%);
		-webkit-mask-size: var(--mask-d);
						mask-size: var(--mask-d);
		content: ''
	}
	
	&:after { --i: 1 }
}

.card:nth-child(1) {
	--d: 4em;
	
	&:before, &:after {
		--o: calc(50% - .5*var(--d));
		--strip-stop: calc(2*var(--d)/14.1);
		--strip-end: var(--c0);
		background: 
			repeating-linear-gradient(calc(var(--sgni)*45deg), 
				var(--strip-list));
		--mask: 
			var(--fill), 
			var(--joint-3), var(--joint-3), 
			var(--joint-0), var(--joint-0);
		--mask-o: 50%, var(--o) var(--o);
		--mask-d: var(--d) var(--d);
		-webkit-mask-composite: xor;
						mask-composite: exclude
	}
}

.card:nth-child(2) {
	--d: 4em;
	
	&:before, &:after {
		--strip-end: var(--c0);
		background: 
			linear-gradient(calc(var(--sgni)*45deg), 
				var(--strip-list)) 50%/ calc(.25*var(--d)) calc(.25*var(--d));
		--mask: 
			linear-gradient(calc(-90deg - var(--sgni)*45deg), 
					var(--joint-list)), 
			linear-gradient(calc(90deg - var(--sgni)*45deg), 
					var(--joint-list));
		--mask-o: 50%, 50% calc(50% - .5*var(--d));
		--mask-d: var(--d) var(--d);
	}
}

.card:nth-child(3) {
	--d: 5em;
	
	&:before, &:after {
		--strip-stop: calc(.1*var(--d));
		--strip-end: var(--c0);
		background: 
			repeating-linear-gradient(calc(var(--sgni)*45deg), 
				var(--strip-list));
		--o: calc(50% - var(--i)*.5*var(--d));
		--joint-stop: calc(.275*var(--d));
		--mask:
			radial-gradient(var(--joint-list));
		--mask-o: var(--o) var(--o);
		--mask-d: var(--d) var(--d)
	}
}

.card:nth-child(4) {	
	&:before, &:after {
		background: 
			linear-gradient(calc(var(--i)*180deg + 45deg), 
					var(--c1), transparent);
		--strip-stop: 1em;
		--strip-f: calc(.125 + .25*var(--i));
		--mask: 
			var(--fill), 
			repeating-linear-gradient(-45deg, var(--strip-list));
		-webkit-mask-composite: xor;
						mask-composite: exclude
	}
}

.card:nth-child(5) {
	--d: 1em;
	--ang: 45deg;
	
	&:before, &:after {
		--o0: calc(50% + var(--sgni)*.25*var(--d));
		--o1: calc(50% - var(--sgni)*.25*var(--d));
		background: 
			radial-gradient(circle, var(--c0) 35%, transparent 37%) 
					var(--o0) var(--o0), 
			radial-gradient(circle, var(--c1) 19%, transparent 21%) 
					var(--o1) var(--o1);
		background-size: var(--d) var(--d);
		--strip-stop: calc(4*var(--d));
		--o: calc(var(--i)*var(--d));
		--mask: 
			repeating-linear-gradient(var(--strip-list)), 
			repeating-linear-gradient(90deg, var(--strip-list));
		--mask-o: 0 var(--o), var(--o);
		-webkit-mask-composite: xor;
						mask-composite: exclude
	}
}

.card:nth-child(6) {
	&, &:before, &:after {
		--strip-stop: .5em;
		--strip-end: #{$c1};
		--strip-mid: #{$c0};
		background: 
			repeating-linear-gradient(var(--ang, 0deg), 
					var(--strip-list)) 
				50% calc(50% - var(--o, .1875*var(--strip-stop)));
	}
	
	&:before, &:after {
		--ang: calc(var(--sgni)*60deg);
		--o: 0px;
		filter: blur(1px);
		--mask: 
			repeating-conic-gradient(from calc((var(--noti) + .5)*60deg), 
					red 0deg 60deg, transparent 0deg 180deg);
	}
}

.card:nth-child(7) {
	--ang: 45deg;
	
	&:before, &:after {
		--strip-end: transparent;
		--strip-mid: var(--c0);
		--strip-stop: 10px;
		--strip-f: .4;
		background: 
			repeating-linear-gradient(var(--strip-list)), 
			repeating-linear-gradient(60deg, var(--strip-list)), 
			repeating-linear-gradient(-60deg, var(--strip-list));
		--mask: 
			conic-gradient(from calc((var(--i) - .75)*180deg), 
					transparent, red, transparent 50%)
	}
}

.card:nth-child(8) {
	--strip-end: #{$c0};
	--strip-mid: #{$c1};
	--strip-stop: .5em;
	background: 
		repeating-linear-gradient(45deg, var(--strip-list));
	
	&:before, &:after {
		--strip-stop: 4em;
		background: 
			linear-gradient(calc(var(--i)*180deg), 
					var(--c0), transparent) 
				50% calc(50% - .327*var(--strip-stop))/ 
				100% calc(.5*var(--strip-stop));
		--mask:
			repeating-linear-gradient(var(--strip-list)), 
			repeating-linear-gradient(60deg, var(--strip-list)), 
			repeating-linear-gradient(-60deg, var(--strip-list));
		--mask-o: 50% calc(50% - .075*var(--strip-stop)), 50%, 50%;
		--mask-d: 100% 200%, 100%, 100%;
		-webkit-mask-composite: source-in, source-in, source-over;
						mask-composite: intersect
	}
	
	&:after {
		-webkit-mask-composite: source-out, source-over;
						mask-composite: subtract, add;
	}
}

.card:nth-child(9) {
	--d: 5em;
	--ang: 45deg;
	--strip-stop: var(--d);
	--m-list: var(--strip-list);
	
	&:before, &:after {
		--strip-end: var(--c0);
		--strip-stop: .375em;
		background: 
			repeating-linear-gradient(calc(var(--i)*90deg), 
					var(--strip-list));
		--mask:
			var(--fill), 
			repeating-linear-gradient(45deg, var(--m-list)), 
			repeating-linear-gradient(-45deg, var(--m-list));
		-webkit-mask-composite: xor;
						mask-composite: exclude
	}
}

.card:nth-child(10) {
	--l: 4em;
	--d: calc(var(--l)*var(--sqrt2));
	--strip-end: #{$c0};
	--strip-stop: 4px;
	background: 
		repeating-linear-gradient(
				var(--strip-list)) $c1;
	
	&:before, &:after {
		background:
			linear-gradient(calc(var(--sgni)*90deg), 
					var(--c0), transparent) 50%/ calc(.5*var(--d));
		--strip-stop: var(--l);
		--o: calc(var(--i)*-.5*var(--d));
		--mask:
			repeating-linear-gradient(45deg, var(--strip-list)), 
			repeating-linear-gradient(-45deg, var(--strip-list));
		--mask-o: var(--o);
		--mask-d: calc(100% + .5*var(--d));
		-webkit-mask-composite: source-in, source-over;
						mask-composite: intersect
	}
}

.card:nth-child(11) {
	--d: 5em;
	--l: calc(.05*var(--d)*var(--sqrt2));
	--joint-stop: 50%;
	--circ-list: var(--joint-list);
	
	&:before, &:after {
		background: 
			linear-gradient(calc(var(--sgni)*90deg), var(--c1), var(--c0)) 
				calc(50% - .5*var(--d))/ var(--d) var(--d);
		--joint-stop: 25%;
		--mask: 
			radial-gradient(var(--circ-list)),
			linear-gradient(calc(-90deg - var(--sgni)*45deg), 
					var(--joint-list)), 
			linear-gradient(calc(90deg - var(--sgni)*45deg), 
					var(--joint-list));
		--mask-o: 50%, 50%, 50% calc(50% - .5*var(--d));
		--mask-d: var(--l) var(--l), var(--d) var(--d), var(--d) var(--d);
		-webkit-mask-composite: source-in, source-over;
						mask-composite: intersect
	}
}

.card:nth-child(12) {
	--d: 3em;
	background: 
		repeating-conic-gradient($c0, $c1, $c0 5%) 
		50%/ calc(2*var(--d)) var(--d);
	
	&:before, &:after {
		--strip-end: var(--c0);
		--strip-stop: 4px;
		background: 
			repeating-linear-gradient(calc(var(--sgni)*45deg), 
					var(--strip-list));
		--mask:
			var(--fill), 
			linear-gradient(115deg, var(--joint-list)),
			linear-gradient(115deg, var(--joint-list)),
			linear-gradient(245deg, var(--joint-list)),
			linear-gradient(245deg, var(--joint-list));
		--mask-o: 0 0, calc(.25*var(--d)) calc(-.5*var(--d));
		--mask-d: calc(.5*var(--d)) var(--d);
		-webkit-mask-composite: xor;
						mask-composite: exclude
	}
}

.card:nth-child(13) {
	--ang: 60deg;
	
	&:before, &:after {
		--strip-end: transparent;
		--strip-mid: var(--c0);
		--strip-stop: 10px;
		--strip-f: .4;
		background: 
			repeating-linear-gradient(var(--strip-list)), 
			repeating-linear-gradient(60deg, var(--strip-list)), 
			repeating-linear-gradient(-60deg, var(--strip-list));
		--mask:
			linear-gradient(var(--ang), var(--c) 50%, var(--notc) 0)
	}
}

.card:nth-child(14) {
	--d: 2em;
	background: conic-gradient($c0, $c1, $c0);

	&:before, &:after {
		background: 
			linear-gradient(calc(var(--i)*180deg), 
				var(--c0), var(--c1), var(--c0));
		--mask: 
			linear-gradient(90deg, var(--joint-list));
		--mask-o: calc(50% + (var(--i) - .25)*.5*var(--d));
		--mask-d: var(--d)
	}
}

.card:nth-child(15) {
	--d: 4em;
	--ang: 90deg;
	--strip-end: #{$c1};
	--strip-mid: #{$c0};
	--strip-stop: 8px;
	--main: var(--strip-list);
	
	&, &:before, &:after {
		background: 
			repeating-linear-gradient(var(--ang), var(--main));
	}
	
	&:before, &:after {
		--ang: 45deg;
		--strip-end: var(--c);
		--strip-mid: var(--notc);
		--strip-stop: var(--d);
		--mask: 
			repeating-linear-gradient(90deg, var(--strip-list)), 
			repeating-linear-gradient(45deg, var(--strip-list));
		-webkit-mask-composite: source-in, source-over;
						mask-composite: intersect
	}
}

.card:nth-child(16) {
	--d: 6em;
	--strip-end: red;
	--strip-stop: var(--d);
	--side: var(--strip-list);
	
	&:before, &:after {
		--strip-end: var(--c0);
		--strip-stop: calc(.125*var(--d));
		--strip-f: .125;
		background: 
			repeating-linear-gradient(calc(var(--sgni)*45deg), 
					var(--strip-list));
		--mask: 
			var(--fill), 
			repeating-linear-gradient(var(--side)), 
			repeating-linear-gradient(90deg, var(--side));
		-webkit-mask-composite: xor;
						mask-composite: exclude
	}
}

.card:nth-child(17) {
	--d: 5em;
	--ang: 135deg;
	
	&:before, &:after {
		--strip-end: var(--c0);
		--strip-stop: calc(.1*var(--d));
		background:
			repeating-radial-gradient(circle, 
					var(--strip-list)) 
				calc(50% - var(--i)*.5*var(--d)) 50%/ 
				var(--d) var(--d);
		--joint-end: var(--notc);
		--joint-mid: var(--c);
		--joint-stop: 50%;
		--mask: 
			linear-gradient(var(--joint-list));
		--mask-o: 50% 50%;
		--mask-d: 100% var(--d)
	}
}

.card:nth-child(18) {
	--d: 5em;
	
	&:before, &:after {
		--strip-end: var(--c0);
		--strip-stop: .5em;
		background: 
			repeating-linear-gradient(calc(var(--sgni)*-45deg), 
					var(--strip-list));
		--mask: 
			repeating-conic-gradient(var(--c) 0% 12.5%, var(--notc) 0% 25%);
		--mask-d: var(--d) var(--d)
	}
}

.card:nth-child(19) {
	--d: 8em;
	--ang: 45deg;
	
	&:before, &:after {
		background: var(--c0);
		--strip-end: var(--c);
		--strip-mid: var(--notc);
		--strip-stop: var(--d);
		--mask: 
			linear-gradient(90deg, red, transparent), 
			radial-gradient(circle at 25% 25%, red 9%, transparent 35%), 
			repeating-linear-gradient(90deg, var(--strip-list)), 
			repeating-linear-gradient(-45deg, var(--strip-list));
		--mask-o: calc(50% - .25*var(--d)) 50%, 50% 50%, 50% 50%, 50% 50%;
		--mask-d: calc(.5*var(--d)), 8px 8px, 100%, 100%;
		-webkit-mask-composite: source-in, source-in, source-in, source-over;
						mask-composite: intersect
	}
}

.card:nth-child(20) {
	--d: 8em;
	--ang: 45deg;
	--strip-stop: calc(.0625*var(--d));
	--narr: var(--strip-list);
	
	&:before, &:after {
		background: var(--c0);
		--strip-end: var(--c);
		--strip-mid: var(--notc);
		--strip-stop: var(--d);
		--mask: 
			linear-gradient(90deg, var(--c), var(--notc)), 
			repeating-linear-gradient(45deg, var(--narr)), 
			repeating-linear-gradient(90deg, var(--strip-list)), 
			repeating-linear-gradient(-45deg, var(--strip-list));
		-webkit-mask-composite: source-in, source-in, source-in, source-over;
						mask-composite: intersect
	}
}

.card:nth-child(21) {
	--l: 3em;
	--joint-stop: calc(25% + 7px);
	--large-0: var(--joint-0);
	--large-1: var(--joint-1);
	--large-2: var(--joint-2);
	--large-3: var(--joint-3);
	
	&:before, &:after {
		background: linear-gradient($c1, $c0);
		--o: calc(50% - var(--i)*.5*var(--l));
		--joint-stop: calc(25% + 4px);
		--mask: 
			var(--top, var(--large-0), var(--large-1), var(--large-2), var(--large-3), )
			var(--joint-0), var(--joint-1), var(--joint-2), var(--joint-3);
		--mask-o: var(--o) var(--o);
		--mask-d: var(--l) var(--l);
		-webkit-mask-composite: xor;
						mask-composite: exclude	
	}
	
	&:after {
		background-size: 100% calc(.5*var(--l));
		--joint-stop: 5%;
		--top: ;
	}
}
View Compiled
/*
Some of these may need native conic-gradient() support
*/
View Compiled
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.