@font-face {
	font-family: 'Recursive';
	font-weight: 100 1000;
	font-style: oblique 0deg 14deg;
	src: url('/fonts/Recursive_VF_1.085.woff2');
}

html {
	width: 100%;
	height: 100%;

	--background-color: #ffffff;
	--shaded-background-color: #f7f7f7;
	--text-color: #333333;
	--muted-text-color: #999999;
	--accent-color: #0e80cd;
	--secondary-accent-color: #c22c5d;
	--success-color: #2c804d;
}

body {
	font-family: 'Recursive', sans-serif;
	font-variation-settings: "CRSV" 0.5;
	background-color: var(--background-color);
	color: var(--text-color);
	font-size: 16px;
	padding: 0;
	margin: 0;
	line-height: 150%;
	position: relative;
	min-height: 100%;
	text-decoration-skip-ink: none;
}

b, strong {
	font-weight: 700;
}

i, em {
	font-variation-settings: "slnt" -15;
}

a {
	color: var(--accent-color);
	text-decoration: none;
	font-weight: 500;
}

a:hover {
	text-decoration: underline;
	text-decoration-thickness: 1.5px;
	text-underline-offset: 3px;
}

.muted {
	color: var(--muted-text-color);
}

.section-container {
	background-color: var(--this-section-background-color);
	width: 100%;
	padding-top: 20px;
	padding-bottom: 20px;

	--this-section-background-color: var(--background-color);
}

body.striped>.section-container:nth-child(even) {
	--this-section-background-color: var(--shaded-background-color);
}

.section-container > *,
.menu-container menu {
	margin-left: auto;
	margin-right: auto;
	width: calc(100% - 40px);
	max-width: 1000px;
	padding-left: 20px;
	padding-right: 20px;
}

.section-container > ul,
.section-container > ol {
	padding-left: 50px;
	width: calc(100% - 70px);
}

.section-container.wide > * {
	max-width: 1500px;
}

.section-container > menu {
	padding-left: 60px;
}

.section-container.footer > p {
	text-align: center;
	font-size: 80%;
	font-weight: 450;
	color: var(--muted-text-color);
	margin-bottom: 0;
}

.section-container.footer > p a {
	color: var(--muted-text-color);
}

@media (min-width: 1400px) {
	.columns {
		max-width: 1060px;
		display: flex;
		padding-left: 0;
		padding-right: 0;
	}
	.columns.wide {
		max-width: 1600px;
	}

	.column {
		width: 50%;
		margin: 0;
		flex-grow: 1;
		padding-left: 30px;
		padding-right: 30px;
	}
}

.section-container p {
	hyphens: auto;
	text-align: justify;
}

.menu-container {
	box-shadow: 0 5px 5px rgba(0, 0, 0, 0.1);
	position: sticky;
	top: 0px;
	background-color: var(--background-color);
	z-index: 1999;
}

.menu-container menu {
	margin-top: 0;
	margin-bottom: 0;
	overflow-x: auto;
	display: flex;
}

.menu-container menu li {
	display: inline-block;
	padding: 10px 0;
	margin-left: 15px;
	margin-right: 15px;
	border-bottom: 3px solid var(--background-color);
	white-space: nowrap;
}

.menu-container menu li:first-child {
	margin-left: 0;
}
.menu-container menu li:last-child {
	margin-right: 0;
}

.menu-container menu li a {
	color: var(--text-color);
	text-decoration: none;
	font-weight: 400;
	padding-top: 8px;
	padding-bottom: 8px;
}

.menu-container menu li.active {
	border-bottom: 3px solid var(--accent-color);
}

.menu-container menu li.active a {
	color: var(--accent-color);
	font-weight: 500;
}

.menu-container menu li.right-aligned {
	flex-grow: 1;
	text-align: right;
}

.menu-container::after {
	content: "";
	display: block;
	clear: right;
}

