diff --git a/web/client/src/components/SettingsPanel.css b/web/client/src/components/SettingsPanel.css new file mode 100644 index 0000000..958588f --- /dev/null +++ b/web/client/src/components/SettingsPanel.css @@ -0,0 +1,242 @@ +/* ============================================ + Settings Panel (overlay modal) + ============================================ */ + +.settings-overlay { + position: fixed; + inset: 0; + z-index: 1000; + background: rgba(0, 0, 0, 0.7); + display: flex; + align-items: center; + justify-content: center; + animation: settingsFadeIn 0.15s ease-out; +} + +@keyframes settingsFadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +.settings-panel { + background: #2a2a2a; + border: 3px solid var(--mc-stone-dark); + box-shadow: + inset 1px 1px 0 var(--mc-border-highlight), + inset -1px -1px 0 var(--mc-border-shadow), + 0 8px 32px rgba(0, 0, 0, 0.6); + width: 90%; + max-width: 520px; + max-height: 80vh; + display: flex; + flex-direction: column; + animation: settingsSlideIn 0.15s ease-out; +} + +@keyframes settingsSlideIn { + from { transform: translateY(-12px); opacity: 0; } + to { transform: translateY(0); opacity: 1; } +} + +.settings-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem 1rem; + background: var(--mc-oak-dark); + border-bottom: 2px solid var(--mc-dark); + box-shadow: + inset 0 2px 0 var(--mc-oak-light), + inset 0 -1px 0 var(--mc-dirt-dark); +} + +.settings-header h2 { + font-size: 0.9rem; + color: var(--mc-text-yellow); + text-shadow: 2px 2px 0 var(--mc-dark); +} + +.settings-close { + background: none; + border: 2px solid transparent; + color: var(--mc-text-gray); + font-family: 'Silkscreen', monospace; + font-size: 0.9rem; + cursor: pointer; + padding: 0.15rem 0.4rem; + transition: color 0.15s, border-color 0.15s; +} + +.settings-close:hover { + color: var(--mc-text-red); + border-color: var(--mc-text-red); +} + +.settings-body { + padding: 1rem; + overflow-y: auto; + flex: 1; +} + +.settings-section h3 { + font-size: 0.8rem; + color: var(--mc-text-gold); + text-shadow: 1px 1px 0 #000; + margin-bottom: 0.4rem; +} + +.settings-hint { + font-size: 0.6rem; + color: var(--mc-text-gray); + margin-bottom: 0.75rem; + line-height: 1.4; +} + +.settings-empty { + font-size: 0.65rem; + color: var(--mc-text-gray); + font-style: italic; + text-align: center; + padding: 1.5rem 0; +} + +/* === Dropper nickname list === */ + +.dropper-nickname-list { + display: flex; + flex-direction: column; + gap: 0.375rem; +} + +.dropper-nickname-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.5rem; + padding: 0.5rem 0.625rem; + background: #222; + border: 2px solid #3a3a3a; + transition: border-color 0.15s; +} + +.dropper-nickname-row:hover { + border-color: #555; +} + +.dropper-nickname-info { + display: flex; + flex-direction: column; + gap: 0.15rem; + min-width: 0; + flex: 1; +} + +.dropper-raw-name { + font-size: 0.65rem; + color: var(--mc-text-white); + display: flex; + align-items: center; + gap: 0.35rem; + flex-wrap: wrap; +} + +.dropper-badge { + font-size: 0.5rem; + padding: 0.1rem 0.3rem; + border-radius: 0; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.dropper-badge.default { + background: var(--mc-grass-dark); + color: var(--mc-text-green); + border: 1px solid var(--mc-grass); +} + +.dropper-badge.client { + background: #2a2854; + color: var(--mc-text-aqua); + border: 1px solid #4a48a4; +} + +.dropper-current-nick { + font-size: 0.6rem; + color: var(--mc-text-gold); + font-style: italic; +} + +.dropper-nickname-actions { + display: flex; + align-items: center; + gap: 0.25rem; + flex-shrink: 0; +} + +.nickname-input { + background: #1a1a1a; + border: 2px solid #444; + color: var(--mc-text-white); + font-family: 'Silkscreen', monospace; + font-size: 0.6rem; + padding: 0.3rem 0.4rem; + outline: none; + width: 120px; + transition: border-color 0.15s; +} + +.nickname-input:focus { + border-color: var(--mc-text-green); +} + +.nickname-input::placeholder { + color: #555; +} + +.nick-btn { + padding: 0.25rem 0.4rem !important; + font-size: 0.65rem !important; + min-width: unset !important; + line-height: 1; +} + +/* === Settings gear button (in header) === */ + +.settings-gear { + background: none; + border: 2px solid transparent; + cursor: pointer; + font-size: 1.15rem; + padding: 0.2rem 0.35rem; + transition: border-color 0.15s, transform 0.3s; + color: var(--mc-text-gray); +} + +.settings-gear:hover { + border-color: var(--mc-text-gold); + transform: rotate(45deg); + color: var(--mc-text-gold); +} + +/* === Responsive === */ + +@media (max-width: 480px) { + .settings-panel { + width: 96%; + max-height: 90vh; + } + + .nickname-input { + width: 80px; + } + + .dropper-nickname-row { + flex-direction: column; + align-items: flex-start; + } + + .dropper-nickname-actions { + width: 100%; + justify-content: flex-end; + } +}