html {
	min-height: calc(100% + env(safe-area-inset-top));
	padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}

body, #splash {
	position:fixed;
	margin:0;
	padding:0;
	overflow:hidden;
	width:100vw; height:100vh;
	font-size:13pt;
	font-family:Arial, Helvetica, sans-serif;
	background-color:#000;
}

#splash {
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	color:#fff;
}
.loader-container {
	display:flex;
	flex-direction:column;
	width:100%;
	align-items:center;
	justify-content:center;
}
.loader-container.max-height {height:calc(100vh - 50px);}
.loader-container.full-height {height:100%;}
.loader,
.loader:before,
.loader:after {
  border-radius: 50%;
  width: 2.5em;
  height: 2.5em;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation: load7 1.8s infinite ease-in-out;
  animation: load7 1.8s infinite ease-in-out;
}
.loader {
  color: #ffffff;
  font-size: 10px;
  margin-bottom:20px;
  position: relative;
  text-indent: -9999em;
  -webkit-transform: translateZ(0) scale(50%);
  -ms-transform: translateZ(0) scale(50%);
  transform: translateZ(0) scale(50%);
  -webkit-animation-delay: -0.16s;
  animation-delay: -0.16s;
}
.loader:before,
.loader:after {
  content: "";
  position: absolute;
  top: 0;
}
.loader:before {
  left: -3.5em;
  -webkit-animation-delay: -0.32s;
  animation-delay: -0.32s;
}
.loader:after {
  left: 3.5em;
}
@-webkit-keyframes load7 {
  0%,
  80%,
  100% {
    box-shadow: 0 2.5em 0 -1.3em;
  }
  40% {
    box-shadow: 0 2.5em 0 0;
  }
}
@keyframes load7 {
  0%,
  80%,
  100% {
    box-shadow: 0 2.5em 0 -1.3em;
  }
  40% {
    box-shadow: 0 2.5em 0 0;
  }
}

.background-image {
	position:fixed;
	left:0; top:0;
	width:100vw; height:100vh;
	object-fit:cover;
}

.page {
	position:fixed;
	left:0; top:0;
	padding-top:50px;
	width:100vw; height:calc(100vh - 50px);
	overflow-x:hidden;
	overflow-y:scroll;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:flex-start;
	z-index:1;
}
.navbar {
	position:fixed;
	top:0; left:0;
	width:calc(100vw - 30px); height:50px;
	background-color:#000;
	display:flex;
	flex-direction:row;
	align-items:center;
	justify-content:space-between;
	padding:0 15px;
	z-index:99;
}
.navbar, .navbar a {
	color:#fff;
	text-decoration:none;
}

.nav-back {
	width:60px;
	font-size:1.25em;
	transform:rotate(180deg);
	text-align:right;
}
.nav-title {
	font-size:1.1em;
	white-space:nowrap;
	max-width:calc(100% - 140px);
	overflow-x:hidden;
}
.nav-menu {
	width:60px;
	font-size:1.75em;
	text-align:right;
	height:50px; line-height:44px;
}
.navbar span {display:inline-block; width:60px;}

.content {
	position:relative;
	z-index:10;
	width:calc(100% - 20px);
	margin:0 10px;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:space-between;
}
#heatlists .content, #results .content, #program .content, #program-details .content {
	position:fixed;
	height:calc(100vh - 130px);
	margin-top:50px;
	overflow-y:scroll;
}
#program .content, #schedule .content {
	height:calc(100vh - 50px);
	margin-top:0;
}

button, .button {
	font-size:1em;
	height:45px; line-height:45px;
	padding:0 15px;
	background-color:#000;
	color:#fff;
	border:none;
	border-top-left-radius:5px;
	border-top-right-radius:5px;
	border-bottom-left-radius:5px;
	border-bottom-right-radius:5px;
	cursor:pointer;
}
button.full-width, .button.full-width {
	width:100%;
}
.button-group {
	width:100%;
	display:flex;
	flex-direction:column;
}
.button-group button {
	width:100%;
	border-radius:0;
}
.button-group button:first-child {
	border-top-left-radius:5px;
	border-top-right-radius:5px;
}
.button-group button:last-child {
	border-bottom-left-radius:5px;
	border-bottom-right-radius:5px;
}

