// Compile with Typst 0.15.x. No packages or external assets.
#set page(width: 120mm, height: 138mm, margin: 8mm, fill: rgb("#102C3B"))
#set text(font: "Libertinus Serif", fill: rgb("#F4EEE0"))
#set par(spacing: 0pt)

#let rosette(petals: 7, phase: 0deg, radius: 43mm) = {
  let center = 48mm
  let samples = 720
  let points = range(samples + 1).map(i => {
    let angle = i * 360deg / samples
    let r = radius * (0.7 + 0.3 * calc.cos(petals * angle + phase))
    (center + r * calc.cos(angle), center + r * calc.sin(angle))
  })
  block(width: 96mm, height: 96mm, {
    for layer in range(6) {
      let scale = 1 - layer * 0.09
      let path = points.map(((x, y)) =>
        (center + (x - center) * scale, center + (y - center) * scale))
      place(top + left, curve(
        stroke: (paint: color.mix((rgb("#68C6C4"), 5 - layer), (rgb("#F0AD79"), layer)), thickness: 0.55pt),
        curve.move(path.first()),
        ..path.slice(1).map(point => curve.line(point)),
        curve.close(),
      ))
    }
  })
}

#align(center)[
  #text(size: 9pt, tracking: 1.7pt)[GEOMETRY / STUDY 01]
  #v(3mm)
  #rosette(petals: 7)
  #v(3mm)
  #text(size: 16pt)[A flower made of functions]
  #v(2mm)
  #text(size: 8pt)[Six paths. One equation. No image file.]
]
