@layer googleicons, theme, global, print;
@import url("/static/googleicons.css") layer(googleicons);
@import url("/static/pico.css") layer(theme);

@view-transition {
  navigation: auto;
}

[view-transition-name] {
	view-transition-name: attr(view-transition-name);
}

@layer global {
	:root {
		font-family: Inter, sans-serif;
		font-feature-settings: 'liga' 1, 'calt' 1; /* fix for Chrome */
	}
	@supports (font-variation-settings: normal) {
		:root { font-family: InterVariable, sans-serif; }
	}
	:root {
		--pico-nav-element-spacing-vertical: 0;
	}

	body {
		display: grid;
		grid-template: 
			"navmenu header" auto
			"navmenu main" 1fr
			"navmenu footer" auto
			/ auto 1fr;

		overflow: hidden;
		height: 100vh;
		width: 100vw;
		
		#header {
			grid-area: header;
		}
		#navmenu {
			grid-area: navmenu;
		}
		main {
			grid-area: main;
			/* old x/y styles for safari */
			overflow-x: visible;
			overflow-y: auto;
			/* new inline/block styles */
			overflow-inline: visible;
			overflow-block: auto;
		}
		#footer {
			grid-area: footer;
		}
	}

	#skip-to-main-content {
		position: absolute;
		top: -1000px;
		left: -1000px;
		z-index: 4;
		padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);
		font-size: larger;
		outline: var(--pico-outline-width) solid black;
		border-bottom-right-radius: var(--pico-border-radius);
		background-color: var(--pico-contrast-background);
		color: var(--pico-contrast-inverse);
		text-decoration: underline var(--pico-contrast-inverse);
		&:focus {
			top: 0;
			left: 0;
			outline: 2px solid black;
		}
	}

	.app-name {
		display: none;
	}
	@media screen and (min-width: 1280px) {
		.app-name {
			display: unset;
		}
	}

	#header {
		border-block-end: var(--pico-border-width) solid var(--pico-card-border-color);
		nav a[href="/"] img {
			height: 46px;
			width: auto;
		}
		nav ul {
			display: flex;
			justify-content: space-between;
			align-items: center;
			padding: 0;
			li {
				list-style: none;
			}
			li:first-child {
				flex: 1 0 max-content;
			}
			a {
				text-decoration: underline;
			}
			flex-wrap: nowrap;
			li {
				flex: 0 0 max-content;
			}
			li:first-child {
				flex: 1 1 auto;
				a {
					display: inline flex;
					align-items: center;
					gap: 0.75rem;
					.logo {
						font-size: 2rem;
						vertical-align: middle;
					}
					.logo + * {
						margin-inline-start: .5rem;
						vertical-align: middle;
					}
				}
			}
			.profile-picture {
				width: 2rem;
				height: 2rem;
				padding: 0;
				border: var(--pico-border-width) solid var(--pico-muted-border-color);
				border-radius: 2rem;
			}
		}
	}

	#navmenu {
		height: 100%;
		width: 100%;

		position: fixed;
		overflow-y: scroll;
		transform: translateX(100vw);
		transition: transform 0.1s ease-out;
		z-index: 2;
		
		padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);
		border-radius: var(--pico-border-radius);
		background: var(--pico-card-background-color);

		.environment-badge {
			font-weight: normal;
			text-transform: capitalize;
			border-width: 2px;
			border-style: dashed;
			color: var(--pico-text-color);
			padding: 0.25rem 0.5rem;
			margin-block: var(--pico-block-spacing-vertical);
			border-radius: var(--pico-border-radius);
		}

		img.dark {
			display: none;
		}

		&>nav {
			menu {
				margin-inline: 0;
			}
			details {
				border-block: 1px solid var(--pico-card-border-color);
				padding-block-start: 1px;
				summary {
					padding-block: var(--pico-nav-link-spacing-vertical);
					margin-block-end: 0;
					&::after {
						vertical-align: middle;
					}
				}
			}
			li {
				margin-block: 0.25rem;
				padding-block: 0.25rem;
			}
			li.menu-item-section {
				margin-block-start: var(--pico-typography-spacing-vertical);
				padding-block-start: var(--pico-typography-spacing-vertical);
				border-block-start: 1px solid var(--pico-muted-border-color);
			}
			a[href="/welcome"] {
				padding-block-start: 0;
			}
			img {
				height: 4rem;
				width: auto;
			}
		}
	}
	#navmenu[aria-expanded="true"] {
		transform: translateX(0);
	}

	#language-picker {
		button {
			.material-symbols-outlined {
				vertical-align: bottom;
			}
		}
	}

	#search-dialog {
		align-items: baseline;
		search {
			flex: 1 0 auto;
			margin: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);
			input[type=search] {
				border-radius: 1lh;
			}
		}
	}
	#search-results {
		width: 100%;
		padding: 0;
		margin: 0;
		border-radius: 1lh;
		border: var(--pico-border-width) solid var(--pico-form-element-border-color);
		background: var(--pico-background-color);
		li {
			display: list-item;
			list-style: none;
			margin: 0;
			padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);
			a {
				display: grid;
				grid-template-areas:
					"name 		kbd"
					"subtitle	kbd"
					"dl			kbd";
				grid-template-columns: 1fr max-content;
				grid-template-rows: auto auto;
				color: var(--pico-text-color);
				text-decoration: none;
				span:first-child {
					grid-area: name;
				}
				small {
					grid-area: subtitle;
				}
				dl {
					grid-area: dl;
					margin: 0;
					color: var(--pico-text-color);
					font-size: smaller;
					dt::after {
						content: ":";
					}
					dt, dd {
						display: inline;
						margin: 0;
					}
				}
				mark {
					padding: 0;
				}
				kbd {
					grid-area: kbd;
					height: max-content;
					margin-inline-end: 0.5em;
				}
			}
			&:hover {
				background: var(--pico-primary-focus);
			}
			&:first-of-type:hover {
				border-start-start-radius: 1lh;
				border-start-end-radius: 1lh;
			}
			&:last-of-type:hover {
				border-end-start-radius: 1lh;
				border-end-end-radius: 1lh;
			}
		}
	}

	.actions:has(button),
	.actions:has(a) {
		display: flex;
		align-items: center;

		gap: var(--pico-spacing);
	}

	a[href^="/glossary"],
	a[rel="help"],
	.help {
		color: inherit;
		text-decoration: none;
		border-bottom: 1px dotted;
		cursor: help;
	}

	dt:target,
	dt:target + dd {
		background-color: var(--pico-mark-background-color);
	}

	copy-to-clipboard {
		transition: box-shadow var(--pico-transition);
	}
	copy-to-clipboard:focus-visible {
		box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
	}

	dl.identifiers {
		dt,	dd {
			display: inline;
			margin: 0;
		}
		dt::before {
			content: " ";
			display: block;
		}
		dt::after {
			content: ":";
			display: inline;
		}
		dd {
			break-after: always;
		}
	}

	:is(button, a[role="button"]).secondary {
		padding: 0.25rem 0.5rem;
		font-size: smaller;
		background-color: unset;
		color: unset;
		border: none;
		margin-block-end: 0;
		&:hover {
			background-color: #f0f0f0;
		}
	}

	table {
		overflow-x: auto;
		&>tbody>tr>td:has( data) {
			text-align: end;
		}
		&>tfoot>tr>td:has( data) {
			text-align: end;
		}
		/* Ugly workaround to align the table headers same as the corresponding cells */
		&:has(>tbody>tr>td:nth-child(0) data)>thead>tr>th:nth-child(0) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(1) data)>thead>tr>th:nth-child(1) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(2) data)>thead>tr>th:nth-child(2) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(3) data)>thead>tr>th:nth-child(3) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(4) data)>thead>tr>th:nth-child(4) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(5) data)>thead>tr>th:nth-child(5) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(6) data)>thead>tr>th:nth-child(6) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(7) data)>thead>tr>th:nth-child(7) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(8) data)>thead>tr>th:nth-child(8) {
			text-align: end;
		}
		&:has(>tbody>tr>td:nth-child(9) data)>thead>tr>th:nth-child(9) {
			text-align: end;
		}
	}

	data-table {
		width: 100%;
		overflow-x: auto;
		display: block;
		th[tabindex]:not([aria-sort="none"]) {
			cursor: pointer;
			padding-inline-end: 24px;
			background-repeat: no-repeat;
			background-position: right;
			background-position: inline-end;
			background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' opacity='25%' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='8 10 12 6 16 10'%3E%3C/polyline%3E%3Cpolyline points='16 14 12 18 8 14'%3E%3C/polyline%3E%3C/svg%3E");
			&[aria-sort="ascending"] {
				background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='8 10 12 6 16 10'%3E%3C/polyline%3E%3Cpolyline opacity='25%' points='16 14 12 18 8 14'%3E%3C/polyline%3E%3C/svg%3E");
			}
			&[aria-sort="descending"] {
				background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline opacity='25%' points='8 10 12 6 16 10'%3E%3C/polyline%3E%3Cpolyline points='16 14 12 18 8 14'%3E%3C/polyline%3E%3C/svg%3E");
			}
		}
		th:has(data-table-configuration) {
			--pico-font-weight: normal;
			hr {
				border-color: var(--pico-contrast-border);
			}
		}
	}

	data-table-configuration dialog section {
		max-width: 440px;
	}

	#notifications-dialog[open] {
		display: block;
	}
	#notifications-dialog[open].new {
		animation: fadein 0.2s ease-out forwards;
	}

	@keyframes fadein {
		from {
			transform: translateX(100vw);
		}
		to {
			transform: 0;
		}
	}

	#notifications-count {
		position: absolute;
		left: 0;
		bottom: 0;
		font-size: 0.6rem;
		padding: 0.7rem;
		background: var(--pico-primary-background);
		color: white;
		border-radius: 100%;
		width: 2em;
		height: 2em;
		display: flex;
		align-items: center;
		justify-content: center;
		font-family: monospace;
	}

	#notifications-dialog {
		backdrop-filter: none;
		top: unset;
		left: unset;
		height: auto;
		width: auto;
		max-width: 720px;
		max-height: 260px;
		min-height: unset;
		min-width: unset;
		margin: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);
		padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);
		background-color: var(--pico-card-background-color);
		box-shadow: var(--pico-box-shadow);
		border-radius: var(--pico-border-radius);
		border: var(--pico-border-width) solid var(--pico-card-border-color);
		
		h1 {
			font-size: 1rem;
			font-weight: normal;
		}
		h2 {
			font-size: 1.25rem;
		}
		ul {
			display: flex;
			padding: 0;
			gap: var(--pico-nav-element-spacing-horizontal);
			li {
				list-style: none;
				button {
					padding: unset;
					border: unset;
					border-radius: unset;
					user-select: unset;
					line-height: unset;
					text-align: unset;

					--pico-color: var(--pico-primary);
					--pico-background-color: transparent;
					--pico-underline: var(--pico-primary-underline);
					outline: none;
					background-color: var(--pico-background-color);
					color: var(--pico-color);
					-webkit-text-decoration: var(--pico-text-decoration);
					text-decoration: var(--pico-text-decoration);
					text-decoration-color: var(--pico-underline);
					text-underline-offset: 0.125em;
					transition: background-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition);
					transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition);
					transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition);
					&:hover {
						--pico-color: var(--pico-primary-hover);
						--pico-underline: var(--pico-primary-hover-underline);
						--pico-text-decoration: underline;
					}
				}
			}
		}
	}

	.positive {
		color: var(--pico-ins-color);
	}
	.negative {
		color: var(--pico-del-color);
	}

	.experimental::before {
		content: "Experimental";
		font-size: small;
		text-align: end;
		display: block;
		color: var(--pico-muted-color);
	}

	.material-symbols-outlined {
		vertical-align: bottom;
	}

	.wide {
		display: none;
	}

	#print-header {
		display: none;
		grid-area: header;
		justify-content: space-between;
	}
	#print-footer {
		display: none;
		grid-area: footer;
	}

	@media screen and (min-width: 1280px) {
		.narrow {
			display: none;
		}
		.wide {
			display: initial;
		}
		header nav ul {
			.header-narrow {
				display: none;
			}
			.header-wide {
				display: contents;
			}
		}
		#navmenu {
			display: block;
			width: 16rem;
			position: static;
			transform: translateX(0);
		}
	}

	/*
	 * If the entire <article> element is a link, 
	 * don't style the text inside like an inline link. 
	 */
	article {
		&>a {
			height: 100%;
			width: 100%;
			display: inline-block;
			text-decoration: none;
		}
		&[onclick] {
			cursor: pointer;
		}
		&:has(>a), 
		&[onclick] {
			p {
				color: #373c44;
			}
			&:hover {
				transition: box-shadow var(--pico-transition);
				box-shadow: 
					0.0145rem 0.029rem 0.174rem rgba(4, 106, 106, 0.01698), 
					0.0335rem 0.067rem 0.402rem rgba(4, 106, 106, 0.024), 
					0.0625rem 0.125rem 0.75rem rgba(4, 106, 106, 0.03), 
					0.1125rem 0.225rem 1.35rem rgba(4, 106, 106, 0.036), 
					0.2085rem 0.417rem 2.502rem rgba(4, 106, 106, 0.04302), 
					0.5rem 1rem 6rem rgba(4, 106, 106, 0.06), 
					0 0 0 0.0625rem rgba(4, 106, 106, 0.015);
			}
		}
	}

	@media screen and (prefers-color-scheme: dark) {
		:root:not([data-theme="light"]),
		:host(:not([data-theme="light"])) {
			#navmenu {
				img.light {
					display: none;
				}
				img.dark {
					display: block;
				}
			}
			article {
				&:has(>a), 
				&[onclick] {
					p {
						color: #c2c7d0;
					}
					&:hover {
						box-shadow: 
							0.0145rem 0.029rem 0.174rem rgba(5, 134, 134, 0.01698),
							0.0335rem 0.067rem 0.402rem rgba(5, 134, 134, 0.024),
							0.0625rem 0.125rem 0.75rem rgba(5, 134, 134, 0.03),
							0.1125rem 0.225rem 1.35rem rgba(5, 134, 134, 0.036),
							0.2085rem 0.417rem 2.502rem rgba(5, 134, 134, 0.04302),
							0.5rem 1rem 6rem rgba(5, 134, 134, 0.06),
							0 0 0 0.0625rem rgba(5, 134, 134, 0.015);
					}
				}
			}
			img[src="/static/domain.svg"] {
				filter: invert();
			}
		}
	}
}

