/* telli.hub — produktspezifisches CSS (Kacheln, Suche, Uhr).
   Design-Grundlage kommt aus /static/shared/css/{tokens,base}.css. */

.hub-header {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	margin-bottom: var(--space-2);
}

.hub-header-top {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--space-4);
}

.hub-clock {
	color: var(--text-dim);
	font-size: var(--text-sm);
}

.search-panel {
	padding: var(--space-3) var(--space-4);
}

.search-panel .input {
	width: 100%;
}

/* ---------- tile grid ---------- */

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

.tile {
	position: relative;
	overflow: hidden;
	display: flex;
	align-items: center;
	gap: var(--space-4);
	padding: var(--space-4);
	text-decoration: none;
	color: var(--text);
	transition: transform 0.25s var(--ease-settle), border-color 0.25s ease, box-shadow 0.25s ease;
}

.tile:hover,
.tile:focus-visible {
	transform: translateY(-3px);
	border-color: var(--glass-border-active);
	box-shadow: 0 20px 50px -20px rgba(217, 139, 95, 0.35);
	outline: none;
}

.tile::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(115deg, transparent 30%, rgba(255, 255, 255, 0.16) 48%, transparent 66%);
	background-size: 220% 100%;
	background-position: 150% 0;
	transition: background-position 0.6s var(--ease-settle);
	pointer-events: none;
}

.tile:hover::after,
.tile:focus-visible::after {
	background-position: -50% 0;
}

.tile-icon {
	flex-shrink: 0;
	display: inline-flex;
	color: var(--accent-strong);
}

.tile-body {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.tile-name {
	font-weight: 600;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.tile-desc {
	color: var(--text-dim);
	font-size: var(--text-xs);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.tile-status {
	margin-left: auto;
	flex-shrink: 0;
}

.tile-status-dot {
	display: inline-block;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--text-dim);
}

.tile-status-dot.is-online {
	background: #6fbf73;
	box-shadow: 0 0 8px 1px rgba(111, 191, 115, 0.6);
}

.tile-status-dot.is-offline {
	background: var(--danger);
	box-shadow: 0 0 8px 1px rgba(214, 72, 58, 0.5);
}

.tile.is-hidden-by-search {
	display: none;
}

@media (prefers-reduced-motion: reduce) {
	.tile {
		transition: none !important;
	}
	.tile::after {
		transition: none !important;
	}
}
