Spaces:
Runtime error
Runtime error
| /* Dark Theme Core */ | |
| :root { | |
| --bg-primary: #0a0a0a; | |
| --bg-secondary: #111111; | |
| --bg-surface: #161616; | |
| --bg-card: #1d1d1d; | |
| --bg-input: #232323; | |
| --text-primary: #ffffff; | |
| --text-secondary: #a0a0a0; | |
| --text-muted: #6e6e6e; | |
| --accent-primary: #3b82f6; | |
| --accent-primary-hover: #2563eb; | |
| --accent-success: #10b981; | |
| --accent-warning: #f59e0b; | |
| --accent-error: #ef4444; | |
| --accent-info: #3b82f6; | |
| --border-color: #2a2a2a; | |
| --border-light: #3a3a3a; | |
| --shadow-xl: 0 10px 16px rgba(0,0,0,0.35); | |
| /* sharper borders */ | |
| --radius-xs: 4px; | |
| --radius-sm: 6px; | |
| --radius-md: 8px; | |
| } | |
| * { margin:0; padding:0; box-sizing:border-box; } | |
| body { | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| line-height: 1.6; | |
| } | |
| .container { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem; } | |
| /* Header */ | |
| .header { | |
| background: var(--bg-secondary); | |
| border-bottom: 1px solid var(--border-color); | |
| padding: 1rem 0; | |
| position: sticky; top: 0; z-index: 10; | |
| } | |
| .header-content { display: flex; justify-content: space-between; align-items: center; } | |
| .logo { font-size: 1.25rem; font-weight: 700; color: var(--text-primary); } | |
| /* Form Section (intro) */ | |
| .analysis-form-section { padding: 3rem 0; background: var(--bg-secondary); } | |
| .form-container { | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-sm); | |
| padding: 2rem; | |
| box-shadow: var(--shadow-xl); | |
| } | |
| .form-header { text-align: center; margin-bottom: 2rem; } | |
| .form-header h2 { font-size: 1.75rem; margin-bottom: 0.5rem; } | |
| .form-header p { color: var(--text-secondary); } | |
| .form-group { margin-bottom: 1.5rem; } | |
| .form-label { | |
| display: flex; justify-content: space-between; align-items: center; | |
| font-weight: 600; margin-bottom: 0.5rem; color: var(--text-primary); | |
| } | |
| .char-counter { color: var(--text-muted); font-size: 0.9rem; font-weight: 400; } | |
| .form-textarea { | |
| width: 100%; min-height: 200px; background: var(--bg-input); | |
| border: 1px solid var(--border-light); border-radius: var(--radius-xs); | |
| padding: 1rem; color: var(--text-primary); font-size: 1rem; resize: vertical; | |
| } | |
| .form-textarea:focus { outline: none; border-color: var(--accent-primary); } | |
| .upload-container { display: flex; flex-direction: column; gap: 1rem; } | |
| .upload-zone { | |
| border: 2px dashed var(--border-light); border-radius: var(--radius-sm); | |
| padding: 2rem 1rem; background: var(--bg-input); | |
| transition: border-color .2s, background .2s; cursor: pointer; | |
| } | |
| .upload-zone:hover, .upload-zone.drag-over { | |
| border-color: var(--accent-primary); background: var(--bg-surface); | |
| } | |
| .upload-content { display: flex; flex-direction: column; gap: 1rem; align-items: center; text-align: center; } | |
| .upload-text h4 { font-size: 1.1rem; margin-bottom: 0.25rem; } | |
| .upload-text p { color: var(--text-secondary); margin-bottom: 0.25rem; } | |
| .upload-info { font-size: 0.85rem; color: var(--text-muted); } | |
| .upload-btn { | |
| background: var(--accent-primary); color: #fff; border: none; | |
| padding: 0.6rem 1.1rem; border-radius: var(--radius-xs); font-weight: 600; cursor: pointer; | |
| } | |
| .upload-btn:hover { background: var(--accent-primary-hover); } | |
| .file-input { display: none; } | |
| .image-previews { | |
| display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 0.75rem; | |
| } | |
| .preview-item { | |
| position: relative; border-radius: var(--radius-xs); overflow: hidden; | |
| background: var(--bg-input); border: 1px solid var(--border-light); | |
| } | |
| .preview-image { width: 100%; height: 100px; object-fit: cover; } | |
| .remove-btn { | |
| position: absolute; top: 0.5rem; right: 0.5rem; | |
| background: rgba(239, 68, 68, 0.95); color: #fff; border: none; | |
| width: 22px; height: 22px; border-radius: 2px; font-size: 0.8rem; cursor: pointer; | |
| opacity: 0; transition: opacity .15s; | |
| } | |
| .preview-item:hover .remove-btn { opacity: 1; } | |
| /* Actions */ | |
| .form-actions { display: flex; gap: 0.75rem; justify-content: center; margin-top: 1rem; } | |
| .btn-primary, .btn-secondary { | |
| padding: 0.85rem 1.3rem; border-radius: var(--radius-xs); font-weight: 700; cursor: pointer; border: none; min-width: 140px; | |
| } | |
| .btn-primary { background: var(--accent-primary); color: #fff; position: relative; } | |
| .btn-primary:hover:not(:disabled) { background: var(--accent-primary-hover); } | |
| .btn-primary:disabled { opacity: 0.6; cursor: not-allowed; } | |
| .btn-secondary { background: transparent; color: var(--text-secondary); border: 1px solid var(--border-light); } | |
| .btn-secondary:hover { color: var(--text-primary); } | |
| .btn-loader { display: none; } | |
| .btn-loader.active { display: inline-block; } | |
| .spinner { | |
| width: 16px; height: 16px; border: 2px solid transparent; border-top: 2px solid currentColor; | |
| border-radius: 50%; animation: spin 1s linear infinite; | |
| } | |
| @keyframes spin { 0%{transform:rotate(0)} 100%{transform:rotate(360deg)} } | |
| /* Toasts */ | |
| .message-container { position: fixed; top: 1rem; right: 1rem; z-index: 1000; } | |
| .message { | |
| background: var(--bg-surface); border: 1px solid var(--border-color); | |
| border-left: 3px solid var(--accent-info); | |
| border-radius: var(--radius-xs); padding: 0.7rem 1rem; margin-bottom: 0.5rem; | |
| display: flex; gap: 0.75rem; transform: translateX(400px); transition: transform .25s ease-out; | |
| } | |
| .message.show { transform: translateX(0); } | |
| .message.success { border-left-color: var(--accent-success); } | |
| .message.error { border-left-color: var(--accent-error); } | |
| .message.warning { border-left-color: var(--accent-warning); } | |
| .message-title { font-weight: 700; font-size: 0.95rem; } | |
| .message-text { color: var(--text-secondary); font-size: 0.85rem; } | |
| .message-close { margin-left: auto; background: none; color: var(--text-muted); border: none; cursor: pointer; font-size: 1rem; } | |
| /* Analysis page */ | |
| .analysis-header { | |
| background: var(--bg-secondary); | |
| border-bottom: 1px solid var(--border-color); | |
| padding: 1rem 0; | |
| } | |
| .analysis-header .header-content { | |
| display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 0.75rem; | |
| } | |
| .back-button { | |
| color: var(--accent-primary); text-decoration: none; font-weight: 700; | |
| padding: 0.35rem 0.7rem; border: 1px solid var(--border-light); border-radius: var(--radius-xs); | |
| } | |
| .back-button:hover { background: var(--bg-surface); } | |
| .analysis-meta { display: flex; gap: 0.75rem; color: var(--text-secondary); font-size: 0.9rem; } | |
| .overview-cards { | |
| display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); | |
| gap: 1rem; margin: 1.5rem 0 2rem; | |
| } | |
| .overview-card { | |
| background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--radius-sm); | |
| padding: 1rem; transition: transform .15s; display: flex; align-items: center; | |
| } | |
| .overview-card:hover { transform: translateY(-1px); } | |
| .card-success { border-left: 3px solid var(--accent-success); } | |
| .card-warning { border-left: 3px solid var(--accent-warning); } | |
| .card-danger { border-left: 3px solid var(--accent-error); } | |
| .card-content h3 { font-size: 0.9rem; color: var(--text-secondary); margin-bottom: 0.35rem; } | |
| .card-value { font-size: 1.35rem; font-weight: 800; margin-bottom: 0.15rem; } | |
| .card-description { font-size: 0.8rem; color: var(--text-muted); } | |
| .analysis-dashboard { padding: 1rem 0 2.5rem; } | |
| .dashboard-grid { | |
| display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-bottom: 2rem; | |
| } | |
| .dashboard-column { display: flex; flex-direction: column; gap: 1.25rem; } | |
| .analysis-section { | |
| background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--radius-sm); overflow: hidden; | |
| } | |
| .section-header { | |
| background: var(--bg-surface); padding: 1rem 1.25rem; border-bottom: 1px solid var(--border-color); | |
| display: flex; justify-content: space-between; align-items: center; | |
| } | |
| .section-header h3 { font-size: 1.05rem; font-weight: 800; } | |
| .section-badge { | |
| background: var(--bg-input); color: var(--text-secondary); | |
| padding: 0.2rem 0.6rem; border-radius: var(--radius-xs); font-size: 0.8rem; font-weight: 700; | |
| } | |
| .content-card { padding: 1rem 1.25rem; } | |
| .content-text { color: var(--text-primary); margin-bottom: 0.75rem; } | |
| .content-meta { display: flex; gap: 1rem; color: var(--text-muted); font-size: 0.9rem; } | |
| .emotion-card { padding: 1rem 1.25rem; } | |
| .dominant-emotion { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; } | |
| .emotion-tag { background: var(--accent-primary); color: #fff; padding: 0.3rem 0.6rem; border-radius: var(--radius-xs); font-weight: 800; } | |
| .emotion-breakdown { display: flex; flex-direction: column; gap: 0.6rem; } | |
| .emotion-item { display: flex; align-items: center; gap: 0.75rem; } | |
| .emotion-label { min-width: 80px; color: var(--text-secondary); font-size: 0.9rem; } | |
| .emotion-bar { flex: 1; height: 8px; background: var(--bg-input); border-radius: var(--radius-xs); overflow: hidden; } | |
| .emotion-fill { height: 100%; background: linear-gradient(90deg, var(--accent-primary), var(--accent-info)); } | |
| .emotion-score { min-width: 40px; text-align: right; color: var(--text-muted); font-size: 0.9rem; } | |
| .queries-card { padding: 1rem 1.25rem; } | |
| .queries-grid { display: flex; flex-wrap: wrap; gap: 0.5rem; } | |
| .query-chip { | |
| background: var(--bg-input); color: var(--text-primary); | |
| padding: 0.4rem 0.7rem; border-radius: var(--radius-xs); font-size: 0.85rem; border: 1px solid var(--border-light); | |
| } | |
| /* Fact checks */ | |
| .fact-checks { padding: 1rem 1.25rem; display: flex; flex-direction: column; gap: 1rem; } | |
| .fact-check-card { border-radius: var(--radius-xs); overflow: hidden; } | |
| .fact-unverified { background: rgba(239, 68, 68, 0.05); border: 1px solid rgba(239, 68, 68, 0.35); } | |
| .fact-verified { background: rgba(16, 185, 129, 0.05); border: 1px solid rgba(16, 185, 129, 0.35); } | |
| .fact-check-header { | |
| display: flex; justify-content: space-between; align-items: center; | |
| padding: 0.8rem 1rem; background: var(--bg-surface); | |
| } | |
| .fact-verdict { font-weight: 800; } | |
| .fact-status { padding: 0.3rem 0.6rem; border-radius: var(--radius-xs); font-weight: 800; font-size: 0.8rem; } | |
| .status-verified { background: var(--accent-success); color: #fff; } | |
| .status-unverified { background: var(--accent-error); color: #fff; } | |
| .fact-check-results { padding: 0.8rem 1rem; } | |
| .fact-item { margin-bottom: 0.9rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--border-light); } | |
| .fact-item:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; } | |
| .fact-source { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.35rem; } | |
| .claim-date { color: var(--text-muted); font-size: 0.8rem; } | |
| .fact-details { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 0.35rem; } | |
| .fact-text { flex: 1; color: var(--text-secondary); font-size: 0.95rem; line-height: 1.4; } | |
| .fact-rating { padding: 0.25rem 0.6rem; border-radius: var(--radius-xs); font-weight: 800; font-size: 0.8rem; white-space: nowrap; } | |
| .fact-rating.false, .fact-rating.deceptive { background: var(--accent-error); color: #fff; } | |
| .fact-rating.unsubstantiated { background: var(--accent-warning); color: #fff; } | |
| .fact-link { color: var(--accent-primary); text-decoration: none; font-size: 0.85rem; } | |
| .fact-link:hover { text-decoration: underline; } | |
| /* Uploaded images with overlays */ | |
| .uploaded-images-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1rem; | |
| padding: 1rem 1.25rem; | |
| } | |
| .vision-card { | |
| background: var(--bg-surface); | |
| border: 1px solid var(--border-light); | |
| border-radius: var(--radius-sm); | |
| padding: 0.9rem; | |
| } | |
| .vision-header { | |
| display: flex; justify-content: space-between; align-items: center; | |
| margin-bottom: 0.6rem; border-bottom: 1px solid var(--border-light); padding-bottom: 0.4rem; | |
| } | |
| .image-type { padding: 0.2rem 0.55rem; border-radius: var(--radius-xs); font-size: 0.8rem; font-weight: 800; } | |
| .ai-image { background: var(--accent-warning); color: #fff; } | |
| .real-image { background: var(--accent-success); color: #fff; } | |
| .image-canvas-wrap { | |
| position: relative; | |
| width: 100%; | |
| background: #111; | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-xs); | |
| overflow: hidden; | |
| } | |
| .image-canvas-wrap img { display: block; width: 100%; height: auto; } | |
| .overlay-canvas { | |
| position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; | |
| } | |
| .no-image { color: var(--text-secondary); padding: 1rem; text-align: center; } | |
| .faces-count { margin-top: 0.6rem; color: var(--text-secondary); } | |
| /* Export */ | |
| .export-section { | |
| background: var(--bg-card); border: 1px solid var(--border-color); | |
| border-radius: var(--radius-sm); padding: 1.2rem; text-align: center; | |
| } | |
| .export-actions { display: flex; gap: 0.75rem; justify-content: center; flex-wrap: wrap; } | |
| .export-btn { | |
| background: var(--bg-surface); color: var(--text-primary); border: 1px solid var(--border-light); | |
| padding: 0.7rem 1.0rem; border-radius: var(--radius-xs); cursor: pointer; transition: background .15s, border-color .15s; | |
| font-size: 0.9rem; font-weight: 800; | |
| } | |
| .export-btn:hover { background: var(--bg-input); border-color: var(--accent-primary); } | |
| /* Responsive */ | |
| @media (max-width: 820px) { | |
| .dashboard-grid { grid-template-columns: 1fr; } | |
| .form-container { padding: 1.25rem; } | |
| .export-actions { flex-direction: column; } | |
| } | |
| /* ... keep your existing CSS exactly as-is ... */ | |
| /* NEW: inline/compact header inside the analysis form-container */ | |
| .form-header-inline { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: .75rem; | |
| padding-bottom: .25rem; | |
| border-bottom: 1px solid var(--border-color); | |
| } | |
| .form-header-inline .inline-left { | |
| display: flex; | |
| align-items: center; | |
| gap: .75rem; | |
| } | |
| .form-header-inline h2 { | |
| margin: 0; | |
| } | |
| .form-header-inline .analysis-meta { | |
| display: flex; | |
| gap: .75rem; | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| } | |
| /* NEW: analysis container block spacing (inside the shared card) */ | |
| .analysis-card-block { | |
| margin-top: 1rem; | |
| } | |