:root { color-scheme: dark; --bg: #24120b; --bg-accent: #5b3122; --panel: rgba(32, 15, 9, 0.9); --panel-glow: rgba(255, 196, 114, 0.16); --border: rgba(240, 193, 125, 0.22); --text: #fff7ea; --muted: #dec8a5; --highlight: #f6c56b; --highlight-2: #79b5a5; --danger: #f4876f; --button: #b4462f; --button-hover: #cf5b40; --button-secondary: #36605b; --card: linear-gradient(180deg, rgba(68, 34, 20, 0.78), rgba(33, 17, 11, 0.9)); --wood: linear-gradient(180deg, rgba(123, 74, 49, 0.92), rgba(71, 37, 20, 0.96)); --brass: linear-gradient(180deg, #f8dc99, #b8843f 55%, #7a5223); --shadow: 0 28px 90px rgba(0, 0, 0, 0.45); font-family: Georgia, "Times New Roman", serif; } * { box-sizing: border-box; } html, body { min-height: 100%; } body { margin: 0; min-height: 100dvh; color: var(--text); background: radial-gradient(circle at top center, rgba(255, 196, 114, 0.18), transparent 18%), radial-gradient(circle at 20% 10%, rgba(121, 181, 165, 0.1), transparent 22%), linear-gradient(180deg, rgba(18, 8, 5, 0.8), rgba(18, 8, 5, 0.92)), radial-gradient(circle at top center, rgba(255, 201, 115, 0.12), transparent 16%), radial-gradient(circle at 20% 10%, rgba(121, 181, 165, 0.12), transparent 22%), linear-gradient(180deg, #190b07, var(--bg) 28%, var(--bg-accent)); overflow-x: hidden; } .app-shell { position: relative; z-index: 1; width: min(1120px, calc(100vw - 32px)); margin: 0 auto; padding: 30px 0 56px; } .stage-lights { position: fixed; inset: 0 0 auto; display: flex; justify-content: space-around; pointer-events: none; z-index: 0; } .stage-lights span { width: 18vw; height: 28vh; background: linear-gradient(180deg, rgba(255, 222, 164, 0.28), transparent 72%); clip-path: polygon(42% 0, 58% 0, 100% 100%, 0 100%); opacity: 0.6; } .hero { margin-bottom: 22px; text-align: center; } .eyebrow { margin: 0 0 10px; color: #ffd88c; letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.76rem; } .build-stamp { margin: 0 0 10px; color: rgba(255, 233, 184, 0.68); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; } h1, h2, p, pre, button, li, strong, span { margin-top: 0; } h1 { font-size: clamp(2.8rem, 6vw, 5.4rem); line-height: 0.9; margin-bottom: 14px; text-transform: uppercase; letter-spacing: 0.05em; text-shadow: 0 4px 0 rgba(0, 0, 0, 0.24), 0 0 32px rgba(255, 202, 122, 0.2); } .lede { max-width: 54ch; color: var(--muted); font-size: 0.98rem; margin-inline: auto; } .marquee { display: inline-flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 18px; padding: 10px 16px; border-radius: 999px; border: 1px solid rgba(255, 216, 140, 0.24); background: rgba(32, 13, 8, 0.52); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); } .marquee span { color: #ffe4ae; letter-spacing: 0.14em; font-size: 0.76rem; text-transform: uppercase; } .panel { background: linear-gradient(180deg, rgba(255, 227, 169, 0.08), transparent 20%), rgba(26, 12, 8, 0.84); border: 1px solid rgba(240, 193, 125, 0.18); border-radius: 32px; box-shadow: var(--shadow); padding: 20px; position: relative; backdrop-filter: blur(10px); } .panel::before { content: ""; position: absolute; inset: 14px; border-radius: 24px; border: 1px solid rgba(255, 218, 150, 0.08); pointer-events: none; } .status-grid { display: none; } .status-card, .control-card, .question-card, .score-card, .log-card { border: 1px solid var(--border); background: var(--card); border-radius: 26px; padding: 18px; box-shadow: inset 0 1px 0 rgba(255, 235, 193, 0.06), 0 10px 30px rgba(0, 0, 0, 0.18); } .label { display: block; color: var(--muted); font-size: 0.78rem; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.12em; } .actions { display: flex; flex-wrap: wrap; gap: 12px; } .auth-error { margin: 0 0 14px; padding: 10px 12px; border-radius: 14px; border: 1px solid rgba(244, 135, 111, 0.38); background: rgba(88, 27, 18, 0.52); color: #ffd9ce; font-size: 0.88rem; line-height: 1.4; } .action-notice { margin: 0 0 14px; padding: 10px 12px; border-radius: 14px; border: 1px solid rgba(255, 219, 155, 0.22); background: rgba(54, 30, 18, 0.58); color: #fff0cb; font-size: 0.88rem; line-height: 1.4; } .action-notice.is-error { border-color: rgba(244, 135, 111, 0.38); background: rgba(88, 27, 18, 0.52); color: #ffd9ce; } .action-notice.is-success { border-color: rgba(121, 181, 165, 0.34); background: rgba(26, 59, 50, 0.48); color: #dbfff2; } .mobile-tabs { display: none; gap: 10px; margin: 0 0 12px; } .tab-button { flex: 1 1 0; min-height: 42px; padding: 10px 12px; font-size: 0.78rem; letter-spacing: 0.08em; background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), transparent 30%), linear-gradient(180deg, #5e2b20, #35130d); } .tab-button.is-active { background: linear-gradient(180deg, rgba(255, 244, 209, 0.16), transparent 30%), linear-gradient(180deg, #bf5b3f, #8b2f1d); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 10px 18px rgba(0, 0, 0, 0.22); } button { border: 1px solid rgba(255, 214, 153, 0.18); border-radius: 999px; padding: 12px 18px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), transparent 30%), linear-gradient(180deg, var(--button), #842d1b); color: #fff6e8; font: inherit; letter-spacing: 0.04em; text-transform: uppercase; cursor: pointer; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 8px 16px rgba(0, 0, 0, 0.18); transition: transform 160ms ease, background 160ms ease, box-shadow 160ms ease; min-height: 46px; } button:hover:enabled, button:focus-visible { transform: translateY(-2px); background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), transparent 30%), linear-gradient(180deg, var(--button-hover), #983722); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 12px 22px rgba(0, 0, 0, 0.26); } button:disabled { opacity: 0.52; cursor: not-allowed; } .game-grid { display: grid; grid-template-columns: 0.95fr 1.45fr; gap: 18px; align-items: start; } .control-card, .question-card { min-height: 100%; } .score-card { grid-column: 1 / -1; } .log-card { grid-column: span 1; } .scoreboard-head { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px; align-items: center; margin-bottom: 22px; padding: 18px 20px; border-radius: 24px; background: linear-gradient(180deg, rgba(255, 239, 197, 0.08), transparent 28%), rgba(25, 11, 7, 0.46); border: 1px solid rgba(255, 222, 164, 0.12); } .scoreboard-copy { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; text-align: left; } .scoreboard-copy h2 { margin-bottom: 8px; color: #fff0c9; text-transform: uppercase; letter-spacing: 0.08em; font-size: clamp(1.5rem, 2.2vw, 2.25rem); } .scoreboard-note { margin: 0; max-width: 34ch; color: rgba(255, 241, 207, 0.84); font-size: 0.98rem; } .scoreboard-lamps { display: flex; gap: 8px; align-items: center; } .scoreboard-lamps span { width: 14px; height: 14px; border-radius: 999px; background: radial-gradient(circle at 35% 35%, #fff0bf, #f4b14f 58%, #6f2f16 100%); box-shadow: 0 0 14px rgba(255, 187, 98, 0.28); } .section-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .pill { display: inline-flex; align-items: center; border: 1px solid var(--border); border-radius: 999px; padding: 6px 12px; color: #fff2c9; background: linear-gradient(180deg, rgba(255, 243, 204, 0.18), transparent 45%), rgba(70, 30, 16, 0.7); font-size: 0.88rem; letter-spacing: 0.08em; text-transform: uppercase; } .field, .field-row { display: flex; flex-direction: column; gap: 8px; } .field { margin-bottom: 14px; } .field-row { flex-direction: row; gap: 12px; } .field-row .field { flex: 1; } input, select { appearance: none; -webkit-appearance: none; width: 100%; border: 1px solid var(--border); border-radius: 14px; background: linear-gradient(180deg, rgba(255, 250, 241, 0.04), transparent 38%), rgba(23, 11, 7, 0.55); color: var(--text); caret-color: #ffe7b3; -webkit-text-fill-color: var(--text); opacity: 1; padding: 12px 14px; font: inherit; box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.2); min-height: 46px; } input::placeholder { color: rgba(222, 200, 165, 0.7); -webkit-text-fill-color: rgba(222, 200, 165, 0.7); } input:focus, input:active, select:focus, select:active { outline: none; border-color: rgba(246, 197, 107, 0.42); box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.2), 0 0 0 2px rgba(246, 197, 107, 0.14); } select { background-image: linear-gradient(45deg, transparent 50%, #ffe7b3 50%), linear-gradient(135deg, #ffe7b3 50%, transparent 50%), linear-gradient(180deg, rgba(255, 250, 241, 0.04), transparent 38%), linear-gradient(180deg, rgba(23, 11, 7, 0.55), rgba(23, 11, 7, 0.55)); background-position: calc(100% - 20px) calc(50% - 3px), calc(100% - 14px) calc(50% - 3px), 0 0, 0 0; background-size: 6px 6px, 6px 6px, 100% 100%, 100% 100%; background-repeat: no-repeat; padding-right: 36px; } input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus { -webkit-text-fill-color: var(--text); transition: background-color 9999s ease-out 0s; box-shadow: inset 0 0 0 1000px rgba(23, 11, 7, 0.9), 0 0 0 2px rgba(246, 197, 107, 0.08); } .note, .phase-text { color: var(--muted); } .phase-text { min-height: 48px; font-size: 1rem; } .round-actions { margin: 0 0 14px; } .mini-score-card { margin: 0 0 14px; padding: 12px 14px; border-radius: 18px; border: 1px solid rgba(255, 218, 154, 0.12); background: linear-gradient(180deg, rgba(255, 240, 203, 0.07), transparent 28%), rgba(18, 8, 5, 0.36); } .mini-score-head { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; margin-bottom: 10px; } .mini-score-head strong { color: #fff0c9; letter-spacing: 0.08em; text-transform: uppercase; font-size: 0.86rem; } .mini-score-head span { color: rgba(255, 236, 199, 0.66); font-size: 0.76rem; } .mini-scoreboard { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; } .mini-scoreboard li { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; min-height: 44px; padding: 8px 10px; border-radius: 14px; background: rgba(45, 20, 12, 0.58); border: 1px solid rgba(255, 218, 154, 0.08); } .mini-score-rank { display: inline-flex; align-items: center; justify-content: center; min-width: 34px; height: 24px; padding: 0 8px; border-radius: 999px; background: var(--brass); color: #2f170b; font-size: 0.68rem; font-weight: 700; } .mini-score-name { min-width: 0; font-size: 0.92rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .mini-score-points { color: #fff0c1; font-size: 1rem; } .video-stage { display: grid; gap: 12px; min-height: 220px; padding: 14px; border-radius: 26px; border: 1px solid rgba(246, 197, 107, 0.24); background: linear-gradient(180deg, rgba(94, 46, 28, 0.88), rgba(28, 14, 10, 0.98)); margin-bottom: 18px; box-shadow: inset 0 2px 18px rgba(255, 219, 161, 0.08), inset 0 -24px 60px rgba(0, 0, 0, 0.28); } .video-stage-copy { display: flex; flex-direction: column; gap: 8px; min-height: 0; } .video-stage-copy strong { font-size: 1rem; letter-spacing: 0.06em; text-transform: uppercase; } .video-stage-copy span { color: var(--muted); } #youtube-player { width: 100%; min-height: 200px; aspect-ratio: 16 / 9; pointer-events: auto; border-radius: 18px; overflow: hidden; background: #000; } #youtube-player iframe { width: 100%; height: 100%; border: 0; border-radius: 18px; } .answer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .answer-option { border-radius: 22px; border: 1px solid rgba(245, 200, 119, 0.16); background: linear-gradient(180deg, rgba(255, 248, 228, 0.08), transparent 24%), linear-gradient(180deg, rgba(72, 38, 23, 0.96), rgba(38, 19, 12, 0.96)); color: var(--text); padding: 18px; text-align: left; box-shadow: inset 0 1px 0 rgba(255, 236, 188, 0.05); min-height: 84px; } .answer-option.correct { background: linear-gradient(180deg, rgba(194, 236, 222, 0.18), transparent 30%), linear-gradient(180deg, rgba(58, 90, 81, 0.98), rgba(31, 47, 41, 0.98)); border-color: rgba(121, 181, 165, 0.5); } .answer-option.incorrect { background: linear-gradient(180deg, rgba(255, 198, 170, 0.16), transparent 30%), linear-gradient(180deg, rgba(102, 41, 27, 0.98), rgba(51, 22, 15, 0.98)); border-color: rgba(244, 135, 111, 0.42); } .answer-option.locked { opacity: 0.6; } .reveal-card { min-height: 40px; margin-top: 16px; color: var(--muted); padding: 14px 16px; border-radius: 18px; background: rgba(20, 9, 6, 0.34); border: 1px solid rgba(255, 219, 155, 0.08); } .scoreboard { margin: 0; padding-left: 0; list-style: none; counter-reset: score-rank; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; } .scoreboard li { display: flex; justify-content: space-between; gap: 18px; align-items: center; padding: 18px 20px; border-radius: 22px; border: 1px solid rgba(255, 218, 154, 0.12); background: linear-gradient(180deg, rgba(255, 240, 203, 0.07), transparent 28%), rgba(18, 8, 5, 0.42); position: relative; min-height: 104px; } .scoreboard li::before { content: ""; position: absolute; inset: 0; border-radius: 22px; box-shadow: inset 0 1px 0 rgba(255, 244, 220, 0.06); pointer-events: none; } .scoreboard li:first-child { background: linear-gradient(180deg, rgba(255, 220, 132, 0.16), transparent 32%), rgba(46, 23, 12, 0.58); border-color: rgba(255, 213, 127, 0.24); } .scoreboard-entry { display: flex; align-items: center; gap: 16px; min-width: 0; } .scoreboard-rank { position: absolute; inset: 16px auto auto 16px; display: inline-flex; align-items: center; justify-content: center; min-width: 58px; height: 28px; padding: 0 10px; border-radius: 999px; background: var(--brass); color: #2f170b; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .scoreboard-meta { min-width: 0; padding-top: 26px; } .scoreboard-name { display: block; font-size: 1.15rem; line-height: 1.2; } .scoreboard-caption { display: block; margin-top: 6px; color: rgba(255, 236, 199, 0.7); font-size: 0.84rem; } .scoreboard-points { display: flex; flex-direction: column; align-items: flex-end; flex-shrink: 0; font-size: clamp(1.8rem, 4vw, 2.6rem); line-height: 0.92; color: #fff0c1; text-shadow: 0 0 24px rgba(255, 210, 116, 0.12); } .scoreboard-points span { margin-top: 8px; font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255, 239, 204, 0.72); } #log-output { min-height: 180px; max-height: 320px; overflow: auto; margin: 0; white-space: pre-wrap; color: var(--muted); font-size: 0.92rem; line-height: 1.5; } @media (max-width: 1100px) { body { background: radial-gradient(circle at top center, rgba(255, 196, 114, 0.14), transparent 16%), linear-gradient(180deg, rgba(18, 8, 5, 0.86), rgba(18, 8, 5, 0.94)), linear-gradient(180deg, #190b07, var(--bg) 28%, var(--bg-accent)); } .app-shell { width: min(100vw - 18px, 1120px); padding-top: 18px; padding-bottom: 28px; } .panel { padding: 16px; } .game-grid { grid-template-columns: 1fr; } .control-card { order: 2; } .question-card { order: 1; } .score-card { order: 3; } .log-card { order: 4; } } @media (max-width: 860px) { .stage-lights { display: none; } .game-grid { grid-template-columns: 1fr; } .scoreboard-head { grid-template-columns: 1fr; padding: 14px; } .scoreboard-lamps { justify-content: center; } .speaker-copy, .dial-strip, .meter-bank { margin-left: 28px; padding-left: 0; } .speaker-copy { padding-left: 28px; padding-top: 160px; } } @media (max-width: 640px) { body { overflow: hidden; } .app-shell { width: min(100vw - 10px, 960px); padding-top: 10px; padding-bottom: 10px; height: 100dvh; } .panel { padding: 12px; border-radius: 22px; min-height: calc(100dvh - 20px); display: flex; flex-direction: column; overflow: hidden; } .panel::before { inset: 8px; border-radius: 16px; } .hero { margin-bottom: 10px; } h1 { font-size: clamp(1.55rem, 7vw, 2.2rem); margin-bottom: 6px; } .lede { display: none; } .marquee { display: none; } .eyebrow { margin-bottom: 6px; } .build-stamp { margin-bottom: 6px; font-size: 0.62rem; } .game-grid { display: block; gap: 0; flex: 1; min-height: 0; overflow: hidden; } body.game-mode .hero, body.game-mode .mobile-tabs, body.game-mode [data-tab-panel="host"], body.game-mode [data-tab-panel="scores"] { display: none !important; } body.game-mode .panel { min-height: 100dvh; padding-top: 8px; } body.game-mode .question-card { display: block !important; height: auto; min-height: calc(100dvh - 28px); overflow: auto; } body.game-mode .phase-text { min-height: 34px; margin-bottom: 8px; } body.game-mode .round-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } body.game-mode .video-stage { min-height: 0; padding: 10px; } body.game-mode .mini-score-card { margin-top: 8px; margin-bottom: 0; padding: 8px 10px; } body.game-mode .mini-score-head { margin-bottom: 6px; } body.game-mode .mini-scoreboard { grid-template-columns: 1fr; gap: 6px; } body.game-mode .mini-scoreboard li { min-height: 38px; padding: 6px 8px; } body.game-mode .answer-grid { gap: 6px; } body.game-mode .answer-option { min-height: 48px; padding: 9px 10px; } .mobile-tabs { display: flex; } [data-tab-panel] { display: none; height: 100%; overflow: auto; } [data-tab-panel].is-active { display: block; } .answer-grid { grid-template-columns: 1fr; } .field-row { flex-direction: column; } .status-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 8px; } .status-card, .control-card, .question-card, .score-card, .log-card { border-radius: 18px; padding: 11px; } .auth-actions { display: none; } .auth-error { margin-bottom: 8px; font-size: 0.8rem; } .action-notice { margin-bottom: 8px; font-size: 0.8rem; } .actions button, .auth-actions button { width: 100%; } .video-stage { min-height: 130px; border-radius: 18px; margin-bottom: 8px; } .round-actions { margin-bottom: 8px; } .mini-score-card { margin-bottom: 8px; padding: 10px; } .mini-score-head { margin-bottom: 8px; } .mini-score-head span { display: none; } .scoreboard { grid-template-columns: 1fr; gap: 10px; } .scoreboard-copy { align-items: center; text-align: center; } .scoreboard-copy h2 { font-size: 1rem; } .scoreboard-note { display: none; } .scoreboard-lamps span { width: 10px; height: 10px; } .scoreboard li { min-height: 68px; padding: 10px; } .scoreboard-rank { inset: 12px auto auto 12px; min-width: 48px; height: 24px; font-size: 0.64rem; } .scoreboard-meta { padding-top: 22px; } .scoreboard-name { font-size: 0.92rem; } .scoreboard-points { font-size: 1.45rem; } .speaker-cluster { display: none; } .video-stage-copy { gap: 4px; } .video-stage-copy strong { font-size: 0.84rem; } .answer-option { min-height: 52px; padding: 10px; } #log-output { min-height: 90px; max-height: 120px; font-size: 0.82rem; } .log-card { display: none; } } @media (max-width: 420px) { .status-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .scoreboard-entry { gap: 12px; } .scoreboard-points { font-size: 1.5rem; } }