@layer sarde.plugins {
	/* Telescope command palette. Scoped custom properties map the palette onto
	   the theme's --sd-* tokens so it re-themes with any preset; fallbacks keep
	   it usable if a token is absent. */
	.sarde-telescope,
	.sarde-telescope-trigger {
		--tel-bg: var(--sd-bg, #ffffff);
		--tel-bg-alt: var(--sd-bg-surface, #f6f8fa);
		--tel-text: var(--sd-text, #1f2328);
		--tel-text-muted: var(--sd-text-muted, #57606a);
		--tel-border: var(--sd-border, #d0d7de);
		--tel-accent: var(--sd-accent, var(--sd-blue, #0969da));
		--tel-accent-hover: color-mix(in srgb, var(--tel-accent) 10%, transparent);
		--tel-accent-selected: color-mix(in srgb, var(--tel-accent) 18%, transparent);
		--tel-pin: var(--sd-purple, #8250df);
		--tel-tag: var(--sd-green, #1a7f37);
		--tel-radius: var(--sd-radius-md, 0.5rem);
		--tel-font: var(--sd-font-sans, system-ui, sans-serif);
		--tel-font-mono: var(--sd-font-mono, ui-monospace, monospace);
	}

	/* ── Trigger button ── */
	.sarde-telescope-trigger {
		display: flex;
		align-items: center;
		gap: 0.375rem;
		min-width: 2.25rem;
		min-height: 2.25rem;
		padding: 0.375rem;
		justify-content: center;
		background: none;
		border: none;
		color: var(--tel-text-muted);
		cursor: pointer;
		border-radius: var(--sd-radius-sm, 0.375rem);
	}
	.sarde-telescope-trigger:hover {
		color: var(--tel-accent);
		background: var(--tel-accent-hover);
	}
	.sarde-telescope-trigger:focus-visible {
		outline: var(--sd-focus-ring-width, 2px) solid var(--sd-focus-ring, var(--tel-accent));
		outline-offset: 2px;
	}

	/* Divider from the theme's search trigger, drawn only when one precedes us.
	   The extra margin doubles the header's 0.5rem flex gap, and the line is
	   absolutely positioned at the midpoint of that 1rem gap. Sitting outside
	   the button's border box keeps it clear of the hover background. */
	.sarde-search-trigger + .sarde-telescope-trigger {
		position: relative;
		margin-inline-start: var(--sd-space-2, 0.5rem);
	}
	.sarde-search-trigger + .sarde-telescope-trigger::before {
		content: "";
		position: absolute;
		inset-inline-start: calc(var(--sd-space-2, 0.5rem) * -1);
		top: 50%;
		transform: translateY(-50%);
		width: 1px;
		height: 1.25rem;
		background: var(--tel-border);
	}
	.sarde-telescope-shortcut {
		display: none;
		align-items: center;
		gap: 0.125rem;
	}
	.sarde-telescope-shortcut kbd {
		font-family: var(--tel-font-mono);
		font-size: var(--sd-text-xs, 0.75rem);
		background: var(--tel-bg-alt);
		border: 1px solid var(--tel-border);
		border-radius: 0.25rem;
		padding: 0.125rem 0.375rem;
		color: var(--tel-text-muted);
	}
	@media (min-width: 50rem) {
		.sarde-telescope-shortcut {
			display: flex;
		}
	}

	/* ── Dialog ── */
	.sarde-telescope {
		border: none;
		padding: 0;
		background: transparent;
		max-width: 100vw;
		max-height: 100vh;
		width: 100%;
		height: 100%;
		position: fixed;
		justify-content: center;
		align-items: flex-start;
		padding-block-start: 10vh;
		margin: 0;
	}
	.sarde-telescope[open] {
		display: flex;
	}
	.sarde-telescope::backdrop {
		background: rgba(175, 184, 193, 0.5);
		backdrop-filter: blur(8px);
		-webkit-backdrop-filter: blur(8px);
	}
	:root[data-theme="dark"] .sarde-telescope::backdrop {
		background: rgba(1, 4, 9, 0.65);
	}

	.sarde-telescope-modal {
		font-family: var(--tel-font);
		width: 40rem;
		max-width: 95%;
		max-height: 80vh;
		background: var(--tel-bg);
		border-radius: 0.75rem;
		border: 1px solid var(--tel-border);
		box-shadow: var(--sd-shadow-lg, 0 25px 50px -12px rgba(0, 0, 0, 0.4));
		overflow: hidden;
		display: flex;
		flex-direction: column;
		position: relative;
	}

	/* ── Close button ── */
	.sarde-telescope-close {
		position: absolute;
		inset-block-start: 0.625rem;
		inset-inline-end: 0.625rem;
		width: 2rem;
		height: 2rem;
		border-radius: var(--sd-radius-sm, 0.375rem);
		background: none;
		border: none;
		color: var(--tel-text-muted);
		cursor: pointer;
		display: flex;
		align-items: center;
		justify-content: center;
		z-index: 1;
		padding: 0;
	}
	.sarde-telescope-close:hover {
		background: var(--tel-bg-alt);
		color: var(--tel-text);
	}
	.sarde-telescope-close:focus-visible {
		outline: var(--sd-focus-ring-width, 2px) solid var(--sd-focus-ring, var(--tel-accent));
		outline-offset: 2px;
	}

	/* ── Tabs ── */
	.sarde-telescope-tabs {
		display: flex;
		border-block-end: 1px solid var(--tel-border);
		background: var(--tel-bg-alt);
		padding: 0 0.75rem;
	}
	.sarde-telescope-tab {
		padding: 0.75rem 1rem;
		border: none;
		background: none;
		cursor: pointer;
		font-family: var(--tel-font);
		font-size: var(--sd-text-sm, 0.875rem);
		font-weight: 500;
		color: var(--tel-text-muted);
		position: relative;
		border-radius: var(--sd-radius-sm, 0.375rem) var(--sd-radius-sm, 0.375rem) 0 0;
		margin: 0.25rem 0.125rem 0;
	}
	.sarde-telescope-tab:hover {
		color: var(--tel-accent);
		background: var(--tel-accent-hover);
	}
	.sarde-telescope-tab:focus-visible {
		outline: var(--sd-focus-ring-width, 2px) solid var(--sd-focus-ring, var(--tel-accent));
		outline-offset: -2px;
	}
	.sarde-telescope-tab-active {
		color: var(--tel-accent);
		background: var(--tel-bg);
		border-block-end: 2px solid var(--tel-accent);
		margin-block-end: -1px;
	}

	/* ── Search input ── */
	.sarde-telescope-search-header {
		background: var(--tel-bg);
	}
	.sarde-telescope-input {
		width: 100%;
		padding: 1rem 1.25rem;
		border: none;
		border-radius: 0;
		font-family: var(--tel-font);
		font-size: var(--sd-text-lg, 1.125rem);
		background: var(--tel-bg);
		color: var(--tel-text);
		outline: none;
		margin: 0;
		display: block;
		line-height: 1.4;
		border-block-end: 1px solid var(--tel-border);
	}
	.sarde-telescope-input::placeholder {
		color: var(--tel-text-muted);
	}
	.sarde-telescope-input:focus {
		border-block-end-color: var(--tel-accent);
		box-shadow: 0 1px 0 var(--tel-accent);
	}

	/* ── Sections and results list ── */
	.sarde-telescope-section {
		display: none;
		flex: 1;
		overflow-y: auto;
		background: var(--tel-bg);
		scrollbar-width: thin;
		scrollbar-color: var(--tel-border) var(--tel-bg);
	}
	.sarde-telescope-section-active {
		display: block;
	}
	.sarde-telescope-results {
		list-style: none;
		margin: 0;
		padding: 0.375rem 0;
		max-height: 55vh;
		overflow-y: auto;
		background: var(--tel-bg);
	}
	.sarde-telescope-results::-webkit-scrollbar,
	.sarde-telescope-section::-webkit-scrollbar {
		width: 6px;
	}
	.sarde-telescope-results::-webkit-scrollbar-track,
	.sarde-telescope-section::-webkit-scrollbar-track {
		background: var(--tel-bg);
	}
	.sarde-telescope-results::-webkit-scrollbar-thumb,
	.sarde-telescope-section::-webkit-scrollbar-thumb {
		background: var(--tel-border);
		border-radius: 3px;
	}

	/* ── Result rows ── */
	.sarde-telescope-result {
		display: flex;
		padding: 0.625rem 1rem;
		cursor: pointer;
		border-inline-start: 3px solid transparent;
		align-items: center;
		justify-content: space-between;
		position: relative;
	}
	/* Pointer events stay off until the mouse moves, so a modal opening under
	   the cursor cannot fake a hover selection. */
	.sarde-telescope-pointer-disabled .sarde-telescope-result {
		pointer-events: none;
	}
	.sarde-telescope-result:hover {
		background: var(--tel-accent-hover);
		border-inline-start-color: color-mix(in srgb, var(--tel-accent) 40%, transparent);
	}
	.sarde-telescope-result-selected {
		background: var(--tel-accent-selected);
		border-inline-start-color: var(--tel-accent);
	}
	.sarde-telescope-result-content {
		flex: 1;
		display: flex;
		align-items: center;
		gap: 0.75rem;
		overflow: hidden;
		min-width: 0;
	}
	.sarde-telescope-result-collection {
		flex: 0 0 auto;
		background: color-mix(in srgb, var(--tel-accent) 12%, transparent);
		color: var(--tel-accent);
		border-radius: 4px;
		padding: 2px 6px;
		font-size: var(--sd-text-xs, 0.75rem);
		font-weight: 500;
		line-height: 1.4;
		white-space: nowrap;
	}
	.sarde-telescope-result-title {
		font-weight: 600;
		color: var(--tel-accent);
		font-size: var(--sd-text-sm, 0.875rem);
		line-height: 1.3;
		flex: 0 0 auto;
		max-width: 40%;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}
	.sarde-telescope-result-description {
		font-size: var(--sd-text-sm, 0.875rem);
		color: var(--tel-text);
		flex: 1;
		line-height: 1.3;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		opacity: 0.75;
	}
	.sarde-telescope-result-tags {
		display: flex;
		flex-wrap: wrap;
		gap: 0.25rem;
		margin-inline-start: 0.5rem;
	}
	.sarde-telescope-tag {
		background: var(--tel-bg-alt);
		border-radius: 10px;
		padding: 2px 8px;
		font-size: var(--sd-text-xs, 0.75rem);
		color: var(--tel-tag);
		line-height: 1.4;
		font-weight: 500;
	}
	.sarde-telescope-highlight {
		background: rgba(250, 204, 21, 0.4);
		color: var(--tel-text);
		border-radius: 2px;
		padding: 0 2px;
	}
	:root[data-theme="dark"] .sarde-telescope-highlight {
		background: rgba(250, 204, 21, 0.3);
	}

	/* ── Pin button ── */
	.sarde-telescope-pin-btn {
		background: none;
		border: none;
		color: var(--tel-text-muted);
		cursor: pointer;
		width: 1.75rem;
		height: 1.75rem;
		padding: 0;
		display: flex;
		align-items: center;
		justify-content: center;
		flex-shrink: 0;
		margin-inline-start: 0.5rem;
		border-radius: var(--sd-radius-sm, 0.25rem);
		opacity: 0.5;
	}
	.sarde-telescope-pin-btn svg {
		fill: currentColor;
	}
	.sarde-telescope-result:hover .sarde-telescope-pin-btn,
	.sarde-telescope-result-selected .sarde-telescope-pin-btn {
		opacity: 1;
	}
	.sarde-telescope-pin-btn:hover {
		color: var(--tel-pin);
		background: color-mix(in srgb, var(--tel-pin) 15%, transparent);
	}
	.sarde-telescope-pin-btn:focus-visible {
		outline: var(--sd-focus-ring-width, 2px) solid var(--sd-focus-ring, var(--tel-accent));
		outline-offset: 2px;
		opacity: 1;
	}
	.sarde-telescope-pin-btn-pinned {
		color: var(--tel-pin);
		background: color-mix(in srgb, var(--tel-pin) 20%, transparent);
		opacity: 1;
	}

	/* ── Section separators, empty states ── */
	.sarde-telescope-section-separator {
		display: flex;
		justify-content: space-between;
		align-items: center;
		padding: 0.625rem 1rem 0.375rem;
		font-size: var(--sd-text-xs, 0.75rem);
		font-weight: 600;
		color: var(--tel-text-muted);
		background: var(--tel-bg-alt);
		border-block-start: 1px solid var(--tel-border);
		text-transform: uppercase;
		letter-spacing: 0.05em;
	}
	.sarde-telescope-no-results {
		padding: 2rem 1rem;
		text-align: center;
		color: var(--tel-text-muted);
		font-size: var(--sd-text-sm, 0.875rem);
	}
	.sarde-telescope-more-results {
		padding: 0.75rem 1rem;
		text-align: center;
		color: var(--tel-text-muted);
		font-size: var(--sd-text-xs, 0.75rem);
		font-style: italic;
		background: var(--tel-bg-alt);
		border-block-start: 1px solid var(--tel-border);
	}
	.sarde-telescope-clear-btn {
		background: transparent;
		border: none;
		color: var(--tel-text-muted);
		font-size: var(--sd-text-xs, 0.75rem);
		font-weight: 500;
		cursor: pointer;
		padding: 0.375rem 0.625rem;
		min-height: 2rem;
		border-radius: var(--sd-radius-sm, 0.25rem);
		text-transform: none;
		letter-spacing: normal;
	}
	.sarde-telescope-clear-btn:hover {
		color: var(--tel-accent);
		background: var(--tel-accent-hover);
	}
	.sarde-telescope-clear-btn:focus-visible {
		outline: var(--sd-focus-ring-width, 2px) solid var(--sd-focus-ring, var(--tel-accent));
		outline-offset: 2px;
	}

	/* ── Footer ── */
	.sarde-telescope-footer {
		padding: 0.625rem 1rem;
		border-block-start: 1px solid var(--tel-border);
		background: var(--tel-bg-alt);
	}
	.sarde-telescope-shortcuts {
		display: flex;
		justify-content: center;
		gap: 1rem;
		font-size: var(--sd-text-xs, 0.75rem);
		color: var(--tel-text-muted);
	}
	.sarde-telescope-shortcuts span {
		display: flex;
		align-items: center;
		gap: 0.25rem;
	}
	.sarde-telescope-modal kbd {
		font-family: var(--tel-font-mono);
		font-size: var(--sd-text-xs, 0.75rem);
		background: var(--tel-bg-alt);
		border: 1px solid var(--tel-border);
		border-radius: 0.25rem;
		box-shadow: 0 1px 0 var(--tel-border);
		color: var(--tel-text);
		display: inline-block;
		line-height: 1.2;
		padding: 2px 5px;
		margin: 0 1px;
	}

	/* ── Loading ── */
	.sarde-telescope-loading {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 0.75rem;
		padding: 2.5rem;
		color: var(--tel-text-muted);
		font-size: var(--sd-text-sm, 0.875rem);
	}
	.sarde-telescope-spinner {
		width: 18px;
		height: 18px;
		border: 2px solid var(--tel-border);
		border-block-start-color: var(--tel-accent);
		border-radius: 50%;
	}

	/* ── Screen reader only ── */
	.sarde-telescope-sr-only {
		position: absolute;
		width: 1px;
		height: 1px;
		padding: 0;
		margin: -1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		white-space: nowrap;
		border: 0;
	}

	/* ── Motion ── */
	@keyframes sarde-telescope-fade-in {
		from { opacity: 0; }
		to { opacity: 1; }
	}
	@keyframes sarde-telescope-slide-in {
		from { transform: translateY(-8px); opacity: 0; }
		to { transform: translateY(0); opacity: 1; }
	}
	@keyframes sarde-telescope-spin {
		to { transform: rotate(360deg); }
	}
	@media (prefers-reduced-motion: no-preference) {
		.sarde-telescope[open],
		.sarde-telescope[open]::backdrop {
			animation: sarde-telescope-fade-in 0.2s ease-out;
		}
		.sarde-telescope[open] .sarde-telescope-modal {
			animation: sarde-telescope-slide-in 0.2s ease-out;
		}
		.sarde-telescope-trigger,
		.sarde-telescope-result,
		.sarde-telescope-close,
		.sarde-telescope-tab,
		.sarde-telescope-pin-btn,
		.sarde-telescope-clear-btn {
			transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;
		}
		.sarde-telescope-spinner {
			animation: sarde-telescope-spin 0.8s linear infinite;
		}
	}

	/* ── Responsive ── */
	@media (max-width: 50rem) {
		.sarde-telescope {
			padding-block-start: 5vh;
		}
		.sarde-telescope-modal {
			width: 100%;
			max-width: 100%;
			max-height: 90vh;
			border-radius: var(--tel-radius);
		}
		.sarde-telescope-input {
			font-size: 16px; /* prevents iOS auto-zoom */
			padding: 0.875rem 1rem;
		}
		.sarde-telescope-result-content {
			gap: 0.625rem;
		}
		.sarde-telescope-result-title {
			max-width: 45%;
		}
		.sarde-telescope-shortcuts {
			gap: 0.625rem;
			flex-wrap: wrap;
		}
	}
	@media (max-width: 30rem) {
		.sarde-telescope-result-collection {
			display: none;
		}
	}

	/* ── Print ── */
	@media print {
		.sarde-telescope,
		.sarde-telescope-trigger {
			display: none !important;
		}
	}
}
