* { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; } body { background-color: #f5f5f5; color: #333; overflow-x: hidden; } .app-container { display: flex; flex-direction: column; height: 100vh; max-width: 1600px; margin: 0 auto; background-color: white; box-shadow: 0 0 20px rgba(0,0,0,0.1); } /* Header Styles */ .header { display: flex; justify-content: space-between; align-items: center; padding: 15px 25px; background-color: #fff; border-bottom: 1px solid #e0e0e0; height: 60px; } .logo { display: flex; align-items: center; gap: 10px; font-size: 20px; font-weight: bold; color: #ea4335; } .logo i { font-size: 24px; } .search-bar { display: flex; align-items: center; background-color: #f1f3f4; border-radius: 24px; padding: 8px 16px; width: 300px; } .search-bar input { border: none; background: transparent; width: 100%; padding: 5px; font-size: 14px; outline: none; } /* Debug Toggle Button */ .debug-toggle { margin-left: 20px; position: relative; } .debug-button { background-color: #f1f3f4; border: 1px solid #e0e0e0; border-radius: 50%; width: 30px; height: 30px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .debug-button:hover { background-color: #e0e0e0; transform: scale(1.05); } /* Main Content Layout */ .content { display: flex; flex: 1; overflow: hidden; } /* Email List Styles */ .email-list { flex: 1; overflow-y: auto; border-right: 1px solid #e0e0e0; padding: 10px 20px; scroll-behavior: smooth; /* Enable smooth scrolling */ } .email-item { padding: 12px 0; border-bottom: 1px solid #f1f3f4; cursor: pointer; transition: all 0.25s ease; display: flex; justify-content: space-between; align-items: center; position: relative; } .email-item:hover { background-color: #f8f9fa; transform: translateX(3px); } .email-item.selected { background-color: #e8f0fe; border-left: 4px solid #4285f4; box-shadow: 0 2px 8px rgba(0,0,0,0.05); } .email-header { display: flex; flex-direction: column; margin-right: 10px; min-width: 150px; } .email-sender { font-weight: bold; color: #202124; margin-bottom: 2px; font-size: 14px; } .email-time { color: #5f6368; font-size: 12px; } .email-subject { font-weight: 500; color: #202124; margin-bottom: 4px; font-size: 15px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 500px; } .email-snippet { color: #5f6368; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 2; max-width: 400px; } /* Webcam Overlay Styles */ .webcam-container { position: fixed; bottom: 20px; right: 20px; width: 320px; height: 240px; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.2); z-index: 100; background-color: #000; } #webcam { width: 100%; height: 100%; object-fit: cover; } .gesture-guide { position: fixed; bottom: 20px; left: 20px; background-color: rgba(0,0,0,0.7); color: white; padding: 15px; border-radius: 12px; max-width: 300px; z-index: 100; backdrop-filter: blur(5px); opacity: 0.9; transition: opacity 0.3s; } .gesture-guide:hover { opacity: 1; } .gesture-guide h3 { margin-bottom: 10px; color: #4285f4; } .gesture-item { display: flex; align-items: center; margin-bottom: 8px; } .gesture-icon { width: 30px; height: 30px; background-color: #4285f4; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 10px; color: white; font-weight: bold; } /* Action Feedback */ .action-feedback { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); padding: 15px 25px; border-radius: 8px; color: white; font-weight: bold; z-index: 200; opacity: 0; transition: all 0.3s ease; min-width: 300px; text-align: center; box-shadow: 0 4px 12px rgba(0,0,0,0.15); } .action-feedback.show { opacity: 1; transform: translateX(-50%) translateY(0); } .action-feedback.delete { background-color: #ea4335; } .action-feedback.archive { background-color: #34a853; } .action-feedback.summary { background-color: #4285f4; } /* Selection Highlight */ .selection-highlight { position: absolute; border: 3px solid #4285f4; border-radius: 8px; pointer-events: none; z-index: 50; animation: pulse 1.5s infinite; box-shadow: 0 0 0 0 rgba(66, 133, 244, 0.4); transition: all 0.2s ease; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(66, 133, 244, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(66, 133, 244, 0); } 100% { box-shadow: 0 0 0 0 rgba(66, 133, 244, 0); } } /* Gesture Visualization */ .gesture-visualization { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 40; } .hand-landmarks { position: absolute; width: 100%; height: 100%; } .hand-landmarks .landmark { position: absolute; width: 8px; height: 8px; background-color: #4285f4; border-radius: 50%; transform: translate(-50%, -50%); z-index: 100; transition: all 0.1s ease; } .hand-landmarks .landmark.index-tip { background-color: #34a853; width: 12px; height: 12px; box-shadow: 0 0 8px rgba(52, 168, 83, 0.6); } .gesture-path { position: absolute; width: 100%; height: 100%; } .gesture-path .point { position: absolute; width: 4px; height: 4px; background-color: #ff0000; border-radius: 50%; transform: translate(-50%, -50%); opacity: 0.7; } /* Debug Panel */ .debug-panel { position: fixed; top: 60px; right: 20px; background-color: rgba(0,0,0,0.8); color: #0f0; padding: 15px; border-radius: 12px; max-width: 300px; z-index: 100; backdrop-filter: blur(5px); opacity: 0; visibility: hidden; transition: all 0.3s ease; border: 1px solid rgba(255, 255, 255, 0.2); box-shadow: 0 4px 12px rgba(0,0,0,0.3); transform: translateY(-10px); } .debug-panel.visible { opacity: 1; visibility: visible; transform: translateY(0); } .debug-panel h3 { color: #4285f4; margin-bottom: 10px; } .debug-item { margin-bottom: 5px; } .debug-label { display: inline-block; width: 120px; color: #aaa; } .debug-value { color: #fff; } /* Status Indicator */ .status-indicator { position: fixed; bottom: 30px; right: 30px; width: 20px; height: 20px; border-radius: 50%; z-index: 200; } .status-indicator.ready { background-color: #34a853; box-shadow: 0 0 10px #34a853; } .status-indicator.processing { background-color: #fbbc05; animation: blink 1s infinite; } .status-indicator.error { background-color: #ea4335; animation: blink 0.5s infinite; } @keyframes blink { 50% { opacity: 0.5; } } /* For mobile responsiveness */ @media (max-width: 768px) { .webcam-container { width: 240px; height: 180px; bottom: 10px; right: 10px; } .gesture-guide, .debug-panel { max-width: 240px; font-size: 0.9em; padding: 10px; } .email-subject { max-width: 200px; } .email-snippet { max-width: 150px; } } /* Confirmation Overlay */ .confirmation-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.4); display: flex; justify-content: center; align-items: center; z-index: 1000; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } .confirmation-overlay.show { opacity: 1; pointer-events: all; } .confirmation-box { background: white; border-radius: 12px; padding: 20px; width: 300px; box-shadow: 0 5px 20px rgba(0,0,0,0.2); text-align: center; transform: scale(0.9); transition: transform 0.3s ease; } .confirmation-overlay.show .confirmation-box { transform: scale(1); } .confirmation-icon { font-size: 40px; margin-bottom: 15px; } .confirmation-title { font-weight: bold; margin-bottom: 10px; } .confirmation-message { margin-bottom: 20px; color: #5f6368; } .confirmation-buttons { display: flex; gap: 10px; justify-content: center; } .confirmation-button { padding: 8px 16px; border-radius: 8px; cursor: pointer; font-weight: 500; transition: all 0.2s; } .confirmation-button.cancel { background-color: #f1f3f4; color: #333; } .confirmation-button.confirm { background-color: #4285f4; color: white; } .confirmation-button:hover { opacity: 0.9; } /* Scrolling Indicator */ .scroll-indicator { position: fixed; right: 20px; bottom: 80px; width: 30px; height: 30px; background-color: rgba(66, 133, 244, 0.7); border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 100; opacity: 0; transition: opacity 0.3s; } .scroll-indicator.show { opacity: 0.8; } .scroll-indicator i { font-size: 16px; color: white; }