/* style.css */

/*  Root & Globals  */
:root {
	/* Colors */
	--color-bg-dark: #000814;
	--color-bg-panel: rgba(2, 6, 23, 0.75);
	--color-bg-panel-light: rgba(0, 50, 100, 0.3);
	--color-bg-panel-hover: rgba(0, 100, 200, 0.5);

	--color-primary: #007bfc;
	--color-secondary: #00d8ff;
	--color-glow: rgba(0, 150, 255, 0.3);
	--color-glow-heavy: rgba(0, 150, 255, 0.8);
	--color-border: rgba(0, 150, 255, 0.2);
	--color-border-medium: rgba(0, 150, 255, 0.4);

	--color-text-light: #ffffff;
	--color-text-primary: #99ddff;
	--color-text-dim: rgba(255, 255, 255, 0.6);
	--color-text-dark: #cccccc;

	/* Status Colors */
	--color-status-healthy: #00ff88;
	--color-status-healthy-bg: rgba(0, 255, 136, 0.1);
	--color-status-healthy-bg-med: rgba(0, 255, 136, 0.2);
	--color-status-healthy-glow: rgba(0, 255, 136, 0.8);

	--color-status-issue: #ff4444;
	--color-status-issue-bg: rgba(255, 68, 68, 0.1);
	--color-status-issue-bg-med: rgba(255, 68, 68, 0.2);
	--color-status-issue-glow: rgba(255, 68, 68, 0.8);

	--color-status-maint: #ffaa00;
	--color-status-maint-bg: rgba(255, 170, 0, 0.1);
	--color-status-maint-bg-med: rgba(255, 170, 0, 0.2);
	--color-status-maint-glow: rgba(255, 170, 0, 0.8);

	--color-status-maint-active: #ff8c00;
	--color-status-maint-active-bg: rgba(255, 140, 0, 0.12);
	--color-status-maint-active-bg-med: rgba(255, 140, 0, 0.24);
	--color-status-maint-active-glow: rgba(255, 140, 0, 0.8);

	/* Scrollbar Colors */
	--color-scrollbar-track: #102040;
	--color-scrollbar-thumb: #00a8ff;

}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

body {
	font-family: "Arial", sans-serif;
	overflow: hidden;
	background-color: var(--color-bg-dark);
	color: var(--color-text-light);
}

/*  Layout & Panels  */
#container {
	position: relative;
	width: 100vw;
	height: 100vh;
}

#container canvas.globe-mode {
	cursor: grab;
}

#container canvas.globe-mode:active {
	cursor: grabbing !important;
}

.panel {
	background-color: var(--color-bg-panel);
	border-radius: 8px;
	padding: 20px;
	color: var(--color-text-light);
	box-shadow: 0 0 20px var(--color-glow);
	backdrop-filter: blur(10px);
	margin-bottom: 20px;
	border: 1px solid var(--color-border);
}

#controls {
	position: absolute;
	top: 80px;
	left: 20px;
	z-index: 10;
	transition: transform 0.3s ease;
}

#controls.panel-collapsed {
	transform: translateX(-90%);
}

/* Floating Panels */
#location-list,
.service-alerts-panel {
	position: absolute;
	top: 20px;
	width: 320px;
	max-height: calc(100vh - 40px);
	overflow-y: auto;
	z-index: 10;

	/* Scrollbar styles */
	scrollbar-width: thin;
	scrollbar-color: var(--color-scrollbar-thumb) var(--color-scrollbar-track);
}

#location-list {
	right: 10px;
	display: none;
	max-height: calc(100vh - 110px);
}

.service-alerts-panel {
	right: 20px;
	width: 350px;
	max-height: calc(100vh - 110px);
}

.logo {
	position: absolute;
	top: 20px;
	right: 20px;
	z-index: 10;
	color: var(--color-text-light);
	font-size: 28px;
	font-weight: bold;
	text-shadow: 0 0 10px var(--color-glow-heavy);
}

.info-footer {
	position: absolute;
	bottom: 20px;
	left: 20px;
	color: var(--color-text-dim);
	font-size: 14px;
	z-index: 10;
}

/*  Reusable Scrollbar Styles  */
#location-list::-webkit-scrollbar,
.service-alerts-panel::-webkit-scrollbar {
	width: 8px;
}

#location-list::-webkit-scrollbar-track,
.service-alerts-panel::-webkit-scrollbar-track {
	background: var(--color-scrollbar-track);
	border-radius: 4px;
}

#location-list::-webkit-scrollbar-thumb,
.service-alerts-panel::-webkit-scrollbar-thumb {
	background-color: var(--color-scrollbar-thumb);
	border-radius: 4px;
}

/* Tooltip scrollbar (thinner) */
.tooltip-plan-list::-webkit-scrollbar {
	width: 6px;
}

.tooltip-plan-list::-webkit-scrollbar-track {
	background: var(--color-bg-panel-light);
	border-radius: 3px;
}

