* { margin: 0; padding: 0; box-sizing: border-box; } :root { --primary: #6B5CE7; --primary-dark: #5648C7; --secondary: #00D4FF; --success: #00FF88; --text-primary: #1a1a1a; --text-secondary: #666; --bg-white: #ffffff; --bg-light: #f9fafb; --bg-purple-light: #f5f3ff; --border: #e5e5e5; --shadow: 0 2px 8px rgba(0, 0, 0, 0.08); --shadow-lg: 0 4px 24px rgba(0, 0, 0, 0.12); } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: var(--text-primary); background: var(--bg-white); line-height: 1.6; -webkit-font-smoothing: antialiased; } /* Main Header with Aurora Effect */ .main-header { position: relative; padding: 4rem 0; text-align: center; overflow: hidden; background: #0A0E27; } .aurora-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; } .aurora-blob { position: absolute; border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%; filter: blur(40px); mix-blend-mode: screen; opacity: 0.7; } .aurora-blob-1 { top: 0; left: 50%; width: 500px; height: 500px; background: radial-gradient(circle, #6B5CE7 0%, transparent 70%); animation: move1 20s ease-in-out infinite, hueRotate 15s linear infinite; } .aurora-blob-2 { top: 50%; right: 0; width: 600px; height: 600px; background: radial-gradient(circle, #00D4FF 0%, transparent 70%); animation: move2 25s ease-in-out infinite, hueRotate 20s linear infinite; } .aurora-blob-3 { bottom: 0; left: 0; width: 550px; height: 550px; background: radial-gradient(circle, #FF6B9D 0%, transparent 70%); animation: move3 18s ease-in-out infinite, hueRotate 12s linear infinite; } @keyframes move1 { 0%, 100% { transform: translate(0, 0); border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%; } 25% { transform: translate(-100px, -50px); border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; } 50% { transform: translate(-50px, 100px); border-radius: 30% 70% 50% 50% / 40% 60% 40% 60%; } 75% { transform: translate(100px, 50px); border-radius: 70% 30% 40% 60% / 50% 50% 70% 30%; } } @keyframes move2 { 0%, 100% { transform: translate(0, 0); border-radius: 50% 50% 60% 40% / 50% 60% 40% 50%; } 33% { transform: translate(-80px, 100px); border-radius: 40% 60% 50% 50% / 60% 40% 60% 40%; } 66% { transform: translate(120px, -80px); border-radius: 60% 40% 70% 30% / 40% 70% 30% 60%; } } @keyframes move3 { 0%, 100% { transform: translate(0, 0); border-radius: 60% 40% 40% 60% / 50% 60% 40% 50%; } 30% { transform: translate(100px, -100px); border-radius: 30% 70% 60% 40% / 60% 30% 70% 40%; } 60% { transform: translate(-100px, 80px); border-radius: 70% 30% 50% 50% / 40% 60% 50% 50%; } } @keyframes hueRotate { 0% { filter: blur(40px) hue-rotate(0deg); } 100% { filter: blur(40px) hue-rotate(360deg); } } .main-title { position: relative; z-index: 1; font-size: 2.8rem; font-weight: 900; color: white; letter-spacing: 2px; text-transform: uppercase; text-shadow: 0 2px 20px rgba(0, 0, 0, 0.5); line-height: 1.3; } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.875rem 1.75rem; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.3s; font-size: 0.95rem; border: none; font-family: 'Inter', sans-serif; } .btn:disabled { opacity: 0.4; cursor: not-allowed; transform: none !important; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover:not(:disabled) { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(107, 92, 231, 0.3); } .btn-secondary { background: var(--bg-light); color: var(--text-primary); border: 1px solid var(--border); } .btn-secondary:hover:not(:disabled) { background: white; border-color: var(--primary); color: var(--primary); } .btn-outline { background: transparent; color: var(--text-secondary); border: 1px solid var(--border); } .btn-outline:hover { border-color: var(--primary); color: var(--primary); } .btn-download { margin: 0 auto; display: flex; } /* Container */ .container { max-width: 1200px; margin: 0 auto; padding: 0 2rem; } /* Section Title */ .section-title { font-size: 2rem; font-weight: 700; text-align: center; margin-bottom: 3rem; color: var(--text-primary); } /* About Section */ .about-section { padding: 4rem 0; background: var(--bg-light); } .about-content { max-width: 1000px; margin: 0 auto; background: white; border: 1px solid var(--border); border-radius: 20px; padding: 3rem; box-shadow: var(--shadow); } .about-intro { margin-bottom: 3rem; } .lead-text { font-size: 1.2rem; line-height: 1.8; color: var(--text-secondary); text-align: center; } .project-details h3 { font-size: 1.5rem; font-weight: 700; color: var(--text-primary); margin: 2.5rem 0 1.5rem; padding-bottom: 0.75rem; border-bottom: 3px solid var(--primary); display: inline-block; } .project-details h3:first-of-type { margin-top: 0; } .project-details p { color: var(--text-secondary); line-height: 1.7; margin-bottom: 1rem; } .architecture-features { display: grid; grid-template-columns: 1fr; gap: 1.5rem; margin: 1.5rem 0; } .arch-feature { padding: 1.5rem; background: var(--bg-light); border-radius: 12px; } .arch-content h4 { font-size: 1.1rem; font-weight: 600; margin-bottom: 0.75rem; color: var(--primary); } .arch-content p { color: var(--text-secondary); line-height: 1.6; margin-bottom: 0.5rem; } .tech-list { list-style: none; padding-left: 0; margin-top: 0.75rem; } .tech-list li { padding: 0.5rem 0; color: var(--text-secondary); line-height: 1.6; } .specs-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 1.5rem 0; } .spec-item { background: var(--bg-purple-light); padding: 1.5rem; border-radius: 10px; text-align: center; } .spec-label { display: block; font-size: 0.85rem; color: var(--text-secondary); margin-bottom: 0.5rem; text-transform: uppercase; letter-spacing: 0.5px; } .spec-value { display: block; font-size: 1.3rem; font-weight: 700; color: var(--primary); } .features-list { display: flex; flex-direction: column; gap: 1rem; margin: 1.5rem 0; } .feature-item { display: flex; gap: 1rem; padding: 1rem; background: var(--bg-light); border-radius: 8px; } .feature-icon-small { width: 28px; height: 28px; border-radius: 50%; background: var(--success); color: white; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0; } .feature-text { color: var(--text-secondary); line-height: 1.6; } .tech-stack { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1.5rem 0; } .tech-badge { padding: 0.5rem 1rem; background: var(--primary); color: white; border-radius: 20px; font-size: 0.9rem; font-weight: 500; } .objectives-list { list-style: none; padding-left: 0; margin: 1.5rem 0; } .objectives-list li { padding: 0.75rem 0; padding-left: 1.5rem; position: relative; color: var(--text-secondary); } .objectives-list li:before { content: "→"; position: absolute; left: 0; color: var(--primary); font-weight: 700; } /* Detection Section */ .detection-section { padding: 4rem 0; background: var(--bg-white); } .recording-panel { background: white; border-radius: 20px; padding: 3rem; box-shadow: var(--shadow-lg); max-width: 900px; margin: 0 auto; border: 1px solid var(--border); } .panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 2px solid var(--border); } .panel-header h3 { font-size: 1.5rem; font-weight: 700; color: var(--primary); } .status-badge { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; background: var(--bg-light); border-radius: 20px; font-size: 0.9rem; font-weight: 500; } .status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--success); animation: statusPulse 2s infinite; } @keyframes statusPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .status-badge.recording { background: rgba(255, 107, 107, 0.1); } .status-badge.recording .status-dot { background: #ff6b6b; } /* Waveform */ .waveform-container { position: relative; background: var(--bg-light); border-radius: 16px; padding: 2rem; margin-bottom: 1.5rem; min-height: 200px; } #waveformCanvas { width: 100%; height: auto; display: block; } .waveform-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .record-button { width: 80px; height: 80px; border-radius: 50%; border: none; background: var(--primary); color: white; cursor: pointer; transition: all 0.3s; box-shadow: 0 4px 16px rgba(107, 92, 231, 0.3); display: flex; align-items: center; justify-content: center; } .record-button:hover:not(:disabled) { transform: scale(1.1); box-shadow: 0 6px 24px rgba(107, 92, 231, 0.4); } .record-button:disabled { opacity: 0.5; cursor: not-allowed; } .record-button.recording { background: #ff6b6b; animation: recordPulse 1.5s infinite; } @keyframes recordPulse { 0% { box-shadow: 0 0 0 0 rgba(255, 107, 107, 0.7); } 50% { box-shadow: 0 0 0 20px rgba(255, 107, 107, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 107, 107, 0); } } .timer-display { text-align: center; font-size: 2.5rem; font-weight: 700; font-family: 'Courier New', monospace; color: var(--primary); margin-bottom: 2rem; } /* Control Buttons */ .control-buttons { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 2rem; } .instructions { background: var(--bg-purple-light); padding: 1.5rem; border-radius: 10px; text-align: center; } .instructions p { color: var(--text-secondary); margin: 0; } /* Results Section */ .results-section { padding: 4rem 0; background: var(--bg-light); } .results-card { background: white; border-radius: 20px; padding: 3rem; box-shadow: var(--shadow-lg); max-width: 900px; margin: 0 auto; border: 1px solid var(--border); } .result-message { padding: 1.5rem; border-radius: 12px; text-align: center; font-size: 1.1rem; font-weight: 600; margin-bottom: 2rem; } .result-message.success { background: rgba(0, 255, 136, 0.1); color: #00aa5e; border: 2px solid #00FF88; } .result-message.warning { background: rgba(255, 193, 7, 0.1); color: #e6a700; border: 2px solid #FFC107; } .result-visualization { background: var(--bg-light); padding: 2rem; border-radius: 12px; margin-bottom: 2rem; } .result-visualization img { width: 100%; border-radius: 8px; } .audio-output { background: var(--bg-purple-light); padding: 2rem; border-radius: 12px; text-align: center; margin-bottom: 2rem; } .audio-output h4 { margin-bottom: 1rem; color: var(--primary); font-size: 1.2rem; } .audio-output audio { width: 100%; max-width: 600px; margin-bottom: 1rem; } .audio-note { color: var(--text-secondary); font-size: 0.9rem; } /* Loading Overlay */ .loading-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 2000; } .loading-spinner { width: 60px; height: 60px; border: 4px solid var(--bg-light); border-top: 4px solid var(--primary); border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: 1.5rem; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading-overlay p { color: var(--text-secondary); font-size: 1.1rem; } /* Responsive Design */ @media (max-width: 1024px) { .specs-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 768px) { .main-title { font-size: 1.8rem; } .section-title { font-size: 1.6rem; } .about-content { padding: 2rem; } .specs-grid { grid-template-columns: 1fr; } .control-buttons { grid-template-columns: 1fr; } .recording-panel { padding: 2rem; } .results-card { padding: 2rem; } .aurora-blob-1, .aurora-blob-2, .aurora-blob-3 { width: 300px; height: 300px; } } @media (max-width: 480px) { .main-title { font-size: 1.4rem; letter-spacing: 0.5px; } .container { padding: 0 1rem; } .record-button { width: 60px; height: 60px; } .about-content { padding: 1.5rem; } .aurora-blob-1, .aurora-blob-2, .aurora-blob-3 { width: 200px; height: 200px; } }