/* --- Panels --- */ .glass-panel { background: color-mix(in srgb, var(--surface) 88%, transparent); border: 1px solid var(--edge); border-radius: var(--radius-lg); padding: 2rem; box-shadow: var(--shadow-soft); transition: var(--transition-smooth); } .glass-panel:hover { border-color: var(--edge-accent); } .card { background: var(--surface); border: 1px solid var(--edge); border-radius: var(--radius-lg); padding: 1.5rem; margin-bottom: 1.5rem; box-shadow: var(--shadow-soft); } .card h3 { color: var(--accent); font-size: 1.35rem; margin-bottom: 1rem; border-bottom: 1px solid var(--edge-accent); padding-bottom: 0.5rem; } /* Sunken sub-section inside a panel (character sheet groups, ledgers...) */ .sheet-group { background: var(--well); padding: 1rem; border-radius: var(--radius-sm); border-left: 2px solid var(--accent-dark); } .sheet-group h4 { color: var(--accent); font-size: 1.05rem; margin-bottom: 0.5rem; letter-spacing: 0.5px; } /* Notice banners (first-scene framing, over-limit warnings...) */ .notice-banner { border: 1px dashed var(--edge); border-radius: var(--radius-md); padding: 1rem 1.5rem; margin: 0 auto 1.5rem; max-width: 700px; text-align: left; } .notice-banner h4 { margin-bottom: 0.5rem; } .notice-banner.accent { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 9%, transparent); } .notice-banner.accent h4 { color: var(--accent); } .notice-banner.danger { border-color: var(--danger); background: color-mix(in srgb, var(--danger) 9%, transparent); } .notice-banner.danger h4 { color: var(--danger); } /* Prompt boxes (character-sheet callouts: death, ghost, name...) */ .prompt-box { border: 1px dashed var(--edge); border-left: 2px solid var(--edge); padding: 1rem; border-radius: var(--radius-md); margin-bottom: 1rem; background: var(--well); } .prompt-box h4 { margin-bottom: 0.5rem; } .prompt-box.accent { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); } .prompt-box.accent h4 { color: var(--accent); } .prompt-box.danger { border-color: var(--danger); background: color-mix(in srgb, var(--danger) 9%, transparent); } .prompt-box.danger h4 { color: var(--danger); } .prompt-box.ghostly { border-color: var(--ghost); background: color-mix(in srgb, var(--ghost) 10%, transparent); } .prompt-box.ghostly h4 { color: var(--ghost); } /* --- Forms & controls --- */ .form-group { margin-bottom: 1.25rem; text-align: left; } .form-group label { display: block; margin-bottom: 0.5rem; font-size: 0.95rem; color: var(--text-muted); font-weight: 500; } .input-field, .form-control, .select-field, .copy-input { width: 100%; padding: 0.7rem 1rem; background: var(--well); border: 1px solid var(--edge); border-radius: var(--radius-sm); color: var(--text); font-family: var(--font-body); font-size: 1rem; transition: var(--transition-smooth); } .input-field::placeholder, .form-control::placeholder { color: color-mix(in srgb, var(--text-muted) 70%, transparent); } .input-field:focus, .form-control:focus, .select-field:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent); } .select-field { cursor: pointer; } .input-large { padding: 0.9rem 1.1rem; font-size: 1.1rem; } .input-row { display: flex; gap: 0.5rem; } .input-row .input-field { flex: 1; } .select-small { padding: 0.5rem; font-size: 0.9rem; flex: 1; } .select-xsmall { padding: 0.4rem 0.5rem; font-size: 0.85rem; width: 140px; } .checkbox-label { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; font-size: 0.95rem; } .objectives-checklist { display: flex; flex-direction: column; gap: 0.35rem; } /* --- Buttons --- */ .btn { display: inline-block; padding: 0.7rem 1.5rem; font-family: var(--font-heading); font-weight: 700; font-size: 1rem; letter-spacing: 1px; border: 1px solid transparent; border-radius: var(--radius-sm); cursor: pointer; transition: var(--transition-smooth); text-decoration: none; } .btn-primary { background: linear-gradient(160deg, var(--accent-bright) 0%, var(--accent) 45%, var(--accent-dark) 100%); border-color: var(--accent-dark); color: var(--text-inverse); box-shadow: var(--shadow-soft); } .btn-primary:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 6px 18px color-mix(in srgb, var(--accent) 35%, transparent); } .btn-secondary { background: color-mix(in srgb, var(--text) 8%, transparent); border-color: var(--edge); color: var(--text); } .btn-secondary:hover:not(:disabled) { background: color-mix(in srgb, var(--text) 15%, transparent); transform: translateY(-2px); } .btn-deep { background: color-mix(in srgb, var(--deep) 10%, var(--surface)); border-color: var(--deep); color: var(--deep); } .btn-deep:hover:not(:disabled) { background: var(--deep); color: var(--text-inverse); transform: translateY(-2px); } .btn-danger { background: color-mix(in srgb, var(--danger) 18%, var(--surface)); border-color: var(--danger); color: color-mix(in srgb, var(--danger) 70%, var(--text)); } .btn-danger:hover:not(:disabled) { background: var(--danger); color: var(--text-inverse); transform: translateY(-2px); } .btn-success { background: color-mix(in srgb, var(--success) 18%, var(--surface)); border-color: var(--success); color: color-mix(in srgb, var(--success) 70%, var(--text)); } .btn-success:hover:not(:disabled) { background: var(--success); color: var(--text-inverse); } .btn-gold { background: transparent; border: 2px solid var(--accent); color: var(--accent); } .btn-gold:hover:not(:disabled) { background: var(--accent); color: var(--text-inverse); box-shadow: 0 0 20px color-mix(in srgb, var(--accent) 40%, transparent); transform: translateY(-2px); } .btn-full, .btn-block { width: 100%; } .btn-small { padding: 0.4rem 0.8rem; font-size: 0.85rem; } .btn-large { padding: 0.9rem 2rem; font-size: 1.15rem; } .btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none !important; box-shadow: none !important; } .glow-effect:hover { filter: brightness(1.15); } /* --- Alerts --- */ .alert { padding: 0.75rem 1.25rem; margin-bottom: 1.5rem; border-radius: var(--radius-sm); text-align: center; font-weight: 500; } .alert-danger { background: color-mix(in srgb, var(--danger) 14%, transparent); border: 1px solid var(--danger); color: color-mix(in srgb, var(--danger) 75%, var(--text)); } /* --- Player chips --- */ .player-chips { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; margin-top: 1rem; } .player-chip { background: color-mix(in srgb, var(--text) 6%, transparent); border: 1px solid var(--edge); padding: 0.5rem 1.25rem; border-radius: 30px; display: flex; align-items: center; gap: 0.5rem; transition: var(--transition-smooth); } .player-chip.current-user { background: color-mix(in srgb, var(--accent) 14%, transparent); border-color: var(--accent); } .player-chip.voted-chip { border-color: var(--success); background-color: color-mix(in srgb, var(--success) 6%, transparent); } .player-chip.not-voted-chip { border-color: var(--edge); } .list-chips { justify-content: flex-start; } .list-chips .player-chip { padding: 0.4rem 1rem; font-size: 0.9rem; } .deep-chip { border-color: var(--deep); background: color-mix(in srgb, var(--deep) 5%, transparent); } .pirat-chip { border-color: var(--pirat); background: color-mix(in srgb, var(--pirat) 5%, transparent); } .player-chip.is-ghost { border-color: var(--ghost); color: var(--ghost); background: color-mix(in srgb, var(--ghost) 10%, transparent); } .player-chip.is-dead { border-color: var(--danger); color: var(--danger); background: color-mix(in srgb, var(--danger) 10%, transparent); } .player-chip.is-captain { border-color: var(--accent); color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); } /* --- Badges --- */ .creator-badge { background: var(--accent); color: var(--text-inverse); font-size: 0.7rem; font-weight: 700; padding: 0.1rem 0.4rem; border-radius: 4px; text-transform: uppercase; } .deep-badge, .pirat-badge, .ghost-badge { padding: 0.1rem 0.45rem; font-size: 0.75rem; font-weight: 700; border-radius: 4px; margin-left: 0.35rem; white-space: nowrap; } .deep-badge { background: color-mix(in srgb, var(--deep) 14%, transparent); border: 1px solid var(--deep); color: var(--deep); } .pirat-badge { background: color-mix(in srgb, var(--pirat) 14%, transparent); border: 1px solid var(--pirat); color: var(--pirat); } .ghost-badge { background: color-mix(in srgb, var(--ghost) 14%, transparent); border: 1px solid var(--ghost); color: var(--ghost); } .captain-badge { background: color-mix(in srgb, var(--accent) 14%, transparent); border: 1px solid var(--accent); color: var(--accent); padding: 0.4rem 1rem; border-radius: 20px; font-size: 1rem; font-weight: 700; font-family: var(--font-heading); display: inline-flex; align-items: center; gap: 0.5rem; } .captain-badge.vacant { background: color-mix(in srgb, var(--text) 4%, transparent); border: 1px dashed var(--edge); color: var(--text-muted); } /* --- Waiting indicator --- */ .waiting-box, .waiting-indicator { font-size: 0.95rem; color: var(--accent); display: flex; align-items: center; justify-content: center; gap: 0.75rem; }