/* Agent Marketplace — LobeHub-style discovery + detail */

html,
body.market-page {
	margin: 0;
	background: #000;
	color: var(--ink);
	font-family: var(--font-body);
	-webkit-font-smoothing: antialiased;
}

/* The global /style.css (loaded for every page so the 3D viewer renders
   full-bleed) sets `html, body { height: 100%; overflow: hidden }`. That
   pins the marketplace to the viewport and kills page scroll. This file
   is only linked from marketplace.html, so unscoping html/body here just
   restores normal document scrolling on marketplace routes.

   `overflow-x: clip` (not `visible`) keeps the site-header's wide nav from
   widening the body on narrow viewports — without it, the page gains a
   horizontal scrollbar on mobile and hero content pushes off the right edge. */
html,
body.market-page {
	height: auto;
	overflow-x: clip;
	overflow-y: visible;
}

body.market-page {
	display: grid;
	grid-template-columns: 240px 1fr;
	min-height: 100vh;
}

/* The shared global nav is injected as `<header><div id="nav-container">` — a
   direct child of this grid body. Left unplaced it lands in the first grid cell,
   shoving the sidebar into the wide column and the main grid down into the narrow
   240px track. Span it across both columns so it sits as a full-width top row and
   the sidebar/main flow correctly beneath it. */
body.market-page > header {
	grid-column: 1 / -1;
}

/* ── Sidebar ─────────────────────────────────────────────────────────── */

.market-sidebar {
	border-right: 1px solid var(--stroke);
	padding: var(--space-md) var(--space-sm);
	position: sticky;
	top: 0;
	height: 100vh;
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
}

.market-logo {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-xs) var(--space-sm);
	color: var(--ink-dim);
	text-decoration: none;
	font-size: 13px;
}

.market-logo img {
	width: 22px;
	height: 22px;
}

.market-nav {
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
	margin-top: var(--space-sm);
}

.market-nav a {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-sm) var(--space-sm);
	border-radius: var(--radius-sm);
	text-decoration: none;
	color: var(--ink-dim);
	font-size: 14px;
}

.market-nav a:hover {
	background: var(--surface-1);
	color: var(--ink);
}

.market-nav a.active {
	background: var(--surface-2);
	color: var(--ink);
}

.market-nav .ico {
	width: 18px;
	display: inline-block;
	text-align: center;
	opacity: 0.7;
}

/* ── Topbar ──────────────────────────────────────────────────────────── */

.market-main {
	min-width: 0;
	display: flex;
	flex-direction: column;
}

.market-topbar {
	display: flex;
	/* Wrapping is not cosmetic here. The bar holds search, the type chips, the
	   avatar category chips, the sort select and the submit CTA; once the
	   category row appears the row is wider than a 1440px viewport, and because
	   the page body is overflow-x: clip the sort and the CTA were not pushed
	   off-screen with a scrollbar, they were simply erased. */
	flex-wrap: wrap;
	gap: var(--space-sm);
	padding: var(--space-md) var(--space-lg);
	border-bottom: 1px solid var(--stroke);
	position: sticky;
	top: 0;
	background: rgba(10, 10, 10, 0.92);
	z-index: 10;
}

#market-search {
	flex: 1;
	background: var(--surface-1);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-md);
	padding: var(--space-sm) var(--space-md);
	color: var(--ink);
	font-size: 14px;
	outline: none;
}

#market-search::placeholder {
	color: var(--ink-dim);
}

.market-sort {
	background: var(--surface-1);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-md);
	padding: var(--space-sm) var(--space-sm);
	color: var(--ink);
	font-size: 13px;
	cursor: pointer;
}
.market-sort:hover {
	background: var(--surface-2);
	border-color: var(--accent);
}

/* ── Discovery body ──────────────────────────────────────────────────── */

.market-body {
	display: grid;
	grid-template-columns: 240px 1fr;
	gap: 0;
	min-height: 0;
}

.market-cats {
	border-right: 1px solid var(--stroke);
	padding: var(--space-sm) var(--space-xs);
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
	max-height: calc(100vh - 60px);
	overflow-y: auto;
	position: sticky;
	top: 60px;
}

.cat-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--space-sm) var(--space-sm);
	border-radius: var(--radius-sm);
	cursor: pointer;
	color: var(--ink-dim);
	font-size: 14px;
	user-select: none;
}

.cat-row:hover {
	background: var(--surface-1);
	color: var(--ink);
}

.cat-row.active {
	background: var(--surface-2);
	color: var(--ink);
}

.cat-row .count {
	color: var(--ink-dim);
	font-size: 12px;
}

.market-grid {
	padding: var(--space-md) var(--space-lg) var(--space-2xl);
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: var(--space-md);
	align-content: start;
}

/* The discovery grid renders the whole catalogue at once. A Lighthouse desktop
   trace measured #market-grid at 31,196px tall, of which one 940px screenful is
   visible, and the browser paid full Style & Layout (11.8s) and Rendering
   (16.1s) for every row of it on first render. `content-visibility: auto` skips
   that work for a card until it nears the viewport and gives it back when the
   card leaves. Both card types already clip their own contents (the avatar card
   is `overflow: hidden`; the agent card's thumb uses a negative margin that
   lands exactly on the padding box), so the paint containment this implies
   changes nothing on screen. The size hints are a 4-column track at the grid's
   240px minimum plus each card's body; the leading `auto` keyword hands the
   browser the real measurement once a card has rendered, so a taller-than-hinted
   card never leaves a gap or jumps the scrollbar. */
.market-grid > .market-card-avatar {
	content-visibility: auto;
	contain-intrinsic-size: auto 250px auto 370px;
}
.market-grid > .market-card-agent {
	content-visibility: auto;
	contain-intrinsic-size: auto 250px auto 300px;
}

/* ── Category chips row ─────────────────────────────────────── */
.market-cat-chips {
	display: flex;
	gap: var(--space-xs);
	padding: var(--space-xs) var(--space-lg) var(--space-3xs);
	overflow-x: auto;
	scrollbar-width: none;
	-ms-overflow-style: none;
	flex-shrink: 0;
}
.market-cat-chips::-webkit-scrollbar { display: none; }
.market-cat-chip {
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	padding: var(--space-xs) var(--space-sm);
	border-radius: var(--radius-pill);
	border: 1px solid var(--stroke);
	background: var(--surface-1);
	color: var(--ink-dim);
	font-size: 12px;
	font-weight: 500;
	cursor: pointer;
	white-space: nowrap;
	transition: border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);
	flex-shrink: 0;
}
.market-cat-chip:hover {
	border-color: var(--stroke-strong);
	color: var(--ink);
}
.market-cat-chip.active {
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
	border-color: var(--ink);
}
.market-cat-chip .cat-chip-count {
	font-size: 10px;
	/* No opacity dim: 0.6 over the chip ink fails the 4.5:1 axe AA floor. */
	font-weight: 600;
}

/* ── Infinite scroll sentinel ─────────────────────────────── */
.market-scroll-sentinel {
	height: 1px;
	grid-column: 1 / -1;
}
.market-loadmore-spinner {
	grid-column: 1 / -1;
	display: flex;
	justify-content: center;
	padding: var(--space-md);
}
.market-loadmore-spinner::after {
	content: '';
	width: 20px;
	height: 20px;
	border: 2px solid var(--stroke-strong);
	border-top-color: var(--ink-dim);
	border-radius: 50%;
	animation: mk-spin 0.7s linear infinite;
}
@keyframes mk-spin { to { transform: rotate(360deg); } }

.market-card-agent {
	/* Base card surface comes from .card + .card--interactive (added in JS).
	   Override padding to 16px — marketplace cards are content-dense. */
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	min-height: 200px;
	position: relative;
}

.market-card-agent .thumb {
	margin: calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) var(--space-2xs);
	aspect-ratio: 16 / 9;
	background:
		radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.12), transparent 65%),
		radial-gradient(circle at 50% 95%, rgba(255, 255, 255, 0.08), transparent 70%),
		linear-gradient(180deg, var(--stage), var(--stage-deep)) center/cover no-repeat;
	border-bottom: 1px solid var(--card-border);
	border-top-left-radius: var(--card-radius);
	border-top-right-radius: var(--card-radius);
	position: relative;
	overflow: hidden;
}
.market-card-agent .thumb .mv-placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	pointer-events: none;
	background:
		radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.1), transparent 65%),
		radial-gradient(circle at 50% 95%, rgba(255, 255, 255, 0.06), transparent 70%),
		linear-gradient(180deg, var(--stage), var(--stage-deep));
}
.market-card-agent .thumb .mv-placeholder-initial {
	font-family: var(--font-display);
	font-size: 42px;
	font-weight: 700;
	line-height: 1;
	background: linear-gradient(180deg, rgba(244,244,245,0.45), rgba(113,113,122,0.3));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	letter-spacing: -0.04em;
}

.market-card-agent .thumb model-viewer {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	background: transparent;
	--poster-color: transparent;
	opacity: 0;
	transition: opacity var(--duration-slow) var(--ease-standard);
	z-index: 0;
}
.market-card-agent.mv-loaded .thumb model-viewer {
	opacity: 1;
}
.market-card-agent.mv-loaded .thumb .mv-placeholder {
	opacity: 0;
}

/* hover border-color now handled by .card--interactive:hover in style.css */

.market-card-agent .head {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
}

.market-card-agent .avatar {
	width: 36px;
	height: 36px;
	border-radius: var(--radius-sm);
	background: var(--surface-2);
	display: grid;
	place-items: center;
	font-size: 18px;
	flex-shrink: 0;
	overflow: hidden;
}
.market-card-agent .avatar.avatar-img {
	background-size: cover;
	background-position: center;
}

.market-card-agent .title {
	font-weight: 600;
	font-size: 15px;
	margin: 0;
	color: var(--ink);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.market-card-agent .author {
	font-size: 12px;
	color: var(--ink-dim);
	margin-top: var(--space-3xs);
}

.market-card-agent .desc {
	font-size: 13px;
	color: var(--ink-dim);
	line-height: 1.5;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	flex: 1;
}

.market-card-agent .stats {
	display: flex;
	gap: var(--space-xs);
	flex-wrap: wrap;
}

.stat-pill {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2xs);
	background: var(--surface-2);
	border-radius: var(--radius-sm);
	padding: var(--space-3xs) var(--space-xs);
	font-size: 11px;
	color: var(--ink-dim);
}

.market-card-agent .stats .rating {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3xs);
	font-size: 11px;
	color: #f5a524;
	font-weight: 600;
	background: rgba(245, 165, 36, 0.1);
	border: 1px solid rgba(245, 165, 36, 0.2);
	border-radius: var(--radius-sm);
	padding: var(--space-3xs) var(--space-xs);
}
.market-card-agent .stats .rating .count {
	color: var(--ink-dim);
	font-weight: 400;
}

.market-card-agent .footer {
	display: flex;
	justify-content: space-between;
	align-items: center;
	border-top: 1px dashed var(--stroke);
	padding-top: var(--space-sm);
	font-size: 11px;
	color: var(--ink-dim);
}

.cat-pill {
	background: var(--surface-2);
	color: var(--ink-dim);
	border-radius: var(--radius-pill);
	padding: var(--space-3xs) var(--space-sm);
	font-size: 11px;
	text-transform: capitalize;
}

.market-card-agent .footer-right {
	display: inline-flex;
	align-items: center;
	gap: var(--space-sm);
}

