/**
 * FashionPoint Booking App - Responsive Styles
 *
 * Mobile-first responsive design for booking flow.
 *
 * @since 2.5.0
 */

/* ==========================================================================
	Large Tablets and Desktop (768px+)
	========================================================================== */

@media (min-width: 768px) {
	.fashionpoint-booking-app {
		max-width: 100%;
		width: 100%;
		height: 100vh;
		max-height: 100vh;
		margin: 0 auto;
		border-radius: 0;
		box-shadow: none;
	}

	.header-content {
		padding: 1.5rem 2rem;
	}

	.step-content {
		padding: 0;
	}

	.booking-app-footer {
		padding: 1.5rem 2rem;
	}

	.locations-grid {
		grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
	}

	.categories-track {
		gap: 1.5rem;
	}

	.category-card {
		width: 220px;
	}

	.services-grid,
	.packages-grid {
		grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	}

	.modal-content {
		max-width: 500px;
	}
}

/* ==========================================================================
	Desktop (1024px+)
	========================================================================== */

@media (min-width: 1024px) {
	.fashionpoint-booking-app {
		max-width: 100%;
		width: 100%;
	}

	.locations-grid {
		grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	}

	.category-card {
		width: 240px;
	}

	.services-grid,
	.packages-grid {
		grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
	}
}

/* ==========================================================================
	Small Mobile (320px-)
	========================================================================== */

@media (max-width: 320px) {
	.fashionpoint-booking-app {
		font-size: 14px;
	}

	.header-content {
		padding: 0.5rem;
		gap: 0.5rem;
	}

	.step-title {
		font-size: 1rem;
	}

	.step-indicator {
		font-size: 0.75rem;
	}

	.step-content {
		padding: 0;
	}

	.step-intro h2 {
		font-size: 1.125rem;
	}

	.booking-app-footer {
		padding: 0.75rem;
	}

	.next-button {
		padding: 0.5rem 0.75rem;
		font-size: 0.8rem;
	}

	.location-card {
		flex-direction: column;
		text-align: center;
		gap: 0.75rem;
	}

	.location-image {
		width: 100%;
		height: 120px;
	}

	.location-select {
		position: static;
		margin-top: 0.5rem;
	}

	.category-card {
		width: 160px;
		padding: 0.75rem;
	}

	.category-icon {
		width: 48px;
		height: 48px;
	}

	.category-name {
		font-size: 0.875rem;
	}

	.service-card,
	.package-card {
		flex-direction: column;
		text-align: center;
		gap: 0.75rem;
	}

	.service-image,
	.package-image {
		width: 100%;
		height: 120px;
	}

	.service-select,
	.package-select {
		position: static;
		margin-top: 0.5rem;
	}

	.summary-content {
		flex-direction: column;
		text-align: center;
		gap: 0.75rem;
	}

	.total-price {
		text-align: center;
	}
}

/* ==========================================================================
	Medium Mobile (375px-480px)
	========================================================================== */

@media (min-width: 375px) and (max-width: 480px) {
	.category-card {
		width: 180px;
	}

	.service-card,
	.package-card {
		gap: 0.75rem;
	}

	.service-image,
	.package-image {
		width: 70px;
		height: 70px;
	}
}

/* ==========================================================================
	Large Mobile (481px-767px)
	========================================================================== */

@media (min-width: 481px) and (max-width: 767px) {
	.fashionpoint-booking-app {
		width: 100%;
		height: 100%;
		border-radius: 0;
		margin: 0 auto;
	}

	.categories-track {
		justify-content: flex-start;
	}

	.category-card {
		width: 200px;
	}

	.services-grid,
	.packages-grid {
		grid-template-columns: 1fr;
	}
}

/* ==========================================================================
	Landscape Orientation
	========================================================================== */

