#let accent = rgb(75, 50, 200) #let yellow = rgb(255, 243, 0, 100) #let darkyellow = rgb(255, 213, 00, 150) #let report( title: [Title], task: [Task], university: [Universität Graz], institute: [Uni for Life], course: [Course name], instructor: [Instructor], author: [Firstname Lastname], date: [#datetime.today().display("[day]. [month repr:long] [year]")], fontsize: 1.269em, logo: "logo_uniforlife.svg", lang: "de", smallcaps_headings: true, underline_headings: false, body ) = { let doublerule = [#set text(1pt, bottom-edge: "descender") #line(length: 100%, stroke: darkyellow+2pt)#line(length: 100%, stroke: luma(150)+1pt) ] show heading.where(level: 1): it => { let heading_text = if smallcaps_headings {smallcaps(it)} else {it} if underline_headings { block(stroke: (bottom: darkyellow+0.2em), inset: (bottom: 0.05em))[#heading_text] } else { heading_text } } show link: it => underline(stroke: yellow+0.2em, offset: 0.15em, evade: false, background: true)[#it] let ulink(.. args) = { [#underline(stroke: darkyellow+0.2em, offset: 0em, evade: false, background: true)[#link(.. args)]] } set page( margin: (top: 8em, bottom: 5em), header: context { if counter(page).get().first() == 1 [ #set text(0.7em, top-edge: 1em) #grid(inset: 0.1em, columns: (1fr, auto, 1fr), align: (left, center, right), course, [#emph(author)], grid.cell(rowspan:3)[#image(logo, height: 3em)], instructor, grid.cell(rowspan: 2)[#set text(1.3em); #align(bottom)[#task]], date) #doublerule ] else [ #set text(0.7em, top-edge: 1em) #align(right)[#image(logo, height: 3em)] #doublerule ]}, footer: context [ #doublerule #v(0.5em) #align(center)[#counter(page).display("1 / 1", both: true)] ], ) let leading = 1.5em let leading = leading - 0.75em // "Normalization" set block(spacing: leading) set par(spacing: leading, leading: leading, first-line-indent: 2em, justify: true) set text(top-edge: 0.7em, fontsize, lang: lang) v(-0.5cm) align(center)[#text(1.1em)[#underline(stroke: darkyellow+0.3em, extent: 0.1em, offset: 0.05em, evade: false, background: true)[#smallcaps([#heading(numbering: none, outlined: false, level: 2)[*#title*]])]]] v(0.5cm) body }