/* ─── Meelo Frontend Styles ──────────────────────────────────────
   Minimal CSS — die meisten Styles sind als inline-styles in der
   React-App, weil das Mockup so aufgebaut ist und es portabel hält.
   Hier nur: Reset, Loader, Animationen, Safe-Area, Scroll-Verhalten.
─────────────────────────────────────────────────────────────────── */

/* Container Reset */
.meelo-root {
	box-sizing: border-box;
	max-width: 480px;
	margin: 0 auto;
	min-height: 100vh;
	min-height: 100dvh;
	background: #f6f4ef;
	color: #17140f;
	-webkit-font-smoothing: antialiased;
	font-family: 'Inter', 'Helvetica Neue', sans-serif;
	position: relative;
	overflow-x: hidden;
}
.meelo-root *,
.meelo-root *::before,
.meelo-root *::after {
	box-sizing: border-box;
}
.meelo-root button {
	font: inherit;
	cursor: pointer;
}
.meelo-root input,
.meelo-root textarea,
.meelo-root select {
	font: inherit;
	color: inherit;
	-webkit-appearance: none;
	appearance: none;
}
.meelo-root img {
	display: block;
	max-width: 100%;
}
.meelo-root a {
	color: inherit;
	text-decoration: none;
}

/* Hide scrollbars on horizontal scroll containers */
.meelo-root .meelo-scroll-x {
	overflow-x: auto;
	scrollbar-width: none;
}
.meelo-root .meelo-scroll-x::-webkit-scrollbar {
	display: none;
}

/* iOS PWA Safe-Area Padding */
.meelo-root {
	padding-top: env(safe-area-inset-top, 0);
	padding-bottom: env(safe-area-inset-bottom, 0);
}

/* ── Loader (initial app load) ─────────────────────────────── */
.meelo-loader {
	display: flex;
	gap: 8px;
	justify-content: center;
	align-items: center;
	height: 100vh;
	height: 100dvh;
}
.meelo-loader-dot {
	width: 8px;
	height: 8px;
	border-radius: 999px;
	background: #17140f;
	animation: meelo-pulse 1.2s ease-in-out infinite;
}
.meelo-loader-dot:nth-child(2) { animation-delay: 0.15s; }
.meelo-loader-dot:nth-child(3) { animation-delay: 0.3s; }
@keyframes meelo-pulse {
	0%, 80%, 100% { opacity: 0.3; transform: scale(0.8); }
	40% { opacity: 1; transform: scale(1); }
}

/* ── Skeleton Shimmer ──────────────────────────────────────── */
.meelo-skeleton {
	background: linear-gradient(
		90deg,
		rgba(23, 20, 15, 0.04) 25%,
		rgba(23, 20, 15, 0.08) 50%,
		rgba(23, 20, 15, 0.04) 75%
	);
	background-size: 200% 100%;
	animation: meelo-shimmer 1.4s ease-in-out infinite;
	border-radius: 8px;
}
@keyframes meelo-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* ── Page Transitions ──────────────────────────────────────── */
.meelo-page {
	animation: meelo-page-in 0.32s cubic-bezier(0.32, 0.72, 0, 1);
}
.meelo-page-back {
	animation: meelo-page-back-in 0.32s cubic-bezier(0.32, 0.72, 0, 1);
}
@keyframes meelo-page-in {
	from { opacity: 0; transform: translateY(8px); }
	to   { opacity: 1; transform: translateY(0); }
}
@keyframes meelo-page-back-in {
	from { opacity: 0; transform: translateX(-12px); }
	to   { opacity: 1; transform: translateX(0); }
}