.market-card-agent .card-see3d {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: var(--space-3xs) var(--space-sm);
	font-size: 11px;
	font-weight: 600;
	color: var(--accent, #00d9ff);
	background: color-mix(in srgb, var(--accent, #00d9ff) 10%, transparent);
	border: 1px solid color-mix(in srgb, var(--accent, #00d9ff) 32%, transparent);
	border-radius: var(--radius-pill);
	text-decoration: none;
	transition: background var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);
}

.market-card-agent .card-see3d:hover {
	background: color-mix(in srgb, var(--accent, #00d9ff) 18%, transparent);
	border-color: color-mix(in srgb, var(--accent, #00d9ff) 60%, transparent);
	transform: translateY(-1px);
}

.market-card-agent .card-see3d:focus-visible {
	outline: 2px solid var(--accent, #00d9ff);
	outline-offset: 2px;
}

.market-loadmore {
	text-align: center;
	padding: var(--space-md);
}

.market-loadmore button {
	background: var(--surface-1);
	color: var(--ink);
	border: 1px solid var(--stroke-strong);
	padding: var(--space-sm) var(--space-lg);
	border-radius: var(--radius-md);
	cursor: pointer;
}
.market-loadmore button:hover {
	background: var(--surface-3);
	border-color: var(--accent);
}
.market-loadmore button:active {
	transform: translateY(1px);
}

/* ── Avatar deep-link detail page ────────────────────────────────────── */

.market-avatar-detail {
	flex: 1;
	min-height: 0;
	overflow-y: auto;
}
.market-avatar-detail-inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 var(--space-lg) var(--space-2xl);
}
.market-avatar-detail-layout {
	display: grid;
	grid-template-columns: 1fr 380px;
	gap: var(--space-lg);
	min-height: 520px;
	padding: var(--space-xs) 0 var(--space-lg);
}
@media (max-width: 900px) {
	.market-avatar-detail-layout {
		grid-template-columns: 1fr;
		min-height: 0;
	}
}
.market-avatar-detail-stage {
	position: relative;
	background: linear-gradient(180deg, var(--stage) 0%, var(--stage-lift) 100%);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-lg);
	overflow: hidden;
	min-height: 420px;
}
.market-avatar-detail-stage model-viewer {
	width: 100%;
	height: 100%;
	position: absolute;
	inset: 0;
	--poster-color: transparent;
	opacity: 0;
	transition: opacity var(--duration-slow) var(--ease-standard);
}
.market-avatar-detail-stage.mv-ready model-viewer { opacity: 1; }

/* Loading bar inside stage */
.avatar-detail-load-wrap {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--space-sm);
	pointer-events: none;
	transition: opacity var(--duration-base);
}
.market-avatar-detail-stage.mv-ready .avatar-detail-load-wrap { opacity: 0; }
.avatar-detail-load-bar-outer {
	width: 160px;
	height: 2px;
	background: rgba(255,255,255,0.08);
	border-radius: var(--radius-pill);
	overflow: hidden;
}
.avatar-detail-load-bar {
	height: 100%;
	width: 0;
	background: #ffffff;
	border-radius: var(--radius-pill);
	transition: width var(--duration-base);
}
.avatar-detail-load-label {
	font-size: 11px;
	color: var(--ink-dim);
	letter-spacing: 0.04em;
}

/* Empty / not-found state inside stage. Replaces the fake-loading bar when
 * the avatar can't be loaded, so the user gets a real CTA instead of a
 * spinner that never resolves. */
.avatar-detail-empty {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--space-sm);
	padding: var(--space-lg);
	text-align: center;
}
.market-avatar-detail-stage.is-empty .avatar-detail-load-wrap { display: none; }
.avatar-detail-empty-glyph {
	font-size: 40px;
	color: var(--ink-dim);
	line-height: 1;
}
.avatar-detail-empty-title {
	margin: var(--space-2xs) 0 0;
	font-family: var(--font-display);
	font-size: 18px;
	font-weight: 600;
	color: var(--ink);
}
.avatar-detail-empty-msg {
	margin: 0;
	font-size: 13px;
	color: var(--ink-dim);
	max-width: 320px;
	line-height: 1.5;
}
.avatar-detail-empty-cta { margin-top: 6px; min-width: 160px; }

/* Right column meta */
.market-avatar-detail-meta {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
	padding-top: var(--space-xs);
}
.market-avatar-detail-name {
	font-family: var(--font-display);
	font-size: 28px;
	font-weight: 700;
	color: var(--ink);
	margin: 0;
	line-height: 1.1;
	word-break: break-word;
}
.market-avatar-detail-author {
	font-size: 13px;
	color: var(--ink-dim);
	margin: 0;
}
.market-avatar-detail-author a { color: var(--ink-dim); text-decoration: none; }
.market-avatar-detail-author a:hover { color: var(--ink); text-decoration: underline; }
.market-avatar-detail-desc {
	font-size: 14px;
	color: var(--ink-dim);
	line-height: 1.55;
	margin: 0;
}
.market-avatar-detail-pills {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
}
.market-avatar-detail-actions {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	margin-top: var(--space-2xs);
}
.market-avatar-detail-cta {
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
	border: 0;
	padding: var(--space-md) var(--space-md);
	border-radius: var(--radius-md);
	font-weight: 700;
	font-size: 14px;
	cursor: pointer;
	text-align: left;
	transition: opacity var(--duration-fast);
}
.market-avatar-detail-cta:hover { opacity: 0.88; }
.market-avatar-detail .btn-secondary {
	display: block;
	background: var(--surface-1);
	color: var(--ink-dim);
	border: 1px solid var(--stroke-strong);
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	font-size: 13px;
	font-weight: 500;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--duration-fast), color var(--duration-fast);
}
.market-avatar-detail .btn-secondary:hover { background: var(--surface-2); color: var(--ink); }

/* Similar avatars */
.market-avatar-detail-similar { margin-top: 12px; }

/* ── Tool / plugin detail page ───────────────────────────────────────── */

.market-tool-detail {
	flex: 1;
	min-height: 0;
	overflow-y: auto;
}
.market-tool-detail-inner {
	max-width: 880px;
	margin: 0 auto;
	padding: 0 var(--space-lg) var(--space-2xl);
}
.market-tool-detail .market-back { margin: 8px 0 4px; }
.market-tool-detail .market-detail-eyebrow {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ink-dim);
	margin-bottom: var(--space-xs);
}

/* Hero */
.tool-detail-hero {
	display: flex;
	align-items: flex-start;
	gap: var(--space-md);
	padding: var(--space-xs) 0 var(--space-2xs);
}
.tool-detail-icon {
	width: 64px;
	height: 64px;
	border-radius: var(--radius-lg);
	background: var(--surface-2);
	border: 1px solid var(--stroke);
	display: grid;
	place-items: center;
	font-family: var(--font-display);
	font-size: 28px;
	font-weight: 700;
	color: var(--ink);
	flex-shrink: 0;
	overflow: hidden;
}
.tool-detail-icon img { width: 100%; height: 100%; object-fit: cover; }
.tool-detail-hero-text { flex: 1; min-width: 0; }
.tool-detail-name {
	font-family: var(--font-display);
	font-size: 30px;
	font-weight: 700;
	color: var(--ink);
	margin: 0;
	line-height: 1.12;
	word-break: break-word;
}
.tool-detail-id {
	margin: var(--space-2xs) 0 0;
	font-family: ui-monospace, 'SF Mono', Menlo, monospace;
	font-size: 12px;
	color: var(--ink-dim);
	word-break: break-all;
}
.tool-detail-author { margin: 4px 0 0; font-size: 13px; color: var(--ink-dim); }
.tool-detail-author a { color: var(--ink); text-decoration: none; }
.tool-detail-author a:hover { text-decoration: underline; }
.tool-detail-price { flex-shrink: 0; padding-top: 4px; }

.tool-detail-pills {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
	margin-top: var(--space-md);
}
.tool-detail-pills .tag-pill {
	cursor: pointer;
	border: 1px solid transparent;
	transition: border-color var(--duration-fast), color var(--duration-fast);
}
.tool-detail-pills button.tag-pill:hover { border-color: var(--stroke-strong); color: var(--ink); }

.tool-detail-desc {
	font-size: 15px;
	color: var(--ink-dim);
	line-height: 1.6;
	margin: var(--space-md) 0 0;
}

/* Actions */
.tool-detail-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
	margin-top: var(--space-lg);
}
.tool-detail-cta {
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
	border: 0;
	padding: var(--space-sm) var(--space-lg);
	border-radius: var(--radius-md);
	font-weight: 700;
	font-size: 14px;
	cursor: pointer;
	transition: opacity var(--duration-fast);
}
.tool-detail-cta:hover { opacity: 0.88; }
.tool-detail-cta.installed { background: var(--surface-2); color: var(--ink); border: 1px solid var(--stroke-strong); }

/* What installing does (pre-install) + where to go next (post-install) */
.skill-detail-how {
	margin: var(--space-md) 0 0;
	font-size: 13px;
	line-height: 1.6;
	color: var(--ink-dim);
	max-width: 62ch;
}
.skill-detail-next {
	margin-top: var(--space-md);
	padding: var(--space-md) var(--space-lg);
	border-radius: var(--radius-md);
	background: color-mix(in srgb, var(--success, #4ade80) 8%, transparent);
	border: 1px solid color-mix(in srgb, var(--success, #4ade80) 28%, transparent);
	animation: skill-next-in 0.25s ease-out;
}
@keyframes skill-next-in {
	from { opacity: 0; transform: translateY(4px); }
	to { opacity: 1; transform: none; }
}
.skill-detail-next-head {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	font-size: 14px;
	color: var(--ink);
}
.skill-detail-next-check {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: color-mix(in srgb, var(--success, #4ade80) 18%, transparent);
	color: var(--success, #4ade80);
	font-size: 12px;
	font-weight: 700;
	flex: 0 0 auto;
}
.skill-detail-next-desc {
	margin: var(--space-sm) 0 0;
	font-size: 13px;
	line-height: 1.6;
	color: var(--ink-dim);
	max-width: 62ch;
}
.skill-detail-next-cta {
	display: inline-block;
	margin-top: var(--space-md);
	padding: var(--space-sm) var(--space-lg);
	border-radius: var(--radius-md);
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
	transition: opacity var(--duration-fast);
}
.skill-detail-next-cta:hover { opacity: 0.88; }
.skill-detail-next-cta:focus-visible {
	outline: 2px solid var(--accent, #00d9ff);
	outline-offset: 2px;
}
.skill-detail-next-cta:active { opacity: 0.8; }
.market-tool-detail .btn-secondary {
	display: inline-flex;
	align-items: center;
	background: var(--surface-1);
	color: var(--ink-dim);
	border: 1px solid var(--stroke-strong);
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	font-size: 13px;
	font-weight: 500;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--duration-fast), color var(--duration-fast);
}
.market-tool-detail .btn-secondary:hover { background: var(--surface-2); color: var(--ink); }
.market-tool-detail .btn-secondary.copied { color: #3fb950; border-color: rgba(63,185,80,0.4); }

/* Content blocks */
.tool-detail-block { margin-top: 34px; }
.tool-detail-block-head {
	display: flex;
	align-items: baseline;
	gap: var(--space-sm);
	margin-bottom: var(--space-md);
}
.tool-detail-block-title {
	font-family: var(--font-display);
	font-size: 18px;
	font-weight: 600;
	color: var(--ink);
	margin: 0 0 var(--space-md);
}
.tool-detail-block-head .tool-detail-block-title { margin: 0; }
.tool-detail-block-count {
	font-size: 12px;
	color: var(--ink-dim);
}
.tool-detail-systemrole {
	font-size: 14px;
	color: var(--ink-dim);
	line-height: 1.6;
	margin: 0;
	padding: var(--space-md) var(--space-md);
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
}

/* Tool cards */
.tool-detail-tools { display: flex; flex-direction: column; gap: 12px; }
.tool-card {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-lg);
	padding: var(--space-md) var(--space-md);
	transition: border-color var(--duration-fast);
}
.tool-card:hover { border-color: var(--stroke-strong); }
.tool-card-head {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	flex-wrap: wrap;
}
.tool-card-name {
	font-family: ui-monospace, 'SF Mono', Menlo, monospace;
	font-size: 14px;
	font-weight: 600;
	color: var(--ink);
}
.tool-card-endpoint {
	font-family: ui-monospace, 'SF Mono', Menlo, monospace;
	font-size: 11px;
	color: var(--ink-dim);
	background: var(--surface-2);
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-sm);
	word-break: break-all;
}
.tool-card-desc {
	font-size: 13px;
	color: var(--ink-dim);
	line-height: 1.55;
	margin: var(--space-xs) 0 0;
}
.tool-card-params { margin-top: 12px; border-top: 1px solid var(--stroke); padding-top: 12px; }
.tool-card-params-label {
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ink-dim);
	margin-bottom: var(--space-xs);
}
.tool-param { display: flex; flex-direction: column; gap: 3px; padding: 7px 0; }
.tool-param + .tool-param { border-top: 1px solid var(--stroke); }
.tool-param-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tool-param-name {
	font-family: ui-monospace, 'SF Mono', Menlo, monospace;
	font-size: 13px;
	color: var(--ink);
	font-weight: 600;
}
.tool-param-type {
	font-family: ui-monospace, 'SF Mono', Menlo, monospace;
	font-size: 11px;
	color: #79c0ff;
	background: rgba(56,139,253,0.12);
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-sm);
}
.tool-param-req {
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #f0883e;
	background: rgba(240,136,62,0.12);
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-sm);
}
.tool-param-desc { font-size: 12px; color: var(--ink-dim); line-height: 1.5; }
.tool-param-enum { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 3px; }
.tool-param-enum code {
	font-family: ui-monospace, 'SF Mono', Menlo, monospace;
	font-size: 11px;
	color: var(--ink-dim);
	background: var(--surface-2);
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-sm);
}
.tool-card-noparams { font-size: 12px; color: var(--ink-dim); margin: 10px 0 0; font-style: italic; }

/* Not found */
.tool-detail-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--space-sm);
	padding: var(--space-2xl) var(--space-lg);
	text-align: center;
}
.tool-detail-empty-glyph { font-size: 44px; color: var(--ink-dim); line-height: 1; }
.tool-detail-empty-title {
	margin: var(--space-xs) 0 0;
	font-family: var(--font-display);
	font-size: 20px;
	font-weight: 600;
	color: var(--ink);
}
.tool-detail-empty-msg { margin: 0; font-size: 13px; color: var(--ink-dim); max-width: 340px; line-height: 1.5; }
.market-tool-detail .tool-detail-empty-cta { margin-top: 10px; min-width: 160px; justify-content: center; }

/* Loading skeleton */
.tool-detail-skeleton { padding: 16px 0; }
.tool-skel-head { display: flex; align-items: center; gap: 18px; margin-bottom: 22px; }
.tool-skel-icon { width: 64px; height: 64px; border-radius: var(--radius-lg); flex-shrink: 0; }
.tool-skel-lines { flex: 1; display: flex; flex-direction: column; gap: 10px; }
.tool-skel-line { height: 14px; border-radius: var(--radius-sm); }
.tool-skel-line.w90 { width: 90%; }
.tool-skel-line.w80 { width: 80%; margin-top: 10px; }
.tool-skel-line.w60 { width: 60%; }
.tool-skel-line.w30 { width: 30%; height: 11px; }
.tool-skel-card { height: 96px; border-radius: var(--radius-lg); margin-top: 16px; }
.tool-skel-icon, .tool-skel-line, .tool-skel-card {
	background: linear-gradient(90deg, var(--surface-1) 25%, var(--surface-2) 50%, var(--surface-1) 75%);
	background-size: 200% 100%;
	animation: tool-skel-shimmer 1.4s ease-in-out infinite;
}
@keyframes tool-skel-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

@media (max-width: 640px) {
	.tool-detail-hero { flex-wrap: wrap; }
	.tool-detail-price { padding-top: 0; }
	.tool-detail-name { font-size: 24px; }
}

/* Skill detail: full instructions block */
.skill-detail-content {
	font-family: ui-monospace, 'SF Mono', Menlo, monospace;
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--ink-dim);
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
	padding: var(--space-md) var(--space-md);
	margin: 0;
	max-height: 480px;
	overflow: auto;
	white-space: pre-wrap;
	word-break: break-word;
}
.market-skill-detail .market-price-pill {
	display: inline-block;
	font-size: 12px;
	font-weight: 600;
	padding: var(--space-2xs) var(--space-sm);
	border-radius: var(--radius-sm);
	background: var(--surface-2);
	color: var(--ink-dim);
	border: 1px solid var(--stroke-strong);
}
.market-skill-detail .market-price-pill.paid { color: #fde047; border-color: rgba(253,224,71,0.3); }

/* Onchain agent detail */
.onchain-detail-stage {
	position: relative;
	background: linear-gradient(180deg, var(--stage) 0%, var(--stage-lift) 100%);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-lg);
	min-height: 380px;
	overflow: hidden;
	margin: var(--space-xs) 0 var(--space-2xs);
}
.onchain-detail-stage model-viewer { width: 100%; height: 100%; position: absolute; inset: 0; --poster-color: transparent; }
.onchain-detail-stage img { width: 100%; height: 100%; object-fit: contain; }
.onchain-detail-facts {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-3xs);
	background: var(--stroke);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
	overflow: hidden;
}
.onchain-fact {
	display: flex;
	justify-content: space-between;
	gap: var(--space-md);
	padding: var(--space-sm) var(--space-md);
	background: var(--surface-1);
	font-size: 13px;
}
.onchain-fact-label { color: var(--ink-dim); }
.onchain-fact-value { color: var(--ink); font-family: ui-monospace, 'SF Mono', Menlo, monospace; word-break: break-all; text-align: right; }
.onchain-fact-value a { color: #79c0ff; text-decoration: none; }
.onchain-fact-value a:hover { text-decoration: underline; }
.market-onchain-detail .onchain-x402 {
	font-size: 11px;
	font-weight: 600;
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-sm);
	color: #34d399;
	background: rgba(52,211,153,0.12);
	border: 1px solid rgba(52,211,153,0.25);
}
.market-onchain-detail .avatar-pill.onchain {
	font-size: 11px;
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-sm);
	background: var(--surface-2);
	color: var(--ink-dim);
	border: 1px solid var(--stroke-strong);
}

/* ── Detail ──────────────────────────────────────────────────────────── */

.market-detail {
	padding: var(--space-md) var(--space-lg) var(--space-2xl);
	max-width: 1400px;
	position: relative;
}

/* ── Detail loading / not-found / error state ─────────────────────────── */

