diff --git a/BungeeCord-Chrome/popup.css b/BungeeCord-Chrome/popup.css index 7855d08..de74f0d 100644 --- a/BungeeCord-Chrome/popup.css +++ b/BungeeCord-Chrome/popup.css @@ -1,217 +1,435 @@ -:root { - --bg: #111827; - --panel: #0b1220; - --text: #e6eef8; - --muted: #9aa7b3; - --accent: #3b82f6; - --danger: #ef4444; - --radius: 8px; - --online: #22c55e; - --offline: #ef4444; -} - -* { box-sizing: border-box; } - -html, body { - margin: 0; - padding: 0; - font-family: Inter, Arial, sans-serif; - background: var(--bg); - color: var(--text); - overflow-x: hidden; -} - -.root { - width: 520px; - padding: 12px; - display: flex; - flex-direction: column; -} - -header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 8px; -} - -header h1 { font-size: 16px; margin: 0; } - -header .actions button { - background: transparent; - border: 1px solid var(--muted); - color: var(--text); - padding: 4px 8px; - border-radius: 6px; - cursor: pointer; -} - -.main { - display: flex; - gap: 12px; - position: relative; - align-items: flex-start; -} - -.server-list { - width: 45%; - background: var(--panel); - padding: 8px; - border-radius: var(--radius); - flex-shrink: 0; -} - -.detail { - flex: 1; - background: var(--panel); - padding: 8px; - border-radius: var(--radius); - min-height: 220px; - transition: all 0.3s ease; -} - -.detail.full-width { - width: 100%; - flex: 1 1 100%; -} - -.add-form { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; } -.add-form input { padding: 6px 8px; border-radius: 6px; border: 1px solid #21303b; background: #071019; color: var(--text); } -.add-form button { padding: 6px 8px; border-radius: 6px; border: none; background: var(--accent); color: white; cursor: pointer; } - -#serversContainer { - list-style: none; - margin: 0; - padding: 0; -} - -.server-item { - display: flex; - align-items: center; - justify-content: space-between; - padding: 8px; - margin-bottom: 6px; - border-radius: 6px; - cursor: pointer; - background: rgba(255,255,255,0.02); - transition: background 0.2s ease; -} - -.server-item:hover { background: rgba(255,255,255,0.05); } -.server-item .meta { display: flex; flex-direction: column; } -.server-item .meta .name { font-weight: 600; } -.server-item .meta .url { font-size: 11px; color: var(--muted); } - -.server-item .status-bubble { - font-size: 11px; - padding: 2px 8px; - border-radius: 999px; - color: #fff; -} - -.placeholder { color: var(--muted); padding: 12px; font-size: 13px; } -.hidden { display: none; } - -.detail-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 12px; -} - -.server-identity h2 { margin: 0; font-size: 18px; line-height: 1.2; } -.server-url { display: block; font-size: 12px; color: var(--muted); margin-top: 2px; } - -.status-wrapper { - display: flex; - align-items: center; - gap: 8px; - font-weight: 600; - font-size: 13px; -} - -.pulsing-dot { - width: 10px; height: 10px; border-radius: 50%; - background-color: var(--offline); - box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7); - animation: pulse-red 2s infinite; -} -.pulsing-dot.online { - background-color: var(--online); - animation: pulse-green 2s infinite; -} - -@keyframes pulse-green { 0% {box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7);} 70% {box-shadow: 0 0 0 8px rgba(34, 197, 94, 0);} 100% {box-shadow: 0 0 0 0 rgba(34, 197, 94, 0);} } -@keyframes pulse-red { 0% {box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7);} 70% {box-shadow: 0 0 0 8px rgba(239, 68, 68, 0);} 100% {box-shadow: 0 0 0 0 rgba(239, 68, 68, 0);} } - -.detail-stats { - display: flex; - justify-content: space-between; - background: rgba(255,255,255,0.05); - padding: 10px; - border-radius: var(--radius); - margin-bottom: 12px; - font-size: 13px; -} - -.playerList { - list-style: none; - padding: 10px 0; - margin: 0; - display: flex; - flex-wrap: wrap; - gap: 12px; - justify-content: center; /* Das hier setzt die Köpfe wieder in die Mitte */ -} - -.player-item { - position: relative; - display: flex; - flex-direction: column; - align-items: center; -} - -.player-avatar { - width: 42px; height: 42px; - border-radius: 6px; - transition: transform 0.2s ease; - box-shadow: 0 2px 6px rgba(0,0,0,0.3); - border: 2px solid rgba(255,255,255,0.1); -} - -.player-avatar:hover { - transform: scale(1.1); - border-color: var(--accent); -} - -.player-hover-info { - position: absolute; - bottom: -28px; - background: rgba(0, 0, 0, 0.95); - color: white; - padding: 3px 10px; - border-radius: 4px; - font-size: 11px; - white-space: nowrap; - pointer-events: none; - opacity: 0; - transform: translateY(5px); - transition: all 0.2s ease; - z-index: 100; - border: 1px solid rgba(255,255,255,0.2); -} - -.player-item:hover .player-hover-info { - opacity: 1; - transform: translateY(0); -} - -.detailButtons { display: flex; gap: 8px; margin-top: 15px; border-top: 1px solid rgba(255,255,255,0.05); padding-top: 10px; } -.detailButtons button { padding: 6px 12px; border-radius: 6px; border: none; cursor: pointer; font-size: 12px; font-weight: 600; } -#btnEdit { background: #f59e0b; color: #000; } -#btnDelete { background: var(--danger); color: #fff; } - -::-webkit-scrollbar { width: 6px; } -::-webkit-scrollbar-track { background: transparent; } -::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 10px; } -::-webkit-scrollbar-thumb:hover { background: var(--accent); } \ No newline at end of file +:root { + --bg: #0d1117; + --panel: #161b27; + --panel2: #111620; + --text: #e6eef8; + --muted: #5a6a7a; + --muted2: #8899aa; + --accent: #3b82f6; + --radius: 9px; + --online: #22c55e; + --offline: #ef4444; + --border: rgba(255,255,255,0.07); +} + +* { box-sizing: border-box; } + +html, body { + margin: 0; padding: 0; + font-family: Inter, Arial, sans-serif; + background: var(--bg); + color: var(--text); + overflow-x: hidden; +} + +.root { + width: 560px; + display: flex; + flex-direction: column; +} + +/* ── Header ── */ +header { + background: var(--panel); + display: flex; + align-items: center; + justify-content: space-between; + padding: 13px 20px; + border-bottom: 1px solid var(--border); +} + +header h1 { + font-size: 14px; + font-weight: 700; + margin: 0; + letter-spacing: 0.03em; + color: #fff; +} + +header .actions { display: flex; gap: 7px; } + +header .actions button { + background: rgba(255,255,255,0.07); + border: 1px solid rgba(255,255,255,0.1); + color: var(--muted2); + border-radius: 7px; + width: 32px; height: 32px; + cursor: pointer; + font-size: 16px; + display: flex; align-items: center; justify-content: center; + transition: background 0.15s, color 0.15s; +} + +header .actions button:hover { + background: rgba(255,255,255,0.12); + color: #fff; +} + +/* ── Main layout ── */ +.main { + display: flex; + flex-direction: column; +} + +/* ── Settings / add-form panel ── */ +.settings-panel { + background: var(--panel2); + border-bottom: 1px solid var(--border); + padding: 14px 20px; + display: flex; + flex-direction: column; + gap: 8px; +} + +.settings-panel input { + padding: 8px 12px; + border-radius: 7px; + border: 1px solid rgba(255,255,255,0.09); + background: rgba(0,0,0,0.3); + color: var(--text); + font-size: 13px; + outline: none; +} + +.settings-panel input:focus { + border-color: var(--accent); +} + +.settings-panel button { + padding: 8px 12px; + border-radius: 7px; + border: none; + background: var(--accent); + color: white; + font-size: 13px; + font-weight: 600; + cursor: pointer; +} + +/* ── Server list ── */ +.server-list-panel { + background: var(--panel2); + border-bottom: 1px solid var(--border); + padding: 10px 12px; +} + +#serversContainer { + list-style: none; + margin: 0; padding: 0; + display: flex; + flex-direction: column; + gap: 4px; +} + +.server-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 9px 12px; + border-radius: 8px; + cursor: pointer; + background: transparent; + border: 1px solid transparent; + transition: background 0.15s, border-color 0.15s; +} + +.server-item:hover { background: rgba(255,255,255,0.04); } +.server-item.selected { background: rgba(59,130,246,0.08); border-color: rgba(59,130,246,0.25); } + +.server-item .meta { display: flex; flex-direction: column; gap: 2px; } +.server-item .meta .name { font-size: 13px; font-weight: 600; color: #fff; } +.server-item .meta .url { font-size: 11px; color: var(--muted); } + +.status-bubble { + font-size: 11px; + font-weight: 600; + padding: 3px 10px; + border-radius: 999px; + color: #fff; + background: transparent; +} + +/* ── Detail panel ── */ +.detail-panel { + padding: 18px 20px; + display: flex; + flex-direction: column; + gap: 16px; + min-height: 200px; +} + +.placeholder { + color: var(--muted); + font-size: 13px; + padding: 24px 0; + text-align: center; +} + +/* Server identity + online badge */ +.srv-identity { + display: flex; + justify-content: space-between; + align-items: flex-start; +} + +.srv-name { font-size: 20px; font-weight: 700; color: #fff; margin: 0 0 4px; } +.srv-url { font-size: 12px; color: var(--muted); } + +.online-badge { + display: flex; + align-items: center; + gap: 7px; + border-radius: 999px; + padding: 5px 14px; + font-size: 13px; + font-weight: 600; +} + +.online-badge.online { + background: rgba(34,197,94,0.12); + border: 1px solid rgba(34,197,94,0.25); + color: #4ade80; +} + +.online-badge.offline { + background: rgba(239,68,68,0.1); + border: 1px solid rgba(239,68,68,0.2); + color: #f87171; +} + +.pulsing-dot { + width: 7px; height: 7px; + border-radius: 50%; + flex-shrink: 0; +} + +.pulsing-dot.online { + background: var(--online); + animation: pulse-green 2s infinite; +} + +.pulsing-dot.offline { + background: var(--offline); + animation: pulse-red 2s infinite; +} + +@keyframes pulse-green { + 0%,100% { box-shadow: 0 0 0 0 rgba(34,197,94,0.5); } + 50% { box-shadow: 0 0 0 5px rgba(34,197,94,0); } +} +@keyframes pulse-red { + 0%,100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.5); } + 50% { box-shadow: 0 0 0 5px rgba(239,68,68,0); } +} + +/* MOTD */ +.motd-bar { + font-size: 12px; + color: var(--muted2); + background: rgba(255,255,255,0.03); + border-radius: 8px; + padding: 8px 14px; + border-left: 2px solid rgba(59,130,246,0.35); + font-style: italic; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-top: 4px; +} + +/* Stats row – 3 gleich breite Karten */ +.stats-row { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 10px; + margin-top: 4px; +} + +.stat-card { + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 12px 16px; +} + +.stat-label { + font-size: 10px; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.08em; + margin-bottom: 5px; +} + +.stat-val { + font-size: 18px; + font-weight: 700; + color: #fff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.stat-val.small { + font-size: 12px; + padding-top: 4px; + font-weight: 500; + color: var(--muted2); +} + +/* Section label */ +.section-label { + font-size: 11px; + font-weight: 700; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.1em; + margin-bottom: 9px; + padding-top: 6px; + border-top: 1px solid var(--border); +} + +/* Sub-server chips – immer 3 pro Zeile */ +.sub-servers { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 8px; +} + +.sub-chip { + display: flex; + align-items: center; + gap: 7px; + border-radius: 8px; + padding: 8px 12px; + font-size: 13px; + font-weight: 600; + border: 1px solid var(--border); + background: var(--panel); + color: var(--muted2); + cursor: default; + transition: background 0.15s; + min-width: 0; +} + +.sub-chip.active { + background: rgba(59,130,246,0.1); + border-color: rgba(59,130,246,0.3); + color: #93c5fd; +} + +.sub-chip-dot { + width: 7px; height: 7px; + border-radius: 50%; + background: #2a3040; + flex-shrink: 0; +} + +.sub-chip.active .sub-chip-dot { + background: var(--accent); +} + +.sub-chip-name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + flex: 1; + min-width: 0; +} + +.sub-chip-count { + font-size: 11px; + font-weight: 500; + opacity: 0.65; + flex-shrink: 0; + margin-left: auto; + padding-left: 4px; +} + +/* Players grid – 2 Spalten */ +.players-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 8px; +} + +.player-card { + display: flex; + align-items: center; + gap: 12px; + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 10px 14px; + transition: background 0.15s; + min-width: 0; +} + +.player-card:hover { + background: rgba(255,255,255,0.05); +} + +.player-avatar { + width: 40px; height: 40px; + border-radius: 7px; + border: 1px solid rgba(255,255,255,0.1); + flex-shrink: 0; + image-rendering: pixelated; +} + +.player-info { flex: 1; min-width: 0; } + +.player-name { + font-size: 14px; + font-weight: 700; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.player-prefix { + font-size: 11px; + color: var(--muted2); + margin-bottom: 2px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.player-server-tag { + display: inline-block; + margin-top: 3px; + font-size: 11px; + font-weight: 600; + background: rgba(59,130,246,0.18); + color: #93c5fd; + border-radius: 5px; + padding: 2px 7px; +} + +/* Edit/Delete buttons */ +.detail-buttons { + display: flex; + gap: 10px; + padding-top: 10px; + border-top: 1px solid var(--border); +} + +.detail-buttons button { + padding: 7px 16px; + border-radius: 7px; + border: none; + cursor: pointer; + font-size: 13px; + font-weight: 600; +} + +#btnEdit { background: rgba(245,158,11,0.15); color: #fbbf24; border: 1px solid rgba(245,158,11,0.25); } +#btnDelete { background: rgba(239,68,68,0.12); color: #f87171; border: 1px solid rgba(239,68,68,0.2); } + +.hidden { display: none !important; } + +::-webkit-scrollbar { width: 5px; } +::-webkit-scrollbar-track { background: transparent; } +::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 10px; } +::-webkit-scrollbar-thumb:hover { background: var(--accent); }