/* box sizing */
html {
	box-sizing: border-box;
}
*,
*:before,
*:after {
	box-sizing: inherit;
}

/* variables */
:root {
	--c-fg: black;
	--c-fg--info: black;
	--c-bg: transparent;
	--c-bg--summary: whitesmoke;
	--c-bg--contrast: cyan;
	--c-bg--tonique: magenta;
	--c-bg--warning: white;
	--c-bg--random: inherit; /* set by js */
	--c-border: lightgray;
	--c-button: lightgray;
	--c-symbol: var(--c-bg);
	--c-symbol--search: cyan;
	--c-symbol--build: yellow;
	--c-symbol--do: magenta;
	--c-symbol--command: orange;
	--size-font: 17px;
	--size: 1.5rem;
	--size-border: 0.2rem;
	--size-container: 40rem;
	--font-family: monospace;
}

@media screen and (min-width: 70rem) {
	:root {
		--size-font: 19px;
	}
}

/* animation */
@keyframes animBg {
	0% {
		transform: scale(1) translateX(0);
	}
	30% {
		transform: scale(0.1) translateX(-100%);
	}
	70% {
		transform: scale(1.5) translateX(100%);
	}
	90% {
		transform: scale(1) translateX(-50%);
	}
	100% {
		transform: scale(1) translateX(0);
	}
}

@keyframes animLetter {
	0% {
		opacity: 0;
	}
	50% {
		opacity: 1
	}
	100% {
		opacity: 0;
	}
}

@keyframes animBang {
	0% {
		content: '!';
		fill: initial;
	}
	30% {
		content: '?';
		fill: var(--c-bg--contrast);
	}
	60% {
		content: '+';
		fill: var(--c-bg--random);
	}
	100% {
		content: '#';
		fill: var(--c-fg);
	}
}

/*
	General styles
*/
html,
body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}
html {
	color: var(--c-fg);
	font-size: var(--size-font);
	font-family: var(--font-family);
	min-height: 100%;
}

body {
	margin: 0;
	background-color: var(--c-bg);
}

i4k-find-app input,
i4k-find-app textarea,
i4k-find-app button,
i4k-find-app [contenteditable] {
	border-color: var(--c-border);
	border-size: var(--size-border);
}
i4k-find-app button {
	padding: 0.7rem 0.8rem;
	color: var(--c-fg);
	border-color: var(--c-button);
	cursor: pointer;
	border-radius: 0.2rem;
	border-color: ;
}
i4k-find-app input,
i4k-find-app textarea {
	padding: calc(var(--size) / 2);
	border-radius: 0.2rem;
}
i4k-find-app input {
	width: 100%;
}
i4k-find-app textarea {
	width: auto;
}

i4k-find-app li {
	margin-bottom: 0.7rem;
}

/*
	Application concerns
*/

.App {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: calc(var(--size) / 2);

	/* transition */
	transition: background-color 700ms ease-in-out;
}

.App-header {
	opacity: 1;
	transition: opacity 300ms ease-in,
		transform 300ms cubic-bezier(0.6, -0.13, 0.45, 1.06);
	transform: translateY(0);
}
@media screen (min-width: 20rem) {
	.App-header {
		flex-direction: column;
	}
}

.App-queries {
	padding: 0.5rem;
}
.App-queries menu {
	display: flex;
	flex-wrap: wrap;
	list-style: none;
	justify-content: center;
	align-items: center;
	margin: 0;
	padding: 0;
}
.App-queries menu li {
	margin: 0.5rem;
}
/* search queries in the app's list, for intro text */
.App-queries menu li:first-child i4k-find-query::before {
	content: "⇢ Find";
	margin-right: calc(var(--size) / 3);
}
.App-queries menu li:first-child i4k-find-query button {
	background-color: var(--c-bg--contrast);
}
.App-header {
	display: flex;
	justify-content: center;
	align-items: center;
	position: sticky;
	top: 0.3rem;
	z-index: 1;
}
.App-header::after {
	content: "";
	z-index: -1;
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	top: 0;
	background-color: var(--c-bg--random);
	opacity: 0.8;
	border-radius: 0.3rem;
}

.App-body {
	opacity: 1;
	transition: opacity 200ms 300ms ease-out;
	width: 100%;
	max-width: var(--size-container);
	margin-top: 1rem;
	display: flex;
	align-items: center;
	flex-direction: column;
}
.Title {
	margin-top: 0;
	position: relative;
	text-decoration: none;
	font-size: 2rem;

	/* vertical align the image */
	display: flex;
}
.Title img {
	width: 7rem;
}
.Title h1 {
	display: none;
}

