/*
 * Portfolio Crypto Engine — frontend design system.
 *
 * Everything is scoped under .pce so a theme is never affected.
 *
 * THEMING
 * -------
 * Colours are tokens. The resolved theme lives in a data-pce-theme attribute on
 * <html>, written by assets/js/pce-theme.js before paint. The @media block near
 * the top is the no-JavaScript fallback and must be kept in sync with the
 * html[data-pce-theme="dark"] block directly above it.
 */

/* ==========================================================================
   1. Tokens
   ========================================================================== */

.pce {
	/* Surfaces */
	--pce-bg: #ffffff;
	--pce-surface: #ffffff;
	--pce-surface-2: #f6f8fb;
	--pce-surface-3: #eef2f7;

	/* Lines */
	--pce-border: #e3e8ef;
	--pce-border-strong: #cdd5e0;

	/* Text */
	--pce-text: #0f172a;
	--pce-text-2: #334155;
	--pce-muted: #64748b;

	/* Brand + semantics */
	--pce-accent: #4f46e5;
	--pce-accent-2: #7c3aed;
	--pce-accent-ink: #ffffff;
	--pce-accent-soft: rgba(79, 70, 229, .10);

	--pce-up: #0f9d58;
	--pce-up-soft: rgba(15, 157, 88, .12);
	--pce-down: #dc2626;
	--pce-down-soft: rgba(220, 38, 38, .12);

	/* Shape */
	--pce-radius: 14px;
	--pce-radius-lg: 20px;
	--pce-radius-pill: 999px;

	/* Depth */
	--pce-shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);
	--pce-shadow-md: 0 4px 16px -4px rgba(15, 23, 42, .10), 0 2px 6px -2px rgba(15, 23, 42, .06);
	--pce-shadow-lg: 0 18px 40px -16px rgba(15, 23, 42, .22);

	/* Rhythm */
	--pce-gap: 16px;
	--pce-gap-lg: 24px;

	/* Motion */
	--pce-ease: cubic-bezier(.4, 0, .2, 1);
	--pce-speed: .18s;

	/* Set per coin by the template — tints the hero with the 24h direction. */
	--pce-trend: var(--pce-up);
	--pce-trend-soft: var(--pce-up-soft);

	color: var(--pce-text);
	color-scheme: light;
	font-size: 15px;
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
}

/* Dark palette — applied when the theme script resolves to dark. */
html[data-pce-theme="dark"] .pce {
	--pce-bg: #0b0f17;
	--pce-surface: #121824;
	--pce-surface-2: #171f2e;
	--pce-surface-3: #1e2839;

	--pce-border: #253044;
	--pce-border-strong: #34425c;

	--pce-text: #e8edf7;
	--pce-text-2: #c3cddf;
	--pce-muted: #8b98ae;

	--pce-accent: #7c8cff;
	--pce-accent-2: #a78bfa;
	--pce-accent-ink: #0b0f17;
	--pce-accent-soft: rgba(124, 140, 255, .16);

	--pce-up: #34d399;
	--pce-up-soft: rgba(52, 211, 153, .16);
	--pce-down: #f87171;
	--pce-down-soft: rgba(248, 113, 113, .16);

	--pce-shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);
	--pce-shadow-md: 0 4px 18px -6px rgba(0, 0, 0, .6);
	--pce-shadow-lg: 0 20px 44px -18px rgba(0, 0, 0, .75);

	color-scheme: dark;
}

/* No-JS fallback. Keep in sync with the block above. */
@media (prefers-color-scheme: dark) {
	html:not([data-pce-theme]) .pce {
		--pce-bg: #0b0f17;
		--pce-surface: #121824;
		--pce-surface-2: #171f2e;
		--pce-surface-3: #1e2839;

		--pce-border: #253044;
		--pce-border-strong: #34425c;

		--pce-text: #e8edf7;
		--pce-text-2: #c3cddf;
		--pce-muted: #8b98ae;

		--pce-accent: #7c8cff;
		--pce-accent-2: #a78bfa;
		--pce-accent-ink: #0b0f17;
		--pce-accent-soft: rgba(124, 140, 255, .16);

		--pce-up: #34d399;
		--pce-up-soft: rgba(52, 211, 153, .16);
		--pce-down: #f87171;
		--pce-down-soft: rgba(248, 113, 113, .16);

		--pce-shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);
		--pce-shadow-md: 0 4px 18px -6px rgba(0, 0, 0, .6);
		--pce-shadow-lg: 0 20px 44px -18px rgba(0, 0, 0, .75);

		color-scheme: dark;
	}
}

