/* Dokument Styles */ body { background-color: #111; color: #eee; font-family: sans-serif; padding: 20px; } h1 { color:#d4af37; } h2 { color:#999999; } /* Headlines */ .inline-headlines { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.2rem; padding-bottom: 1rem; border-bottom: 0px solid #444; } .inline-headlines h1 { font-size: 1.8rem; margin: 0; } .inline-headlines h2 { font-size: 1.2rem; font-weight: normal; margin: 0; color: #aaa; } #fail2ban-stats { display: flex; flex-direction: column; align-items: flex-start; font-size: 0.9rem; font-family: Arial, sans-serif; color: #aaa; line-height: 1.4; padding-left: 1rem; border-left: 0px solid #333; } #headerversion { display: flex; flex-direction: column; align-items: flex-start; font-size: 0.9rem; font-family: Arial, sans-serif; color: #aaa; line-height: 1.4; padding-left: 1rem; border-left: 0px solid #333; } /* Forms */ select, input { margin: 10px 5px; padding: 5px; background-color: #222; color: #ffd700; border: 1px solid #444; border-radius: 5px; /* box-shadow: 0 2px 2px rgba(212, 175, 55, 0.5); */ transition: background-color 0.3s ease; } /* Table Styles for Output */ table { width: 100%; border-collapse: collapse; margin-top: 20px; } th, td { border: 1px solid #333; padding: 8px; text-align: left; } th { background-color: #222; color: #ffd700; } tr:nth-child(even) { background-color: #1a1a1a; } /* Styles for Action Buttons */ .action-btn { background-color: #b8860b; /* dark Gold */ color: #111; border: none; padding: 5px 8px; font-weight: 600; border-radius: 5px; cursor: pointer; transition: background-color 0.3s ease; box-shadow: 0 2px 5px rgba(184, 134, 11, 0.6); } .action-btn:hover, .action-btn:focus { background-color: #ffd700; /* light Gold when Hover */ color: #000; outline: none; box-shadow: 0 0 10px #ffd700; } .action-btn:active { background-color: #aa7a00; box-shadow: inset 0 2px 5px rgba(0,0,0,0.3); } /* Notifications for Actions */ #notification-container { position: fixed; top: 20px; right: 20px; z-index: 9999; display: flex; flex-direction: column; gap: 10px; } .notification { background-color: #222; color: #ffd700; padding: 10px 15px; border-radius: 5px; box-shadow: 0 0 8px rgba(0,0,0,0.3); font-family: monospace; font-size: 14px; opacity: 0.95; animation: fadein 0.3s ease-out, fadeout 0.5s ease-in 4s forwards; } .notification.success { background-color: #28a745; /* green */ color: #fff; padding: 10px 15px; border-radius: 5px; box-shadow: 0 0 8px rgba(0,0,0,0.3); font-family: monospace; font-size: 14px; opacity: 0.95; animation: fadein 0.3s ease-out, fadeout 0.5s ease-in 4s forwards; } .notification.error { background-color: #e74c3c; /* red */ color: #fff; padding: 10px 15px; border-radius: 5px; box-shadow: 0 0 8px rgba(0,0,0,0.3); font-family: monospace; font-size: 14px; opacity: 0.95; animation: fadein 0.3s ease-out, fadeout 0.5s ease-in 4s forwards; } .notification.info { background-color: #3498db; /* classic blue */ color: #fff; padding: 10px 15px; border-radius: 5px; box-shadow: 0 0 8px rgba(0,0,0,0.3); font-family: monospace; font-size: 14px; opacity: 0.95; animation: fadein 0.3s ease-out, fadeout 0.5s ease-in 4s forwards; } @keyframes fadein { from { opacity: 0; transform: translateY(-10px); } to { opacity: 0.95; transform: translateY(0); } } @keyframes fadeout { to { opacity: 0; transform: translateY(-10px); } } /* Overlay for Blocklist */ .overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.7); display: flex; justify-content: center; align-items: center; z-index: 10000; } .overlay.hidden { display: none; } .overlay-content { position: relative; background: #1a1a1a; color: #d4af37; /* gold */ padding: 20px; width: 90%; max-width: 600px; border-radius: 8px; box-shadow: 0 0 10px #a67c00; max-height: 80vh; overflow-y: auto; } .close-btn { position: absolute; top: 10px; right: 10px; font-size: 1.5rem; background: none; border: none; color: #d4af37; cursor: pointer; padding: 0; line-height: 1; z-index: 10; transition: color 0.3s ease; } .close-btn:hover, .close-btn:focus { color: #ffd54f; outline: none; } .blocklist-entry { display: flex; justify-content: space-between; border-bottom: 1px solid #555; padding: 6px 0; } .blocklist-entry button { background: #722; color: #f8f8f8; border: none; padding: 4px 8px; cursor: pointer; border-radius: 4px; } .blocklist-entry button:hover { background: #a33; } #reloadBlocklistBtn { background-color: #28a745; color: white; border: none; padding: 8px 16px; font-weight: 600; border-radius: 6px; cursor: pointer; box-shadow: 0 2px 5px rgba(40, 167, 69, 0.6); transition: background-color 0.3s ease, box-shadow 0.3s ease; font-size: 1rem; } #reloadBlocklistBtn:hover, #reloadBlocklistBtn:focus { background-color: #218838; /* dark green on Hover */ box-shadow: 0 0 8px 2px rgba(40, 167, 69, 0.8), 0 0 15px 4px rgba(40, 167, 69, 0.5); outline: none; } #blocklistSearch { width: 100%; padding: 8px 10px; margin: 10px 0 15px 0; border: 1px solid #d4af37; border-radius: 4px; background-color: #222; color: #d4af37; font-size: 1rem; } #blocklistSearch::placeholder { color: #aa9a52; } .sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; } /* Checkboxes */ /* Hide original Checkbox */ input[type="checkbox"] { appearance: none; /* Firefox and modern Browsers */ -webkit-appearance: none; /* Safari/Chrome */ -moz-appearance: none; /* Firefox */ width: 20px; height: 20px; border: 2px solid #d4af37; border-radius: 4px; vertical-align: middle; margin-right: 5px; cursor: pointer; position: relative; background: black; transition: background 0.3s, border-color 0.3s; } /* Style for Checked */ input[type="checkbox"]:checked { background-color: #d4af37; border-color: #d4af37; box-shadow: 0 0 5px #d4af37aa; } /* Black Check */ input[type="checkbox"]:checked::after { content: ""; position: absolute; top: 3px; left: 7px; width: 5px; height: 10px; border: solid black; border-width: 0 2px 2px 0; transform: rotate(45deg); } /* Hover */ input[type="checkbox"]:hover { border-color: #d4af37; } /* Blocklist Button */ #openBlocklistBtn { background-color: #222; color: #d4af37; border: 1px solid #555; padding: 5px 8px; font-size: 1.0rem; font-weight: 100; border-radius: 6px; cursor: pointer; /* box-shadow: 0 2px 2px rgba(212, 175, 55, 0.5); */ transition: box-shadow 0.3s ease, background-color 0.3s ease; } #openBlocklistBtn:hover, #openBlocklistBtn:focus { background-color: #d4af37; color: #222; /* box-shadow: 0 0 8px 2px rgba(212, 175, 55, 0.7), 0 0 15px 4px rgba(212, 175, 55, 0.4); outline: none; */ } /* Footer */ .site-footer { background-color: #222; color: #d4af37; text-align: center; padding: 1rem 0; font-size: 0.9rem; } } .yellowtext { color: #d4af37; } .siterel { background-color: #d4af37; color: black; border: none; padding: 8px 12px; font-size: 1.0rem; border-radius: 5px; cursor: pointer; transition: background-color 0.3s ease; user-select: none; } .siterel:hover, .siterel:focus { background-color: #ffd700; outline: none; } /* Reset Button Style for Blocklist-Overlay */ .button-reset { background-color: #222; color: #d4af37; border: 1px solid #555; padding: 0.35em 0.75em; font-size: 0.9em; border-radius: 4px; cursor: pointer; /* box-shadow: 0 2px 2px rgba(212, 175, 55, 0.5); */ transition: background-color 0.2s ease-in-out; } .button-reset:hover { background-color: #d4af37; color: #222; border: 1px solid #222; padding: 0.35em 0.75em; font-size: 0.9em; border-radius: 4px; cursor: pointer; transition: background-color 0.2s ease-in-out; } /* Jailfilter in Blocklist */ /* Jail Filter Button */ #blocklistJailFilterBtn { background-color: #333; color: #d4af37; border: 1px solid #555; padding: 6px 12px; cursor: pointer; font-size: 0.9rem; border-radius: 4px; user-select: none; /* box-shadow: 0 2px 5px rgba(212, 175, 55, 0.5); */ transition: background-color 0.3s ease; } #blocklistJailFilterBtn:hover, #blocklistJailFilterBtn:focus { background-color: #444; outline: none; } /* Jail Filter Overlay */ #blocklistJailFilterOverlay { position: absolute; background-color: #d4af37; color: 333; border: 1px solid #444; border-radius: 6px; padding: 10px; max-height: 200px; width: 180px; overflow-y: auto; /* box-shadow: 0 0 8px rgba(212, 175, 55, 0.4); /* golden shaddow */ z-index: 1100; font-size: 0.9rem; color: #eee; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } /* Checkbox Labels for Overlay */ #blocklistJailFilterContainer label { display: flex; align-items: center; cursor: pointer; margin-bottom: 6px; user-select: none; } /* Checkboxes */ #blocklistJailFilterContainer input[type="checkbox"] { margin-right: 8px; width: 16px; height: 16px; cursor: pointer; accent-color: #d4af37; } /* Scrollbar Styling (modern Browser) */ #blocklistJailFilterOverlay::-webkit-scrollbar { width: 8px; } #blocklistJailFilterOverlay::-webkit-scrollbar-track { background: #111; } #blocklistJailFilterOverlay::-webkit-scrollbar-thumb { background-color: #d4af37; border-radius: 4px; } /* Hide Overlay */ .hidden { display: none; } /* Blocklist Stats */ #blocklist-stats-container { display: grid; grid-template-rows: repeat(3, auto); grid-auto-flow: column; gap: 0.1rem 0.5rem; /* vertical and horizontal spacer */ max-width: 600px; /* max-width for blocklists */ font-size: 0.9rem; font-family: Arial, sans-serif; color: #aaa; line-height: 1.4; padding-left: 0.0rem; border-left: 0px solid #333; } #blocklist-stats-container div { white-space: nowrap; /* dont break text */ font-size: 0.9rem; font-family: Arial, sans-serif; color: #aaa; } .headhead { font-family: Arial, sans-serif; color: #d4af37; font-size: 0.9rem; margin-bottom: 3px; } .headstat { font-family: Arial, sans-serif; color: #aaa; font-size: 0.9rem; } /* Warning Dots */ /* Container for Fail2Ban Statuses */ .fail2ban-status { display: inline-block; margin-right: 10px; font-size: 0.95em; /* color: #333; */ } /* Warning Dot grey when inactive */ .status-dot { opacity: 1; filter: grayscale(0%); transition: all 0.3s ease; /* color: inherit; */ } /* Warn/Crit */ .status-dot.disabled { opacity: 0.3; filter: grayscale(100%); /* color: #999; */ } /* Warn Text */ .status-label { margin-left: 4px; vertical-align: middle; white-space: pre-line; font-size: 0.9em; color: #aaa; } /* Statusline (Warn / Crit) */ #fail2ban-warning-status, #fail2ban-critical-status { display: flex; flex-direction: row; align-items: center; margin-bottom: 4px; } /* Alert Container */ #fail2ban-alerts-container { display: flex; flex-direction: column; } /* Top Jail List */ .toplist { margin-top: 0px; color: #aaa; margin-left: 0px; } .toplist li::marker { content: ""; } ul.toplist li { list-style: none; } /* Jail List Small Row */ .jaillistdiv { display: flex; gap: 10px; white-space: nowrap; animation: marquee 10s linear infinite; } .jaillist { color: #aaa; font-size: 0.7em; display: inline-block; }