.menu-container .submenu-container {
	box-shadow: 0 5px 5px rgba(0, 0, 0, 0.1) inset;
	font-size: 80%;
}

.menu-container menu.submenu li {
	padding-top: 12px;
	padding-bottom: 8px;
}

.menu-container menu.submenu li a {
	font-weight: 450;
}

.menu-container menu.submenu li.active a {
	font-weight: 550;
}

h1 {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 250%;
	margin-bottom: 0;
	line-height: 1.2;
	font-weight: 350;
	text-align: center;
}

h1::before {
	background-image: url('/images/cg-logo-small.svg');
	background-size: contain;
	background-repeat: no-repeat;
	content: '';
	width: 140px;
	height: 140px;
	position: relative;
	display: inline-block;
	vertical-align: middle;
	padding-right: 30px;
}

h2 {
	font-weight: 370;
	font-size: 140%;
}

h3 {
	font-weight: 390;
	font-size: 120%;
	margin-bottom: 10px;
}

h4 {
	font-weight: 600;
	font-size: 100%;
	margin-bottom: 10px;
}

.member-list, .unbulleted-list {
	list-style: none;
	margin-top: 0;
	margin-bottom: 0;
	padding-left: 0;
	text-indent: 2em hanging;
}

.member-list .affiliation {
	color: var(--muted-text-color);
}

.member-list .chair {
	font-weight: 500;
	color: var(--secondary-accent-color);
}

ul.two-columns {
	columns: 2;
	column-gap: 10px;
}

.two-track-list {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
}

h4.track-header {
	margin-top: 5px;
}

.section-container > .member-list,
.section-container > .unbulleted-list {
	padding-left: 20px;
}

.image-container {
	text-align: center;
	max-width: 100%;
	overflow-x: auto;
}

.scrollable-container {
	max-width: 100%;
	overflow-x: auto;
}

.error-number {
	text-align: center;
	font-size: 500%;
	line-height: 1;
	margin: 50px auto;
	color: transparent;
	background: linear-gradient(#00a2de, #0081de);
	background-clip: text;
}

.section-container p.error-explanation {
	text-align: center;
}

.footnote {
	font-size: 80%;
	font-weight: 450;
	line-height: 150%;
	color: var(--muted-text-color);
}

.footnote-id {
	position: relative;
	padding-top: 110px;
	top: -110px;
	line-height: 0;
}

.footnote-link, .footnote-id {
	position: relative;
	top: -.7em;
	font-size: 70%;
	font-weight: 600;
}

/* logo animation */

#logo-animation {
	cursor: pointer;
}

#vertical-rectangles {
	fill: #0081de;
	fill-opacity: 0.2;
}

#horizontal-rectangles {
	fill: #00a2de;
	fill-opacity: 0.2;
}

#polygon-outline {
	fill: none;
	stroke: var(--muted-text-color);
	stroke-linecap: miter;
	stroke-width: 2.6282;
}

#diamond {
	fill: none;
	stroke: var(--text-color);
	stroke-linecap: round;
	stroke-width: 3.2347;
	stroke-dasharray: 586 586;
}

#polygon-label {
	font-style: italic;
	fill: var(--muted-text-color);
	opacity: 0;
}

/* organogram */

#organogram .outline,
#organogram .committee-box,
#organogram .steering-committee-box,
#organogram .local-organizers-box {
	fill: none;
	stroke: var(--muted-text-color);
	stroke-width: 2;
}

#organogram .committee-box {
	fill: #00a2de;
	fill-opacity: 0.2;
}

#organogram .steering-committee-box {
	fill: #0081de;
	fill-opacity: 0.2;
}

#organogram .local-organizers-box {
	stroke-dasharray: 5 5;
}

#organogram text {
	fill: var(--text-color);
}
#organogram text.description {
	font-size: 80%;
	font-weight: 450;
}

/* forms */

.form-field {
	margin: 22px 0;
	display: flex;
	flex-wrap: wrap;
}