/* ==========================================================================
   2. Base
   ========================================================================== */

.pce *,
.pce *::before,
.pce *::after {
	box-sizing: border-box;
}

.pce a {
	color: inherit;
	text-decoration: none;
	transition: color var(--pce-speed) var(--pce-ease);
}

/* Only textual links get an underline. Anything with a component class opts
   out here rather than fighting specificity in its own rule. */
.pce a:hover:not([class*="pce-"]),
.pce a:focus-visible:not([class*="pce-"]) {
	text-decoration: underline;
}

.pce :focus-visible {
	border-radius: 6px;
	outline: 2px solid var(--pce-accent);
	outline-offset: 2px;
}

.pce img {
	max-width: 100%;
}

.pce-num {
	font-variant-numeric: tabular-nums;
	letter-spacing: -.01em;
}

.pce-sr {
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

@media (prefers-reduced-motion: reduce) {
	.pce *,
	.pce *::before,
	.pce *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
	}
}

/* ==========================================================================
   3. Primitives
   ========================================================================== */

.pce-card {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	box-shadow: var(--pce-shadow-sm);
}

.pce-notice {
	background: var(--pce-surface-2);
	border: 1px dashed var(--pce-border-strong);
	border-radius: var(--pce-radius);
	color: var(--pce-muted);
	font-size: 14px;
	padding: 20px;
	text-align: center;
}

.pce-na {
	color: var(--pce-muted);
}

.pce-updated {
	align-items: center;
	color: var(--pce-muted);
	display: inline-flex;
	font-size: 12.5px;
	gap: 6px;
	margin: 8px 0 0;
}

.pce-updated::before {
	background: var(--pce-up);
	border-radius: 50%;
	box-shadow: 0 0 0 3px var(--pce-up-soft);
	content: "";
	height: 6px;
	width: 6px;
}

.pce-disclaimer {
	border-top: 1px solid var(--pce-border);
	color: var(--pce-muted);
	font-size: 12.5px;
	margin: 8px 0 0;
	padding-top: 16px;
}

/* Chips ------------------------------------------------------------------ */

.pce-chip {
	align-items: center;
	background: var(--pce-surface-2);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius-pill);
	color: var(--pce-text-2);
	display: inline-flex;
	font-size: 12px;
	font-weight: 600;
	gap: 5px;
	line-height: 1.7;
	padding: 2px 10px;
	white-space: nowrap;
}

.pce-chip--rank {
	background: var(--pce-accent-soft);
	border-color: transparent;
	color: var(--pce-accent);
}

.pce-badge {
	border-radius: var(--pce-radius-pill);
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .02em;
	line-height: 1.7;
	padding: 1px 9px;
	vertical-align: middle;
}

.pce-badge--demo {
	background: #fff4e5;
	border: 1px solid #ffd8a8;
	color: #8a5300;
}

html[data-pce-theme="dark"] .pce-badge--demo {
	background: rgba(255, 176, 32, .14);
	border-color: rgba(255, 176, 32, .35);
	color: #ffce85;
}

@media (prefers-color-scheme: dark) {
	html:not([data-pce-theme]) .pce-badge--demo {
		background: rgba(255, 176, 32, .14);
		border-color: rgba(255, 176, 32, .35);
		color: #ffce85;
	}
}

/* Change pill ------------------------------------------------------------ */

.pce-change {
	font-variant-numeric: tabular-nums;
	font-weight: 650;
	white-space: nowrap;
}

.pce-up { color: var(--pce-up); }
.pce-down { color: var(--pce-down); }
.pce-flat { color: var(--pce-muted); }

.pce-pill {
	align-items: center;
	border-radius: var(--pce-radius-pill);
	display: inline-flex;
	font-size: 13px;
	font-weight: 700;
	gap: 4px;
	line-height: 1.6;
	padding: 3px 10px;
}

