

#context-panel {
	position: sticky;
	top: 136px;
	align-self: start;
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
	max-height: calc(100vh - 80px);
	overflow-y: auto;
	padding-bottom: 1rem
}

.panel-card {
	background: var(--bg-light);
	border-radius: .9rem;
	padding: 1rem;
	position: relative;
	overflow: hidden;
}

.panel-card::before {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	border-radius: inherit;
	box-shadow: inset 0 1px 2px #ffffff30, inset 0 -1px 2px #00000020;
}

.panel-card {
	box-shadow: var(--shadow-s)
}

.panel-card:hover {
	box-shadow: var(--shadow-m);
	transform: translateY(-2px);
	transition: .2s box-shadow, .2s transform
}

.panel-card h3 {
	font-size: .75rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .08em;
	color: var(--bs-secondary-color);
	margin-bottom: .75rem
}

/* ─────────────────────────────────────────────────────────────────────────
   PEERS TABLE - Modern Card-Based Design
   ───────────────────────────────────────────────────────────────────────── */

#peers-panel h3 i {
	font-size: 0.875rem;
	color: var(--primary, #2563eb);
	margin-right: 0.25rem;
}

/* Remove horizontal scrollbar on hover by containing transforms */
#peers-panel .table-responsive {
	overflow: visible;
}

.peer-table {
	border-collapse: separate;
	border-spacing: 0;
	font-variant-numeric: tabular-nums;
}

.peer-table thead th {
	font-size: 0.75rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--text-muted, #6b7280);
	padding: 0.625rem 0.75rem;
	border: none;
	background: transparent;
}

.peer-table tbody tr {
	transition: all 0.2s ease;
	cursor: pointer;
	position: relative;
}

.peer-table tbody td {
	font-size: 0.75rem;
	padding: 0.75rem;
	border: none;
	background: transparent;
	vertical-align: middle;
}

