@page {
	size: letter portrait;
	margin: 0;
}

* {
	box-sizing: border-box;
}

:root {
	--page-width: 8.5in;
	--page-height: 16in;
	--main-width: 6.4in;
	--sidebar-width: calc(var(--page-width) - var(--main-width));
	--decorator-horizontal-margin: 0.2in;

	--sidebar-horizontal-padding: 0.2in;

	/* XXX: using px for very good precision control */
	--decorator-outer-offset-top: 10px;
	--decorator-outer-offset-left: -5.5px;
	--decorator-border-width: 1px;
	--decorator-outer-dim: 9px;
	--decorator-border: 1px solid #ccc;

	--row-blocks-padding-top: 5pt;
	--date-block-width: 0.6in;

	--main-blocks-title-icon-offset-left: -19pt;
}

body {
	width: var(--page-width);
	height: var(--page-height);
	margin: 0;
	font-family: "Roboto", sans-serif;
	font-weight: 300;
	line-height: 1.3;
	color: #444;
	hyphens: auto;
}

h1,
h2,
h3 {
	margin: 0;
	color: #000;
}

li {
	list-style-type: none;
}

li a {
	text-decoration: none;
	color: #444;
}

#main {
	float: left;
	width: var(--main-width);
	padding: 0.25in 0.25in 0 0.25in;
	font-size: 7pt;
}

#sidebar {
	float: right;
	position: relative; /* for disclaimer */
	width: var(--sidebar-width);
	height: 3300px;
	padding: 0.6in var(--sidebar-horizontal-padding);
	background-color: #f2f2f2;
	font-size: 8.5pt;
}

/* main */

/** big title **/
#title,
h1,
h2 {
	text-transform: uppercase;
}

#title {
	margin-top: 50px;
	position: relative;
	left: 0.55in;
	margin-bottom: 0.3in;
	line-height: 1.2;
}

#title h1 {
	font-weight: 300;
	font-size: 18pt;
	line-height: 1.5;
}

#title h1 strong {
	margin: auto 2pt auto 4pt;
	font-weight: 600;
}

* {
	transition: all 0.3s ease;
}
div.date span:hover,
span.place:hover,
span.location:hover,
span.subtitle:hover,
span.amin-noura:hover,
img:hover,
a:not(.testdome-certificate-stamp) span:hover,
a.testdome-certificate-stamp:hover,
h1:hover,
h2:hover,
h3:hover,
h6:hover,
li:hover {
	transform: scale(1.3);
	transform-origin: top left;
	z-index: 23;
	background-color: rgba(250, 250, 250, 0.8);
	padding: 8px;
	border-radius: 4px;
	font-weight: 900;
	font-family: monospace;
}

#personalImage2 {
	visibility: hidden;
	float: left;
	height: 70px;
}

#personalImage {
	position: absolute;
	left: 30px;
	top: 12px;
	width: 140px;
	height: 140px;
	border-radius: 50%;
	object-fit: cover;
	opacity: 1;
	transition: all 0.3s ease;
	opacity: 0.6;
	z-index: 22;
}

#personalImage:hover {
	transform: scale(2);
	opacity: 1;
}

.subtitle {
	display: inline-block;
	font-size: 8pt;
}

/*** categorial blocks ***/

.main-block {
	margin-top: 0.1in;
}

#main h2 {
	position: relative;
	top: var(--row-blocks-padding-top);
	/* XXX: 0.5px for aligning fx printing */
	left: calc((var(--date-block-width) + var(--decorator-horizontal-margin)));
	font-weight: 400;
	font-size: 11pt;
	color: #555;
}

#main h2 > i {
	/* use absolute position to prevent icon's width from misaligning title */
	/* assigning a fixed width here is no better due to needing to align decorator
     line too */
	position: absolute;
	left: var(--main-blocks-title-icon-offset-left);
	z-index: 1; /* over decorator line */
	color: #444;
}

#main h2::after {
	/* extends the decorator line */
	height: calc(var(--row-blocks-padding-top) * 2);
	position: relative;
	top: calc(-1 * var(--row-blocks-padding-top));
	/* XXX: 0.5px for aligning fx printing */
	left: calc(-1 * var(--decorator-horizontal-margin));
	display: block;
	border-left: var(--decorator-border);
	z-index: 0;
	line-height: 0;
	font-size: 0;
	content: " ";
}

/**** minor tweaks on the icon fonts ****/
#main h2 > .fa-graduation-cap {
	left: calc(var(--main-blocks-title-icon-offset-left) - 2pt);
	top: 2pt;
}

#main h2 > .fa-suitcase {
	top: 1pt;
}

#main h2 > .fa-folder-open {
	top: 1.5pt;
}

/**** individual row blocks (date - decorator - details) ****/

.blocks {
	display: flex;
	flex-flow: row nowrap;
}

.blocks > div {
	padding-top: var(--row-blocks-padding-top);
}

