*{
	margin:0;
	padding:0;
}

:root{
	--main-bg:#2A79B8;
	--main-content: rgba(245, 245, 245, 0.8);
	--main-bg-highlight:#0D1C2D;
	--main-card:#14263B;
	--main-text:#494b4f;
	--main-subtext:#EBEBEB;
	--main-a:#fff;
	--main-a-pre: #DBDBDBFF;
	--main-a-bg:#1C9FE2FF;
	--text-size:18px;
	--ease: cubic-bezier(0.5, 0.2, 0.12, 1.0);
	--hoverdelay:cubic-bezier(0.07, 1, 1, 1);
	--spin:cubic-bezier(0.7, 0.25, 0.25, 0.7);
	--corners:8px;
	--shadow-colour:#1D2439;
	--site-width: 1600px;
	--site-main-width:  800px;
	--site-resize-width: 1200px;
	--header-height: 160px;
	--ajax-height: 300px;
	--title-top: 10px;
	--colour-box-height: 65px;
	--shadow-elements: rgba(50, 50, 93, 0.3) 0px 6px 12px -5px, rgba(0, 0, 0, 0.3) 0px 12px 14px -8px;
	--shadow-elements-active: rgba(50, 50, 93, 0.5) 0px 4px 10px -5px, rgba(0, 0, 0, 0.5) 0px 8px 12px -8px;
	--transition-time: .25s;
}

article,
footer,
header,
main,
section{
  display: block;
}

html{
	width:100%;
	height:100%;
}

body{
	display:block;
	width:100%;
	height:100%;
	font-size:var(--text-size);
	font-family:'Red Hat Text',Arial,sans-serif !important;
	color:var(--main-text);
	font-weight:400;
	background: #4DADE1EB;
}

/* Header Layout */

header{
	position: fixed;
	color: var(--main-a);
	overflow: hidden;
	user-select: none;
	width: 100%;
	height: 100%;
	background-size: 100% 100%;
	background-position: 0px 0px,0px 0px,0px 0px,0px 0px,0px 0px;
	background-image: radial-gradient(18% 28% at 80% 45%, #4DADE1EB 7%, #073AFF00 100%),radial-gradient(70% 53% at 35% 77%, #73F2FFFF 0%, #073AFF00 100%),radial-gradient(35% 56% at 92% 87%, #726BF1F5 0%, #073AFF00 100%),radial-gradient(74% 86% at 67% 38%, #61E6F5D1 20%, #073AFF00 100%),linear-gradient(125deg, #46A9E9FF 1%, #120220FF 100%);
	background-repeat: no-repeat;
	background-attachment: fixed;
	background-position: center;
	z-index: -2;
}

#dot-ring{
	position: absolute;
	mix-blend-mode: overlay;
	overflow: visible;
	top: -8px;
	bottom: 0;
	height: 134px;
	width: 134px;
	margin: auto 0;
	transform: rotate(22.5deg);
}

#dot-ring circle#dr-ring{
	fill: none;
	stroke: white;
	stroke-width: 2.7;
	stroke-dasharray: 428;
}

#dot-ring circle#dr-dot{
	fill: white;
}

#titlewrap{
	position: relative;
	height: var(--header-height);
	max-width:var(--site-width);
	padding: 0 20px;
	box-sizing: border-box;
	margin: -80px auto 0 auto;
	top: 50%;
}

#titlewrap h1{
	height: 100%;
	line-height: var(--header-height);
	mix-blend-mode: overlay;
	margin: 0 0 0 5.5px;
}

#titlewrap h1 i{
	font-style: normal;
	color: rgba(255,255,255,0.0);
}

#header-wrap{
	position: fixed;
	width: 100%;
	height: 100%;
	overflow: hidden;
	z-index: -2;
}

main{
	width: 100%;
	max-width:var(--site-width);
	margin: 0 auto;
	box-sizing: border-box;
}

#content{
	float: right;
	width: 880px;
	min-width: 880px;
	box-sizing: border-box;
	overflow-y: hidden;
	padding: 20px 0 10px 0;
}

/* Text */

h1,h2,h3{
	color: var(--main-a);
	font-weight: 300;
}