.market-detail-state {
	position: absolute;
	inset: 0;
	z-index: 5;
	display: grid;
	place-items: center;
	padding: var(--space-xl) var(--space-lg);
	background: #000;
}
.market-detail-state[hidden] {
	display: none;
}
.market-detail-state-inner {
	max-width: 420px;
	text-align: center;
	animation: md-state-in 0.32s ease both;
}
@keyframes md-state-in {
	from {
		opacity: 0;
		transform: translateY(8px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}
.md-state-icon {
	font-size: 44px;
	line-height: 1;
	color: var(--ink-dim);
	margin-bottom: var(--space-md);
}
.market-detail-state.is-loading .md-state-icon {
	animation: md-state-pulse 1.1s ease-in-out infinite;
}
@keyframes md-state-pulse {
	0%,
	100% {
		opacity: 0.35;
	}
	50% {
		opacity: 0.9;
	}
}
.md-state-title {
	margin: 0 0 var(--space-xs);
	font-size: 20px;
	font-weight: 700;
	color: var(--ink);
}
.md-state-body {
	margin: 0 0 var(--space-lg);
	font-size: 14px;
	line-height: 1.5;
	color: var(--ink-dim);
}
.md-state-actions {
	display: flex;
	gap: var(--space-sm);
	justify-content: center;
	flex-wrap: wrap;
}
.md-state-btn {
	background: transparent;
	border: 1px solid var(--stroke-strong);
	color: var(--ink);
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition:
		border-color var(--duration-fast),
		background var(--duration-fast),
		transform var(--duration-instant);
}
.md-state-btn:hover {
	border-color: var(--ink-dim);
	background: var(--surface-2);
}
.md-state-btn:active {
	transform: translateY(1px);
}
.md-state-btn:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}
.md-state-btn.primary {
	background: var(--accent);
	border-color: var(--accent);
	color: #000;
}
.md-state-btn.primary:hover {
	opacity: 0.9;
	background: var(--accent);
}

.market-back {
	background: transparent;
	border: 0;
	color: var(--ink-dim);
	font-size: 22px;
	cursor: pointer;
	padding: var(--space-xs) var(--space-sm);
}
.market-back:hover {
	color: var(--ink-bright);
	transform: translateX(-2px);
}

.market-detail-head {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	padding: var(--space-lg) var(--space-xs) var(--space-sm);
}

.market-detail-avatar {
	width: 58px;
	height: 58px;
	border-radius: var(--radius-md);
	background: var(--surface-2);
	display: grid;
	place-items: center;
	font-size: 28px;
	flex-shrink: 0;
}

.market-detail-meta {
	flex: 1;
	min-width: 0;
}

.market-detail-meta h1 {
	margin: 0;
	font-size: 28px;
	font-weight: 700;
}

.market-detail-author {
	font-size: 13px;
	color: var(--ink-dim);
	margin-top: var(--space-xs);
	display: flex;
	gap: var(--space-xs);
	align-items: center;
}

.market-detail-author .dot {
	color: var(--ink-dim);
}

.forks-pill {
	background: var(--surface-2);
	border-radius: var(--radius-sm);
	padding: var(--space-3xs) var(--space-xs);
	font-size: 11px;
	color: var(--ink-dim);
}

.market-detail-stats {
	margin-top: var(--space-sm);
	display: flex;
	gap: var(--space-xs);
	flex-wrap: wrap;
}

.market-bookmark {
	background: transparent;
	border: 0;
	color: var(--ink-dim);
	font-size: 22px;
	cursor: pointer;
}
.market-bookmark:hover {
	color: var(--warn);
	transform: scale(1.1);
}

.market-bookmark.on {
	color: var(--warn);
}

.market-tabs {
	display: flex;
	gap: var(--space-lg);
	border-bottom: 1px solid var(--stroke);
	padding: 0 var(--space-xs);
	overflow-x: auto;
}

.market-tabs button {
	background: transparent;
	border: 0;
	color: var(--ink-dim);
	padding: var(--space-md) 0;
	font-size: 14px;
	cursor: pointer;
	border-bottom: 2px solid transparent;
	white-space: nowrap;
}
.market-tabs button:hover {
	color: var(--ink);
	border-bottom-color: var(--stroke-strong);
}

.market-tabs button.active {
	color: var(--ink);
	border-bottom-color: var(--ink);
}

.market-detail-body {
	display: grid;
	grid-template-columns: 1fr 360px;
	gap: var(--space-lg);
	padding-top: var(--space-lg);
}

.market-detail-content {
	min-width: 0;
}

.market-panel {
	display: none;
}

.market-panel.active {
	display: block;
}

.market-card {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
	margin-bottom: var(--space-md);
}

.market-card h3 {
	margin: 0 0 var(--space-sm);
	font-size: 15px;
	font-weight: 600;
}

.market-card p {
	color: var(--ink-dim);
	line-height: 1.65;
	font-size: 14px;
	margin: 0;
}

.market-section-title {
	font-size: 22px;
	font-weight: 700;
	margin: var(--space-lg) 0 var(--space-md);
}

.market-demo {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-lg);
	display: flex;
	gap: var(--space-md);
}

.market-demo::before {
	content: '▣';
	width: 36px;
	height: 36px;
	border-radius: var(--radius-sm);
	background: var(--surface-2);
	display: grid;
	place-items: center;
	flex-shrink: 0;
}

.market-demo-bubble {
	background: var(--surface-2);
	border-radius: var(--radius-md);
	padding: var(--space-sm) var(--space-md);
	color: var(--ink-dim);
	line-height: 1.6;
	font-size: 14px;
	max-width: 540px;
}

.market-prose {
	white-space: pre-wrap;
	font-family: inherit;
	color: var(--ink-dim);
	line-height: 1.7;
	background: var(--surface-1);
	border: 1px solid var(--stroke);
}

/* ── Pricing badges ──────────────────────────────────────────────────── */

.price-badge {
	display: inline-block;
	margin-left: var(--space-xs);
	padding: var(--space-3xs) var(--space-xs);
	font-size: 10px;
	font-weight: 600;
	border-radius: var(--radius-sm);
	vertical-align: middle;
}

.price-free {
	color: #a7f3d0;
	background-color: rgba(52, 211, 153, 0.1);
}

.price-paid {
	color: #fde047;
	background-color: rgba(253, 224, 71, 0.1);
}

/* Owned: ties to the indigo purchase brand so a bought skill reads as
   "you have access" — distinct from the teal Free and yellow paid badges. */
.price-owned {
	color: #c7d2fe;
	background-color: rgba(79, 70, 229, 0.18);
	border: 1px solid rgba(79, 70, 229, 0.4);
}

/* Loading: shown while the detail API resolves skill prices, so paid agents
   don't flash a wrong "Free" badge on the optimistic cached render. Neutral
   grey with a gentle pulse signals "fetching" without implying a price tier. */
.price-loading {
	color: #9ca3af;
	background-color: rgba(156, 163, 175, 0.12);
	letter-spacing: 1px;
	animation: price-badge-pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes price-badge-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.4; }
}

@media (prefers-reduced-motion: reduce) {
	.price-loading { animation: none; }
}

.paid-badge {
	background: #fef3c7;
	color: #92400e;
	font-weight: 600;
}

.live-badge {
	background: color-mix(in srgb, var(--success, #4ade80) 12%, transparent);
	color: var(--success, #4ade80);
	font-weight: 600;
	border-color: color-mix(in srgb, var(--success, #4ade80) 30%, transparent);
}

.skill-price-badge {
	background: rgba(74, 222, 128, 0.12);
	color: var(--success);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	border: 1px solid rgba(74, 222, 128, 0.2);
}

.d-pricing-summary {
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	margin-top: var(--space-sm);
	padding: var(--space-xs) var(--space-md);
	background: rgba(74, 222, 128, 0.08);
	border: 1px solid rgba(74, 222, 128, 0.18);
	border-radius: var(--radius-sm);
	font-size: 13px;
	color: #d1d5db;
}
.d-pricing-summary strong {
	color: var(--success);
	font-weight: 600;
}
.d-pricing-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	border-radius: var(--radius-sm);
	background: rgba(74, 222, 128, 0.15);
	color: var(--success);
	font-weight: 700;
	font-size: 12px;
	flex-shrink: 0;
}

/* ── Subscription tiers (agent detail) ───────────────────────────────────── */

.d-subs-head {
	margin-bottom: var(--space-md);
}
.d-subs-head h3 {
	margin: 0;
}
.d-subs-sub {
	margin: var(--space-2xs) 0 0;
	font-size: 13px;
	color: var(--ink-dim);
}
.tiers-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--space-md);
}
.tier-card {
	position: relative;
	display: flex;
	flex-direction: column;
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
	background: var(--surface-1);
	padding: var(--space-lg) var(--space-md) var(--space-md);
	transition:
		border-color var(--duration-fast) var(--ease-standard),
		transform var(--duration-fast) var(--ease-standard),
		box-shadow var(--duration-fast) var(--ease-standard);
}
.tier-card:hover {
	border-color: var(--stroke-strong);
	transform: translateY(-2px);
}
.tier-card.subscribed {
	border-color: var(--success);
	box-shadow: 0 0 0 1px var(--success) inset, 0 8px 28px rgba(74, 222, 128, 0.12);
}
.tier-badge {
	position: absolute;
	top: calc(-1 * var(--space-sm));
	left: 50%;
	transform: translateX(-50%);
	padding: 2px var(--space-sm);
	border-radius: 6px;
	background: var(--success);
	color: #04130a;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
}
.tier-name {
	font-size: 16px;
	font-weight: 600;
	color: var(--ink);
}
.tier-price {
	margin: var(--space-2xs) 0 var(--space-sm);
	font-family: var(--font-display);
	font-size: 26px;
	font-weight: 700;
	color: var(--ink);
	line-height: 1.1;
}
.tier-interval {
	margin-left: 4px;
	font-family: var(--font-mono);
	font-size: 12px;
	font-weight: 500;
	color: var(--ink-dim);
}
.tier-skills {
	margin-bottom: var(--space-sm);
	font-size: 12px;
	font-weight: 600;
	color: var(--success);
}
.tier-perks {
	margin: 0 0 var(--space-md);
	padding: 0;
	list-style: none;
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: var(--space-2xs);
}
.tier-perks li {
	position: relative;
	padding-left: 18px;
	font-size: 13px;
	color: var(--ink-dim);
	line-height: 1.4;
}
.tier-perks li::before {
	content: '✓';
	position: absolute;
	left: 0;
	top: 0;
	color: var(--success);
	font-weight: 700;
}
.tier-perks-empty {
	margin: 0 0 var(--space-md);
	flex: 1;
	font-size: 13px;
	color: var(--ink-dim);
}
.tier-btn {
	margin-top: auto;
	width: 100%;
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	border: 1px solid var(--stroke-strong);
	background: var(--surface-2);
	color: var(--ink);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	transition:
		background var(--duration-fast) var(--ease-standard),
		border-color var(--duration-fast) var(--ease-standard),
		opacity var(--duration-fast) var(--ease-standard);
}
.tier-btn:hover:not(:disabled) {
	border-color: var(--stroke-strong);
	background: var(--surface-1);
}
.tier-btn.primary {
	background: #fafafa;
	border-color: #fafafa;
	color: #000;
}
.tier-btn.primary:hover:not(:disabled) {
	background: #fff;
	border-color: #fff;
}
.tier-btn.current {
	background: transparent;
	border-color: var(--success);
	color: var(--success);
}
.tier-btn:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}
.tier-btn:focus-visible {
	outline: var(--focus-ring-width, 2px) solid var(--focus-ring-color, var(--accent));
	outline-offset: var(--focus-ring-offset, 2px);
}
.d-subs-status {
	margin: var(--space-md) 0 0;
	min-height: 1em;
	font-size: 13px;
	color: var(--ink-dim);
}
.d-subs-status.err {
	color: var(--danger);
}
.d-subs-status.ok {
	color: var(--success);
}

.purchase-btn {
	margin-left: var(--space-xs);
	padding: var(--space-2xs) var(--space-sm);
	background-color: #4f46e5;
	color: white;
	border: none;
	border-radius: var(--radius-sm);
	cursor: pointer;
	font-size: 12px;
	font-weight: 600;
	transition: background-color var(--duration-base);
}

.purchase-btn:hover {
	background-color: #4338ca;
}

/* Groups the price badge + action buttons on the right of a .skill-row's
   space-between layout, so multiple buttons stay together instead of
   scattering across the row. Children keep their own margin-left spacing. */
.skill-actions {
	display: inline-flex;
	align-items: center;
	flex-shrink: 0;
}

/* Try-free trial — a ghost button in the Free/teal palette so it reads as the
   no-cost path next to the primary indigo Purchase button. */
.trial-btn,
.time-pass-btn {
	margin-left: var(--space-xs);
	padding: var(--space-2xs) var(--space-sm);
	border-radius: var(--radius-sm);
	cursor: pointer;
	font-size: 12px;
	font-weight: 600;
	transition:
		background-color var(--duration-base),
		border-color var(--duration-base),
		color var(--duration-base);
}

.trial-btn {
	background-color: transparent;
	color: #a7f3d0;
	border: 1px solid rgba(74, 222, 128, 0.4);
}

.trial-btn:hover {
	background-color: rgba(74, 222, 128, 0.12);
	border-color: rgba(74, 222, 128, 0.65);
}

/* Time-pass — an alternate indigo purchase, outlined rather than filled so it
   reads as secondary to the solid Purchase button. */
.time-pass-btn {
	background-color: rgba(79, 70, 229, 0.14);
	color: #c7d2fe;
	border: 1px solid rgba(79, 70, 229, 0.5);
}

.time-pass-btn:hover {
	background-color: rgba(79, 70, 229, 0.28);
	border-color: rgba(79, 70, 229, 0.7);
}

/* In-flight: both buttons set disabled while their request runs ("Starting
   trial…" / "Preparing…"). Dim and lock the cursor so the wait reads as busy,
   not broken. */
.trial-btn:disabled,
.time-pass-btn:disabled {
	opacity: 0.55;
	cursor: progress;
}

.trial-btn:disabled:hover {
	background-color: transparent;
	border-color: rgba(74, 222, 128, 0.4);
}

.time-pass-btn:disabled:hover {
	background-color: rgba(79, 70, 229, 0.14);
	border-color: rgba(79, 70, 229, 0.5);
}

/* ── Skill rows ──────────────────────────────────────────────────────── */

.skill-entry {
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	background: var(--surface-2);
	border-radius: var(--radius-sm);
	padding: var(--space-3xs) var(--space-xs);
	font-size: 12px;
	color: var(--ink-dim);
}

.skill-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--space-xs) 0;
	border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.skill-row:last-child {
	border-bottom: none;
}

.skill-name {
	font-size: 14px;
	color: rgba(255, 255, 255, 0.9);
}

.skill-btn {
	background-color: #404040;
	color: #d1d5db;
	border: none;
	border-radius: var(--radius-sm);
	padding: var(--space-2xs) var(--space-sm);
	font-size: 12px;
	font-weight: 500;
	cursor: pointer;
	transition: background-color var(--duration-base);
}

.skill-btn:disabled {
	background-color: #282828;
	color: #6b7280;
	cursor: not-allowed;
}

.skill-btn.purchase {
	background-color: #3b82f6;
	color: white;
}

.skill-btn.purchase:hover {
	background-color: #2563eb;
}

/* ── Skills / Library panels ─────────────────────────────────────────── */

.market-skills,
.market-library {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-lg);
	margin: var(--space-sm) 0 var(--space-lg);
	color: var(--ink-dim);
	min-height: 140px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	gap: var(--space-xs);
	font-size: 13px;
}

.muted {
	color: var(--ink-dim);
	font-weight: 400;
	font-size: 13px;
}

/* ── Version history ─────────────────────────────────────────────────── */

.market-versions {
	list-style: none;
	padding: 0;
	margin: 0;
}

.market-versions li {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md) var(--space-md);
	margin-bottom: var(--space-sm);
	display: flex;
	gap: var(--space-md);
	align-items: baseline;
}

.market-versions .v {
	font-weight: 700;
	color: var(--ink);
}

.market-versions .when {
	color: var(--ink-dim);
	font-size: 12px;
}

.market-versions .changelog {
	color: var(--ink-dim);
	font-size: 13px;
	flex: 1;
}

/* ── Right sidebar ───────────────────────────────────────────────────── */

.market-detail-side {
	position: sticky;
	top: 80px;
	align-self: start;
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.market-fork {
	background: #fafafa;
	color: var(--on-bright);
	border: 0;
	padding: var(--space-md);
	border-radius: var(--radius-md);
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

.market-fork:hover {
	background: #fff;
}

.market-export-btn {
	background: transparent;
	border: 1px solid var(--stroke-strong);
	color: var(--ink-dim);
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	font-size: 13px;
	cursor: pointer;
}
.market-export-btn:hover {
	background: var(--surface-2);
	border-color: var(--accent);
	color: var(--ink);
}

.market-overview-card {
	font-size: 13px;
}

.market-overview-card .row {
	font-weight: 600;
	margin-bottom: var(--space-xs);
}

.market-related-side {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.related-side-title {
	font-size: 16px;
	font-weight: 700;
	margin-bottom: var(--space-2xs);
	display: flex;
	justify-content: space-between;
	align-items: center;
}

/* "View more" expands the list in place; it navigates nowhere, so it is a button. */
.related-side-title button {
	font-size: 12px;
	color: var(--ink-dim);
	text-decoration: none;
	appearance: none;
	background: none;
	border: 0;
	padding: 0;
	font-family: inherit;
	cursor: pointer;
}
.related-side-title button:hover {
	color: var(--ink);
}
.related-side-title button:focus-visible {
	outline: 2px solid var(--accent, currentColor);
	outline-offset: 2px;
	border-radius: 2px;
}

.related-card {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
	padding: var(--space-sm);
	display: flex;
	gap: var(--space-sm);
	cursor: pointer;
}

.related-card:hover {
	border-color: var(--stroke-strong);
}

.related-card .av {
	width: 32px;
	height: 32px;
	border-radius: var(--radius-sm);
	background: var(--surface-2);
	display: grid;
	place-items: center;
	font-size: 16px;
	flex-shrink: 0;
}

.related-card .av.av-img {
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
}

.related-card .name {
	font-size: 13px;
	font-weight: 600;
	color: var(--ink);
	margin: 0;
}

.related-card .desc {
	font-size: 12px;
	color: var(--ink-dim);
	line-height: 1.45;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin-top: var(--space-3xs);
}

/* ── My Agents tab ───────────────────────────────────────────────────── */

.market-mine {
	display: flex;
	flex-direction: column;
}

.market-section-heading {
	margin: 0;
	font-size: 18px;
	font-weight: 600;
}

.market-mine-body {
	padding: var(--space-md) var(--space-lg);
}

/* ── Tools / Plugins tab ─────────────────────────────────────────────── */

.market-tools {
	display: flex;
	flex-direction: column;
}

.market-tools-title {
	margin: 0;
	font-size: 16px;
	font-weight: 600;
	color: var(--ink);
}

.plugins-topbar {
	flex-direction: column;
	align-items: stretch;
	gap: var(--space-sm);
}

.plugins-header-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
}

.plugin-add-url-btn {
	background: transparent;
	border: 1px solid var(--stroke-strong);
	color: var(--ink-dim);
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-md);
	font-size: 13px;
	font-weight: 500;
	cursor: pointer;
	transition: border-color var(--duration-fast), color var(--duration-fast);
}

.plugin-add-url-btn:hover {
	border-color: var(--accent);
	color: var(--accent);
}

#plugin-search {
	width: 100%;
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-sm);
	padding: var(--space-sm) var(--space-sm);
	color: var(--ink);
	font-size: 14px;
	font-family: inherit;
	outline: none;
	box-sizing: border-box;
}