.form-field label {
	flex-grow: 0;
	text-align: right;
	width: 25%;
	padding-right: 25px;
	padding-top: 7px;
	box-sizing: border-box;
	vertical-align: text-top;
}

.form-field .field {
	width: 50%;
	font-family: 'Recursive', sans-serif;
	background-color: var(--background-color);
	color: var(--text-color);
	font-size: 16px;
	border: 1px solid var(--muted-text-color);
	box-sizing: border-box;
	padding: 8px;
}

.form-field input.field {
	height: 40px;
}

.form-field textarea.field {
	resize: vertical;
	min-height: 40px;
}

.form-field .form-explanation,
.form-button .form-explanation {
	margin-left: 25%;
	margin-top: 5px;
	margin-bottom: 5px;
	width: 100%;
}

.form-field .error {
	color: var(--secondary-accent-color);
	font-weight: 500;
}

#registration-success-message {
	display: flex;
	align-items: center;
}

#registration-success-message::before {
	content: "✓";
	display: block;
	color: var(--success-color);
	font-weight: 700;
	padding-right: 20px;
	font-size: 50px;
	line-height: 50px;
}

.form-explanation.small {
	font-size: 80%;
	font-weight: 450;
}

.form-button {
	margin: 22px 0;
	display: flex;
	flex-wrap: wrap;
}

.form-button button {
	display: inline-flex;
	align-items: center;
	padding: 0 10px;
	height: 40px;
	box-sizing: border-box;
	font-family: 'Recursive', sans-serif;
	background-color: var(--accent-color);
	color: var(--background-color);
	font-size: 16px;
	border: none;
	margin-left: 25%;
}

.form-button button:disabled {
	opacity: 0.8;
}

.form-button button:disabled .spinner {
	display: inline-block;
	position: relative;
	width: 30px;
	height: 20px;
	vertical-align: center;
}

.form-button button:disabled .spinner::before {
	content: "";
	display: inline-block;
	position: absolute;
	left: 0;
	top: 0;
	width: 20px;
	height: 20px;
	box-sizing: border-box;
	border: 3px solid var(--background-color);
	border-radius: 10px;
	border-left-color: transparent;
	animation: spinning 2s linear infinite;
}

@keyframes spinning {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(360deg);
	}
}

/* CG Week world map */

.world-map-container {
	position: absolute;
	right: 20px;
}

svg .marker {
	fill: var(--muted-text-color);
}

svg .marker.highlighter {
	fill: var(--accent-color);
}

.world-map-container .marker.history {
	opacity: 0;
}

.world-map-container.history-shown .marker.history {
	opacity: 1;
}

/* through link and under construction banners */

.through-link-banner,
.under-construction-banner {
	margin: 40px 0;
	margin-top: 20px;
}
.under-construction-banner {
	background-color: rgb(255, 231, 81, 0.2);
}
.through-link-banner {
	background-color: rgb(14, 128, 205, 0.2);
}

.through-link-notice,
.under-construction-notice {
	display: flex;
	justify-content: center;
	align-items: center;
	position: relative;
	max-width: 1040px;
	min-height: 77px;
	margin: 0 auto;
	padding: 0 200px;
	box-sizing: border-box;
	text-align: center;
}

.through-link-notice::before,
.under-construction-notice::before {
	content: '';
	display: block;
	position: absolute;
	width: 120px;
	left: 20px;
	top: -20px;
	bottom: -20px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
}
.through-link-notice::before {
	background-image: url('/images/through-link.svg');
}
.under-construction-notice::before {
	background-image: url('/images/under-construction.svg');
}

.followed-by-banner {
	padding-bottom: 0;
}

/* location tables */

.location-table {
	width: auto;
	border-collapse: collapse;
	table-layout: fixed;
	width: 100%;
}
.location-table td {
	padding: 2px;
}
.location-table td:first-child {
	font-weight: 600;
	padding-left: 0;
	width: 3.25em;
}
.location-table.with-intervals td:first-child {
	width: 6.4em;
}
.location-table.with-long-entries tr:first-child td {
	padding-top: 0;
}
.location-table.with-long-entries tr td {
	padding-top: 10px;
}
.location-table td {
	vertical-align: top;
}