/* ── Karma Pop-Up ──────────────────────────────────────────── */
.meelo-karma-pop {
	position: fixed;
	left: 50%;
	bottom: 110px;
	transform: translateX(-50%);
	z-index: 200;
	background: #17140f;
	color: #f6f4ef;
	padding: 10px 18px;
	border-radius: 999px;
	font-family: 'Inter Tight', sans-serif;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: -0.015em;
	display: flex;
	align-items: center;
	gap: 8px;
	box-shadow: 0 12px 32px rgba(23, 20, 15, 0.2);
	animation: meelo-karma 2.4s cubic-bezier(0.32, 0.72, 0, 1) forwards;
	pointer-events: none;
}
@keyframes meelo-karma {
	0%   { opacity: 0; transform: translateX(-50%) translateY(20px) scale(0.8); }
	15%  { opacity: 1; transform: translateX(-50%) translateY(0) scale(1.05); }
	25%  { transform: translateX(-50%) translateY(0) scale(1); }
	75%  { opacity: 1; transform: translateX(-50%) translateY(0); }
	100% { opacity: 0; transform: translateX(-50%) translateY(-12px); }
}

/* ── Toast ─────────────────────────────────────────────────── */
.meelo-toast {
	position: fixed;
	left: 50%;
	top: 24px;
	transform: translateX(-50%);
	z-index: 250;
	background: #17140f;
	color: #f6f4ef;
	padding: 10px 16px;
	border-radius: 12px;
	font-family: 'Inter', sans-serif;
	font-size: 13px;
	font-weight: 500;
	box-shadow: 0 8px 24px rgba(23, 20, 15, 0.25);
	animation: meelo-toast 3.2s cubic-bezier(0.32, 0.72, 0, 1) forwards;
	max-width: 90%;
}
.meelo-toast-error { background: #dc2626; }
.meelo-toast-success { background: #15803d; }
@keyframes meelo-toast {
	0%   { opacity: 0; transform: translateX(-50%) translateY(-20px); }
	10%  { opacity: 1; transform: translateX(-50%) translateY(0); }
	85%  { opacity: 1; transform: translateX(-50%) translateY(0); }
	100% { opacity: 0; transform: translateX(-50%) translateY(-12px); }
}

/* ── Confetti ──────────────────────────────────────────────── */
.meelo-confetti-burst {
	position: fixed;
	pointer-events: none;
	z-index: 300;
	width: 0;
	height: 0;
}
.meelo-confetti-piece {
	position: absolute;
	width: 8px;
	height: 8px;
	border-radius: 1px;
	transform-origin: center;
	animation: meelo-confetti 1.4s ease-out forwards;
}
@keyframes meelo-confetti {
	0%   { opacity: 1; transform: translate(0, 0) rotate(0); }
	100% { opacity: 0; transform: translate(var(--dx), var(--dy)) rotate(var(--rot)); }
}

/* ── Heart-Bump (Going Toggle) ─────────────────────────────── */
.meelo-bump {
	animation: meelo-bump 0.36s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes meelo-bump {
	0%   { transform: scale(1); }
	40%  { transform: scale(1.18); }
	100% { transform: scale(1); }
}

/* ── Modal Backdrop ────────────────────────────────────────── */
.meelo-modal-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(23, 20, 15, 0.55);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	z-index: 150;
	animation: meelo-fade-in 0.2s ease-out;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	padding: 0;
}
.meelo-modal-sheet {
	background: #f6f4ef;
	border-radius: 22px 22px 0 0;
	max-width: 480px;
	width: 100%;
	max-height: 90dvh;
	overflow-y: auto;
	animation: meelo-sheet-up 0.32s cubic-bezier(0.32, 0.72, 0, 1);
	padding-bottom: env(safe-area-inset-bottom, 12px);
}
@keyframes meelo-fade-in {
	from { opacity: 0; }
	to   { opacity: 1; }
}
@keyframes meelo-sheet-up {
	from { transform: translateY(100%); }
	to   { transform: translateY(0); }
}

/* ── Vote button hover ─────────────────────────────────────── */
.meelo-vote {
	transition: transform 0.15s ease, color 0.15s ease;
}
.meelo-vote:active {
	transform: scale(0.92);
}

/* ── Tap highlight off ─────────────────────────────────────── */
.meelo-root * {
	-webkit-tap-highlight-color: transparent;
}

/* ── Focus rings (a11y) ────────────────────────────────────── */
.meelo-root button:focus-visible,
.meelo-root input:focus-visible,
.meelo-root textarea:focus-visible {
	outline: 2px solid #17140f;
	outline-offset: 2px;
}