h1{
	font-size: 64px;
}

h2{
	font-size: 42px;
	mix-blend-mode: overlay;
}

#content h2{
	padding:  0 28px;
}

h3{
	font-size: 28px;
}

a,button{
	display: inline-block;
	position: relative;
	text-decoration: none;
	color: var(--main-a);
	opacity: 100%;
	cursor: pointer;
	padding: 6px 10px;
	text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.65);
	-webkit-user-select: none;
	-moz-user-select: -moz-none;
	-ms-user-select: none;
	user-select: none;
	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
	pointer-events: all;
	box-sizing: border-box;
	border-radius: 10px;
}

button{
	background: none;
	border: none;
	font: inherit;
	cursor: pointer;
	outline: inherit;
}

a::after, #lightbox-close::after,button::after{
	pointer-events: all;
	content: '';
	display: block;
	position: absolute;
	width: 100%;
	height: 100%;
	z-index: -1;
	top: 0px;
	left: 0px;
 	background: #4b84c8;
	background: linear-gradient(30deg, #5f45df 0%, #67d9ee 100%);
	box-shadow: rgba(50, 50, 93, 0.0) 0px 0px 0px -5px, #67d9ee 0px 0px 0px -8px;
	filter: grayscale(100%) contrast(0%);
	opacity: 60%;
	transition: opacity var(--transition-time) var(--ease), box-shadow var(--transition-time) var(--ease), filter var(--transition-time) var(--ease);
	-webkit-transition: opacity var(--transition-time) var(--ease), box-shadow var(--transition-time) var(--ease), filter var(--transition-time) var(--ease);
	border-radius: 10px;
}

a:hover::after,a:focus::after,button.selected::after,button:hover::after,button:focus::after{
	opacity: 100%;
	filter: grayscale(0%) contrast(100%);
	
}

a:hover::after,a:focus::after,button:hover::after,button:hover::after {
	box-shadow:#5f45df 0px 4px 10px -5px, #67d9ee 0px 8px 12px -8px;
}

a i{
	font-family: icons;
	font-style: normal;
	vertical-align: middle;
	margin: -4px 0 0 1px;
}

i.icon-ultraleap{
	margin: -6.5px 1px 2px -2px;
}

h3 i.icon-ultraleap{
	margin: 0 0 0 -5px;
}

p{
	margin: 0 0 9px 0;
}

p:last-child{
	margin: 0;
}

/* Links */

#links{
	padding: 5px 15px 15px 15px;
}

#links div{
	display: inline-block;
	margin: 10px 10px 0 0;
}

/* Filters */

#filters p:first-child{
	margin:0;
}

.tag-button{
	margin: 10px 10px 0 0;
}

/* Portfolio Boxes */

#portfolio{
	position: relative;
	box-sizing: border-box;
	margin: -10px 0;
}

#portfolio::after, #links div::after {
  content: "";
  clear: both;
  display: table;
}

section .colour-box{
	float: left;
	position: relative;
	width: 100%;
	box-sizing: border-box;
	margin: 10px 0;
	height: var(--colour-box-height);
	box-shadow:var(--shadow-elements);
	transition: box-shadow var(--transition-time) var(--ease), height var(--transition-time) var(--ease), margin var(--transition-time) var(--ease);
	background: var(--main-content);
	overflow: hidden;
	border-radius: 15px;
}

section .colour-box.hidden{
	height:0 !important;
	margin:0 !important;
}

section .colour-box:hover, section .colour-box.open{
	box-shadow:rgba(50, 50, 93, 0.5) 0px 6px 12px -5px, rgba(0, 0, 0, 0.5) 0px 12px 14px -8px;
}

section .colour-box.open{
	height: var(--cbox-height);
}

section .colour-box .date{
	position: absolute !important;
	right: 50px;
	top: 18px;
	z-index: 0;
}

section .colour-box .image-wrapper{
	height: var(--colour-box-height);
	width: 100%;
	overflow:hidden;
}

section .colour-box .colour-image{
	height: var(--colour-box-height);
	width: 100%;
	background-position: center center;
	background-size: cover;
	filter: grayscale(100%) contrast(30%) brightness(0.75) blur(3px);
	scale:1.035;
	transition: filter var(--transition-time) var(--ease), scale var(--transition-time) var(--ease);
	overflow:hidden;
}

