#let pill(fill, content) = { block( inset: 4pt, fill: fill, radius: 3pt, text(black, [#content]), ) } #let education(degree, university, from, to, location) = { grid( align: horizon, rows: (auto, auto), columns: (auto, auto, auto), grid.cell( inset: ( bottom: 6pt, ), colspan: 3, stack( dir: ltr, spacing: 6pt, text(13pt, [*#degree*]), pill(luma(230), [#from - #to]), pill(luma(200), location), ), ), text(luma(90), [*#university*]), ) v(4pt) } #let work(role, company, from, to, location, content) = { grid( align: horizon, rows: (auto, auto), columns: (auto, auto, auto), grid.cell( inset: ( bottom: 6pt, ), colspan: 3, stack( dir: ltr, spacing: 6pt, text(13pt, [*#role*]), pill(luma(230), [#from - #to]), pill(luma(200), location), ), ), text(luma(90), [*#company*]), ) v(4pt) content } #let cv( short, name, positions, email, phone, address, links, doc ) = { set page( paper: "a4", margin: 12pt ) set text(11pt, font: "Victor Mono") show link: it => { set text(red) underline(it) sym.space.nobreak.narrow sym.arrow.tr } grid( columns: (1fr, 3fr), rows: (auto, auto), gutter: 12pt, grid.cell( rowspan: 2, block( clip: true, radius: 10pt, image("../assets/profile.jpg"), ) ), block( radius: 10pt, width: 100%, fill: black, inset: ( top: 16pt, left: 18pt, bottom: 16pt, ), stack( spacing: 12pt, stack( dir: ltr, spacing: 10pt, text(red, 22pt, [\$ dennis\@schöpf \~>]), text(white, 22pt, [*lebenslauf*]), ), text( white, 11pt, (email, phone, address).join(" ++ "), ), text( white, 10pt, links.join(" ++ "), ), ), ), block( text( black, weight: "bold", 14pt, positions.join(", ", last: " &\n"), ), ) ) set align(left) doc }