Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

MediaWiki:Common.css: различия между версиями

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
Метка: отменено
Строка 1: Строка 1:
/* Размещённый здесь CSS будет применяться ко всем темам оформления */
/* Размещённый здесь CSS будет применяться ко всем темам оформления */
/* Заглавная страница */
/* --- Глобальные стили --- */
html {
  box-sizing: border-box;
}
*, *:before, *:after {
  box-sizing: inherit;
}
 
/* --- Заглавная страница --- */
/* --- Заголовок с логотипом --- */
/* --- Заголовок с логотипом --- */
.main-page-header-container {
.main-page-header-container {
Строка 31: Строка 39:
   margin: 0;
   margin: 0;
   line-height: 1.0;
   line-height: 1.0;
   letter-spacing: 1px; /* Можете немного изменить (0.5px - 1.5px) для лучшего вида с новым свечением */
   letter-spacing: 1px;
   text-transform: uppercase;
   text-transform: uppercase;
  /* Новый, более "красивый" эффект свечения */
   text-shadow:
   text-shadow:
     0px 15px 5px rgba(0, 172, 196, 0.1), 10px 20px 5px rgba(0, 172, 196, 0.05), -10px 20px 5px rgba(0, 172, 196, 0.05), 0px 0px 6px rgba(0, 172, 196, 0.7)
     0px 15px 5px rgba(0, 172, 196, 0.1), 10px 20px 5px rgba(0, 172, 196, 0.05), -10px 20px 5px rgba(0, 172, 196, 0.05), 0px 0px 6px rgba(0, 172, 196, 0.7);
}
}


.main-page-subtitle {
.main-page-subtitle {
   font-family: 'Arial', sans-serif; /* Можно попробовать другой sans-serif, если Arial кажется слишком простым */
   font-family: 'Arial', sans-serif;
   font-size: 1.3em; /* Размер можно немного варьировать для баланса с заголовком */
   font-size: 1.3em;
   color: #4fa9bf;   /* Новый, более светлый серый цвет для лучшей читаемости */
   color: #4fa9bf;
   margin: 0;
   margin: 0;
   font-weight: normal;
   font-weight: normal;
  /* margin-top: 8px;  Немного увеличен отступ сверху для "воздуха" */
   letter-spacing: 0.5px;
   letter-spacing: 0.5px; /* Легкое увеличение межбуквенного расстояния может улучшить читаемость */
   text-align: center;
   text-align: center; /* Явно центрируем, если контейнер заголовка это позволяет */
}
}


Строка 102: Строка 108:
ul.compact-menu li a, ul.compact-menu li a.external {
ul.compact-menu li a, ul.compact-menu li a.external {
   text-decoration: none;
   text-decoration: none;
   color: #E0E0E0; /* Новый цвет ссылок */
   color: #E0E0E0;
   font-size: 1.1em;
   font-size: 1.1em;
   font-weight: 500;
   font-weight: 500;
Строка 113: Строка 119:
ul.compact-menu li a:hover,
ul.compact-menu li a:hover,
ul.compact-menu li.active a {
ul.compact-menu li.active a {
   color: #29d8ef; /* Новый цвет ссылок при наведении */
   color: #29d8ef;
   background-color: #2E343D;
   background-color: #2E343D;
   text-decoration: none;
   text-decoration: none;
Строка 131: Строка 137:
   flex-wrap: wrap;
   flex-wrap: wrap;
   gap: 25px;
   gap: 25px;
}
.main-page-left-column,
.main-page-right-column {
  box-sizing: border-box; /* Добавлено для корректного расчета ширины */
}
}


Строка 156: Строка 167:
   color: #b0b0b0;
   color: #b0b0b0;
   box-shadow: 0 3px 8px rgba(0,0,0,0.25);
   box-shadow: 0 3px 8px rgba(0,0,0,0.25);
  box-sizing: border-box; /* Добавлено */
  width: 100%;          /* Добавлено, чтобы виджет занимал всю ширину колонки с учетом padding */
  /* overflow-x: hidden; /* Раскомментируйте как крайнюю меру, если внутренний контент сложно исправить */
}
}