button, .button, .navbar, #password-modal-inner {
	background: rgb(17,17,17);
	background: -moz-linear-gradient(0deg, rgba(17,17,17,1) 0%, rgba(68,68,68,1) 100%);
	background: -webkit-linear-gradient(0deg, rgba(17,17,17,1) 0%, rgba(68,68,68,1) 100%);
	background: linear-gradient(0deg, rgba(17,17,17,1) 0%, rgba(68,68,68,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#111111",endColorstr="#444444",GradientType=1);
}

#jumbotron {
	width:100vw; min-height:50vw;
}
#jumbotron img {
	width:100%; height:auto;
}

.info-container {
	width:100%;
	overflow:hidden;
	border-radius:5px;
	-webkit-border-radius:5px;
	-moz-border-radius:5px;	
}
.info-container-header {
	font-weight:600;
	padding:7.5px;
	text-align:center;
}
.info-container table {
	width:100%;
	border-collapse:collapse;
}
.info-container td, .info-container th {
	padding:7px 10px;
	text-align:left;
	border-bottom-width:1px;
	border-bottom-style:solid;
	font-size:0.9em;
	vertical-align:top;
}
.info-container th {
	font-weight:500;
	padding-right:10px;
}
.info-container tr:last-child td, .info-container tr:last-child th {
	border:none;
}

/* Homepage */

#home-title {
	font-size:1.2em;
	font-weight:600;
	margin:15px 0 5px 0;
	text-align:center;
}
#home .button-group {
	margin-top:25px;
}
#home-fullsite {
	width:100%;
	margin-top:30px;
}
#home-fullsite button {width:100%;}

/* Dates & Venue */

#venue-image {width:100vw;}
#dates-venue-top {
	display:flex;
	flex-direction:row;
	justify-content:space-between;
	align-items:flex-start;
}
#dates-venue-icon {
	width:calc(45% - 30px);
	position:relative;
	top:-35px; left:0;
	margin:0 10px 0 5px;
	border:5px solid #fff;
	box-shadow:0 0 15px rgba(0,0,0,0.25);
	-webkit-box-shadow:0 0 15px rgba(0,0,0,0.25);
	-moz-box-shadow:0 0 15px rgba(0,0,0,0.25);	
}
#dates-venue-info {
	width:55%;
	text-align:left;
}
#dates-venue-supertitle {
	margin:10px 0 5px 0;
	font-size:0.9em;
	opacity:0.75;
}
#dates-venue-info h3 {
	margin:0 0 30px 0;
}
#dv-venue {
	margin:-5px 0 25px 0;
}
#dv-booking {
	width:100%;
}
#dv-booking-button {
	width:100%;
	margin-bottom:30px;
}
#hotel-map {
	width:100%; height:50vh;
	border:none;
	margin-top:45px;
}

/* contact us */

#contact {
	padding-top:80px;
	padding-bottom:30px;
}
#contact-organizer {
	display:flex;
	flex-direction:row;
	justify-content:space-between;
	align-items:flex-start;
	margin-bottom:20px;
}
#organizer-photo {
	width:calc(50% - 25px);
	border:5px solid #fff;
	box-shadow:0 0 15px rgba(0,0,0,0.25);
	-webkit-box-shadow:0 0 15px rgba(0,0,0,0.25);
	-moz-box-shadow:0 0 15px rgba(0,0,0,0.25);	
}
#organizer-info {
	width:50%;
}
#contact-address-container {
	margin-bottom:15px;
}
#contact-telephone {
	margin-top:8px;
}
#contact-email {
	margin-top:8px;
}

/* Entry Forms */

#entry-forms .content {
	padding:15px;
}
#entry-forms button {
	font-size:0.9em;
	display:flex;
	flex-direction:row;
	justify-content:flex-start;
	align-items:center;
}
#entry-forms button img {
	height:calc(100% - 10px);
	margin:-1px 15px 0 -5px;
}
#entry-forms button span {
	text-align:left;
	width:calc(100% - 40px);
	white-space:nowrap;
	overflow-x:hidden;
	text-overflow:ellipsis;
}
#entry-forms .button-group:first-child {
	margin-bottom:30px;
}
#private-forms button.locked .icon-unlocked {display:none;}
#private-forms button.unlocked .icon-locked {display:none;}
#pdf-viewer iframe {
	position:absolute;
	left:0; top:50px;
	width:100vw; height:calc(100vh - 50px);
	background-color:#fff;
	border:none;
}

