\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{PrimeTeX/packages/Layout}[2025-07-09]

% Suppress warning about \showhyphens being changed.
\let\CheckCommand\providecommand

%\usepackage{ifmtarg}

\providecommand{\providelength}[2][0pt]{%
	\ifdeflength{#2}{% It is already defined!
	}{% Not defined, so define it!
		\newlength{#2}%
	}%
	\setlength{#2}{#1}%
}

\RequirePackage{microtype}

% Page Layout
\RequirePackage[
	letterpaper,
	twoside,
	nohead,
	width	= 342pt,
	height	= 576pt,
	inner	= 108pt,
	top 	= 108pt,
	marginparwidth	= 126pt,
	marginparsep	= 12pt,
	footskip		= 36pt,
]{geometry}

\RequirePackage{calc}
\RequirePackage[strict]{changepage}

\newlength{\contentwidth}
\setlength{\contentwidth}{\textwidth + \marginparsep + \marginparwidth}

% Header & Footer Options
\pagestyle{plain}

% Widow & Orphan control.
\RequirePackage[
	defaultlines = 4,
	all,
]{nowidow}

% Paragraph formatting.
\setlength{\parindent}{0pt}
\setlength{\parskip}{2ex plus 0.5ex minus 0.5ex}

% Float Page Configuration
\renewcommand{\topfraction}{0.9}	% max fraction of floats at top
\renewcommand{\bottomfraction}{0.8}	% max fraction of floats at bottom
%   Parameters for TEXT pages (not float pages):
\setcounter{topnumber}{2}
\setcounter{bottomnumber}{2}
\setcounter{totalnumber}{4}     % 2 may work better
\setcounter{dbltopnumber}{2}    % for 2-column pages
\renewcommand{\dbltopfraction}{0.9}	% fit big float above 2-col. text
\renewcommand{\textfraction}{0.07}	% allow minimal text w. figs
%   Parameters for FLOAT pages (not text pages):
\renewcommand{\floatpagefraction}{0.8}	% require fuller float pages
% N.B.: floatpagefraction MUST be less than topfraction !!
\renewcommand{\dblfloatpagefraction}{0.8}	% require fuller float pages

% Line-breaking zero-width space
\newcommand{\zws}{\hspace{0pt}}
% Line-breaking dot
\newcommand{\bdot}{.\hspace{0pt}}

\newlength{\bigfloatoffset}
\setlength{\bigfloatoffset}{0.25in}

% Maximum width adjustment to fit 2 16x9 screensots on one page.
\newlength{\bigfloatoverhang}
\setlength{\bigfloatoverhang}{0.81in}

\newcommand{\bigfloat}[4][\bigfloatoverhang]{%
	\begin{#2}[#3]%
		\begin{adjustwidth*}{-#1+\bigfloatoffset}{-#1-\bigfloatoffset}%
			\begin{minipage}{#1 * 2 + \textwidth}%
				#4%
			\end{minipage}%
		\end{adjustwidth*}%
	\end{#2}%
}

% \newcommand{\bignotfloat}[2][\bigfloatoverhang]{%
% 	\begin{adjustwidth*}{-#1+\bigfloatoffset}{-#1-\bigfloatoffset}%
% 		\begin{minipage}{#1 * 2 + \textwidth}%
% 			#2%
% 		\end{minipage}%
% 	\end{adjustwidth*}%
% }

\newlength{\boxoutpadding}
\setlength{\boxoutpadding}{0.5em}

\newcommand{\boxoutbgcolor}{PrimePaleBlue}
\newcommand{\boxoutfgcolor}{PrimeBlue}

\newcommand{\boxout}[5][0in]{%
	\begin{wrapfigure}{#2}[#1]%
		\fcolorbox{\boxoutfgcolor}{\boxoutbgcolor}{%
			\begin{minipage}{#3}%
				\vspace{\boxoutpadding}%
				{\centering%
					\begin{minipage}{\boxoutpadding*-2 + \textwidth}%
						\label{box:#4}%
						\setlength{\parskip}{\medskipamount}%
						{\centering\slab{\strong{#4}}\par}%
						\small{}#5%
					\end{minipage}%
				\par}%
				\vspace{\boxoutpadding}%
			\end{minipage}%
		}%
	\end{wrapfigure}%
}

\newcommand{\bigboxout}[4][\bigfloatoverhang]{%
	\bigfloat[#1]{figure}{#2}{%
		\fcolorbox{\boxoutfgcolor}{\boxoutbgcolor}{%
			\begin{minipage}{\boxoutpadding*-2 + \textwidth}%
				\vspace{\boxoutpadding}%
				{\centering%
					\begin{minipage}{\boxoutpadding*-2 + \textwidth}%
						\label{box:#3}%
						\setlength{\parskip}{\medskipamount}%
						{\centering\slab{\strong{#3}}\par}%
						\small{}#4%
					\end{minipage}%
				\par}%
				\vspace{\boxoutpadding}%
			\end{minipage}%
		}%
	}%
}