:root {

	--rpgstats-line:      var(--text-dark);
	--rpgstats-line-soft: var(--border);
	--rpgstats-panel:     var(--bg);
	--rpgstats-track:     var(--bg-alt);

	--rpgstats-text:       var(--text);
	--rpgstats-text-muted: var(--text-muted);
	--rpgstats-text-dim:   var(--text-dim);

	--rpgstats-primary: var(--accent);

	--rpgstats-cat-1:  var(--accent);
	--rpgstats-cat-2:  var(--accent-hover);
	--rpgstats-cat-3:  var(--text);
	--rpgstats-cat-4:  var(--text-muted);
	--rpgstats-cat-5:  var(--border-light);
	--rpgstats-cat-6:  var(--text-dim);
	--rpgstats-cat-7:  var(--border-light);
	--rpgstats-cat-8:  var(--accent-hover);
	--rpgstats-cat-9:  var(--text-dim);
	--rpgstats-cat-10: var(--text-muted);
	--rpgstats-cat-11: var(--text-dim);
	--rpgstats-cat-12: var(--border-light);

	--rpgstats-error:    var(--error);
	--rpgstats-error-bg: var(--error-bg);
	--rpgstats-info:     var(--info);
	--rpgstats-info-bg:  var(--info-bg);
}

@supports (color: color-mix(in srgb, red, blue)) {
	:root {
		--rpgstats-cat-2:  color-mix(in srgb, var(--accent) 72%, var(--bg));
		--rpgstats-cat-4:  color-mix(in srgb, var(--accent) 48%, var(--bg));
		--rpgstats-cat-6:  color-mix(in srgb, var(--accent) 30%, var(--bg));
		--rpgstats-cat-8:  color-mix(in srgb, var(--accent) 60%, var(--bg));
		--rpgstats-cat-10: color-mix(in srgb, var(--accent) 40%, var(--bg));
		--rpgstats-cat-12: color-mix(in srgb, var(--accent) 20%, var(--bg));
	}
}

@keyframes rpgstats-barGrow {
	from { width: 0; }
	to   { width: calc(var(--percentage,0) * 1%); }
}

@keyframes rpgstats-vbarGrow {
	from { height: 0; }
	to   { height: calc(var(--percentage,0) * 1%); }
}

@keyframes rpgstats-donutDraw {
	from { stroke-dasharray: 0 220; }
}

@media (prefers-reduced-motion: reduce) {
	.rpgstats-wrapper *,
	.rpgstats-profile * {
		animation: none !important;
		transition: none !important;
	}
}

.rpgstats-box,
.rpgstats-board-stat,
.rpgstats-avg,
.rpgstats-donut-container,
.rpgstats-top3-card,
.rpgstats-demo-card,
.rpgstats-player-age-stat,
.rpgstats-mini-stat,
.rpgstats-char-avg,
.rpgstats-player-card {
	position: relative;
	outline: 1px solid var(--rpgstats-line);
	outline-offset: 0;
}

.rpgstats-box:hover,
.rpgstats-player-card:hover {
	outline-color: var(--rpgstats-primary);
	z-index: 1;
}

.rpgstats-wrapper {
	max-width: var(--content-max);
	margin: var(--space-md) auto var(--space-2xl);
	color: var(--rpgstats-text);
}

.rpgstats-page__head {
	position: relative;
	padding: var(--space-2xl) 0;
	margin-bottom: var(--space-xl);
	border-bottom: 1px solid var(--rpgstats-line);
	overflow: hidden;
}

.rpgstats-page__head::before {
	content: "STATS";
	position: absolute;
	top: 50%;
	right: 0;
	transform: translateY(-50%);
	font-family: var(--font-display);
	font-size: clamp(7rem, 16vw, 13rem);
	line-height: 0.8;
	letter-spacing: -0.02em;
	color: transparent;
	-webkit-text-stroke: 1px var(--rpgstats-line);
	opacity: 0.5;
	pointer-events: none;
	white-space: nowrap;
}

.rpgstats-page__title-wrap {
	position: relative;
	z-index: 1;
	max-width: 760px;
}

.rpgstats-page__label {
	display: block;
	font-family: var(--font-mono);
	font-size: 0.6rem;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--rpgstats-primary);
	margin-bottom: var(--space-md);
}

.rpgstats-page__title,
.rpgstats-header h1 {
	font-family: var(--font-display);
	font-size: clamp(2.75rem, 7vw, 5rem);
	line-height: 0.95;
	letter-spacing: -0.02em;
	color: var(--rpgstats-text);
	margin: 0;
}

.rpgstats-page__subtitle {
	margin: var(--space-md) 0 0;
	max-width: 560px;
	font-size: 0.9rem;
	line-height: 1.7;
	color: var(--rpgstats-text-muted);
}

.rpgstats-nav {
	display: flex;
	gap: 0;
	margin-bottom: var(--space-xl);
	flex-wrap: wrap;
	border: 1px solid var(--rpgstats-line);
	width: fit-content;
}

.rpgstats-nav__link {
	padding: var(--space-sm) var(--space-lg);
	background: transparent;
	border: 0;
	border-right: 1px solid var(--rpgstats-line);
	color: var(--rpgstats-text-muted);
	text-decoration: none;
	font-family: var(--font-mono);
	font-size: 0.65rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	transition: color 0.2s var(--ease), background 0.2s var(--ease);
}
.rpgstats-nav__link:last-child { border-right: 0; }