#password-modal {
	position:fixed;
	left:0; top:100vh;
	width:100vh; height:0;
	overflow-y:visible;
	z-index:99;
}
#password-modal-inner {
	position:absolute;
	left:0; bottom:-500px;
	width:calc(100vw - 40px); height:auto;
	transition:0.2s ease-in-out;
	padding:20px 20px 45px 20px;
	color:#fff;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:flex-start;
}
#password-modal.modal-visible #password-modal-inner {
	/* top:-360px; */
	bottom:0;
}
#password-modal-inner .modal-close {
	font-size:30px;
	position:absolute;
	right:0; top:0;
	padding:10px;
	cursor:pointer;
}
#password-modal-inner > p {
	margin:5px 0 30px 0;
	width:100%;
	font-size:1.1em;
}
#password-modal-inner .select-wrapper, #password-modal-inner input {
	height:35px; line-height:35px;
	background-color:#fff;
	margin-bottom:10px;
	font-size:1em;
	border:none;
	border-radius:5px;
	-webkit-border-radius:5px;
	-moz-border-radius:5px;
}
#password-modal-inner .select-wrapper {
	width:calc(100% + 5px);
}
#password-modal-inner input {
	width:calc(100% - 15px);
	padding:0 10px;
	color:#000;
}
#password-modal-inner button {
	width:calc(100% + 5px);
	margin-top:15px;
	justify-content:center;
	font-weight:600;
}
#password-modal-inner button .fas {
	font-size:22px;
	margin-right:10px;	
}
#password-modal-inner button[disabled] {
	opacity:0.5;
}
#password-response {
	color:#ff8888;
	padding-top:15px;
	min-height:45px;
}

.select-wrapper {
	position:relative;
}
.select-wrapper:after {
	content:"\25BC";
	position:absolute;
	right:10px; top:0;
	color:#aaa;
	height:35px; line-height:35px;
}
.select-wrapper select {
	width:100%; height:100%;
	border:none;
	background:none;
	-webkit-appearance:none;
	-moz-appearance:none;
	font-size:1em;
	padding:5px 10px;
}
.select-wrapper select:focus {
	outline:none;
}


/* Schedule */

#sessions {
	width:100%;
	margin:15px 0;
	padding:0;
	list-style-type:none;
}
#sessions .session-header {
	display:flex;
	flex-direction:row;
	align-items:center;
	border-bottom-width:1px;
	border-bottom-style:solid;
}
#sessions .session-header p {
	padding:5px 10px;
	margin-bottom:5px;
	text-transform:uppercase;
	font-size:0.9em;
}
#sessions .session-header h3 {
	margin:17px 0 5px 15px;
}
#sessions .session-subheader {
	width:100%;
	display:flex;
	flex-direction:row;
	justify-content:space-between;
	margin-top:5px;
}
#sessions .session-subheader div {
	font-size:0.9em;
	opacity:0.75;
}

#sessions .session-events {
	margin:25px auto 35px auto;
}
#sessions .session-events ul {
	list-style-type:none;
	margin:0; padding:0;
}
#sessions .session-events ul.cat-visible {
	padding-left:15px;
}
#sessions .session-events ul li {
	margin:10px 0;
	display:flex;
	flex-direction:row;
	align-items:flex-start;
}
#sessions .session-events ul li .event-time {
	white-space:nowrap;
	width:80px;
	text-align:right;
}
#sessions .session-events ul li .event-description {
	width:calc(100% - 90px);
	margin-left:15px;
}

#sessions.times-hidden .session-events ul li .event-time {display:none;}
#sessions.times-hidden .session-events ul li .event-description {
	width:calc(100% - 10px);
	margin-left:5px;
}


/* Heat Lists, Results & Program */

.search-bar {
	position:fixed;
	width:100%;
	display:flex;
	align-items:center;
	justify-content:center;
	background-color:#ccc;
	z-index:11;
}
.search-bar input {
	width:100%; height:30px; line-height:30px;
	margin:10px;
	padding:0 15px;
	font-size:1em;
	border:none;
	background-color:#fff;
	border-radius:15px;
	-webkit-border-radius:15px;
	-moz-border-radius:15px;	
}

.competitor-list {
	list-style-type:none;
	margin:5px 0; padding:0;
	width:100%;
}
.competitor-list li {
	height:40px; line-height:40px;
	padding:0 10px;
	font-size:1.1em;
	border-bottom-width:1px;
	border-bottom-style:solid;
	cursor:pointer;
	display:flex;
	flex-direction:row;
	align-items:center;
	user-select:none;
}
.competitor-list li i {
	margin-right:15px;
	font-size:1.2em;
}