#plugin-search:focus {
	border-color: var(--stroke-strong);
}

.plugin-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: var(--space-md);
	padding: var(--space-2xs) 0 var(--space-2xl);
	align-content: start;
}

.plugin-card {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	transition: border-color var(--duration-fast);
}

.plugin-card:hover {
	border-color: var(--stroke-strong);
}

.plugin-card-clickable { cursor: pointer; }
.plugin-card-clickable:hover {
	border-color: var(--stroke-strong);
	transform: translateY(-2px);
	transition: border-color var(--duration-fast), transform var(--duration-fast);
}
.plugin-card-clickable:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}

.plugin-card .head {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
}

.plugin-card .avatar {
	width: 38px;
	height: 38px;
	border-radius: var(--radius-md);
	background: var(--surface-2);
	display: grid;
	place-items: center;
	font-size: 18px;
	font-weight: 600;
	flex-shrink: 0;
	color: var(--ink-dim);
}

.plugin-card .title {
	font-weight: 600;
	font-size: 14px;
	color: var(--ink);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.plugin-card .author {
	font-size: 12px;
	color: var(--ink-dim);
	margin-top: var(--space-3xs);
}

.plugin-card .desc {
	font-size: 13px;
	color: var(--ink-dim);
	line-height: 1.5;
	flex: 1;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.plugin-tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
}

.tag-pill {
	background: var(--surface-2);
	border-radius: var(--radius-sm);
	padding: var(--space-3xs) var(--space-xs);
	font-size: 11px;
	color: var(--ink-dim);
}

.plugin-card-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-xs);
	margin-top: var(--space-3xs);
}

.plugin-install-btn {
	background: var(--accent);
	color: var(--on-accent);
	border: 0;
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-md);
	font-size: 12px;
	font-weight: 600;
	cursor: pointer;
	transition: opacity var(--duration-fast);
	white-space: nowrap;
}

.plugin-install-btn:hover {
	opacity: 0.85;
}

.plugin-install-btn.installed {
	background: #1a2e1a;
	color: var(--success);
	border: 1px solid #166534;
}

/* ── Purchase modal ──────────────────────────────────────────────────── */

#purchase-modal {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.7);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 1000;
}

#purchase-modal.modal-hidden {
	display: none;
}

.modal-content {
	background: var(--surface-1);
	padding: var(--space-lg);
	border-radius: var(--radius-card);
	border: 1px solid var(--stroke);
	width: 90%;
	max-width: 420px;
	position: relative;
}

.close-button {
	position: absolute;
	top: 12px;
	right: 12px;
	background: none;
	border: none;
	font-size: 24px;
	color: var(--ink-dim);
	cursor: pointer;
}
.close-button:hover {
	color: var(--ink-bright);
	transform: rotate(90deg);
}

/* ── Add by URL modal ────────────────────────────────────────────────── */

.plugin-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.7);
	display: grid;
	place-items: center;
	z-index: 1000;
	padding: var(--space-md);
}

.plugin-modal {
	background: var(--surface-1);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-lg);
	padding: var(--space-lg);
	width: 100%;
	max-width: 460px;
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.plugin-modal h3 {
	margin: 0;
	font-size: 16px;
	font-weight: 600;
	color: var(--ink);
}

.plugin-modal-hint {
	margin: 0;
	font-size: 13px;
	color: var(--ink-dim);
	line-height: 1.6;
}

.plugin-modal-hint code {
	background: var(--surface-2);
	border-radius: var(--radius-sm);
	padding: var(--space-3xs) var(--space-xs);
	font-size: 12px;
}

.plugin-url-input {
	background: var(--surface-2);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-sm);
	padding: var(--space-sm) var(--space-sm);
	color: var(--ink);
	font-size: 13px;
	font-family: monospace;
	outline: none;
	width: 100%;
	box-sizing: border-box;
}

.plugin-url-input:focus {
	border-color: var(--accent);
}

.plugin-url-error {
	font-size: 13px;
	color: var(--danger);
	padding: var(--space-xs) var(--space-sm);
	background: rgba(239, 68, 68, 0.08);
	border-radius: var(--radius-sm);
}

.plugin-modal-preview {
	background: var(--surface-2);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
}

.plugin-preview-head {
	display: flex;
	align-items: baseline;
	gap: var(--space-xs);
}

.plugin-preview-head strong {
	font-size: 14px;
	color: var(--ink);
}

.plugin-preview-desc {
	font-size: 13px;
	color: var(--ink-dim);
	line-height: 1.5;
}

.plugin-modal-actions {
	display: flex;
	justify-content: flex-end;
	gap: var(--space-sm);
	margin-top: var(--space-2xs);
}

.plugin-modal-btn {
	background: var(--surface-2);
	border: 1px solid var(--stroke);
	color: var(--ink-dim);
	border-radius: var(--radius-sm);
	padding: var(--space-sm) var(--space-md);
	font-size: 13px;
	font-weight: 500;
	cursor: pointer;
	font-family: inherit;
}
.plugin-modal-btn:hover:not(:disabled) {
	background: var(--surface-3);
	border-color: var(--stroke-strong);
	color: var(--ink);
}
.plugin-modal-btn:active:not(:disabled) {
	transform: translateY(1px);
}

.plugin-modal-btn-primary {
	background: var(--accent);
	color: var(--on-accent);
	border: 0;
	font-weight: 600;
}
.plugin-modal-btn-primary:hover:not(:disabled) {
	background: var(--btn-primary-bg-hover);
	color: var(--on-accent);
}

.plugin-modal-btn:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

/* ── Submit agent modal ──────────────────────────────────────────────── */

.market-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.7);
	display: grid;
	place-items: center;
	z-index: 1000;
	padding: var(--space-md);
}

.market-modal {
	background: var(--surface-1);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-lg);
	padding: var(--space-lg);
	width: 100%;
	max-width: 540px;
	max-height: 90vh;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.market-modal-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.market-modal-head h2 {
	margin: 0;
	font-size: 18px;
	font-weight: 700;
}

.market-modal-close {
	background: transparent;
	border: 0;
	color: var(--ink-dim);
	font-size: 22px;
	cursor: pointer;
	line-height: 1;
}
.market-modal-close:hover {
	color: var(--ink-bright);
	transform: rotate(90deg);
}

.market-submit-form {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.market-field {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
}

.market-field label {
	font-size: 13px;
	font-weight: 500;
	color: var(--ink-dim);
}

.market-field input,
.market-field textarea,
.market-field select {
	background: var(--surface-2);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-sm);
	padding: var(--space-sm) var(--space-sm);
	color: var(--ink);
	font-size: 14px;
	font-family: inherit;
	outline: none;
	resize: vertical;
}

.market-field input:focus,
.market-field textarea:focus,
.market-field select:focus {
	border-color: var(--accent);
}

.market-field-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-sm);
}

.market-field .req {
	color: var(--danger);
}

.market-field .field-hint {
	font-size: 11px;
	color: var(--ink-dim);
	font-weight: 400;
}

.market-submit-actions {
	display: flex;
	justify-content: flex-end;
	gap: var(--space-sm);
	margin-top: var(--space-2xs);
}

.market-btn-pri {
	background: var(--accent);
	color: var(--on-accent);
	border: 0;
	border-radius: var(--radius-sm);
	padding: var(--space-sm) var(--space-md);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}
.market-btn-pri:hover:not(:disabled) {
	background: var(--btn-primary-bg-hover);
}
.market-btn-pri:active:not(:disabled) {
	transform: translateY(1px);
}

.market-btn-sec {
	background: var(--surface-2);
	border: 1px solid var(--stroke);
	color: var(--ink-dim);
	border-radius: var(--radius-sm);
	padding: var(--space-sm) var(--space-md);
	font-size: 14px;
	cursor: pointer;
}
.market-btn-sec:hover {
	background: var(--surface-3);
	border-color: var(--stroke-strong);
	color: var(--ink);
}

.market-submit-btn {
	background: var(--accent);
	color: var(--on-accent);
	border: 0;
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-md);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	white-space: nowrap;
}

.market-submit-btn:hover {
	opacity: 0.9;
}

.market-form-error {
	color: var(--danger);
	font-size: 13px;
	padding: var(--space-xs) var(--space-sm);
	background: rgba(239, 68, 68, 0.08);
	border-radius: var(--radius-sm);
}

/* ── Submit modal: choose-a-path layout ─────────────────────────────── */

.market-submit-path {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	padding: var(--space-md);
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
	border-radius: var(--radius-md);
	text-decoration: none;
	transition:
		transform var(--duration-fast) var(--ease-standard),
		box-shadow var(--duration-fast) var(--ease-standard);
}

.market-submit-path:hover,
.market-submit-path:focus-visible {
	transform: translateY(-1px);
	box-shadow: 0 6px 24px rgba(255, 255, 255, 0.08);
}

.market-submit-path .msp-icon {
	font-size: 20px;
	flex-shrink: 0;
}

.market-submit-path .msp-copy {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.market-submit-path .msp-copy strong {
	font-size: 14px;
	font-weight: 700;
}

.market-submit-path .msp-copy span {
	font-size: 12px;
	opacity: 0.75;
	line-height: 1.4;
}

.market-submit-path .msp-arrow {
	margin-left: auto;
	font-size: 18px;
	flex-shrink: 0;
	transition: transform var(--duration-fast) var(--ease-standard);
}

.market-submit-path:hover .msp-arrow {
	transform: translateX(3px);
}

.market-submit-mine .msm-title {
	margin: 0 0 var(--space-xs);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ink-dim);
}

.msm-list {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
	max-height: 264px;
	overflow-y: auto;
}

.msm-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-xs) var(--space-sm);
	background: var(--surface-2);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
}

.msm-row:hover {
	border-color: var(--stroke-strong);
}

.msm-thumb {
	width: 36px;
	height: 36px;
	border-radius: var(--radius-sm);
	background: var(--surface-1) center/cover no-repeat;
	display: grid;
	place-items: center;
	font-size: 15px;
	color: var(--ink-dim);
	flex-shrink: 0;
}

.msm-meta {
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 1px;
}

.msm-name {
	font-size: 13px;
	font-weight: 600;
	color: var(--ink);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.msm-status {
	font-size: 11px;
	color: var(--ink-dim);
}

.msm-status.live {
	color: var(--success, #4ade80);
}

.msm-action {
	margin-left: auto;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	gap: var(--space-2xs);
}

.msm-category {
	background: var(--surface-1);
	border: 1px solid var(--stroke-strong);
	color: var(--ink);
	border-radius: var(--radius-sm);
	font-size: 11px;
	padding: 4px 6px;
	max-width: 110px;
}

.msm-btn {
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
	border: 0;
	border-radius: var(--radius-sm);
	padding: 6px 12px;
	font-size: 12px;
	font-weight: 600;
	cursor: pointer;
}

.msm-btn:hover {
	transform: translateY(-1px);
}

.msm-btn[disabled] {
	opacity: 0.6;
	cursor: default;
	transform: none;
}

.msm-btn.sec {
	background: transparent;
	color: var(--ink);
	border: 1px solid var(--stroke-strong);
}

.msm-note {
	font-size: 12px;
	color: var(--ink-dim);
	padding: var(--space-sm);
	background: var(--surface-2);
	border: 1px dashed var(--stroke);
	border-radius: var(--radius-md);
	line-height: 1.5;
}

.msm-note .msm-note-cta {
	color: var(--ink);
	font-weight: 600;
	cursor: pointer;
	background: none;
	border: 0;
	padding: 0;
	font-size: 12px;
	text-decoration: underline;
}
.msm-note .msm-note-cta:hover {
	color: var(--ink-bright);
	text-decoration-thickness: 2px;
}

.msm-error {
	flex-basis: 100%;
	font-size: 12px;
	color: var(--danger);
	padding: var(--space-2xs) 0;
}

#market-quickform {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.market-modal-import {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
}

.market-import-btn {
	background: transparent;
	border: 1px solid var(--stroke);
	color: var(--ink-dim);
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-sm);
	font-size: 12px;
	cursor: pointer;
	align-self: flex-start;
}
.market-import-btn:hover {
	background: var(--surface-2);
	border-color: var(--stroke-strong);
	color: var(--ink);
}

.market-json-input {
	background: var(--surface-2);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-sm);
	padding: var(--space-sm) var(--space-sm);
	color: var(--ink);
	font-size: 12px;
	font-family: monospace;
	resize: vertical;
	outline: none;
	width: 100%;
	box-sizing: border-box;
}

/* ── Empty / loading ─────────────────────────────────────────────────── */

.market-empty {
	grid-column: 1 / -1;
	padding: var(--space-2xl) var(--space-md);
	text-align: center;
	color: var(--ink-dim);
	font-size: 14px;
}

/* ── Earn dashboard ──────────────────────────────────────────────────── */

.earn-body {
	padding: var(--space-lg);
}

.earn-dashboard {
	display: flex;
	flex-direction: column;
	gap: var(--space-lg);
	animation: earn-fade-in 0.3s ease;
}

@keyframes earn-fade-in {
	from { opacity: 0; transform: translateY(6px); }
	to { opacity: 1; transform: translateY(0); }
}

/* Stat cards */
.earn-stats {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--space-md);
}

.earn-card {
	position: relative;
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md) var(--space-md);
	transition: border-color var(--duration-base) var(--ease-standard), transform var(--duration-base) var(--ease-standard);
}

.earn-card:hover {
	border-color: var(--stroke-strong);
}

.earn-card-total {
	background: linear-gradient(160deg, var(--surface-2), var(--surface-1));
	border-color: var(--stroke-strong);
}

.earn-card-label {
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ink-dim);
}

.earn-card-value {
	margin-top: var(--space-sm);
	font-size: 26px;
	font-weight: 700;
	color: var(--ink);
	line-height: 1.1;
	font-variant-numeric: tabular-nums;
}

.earn-card-meta {
	margin-top: var(--space-xs);
	font-size: 12px;
	color: var(--ink-dim);
}

.earn-val-pending {
	color: var(--warn);
}

.earn-val-settled {
	color: #34d399;
}

/* Wallet card */
.earn-card-wallet {
	display: flex;
	flex-direction: column;
}

.earn-wallet-addr {
	font-family: ui-monospace, "SF Mono", Menlo, monospace;
	font-size: 16px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.earn-wallet-btn {
	position: absolute;
	top: 16px;
	right: 16px;
	background: var(--surface-2);
	border: 1px solid var(--stroke-strong);
	color: var(--ink-dim);
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-sm);
	font-size: 12px;
	font-weight: 500;
	cursor: pointer;
	transition: color var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard);
}

