Enhanced mobile UX: touch-friendly, responsive, safe areas

This commit is contained in:
Quanysh 2026-09-03 12:20:31 +00:00
parent e83c3117a5
commit 6ac1fad853

244
style.css
View File

@ -1154,30 +1154,73 @@ body {
} }
@media (max-width: 600px) { @media (max-width: 600px) {
.app {
padding: 0 16px;
}
.header { .header {
flex-direction: column; flex-direction: column;
gap: 20px; gap: 16px;
padding: 20px 0;
}
.header-controls {
width: 100%;
justify-content: space-between;
order: 2;
} }
.nav { .nav {
width: 100%; gap: 8px;
justify-content: center; }
.nav-btn {
padding: 10px 14px;
} }
.nav-text { .nav-text {
display: none; display: none;
} }
.nav-icon {
font-size: 22px;
}
.language-select {
padding: 10px 14px;
font-size: 13px;
}
.hero {
padding: 40px 0 30px;
}
.hero-title {
font-size: 28px;
letter-spacing: 0;
}
.hero-subtitle {
font-size: 16px;
padding: 0 10px;
}
.section-title {
font-size: 18px;
}
.mood-grid { .mood-grid {
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(4, 1fr);
gap: 12px;
} }
.mood-btn { .mood-btn {
padding: 20px 12px; padding: 18px 10px;
gap: 10px;
} }
.mood-emoji { .mood-emoji {
font-size: 32px; font-size: 28px;
} }
.mood-label { .mood-label {
@ -1185,42 +1228,225 @@ body {
} }
.filters-section { .filters-section {
padding: 24px 20px; padding: 20px 16px;
}
.filters-header {
flex-direction: column;
align-items: flex-start;
gap: 12px;
} }
.filters-grid { .filters-grid {
grid-template-columns: 1fr; grid-template-columns: 1fr;
gap: 14px;
}
.filter-select {
padding: 14px 16px;
font-size: 15px;
}
.action-buttons {
gap: 12px;
padding: 0 10px;
}
.find-btn,
.random-btn {
padding: 16px 24px;
font-size: 16px;
}
.movie-card {
grid-template-columns: 1fr;
border-radius: 16px;
}
.movie-poster {
max-height: 350px;
}
.movie-info {
padding: 24px 20px;
gap: 14px;
}
.movie-title {
font-size: 24px;
letter-spacing: 1px;
}
.movie-original {
font-size: 15px;
}
.movie-meta {
font-size: 14px;
}
.movie-rating {
font-size: 18px;
}
.movie-description {
font-size: 15px;
line-height: 1.7;
} }
.movie-actions { .movie-actions {
flex-direction: column; flex-direction: column;
gap: 12px;
} }
.favorite-btn, .favorite-btn,
.another-btn { .another-btn {
width: 100%; width: 100%;
justify-content: center; justify-content: center;
padding: 14px 20px;
font-size: 14px;
} }
.movies-grid { .movies-grid {
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
gap: 16px;
}
.movie-item-poster {
aspect-ratio: 2/3;
}
.movie-item-info {
padding: 12px;
}
.movie-item-title {
font-size: 14px;
}
.page-header {
flex-wrap: wrap;
gap: 16px;
} }
.page-header h1 { .page-header h1 {
font-size: 28px; font-size: 24px;
width: 100%;
}
.back-btn {
padding: 10px 16px;
}
.watch-btn {
padding: 14px 24px;
font-size: 15px;
} }
} }
@media (max-width: 400px) { @media (max-width: 400px) {
.app {
padding: 0 12px;
}
.logo {
font-size: 24px;
letter-spacing: 2px;
}
.mood-grid { .mood-grid {
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
} }
.mood-btn {
padding: 16px 8px;
}
.mood-emoji {
font-size: 24px;
}
.mood-label {
font-size: 10px;
}
.movies-grid { .movies-grid {
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
.logo { .movie-item {
font-size: 28px; max-width: 280px;
margin: 0 auto;
}
.hero-title {
font-size: 24px;
}
.hero-subtitle {
font-size: 14px;
}
.find-btn,
.random-btn {
padding: 14px 18px;
font-size: 14px;
letter-spacing: 0.5px;
}
.movie-title {
font-size: 20px;
}
.movie-original {
font-size: 14px;
}
.movie-info {
padding: 20px 16px;
}
.watch-btn {
padding: 12px 18px;
font-size: 13px;
}
}
/* Touch-friendly improvements */
@media (hover: none) and (pointer: coarse) {
.mood-btn,
.filter-select,
.find-btn,
.random-btn,
.nav-btn,
.movie-item {
min-height: 44px;
}
.mood-btn {
min-height: 80px;
}
}
/* Prevent text size adjustment on orientation change */
html {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
/* Smooth scrolling */
html {
scroll-behavior: smooth;
}
/* Safe area insets for notched devices */
@supports (padding: max(0px)) {
.app {
padding-left: max(24px, env(safe-area-inset-left));
padding-right: max(24px, env(safe-area-inset-right));
}
.header {
padding-top: max(28px, env(safe-area-inset-top));
} }
} }