.heatlist-team-name {
    width:calc(100% - 20px);
    padding:15px 18px;
	font-weight:500;
	font-size:1.1em;
}
#heatlist-details .content ul {
	list-style-type:none;
	margin:10px 0; padding:0;
	width:100%;
}
#heatlist-details .content ul li {
	margin:15px;
}
#heatlist-details .content ul li div {
	display:flex;
	flex-direction:row;
	align-items:center;
}
#heatlist-details .content ul li div:first-child {
	margin-bottom:5px;
}
.heatlist-heat-number {
	padding:2px 4px 0 4px;
	font-size:0.9em;
	margin-right:10px;
	border-radius:3px;
	-webkit-border-radius:3px;
	-moz-border-radius:3px;
}
.heatlist-heat-session {margin-right:5px;}
.heatlist-heat-time {margin-left:5px;}

/* Results */

.results-event {
	width:100%;
	margin-bottom:15px;
}
.results-event h1 {
	padding:10px;
	font-size:1.25em;
	font-weight:normal;
	margin-bottom:0;
}
.results-round h2 {
	font-weight: normal;
    text-transform: uppercase;
    font-size: 1.1em;
    border-bottom-width: 1px;
    border-bottom-style:solid;
	margin: 15px 5px -5px 5px;
}
.results-round h3 {
	font-weight:normal;
	font-size:1.25em;
	margin-bottom:-10px;
	margin-left:5px;
}
.results-round .table-container {
	width:100%;
	overflow-x:scroll;
	padding-bottom:15px;
	margin-bottom:-15px;
}
.results-round table {}
.results-round table td {
	border:none;
	padding:5px;
	text-align:left;
	vertical-align:top;
	min-width:30px;
}
.results-round table tr.header td {white-space:nowrap;}
.results-round table tr td:first-child {
	min-width:200px;
	text-align:left;
}
.results-round table td.spacer {
	width:5px;
	min-width:0;
}
.results-round table td.spacer, .results-round table tr:first-child td:first-child {background:none;}
.results-round table td.judge-letter {padding:0;}
.results-round table td.judge-letter span, .master-judge-list td.judge-letter span {
	display:flex;
	flex-direction:row;
	align-items:center;
	justify-content:center;
	min-width:30px;
	padding:3px 5px;
	border-radius:5px;
	-moz-border-radius:5px;
	-webkit-border-radius:5px;	
}
.results-round table td.judge-letter span {
	margin-bottom:5px;
}
.results-round td.results-team {
	display:flex;
	flex-direction:row;
	align-items:flex-start;
	justify-content:flex-start;
}
.results-round td.results-team .bib {
	font-weight:bold;
	margin-right:5px;
}
.results-round td.results-team .team-name {
	
}

.master-judge-list {
	width:100%;
	margin:15px 0 30px 0;
}
.master-judge-list h1 {
	font-size:1.2em;
	font-weight:normal;
	margin:0 0 10px 0;
}
.master-judge-list .table-wrapper {padding:5px;}
.master-judge-list table {width:100%;}
.master-judge-list td {padding:5px;}
.master-judge-list td.judge-letter {width:0;}
.master-judge-list td.judge-letter span {
	min-width:0;
	width:30px;
}

/* Program */

#program .content > h3 {
	text-align:center;
	margin-bottom:0;
}
#program ul {
	list-style-type:none;
	margin:0; padding:30px 0;
	width:100%;
}
#program ul li {
	margin-bottom:15px;
	cursor:pointer;
}
#program ul li div {
	text-transform:uppercase;
	border-bottom:1px solid #000;
	font-size:0.9em;
	opacity:0.5;
}

#program ul li h3 {
	font-weight:normal;
	padding:5px 0 0 18px;
	line-height:22px;
	margin:0;
	text-indent:-10px;
}
#program ul li h3:before {
	content:"\25B8";
	position:relative;
	left:-10px;
}

#program-details-header {
	position:fixed;
	font-size: 1.1em;
	padding:5px 0;
    height:50px;
    width: 100%;
    text-align: center;
    z-index: 11;
    display:flex;
    align-items:center;
    justify-content:center;
}