Строка 185: Строка 199:
   border-bottom: 1px dashed #2A2E35;
   border-bottom: 1px dashed #2A2E35;
   transition: background-color 0.2s ease, color 0.2s ease;
   transition: background-color 0.2s ease, color 0.2s ease;
  overflow-wrap: break-word; /* Добавлено для переноса длинных слов */
  word-break: break-word;  /* Добавлено для переноса длинных слов */
}
}
.new-pages-list ul li:last-child a {
.new-pages-list ul li:last-child a {
Строка 203: Строка 219:
.recent-changes-list ul.dpl-recent-updates-list li {
.recent-changes-list ul.dpl-recent-updates-list li {
   display: flex;
   display: flex;
  /* flex-wrap: nowrap; /* По умолчанию для flex-контейнера это nowrap, если элементы помещаются. Проверим без явного указания. */
   align-items: baseline;
   align-items: baseline; /* Выравнивание по базовой линии текста */
   padding: 10px 8px;
   padding: 10px 8px;
   font-size: 0.95em;
   font-size: 0.95em;
   border-bottom: 1px solid #2E343D;
   border-bottom: 1px solid #2E343D;
   line-height: 1.5;
   line-height: 1.5;
  /* overflow: visible !important; /* Для отладки: показать, если что-то вылезает */
  /* border: 1px solid red !important; /* Для отладки: показать границы LI */
}
}


Строка 219: Строка 232:
/* Блок с датой и названием страницы */
/* Блок с датой и названием страницы */
.dpl-item-maininfo {
.dpl-item-maininfo {
   display: flex;       /* Дата и название страницы в строку */
   display: flex;
   align-items: baseline;
   align-items: baseline;
   margin-right: 15px;  /* Фиксированный отступ справа */
   margin-right: 15px;
   /* Убираем flex-grow, min-width, overflow временно, чтобы увидеть естественную ширину */
   flex-grow: 1;    /* Добавлено: позволяет блоку расти */
   /* border: 1px solid lime !important; /* Для отладки: показать границы этого блока */
  flex-shrink: 1;   /* Добавлено: позволяет блоку сжиматься */
   min-width: 0;     /* Добавлено: Ключ к правильному сжатию flex-элементов с текстом */
}
}


Строка 231: Строка 245:
   font-size: 0.9em;
   font-size: 0.9em;
   margin-right: 10px;
   margin-right: 10px;
   white-space: nowrap; /* Дата не переносится */
   white-space: nowrap;
   flex-shrink: 0;   /* Дата не сжимается */
   flex-shrink: 0; /* Дата не сжимается */
}
}


Строка 239: Строка 253:
   color: #00acc1;
   color: #00acc1;
   text-decoration: none;
   text-decoration: none;
   /* Пока не ограничиваем ширину и не обрезаем, чтобы понять причину переноса */
   white-space: normal;       /* Добавлено: разрешает перенос текста */
  /* white-space: nowrap; */
   overflow-wrap: break-word; /* Добавлено: разрывает длинные слова, если они не помещаются */
   /* overflow: hidden; */
   word-break: break-word;   /* Можно использовать как альтернативу/дополнение */
  /* text-overflow: ellipsis; */
   /* max-width: 350px; /* Можно будет добавить позже, если текст слишком длинный */
}
}


Строка 255: Строка 267:
   color: #777777;
   color: #777777;
   font-size: 0.9em;
   font-size: 0.9em;
   white-space: nowrap; /* Этот блок не должен переносить свой текст */
   white-space: nowrap;
   flex-shrink: 0;     /* Этот блок не должен сжиматься */
   flex-shrink: 0; /* Этот блок не должен сжиматься */
   margin-left: auto;   /* ЭТО КЛЮЧЕВОЕ ИЗМЕНЕНИЕ: Прижимает этот блок вправо */
   margin-left: auto; /* Прижимает этот блок вправо */
  /* padding-left: 15px; /* Убираем, так как margin-left: auto сделает всю работу по отступу */
  /* border: 1px solid cyan !important; /* Для отладки: показать границы этого блока */
}
}