.tooltip-plan-list::-webkit-scrollbar-thumb {
	background-color: var(--color-scrollbar-thumb);
	border-radius: 3px;
	border: 1px solid rgba(0, 50, 100, 0.5);
}

.tooltip-plan-list::-webkit-scrollbar-thumb:hover {
	background-color: var(--color-primary);
}

.tooltip-plan-list {
	scrollbar-width: thin;
	scrollbar-color: var(--color-scrollbar-thumb) var(--color-bg-panel-light);
}

/*  Typography & Common Elements  */
h1 {
	color: var(--color-primary);
	font-size: 24px;
	margin-bottom: 5px;
	text-shadow: 0 0 10px var(--color-glow-heavy);
	font-weight: 300;
}

.subtitle {
	font-size: 16px;
	margin-bottom: 10px;
	margin-top: 5px;
	color: var(--color-text-primary);
}

/*  Buttons  */
.toggle-btn {
	flex: 1;
	padding: 8px 16px;
	border: none;
	background-color: rgba(0, 50, 100, 0.5);
	color: var(--color-text-primary);
	cursor: pointer;
	font-size: 16px;
	transition: all 0.3s ease;
}

.toggle-btn:first-child {
	border-top-left-radius: 4px;
	border-bottom-left-radius: 4px;
}

.toggle-btn:last-child {
	border-top-right-radius: 4px;
	border-bottom-right-radius: 4px;
}

.toggle-btn.active {
	background-color: rgba(0, 150, 255, 0.5);
	color: var(--color-text-light);
	box-shadow: 0 0 15px rgba(0, 150, 255, 0.5);
}

.toggle-btn:hover:not(.active) {
	background-color: var(--color-bg-panel-hover);
}

/* World-view crumb button — appears when zoomed into a DC */
.world-view-crumb {
	position: fixed;
	bottom: 24px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 50;
	display: flex;
	align-items: center;
	gap: 6px;
	background-color: rgba(2, 6, 23, 0.85);
	border: 1px solid var(--color-border-medium);
	border-radius: 20px;
	padding: 7px 16px;
	color: var(--color-text-primary);
	font-size: 13px;
	cursor: pointer;
	backdrop-filter: blur(10px);
	box-shadow: 0 0 16px rgba(0, 150, 255, 0.2);
	transition: all 0.2s ease;
	animation: fadeInUp 0.25s ease;
}

.world-view-crumb:hover {
	background-color: rgba(0, 100, 200, 0.35);
	border-color: var(--color-primary);
	box-shadow: 0 0 20px rgba(0, 150, 255, 0.4);
	color: var(--color-text-light);
}