.session-items {
	width:100%;
	margin:15px 0;
}
.session-item {
	width:100%;
}
.si-header {
	display:flex;
	flex-direction:row;
	flex-wrap:nowrap;
	align-items:flex-end;
	width:100%;
	border-bottom-width:1px;
	border-bottom-style:solid;
}
.si-time {
	width:90px;
	font-size:1em;
	margin-right:15px;
	padding:4px 0;
	margin-bottom:5px;
	text-align:center;
	white-space:nowrap;
}
.si-header h3 {
	font-weight:600;
	width:calc(100% - 75px);
	margin:0 0 5px 0;
	font-size:1.1em;
}
.session-item ul {
	list-style-type:none;
	margin:0; padding:0;
}
.session-item .si-details {
	margin-bottom:45px;
}
.si-details h4 {
	margin:10px 0 5px 0;
	font-weight:normal;
}
.session-item .si-entries {
	margin-bottom:30px;
}
.si-entries li {
	display:flex;
	flex-direction:row;
	flex-wrap:nowrap;
	justify-content:space-between;
	margin-bottom:5px;
}
.si-entry-result {
	width:30px; height:20px;
	border-bottom-width:1px;
	border-bottom-style:solid;
	text-align:center;
}
.si-bib {
	font-weight:600;
	margin:0 10px;
	width:40px;
	text-align:center;
}
.si-team {
	width:calc(100% - 90px);
}

/* Heat Counter */

#heat-counter {
	position:fixed;
	bottom:5px;
	width:100vw; height:70px;
	display:flex;
	justify-content:center;
	align-items:center;
	z-index:10;

}
#heat-counter-inner {
	width:calc(100% - 10px);
	max-width:400px;
	margin:10px;
	height:60px;
	display:flex;
	flex-direction:column;
	justify-content:center;
	align-items:center;
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	-moz-backdrop-filter: blur(10px);
	border-radius:10px;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	border-width:1px;
	border-style:solid;
}
#heat-counter small {
	margin:0;
	font-size:0.75em;
	text-transform:uppercase;
}
#heat-counter h3 {
	margin:0;
	font-size:1.33em;
	font-weight:500;
}
.heat-counter-buffer {
	height:90px;
}

/* Countdown */

.countdown {
	margin:30px 0 15px 0;
}
.countdown th, .countdown td {
	padding:0;
	text-align:center;
}
.countdown th span {
	display:inline-block;
	font-size:1.5em;
	width:60px;
	padding:5px 0;
	margin:0 5px;
	border-radius:5px;
	-webkit-border-radius:5px;
	-moz-border-radius:5px;
	border-width:1px;
	border-style:solid;
}
.countdown td {
	font-size:0.75em;
}

/* Judges & Officials */

#officials .content {
	padding:0 30px;
}
#officials .content > h3 {
	font-size:1.33em;
}
#officials .content > ul {
	list-style-type:none;
	margin:0; padding:0;
}
#officials .content > ul li {
	padding:10px;
	margin-bottom:15px;
	text-align:center;
}
#officials .official-photo {
	width:calc(100vw - 40px);
	height:calc(100vw - 40px);
	max-width:250px; max-height:250px;
	margin-bottom:5px;
	object-fit:cover;
}
#officials .official-name {
	font-weight:600;
}

/* Custom Pages */

.custompage-frame {
	position:absolute;
	left:-10px; top:0;
	width:100vw; height:calc(100vh - 50px);
	border:none;
}

/* Judging Schedule */

#jss-header {
	width:calc(100% - 10px);
	margin:15px 0 30px 0;
	display:flex;
	flex-direction:row;
	justify-content:space-between;
	align-items:flex-end;
}
#jss-header img {
	width:100px;
	height:100px;
	object-fit:cover;
	margin-right:15px;
	border:5px solid #fff;
	box-shadow:0 0 15px rgba(0,0,0,0.25);
	-webkit-box-shadow:0 0 15px rgba(0,0,0,0.25);
	-moz-box-shadow:0 0 15px rgba(0,0,0,0.25);
}
#jss-header > div {
	width:calc(100% - 150px);
}
#jss-header h3, #jss-header small {
	display:block;
	width:100%;
	text-align:left;
	margin:0;
}
#jss-content {
	width:100%;
}
#jss-content .info-container {
	margin-bottom:30px;
}
#jss-content .info-container table tr td:first-child {
	width:75px;
}
