:root { font-family: 'Space Grotesk', sans-serif; color: #f6f4ef; background: #0d0f1c; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; background: radial-gradient(circle at top, #1f2a44, #0b0f1f 60%); } code { font-family: 'Space Grotesk', sans-serif; background: rgba(255, 255, 255, 0.08); padding: 2px 6px; border-radius: 6px; } .app { min-height: 100vh; padding: 32px; display: flex; flex-direction: column; gap: 24px; } .app-header { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; } .app-header h1 { margin: 0; font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.2rem, 2.5vw, 3rem); letter-spacing: 0.08em; } .eyebrow { margin: 0 0 8px; text-transform: uppercase; letter-spacing: 0.2em; font-size: 0.7rem; color: #9fc4ff; } .selector-pill { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); padding: 12px 20px; border-radius: 999px; display: flex; gap: 8px; align-items: center; } .selector-pill .label { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.2em; color: #9fc4ff; } .selector-pill .value { font-weight: 600; } .app-main { flex: 1; } .panel { background: rgba(8, 12, 26, 0.75); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 24px; padding: 32px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35); } .panel h2 { margin-top: 0; font-family: 'Bebas Neue', sans-serif; font-size: 2rem; letter-spacing: 0.06em; } .hint { margin-top: 0; color: rgba(255, 255, 255, 0.7); } .teams-grid, .games-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-top: 24px; } .team-card, .game-card, .add-card { border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.1); padding: 18px; background: rgba(255, 255, 255, 0.04); color: inherit; text-align: left; } .team-card.winner { outline: 2px solid #fbd72b; } .team-card-header { display: flex; justify-content: space-between; gap: 12px; } .input { width: 100%; padding: 10px 12px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.25); color: inherit; } .gradient-preview { height: 64px; border-radius: 14px; margin: 16px 0; } .color-row { display: flex; justify-content: space-between; gap: 12px; } .color-row label { display: flex; flex-direction: column; gap: 6px; font-size: 0.8rem; color: rgba(255, 255, 255, 0.7); } input[type='color'] { background: transparent; border: none; width: 100%; height: 36px; padding: 0; } .add-card { display: grid; place-items: center; cursor: pointer; font-weight: 600; min-height: 140px; background: linear-gradient(135deg, rgba(61, 214, 255, 0.12), rgba(251, 215, 43, 0.12)); } .game-card { cursor: pointer; transition: transform 0.2s ease; } .game-card:hover { transform: translateY(-4px); } .actions { margin-top: 24px; display: flex; justify-content: flex-end; gap: 12px; } button { font-family: inherit; } .primary { background: linear-gradient(135deg, #3dd6ff, #fbd72b); color: #0d0f1c; border: none; padding: 12px 24px; border-radius: 999px; font-weight: 600; cursor: pointer; } .ghost { background: transparent; border: 1px solid rgba(255, 255, 255, 0.2); color: inherit; padding: 10px 18px; border-radius: 999px; cursor: pointer; } .ghost:disabled, .primary:disabled, .team-score-card:disabled { opacity: 0.5; cursor: not-allowed; } .game-layout { display: grid; grid-template-columns: minmax(240px, 300px) 1fr; gap: 24px; } .scoreboard { background: rgba(8, 12, 26, 0.8); border-radius: 20px; padding: 20px; border: 1px solid rgba(255, 255, 255, 0.1); } .scoreboard h2 { margin-top: 0; font-family: 'Bebas Neue', sans-serif; letter-spacing: 0.05em; } .team-list { display: grid; gap: 12px; } .team-score-card { width: 100%; border: none; padding: 14px; border-radius: 16px; color: #0d0f1c; text-align: left; position: relative; } .team-score-card.active { outline: 2px solid #ffffff; } .team-name { font-weight: 600; } .team-score { font-size: 1.4rem; font-weight: 700; } .award-tag { position: absolute; top: 10px; right: 10px; background: rgba(0, 0, 0, 0.2); padding: 4px 8px; border-radius: 999px; font-size: 0.7rem; } .board { display: flex; flex-direction: column; gap: 20px; position: relative; z-index: 1; } .board-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; position: relative; z-index: 1; } .category-column { display: grid; gap: 10px; } .category-title { background: rgba(255, 255, 255, 0.1); border-radius: 12px; padding: 10px; text-align: center; font-weight: 600; } .tile { background: #1d3b8b; color: #fbd72b; border: none; padding: 18px; border-radius: 12px; font-size: 1.1rem; font-weight: 700; cursor: pointer; min-height: 72px; text-transform: uppercase; letter-spacing: 0.08em; } .tile.playing { background: #fbd72b; color: #0d0f1c; } .tile.paused { background: #f58b2b; color: #0d0f1c; } .tile.guessed { background: #2bdc7b; color: #0d0f1c; } .tile.won { background: #2a2f3f; color: #0d0f1c; } .tile.void { background: #6b6f7b; color: #0d0f1c; } .player-panel { background: rgba(8, 12, 26, 0.75); border-radius: 20px; padding: 18px; border: 1px solid rgba(255, 255, 255, 0.1); position: relative; z-index: 20; } .player-header h3 { margin: 0 0 6px; } .player-header p { margin: 0; color: rgba(255, 255, 255, 0.7); font-size: 0.9rem; } .player-body { margin-top: 12px; display: grid; place-items: center; position: relative; min-height: 620px; } audio.hidden-audio { display: none; } .pulse-orb { width: 96px; height: 96px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, #fbd72b, #f58b2b 60%, #1d3b8b); transform: translate(-50%, -50%) scale(calc(1 + var(--pulse, 0) * 0.9)); box-shadow: 0 0 calc(22px + var(--pulse, 0) * 140px) rgba(251, 215, 43, 0.6), 0 0 calc(60px + var(--pulse, 0) * 240px) rgba(61, 214, 255, 0.45); transition: transform 0.06s ease-out; position: absolute; left: 50%; top: 50%; z-index: 2; } .pulse-orb.idle { background: radial-gradient(circle at 40% 40%, #1a1a1a, #000 65%); box-shadow: 0 0 12px rgba(0, 0, 0, 0.6); transform: translate(-50%, -50%) scale(1); } .pulse-orb.playing { background: linear-gradient( 135deg, #7df9ff, #6c63ff, #ff7ad9, #ffd36a, #7df9ff ); background-size: 240% 240%; animation: gradientShift 6s ease-in-out infinite; } .pulse-orb.answer { background: radial-gradient(circle at 30% 30%, #6bff9f, #1ecb5a 65%, #0b5c2b); box-shadow: 0 0 calc(18px + var(--pulse, 0) * 90px) rgba(43, 220, 123, 0.6), 0 0 calc(40px + var(--pulse, 0) * 160px) rgba(43, 220, 123, 0.3); } .pulse-orb.active { animation: pulseGlow 1.6s ease-in-out infinite; } .pulse-tentacles { position: absolute; left: 50%; top: 50%; width: 100px; height: 100px; transform: translate(-50%, -50%) scale(calc(1 + var(--pulse, 0) * 0.9)); z-index: 1; pointer-events: none; } .pulse-tentacles .tentacle { position: absolute; left: 50%; top: 50%; width: 12px; height: calc(20px + var(--level, 0) * 100px); background: linear-gradient( to top, rgba(0, 0, 0, 0) 0%, hsla(var(--ray-hue, 200), 90%, 70%, 0.6) 45%, hsla(var(--ray-hue, 200), 95%, 75%, 0.95) 100% ); border-radius: 999px; filter: blur(calc(1.5px - var(--level, 0) * 0.5)); opacity: calc(0.25 + var(--level, 0) * 0.85); transform-origin: 50% 100%; transform: translate(-50%, calc(-20px - var(--level, 0) * 100px)) rotate(calc(var(--index) * 30deg)) scaleX(calc(0.7 + var(--level, 0) * 0.5)); transition: height 0.08s ease-out, opacity 0.08s ease-out, transform 0.08s ease-out, filter 0.08s ease-out; mix-blend-mode: screen; } @keyframes pulseGlow { 0%, 100% { box-shadow: 0 0 24px rgba(61, 214, 255, 0.25); } 50% { box-shadow: 0 0 48px rgba(251, 215, 43, 0.35); } } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .player-empty { color: rgba(255, 255, 255, 0.6); } .end-panel { text-align: center; } .winner-banner { display: inline-flex; align-items: center; gap: 12px; background: rgba(255, 255, 255, 0.1); padding: 12px 20px; border-radius: 999px; margin: 20px 0; font-weight: 600; } .score { font-size: 1.6rem; font-weight: 700; } .empty-state { margin-top: 20px; padding: 18px; border-radius: 16px; border: 1px dashed rgba(255, 255, 255, 0.2); } @media (max-width: 900px) { .game-layout { grid-template-columns: 1fr; } .app-header { flex-direction: column; align-items: flex-start; } }