@keyframes fadeInUp {
	from { opacity: 0; transform: translateX(-50%) translateY(8px); }
	to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

.toggle-panel-btn {
	position: absolute;
	top: 20px;
	left: 20px;
	z-index: 15;
	background-color: var(--color-bg-panel);
	border: 1px solid var(--color-border);
	border-radius: 8px;
	padding: 12px;
	color: var(--color-text-primary);
	cursor: pointer;
	backdrop-filter: blur(10px);
	transition: all 0.3s ease;
}

.toggle-panel-btn:hover {
	background-color: var(--color-bg-panel-hover);
	box-shadow: 0 0 15px rgba(0, 150, 255, 0.4);
}

.close-btn {
	background: none;
	border: none;
	color: var(--color-text-primary);
	cursor: pointer;
	font-size: 18px;
}

.close-btn:hover {
	color: var(--color-text-light);
	text-shadow: 0 0 8px var(--color-glow);
}

.list-btn {
	background-color: rgba(0, 50, 100, 0.5);
	border: 1px solid var(--color-border);
	color: var(--color-text-light);
	padding: 10px 16px;
	border-radius: 4px;
	cursor: pointer;
	font-size: 16px;
	margin-top: 15px;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 0.3s ease;
}

.list-btn:hover {
	background-color: var(--color-bg-panel-hover);
	box-shadow: 0 0 15px rgba(0, 150, 255, 0.4);
}

/* Alert Button Variants */
.list-btn.alerts-btn {
	background-color: rgba(100, 50, 0, 0.5);
	border-color: rgba(255, 170, 0, 0.3);
	color: var(--color-status-maint);
}

.list-btn.alerts-btn:hover {
	background-color: rgba(150, 75, 0, 0.5);
	box-shadow: 0 0 15px rgba(255, 170, 0, 0.4);
}

.list-btn.alerts-btn.has-issues {
	background-color: rgba(100, 20, 20, 0.5);
	border-color: rgba(255, 68, 68, 0.3);
	color: var(--color-text-light);
}

.list-btn.alerts-btn.has-issues:hover {
	background-color: rgba(150, 30, 30, 0.5);
	box-shadow: 0 0 15px rgba(255, 68, 68, 0.4);
}

.list-btn.alerts-btn svg {
	animation: pulse-glow 2s ease-in-out infinite;
}

.list-btn.alerts-btn.all-clear {
	background-color: rgba(0, 60, 25, 0.5);
	border-color: rgba(0, 255, 136, 0.3);
	color: #00ff88;
}

.list-btn.alerts-btn.all-clear:hover {
	background-color: rgba(0, 90, 35, 0.5);
	box-shadow: 0 0 15px rgba(0, 255, 136, 0.3);
}

.list-btn.alerts-btn.all-clear svg {
	animation: none;
}

.list-btn.alerts-btn.notifications {
	background-color: rgba(0, 60, 100, 0.5);
	border-color: rgba(0, 216, 255, 0.3);
	color: #00d8ff;
}

.list-btn.alerts-btn.notifications:hover {
	background-color: rgba(0, 90, 140, 0.5);
	box-shadow: 0 0 15px rgba(0, 216, 255, 0.3);
}

.list-btn.alerts-btn.notifications svg {
	animation: none;
}

#alertsBtnGroup {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

/* Manual Controls Panel - Bottom Right */

.control-label {
	font-size: 14px;
	color: var(--color-text-primary);
	margin-bottom: 4px;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

.control-grid {
	display: inline-flex;
	justify-content: left;
	gap: 8px;
	padding-top: 9px;
	margin-right: 3px;
}

.control-row {
	display: inline-flex;
	gap: 8px;
	margin-right: 4px;
}

.control-btn {
	background-color: rgba(0, 50, 100, 0.4);
	border: 1px solid var(--color-border);
	color: var(--color-text-primary);
	padding: 10px;
	border-radius: 4px;
	cursor: pointer;
	transition: all 0.2s ease;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
}

.control-btn:hover {
	background-color: var(--color-bg-panel-hover);
	box-shadow: 0 0 10px rgba(0, 150, 255, 0.4);
	color: var(--color-text-light);
}

.control-btn:active {
	transform: scale(0.95);
}

.control-btn-wide {
	background-color: rgba(0, 50, 100, 0.4);
	border: 1px solid var(--color-border);
	color: var(--color-text-primary);
	padding: 12px 16px;
	border-radius: 4px;
	cursor: pointer;
	transition: all 0.2s ease;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	font-size: 13px;
	white-space: nowrap;
}

.control-btn-wide:hover {
	background-color: var(--color-bg-panel-hover);
	box-shadow: 0 0 10px rgba(0, 150, 255, 0.4);
	color: var(--color-text-light);
}

.control-btn-wide:active {
	transform: scale(0.98);
}

.control-btn-full {
	background-color: rgba(0, 50, 100, 0.4);
	border: 1px solid var(--color-border);
	color: var(--color-text-primary);
	padding: 10px 16px;
	border-radius: 4px;
	cursor: pointer;
	transition: all 0.2s ease;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	font-size: 16px;
}

.control-btn-full:hover {
	background-color: var(--color-bg-panel-hover);
	box-shadow: 0 0 10px rgba(0, 150, 255, 0.4);
	color: var(--color-text-light);
}

.control-btn-full:active {
	transform: scale(0.98);
}

.control-btn-full.active {
	background-color: rgba(0, 150, 255, 0.5);
	color: var(--color-text-light);
	box-shadow: 0 0 15px rgba(0, 150, 255, 0.5);
}

/*  Control Panel Stats & Status  */
.toggle-buttons {
	display: flex;
	margin-bottom: 15px;
}

.stats-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 15px;
	margin-bottom: 15px;
}

.stat-box {
	text-align: center;
}

.stat-label {
	font-size: 16px;
	color: var(--color-text-primary);
}

.stat-value {
	font-size: 22px;
	font-weight: 400;
	color: var(--color-secondary);
	text-shadow: 0 0 10px var(--color-glow-heavy);
	margin-top: 5px;
}

/* Region status bar */
.region-status-bar-wrap {
	margin-top: 18px;
}

.region-status-bar {
	display: flex;
	height: 6px;
	border-radius: 3px;
	overflow: hidden;
	gap: 2px;
	background: rgba(255,255,255,0.05);
}

.rsb-seg {
	border-radius: 3px;
	transition: flex 0.6s ease;
	min-width: 0;
}

.rsb-operational { background: var(--color-status-healthy); box-shadow: 0 0 6px var(--color-status-healthy-glow); }
.rsb-maintenance  { background: var(--color-status-maint);  box-shadow: 0 0 6px var(--color-status-maint-glow); }
.rsb-issues       { background: var(--color-status-issue);  box-shadow: 0 0 6px var(--color-status-issue-glow); }

.region-status-counts {
	display: flex;
	justify-content: space-between;
	margin-top: 10px;
	font-size: 14px;
	color: var(--color-text-dim);
}

.rsc-item {
	display: flex;
	align-items: center;
	gap: 5px;
}

.rsc-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	flex-shrink: 0;
}

