Hello.
#set heading(numbering: (..n) => numbering("1.1", ..n.pos().slice(1)))
#show heading.where(level: 1): set heading(numbering: none)
= First level
== Second level
=== Third level
==== Fourth level
Though, to address the rest of the code:
// #show heading: set text(font: ("Poppins", "Noto Serif CJK SC"))
#set text(font: ("Poppins", "Noto Serif CJK SC"))
#set heading(numbering: (..n) => numbering("1.1", ..n.pos().slice(1)))
#show heading.where(level: 1): set align(center)
#show heading.where(level: 1): set text(20pt)
#show heading.where(level: 1): set heading(numbering: none)
// #show heading.where(level: 1): smallcaps
#show heading.where(level: 2): set text(18pt, rgb("#045bac"))
// #show heading.where(level: 2): smallcaps
#show heading.where(level: 3): set text(14pt, rgb("#062f56"), weight: "regular")
// #show heading.where(level: 3): smallcaps
#show heading: smallcaps
= First level
== Second level
=== Third level
==== Fourth level
Nice, I already forgot about this neat (_, ..n)
trick.