section .colour-box:hover .colour-image, section .colour-box.open .colour-image{
	filter: grayscale(5%) contrast(70%) brightness(1.0) blur(0);
	scale:1.06;
}

section .colour-box h3{
	position: absolute;
	left: 15px;
	top: 0px;
	right: 110px;
	line-height: var(--colour-box-height);
	text-shadow: 0px 0px 5px rgba(0, 0, 0, 0.85);
	transition: text-shadow var(--transition-time) var(--ease);
	cursor: pointer;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

section .colour-box:hover h3, section .colour-box.open h3{
	text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.95);
}

section .colour-box .arrow{
	color: var(--main-a);
	font-family: icons;
	display: block;
	position: absolute;
	right: 0;
	top: 0;
	width: 55px;
	height: var(--colour-box-height);
	font-size: 22px;
	line-height: var(--colour-box-height);
	text-align: center;
	background-position: 50% 50%;
	transition: transform var(--transition-time) var(--ease);
	text-shadow: 0px 0px 5px rgba(0, 0, 0, 0.85);
	cursor: pointer;
}

section .colour-box.open .arrow{
	transform:rotateX(180deg);
}

section .colour-box .colour-gradient{
	position: absolute;
	width: 100%;
	height: var(--colour-box-height);
	top: 0;
	left: 0;
	background: rgb(75,132,200);
	background: linear-gradient(30deg, var(--grad-bottom) 0%, var(--grad-top) 100%);
	opacity: 60%;
	cursor: pointer;
}

section .colour-box .colour-click{
	position: absolute;
	top: 0;
	left: 0;
	height: var(--colour-box-height);
	width: 100%;
	cursor: pointer;
	z-index: 3;
}

/* Content */

section .colour-box .content{
	position: relative;
	overflow: hidden;
	height: auto;
	transition: height var(--transition-time) var(--ease);
	padding: 15px;
	z-index: 3;
}

section .colour-box .content p:first-child{
	margin: 5px 0 7px 0;
}

section .colour-box .images{
	position: relative;
	height: 200px;
	margin: 0 0 10px 0;
}

section .colour-box .images .ibox, section .colour-box .images .vbox{
	float: left;
	position: relative;
	display: inline-block;
	user-select: none;
	height: 100%;
	object-fit: cover;
	border-radius: 10px;
}

section .colour-box .images img{
	user-select: none;
	height: 100%;
	width: 100%;
	object-fit: cover;
	font-size: 0;
	border-radius: 10px;
}

section .colour-box .images .ibox:before, #lightbox::before {
  content: " ";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 80px;
  height: 80px;
  border: 2px solid var(--main-text);
  border-color: transparent var(--main-text) transparent var(--main-text);
  border-radius: 50%;
  animation: loader 1s linear infinite;
  z-index: -1;
}

#lightbox::before{
	margin: -40px 0 0 0;
	border: 2px solid var(--main-a);
	border-color: transparent var(--main-a) transparent var(--main-a);
}

@keyframes loader {
  0% {
    transform: translate(-50%,-50%) rotate(0deg);
  }
  100% {
    transform: translate(-50%,-50%) rotate(360deg);
  }
}

section .colour-box .images iframe{
	width: 100%;
	height: 100%;
	overflow: hidden;
	border-radius: 10px;
	background: #000;
}

section .colour-box .images .ibox::after{
	cursor: pointer;
	content: '\e907';
	font-family: 'icons';
	position: absolute;
	color: var(--main-a);
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	text-align: center;
	line-height: 200px;
	font-size: 28px;
	background:rgba(0,0,0,0.5);
	opacity: 0%;
	mix-blend-mode: luminosity;
	transition: opacity var(--transition-time) var(--ease);
	border-radius: 10px;
}

section .colour-box .images .ibox:hover::after{
	opacity: 100%;
}

section .colour-box .images .ibox{
	box-shadow: none;
	transition: box-shadow var(--transition-time) var(--ease);
}

section .colour-box .images .ibox:hover{
	box-shadow:var(--shadow-elements-active);
}