.rsc-dot--operational { background: var(--color-status-healthy); box-shadow: 0 0 4px var(--color-status-healthy-glow); }
.rsc-dot--maintenance  { background: var(--color-status-maint);  box-shadow: 0 0 4px var(--color-status-maint-glow); }
.rsc-dot--issues       { background: var(--color-status-issue);  box-shadow: 0 0 4px var(--color-status-issue-glow); }

.status-indicator {
	display: flex;
	align-items: center;
	margin-top: 16px;
	margin-bottom: 12px;
	padding: 10px;
	background-color: var(--color-bg-panel-light);
	border-radius: 4px;
}

.status-light {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	margin-right: 10px;
	box-shadow: 0 0 8px currentColor;
}

.status-text {
	font-size: 16px;
	color: var(--color-text-primary);
}

.last-update {
	font-size: 14px;
	color: var(--color-text-dim);
	text-align: center;
}

/*  Location List  */
.locations-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 10px;
}

.locations-title {
	font-size: 18px;
	color: var(--color-primary);
	text-shadow: 0 0 8px var(--color-glow);
}

.location-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 8px;
}

.location-item {
	padding: 10px;
	background-color: var(--color-bg-panel-light);
	border-radius: 4px;
	transition: all 0.2s ease;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	border: 1px solid rgba(0, 150, 255, 0.1);
}

.location-item:hover {
	background-color: rgba(0, 100, 200, 0.3);
	box-shadow: 0 0 10px var(--color-glow);
}

.location-info {
	display: flex;
	align-items: center;
}

.location-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: var(--color-primary);
	margin-right: 10px;
	box-shadow: 0 0 8px var(--color-glow-heavy);
}

.location-status {
	font-size: 14px;
	padding: 2px 6px;
	border-radius: 3px;
	white-space: nowrap;
	flex-shrink: 0;
	background-color: var(--color-status-healthy-bg-med);
	color: var(--color-status-healthy);
}

/* Status Dot & Label Variants */
.status-light.online,
.location-dot.online {
	background-color: var(--color-status-healthy);
	color: var(--color-status-healthy);
}

.status-light.issues,
.location-dot.issues {
	background-color: var(--color-status-issue);
	color: var(--color-status-issue);
}

.status-light.maintenance,
.location-dot.maintenance {
	background-color: var(--color-status-maint);
	color: var(--color-status-maint);
}

.location-status.issues {
	background-color: var(--color-status-issue-bg-med);
	color: var(--color-status-issue);
}

.location-status.maintenance {
	background-color: var(--color-status-maint-bg-med);
	color: var(--color-status-maint);
}

/*  Alerts Panel  */
.alerts-content {
	overflow-y: auto;
}

.alert-item {
	background-color: var(--color-status-issue-bg);
	border-left: 4px solid var(--color-status-issue);
	padding: 12px;
	margin-bottom: 10px;
	border-radius: 4px;
}

.alert-item.maintenance {
	background-color: var(--color-status-maint-bg);
	border-left-color: var(--color-status-maint);
}

.alert-item.maintenance-scheduled {
	background-color: var(--color-status-maint-bg);
	border-left-color: var(--color-status-maint);
}

.alert-item.maintenance-active {
	background-color: var(--color-status-maint-active-bg);
	border-left-color: var(--color-status-maint-active);
}

.alert-item.resolved {
	background-color: var(--color-status-healthy-bg);
	border-left-color: var(--color-status-healthy);
}

.alert-subject {
	font-weight: bold;
	margin-bottom: 6px;
	color: var(--color-text-light);
	font-size: 16px;
}

.alert-meta {
	display: flex;
	justify-content: space-between;
	margin-bottom: 8px;
	font-size: 14px;
	color: var(--color-text-primary);
}

.alert-status {
	padding: 2px 6px;
	border-radius: 3px;
	font-size: 11px;
	font-weight: bold;
}

.alert-status.ongoing {
	background-color: var(--color-status-issue-bg-med);
	color: var(--color-status-issue);
}

.alert-status.maintenance-scheduled {
	background-color: var(--color-status-maint-bg-med);
	color: var(--color-status-maint);
}

.alert-status.maintenance-active {
	background-color: var(--color-status-maint-active-bg-med);
	color: var(--color-status-maint-active);
}

.alert-status.resolved {
	background-color: var(--color-status-healthy-bg-med);
	color: var(--color-status-healthy);
}

.alert-message {
	font-size: 13px;
	color: var(--color-text-dark);
	line-height: 1.4;
	white-space: pre-line;
}

/*  9. Tooltip  */
.tooltip {
	position: absolute;
	display: none;
	background-color: rgba(2, 6, 23, 0.85);
	color: var(--color-text-light);
	padding: 12px;
	border-radius: 6px;
	font-size: 16px;
	z-index: 100;
	min-width: 220px;
	max-width: 300px;
	max-height: calc(100vh - 16px);
	overflow-y: auto;
	pointer-events: auto;
	box-shadow: 0 0 20px var(--color-border-medium);
	border: 1px solid var(--color-border-medium);
}