.pce-pill.pce-up { background: var(--pce-up-soft); }
.pce-pill.pce-down { background: var(--pce-down-soft); }
.pce-pill.pce-flat { background: var(--pce-surface-3); }

.pce-pill::before {
	font-size: 10px;
	line-height: 1;
}

.pce-pill.pce-up::before { content: "\25B2"; }
.pce-pill.pce-down::before { content: "\25BC"; }

/* Buttons ---------------------------------------------------------------- */

.pce-btn {
	align-items: center;
	background: var(--pce-surface-2);
	border: 1px solid var(--pce-border);
	border-radius: 10px;
	color: var(--pce-text);
	cursor: pointer;
	display: inline-flex;
	font: inherit;
	font-size: 13.5px;
	font-weight: 650;
	gap: 7px;
	justify-content: center;
	padding: 9px 15px;
	text-align: center;
	transition: background var(--pce-speed) var(--pce-ease),
		border-color var(--pce-speed) var(--pce-ease),
		transform var(--pce-speed) var(--pce-ease),
		box-shadow var(--pce-speed) var(--pce-ease);
}

.pce-btn:hover {
	background: var(--pce-surface-3);
	border-color: var(--pce-border-strong);
	text-decoration: none;
	transform: translateY(-1px);
}

.pce-btn:active {
	transform: translateY(0);
}

.pce-btn--primary {
	background: linear-gradient(135deg, var(--pce-accent), var(--pce-accent-2));
	border-color: transparent;
	box-shadow: var(--pce-shadow-sm);
	color: var(--pce-accent-ink);
}

.pce-btn--primary:hover {
	background: linear-gradient(135deg, var(--pce-accent), var(--pce-accent-2));
	border-color: transparent;
	box-shadow: var(--pce-shadow-md);
	color: var(--pce-accent-ink);
	filter: saturate(1.15) brightness(1.06);
}

.pce-btn--block {
	width: 100%;
}

/* Logos ------------------------------------------------------------------ */

.pce-logo {
	border-radius: 50%;
	flex: 0 0 auto;
	vertical-align: middle;
}

.pce-logo--mono {
	align-items: center;
	background: var(--pce-surface-3);
	border: 1px solid var(--pce-border);
	color: var(--pce-muted);
	display: inline-flex;
	font-weight: 700;
	justify-content: center;
}

/* Section headers -------------------------------------------------------- */

.pce-section__head {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: space-between;
	margin-bottom: 14px;
}

.pce-section__title {
	align-items: center;
	display: flex;
	font-size: 19px;
	font-weight: 700;
	gap: 10px;
	letter-spacing: -.01em;
	margin: 0;
}

.pce-section__title::before {
	background: linear-gradient(180deg, var(--pce-accent), var(--pce-accent-2));
	border-radius: 3px;
	content: "";
	display: block;
	height: 19px;
	width: 4px;
}

.pce-section__more {
	color: var(--pce-accent);
	font-size: 13.5px;
	font-weight: 650;
}

/* ==========================================================================
   4. Theme toggle
   ========================================================================== */

.pce-theme-toggle {
	align-items: center;
	background: var(--pce-surface-2);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius-pill);
	cursor: pointer;
	display: inline-flex;
	gap: 2px;
	padding: 3px;
}

.pce-theme-toggle__btn {
	align-items: center;
	background: none;
	border: 0;
	border-radius: var(--pce-radius-pill);
	color: var(--pce-muted);
	cursor: pointer;
	display: inline-flex;
	font: inherit;
	font-size: 12px;
	font-weight: 650;
	gap: 5px;
	padding: 5px 11px;
	transition: background var(--pce-speed) var(--pce-ease), color var(--pce-speed) var(--pce-ease);
}

.pce-theme-toggle__btn:hover {
	color: var(--pce-text);
}

.pce-theme-toggle__btn[aria-pressed="true"] {
	background: var(--pce-surface);
	box-shadow: var(--pce-shadow-sm);
	color: var(--pce-text);
}

.pce-theme-toggle__icon {
	font-size: 13px;
	line-height: 1;
}

/* ==========================================================================
   5. Coin page
   ========================================================================== */

.pce-coin-page {
	display: flex;
	flex-direction: column;
	gap: var(--pce-gap-lg);
	margin: 0 auto;
	max-width: 1120px;
	padding: 20px 16px 56px;
}