Строка 271: Строка 281:
   text-decoration: underline;
   text-decoration: underline;
}
}
/* --- Стили для ГРАФИЧЕСКОГО МЕНЮ (финальная версия для кликабельности и центрирования) --- */


.graphical-menu { /* Общий контейнер для сетки элементов меню */
/* --- Стили для ГРАФИЧЕСКОГО МЕНЮ --- */
.graphical-menu {
   display: grid;
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
   grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
Строка 279: Строка 289:
}
}


/* Наша обертка для каждого элемента меню */
.graphical-menu-item-css {
.graphical-menu-item-css {
   position: relative; /* Для позиционирования растянутой ссылки */
   position: relative;
   background-color: #1E2228;
   background-color: #1E2228;
   border: 1px solid #333842;
   border: 1px solid #333842;
   border-radius: 10px;
   border-radius: 10px;
   padding: 15px 10px;
   padding: 15px 10px;
   min-height: 130px; /* Вы можете настроить эту высоту */
   min-height: 130px; /* Высота может потребовать корректировки в зависимости от размера контента */
   box-shadow: 0 2px 4px rgba(0,0,0,0.2);
   box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  /* Flexbox для центрирования <figure> (который содержит картинку и подпись) */
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
   align-items: center;
   align-items: center;
   justify-content: center; /* Центрирует <figure> по вертикали, если есть лишнее пространство */
   justify-content: center;
 
   transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
   transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}
}
Строка 305: Строка 311:
}
}


/* Тег <figure>, генерируемый MediaWiki. Он будет содержать картинку и подпись. */
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] {
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] {
   border: none !important;
   border: none !important;
Строка 311: Строка 316:
   padding: 0 !important;
   padding: 0 !important;
   margin: 0 !important;
   margin: 0 !important;
   width: auto !important; /* Ширина по содержимому */
   width: auto !important;
   max-width: 100%;     /* Чтобы не вылезал за родителя */
   max-width: 100%;
 
  /* Flexbox для расположения картинки (внутри <a>) и подписи (<figcaption>) друг под другом и по центру */
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
   align-items: center;     /* Горизонтальное центрирование картинки и подписи */
   align-items: center;
  /* z-index: 0; Оставим z-index по умолчанию, чтобы не усложнять */
}
}


/* Ссылка <a> вокруг изображения <img> - ЭТО БУДЕТ НАША РАСТЯНУТАЯ ССЫЛКА */
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] > a:first-child:not(.mw-file-description) {
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] > a:first-child:not(.mw-file-description) {
   position: absolute;
   position: absolute;
Строка 328: Строка 329:
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;
   z-index: 1; /* Эта ссылка должна быть поверх всего для обеспечения кликабельности всего блока */
   z-index: 1;
 
  /* Стили, чтобы сама ссылка-обертка была невидимой */
   background-color: transparent;
   background-color: transparent;
   border: none !important; /* Убедимся, что у нее нет своей рамки */
   border: none !important;
  /* Убраны font-size:0, text-indent, overflow:hidden, которые могли прятать картинку */
}
}


/* Изображение <img>, которое находится ВНУТРИ растянутой ссылки <a>.
  Оно должно быть видимо и отцентрировано. */
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] > a:first-child:not(.mw-file-description) img.mw-file-element {
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] > a:first-child:not(.mw-file-description) img.mw-file-element {
   display: block; /* Для корректной работы margin:auto и размеров */
   display: block;
   width: 100px !important;
   width: 100px !important; /* Исходный размер для десктопа */
   height: 100px !important;
   height: 100px !important; /* Исходный размер для десктопа */
   object-fit: contain;
   object-fit: contain;
   margin: 0 auto; /* Горизонтальное центрирование изображения внутри ссылки (если ссылка шире) */
   margin: 0 auto;
  /* Вертикальное центрирование изображения и подписи будет управляться flex-свойствами <figure> и .graphical-menu-item-css */
}
}