/* Location filter pills */
.location-filter-row {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-bottom: 12px;
}

.filter-pill {
	background-color: rgba(0, 50, 100, 0.4);
	border: 1px solid var(--color-border);
	color: var(--color-text-primary);
	padding: 4px 10px;
	border-radius: 4px;
	font-size: 14px;
	cursor: pointer;
	transition: all 0.2s ease;
	white-space: nowrap;
}

.filter-pill:hover {
	background-color: rgba(0, 100, 200, 0.4);
	color: var(--color-text-light);
}

.filter-pill.active {
	background-color: rgba(0, 123, 252, 0.35);
	border-color: var(--color-primary);
	color: var(--color-text-light);
	box-shadow: 0 0 8px rgba(0, 123, 252, 0.4);
}

/* Inline "View alert →" button inside tooltip alert items */
.tooltip-inline-alert-btn {
	display: inline-block;
	margin-top: 5px;
	background: none;
	border: 1px solid rgba(0, 216, 255, 0.35);
	color: var(--color-secondary);
	padding: 3px 8px;
	border-radius: 4px;
	font-size: 11px;
	cursor: pointer;
	transition: all 0.2s ease;
}

.tooltip-inline-alert-btn:hover {
	background-color: rgba(0, 216, 255, 0.1);
	border-color: var(--color-secondary);
	box-shadow: 0 0 6px rgba(0, 216, 255, 0.3);
}

.tooltip h3 {
	color: var(--color-primary);
	margin-bottom: 4px;
	font-size: 16px;
	text-shadow: 0 0 8px var(--color-glow);
}

.tooltip p {
	margin-bottom: 8px;
	color: var(--color-text-primary);
}

.tooltip-divider {
	height: 1px;
	background-color: rgba(0, 150, 255, 0.3);
	margin: 8px 0;
}

.tooltip-metric {
	display: flex;
	justify-content: space-between;
	margin-bottom: 4px;
}

.metric-label {
	color: var(--color-text-primary);
}

.metric-value {
	color: var(--color-primary);
	text-shadow: 0 0 8px rgba(0, 255, 170, 0.6);
}

.metric-value.status-online {
	color: var(--color-status-healthy);
	text-shadow: 0 0 8px var(--color-status-healthy-glow);
}

.metric-value.status-issues {
	color: var(--color-status-issue);
	text-shadow: 0 0 8px var(--color-status-issue-glow);
}

.metric-value.status-maintenance {
	color: var(--color-status-maint);
	text-shadow: 0 0 8px var(--color-status-maint-glow);
}

/* Note: !important is kept as it overrides the .status-* classes */
.metric-value.compute-high {
	color: var(--color-status-healthy) !important;
	text-shadow: 0 0 8px var(--color-status-healthy-glow) !important;
}

.metric-value.compute-limited {
	color: var(--color-status-maint) !important;
	text-shadow: 0 0 8px var(--color-status-maint-glow) !important;
}

.metric-value.compute-unavailable {
	color: var(--color-status-issue) !important;
	text-shadow: 0 0 8px var(--color-status-issue-glow) !important;
}

/* Tooltip Alerts */
.tooltip-alerts {
	margin-top: 8px;
	max-height: 200px;
	overflow-y: auto;
}

.tooltip-alert-item {
	background-color: var(--color-status-issue-bg);
	border-left: 3px solid var(--color-status-issue);
	padding: 6px 8px;
	margin: 4px 0;
	border-radius: 3px;
	font-size: 14px;
}

.tooltip-alert-item.maintenance {
	background-color: var(--color-status-maint-bg);
	border-left-color: var(--color-status-maint);
}

.tooltip-alert-item.maintenance-scheduled {
	background-color: var(--color-status-maint-bg);
	border-left-color: var(--color-status-maint);
}

.tooltip-alert-item.maintenance-active {
	background-color: var(--color-status-maint-active-bg);
	border-left-color: var(--color-status-maint-active);
}

.tooltip-alert-item.resolved {
	background-color: var(--color-status-healthy-bg);
	border-left-color: var(--color-status-healthy);
}

.tooltip-alert-subject {
	font-weight: bold;
	margin-bottom: 2px;
	color: var(--color-text-light);
	line-height: 1.3;
}

.tooltip-alert-status {
	padding: 5px 0;
	font-size: 12px;
	color: var(--color-text-primary);
}

.tooltip-alert-status.maintenance-scheduled {
	color: var(--color-status-maint);
}

.tooltip-alert-status.maintenance-active {
	color: var(--color-status-maint-active);
}

.tooltip-alert-status.resolved {
	color: var(--color-status-healthy);
}