.pce-topbar {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: space-between;
}

.pce-breadcrumbs {
	color: var(--pce-muted);
	font-size: 13px;
}

.pce-breadcrumbs a:hover {
	color: var(--pce-accent);
}

.pce-breadcrumbs__sep {
	opacity: .5;
	padding: 0 6px;
}

/* Hero ------------------------------------------------------------------- */

.pce-hero {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius-lg);
	box-shadow: var(--pce-shadow-md);
	isolation: isolate;
	overflow: hidden;
	position: relative;
}

.pce-hero::before {
	background:
		radial-gradient(120% 140% at 8% 0%, var(--pce-trend-soft) 0%, transparent 55%),
		radial-gradient(90% 120% at 100% 0%, var(--pce-accent-soft) 0%, transparent 60%);
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
	z-index: -1;
}

.pce-hero__inner {
	display: grid;
	gap: var(--pce-gap-lg);
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	padding: 26px 26px 22px;
}

.pce-hero__identity {
	align-items: center;
	display: flex;
	gap: 16px;
}

.pce-hero__logo {
	position: relative;
}

.pce-hero__logo::after {
	background: var(--pce-trend);
	border-radius: 50%;
	content: "";
	filter: blur(18px);
	inset: 4px;
	opacity: .28;
	position: absolute;
	z-index: -1;
}

.pce-hero__logo .pce-logo {
	box-shadow: var(--pce-shadow-md);
}

.pce-hero__name {
	font-size: clamp(26px, 3.4vw, 34px);
	font-weight: 800;
	letter-spacing: -.025em;
	line-height: 1.15;
	margin: 0;
}

.pce-hero__symbol {
	color: var(--pce-muted);
	font-size: .5em;
	font-weight: 700;
	letter-spacing: .04em;
	margin-left: 8px;
	text-transform: uppercase;
	vertical-align: middle;
}

.pce-hero__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 10px;
}

.pce-hero__quote {
	display: flex;
	flex-direction: column;
	gap: 10px;
	justify-content: center;
	text-align: right;
}

.pce-hero__price {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: flex-end;
}

.pce-hero__value {
	font-size: clamp(30px, 4.6vw, 44px);
	font-weight: 800;
	letter-spacing: -.03em;
	line-height: 1;
}

.pce-hero__spark {
	height: 52px;
	margin-top: 2px;
	width: 100%;
}

.pce-hero__spark svg {
	display: block;
	height: 100%;
	width: 100%;
}

.pce-hero__meta {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: flex-end;
}

.pce-hero__actions {
	border-top: 1px solid var(--pce-border);
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	padding: 14px 26px;
}

@media (max-width: 860px) {
	.pce-hero__inner {
		grid-template-columns: 1fr;
	}

	.pce-hero__quote {
		text-align: left;
	}

	.pce-hero__price,
	.pce-hero__meta {
		justify-content: flex-start;
	}
}

/* Stats ------------------------------------------------------------------ */

.pce-stats {
	display: grid;
	gap: 12px;
	grid-template-columns: repeat(auto-fit, minmax(168px, 1fr));
}

.pce-stat {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	display: flex;
	flex-direction: column;
	gap: 5px;
	overflow: hidden;
	padding: 14px 16px;
	position: relative;
	transition: border-color var(--pce-speed) var(--pce-ease),
		box-shadow var(--pce-speed) var(--pce-ease),
		transform var(--pce-speed) var(--pce-ease);
}

.pce-stat::before {
	background: linear-gradient(90deg, var(--pce-accent), var(--pce-accent-2));
	content: "";
	height: 2px;
	left: 0;
	opacity: 0;
	position: absolute;
	right: 0;
	top: 0;
	transition: opacity var(--pce-speed) var(--pce-ease);
}

.pce-stat:hover {
	border-color: var(--pce-border-strong);
	box-shadow: var(--pce-shadow-md);
	transform: translateY(-2px);
}

.pce-stat:hover::before {
	opacity: 1;
}

.pce-stat__label {
	color: var(--pce-muted);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .01em;
}

.pce-stat__value {
	font-size: 19px;
	font-variant-numeric: tabular-nums;
	font-weight: 750;
	letter-spacing: -.02em;
}

