| |
|
|
| @import url('https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap'); |
|
|
| * { |
| margin: 0; |
| padding: 0; |
| box-sizing: border-box; |
| } |
|
|
| :root { |
| --blue-900: #082a63; |
| --blue-800: #0b3b8a; |
| --blue-700: #0f55c7; |
| --blue-600: #1c6ef2; |
| --blue-200: #cfe2ff; |
| --blue-100: #edf4ff; |
|
|
| --orange-600: #ff7a00; |
| --orange-500: #ff922b; |
| --orange-100: #fff1e6; |
|
|
| --white: #ffffff; |
| --slate-900: #1b2a4a; |
| --slate-700: #41557c; |
| --slate-500: #7284a8; |
| --line: #d9e4ff; |
|
|
| --glass: rgba(255, 255, 255, 0.82); |
| --shadow-sm: 0 8px 20px rgba(11, 59, 138, 0.08); |
| --shadow-md: 0 16px 35px rgba(11, 59, 138, 0.12); |
| --shadow-lg: 0 24px 60px rgba(11, 59, 138, 0.18); |
|
|
| --radius-md: 14px; |
| --radius-lg: 22px; |
|
|
| --ok: #1f9d55; |
| --warn: #ff9f1a; |
| --danger: #e53935; |
| --info: #1c6ef2; |
|
|
| --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
|
|
| body { |
| font-family: 'IBM Plex Sans', sans-serif; |
| color: var(--slate-900); |
| background: |
| radial-gradient(circle at 10% -10%, rgba(28, 110, 242, 0.2), transparent 38%), |
| radial-gradient(circle at 100% 0%, rgba(255, 122, 0, 0.14), transparent 30%), |
| linear-gradient(180deg, #f8fbff 0%, #eef4ff 45%, #f5f9ff 100%); |
| min-height: 100vh; |
| overflow-x: hidden; |
| } |
|
|
| body::before { |
| content: ''; |
| position: fixed; |
| inset: 0; |
| pointer-events: none; |
| background-image: linear-gradient(rgba(11, 59, 138, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(11, 59, 138, 0.03) 1px, transparent 1px); |
| background-size: 24px 24px; |
| z-index: -1; |
| } |
|
|
| |
| @keyframes fadeIn { |
| from { |
| opacity: 0; |
| } |
| to { |
| opacity: 1; |
| } |
| } |
|
|
| @keyframes slideInDown { |
| from { |
| opacity: 0; |
| transform: translateY(-20px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes slideInUp { |
| from { |
| opacity: 0; |
| transform: translateY(20px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes slideInLeft { |
| from { |
| opacity: 0; |
| transform: translateX(-20px); |
| } |
| to { |
| opacity: 1; |
| transform: translateX(0); |
| } |
| } |
|
|
| @keyframes slideInRight { |
| from { |
| opacity: 0; |
| transform: translateX(20px); |
| } |
| to { |
| opacity: 1; |
| transform: translateX(0); |
| } |
| } |
|
|
| @keyframes riseIn { |
| from { |
| opacity: 0; |
| transform: translateY(30px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes pulse { |
| 0% { |
| box-shadow: 0 0 0 0 rgba(28, 110, 242, 0.7); |
| } |
| 70% { |
| box-shadow: 0 0 0 10px rgba(28, 110, 242, 0); |
| } |
| 100% { |
| box-shadow: 0 0 0 0 rgba(28, 110, 242, 0); |
| } |
| } |
|
|
| @keyframes spin { |
| from { |
| transform: rotate(0deg); |
| } |
| to { |
| transform: rotate(360deg); |
| } |
| } |
|
|
| @keyframes bounce { |
| 0%, 100% { |
| transform: translateY(0); |
| } |
| 50% { |
| transform: translateY(-10px); |
| } |
| } |
|
|
| @keyframes shimmer { |
| 0% { |
| background-position: -1000px 0; |
| } |
| 100% { |
| background-position: 1000px 0; |
| } |
| } |
|
|
| h1, |
| h2, |
| h3, |
| h4, |
| .nav-brand, |
| .app-title, |
| .hero-title, |
| .section-title { |
| font-family: 'Sora', sans-serif; |
| letter-spacing: -0.02em; |
| } |
|
|
| .container, |
| .nav-container, |
| .dashboard-container, |
| .content-container { |
| width: min(1180px, calc(100% - 2.2rem)); |
| margin: 0 auto; |
| } |
|
|
| |
| .navbar { |
| position: sticky; |
| top: 0; |
| z-index: 100; |
| border-bottom: 1px solid rgba(255, 255, 255, 0.4); |
| background: linear-gradient(130deg, rgba(8, 42, 99, 0.94), rgba(15, 85, 199, 0.9)); |
| backdrop-filter: blur(8px); |
| box-shadow: var(--shadow-sm); |
| } |
|
|
| .nav-container { |
| min-height: 74px; |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 1rem; |
| } |
|
|
| .nav-brand { |
| color: var(--white); |
| display: inline-flex; |
| align-items: center; |
| gap: 0.65rem; |
| font-weight: 700; |
| font-size: 1.2rem; |
| } |
|
|
| .brand-icon, |
| .brand-icon-large { |
| filter: drop-shadow(0 0 12px rgba(255, 255, 255, 0.35)); |
| } |
|
|
| .brand-icon-large { |
| font-size: 4.2rem; |
| display: inline-block; |
| } |
|
|
| .nav-menu { |
| display: flex; |
| align-items: center; |
| gap: 0.6rem; |
| flex-wrap: wrap; |
| } |
|
|
| .nav-link { |
| color: rgba(255, 255, 255, 0.92); |
| text-decoration: none; |
| border: 1px solid transparent; |
| border-radius: 10px; |
| padding: 0.54rem 0.9rem; |
| transition: all 0.2s ease; |
| } |
|
|
| .nav-link:hover, |
| .dropdown-btn:hover { |
| border-color: rgba(255, 255, 255, 0.25); |
| background: rgba(255, 255, 255, 0.12); |
| transform: translateY(-1px); |
| } |
|
|
| .user-greeting { |
| color: rgba(255, 255, 255, 0.9); |
| margin-inline: 0.4rem; |
| } |
|
|
| .dropdown { |
| position: relative; |
| } |
|
|
| .dropdown-btn { |
| background: transparent; |
| cursor: pointer; |
| color: rgba(255, 255, 255, 0.92); |
| font: inherit; |
| border: 1px solid transparent; |
| border-radius: 10px; |
| padding: 0.54rem 0.9rem; |
| } |
|
|
| .dropdown-content { |
| position: absolute; |
| top: calc(100% + 6px); |
| left: 0; |
| min-width: 170px; |
| padding: 0.45rem; |
| border-radius: 12px; |
| border: 1px solid var(--line); |
| background: rgba(255, 255, 255, 0.98); |
| box-shadow: var(--shadow-md); |
| display: none; |
| } |
|
|
| .dropdown:hover .dropdown-content { |
| display: block; |
| } |
|
|
| .dropdown-content a { |
| color: var(--slate-900); |
| text-decoration: none; |
| display: block; |
| border-radius: 8px; |
| padding: 0.55rem 0.7rem; |
| } |
|
|
| .dropdown-content a:hover { |
| background: var(--blue-100); |
| } |
|
|
| |
| .btn { |
| border: none; |
| border-radius: 12px; |
| padding: 0.72rem 1.1rem; |
| font-weight: 700; |
| text-decoration: none; |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 0.45rem; |
| cursor: pointer; |
| transition: var(--transition); |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .btn::before { |
| content: ''; |
| position: absolute; |
| top: 50%; |
| left: 50%; |
| width: 0; |
| height: 0; |
| border-radius: 50%; |
| background: rgba(255, 255, 255, 0.2); |
| transform: translate(-50%, -50%); |
| } |
|
|
| .btn:hover::before { |
| width: 300px; |
| height: 300px; |
| animation: none; |
| } |
|
|
| .btn:hover { |
| transform: translateY(-2px); |
| } |
|
|
| .btn:active { |
| transform: translateY(0); |
| } |
|
|
| .btn-primary { |
| color: var(--white); |
| background: linear-gradient(130deg, var(--blue-700), var(--blue-600)); |
| box-shadow: 0 10px 24px rgba(28, 110, 242, 0.3); |
| } |
|
|
| .btn-primary:hover { |
| box-shadow: 0 14px 28px rgba(28, 110, 242, 0.38); |
| } |
|
|
| .btn-outline { |
| color: var(--white); |
| border: 1px solid rgba(255, 255, 255, 0.45); |
| background: rgba(255, 255, 255, 0.08); |
| backdrop-filter: blur(4px); |
| transition: var(--transition); |
| } |
|
|
| .btn-outline:hover { |
| background: rgba(255, 255, 255, 0.18); |
| border-color: rgba(255, 255, 255, 0.8); |
| } |
|
|
| .btn-secondary { |
| color: var(--white); |
| background: linear-gradient(130deg, #2f80ed, #0e58d4); |
| box-shadow: 0 10px 24px rgba(47, 128, 237, 0.3); |
| } |
|
|
| .btn-secondary:hover { |
| box-shadow: 0 14px 28px rgba(47, 128, 237, 0.38); |
| } |
|
|
| .btn-danger { |
| color: var(--white); |
| background: linear-gradient(130deg, #ef5350, #d32f2f); |
| box-shadow: 0 10px 24px rgba(239, 83, 80, 0.3); |
| } |
|
|
| .btn-danger:hover { |
| box-shadow: 0 14px 28px rgba(239, 83, 80, 0.38); |
| } |
|
|
| .btn-success { |
| color: var(--white); |
| background: linear-gradient(130deg, #4caf50, #388e3c); |
| box-shadow: 0 10px 24px rgba(76, 175, 80, 0.3); |
| } |
|
|
| .btn-success:hover { |
| box-shadow: 0 14px 28px rgba(76, 175, 80, 0.38); |
| } |
|
|
| .btn-large { |
| padding: 0.95rem 1.6rem; |
| font-size: 1rem; |
| } |
|
|
| .btn:disabled { |
| opacity: 0.6; |
| cursor: not-allowed; |
| transform: none !important; |
| } |
|
|
| .btn.loading::after { |
| content: ''; |
| display: inline-block; |
| width: 14px; |
| height: 14px; |
| border: 2px solid rgba(255, 255, 255, 0.3); |
| border-top-color: var(--white); |
| border-radius: 50%; |
| animation: spin 0.8s linear infinite; |
| margin-left: 0.4rem; |
| } |
|
|
| |
| .container { |
| min-height: calc(100vh - 74px); |
| display: grid; |
| place-items: center; |
| padding-block: 2rem; |
| } |
|
|
| .auth-box { |
| width: min(460px, 100%); |
| border-radius: var(--radius-lg); |
| border: 1px solid rgba(255, 255, 255, 0.62); |
| background: var(--glass); |
| backdrop-filter: blur(10px); |
| box-shadow: var(--shadow-lg); |
| padding: 2rem; |
| animation: riseIn 0.6s ease both; |
| } |
|
|
| .logo-container { |
| text-align: center; |
| margin-bottom: 0.8rem; |
| } |
|
|
| .app-title { |
| font-size: clamp(2rem, 5vw, 2.4rem); |
| color: var(--blue-800); |
| text-align: center; |
| } |
|
|
| .app-subtitle { |
| text-align: center; |
| color: var(--slate-700); |
| margin-top: 0.35rem; |
| margin-bottom: 1.35rem; |
| } |
|
|
| .tab-buttons { |
| background: var(--blue-100); |
| border-radius: 12px; |
| padding: 0.3rem; |
| display: flex; |
| gap: 0.35rem; |
| margin-bottom: 1.2rem; |
| } |
|
|
| .tab-btn { |
| flex: 1; |
| border-radius: 9px; |
| border: none; |
| background: transparent; |
| padding: 0.62rem; |
| color: var(--slate-700); |
| font-weight: 700; |
| cursor: pointer; |
| } |
|
|
| .tab-btn.active { |
| background: var(--white); |
| color: var(--blue-800); |
| box-shadow: 0 8px 18px rgba(11, 59, 138, 0.12); |
| } |
|
|
| .tab-content { |
| display: none; |
| } |
|
|
| .tab-content.active { |
| display: block; |
| animation: fadeIn 0.3s ease; |
| } |
|
|
| .form-group { |
| margin-bottom: 0.85rem; |
| } |
|
|
| .form-group label { |
| display: block; |
| margin-bottom: 0.4rem; |
| font-weight: 600; |
| color: var(--slate-900); |
| } |
|
|
| .form-group input { |
| width: 100%; |
| border: 1px solid var(--line); |
| border-radius: 10px; |
| background: var(--white); |
| padding: 0.72rem 0.8rem; |
| font: inherit; |
| transition: box-shadow 0.2s ease, border-color 0.2s ease; |
| } |
|
|
| .form-group input:focus { |
| outline: none; |
| border-color: var(--blue-600); |
| box-shadow: 0 0 0 4px rgba(28, 110, 242, 0.14); |
| } |
|
|
| .message { |
| display: none; |
| border-radius: 10px; |
| margin-top: 0.95rem; |
| padding: 0.72rem 0.8rem; |
| font-weight: 600; |
| } |
|
|
| .message.success { |
| display: block; |
| color: #166334; |
| background: #e9fce8; |
| border: 1px solid #b6edb4; |
| } |
|
|
| .message.error { |
| display: block; |
| color: #8e2236; |
| background: #ffe9ed; |
| border: 1px solid #ffc9d5; |
| } |
|
|
| .back-link { |
| margin-top: 1rem; |
| text-align: center; |
| } |
|
|
| .back-link a { |
| color: var(--blue-700); |
| text-decoration: none; |
| font-weight: 600; |
| } |
|
|
| .back-link a:hover { |
| color: var(--orange-600); |
| } |
|
|
| |
| .hero-section { |
| position: relative; |
| overflow: hidden; |
| padding: 5.2rem 1.2rem 4.4rem; |
| } |
|
|
| .hero-section::before, |
| .hero-section::after { |
| content: ''; |
| position: absolute; |
| border-radius: 999px; |
| z-index: -1; |
| } |
|
|
| .hero-section::before { |
| width: 380px; |
| height: 380px; |
| right: -90px; |
| top: -110px; |
| background: radial-gradient(circle, rgba(255, 122, 0, 0.2), transparent 72%); |
| } |
|
|
| .hero-section::after { |
| width: 420px; |
| height: 420px; |
| left: -140px; |
| bottom: -220px; |
| background: radial-gradient(circle, rgba(28, 110, 242, 0.22), transparent 72%); |
| } |
|
|
| .hero-content { |
| width: min(980px, 100%); |
| margin: 0 auto; |
| text-align: center; |
| padding: 2.4rem; |
| border-radius: 28px; |
| background: linear-gradient(130deg, rgba(8, 42, 99, 0.94), rgba(11, 59, 138, 0.9), rgba(15, 85, 199, 0.88)); |
| border: 1px solid rgba(255, 255, 255, 0.2); |
| color: var(--white); |
| box-shadow: var(--shadow-lg); |
| animation: riseIn 0.65s ease both; |
| } |
|
|
| .hero-title { |
| font-size: clamp(2.4rem, 6vw, 4.1rem); |
| margin-bottom: 0.45rem; |
| } |
|
|
| .hero-subtitle { |
| font-size: clamp(1.1rem, 2.3vw, 1.52rem); |
| font-weight: 600; |
| opacity: 0.98; |
| } |
|
|
| .hero-description { |
| max-width: 730px; |
| margin: 1.2rem auto 1.8rem; |
| color: rgba(255, 255, 255, 0.9); |
| line-height: 1.62; |
| } |
|
|
| .hero-buttons { |
| display: flex; |
| justify-content: center; |
| flex-wrap: wrap; |
| gap: 0.75rem; |
| } |
|
|
| .hero-buttons .btn-primary { |
| background: linear-gradient(130deg, var(--orange-600), var(--orange-500)); |
| box-shadow: 0 10px 24px rgba(255, 122, 0, 0.35); |
| } |
|
|
| .hero-buttons .btn-outline { |
| border-color: rgba(255, 255, 255, 0.56); |
| } |
|
|
| .section { |
| padding: 4.2rem 1rem; |
| } |
|
|
| .section-alt { |
| background: linear-gradient(180deg, #f2f7ff, #eaf2ff); |
| } |
|
|
| .section-title { |
| text-align: center; |
| font-size: clamp(1.7rem, 4vw, 2.45rem); |
| color: var(--blue-900); |
| } |
|
|
| .section-description { |
| text-align: center; |
| margin: 0.9rem auto 2rem; |
| max-width: 760px; |
| color: var(--slate-700); |
| line-height: 1.7; |
| } |
|
|
| .stats-grid, |
| .features-grid, |
| .tech-grid { |
| display: grid; |
| gap: 1rem; |
| } |
|
|
| .stats-grid { |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); |
| } |
|
|
| .features-grid { |
| grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); |
| } |
|
|
| .tech-grid { |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); |
| margin-bottom: 1.1rem; |
| } |
|
|
| .stat-card, |
| .feature-card, |
| .tech-card, |
| .info-card, |
| .workflow-step, |
| .model-info, |
| .upload-section, |
| .results-section, |
| .dashboard-card, |
| .models-section, |
| .info-box, |
| .video-section, |
| .alerts-panel { |
| border-radius: var(--radius-lg); |
| border: 1px solid rgba(255, 255, 255, 0.76); |
| background: var(--glass); |
| backdrop-filter: blur(8px); |
| box-shadow: var(--shadow-md); |
| } |
|
|
| .stat-card, |
| .feature-card, |
| .tech-card, |
| .workflow-step, |
| .info-card { |
| padding: 1.35rem; |
| transition: transform 0.25s ease, box-shadow 0.25s ease; |
| } |
|
|
| .stat-card:hover, |
| .feature-card:hover, |
| .tech-card:hover, |
| .workflow-step:hover, |
| .info-card:hover, |
| .dashboard-card:hover { |
| transform: translateY(-4px); |
| box-shadow: var(--shadow-lg); |
| } |
|
|
| .stat-number { |
| font-size: clamp(1.8rem, 4vw, 2.6rem); |
| color: var(--blue-700); |
| font-weight: 800; |
| } |
|
|
| .stat-label { |
| color: var(--slate-700); |
| margin-top: 0.3rem; |
| } |
|
|
| .feature-icon { |
| font-size: 1.8rem; |
| margin-bottom: 0.55rem; |
| } |
|
|
| .feature-card h3, |
| .tech-card h3, |
| .workflow-step h3, |
| .info-card h3 { |
| color: var(--blue-900); |
| margin-bottom: 0.5rem; |
| } |
|
|
| .feature-card p, |
| .tech-card p, |
| .workflow-step p, |
| .info-card p, |
| .model-list li { |
| color: var(--slate-700); |
| line-height: 1.6; |
| } |
|
|
| .model-info { |
| padding: 1.4rem; |
| } |
|
|
| .model-info h3 { |
| color: var(--blue-800); |
| margin-bottom: 0.65rem; |
| } |
|
|
| .model-list { |
| list-style: none; |
| } |
|
|
| .model-list li { |
| padding-block: 0.6rem; |
| border-bottom: 1px dashed var(--line); |
| } |
|
|
| .model-list li:last-child { |
| border-bottom: none; |
| } |
|
|
| .workflow-steps { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); |
| gap: 0.85rem; |
| } |
|
|
| .step-number { |
| width: 44px; |
| height: 44px; |
| display: grid; |
| place-items: center; |
| border-radius: 999px; |
| font-weight: 800; |
| color: var(--white); |
| margin-bottom: 0.7rem; |
| background: linear-gradient(130deg, var(--blue-700), var(--orange-600)); |
| } |
|
|
| .workflow-arrow { |
| display: none; |
| } |
|
|
| .cta-section { |
| margin-top: 0.6rem; |
| padding: 4rem 1rem; |
| text-align: center; |
| color: var(--white); |
| background: linear-gradient(120deg, var(--blue-900), var(--blue-700)); |
| } |
|
|
| .cta-section h2 { |
| font-size: clamp(1.65rem, 4vw, 2.3rem); |
| } |
|
|
| .cta-section p { |
| margin: 0.8rem auto 1.5rem; |
| max-width: 580px; |
| color: rgba(255, 255, 255, 0.9); |
| } |
|
|
| .cta-section .btn-primary { |
| background: linear-gradient(120deg, var(--orange-600), var(--orange-500)); |
| } |
|
|
| .footer { |
| background: linear-gradient(130deg, #061d45, #0a3277); |
| color: rgba(255, 255, 255, 0.88); |
| padding: 2.2rem 1rem 1.1rem; |
| } |
|
|
| .footer-content { |
| width: min(1180px, calc(100% - 2.2rem)); |
| margin: 0 auto; |
| display: grid; |
| gap: 1rem; |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); |
| } |
|
|
| .footer-section h3, |
| .footer-section h4 { |
| color: var(--white); |
| margin-bottom: 0.5rem; |
| } |
|
|
| .footer-section ul { |
| list-style: none; |
| } |
|
|
| .footer-section li { |
| opacity: 0.86; |
| margin-bottom: 0.3rem; |
| } |
|
|
| .footer-bottom { |
| width: min(1180px, calc(100% - 2.2rem)); |
| margin: 1rem auto 0; |
| border-top: 1px solid rgba(255, 255, 255, 0.16); |
| padding-top: 0.8rem; |
| text-align: center; |
| } |
|
|
| |
| .dashboard-container { |
| padding-block: 2rem; |
| } |
|
|
| .dashboard-header { |
| text-align: center; |
| margin-bottom: 1.4rem; |
| } |
|
|
| .dashboard-header h1 { |
| color: var(--blue-900); |
| font-size: clamp(1.8rem, 4vw, 2.45rem); |
| } |
|
|
| .dashboard-header p { |
| color: var(--slate-700); |
| margin-top: 0.4rem; |
| } |
|
|
| .dashboard-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); |
| gap: 1rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .dashboard-card { |
| padding: 1.35rem; |
| transition: transform 0.25s ease, box-shadow 0.25s ease; |
| } |
|
|
| .card-icon { |
| color: var(--blue-700); |
| margin-bottom: 0.75rem; |
| } |
|
|
| .dashboard-card h2 { |
| color: var(--blue-900); |
| margin-bottom: 0.5rem; |
| } |
|
|
| .dashboard-card p { |
| color: var(--slate-700); |
| } |
|
|
| .feature-list { |
| list-style: none; |
| margin: 0.9rem 0 1rem; |
| } |
|
|
| .feature-list li { |
| color: var(--slate-700); |
| padding-block: 0.25rem; |
| } |
|
|
| .models-section { |
| padding: 1.2rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .models-section h2 { |
| color: var(--blue-900); |
| margin-bottom: 0.65rem; |
| } |
|
|
| .models-grid { |
| display: flex; |
| gap: 0.6rem; |
| flex-wrap: wrap; |
| } |
|
|
| .model-badge { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.5rem; |
| background: linear-gradient(130deg, var(--blue-700), #4086ff); |
| color: var(--white); |
| border-radius: 999px; |
| padding: 0.45rem 0.9rem; |
| font-weight: 700; |
| box-shadow: var(--shadow-sm); |
| } |
|
|
| .info-section { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); |
| gap: 0.85rem; |
| } |
|
|
| |
| .content-container { |
| padding-block: 1.5rem 2rem; |
| } |
|
|
| .page-header { |
| margin-bottom: 1rem; |
| } |
|
|
| .page-header h1 { |
| color: var(--blue-900); |
| font-size: clamp(1.6rem, 3.5vw, 2.1rem); |
| } |
|
|
| .page-header p { |
| color: var(--slate-700); |
| margin-top: 0.32rem; |
| } |
|
|
| |
| .live-camera-layout { |
| display: grid; |
| grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr); |
| gap: 1rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .video-section, |
| .alerts-panel, |
| .info-box { |
| padding: 1rem; |
| } |
|
|
| .video-container { |
| position: relative; |
| border-radius: var(--radius-md); |
| overflow: hidden; |
| border: 1px solid var(--line); |
| background: #061839; |
| } |
|
|
| #camera-feed { |
| width: 100%; |
| display: block; |
| min-height: 280px; |
| object-fit: cover; |
| } |
|
|
| .video-overlay { |
| position: absolute; |
| top: 10px; |
| left: 10px; |
| } |
|
|
| .status-badge { |
| background: rgba(6, 24, 57, 0.76); |
| border: 1px solid rgba(255, 255, 255, 0.25); |
| color: var(--white); |
| border-radius: 999px; |
| padding: 0.34rem 0.65rem; |
| display: inline-flex; |
| align-items: center; |
| gap: 0.42rem; |
| font-weight: 700; |
| } |
|
|
| .status-dot { |
| width: 9px; |
| height: 9px; |
| border-radius: 999px; |
| background: #b8c3db; |
| } |
|
|
| .status-dot.active { |
| background: #4ad97f; |
| animation: pulse 1.6s infinite; |
| } |
|
|
| .video-controls { |
| margin-top: 0.8rem; |
| display: grid; |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| gap: 0.6rem; |
| } |
|
|
| .alerts-panel h2, |
| .stats-container h3, |
| .info-box h3 { |
| color: var(--blue-900); |
| } |
|
|
| .alerts-container { |
| margin-top: 0.65rem; |
| max-height: 390px; |
| overflow-y: auto; |
| padding-right: 0.2rem; |
| } |
|
|
| .alert-placeholder { |
| color: var(--slate-700); |
| text-align: center; |
| padding: 1.4rem 0.2rem; |
| } |
|
|
| .alert-item { |
| border-left: 4px solid var(--warn); |
| border-radius: 10px; |
| padding: 0.72rem; |
| margin-bottom: 0.55rem; |
| background: var(--orange-100); |
| } |
|
|
| .alert-item.high { |
| border-left-color: var(--danger); |
| background: #ffe9ed; |
| } |
|
|
| .stats-container { |
| border-top: 1px solid var(--line); |
| margin-top: 0.8rem; |
| padding-top: 0.8rem; |
| } |
|
|
| .stat-item { |
| display: flex; |
| justify-content: space-between; |
| padding: 0.4rem 0; |
| color: var(--slate-700); |
| } |
|
|
| .stat-value { |
| color: var(--blue-700); |
| font-weight: 700; |
| } |
|
|
| .status-active { |
| color: var(--ok) !important; |
| } |
|
|
| .info-box ul { |
| margin-top: 0.55rem; |
| padding-left: 1.2rem; |
| } |
|
|
| .info-box li { |
| margin-bottom: 0.38rem; |
| color: var(--slate-700); |
| } |
|
|
| |
| .upload-section, |
| .results-section { |
| padding: 1.2rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .upload-box { |
| border: 2px dashed var(--line); |
| border-radius: var(--radius-md); |
| background: linear-gradient(180deg, var(--white), #f9fbff); |
| text-align: center; |
| padding: 2.2rem 1rem; |
| transition: border-color 0.2s ease, transform 0.2s ease; |
| cursor: pointer; |
| } |
|
|
| .upload-box:hover { |
| border-color: var(--blue-600); |
| transform: translateY(-2px); |
| } |
|
|
| .upload-icon { |
| font-size: 2.5rem; |
| margin-bottom: 0.45rem; |
| } |
|
|
| .file-info { |
| margin-top: 0.85rem; |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 1rem; |
| border: 1px solid var(--line); |
| border-radius: 12px; |
| background: var(--white); |
| padding: 0.85rem; |
| } |
|
|
| .file-details { |
| display: flex; |
| align-items: center; |
| gap: 0.65rem; |
| } |
|
|
| .file-icon { |
| font-size: 1.6rem; |
| } |
|
|
| .progress-container { |
| margin-top: 0.85rem; |
| } |
|
|
| .progress-bar { |
| width: 100%; |
| height: 14px; |
| background: #deebff; |
| border-radius: 999px; |
| overflow: hidden; |
| } |
|
|
| .progress-fill { |
| height: 100%; |
| width: 0; |
| background: linear-gradient(90deg, var(--blue-600), var(--orange-600)); |
| transition: width 0.25s ease; |
| } |
|
|
| #progress-text { |
| margin-top: 0.42rem; |
| color: var(--slate-700); |
| } |
|
|
| .results-summary { |
| display: grid; |
| gap: 0.7rem; |
| grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); |
| margin: 1rem 0; |
| } |
|
|
| .summary-card { |
| border: 1px solid var(--line); |
| border-radius: 12px; |
| padding: 0.9rem; |
| background: var(--white); |
| text-align: center; |
| } |
|
|
| .summary-card.alert { |
| background: var(--orange-100); |
| } |
|
|
| .summary-value { |
| font-size: clamp(1.5rem, 3.8vw, 2.1rem); |
| color: var(--blue-700); |
| font-weight: 800; |
| margin-top: 0.34rem; |
| } |
|
|
| .detections-table, |
| .alerts-results { |
| margin-top: 1rem; |
| } |
|
|
| .detection-item, |
| .alert-item { |
| border: 1px solid var(--line); |
| border-radius: 10px; |
| background: var(--white); |
| padding: 0.78rem; |
| margin-bottom: 0.55rem; |
| } |
|
|
| |
| .status-chip { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.45rem; |
| border-radius: 999px; |
| padding: 0.38rem 0.8rem; |
| font-size: 0.85rem; |
| font-weight: 600; |
| } |
|
|
| .status-chip.ok { |
| background: rgba(31, 157, 85, 0.12); |
| color: var(--ok); |
| border: 1px solid rgba(31, 157, 85, 0.3); |
| } |
|
|
| .status-chip.warn { |
| background: rgba(255, 159, 26, 0.12); |
| color: var(--warn); |
| border: 1px solid rgba(255, 159, 26, 0.3); |
| } |
|
|
| .status-chip.danger { |
| background: rgba(229, 57, 53, 0.12); |
| color: var(--danger); |
| border: 1px solid rgba(229, 57, 53, 0.3); |
| } |
|
|
| .status-chip.info { |
| background: rgba(28, 110, 242, 0.12); |
| color: var(--info); |
| border: 1px solid rgba(28, 110, 242, 0.3); |
| } |
|
|
| |
| #toast-container { |
| position: fixed; |
| top: 90px; |
| right: 20px; |
| z-index: 1000; |
| pointer-events: none; |
| } |
|
|
| .toast { |
| background: var(--white); |
| border-radius: 12px; |
| border: 1px solid var(--line); |
| padding: 1rem 1.2rem; |
| margin-bottom: 0.8rem; |
| box-shadow: var(--shadow-md); |
| min-width: 280px; |
| pointer-events: all; |
| animation: slideInRight 0.3s ease both; |
| display: flex; |
| align-items: center; |
| gap: 0.8rem; |
| } |
|
|
| .toast.success { |
| border-left: 4px solid var(--ok); |
| } |
|
|
| .toast.success::before { |
| content: '✓'; |
| color: var(--ok); |
| font-weight: 800; |
| font-size: 1.2rem; |
| } |
|
|
| .toast.error { |
| border-left: 4px solid var(--danger); |
| } |
|
|
| .toast.error::before { |
| content: '✕'; |
| color: var(--danger); |
| font-weight: 800; |
| font-size: 1.2rem; |
| } |
|
|
| .toast.warning { |
| border-left: 4px solid var(--warn); |
| } |
|
|
| .toast.warning::before { |
| content: '⚠'; |
| color: var(--warn); |
| font-weight: 800; |
| font-size: 1.2rem; |
| } |
|
|
| .toast.info { |
| border-left: 4px solid var(--info); |
| } |
|
|
| .toast.info::before { |
| content: 'ℹ'; |
| color: var(--info); |
| font-weight: 800; |
| font-size: 1.2rem; |
| } |
|
|
| |
| .modal-overlay { |
| position: fixed; |
| top: 0; |
| left: 0; |
| right: 0; |
| bottom: 0; |
| background: rgba(8, 42, 99, 0.5); |
| backdrop-filter: blur(4px); |
| display: none; |
| align-items: center; |
| justify-content: center; |
| z-index: 999; |
| animation: fadeIn 0.2s ease; |
| } |
|
|
| .modal-overlay.open { |
| display: flex; |
| } |
|
|
| .modal { |
| background: var(--white); |
| border-radius: var(--radius-lg); |
| border: 1px solid var(--line); |
| box-shadow: var(--shadow-lg); |
| max-width: 540px; |
| width: min(100%, calc(100% - 2rem)); |
| animation: slideInUp 0.3s ease both; |
| } |
|
|
| .modal-header { |
| border-bottom: 1px solid var(--line); |
| padding: 1.4rem; |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| } |
|
|
| .modal-title { |
| font-size: 1.3rem; |
| color: var(--blue-900); |
| font-weight: 700; |
| } |
|
|
| .modal-close { |
| background: none; |
| border: none; |
| font-size: 1.5rem; |
| cursor: pointer; |
| color: var(--slate-500); |
| transition: var(--transition); |
| width: 40px; |
| height: 40px; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| } |
|
|
| .modal-close:hover { |
| color: var(--blue-700); |
| background: var(--blue-100); |
| border-radius: 8px; |
| } |
|
|
| .modal-body { |
| padding: 1.4rem; |
| } |
|
|
| .modal-footer { |
| border-top: 1px solid var(--line); |
| padding: 1.4rem; |
| display: flex; |
| gap: 0.8rem; |
| justify-content: flex-end; |
| } |
|
|
| |
| .spinner { |
| display: inline-block; |
| width: 20px; |
| height: 20px; |
| border: 3px solid rgba(28, 110, 242, 0.3); |
| border-top-color: var(--blue-600); |
| border-radius: 50%; |
| animation: spin 0.8s linear infinite; |
| } |
|
|
| |
| .reveal { |
| opacity: 0; |
| animation: slideInUp 0.6s ease both; |
| } |
|
|
| |
| .hidden { |
| display: none !important; |
| } |
|
|
| .visible { |
| display: block !important; |
| } |
|
|
| .text-center { |
| text-align: center; |
| } |
|
|
| .text-muted { |
| color: var(--slate-500); |
| } |
|
|
| .text-primary { |
| color: var(--blue-700); |
| } |
|
|
| .text-success { |
| color: var(--ok); |
| } |
|
|
| .text-warning { |
| color: var(--warn); |
| } |
|
|
| .text-danger { |
| color: var(--danger); |
| } |
|
|
| |
| @media (max-width: 960px) { |
| .nav-menu { |
| gap: 0.4rem; |
| } |
|
|
| .user-greeting { |
| display: none; |
| } |
|
|
| .nav-container { |
| min-height: 68px; |
| } |
|
|
| .nav-brand { |
| font-size: 1rem; |
| gap: 0.4rem; |
| } |
|
|
| .dashboard-grid, |
| .live-camera-layout { |
| grid-template-columns: 1fr; |
| } |
|
|
| .hero-section { |
| padding: 3.5rem 1rem 3rem; |
| } |
|
|
| .hero-title { |
| font-size: 2.5rem; |
| } |
|
|
| .section { |
| padding: 3rem 1rem; |
| } |
|
|
| .stats-grid { |
| grid-template-columns: repeat(2, 1fr); |
| } |
|
|
| .features-grid { |
| grid-template-columns: repeat(2, 1fr); |
| } |
|
|
| .footer-content { |
| grid-template-columns: repeat(2, 1fr); |
| } |
| } |
|
|
| @media (max-width: 640px) { |
| .nav-menu { |
| gap: 0.3rem; |
| } |
|
|
| .nav-link, |
| .dropdown-btn { |
| padding: 0.45rem 0.6rem; |
| font-size: 0.9rem; |
| } |
|
|
| .container, |
| .nav-container, |
| .dashboard-container, |
| .content-container { |
| width: 100%; |
| padding: 0 1rem; |
| } |
|
|
| .hero-section { |
| padding: 2.5rem 1rem 2rem; |
| } |
|
|
| .hero-content { |
| padding: 1.6rem; |
| } |
|
|
| .hero-title { |
| font-size: 1.8rem; |
| } |
|
|
| .hero-subtitle { |
| font-size: 1rem; |
| } |
|
|
| .hero-buttons { |
| flex-direction: column; |
| gap: 0.6rem; |
| } |
|
|
| .hero-buttons .btn { |
| width: 100%; |
| } |
|
|
| .btn { |
| padding: 0.64rem 1rem; |
| font-size: 0.95rem; |
| } |
|
|
| .btn-large { |
| padding: 0.8rem 1.4rem; |
| } |
|
|
| .section { |
| padding: 2rem 1rem; |
| } |
|
|
| .stats-grid, |
| .features-grid, |
| .tech-grid { |
| grid-template-columns: 1fr; |
| } |
|
|
| .models-grid { |
| flex-direction: column; |
| } |
|
|
| .modal { |
| width: 100% !important; |
| margin: 0 1rem; |
| } |
|
|
| .dashboard-grid { |
| gap: 0.8rem; |
| } |
|
|
| .dashboard-card { |
| padding: 1rem; |
| } |
|
|
| .video-controls { |
| grid-template-columns: 1fr; |
| } |
|
|
| .alerts-container { |
| max-height: 250px; |
| } |
|
|
| .results-summary { |
| grid-template-columns: repeat(2, 1fr); |
| } |
|
|
| .footer-content { |
| grid-template-columns: 1fr; |
| } |
|
|
| #toast-container { |
| left: 20px; |
| right: 20px; |
| } |
|
|
| .toast { |
| min-width: unset; |
| } |
| } |
|
|
| @media (max-width: 480px) { |
| .nav-brand { |
| font-size: 0.9rem; |
| } |
|
|
| .brand-icon { |
| font-size: 1rem; |
| } |
|
|
| .page-header h1 { |
| font-size: 1.5rem; |
| } |
|
|
| .dashboard-header h1 { |
| font-size: 1.6rem; |
| } |
|
|
| .app-title { |
| font-size: 1.8rem; |
| } |
|
|
| .section-title { |
| font-size: 1.5rem; |
| } |
|
|
| .file-info { |
| flex-direction: column; |
| gap: 0.6rem; |
| align-items: flex-start; |
| } |
|
|
| .upload-box { |
| padding: 1.6rem 0.8rem; |
| } |
|
|
| .cta-section { |
| padding: 2.5rem 1rem; |
| } |
|
|
| .cta-section h2 { |
| font-size: 1.4rem; |
| } |
|
|
| .results-summary { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| |
| @media (max-height: 600px) and (orientation: landscape) { |
| .hero-section { |
| padding: 2rem 1rem; |
| } |
|
|
| .hero-content { |
| padding: 1.2rem; |
| } |
|
|
| .section { |
| padding: 2rem 1rem; |
| } |
| } |
|
|
| .framewise-list { |
| display: grid; |
| gap: 0.75rem; |
| grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); |
| } |
|
|
| .framewise-card { |
| border: 1px solid var(--line); |
| border-left: 5px solid var(--blue-600); |
| border-radius: 12px; |
| background: var(--white); |
| padding: 0.9rem; |
| box-shadow: var(--shadow-sm); |
| } |
|
|
| .framewise-card.safe { |
| border-left-color: var(--ok); |
| } |
|
|
| .framewise-card.warning, |
| .framewise-card.high { |
| border-left-color: var(--warn); |
| } |
|
|
| .framewise-card.critical { |
| border-left-color: var(--danger); |
| background: #fff5f5; |
| } |
|
|
| .framewise-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 0.75rem; |
| margin-bottom: 0.55rem; |
| } |
|
|
| .badge { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| border-radius: 999px; |
| padding: 0.24rem 0.6rem; |
| font-size: 0.78rem; |
| font-weight: 700; |
| text-transform: uppercase; |
| background: var(--blue-100); |
| color: var(--blue-800); |
| } |
|
|
| .badge.safe, |
| .badge.low { |
| background: #e8faef; |
| color: #167a42; |
| } |
|
|
| .badge.medium, |
| .badge.high { |
| background: #fff1db; |
| color: #9d4b04; |
| } |
|
|
| .badge.critical { |
| background: #ffe2e2; |
| color: #b42318; |
| } |
|
|
| |
| .modal { |
| position: fixed; |
| inset: 0; |
| z-index: 110; |
| background: rgba(8, 21, 45, 0.68); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| padding: 1rem; |
| } |
|
|
| .modal-content { |
| width: min(620px, 100%); |
| background: var(--white); |
| border-radius: 16px; |
| padding: 1.1rem; |
| position: relative; |
| box-shadow: var(--shadow-lg); |
| } |
|
|
| .close { |
| position: absolute; |
| top: 8px; |
| right: 12px; |
| font-size: 1.65rem; |
| color: var(--slate-700); |
| cursor: pointer; |
| } |
|
|
| .close:hover { |
| color: var(--danger); |
| } |
|
|
| |
| .status-chip { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.35rem; |
| border-radius: 999px; |
| padding: 0.25rem 0.6rem; |
| font-size: 0.8rem; |
| font-weight: 700; |
| } |
|
|
| .status-chip.ok { |
| background: #e8faef; |
| color: #167a42; |
| } |
|
|
| .status-chip.warn { |
| background: var(--orange-100); |
| color: #9d4b04; |
| } |
|
|
| .status-chip.info { |
| background: var(--blue-100); |
| color: var(--blue-800); |
| } |
|
|
| .toast-container { |
| position: fixed; |
| right: 14px; |
| bottom: 14px; |
| z-index: 120; |
| display: flex; |
| flex-direction: column; |
| gap: 0.55rem; |
| } |
|
|
| .toast { |
| min-width: 220px; |
| max-width: 360px; |
| padding: 0.7rem 0.85rem; |
| border-radius: 12px; |
| color: #102042; |
| background: var(--white); |
| border: 1px solid var(--line); |
| box-shadow: var(--shadow-md); |
| animation: riseIn 0.2s ease; |
| font-weight: 600; |
| } |
|
|
| .toast.success { |
| border-color: #b5ecc9; |
| background: #e9fcef; |
| color: #0f6b37; |
| } |
|
|
| .toast.error { |
| border-color: #ffd2db; |
| background: #fff1f4; |
| color: #90233a; |
| } |
|
|
| .toast.info { |
| border-color: #cde0ff; |
| background: #edf4ff; |
| color: #0d4fa5; |
| } |
|
|
| |
| @keyframes pulse { |
| 0%, |
| 100% { opacity: 1; } |
| 50% { opacity: 0.4; } |
| } |
|
|
| @keyframes riseIn { |
| from { |
| opacity: 0; |
| transform: translateY(14px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes fadeIn { |
| from { opacity: 0; } |
| to { opacity: 1; } |
| } |
|
|
| .reveal { |
| opacity: 0; |
| transform: translateY(16px); |
| transition: opacity 0.45s ease, transform 0.45s ease; |
| } |
|
|
| .reveal.show { |
| opacity: 1; |
| transform: translateY(0); |
| } |
|
|
| |
| @media (max-width: 980px) { |
| .live-camera-layout { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| @media (max-width: 768px) { |
| .nav-container { |
| padding-block: 0.62rem; |
| min-height: auto; |
| } |
|
|
| .nav-menu { |
| width: 100%; |
| justify-content: center; |
| } |
|
|
| .auth-box { |
| padding: 1.35rem; |
| } |
|
|
| .hero-content { |
| padding: 1.5rem; |
| } |
|
|
| .video-controls { |
| grid-template-columns: 1fr; |
| } |
|
|
| .file-info { |
| flex-direction: column; |
| align-items: stretch; |
| } |
| } |
|
|
| |
| .model-selection-panel { |
| background: var(--white); |
| border: 1px solid var(--line); |
| border-radius: var(--radius-md); |
| margin: 1rem 0; |
| box-shadow: var(--shadow-sm); |
| overflow: hidden; |
| } |
|
|
| .panel-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| padding: 1rem 1.2rem; |
| background: linear-gradient(90deg, #edf4ff 0%, #eef4ff 100%); |
| border-bottom: 1px solid var(--line); |
| cursor: pointer; |
| user-select: none; |
| transition: background 0.2s ease; |
| } |
|
|
| .panel-header:hover { |
| background: linear-gradient(90deg, #dce8ff 0%, #dde9ff 100%); |
| } |
|
|
| .panel-title { |
| font-size: 1rem; |
| font-weight: 600; |
| color: var(--blue-800); |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| } |
|
|
| .toggle-icon { |
| font-size: 0.85rem; |
| color: var(--slate-700); |
| transition: transform 0.3s ease; |
| } |
|
|
| .panel-header:hover .toggle-icon { |
| transform: scale(1.1); |
| } |
|
|
| .panel-content { |
| max-height: 0; |
| overflow: hidden; |
| transition: max-height 0.3s ease, padding 0.3s ease; |
| padding: 0; |
| margin-top: 0; |
| } |
|
|
| .panel-content.open { |
| max-height: 800px; |
| padding: 1.2rem; |
| margin-top: 1rem; |
| border-top: 1px solid var(--line); |
| } |
|
|
| .models-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); |
| gap: 1rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .model-card { |
| border: 1px solid var(--line); |
| border-radius: 12px; |
| background: var(--white); |
| transition: all 0.2s ease; |
| overflow: hidden; |
| } |
|
|
| .model-card:hover { |
| border-color: var(--blue-600); |
| box-shadow: var(--shadow-sm); |
| transform: translateY(-2px); |
| } |
|
|
| .model-checkbox-label { |
| display: flex; |
| align-items: flex-start; |
| padding: 1rem; |
| cursor: pointer; |
| gap: 0.75rem; |
| } |
|
|
| .model-checkbox { |
| width: 20px; |
| height: 20px; |
| margin-top: 2px; |
| cursor: pointer; |
| accent-color: var(--blue-600); |
| flex-shrink: 0; |
| } |
|
|
| .checkbox-content { |
| flex: 1; |
| } |
|
|
| .checkbox-content strong { |
| display: block; |
| color: var(--slate-900); |
| margin-bottom: 0.3rem; |
| font-size: 0.95rem; |
| } |
|
|
| .checkbox-content p { |
| font-size: 0.85rem; |
| color: var(--slate-700); |
| margin-bottom: 0.5rem; |
| line-height: 1.4; |
| } |
|
|
| .model-badge { |
| display: inline-block; |
| background: var(--blue-100); |
| color: var(--blue-800); |
| padding: 0.25rem 0.6rem; |
| border-radius: 6px; |
| font-size: 0.75rem; |
| font-weight: 600; |
| text-transform: uppercase; |
| } |
|
|
| .panel-actions { |
| display: flex; |
| gap: 0.75rem; |
| justify-content: flex-end; |
| padding-top: 1rem; |
| border-top: 1px solid var(--line); |
| } |
|
|
| .loading-text { |
| text-align: center; |
| color: var(--slate-700); |
| padding: 1rem; |
| font-size: 0.9rem; |
| } |
|
|
| |
| .panel-actions .btn { |
| font-size: 0.9rem; |
| padding: 0.45rem 0.9rem; |
| } |
|
|
| |
| .video-container { |
| position: relative; |
| width: 100%; |
| aspect-ratio: 16 / 9; |
| background: #000; |
| border-radius: var(--radius-md); |
| overflow: hidden; |
| } |
|
|
| #camera-feed { |
| width: 100%; |
| height: 100%; |
| object-fit: cover; |
| display: block; |
| } |
|
|
| #camera-feed.detection-active { |
| box-shadow: 0 0 20px rgba(255, 122, 0, 0.6), inset 0 0 20px rgba(255, 122, 0, 0.1); |
| } |
|
|
| |
| .status-info { |
| background: var(--blue-100); |
| border: 1px solid var(--blue-200); |
| border-radius: var(--radius-md); |
| padding: 1rem; |
| margin-bottom: 1rem; |
| color: var(--blue-900); |
| } |
|
|
| .status-info p { |
| margin: 0.5rem 0; |
| font-size: 0.95rem; |
| } |
|
|
| .status-info p span { |
| font-weight: 600; |
| color: var(--blue-700); |
| } |
|
|