.earn-wallet-btn:hover {
	color: var(--ink);
	border-color: var(--ink-dim);
}

.earn-wallet-btn:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}

/* Section headers */
.earn-section-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: var(--space-md);
}

.earn-section-title {
	font-size: 15px;
	font-weight: 600;
	color: var(--ink);
	margin: 0;
}

/* Period chips */
.earn-period-chips {
	display: inline-flex;
	gap: var(--space-2xs);
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
	padding: var(--space-3xs);
}

.earn-chip {
	background: transparent;
	border: 0;
	color: var(--ink-dim);
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-sm);
	font-size: 12px;
	font-weight: 500;
	cursor: pointer;
	transition: background var(--duration-base) var(--ease-standard), color var(--duration-base) var(--ease-standard);
}

.earn-chip:hover {
	color: var(--ink);
}

.earn-chip.active {
	background: var(--surface-2);
	color: var(--ink);
}

.earn-chip:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 1px;
}

/* Chart */
.earn-chart {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
	min-height: 220px;
}

.earn-chart-loading,
.earn-chart-empty {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 180px;
	color: var(--ink-dim);
	font-size: 13px;
}

.earn-chart-loading {
	animation: earn-pulse 1.4s ease-in-out infinite;
}

@keyframes earn-pulse {
	0%, 100% { opacity: 0.5; }
	50% { opacity: 1; }
}

.earn-chart-meta {
	display: flex;
	align-items: baseline;
	gap: var(--space-sm);
	margin-bottom: var(--space-md);
}

.earn-chart-total {
	font-size: 22px;
	font-weight: 700;
	color: var(--ink);
	font-variant-numeric: tabular-nums;
}

.earn-chart-count {
	font-size: 12px;
	color: var(--ink-dim);
}

.earn-chart-bars {
	display: flex;
	align-items: flex-end;
	gap: var(--space-3xs);
	height: 140px;
}

.earn-bar {
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	align-items: center;
	height: 100%;
	min-width: 0;
}

.earn-bar-col {
	width: 100%;
	max-width: 28px;
	height: var(--h, 0%);
	min-height: 2px;
	background: linear-gradient(180deg, #60a5fa, #3b82f6);
	border-radius: var(--radius-sm) var(--radius-sm) 0 0;
	transition: height var(--duration-slow) var(--ease-standard), filter var(--duration-fast) var(--ease-standard);
}

.earn-bar:hover .earn-bar-col {
	filter: brightness(1.25);
}

.earn-bar-date {
	margin-top: var(--space-xs);
	font-size: 10px;
	color: var(--ink-dim);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 100%;
	min-height: 12px;
}

/* Breakdown */
.earn-breakdown {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.earn-bk-row {
	display: grid;
	grid-template-columns: 140px 1fr auto auto;
	align-items: center;
	gap: var(--space-sm);
}

.earn-bk-name {
	font-size: 13px;
	color: var(--ink);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.earn-bk-track {
	height: 8px;
	background: var(--surface-2);
	border-radius: var(--radius-sm);
	overflow: hidden;
}

.earn-bk-fill {
	height: 100%;
	background: linear-gradient(90deg, rgba(255,255,255,0.5), rgba(255,255,255,0.85));
	border-radius: var(--radius-sm);
	transition: width var(--duration-slow) var(--ease-standard);
}

.earn-bk-amount {
	font-size: 13px;
	font-weight: 600;
	color: var(--ink);
	font-variant-numeric: tabular-nums;
}

.earn-bk-count {
	font-size: 12px;
	color: var(--ink-dim);
	min-width: 32px;
	text-align: right;
}

/* Transactions */
.earn-txn-count {
	font-size: 12px;
	color: var(--ink-dim);
}

.earn-txns {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	overflow: hidden;
}

.earn-txn {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	padding: var(--space-md) var(--space-md);
	border-bottom: 1px solid var(--stroke);
	transition: background var(--duration-fast) var(--ease-standard);
}

.earn-txn:last-child {
	border-bottom: 0;
}

.earn-txn:hover {
	background: var(--surface-1);
}

.earn-txn-icon {
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--surface-2);
	border-radius: var(--radius-md);
	font-size: 15px;
}

.earn-txn-info {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
	min-width: 0;
}

.earn-txn-name {
	font-size: 14px;
	color: var(--ink);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.earn-txn-agent {
	font-size: 12px;
	color: var(--ink-dim);
}

.earn-txn-right {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	flex: 0 0 auto;
}

.earn-txn-amount {
	font-size: 14px;
	font-weight: 600;
	color: var(--ink);
	font-variant-numeric: tabular-nums;
}

.earn-txn-status {
	font-size: 11px;
	font-weight: 500;
	text-transform: capitalize;
	padding: var(--space-3xs) var(--space-sm);
	border-radius: var(--radius-lg);
}

.earn-status-settled {
	color: #34d399;
	background: rgba(52, 211, 153, 0.12);
}

.earn-status-pending {
	color: var(--warn);
	background: rgba(251, 191, 36, 0.12);
}

.earn-txn-date {
	font-size: 12px;
	color: var(--ink-dim);
	min-width: 56px;
	text-align: right;
}

.earn-txns-more {
	margin-top: var(--space-md);
	text-align: center;
}

.earn-show-more {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	color: var(--ink-dim);
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-md);
	font-size: 13px;
	cursor: pointer;
	transition: color var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard);
}

.earn-show-more:hover {
	color: var(--ink);
	border-color: var(--stroke-strong);
}

/* State messages (auth / error / empty) */
.earn-state-msg {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: var(--space-2xl) var(--space-lg);
	max-width: 440px;
	margin: 0 auto;
}

.earn-state-icon {
	width: 52px;
	height: 52px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--surface-2);
	border: 1px solid var(--stroke-strong);
	border-radius: var(--radius-lg);
	font-size: 22px;
	font-weight: 700;
	color: var(--ink-dim);
	margin-bottom: var(--space-md);
}

.earn-icon-error {
	color: var(--danger);
	border-color: rgba(248, 113, 113, 0.3);
	background: rgba(248, 113, 113, 0.08);
}

.earn-state-msg h3 {
	font-size: 18px;
	font-weight: 600;
	color: var(--ink);
	margin: 0 0 var(--space-xs);
}

.earn-state-msg p {
	font-size: 14px;
	color: var(--ink-dim);
	line-height: 1.5;
	margin: 0 0 var(--space-xs);
}

.earn-empty-actions {
	display: flex;
	gap: var(--space-sm);
	margin-top: var(--space-sm);
}

/* Skeleton */
.earn-skeleton {
	display: flex;
	flex-direction: column;
	gap: var(--space-lg);
}

.earn-card-sk {
	min-height: 92px;
}

.earn-sk-line,
.earn-sk-block {
	background: linear-gradient(90deg, var(--surface-1) 25%, var(--surface-2) 50%, var(--surface-1) 75%);
	background-size: 200% 100%;
	animation: earn-shimmer 1.4s ease-in-out infinite;
	border-radius: var(--radius-sm);
}

.earn-sk-line {
	height: 12px;
}

.earn-chart-sk {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
}

.earn-sk-block {
	height: 180px;
	border-radius: var(--radius-md);
}

.earn-txn-sk {
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	overflow: hidden;
}

.earn-txn-sk-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-md);
	padding: var(--space-md) var(--space-md);
	border-bottom: 1px solid var(--stroke);
}

.earn-txn-sk-row:last-child {
	border-bottom: 0;
}

@keyframes earn-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
	.earn-dashboard,
	.earn-bar-col,
	.earn-bk-fill,
	.earn-sk-line,
	.earn-sk-block,
	.earn-chart-loading {
		animation: none;
		transition: none;
	}
}

/* ── Responsive ──────────────────────────────────────────────────────── */

