diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d7d7557
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.pdf
+# but keep the pdfs in the "assets" folder
+!assets/*
diff --git a/abstract.typ b/abstract.typ
new file mode 100644
index 0000000..f00845f
--- /dev/null
+++ b/abstract.typ
@@ -0,0 +1,3 @@
+= Abstract
+We present refinements to the BEoRN framework, a semi-numerical simulation suite that generates 21-cm maps of the cosmic dawn and the epoch of reionization. The refinements include a self-consistent treatment of the evolution of individual sources, which allows for a more accurate prediction of the 21-cm signal.
+We validate the refined suite against ?? and quantify the gain in consistency resulting from the more accurate treatment of the sources.
diff --git a/acknowledgements.typ b/acknowledgements.typ
new file mode 100644
index 0000000..9b6c672
--- /dev/null
+++ b/acknowledgements.typ
@@ -0,0 +1,4 @@
+// = Acknowledgements
+#heading(numbering: none, level: 1, outlined: false)[Acknowledgements]
+
+We would like to thank Sambit Giri and Yu-Hsiu Huang for their valuable input and helpful discussions during the development of this code. Their expertise and insights have significantly contributed to the robustness and accuracy of the simulation suite.
diff --git a/appendix.typ b/appendix.typ
new file mode 100644
index 0000000..63506a2
--- /dev/null
+++ b/appendix.typ
@@ -0,0 +1,2 @@
+#heading(numbering: none, level: 1)[Appendix]
+
diff --git a/assets/background.png b/assets/background.png
new file mode 100644
index 0000000..91fa5f0
Binary files /dev/null and b/assets/background.png differ
diff --git a/assets/declaration-originality.pdf b/assets/declaration-originality.pdf
new file mode 100644
index 0000000..4331814
Binary files /dev/null and b/assets/declaration-originality.pdf differ
diff --git a/assets/eth-logo.svg b/assets/eth-logo.svg
new file mode 100644
index 0000000..c78efdf
--- /dev/null
+++ b/assets/eth-logo.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/assets/the-astrophysical-journal.csl b/assets/the-astrophysical-journal.csl
new file mode 100644
index 0000000..3845ba4
--- /dev/null
+++ b/assets/the-astrophysical-journal.csl
@@ -0,0 +1,152 @@
+
+
diff --git a/assets/uzh-logo.svg b/assets/uzh-logo.svg
new file mode 100644
index 0000000..e896dba
--- /dev/null
+++ b/assets/uzh-logo.svg
@@ -0,0 +1,141 @@
+
+
+
\ No newline at end of file
diff --git a/conclusion.typ b/conclusion.typ
new file mode 100644
index 0000000..ad75b16
--- /dev/null
+++ b/conclusion.typ
@@ -0,0 +1,2 @@
+= Conclusion
+#lorem(900)
diff --git a/halo_mass_history.typ b/halo_mass_history.typ
new file mode 100644
index 0000000..5c76541
--- /dev/null
+++ b/halo_mass_history.typ
@@ -0,0 +1 @@
+= Halo mass history
diff --git a/implementation.typ b/implementation.typ
new file mode 100644
index 0000000..92b578e
--- /dev/null
+++ b/implementation.typ
@@ -0,0 +1,11 @@
+= Implementation of changes
+
+This section describes the changes and improvements that were necessary to adapt the simulation suite in order to achieve the refined procedure. We distinguish between necessary changes that were required to reflect the underlying model and "beneficial" changes that only indirectly affect the quality of the simulation outputs.
+
+== Necessary changes
+Fundamental changes include:
+-
+
+
+== Secondary changes
+Beorn was very opinionated in its assumptions and initial data. Since we intend it to create fast and reusable realisations we adapted the code to be more easily adjustable.
diff --git a/introduction.typ b/introduction.typ
new file mode 100644
index 0000000..2198002
--- /dev/null
+++ b/introduction.typ
@@ -0,0 +1,160 @@
+= Introduction
+
+The earliest cosmological events (such as the formation of the first astrophysical objects - stars, galaxies, black holes...) have a profound influence on the evolution of the universe. Though poorly understood, these events have shaped the characteristics of our current uninverse, including the structure and distribution of matter itself.
+// Citation about an overview paper on ionization vs structure formation.
+Despite the milestones achieved in observational cosmology
+// Citation about CMB measurements, JWST, etc.
+, many aspects of the early universe and its dark ages remain difficult to probe. While traditional measurements provide insights into relatively recent epochs, and the cosmic microwave background (CMB) serves as an early snapshot of the universe, the dark ages are incompatible with direct observations. They represent the critical link between the late-time universe and the primordial conditions.
+
+The dark ages of the universe refer to the period after recombination where the primordial atoms remain neutral. They are characterized by a total lack of sources of radiation (beyond the radiation background).
+The dominant interactions during that period are either gravitational or due to the cooling of the primordial gas. The formation of the first stars, called population III stars
+// Citation about Pop III stars and their role in the cosmic dawn.
+, marks the beginning of the cosmic dawn and with it the process of reionization.
+
+....
+
+
+
+The large amounts of neutral hydrogen in the intergalactic medium (IGM) during the dark ages and cosmic dawn allow for an additional mode of observation: the 21-cm line emission. Due to the hyperfine transition of neutral hydrogen
+// This period is crucial as it sets the stage for the subsequent evolution of the universe, including the formation of galaxies and large-scale structures.
+
+
+Paragraph about the earliest cosmlogical events, leading up to the central importance of reionization.
+
+Points to mention
+- pop III stars and cosmic dawn
+- wouthuysen
+- cold reionization
+
+Mention of recent observational advancements that highlight the relevance of larger + more precise simulations that capture the full dynamic range of the interactions.
+
+Shortcomings of similar codes (as noted in beorn paper).
+
+Assumptions made by beorn and what inaccuracies they introduce.
+e.g. papers like "2309...." suggest a revised halo mass growth.
+e.g. bursty star formation as presented by Romain Teyssier
+
+Refer to the "halo model of reionization" 2302
+
+
+The hyperfine transition of neutral hydrogen generates photons at
+the wavelength of 21 cm, opening a new observational window into
+the early Universe approximately one billion years after the Big
+Bang. During this era, the radiation from the first stars and galaxies
+pushes the spin temperature out of equilibrium before heating and
+eventually ionising the neutral hydrogen of the intergalactic medium
+(IGM). Next to the source properties, the 21-cm signal depends on
+the clustering and temperature distribution of the neutral gas, the
+primordial background radio emission, and the detailed interaction
+processes between radiation and matter. It is therefore not surprising
+that the 21-cm radiation from the cosmic dawn contains a wealth of
+information about the properties of the first stars (Fialkov & Barkana
+2014; Mirocha et al. 2018; Ventura et al. 2023; Sartorio et al. 2023),
+galaxies (Park et al. 2019; Reis et al. 2020; Hutter et al. 2021), and
+black holes (Pritchard & Furlanetto 2007; Ross et al. 2019). It can
+furthermore be used to constrain the cosmological model (Liu &
+Parsons 2016; Schneider et al. 2023; Shmueli et al. 2023) and, in
+particular, the dark sector, such as the nature of dark matter (Sitwell
+et al. 2014; Chatterjee et al. 2019; Nebrin et al. 2019; Muñoz et al.
+2020; Jones et al. 2021; Giri & Schneider 2022; Hotinli et al. 2022;
+Flitter & Kovetz 2022; Hibbard et al. 2022), interactions between
+the dark and visible sector (Barkana et al. 2018; Fialkov et al. 2018;
+Kovetz et al. 2018; Lopez-Honorez et al. 2019; Mosbech et al. 2023),
+or potential exotic decay and annihilation processes (D’Amico et al.
+2018; Liu & Slatyer 2018; Mitridate & Podo 2018).
+Reliable detection of the 21-cm signal at these redshifts has yet to
+be achieved, but ongoing experiments, such as the Giant Metrewave
+Radio Telescope (GMRT, Paciga et al. 2013), the Precision Array for
+Probing the Epoch of Reionization (PAPER, Kolopanis et al. 2019),
+the Murchison Widefield Array (MWA, Trott et al. 2020), the Low-
+Frequency ARray (LOFAR, Mertens et al. 2020), and the Hydrogen
+Epoch of Reionization Array (HERA, The HERA Collaboration et al.
+2023) have provided upper limits on the 21-cm power spectrum for
+a broad range of redshifts. These bounds have been used to exclude
+regions of the parameter space describing extreme properties of the
+IGM during the epoch of reionisation (Ghara et al. 2020, 2021; Greig
+et al. 2021a,b; The HERA Collaboration et al. 2022a).
+The Square Kilometre Array (SKA), a next-generation radio in-
+terferometer, is currently under construction in South Africa and
+Western Australia. Its low-frequency component, SKA-low, has the
+capability to not only measure the 21-cm power spectrum with high
+signal-to-noise ratio but also provide sky images at redshifts around2
+T. Schaeffer et al.
+𝑧 ≈ 5 − 25 (e.g. Mellema et al. 2015; Wyithe et al. 2015; Ghara
+et al. 2017; Giri et al. 2018a; Bianco et al. 2021b). The potential
+of SKA-low for studying the cosmic dawn and reionization era has
+been extensively investigated in various studies, exploring properties
+of the ionizing sources and the ionization structure of the universe
+(e.g. Giri et al. 2018b; Zackrisson et al. 2020; Giri & Mellema 2021;
+Gazagnes et al. 2021; Bianco et al. 2023). These studies highlight
+the significant role that SKA-low will play in advancing our under-
+standing of these critical cosmic epochs.
+Next to the tremendous experimental effort, accurate and reliable
+theoretical methods to model the 21-cm signal at the required accu-
+racy level are currently being developed. Modelling the 21-cm signal
+is challenging as it involves a broad dynamical range from minihaloes
+to cosmological scales. It depends on the details of hydrodynamical
+feedback processes for galaxies, the propagation of radiation through
+large cosmological scales, and the detailed interaction processes of
+photons with gas particles of the IGM (e.g., Iliev et al. 2006; Mellema
+et al. 2006b; Trac & Cen 2007).
+One option is to predict the 21-cm signal with the help of coupled
+radiative-transfer hydrodynamic simulations, some well-known ex-
+amples being the Cosmic Dawn (CoDA) (Ocvirk et al. 2016; Ocvirk
+et al. 2020; Lewis et al. 2022), the 21SSD (Semelin et al. 2017),
+and the THESAN simulations (Kannan et al. 2022; Garaldi et al.
+2022). Another option is to post-process N-body simulations with
+ray-tracing algorithms, such as the Conservative, Causal Ray-tracing
+code (C2 RAY; Mellema et al. 2006a) or the Cosmological Radiative
+transfer Scheme for Hydrodynamics (CRASH; Maselli et al. 2003).
+Full radiative-transfer numerical methods are fundamental to un-
+derstanding the 21-cm signal and estimating the accuracy of more
+approximate methods. However, they are very computationally ex-
+pensive and can hardly be used to scan the vast cosmological and
+astrophysical parameter space. To perform Bayesian inference anal-
+ysis on a mock 21-cm data set, semi-numerical algorithms are often
+used, better suited to generate thousands of realizations of the sig-
+nal itself. They rely on the excursion set formalism (Furlanetto et al.
+2004), such as 21cmFAST (Mesinger et al. 2011) or SIMFAST21 (San-
+tos et al. 2010).
+In this paper, we present the new framework BEoRN which stands
+for Bubbles during the Epoch of Reionisation Numerical simulator.
+The code is based on a one-dimensional radiative transfer method
+in which interactions between matter and radiation are treated in a
+spherically symmetric way around sources. This approach is signifi-
+cantly faster than full 3-d radiative transfer codes and arguably more
+precise than semi-numerical algorithms which are not based on indi-
+vidual sources. In this aspect, BEoRN is similar to other existing codes
+such as BEARS (Thomas et al. 2009) or GRIZZLY (Ghara et al. 2018).
+However, in contrast to other 1d radiative transfer codes, BEoRN self-
+consistently accounts for the evolution of individual sources during
+the emission of photons. This includes both the redshifting of pho-
+tons due to the expansion of space and the increase of luminosity
+caused by the growth of individual sources over time. Both effects
+have a non-negligible influence on the radiation profile surrounding
+sources.
+The BEoRN framework allows for a flexible parametrisation to
+model any source of radiation, such as e.g. Pop-III stars, galaxies,
+or quasars. It produces a 3-dimensional (3D) light-cone realisation
+of the 21-cm signal from the cosmic dawn to the end of reionisation
+including redshift space distortion effects. The underlying gas density
+field as well as the position of sources is directly obtained from
+outputs of an 𝑁-body simulation. We have designed BEoRN to be
+user-friendly and modular so that it can be applied in combination
+with different gravity solvers or source models, for example.
+MNRAS 000, 1–18 (2023)
+The paper is structured as follows: Section 2 describes the BEoRN
+code, while section 3 validates it by comparing its predictions with
+the publicly available 21cmFAST code. In section 4, three benchmark
+models are presented, calibrated to the latest observations, and the
+evolution of the 21-cm signal during the cosmic dawn and epoch
+of reionization is studied. The work concludes with a summary and
+conclusion in section 5.
+Note that throughout the paper, physical distance units are specified
+with the prefix "𝑝", while co-moving distance units are specified
+with the prefix "𝑐". The cosmological parameters used in this work
+are consistent with Planck 2018 results (Planck Collaboration et al.
+2020), namely matter abundance Ωm = 0.31, baryon abundance
+Ωb = 0.045, and dimensionless Hubble constant ℎ = 0.68. The
+standard deviation of matter perturbations at 8ℎ −1 cMpc scale is
+𝜎8 = 0.81.
diff --git a/main.typ b/main.typ
new file mode 100644
index 0000000..453ed02
--- /dev/null
+++ b/main.typ
@@ -0,0 +1,56 @@
+#import "template/template.typ": *
+#import "@preview/muchpdf:0.1.1": muchpdf
+
+
+// Patch the ETH logo to actually be white:
+#let logo = "assets/eth-logo.svg"
+#let original = read(logo)
+#let changed = original.replace(
+ "#00000f",
+ white.to-hex(),
+)
+
+#let logos = (
+ image(bytes(changed)),
+ image("assets/uzh-logo.svg")
+)
+
+#show: tasteful-thesis.with(
+ title: "Refinements of BEoRN",
+ subtitle: "Self-consistent semi-numerical simulation of the epoch of reionization",
+ authors: ("Rémy Moll",),
+ affiliation: "ETH Zürich, Universität Zürich",
+ abstract: include("abstract.typ"),
+ background-color: color.rgb(32, 64, 123),
+ logos: logos,
+ background-image: image("assets/background.png"),
+ date: datetime.today().display("[day]. [month repr:long] [year]"),
+ font: "FreeSans",
+ pre_content: muchpdf(read("assets/declaration-originality.pdf", encoding: none)),
+
+)
+
+
+//
+// Content
+//
+
+Stars form early #cite(<10.1093>, form: "normal") but @10.1093 state that they are bright.
+
+
+
+#include "introduction.typ"
+#include "procedure.typ"
+#include "halo_mass_history.typ"
+#include "implementation.typ"
+#include "validation.typ"
+// Maybe no validation?
+#include "results.typ"
+#include "outlook.typ"
+#include "conclusion.typ"
+#include "acknowledgements.typ"
+
+
+#bibliography("references.bib", style: "assets/the-astrophysical-journal.csl")
+
+#include "appendix.typ"
diff --git a/outlook.typ b/outlook.typ
new file mode 100644
index 0000000..b01a758
--- /dev/null
+++ b/outlook.typ
@@ -0,0 +1 @@
+= Outlook
diff --git a/procedure.typ b/procedure.typ
new file mode 100644
index 0000000..ab0be88
--- /dev/null
+++ b/procedure.typ
@@ -0,0 +1,6 @@
+= Overview of the BEoRN simulation procedure
+This section describes the full procedure for a single simulation run of the BEoRN simulation suite, as well as the necessary adaptations to reflect the refined underlying model.
+
+== Simulation steps
+
+The code of BEoRN as well as a comprehensive documentation are publicly available under #link("https://github.com/cosmic-reionization/BEoRN", "https://github.com/cosmic-reionization/BEoRN").
diff --git a/references.bib b/references.bib
new file mode 100644
index 0000000..5f5f501
--- /dev/null
+++ b/references.bib
@@ -0,0 +1,61 @@
+@article{10.1093,
+ author = {Mirocha, Jordan and Furlanetto, Steven R},
+ title = {Balancing the efficiency and stochasticity of star formation with dust extinction in z ≳ 10 galaxies observed by JWST},
+ journal = {Monthly Notices of the Royal Astronomical Society},
+ volume = {519},
+ number = {1},
+ pages = {843-853},
+ year = {2022},
+ month = {12},
+ abstract = {Early observations with JWST indicate an overabundance of bright galaxies at redshifts z ≳ 10 relative to Hubble-calibrated model predictions. More puzzling still is the apparent lack of evolution in the abundance of such objects between z ∼ 9 and the highest redshifts yet probed, z ∼ 13–17. In this study, we first show that, despite a poor match with JWST luminosity functions (LFs), semi-empirical models calibrated to rest-ultraviolet LFs and colours at 4 ≲ z ≲ 8 are largely consistent with constraints on the properties of individual JWST galaxies, including their stellar masses, ages, and spectral slopes. We then show that order-of-magnitude scatter in the star formation rate of galaxies (at fixed halo mass) can indeed boost the abundance of bright galaxies, provided that star formation is more efficient than expected in low-mass haloes. However, this solution to the abundance problem introduces tension elsewhere: because it relies on the upscattering of low-mass haloes into bright magnitude bins, one expects typical ages, masses, and spectral slopes to be much lower than constraints from galaxies observed thus far. This tension can be alleviated by non-negligible reddening, suggesting that – if the first batch of photometrically selected candidates are confirmed – star formation and dust production could be more efficient than expected in galaxies at z ≳ 10.},
+ issn = {0035-8711},
+ doi = {10.1093/mnras/stac3578},
+ url = {https://doi.org/10.1093/mnras/stac3578},
+ eprint = {https://academic.oup.com/mnras/article-pdf/519/1/843/48343456/stac3578.pdf},
+}
+
+
+
+
+
+@article{Kannan_2021,
+ title={Introducing the thesan project: radiation-magnetohydrodynamic simulations of the epoch of reionization},
+ volume={511},
+ ISSN={1365-2966},
+ url={http://dx.doi.org/10.1093/mnras/stab3710},
+ DOI={10.1093/mnras/stab3710},
+ number={3},
+ journal={Monthly Notices of the Royal Astronomical Society},
+ publisher={Oxford University Press (OUP)},
+ author={Kannan, R and Garaldi, E and Smith, A and Pakmor, R and Springel, V and Vogelsberger, M and Hernquist, L},
+ year={2021},
+ month=dec, pages={4005–4030} }
+
+
+
+@article{Garaldi_2022,
+ title={Thethesanproject: properties of the intergalactic medium and its connection to reionization-era galaxies},
+ volume={512},
+ ISSN={1365-2966},
+ url={http://dx.doi.org/10.1093/mnras/stac257},
+ DOI={10.1093/mnras/stac257},
+ number={4},
+ journal={Monthly Notices of the Royal Astronomical Society},
+ publisher={Oxford University Press (OUP)},
+ author={Garaldi, E and Kannan, R and Smith, A and Springel, V and Pakmor, R and Vogelsberger, M and Hernquist, L},
+ year={2022},
+ month=feb, pages={4909–4933} }
+
+
+@article{Smith_2022,
+ title={Thethesanproject: Lyman-α emission and transmission during the Epoch of Reionization},
+ volume={512},
+ ISSN={1365-2966},
+ url={http://dx.doi.org/10.1093/mnras/stac713},
+ DOI={10.1093/mnras/stac713},
+ number={3},
+ journal={Monthly Notices of the Royal Astronomical Society},
+ publisher={Oxford University Press (OUP)},
+ author={Smith, A and Kannan, R and Garaldi, E and Vogelsberger, M and Pakmor, R and Springel, V and Hernquist, L},
+ year={2022},
+ month=mar, pages={3243–3265} }
diff --git a/results.typ b/results.typ
new file mode 100644
index 0000000..e69de29
diff --git a/template/template.typ b/template/template.typ
new file mode 100644
index 0000000..6032691
--- /dev/null
+++ b/template/template.typ
@@ -0,0 +1,409 @@
+/// An *opinionated* template for a longer report or thesis.
+#let tasteful-thesis(
+ /// The main title of the document.
+ /// -> string
+ title: "",
+ /// An optional subtitle for the document.
+ /// -> string
+ subtitle: "",
+ /// The authors of the document.
+ /// -> array(string)
+ authors: (),
+ supervisors: (),
+ affiliation: none,
+ other: none,
+ abstract: none,
+
+ background-image: none,
+ date: datetime.today().display(),
+ background-color: color.blue,
+ logos: (),
+ font: "New Computer Modern",
+ alpha: 50%,
+ pre_content: none,
+ body,
+
+) = {
+ //
+ // Global settings and style customization.
+ //
+ set document(author: authors, title: title, description: subtitle)
+
+ let font-color = color;
+ // Check if the background color is closer to black or white
+ let components = background-color.components()
+ // show the components for debugging
+ let luminance = float(0.299 * components.at(0) + 0.587 * components.at(1) + 0.114 * components.at(2))
+ if luminance > 0.5 {
+ font-color = color.black
+ } else {
+ font-color = color.white
+ }
+
+
+ //customize look of figure
+ // set figure.caption(separator: [ --- ], position: top)
+
+ //customize inline raw code
+ show raw.where(block: false) : it => h(0.5em) + box(fill: color.lighten(90%), outset: 0.2em, it) + h(0.5em)
+
+ // Set body font family.
+ set text(font: font, 12pt)
+ show heading: set text(font: font, fill: background-color)
+
+ // add space for heading
+ show heading.where(level:1): it => it + v(0.5em)
+
+ // Set link style
+ show link: it => underline(text(fill: background-color, it))
+
+ show ref: it => text(fill: background-color, it)
+
+ show ref.where(): it => text(fill: background-color, it)
+
+ //numbered list colored
+ set enum(indent: 1em, numbering: n => [#text(fill: background-color, numbering("1.", n))])
+
+ //unordered list colored
+ set list(indent: 1em, marker: n => [#text(fill: background-color, "•")])
+
+
+
+ set cite(
+ form: "prose"
+ )
+
+
+ // display of outline entries
+ show outline.entry: it => text(size: 12pt, weight: "regular",it)
+
+ //
+ // Title page
+ //
+
+ // Title page background
+ set page(
+ // the title page should not have any margin, this will be reset in the next page
+ margin: 0pt,
+ )
+
+ // set the image first so that it is the lowest layer
+ place(
+ bottom,
+ background-image
+ )
+
+ // Add a tiling of white squares over the background to simulate a grid
+ for i in range(0, 14) {
+ for j in range(0, 14) {
+ place(
+ bottom + right,
+ dx: -i * 3.55em + 0.1em,
+ dy: -j * 3.55em,
+ )[
+ #square(
+ size: 3.55em,
+ // fill: gradient.linear(
+ // color.white,
+ // color.black.transparentize(0%),
+ // color.black.transparentize(0%),
+ // color.black.transparentize(0%),
+ // color.black.transparentize(0%),
+ // angle: 45deg,
+ // ),
+ fill: none,
+ stroke: (
+ paint: color.white,
+ thickness: 0.02em,
+ )
+ )
+ ]
+ }
+ }
+
+
+
+ place(
+ top + left,
+ dx: -20em,
+ line(
+ angle: -10deg,
+ length: 200%,
+ stroke: (
+ paint: background-color.lighten(alpha),
+ thickness: 900pt,
+ ),
+ ),
+ )
+
+ place(
+ top + left,
+ dx: -20em,
+ line(
+ angle: -10deg,
+ length: 200%,
+ stroke: (
+ paint: background-color,
+ thickness: 800pt,
+ )
+ ),
+ )
+
+ place(
+ bottom + right,
+ dx: 20em,
+ dy: 20em,
+ line(
+ angle: -10deg,
+ length: 200%,
+ stroke: (
+ paint: background-color.lighten(alpha),
+ thickness: 400pt,
+ )
+ ),
+ )
+
+ place(
+ bottom + right,
+ dx: 20em,
+ dy: 20em,
+ line(
+ angle: -10deg,
+ length: 200%,
+ stroke: (
+ paint: background-color,
+ thickness: 300pt,
+ )
+ ),
+ )
+
+
+ // add a few more tiles *above* the background image to simulate a grid structure
+ let draw_pairs = (
+ (0, 10),
+ // (1, 10),
+ // (2, 10),
+ (3, 10),
+ // (4, 10),
+ (5, 10),
+ (6, 10),
+ // (7, 10),
+ (8, 10),
+ // (9, 10),
+ (10, 10),
+ (11, 10),
+ // (12, 10),
+ (13, 10),
+
+ (0, 11),
+ (1, 11),
+ // (2, 11),
+ (3, 11),
+ // (4, 11),
+ (5, 11),
+ // (6, 11),
+ // (7, 11),
+ (8, 11),
+ // (9, 11),
+ (10, 11),
+ (11, 11),
+ // (12, 11),
+ (13, 11),
+
+ (0, 12),
+ // (1, 12),
+ // (2, 12),
+ (3, 12),
+ // (4, 12),
+ (5, 12),
+ // (6, 12),
+ // (7, 12),
+ // (8, 12),
+ (9, 12),
+ // (10, 12),
+ // (11, 12),
+ // (12, 12),
+ // (13, 12),
+
+
+ // (0, 13),
+ (1, 13),
+ // (2, 13),
+ (3, 13),
+ // (4, 13),
+ // (5, 13),
+ // (6, 13),
+ (7, 13),
+ // (8, 13),
+ // (9, 13),
+ // (10, 13),
+ // (11, 13),
+ (12, 13),
+ // (13, 13),
+
+
+ // (0, 14),
+ // (1, 14),
+ // (2, 14),
+ // (3, 14),
+ (4, 14),
+ // (5, 14),
+ // (6, 14),
+ // (7, 14),
+ // (8, 14),
+ // (9, 14),
+ (10, 14),
+ // (11, 14),
+ // (12, 14),
+ (13, 14),
+ )
+
+ for (i, j) in draw_pairs {
+ place(
+ bottom + right,
+ dx: -i * 3.55em + 0.1em,
+ dy: -j * 3.55em,
+ )[
+ #square(
+ size: 3.55em,
+ // fill: gradient.linear(
+ // color.white,
+ // color.black.transparentize(0%),
+ // color.black.transparentize(0%),
+ // color.black.transparentize(0%),
+ // color.black.transparentize(0%),
+ // angle: 45deg,
+ // ),
+ fill: none,
+ stroke: (
+ paint: color.white,
+ thickness: 0.02em,
+ )
+ )
+ ]
+
+ }
+
+
+ // Title page content
+ pad(
+ x: 4em,
+ y: 4em,
+ )[
+ #align(center, text(font: font, 3em, weight: 700, title, fill: font-color))
+ #v(2em, weak: true)
+ #if subtitle != none {
+ align(center, text(font: font, 2em, weight: 600, subtitle, fill: font-color))
+ }
+ #v(2em, weak: true)
+ #align(
+ center,
+ text(font: font, 1em, authors.join(", "), fill: font-color)
+ )
+ ]
+
+
+ let padded_logos = logos.map(logo => pad(x: 0.2cm, logo))
+
+ place(bottom + right, dy: -2em, dx: -2em)[
+ #set text(font: font, fill: font-color, size: 1.2em)
+ #set image(height: 0.8cm, width: auto)
+
+ #date
+
+ #stack(
+ dir: ltr,
+ // text(font: font, 1em, affiliation, fill: font-color),
+ ..padded_logos
+ )
+ ]
+
+
+
+ if pre_content != none {
+ pagebreak()
+ place(
+ top + left,
+ // dx: 2em,
+ // dy: 2em,
+ )[
+ #pre_content
+ ]
+ }
+
+
+ pagebreak()
+
+ let footer = grid(
+ rows: auto,
+ v(0mm),
+ line(length: 100%, stroke: (paint: background-color, thickness: 1pt)),
+ v(2.5mm),
+ text(
+ )[
+ #title
+ #h(1fr)
+ #context [
+ #text(counter(page).display())
+ ]
+ // context needed for page counter for typst >= 0.11.0
+ ]
+ )
+
+ set page(
+ // no header
+ footer: footer,
+ margin: 4em,
+ )
+
+ //
+ // Table of contents.
+ //
+
+
+
+
+ abstract
+ v(2em)
+ outline()
+
+ pagebreak()
+
+
+ //
+ // Main body.
+ //
+ set heading(numbering: "1.")
+
+ set par(justify: true)
+
+ body
+}
+
+
+ // let footer = grid(
+ // rows: auto,
+ // v(0mm),
+ // line(length: 100%, stroke: 0.6pt), // should be 1.6pt according to guidelines
+ // v(2.5mm),
+ // text(
+ // font: "Roboto",
+ // stretch: 100%,
+ // fallback: false,
+ // weight: "regular",
+ // size: 10pt
+ // )[
+ // #set align(right)
+ // // context needed for page counter for typst >= 0.11.0
+ // #context [
+ // #let counter_disp = counter(page).display()
+ // //#hide(counter_disp)
+ // //#counter_disp
+ // #context {
+ // let after_table_of_contents = query(selector(<__after_table_of_contents>).before(here())).len() >= 1
+ // if after_table_of_contents {counter_disp}
+ // else {hide(counter_disp)}
+ // }
+ // ]
+ // ]
+ // )
diff --git a/validation.typ b/validation.typ
new file mode 100644
index 0000000..4901a89
--- /dev/null
+++ b/validation.typ
@@ -0,0 +1 @@
+= Validation