| Custom CSS |
/* === Минималистичный спокойный стиль для Heimdall === */
/* Тёмная спокойная палитра: тёмно-серый фон, мягкие акценты */
/* Основной фон и текст */
body {
background-color: #0f0f0f;
color: #d4d4d4;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
line-height: 1.6;
}
/* Убираем подчёркивания и лишние стили ссылок */
a {
text-decoration: none;
color: inherit;
}
a:hover {
color: #a8a8a8;
}
/* Основные контейнеры (карточки приложений, формы, поиск) */
.module-container,
.item,
.searchform .input-container,
header,
#create,
.alert,
textarea,
input,
select {
background-color: rgba(30, 30, 30, 0.85) !important;
border: none;
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
backdrop-filter: blur(8px);
transition: all 0.25s ease;
}
.item:hover {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4);
background-color: rgba(40, 40, 40, 0.95) !important;
}
/* Заголовки секций */
.module-container header .section-title,
.newblock h2 {
color: #bbbbbb;
background: none;
border: none;
font-weight: 500;
}
/* Поиск */
.searchform input {
background-color: rgba(40, 40, 40, 0.9) !important;
border-radius: 10px;
padding: 12px 16px;
color: #d4d4d4;
}
.searchform input:focus {
outline: none;
box-shadow: 0 0 0 2px rgba(120, 120, 120, 0.5);
}
/* Кнопки и действия */
.button,
.module-actions .button,
a.secondary {
background-color: rgba(60, 60, 60, 0.9) !important;
border-radius: 8px;
color: #d4d4d4;
transition: background 0.2s ease;
}
.button:hover,
.module-actions .button:hover {
background-color: rgba(90, 90, 90, 0.95) !important;
}
/* Карточки приложений — ещё чище */
.item {
border: none;
background-image: none !important;
}
/* Убираем лишние бордеры и шум */
table,
.module-container .table,
.module-container footer,
.module-container header {
background: transparent;
border: none;
}
.module-container .table tbody tr:hover {
background-color: rgba(255, 255, 255, 0.05);
}
/* Настройки и модальные окна */
#create {
background-color: rgba(20, 20, 20, 0.95) !important;
}
/* Фиксированные кнопки настроек (справа вверху) */
#config-buttons {
opacity: 0.6;
transition: opacity 0.3s ease;
}
#config-buttons:hover {
opacity: 1;
}
/* Дополнительно: больше воздуха и минимализма */
.module-container {
margin-bottom: 20px;
}
h1, h2, h3 {
font-weight: 500;
letter-spacing: -0.02em;
}
|
|
| Custom JavaScript |
<script>
// === Beautiful & Calm Welcome Message for Vladimir ===
function showWelcomeMessage() {
const now = new Date();
const hour = now.getHours();
const minutes = now.getMinutes();
let greeting = "";
let emoji = "";
if (hour >= 5 && hour < 12) {
greeting = "Good morning";
emoji = "🌅";
} else if (hour >= 12 && hour < 17) {
greeting = "Good afternoon";
emoji = "☀️";
} else if (hour >= 17 && hour < 22) {
greeting = "Good evening";
emoji = "🌆";
} else {
greeting = "Good night";
emoji = "🌙";
}
const message = ${emoji} ${greeting}, Vladimir;
// Create welcome element
let welcomeDiv = document.getElementById('custom-welcome-vladimir');
if (!welcomeDiv) {
welcomeDiv = document.createElement('div');
welcomeDiv.id = 'custom-welcome-vladimir';
welcomeDiv.style.cssText =
position: fixed;
top: 25px;
left: 50%;
transform: translateX(-50%);
background: rgba(20, 20, 25, 0.92);
color: #e0e0e0;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-size: 1.45rem;
font-weight: 500;
padding: 14px 32px;
border-radius: 20px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
backdrop-filter: blur(16px);
z-index: 9999;
opacity: 0;
transition: all 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
letter-spacing: -0.015em;
pointer-events: none;
display: flex;
align-items: center;
gap: 12px;
white-space: nowrap;
border: 1px solid rgba(255,255,255,0.08);
;
document.body.appendChild(welcomeDiv);
}
welcomeDiv.innerHTML = message;
// Show with smooth animation
setTimeout(() => {
welcomeDiv.style.opacity = '1';
welcomeDiv.style.top = '35px';
}, 400);
// Auto hide after 5 seconds
setTimeout(() => {
welcomeDiv.style.opacity = '0';
welcomeDiv.style.top = '25px';
}, 5200);
}
// Run on page load
window.addEventListener('load', showWelcomeMessage);
// Show again when returning to the tab
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
showWelcomeMessage();
}
});
</script>
|
|