.app { width: 100vw; height: 100vh; display: flex; flex-direction: column; overflow: hidden; } .view-controls { display: flex; gap: 0.5rem; padding: 0.75rem; background: #1e293b; border-bottom: 2px solid #334155; } .view-controls button { padding: 0.5rem 1rem; border: none; background: #334155; color: #e2e8f0; border-radius: 0.375rem; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: all 0.2s; } .view-controls button:hover { background: #475569; transform: translateY(-1px); } .view-controls button.active { background: #3b82f6; color: white; box-shadow: 0 0 10px rgba(59, 130, 246, 0.5); } .app-content { flex: 1; display: flex; overflow: hidden; } .app-content.split { display: flex; } .app-content.split .map-container { flex: 1; width: 50%; } .app-content.split .panel-container { flex: 1; width: 50%; } .app-content.map .panel-container { display: none; } .app-content.panel .map-container { display: none; } .map-container { position: relative; background: #0a0e1a; } .panel-container { background: #0f172a; overflow: hidden; display: flex; flex-direction: column; } .panel-tabs { display: flex; gap: 0.25rem; padding: 0.5rem; background: #1e293b; border-bottom: 2px solid #334155; overflow-x: auto; flex-shrink: 0; } .panel-tabs button { padding: 0.5rem 1rem; border: none; background: #334155; color: #94a3b8; border-radius: 0.375rem; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: all 0.2s; white-space: nowrap; } .panel-tabs button:hover { background: #475569; color: #e5e7eb; } .panel-tabs button.active { background: #3b82f6; color: white; box-shadow: 0 0 8px rgba(59, 130, 246, 0.4); } .panel-content-wrapper { flex: 1; overflow: hidden; display: flex; flex-direction: column; } /* Scrollbar styling */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #1e293b; } ::-webkit-scrollbar-thumb { background: #475569; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #64748b; } /* Mobile-Responsive Design */ @media (max-width: 1024px) { /* Tablet: Stack vertically */ .app-content.split { flex-direction: column; } .app-content.split .map-container, .app-content.split .panel-container { width: 100%; flex: 1; } .view-controls { flex-wrap: wrap; } } @media (max-width: 768px) { /* Mobile: Force single view mode with tabs */ .view-controls { position: sticky; top: 0; z-index: 100; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); } .view-controls button { flex: 1; min-width: 0; padding: 0.75rem 0.5rem; font-size: 0.8125rem; } .app-content.split { flex-direction: column; } .app-content.split .map-container { height: 50vh; } .app-content.split .panel-container { height: 50vh; overflow-y: auto; } /* Optimize for touch */ button, .turtle-card, .inventory-slot { min-height: 44px; /* iOS minimum touch target */ } } @media (max-width: 480px) { /* Small mobile: Optimize spacing */ .view-controls { padding: 0.5rem; gap: 0.375rem; } .view-controls button { padding: 0.625rem 0.375rem; font-size: 0.75rem; } .app-content.split .map-container { height: 40vh; } .app-content.split .panel-container { height: 60vh; } } /* Touch device optimizations */ @media (hover: none) and (pointer: coarse) { /* Increase touch targets */ button { min-height: 48px; min-width: 48px; } .turtle-card { padding: 1rem; } .inventory-slot { min-height: 60px; min-width: 60px; } /* Remove hover effects on touch devices */ button:hover, .turtle-card:hover, .inventory-slot:hover { transform: none; } /* Use active state instead */ button:active { transform: scale(0.95); } } /* Landscape mobile orientation */ @media (max-width: 896px) and (orientation: landscape) { .app-content.split { flex-direction: row; } .app-content.split .map-container, .app-content.split .panel-container { width: 50%; height: 100%; } } /* Dark mode support (respects system preference) */ @media (prefers-color-scheme: dark) { /* Already optimized for dark mode */ } /* Reduced motion support */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* High contrast mode */ @media (prefers-contrast: high) { .view-controls button { border: 2px solid currentColor; } .turtle-card { border-width: 3px; } }