/* Project Friction - Components CSS */ /* Reusable UI components for the museum exhibit */ /* Navigation Cards */ .nav-card { background: var(--color-white); border: 2px solid #e9ecef; border-radius: var(--radius-lg); padding: var(--spacing-xl); margin-bottom: var(--spacing-lg); cursor: pointer; transition: all var(--transition-normal); position: relative; overflow: hidden; } .nav-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 5px; background: var(--theme-color); transition: width var(--transition-normal); } .nav-card:hover { transform: translateX(5px); box-shadow: var(--shadow-lg); border-color: var(--theme-color); } .nav-card:hover::before { width: 8px; } .nav-card[data-section="context"] { --theme-color: var(--color-context); } .nav-card[data-section="rcaf"] { --theme-color: var(--color-rcaf); } .nav-card[data-section="rcn"] { --theme-color: var(--color-rcn); } .nav-card[data-section="army"] { --theme-color: var(--color-army); } .nav-card[data-section="legacy"] { --theme-color: var(--color-legacy); } .nav-card-header { display: flex; align-items: center; gap: var(--spacing-lg); margin-bottom: var(--spacing-md); } .nav-card-icon { font-size: 28px; } .nav-card-title { flex: 1; } .nav-card-title h3 { font-size: 16px; margin-bottom: var(--spacing-xs); color: var(--color-black); font-family: var(--font-primary); } .nav-card-title span { font-size: 12px; color: var(--color-dark-gray); font-family: var(--font-secondary); } .nav-card-preview { font-size: 13px; line-height: 1.6; color: var(--color-dark-gray); margin-bottom: var(--spacing-md); font-family: var(--font-secondary); } .nav-card-links { display: flex; gap: var(--spacing-lg); font-size: 12px; color: var(--color-rcaf); font-family: var(--font-secondary); } .nav-card-link { display: flex; align-items: center; gap: var(--spacing-xs); } /* Interactive Map Buttons */ .map-button { display: inline-flex; align-items: center; gap: var(--spacing-sm); padding: var(--spacing-md) var(--spacing-lg); background: linear-gradient(135deg, var(--color-rcaf) 0%, #2980b9 100%); color: var(--color-white); border: none; border-radius: 25px; font-size: 14px; cursor: pointer; transition: all var(--transition-normal); margin: var(--spacing-md) var(--spacing-md) var(--spacing-md) 0; box-shadow: 0 2px 5px rgba(52, 152, 219, 0.3); font-family: var(--font-secondary); } .map-button:hover { transform: translateY(-2px); box-shadow: 0 4px 10px rgba(52, 152, 219, 0.4); } .map-button.active { background: linear-gradient(135deg, var(--color-accent) 0%, #c0392b 100%); box-shadow: 0 2px 5px rgba(192, 57, 43, 0.3); } .map-button-icon { font-size: 16px; } /* Fact Boxes */ .fact-box { background: linear-gradient(to right, #fef5e7, #fdf2e9); border-left: 5px solid #f39c12; padding: var(--spacing-xl); margin: var(--spacing-xl) 0; border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); } .fact-box h3 { font-size: 16px; color: #d68910; margin-bottom: var(--spacing-md); font-weight: 600; text-transform: uppercase; letter-spacing: 1px; font-family: var(--font-secondary); } .fact-box ul { list-style: none; } .fact-box li { padding: 6px 0; color: #7f6000; font-size: 14px; display: flex; align-items: flex-start; font-family: var(--font-secondary); } .fact-box li::before { content: "▸"; margin-right: var(--spacing-md); color: #f39c12; font-weight: bold; } /* Quote Blocks */ .quote-block { background: var(--color-light-gray); border-left: 4px solid var(--color-secondary); padding: var(--spacing-xl); margin: var(--spacing-xxl) 0; font-style: italic; position: relative; border-radius: var(--radius-sm); } .quote-block::before { content: """; font-size: 60px; color: #cbd5e0; position: absolute; top: -10px; left: 10px; font-family: var(--font-primary); } .quote-text { font-size: 17px; line-height: 1.6; color: var(--color-secondary); margin-bottom: var(--spacing-md); padding-left: 30px; font-family: var(--font-primary); } .quote-attribution { text-align: right; font-size: 14px; color: var(--color-dark-gray); font-style: normal; font-family: var(--font-secondary); } /* Timeline Cards */ .timeline-card { background: var(--color-white); border: 1px solid var(--color-gray); border-radius: var(--radius-md); padding: var(--spacing-xl); margin: var(--spacing-xl) 0; position: relative; transition: all var(--transition-normal); } .timeline-card:hover { box-shadow: var(--shadow-lg); transform: translateX(5px); } .timeline-date { position: absolute; left: -15px; top: var(--spacing-xl); background: var(--color-accent); color: var(--color-white); padding: var(--spacing-sm) var(--spacing-md); border-radius: var(--radius-sm); font-size: 12px; font-weight: bold; font-family: var(--font-secondary); } .timeline-content { margin-left: var(--spacing-xl); } .timeline-content h4 { font-size: 18px; color: var(--color-primary); margin-bottom: var(--spacing-md); font-family: var(--font-primary); } .timeline-content p { font-size: 14px; line-height: 1.6; color: var(--color-dark-gray); font-family: var(--font-secondary); } /* Media Gallery */ .media-section { margin: var(--spacing-xxl) 0; padding: var(--spacing-xl); background: var(--color-light-gray); border-radius: var(--radius-md); } .media-header { display: flex; align-items: center; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); } .media-header h3 { font-size: 18px; color: var(--color-primary); font-family: var(--font-primary); } .media-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--spacing-lg); } .media-item { position: relative; aspect-ratio: 4/3; background: #ddd; border-radius: var(--radius-sm); overflow: hidden; cursor: pointer; transition: transform var(--transition-normal); } .media-item:hover { transform: scale(1.05); box-shadow: var(--shadow-lg); } .media-caption { position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(to top, rgba(0,0,0,0.8), transparent); color: var(--color-white); padding: var(--spacing-md); font-size: 12px; font-family: var(--font-secondary); } /* Document Section */ .document-section { background: var(--color-white); border: 2px solid #ecf0f1; border-radius: var(--radius-md); padding: var(--spacing-xl); margin: var(--spacing-xl) 0; } .document-header { display: flex; align-items: center; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); padding-bottom: var(--spacing-md); border-bottom: 2px solid #ecf0f1; } .document-header h3 { font-size: 16px; color: var(--color-primary); font-family: var(--font-primary); } .document-list { list-style: none; } .document-list li { padding: var(--spacing-md) 0; border-bottom: 1px solid #f5f5f5; } .document-link { display: flex; align-items: center; gap: var(--spacing-md); color: var(--color-rcaf); text-decoration: none; transition: all var(--transition-fast); font-family: var(--font-secondary); font-size: 14px; } .document-link:hover { color: #2980b9; padding-left: var(--spacing-md); } /* Article Index */ .article-index { padding: var(--spacing-xl); background: var(--color-white); border-radius: var(--radius-md); border: 1px solid var(--color-gray); margin: var(--spacing-xl) 0; } .article-index h3 { font-size: 16px; margin-bottom: var(--spacing-lg); padding-bottom: var(--spacing-md); border-bottom: 2px solid var(--color-rcaf); color: var(--color-primary); font-family: var(--font-primary); } .article-list { list-style: none; } .article-list li { padding: var(--spacing-sm) 0; border-bottom: 1px solid #f1f3f5; } .article-list a { color: var(--color-rcaf); text-decoration: none; font-size: 14px; display: flex; align-items: center; gap: var(--spacing-sm); transition: all var(--transition-fast); font-family: var(--font-secondary); } .article-list a:hover { padding-left: var(--spacing-md); color: #0056b3; } /* Info Box */ .info-box { background: linear-gradient(to right, var(--color-light-gray), var(--color-white)); border-left: 4px solid var(--color-rcaf); padding: var(--spacing-lg); margin: var(--spacing-xl) 0; border-radius: var(--radius-sm); } .info-box h4 { font-size: 14px; margin-bottom: var(--spacing-md); color: var(--color-black); font-family: var(--font-secondary); font-weight: 600; } .info-box ul { list-style: none; } .info-box li { font-size: 13px; padding: 4px 0; color: #495057; font-family: var(--font-secondary); } /* Story Map Banner */ .story-map-banner { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: var(--color-white); padding: var(--spacing-xl); border-radius: var(--radius-lg); margin: var(--spacing-xl) 0; cursor: pointer; transition: transform var(--transition-normal); } .story-map-banner:hover { transform: scale(1.02); box-shadow: 0 5px 20px rgba(102, 126, 234, 0.4); } .story-map-banner h4 { font-size: 18px; margin-bottom: var(--spacing-sm); display: flex; align-items: center; gap: var(--spacing-md); font-family: var(--font-primary); } .story-map-banner p { font-size: 14px; opacity: 0.9; line-height: 1.6; font-family: var(--font-secondary); } /* Section Headers */ .chapter-header { margin: var(--spacing-xxl) 0 var(--spacing-xl) 0; padding-bottom: var(--spacing-md); border-bottom: 2px solid var(--color-context); } .chapter-header h2 { font-size: 24px; color: var(--color-primary); font-family: var(--font-primary); font-weight: normal; } .chapter-date { font-size: 14px; color: var(--color-dark-gray); margin-top: var(--spacing-sm); font-style: italic; font-family: var(--font-secondary); } /* Buttons */ .btn { padding: var(--spacing-md) var(--spacing-lg); border: none; border-radius: var(--radius-sm); cursor: pointer; font-size: 14px; font-family: var(--font-secondary); transition: all var(--transition-fast); display: inline-flex; align-items: center; gap: var(--spacing-sm); } .btn-primary { background: var(--color-rcaf); color: var(--color-white); } .btn-primary:hover { background: #2980b9; transform: translateY(-2px); } .btn-secondary { background: var(--color-gray); color: var(--color-black); } .btn-secondary:hover { background: #adb5bd; } /* Close button */ .close-btn, .close-info { position: absolute; top: var(--spacing-md); right: var(--spacing-md); width: 30px; height: 30px; border: none; background: rgba(0,0,0,0.1); border-radius: var(--radius-full); cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 16px; color: var(--color-dark-gray); transition: all var(--transition-fast); } .close-btn:hover, .close-info:hover { background: rgba(0,0,0,0.2); color: var(--color-black); }