@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');

:root {
	--bg-color: hsl(0, 0%, 10%);
	--fg-color: hsl(260, 85%, 75%);
	--fg-dim: hsl(260, 85%, 85%);
	--font-main: "IBM Plex Mono", monospace;
	--spacing: 8px;
}

* {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

::selection {
	background: var(--fg-color);
	color: var(--bg-color);
}

body {
	font-family: var(--font-main);
	background: var(--bg-color);
	color: var(--fg-color);
	line-height: 1.5;
  font-size: clamp(0.7rem, 1.5vw, 1rem);

	min-height: 100vh;
	padding: 16px;
	overflow-x: hidden;
}

footer {
	display: flex; 
	align-items: center;
	gap: 8px;
	vertical-align: middle;
	text-align: center;
}

img {
	vertical-align: middle;
}

span {
	white-space: nowrap;
}

button {
	padding-left: 16px;
	padding-right: 16px;
	background-color: var(--bg-color);
	color: var(--fg-color);
	font-weight: bold;
	border: none;
	cursor: pointer;
	border: 2px solid var(--fg-color);
}

button:hover {
  background-color: var(--fg-color);
  color: var(--bg-color);
}

input {
	background-color: var(--bg-color);
	color: var(--fg-color);
}

textarea {
	resize: vertical;
	min-height: 1.5em;

	background-color: var(--bg-color);
	color: var(--fg-color);
}

#main {
	width: 100%;
	max-width: 800px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	min-height: calc(100vh - 32px);
}

.ascii-banner {
	font-size: 10px;
	text-align: center;
}

.nav-link {
	color: var(--fg-color);
	text-decoration: none;
	transition: background 0.2s color 0.2s;
}

.nav-link::before { content: "[" }
.nav-link::after  { content: "]" }

.nav-link:hover {
	background: var(--fg-color);
	color: var(--bg-color);
}


.border {
	border: 2px solid var(--fg-color);
	padding: var(--spacing);
}

.double-border {
	border: 6px double var(--fg-color);
	padding: var(--spacing);
}

.flex-column { display: flex; flex-direction: column; }
.flex-row    { display: flex; flex-direction: row;    }
.flex-grow   { flex-grow: 1; }

.align-center   { align-items: center; }
.justify-center { justify-content: center; }
.space-between  { justify-content: space-between; }

.gap4  { gap: 4px;  }
.gap8  { gap: 8px;  }
.gap16 { gap: 16px; }

.w50 { width: 50%; }

.font-small { font-size: 14px; }
.font-tiny  { font-size: 12px; }
.center     { text-align: center; }

.truncate {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	min-width: 0;
}

.list-row {
	display: flex;
	flex-direction: row;
	gap: 8px;
	width: 100%;
	text-align: left;
	padding: 2px 4px;
}

.list-row:hover {
	background-color: var(--fg-color);
	color: var(--bg-color);
}

.rank-col {
	min-width: 24px;
	text-align: right;
	flex-shrink: 0;
}

.skeleton-text {
	background-color: var(--fg-color);
	opacity: 0.15;
	color: transparent;
	animation: pulse 1.5s infinite ease-in-out;

	min-width: 120px;
}
@keyframes pulse {
	0%   { opacity: 0.1; }
	50%  { opacity: 0.25; }
	100% { opacity: 0.1; }
}

.collapsed {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	text-overflow: ellipsis;
}

.toggle-btn {
	margin-top: 8px;
	font-size: 10px;
	padding: 2px 6px;
	background: none;
	border: 1px solid var(--fg-color);
	color: var(--fg-color);
}