@media (max-width: 980px) {
	body.market-page {
		grid-template-columns: 1fr;
	}

	.market-sidebar {
		display: none;
	}

	.market-body {
		grid-template-columns: 1fr;
	}

	.market-cats {
		position: static;
		max-height: none;
		flex-direction: row;
		overflow-x: auto;
		border-right: 0;
		border-bottom: 1px solid var(--stroke);
	}

	.market-detail-body {
		grid-template-columns: 1fr;
	}

	.market-detail-side {
		position: static;
	}

	.earn-stats {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 560px) {
	.earn-body {
		padding: var(--space-md);
	}

	.earn-stats {
		grid-template-columns: 1fr;
	}

	.earn-bk-row {
		grid-template-columns: 1fr auto;
		row-gap: var(--space-2xs);
	}

	.earn-bk-track {
		grid-column: 1 / -1;
		order: 3;
	}

	.earn-txn-agent {
		display: none;
	}
}

/* ── WIP banner dismiss ──────────────────────────────────────────── */

.market-wip-dismiss {
	background: transparent;
	border: 0;
	color: #fde68a;
	opacity: 0.6;
	cursor: pointer;
	font-size: 18px;
	line-height: 1;
	padding: var(--space-2xs) var(--space-xs);
	border-radius: var(--radius-sm);
	transition: opacity var(--duration-fast), background var(--duration-fast);
}
.market-wip-dismiss:hover {
	opacity: 1;
	background: rgba(253, 224, 71, 0.08);
}

/* ── Hero carousel (live 3D) ──────────────────────────────────── */

.market-hero {
	display: grid;
	grid-template-columns: minmax(280px, 440px) 1fr;
	gap: var(--space-lg);
	padding: var(--space-md) var(--space-lg);
	border-bottom: 1px solid var(--stroke);
	background:
		radial-gradient(ellipse at top right, rgba(255, 255, 255, 0.04), transparent 60%),
		radial-gradient(ellipse at bottom left, rgba(253, 224, 71, 0.03), transparent 50%),
		#000;
	min-height: 300px;
	position: relative;
	overflow: hidden;
}

/* 4/3 stage (not square): keeps the featured avatar prominent while leaving
   the search toolbar and the first row of listings visible on a 900px-tall
   viewport — the marketplace should show the market above the fold. */
.market-hero-stage {
	position: relative;
	border-radius: var(--radius-card);
	background:
		radial-gradient(ellipse at center, rgba(255, 255, 255, 0.04), transparent 70%),
		var(--surface-1);
	border: 1px solid var(--stroke);
	overflow: hidden;
	min-height: 280px;
	aspect-ratio: 4 / 3;
	max-width: 440px;
}

.market-hero-stage model-viewer {
	width: 100%;
	height: 100%;
	background: transparent;
	--poster-color: transparent;
	opacity: 0;
	transition: opacity var(--duration-slow) var(--ease-standard);
	position: absolute;
	inset: 0;
}

.market-hero-stage model-viewer.active {
	opacity: 1;
}

.market-hero-meta {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: var(--space-md);
	min-width: 0;
}

.market-hero-eyebrow {
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #ffffff;
	font-weight: 600;
}

.market-hero-title {
	font-family: var(--font-display);
	font-size: 36px;
	font-weight: 700;
	line-height: 1.1;
	margin: 0;
	color: var(--ink);
	letter-spacing: -0.02em;
}

.market-hero-desc {
	font-size: 15px;
	color: var(--ink-dim);
	line-height: 1.5;
	margin: 0;
	max-width: 56ch;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.market-hero-actions {
	display: flex;
	gap: var(--space-sm);
	margin-top: var(--space-xs);
	flex-wrap: wrap;
}

.market-hero-cta,
.market-hero-secondary {
	border: 0;
	border-radius: var(--radius-md);
	padding: var(--space-sm) var(--space-md);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: transform var(--duration-instant), background var(--duration-fast), border-color var(--duration-fast);
}
.market-hero-cta {
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
}
.market-hero-cta:hover {
	transform: translateY(-1px);
}
.market-hero-secondary {
	background: transparent;
	color: var(--ink);
	border: 1px solid var(--stroke-strong);
}
.market-hero-secondary:hover {
	border-color: var(--ink-dim);
}

.market-hero-dots {
	display: flex;
	gap: var(--space-xs);
	margin-top: var(--space-sm);
}
.market-hero-dot {
	width: 22px;
	height: 4px;
	border-radius: var(--radius-sm);
	background: rgba(255, 255, 255, 0.12);
	border: 0;
	cursor: pointer;
	padding: 0;
	transition:
		background var(--duration-fast) var(--ease-standard),
		width var(--duration-fast) var(--ease-standard);
}
.market-hero-dot.active {
	background: var(--ink);
	width: 36px;
}
.market-hero-dot:hover:not(.active) {
	background: var(--stroke-strong);
	width: 28px;
}

/* ── Filter chips (All / Agents / Avatars) ──────────────────── */

.market-filter-chips {
	display: inline-flex;
	/* The avatar category row can hold a dozen chips; without wrapping it sets
	   the width of the whole toolbar and pushes the controls after it out. */
	flex-wrap: wrap;
	max-width: 100%;
	gap: var(--space-2xs);
	padding: var(--space-2xs);
	background: var(--surface-2);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
}
.market-chip {
	background: transparent;
	border: 0;
	color: var(--ink-dim);
	padding: var(--space-xs) var(--space-sm);
	font-size: 12px;
	font-weight: 600;
	border-radius: var(--radius-sm);
	cursor: pointer;
	transition: background var(--duration-fast), color var(--duration-fast);
}
.market-chip:hover {
	color: var(--ink-dim);
}
.market-chip.active {
	background: #000;
	color: var(--ink);
}

/* ── Skeleton loaders ───────────────────────────────────────── */

@keyframes mk-skel {
	0% { background-position: -200px 0; }
	100% { background-position: calc(200px + 100%) 0; }
}

.mk-skel-card {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	min-height: 200px;
}
.mk-skel-line {
	background: linear-gradient(90deg, var(--bg-1) 0%, #232323 50%, var(--bg-1) 100%);
	background-size: 200px 100%;
	animation: mk-skel 1.4s ease-in-out infinite;
	border-radius: var(--radius-sm);
	height: 12px;
}
.mk-skel-thumb {
	background: linear-gradient(90deg, var(--bg-1) 0%, #232323 50%, var(--bg-1) 100%);
	background-size: 200px 100%;
	animation: mk-skel 1.4s ease-in-out infinite;
	aspect-ratio: 1 / 1;
	border-radius: var(--radius-sm);
}
.mk-skel-line.w-60 { width: 60%; }
.mk-skel-line.w-40 { width: 40%; }
.mk-skel-line.w-80 { width: 80%; }
.mk-skel-line.tall { height: 18px; }

/* ── Hover 3D preview overlay on avatar cards ──────────────── */

.market-card-avatar .thumb {
	position: relative;
	overflow: hidden;
	background: var(--bg-0);
}

.market-card-avatar .thumb .mv-placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	pointer-events: none;
	z-index: 0;
	background:
		radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.08), transparent 65%),
		radial-gradient(circle at 50% 90%, rgba(255, 255, 255, 0.05), transparent 70%),
		linear-gradient(180deg, #0b0b0b, #050505);
	transition: opacity var(--duration-slow) var(--ease-standard);
}
.market-card-avatar.mv-loaded .thumb .mv-placeholder {
	opacity: 0;
}
.market-card-avatar .thumb .mv-placeholder-initial {
	font-family: var(--font-display);
	font-size: 42px;
	font-weight: 700;
	line-height: 1;
	background: linear-gradient(180deg, rgba(244,244,245,0.35), rgba(113,113,122,0.2));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	letter-spacing: -0.04em;
}

/* Shimmer that shows while the GLB streams in */
.market-card-avatar .thumb::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(
		110deg,
		transparent 20%,
		rgba(255,255,255,0.04) 50%,
		transparent 80%
	);
	background-size: 200% 100%;
	animation: mv-shimmer 1.6s infinite;
	z-index: 1;
	pointer-events: none;
	transition: opacity var(--duration-slow) var(--ease-standard);
}
.market-card-avatar.mv-loaded .thumb::before { opacity: 0; }

@keyframes mv-shimmer {
	0%   { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

.market-card-avatar .thumb model-viewer {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	background: transparent;
	--poster-color: var(--stage);
	opacity: 0;
	transition: opacity var(--duration-slow) var(--ease-standard);
	z-index: 0;
}
/* Fade in when model has loaded (JS adds .mv-loaded) */
.market-card-avatar.mv-loaded .thumb model-viewer {
	opacity: 1;
}

/* Featured: first card spans 2 columns + 2 rows for a spotlight effect.
   Only apply the span when the grid has enough columns (≥3) to avoid
   a single featured card taking the entire row on narrow layouts. */
@media (min-width: 760px) {
	.market-card-avatar--featured {
		grid-column: span 2;
		grid-row: span 2;
	}
	.market-card-avatar--featured .thumb {
		aspect-ratio: unset;
		min-height: 320px;
	}
}
@media (max-width: 759px) {
	.market-card-avatar--featured .thumb {
		aspect-ratio: 4 / 3;
	}
}
.market-card-avatar .thumb-badge {
	position: absolute;
	top: 8px;
	right: 8px;
	background: rgba(0, 0, 0, 0.55);
	color: #fff;
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.04em;
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-pill);
	z-index: 2;
	pointer-events: none;
	opacity: 0;
	transition: opacity var(--duration-base) var(--ease-standard);
}
.market-card-avatar:hover .thumb-badge {
	opacity: 1;
}

/* ── Tag filter banner ──────────────────────────────────────── */

.market-tag-banner {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-sm) var(--space-lg);
	border-bottom: 1px solid var(--stroke);
	background: rgba(255, 255, 255, 0.04);
	font-size: 12px;
	color: var(--ink-dim);
}
.market-tag-banner-label {
	letter-spacing: 0.06em;
	text-transform: uppercase;
	font-size: 10px;
	color: var(--ink-dim);
}
.market-tag-banner-chip {
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	background: rgba(255, 255, 255, 0.12);
	border: 1px solid rgba(255, 255, 255, 0.3);
	color: #ffffff;
	padding: var(--space-2xs) var(--space-sm);
	border-radius: var(--radius-pill);
	font-size: 12px;
	font-weight: 600;
}
.market-tag-banner-clear {
	background: transparent;
	border: 0;
	color: rgba(255, 255, 255, 0.7);
	cursor: pointer;
	font-size: 12px;
	padding: 0 var(--space-3xs);
	line-height: 1;
}
.market-tag-banner-clear:hover { color: #fff; }

/* ── My Agents / Skills tab heads ───────────────────────────── */

.market-topbar {
	align-items: center;
}
.market-topbar .market-section-heading {
	margin: 0;
	white-space: nowrap;
}
.market-mine-head {
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
	min-width: 0;
}
.market-mine-head .market-section-heading {
	margin: 0;
	font-size: 18px;
	font-weight: 600;
	line-height: 1.2;
	white-space: nowrap;
}
.market-mine-sub {
	font-size: 12px;
	color: var(--ink-dim);
	line-height: 1.2;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.market-mine-empty,
.market-mine-signin {
	grid-column: 1 / -1;
	padding: var(--space-2xl) var(--space-md);
	text-align: center;
	color: var(--ink-dim);
	font-size: 14px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--space-md);
}
.market-mine-empty .icon,
.market-mine-signin .icon {
	font-size: 42px;
	opacity: 0.3;
}
.market-mine-empty h3,
.market-mine-signin h3 {
	margin: 0;
	font-size: 18px;
	font-weight: 600;
	color: var(--ink);
}
.market-mine-empty p,
.market-mine-signin p {
	margin: 0;
	max-width: 36ch;
	color: var(--ink-dim);
}
.market-mine-cta {
	background: var(--ink);
	color: var(--btn-primary-fg, #0a0a0a);
	border: 0;
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	margin-top: var(--space-xs);
}
.market-mine-cta:hover {
	transform: translateY(-1px);
}

/* ── Smart empty: category w/ 0 agents ──────────────────────── */

.market-empty-redirect {
	grid-column: 1 / -1;
	padding: var(--space-lg) var(--space-md);
	text-align: center;
	background: var(--surface-1);
	border: 1px dashed var(--stroke-strong);
	border-radius: var(--radius-card);
	margin-bottom: var(--space-md);
	color: var(--ink-dim);
	font-size: 14px;
}
.market-empty-redirect strong {
	color: var(--ink);
}
.market-empty-redirect button {
	background: transparent;
	border: 1px solid var(--stroke-strong);
	color: var(--ink);
	padding: var(--space-xs) var(--space-md);
	border-radius: var(--radius-sm);
	font-size: 12px;
	font-weight: 600;
	cursor: pointer;
	margin-left: var(--space-sm);
}
.market-empty-redirect button:hover {
	border-color: var(--ink-dim);
}

/* ── Hero responsive ────────────────────────────────────────── */

@media (max-width: 880px) {
	.market-hero {
		grid-template-columns: 1fr;
		padding: var(--space-md) var(--space-md);
		min-height: auto;
	}
	.market-hero-stage {
		max-width: 100%;
		min-height: 260px;
		aspect-ratio: 4 / 3;
	}
	.market-hero-title {
		font-size: 26px;
	}
}

/* ── Avatar card body (byline, tags, footer) ──────────────────── */

.market-card-avatar .byline {
	display: flex;
	align-items: center;
	gap: var(--space-xs);
	font-size: 12px;
	color: var(--ink-dim);
	min-width: 0;
}
.market-card-avatar .byline .dot { color: var(--ink-dim); opacity: 0.6; }
.market-card-avatar .byline .when { color: var(--ink-dim); }
.card-author {
	color: #ffffff;
	font-weight: 500;
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 50%;
}
.card-author:hover { text-decoration: underline; }
.card-author.muted { color: var(--ink-dim); font-weight: 400; font-style: italic; }

.market-card-avatar .card-tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs);
	margin-top: var(--space-3xs);
}
.market-card-avatar .card-tags .tag-pill {
	font-size: 10px;
	padding: var(--space-3xs) var(--space-xs);
	background: rgba(255, 255, 255, 0.07);
	color: rgba(255, 255, 255, 0.85);
	border-radius: var(--radius-pill);
}

.market-card-avatar .footer {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-top: auto;
	padding-top: var(--space-2xs);
}
.market-card-avatar .footer .avatar-pill {
	background: rgba(255, 255, 255, 0.1);
	color: #ffffff;
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-pill);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.02em;
}
/* Per-category color accents on the model type pill */
.model-cat-pill.model-cat-avatar    { background: rgba(99, 102, 241, 0.18); color: #a5b4fc; }
.model-cat-pill.model-cat-accessory { background: rgba(236, 72, 153, 0.18); color: #f9a8d4; }
.model-cat-pill.model-cat-item      { background: rgba(245, 158, 11, 0.18); color: #fcd34d; }
.model-cat-pill.model-cat-scene     { background: rgba(16, 185, 129, 0.18); color: #6ee7b7; }
.model-cat-pill.model-cat-creature  { background: rgba(251, 146, 60, 0.18); color: #fdba74; }
.model-cat-pill.model-cat-vehicle   { background: rgba(56, 189, 248, 0.18); color: #7dd3fc; }
.model-cat-pill.model-cat-other     { background: rgba(255, 255, 255, 0.08); color: #a1a1aa; }

/* Model-category sub-filter chips row — visible when avatars are shown */
.market-model-category-chips {
	border-top: 1px solid var(--stroke);
	padding-top: 8px;
	margin-top: 2px;
}
.market-card-avatar .footer .open-cta {
	font-size: 11px;
	color: var(--ink-dim);
	font-weight: 500;
	transition: color var(--duration-fast), transform var(--duration-fast);
}
.market-card-avatar:hover .footer .open-cta {
	color: #f4f4f5;
	transform: translateX(2px);
}
.market-card-avatar .footer .compose-cta {
	font-size: 11px;
	color: transparent;
	font-weight: 600;
	text-decoration: none;
	padding: 2px 7px;
	border-radius: 4px;
	background: transparent;
	border: 1px solid transparent;
	transition: color var(--duration-fast), background var(--duration-fast), border-color var(--duration-fast);
	pointer-events: none;
}
.market-card-avatar:hover .footer .compose-cta {
	color: #a5b4fc;
	background: rgba(99, 102, 241, 0.15);
	border-color: rgba(99, 102, 241, 0.3);
	pointer-events: auto;
}
.market-card-avatar:hover .footer .compose-cta:hover {
	background: rgba(99, 102, 241, 0.25);
}

.market-card-avatar .thumb-fallback {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background:
		radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.06), transparent 65%),
		radial-gradient(circle at 50% 90%, rgba(255, 255, 255, 0.04), transparent 70%),
		linear-gradient(180deg, #0b0b0b, #050505);
}
.market-card-avatar .thumb-fallback-initial {
	font-size: 48px;
	font-weight: 700;
	font-family: var(--font-display);
	letter-spacing: -0.04em;
	line-height: 1;
	background: linear-gradient(180deg, rgba(244,244,245,0.3), rgba(113,113,122,0.18));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.market-card-avatar .card-img-fallback {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	background:
		radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.06), transparent 65%),
		linear-gradient(180deg, #0b0b0b, #050505);
}
.market-card-avatar .card-img-fallback::after {
	content: '◎';
	font-size: 36px;
	color: rgba(255, 255, 255, 0.1);
}
.market-card-agent .card-img-fallback {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	background:
		radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.08), transparent 65%),
		linear-gradient(180deg, var(--stage), var(--stage-deep));
}
.market-card-agent .card-img-fallback::after {
	content: '◎';
	font-size: 32px;
	color: rgba(255, 255, 255, 0.1);
}

/* ── Card skeletons (initial load) ───────────────────────────── */

@keyframes mk-card-skel {
	0% { opacity: 0.45; }
	50% { opacity: 0.75; }
	100% { opacity: 0.45; }
}
.market-card-skeleton {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	min-height: 240px;
	animation: mk-card-skel 1.4s ease-in-out infinite;
}
.market-card-skeleton .sk-thumb {
	aspect-ratio: 1 / 1;
	background: linear-gradient(135deg, #161616, #1c1c1c);
	border-radius: var(--radius-md);
}
.market-card-skeleton .sk-line {
	height: 12px;
	background: var(--bg-1);
	border-radius: var(--radius-sm);
	width: 100%;
}
.market-card-skeleton .sk-line.short { width: 55%; }

/* ── Avatar in-page modal (3D viewer + actions) ───────────────── */

.avatar-modal-overlay[hidden] { display: none; }

/* ── Sidebar nav: live counts ─────────────────────────────────── */

.market-nav .nav-count {
	margin-left: auto;
	font-size: 10px;
	font-weight: 600;
	color: var(--ink-dim);
	background: var(--surface-2);
	border-radius: var(--radius-pill);
	padding: var(--space-3xs) var(--space-xs);
	font-variant-numeric: tabular-nums;
	min-width: 22px;
	text-align: center;
}
.market-nav .nav-count.hot {
	color: #ffffff;
	background: rgba(255, 255, 255, 0.12);
}
.market-nav a {
	display: flex;
	align-items: center;
	gap: var(--space-xs);
}

/* ── Submit Avatar CTA in topbar ──────────────────────────────── */

.market-submit-avatar-btn {
	background: rgba(255, 255, 255, 0.1);
	color: #ffffff;
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-sm);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	white-space: nowrap;
	text-decoration: none;
	transition: background var(--duration-fast), border-color var(--duration-fast);
}
.market-submit-avatar-btn:hover {
	background: rgba(255, 255, 255, 0.18);
	border-color: rgba(255, 255, 255, 0.4);
}

/* ── Heart bookmark button on avatar cards ───────────────────────── */

.market-card-avatar .title-row {
	display: flex;
	align-items: flex-start;
	gap: var(--space-xs);
	min-width: 0;
}
.market-card-avatar .title-row .title {
	flex: 1;
	min-width: 0;
}
.card-heart {
	flex: 0 0 auto;
	background: transparent;
	border: 0;
	color: rgba(255, 255, 255, 0.25);
	font-size: 16px;
	line-height: 1;
	cursor: pointer;
	padding: var(--space-3xs) var(--space-2xs);
	border-radius: var(--radius-sm);
	transition: color var(--duration-fast), transform var(--duration-instant);
	margin-top: var(--space-3xs);
}
.card-heart:hover { color: var(--danger); transform: scale(1.15); }
.card-heart.active { color: var(--danger); }

.card-star {
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: 3;
	background: rgba(0,0,0,0.5);
	border: 1px solid rgba(255,255,255,0.1);
	color: rgba(255,255,255,0.5);
	font-size: 16px;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	transition: color var(--duration-fast), transform var(--duration-instant), background var(--duration-fast);
	opacity: 0;
}
.market-card-agent:hover .card-star,
.card-star:focus-visible { opacity: 1; }
.card-star.on {
	color: #fde047;
	opacity: 1;
}
.card-star:hover { color: #fde047; transform: scale(1.1); background: rgba(0,0,0,0.7); }
.card-star:focus-visible { color: #fde047; outline: 2px solid #fde047; outline-offset: 2px; }

/* ── Featured badge on cards ────────────────────────────────────── */

.card-featured-badge {
	position: absolute;
	top: 8px;
	left: 8px;
	font-size: 14px;
	z-index: 2;
	pointer-events: none;
}
.featured-badge {
	background: rgba(253, 224, 71, 0.15);
	color: #fde047;
	font-size: 11px;
	font-weight: 600;
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-pill);
}
.market-card-avatar.featured {
	border-color: rgba(253, 224, 71, 0.25);
}
.market-card-avatar.featured:hover {
	border-color: rgba(253, 224, 71, 0.5);
}

/* ── Modal load-progress bar ────────────────────────────────────── */

.modal-load-progress {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--space-sm);
	background: var(--surface-1);
	z-index: 1;
	pointer-events: none;
}
.modal-load-bar-wrap {
	width: 160px;
	height: 3px;
	background: rgba(255, 255, 255, 0.08);
	border-radius: var(--radius-sm);
	overflow: hidden;
}
.modal-load-bar {
	height: 100%;
	width: 0%;
	background: #ffffff;
	border-radius: var(--radius-sm);
	transition: width var(--duration-base) linear;
}
.modal-load-label {
	font-size: 11px;
	color: rgba(255, 255, 255, 0.4);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* ── Modal author line ───────────────────────────────────────────── */

.avatar-modal-author {
	font-size: 12px;
	color: var(--ink-dim);
	margin: 0;
}
.avatar-modal-author a {
	color: #ffffff;
	text-decoration: none;
}
.avatar-modal-author a:hover { text-decoration: underline; }

/* ── Bookmark button in modal ────────────────────────────────────── */

#avatar-modal-bookmark {
	background: transparent;
	border: 1px solid var(--stroke-strong);
	color: rgba(255, 255, 255, 0.5);
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-sm);
	font-size: 13px;
	cursor: pointer;
	width: 100%;
	text-align: center;
	transition: border-color var(--duration-fast), color var(--duration-fast), background var(--duration-fast);
	margin-bottom: calc(-1 * var(--space-2xs));
}
#avatar-modal-bookmark::before { content: '♥  '; }
#avatar-modal-bookmark:hover {
	border-color: var(--danger);
	color: var(--danger);
}
#avatar-modal-bookmark.active {
	color: var(--danger);
	border-color: var(--danger);
	background: rgba(248, 113, 113, 0.08);
}

/* ── Mobile layout fixes ─────────────────────────────────────────── */

@media (max-width: 640px) {
	.market-topbar {
		flex-wrap: wrap;
		gap: var(--space-xs);
		padding: var(--space-sm) var(--space-sm);
	}
	#market-search {
		width: 100%;
		order: -1;
	}
	.market-filter-chips {
		width: 100%;
		justify-content: center;
	}
	.market-submit-btn,
	.market-submit-avatar-btn {
		display: none; /* collapsed into sidebar on mobile */
	}
	.market-grid {
		grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
		padding: var(--space-sm) var(--space-sm) var(--space-2xl);
		gap: var(--space-sm);
	}
	.market-card-avatar .thumb {
		aspect-ratio: 1 / 1;
	}
	.avatar-modal {
		grid-template-columns: 1fr;
		grid-template-rows: 55vw auto;
		max-height: 95vh;
	}
	.avatar-modal-stage {
		min-height: unset;
	}
	.avatar-modal-side {
		max-height: 45vh;
		padding: var(--space-md);
	}
	.market-hero {
		display: none; /* hero takes too much space on small screens */
	}
	.market-stats {
		padding: var(--space-sm) var(--space-sm) 0;
		gap: var(--space-xs);
	}
	.market-stat {
		min-width: 80px;
		padding: var(--space-xs) var(--space-sm);
	}
	.market-stat .num { font-size: 15px; }
}
@media (max-width: 480px) {
	.market-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* ── Embed tab ──────────────────────────────────────────────────────────── */
.d-embed-section {
	margin-bottom: var(--space-md);
}
.d-embed-label {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: var(--space-xs);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ink-dim);
}
.d-embed-code {
	background: #050505;
	border: 1px solid var(--stroke);
	border-radius: var(--radius-md);
	padding: var(--space-sm) var(--space-md);
	font-family: ui-monospace, 'SF Mono', monospace;
	font-size: 12px;
	color: var(--ink-dim);
	overflow-x: auto;
	white-space: pre;
	line-height: 1.5;
	margin: 0;
}
.d-embed-copy {
	background: transparent;
	border: 1px solid var(--stroke-strong);
	color: var(--ink-dim);
	padding: var(--space-3xs) var(--space-sm);
	border-radius: var(--radius-sm);
	font-size: 10px;
	font-weight: 600;
	cursor: pointer;
	font-family: inherit;
	transition: color var(--duration-fast), border-color var(--duration-fast);
}
.d-embed-copy:hover { color: var(--ink); border-color: var(--ink-dim); }
.d-embed-copy.copied { color: #34d399; border-color: #34d399; }

/* ── Token card (sidebar) ───────────────────────────────────────────────── */
.d-token-card {
	background: rgba(253, 224, 71, 0.04);
	border: 1px solid rgba(253, 224, 71, 0.18);
	border-radius: var(--radius-md);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}
.d-token-eyebrow {
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: #fde047;
	font-weight: 600;
}
.d-token-mint {
	font-family: ui-monospace, 'SF Mono', monospace;
	font-size: 11px;
	color: var(--ink-dim);
	word-break: break-all;
}
.d-token-actions {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
}
.d-token-btn {
	display: block;
	text-align: center;
	padding: var(--space-xs) var(--space-sm);
	border-radius: var(--radius-sm);
	font-size: 12px;
	font-weight: 600;
	text-decoration: none;
	background: rgba(253, 224, 71, 0.12);
	color: #fde047;
	border: 1px solid rgba(253, 224, 71, 0.25);
	transition: background var(--duration-fast);
}
.d-token-btn:hover { background: rgba(253, 224, 71, 0.2); }
.d-token-btn-sec {
	background: transparent;
	color: var(--ink-dim);
	border-color: var(--stroke-strong);
}
.d-token-btn-sec:hover { background: rgba(255,255,255,0.04); color: var(--ink); }

/* ── Reviews & Ratings ──────────────────────────────────────────────── */

.d-rating-widget {
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
	margin-top: var(--space-lg);
	background: var(--surface-1);
}

.d-rating-summary {
	display: flex;
	align-items: baseline;
	gap: var(--space-sm);
	margin-bottom: var(--space-2xs);
}
.d-rating-summary .avg {
	font-size: 32px;
	font-weight: 700;
	color: var(--ink);
	line-height: 1;
}
.d-rating-summary .stars {
	font-size: 18px;
	color: var(--warn);
	letter-spacing: 1px;
}
.d-rating-summary .stars .stars-filled {
	color: var(--warn);
}
.d-rating-summary .count {
	font-size: 13px;
	color: var(--ink-dim);
}

/* Breakdown bars (App-Store style) */
.d-rating-breakdown {
	display: flex;
	flex-direction: column;
	gap: var(--space-2xs);
	margin: var(--space-md) 0 0;
}
.breakdown-row {
	display: flex;
	align-items: center;
	gap: var(--space-xs);
}
.breakdown-label {
	font-size: 12px;
	color: var(--ink-dim);
	width: 26px;
	text-align: right;
	flex-shrink: 0;
}
.breakdown-track {
	flex: 1;
	height: 6px;
	background: rgba(255, 255, 255, 0.06);
	border-radius: var(--radius-sm);
	overflow: hidden;
}
.breakdown-fill {
	height: 100%;
	background: var(--warn);
	border-radius: var(--radius-sm);
	transition: width var(--duration-slow) var(--ease-standard);
}
.breakdown-count {
	font-size: 11px;
	color: var(--ink-dim);
	width: 22px;
	text-align: right;
	flex-shrink: 0;
}

/* Rating input form */
.d-rating-input {
	margin-top: var(--space-md);
	padding-top: var(--space-md);
	border-top: 1px solid var(--stroke);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.review-login-cta {
	display: inline-block;
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-sm);
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid var(--stroke-strong);
	color: var(--ink);
	text-decoration: none;
	font-size: 13px;
	font-weight: 500;
	text-align: center;
	transition: background var(--duration-fast), border-color var(--duration-fast);
}
.review-login-cta:hover {
	background: rgba(255, 255, 255, 0.1);
	border-color: rgba(255, 255, 255, 0.2);
}

/* Star picker */
.review-star-picker {
	display: inline-flex;
	gap: var(--space-3xs);
}
.review-star-picker .star-pick {
	background: none;
	border: none;
	cursor: pointer;
	font-size: 22px;
	color: var(--ink-dim);
	padding: var(--space-3xs) var(--space-3xs);
	line-height: 1;
	transition: color var(--duration-instant), transform var(--duration-instant);
}
.review-star-picker .star-pick:hover,
.review-star-picker .star-pick.hover {
	color: var(--warn);
	transform: scale(1.15);
}
.review-star-picker .star-pick.active {
	color: var(--warn);
}
.review-star-picker .star-pick:focus-visible {
	outline: 2px solid rgba(255, 255, 255, 0.5);
	outline-offset: 2px;
	border-radius: var(--radius-sm);
}

/* Textarea */
.d-rating-input textarea,
.review-edit-form textarea {
	width: 100%;
	min-height: 72px;
	padding: var(--space-sm) var(--space-sm);
	border-radius: var(--radius-sm);
	border: 1px solid var(--stroke);
	background: rgba(255, 255, 255, 0.04);
	color: var(--ink);
	font-family: inherit;
	font-size: 13px;
	line-height: 1.5;
	resize: vertical;
	transition: border-color var(--duration-fast), background var(--duration-fast);
	box-sizing: border-box;
}
.d-rating-input textarea:focus,
.review-edit-form textarea:focus {
	outline: none;
	border-color: rgba(255, 255, 255, 0.3);
	background: rgba(255, 255, 255, 0.07);
}

/* Submit / Edit / Delete buttons */
.submit-review {
	align-self: flex-start;
	padding: var(--space-xs) var(--space-md);
	border-radius: var(--radius-sm);
	border: 1px solid rgba(255, 255, 255, 0.14);
	background: rgba(255, 255, 255, 0.08);
	color: var(--ink);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: background var(--duration-fast), border-color var(--duration-fast), opacity var(--duration-fast);
}
.submit-review:hover:not(:disabled) {
	background: rgba(255, 255, 255, 0.14);
	border-color: rgba(255, 255, 255, 0.25);
}
.submit-review:disabled {
	opacity: 0.4;
	cursor: not-allowed;
}
.submit-review:active:not(:disabled) {
	transform: translateY(1px);
}

.review-mine-notice {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	font-size: 13px;
	color: var(--ink);
}
.review-mine-notice.editing { opacity: 0.5; }
.review-mine-notice strong { color: var(--warn); letter-spacing: 1px; }
.review-mine-actions {
	display: flex;
	gap: var(--space-xs);
}
.review-edit-btn,
.review-delete-btn,
.review-cancel-btn {
	padding: var(--space-xs) var(--space-sm);
	border-radius: var(--radius-sm);
	border: 1px solid var(--stroke-strong);
	background: transparent;
	color: var(--ink-dim);
	font-size: 12px;
	cursor: pointer;
	transition: background var(--duration-fast), color var(--duration-fast), border-color var(--duration-fast);
}
.review-edit-btn:hover,
.review-cancel-btn:hover {
	background: rgba(255, 255, 255, 0.06);
	color: var(--ink);
}
.review-delete-btn:hover {
	background: rgba(248, 113, 113, 0.12);
	border-color: rgba(248, 113, 113, 0.3);
	color: var(--danger);
}

.review-edit-form {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	margin-top: var(--space-sm);
	padding-top: var(--space-sm);
	border-top: 1px solid var(--stroke);
}
.review-edit-actions {
	display: flex;
	gap: var(--space-xs);
}

/* Status message */
.d-rating-msg {
	font-size: 12px;
	min-height: 18px;
	transition: color var(--duration-fast);
}
.d-rating-msg.err { color: var(--danger); }
.d-rating-msg.ok { color: var(--success); }

/* Review list */
.d-reviews-list {
	margin-top: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
}

.review-card {
	padding: var(--space-md) 0;
	border-top: 1px solid var(--stroke);
}
.review-card:first-child { border-top: none; padding-top: 0; }
.review-card.mine {
	background: rgba(255, 255, 255, 0.02);
	border-radius: var(--radius-sm);
	padding: var(--space-md);
	margin: calc(-1 * var(--space-3xs)) calc(-1 * var(--space-md)) 0;
}

.review-header {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
}
.review-avatar {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: var(--surface-2);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	font-weight: 600;
	color: var(--ink-dim);
	flex-shrink: 0;
	background-size: cover;
	background-position: center;
}
.review-meta {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
}
.review-author {
	font-size: 13px;
	font-weight: 600;
	color: var(--ink);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.review-date {
	font-size: 11px;
	color: var(--ink-dim);
}
.review-stars {
	color: var(--warn);
	font-size: 14px;
	letter-spacing: 1px;
	flex-shrink: 0;
}
.review-body {
	margin: var(--space-xs) 0 0;
	font-size: 13px;
	color: var(--ink-dim);
	line-height: 1.55;
	white-space: pre-wrap;
	word-break: break-word;
}

/* Empty state */
.reviews-empty {
	text-align: center;
	padding: var(--space-lg) var(--space-md);
	color: var(--ink-dim);
}
.reviews-empty-icon {
	font-size: 28px;
	display: block;
	margin-bottom: var(--space-xs);
	opacity: 0.4;
}
.reviews-empty p {
	margin: 0;
	font-size: 13px;
}
.reviews-empty-hint {
	margin-top: var(--space-2xs) !important;
	font-size: 12px !important;
	color: var(--ink-dim);
}

/* Skeleton loading */
.review-card.skeleton {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	padding: var(--space-md) 0;
}
.review-skeleton-line {
	height: 12px;
	border-radius: var(--radius-sm);
	background: linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.04) 75%);
	background-size: 200% 100%;
	animation: review-shimmer 1.5s ease infinite;
}
.review-skeleton-line.w40 { width: 40%; }
.review-skeleton-line.w60 { width: 60%; }
.review-skeleton-line.w80 { width: 80%; }
@keyframes review-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* ── Reputation card ───────────────────────────────────────────────── */