.column-table-wrapper {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 10px;
	min-width: 55em;
	overflow-x: auto;
}

/* CG:ME archive tables */

.cgme-navbar {
	display: flex;
	flex-direction: row;
}

.cgme-navbar > div {
	width: 33.33333%;
	flex-grow: 1;
}

.cgme-navbar > .to-overview {
	text-align: center;
}

.cgme-navbar > .previous-year {
	text-align: right;
}

.cgme-table {
	width: auto;
	border-collapse: collapse;
	table-layout: fixed;
	width: 100%;
}

.cgme-table td {
	padding-bottom: 30px;
	vertical-align: top;
}

.cgme-table .thumbnail-cell {
	width: 350px;
}

.cgme-table .thumbnail-cell img {
	width: 320px;
	max-width: 100%;
}

.cgme-table .details-cell .title {
	font-weight: 700;
}

.cgme-table .details-cell .authors {
	margin-bottom: 10px;
}

/* collapsable history / summary headers */

summary {
	background-color: var(--this-section-background-color);
	box-shadow: 0 2px 4px var(--this-section-background-color);
	cursor: pointer;
	font-weight: 600;
	padding-top: 10px;
	padding-bottom: 5px;
	position: sticky;
	top: 93px;
}

/* dark mode */

@media(prefers-color-scheme: dark) {
	html {
		--background-color: #171717;
		--shaded-background-color: #111111;
		--text-color: #dddddd;
		--muted-text-color: #777777;
		--accent-color: #66a6e6;
		--secondary-accent-color: #ca6a8a;
		--success-color: #54a674;
	}
	.menu-container {
		box-shadow: 0 5px 5px rgba(0, 0, 0, 0.3);
	}
	.menu-container .submenu-container {
		box-shadow: 0 5px 5px rgba(0, 0, 0, 0.3) inset;
	}
}

/* adaptations for smartphones or small screens */

@media(max-width: 1300px) {
	.section-container.wide > * {
		max-width: 1000px;
	}

	ul.two-columns {
		columns: 1;
	}
}

@media(max-width: 1000px) {
	h1 {
		font-size: 150%;
		font-weight: 400;
		flex-direction: column;
	}
	h1::before {
		margin: 10px auto;
		padding-right: 0;
	}
}

@media(max-width: 900px) {
	.form-field label {
		width: 100%;
		text-align: left;
		margin-bottom: 5px;
	}
	.form-field .field {
		width: 100%;
		max-width: 500px;
	}
	.form-field .form-explanation,
	.form-button .form-explanation {
		margin-left: 0;
	}
	.form-button button {
		margin-left: 0;
	}
}

@media(max-width: 800px) {
	.through-link-notice,
	.under-construction-notice {
		display: block;
		position: relative;
		max-width: 1000px;
		margin: 40px auto;
		padding-top: 142px;
		padding-left: 20px;
		padding-right: 20px;
		padding-bottom: 1px;
		box-sizing: border-box;
		text-align: center;
	}
	.through-link-notice::before,
	.under-construction-notice::before {
		width: 100%;
		top: 20px;
		left: 0;
		bottom: auto;
		height: 120px;
	}

	.world-map-container {
		display: none;
	}

	.cgme-table td {
		display: block;
		width: calc(100% - 40px);
		text-align: center;
		padding-left: 20px;
		padding-right: 20px;
	}

	.cgme-table .thumbnail-cell {
		width: calc(100% - 40px);
		padding-bottom: 10px;
	}

	.cgme-table .details-cell {
		padding-bottom: 40px;
	}

	.cgme-table .details-cell .title {
		margin-bottom: 10px;
	}
}

@media(max-width: 500px) {
	.section-container p {
		text-align: left;
	}
}