.pce-stat__meta {
	color: var(--pce-muted);
	font-size: 11.5px;
}

.pce-stat__bar {
	background: var(--pce-surface-3);
	border-radius: var(--pce-radius-pill);
	height: 4px;
	margin-top: 4px;
	overflow: hidden;
}

.pce-stat__bar span {
	background: linear-gradient(90deg, var(--pce-accent), var(--pce-accent-2));
	border-radius: inherit;
	display: block;
	height: 100%;
}

/* Chart ------------------------------------------------------------------ */

.pce-chart {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	box-shadow: var(--pce-shadow-sm);
	padding: 18px 20px 20px;
}

.pce-chart.is-loading {
	opacity: .55;
}

.pce-chart__head {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: space-between;
	margin-bottom: 14px;
}

.pce-chart__title {
	font-size: 15.5px;
	font-weight: 700;
}

.pce-chart__tabs {
	background: var(--pce-surface-2);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius-pill);
	display: inline-flex;
	flex-wrap: wrap;
	gap: 2px;
	margin-bottom: 16px;
	padding: 3px;
}

.pce-chart__tab {
	background: none;
	border: 0;
	border-radius: var(--pce-radius-pill);
	color: var(--pce-muted);
	cursor: pointer;
	font: inherit;
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: .02em;
	padding: 6px 14px;
	transition: background var(--pce-speed) var(--pce-ease), color var(--pce-speed) var(--pce-ease);
}

.pce-chart__tab:hover {
	color: var(--pce-text);
}

.pce-chart__tab.is-active {
	background: var(--pce-surface);
	box-shadow: var(--pce-shadow-sm);
	color: var(--pce-text);
}

.pce-chart__canvas {
	position: relative;
	width: 100%;
}

.pce-chart__grid {
	stroke: var(--pce-border);
	stroke-dasharray: 3 5;
	stroke-width: 1;
}

.pce-chart__crosshair {
	stroke: var(--pce-muted);
	stroke-dasharray: 3 3;
	stroke-width: 1;
}

.pce-chart__tooltip {
	background: var(--pce-text);
	border-radius: 9px;
	box-shadow: var(--pce-shadow-lg);
	color: var(--pce-bg);
	font-size: 12px;
	font-weight: 600;
	line-height: 1.4;
	padding: 7px 10px;
	pointer-events: none;
	position: absolute;
	white-space: nowrap;
	z-index: 2;
}

.pce-chart__tooltip span {
	display: block;
	font-weight: 500;
	opacity: .72;
}

.pce-chart__empty {
	color: var(--pce-muted);
	font-size: 13px;
	margin: 10px 0 0;
	text-align: center;
}

/* About ------------------------------------------------------------------ */

.pce-prose {
	color: var(--pce-text-2);
	line-height: 1.72;
}

.pce-prose p {
	margin: 0 0 1em;
}

.pce-prose p:last-child {
	margin-bottom: 0;
}

.pce-prose a {
	color: var(--pce-accent);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.pce-panel {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	padding: 20px 22px;
}

/* Official links --------------------------------------------------------- */

.pce-links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.pce-links a {
	align-items: center;
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius-pill);
	display: inline-flex;
	font-size: 13px;
	font-weight: 600;
	gap: 7px;
	padding: 8px 15px;
	transition: background var(--pce-speed) var(--pce-ease),
		border-color var(--pce-speed) var(--pce-ease),
		transform var(--pce-speed) var(--pce-ease);
}

.pce-links a:hover {
	background: var(--pce-accent-soft);
	border-color: transparent;
	color: var(--pce-accent);
	text-decoration: none;
	transform: translateY(-1px);
}

.pce-links__icon {
	opacity: .65;
}

/* ==========================================================================
   6. Components
   ========================================================================== */

/* Price ------------------------------------------------------------------ */

.pce-price {
	display: inline-flex;
	flex-direction: column;
	gap: 5px;
}

.pce-price--card {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	box-shadow: var(--pce-shadow-sm);
	display: flex;
	gap: 8px;
	padding: 18px;
	width: 100%;
}