.rpgstats-nav__link:hover {
	background: var(--bg-alt);
	color: var(--rpgstats-text);
}

.rpgstats-nav__link--active,
.rpgstats-nav__link--active:hover {
	background: var(--rpgstats-primary);
	color: var(--bg) !important;
	font-weight: 700;
}

.rpgstats-section {
	border: 1px solid var(--rpgstats-line);
	background: transparent;
	padding: var(--space-lg);
	margin-bottom: var(--space-lg);
}

.rpgstats-section h3,
.rpgstats-section-title {
	font-family: var(--font-mono);
	font-size: 0.6rem;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	font-weight: 400;
	color: var(--rpgstats-text);
	border-bottom: 1px solid var(--rpgstats-line);
	padding: 0 0 var(--space-sm);
	margin: 0 0 var(--space-lg);
}
.rpgstats-section h3::before,
.rpgstats-section-title::before { content: "// "; color: var(--rpgstats-primary); }

.rpgstats-age-averages h4,
.rpgstats-age-ranges h4,
.rpgstats-age-dist h4,
.rpgstats-demo-card h4,
.rpgstats-age-by-gender h5,
.rpgstats-char-detail__averages h5,
.rpgstats-donut-title {
	font-family: var(--font-mono);
	font-size: 0.58rem;
	font-weight: 400;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
	margin: 0 0 var(--space-md);
	padding: 0;
	border: 0;
}

.rpgstats-summary {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
}
.rpgstats-box { flex: 1 1 150px; }

.rpgstats-box {
	background: var(--rpgstats-panel);
	padding: var(--space-lg);
	text-align: left;
	color: var(--rpgstats-text);
	transition: outline-color 0.2s var(--ease);
}

.rpgstats-box__icon {
	font-size: 0.8rem;
	line-height: 1;
	color: var(--rpgstats-primary);
	margin-bottom: var(--space-md);
}

.rpgstats-box__value {
	font-family: var(--font-display);
	font-size: 2.6rem;
	line-height: 1;
	letter-spacing: 0.01em;
	color: var(--rpgstats-text);
}

