% Colors
\definecolor{pagebackground}{HTML}{FFFFFF}
\definecolor{headercolor}{HTML}{353839}
\definecolor{sidebartitle}{HTML}{353839}
\definecolor{bodytitle}{HTML}{353839}
\definecolor{sidebartext}{HTML}{353839}
\definecolor{altconttext}{HTML}{FFFFFF}
\definecolor{bodytext}{HTML}{353839}
\definecolor{bulletcolor}{HTML}{353839}
\definecolor{linkcolor}{HTML}{FFFFFF}
\definecolor{linecolor}{HTML}{E1A95F}
\definecolor{name}{HTML}{FFFFFF}
\definecolor{jobtitle}{HTML}{FFFFFF}
\RequirePackage[pagecolor=pagebackground, nopagecolor=pagebackground]{pagecolor}

% Heading styles
\titleformat{\section}
{\color{bodytitle}\fontsize{16pt}{16pt}\sffamily\bfseries\addfontfeature{LetterSpace=2}}
{}{0pt}{}

\titleformat{\subsection}
{\color{sidebartitle}\fontsize{16pt}{16pt}\sffamily\bfseries\addfontfeature{LetterSpace=2}}
{}{0pt}{}

\titleformat{\subsubsection}
{\color{bodytitle}\fontsize{12pt}{12pt}\sffamily\addfontfeature{LetterSpace=2}}
{}{0pt}{}

\titlespacing*{\section}{0pt}{0.5cm}{0.4cm}
\titlespacing*{\subsection}{0pt}{0.5cm}{0.4cm}
\titlespacing*{\subsubsection}{0pt}{0.5cm}{0.1cm}

% Defining font styles
\newcommand{\sname}{\color{name}\fontsize{26pt}{26pt}\sffamily\addfontfeature{LetterSpace=3}\MakeUppercase}
\newcommand{\sjobtitle}{\color{jobtitle}\fontsize{16pt}{16pt}\sffamily\addfontfeature{LetterSpace=5}}

% Defining page styles
\pagestyle{fancy}
\fancypagestyle{firstpagestyle}{%
    \fancyhf{}
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
    \fancyhead[C]{%
    \begin{tikzpicture}[remember picture,overlay]
        \node [rectangle, fill=headercolor, anchor=north west, minimum width=\paperwidth+1cm, minimum height=6.5cm] at ($(current page.north west)+(-1cm,1cm)$) {};
        \draw [line width=1pt, color=linecolor] ($(current page.north west)+(7cm,-6cm)$) -- ($(current page.south west)+(7cm,1cm)$);
    \end{tikzpicture}
    }
}

\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhead[C]{%
    \begin{tikzpicture}[remember picture,overlay]
        \draw [line width=1pt, color=linecolor] ($(current page.north west)+(7cm,-1cm)$) -- ($(current page.south west)+(7cm,1cm)$);
    \end{tikzpicture}
}

% Layout for name, job title and sidebar
\setcolumnwidth{5cm,12cm}
\setlength{\columnsep}{1.5cm}
\columncolor{sidebartext}[0]
\columncolor{bodytext}[1]

\newcommand{\makeprofile}{%
    \vspace*{-1.5cm}
    \begin{center}
        \thispagestyle{firstpagestyle}
        {\setstretch{3}
        \begin{adjustbox}{minipage=[c][1.5cm]{.8\textwidth}, cfbox=linecolor 1.5pt}
            \centering
            {\sname\name}
        \end{adjustbox}}

        {\setstretch{1.8}
        \begin{adjustbox}{minipage=[c][0.5cm]{.9\textwidth}}
            \centering
            {\sjobtitle\jobtitle}
        \end{adjustbox}}

        \vspace{1\bigskipamount}
        \altcontact
        \vspace{1\bigskipamount}
    \end{center}
}

% Contact table
\newcommand{\altcontact}{%
    \renewcommand{\arraystretch}{1.3}
    {\color{altconttext}
        \begin{tabularx}{\textwidth}{CCC}
            \ifthenelse{\equal{\location}{}}{}{\locicon\quad \location} &
            \ifthenelse{\equal{\phone}{}}{}{\phoneicon\quad \phone} &
            \ifthenelse{\equal{\mail}{}}{}{\calendaricon\quad \dateofbirth \\}
            \ifthenelse{\equal{\mail}{}}{}{\mailicon\quad \href{mailto:\mail}{\mail} &}
            \ifthenelse{\equal{\linkedin}{}}{}{\linkedinicon\quad \linkedin &}
            \ifthenelse{\equal{\github}{}}{\\}{\githubicon\quad \github \\}
        \end{tabularx}
    }
}

% Margins
\RequirePackage[left=1cm, right=1cm, top=1.5cm, bottom=1.5cm, footskip=0.5cm, headheight=0.5cm]{geometry}

% Personal skills bar
\newcommand\perskills[1]{%
    \ifthenelse{\equal{#1}{}}{\booltrue{perempty}}{\renewcommand{\perskills}{%
        \foreach [count=\i] \x/\y in {#1}{%
            {\x}\\
            \ifthenelse{\equal{\thecolumn}{0}}{%
                \progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=bodytext, filledcolor=bodytext, borderwidth=1pt, emptycolor=pagebackground]{\y}\par\smallskip
                }{%
                \progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=bodytext, filledcolor=bodytext, borderwidth=1pt, emptycolor=pagebackground]{\y}\par\smallskip
            }
        }
    }}
}

% Professional skills bar
\newcommand\proskills[1]{%
    \ifthenelse{\equal{#1}{}}{\booltrue{proempty}}{\renewcommand{\proskills}{%
        \foreach [count=\i] \x/\y in {#1}{%
            {\x}\\
            \ifthenelse{\equal{\thecolumn}{0}}{%
                \progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=bodytext, filledcolor=bodytext, borderwidth=1pt, emptycolor=pagebackground]{\y}\par\smallskip
                }{%
                \progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=bodytext, filledcolor=bodytext, borderwidth=1pt, emptycolor=pagebackground]{\y}\par\smallskip
            }
        }
    }}
}

% Command for drawing language skill circles
% Adapted from AltaCV Template: https://www.overleaf.com/latex/templates/altacv-template/trgqjpwnmtgv
\newcommand\langskills[1]{%
    \ifthenelse{\equal{#1}{}}{\booltrue{langempty}}{\renewcommand{\langskills}{%
        \renewcommand{\arraystretch}{1.4}
        \foreach [count=\i] \x/\y in {#1}{%
            \begin{tabular*}{\columnwidth}{@{}L{.4\columnwidth}L{.6\columnwidth}}
                {\x} &
                \foreach \z in {1,...,5}{%
                    {\ifnumgreater{\z}{\y}{\color{bodytext!50}}{\color{bodytext}}\small{\faCircle}}}\\
            \end{tabular*}
        }
    }}
}