/* the search */
i4k-find-search {
	padding: calc(var(--size) / 4);
}
@media screen (min-width: 20rem) {
	i4k-find-search form {
		flex-direction: column;
	}
}
i4k-find-search form {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
}
@media screen and (min-width: 30rem) {
	i4k-find-search form {
		flex-wrap: nowrap;
	}
}

i4k-find-search form button {
	/* push it from input, and stay visually centered on mobile */
	margin: calc(var(--size) / 5);
	background-color: var(--c-bg--contrast);
}

i4k-find-search form button:active {
}

i4k-find-search form input {
	-webkit-appearance: inherit;
	font-size: 1.2rem;
}

#Customs-table {
	border-collapse: separate;
	border-spacing: 2rem 0;
	text-align: left;
}

i4k-find-search {
	transform: scale(1);
	transition: transform 200ms ease-in-out;
}

i4k-find-info button {
	cursor: pointer;
}
i4k-find-info details {
}
i4k-find-info summary {
}
i4k-find-info-docs {
	margin-bottom: 1rem;
	display: flex;
	justify-content: center;
	padding: 0.6rem;
}

i4k-symbols-list {
	display: flex;
	flex-direction: column;
	margin-bottom: 1rem;
	padding: 1rem;
}
i4k-symbols-list article[symbol="!"] {
	--c-symbol: var(--c-symbol--search);
}
i4k-symbols-list article[symbol="+"] {
	--c-symbol: var(--c-symbol--do);
}
i4k-symbols-list article[symbol="&"] {
	--c-symbol: var(--c-symbol--build);
}
i4k-symbols-list article[symbol="#"] {
	--c-symbol: var(--c-symbol--command);
}

i4k-symbols-list dl {
	border: 0.1rem solid var(--c-border);
	border-radius: 0.2rem;
	padding: 0.3rem 1rem;
	font-size: 1.7rem;
	width: auto;
	display: inline-flex;
	position: sticky;
	top: 0;
	margin: calc(var(--size) / 3);

	background-color: var(--c-symbol);
	background-clip: content-box;
	-webkit-background-clip: content-box;
	color: var(--c-fg);

	/* visual vertical center tricks */
	line-height: 1;
	padding-top: 1rem;
}
i4k-symbols-list dd {
	margin-left: 0;
}
i4k-symbols-list ul {
	margin-top: 0.5rem;
	padding: 0;
	list-style: none;
}
i4k-symbols-list li {
	display: flex;
	flex-wrap: wrap;
	white-space: pre-wrap;
	word-break: break-all;
}
i4k-symbols-list li em {
	text-align: left;
	flex-grow: 1;
	flex-shrink: 0;
}
i4k-symbols-list li a {
	text-align: right;
	flex-grow: 1;
}
i4k-symbols-list li a mark {
	background-color: var(--c-symbol);
}
i4k-symbols-list li input {
	background-color: transparent;
	border: none;
	padding: 0;
	cursor: alias;
	max-width: none;
	outline: 0;
}
@media screen (min-width: 20rem) {
	i4k-symbols-list li pre {
		line-height: 1.7;
		font-size: 1rem;
	}
}
i4k-symbols-list li pre {
	tab-size: 0.1rem;
	white-space: pre-wrap;
	margin: 0;
	width: 100%;
	color: var(--c-fg--info);
	line-height: 1.7;
	font-size: 0.8rem;
}
i4k-symbols-list article {
	margin-bottom: 1rem;
}
i4k-symbols-list li em {
	margin-right: 1rem;
	font-weight: bold;
}
i4k-symbols-list li a {
	color: var(--c-fg);
	text-decoration: none;
}

/* searched animations */
i4k-find-app[searched] {
	/* opacity: 0; */
}
i4k-find-app[searched] i4k-find-info {
	/* opacity: 0; */
	/* transform: scale(0); */
}
i4k-find-app[searched] i4k-find-logo {
	/* opacity: 0; */
	/* transform: scale(2); */
}
i4k-find-app[searched] i4k-find-search {
	/* opacity: 0; */
}
i4k-find-app[searched] i4k-find-search input {
	/* font-size: 5vh; */
	/* background-color: transparent; */
	/* border-color: transparent; */
	/* outline: none; */
}
i4k-find-app[searched] i4k-find button {
	/* display: none; */
}

