:root { --foreground-rgb: 0, 0, 0; --background-start-rgb: 214, 219, 220; --background-end-rgb: 255, 255, 255; /* Theme Colors */ --primary: #000000; --primary-foreground: #ffffff; --secondary: #4b5563; --secondary-foreground: #ffffff; --accent: #667eea; --accent-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%); --success: #22c55e; --success-foreground: #ffffff; --danger: #ef4444; --danger-foreground: #ffffff; --warning: #ffc107; --muted: #f3f4f6; --muted-foreground: #6b7280; --border: #e5e7eb; --input: #d1d5db; --ring: #000000; } body { color: rgb(var(--foreground-rgb)); background: linear-gradient(to bottom, transparent, rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb)); font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; margin: 0; padding: 0; min-height: 100vh; } /* Layout Utilities */ .container { max-width: 600px; margin: 0 auto; padding: 2rem; display: flex; flex-direction: column; align-items: center; min-height: 100vh; } .header { margin-bottom: 2rem; text-align: center; } .title { font-size: 2.5rem; font-weight: 800; letter-spacing: -0.05em; margin: 0; } /* Game Board */ .game-board { width: 100%; display: flex; flex-direction: column; gap: 1.5rem; } .status-bar { display: flex; justify-content: space-between; font-size: 0.875rem; color: var(--muted-foreground); margin-bottom: 0.5rem; } /* Audio Player */ .audio-player { background: var(--muted); padding: 1rem; border-radius: 0.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .player-controls { display: flex; align-items: center; gap: 1rem; } .play-button { width: 3rem; height: 3rem; border-radius: 50%; background: var(--primary); color: var(--primary-foreground); border: none; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.2s; } .play-button:hover { background: #333; /* Keep for now or add --primary-hover */ } .progress-bar-container { flex: 1; height: 0.5rem; background: var(--input); border-radius: 999px; overflow: hidden; } .progress-bar { height: 100%; background: var(--success); transition: width 0.1s linear; } /* Guess List */ .guess-list { display: flex; flex-direction: column; gap: 0.5rem; } .guess-item { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem; background: #f9fafb; border: 1px solid var(--border); border-radius: 0.25rem; font-size: 0.875rem; } .guess-number { width: 1.5rem; color: #9ca3af; } .guess-text { color: var(--danger); /* Red for wrong */ } .guess-text.skipped { color: #9ca3af; font-style: italic; } .guess-text.correct { color: var(--success); } /* Input */ .input-container { position: relative; width: 100%; margin-top: 1rem; } .guess-input { width: 100%; padding: 0.75rem; border: 1px solid var(--input); border-radius: 0.25rem; font-size: 1rem; box-sizing: border-box; } .guess-input:focus { outline: 2px solid var(--ring); border-color: transparent; } .suggestions-list { position: absolute; width: 100%; background: #fff; border: 1px solid var(--input); border-radius: 0.25rem; margin-top: 0.25rem; max-height: 15rem; overflow-y: auto; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); z-index: 10; list-style: none; padding: 0; } .suggestion-item { padding: 0.75rem; cursor: pointer; border-bottom: 1px solid var(--muted); } .suggestion-item:hover { background: var(--muted); } .suggestion-title { font-weight: bold; } .suggestion-artist { font-size: 0.875rem; color: var(--muted-foreground); } .skip-button { width: 100%; padding: 1rem 1.5rem; margin-top: 1rem; background: var(--accent-gradient); color: white; border: none; border-radius: 0.5rem; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); text-transform: uppercase; letter-spacing: 0.5px; } .skip-button:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6); } .skip-button:active { transform: translateY(0); box-shadow: 0 2px 10px rgba(102, 126, 234, 0.4); } /* Messages */ .message-box { padding: 1rem; border-radius: 0.5rem; text-align: center; margin-top: 1rem; } .message-box.success { background: #dcfce7; color: #166534; } .message-box.failure { background: #fee2e2; color: #991b1b; } /* Admin */ .admin-container { max-width: 800px; margin: 0 auto; padding: 2rem; } .admin-card { background: var(--muted); padding: 2rem; border-radius: 0.5rem; } .form-group { margin-bottom: 1rem; } .form-label { display: block; font-weight: bold; margin-bottom: 0.25rem; font-size: 0.875rem; } .form-input { width: 100%; padding: 0.5rem; border: 1px solid var(--input); border-radius: 0.25rem; box-sizing: border-box; } .btn-primary { background: var(--primary); color: var(--primary-foreground); padding: 0.5rem 1rem; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 500; display: inline-flex; align-items: center; justify-content: center; height: 2.5rem; box-sizing: border-box; text-decoration: none; font-size: 0.875rem; } .btn-primary:hover { background: #333; } .btn-secondary { background: var(--secondary); color: var(--secondary-foreground); padding: 0.5rem 1rem; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 500; display: inline-flex; align-items: center; justify-content: center; height: 2.5rem; box-sizing: border-box; font-size: 0.875rem; } .btn-secondary:hover { background: #374151; } .btn-danger { background: var(--danger); color: var(--danger-foreground); padding: 0.5rem 1rem; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 500; display: inline-flex; align-items: center; justify-content: center; height: 2.5rem; box-sizing: border-box; font-size: 0.875rem; } .btn-danger:hover { background: #dc2626; } /* Footer */ .app-footer { margin-top: auto; padding: 2rem 1rem 1rem; text-align: center; font-size: 0.875rem; color: var(--muted-foreground); border-top: 1px solid var(--border); width: 100%; } .app-footer p { margin: 0; } .app-footer a { color: var(--primary); text-decoration: none; font-weight: 500; } .app-footer a:hover { text-decoration: underline; } /* Statistics */ .statistics-container { margin: 1.5rem 0; padding: 1rem; background: rgba(255, 255, 255, 0.5); border-radius: 0.5rem; } .statistics-title { font-size: 1.125rem; font-weight: bold; margin: 0 0 0.5rem 0; text-align: center; } .statistics-total { font-size: 0.875rem; text-align: center; margin: 0 0 1rem 0; color: var(--muted-foreground); } .statistics-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(80px, 1fr)); gap: 0.75rem; } .stat-item { display: flex; flex-direction: column; align-items: center; padding: 0.75rem 0.5rem; background: rgba(255, 255, 255, 0.8); border-radius: 0.375rem; border: 1px solid var(--border); } .stat-badge { font-size: 1.5rem; margin-bottom: 0.25rem; } .stat-label { font-size: 0.75rem; color: var(--muted-foreground); margin-bottom: 0.25rem; text-align: center; } .stat-count { font-size: 1.25rem; font-weight: bold; color: var(--primary); } /* Tooltip */ .tooltip { position: relative; display: inline-flex; flex-direction: column; align-items: center; } .tooltip .tooltip-text { visibility: hidden; width: 200px; background-color: #333; color: #fff; text-align: center; border-radius: 6px; padding: 5px; position: absolute; z-index: 100; top: 100%; left: 50%; margin-left: -100px; margin-top: 5px; opacity: 0; transition: opacity 0.3s; font-size: 0.75rem; font-weight: normal; pointer-events: none; line-height: 1.2; } .tooltip:hover .tooltip-text { visibility: visible; opacity: 1; } .tooltip .tooltip-text::after { content: ""; position: absolute; bottom: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: transparent transparent #333 transparent; }