/* Dark felt theme bridged onto Bootstrap 5.3. * * Loaded after bootstrap.min.css and before style.css: variables defined * here retheme Bootstrap components, while style.css keeps owning the * game table, cards and scoring summary. */ :root, [data-bs-theme="dark"] { --felt: #1d5c38; --felt-dark: #14341f; --panel: #223026; --panel-light: #2e4234; --text: #f1f0e8; --muted: #a9b7ab; --accent: #e8c547; --danger: #d9534f; --team-a: #7db4e8; --team-b: #e8967d; --bs-body-bg: var(--felt-dark); --bs-body-color: var(--text); --bs-body-color-rgb: 241, 240, 232; --bs-body-bg-rgb: 20, 52, 31; --bs-emphasis-color: #fff; --bs-secondary-color: var(--muted); --bs-secondary-bg: var(--panel); --bs-tertiary-bg: var(--panel); --bs-border-color: #3c5543; --bs-border-color-translucent: rgba(241, 240, 232, 0.12); --bs-link-color: var(--accent); --bs-link-color-rgb: 232, 197, 71; --bs-link-hover-color: #f3d97a; --bs-link-hover-color-rgb: 243, 217, 122; --bs-primary: var(--accent); --bs-primary-rgb: 232, 197, 71; --bs-warning: var(--accent); --bs-warning-rgb: 232, 197, 71; } body { min-height: 100vh; background-color: var(--felt-dark); /* Casino-table felt: a fine grain texture tiled over the green * gradient, lit from above and darkened towards the edges. The first * layer is the topmost one. */ background-image: radial-gradient( ellipse at 50% 45%, transparent 55%, rgba(0, 0, 0, 0.38) 100% ), radial-gradient( ellipse at 50% -10%, rgba(255, 255, 255, 0.07), transparent 60% ), url("/assets/felt.svg"), radial-gradient( ellipse at 50% -10%, var(--felt) 0%, var(--felt-dark) 65% ); background-repeat: no-repeat, no-repeat, repeat, no-repeat; background-attachment: fixed; color: var(--text); } /* ---------- navbar ---------- */ .navbar { --bs-navbar-padding-y: 0.75rem; --bs-navbar-color: var(--muted); --bs-navbar-hover-color: var(--text); --bs-navbar-active-color: var(--accent); --bs-navbar-brand-color: var(--text); --bs-navbar-brand-hover-color: var(--accent); border-bottom: 1px solid rgba(0, 0, 0, 0.35); background: rgb(15, 39, 23); } .navbar .navbar-brand { font-weight: 700; letter-spacing: 0.02em; } .navbar .nav-link.active { font-weight: 600; } .navbar .navbar-text { color: var(--muted); } /* ---------- cards ---------- */ .card { --bs-card-bg: var(--panel); --bs-card-cap-bg: var(--panel-light); --bs-card-border-color: rgba(0, 0, 0, 0.35); --bs-card-border-radius: 12px; box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25); } .card-header { font-weight: 600; border-bottom-color: rgba(0, 0, 0, 0.35); } /* ---------- buttons ---------- */ .btn-warning { --bs-btn-color: #1d1d1d; --bs-btn-hover-color: #1d1d1d; --bs-btn-active-color: #1d1d1d; --bs-btn-disabled-color: #1d1d1d; --bs-btn-bg: var(--accent); --bs-btn-border-color: var(--accent); --bs-btn-hover-bg: #f0d266; --bs-btn-hover-border-color: #f0d266; --bs-btn-active-bg: #d4b23c; --bs-btn-active-border-color: #d4b23c; --bs-btn-disabled-bg: var(--accent); --bs-btn-disabled-border-color: var(--accent); --bs-btn-focus-shadow-rgb: 232, 197, 71; } /* ---------- forms ---------- */ .form-control, .form-select { background-color: var(--panel-light); border-color: #4c6a54; color: var(--text); } .form-control::placeholder { color: var(--muted); opacity: 0.7; } .form-control:focus, .form-select:focus { background-color: var(--panel-light); border-color: var(--accent); color: var(--text); box-shadow: 0 0 0 0.25rem rgba(232, 197, 71, 0.25); } .form-check-input { background-color: var(--panel-light); border-color: #4c6a54; } .form-check-input:checked { background-color: var(--accent); border-color: var(--accent); } /* ---------- lobby ---------- */ .lobby-hero { padding: 2rem 0 1rem; } .code-input { font-family: var(--bs-font-monospace); font-size: 1.5rem; text-transform: uppercase; letter-spacing: 0.35em; text-align: center; } .code-display { font-family: var(--bs-font-monospace); font-size: 3rem; font-weight: 700; letter-spacing: 0.3em; color: var(--accent); line-height: 1.2; word-break: break-all; } .seat-open { opacity: 0.45; font-style: italic; } .list-group { --bs-list-group-bg: var(--panel-light); --bs-list-group-border-color: rgba(0, 0, 0, 0.35); --bs-list-group-border-radius: 10px; } .progress-fill { background: var(--accent); } /* ---------- page shells ---------- */ .page-shell { max-width: 60rem; margin: 0 auto; } .status-card { max-width: 30rem; margin: 4rem auto; text-align: center; }