\documentclass[12pt,a4paper]{article}

% --- Encoding & Language ---
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{microtype}
\usepackage{lmodern}

% --- Page Layout ---
\usepackage[a4paper,
  top=2.5cm, bottom=2.5cm,
  left=2.5cm, right=2.5cm,
  headheight=15pt]{geometry}

% --- Header / Footer ---
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{truncate}


% --- Tables & Figures ---
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{array}
\usepackage{calc}
\usepackage{float}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{xcolor}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}

% --- Math ---
\usepackage{amsmath}
\usepackage{amssymb}

% --- Code ---
\usepackage{fancyvrb}
\usepackage{listings}
$if(highlighting-macros)$
$highlighting-macros$
$endif$

% --- Hyperlinks ---
\usepackage{hyperref}
\hypersetup{
  colorlinks=true,
  linkcolor=black,
  filecolor=black,
  citecolor=black,
  urlcolor=blue,
  pdftitle={$title$},
  pdfauthor={Gruppe $if(gruppe)$$gruppe$$endif$},
}

% --- Pandoc compatibility ---
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}

% --- Absatzformatierung: kein Einzug, sichtbarer Abstand zwischen Absaetzen ---
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.6\baselineskip}

% --- Section breaks: jede H1 (section) beginnt auf einer neuen Seite ---
\let\oldsection\section
\renewcommand{\section}{\clearpage\oldsection}

% --- CSL Bibliography (pandoc 3.x --citeproc, kein enumitem nötig) ---
$if(csl-refs)$
\def\citeproctext{}
\def\citeproc#1#2{\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
  \let\@cite@ofmt\@firstofone
  \def\@biblabel#1{}
  \def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2]
 {\begin{list}{}{%
  \setlength{\leftmargin}{\cslhangindent}
  \setlength{\itemindent}{-1\cslhangindent}
  \setlength{\parsep}{\parskip}
  \setlength{\itemsep}{#2\baselineskip}}}
 {\end{list}}
\newcommand{\CSLBlock}[1]{\item{}\textnormal{#1}\strut}
\newcommand{\CSLLeftMargin}[1]{\item[\textnormal{#1}]}
\newcommand{\CSLRightInline}[1]{\textnormal{\hangindent0em #1}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$

% =============================================================================
% Metadata commands (with defaults)
% =============================================================================
$if(hochschule)$\newcommand{\SMHochschule}{$hochschule$}$else$\newcommand{\SMHochschule}{Hochschule (nicht gesetzt)}$endif$
$if(fachbereich)$\newcommand{\SMFachbereich}{$fachbereich$}$else$\newcommand{\SMFachbereich}{Fachbereich Informatik}$endif$
$if(studiengang)$\newcommand{\SMStudiengang}{$studiengang$}$else$\newcommand{\SMStudiengang}{B.Sc. IT-Sicherheit}$endif$
$if(modul)$\newcommand{\SMModul}{$modul$}$else$\newcommand{\SMModul}{Sicherheitsmanagement (SM 2026)}$endif$
$if(dozent)$\newcommand{\SMDozent}{$dozent$}$else$\newcommand{\SMDozent}{T. Wa\ss{}mann}$endif$
$if(aufgabenkennung)$\newcommand{\SMAufgabenkennung}{$aufgabenkennung$}$else$\newcommand{\SMAufgabenkennung}{}$endif$
$if(aufgabentyp)$\newcommand{\SMAufgabentyp}{$aufgabentyp$}$else$\newcommand{\SMAufgabentyp}{}$endif$
$if(gruppe)$\newcommand{\SMGruppe}{$gruppe$}$else$\newcommand{\SMGruppe}{X}$endif$
$if(usecase)$\newcommand{\SMUsecase}{$usecase$}$else$\newcommand{\SMUsecase}{}$endif$
$if(semester)$\newcommand{\SMSemester}{$semester$}$else$\newcommand{\SMSemester}{}$endif$
$if(abgabedatum)$\newcommand{\SMAbgabedatum}{$abgabedatum$}$else$\newcommand{\SMAbgabedatum}{\today}$endif$
$if(kapitel)$\newcommand{\SMKapitel}{$kapitel$}$else$\newcommand{\SMKapitel}{\text{}}$endif$
$if(kapitelkennung)$\newcommand{\SMKapitelkennung}{$kapitelkennung$}$else$\newcommand{\SMKapitelkennung}{\text{}}$endif$

% =============================================================================
% Header / Footer (every page except title)
% =============================================================================
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\small\textbf{Gruppe~\SMGruppe{}} - \SMKapitelkennung{}: \truncate{60ex}{\SMKapitel{}}}
\fancyhead[R]{\small\SMAufgabenkennung~-~\SMAufgabentyp}
\fancyfoot[C]{\small Seite~\thepage~von~\pageref{LastPage}}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}

% =============================================================================
\begin{document}

% --- Title Page --------------------------------------------------------------
\begin{titlepage}
  \thispagestyle{empty}
  \centering
  
  % uni / studiengang
  {\Large\textbf{\SMHochschule}}\par\vspace{0.25cm}
  {\large\SMFachbereich}\par\vspace{0.25cm}
  {\large\SMStudiengang}\par

  \vspace{0.8cm}

  % modul / dozent
  {\normalsize Modul:~\textbf{\SMModul}}\par\vspace{0.4cm}
  {\normalsize Dozent:~\SMDozent}\par

  \vspace{0.8cm}
  \noindent\rule{\linewidth}{0.6pt}\par
  
  % aufgabe / thema
  \vspace{1.2cm}
  {\LARGE\textbf{\SMAufgabentyp{} \SMAufgabenkennung}}\par\vspace{0.35cm}
  {\normalsize \textbf{\SMKapitelkennung{}:} \SMKapitel{}}\par
  \vspace{0.8cm}

  \noindent\rule{\linewidth}{0.6pt}\par
  
  % gruppen infos
  \vspace{0.8cm}
  {\large\textbf{Gruppe~\SMGruppe}}\par\vspace{0.25cm}
  $if(usecase)$\vspace{0.35cm}{\normalsize Use-Case:~\SMUsecase}\par$endif$

  \vspace{0.4cm}
  {\normalsize\textbf{Gruppenmitglieder:}}\par
  \vspace{0.4cm}
  $for(mitglieder)${\normalsize $it.name$$if(it.matrikel)$~~(Matr.-Nr.~$it.matrikel$)$endif$}\par\vspace{0.15cm}
  $endfor$
  
  % semester
  \vfill
  {\normalsize Semester:~\SMSemester}\par
  {\normalsize Abgabedatum:~\SMAbgabedatum}\par
\end{titlepage}

\setcounter{page}{1}

% --- Table of Contents -------------------------------------------------------
$if(toc)$
\tableofcontents
\clearpage
$endif$

% --- Body --------------------------------------------------------------------
$body$

\end{document}