.pce-price__head {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.pce-price__name {
	font-weight: 700;
}

.pce-price__symbol {
	color: var(--pce-muted);
	font-size: 12.5px;
	font-weight: 600;
	text-transform: uppercase;
}

.pce-price__body {
	align-items: baseline;
	display: flex;
	gap: 10px;
}

.pce-price__value {
	font-size: 23px;
	font-variant-numeric: tabular-nums;
	font-weight: 750;
	letter-spacing: -.02em;
}

.pce-price__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 18px;
	list-style: none;
	margin: 6px 0 0;
	padding: 0;
}

.pce-price__meta li {
	display: flex;
	flex-direction: column;
}

.pce-price__meta span {
	color: var(--pce-muted);
	font-size: 12px;
}

/* Table ------------------------------------------------------------------ */

.pce-table-wrap {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	overflow-x: auto;
}

.pce-table {
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
	min-width: 580px;
	width: 100%;
}

.pce-table th,
.pce-table td {
	border-bottom: 1px solid var(--pce-border);
	padding: 12px 14px;
	text-align: right;
}

.pce-table tbody tr:last-child td {
	border-bottom: 0;
}

.pce-table th:first-child,
.pce-table td:first-child,
.pce-table .pce-col-coin {
	text-align: left;
}

.pce-table thead th {
	background: var(--pce-surface-2);
	color: var(--pce-muted);
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: .05em;
	position: sticky;
	text-transform: uppercase;
	top: 0;
	white-space: nowrap;
}

.pce-table th.is-sortable {
	cursor: pointer;
	user-select: none;
}

.pce-table th.is-sortable:hover {
	color: var(--pce-text);
}

.pce-table th.is-sortable::after {
	content: "";
	display: inline-block;
	margin-left: 6px;
	opacity: .3;
}

.pce-table th[data-order="asc"]::after { content: "\25B2"; opacity: 1; }
.pce-table th[data-order="desc"]::after { content: "\25BC"; opacity: 1; }

.pce-table .pce-col-coin {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
}

.pce-table__name {
	font-weight: 650;
}

.pce-table__name a:hover {
	color: var(--pce-accent);
}

.pce-table__symbol {
	color: var(--pce-muted);
	font-size: 12px;
	font-weight: 600;
}

.pce-table tbody tr {
	transition: background var(--pce-speed) var(--pce-ease);
}

.pce-table tbody tr:hover {
	background: var(--pce-surface-2);
}

/* Market overview -------------------------------------------------------- */

.pce-market {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	box-shadow: var(--pce-shadow-sm);
	padding: 20px;
}

.pce-market__head {
	align-items: center;
	display: flex;
	gap: 10px;
	margin-bottom: 16px;
}

.pce-market__title {
	font-size: 17px;
	font-weight: 700;
	margin: 0;
}

.pce-market__grid {
	display: grid;
	gap: 12px;
	grid-template-columns: repeat(auto-fit, minmax(152px, 1fr));
}

.pce-market--list .pce-market__grid {
	grid-template-columns: 1fr;
}

/* Trending --------------------------------------------------------------- */

.pce-trending__list {
	counter-reset: pce-trend;
	list-style: none;
	margin: 0;
	padding: 0;
}

.pce-trending__item {
	align-items: center;
	border-bottom: 1px solid var(--pce-border);
	display: grid;
	gap: 12px;
	grid-template-columns: 26px auto 1fr auto auto;
	padding: 11px 4px;
	transition: background var(--pce-speed) var(--pce-ease);
}

.pce-trending__item:last-child {
	border-bottom: 0;
}

.pce-trending__item:hover {
	background: var(--pce-surface-2);
}

.pce-trending__rank {
	color: var(--pce-muted);
	font-size: 13px;
	font-weight: 700;
	text-align: center;
}

.pce-trending__name {
	font-weight: 650;
}

.pce-trending__name a:hover {
	color: var(--pce-accent);
}

.pce-trending__symbol {
	color: var(--pce-muted);
	font-size: 12px;
	margin-left: 6px;
}

.pce-trending__price {
	font-variant-numeric: tabular-nums;
	font-weight: 650;
}

.pce-trending__mrank {
	color: var(--pce-muted);
	font-size: 12px;
}

@media (max-width: 520px) {
	.pce-trending__item {
		grid-template-columns: 22px auto 1fr;
	}

	.pce-trending__price,
	.pce-trending__change {
		grid-column: 2 / -1;
	}

	.pce-trending__mrank {
		display: none;
	}
}