/* Tooltip Products */
.tooltip-products {
	margin-top: 8px;
}

.tooltip-section-title {
	font-size: 13px;
	font-weight: bold;
	color: var(--color-primary);
	margin-bottom: 6px;
	text-shadow: 0 0 8px var(--color-glow);
}

.tooltip-product-summary {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.product-chip-row {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
}

.product-chip {
	display: inline-block;
	padding: 3px 8px;
	border-radius: 4px;
	font-size: 11px;
	white-space: nowrap;
}

/* Each product gets a distinct color */
.product-chip--shared_cpu {
	background-color: rgba(0, 170, 210, 0.15);
	border: 1px solid rgba(0, 200, 255, 0.4);
	color: #80eeff;
}
.product-chip--dedicated_cpu {
	background-color: rgba(80, 70, 200, 0.18);
	border: 1px solid rgba(120, 110, 255, 0.45);
	color: #c0b8ff;
}
.product-chip--gpu {
	background-color: rgba(140, 50, 220, 0.2);
	border: 1px solid rgba(180, 100, 255, 0.5);
	color: #d0a8ff;
}
.product-chip--bare_metal {
	background-color: rgba(200, 100, 0, 0.15);
	border: 1px solid rgba(255, 160, 0, 0.45);
	color: #ffcc66;
}
.product-chip--block_storage {
	background-color: rgba(60, 110, 170, 0.18);
	border: 1px solid rgba(90, 150, 220, 0.45);
	color: #a8c8f0;
}
.product-chip--object_storage {
	background-color: rgba(0, 160, 160, 0.15);
	border: 1px solid rgba(0, 210, 200, 0.45);
	color: #70ffe8;
}
.product-chip--kubernetes {
	background-color: rgba(20, 80, 210, 0.18);
	border: 1px solid rgba(50, 120, 255, 0.5);
	color: #80b0ff;
}
.product-chip--load_balancers {
	background-color: rgba(180, 40, 90, 0.15);
	border: 1px solid rgba(255, 80, 140, 0.4);
	color: #ff9abb;
}
.product-chip--ddos_protection {
	background-color: rgba(0, 180, 90, 0.12);
	border: 1px solid rgba(0, 220, 120, 0.4);
	color: #70ffb8;
}
.product-chip--vpc_network {
	background-color: rgba(0, 150, 120, 0.15);
	border: 1px solid rgba(0, 200, 160, 0.4);
	color: #60ffe0;
}

/* Alert reference ID badge */
.alert-ref-id {
	display: inline-block;
	margin-left: 6px;
	padding: 1px 5px;
	border-radius: 3px;
	background-color: rgba(0, 150, 255, 0.15);
	border: 1px solid rgba(0, 150, 255, 0.3);
	color: rgba(153, 221, 255, 0.7);
	font-size: 10px;
	font-family: "Courier New", monospace;
	vertical-align: middle;
	letter-spacing: 0.05em;
}

/* Tooltip Compliances */
.tooltip-compliances {
	margin-top: 8px;
}

.tooltip-compliances-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 6px;
}

.compliance-badge {
	background: linear-gradient(
		135deg,
		rgba(0, 150, 255, 0.2),
		rgba(0, 200, 255, 0.3)
	);
	border: 1px solid rgba(0, 200, 255, 0.4);
	color: var(--color-secondary);
	padding: 4px 8px;
	border-radius: 4px;
	font-size: 10px;
	font-weight: bold;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	box-shadow: 0 0 8px rgba(0, 200, 255, 0.3);
	white-space: nowrap;
	transition: all 0.3s ease;
}

.compliance-badge:hover {
	background: linear-gradient(
		135deg,
		rgba(0, 150, 255, 0.3),
		rgba(0, 200, 255, 0.4)
	);
	box-shadow: 0 0 12px rgba(0, 200, 255, 0.5);
	transform: translateY(-1px);
}

/* Loading Screen */
.loading-screen {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	background-color: var(--color-bg-dark);
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	z-index: 1000;
	transition: opacity 0.5s ease;
}

.loading-text {
	margin-top: 20px;
	color: var(--color-primary);
	font-size: 18px;
	letter-spacing: 0.5px;
	text-shadow: 0 0 10px var(--color-glow);
}

/* Animations */
.loader {
	width: 72px;
	height: 72px;
	display: flex;
	align-items: center;
	justify-content: center;
	filter: drop-shadow(0 0 20px var(--color-glow));
}

#vultr-loader-assemble {
	width: 100%;
	height: 100%;
	display: block;
	overflow: visible;
}