section .colour-box .images .image1{
	width: calc(33% - 5px);
	margin: 0 5px 0 0;
}

section .colour-box .images .image2{
	width: calc(34% - 10px);
	margin: 0 5px;
}

section .colour-box .images .image3{
	width: calc(33% - 5px);
	margin: 0 0 0 5px;
}

section .colour-box .images.vid .image1{
	width: calc(40% - 5px);
}

section .colour-box .images.vid .image2{
	width: calc(30% - 7.5px);
}

section .colour-box .images.vid .image3{
	width: calc(30% - 7.5px);
}

section .colour-box .images .image51{
	width: calc(50% - 5px);
	margin: 0 5px 0 0;
}

section .colour-box .images .image52{
	width: calc(50% - 5px);
	margin: 0 0 0 5px;
}

section .colour-box .content .stats{
	margin: -5px 0 5px 0;
}

section .colour-box .content .stats::after, section .colour-box .date::after{
	content: "";
	clear: both;
	display: table;
}

section .colour-box .content .stats p{
	display: inline-block;
	margin: 5px 0px 0 0;
}

section .colour-box .date, section .colour-box .content .stats .cat, section .colour-box .content .stats .link{
	float: left;
	position: relative;
	padding: 4px 8px;
	color: var(--main-a);
	text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.75);
}

section .colour-box .content .stats .cat{
	padding: 6px 10px;
	margin: 5px 10px 0 0;
}

section .colour-box .content .stats a, section .colour-box .content .stats .link{
	margin: 5px 0px 0 0;
	float: right;
}

section .colour-box .content .stats .cat::after, section .colour-box .date::after{
	content: "";
	clear: both;
	display: block;
	position: absolute;
	width: 100%;
	height: 100%;
	z-index: -2;
	top: 0px;
	left: 0px;
	opacity: 100%;
	border-radius: 10px;
}

section .colour-box .content .stats .cat::after{
	box-shadow: none !important;
}

section .colour-box .date::after{
	background: rgb(40.163, 43.988, 55.462, 0.45);
}

/* Sections */

section.prow{
	position: relative;
	margin: 0 20px 20px 20px;
}

section.fill{
	padding: 15px;
}

section.fill::after,#content-dynamic::after,#papers .paper::after{
	content: '';
	position: absolute;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	background: var(--main-content);
	z-index: -2;
	box-shadow:var(--shadow-elements);
	border-radius: 15px;
}

/* Lightbox */

#lightbox{
	position: fixed;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	pointer-events: none;
	opacity: 0%;
	background: rgba(0,0,0,.85);
	z-index: 5;
	padding: 20px;
	box-sizing: border-box;
	transition: opacity var(--transition-time) var(--ease);
}

#lightbox-title{
	width: 100%;
	height: 50px;
	color: var(--main-a);
	max-width: var(--site-resize-width);
	margin: 0 auto;
}

#lightbox-title p{
	line-height: 35px;
	font-size: 24px;
	padding: 0 70px 0 0;
}

#lightbox-close{
	position: absolute;
	top: 19px;
	right: 19px;
	height: 50px;
	width: 50px;
	text-align: center;
	line-height: 54.5px;
	font-size: 28px;
	border: 1px solid rgba(255, 255, 255, 1.0);
	text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.65);
	cursor: pointer;
	border-radius: 7px;
}

#lightbox-close::after{
	opacity: 0%;
	filter: none;
}

#lightbox-close:hover::after,#lightbox-close:focus::after{
	opacity: 100%;
	box-shadow:var(--shadow-elements-active);
}

#lightbox img{
	display: block;
	width: 100%;
	height: 100%;
	margin: 20px auto;
	max-width: var(--site-resize-width);
	max-height: 1000px;
	object-fit: contain;
}

#lightbox.open{
	opacity: 100%;
	pointer-events: all;
}

/* Tags */

[data-tag]{
	text-transform: capitalize;
}

[data-tag='xr']{
	text-transform: uppercase;
}