/* News ------------------------------------------------------------------- */

.pce-news--grid {
	display: grid;
	gap: var(--pce-gap);
	grid-template-columns: repeat(auto-fill, minmax(248px, 1fr));
}

.pce-news__item {
	border-bottom: 1px solid var(--pce-border);
	display: flex;
	gap: 14px;
	padding: 14px 0;
}

.pce-news--list .pce-news__item:first-child {
	padding-top: 0;
}

.pce-news--list .pce-news__item:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}

.pce-news--grid .pce-news__item {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	flex-direction: column;
	overflow: hidden;
	padding: 0;
	transition: border-color var(--pce-speed) var(--pce-ease),
		box-shadow var(--pce-speed) var(--pce-ease),
		transform var(--pce-speed) var(--pce-ease);
}

.pce-news--grid .pce-news__item:hover {
	border-color: var(--pce-border-strong);
	box-shadow: var(--pce-shadow-md);
	transform: translateY(-2px);
}

.pce-news__thumb {
	background: var(--pce-surface-3);
	border-radius: 10px;
	flex: 0 0 84px;
	height: 84px;
	overflow: hidden;
}

.pce-news--grid .pce-news__thumb {
	border-radius: 0;
	flex: none;
	height: 148px;
	width: 100%;
}

.pce-news__thumb--empty {
	align-items: center;
	background: linear-gradient(135deg, var(--pce-accent-soft), var(--pce-surface-3));
	color: var(--pce-muted);
	display: flex;
	font-size: 26px;
	font-weight: 800;
	justify-content: center;
	letter-spacing: .04em;
}

.pce-news__thumb img {
	height: 100%;
	object-fit: cover;
	transition: transform .3s var(--pce-ease);
	width: 100%;
}

.pce-news__item:hover .pce-news__thumb--empty {
	align-items: center;
	background: linear-gradient(135deg, var(--pce-accent-soft), var(--pce-surface-3));
	color: var(--pce-muted);
	display: flex;
	font-size: 26px;
	font-weight: 800;
	justify-content: center;
	letter-spacing: .04em;
}

.pce-news__thumb img {
	transform: scale(1.04);
}

.pce-news--grid .pce-news__body {
	padding: 14px 16px 16px;
}

.pce-news__title {
	font-size: 15px;
	font-weight: 650;
	line-height: 1.4;
	margin: 0 0 5px;
}

.pce-news__title a:hover {
	color: var(--pce-accent);
}

.pce-news__excerpt {
	color: var(--pce-muted);
	font-size: 13px;
	margin: 0 0 8px;
}

.pce-news__meta {
	align-items: center;
	color: var(--pce-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: 12px;
	gap: 8px;
	margin: 0;
}

.pce-news__source {
	color: var(--pce-text-2);
	font-weight: 650;
}

.pce-news__meta time::before {
	content: "\00B7";
	margin-right: 8px;
	opacity: .6;
}

/* Related articles ------------------------------------------------------- */

.pce-articles {
	display: grid;
	gap: var(--pce-gap);
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}

.pce-articles--cols-2 { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.pce-articles--cols-4 { grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); }

.pce-article {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	position: relative;
	transition: border-color var(--pce-speed) var(--pce-ease),
		box-shadow var(--pce-speed) var(--pce-ease),
		transform var(--pce-speed) var(--pce-ease);
}

.pce-article:hover {
	border-color: var(--pce-border-strong);
	box-shadow: var(--pce-shadow-md);
	transform: translateY(-2px);
}

.pce-article__thumb {
	aspect-ratio: 16 / 9;
	background: var(--pce-surface-3);
	display: block;
	overflow: hidden;
}

.pce-article__thumb img {
	height: 100%;
	object-fit: cover;
	transition: transform .3s var(--pce-ease);
	width: 100%;
}

.pce-article:hover .pce-article__thumb img {
	transform: scale(1.04);
}

.pce-article__thumb--empty {
	align-items: center;
	background: linear-gradient(135deg, var(--pce-accent-soft), var(--pce-surface-3));
	color: var(--pce-muted);
	display: flex;
	font-size: 22px;
	font-weight: 800;
	justify-content: center;
	letter-spacing: .04em;
}

.pce-article__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 7px;
	padding: 14px 16px 16px;
}

