%░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
%░░░      ░░░░░   ░░░░░░░░░░░░░   ░░░░░░░░░░░
%▒   ▒▒▒▒   ▒▒▒   ▒▒▒▒▒▒▒▒▒▒▒▒▒   ▒▒▒▒▒▒▒▒▒▒▒
%▒▒   ▒▒▒▒▒▒▒    ▒  ▒   ▒▒▒   ▒   ▒▒▒▒   ▒▒▒▒
%▓▓▓▓   ▓▓▓▓▓▓▓   ▓▓▓▓   ▓   ▓▓   ▓▓  ▓▓▓   ▓
%▓▓▓▓▓▓▓   ▓▓▓▓   ▓▓▓▓▓▓    ▓▓▓   ▓         ▓
%▓   ▓▓▓▓   ▓▓▓   ▓ ▓▓▓▓▓   ▓▓▓   ▓  ▓▓▓▓▓▓▓▓
%███      ██████   █████   ████   ███     ███
%██████████████████████   ███████████████████

% Global style configs for tcolorbox (to reduce bloat)
\newcommand{\usetcolorboxes}{
    \tcbset{
        mainboxstyle/.style={
                arc=3mm,
                colback=red!5!white,
                colframe=red!75!black,
                colbacktitle=red!75!black,
                fonttitle=\bfseries,
                enhanced,
                attach boxed title to top left={yshift=-2mm,xshift=5mm},
                breakable,
                top=0.4cm,
            }
    }
    \tikzset{
        overlaystyle/.style={
                draw=red!75!black,
                thick,
                fill=red!75!black,
                left,
                anchor=east,
                text=white,
                rounded corners=1mm,
                font=\bfseries,
                xshift=-5mm,
                yshift=1mm,
                inner xsep=3mm,
                inner ysep=1.5mm
            }
    }
}

% -------------------- %
% Small style elements %
% -------------------- %
\newcommand{\setFont}[1]{\fontfamily{#1}\selectfont}
\newcommand{\setFontType}[1]{
    \ifthenelse{\equal{#1}{mono}}{
        \renewcommand{\familydefault}{\ttdefault}
    }{
        \ifthenelse{\equal{#1}{serif}}{
            \renewcommand{\familydefault}{\rmdefault}
        }{
            \renewcommand{\familydefault}{\sfdefault}
        }
    }
}
\newcommand{\rmvspace}{\vspace{-0.5pc}}
\newcommand{\drmvspace}{\vspace{-1pc}}
\renewcommand{\footrulewidth}{0.4pt}
\newcommand{\TODO}{\color{red} \hl{TODO:} \color{black}}
\newcommand{\bi}[1]{\textbf{\textit{#1}}}
\renewcommand{\quote}[1]{``\textit{#1}''}

% Add a color shade (similar to \fhlc, but nicer boxes)
\newcommand{\background}[3]{\tcbox[on line,
        boxsep=2pt,
        left=0pt,
        right=0pt,
        top=0pt,
        bottom=0pt,
        colframe=white,
        frame empty,
        colback=#1!#2!white,
        highlight math style={enhanced}
    ] {\textbf{#3}}}

% Abstraction of background, where the brightness is set to 20%
\newcommand{\shade}[2]{\background{#1}{\arabic{shadeStrength}}{#2}}

% This command is used for the short and inline descriptors
\newcommand{\bg}[2]{\background{#1}{\arabic{descriptorShadeStrength}}{#2}}

% Add a gray backdrop
\newcommand{\backdrop}[1]{\shade{black}{#1}}


% Fancy highlighting (Bold, underlined, colorbox behind it. Shorthand for \fhlc{white}{#1}
\newcommand{\fhl}[1]{\fhlc{white}{#1}}

% Add a colorbox around your text with the color specified. Text is bold and underlined
\newcommand{\fhlc}[2]{\textbf{\underline{\colorbox{#1}{#2}}}}

% Draw box around links. First arg link, second arg display
\newcommand{\hlhref}[2]{\color{MidnightBlue}\fbox{\href{#1}{#2}}\color{black}}

% Same for urls (just one arg tho)
\newcommand{\hlurl}[1]{\color{MidnightBlue}\fbox{\url{#1}}\color{black}}

% Spacing (horizontal)
\newcommand{\smallhspace}{\hspace{2mm}}
\newcommand{\mediumhspace}{\hspace{5mm}}
\newcommand{\largehspace}{\hspace{1cm}}

% ----------------- %
% Table of contents %
% ----------------- %

% Print a table of contents as a tcolorbox
\newcommand{\printtoc}[1]{
    \renewcommand{\cfttoctitlefont}{}
    \renewcommand{\cftaftertoctitle}{\vspace{-0.75cm}}
    \renewcommand{\contentsname}{}
    \begin{tcolorbox}[colback=black!5!white,colbacktitle=#1!75!black,coltitle=black,enhanced,attach boxed title to top center={yshift=-2mm},
        title={\Large \ifnum\value{lang}<2{Contents}\else {Inhaltsverzeichnis}\fi},fonttitle=\bfseries,breakable]
        \hspace{1cm}
        \tableofcontents
    \end{tcolorbox}
}