i4k-find-app {
	opacity: 1;
	/* transition: opacity 300ms ease-in-out; */
}
i4k-find-app i4k-find-info {
	display: flex;
	flex-direction: column;
	margin: 0.5rem;
}
i4k-find-app i4k-find-logo {
	opacity: 1;
	transition: opacity 333ms ease-in-out, transform 333ms ease-in-out;
}
i4k-find-app i4k-find-logo:hover svg {
	transform: scale(1);
}
i4k-find-app i4k-find-logo svg {
	width: calc(var(--size) * 2);
	height: calc(var(--size) * 2);
}
/* apply the animations */
i4k-find-app i4k-find-logo svg rect {
	transform-origin: center;
	transform: scale(1);
	transition: transform 3333ms ease-in-out;
	animation: animBg 33.333s ease-in-out infinite;
}
i4k-find-app i4k-find-logo svg g[aria-label^="F"] {
	/* transform-origin: center; */
	opacity: 0;
	transition: transform 333ms ease-in-out;
	animation: animLetter 3.333s ease-in-out infinite;
	animation-delay: 333ms;
}
i4k-find-app i4k-find-logo svg g[aria-label^="!"] {
	/* transform-origin: center; */
	/* transform: scale(1); */
	transition: transform 333ms ease-in-out;
	animation: animBang 3.333s ease-in-out infinite;
}

/* the search itself */
i4k-find-app i4k-find-search {
	opacity: 1;
	transform: scale(1);
	transition: opacity 600ms ease-in-out, transform 400ms ease-in-out;
}
i4k-find-app i4k-find-search input {
	transition: background-color 200ms ease-in-out, font-size 400ms ease-in-out;
	border-color: var(--c-symbol);
}
i4k-find-app i4k-find-search input[value^="!"] {
	--c-symbol: var(--c-symbol--search);
}
i4k-find-app i4k-find-search input[value^="+"] {
	--c-symbol: var(--c-symbol--do);
}
i4k-find-app i4k-find-search input[value^="&"] {
	--c-symbol: var(--c-symbol--build);
}
i4k-find-app i4k-find-search input[value^="#"] {
	--c-symbol: var(--c-symbol--command);
}
i4k-find-app details[open] {
	border: none;
	background-color: var(--c-bg--summary);
}
i4k-find-app details[open] summary {
	margin: 0rem calc(var(--size) * 2);
	font-weight: bold;
}
i4k-find-app summary {
	cursor: pointer;
	padding: 1rem;
	text-align: center;
	background-color: var(--c-bg--summary);
	border-radius: 0.2rem;
	margin: 0.3rem;
}

/* sync */
i4k-find-sync {
	padding: 1rem;
	display: flex;
	flex-direction: column;
	align-items: center;
}
i4k-find-sync form {
	display: flex;
	flex-direction: column;
	/* align-items: center; */
	/* justify-content: center; */
}
i4k-find-sync form input {
	flex-basis: 50%;
	/* display: none; */
}
i4k-find-sync form fieldset {
	margin-bottom: calc(var(--size) / 2);
	display: flex;
	flex-direction: column;
}
i4k-find-sync pre {
	white-space: pre-wrap;
}
i4k-find-sync textarea {
	flex-grow: 1;
	min-height: calc(var(--size) * 3);
	resize: vertical;
}

/* find query component */
i4k-find-query[q^="!"] button::first-letter,
i4k-find-query[q^="&"] button::first-letter,
i4k-find-query[q^="+"] button::first-letter,
i4k-find-query[q^="#"] button::first-letter {
	/* not matching correcly "&" and "!" and "#"; "+" is matched */
	text-decoration: underline;
	text-underline-position: under;
	text-underline-offset: 2px;
	text-underline-color: var(--c-symbol);
}
i4k-find-query[q^="!"] button,
i4k-find-query[q^="&"] button,
i4k-find-query[q^="+"] button,
i4k-find-query[q^="#"] button {
	border-color: var(--c-symbol);
}
i4k-find-query[q^="!"] {
	--c-symbol: var(--c-symbol--search);
}
i4k-find-query[q^="+"] {
	--c-symbol: var(--c-symbol--do);
}
i4k-find-query[q^="&"] {
	--c-symbol: var(--c-symbol--build);
}
i4k-find-query[q^="#"] {
	--c-symbol: var(--c-symbol--command);
}

/* analytics */
i4k-find-analytics {
	display: flex;
	padding: 1rem;
	margin-top: 1rem;
	background-color: var(--c-bg--warning);
}