.d-reputation-card {
	border: 1px solid var(--stroke);
	border-radius: var(--radius-card);
	padding: var(--space-md);
	margin-top: var(--space-sm);
	background: var(--surface-1);
}
.d-rep-eyebrow {
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--success);
	font-weight: 600;
	margin-bottom: var(--space-xs);
}
.d-rep-score {
	display: flex;
	align-items: baseline;
	gap: var(--space-xs);
}
.d-rep-avg {
	font-size: 24px;
	font-weight: 700;
	color: var(--ink);
	line-height: 1;
}
.d-rep-stars {
	font-size: 14px;
	color: var(--success);
	letter-spacing: 1px;
}
.d-rep-stars .stars-filled { color: var(--success); }
.d-rep-count {
	display: block;
	margin-top: var(--space-2xs);
	font-size: 11px;
	color: var(--ink-dim);
}

/* ── Responsive review adjustments ─────────────────────────────────── */

@media (max-width: 700px) {
	.d-rating-widget { padding: 14px; }
	.d-rating-summary .avg { font-size: 26px; }
	.review-mine-notice { flex-direction: column; align-items: flex-start; gap: 8px; }
	.review-header { flex-wrap: wrap; }
}

/* ══════════════════════════════════════════════════════════════════════════
   Microinteractions (B11) — consolidated focus rings, press states, entrance
   motion for the marketplace surface. Tokens from /tokens.css; transform/
   opacity only; reduced-motion honored at the end of the block.
   ══════════════════════════════════════════════════════════════════════════ */

/* Card grid entrance — staggered fade-up when the grid (re)renders. Capped at
   the first twelve children so deep pagination doesn't animate offscreen. */