@layer print {
	@media print {
		#header,
		#footer,
		#navmenu,
		.dont-print {
			display: none;
		}
		a {
			text-decoration: none;
			color: inherit;
		}
		#print-header {
			display: block grid;
			grid-template: 
				"logo qrcode" 1fr
				"ts 	qrcode" auto
				"url 	qrcode" auto
				/ 1fr auto;
			&>img:first-of-type {
				grid-area: logo;
				width: 225px;
				height: 75px;
			}
			#print-qrcode {
				grid-area: qrcode;
				height: 139px;
				width: 139px;
			}
			#print-url {
				grid-area: url;
				font-size: smaller;
				color: var(--pico-muted-color);
			}
			#print-timestamp {
				grid-area: ts;
				font-size: smaller;
				color: var(--pico-muted-color);
			}
		}
		#print-footer {
			display: block;
			#print-glossary-hint {
				display: none;
			}
			#dotted-underlined-terms {
				color: inherit;
				text-decoration: none;
				border-bottom: 1px dotted;
			}
			a {
				border-bottom: none;
				text-decoration: none;
			}
		}
		main:has(a[href^="/glossary"]) {
			#print-glossary-hint {
				display: block;
			}
		}
		data-table {
			th {
				background-image: none;
			}
		}
		main {
			overflow: visible;
		}
	}
}