.pce-article__title {
	font-size: 15px;
	font-weight: 650;
	line-height: 1.4;
	margin: 0;
}

/* Whole-card click target, keyboard focusable via the title link. */
.pce-article__title a::after {
	content: "";
	inset: 0;
	position: absolute;
}

.pce-article__title a:hover {
	color: var(--pce-accent);
	text-decoration: none;
}

.pce-article__excerpt {
	color: var(--pce-muted);
	font-size: 13px;
	margin: 0;
}

.pce-article__meta {
	align-items: center;
	color: var(--pce-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: 12px;
	gap: 8px;
	margin-top: auto;
	padding-top: 6px;
}

/* Coin cards ------------------------------------------------------------- */

.pce-coins {
	display: grid;
	gap: var(--pce-gap);
	grid-template-columns: repeat(auto-fill, minmax(228px, 1fr));
}

.pce-coins--cols-1 { grid-template-columns: 1fr; }
.pce-coins--cols-2 { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); }
.pce-coins--cols-3 { grid-template-columns: repeat(auto-fill, minmax(248px, 1fr)); }

.pce-coin-card {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: var(--pce-radius);
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 18px;
	position: relative;
	transition: border-color var(--pce-speed) var(--pce-ease),
		box-shadow var(--pce-speed) var(--pce-ease),
		transform var(--pce-speed) var(--pce-ease);
}

.pce-coin-card:hover {
	border-color: var(--pce-border-strong);
	box-shadow: var(--pce-shadow-md);
	transform: translateY(-3px);
}

.pce-coin-card__head {
	align-items: center;
	display: flex;
	gap: 11px;
}

.pce-coin-card__head .pce-badge {
	margin-left: auto;
}

.pce-coin-card__title {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.pce-coin-card__name {
	font-weight: 700;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.pce-coin-card__symbol {
	color: var(--pce-muted);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .03em;
	text-transform: uppercase;
}

.pce-coin-card__price {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
}

.pce-coin-card__value {
	font-size: 21px;
	font-variant-numeric: tabular-nums;
	font-weight: 750;
	letter-spacing: -.02em;
}

.pce-coin-card__meta {
	border-top: 1px solid var(--pce-border);
	display: grid;
	gap: 4px 10px;
	grid-template-columns: 1fr 1fr;
	margin: 0;
	padding-top: 12px;
}

.pce-coin-card__meta dt {
	color: var(--pce-muted);
	font-size: 11.5px;
}

.pce-coin-card__meta dd {
	font-size: 13.5px;
	font-variant-numeric: tabular-nums;
	font-weight: 650;
	margin: 0;
}

/* ==========================================================================
   7. Archive
   ========================================================================== */

.pce-archive__head {
	align-items: flex-end;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: space-between;
}

.pce-archive__title {
	font-size: clamp(24px, 3vw, 32px);
	font-weight: 800;
	letter-spacing: -.025em;
	margin: 0;
}

.pce-archive__search {
	display: flex;
	gap: 8px;
}

.pce-archive__search input[type="search"] {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: 10px;
	color: var(--pce-text);
	flex: 1;
	font: inherit;
	padding: 10px 14px;
}

.pce-archive__search input[type="search"]:focus {
	border-color: var(--pce-accent);
	outline: none;
}

.pce-pagination {
	display: flex;
	gap: 8px;
	justify-content: center;
	margin-top: 24px;
}

.pce-pagination a,
.pce-pagination span {
	background: var(--pce-surface);
	border: 1px solid var(--pce-border);
	border-radius: 10px;
	font-size: 13.5px;
	font-weight: 650;
	padding: 8px 14px;
}

.pce-pagination a:hover {
	background: var(--pce-accent-soft);
	border-color: transparent;
	color: var(--pce-accent);
	text-decoration: none;
}

/* ==========================================================================
   8. Auto internal links
   ========================================================================== */

.pce-auto-link {
	border-bottom: 1px solid currentColor;
	color: var(--pce-accent);
	text-decoration: none;
}

.pce-auto-link:hover {
	opacity: .8;
	text-decoration: none;
}
