/* ============ WORD BREAK & TEXT WRAPPING PROTECTION ============
   Решение для длинных непрерывных слов без пробелов
   Дата: 12.01.2026
*/

/* --- ОСНОВНЫЕ ПРАВИЛА ДЛЯ ВСЕХ ТЕКСТОВЫХ ЭЛЕМЕНТОВ --- */

/* Заголовки и заголовки модов */
.mod-title,
.mod-detail-title,
.card-title,
h1, h2, h3, h4, h5, h6 {
    word-break: break-word;
    overflow-wrap: break-word;
    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

/* Описания и контент */
.mod-description,
.mod-creator,
.mod-version,
.comment-content,
.dm-message,
.request-title,
.user-message,
.text-content,
.description,
p,
.card-text {
    word-break: break-word;
    overflow-wrap: break-word;
    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

/* Форм-элементы */
textarea,
input[type="text"],
input[type="email"],
input[type="password"],
input[type="search"] {
    word-break: break-word;
    overflow-wrap: break-word;
}

/* --- СПЕЦИАЛЬНЫЕ СЛУЧАИ --- */

/* Код и pre-форматированный текст - должен быть на одной строке с горизонтальным скроллом */
code,
pre,
.code-block,
.code-content,
.bbcode-preview-code {
    word-break: break-all;
    overflow-x: auto;
    white-space: pre-wrap;
}

/* URL и ссылки - можно разбивать но это редко помогает */
a,
.url,
.link {
    word-break: break-all;
    overflow-wrap: anywhere;
}

/* Блоки кода в BBCode */
.bbcode-quote {
    word-break: break-word;
    overflow-wrap: break-word;
}

/* Таблицы */
table {
    table-layout: fixed;
    width: 100%;
}

table td,
table th {
    word-break: break-word;
    overflow-wrap: break-word;
    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

/* --- МОБИЛЬНАЯ ВЕРСИЯ (Очень узкие экраны) --- */

@media (max-width: 768px) {
    /* На мобильных еще более жесткие требования */
    .mod-title,
    h1, h2, h3 {
        word-break: break-word;
        overflow-wrap: break-word;
        font-size: 1.2rem;  /* Может быть меньше если много слов */
    }
    
    .comment-content,
    .dm-message,
    .text-content {
        word-break: break-word;
        overflow-wrap: break-word;
        font-size: 0.95rem;
    }
    
    /* На мобильных дать больше места для переноса */
    .container,
    .container-fluid {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}

/* --- ОЧЕНЬ УЗКИЕ ЭКРАНЫ (< 480px) --- */

@media (max-width: 480px) {
    .mod-title {
        font-size: 1.1rem;
        word-break: break-word;
    }
    
    .mod-description,
    .text-content {
        font-size: 0.9rem;
        word-break: break-word;
    }
}

/* --- ШИРОКИЕ ЭКРАНЫ (> 1200px) --- */
/* На широких экранах обычные правила работают хорошо */
/* НЕ переопределяем .container здесь - это сломает центрирование! */

/* --- ЗАЩИТА КОНТЕЙНЕРОВ ЧТОБЫ НЕ ВЫЛЕЗАЛИ --- */

.mod-detail-content,
.card,
.modal-body,
.comment-box,
.dm-conversation {
    overflow: hidden;  /* Скрыть что вылезает */
    word-wrap: break-word;
    overflow-wrap: break-word;
}

/* Navbar - очень важно чтобы не сломалась */
/* НЕ добавляем overflow: hidden на .navbar - это блокирует dropdowns! */
.nav-links {
    overflow: hidden;
}

.navbar-brand,
.nav-item {
    word-break: break-word;
    min-width: 0;  /* Важно для flexbox */
}

/* Модальные окна */
.modal-title {
    word-break: break-word;
    overflow-wrap: break-word;
}

/* Кнопки */
button,
.btn,
input[type="button"],
input[type="submit"] {
    word-break: break-word;
    overflow-wrap: break-word;
}

/* Бейджи и иконки с текстом */
.badge,
.label,
.tag {
    word-break: break-word;
}

/* Юзерские имена (очень важно) */
.username,
.user-name,
.author-name {
    word-break: break-word;
    max-width: 100%;
    display: inline-block;
}

/* --- УТИЛИТЫ --- */

/* Класс для явного принудительного переноса (если нужно) */
.force-break {
    word-break: break-word;
    overflow-wrap: break-word;
}

/* Класс для запрета переноса (для UI элементов) */
.no-break {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Класс для кода и URL */
.code,
.monospace {
    word-break: break-all;
    font-family: 'Courier New', Courier, monospace;
}
