/* Project Friction - Main CSS */ /* Museum-quality digital exhibit styling */ :root { /* Color Palette */ --color-primary: #2c3e50; --color-secondary: #34495e; --color-accent: #c0392b; --color-context: #d4a574; --color-rcaf: #3498db; --color-rcn: #2c3e50; --color-army: #27ae60; --color-legacy: #c0392b; /* Neutral Colors */ --color-white: #ffffff; --color-light-gray: #f8f9fa; --color-gray: #dee2e6; --color-dark-gray: #6c757d; --color-black: #212529; /* Typography */ --font-primary: 'Georgia', 'Times New Roman', serif; --font-secondary: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; /* Spacing */ --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem; --spacing-xxl: 3rem; /* Transitions */ --transition-fast: 0.15s ease; --transition-normal: 0.3s ease; --transition-slow: 0.5s ease; /* Shadows */ --shadow-sm: 0 2px 5px rgba(0,0,0,0.1); --shadow-md: 0 4px 10px rgba(0,0,0,0.1); --shadow-lg: 0 8px 20px rgba(0,0,0,0.15); /* Border Radius */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-full: 50%; } /* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: var(--font-primary); background: var(--color-light-gray); color: var(--color-black); overflow: hidden; height: 100vh; line-height: 1.6; } /* Layout Structure */ .app-container { display: flex; height: 100vh; position: relative; } /* Sidebar Styling */ .sidebar { width: 35%; background: var(--color-white); box-shadow: var(--shadow-lg); display: flex; flex-direction: column; z-index: 100; transition: transform var(--transition-normal); position: relative; order: 2; } .sidebar.collapsed { transform: translateX(370px); } .sidebar-toggle { position: absolute; left: -30px; top: 20px; width: 30px; height: 60px; background: var(--color-white); border-radius: var(--radius-sm) 0 0 var(--radius-sm); box-shadow: var(--shadow-md); display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 101; transition: background-color var(--transition-fast); } .sidebar-toggle:hover { background: var(--color-light-gray); } /* Header Styling */ .sidebar-header { background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%); color: var(--color-white); padding: var(--spacing-xl); border-bottom: 3px solid var(--color-accent); } .logo-section { display: flex; align-items: center; gap: var(--spacing-lg); } .logo { width: 45px; height: 45px; background: var(--color-accent); border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; color: var(--color-white); font-weight: 600; font-size: 18px; font-family: var(--font-secondary); } .title h1 { font-size: 22px; font-weight: 600; margin-bottom: var(--spacing-xs); } .title p { font-size: 13px; opacity: 0.8; font-style: italic; } /* Navigation States */ .back-button { padding: var(--spacing-md) var(--spacing-xl); background: var(--color-light-gray); border-bottom: 1px solid var(--color-gray); display: flex; align-items: center; gap: var(--spacing-md); cursor: pointer; transition: background-color var(--transition-fast); font-family: var(--font-secondary); } .back-button:hover { background: #e9ecef; } .back-button.hidden { display: none; } .back-button.show { display: flex; } /* Main Navigation */ .main-navigation { display: block; flex: 1; overflow-y: auto; } .main-navigation.hidden { display: none; } .nav-welcome { padding: var(--spacing-xl); background: var(--color-light-gray); border-bottom: 1px solid var(--color-gray); } .nav-welcome h2 { font-size: 18px; color: var(--color-black); margin-bottom: var(--spacing-md); font-family: var(--font-primary); } .nav-welcome p { font-size: 14px; line-height: 1.6; color: var(--color-dark-gray); font-family: var(--font-secondary); } /* Quick Stats */ .quick-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--spacing-md); padding: var(--spacing-xl); background: var(--color-white); } .stat-card { text-align: center; padding: var(--spacing-lg); background: var(--color-light-gray); border-radius: var(--radius-md); border: 1px solid #e9ecef; transition: transform var(--transition-fast); } .stat-card:hover { transform: translateY(-2px); } .stat-number { font-size: 22px; font-weight: 600; color: var(--color-rcaf); margin-bottom: var(--spacing-xs); font-family: var(--font-secondary); } .stat-label { font-size: 11px; color: var(--color-dark-gray); text-transform: uppercase; letter-spacing: 0.5px; font-family: var(--font-secondary); } /* Navigation Areas */ .nav-areas { padding: var(--spacing-xl); } .nav-areas-title { font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--color-dark-gray); margin-bottom: var(--spacing-lg); font-weight: 600; font-family: var(--font-secondary); } /* Map Container */ .map-container { flex: 1; position: relative; background: var(--color-secondary); order: 1; } #map { width: 100%; height: 100%; } /* Footer */ .sidebar-footer { padding: var(--spacing-lg) var(--spacing-xl); background: var(--color-light-gray); border-top: 1px solid var(--color-gray); font-size: 12px; color: var(--color-dark-gray); text-align: center; font-family: var(--font-secondary); } .sidebar-footer a { color: var(--color-rcaf); text-decoration: none; transition: color var(--transition-fast); } .sidebar-footer a:hover { color: var(--color-primary); } /* Utility Classes */ .hidden { display: none !important; } .show { display: block !important; } .text-center { text-align: center; } .font-secondary { font-family: var(--font-secondary); } .font-primary { font-family: var(--font-primary); } /* Loading Screen */ .loading-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--color-white); display: flex; align-items: center; justify-content: center; z-index: 9999; transition: opacity var(--transition-slow); } .loading-screen.fade-out { opacity: 0; pointer-events: none; } .loading-content { text-align: center; color: var(--color-primary); } .loading-spinner { width: 40px; height: 40px; border: 4px solid var(--color-gray); border-top: 4px solid var(--color-accent); border-radius: var(--radius-full); animation: spin 1s linear infinite; margin: 0 auto var(--spacing-lg); } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading-content h3 { font-size: 20px; margin-bottom: var(--spacing-sm); font-family: var(--font-primary); } .loading-content p { font-size: 14px; color: var(--color-dark-gray); font-family: var(--font-secondary); } /* Focus and Accessibility */ *:focus { outline: 2px solid var(--color-rcaf); outline-offset: 2px; } button:focus, [role="button"]:focus { outline: 2px solid var(--color-rcaf); outline-offset: 2px; } /* Print Styles */ @media print { .sidebar-toggle, .map-container, .back-button { display: none !important; } .sidebar { width: 100%; transform: none; box-shadow: none; } .app-container { display: block; } body { overflow: visible; height: auto; } }