diff --git a/apps/frontend/app/globals.css b/apps/frontend/app/globals.css index baded6f..5e0b134 100644 --- a/apps/frontend/app/globals.css +++ b/apps/frontend/app/globals.css @@ -156,4 +156,247 @@ .stagger-5 { animation-delay: 200ms; } .stagger-6 { animation-delay: 250ms; } .stagger-7 { animation-delay: 300ms; } -.stagger-8 { animation-delay: 350ms; } \ No newline at end of file +.stagger-8 { animation-delay: 350ms; } + +/* ========================== + Responsive Utilities + ========================== */ + +/* Large Tablets */ +@media (max-width: 1024px) { + html { + font-size: 15px; + } + + .container { + width: 100%; + padding-inline: 1.5rem; + } + + .responsive-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .responsive-flex { + flex-direction: column; + gap: 1rem; + } +} + +/* Tablets */ +@media (max-width: 768px) { + html { + font-size: 14px; + } + + .container { + padding-inline: 1rem; + } + + h1 { + font-size: 2rem; + line-height: 1.2; + } + + h2 { + font-size: 1.75rem; + } + + h3 { + font-size: 1.5rem; + } + + p { + line-height: 1.7; + } + + .responsive-grid { + grid-template-columns: 1fr; + } + + .responsive-row { + flex-direction: column; + align-items: stretch; + } + + .responsive-center { + text-align: center; + } + + .responsive-hidden-tablet { + display: none; + } + + button { + min-height: 44px; + } + + input, + textarea, + select { + width: 100%; + font-size: 16px; + } + + table { + display: block; + overflow-x: auto; + white-space: nowrap; + } +} + +/* Mobile */ +@media (max-width: 640px) { + html { + font-size: 14px; + } + + body { + overflow-x: hidden; + } + + .container { + padding-inline: 0.75rem; + } + + h1 { + font-size: 1.75rem; + } + + h2 { + font-size: 1.5rem; + } + + h3 { + font-size: 1.25rem; + } + + .mobile-stack { + display: flex; + flex-direction: column; + gap: 1rem; + } + + .mobile-full { + width: 100%; + } + + .mobile-center { + text-align: center; + } + + .mobile-hidden { + display: none; + } + + .card-responsive { + padding: 1rem; + border-radius: var(--radius-lg); + } + + .button-responsive { + width: 100%; + justify-content: center; + } + + img, + video, + canvas, + svg { + max-width: 100%; + height: auto; + } +} + +/* Small Phones */ +@media (max-width: 480px) { + html { + font-size: 13px; + } + + .container { + padding-inline: 0.5rem; + } + + h1 { + font-size: 1.5rem; + } + + h2 { + font-size: 1.3rem; + } + + h3 { + font-size: 1.1rem; + } + + .card-responsive { + padding: 0.75rem; + } + + .text-responsive { + font-size: 0.875rem; + } + + .gap-responsive { + gap: 0.75rem; + } +} + +/* Ultra-wide Screens */ +@media (min-width: 1536px) { + .container { + max-width: 1440px; + margin-inline: auto; + } +} + +/* Images */ +img { + max-width: 100%; + height: auto; +} + +/* Responsive iframe */ +iframe { + max-width: 100%; +} + +/* Smooth scrolling */ +html { + scroll-behavior: smooth; +} + +/* Prevent horizontal scrolling */ +body { + overflow-x: hidden; +} + +/* Better touch targets */ +button, +a, +input, +textarea, +select { + touch-action: manipulation; +} + +/* Responsive utility classes */ +.hide-mobile { + display: block; +} + +.show-mobile { + display: none; +} + +@media (max-width: 640px) { + .hide-mobile { + display: none; + } + + .show-mobile { + display: block; + } +} +