<input type="range" step=".01" value="0" min="0" max="1">
<div class="flower"></div>
<div class="flower alt"></div>
$n: 6; /* the number of circles/petals */

body {
  --a: 0deg; /* this will control the curvature */
}

.flower {
  --s: 300px; /* image size */
  
  --r: calc(var(--s)/(2 + 2/sin(90deg/#{$n})));
  width: var(--s);
  aspect-ratio: 1;
  --r1: calc((var(--r)*cos(90deg/#{$n}))/cos(90deg/#{$n} - var(--a)));
  --r2: calc((var(--r)*cos(90deg/#{$n}))/cos(90deg/#{$n} + var(--a)));
  --R: calc(var(--r1) + var(--r2));
}
.flower {
  $m1: ();
  $m2: ();
  @for $i from 1 through $n { 
    $m1: append($m1, 
      calc(50% + (50% - var(--r)*sin(var(--a))/cos(var(--a) - 90deg/#{$n}))*cos(360deg*#{$i/$n})) 
      calc(50% + (50% - var(--r)*sin(var(--a))/cos(var(--a) - 90deg/#{$n}))*sin(360deg*#{$i/$n}))
      /var(--R) var(--R) radial-gradient(50% 50%,#00f calc(100% - 1px),#0000) no-repeat, 
    comma);
    $m2: append($m2, 
      calc(50% + (50% + var(--r)*sin(var(--a))/cos(var(--a) + 90deg/#{$n}))*cos((360deg*#{$i} + 180deg)/#{$n})) 
      calc(50% + (50% + var(--r)*sin(var(--a))/cos(var(--a) + 90deg/#{$n}))*sin((360deg*#{$i} + 180deg)/#{$n}))
      /var(--R) var(--R) radial-gradient(50% 50%,#f00 calc(100% - 1px),#0000) no-repeat, 
    comma);
  }
  background: #{$m1},#{$m2}
}
.flower.alt {
  $m1: ();
  $m2: ();
  @for $i from 1 through $n { 
    $m1: append($m1, 
      calc(50% + (50% - var(--r)*sin(var(--a))/cos(var(--a) - 90deg/#{$n}))*cos(360deg*#{$i/$n})) 
      calc(50% + (50% - var(--r)*sin(var(--a))/cos(var(--a) - 90deg/#{$n}))*sin(360deg*#{$i/$n}))
      /var(--R) var(--R) radial-gradient(50% 50%,#000 calc(100% - 1px),#0000) no-repeat, 
    comma);
    $m2: append($m2, 
      calc(50% + (50% + var(--r)*sin(var(--a))/cos(var(--a) + 90deg/#{$n}))*cos((360deg*#{$i} + 180deg)/#{$n})) 
      calc(50% + (50% + var(--r)*sin(var(--a))/cos(var(--a) + 90deg/#{$n}))*sin((360deg*#{$i} + 180deg)/#{$n}))
      /var(--R) var(--R) radial-gradient(50% 50%,#000 calc(100% - 1px),#0000) no-repeat, 
    comma);
  }
  mask:
    #{$m1},
    radial-gradient(100% 100%,#000 calc(var(--r)/tan(90deg/#{$n})),#0000 calc(var(--r)/tan(90deg/#{$n}) + 1px)) intersect,
    radial-gradient(#000 0 0) exclude,
    #{$m2};
   background: linear-gradient(60deg,#2d576d,#e0236f); 
}

input {
  grid-column: span 2;
  width: 100%;
  margin: 20px;
}

body {
  margin: 0;
  min-height: 100vh;
  display: grid;
  place-content: center;
  place-items: center;
  gap: 15px; 
  background: #E0E4CC;
}
View Compiled
document.querySelector('input').addEventListener('input', e => {
    document.body.style.setProperty("--a", (25*e.target.value)+"deg");
 });

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.