@media (orientation: landscape) and (max-height: 600px) {
	.fashionpoint-booking-app {
		height: 100vh;
		max-height: none;
		margin: 0;
		border-radius: 0;
	}

	.header-content {
		padding: 0.75rem 1rem;
	}

	.step-intro {
		margin-bottom: 1rem;
	}

	.step-intro h2 {
		font-size: 1.25rem;
	}

	.step-content {
		padding: 0;
	}

	.booking-app-footer {
		padding: 0.75rem 1rem;
	}

	.progress-container {
		padding: 0 1rem 0.75rem;
	}

	.location-card {
		padding: 0.75rem;
	}

	.location-image {
		width: 60px;
		height: 60px;
	}

	.category-card {
		width: 160px;
		padding: 0.75rem;
	}

	.category-icon {
		width: 48px;
		height: 48px;
		margin-bottom: 0.75rem;
	}

	.service-card,
	.package-card {
		padding: 0.75rem;
	}

	.service-image,
	.package-image {
		width: 60px;
		height: 60px;
	}
}

/* ==========================================================================
	High DPI Displays
	========================================================================== */

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
	.loading-spinner {
		border-width: 2px;
	}

	.checkbox label {
		border-width: 1px;
	}

	.radio-button label {
		border-width: 1px;
	}
}

/* ==========================================================================
	Reduced Motion
	========================================================================== */

@media (prefers-reduced-motion: reduce) {
	.fashionpoint-booking-app,
	.fashionpoint-booking-app *,
	.fashionpoint-booking-app *::before,
	.fashionpoint-booking-app *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	.loading-spinner {
		animation: none;
	}

	.progress-fill {
		transition: none;
	}
}

/* ==========================================================================
	Dark Mode Support
	========================================================================== */

@media (prefers-color-scheme: dark) {
	.fashionpoint-booking-app:not(.theme-premium-black) {
		--fp-background: #1a1a1a;
		--fp-surface: #2d2d2d;
		--fp-border: #404040;
		--fp-text: #ffffff;
		--fp-text-light: #b3b3b3;
		--fp-text-lighter: #808080;
		--fp-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
		--fp-shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.5);
	}
}

/* ==========================================================================
	Print Styles
	========================================================================== */

@media print {
	.fashionpoint-booking-app {
		max-width: none;
		height: auto;
		box-shadow: none;
		border: 1px solid #000;
	}

	.booking-app-header,
	.booking-app-footer {
		display: none;
	}

	.step-content {
		padding: 1rem;
	}

	.location-card,
	.category-card,
	.service-card,
	.package-card {
		break-inside: avoid;
		border: 1px solid #000;
		margin-bottom: 1rem;
	}

	.modal-overlay {
		position: static;
		background: none;
		box-shadow: none;
	}
}

/* ==========================================================================
	Accessibility Improvements
	========================================================================== */

@media (prefers-contrast: high) {
	.fashionpoint-booking-app {
		--fp-border: #000000;
		--fp-text-light: #000000;
		--fp-text-lighter: #333333;
	}

	.location-card,
	.category-card,
	.service-card,
	.package-card {
		border-width: 3px;
	}

	.checkbox label,
	.radio-button label {
		border-width: 3px;
	}
}

/* ==========================================================================
	Focus Styles for Keyboard Navigation
	========================================================================== */

.fashionpoint-booking-app *:focus {
	outline: 2px solid var(--fp-primary);
	outline-offset: 2px;
}

.fashionpoint-booking-app *:focus:not(:focus-visible) {
	outline: none;
}

.fashionpoint-booking-app *:focus-visible {
	outline: 2px solid var(--fp-primary);
	outline-offset: 2px;
}

/* ==========================================================================
	Container Queries (Future Enhancement)
	========================================================================== */

@container (min-width: 400px) {
	.categories-track {
		gap: 1.25rem;
	}

	.category-card {
		width: 190px;
	}
}

@container (min-width: 500px) {
	.services-grid,
	.packages-grid {
		grid-template-columns: 1fr 1fr;
	}
}