/* Подпись <figcaption> */
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
   font-size: 1.0em;
   font-size: 1.0em;
   font-weight: 600;
   font-weight: 600;
   line-height: 1.25;
   line-height: 1.25;
   text-align: center; /* Центрирование текста внутри подписи */
   text-align: center;
   margin-top: 105px;   /* Отступ от области изображения до текста подписи */
   margin-top: 10px; /* Изменено с 105px на более реалистичный отступ */
   position: relative; /* Чтобы текст был гарантированно видим "поверх" фона элемента, но "под" растянутой ссылкой */
   position: relative;
   z-index: 0;         /* Явно ниже растянутой ссылки, но сам текст будет виден */
   z-index: 0;
   width: 100%;       /* Чтобы text-align: center работал предсказуемо */
  width: 100%;
  color: #00acc1; /* Цвет текста подписи вынесен сюда для простоты */
   overflow-wrap: break-word; /* Добавлено для переноса длинных слов в подписи */
  word-break: break-word;  /* Добавлено для переноса длинных слов в подписи */
}
}


/* Ссылка <a> внутри <figcaption> */
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a,
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a,
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a:link,
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a:link,
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a:visited {
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a:visited {
   color: #00acc1;
   color: inherit; /* Наследует цвет от figcaption */
   text-decoration: none;
   text-decoration: none;
}
}


/* При наведении на весь блок .graphical-menu-item-css, меняем цвет ссылки в подписи */
.graphical-menu-item-css:hover figure[typeof~='mw:File/Frame'] figcaption,
.graphical-menu-item-css:hover figure[typeof~='mw:File/Frame'] figcaption a {
.graphical-menu-item-css:hover figure[typeof~='mw:File/Frame'] figcaption a {
   color: #29d8ef;
   color: #29d8ef;
Строка 379: Строка 375:
   .main-page-left-column, .main-page-right-column {
   .main-page-left-column, .main-page-right-column {
     flex: 1 1 100%;
     flex: 1 1 100%;
     min-width: unset;
     min-width: unset; /* было min-width: 0; но unset более корректно для сброса предыдущего значения */
   }
   }
   .graphical-menu { /* Этот селектор у вас уже был для контейнера */
   .graphical-menu {
     grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
     grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
   }
   }
   .graphical-menu-item-css { /* Был .graphical-menu .graphical-menu-image a */
   .graphical-menu-item-css {
     min-height: 120px;
     min-height: 120px; /* Уменьшаем мин. высоту для мобильных */
     padding: 15px 8px;
     padding: 15px 8px;
   }
   }
  /* Изображение внутри элемента */
   .graphical-menu-item-css figure[typeof~='mw:File/Frame'] img.mw-file-element {
   .graphical-menu-item-css figure[typeof~='mw:File/Frame'] img.mw-file-element {
     width: 50px !important;
     width: 50px !important; /* Уменьшенный размер для мобильных */
     height: 50px !important;
     height: 50px !important;/* Уменьшенный размер для мобильных */
  }
  .graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
    margin-top: 8px; /* Корректируем отступ для меньших изображений */
    font-size: 0.9em; /* Можно немного уменьшить шрифт подписи */
   }
   }
}
}
Строка 406: Строка 405:
       font-size: 1.4em;
       font-size: 1.4em;
     }
     }
     .graphical-menu { /* Этот селектор у вас уже был */
     .graphical-menu {
         grid-template-columns: repeat(2, 1fr);
         grid-template-columns: repeat(2, 1fr); /* Два элемента в ряд для самых маленьких экранов */
         gap: 15px;
         gap: 10px; /* Можно немного уменьшить отступ */
     }
     }
     .graphical-menu-item-css { /* Был .graphical-menu .graphical-menu-image a */
     .graphical-menu-item-css {
         min-height: 100px;
        min-height: 100px; /* Еще немного уменьшаем высоту */
         padding: 10px 5px;
     }
     }
    /* Изображение внутри элемента */
     .graphical-menu-item-css figure[typeof~='mw:File/Frame'] img.mw-file-element {
     .graphical-menu-item-css figure[typeof~='mw:File/Frame'] img.mw-file-element {
         width: 40px !important;
         width: 40px !important; /* Самый маленький размер изображения */
         height: 40px !important;
         height: 40px !important;/* Самый маленький размер изображения */
     }
     }
    /* Подпись */
     .graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
     .graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
         font-size: 0.85em;
        margin-top: 6px; /* Корректируем отступ */
         font-size: 0.85em; /* Уже было, хорошо */
     }
     }
}
}
Строка 478: Строка 477:
*/
*/
.text-white {
.text-white {
   color: #555; /* Темно-серый, для читаемости на светлом фоне */
   color: #f4f4f4; /* Темно-серый, для читаемости на светлом фоне */
   /* Если нужен именно белый: color: white; (позаботьтесь о фоне) */
   /* Если нужен именно белый: color: white; (позаботьтесь о фоне) */
}
}

