body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: #f4f7f9; color: #333; margin: 0; padding: 20px; } .container { max-width: 80%; margin: 0 auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } h1 { color: #0056b3; } #status { display: flex; align-items: center; gap: 15px; } #refresh-status-btn { padding: 5px 10px; font-size: 14px; } #server-status { font-weight: bold; } .logs-container { margin-top: 20px; } .log-controls { margin-bottom: 10px; display: flex; gap: 10px; } .ql-align-center { text-align: center; } .ql-align-right { text-align: right; } .ql-align-justify { text-align: justify; } #logs-content { background-color: #2d2d2d; color: #f1f1f1; padding: 15px; border-radius: 5px; white-space: pre-wrap; /* Перенос строк */ word-wrap: break-word; /* Перенос длинных строк */ max-height: 400px; overflow-y: auto; } .config-container { margin-top: 20px; } .form-group { margin-bottom: 15px; } .form-group label { display: block; margin-bottom: 5px; } .form-group input { width: 100%; padding: 8px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; } .input-with-button { display: flex; gap: 5px; } .input-with-button input { flex-grow: 1; /* Поле ввода займет все доступное место */ } button { background-color: #0056b3; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #004494; } #db-status-container { display: flex; align-items: flex-start; /* Выравнивание по верху */ gap: 20px; margin-top: 10px; padding: 10px; border: 1px solid #eee; border-radius: 5px; } #db-status-container p { margin: 0 0 5px 0; } #db-status-container small { color: #666; font-style: italic; } #refresh-status-btn, .btn-small { padding: 5px 10px; font-size: 14px; } .network-diag-container { margin-top: 20px; } .ping-controls { display: inline-flex; gap: 10px; margin-bottom: 10px; } .ping-controls input { flex-grow: 1; } #ping-output { background-color: #2d2d2d; color: #f1f1f1; padding: 15px; border-radius: 5px; white-space: pre-wrap; word-wrap: break-word; min-height: 50px; } /* --- Карточки блоков --- */ .content-block { background: #f9f9fb; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.07); padding: 18px 18px 12px 18px; margin-bottom: 18px; position: relative; transition: box-shadow 0.2s; } .content-block:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.13); } .block-text, .block-image, .block-video { margin-bottom: 10px; } .block-image img, .block-video video { max-width: 100%; border-radius: 6px; box-shadow: 0 1px 4px rgba(0,0,0,0.08); } /* --- Кнопки --- */ button, .btn-small, .tab-btn { background: #0056b3; color: #fff; border: none; border-radius: 5px; padding: 8px 16px; margin-right: 8px; font-size: 15px; cursor: pointer; transition: background 0.15s, box-shadow 0.15s; box-shadow: 0 1px 2px rgba(0,0,0,0.04); } button:hover, .btn-small:hover, .tab-btn:hover { background: #003e80; } button:active, .btn-small:active, .tab-btn:active { background: #002b5c; } .tab-btn.active { background: #0074e4; font-weight: bold; } /* --- Модальное окно --- */ .modal { display: none; /* Скрыто по умолчанию */ position: fixed; /* Остается на месте при скролле */ z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; /* Включает скролл, если нужно */ background-color: rgba(0,0,0,0.5); /* Полупрозрачный фон */ justify-content: center; align-items: center; } .modal-content { background-color: #fefefe; margin: auto; padding: 20px; border: 1px solid #888; width: 80%; border-radius: 8px; } .monitoring-filters { margin-bottom: 15px; } .monitoring-filters label { margin-right: 20px; } .log-level-label { padding: 2px 6px; border-radius: 4px; color: white; font-weight: bold; font-size: 0.9em; } tr.log-level-error { background-color: #ffdddd; } tr.log-level-error .log-level-label { background-color: #d63031; } tr.log-level-warn { background-color: #fff3cd; } tr.log-level-warn .log-level-label { background-color: #fdcb6e; } .modal-buttons { margin-top: 20px; } .modal-buttons button { margin: 0 10px; padding: 10px 20px; } .close { position: absolute; right: 18px; top: 12px; font-size: 2rem; color: #888; cursor: pointer; font-weight: bold; transition: color 0.15s; } .close:hover { color: #0056b3; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideDown { from { transform: translateY(-30px); opacity: 0; } to { transform: none; opacity: 1; } } /* --- Уведомления --- */ #notify { position: fixed; top: 24px; right: 24px; z-index: 2000; min-width: 220px; background: #fff; color: #222; border-radius: 7px; box-shadow: 0 2px 12px rgba(0,0,0,0.13); padding: 16px 22px; font-size: 16px; opacity: 0; pointer-events: none; transition: opacity 0.2s; } #notify.show { opacity: 1; pointer-events: auto; } #notify.error { background: #ffeaea; color: #b30000; border: 1px solid #ffb3b3; } #notify.success { background: #eaffea; color: #1a7f1a; border: 1px solid #b3ffb3; } /* --- Формы --- */ input[type="text"], input[type="password"], textarea, select { border: 1.5px solid #b3c6e0; border-radius: 5px; padding: 8px 10px; font-size: 15px; margin-bottom: 8px; width: 100%; box-sizing: border-box; transition: border 0.15s; } input[type="text"]:focus, input[type="password"]:focus, textarea:focus, select:focus { border: 1.5px solid #0056b3; outline: none; background: #f4f8ff; } /* --- Logout --- */ #logout-btn { background: #e74c3c; float: right; margin-top: 2px; margin-bottom: 10px; font-size: 15px; padding: 7px 16px; } #logout-btn:hover { background: #c0392b; } /* Кнопка "Добавить блок" */ #add-block-btn { background: #0074e4; color: #fff; border: none; border-radius: 5px; padding: 8px 18px; font-size: 16px; margin-bottom: 10px; cursor: pointer; transition: background 0.15s; } #add-block-btn:hover { background: #005bb5; } /* Кнопка "Редактировать" */ .content-block button:nth-of-type(1) { background: #ff9800; color: #fff; border: none; border-radius: 5px; padding: 6px 14px; margin-right: 8px; font-size: 15px; cursor: pointer; transition: background 0.15s; } .content-block button:nth-of-type(1):hover { background: #e65100; } /* Кнопка "Удалить" */ .content-block button:nth-of-type(2) { background: #e74c3c; color: #fff; border: none; border-radius: 5px; padding: 6px 14px; font-size: 15px; cursor: pointer; transition: background 0.15s; } .content-block button:nth-of-type(2):hover { background: #b71c1c; } /* Кнопка "Сохранить" в модалке */ #edit-block-form button[type="submit"] { background: #43a047; color: #fff; border: none; border-radius: 5px; padding: 8px 18px; font-size: 16px; margin-top: 10px; cursor: pointer; transition: background 0.15s; } #edit-block-form button[type="submit"]:hover { background: #2e7031; } /* --- Адаптивность --- */ @media (max-width: 600px) { .container { padding: 8px; } .modal-content { min-width: 90vw; padding: 18px 8px; } #notify { right: 8px; top: 8px; min-width: 120px; font-size: 14px; } } #edit-block-preview { max-width: 100%; max-height: 45vh; /* Ограничение по высоте предпросмотра */ overflow-y: auto; overflow-x: hidden; word-break: break-word; } #confirm-modal .modal-content { max-width: 400px; padding: 10px 28px 24px 28px; text-align: center; border-radius: 12px; box-shadow: 0 8px 32px rgba(0,0,0,0.22); } #confirm-modal h3 { font-size: 1.15rem; color: #222; margin-bottom: 18px; } #confirm-close-yes { background: #e74c3c; color: #fff; border: none; border-radius: 5px; padding: 8px 18px; font-size: 16px; margin-right: 12px; cursor: pointer; transition: background 0.15s; } #confirm-close-yes:hover { background: #b71c1c; } #confirm-close-no { background: #f4f7f9; color: #222; border: 1.5px solid #b3c6e0; border-radius: 5px; padding: 8px 18px; font-size: 16px; cursor: pointer; transition: background 0.15s; } #confirm-close-no:hover { background: #e0e7ef; } #toast-container { position: fixed; top: 30px; right: 30px; z-index: 9999; display: flex; flex-direction: column; gap: 10px; } .toast { visibility: hidden; min-width: 250px; max-width: 350px; background: #333; color: #fff; padding: 14px 22px; border-radius: 6px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); font-size: 16px; opacity: 0.97; animation: fadein 0.3s, fadeout 0.3s 2.7s; transition: opacity 0.3s; } .toast-success { background: #2ecc40; color: #fff; } .toast-error { background: #ff4136; color: #fff; } @keyframes fadein { from { opacity: 0; transform: translateY(-20px);} to { opacity: 0.97; transform: translateY(0);} } @keyframes fadeout { from { opacity: 0.97; } to { opacity: 0; } } /* --- Настройки: секции и формы --- */ #settings-tab > div { margin-bottom: 32px; padding: 18px 20px 16px 20px; background: #f8fafc; border-radius: 8px; box-shadow: 0 1px 4px rgba(0,0,0,0.04); border: 1px solid #e3e8ee; } #settings-tab h3 { margin-top: 0; } fieldset { border: 1px solid #bfc9d8; border-radius: 6px; margin-bottom: 12px; padding: 12px 16px 10px 16px; background: #fff; } legend { color: #0056b3; font-weight: 500; } input[type="text"], input[type="password"], input[type="number"] { padding: 7px 10px; border: 1px solid #bfc9d8; border-radius: 4px; margin: 4px 0 10px 0; width: 220px; font-size: 15px; background: #fafdff; transition: border 0.2s; } input:focus { border: 1.5px solid #0056b3; outline: none; background: #fff; } input:invalid { border: 1.5px solid #ff4136; background: #fff6f6; } .form-error { color: #ff4136; font-size: 14px; margin: 2px 0 8px 0; } .warning-text { color: #ff8c00; /* DarkOrange */ } .btn-small { background: #e3e8ee; color: #0056b3; border: none; border-radius: 4px; padding: 5px 12px; font-size: 14px; margin-left: 2px; cursor: pointer; transition: background 0.2s, color 0.2s; } .btn-small:hover { background: #0056b3; color: #fff; } button[type="submit"] { background: #2ecc40; color: #fff; border: none; border-radius: 4px; padding: 8px 18px; font-size: 15px; margin-top: 8px; cursor: pointer; transition: background 0.2s; } button[type="submit"]:hover { background: #27ae38; } #cors-list li { margin-bottom: 6px; } .moders-table { width: 100%; border-collapse: collapse; margin-top: 12px; background: #fff; } .moders-table th, .moders-table td { border: 1px solid #e3e8ee; padding: 7px 10px; text-align: left; } .moders-table th { background: #f4f7fa; color: #0056b3; font-weight: 500; } .moders-table tr:nth-child(even) { background: #fafdff; } .moders-table tr:hover { background: #eaf3ff; } .moder-pass-input { width: 100px; margin-right: 5px; } .password-wrapper { display: inline-flex; align-items: center; }