/* Add subtle separators between rows */
.peer-table tbody tr:not(:last-child) td {
	border-bottom: 1px solid color-mix(in oklch, var(--border-muted, #e5e7eb) 50%, transparent);
}

/* Hover state: lift row with shadow and highlight (removed translateX to prevent scrollbar) */
.peer-table tbody tr:hover {
	background: color-mix(in oklch, var(--primary, #2563eb) 4%, var(--bg-light, #fff));
	border-radius: 0.5rem;
	box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--primary, #2563eb) 15%, transparent);
}

.peer-table tbody tr:hover td {
	border-bottom-color: transparent;
}

.peer-table tbody tr:hover td:first-child::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 3px;
	background: linear-gradient(180deg, var(--primary, #2563eb), var(--secondary, #14b8a6));
	border-radius: 0 2px 2px 0;
}

/* Ticker symbol (first column) */
.peer-table tbody td:first-child {
	font-weight: 600;
	color: var(--text, #111827);
	position: relative;
}

.peer-link {
	color: inherit;
	text-decoration: none;
	font-weight: 600;
	transition: color 0.15s ease;
}

.peer-link:hover {
	color: var(--primary, #2563eb);
}

/* Price column - right-aligned with tabular nums */
.peer-table tbody td:nth-child(2) {
	text-align: right;
	font-weight: 500;
	color: var(--text, #111827);
}

/* Score column - badge style with color coding */
.peer-table tbody td:nth-child(3) {
	text-align: right;
	padding-right: 0.5rem;
}

.peer-score-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.5rem;
	padding: 0.25rem 0.5rem;
	font-size: 0.75rem;
	font-weight: 700;
	border-radius: 0.375rem;
	background: var(--surface-2, #f3f4f6);
	color: var(--text, #111827);
	transition: all 0.15s ease;
}

/* Score color coding */
.peer-score-badge[data-score-tier="high"] {
	background: color-mix(in oklch, var(--success, #10b981) 15%, var(--bg-light, #fff));
	color: var(--success, #10b981);
}

.peer-score-badge[data-score-tier="medium"] {
	background: color-mix(in oklch, var(--primary, #2563eb) 15%, var(--bg-light, #fff));
	color: var(--primary, #2563eb);
}

.peer-score-badge[data-score-tier="low"] {
	background: color-mix(in oklch, var(--warning, #f59e0b) 15%, var(--bg-light, #fff));
	color: var(--warning, #f59e0b);
}

.peer-table tbody tr:hover .peer-score-badge {
	transform: scale(1.05);
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Locked score state (anon / unauthenticated users) */
.peer-score-locked {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.5rem;
	color: var(--text-muted, #9ca3af);
	font-size: 0.75rem;
	cursor: default;
}

/* Empty/loading state */
.peer-table tbody tr.peer-loading td,
.peer-table tbody tr.peer-empty td {
	text-align: center;
	padding: 1.5rem 1rem;
	color: var(--text-muted, #6b7280);
	font-size: 0.8125rem;
}

/* Dark mode adjustments */
[data-bs-theme="dark"] .peer-table tbody tr:hover,
@media (prefers-color-scheme: dark) {
	:root:not([data-bs-theme="light"]) .peer-table tbody tr:hover {
		background: color-mix(in oklch, var(--primary, #2563eb) 8%, var(--bg-light, #1f2937));
	}
}

/* Generic sidebar list styles (applies to news/peers/quick actions without template changes) */
#context-panel .panel-card ul,
#context-panel .panel-card ol {
	list-style: none;
	margin: 0;
	padding: 0;
}

#context-panel .panel-card li,
#context-panel .panel-card .list-group-item,
#context-panel .panel-card .item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .5rem;
	padding: .5rem .6rem;
	border-radius: .6rem;
	border: 1px solid transparent;
	background: transparent;
	transition: background .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

#context-panel .panel-card li:hover,
#context-panel .panel-card .list-group-item:hover,
#context-panel .panel-card .item:hover {
	background: color-mix(in oklch, var(--highlight) 8%, var(--bg-light));
	border-color: var(--border);
	box-shadow: var(--shadow-s);
	transform: translateY(-1px);
}

#context-panel .panel-card a {
	color: var(--text);
	text-decoration: none;
}

#context-panel .panel-card a:hover {
	color: var(--primary);
	text-decoration: underline;
	text-decoration-color: color-mix(in oklch, var(--primary) 50%, transparent);
}

#context-panel .panel-card .muted {
	color: var(--text-muted);
}

/* ─────────────────────────────────────────────────────────────────────────
   QUICK ACTIONS - Enhanced Modern Design
   ───────────────────────────────────────────────────────────────────────── */

.quick-actions-panel {
	background: var(--bg-light);
}

.quick-actions-panel h3 {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.75rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--text-muted, #6b7280);
	margin-bottom: 1rem;
}

.quick-actions-panel h3 i {
	font-size: 0.875rem;
	color: var(--primary, #2563eb);
}

/* Action button container - group primary and secondary actions */
.quick-actions-toolbar {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

/* Enhanced button base styles */
.quick-actions-panel .btn {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.75rem 1rem;
	font-size: 0.875rem;
	font-weight: 600;
	border-radius: 0.75rem;
	border-width: 1.5px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
	transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
	position: relative;
	overflow: hidden;
}

/* Icon styling - more prominent */
.quick-actions-panel .btn i {
	font-size: 1rem;
	flex-shrink: 0;
	transition: transform 0.2s ease;
}

/* Primary action buttons (Watch, Compare) */
.quick-actions-panel .btn-primary,
.quick-actions-panel .btn-outline-primary {
	background: linear-gradient(135deg, var(--primary, #2563eb) 0%, color-mix(in oklch, var(--primary, #2563eb) 85%, var(--secondary, #14b8a6)) 100%);
	color: white;
	border-color: transparent;
}

.quick-actions-panel .btn-outline-primary {
	background: var(--bg-light, #fff);
	color: var(--primary, #2563eb);
	border-color: color-mix(in oklch, var(--primary, #2563eb) 30%, transparent);
}

/* Active state for Watch button */
.quick-actions-panel .btn-primary {
	background: linear-gradient(135deg, var(--primary, #2563eb) 0%, var(--primary-dark, #1d4ed8) 100%);
	box-shadow: 0 2px 8px color-mix(in oklch, var(--primary, #2563eb) 25%, transparent),
	            inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

/* Secondary state for Compare button when active */
.quick-actions-panel .btn-secondary {
	background: linear-gradient(135deg, var(--secondary, #14b8a6) 0%, var(--secondary-dark, #0f766e) 100%);
	color: white;
	border-color: transparent;
	box-shadow: 0 2px 8px color-mix(in oklch, var(--secondary, #14b8a6) 25%, transparent),
	            inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

/* Hover states */
.quick-actions-panel .btn:hover:not(:disabled) {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px color-mix(in oklch, var(--primary, #2563eb) 20%, transparent);
}

.quick-actions-panel .btn-outline-primary:hover:not(:disabled) {
	background: linear-gradient(135deg, var(--primary, #2563eb) 0%, color-mix(in oklch, var(--primary, #2563eb) 90%, var(--secondary, #14b8a6)) 100%);
	color: white;
	border-color: transparent;
}

.quick-actions-panel .btn-primary:hover:not(:disabled) {
	box-shadow: 0 6px 16px color-mix(in oklch, var(--primary, #2563eb) 30%, transparent),
	            inset 0 1px 0 rgba(255, 255, 255, 0.25);
}

.quick-actions-panel .btn-secondary:hover:not(:disabled) {
	box-shadow: 0 6px 16px color-mix(in oklch, var(--secondary, #14b8a6) 30%, transparent),
	            inset 0 1px 0 rgba(255, 255, 255, 0.25);
}

/* Icon animation on hover */
.quick-actions-panel .btn:hover:not(:disabled) i {
	transform: scale(1.1);
}

/* Active/pressed state */
.quick-actions-panel .btn:active:not(:disabled) {
	transform: translateY(0);
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

/* Disabled state */
.quick-actions-panel .btn:disabled {
	opacity: 0.6;
	cursor: not-allowed;
	box-shadow: none;
}

/* Shimmer effect for primary actions (subtle) */
.quick-actions-panel .btn-primary::before,
.quick-actions-panel .btn-secondary::before {
	content: '';
	position: absolute;
	top: 0;
	left: -100%;
	width: 100%;
	height: 100%;
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
	transition: left 0.5s ease;
}

.quick-actions-panel .btn-primary:hover::before,
.quick-actions-panel .btn-secondary:hover::before {
	left: 100%;
}

/* Hint text styling */
.quick-actions-panel .small.text-muted {
	font-size: 0.75rem;
	line-height: 1.4;
	color: var(--text-muted, #6b7280);
	margin-top: 0.75rem;
	padding-top: 0.75rem;
	border-top: 1px solid color-mix(in oklch, var(--border-muted, #e5e7eb) 50%, transparent);
}

.quick-actions-panel .small.text-muted a {
	color: var(--primary, #2563eb);
	font-weight: 600;
	text-decoration: none;
	transition: color 0.15s ease;
}

.quick-actions-panel .small.text-muted a:hover {
	color: var(--primary-dark, #1d4ed8);
	text-decoration: underline;
	text-decoration-color: color-mix(in oklch, var(--primary, #2563eb) 40%, transparent);
}

/* Tablet and smaller: single column layout, context panel uses Bootstrap d-lg-none/d-none classes */
@media (max-width: 991.98px) {
	.scrolly-layout {
		grid-template-columns: 1fr;
	}
}

/* ─────────────────────────────────────────────────────────────────────────
   MOBILE FAB (Floating Action Button) - Toggle for context panel offcanvas
   ───────────────────────────────────────────────────────────────────────── */

.context-panel-fab {
	position: fixed;
	bottom: 1.5rem;
	right: 1.5rem;
	z-index: 1040;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	border: none;
	background: linear-gradient(135deg, var(--primary, #2563eb) 0%, color-mix(in oklch, var(--primary, #2563eb) 80%, var(--secondary, #14b8a6)) 100%);
	color: #fff;
	font-size: 1.25rem;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 4px 12px rgba(37, 99, 235, 0.35), 0 2px 4px rgba(0, 0, 0, 0.1);
	cursor: pointer;
	transition: all 0.2s ease;
}

.context-panel-fab:hover {
	transform: scale(1.08);
	box-shadow: 0 6px 20px rgba(37, 99, 235, 0.45), 0 3px 6px rgba(0, 0, 0, 0.15);
}

.context-panel-fab:active {
	transform: scale(0.96);
}

/* Offcanvas styling for mobile context panel */
#context-panel-offcanvas {
	max-width: 320px;
	background: var(--bg, #f3f4f6);
}

#context-panel-offcanvas .offcanvas-header {
	background: var(--bg-light, #fff);
	border-bottom: 1px solid var(--border, #e5e7eb);
	padding: 1rem 1.25rem;
}

#context-panel-offcanvas .offcanvas-title {
	font-size: 1rem;
	font-weight: 600;
	color: var(--text, #111827);
}

#context-panel-offcanvas .offcanvas-body {
	padding: 1rem;
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

/* Mobile content inherits panel-card styles */
.context-panel-mobile-content {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.context-panel-mobile-content .panel-card {
	margin: 0;
}

/* Dark mode adjustments for FAB and offcanvas */
[data-bs-theme="dark"] .context-panel-fab {
	box-shadow: 0 4px 12px rgba(96, 165, 250, 0.3), 0 2px 4px rgba(0, 0, 0, 0.3);
}

[data-bs-theme="dark"] #context-panel-offcanvas {
	background: var(--bg, #0f172a);
}

[data-bs-theme="dark"] #context-panel-offcanvas .offcanvas-header {
	background: var(--bg-light, #1e293b);
	border-bottom-color: var(--border, #334155);
}

/* ─────────────────────────────────────────────────────────────────────────
   TOAST NOTIFICATIONS - Context Panel
   Brand colors, dark mode compatible, with reverse-loading progress bar
   ───────────────────────────────────────────────────────────────────────── */

#context-panel-toast-container {
	position: fixed;
	bottom: 1.5rem;
	right: 1.5rem;
	z-index: 9999;
	display: flex;
	flex-direction: column-reverse;
	gap: 0.75rem;
	max-width: min(400px, calc(100vw - 2rem));
	pointer-events: none;
}

/* Adjust toast position when FAB is visible */
@media (max-width: 991.98px) {
	#context-panel-toast-container {
		bottom: 5.5rem; /* Above the FAB */
	}
}

/* Peer row clickable cursor */
.peer-row {
	cursor: pointer;
}

.peer-link {
	font-weight: 600;
}
