/* Custom Styles */ body, html { background: url('/assets/background.jpg') no-repeat center center fixed; background-color: #1a202c; margin: 0; padding: 0; font-family: 'Inter', Arial, sans-serif; } .h-full { min-height: 100vh; } .bg-gray-900 { background-color: #1a202c; } .text-gray-200 { color: #e2e8f0; } .flex { display: flex; } .flex-col { flex-direction: column; } .justify-between { justify-content: space-between; } .items-center { align-items: center; } .p-4 { padding: 1rem; } .border-b { border-bottom: 1px solid #4a5568; } .bg-gray-800 { background-color: #2d3748; } .text-lg { font-size: 1.125rem; } .font-semibold { font-weight: 600; } .tracking-wide { letter-spacing: 0.05em; } .text-white { color: #fff; } .gap-4 { gap: 1rem; } .home-btn, .btn-start, .btn-stop { background: none; border: none; color: #fff; font-size: 1rem; padding: 0.5rem 1.2rem; border-radius: 6px; cursor: pointer; transition: background 0.2s; } .home-btn:hover, .btn-start:hover, .btn-stop:hover { background: #2b6cb0; } .max-w-4xl { max-width: 56rem; } .mx-auto { margin-left: auto; margin-right: auto; } .space-y-6 > * + * { margin-top: 1.5rem; } .bg-gray-800 { background-color: #2d3748; } .border { border: 1px solid #4a5568; } .rounded-xl { border-radius: 1rem; } .shadow-md { box-shadow: 0 4px 24px rgba(0,0,0,0.12); } .text-sm { font-size: 0.875rem; } .text-gray-400 { color: #a0aec0; } .mb-2 { margin-bottom: 0.5rem; } .text-lg { font-size: 1.125rem; } .font-semibold { font-weight: 600; } .text-gray-200 { color: #e2e8f0; } .mb-4 { margin-bottom: 1rem; } .flex { display: flex; } .items-center { align-items: center; } .justify-between { justify-content: space-between; } .badge { padding: 4px 8px; border-radius: 9999px; font-size: 12px; letter-spacing: 0.5px; background: #2d3748; color: #fff; margin-right: 8px; } .badge.bg-blue-600 { background: #3182ce; } .badge.bg-green-600 { background: #38a169; } .badge.bg-yellow-600 { background: #ecc94b; color: #222; } .mic { width: 12px; height: 12px; border-radius: 50%; background: #4a5568; box-shadow: 0 0 0 0 rgba(31, 130, 68, 0.7); transition: box-shadow 0.25s ease; margin-right: 8px; } .mic.bg-green-600 { background: #2f855a; box-shadow: 0 0 8px 2px rgba(31, 130, 68, 0.7); } .recog { font-size: 12px; padding: 4px 10px; border-radius: 6px; border: 1px dashed #3a3f47; opacity: 0.8; background: #2d3748; color: #fff; } .recog.bg-blue-600 { border-style: solid; border-color: #3b82f6; } .text-xs { font-size: 0.75rem; } .text-gray-500 { color: #718096; } .flex-1 { flex: 1; } .mt-2 { margin-top: 0.5rem; } .space-x-6 > * + * { margin-left: 1.5rem; } .w-full { width: 100%; } .bg-gray-700 { background-color: #4a5568; } .rounded-xl { border-radius: 1rem; } /* Stylish font and button animation */ .stylish-font { font-family: 'Montserrat', 'Poppins', 'Arial Black', Arial, sans-serif; letter-spacing: 2px; text-shadow: 0 0 8px #38bdf8, 0 2px 8px #22222244; transition: color 0.3s, text-shadow 0.3s; } .main-flex-layout { display: flex; flex-direction: row; justify-content: space-between; align-items: flex-start; width: 100%; height: 80vh; gap: 48px; /* Increased gap for more separation */ } .question-section { flex: 1; display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; min-width: 420px; max-width: 700px; padding: 32px 24px 32px 32px; position: relative; } .big-question { background: #f0f4ff; border-radius: 18px; box-shadow: 0 2px 16px #2563eb22; padding: 32px 28px; color: #23272b; font-size: 2.2rem; font-weight: 700; margin-bottom: 24px; min-height: 100px; max-width: 700px; word-break: break-word; text-align: left; } .big-question-animated { animation: questionFadeIn 0.7s, pulseText 1.2s infinite alternate; } @keyframes pulseText { 0% { text-shadow: 0 0 8px #38bdf8, 0 2px 8px #22222244; } 100% { text-shadow: 0 0 32px #38bdf8, 0 2px 24px #22222288; } } @keyframes questionFadeIn { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } } .video-section { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; min-width: 400px; max-width: 100vw; padding: 32px 32px 32px 0; } .camera-video { border-radius: 18px; border: 4px solid #38bdf8; box-shadow: 0 0 24px #38bdf844, 0 0 8px #1e293b88; background: #222; object-fit: cover; margin-bottom: 18px; transition: box-shadow 0.4s, border 0.4s; } .camera-video-large { width: 60vw; max-width: 800px; height: 40vh; max-height: 60vh; } /* Animated buttons */ .home-btn, .btn-start, .btn-stop, .btn-resume, .btn-submit, .back-btn { font-family: 'Montserrat', 'Poppins', 'Arial Black', Arial, sans-serif; font-size: 1.05rem; font-weight: 700; letter-spacing: 2px; background: linear-gradient(90deg, #38bdf8 0%, #23272b 100%); color: #e3f6ff; box-shadow: 0 2px 16px #38bdf888; border: none; border-radius: 12px; padding: 0.55rem 1.3rem; margin: 0 0.3rem; cursor: pointer; transition: background 0.4s, box-shadow 0.4s, color 0.3s, transform 0.2s; position: relative; overflow: hidden; animation: buttonPulse 1.2s infinite alternate; } .btn-start { background: linear-gradient(90deg, #2563eb 0%, #6366f1 100%); color: #fff; font-size: 1.25rem; font-weight: 700; padding: 0.7rem 2.2rem; border-radius: 999px; box-shadow: 0 4px 24px #6366f188, 0 2px 8px #2563eb44; transition: background 0.2s, color 0.2s, transform 0.2s, box-shadow 0.2s; border: none; outline: none; letter-spacing: 2px; position: relative; overflow: hidden; animation: buttonPulse 1.2s infinite alternate; } .btn-start:hover { background: linear-gradient(90deg, #6366f1 0%, #2563eb 100%); color: #e0e7ff; transform: scale(1.05); box-shadow: 0 6px 32px #6366f1cc; } .btn-submit { position: fixed; right: 32px; bottom: 32px; z-index: 1000; font-family: 'Montserrat', 'Poppins', 'Arial Black', Arial, sans-serif; font-size: 1.05rem; font-weight: 700; letter-spacing: 2px; background: linear-gradient(90deg, #38bdf8 0%, #23272b 100%); color: #e3f6ff; box-shadow: 0 2px 16px #38bdf888; border: none; border-radius: 12px; padding: 0.55rem 1.3rem; margin: 0 0.3rem; cursor: pointer; transition: background 0.4s, box-shadow 0.4s, color 0.3s, transform 0.2s; overflow: hidden; animation: buttonPulse 1.2s infinite alternate; } @keyframes buttonPulse { 0% { box-shadow: 0 2px 16px #38bdf888; transform: scale(1); } 100% { box-shadow: 0 2px 32px #bae6fd88; transform: scale(1.07); } } .home-btn:hover, .btn-start:hover, .btn-stop:hover, .btn-resume:hover, .btn-submit:hover, .back-btn:hover { background: linear-gradient(90deg, #23272b 0%, #38bdf8 100%); color: #bae6fd; box-shadow: 0 2px 24px #bae6fd88; animation: buttonPulse 0.7s; } .fade-out { opacity: 0.4; pointer-events: none; transition: opacity 0.5s; } .global-bottom-left-btn { position: fixed; left: 24px; bottom: 24px; z-index: 1000; } /* Modern UI header styles from infopage */ .site-header { background: #011329; box-shadow: 0 2px 12px #38bdf844; margin-bottom: 0; position: relative; z-index: 10; padding-bottom: 0; } .header-inner { display: flex; align-items: center; justify-content: flex-start; padding: 18px 32px 0 32px; position: relative; } .logo-cluster { display: flex; align-items: center; gap: 18px; } .logo-img-header { width: 54px; height: 54px; border-radius: 50%; background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.18); padding: 4px; margin-top: -6px; margin-bottom: 1vh; } .py-detect-title-header { font-size: 2.1rem; font-family: 'Segoe UI', 'Arial', 'Roboto', sans-serif; font-weight: 900; letter-spacing: 6px; color: #38bdf8; display: flex; align-items: center; gap: 2px; margin-bottom: 1.5vh; } .py-detect-title-header .py-letter.p { color: #e3f6ff; text-shadow: 0 0 6px #38bdf8; } .py-detect-title-header .py-letter.y { color: #38bdf8; text-shadow: 0 0 6px #38bdf8; } .py-detect-title-header .py-shape { color: #e3f6ff; background: #e3f6ff; text-shadow: 0 0 6px #38bdf8; box-shadow: 0 0 6px #38bdf8, 0 0 2px #fff; border: 2px solid #23272b; width: 18px; height: 4px; display: inline-block; margin: 0 8px; border-radius: 2px; } .py-detect-title-header .py-letter.d { color: #e3f6ff; text-shadow: 0 0 6px #38bdf8; } .py-detect-title-header .py-letter.e { color: #38bdf8; text-shadow: 0 0 6px #38bdf8; } .py-detect-title-header .py-letter.t { color: #e3f6ff; text-shadow: 0 0 6px #38bdf8; } .py-detect-title-header .py-letter.e2 { color: #38bdf8; text-shadow: 0 0 6px #38bdf8; } .py-detect-title-header .py-letter.c { color: #e3f6ff; text-shadow: 0 0 6px #38bdf8; } .py-detect-title-header .py-letter.t2 { color: #38bdf8; text-shadow: 0 0 6px #38bdf8; } /* Footer */ footer { background: linear-gradient(to right, #011022, #01030a); color: #fff; text-align: center; padding: 10px 0px; position: fixed; bottom: 0; left: 0; width: 100%; } /* Left Panel */ .left-panel { flex: 1; display: flex; flex-direction: column; align-items: flex-start; padding: 32px 24px 32px 32px; min-width: 420px; max-width: 700px; } .case-meta { margin-bottom: 24px; font-size: 1.1rem; color: #6366f1; } .case-id-value { color: #fbbf24; font-weight: bold; } .officer-value { color: #38bdf8; font-weight: bold; } .progress-label { color: #38bdf8; } .progress-value { color: #fff; background: #2563eb; border-radius: 6px; padding: 2px 8px; font-weight: 700; } /* Question Card */ .question-card { background: #f0f4ff; border-radius: 18px; box-shadow: 0 2px 16px #2563eb22; padding: 32px 28px; margin-bottom: 18px; min-height: 120px; width: 100%; position: relative; display: flex; flex-direction: column; align-items: flex-start; } .question-typewriter { font-size: 2.1rem; font-weight: 700; color: #23272b; min-height: 48px; width: 100%; animation: typewriter 2.2s steps(40, end) 1; white-space: pre-line; overflow: hidden; border-right: 2px solid #2563eb; } @keyframes typewriter { from { width: 0; } to { width: 100%; } } /* Audio Status & Waveform */ .audio-status { margin-top: 18px; width: 100%; display: flex; align-items: center; gap: 18px; } .recording-text { color: #38bdf8; font-weight: 700; font-size: 1.1rem; letter-spacing: 1px; animation: pulseRecording 1.2s infinite alternate; } .processing-text { color: #fbbf24; font-weight: 700; font-size: 1.1rem; letter-spacing: 1px; animation: pulseProcessing 1.2s infinite alternate; } @keyframes pulseRecording { 0% { opacity: 0.7; } 100% { opacity: 1; } } @keyframes pulseProcessing { 0% { opacity: 0.7; } 100% { opacity: 1; } } .waveform-animation { width: 48px; height: 24px; display: inline-block; background: none; position: relative; } .waveform-animation::before { content: ''; display: block; width: 100%; height: 100%; background: url('data:image/svg+xml;utf8,') no-repeat center center; } /* Controls Row */ .controls-row { display: flex; gap: 18px; margin-top: 18px; } .btn-start-gradient { background: linear-gradient(90deg, #2563eb 0%, #6366f1 100%); color: #fff; font-size: 1.25rem; font-weight: 700; padding: 0.7rem 2.2rem; border-radius: 999px; box-shadow: 0 4px 24px #6366f188, 0 2px 8px #2563eb44; transition: background 0.2s, color 0.2s, transform 0.2s, box-shadow 0.2s; border: none; outline: none; letter-spacing: 2px; position: relative; overflow: hidden; animation: buttonPulse 1.2s infinite alternate; } .btn-start-gradient:hover { background: linear-gradient(90deg, #6366f1 0%, #2563eb 100%); color: #e0e7ff; transform: scale(1.05); box-shadow: 0 6px 32px #6366f1cc; } .btn-pause { background: #fbbf24; color: #23272b; font-weight: 700; border-radius: 999px; padding: 0.7rem 1.5rem; border: none; font-size: 1.1rem; box-shadow: 0 2px 8px #fbbf2444; transition: background 0.2s, color 0.2s; } .btn-skip { background: #e0e7ff; color: #6366f1; font-weight: 700; border-radius: 999px; padding: 0.7rem 1.5rem; border: none; font-size: 1.1rem; box-shadow: 0 2px 8px #6366f144; transition: background 0.2s, color 0.2s; } /* Right Panel */ .right-panel { flex: 1; display: flex; flex-direction: column; align-items: flex-start; padding: 32px 32px 32px 0; min-width: 400px; max-width: 100vw; } .video-preview { margin-bottom: 18px; margin-left: 48px; /* Ensure this matches transcript-panel */ display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 285px; background: #374151; border: 2px dashed #64748b; border-radius: 16px; box-shadow: 0 2px 16px #23272b44; padding: 32px 0; width: 100%; max-width: 995px; } .camera-video { border-radius: 18px; border: 4px solid #38bdf8; box-shadow: 0 0 24px #38bdf844, 0 0 8px #1e293b88; background: #222; object-fit: cover; margin-bottom: 18px; transition: box-shadow 0.4s, border 0.4s; } .camera-video-large { width: 60vw; max-width: 800px; height: 40vh; max-height: 60vh; } .camera-inactive-block { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 260px; color: #a0aec0; } .camera-inactive-icon { font-size: 4rem; color: #64748b; margin-bottom: 18px; } .camera-inactive-title { font-size: 1.4rem; font-weight: 600; color: #cbd5e1; margin-bottom: 6px; } .camera-inactive-sub { font-size: 1.05rem; color: #94a3b8; } /* Transcript Panel */ .transcript-panel { margin-left: 48px; /* Match video-preview for alignment */ background: #fff; border-radius: 14px; box-shadow: 0 2px 12px #6366f122; padding: 18px 18px 18px 18px; width: 100%; max-width: 962px; overflow: hidden; display: flex; flex-direction: column; } .transcript-title { font-weight: 700; color: #6366f1; margin-bottom: 8px; } .transcript-scrollable { overflow-y: auto; max-height: 180px; padding-right: 8px; } .transcript-line { font-size: 1.05rem; color: #23272b; margin-bottom: 4px; } /* Completion Summary Modal */ .summary-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(30,41,59,0.85); z-index: 9999; display: flex; align-items: center; justify-content: center; } .summary-modal-content { background: #fff; border-radius: 18px; box-shadow: 0 2px 32px #6366f1cc; padding: 32px 40px; min-width: 420px; max-width: 700px; } .summary-qa-row { margin-bottom: 18px; } .summary-question { font-weight: 700; color: #2563eb; } .summary-answer { color: #23272b; margin-bottom: 4px; } .summary-duration { color: #6366f1; font-size: 0.98em; } .btn-close-summary { background: linear-gradient(90deg, #2563eb 0%, #6366f1 100%); color: #fff; font-size: 1.1rem; font-weight: 700; padding: 0.7rem 2.2rem; border-radius: 999px; box-shadow: 0 4px 24px #6366f188, 0 2px 8px #2563eb44; border: none; outline: none; letter-spacing: 2px; margin-top: 18px; cursor: pointer; } .btn-close-summary:hover { background: linear-gradient(90deg, #6366f1 0%, #2563eb 100%); color: #e0e7ff; transform: scale(1.05); box-shadow: 0 6px 32px #6366f1cc; } /* Info Card Styles */ .info-card { background: linear-gradient(135deg, #232b3e 60%, #232b3e 100%); border: 2px solid #38bdf8; border-radius: 14px; box-shadow: 0 2px 16px #38bdf822; padding: 32px 24px; margin-bottom: 32px; max-width: 520px; text-align: center; color: #fff; } .info-title { font-size: 2rem; font-weight: 700; margin-bottom: 12px; } .info-desc { font-size: 1.15rem; color: #e2e8f0; } /* Camera Inactive Card Styles */ .camera-inactive-card { background: linear-gradient(135deg, #232b3e 60%, #232b3e 100%); border: 2px dashed #a0aec0; border-radius: 14px; box-shadow: 0 2px 16px #38bdf822; padding: 48px 24px 32px 24px; margin-bottom: 32px; max-width: 600px; min-height: 320px; text-align: center; color: #e2e8f0; display: flex; flex-direction: column; align-items: center; justify-content: center; } .camera-icon { margin-bottom: 18px; color: #a0aec0; } .button-bar { display: flex; flex-direction: row; justify-content: flex-end; align-items: center; gap: 18px; padding: 18px 32px 18px 32px; box-shadow: 0 2px 12px #38bdf844; border-bottom: 1px solid #23272b; } .header-btn { font-family: 'Montserrat', 'Poppins', 'Arial Black', Arial, sans-serif; font-size: 1.05rem; font-weight: 700; letter-spacing: 2px; background: #fff; color: #2563eb; border: 2px solid #2563eb; border-radius: 12px; padding: 0.55rem 1.3rem; margin: 0 0.3rem; cursor: pointer; box-shadow: 0 2px 16px #38bdf888; transition: background 0.2s, color 0.2s, box-shadow 0.2s, border 0.2s; } .header-btn.active, .header-btn:focus, .header-btn:hover { background: #2563eb; color: #fff; border-color: #38bdf8; box-shadow: 0 2px 24px #bae6fd88; } .home-btn { background: #2563eb; color: #fff; border-color: #38bdf8; box-shadow: 0 2px 24px #bae6fd88; } .home-btn:focus, .home-btn:hover { background: #38bdf8; color: #fff; } .start-btn { background: #fff; color: #2563eb; } .camera-btn, .voice-btn, .tts-btn { background: #e0e7ff; color: #2563eb; border-color: #2563eb; } .tts-btn.active { background: #2563eb; color: #fff; }