:root{
	--rec-a:#CD00B7;
	--rec-b:#EA8400;

	--ultraleap-a:#12A893;
	--ultraleap-b:#09EE8E;

	--xr-a:#3905CC;
	--xr-b:#F02DF7;

	--research-a:#00B3C6;
	--research-b:#BAEE00;

	--unity-a:#0E0E0F;
	--unity-b:#a3a3db;

	--csharp-a:#490086;
	--csharp-b:#F0009E;

	--cplus-a:#011f66;
	--cplus-b:#68C4FB;

	--android-a:#019711;
	--android-b:#4BF76E;

	--web-a:#C11200;
	--web-b:#FFAE73;
}

[data-tag='rec']::after{
	background: linear-gradient(30deg, var(--rec-a) 0%, var(--rec-b) 100%);
}
[data-tag='rec']:hover::after{
	box-shadow: var(--rec-a) 0px 4px 10px -5px, var(--rec-b) 0px 8px 12px -8px;
}

[data-tag='ultraleap']::after{
	background: linear-gradient(30deg, var(--ultraleap-a) 0%, var(--ultraleap-b) 100%);
}
[data-tag='ultraleap']:hover::after{
	box-shadow: var(--ultraleap-a) 0px 4px 10px -5px, var(--ultraleap-b) 0px 8px 12px -8px;
}

[data-tag='xr']::after{
	background: linear-gradient(30deg, var(--xr-a) 0%, var(--xr-b) 100%);
}
[data-tag='xr']:hover::after{
	box-shadow: var(--xr-a) 0px 4px 10px -5px, var(--xr-b) 0px 8px 12px -8px;
}

[data-tag='research']::after{
	background: linear-gradient(30deg, var(--research-a) 0%, var(--research-b) 100%);
}
[data-tag='research']:hover::after{
	box-shadow: var(--research-a) 0px 4px 10px -5px, var(--research-b) 0px 8px 12px -8px;
}

[data-tag='unity']::after{
	background: linear-gradient(30deg, var(--unity-a) 0%, var(--unity-b) 100%);
}
[data-tag='unity']:hover::after{
	box-shadow: var(--unity-a) 0px 4px 10px -5px, var(--unity-b) 0px 8px 12px -8px;
}

[data-tag='c#']::after{
	background: linear-gradient(30deg, var(--csharp-a) 0%, var(--csharp-b) 100%);
}
[data-tag='c#']:hover::after{
	box-shadow: var(--csharp-a) 0px 4px 10px -5px, var(--csharp-b) 0px 8px 12px -8px;
}

[data-tag='c++']::after{
	background: linear-gradient(30deg, var(--cplus-a) 0%, var(--cplus-b) 100%);
}
[data-tag='c++']:hover::after{
	box-shadow: var(--cplus-a) 0px 4px 10px -5px, var(--cplus-b) 0px 8px 12px -8px;
}

[data-tag='android']::after{
	background: linear-gradient(30deg, var(--android-a) 0%, var(--android-b) 100%);
}
[data-tag='android']:hover::after{
	box-shadow: var(--android-a) 0px 4px 10px -5px, var(--android-b) 0px 8px 12px -8px;
}

[data-tag='web']::after{
	background: linear-gradient(30deg, var(--web-a) 0%, var(--web-b) 100%);
}
[data-tag='web']:hover::after{
	box-shadow: var(--web-a) 0px 4px 10px -5px, var(--web-b) 0px 8px 12px -8px;
}

/* Resizing */

@media screen and (max-width: 1170px){

	#content{
		padding: 180px 0 10px 0;
	}

	#titlewrap{
		display: block;
		top: var(--title-top);
		margin: 0 auto;
		margin: 0 auto;
	}
}

@media screen and (max-width: 895px){
	#content{
		width: 100%;
		min-width: 100%;
	}
}

@media screen and (max-width: 700px){
	section .content .images.vid {
		height: 410px;
	}

	section .colour-box .images.vid .image1{
		height: 200px;
		width: 100%;
	}

	section .colour-box .images.vid .image2, section .colour-box .images.vid .image3{
		width: calc(50% - 5px);
		margin: 0;
		height: 200px;
	}

	section .colour-box .images.vid .image2{
		margin: 10px 5px 0 0;
	}
	section .colour-box .images.vid .image3{
		margin: 10px 0 0 5px;
	}
}