.date {
	flex: 0 0 var(--date-block-width);
	padding-top: calc(var(--row-blocks-padding-top) + 2.5pt) !important;
	padding-right: var(--decorator-horizontal-margin);
	font-size: 7pt;
	text-align: right;
	line-height: 1;
}

.date span {
	display: block;
}

.date span:nth-child(2)::before {
	position: relative;
	top: 1pt;
	right: 5.5pt;
	display: block;
	height: 10pt;
	content: "|";
}

.decorator {
	flex: 0 0 0;
	position: relative;
	width: 2pt;
	min-height: 100%;
	border-left: var(--decorator-border);
}

/*
 * XXX: Use two filled circles to achieve the circle-with-white-border effect.
 * The normal technique of only using one pseudo element and
 * border: 1px solid white; style makes firefox erroneously either:
 * 1) overflows the grayshade background (if no background-clip is set), or
 * 2) shows decorator line which should've been masked by the white border
 *
 */

.decorator::before {
	position: absolute;
	top: var(--decorator-outer-offset-top);
	left: var(--decorator-outer-offset-left);
	content: " ";
	display: block;
	width: var(--decorator-outer-dim);
	height: var(--decorator-outer-dim);
	border-radius: calc(var(--decorator-outer-dim) / 2);
	background-color: #fff;
}

.decorator::after {
	position: absolute;
	top: calc(var(--decorator-outer-offset-top) + var(--decorator-border-width));
	left: calc(var(--decorator-outer-offset-left) + var(--decorator-border-width));
	content: " ";
	display: block;
	width: calc(var(--decorator-outer-dim) - (var(--decorator-border-width) * 2));
	height: calc(var(--decorator-outer-dim) - (var(--decorator-border-width) * 2));
	border-radius: calc((var(--decorator-outer-dim) - (var(--decorator-border-width) * 2)) / 2);
	background-color: #555;
}

.blocks:last-child .decorator {
	/* slightly shortens it */
	margin-bottom: 0.25in;
}

/***** fine-tunes on the details block where the real juice is *****/

.details {
	flex: 1 0 0;
	padding-left: var(--decorator-horizontal-margin);
	padding-top: calc(
		var(--row-blocks-padding-top) - 0.5pt
	) !important; /* not sure why but this is needed for better alignment */
}

.details header {
	color: #000;
}

.details h3 {
	font-size: 9pt;
}

.details ul h6 {
	font-size: 8pt;
	margin-top: 12px;
	margin-bottom: 4px;
	margin-left: -4px;
}

.main-block:not(.concise) .details div {
	margin: 0.18in 0 0.1in 0;
}

.main-block:not(.concise) .blocks:last-child .details div {
	margin-bottom: 0;
}

.main-block.concise .details div:not(.concise) {
	/* use padding to work around the fact that margin doesn't affect floated
     neighboring elements */
	padding: 0.05in 0 0.07in 0;
}

.details .place {
	float: left;
	font-size: 7.5pt;
}

.details .location {
	float: right;
}

.details div {
	clear: both;
}

.details .location::before {
	display: inline-block;
	position: relative;
	right: 3pt;
	top: 0.25pt;
	font-family: FontAwesome;
	font-weight: normal;
	font-style: normal;
	text-decoration: inherit;
	content: "\f041";
}

/***** fine-tunes on the lists... *****/

#main ul {
	padding-left: 0.07in;
	margin: 0.08in 0;
}

#main li {
	margin: 0 0 0.04in 0;
}

/****** customize list symbol style ******/
#main li::before {
	position: relative;
	margin-left: -4.25pt;
	content: "• ";
}

.details .concise ul {
	margin: 0 !important;
	-webkit-columns: 2;
	-moz-columns: 2;
	columns: 2;
}

.details .concise li {
	margin: 0 !important;
}

.details .concise li {
	margin-left: 0 !important;
}

/* sidebar */

#sidebar h1 {
	font-weight: 700;
	font-size: 9pt;
}

#sidebar h2 {
	font-weight: 600;
	font-size: 7pt;
	margin-top: 8px;
}

.side-block {
	margin-top: 0.5in;
}

#contact ul {
	margin-top: 0.05in;
	padding-left: 0;
	font-family: "Source Code Pro";
	font-weight: 400;
	line-height: 1.75;
}

#contact li > i {
	width: 9pt; /* for text alignment */
	text-align: right;
}

#skills {
	line-height: 1.5;
}

#skills ul {
	margin: 0.05in 0 0.15in;
	padding: 0;
}

#disclaimer {
	position: absolute;
	bottom: var(--sidebar-horizontal-padding);
	right: var(--sidebar-horizontal-padding);
	font-size: 7.5pt;
	font-style: italic;
	line-height: 1.1;
	text-align: right;
	color: #777;
}

#disclaimer code {
	color: #666;
	font-family: "Source Code Pro";
	font-weight: 400;
	font-style: normal;
}

.place,
.amin-noura {
	display: inline-block;
}