.cls-1 { fill: #007bfc; }
.cls-2 { fill: #51b9ff; }
.cls-3 { fill: #fff; }

.piece {
	transform-box: fill-box;
	transform-origin: center;
	animation-duration: 2.8s;
	animation-timing-function: cubic-bezier(.2,.75,.18,1);
	animation-iteration-count: infinite;
	animation-fill-mode: both;
	will-change: transform, opacity;
}

.top {
	animation-name: assemble-top;
}

.mid {
	animation-name: assemble-mid;
}

.main {
	animation-name: assemble-main;
}

.right {
	animation-name: assemble-right;
}

.whole-logo {
	animation: settle-glow 2.8s ease-in-out infinite;
}

@keyframes assemble-top {
	0% {
		opacity: 0;
		transform: translate(-8px, -6px) rotate(-6deg) scale(.94);
	}
	18% {
		opacity: 1;
		transform: translate(.6px, .2px) rotate(.8deg) scale(1.01);
	}
	26%, 74% {
		opacity: 1;
		transform: translate(0, 0) rotate(0) scale(1);
	}
	100% {
		opacity: 0;
		transform: translate(-8px, -6px) rotate(-6deg) scale(.94);
	}
}

@keyframes assemble-mid {
	0% {
		opacity: 0;
		transform: translate(-10px, -1px) rotate(-4deg) scale(.95);
	}
	10% {
		opacity: 0;
		transform: translate(-10px, -1px) rotate(-4deg) scale(.95);
	}
	30% {
		opacity: 1;
		transform: translate(.7px, .15px) rotate(.5deg) scale(1.01);
	}
	38%, 74% {
		opacity: 1;
		transform: translate(0, 0) rotate(0) scale(1);
	}
	100% {
		opacity: 0;
		transform: translate(-10px, -1px) rotate(-4deg) scale(.95);
	}
}

@keyframes assemble-main {
	0% {
		opacity: 0;
		transform: translate(-6px, 10px) rotate(4deg) scale(.96);
	}
	18% {
		opacity: 0;
		transform: translate(-6px, 10px) rotate(4deg) scale(.96);
	}
	42% {
		opacity: 1;
		transform: translate(.5px, -.25px) rotate(-.4deg) scale(1.012);
	}
	50%, 74% {
		opacity: 1;
		transform: translate(0, 0) rotate(0) scale(1);
	}
	100% {
		opacity: 0;
		transform: translate(-6px, 10px) rotate(4deg) scale(.96);
	}
}

@keyframes assemble-right {
	0% {
		opacity: 0;
		transform: translate(8px, -8px) rotate(7deg) scale(.9);
	}
	30% {
		opacity: 0;
		transform: translate(8px, -8px) rotate(7deg) scale(.9);
	}
	54% {
		opacity: 1;
		transform: translate(-.4px, .35px) rotate(-.6deg) scale(1.02);
	}
	62%, 74% {
		opacity: 1;
		transform: translate(0, 0) rotate(0) scale(1);
	}
	100% {
		opacity: 0;
		transform: translate(8px, -8px) rotate(7deg) scale(.9);
	}
}

@keyframes settle-glow {
	0%, 54% {
		opacity: 1;
	}
	60% {
		opacity: 1;
	}
	68% {
		opacity: .96;
	}
	74% {
		opacity: 1;
	}
	100% {
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.piece,
	.whole-logo {
		animation: none;
		opacity: 1;
		transform: none;
	}
}

#manual-controls {
	position: absolute;
	bottom: 0px;
	right: 10px;
	z-index: 10;
	margin-bottom: 0px;
}

#manual-controls .panel {
	display: grid;
	gap: 8px;
	margin-bottom: 10px;
	padding: 10px 15px 15px 15px;
}

#manual-controls .panel > h2 {
	grid-column: 1 / -1;
}

#manual-controls .panel > .control-section:nth-of-type(1) { grid-column: 1; }
#manual-controls .panel > .control-section:nth-of-type(2),
#manual-controls .panel > .control-section:nth-of-type(3) { grid-column: 2; }

#manual-controls .control-btn-full { width: 100%; }

@media (max-width: 820px) {
	#controls {
		top: 54px;
		left: 14px;
		width: min(292px, calc(100vw - 28px));
	}

	#controls.panel-collapsed {
		transform: translateX(calc(-100% - 12px));
	}

	#controls .panel {
		padding: 14px;
		margin-bottom: 10px;
	}

	#controls h1 {
		font-size: 18px;
	}

	#controls .subtitle {
		font-size: 14px;
		margin-bottom: 8px;
	}

	#controls p {
		font-size: 13px !important;
		line-height: 1.4;
		margin-bottom: 14px !important;
	}

	#controls .toggle-buttons {
		margin-bottom: 12px;
	}

	#controls .toggle-btn,
	#controls .list-btn {
		font-size: 14px;
	}

	#controls .list-btn {
		padding: 9px 12px;
	}

	.stats-grid {
		gap: 10px;
	}

	.stat-label {
		font-size: 13px;
	}

	.stat-value {
		font-size: 18px;
		margin-top: 3px;
	}

	.region-status-bar-wrap {
		margin-top: 14px;
	}

	.region-status-counts {
		flex-wrap: wrap;
		gap: 6px 14px;
		font-size: 12px;
	}

	.status-indicator {
		margin-top: 12px;
		margin-bottom: 10px;
		padding: 8px 10px;
	}

	.status-light {
		width: 10px;
		height: 10px;
		margin-right: 8px;
	}

	.status-text,
	.last-update {
		font-size: 13px;
	}

	#manual-controls {
		left: 50%;
		right: auto;
		bottom: 34px;
		transform: translateX(-50%);
		width: min(520px, calc(100vw - 28px));
	}

	#manual-controls .panel {
		grid-template-columns: 1fr;
		gap: 8px;
		align-items: start;
		padding: 10px;
	}

	#manual-controls .panel > .control-section {
		grid-column: 1 !important;
	}

	#manual-controls .control-section:first-child,
	#manual-controls .control-section:last-child {
		display: grid;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		width: 100%;
		gap: 8px;
	}

	#manual-controls .control-section:first-child .control-grid,
	#manual-controls .control-section:last-child .control-row {
		display: contents;
	}

	.control-btn {
		width: 100%;
		height: 40px;
		padding: 8px;
	}

	.control-btn-wide {
		padding: 10px;
		font-size: 12px;
		min-height: 40px;
	}

	.control-btn svg,
	.control-btn-wide svg {
		width: 14px;
		height: 14px;
	}

	#location-list,
	.service-alerts-panel {
		top: 62px;
		left: 14px;
		right: 14px;
		width: auto;
	}

	#location-list {
		max-height: calc(100vh - 170px);
	}

	.service-alerts-panel {
		max-height: calc(100vh - 170px);
	}

	.toggle-panel-btn {
		top: 14px;
		left: 14px;
		right: auto;
		padding: 10px;
	}

	.world-view-crumb {
		left: auto;
		right: 14px;
		transform: none;
		bottom: 126px;
		padding: 6px 12px;
		font-size: 12px;
	}

	.info-footer {
		left: 14px;
		bottom: 10px;
		max-width: calc(100vw - 28px);
		font-size: 12px;
	}

	.tooltip {
		max-width: min(300px, calc(100vw - 24px));
		font-size: 14px;
	}

	.tooltip.tooltip-compact-mobile {
		min-width: 0;
		width: min(196px, calc(100vw - 24px));
		max-width: min(196px, calc(100vw - 24px));
		max-height: 32vh;
		padding: 10px;
		font-size: 13px;
		border-radius: 8px;
	}

	.tooltip.tooltip-compact-mobile h3 {
		font-size: 14px;
		margin-bottom: 2px;
	}

	.tooltip.tooltip-compact-mobile p {
		font-size: 12px;
		margin-bottom: 6px;
	}

	.tooltip.tooltip-compact-mobile .tooltip-divider {
		margin: 6px 0;
	}

	.tooltip.tooltip-compact-mobile .tooltip-metric {
		font-size: 12px;
		margin-bottom: 3px;
	}

	.tooltip.tooltip-compact-mobile .tooltip-alerts {
		max-height: 84px;
	}
}