.rpgstats-box__label {
	margin-top: var(--space-sm);
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-board-summary {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
	margin-bottom: 0;
}

.rpgstats-board-stat {
	flex: 1 1 130px;
	background: var(--rpgstats-panel);
	padding: var(--space-lg) var(--space-md);
	text-align: left;
}

.rpgstats-board-stat__value {
	font-family: var(--font-display);
	font-size: 2.2rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-board-stat__label {
	margin-top: var(--space-xs);
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-bars {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.rpgstats-bar {
	display: grid;
	grid-template-columns: 120px 1fr 90px;
	align-items: center;
	gap: var(--space-md);
}

.rpgstats-bar__label {
	font-size: 0.85rem;
	color: var(--rpgstats-text);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.rpgstats-bar__track {
	height: 16px;
	background: var(--rpgstats-track);
	border: 1px solid var(--rpgstats-line);
	overflow: hidden;
}

.rpgstats-bar__fill {
	height: 100%;
	background: var(--rpgstats-primary);
	width: calc(var(--percentage,0) * 1%);
	animation: rpgstats-barGrow 0.6s var(--ease) forwards;
}

.rpgstats-bar__fill--month,
.rpgstats-bar__fill--distribution { background: var(--rpgstats-primary); }

.rpgstats-bar:nth-child(1) .rpgstats-bar__fill { animation-delay: 0s; }
.rpgstats-bar:nth-child(2) .rpgstats-bar__fill { animation-delay: 0.04s; }
.rpgstats-bar:nth-child(3) .rpgstats-bar__fill { animation-delay: 0.08s; }
.rpgstats-bar:nth-child(4) .rpgstats-bar__fill { animation-delay: 0.12s; }
.rpgstats-bar:nth-child(5) .rpgstats-bar__fill { animation-delay: 0.16s; }
.rpgstats-bar:nth-child(6) .rpgstats-bar__fill { animation-delay: 0.20s; }
.rpgstats-bar:nth-child(7) .rpgstats-bar__fill { animation-delay: 0.24s; }
.rpgstats-bar:nth-child(8) .rpgstats-bar__fill { animation-delay: 0.28s; }

.rpgstats-bar__value {
	font-family: var(--font-mono);
	font-size: 0.68rem;
	letter-spacing: 0.05em;
	color: var(--rpgstats-text-muted);
	text-align: right;
}

.rpgstats-charbars {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.rpgstats-charbar {
	display: grid;
	grid-template-columns: 36px 120px 1fr 110px;
	align-items: center;
	gap: var(--space-md);
}

.rpgstats-charbar:nth-child(1) .rpgstats-bar__fill { animation-delay: 0s; }
.rpgstats-charbar:nth-child(2) .rpgstats-bar__fill { animation-delay: 0.06s; }
.rpgstats-charbar:nth-child(3) .rpgstats-bar__fill { animation-delay: 0.12s; }
.rpgstats-charbar:nth-child(4) .rpgstats-bar__fill { animation-delay: 0.18s; }
.rpgstats-charbar:nth-child(5) .rpgstats-bar__fill { animation-delay: 0.24s; }

.rpgstats-charbar__avatar {
	width: 36px;
	height: 36px;
	object-fit: cover;
	border: 1px solid var(--rpgstats-line);
	filter: grayscale(1);
	transition: filter 0.2s var(--ease);
}
.rpgstats-charbar:hover .rpgstats-charbar__avatar { filter: grayscale(0); }

.rpgstats-charbar__name {
	font-family: var(--font-display);
	font-size: 1.1rem;
	line-height: 1;
	color: var(--rpgstats-text);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.rpgstats-vbars {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	height: 200px;
	gap: 1px;
	padding: var(--space-lg) 0 0;
	border-bottom: 1px solid var(--rpgstats-line);
	margin-bottom: var(--space-sm);
}

.rpgstats-vbar {
	display: flex;
	flex-direction: column;
	align-items: center;
	flex: 1;
	max-width: 64px;
	height: 100%;
}

.rpgstats-vbar__column {
	flex: 1;
	width: 100%;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
}

.rpgstats-vbar__fill {
	width: 100%;
	background: var(--rpgstats-primary);
	height: calc(var(--percentage,0) * 1%);
	animation: rpgstats-vbarGrow 0.6s var(--ease) forwards;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	min-height: 2px;
	position: relative;
}

.rpgstats-vbar__value {
	font-family: var(--font-mono);
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	color: var(--bg);
	padding: var(--space-xs) 2px;
	text-shadow: none;
}

.rpgstats-vbar__fill[style*="--percentage:0"] .rpgstats-vbar__value {
	color: var(--rpgstats-text-dim);
	position: absolute;
	top: -18px;
}

.rpgstats-vbar__label {
	margin-top: var(--space-sm);
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
	text-align: center;
}

.rpgstats-vbar:nth-child(1) .rpgstats-vbar__fill  { animation-delay: 0s; }
.rpgstats-vbar:nth-child(2) .rpgstats-vbar__fill  { animation-delay: 0.04s; }
.rpgstats-vbar:nth-child(3) .rpgstats-vbar__fill  { animation-delay: 0.08s; }
.rpgstats-vbar:nth-child(4) .rpgstats-vbar__fill  { animation-delay: 0.12s; }
.rpgstats-vbar:nth-child(5) .rpgstats-vbar__fill  { animation-delay: 0.16s; }
.rpgstats-vbar:nth-child(6) .rpgstats-vbar__fill  { animation-delay: 0.20s; }
.rpgstats-vbar:nth-child(7) .rpgstats-vbar__fill  { animation-delay: 0.24s; }
.rpgstats-vbar:nth-child(8) .rpgstats-vbar__fill  { animation-delay: 0.28s; }
.rpgstats-vbar:nth-child(9) .rpgstats-vbar__fill  { animation-delay: 0.32s; }
.rpgstats-vbar:nth-child(10) .rpgstats-vbar__fill { animation-delay: 0.36s; }
.rpgstats-vbar:nth-child(11) .rpgstats-vbar__fill { animation-delay: 0.40s; }
.rpgstats-vbar:nth-child(12) .rpgstats-vbar__fill { animation-delay: 0.44s; }

.rpgstats-donut-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
}

.rpgstats-donut-container {
	flex: 1 1 240px;
	display: flex;
	flex-direction: column;
	align-items: center;
	background: var(--rpgstats-panel);
	padding: var(--space-lg);
}

.rpgstats-donut-wrapper {
	position: relative;
	width: 150px;
	height: 150px;
}

.rpgstats-donut {
	width: 100%;
	height: 100%;
	transform: rotate(-90deg);
}

.rpgstats-donut__segment {
	fill: none;
	stroke-width: 22;
	stroke-linecap: butt;
	animation: rpgstats-donutDraw 0.9s var(--ease) forwards;
}

.rpgstats-donut__segment:nth-child(1) { animation-delay: 0s; }
.rpgstats-donut__segment:nth-child(2) { animation-delay: 0.1s; }
.rpgstats-donut__segment:nth-child(3) { animation-delay: 0.2s; }
.rpgstats-donut__segment:nth-child(4) { animation-delay: 0.3s; }
.rpgstats-donut__segment:nth-child(5) { animation-delay: 0.4s; }

.rpgstats-donut__segment { stroke: var(--rpgstats-cat-12); }
.rpgstats-donut__segment:nth-child(1)  { stroke: var(--rpgstats-cat-1); }
.rpgstats-donut__segment:nth-child(2)  { stroke: var(--rpgstats-cat-2); }
.rpgstats-donut__segment:nth-child(3)  { stroke: var(--rpgstats-cat-3); }
.rpgstats-donut__segment:nth-child(4)  { stroke: var(--rpgstats-cat-4); }
.rpgstats-donut__segment:nth-child(5)  { stroke: var(--rpgstats-cat-5); }
.rpgstats-donut__segment:nth-child(6)  { stroke: var(--rpgstats-cat-6); }
.rpgstats-donut__segment:nth-child(7)  { stroke: var(--rpgstats-cat-7); }
.rpgstats-donut__segment:nth-child(8)  { stroke: var(--rpgstats-cat-8); }
.rpgstats-donut__segment:nth-child(9)  { stroke: var(--rpgstats-cat-9); }
.rpgstats-donut__segment:nth-child(10) { stroke: var(--rpgstats-cat-10); }
.rpgstats-donut__segment:nth-child(11) { stroke: var(--rpgstats-cat-11); }
.rpgstats-donut__segment:nth-child(12) { stroke: var(--rpgstats-cat-12); }

.rpgstats-donut__center {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	text-align: center;
}

.rpgstats-donut__center-value {
	font-family: var(--font-display);
	font-size: 1.8rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-donut__center-label {
	margin-top: 2px;
	font-family: var(--font-mono);
	font-size: 0.5rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-donut-legend {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
	margin-top: var(--space-lg);
	width: 100%;
	max-width: 200px;
}

.rpgstats-legend-item {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	font-family: var(--font-mono);
	font-size: 0.62rem;
	letter-spacing: 0.03em;
}

.rpgstats-legend-color {
	width: 8px;
	height: 8px;
	flex-shrink: 0;
}

.rpgstats-legend-item:nth-child(1)  .rpgstats-legend-color { background: var(--rpgstats-cat-1); }
.rpgstats-legend-item:nth-child(2)  .rpgstats-legend-color { background: var(--rpgstats-cat-2); }
.rpgstats-legend-item:nth-child(3)  .rpgstats-legend-color { background: var(--rpgstats-cat-3); }
.rpgstats-legend-item:nth-child(4)  .rpgstats-legend-color { background: var(--rpgstats-cat-4); }
.rpgstats-legend-item:nth-child(5)  .rpgstats-legend-color { background: var(--rpgstats-cat-5); }
.rpgstats-legend-item:nth-child(6)  .rpgstats-legend-color { background: var(--rpgstats-cat-6); }
.rpgstats-legend-item:nth-child(7)  .rpgstats-legend-color { background: var(--rpgstats-cat-7); }
.rpgstats-legend-item:nth-child(8)  .rpgstats-legend-color { background: var(--rpgstats-cat-8); }
.rpgstats-legend-item:nth-child(9)  .rpgstats-legend-color { background: var(--rpgstats-cat-9); }
.rpgstats-legend-item:nth-child(10) .rpgstats-legend-color { background: var(--rpgstats-cat-10); }
.rpgstats-legend-item:nth-child(11) .rpgstats-legend-color { background: var(--rpgstats-cat-11); }
.rpgstats-legend-item:nth-child(12) .rpgstats-legend-color { background: var(--rpgstats-cat-12); }

.rpgstats-legend-text {
	flex: 1;
	color: var(--rpgstats-text-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.rpgstats-legend-value {
	font-weight: 700;
	color: var(--rpgstats-text);
}

.rpgstats-player-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
}

.rpgstats-player-card {
	flex: 1 1 260px;
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
	background: var(--rpgstats-panel);
	padding: var(--space-lg);
	transition: outline-color 0.2s var(--ease), background 0.2s var(--ease);
}
.rpgstats-player-card:hover { background: var(--bg-alt); }

.rpgstats-player-card__name {
	font-family: var(--font-display);
	font-size: 1.6rem;
	line-height: 1;
	letter-spacing: 0.01em;
	color: var(--rpgstats-text);
	text-decoration: none;
	transition: color 0.2s var(--ease);
}
.rpgstats-player-card__name::after {
	content: '';
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 1;
}
.rpgstats-player-card:hover .rpgstats-player-card__name { color: var(--rpgstats-primary); }

.rpgstats-player-card__chars {
	position: relative;
	z-index: 2;
	min-height: 32px;
	align-items: flex-start;
}

.rpgstats-player-card__foot {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--space-sm);
	margin-top: auto;
	padding-top: var(--space-sm);
	border-top: 1px solid var(--rpgstats-line);
}

.rpgstats-player-card__label {
	font-family: var(--font-mono);
	font-size: 0.5rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-player-card__value {
	font-family: var(--font-display);
	font-size: 1.8rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-player-empty {
	padding: var(--space-2xl);
	text-align: center;
	font-family: var(--font-mono);
	font-size: 0.65rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-char-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
}

.rpgstats-mini-avatar-link { display: inline-block; }

.rpgstats-mini-avatar {
	width: 32px;
	height: 32px;
	object-fit: cover;
	border: 1px solid var(--rpgstats-line);
	filter: grayscale(1);
	transition: filter 0.2s var(--ease), border-color 0.2s var(--ease);
}
.rpgstats-mini-avatar-link:hover .rpgstats-mini-avatar {
	border-color: var(--rpgstats-primary);
	filter: grayscale(0);
}

.rpgstats-char-link {
	font-family: var(--font-mono);
	font-size: 0.68rem;
	color: var(--rpgstats-text-muted);
	text-decoration: none;
	transition: color 0.2s var(--ease);
}
.rpgstats-char-link:hover { color: var(--rpgstats-primary); text-decoration: none; }

.rpgstats-search { margin-bottom: var(--space-lg); }

.rpgstats-search input {
	width: 100%;
	max-width: 320px;
	padding: var(--space-sm) var(--space-md);
	background: var(--bg-input);
	border: 1px solid var(--rpgstats-line);
	color: var(--rpgstats-text);
	font-family: var(--font-mono);
	font-size: 0.7rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.rpgstats-search input::placeholder { color: var(--rpgstats-text-dim); }
.rpgstats-search input:focus {
	outline: none;
	border-color: var(--rpgstats-primary);
}

.rpgstats-timefilter {
	display: flex;
	gap: 0;
	flex-wrap: wrap;
	margin-bottom: var(--space-xl);
	border: 1px solid var(--rpgstats-line);
	width: fit-content;
}

.rpgstats-timefilter__btn {
	padding: var(--space-sm) var(--space-md);
	background: transparent;
	border: 0;
	border-right: 1px solid var(--rpgstats-line);
	color: var(--rpgstats-text-muted);
	text-decoration: none;
	font-family: var(--font-mono);
	font-size: 0.62rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	transition: color 0.2s var(--ease), background 0.2s var(--ease);
}
.rpgstats-timefilter__btn:last-child { border-right: 0; }

.rpgstats-timefilter__btn:hover {
	background: var(--bg-alt);
	color: var(--rpgstats-text);
}

.rpgstats-timefilter__btn--active,
.rpgstats-timefilter__btn--active:hover {
	background: var(--rpgstats-primary);
	color: var(--bg) !important;
	font-weight: 700;
}

.rpgstats-averages {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
}

.rpgstats-avg {
	flex: 1 1 180px;
	background: var(--rpgstats-panel);
	padding: var(--space-lg);
	text-align: left;
}

.rpgstats-avg__label {
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
	margin-bottom: var(--space-sm);
}

.rpgstats-avg__value {
	font-family: var(--font-display);
	font-size: 2rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-avg__scale {
	height: 4px;
	background: var(--rpgstats-track);
	border: 1px solid var(--rpgstats-line);
	margin: var(--space-md) 0 var(--space-sm);
	position: relative;
}

.rpgstats-avg__marker {
	position: absolute;
	top: -5px;
	width: 3px;
	height: 12px;
	background: var(--rpgstats-primary);
	border: 0;
	transform: translateX(-50%);
}

.rpgstats-avg__range {
	display: flex;
	justify-content: space-between;
	font-family: var(--font-mono);
	font-size: 0.5rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-top3-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
}

.rpgstats-top3-card {
	flex: 1 1 280px;
	background: var(--rpgstats-panel);
	padding: var(--space-lg);
	border: 0;
}

.rpgstats-top3-card__title {
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
	margin-bottom: var(--space-md);
	padding-bottom: var(--space-sm);
	border-bottom: 1px solid var(--rpgstats-line);
}

.rpgstats-top3-card__list {
	display: flex;
	flex-direction: column;
	gap: 0;
}

.rpgstats-top3-row {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	padding: var(--space-sm) 0;
	border-bottom: 1px solid var(--rpgstats-line-soft);
	position: relative;
	transition: background 0.2s var(--ease);
}
.rpgstats-top3-row:last-child { border-bottom: 0; }
.rpgstats-top3-row:hover { background: var(--bg-alt); }

.rpgstats-top3-rank {
	width: 22px;
	height: 22px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: 1px solid var(--rpgstats-line);
	color: var(--rpgstats-text-muted);
	font-family: var(--font-mono);
	font-size: 0.62rem;
	font-weight: 700;
	flex-shrink: 0;
}
.rpgstats-top3-row:nth-child(1) .rpgstats-top3-rank {
	background: var(--rpgstats-primary);
	border-color: var(--rpgstats-primary);
	color: var(--bg);
}
.rpgstats-top3-row:nth-child(2) .rpgstats-top3-rank {
	border-color: var(--rpgstats-text-muted);
	color: var(--rpgstats-text);
}

.rpgstats-top3-avatar {
	width: 30px;
	height: 30px;
	object-fit: cover;
	border: 1px solid var(--rpgstats-line);
	flex-shrink: 0;
	filter: grayscale(1);
	transition: filter 0.2s var(--ease);
}
.rpgstats-top3-row:hover .rpgstats-top3-avatar { filter: grayscale(0); }

.rpgstats-top3-icon {
	width: 30px;
	height: 30px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.9rem;
	color: var(--rpgstats-text-dim);
	border: 1px solid var(--rpgstats-line);
	flex-shrink: 0;
}

.rpgstats-top3-name {
	flex: 1;
	font-family: var(--font-display);
	font-size: 1.1rem;
	line-height: 1;
	color: var(--rpgstats-text);
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	transition: color 0.2s var(--ease);
}
.rpgstats-top3-name:hover { color: var(--rpgstats-primary); text-decoration: none; }

.rpgstats-top3-value {
	font-family: var(--font-mono);
	font-size: 0.62rem;
	letter-spacing: 0.05em;
	color: var(--rpgstats-text-muted);
	white-space: nowrap;
}

.rpgstats-top3-row--scene .rpgstats-top3-name { font-size: 0.95rem; }

.rpgstats-dist-cloud {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
}

.rpgstats-dist-tag {
	display: inline-flex;
	align-items: stretch;
	background: transparent;
	border: 1px solid var(--rpgstats-line);
	transition: border-color 0.2s var(--ease);
}
.rpgstats-dist-tag:hover { border-color: var(--rpgstats-primary); }

.rpgstats-dist-tag__name {
	padding: var(--space-xs) var(--space-md);
	font-family: var(--font-mono);
	font-size: 0.65rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--rpgstats-text);
	display: flex;
	align-items: center;
}

.rpgstats-dist-tag__count {
	padding: var(--space-xs) var(--space-sm);
	background: var(--rpgstats-primary);
	color: var(--bg);
	font-family: var(--font-mono);
	font-size: 0.65rem;
	font-weight: 700;
	display: flex;
	align-items: center;
}

.rpgstats-age-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-xl);
}

.rpgstats-age-left {
	display: flex;
	flex-direction: column;
	gap: var(--space-xl);
}

.rpgstats-age-avg-cards {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
}

.rpgstats-age-avg-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	padding: var(--space-sm) var(--space-md);
	background: transparent;
	border: 1px solid var(--rpgstats-line);
	border-top-width: 2px;
	border-top-color: var(--rpgstats-line);
	color: var(--rpgstats-text);
	min-width: 72px;
}

.rpgstats-age-avg-card--primary   { border-top-color: var(--rpgstats-cat-1); }
.rpgstats-age-avg-card--secondary,
.rpgstats-age-avg-card--blue      { border-top-color: var(--rpgstats-cat-2); }
.rpgstats-age-avg-card--pink      { border-top-color: var(--rpgstats-cat-4); }
.rpgstats-age-avg-card--purple    { border-top-color: var(--rpgstats-cat-6); }
.rpgstats-age-avg-card--green     { border-top-color: var(--rpgstats-cat-5); }
.rpgstats-age-avg-card--orange    { border-top-color: var(--rpgstats-cat-8); }

.rpgstats-age-avg-card__icon {
	font-size: 0.7rem;
	color: var(--rpgstats-text-dim);
	margin-bottom: 2px;
}

.rpgstats-age-avg-card__value {
	font-family: var(--font-display);
	font-size: 1.5rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-age-avg-card__label {
	margin-top: 2px;
	font-family: var(--font-mono);
	font-size: 0.5rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-age-dist {
	background: transparent;
	border-top: 1px solid var(--rpgstats-line);
	padding: var(--space-lg) 0 0;
}

.rpgstats-age-dist-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
}

.rpgstats-age-dist-card {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-xs) var(--space-md);
	background: transparent;
	border: 1px solid var(--rpgstats-line);
	transition: border-color 0.2s var(--ease);
}
.rpgstats-age-dist-card:hover { border-color: var(--rpgstats-primary); }

.rpgstats-age-dist-card__name {
	font-family: var(--font-mono);
	font-size: 0.62rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--rpgstats-text);
}

.rpgstats-age-dist-card__avg {
	font-family: var(--font-display);
	font-size: 1.1rem;
	line-height: 1;
	color: var(--rpgstats-primary);
}

.rpgstats-age-dist-card__count {
	padding: 1px 6px;
	background: transparent;
	border: 1px solid var(--rpgstats-line);
	font-family: var(--font-mono);
	font-size: 0.55rem;
	color: var(--rpgstats-text-dim);
}

.rpgstats-age-range-bars {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.rpgstats-age-range {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
}

.rpgstats-age-range__header {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
}

.rpgstats-age-range__name {
	font-family: var(--font-mono);
	font-size: 0.65rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--rpgstats-text);
}

.rpgstats-age-range__count {
	font-family: var(--font-mono);
	font-size: 0.62rem;
	color: var(--rpgstats-text-muted);
}

.rpgstats-age-range__track {
	height: 8px;
	background: var(--rpgstats-track);
	border: 1px solid var(--rpgstats-line);
	overflow: hidden;
}

.rpgstats-age-range__fill {
	height: 100%;
	background: var(--rpgstats-primary);
	width: calc(var(--percentage,0) * 1%);
	animation: rpgstats-barGrow 0.6s var(--ease) forwards;
}

.rpgstats-age-range:nth-child(1) .rpgstats-age-range__fill { animation-delay: 0s;    background: var(--rpgstats-cat-1); }
.rpgstats-age-range:nth-child(2) .rpgstats-age-range__fill { animation-delay: 0.06s; background: var(--rpgstats-cat-2); }
.rpgstats-age-range:nth-child(3) .rpgstats-age-range__fill { animation-delay: 0.12s; background: var(--rpgstats-cat-8); }
.rpgstats-age-range:nth-child(4) .rpgstats-age-range__fill { animation-delay: 0.18s; background: var(--rpgstats-cat-4); }
.rpgstats-age-range:nth-child(5) .rpgstats-age-range__fill { animation-delay: 0.24s; background: var(--rpgstats-cat-10); }
.rpgstats-age-range:nth-child(6) .rpgstats-age-range__fill { animation-delay: 0.30s; background: var(--rpgstats-cat-6); }

.rpgstats-age-range__desc {
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.05em;
	color: var(--rpgstats-text-dim);
}

.rpgstats-demographics-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1px;
}

.rpgstats-demo-card {
	background: var(--rpgstats-panel);
	padding: var(--space-lg);
}

.rpgstats-gender-bars {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.rpgstats-gender-bar__header {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	margin-bottom: var(--space-xs);
}

.rpgstats-gender-bar__icon {
	font-size: 0.8rem;
	color: var(--rpgstats-text-dim);
}

.rpgstats-gender-bar__name {
	flex: 1;
	font-family: var(--font-mono);
	font-size: 0.65rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--rpgstats-text);
}

.rpgstats-gender-bar__count {
	font-family: var(--font-mono);
	font-size: 0.62rem;
	color: var(--rpgstats-text-muted);
}

.rpgstats-gender-bar__track {
	height: 8px;
	background: var(--rpgstats-track);
	border: 1px solid var(--rpgstats-line);
	overflow: hidden;
}

.rpgstats-gender-bar__fill {
	height: 100%;
	background: var(--rpgstats-cat-1);
	width: calc(var(--percentage,0) * 1%);
	animation: rpgstats-barGrow 0.6s var(--ease) forwards;
}

.rpgstats-gender-bar:nth-child(1) .rpgstats-gender-bar__fill { animation-delay: 0s;    background: var(--rpgstats-cat-1); }
.rpgstats-gender-bar:nth-child(2) .rpgstats-gender-bar__fill { animation-delay: 0.06s; background: var(--rpgstats-cat-2); }
.rpgstats-gender-bar:nth-child(3) .rpgstats-gender-bar__fill { animation-delay: 0.12s; background: var(--rpgstats-cat-3); }
.rpgstats-gender-bar:nth-child(4) .rpgstats-gender-bar__fill { animation-delay: 0.18s; background: var(--rpgstats-cat-4); }
.rpgstats-gender-bar:nth-child(5) .rpgstats-gender-bar__fill { animation-delay: 0.24s; background: var(--rpgstats-cat-5); }

.rpgstats-player-age-stats {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1px;
	margin-bottom: var(--space-lg);
}

.rpgstats-player-age-stat {
	background: var(--rpgstats-panel);
	padding: var(--space-md);
	text-align: left;
}

.rpgstats-player-age-stat__value {
	display: block;
	font-family: var(--font-display);
	font-size: 1.6rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-player-age-stat__label {
	font-family: var(--font-mono);
	font-size: 0.5rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-age-gender-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
}

.rpgstats-age-gender-item {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-xs) var(--space-md);
	background: transparent;
	border: 1px solid var(--rpgstats-line);
}

.rpgstats-age-gender-item__icon {
	font-size: 0.8rem;
	color: var(--rpgstats-text-dim);
}

.rpgstats-age-gender-item__name {
	font-family: var(--font-mono);
	font-size: 0.6rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--rpgstats-text);
}

.rpgstats-age-gender-item__value {
	font-family: var(--font-mono);
	font-size: 0.62rem;
	font-weight: 700;
	color: var(--rpgstats-primary);
}

.rpgstats-char-select {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	margin-bottom: var(--space-lg);
}

.rpgstats-char-select label {
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-char-select select {
	padding: var(--space-sm) var(--space-md);
	background: var(--bg-input);
	border: 1px solid var(--rpgstats-line);
	color: var(--rpgstats-text);
	font-family: var(--font-mono);
	font-size: 0.68rem;
	min-width: 220px;
}
.rpgstats-char-select select:focus {
	outline: none;
	border-color: var(--rpgstats-primary);
}

.rpgstats-char-detail {
	background: transparent;
	border: 1px solid var(--rpgstats-line);
	border-left-width: 2px;
	border-left-color: var(--rpgstats-primary);
	padding: var(--space-lg);
}

.rpgstats-char-detail__header {
	display: flex;
	gap: var(--space-md);
	align-items: center;
	margin-bottom: var(--space-lg);
}

.rpgstats-char-detail__avatar {
	width: 52px;
	height: 52px;
	object-fit: cover;
	border: 1px solid var(--rpgstats-line);
	flex-shrink: 0;
}

.rpgstats-char-detail__info h4 {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: 1.6rem;
	line-height: 1;
	font-weight: 400;
}

.rpgstats-char-detail__info h4 a {
	color: var(--rpgstats-text);
	text-decoration: none;
	transition: color 0.2s var(--ease);
}
.rpgstats-char-detail__info h4 a:hover { color: var(--rpgstats-primary); }

.rpgstats-char-detail__info p {
	margin: 0;
	font-family: var(--font-mono);
	font-size: 0.6rem;
	letter-spacing: 0.05em;
	color: var(--rpgstats-text-dim);
}

.rpgstats-char-detail__stats {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
	margin-bottom: var(--space-lg);
}

.rpgstats-mini-stat {
	flex: 1 1 90px;
	background: var(--rpgstats-panel);
	padding: var(--space-md);
	text-align: left;
}

.rpgstats-mini-stat__value {
	display: block;
	font-family: var(--font-display);
	font-size: 1.5rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-mini-stat__label {
	font-family: var(--font-mono);
	font-size: 0.5rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-char-detail__averages {
	margin-top: var(--space-lg);
	padding-top: var(--space-lg);
	border-top: 1px solid var(--rpgstats-line);
}

.rpgstats-char-avg-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
}

.rpgstats-char-avg {
	flex: 1 1 110px;
	background: var(--rpgstats-panel);
	border: 0;
	padding: var(--space-md);
	text-align: left;
}

.rpgstats-char-avg__value {
	display: block;
	font-family: var(--font-display);
	font-size: 1.3rem;
	line-height: 1;
	color: var(--rpgstats-text);
}

.rpgstats-char-avg__label {
	display: block;
	margin-top: 2px;
	font-family: var(--font-mono);
	font-size: 0.48rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-char-detail__sparkline { margin-top: var(--space-lg); }

.rpgstats-char-detail__sparkline p {
	margin: 0 0 var(--space-sm);
	font-family: var(--font-mono);
	font-size: 0.55rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-sparkline-wrap { margin-top: var(--space-sm); }

.rpgstats-sparkline {
	display: flex;
	align-items: flex-end;
	gap: 0;
	height: 50px;
	padding: var(--space-sm) 0;
	position: relative;
	background: transparent;
}

.rpgstats-sparkline::before {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 1px;
	background: var(--rpgstats-line);
}

.rpgstats-sparkline__point {
	flex: 1;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	height: 100%;
	position: relative;
}

.rpgstats-sparkline__point::before {
	content: "";
	width: 6px;
	height: 6px;
	background: var(--rpgstats-primary);
	position: absolute;
	bottom: calc(var(--height,0) - 3px);
	box-shadow: none;
	z-index: 2;
}

.rpgstats-sparkline__point::after {
	content: "";
	position: absolute;
	bottom: 0;
	width: 1px;
	height: var(--height);
	background: var(--rpgstats-line);
}

.rpgstats-sparkline-labels {
	display: flex;
	justify-content: space-between;
	margin-top: var(--space-xs);
}

.rpgstats-sparkline__label {
	flex: 1;
	text-align: center;
	font-family: var(--font-mono);
	font-size: 0.5rem;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--rpgstats-text-dim);
}

.rpgstats-back { margin-bottom: var(--space-lg); }

.rpgstats-back a {
	font-family: var(--font-mono);
	font-size: 0.6rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--rpgstats-text-muted);
	text-decoration: none;
	border-bottom: 1px solid var(--rpgstats-line);
	transition: color 0.2s var(--ease), border-color 0.2s var(--ease);
}
.rpgstats-back a:hover {
	color: var(--rpgstats-primary);
	border-color: var(--rpgstats-primary);
}

.rpgstats-player-header { margin-bottom: var(--space-lg); }

.rpgstats-player-header h2 {
	margin: 0;
	font-family: var(--font-display);
	font-size: clamp(2rem, 4vw, 3rem);
	line-height: 0.95;
	letter-spacing: -0.01em;
	color: var(--rpgstats-text);
}

.rpgstats-message {
	padding: var(--space-lg);
	border: 1px solid var(--rpgstats-line);
	border-left-width: 4px;
	text-align: left;
	font-family: var(--font-mono);
	font-size: 0.68rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.rpgstats-message--error {
	border-left-color: var(--rpgstats-error);
	background: var(--rpgstats-error-bg);
	color: var(--rpgstats-error);
}

.rpgstats-message--info {
	border-left-color: var(--rpgstats-info);
	background: var(--rpgstats-info-bg);
	color: var(--rpgstats-info);
}

@media (max-width: 768px) {
	.rpgstats-bar { grid-template-columns: 1fr; }
	.rpgstats-charbar { grid-template-columns: 36px 1fr; }

	.rpgstats-nav,
	.rpgstats-timefilter { width: 100%; }
	.rpgstats-nav__link,
	.rpgstats-timefilter__btn { flex: 1; text-align: center; }

	.rpgstats-vbars { height: 150px; }
	.rpgstats-vbar__label { font-size: 0.48rem; }

	.rpgstats-age-grid,
	.rpgstats-demographics-grid { grid-template-columns: 1fr; }

	.rpgstats-player-age-stats { grid-template-columns: repeat(3, 1fr); }

}

.lam-prf__rpgstats { margin-top: var(--space-lg); }

.rpgstats-profile { margin-top: 0; }

.rpgstats-profile__head { margin-bottom: var(--space-md); }

.rpgstats-profile .rpgstats-section {
	background: transparent;
	border: none;
	padding: 0;
	margin-bottom: var(--space-2xl);
}

.rpgstats-profile__title,
.rpgstats-profile .rpgstats-section h3 {
	font-family: var(--font-mono);
	font-size: 0.6rem;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--text);
	border-bottom: 1px solid var(--text-dark);
	padding: 0 0 var(--space-sm);
	margin: 0 0 var(--space-lg);
}
.rpgstats-profile__title {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	border-bottom: none;
}
.rpgstats-profile__title i { color: var(--accent); font-size: 0.8rem; }

.rpgstats-profile .rpgstats-summary {
	gap: var(--space-lg);
	background: transparent;
	border: 0;
}
.rpgstats-profile .rpgstats-box {
	flex-basis: 90px;
	background: transparent;
	border: none;
	outline: 0;
	padding: 0;
	text-align: left;
}
.rpgstats-profile .rpgstats-box__icon { display: none; }
.rpgstats-profile .rpgstats-box__value { font-size: 2rem; }

.rpgstats-profile .rpgstats-averages {
	gap: var(--space-lg);
	background: transparent;
	border: 0;
}
.rpgstats-profile .rpgstats-avg {
	flex-basis: 110px;
	background: transparent;
	outline: 0;
	padding: 0;
}
.rpgstats-profile .rpgstats-avg__value { font-size: 1.6rem; }
.rpgstats-profile .rpgstats-avg__scale,
.rpgstats-profile .rpgstats-avg__range { display: none; }