Версия от 17:36, 30 мая 2025

/* Размещённый здесь CSS будет применяться ко всем темам оформления */
/* --- Глобальные стили --- */
html {
  box-sizing: border-box;
}
*, *:before, *:after {
  box-sizing: inherit;
}

/* --- Заглавная страница --- */
/* --- Заголовок с логотипом --- */
.main-page-header-container {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 35px;
  padding: 25px 10px;
  text-align: center;
}

.main-page-logo img {
  height: 100px;
  width: auto;
  margin-right: 25px;
  /* filter: drop-shadow(0 0 12px rgba(0, 180, 255, 0.6)); */
}

.main-page-title-container {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.main-page-title {
  font-size: 3.5em;
  font-weight: bold;
  color: #4DD0E1; /* Основной цвет текста заголовка */
  margin: 0;
  line-height: 1.0;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-shadow:
    0px 15px 5px rgba(0, 172, 196, 0.1), 10px 20px 5px rgba(0, 172, 196, 0.05), -10px 20px 5px rgba(0, 172, 196, 0.05), 0px 0px 6px rgba(0, 172, 196, 0.7);
}

.main-page-subtitle {
  font-family: 'Arial', sans-serif;
  font-size: 1.3em;
  color: #4fa9bf;
  margin: 0;
  font-weight: normal;
  letter-spacing: 0.5px;
  text-align: center;
}

@media (max-width: 768px) {
  .main-page-header-container {
    flex-direction: column;
  }
  .main-page-logo img {
    margin-right: 0;
    margin-bottom: 20px;
    height: 60px;
  }
  .main-page-title-container {
    align-items: center;
  }
  .main-page-title {
    font-size: 3.0em;
  }
  .main-page-subtitle {
    font-size: 1.3em;
  }
}
@media (max-width: 480px) {
  .main-page-title {
    font-size: 2.4em;
  }
  .main-page-subtitle {
    font-size: 1.1em;
  }
}

/* --- Компактное меню --- */
.compact-menu-container {
  text-align: center;
  margin-bottom: 40px;
  padding: 10px 0;
  background-color: rgba(26, 29, 35, 0.5);
  border-top: 1px solid #2A2E35;
  border-bottom: 1px solid #2A2E35;
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

ul.compact-menu {
  list-style: none;
  padding: 0;
  margin: 0;
  display: inline-block;
}

ul.compact-menu li {
  display: inline-block;
  margin: 0 8px;
}

ul.compact-menu li a, ul.compact-menu li a.external {
  text-decoration: none;
  color: #E0E0E0;
  font-size: 1.1em;
  font-weight: 500;
  padding: 8px 15px;
  border-radius: 4px;
  transition: background-color 0.2s ease, color 0.2s ease, transform 0.1s ease;
  display: block;
}

ul.compact-menu li a:hover,
ul.compact-menu li.active a {
  color: #29d8ef;
  background-color: #2E343D;
  text-decoration: none;
  transform: translateY(-1px);
}

/* --- Общие стили для колонок и виджетов --- */
.main-page-content-wrapper {
  /* max-width: 1200px; */
  /* margin-left: auto; */
  /* margin-right: auto; */
  /* padding: 0 15px; */
}

.main-page-columns {
  display: flex;
  flex-wrap: wrap;
  gap: 25px;
}

.main-page-left-column,
.main-page-right-column {
  box-sizing: border-box; /* Добавлено для корректного расчета ширины */
}

.main-page-left-column {
  flex: 2.5;
  min-width: 320px;
  display: flex;
  flex-direction: column;
  gap: 25px;
}

.main-page-right-column {
  flex: 1.5;
  min-width: 280px;
}
.main-page-right-column .widget:not(:last-child) {
    margin-bottom: 25px;
}

.widget {
  background-color: #171B20;
  border: 1px solid #2A2E35;
  border-radius: 8px;
  padding: 20px;
  color: #b0b0b0;
  box-shadow: 0 3px 8px rgba(0,0,0,0.25);
  box-sizing: border-box; /* Добавлено */
  width: 100%;           /* Добавлено, чтобы виджет занимал всю ширину колонки с учетом padding */
  /* overflow-x: hidden; /* Раскомментируйте как крайнюю меру, если внутренний контент сложно исправить */
}

.widget h2 {
  margin-top: 0;
  margin-bottom: 20px;
  font-size: 1.6em;
  color: #E0E0E0;
  border-bottom: 1px solid #333842;
  padding-bottom: 12px;
  font-weight: 600;
  letter-spacing: 0.5px;
}

/* Стилизация DPL3 для "Новых страниц" */
.new-pages-list ul {
  padding-left: 0;
  list-style: none;
  margin:0;
}
.new-pages-list ul li {
  margin-bottom: 0;
  font-size: 1em;
}
.new-pages-list ul li a {
  text-decoration: none;
  display: block;
  padding: 8px 5px;
  border-bottom: 1px dashed #2A2E35;
  transition: background-color 0.2s ease, color 0.2s ease;
  overflow-wrap: break-word; /* Добавлено для переноса длинных слов */
  word-break: break-word;   /* Добавлено для переноса длинных слов */
}
.new-pages-list ul li:last-child a {
    border-bottom: none;
}
.new-pages-list ul li a:hover {
  background-color: #20242A;
  text-decoration: none;
}

/* Стили для списка DPL "Обновления Wiki" */
.recent-changes-list ul.dpl-recent-updates-list {
  padding-left: 0;
  list-style: none;
  margin: 0;
}

.recent-changes-list ul.dpl-recent-updates-list li {
  display: flex;
  align-items: baseline;
  padding: 10px 8px;
  font-size: 0.95em;
  border-bottom: 1px solid #2E343D;
  line-height: 1.5;
}

.recent-changes-list ul.dpl-recent-updates-list li:last-child {
  border-bottom: none;
}

/* Блок с датой и названием страницы */
.dpl-item-maininfo {
  display: flex;
  align-items: baseline;
  margin-right: 15px;
  flex-grow: 1;     /* Добавлено: позволяет блоку расти */
  flex-shrink: 1;   /* Добавлено: позволяет блоку сжиматься */
  min-width: 0;     /* Добавлено: Ключ к правильному сжатию flex-элементов с текстом */
}

/* Дата */
.dpl-item-date {
  color: #c4c4c4;
  font-size: 0.9em;
  margin-right: 10px;
  white-space: nowrap;
  flex-shrink: 0; /* Дата не сжимается */
}

/* Название страницы (ссылка) */
.dpl-item-maininfo > a {
  color: #00acc1;
  text-decoration: none;
  white-space: normal;       /* Добавлено: разрешает перенос текста */
  overflow-wrap: break-word; /* Добавлено: разрывает длинные слова, если они не помещаются */
  word-break: break-word;    /* Можно использовать как альтернативу/дополнение */
}

.dpl-item-maininfo > a:hover {
  color: #29d8ef;
  text-decoration: underline;
}

/* Блок с информацией о правке */
.dpl-item-editinfo {
  color: #777777;
  font-size: 0.9em;
  white-space: nowrap;
  flex-shrink: 0; /* Этот блок не должен сжиматься */
  margin-left: auto; /* Прижимает этот блок вправо */
}

/* Ссылка на пользователя в информации о правке */
.dpl-item-editinfo a {
  font-weight: normal;
  text-decoration: none;
}

.dpl-item-editinfo a:hover {
  text-decoration: underline;
}

/* --- Стили для ГРАФИЧЕСКОГО МЕНЮ --- */
.graphical-menu {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 15px;
}

.graphical-menu-item-css {
  position: relative;
  background-color: #1E2228;
  border: 1px solid #333842;
  border-radius: 10px;
  padding: 15px 10px;
  min-height: 130px; /* Высота может потребовать корректировки в зависимости от размера контента */
  box-shadow: 0 2px 4px rgba(0,0,0,0.2);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.graphical-menu-item-css:hover {
  transform: translateY(-5px) scale(1.03);
  box-shadow: 0 8px 16px rgba(0,0,0,0.35);
  background-color: #282D35;
  border-color: #58A6FF;
}

.graphical-menu-item-css figure[typeof~='mw:File/Frame'] {
  border: none !important;
  background-color: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
  width: auto !important;
  max-width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.graphical-menu-item-css figure[typeof~='mw:File/Frame'] > a:first-child:not(.mw-file-description) {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  background-color: transparent;
  border: none !important;
}

.graphical-menu-item-css figure[typeof~='mw:File/Frame'] > a:first-child:not(.mw-file-description) img.mw-file-element {
  display: block;
  width: 100px !important;  /* Исходный размер для десктопа */
  height: 100px !important; /* Исходный размер для десктопа */
  object-fit: contain;
  margin: 0 auto;
}

.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
  font-size: 1.0em;
  font-weight: 600;
  line-height: 1.25;
  text-align: center;
  margin-top: 10px; /* Изменено с 105px на более реалистичный отступ */
  position: relative;
  z-index: 0;
  width: 100%;
  color: #00acc1; /* Цвет текста подписи вынесен сюда для простоты */
  overflow-wrap: break-word; /* Добавлено для переноса длинных слов в подписи */
  word-break: break-word;   /* Добавлено для переноса длинных слов в подписи */
}

.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a,
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a:link,
.graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption a:visited {
  color: inherit; /* Наследует цвет от figcaption */
  text-decoration: none;
}

.graphical-menu-item-css:hover figure[typeof~='mw:File/Frame'] figcaption,
.graphical-menu-item-css:hover figure[typeof~='mw:File/Frame'] figcaption a {
  color: #29d8ef;
}

/* --- Адаптивность --- */
@media (max-width: 768px) {
  .main-page-columns {
    flex-direction: column;
  }
  .main-page-left-column, .main-page-right-column {
    flex: 1 1 100%;
    min-width: unset; /* было min-width: 0; но unset более корректно для сброса предыдущего значения */
  }
  .graphical-menu {
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  }
  .graphical-menu-item-css {
    min-height: 120px; /* Уменьшаем мин. высоту для мобильных */
    padding: 15px 8px;
  }
  .graphical-menu-item-css figure[typeof~='mw:File/Frame'] img.mw-file-element {
    width: 50px !important; /* Уменьшенный размер для мобильных */
    height: 50px !important;/* Уменьшенный размер для мобильных */
  }
  .graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
    margin-top: 8px; /* Корректируем отступ для меньших изображений */
    font-size: 0.9em; /* Можно немного уменьшить шрифт подписи */
  }
}

@media (max-width: 480px) {
    ul.compact-menu li {
        margin: 0 3px;
    }
    ul.compact-menu li a {
        font-size: 0.95em;
        padding: 6px 10px;
    }
    .widget h2 {
      font-size: 1.4em;
    }
    .graphical-menu {
        grid-template-columns: repeat(2, 1fr); /* Два элемента в ряд для самых маленьких экранов */
        gap: 10px; /* Можно немного уменьшить отступ */
    }
    .graphical-menu-item-css {
        min-height: 100px; /* Еще немного уменьшаем высоту */
        padding: 10px 5px;
    }
    .graphical-menu-item-css figure[typeof~='mw:File/Frame'] img.mw-file-element {
        width: 40px !important; /* Самый маленький размер изображения */
        height: 40px !important;/* Самый маленький размер изображения */
    }
    .graphical-menu-item-css figure[typeof~='mw:File/Frame'] figcaption {
        margin-top: 6px; /* Корректируем отступ */
        font-size: 0.85em; /* Уже было, хорошо */
    }
}

/* Стили для инфобокса предметов (шаблон Магический_предмет) */

/* Инфобокс, который будет плавать слева */
.item-infobox {
  width: 300px; /* Ширина инфобокса, можете настроить */
  float: left;
  margin-right: 20px; /* Отступ справа от инфобокса */
  margin-bottom: 20px; /* Отступ снизу */
  box-sizing: border-box;
}

.item-infobox-table {
  width: 100%;
  /* Класс .wikitable из MediaWiki обычно добавляет базовые стили, такие как границы */
}

/* Класс для основного контента, который будет справа от инфобокса.
   Этот div вы будете добавлять на страницу вручную, после шаблона. */
.item-main-content {
  overflow: hidden; /* Предотвращает "залезание" текста под инфобокс */
  /* Альтернатива: если .item-infobox имеет margin-right: 20px; и width: 300px;
     то можно задать: margin-left: 320px;
     Но 'overflow: hidden' обычно проще и надежнее. */
}

/* Общий контейнер для страницы предмета (опционально, для общей структуры) */
.item-page-container {
  /* Можно оставить пустым или добавить общие стили для страницы */
}

/* Классы для цвета текста Редкости и Статуса */
.text-green {
  color: green;
}
.text-blue {
  color: blue;
}
.text-violet {
  color: #8A2BE2; /* BlueViolet, более насыщенный фиолетовый */
}
.text-orange {
  color: orange;
}

/* Для класса .text-white:
   Белый текст (#FFFFFF) будет плохо читаем на стандартном светлом фоне MediaWiki.
   Варианты:
   1. Использовать темно-серый для лучшей читаемости: color: #555;
   2. Если ваша вики имеет темный фон по умолчанию, 'color: white;' будет работать.
   3. Не использовать специальный класс для "Обычный", тогда он будет стандартным цветом текста.
   Поскольку вы указали "Обычный = class="text-white"", предполагается, что цвет должен быть белым.
   Для примера оставим вариант, который будет виден на светлом фоне.
*/
.text-white {
  color: #f4f4f4; /* Темно-серый, для читаемости на светлом фоне */
  /* Если нужен именно белый: color: white; (позаботьтесь о фоне) */
}

.text-success {
  color: green; /* Или #006400 (DarkGreen) для лучшего контраста */
  font-weight: bold;
}
.text-danger {
  color: red; /* Или #B22222 (Firebrick) для лучшего контраста */
  font-weight: bold;
}