@media (max-width: 520px) {
	#controls {
		width: min(252px, calc(100vw - 24px));
		left: 12px;
		top: 50px;
	}

	#manual-controls {
		width: calc(100vw - 24px);
		bottom: 28px;
	}

	#location-list,
	.service-alerts-panel {
		left: 12px;
		right: 12px;
		top: 56px;
	}

	.toggle-panel-btn {
		top: 12px;
		left: 12px;
		right: auto;
	}

	.world-view-crumb {
		right: 12px;
		bottom: 124px;
	}

	.alert-meta {
		flex-direction: column;
		align-items: flex-start;
		gap: 6px;
	}

	#controls h1 {
		font-size: 16px;
		padding-right: 0;
	}

	#controls .subtitle,
	#controls p,
	.status-text,
	.last-update {
		font-size: 12px !important;
	}

	#controls .toggle-btn,
	#controls .list-btn {
		font-size: 13px;
	}

	#controls .panel {
		padding: 12px;
	}

	#controls .list-btn {
		margin-top: 12px;
	}

	.stat-label {
		font-size: 12px;
	}

	.stat-value {
		font-size: 16px;
	}

	.region-status-counts {
		font-size: 11px;
		gap: 5px 12px;
	}

	#manual-controls .panel {
		padding: 8px;
	}

	.control-btn {
		width: 100%;
		height: 38px;
		padding: 6px;
	}

	.control-btn-wide {
		padding: 8px;
		font-size: 11px;
		gap: 4px;
		min-height: 38px;
	}

	.control-btn svg,
	.control-btn-wide svg {
		width: 12px;
		height: 12px;
	}

	.tooltip.tooltip-compact-mobile {
		width: min(172px, calc(100vw - 24px));
		max-width: min(172px, calc(100vw - 24px));
		max-height: 28vh;
		font-size: 12px;
	}
}