.market-grid > * {
	animation: mk-card-rise var(--duration-slow, 420ms) var(--ease-emphasized, cubic-bezier(0.22, 1, 0.36, 1)) both;
}
.market-grid > *:nth-child(2)  { animation-delay: 40ms; }
.market-grid > *:nth-child(3)  { animation-delay: 80ms; }
.market-grid > *:nth-child(4)  { animation-delay: 120ms; }
.market-grid > *:nth-child(5)  { animation-delay: 160ms; }
.market-grid > *:nth-child(6)  { animation-delay: 200ms; }
.market-grid > *:nth-child(7)  { animation-delay: 240ms; }
.market-grid > *:nth-child(8)  { animation-delay: 280ms; }
.market-grid > *:nth-child(9)  { animation-delay: 320ms; }
.market-grid > *:nth-child(10) { animation-delay: 360ms; }
.market-grid > *:nth-child(11) { animation-delay: 400ms; }
.market-grid > *:nth-child(12) { animation-delay: 440ms; }
@keyframes mk-card-rise {
	from { opacity: 0; transform: translateY(10px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Shared focus ring — every interactive element on this surface. */
.market-nav a:focus-visible,
.cat-row:focus-visible,
.market-cat-chip:focus-visible,
.market-chip:focus-visible,
.market-hero-cta:focus-visible,
.market-hero-secondary:focus-visible,
.market-avatar-detail-cta:focus-visible,
.market-avatar-detail .btn-secondary:focus-visible,
.tool-detail-cta:focus-visible,
.market-tool-detail .btn-secondary:focus-visible,
.tool-detail-pills button.tag-pill:focus-visible,
.purchase-btn:focus-visible,
.trial-btn:focus-visible,
.time-pass-btn:focus-visible,
.skill-btn.purchase:focus-visible,
.market-fork:focus-visible,
.related-card:focus-visible,
.plugin-add-url-btn:focus-visible,
.plugin-install-btn:focus-visible,
.market-submit-btn:focus-visible,
.market-submit-avatar-btn:focus-visible,
.market-mine-cta:focus-visible,
.market-empty-redirect button:focus-visible,
.market-wip-dismiss:focus-visible,
.market-tag-banner-clear:focus-visible,
.earn-txn:focus-visible,
.earn-show-more:focus-visible,
.card-heart:focus-visible,
.card-author:focus-visible,
.market-card-avatar .card-tags .tag-pill:focus-visible,
.market-card-avatar .footer .compose-cta:focus-visible,
#avatar-modal-bookmark:focus-visible,
.avatar-modal-author a:focus-visible,
.d-embed-copy:focus-visible,
.d-token-btn:focus-visible,
.d-token-btn-sec:focus-visible {
	outline: var(--focus-ring-width, 2px) solid var(--focus-ring-color, #fff);
	outline-offset: var(--focus-ring-offset, 2px);
}

/* Press feedback — one register: a slight scale-down on buttons, a deeper
   tint on rows/links. Matches .card--interactive:active in style.css. */
.market-hero-cta:active,
.market-hero-secondary:active,
.market-avatar-detail-cta:active,
.tool-detail-cta:active,
.purchase-btn:active,
.trial-btn:active,
.time-pass-btn:active,
.skill-btn.purchase:active,
.plugin-add-url-btn:active,
.plugin-install-btn:active,
.market-submit-btn:active,
.market-submit-avatar-btn:active,
.market-mine-cta:active,
.market-empty-redirect button:active,
.earn-wallet-btn:active,
.earn-show-more:active,
.d-token-btn:active,
.d-token-btn-sec:active {
	transform: scale(0.98);
}
.market-nav a:active,
.cat-row:active { background: var(--surface-3); color: var(--ink); }
.market-cat-chip:active:not(.active),
.market-chip:active { background: var(--surface-3); color: var(--ink); }
.market-fork:active,
.d-embed-copy:active { background: var(--surface-2); }
.card-heart:active { transform: scale(1); }
.market-wip-dismiss:active,
.market-tag-banner-clear:active { opacity: 0.7; }

/* Pointer affordance + transition on rows that only had hover colors. */
.market-nav a,
.cat-row {
	transition:
		background var(--duration-instant, var(--duration-instant)) var(--ease-standard, var(--ease-standard)),
		color var(--duration-instant, var(--duration-instant)) var(--ease-standard, var(--ease-standard));
}

/* Reduced motion — this sheet mixes literal durations, so kill explicitly. */
@media (prefers-reduced-motion: reduce) {
	.market-grid > * { animation: none; }
	.market-nav a,
	.cat-row,
	.market-cat-chip,
	.market-chip,
	.market-hero-cta,
	.market-hero-secondary,
	.related-card,
	.plugin-card,
	.plugin-card-clickable,
	.tool-card,
	.earn-card,
	.earn-chip,
	.earn-txn,
	.card-heart,
	.card-star {
		transition: none !important;
	}
	.card-heart:hover,
	.card-star:hover { transform: none; }
}

/* ── Creator animation listings + purchase modal ─────────────────────────────
   Marketplace surface for clips authored in the Animation Studio (/pose) and
   listed for sale via /api/animations/sell. Rendered by src/marketplace.js. */
.market-anim-listings { margin-bottom: 8px; }
.market-anim-listings-head,
.market-anim-library-head {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin: 4px 0 14px;
}
.market-anim-library-head {
	margin-top: 28px;
	padding-top: 20px;
	border-top: 1px solid var(--stroke);
}
.market-anim-listings-title { font-size: 15px; font-weight: 700; color: #fafafa; margin: 0; }
.market-anim-listings-sub { font-size: 12px; color: #a1a1aa; }
.market-anim-listings-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }

.anim-listing-card {
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: 16px;
	overflow: hidden;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	transition: border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);
}
.anim-listing-card:hover,
.anim-listing-card:focus-visible {
	border-color: rgba(255, 255, 255, 0.2);
	transform: translateY(-2px);
	box-shadow: 0 10px 28px rgba(0, 0, 0, 0.34);
	outline: none;
}
.anim-listing-media {
	position: relative;
	aspect-ratio: 4 / 3;
	background:
		radial-gradient(circle at 50% 55%, rgba(255, 255, 255, 0.06), transparent 70%),
		linear-gradient(180deg, var(--stage), var(--stage-deep));
}
.anim-listing-thumb { width: 100%; height: 100%; object-fit: cover; display: block; }
.anim-listing-thumb-empty {
	width: 100%; height: 100%;
	display: flex; align-items: center; justify-content: center;
	font-size: 38px; opacity: 0.5;
}
.anim-listing-price {
	position: absolute;
	top: 10px; right: 10px;
	font-size: 11px; font-weight: 700;
	padding: 4px 9px;
	border-radius: 6px;
	letter-spacing: 0.02em;
}
.anim-listing-price.paid {
	background: rgba(99, 102, 241, 0.22);
	color: #c7d2fe;
	border: 1px solid rgba(129, 140, 248, 0.45);
}
.anim-listing-price.free {
	background: rgba(52, 211, 153, 0.18);
	color: #6ee7b7;
	border: 1px solid rgba(52, 211, 153, 0.4);
}
.anim-listing-body { padding: 12px 14px 6px; flex: 1; }
.anim-listing-name {
	font-size: 14px; font-weight: 600; color: #fafafa;
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.anim-listing-creator { font-size: 12px; color: #a1a1aa; margin-top: 2px; }
.anim-listing-meta { display: flex; gap: 5px; margin-top: 9px; flex-wrap: wrap; }
.anim-listing-cta {
	padding: 10px 14px 13px;
	font-size: 12px; font-weight: 600; color: #fafafa;
	opacity: 0.55;
	transition: opacity var(--duration-fast) var(--ease-standard);
}
.anim-listing-card:hover .anim-listing-cta,
.anim-listing-card:focus-visible .anim-listing-cta { opacity: 0.95; }

.anim-buy-overlay {
	position: fixed; inset: 0; z-index: 1000;
	display: flex; align-items: center; justify-content: center;
	padding: 20px;
	background: rgba(0, 0, 0, 0.66);
	animation: anim-buy-fade 0.16s ease;
}
@keyframes anim-buy-fade { from { opacity: 0; } to { opacity: 1; } }
.anim-buy-card {
	position: relative;
	width: min(720px, 100%);
	max-height: 90vh;
	overflow: auto;
	display: grid;
	grid-template-columns: 1fr 1fr;
	background: var(--surface-1, #0d0d0d);
	border: 1px solid var(--stroke-strong, rgba(255, 255, 255, 0.14));
	border-radius: 20px;
	box-shadow: 0 24px 64px rgba(0, 0, 0, 0.6);
	animation: anim-buy-rise 0.2s ease;
}
@keyframes anim-buy-rise {
	from { transform: translateY(10px); opacity: 0; }
	to { transform: translateY(0); opacity: 1; }
}
.anim-buy-close {
	position: absolute; top: 12px; right: 12px; z-index: 2;
	width: 32px; height: 32px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.14);
	background: rgba(0, 0, 0, 0.4);
	color: #fafafa; cursor: pointer;
	font-size: 14px; line-height: 1;
	transition: background var(--duration-fast) var(--ease-standard);
}
.anim-buy-close:hover { background: rgba(255, 255, 255, 0.12); }
.anim-buy-media {
	position: relative;
	background:
		radial-gradient(circle at 50% 55%, rgba(255, 255, 255, 0.06), transparent 70%),
		linear-gradient(180deg, var(--stage), var(--stage-deep));
	border-radius: 20px 0 0 20px;
	min-height: 320px;
}
.anim-buy-media img { width: 100%; height: 100%; object-fit: cover; border-radius: 20px 0 0 20px; }
.anim-buy-media-empty {
	position: absolute; inset: 0;
	display: flex; align-items: center; justify-content: center;
	font-size: 64px; opacity: 0.45;
}
.anim-buy-info { padding: 26px 24px 22px; min-width: 0; }
.anim-buy-name { font-size: 20px; font-weight: 700; color: #fafafa; margin: 0; line-height: 1.2; }
.anim-buy-creator { font-size: 13px; color: #a1a1aa; margin: 4px 0 0; }
.anim-buy-desc { font-size: 13px; color: #d4d4d8; line-height: 1.5; margin: 12px 0 0; }
.anim-buy-meta { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 14px; }
.anim-buy-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
.anim-buy-actions { margin-top: 20px; }
.anim-buy-go { width: 100%; }
.anim-buy-note { font-size: 12px; color: #a1a1aa; line-height: 1.5; margin: 12px 0 0; }
.anim-buy-note-err { color: #fca5a5; }
.anim-buy-snippet { margin-top: 16px; border-top: 1px solid var(--stroke); padding-top: 12px; }
.anim-buy-snippet summary { font-size: 12px; font-weight: 600; color: #c7d2fe; cursor: pointer; }
.anim-buy-snippet summary:hover { color: var(--ink-bright); }
.anim-buy-endpoint { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.anim-buy-endpoint code {
	flex: 1; min-width: 0;
	font-size: 11px; color: #d4d4d8;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid var(--stroke);
	border-radius: 8px;
	padding: 7px 9px;
	overflow-x: auto; white-space: nowrap;
}
.anim-buy-code {
	margin: 10px 0 0;
	font-size: 11px; line-height: 1.5; color: #d4d4d8;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid var(--stroke);
	border-radius: 10px;
	padding: 12px;
	overflow-x: auto;
}
.anim-buy-code code { white-space: pre; }
@media (max-width: 600px) {
	.anim-buy-card { grid-template-columns: 1fr; }
	.anim-buy-media { border-radius: 20px 20px 0 0; min-height: 200px; }
	.anim-buy-media img { border-radius: 20px 20px 0 0; }
}

/* ── Persistent wallet connect control ────────────────────────────────────
   A single Robinhood Chain connection surfaced in the marketplace chrome: the sidebar
   on desktop, the topbar on mobile (where the sidebar is hidden). Both slots
   read the same connectedWallet state, so only one is ever visible per
   breakpoint and they stay in lockstep with the in-modal purchase flow. */
.mkt-wallet-slot {
	display: flex;
}
.mkt-wallet-slot--sidebar {
	padding: 0 var(--space-sm);
	margin-bottom: var(--space-3xs);
}
/* Topbar slot is desktop-hidden; the sidebar owns the control there. */
.mkt-wallet-slot--topbar {
	display: none;
	margin-left: auto;
	flex: 0 0 auto;
}

.mkt-wallet-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	width: 100%;
	background: var(--accent);
	color: var(--on-accent);
	border: 0;
	border-radius: var(--radius-sm);
	padding: var(--space-xs) var(--space-md);
	font-family: var(--font-display);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	white-space: nowrap;
	transition:
		filter var(--duration-fast) var(--ease-standard),
		border-color var(--duration-fast) var(--ease-standard),
		opacity var(--duration-fast) var(--ease-standard);
}
.mkt-wallet-btn:hover {
	filter: brightness(1.06);
}
.mkt-wallet-btn:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}
.mkt-wallet-btn:disabled,
.mkt-wallet-btn.is-busy {
	opacity: 0.7;
	cursor: progress;
}
.mkt-wallet-btn .mkt-wallet-ico {
	font-size: 14px;
	line-height: 1;
}
.mkt-wallet-btn .mkt-wallet-label {
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Connected: a neutral monospace address pill, not the accent CTA. */
.mkt-wallet-btn.is-connected {
	background: var(--surface-1);
	color: var(--ink);
	border: 1px solid var(--stroke);
	font-family: var(--font-mono);
	font-weight: 600;
}
.mkt-wallet-btn.is-connected:hover {
	filter: none;
	border-color: var(--stroke-strong);
}
.mkt-wallet-dot {
	flex: 0 0 auto;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: #34d399;
	box-shadow: 0 0 0 3px rgba(52, 211, 153, 0.18);
}
.mkt-wallet-caret {
	font-size: 9px;
	color: var(--ink-dim);
}

/* Below the sidebar breakpoint, hand the control to the topbar. */
@media (max-width: 980px) {
	.mkt-wallet-slot--topbar {
		display: flex;
	}
	.mkt-wallet-slot--topbar .mkt-wallet-btn {
		width: auto;
	}
}

/* Dropdown: wallet picker (multi-wallet) or connected actions. Anchored to the
   button and appended to <body> so the sidebar/topbar can't clip it. */
.mkt-wallet-menu {
	position: fixed;
	z-index: 5000;
	min-width: 184px;
	max-width: 260px;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 5px;
	background: var(--surface-1);
	border: 1px solid var(--stroke);
	border-radius: 10px;
	box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5);
	animation: mkt-wallet-pop 0.12s ease;
}
@keyframes mkt-wallet-pop {
	from {
		opacity: 0;
		transform: translateY(-4px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}
.mkt-wallet-menu-item {
	display: block;
	width: 100%;
	text-align: left;
	background: transparent;
	border: 0;
	border-radius: 7px;
	padding: 9px 11px;
	font-family: var(--font-display);
	font-size: 13px;
	font-weight: 500;
	color: var(--ink);
	text-decoration: none;
	cursor: pointer;
	transition: background var(--duration-fast) var(--ease-standard);
}
.mkt-wallet-menu-item:hover,
.mkt-wallet-menu-item:focus-visible {
	background: rgba(255, 255, 255, 0.07);
	outline: none;
}
.mkt-wallet-menu-item.danger {
	color: var(--danger);
}
.mkt-wallet-menu-item.danger:hover,
.mkt-wallet-menu-item.danger:focus-visible {
	background: rgba(248, 113, 113, 0.12);
}

/* Transient feedback bubble (address copied / connect error). */
.mkt-wallet-bubble {
	position: fixed;
	z-index: 5001;
	padding: 7px 11px;
	background: #0d0d0d;
	color: var(--ink);
	border: 1px solid var(--stroke);
	border-radius: 8px;
	font-family: var(--font-display);
	font-size: 12px;
	font-weight: 600;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
	opacity: 0;
	transform: translateY(-4px);
	transition:
		opacity var(--duration-base) var(--ease-standard),
		transform var(--duration-base) var(--ease-standard);
	pointer-events: none;
}
.mkt-wallet-bubble.show {
	opacity: 1;
	transform: none;
}
.mkt-wallet-bubble.ok {
	border-color: rgba(52, 211, 153, 0.4);
	color: #6ee7b7;
}
.mkt-wallet-bubble.err {
	border-color: rgba(248, 113, 113, 0.4);
	color: #fca5a5;
}

@media (prefers-reduced-motion: reduce) {
	.mkt-wallet-btn,
	.mkt-wallet-menu,
	.mkt-wallet-bubble {
		animation: none;
		transition: none;
	}
}

/* Rare-pedigree badge (Agent Genome) — marks a bred agent's lineage tier on its
   card. Tier-colored; links into the breeding studio pre-seeded with this agent. */
.stat-pill.pedigree-badge {
	text-decoration: none;
	font-weight: 700;
	letter-spacing: 0.02em;
	border: 1px solid transparent;
	transition: transform var(--duration-fast) var(--ease-standard), filter var(--duration-fast) var(--ease-standard);
}
.stat-pill.pedigree-badge:hover { transform: translateY(-1px); filter: brightness(1.1); }
.stat-pill.pedigree-badge[data-tier='uncommon']  { color: #5fd1a0; border-color: #1f5a45; background: rgba(95,209,160,0.10); }
.stat-pill.pedigree-badge[data-tier='rare']      { color: #7aa2ff; border-color: #2c4a8f; background: rgba(122,162,255,0.12); }
.stat-pill.pedigree-badge[data-tier='legendary'] { color: #ffd479; border-color: #7a5e1f; background: linear-gradient(135deg, rgba(255,212,121,0.18), rgba(255,140,80,0.10)); }
@media (prefers-reduced-motion: reduce) { .stat-pill.pedigree-badge { transition: none; } }

/* Reputation leaderboard badge — top-10 on-chain trust score from the x402
   autonomous oracle (agent-reputation-leaderboard loop entry). Matches the
   platform's monochrome design language: bright gold text on a near-black bg. */
.stat-pill.rep-featured-badge {
	color: #ffd479;
	border-color: #7a5e1f;
	background: rgba(255,212,121,0.10);
	font-weight: 700;
	letter-spacing: 0.02em;
}

/* ── Interactive-state motion (QB-07) ──────────────────────────────────────
   The controls above promise they are clickable (cursor: pointer) and now
   answer that promise on hover. This is the one place that gives those hovers
   their timing, so the whole surface moves on a single ladder: --duration-fast
   for a control, the standard easing, and only cheap properties (colour, and
   transform, which the compositor handles). prefers-reduced-motion is honoured
   platform-wide by the floor in public/tokens.css, so there is no media query
   to repeat here. */
.market-sort,
.market-loadmore button,
.market-back,
.market-bookmark,
.market-tabs button,
.market-export-btn,
.close-button,
.plugin-modal-btn,
.market-modal-close,
.market-btn-pri,
.market-btn-sec,
.msm-note .msm-note-cta,
.market-import-btn,
.anim-buy-snippet summary {
	transition:
		background var(--duration-fast) var(--ease-standard),
		border-color var(--duration-fast) var(--ease-standard),
		color var(--duration-fast) var(--ease-standard),
		text-decoration-thickness var(--duration-fast) var(--ease-standard),
		transform var(--duration-fast) var(--ease-standard);
}
