:root { --bg-main: #1c223a; --bg-card: #252b48; --text-primary: #ffffff; --text-secondary: #a0a5ba; --accent-purple: #c299ff; --accent-green: #00e699; --btn-gradient: linear-gradient(90deg, #6366f1, #8b5cf6); --btn-shadow: 0 4px 20px rgba(99, 102, 241, 0.4); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Outfit', sans-serif; } body { background-color: var(--bg-main); color: var(--text-primary); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 2rem; } .main-wrapper { width: 100%; max-width: 900px; } .header { text-align: center; margin-bottom: 3rem; } .title { font-size: 2.2rem; font-weight: 800; color: var(--accent-purple); margin-bottom: 0.8rem; text-transform: uppercase; letter-spacing: -0.5px; } .subtitle { color: var(--text-secondary); font-size: 1.1rem; font-weight: 400; } .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; margin-bottom: 3rem; } .stat-card { background-color: var(--bg-card); padding: 1.5rem; border-radius: 12px; text-align: center; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); } .stat-label { font-size: 0.8rem; font-weight: 600; color: var(--text-secondary); margin-bottom: 0.5rem; letter-spacing: 1px; } .stat-value { font-size: 1.5rem; font-weight: 700; color: var(--accent-green); } .visualizer { background-color: #2a3152; padding: 3rem; border-radius: 24px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); } .image-pair { display: flex; gap: 2rem; margin-bottom: 2rem; justify-content: center; } .image-column { flex: 1; max-width: 320px; text-align: center; } .image-label { color: var(--text-secondary); font-size: 0.9rem; font-weight: 600; margin-bottom: 1rem; text-transform: uppercase; letter-spacing: 1px; } .image-container { width: 100%; aspect-ratio: 1/1; background-color: #3b4266; border-radius: 20px; position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; cursor: pointer; border: 2px solid transparent; transition: all 0.3s ease; } .image-container:hover { background-color: #464d75; border-color: rgba(255, 255, 255, 0.1); } .placeholder { text-align: center; } .placeholder-icon { font-size: 2.5rem; margin-bottom: 0.5rem; } .placeholder p { color: var(--text-secondary); font-size: 0.9rem; } .display-img { width: 100%; height: 100%; object-fit: cover; } .mode-toggle-group { display: flex; justify-content: center; gap: 0.5rem; margin-bottom: 2rem; } .mode-select-btn { padding: 0.5rem 1rem; border-radius: 8px; border: none; background-color: #3b4266; color: var(--text-secondary); cursor: pointer; font-weight: 600; font-size: 0.8rem; transition: all 0.3s ease; } .mode-select-btn.active { background-color: var(--accent-purple); color: white; } .action-area { text-align: center; } .btn-action { background: var(--btn-gradient); border: none; padding: 1.2rem 3rem; border-radius: 12px; color: white; font-size: 1.1rem; font-weight: 700; cursor: pointer; box-shadow: var(--btn-shadow); transition: all 0.3s ease; margin-bottom: 1.5rem; } .btn-action:hover:not(:disabled) { transform: translateY(-2px); filter: brightness(1.1); box-shadow: 0 6px 24px rgba(99, 102, 241, 0.6); } .btn-action:disabled { opacity: 0.5; cursor: not-allowed; filter: grayscale(0.5); } .model-info { font-size: 0.8rem; color: var(--text-secondary); } .green { color: var(--accent-green); } .hidden { display: none; } /* Spinner */ .spinner { width: 40px; height: 40px; border: 3px solid rgba(255, 255, 255, 0.1); border-top: 3px solid var(--accent-green); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @media (max-width: 600px) { .stats-grid { grid-template-columns: 1fr; } .image-pair { flex-direction: column; align-items: center; } }