/* ================================================ */ /* MOBILE RESPONSIVE STYLES FOR INFRAVISION AI */ /* ================================================ */ /* Mobile Breakpoints: - Small (< 480px): Phones - Medium (480-768px): Tablets (portrait) - Large (768-1024px): Tablets (landscape) - XL (> 1024px): Desktop */ /* ================================================ */ /* SMALL DEVICES (< 480px) - PHONES */ /* ================================================ */ @media (max-width: 479px) { /* Base Adjustments */ html { font-size: 14px; } body { overflow-x: hidden; } /* App Container */ .app-container { padding: 0; } /* Hero Section */ .hero-section { min-height: auto; padding: 1rem 0; background-size: 20px 20px, 20px 20px, 15px 15px, 15px 15px; display: flex; align-items: stretch; justify-content: center; } .hero-overlay { display: none; } .hero-content { grid-template-columns: 1fr; gap: 1.5rem; padding: 1rem; max-width: 100%; width: 100%; overflow: hidden; } .hero-title { font-size: 2rem; gap: 0.5rem; margin-bottom: 1rem; text-shadow: 0 2px 10px rgba(59, 130, 246, 0.3); } .hero-subtitle { font-size: 0.95rem; margin-bottom: 1rem; line-height: 1.4; } .hero-features { gap: 1rem; } .hero-feature { display: flex; flex-direction: row; align-items: flex-start; gap: 0.75rem; padding: 1rem; overflow: visible; } .hero-feature h3 { font-size: 1rem; margin: 0 0 0.25rem 0; word-wrap: break-word; word-break: break-word; line-height: 1.2; } .hero-feature p { font-size: 0.85rem; margin: 0; word-wrap: break-word; word-break: break-word; line-height: 1.3; } .feature-icon { min-width: 32px; width: 32px; height: 32px; flex-shrink: 0; } .feature-icon svg { width: 32px; height: 32px; } .hero-visual { display: none; } /* Status Bar */ .status-bar { display: flex; flex-direction: column; gap: 0.75rem; padding: 0.75rem; width: 100%; overflow: visible; } .status-item { font-size: 0.75rem; padding: 0.75rem; word-wrap: break-word; word-break: break-word; white-space: normal; overflow: visible; } /* Content Area */ .content-area { padding: 1rem; } .content-area h1, .content-area h2 { font-size: 1.5rem; margin-bottom: 1rem; } .content-area h3 { font-size: 1.1rem; margin-bottom: 0.75rem; } /* Tab Navigation */ .tab-navigation { padding: 0.5rem; gap: 0.5rem; overflow-x: auto; -webkit-overflow-scrolling: touch; } .tab-button { padding: 0.5rem 1rem; font-size: 0.85rem; white-space: nowrap; flex-shrink: 0; } /* Metric Cards */ .metric-card { padding: 1rem; gap: 0.75rem; } .metric-icon { width: 40px; height: 40px; min-width: 40px; } .metric-icon svg { width: 18px; height: 18px; } .metric-content { gap: 0.25rem; } .metric-title { font-size: 0.8rem; } .metric-value { font-size: 0.95rem; } .metric-subtitle { font-size: 0.75rem; } /* Metric Grid */ .metrics-grid { grid-template-columns: 1fr; gap: 0.75rem; } /* Buttons */ .btn, .btn-primary, .btn-secondary { padding: 0.65rem 1rem; font-size: 0.9rem; width: 100%; } .btn-group { flex-direction: column; } .btn-group > button { width: 100%; } /* Forms */ .form-group { margin-bottom: 1rem; } label { font-size: 0.85rem; margin-bottom: 0.3rem; } input, select, textarea { padding: 0.65rem; font-size: 0.9rem; } /* Image Preview */ .image-preview, .preview-container { max-width: 100%; height: auto; max-height: 300px; } /* Upload Area */ .upload-area { padding: 1.5rem 1rem; gap: 1rem; } .upload-icon { font-size: 36px; } .upload-text-main { font-size: 0.95rem; } .upload-text-sub { font-size: 0.75rem; } /* Alert Messages */ .alert { padding: 0.75rem; font-size: 0.85rem; } /* Badge */ .badge { padding: 0.3rem 0.6rem; font-size: 0.75rem; } /* Image Grid */ .image-grid { grid-template-columns: 1fr; gap: 0.75rem; } .image-card { max-height: 300px; } /* Settings Panel */ .settings-panel { padding: 1rem; } .setting-item { margin-bottom: 1rem; } /* 3D Canvas */ .canvas-container { height: 300px; border-radius: 8px; margin: 1rem 0; } /* Model Info */ .model-info-grid { grid-template-columns: 1fr; gap: 0.75rem; padding: 0.75rem; margin-top: 1rem; } /* Dropdowns and Menus */ .dropdown-menu { position: fixed; left: 0; right: 0; max-height: 50vh; border-radius: 12px 12px 0 0; } /* Modals */ .modal { padding: 1rem; max-width: 95vw; } .modal-header { font-size: 1.25rem; } .modal-body { font-size: 0.9rem; } /* Charts and Data Viz */ .chart-container { height: 250px; } svg { max-width: 100%; height: auto; } /* Loader */ .loader { width: 30px; height: 30px; } /* Animations - Reduce on mobile for performance */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } } /* ================================================ */ /* MEDIUM DEVICES (480px - 768px) - TABLETS */ /* ================================================ */ @media (min-width: 480px) and (max-width: 767px) { /* Base Adjustments */ html { font-size: 15px; } /* App Container */ .app-container { padding: 0; } /* Hero Section */ .hero-section { min-height: auto; padding: 2rem 0; } .hero-content { grid-template-columns: 1fr; gap: 2rem; padding: 1.5rem; } .hero-title { font-size: 2.5rem; } .hero-subtitle { font-size: 1.1rem; margin-bottom: 1.5rem; } .hero-visual { display: none; } .floating-elements { display: none; } /* Content Area */ .content-area { padding: 1.5rem; } .content-area h1, .content-area h2 { font-size: 1.75rem; } .content-area h3 { font-size: 1.2rem; } /* Tab Navigation */ .tab-navigation { padding: 0.75rem; gap: 0.5rem; overflow-x: auto; -webkit-overflow-scrolling: touch; } .tab-button { padding: 0.6rem 1.2rem; font-size: 0.9rem; white-space: nowrap; } /* Metric Cards */ .metric-card { padding: 1.25rem; } .metrics-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; } /* Forms */ input, select, textarea { font-size: 1rem; padding: 0.75rem; } /* Image Preview */ .image-preview, .preview-container { max-height: 400px; } /* Image Grid */ .image-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; } /* 3D Canvas */ .canvas-container { height: 400px; } /* Model Info */ .model-info-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; } /* Buttons */ .btn, .btn-primary, .btn-secondary { padding: 0.75rem 1.5rem; font-size: 0.95rem; } } /* ================================================ */ /* LARGE DEVICES (768px - 1024px) - LANDSCAPE TAB */ /* ================================================ */ @media (min-width: 768px) and (max-width: 1023px) { /* Hero Content */ .hero-content { grid-template-columns: 1fr 1fr; gap: 2rem; padding: 2rem; } .hero-title { font-size: 3rem; } .hero-subtitle { font-size: 1.2rem; } .floating-elements { height: 300px; } /* Content Area */ .content-area { padding: 2rem; } /* Metric Cards - 3 columns on tablet landscape */ .metrics-grid { grid-template-columns: repeat(3, 1fr); gap: 1.5rem; } /* Image Grid */ .image-grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; } /* 3D Canvas */ .canvas-container { height: 500px; } .model-info-grid { grid-template-columns: repeat(3, 1fr); gap: 1.25rem; } /* Buttons */ .btn, .btn-primary, .btn-secondary { padding: 0.75rem 2rem; font-size: 0.95rem; } } /* ================================================ */ /* XL DEVICES (1024px+) - DESKTOP */ /* ================================================ */ @media (min-width: 1024px) { /* Desktop styles - mostly keep defaults */ .hero-content { grid-template-columns: 1fr 1fr; gap: 4rem; } .hero-title { font-size: 4.5rem; } .metrics-grid { grid-template-columns: repeat(4, 1fr); gap: 2rem; } .image-grid { grid-template-columns: repeat(3, 1fr); gap: 2rem; } .canvas-container { height: 700px; } .model-info-grid { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } } /* ================================================ */ /* TOUCH DEVICE OPTIMIZATIONS */ /* ================================================ */ @media (hover: none) and (pointer: coarse) { /* Increase touch target sizes */ button, .btn, .tab-button, input[type="button"], input[type="submit"] { min-height: 44px; min-width: 44px; } /* Reduce hover effects on touch devices */ .metric-card:hover, .hero-feature:hover, .floating-card:hover { transform: none; } /* Better spacing for touch */ .tab-navigation { gap: 0.75rem; } /* Optimize scrolling */ .content-area { -webkit-touch-callout: none; } } /* ================================================ */ /* LANDSCAPE MODE OPTIMIZATIONS */ /* ================================================ */ @media (orientation: landscape) and (max-height: 600px) { .hero-section { min-height: auto; padding: 1rem 0; } .hero-content { gap: 1rem; padding: 1rem; } .hero-title { font-size: 1.75rem; margin-bottom: 0.5rem; } .hero-subtitle { font-size: 0.9rem; margin-bottom: 0.75rem; } .hero-features { display: none; } .floating-elements { display: none; } .content-area { padding: 1rem; } .canvas-container { height: 300px; } .metrics-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0.75rem; } } /* ================================================ */ /* MODERN VIEWPORT OPTIMIZATION */ /* ================================================ */ @supports (viewport-fit: cover) { body { padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); padding-top: env(safe-area-inset-top); padding-bottom: env(safe-area-inset-bottom); } } /* ================================================ */ /* KEYBOARD SAFE AREAS (Mobile Keyboards) */ /* ================================================ */ @media (max-height: 500px) and (orientation: landscape) { input, textarea, select { font-size: 16px; /* Prevents zoom on iOS */ } } /* ================================================ */ /* 9-IMAGE UNIFIED GRID RESPONSIVE STYLES */ /* ================================================ */ /* Mobile Phones (< 480px) - Single Column */ @media (max-width: 479px) { .image-grid-unified { grid-template-columns: 1fr !important; gap: 1rem !important; } .image-card img { height: 200px !important; } } /* Tablets Portrait (480-768px) - 2 Columns */ @media (min-width: 480px) and (max-width: 767px) { .image-grid-unified { grid-template-columns: repeat(2, 1fr) !important; gap: 1.25rem !important; } .image-card img { height: 250px !important; } } /* Tablets Landscape (768-1024px) - 3 Columns */ @media (min-width: 768px) and (max-width: 1023px) { .image-grid-unified { grid-template-columns: repeat(3, 1fr) !important; gap: 1.5rem !important; } .image-card img { height: 280px !important; } } /* Desktop (> 1024px) - 3 Columns */ @media (min-width: 1024px) { .image-grid-unified { grid-template-columns: repeat(3, 1fr) !important; gap: 1.5rem !important; } .image-card img { height: 300px !important; } } /* Image Card Responsive Adjustments */ .image-card-title { font-size: 0.95rem; word-wrap: break-word; word-break: break-word; line-height: 1.3; } @media (max-width: 479px) { .image-card { padding: 0.75rem !important; } .image-card-title { font-size: 0.85rem; margin-bottom: 0.75rem !important; } .image-card img { border-radius: var(--border-radius) !important; } } /* ================================================ */ /* PRINT STYLES */ /* ================================================ */ @media print { .tab-navigation, .floating-elements, .hero-visual { display: none; } .content-area { padding: 0; box-shadow: none; } * { box-shadow: none !important; text-shadow: none !important; } }