/
DnTyr
/
Password-Development
Обзор
Документация
Войти
/
DnTyr
/
Password-Development
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
frontend/src/App.css
1 260 строк
26 KB
DT
first_commit
03 июн 2026, 10:22
03 июн 2026, 10:22
357cb35
Код
Авторство
О чём код?
/* ===== ТЕМЫ ===== */ .dark { --bg: #17181e; --card: #dbd9f422; --text: #ffffff; --border: #e7875e86; --input-bg: #dedffb37; --button: #3c4058eb; --button-hover: #3c8540; --box-shadow: 0px -30px 500px -5px #c849002b; --theme-toggle-hover: #353b5d; --border-result: 1px solid #7d9d77f8; --border-button: 1px solid #a6a6a680; --placeholder: #c0c0c0; --color-h5: #ffd4a7; --shield-shadow: drop-shadow(0 0 3px #ffffff); --setting-shadow: 0px 0px 3px 0px #ffffffef; --color-lock: #ffaa65ce; --color-sparkles: #ff8f62; --color-btn-lng: #0041c3; --accent-color: #c5c5c5; --text-main: #cbcbcb; --card-bg: #232323; --accent-color: #e5d0ad; --color-phrase: #ffc489; } .light { --bg: #a6a6b49b; --card: #fdfdfd6f; --text: #2a2a2a; --border: #6913044e; --input-bg: #ffffff; --button: #9fa3b894; --button-hover: #56c05bb9; --box-shadow: 0px -30px 500px -5px #ff9d0039; --theme-toggle-hover: #a5a8c0; --border-result: 1px solid #3c8540; --border-button: 1px solid #777777; --placeholder: #626262; --color-h5: #a56a4e; --shield-shadow: drop-shadow(0 0 3px #000000); --setting-shadow: 0px 0px 3px 0px #00000066; --color-lock: #95490bce; --color-sparkles: #fea887; --color-btn-lng: #0036a1; --accent-color: #343434; --text-main: #474747; --card-bg: #caccd1; --accent-color: #1b1b1b; --color-phrase: #fefbc0; } /* ================= */ /* ===== БАЗА ===== */ body { background: var(--bg); color: var(--text); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } input, textarea, button { font-family: inherit; } /* ================= */ /* ===== ИКОНКА В ШАПКЕ ===== */ .title-wrapper { display: flex; flex-direction: column; align-items: center; justify-content: center; margin-top: 0px; margin-bottom: 10px; } .title-icon { width: 100px; height: 100px; object-fit: contain; filter: var(--shield-shadow); margin-bottom: 0px; transition: transform 0.3s ease; } .title-icon:hover { transform: scale(1.2); } .title-text { margin: 0; text-align: center; line-height: 1.2; font-weight: 600; font-size: inherit; font-size: 1.3rem } /* ================= */ /* ===== КОНТЕЙНЕР ===== */ .app-container { width: 100%; max-width: min(364px, 100vw - 24px); margin: 0 auto; padding: 12px max(12px, env(safe-area-inset-left, 0px)) 24px max(12px, env(safe-area-inset-right, 0px)); box-sizing: border-box; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* ===================== */ /* ===== КАРТОЧКИ ===== */ .card { background: var(--card); padding: 20px; border-radius: 12px; margin-bottom: 15px; box-shadow: var(--box-shadow); display: flex; flex-direction: column; gap: 20px; } /* ==================== */ /* ===== ЗАГОЛОВКИ ===== */ h1 { font-size: 24px; text-align: center; margin-top: 0px; margin-bottom: 10px; } h2 { font-size: 18px; text-align: center; margin-top: 0px; margin-bottom: 5px; } h5 { font-size: 14px; text-align: center; margin-top: 10px; margin-bottom: 3px; color: var(--color-h5); line-height: 1.4; } .length-range { display: block; font-size: 12px; color: grey; font-weight: normal; margin-top: 2px; } p { margin: 8px; } /* ==================== */ /* ===== Плавная анимация для контента ===== */ .app-container { transition: opacity 0.3s ease, filter 0.3s ease; } /* ===== Вместо блюра — легкое притемнение и прозрачность =====*/ .blur-content { opacity: 0.3; pointer-events: none; user-select: none; filter: none !important; } /* ===== Затемнение фона body =====*/ .dark .blur-content { filter: brightness(0.5); } /* ===== БЛОК УПРАВЛЕНИЯ ===== */ .generator-card { position: relative; } .header-controls { position: absolute; top: 15px; right: 21px; z-index: 1000; display: flex; flex-direction: column; align-items: flex-end; } /* ===== Кнопка шестеренки ===== */ .menu-toggle { display: flex; align-items: center; justify-content: center; width: 37px; height: 37px; cursor: pointer; font-size: 18px; background: none !important; border: none; transition: transform 0.3s ease; will-change: transform; outline: none; -webkit-tap-highlight-color: transparent; } /* ===== Состояние при открытом меню ===== */ .header-controls.open .menu-toggle { transform: rotate(90deg); } /*===== Выпадающая панель ===== */ .controls-content { position: absolute; top: 34px; right: -4px; display: flex; flex-direction: column; align-items: center; padding: 9px 8px; background: var(--bg); box-shadow: var(--setting-shadow); border: 1px solid var(--border-button); border-radius: 12px; opacity: 0; visibility: hidden; transform: translateY(-5px); transition: all 0.2s ease-in-out; } .header-controls.open .controls-content { opacity: 1; visibility: visible; transform: translateY(0); } /*===== Блок языков с разделителем ===== */ .lang-switcher { display: flex; flex-direction: column; gap: 8px; align-items: center; padding-bottom: 8px; margin-bottom: 8px; border-bottom: 1px solid rgba(120, 120, 120, 0.3); width: 100%; } /*===== Единый стиль для всех кнопок (RU, EN, Тема) ===== */ .lang-btn, .theme-toggle { cursor: pointer; background: none; border: var(--border-button); border-radius: 6px; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: bold; color: var(--text); opacity: 1; transition: all 0.2s ease; padding: 0; outline: none; -webkit-tap-highlight-color: transparent; } .lang-btn.active { opacity: 1; color: var(--color-btn-lng); background: #c4cae5d3; } /*===== Фикс для светлой темы: убираем черноту неактивных кнопок ===== */ .light .lang-btn:not(.active) { color: #3b3b3b; border-color: #00000026; background: none; } .light .lang-btn:not(.active):hover { background: var(--button-hover); } /*===== Кнопка темы без лишних фонов ===== */ .theme-toggle { opacity: 1; background: none; font-size: 20px; } .theme-toggle:hover { background: var(--button-hover); } .light .controls-content { background: #f6f6f6; } /* ====================== */ /* ===== ПАРОЛЬНАЯ ФРАЗА ===== */ .passphrase-status-text { display: flex; align-items: center; gap: 8px; font-size: 0.85rem; color: #848484; margin: 0; font-weight: 500; cursor: pointer; user-select: none; -webkit-tap-highlight-color: transparent; outline: none; } /*===== Цвет для состояния ВЫКЛ (темно-красный) */ .status-off { color: #db4848; font-weight: 600; } /*===== Цвет для состояния ВКЛ (зеленый) ===== */ .status-on { color: #28a745; font-weight: 600; } /*===== Плавный переход цвета ===== */ .passphrase-status-text span { transition: color 0.3s ease; } .passphrase-row { position: relative; display: flex; align-items: center; justify-content: space-between; margin: 5px auto 0; max-width: 300px; } /* ====================== */ /*===== ИКОНКА ИНФОРМАЦИИ =====*/ .info-icon { color: #6195ff; font-weight: bold; cursor: pointer; font-size: 1.5rem; margin-left: -25px; background: none; display: inline-flex; align-items: center; user-select: none; transition: transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275); outline: none; -webkit-tap-highlight-color: transparent; } /*===== Эффект при наведении ===== */ .info-icon:hover { background: none; transform: scale(1.5); } /*===== Эффект при НАЖАТИИ: иконка увеличивается ===== */ .info-icon:active { transform: scale(1.9); } /* ==================== */ /*===== БАЗОВАЯ ОБЕРТКА ДЛЯ КНОПОК С ПОДСКАЗКАМИ =====*/ .tooltip-wrapper { position: relative; display: inline-flex; } /*===== Облако ===== */ .custom-tooltip { position: absolute; bottom: 140%; right: 0px; background: #333; color: #fff; padding: 8px 8px; border-radius: 8px; font-size: 0.75rem; white-space: normal; width: max-content; max-width: 175px; line-height: 1.3; z-index: 1000; box-shadow: 0px 0px 3px 0px #ffffffef; pointer-events: none; text-align: center; transform: none; } /* ====================== */ /*===== БАЗОВЫЙ СТИЛЬ ДЛЯ ИКОНКИ =====*/ /* Анимация вспышки */ @keyframes flash-animation { 0% { transform: scale(1); filter: brightness(1) drop-shadow(0 0 0px transparent); } 50% { transform: scale(2); filter: brightness(1.5) drop-shadow(0 0 20px #fefbc0); } 100% { transform: scale(1); filter: brightness(1.5) drop-shadow(0 0 3px #ff3300b9); } } .animate-flash { animation: flash-animation 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards; display: inline-block; } /* Базовый стиль текста (серый по умолчанию) */ .passphrase-label-group span:first-child { color: var(--text-secondary, #848484); transition: color 0.3s ease, text-shadow 0.3s ease; } /* Эффект при наведении на ВСЮ строку */ .passphrase-row.clickable:hover .passphrase-label-group span:first-child { color: var(--color-phrase); text-shadow: 0 0 8px #ff3300b9; } @keyframes pulse-horizontal { 0% { transform: translateX(0); opacity: 0.8; filter: brightness(1.5) drop-shadow(0 0 3px #ff3300b9); } 50% { transform: translateX(-5px); opacity: 1; filter: brightness(1.5) drop-shadow(0 0 3px #ff3300b9); } 100% { transform: translateX(0); opacity: 0.8; filter: brightness(1.5) drop-shadow(0 0 3px #ff3300b9); } } .pointer-arrow-animate { animation: pulse-horizontal 1s ease-in-out infinite; display: flex; align-items: center; } /* ====================== */ /* ===== КНОПКИ ===== */ button { width: 100%; padding: 8px; border-radius: 8px; background: var(--button); color: var(--text); font-weight: 600; cursor: pointer; transition: all 0.2s ease; border: var(--border-button); outline: none; -webkit-tap-highlight-color: transparent; } button:hover { background: var(--button-hover); } button:active { transform: scale(0.97); } button:disabled { background: #555; cursor: not-allowed; } /* =================== */ /* ===== КНОПКИ ТИПА СИМВОЛОВ ===== */ .toggle-group { position: relative; margin-left: auto; margin-right: auto; margin-top: 8px; margin-bottom: 14px; display: flex; flex-direction: column; gap: 8px; font-size: 15px; max-width: 300px; outline: none; -webkit-tap-highlight-color: transparent; } .toggle { display: flex; justify-content: space-between; align-items: center; } .switch { position: relative; width: 40px; height: 22px; border-radius: 10px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; inset: 0; background: #888; border-radius: 20px; transition: 0.3s; } .slider:before { content: ""; position: absolute; height: 16px; width: 16px; left: 3px; top: 13.5%; background: white; border-radius: 50%; transition: 0.3s; } .switch input:checked + .slider { background: #3c8540; } .switch input:checked + .slider:before { transform: translateX(18px); } /* ================================ */ /* ===== ПОЛЯ ВВОДА ===== */ input { width: 100%; padding: 8px; border-radius: 8px; border: 1px solid var(--border); background: var(--input-bg); transition: all 0.2s ease; color: var(--text); margin-top: 5px; box-sizing: border-box; text-align: center; font-size: 16px; height: 37px; outline: none; -webkit-tap-highlight-color: transparent; } input:focus { box-shadow: var(--box-shadow); outline: none; } /* ======================= */ /* ===== СГЕНЕРИРОВАННЫЙ ПАРОЛЬ ===== */ .password-display-wrapper { position: relative; display: flex; align-items: center; width: 100%; } .generated-password { margin-top: 12px; margin-bottom: 12px; padding: 10px 40px 10px 40px; background: var(--input-bg); border-radius: 8px; word-break: break-all; text-align: center; font-weight: 600; font-size: 16px !important; border: var(--border-result); width: 100%; min-height: 20px; display: flex; align-items: center; justify-content: center; } /* Переиспользуем стиль маскировки (точки) */ .generated-password.is-masked { -webkit-text-security: disc !important; text-security: disc !important; user-select: none; } /* Стили кнопки */ .password-display-wrapper .password-visibility-toggle { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); background: transparent; border: none; cursor: pointer; opacity: 0.6; transition: opacity 0.2s; display: flex; align-items: center; } .password-display-wrapper .password-visibility-toggle:hover { opacity: 1; } /* ================== */ /* ===== РЕЗУЛЬТАТ ===== */ .result { margin-top: 0px; text-align: left; font-size: 12px; } .analysis-results-wrapper { width: 100%; min-height: 1px; overflow: hidden; } /* ===================== */ /* ===== КОНТЕЙНЕР-ОБЕРТКА ДЛЯ ЗАГОЛОВКА И КНОПКИ В ANALYZER.JS ===== */ .analyzer-header-wrapper { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; margin-bottom: 10px; } .analyzer-header-wrapper h2 { margin: 0; } /* ======================== */ /*===== ОЧИСТКА СТАРЫХ СТИЛЕЙ ИНПУТА =====*/ .input-wrapper { position: relative; width: 100%; } .input-wrapper input { padding-left: 0px; } /* ======================== */ /* ===== ПРОГРЕСС-БАР ===== */ .progress-bar { width: 100%; height: 5px; background: var(--input-bg); border-radius: 6px; margin-top: 10px; margin-bottom: 10px; overflow: hidden; }textarea .progress-fill { height: 100%; border-radius: 6px; transition: width 0.4s ease; } /* ======================== */ /*===== ПОЛЕ ПАРОЛЯ АНАЛИЗАТОРА =====*/ .input-wrapper--password-toggle { min-height: 35px; position: relative; display: flex; align-items: flex-start; width: 100%; background: var(--input-bg); border: 1px solid var(--border); border-radius: 8px; transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease; box-sizing: border-box; margin-top: 5px; margin-bottom: 12px; outline: none; -webkit-tap-highlight-color: transparent; overflow: visible; align-items: stretch } /* Фокус на обертке, когда кликаем в textarea */ .input-wrapper--password-toggle:focus-within { box-shadow: var(--box-shadow); } /* TEXTAREA */ #password-analyzer-input { flex: 1; width: 100%; min-height: 35px; max-height: 280px; padding-top: 10px; padding-bottom: 10px; padding-left: 40px; padding-right: 40px; vertical-align: top; background: transparent; border: none; border-radius: 6px; outline: none; color: var(--text); font-family: inherit; box-sizing: border-box; display: block; text-align: center; resize: none; transition: none !important; overflow: hidden !important; font-weight: 600 !important; font-size: 16px !important; line-height: 20px !important; word-break: break-all; } #password-analyzer-input:focus { outline: none; } /* КНОПКА */ .password-visibility-toggle { position: absolute !important; right: 4px !important; top: 50% !important; transform: translateY(-50%) !important; width: 32px !important; height: 32px !important; padding: 0 !important; margin: 0 !important; display: flex !important; align-items: center !important; justify-content: center !important; background: transparent !important; border: none !important; border-radius: 6px !important; color: var(--text) !important; cursor: pointer !important; opacity: 0.5; transition: all 0.2s ease !important; z-index: 10 !important; outline: none; -webkit-tap-highlight-color: transparent; } /* Ховер: делаем кнопку активнее */ .password-visibility-toggle:hover { opacity: 1 !important; } /* Клик: легкое уменьшение БЕЗ потери центровки */ .password-visibility-toggle:active { transform: translateY(-50%) scale(0.9) !important; } /* Убираем стандартную рамку фокуса, заменяем на свою */ .password-visibility-toggle:focus { outline: none !important; } /* ======================== */ /* == 128 / 128 === */ .password-analyzer-container { position: relative; width: 100%; display: flex; flex-direction: column; } /* Стили самого счетчика */ .char-counter { text-align: right; align-self: flex-end; font-size: 11px; margin-top: -8px; margin-bottom: 8px; padding-right: 4px; opacity: 0.6; color: var(--text); font-family: monospace; pointer-events: none; } /* Состояние лимита */ .char-counter--limit { color: #ff4d4f; opacity: 1; font-weight: bold; } /* ======================== */ /*===== КОНТЕЙНЕР, ЗАДАЕТ ГРАНИЦЫ ДЛЯ КНОПКИ =====*/ .analyzer-header-wrapper { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; margin-bottom: 15px; } .analyzer-header-wrapper h2 { margin: 0; } /* Сама кнопка */ .paste-btn { position: absolute; right: 2px; top: -20%; width: 35px; height: 35px; border: 0px solid; background: none; cursor: pointer; font-size: 18px; display: flex; align-items: center; justify-content: center; transition: transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275); outline: none; -webkit-tap-highlight-color: transparent; } /*Эффекты наведения и клика*/ .paste-btn:hover { background: none; transform: scale(1.3); } .paste-btn:active { transform: scale(1.7); } /* ===== ЕДИНЫЙ СТИЛЬ ПОДСКАЗОК (PLACEHOLDER) ===== */ input::placeholder, textarea::placeholder, #password-analyzer-input::placeholder { font-family: inherit !important; font-size: 16px !important; font-weight: 300 !important; color: var(--placeholder) !important; opacity: 0.7 !important; font-style: italic !important; text-align: center !important; } /* Исчезновение при фокусе */ input:focus::placeholder, textarea:focus::placeholder, #password-analyzer-input:focus::placeholder { color: transparent !important; opacity: 0 !important; } /* ===== МАСКИРОВКА ТЕКСТА (ДЛЯ ТОЧЕК) ===== */ .is-masked { -webkit-text-security: disc !important; text-security: disc !important; user-select: none; -webkit-user-select: none; -moz-user-select: none; } /* ===== КНОПКА ВИДИМОСТИ (ГЛАЗОК) ===== */ .password-visibility-toggle { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; background: transparent; border: none; border-radius: 6px; color: var(--text); opacity: 0.6; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; z-index: 5; outline: none; -webkit-tap-highlight-color: transparent; } .password-visibility-toggle:hover { opacity: 1; background: #0000000d; } .password-visibility-toggle:active { transform: translateY(-50%) scale(0.95); } /* ===== ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ TEXTAREA ===== */ #password-analyzer-input { resize: none; overflow: hidden !important; padding-right: 40px; padding-left: 40px; } /*===== АНИМАЦИЯ ИКОНКИ ПРИ ПОИСКЕ В БАЗАХ УТЕЧЕК =====*/ .spin-animation { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* ======================== */ /*===== АНИМАЦИЯ ВСПЫШКИ ПРИ ПОИСКЕ В БАЗАХ УТЕЧЕК =====*/ .analyzer-footer { margin-top: 15px; padding-top: 0px; border-top: 1px solid var(--border); width: 100%; display: flex; flex-direction: column; align-items: center; } .leak-warning { position: relative; display: flex; align-items: center; justify-content: center; text-align: center; color: #d93e3e; font-size: 0.85rem; font-weight: 600; margin-top: 8px; padding: 10px 40px; width: 100%; box-sizing: border-box; } /* Класс для самой иконки */ .leak-warning-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: #db8401; width: 20px; height: 20px; } @keyframes flash-red { 0% { box-shadow: 0 0 0px 0px #ff000000; } 50% { box-shadow: 0 0 15px 5px #ff4d4d80; border-color: #ff4d4d; } 100% { box-shadow: 0 0 0px 0px #ff000000; } } .input-leaked { animation: flash-red 0.6s ease-in-out; border-color: #c12828 !important; } .btn-deep-check { background: #2c7cfd96; border: var(--border-button); padding: 8px 12px; border-radius: 6px; font-size: 0.75rem; cursor: pointer; transition: all 0.2s; margin-top: 8px; } .btn-deep-check:hover:not(:disabled) { color: var(--text); background: #0a68ffca; } .btn-deep-check:disabled { opacity: 0.5; cursor: not-allowed; } /* Зеленая вспышка для безопасного пароля */ @keyframes flash-green { 0% { box-shadow: 0 0 0px 0px #00ff0000; } 50% { box-shadow: 0 0 15px 5px #28a74580; border-color: #28a745; } 100% { box-shadow: 0 0 0px 0px #00ff0000; } } .input-safe { animation: flash-green 0.6s ease-in-out; border-color: #218838 !important; } /* Цвет текста для безопасного статуса */ .leak-safe { color: #28a745; font-size: 0.85rem; font-weight: 600; margin-top: 8px; text-align: center; } .leak-error-hibp { position: relative; display: flex; align-items: center; justify-content: center; text-align: center; padding: 10px 40px; color: #db8401; font-weight: 600; margin-top: 8px; font-size: 0.85rem; line-height: 1.35; width: 100%; box-sizing: border-box; } .leak-error-icon { position: absolute; left: 24px; top: 50%; transform: translateY(-50%); color: #db8401; width: 20px; height: 20px; } /* Состояния фиксации цвета (будут гореть постоянно) */ .state-leaked { border-color: #d93e3e !important; box-shadow: 0 0 8px 2px #d93e3e33 !important; } .state-safe { border-color: #28a745 !important; box-shadow: 0 0 8px 2px #28a74533 !important; } /* ======================== */ /* ===== БЕЗОПАСНОСТЬ БУФЕРА ПОСЛЕ КОПИРОВАНИЯ (ГЕНЕРАТОР) ===== */ @media (min-width: 480px) { #password-analyzer-input { font-size: 14px; } } .clipboard-secure-panel { margin-top: 12px; width: 100%; } .clipboard-secure-bar-wrap { height: 4px; border-radius: 4px; background: var(--input-bg); overflow: hidden; border: 1px solid var(--border); } .clipboard-secure-bar-fill { height: 100%; border-radius: 4px; background: linear-gradient(90deg, #3c8540, #56c05b); transition: width 1s linear; } .clipboard-secure-text { margin: 6px 0 0; font-size: 0.75rem; color: var(--placeholder); text-align: center; line-height: 1.3; } .clipboard-secure-text strong { color: var(--text); font-weight: 700; } /* ======================== */ /* ===== FOOTER ===== */ .app-footer { margin-top: 20px; padding: 10px 0; border-top: 1px solid #6262629b; width: 100%; } .footer-links { display: flex; justify-content: center; gap: 3px; flex-wrap: wrap; } .footer-links button { background: none; border: none; color: var(--text-secondary, #656565); font-size: 0.85rem; cursor: pointer; transition: color 0.2s; padding: 5px 10px; } .footer-links button:hover { color: var(--accent-color); } /* ===== MODAL ===== */ .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: #000000b3; display: flex; justify-content: center; align-items: center; z-index: 2000; backdrop-filter: blur(3px); } .modal-content { background: var(--card-bg); padding: 15px; padding-bottom: 65px; border-radius: 20px; max-width: 400px; width: 90%; position: relative; border: 1px solid #ffffff1a; box-shadow: 0 20px 40px #00000066; max-height: 65vh; flex-direction: column; } .modal-close { display: flex; align-items: center; justify-content: center; gap: 1px; cursor: pointer; position: absolute; width: 90%; bottom: 10px; right: 15px; left: 5%; background: var(--button); border: var(--border-button); color: var(--text); } .modal-close span { font-size: 16px; font-weight: 500; } .modal-body { margin-top: 15px; line-height: 1.6; color: var(--text-main); overflow-y: auto; padding-right: 10px; } /* Скроллбар */ .modal-body::-webkit-scrollbar { width: 6px; } .modal-body::-webkit-scrollbar-track { background: #ffffff0d; border-radius: 10px; } .modal-body::-webkit-scrollbar-thumb { background: #ffffff33; border-radius: 10px; } .modal-body::-webkit-scrollbar-thumb:hover { background: #ffffff4d; } .modal-blur { filter: blur(8px); pointer-events: none; } /* ======================== */