2026, мистика, 18+
Kindred Spirits

Kindred Spirits

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Kindred Spirits » Блоги » Монстров нет. Кроме одного, что у меня в шкафу.


Монстров нет. Кроме одного, что у меня в шкафу.

Сообщений 1 страница 14 из 14

1

[html]<div class="forum-playlist-wrapper">
  <style>
    /* Основные стили контейнера */
    .forum-playlist-wrapper {
      display: flex;
      width: 600px;
      max-width: 100%;
      height: 320px;
      margin: 20px auto;
      background-color: #0d0d0d;
      border: 1px solid #222;
      box-shadow: 0 5px 15px rgba(0,0,0,0.5);
      font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
      color: #ffffff;
      box-sizing: border-box;
      overflow: hidden;
    }

    /* Левая часть со статичным изображением */
    .fpl-left {
      flex: 0 0 250px;
      position: relative;
    }
   
    .fpl-left img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
    }

    /* Правая часть с контентом */
    .fpl-right {
      flex: 1;
      display: flex;
      flex-direction: column;
      padding: 20px;
      box-sizing: border-box;
      position: relative;
      background: #0d0d0d;
    }

    /* Скрываем системные radio-кнопки для вкладок */
    .fpl-right input[type="radio"] {
      display: none;
    }

    /* Стили для переключателей вкладок */
    .fpl-tabs {
      display: flex;
      gap: 20px;
      margin-bottom: 15px;
      border-bottom: 1px solid #333;
      padding-bottom: 10px;
    }

    .fpl-tabs label {
      cursor: pointer;
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 1.5px;
      font-weight: bold;
      color: #777;
      transition: color 0.3s ease;
    }

    .fpl-tabs label:hover {
      color: #fff;
    }

    /* Логика переключения цвета вкладок (золотой акцент) */
    #fpl-tab-info1:checked ~ .fpl-tabs label[for="fpl-tab-info1"],
    #fpl-tab-info2:checked ~ .fpl-tabs label[for="fpl-tab-info2"] {
      color: #D4AF37;
    }

    /* Стили для текстовых блоков (вместо плейлистов) */
    .fpl-content-block {
      display: none; /* Скрыты по умолчанию */
      flex: 1;
      overflow-y: auto;
      padding-right: 10px;
      font-size: 12px;
      line-height: 1.6;
      color: #ccc;
    }

    /* Показываем нужный блок при активной вкладке */
    #fpl-tab-info1:checked ~ #fpl-content-info1,
    #fpl-tab-info2:checked ~ #fpl-content-info2 {
      display: block;
    }

    /* Стилизация скроллбара */
    .fpl-content-block::-webkit-scrollbar {
      width: 4px;
    }
    .fpl-content-block::-webkit-scrollbar-track {
      background: #1a1a1a;
    }
    .fpl-content-block::-webkit-scrollbar-thumb {
      background: #D4AF37;
    }

    /* Стилизация заголовков и выделений внутри текста */
    .fpl-content-block h3 {
      font-size: 14px;
      color: #fff;
      margin: 0 0 10px 0;
      text-transform: uppercase;
      letter-spacing: 1px;
    }

    .fpl-content-block p {
      margin: 0 0 12px 0;
    }

    .fpl-content-block strong {
      color: #D4AF37;
      font-weight: normal;
    }
   
    .fpl-fact-list {
        list-style: none;
        padding: 0;
        margin: 0;
    }
   
    .fpl-fact-list li {
        margin-bottom: 6px;
        border-bottom: 1px dashed rgba(255,255,255,0.1);
        padding-bottom: 4px;
    }

  </style>

  <!-- Левая колонка: Изображение -->
  <div class="fpl-left">
    <img src="https://upforme.ru/uploads/001c/82/f2/79/630428.png" alt="Обложка">
  </div>

  <!-- Правая колонка: Контент и вкладки -->
  <div class="fpl-right">
    <!-- Технические чекбоксы для вкладок -->
    <input type="radio" id="fpl-tab-info1" name="fpl-tabs-group" checked>
    <input type="radio" id="fpl-tab-info2" name="fpl-tabs-group">

    <!-- Заголовки вкладок -->
    <div class="fpl-tabs">
      <label for="fpl-tab-info1">Основное</label>
      <label for="fpl-tab-info2">Детали</label>
    </div>

    <!-- Вкладка 1: Основная информация -->
    <div class="fpl-content-block" id="fpl-content-info1">
             <p><a href=https://kindredspirits.ru/viewtopic.php?id=755#p146200 style="color: #ccc;;">Инвентарь. Основные предметы.</a></p>
  <p><a href=https://kindredspirits.ru/viewtopic.php?id=755#p133635 style="color: #ccc;;">Хронология.</a></p>
    </div>

    <!-- Вкладка 2: Детали / Биография -->
    <div class="fpl-content-block" id="fpl-content-info2">
            <p><a href=https://kindredspirits.ru/viewtopic.php?id=553 style="color: #ccc;">Ивент: "Влюбленный февраль"</a></p>
<p><a href=https://kindredspirits.ru/viewtopic.php?id=818#p143391 style="color: #ccc;">Ивент: "Познаем себя"</a></p>
    </div>
  </div>
</div>
<div style="text-align: center;">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/T8mBXtYFO9Y?si=tcmxSMmXh9txGJdh" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>[/html]

Отредактировано Adrian Elita-Lichtenberg (22-08-2026 19:31:29)

+6

2

[html]<style>
/* ОСНОВНОЙ КОНТЕЙНЕР (ПАПКА) */
.timeline-folder {
    display: flex;
    max-width: 850px;
    height: 550px;
    margin: 20px auto;
    background: #0f0f0f;
    border: 2px solid #D4AF37;
    border-radius: 10px 15px 15px 10px;
    box-shadow: 5px 5px 15px rgba(0,0,0,0.5);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    overflow: hidden;
}

/* ЛЕВАЯ ПАНЕЛЬ (ВКЛАДКИ) */
.tl-tabs {
    width: 150px;
    background: #0f0f0f;
    display: flex;
    flex-direction: column;
    padding-top: 30px;
    border-right: 1px solid #222;
}

.tl-tab-btn {
    background: transparent;
    color: #fff;
    border: none;
    padding: 15px 15px;
    text-align: left;
    font-size: 15px;
    font-weight: bold;
    cursor: pointer;
    transition: all 0.3s ease;
    border-left: 4px solid transparent;
    position: relative;
}

.tl-tab-btn:hover {
    color: #D4AF37;
}

/* АКТИВНАЯ ВКЛАДКА (СЛИВАЕТСЯ С БЕЛЫМ ЛИСТОМ) */
.tl-tab-btn.active {
    background: #ffffff;
    color: #000;
    border-left: 4px solid #D4AF37;
    border-radius: 10px 0 0 10px;
}

/* ПРАВАЯ ПАНЕЛЬ (СОДЕРЖИМОЕ) */
.tl-content {
    flex: 1;
    background: #ffffff;
    position: relative;
    overflow: hidden;
}

.tl-pane {
    display: none;
    padding: 30px;
    height: 100%;
    overflow-y: auto;
    box-sizing: border-box;
}

.tl-pane.active {
    display: block;
    animation: fadeIn 0.5s ease;
}

/* КАСТОМНЫЙ СКРОЛЛБАР */
.tl-pane::-webkit-scrollbar { width: 8px; }
.tl-pane::-webkit-scrollbar-track { background: #f0f0f0; border-radius: 4px; }
.tl-pane::-webkit-scrollbar-thumb { background: #D4AF37; border-radius: 4px; }

/* БЛОКИ ЭПИЗОДОВ */
.tl-item {
    background: #fafafa;
    border-left: 3px solid #0f0f0f;
    margin-bottom: 20px;
    padding: 15px 20px;
    border-radius: 0 8px 8px 0;
    box-shadow: 2px 2px 5px rgba(0,0,0,0.05);
    transition: transform 0.2s;
}

.tl-item:hover {
    transform: translateX(5px);
    border-left-color: #D4AF37;
}

/* ЗАГОЛОВОК БЛОКА (ДАТА + ССЫЛКА) */
.tl-item-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px dashed #ccc;
    padding-bottom: 8px;
    margin-bottom: 8px;
}

.tl-date {
    font-weight: 800;
    color: #0f0f0f;
    font-size: 15px;
}

.tl-link {
    color: #0f0f0f;
    text-decoration: none;
    font-weight: bold;
    font-size: 16px;
    transition: color 0.3s;
}

.tl-link:hover {
    color: #D4AF37;
}

/* ФОРМАТ И СТАТУС */
.tl-meta {
    display: flex;
    gap: 10px;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: bold;
    letter-spacing: 0.5px;
}

.tag-format { background: #eee; color: #555; padding: 3px 8px; border-radius: 4px; }

/* Цвета статусов */
.tag-done { background: #0f0f0f; color: #fff; padding: 3px 8px; border-radius: 4px; }
.tag-process { background: #D4AF37; color: #fff; padding: 3px 8px; border-radius: 4px; }
.tag-frozen { background: #fff; color: #0f0f0f; border: 1px solid #0f0f0f; padding: 2px 7px; border-radius: 4px; }

/* ОПИСАНИЕ ЭПИЗОДА */
.tl-desc {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px dotted #e0e0e0;
    font-size: 13px;
    color: #333;
    line-height: 1.5;
    text-align: justify;
}

/* ЗАБЛОКИРОВАННЫЙ БЛОК */
.tl-item.locked {
    background: #ececec;
    border-left: 3px solid #888;
    background-image: repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(0,0,0,0.03) 10px, rgba(0,0,0,0.03) 20px);
}
.tl-item.locked .tl-date { color: #555; }
.tl-item.locked .tl-link { color: #555; }
.tl-item.locked .tl-desc { color: #555; border-top: 1px dotted #ccc; }
.tl-lock-icon { color: #D4AF37; margin-right: 5px; }

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Адаптивность для узких экранов */
@media (max-width: 600px) {
    .timeline-folder { flex-direction: column; height: 700px; }
    .tl-tabs { width: 100%; flex-direction: row; padding-top: 0; border-right: none; border-bottom: 2px solid #D4AF37; overflow-x: auto;}
    .tl-tab-btn { border-left: none; border-bottom: 4px solid transparent; text-align: center; white-space: nowrap; }
    .tl-tab-btn.active { border-radius: 10px 10px 0 0; border-left: none; border-bottom: 4px solid #D4AF37; }
    .tl-item-head { flex-direction: column; align-items: flex-start; gap: 5px; }
}
</style>

<div class="timeline-folder">
    <!-- ВКЛАДКИ -->
    <div class="tl-tabs">
        <button class="tl-tab-btn active" onclick="openYear(event, 'past')">Прошлое</button>
        <button class="tl-tab-btn" onclick="openYear(event, 'y2025')">2025</button>
        <button class="tl-tab-btn" onclick="openYear(event, 'y2026')">2026</button>
        <button class="tl-tab-btn" onclick="openYear(event, 'y2027')">2027</button>
        <button class="tl-tab-btn" onclick="openYear(event, 'alt')">Альтернативы</button>
    </div>

    <!-- КОНТЕНТ -->
    <div class="tl-content">
               
       <!-- ПРОШЛОЕ -->
        <div id="past" class="tl-pane active">
            <div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">27 декабря 2024</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=358" class="tl-link">Адаптационный синдром</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                     <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                    Адриан не так давно попал в академию. Документы, проверки... Психологическая диагностика. Так он попадает на беседу к психологу София Тарро.
                </div>
            </div>
        </div>

        <!-- 2025 -->
        <div id="y2025" class="tl-pane">
            <div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">6 января</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=314" class="tl-link">At the edge of singularity. Pt. I</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-done">Завершен</span>
                </div>
                <div class="tl-desc">
                    Первый день в классе. Чувство дискомфорта и отчужденности. Первая встреча со своим фамильяром и желание провалиться под землю.
                </div>
            </div>

            <!-- ЗАБЛОКИРОВАННЫЙ БЛОК -->
            <div class="tl-item locked">
                <div class="tl-item-head">
                    <span class="tl-date">8 января</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=412" class="tl-link">Srocze przygody</a>
                </div>
                               <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-frozen">Заморожен. Отменен</span>
                     </div>
                <div class="tl-desc">
                 Адриан и Вивьен не поладили сразу. И очевидно, что Рук был последним, кого Адриан предпочел бы поймать в своей комнате за кражей. Не перегнул ли он палку, не позволяя Вивьену выйти, даже истекая кровью?.. А к черту, все равно все теперь отмывать.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">7 апреля</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=407" class="tl-link">Царапины</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                    Прошлое продолжает нагонять, сколько от него не беги. Головные боли и следы абстиненции. Кто-то замечает. Все понимает. Бессмысленно отрицать. Хотя, пересекаясь во время перерыва с Селиной, Адриан и отчаянно пытается. У них завязывается разговор и они раскуривают сигуреты.
                </div>
            </div>
       
            <div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">5 мая</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=314" class="tl-link">At the edge of singularity. Pt. II</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-done">Завершен</span>
                </div>
                <div class="tl-desc">
                    Адриан долго откладывал эту встречу, сделал все, чтобы измениться, стать лучше, прежде чем решился пригласить Гленна в Оранжерею и переговорить с ним о Связи. Фингал под глазом — не то, чем он рассчитывал закончить.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">9 мая</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=522" class="tl-link">Практика философии добра и зла</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                    Конец занятий. Все спокойно, когда в кабинет вламывается Курт и обвиняет Эдана в краже телефона. Адриан встает на защиту одногруппника, но скоро осознает, что все далеко не так просто, как казалось на первый взгляд.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">23 мая</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=364" class="tl-link">Endurance</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-done">Завершен</span>
                </div>
                <div class="tl-desc">
                    Адриан застает Гленна в спортивном зале. Он знал, что найдет его здесь. Не впервые замечал, куда он направляется после занятий, и вот решился. Гленн помогает Адриану освоиться, но им все еще тяжело найти общий язык. Несмотря на это, Гленн соглашается помогать Адриану в тренировках.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">Летние каникулы</span>
                                    </div>
<div class="tl-meta">
                    <span class="tag-format">Иное</span>
                                    </div>
                                <div class="tl-desc">
                    В течение лета Адриан сдает долги по учебе, нагоняет программу и все более погружается в атмосферу Академии. Он хочет добиться большего, занять место в этом мире, но понимает, что не может сделать это в одиночку. Он ждёт начала учебных будней, чтобы встретиться с Гленном. В это время он также помогает персоналу и занимается выполнением их мелких поручений. Договаривается с Никодимом Беркой о том, чтобы с началам учебы он подвозил его в ближайшую церковь на воскресные мессы.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">27 августа</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=541" class="tl-link">Bring the lion out</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                    Гленн приезжает заранее, чтобы устроиться в автошколу и подготовиться к обучению и обнаруживает, что Адриан заселился в его комнату. Адриан решает помочь ему в подготовке, кроме того, он берется за то, чтобы основательно поработать над укреплением связи и выбросами Гленна из звериной формы. Результаты его не удовлетворяют. Он заставляет себя раз за разом забывать о милосердии в погоне за чем-то большим.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">1 сентября</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=627" class="tl-link">Бесконечные повороты</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                   Адриан сталкивается с одним из новеньких — Дорианом Дерденом. Он не он, если не попытается помочь ему освоиться в Академии.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">7 октября</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=615" class="tl-link">honest</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                    Адриан застает Кароля и Мэтта за интимной ситуацией в библиотеке. Он не вмешивается, но старые раны уже потревожены. После завершения собрания дисциплинарной комиссии Адриан подходит к Каролю, чтобы поговорить с ним.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">15 октября</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=553#p107721" class="tl-link">In the grove is a heart that's still in slumber</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Зарисовка</span>
                    <span class="tag-done">Завершена</span>
                </div>
                <div class="tl-desc">
                    Адриан и Гленн выполняют вместе задание по теории Связи и отправляются на вылазку, чтобы сделать фотографии белохвостых оленей.
                </div>
            </div>

<div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">31 октября</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=341" class="tl-link">Ночь сорванных замков</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Эпизод</span>
                    <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                    Норберт, Адриан и Глен находились в одной из алхимических лабораторий, когда тишину разорвала система оповещения.<br>

Свет несколько раз мигнул, множество экранчиков на входах лабораторий вспыхнули красным цветом, погасли, а затем вспыхнули вновь, выдавая короткое сообщение об аварийной изоляции сектора. Почти сразу за этим с глухим металлическим ударом захлопнулись ударопрочные двери. Магические руны вторили монитором, активируя печати, отсекающие коридоры, лифты и лаборатории друг от друга.<br>

Где-то в глубине корпуса прошёлся низкий гул, словно по стенам пропустили ток. Лаборатория оказалась отрезана от остальной Академии. Связь в ней нестабильна, автоматика живёт своей собственной логикой, а за стеклянными перегородками медленно приходят в движение механизмы безопасности.
                </div>
            </div>

        </div>

        <!-- 2026 -->
        <div id="y2026" class="tl-pane">
        <div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">14 февраля</span>
                    <a href="https://kindredspirits.ru/viewtopic.php?id=553#p107721" class="tl-link">The curiosity killed the cat...</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Зарисовка</span>
                    <span class="tag-done">Завершена</span>
                </div>
                <div class="tl-desc">
                   Адриан хочет устроить "хороший вечер". Сомнительными способами: заманить и оглушить Гленна, связать его, чтобы он не ушел. Похоже, весь мир пытается намекнуть ему, что он перегибает.
                </div>
            </div>
        </div>

        <!-- 2027 -->
        <div id="y2027" class="tl-pane">
            <div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">...</span>
                    <span class="tl-link">...</span>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">...</span>
                </div>
                <div class="tl-desc">
                    ...
                </div>
            </div>
        </div>

        <!-- АЛЬТЕРНАТИВЫ -->
        <div id="alt" class="tl-pane">
            <div class="tl-item">
                <div class="tl-item-head">
                    <span class="tl-date">AU</span>
                    <a href="ССЫЛКА" class="tl-link">...</a>
                </div>
                <div class="tl-meta">
                    <span class="tag-format">Зарисовка</span>
                    <span class="tag-process">В процессе</span>
                </div>
                <div class="tl-desc">
                   
                </div>
            </div>
        </div>

    </div>
</div>

<script>
function openYear(evt, yearName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tl-pane");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
        tabcontent[i].classList.remove("active");
    }
    tablinks = document.getElementsByClassName("tl-tab-btn");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(yearName).style.display = "block";
    document.getElementById(yearName).classList.add("active");
    evt.currentTarget.className += " active";
}
</script>[/html]

Отредактировано Adrian Elita-Lichtenberg (21-06-2026 01:29:06)

+6

3

https://upforme.ru/uploads/001c/82/f2/79/784373.png

Summer depression – girl in red

+8

4

https://upforme.ru/uploads/001c/82/f2/79/614491.png

Summertime sadness – Lana Del Rey

+6

5

Хочу продублировать к себе, чтобы не потерялось
[html]<style>
.bw-multi-wrapper {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  max-width: 700px;
  margin: 15px auto;
  font-family: 'Courier New', Courier, monospace, sans-serif;
  box-sizing: border-box;
}

/* Карточка отдельного плейлиста */
.bw-playlist-card {
  flex: 1 1 300px;
  background: #0d0d0d;
  border: 1px solid #333333;
  border-radius: 4px;
  padding: 16px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.8);
  display: flex;
  flex-direction: column;
}

/* --- ВЕРХНЯЯ ЧАСТЬ ПЛЕЕРА --- */
.bw-player-header {
  border-bottom: 1px dashed #333;
  padding-bottom: 15px;
  margin-bottom: 15px;
}

.bw-playlist-title {
  font-size: 10px;
  color: #666;
  text-transform: uppercase;
  letter-spacing: 2px;
  margin-bottom: 12px;
}

.bw-now-playing-title {
  font-size: 15px;
  font-weight: bold;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.bw-now-playing-artist {
  font-size: 11px;
  color: #888;
  margin-top: 4px;
}

/* --- КРОССБАР ПРОГРЕССА --- */
.bw-timeline-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 15px;
}

.bw-progress-bar {
  flex-grow: 1;
  height: 4px;
  background: #222;
  border-radius: 2px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}

.bw-progress-fill {
  height: 100%;
  width: 0%;
  background: #ffffff;
  transition: width 0.1s linear;
}

.bw-time {
  font-size: 10px;
  color: #777;
  min-width: 75px;
  text-align: right;
}

/* --- КНОПКИ И ГРОМКОСТЬ --- */
.bw-controls-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 15px;
}

.bw-main-btns {
  display: flex;
  align-items: center;
  gap: 10px;
}

.bw-btn-play {
  width: 38px;
  height: 38px;
  background: #ffffff;
  color: #000000;
  border: none;
  border-radius: 50%;
  font-size: 14px;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: transform 0.1s, background 0.2s;
}

.bw-btn-play:hover {
  background: #cccccc;
  transform: scale(1.05);
}

.bw-btn-skip {
  width: 28px;
  height: 28px;
  background: transparent;
  color: #ffffff;
  border: 1px solid #444;
  border-radius: 50%;
  font-size: 10px;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: 0.2s;
}

.bw-btn-skip:hover {
  border-color: #ffffff;
  background: #222;
}

/* Кроссбар громкости */
.bw-volume-container {
  display: flex;
  align-items: center;
  gap: 8px;
}

.bw-vol-icon {
  font-size: 11px;
  color: #888;
}

.bw-volume-bar {
  width: 55px;
  height: 4px;
  background: #222;
  border-radius: 2px;
  cursor: pointer;
  position: relative;
}

.bw-volume-fill {
  height: 100%;
  width: 100%; /* По умолчанию 100% громкости */
  background: #888;
  transition: background 0.2s;
}

.bw-volume-bar:hover .bw-volume-fill {
  background: #ffffff;
}

/* --- СПИСОК ТРЕКОВ --- */
.bw-tracks-container {
  display: flex;
  flex-direction: column;
  gap: 5px;
  max-height: 160px;
  overflow-y: auto;
  padding-right: 5px;
}

/* Кастомный скроллбар */
.bw-tracks-container::-webkit-scrollbar { width: 4px; }
.bw-tracks-container::-webkit-scrollbar-track { background: #0d0d0d; }
.bw-tracks-container::-webkit-scrollbar-thumb { background: #444; }

.bw-track {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 10px;
  background: #141414;
  border: 1px solid #1a1a1a;
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.bw-track:hover { background: #222; border-color: #333; }
.bw-track.active { background: #ffffff; color: #000000; border-color: #ffffff; }
.bw-track.active .bw-track-artist { color: #444444; }

.bw-track-info { display: flex; flex-direction: column; overflow: hidden; }
.bw-track-name { font-size: 12px; font-weight: bold; }
.bw-track-artist { font-size: 10px; color: #777; margin-top: 2px; }
.bw-track-icon { font-size: 10px; }
</style>

<div class="bw-multi-wrapper">

  <!-- ================= ПЛЕЙЛИСТ 1 ================= -->
  <div class="bw-playlist-card">
    <audio preload="none"></audio>
   
    <div class="bw-player-header">
      <div class="bw-playlist-title">Playlist 01 / A > A</div>
      <div class="bw-now-playing-title">Выберите трек</div>
      <div class="bw-now-playing-artist">---</div>
     
      <!-- Кроссбар прогресса трека -->
      <div class="bw-timeline-row">
        <div class="bw-progress-bar"><div class="bw-progress-fill"></div></div>
        <div class="bw-time">00:00 / 00:00</div>
      </div>

      <!-- Кнопки управления и Кроссбар громкости -->
      <div class="bw-controls-row">
        <div class="bw-main-btns">
          <button class="bw-btn-skip bw-prev">◄◄</button>
          <button class="bw-btn-play">▶</button>
          <button class="bw-btn-skip bw-next">►►</button>
        </div>
        <div class="bw-volume-container">
          <span class="bw-vol-icon">VOL</span>
          <div class="bw-volume-bar"><div class="bw-volume-fill"></div></div>
        </div>
      </div>
    </div>

    <!-- СПИСОК ПЕСЕН 1 -->
    <div class="bw-tracks-container">
      <div class="bw-track" data-src="https://audio.jukehost.co.uk/019fa036-a7a8-7074-a99c-cff680d7cd4f" data-title="Długość dźwięku samotności" data-artist="Myslovitz">
        <div class="bw-track-info">
          <span class="bw-track-name">Długość dźwięku samotności</span>
          <span class="bw-track-artist">Myslovitz</span>
        </div>
        <span class="bw-track-icon">▶</span>
      </div>
      <div class="bw-track" data-src="https://audio.jukehost.co.uk/019fa036-a5df-72d5-a665-047e9eb10ad9" data-title="ПММЛ" data-artist="Земфира">
        <div class="bw-track-info">
          <span class="bw-track-name">ПММЛ</span>
          <span class="bw-track-artist">Земфира</span>
        </div>
        <span class="bw-track-icon">▶</span>
      </div>
<div class="bw-track" data-src="https://audio.jukehost.co.uk/019fa036-a761-706d-bc31-8cc4ede4b62f" data-title="High And Dry" data-artist="Radiohead">
        <div class="bw-track-info">
          <span class="bw-track-name">High And Dry</span>
          <span class="bw-track-artist">Radiohead</span>
        </div>
        <span class="bw-track-icon">▶</span>
      </div>
<div class="bw-track" data-src="https://audio.jukehost.co.uk/019fa04e-3776-7369-b2f7-9e8027239d48" data-title="All Apologies" data-artist="Nirvana">
        <div class="bw-track-info">
          <span class="bw-track-name">All Apologies</span>
          <span class="bw-track-artist">Nirvana</span>
        </div>
        <span class="bw-track-icon">▶</span>
      </div>
    </div>
  </div>

  <!-- ================= ПЛЕЙЛИСТ 2 ================= -->
  <div class="bw-playlist-card">
    <audio preload="none"></audio>
   
    <div class="bw-player-header">
      <div class="bw-playlist-title">Playlist 02 / Author > A</div>
      <div class="bw-now-playing-title">Выберите трек</div>
      <div class="bw-now-playing-artist">---</div>
     
      <!-- Кроссбар прогресса трека -->
      <div class="bw-timeline-row">
        <div class="bw-progress-bar"><div class="bw-progress-fill"></div></div>
        <div class="bw-time">00:00 / 00:00</div>
      </div>

      <!-- Кнопки управления и Кроссбар громкости -->
      <div class="bw-controls-row">
        <div class="bw-main-btns">
          <button class="bw-btn-skip bw-prev">◄◄</button>
          <button class="bw-btn-play">▶</button>
          <button class="bw-btn-skip bw-next">►►</button>
        </div>
        <div class="bw-volume-container">
          <span class="bw-vol-icon">VOL</span>
          <div class="bw-volume-bar"><div class="bw-volume-fill"></div></div>
        </div>
      </div>
    </div>

    <!-- СПИСОК ПЕСЕН 2 -->
    <div class="bw-tracks-container">
      <div class="bw-track" data-src="https://audio.jukehost.co.uk/019fa036-a657-73aa-acf9-569553932215" data-title="Tea Errors" data-artist="Jack Stauber">
        <div class="bw-track-info">
          <span class="bw-track-name">Tea Errors</span>
          <span class="bw-track-artist">Jack Stauber</span>
        </div>
        <span class="bw-track-icon">▶</span>
      </div>
      <div class="bw-track" data-src="https://audio.jukehost.co.uk/019fa036-a4d6-7304-b50c-cb93f46d763d" data-title="Alien Blues" data-artist="Vandabar">
        <div class="bw-track-info">
          <span class="bw-track-name">Alien Blues</span>
          <span class="bw-track-artist">Vandabar</span>
        </div>
        <span class="bw-track-icon">▶</span>
      </div>
    <div class="bw-track" data-src="https://audio.jukehost.co.uk/019fa036-aea8-7050-a749-e93f3898aade" data-title="Beach Life-in-Death" data-artist="Car Seat Headrest">
        <div class="bw-track-info">
          <span class="bw-track-name">Beach Life-in-Death</span>
          <span class="bw-track-artist">Car Seat Headrest</span>
        </div>
        <span class="bw-track-icon">▶</span>
      </div>
    </div>
  </div>

</div>

<script>
(function initMyBBPlaylists() {
  const cards = document.querySelectorAll('.bw-playlist-card');
  const globalAudios = [];

  // Форматирование времени
  function formatTime(seconds) {
    if (isNaN(seconds) || !isFinite(seconds)) return "00:00";
    const m = Math.floor(seconds / 60);
    const s = Math.floor(seconds % 60);
    return (m < 10 ? '0' : '') + m + ':' + (s < 10 ? '0' : '') + s;
  }

  cards.forEach(card => {
    const audio = card.querySelector('audio');
    globalAudios.push(audio);
   
    // Элементы интерфейса
    const playBtn = card.querySelector('.bw-btn-play');
    const prevBtn = card.querySelector('.bw-prev');
    const nextBtn = card.querySelector('.bw-next');
    const titleEl = card.querySelector('.bw-now-playing-title');
    const artistEl = card.querySelector('.bw-now-playing-artist');
   
    // Кроссбары
    const progressFill = card.querySelector('.bw-progress-fill');
    const progressBar = card.querySelector('.bw-progress-bar');
    const volBar = card.querySelector('.bw-volume-bar');
    const volFill = card.querySelector('.bw-volume-fill');
    const timeDisplay = card.querySelector('.bw-time');
   
    const tracks = card.querySelectorAll('.bw-track');
    let currentIndex = 0;

    // Загрузка трека
    function loadTrack(index, playAfterLoad = false) {
      if (tracks.length === 0) return;
      currentIndex = index;
      const t = tracks[index];
     
      tracks.forEach(tr => {
        tr.classList.remove('active');
        tr.querySelector('.bw-track-icon').textContent = '▶';
      });
      t.classList.add('active');
     
      const src = t.getAttribute('data-src');
      titleEl.textContent = t.getAttribute('data-title');
      artistEl.textContent = t.getAttribute('data-artist');

      if (audio.src !== src) {
        audio.src = src;
        audio.load();
      }

      if (playAfterLoad) playCurrent();
    }

    // Логика проигрывания с глушением остальных блоков
    function playCurrent() {
      globalAudios.forEach(a => { if (a !== audio && !a.paused) a.pause(); });
      let playPromise = audio.play();
      if (playPromise !== undefined) {
        playPromise.catch(() => console.log("Браузер ожидает взаимодействия с пользователем."));
      }
    }

    loadTrack(0, false);

    // Клик по списку
    tracks.forEach((track, index) => {
      track.addEventListener('click', () => {
        if (currentIndex === index) {
          audio.paused ? playCurrent() : audio.pause();
        } else {
          loadTrack(index, true);
        }
      });
    });

    // Центральные кнопки управления
    playBtn.addEventListener('click', () => {
      audio.paused ? playCurrent() : audio.pause();
    });

    prevBtn.addEventListener('click', () => {
      let newIndex = currentIndex - 1;
      if (newIndex < 0) newIndex = tracks.length - 1;
      loadTrack(newIndex, true);
    });

    nextBtn.addEventListener('click', () => {
      let newIndex = currentIndex + 1;
      if (newIndex >= tracks.length) newIndex = 0;
      loadTrack(newIndex, true);
    });

    // Смена иконок
    audio.addEventListener('play', () => {
      playBtn.textContent = '❚❚';
      if(tracks[currentIndex]) tracks[currentIndex].querySelector('.bw-track-icon').textContent = '❚❚';
    });

    audio.addEventListener('pause', () => {
      playBtn.textContent = '▶';
      if(tracks[currentIndex]) tracks[currentIndex].querySelector('.bw-track-icon').textContent = '▶';
    });

    // Кроссбар прогресса (Таймлайн)
    audio.addEventListener('timeupdate', () => {
      if (audio.duration) {
        const percent = (audio.currentTime / audio.duration) * 100;
        progressFill.style.width = percent + '%';
        timeDisplay.textContent = formatTime(audio.currentTime) + ' / ' + formatTime(audio.duration);
      }
    });

    progressBar.addEventListener('click', (e) => {
      if (audio.duration) {
        audio.currentTime = (e.offsetX / progressBar.clientWidth) * audio.duration;
      }
    });

    // Кроссбар громкости
    volBar.addEventListener('click', (e) => {
      const width = volBar.clientWidth;
      let clickX = e.offsetX;
      if (clickX < 0) clickX = 0;
      if (clickX > width) clickX = width;
     
      const volume = clickX / width;
      audio.volume = volume;
      volFill.style.width = (volume * 100) + '%';
    });

    // Авто-переключение на следующий трек
    audio.addEventListener('ended', () => {
      let newIndex = currentIndex + 1;
      if (newIndex >= tracks.length) newIndex = 0;
      loadTrack(newIndex, true);
    });
  });
})();
</script>[/html]

+7

6

4.06.2025

Университет постепенно пустел. Один за другим студенты собирали свои вещи и спешили отправиться прочь. Адриан видел, как медленно комната — его нынешняя обитель — теряет свои краски и жизнь. Вещи соседей исчезали постепенно. Сперва пропал уютный календарик, с полок исчезли фотографии. Потом начали пустеть шкафы и тумбочки. В конце концов не осталось ничего, кроме почти стерильной тишины. Немногочисленные вещи Арье были убраны от чужих глаз. Даже серебристая статуэтка льва больше не радовала взгляд, спрятанная от посторонних.

Если не знать, могло показаться, что эта комната на лето осталась нежилой, составляя компанию множеству таких же одиноких комнатушек. И, если честно, поляку и самому начинало так казаться. Сидя на своей кровати, раз за разом выводя в записной книжке одни и те же буквы одного и того же плана на день, он начинал думать, что сошел с ума.

1. Завтрак
2. Утренняя разминка
3. Библиотека
4. Отработка занятий
5. Обед
6. Помощь в оранжерее/деканате
7. Тренажерный зал
8. Ужин
9. Библиотека
10. Душ
11. Сон

Осталось приписать время — и получится классический день его жизни. В идеале, конечно, он бы всё перевернул... в том идеале, который был у него полгода назад. Для нынешнего же ему определенно не хватало компании. Ощущения, что он всё ещё существует. Сейчас его дарили лишь такие же одинокие души вроде Селины да оставшийся на лето персонал.

Идеальный день... Смешно. Когда он думал об этом, губы его кривились, и он вдруг понимал, что не может позволить себе более "идеального" расписания, чем нынешнее, когда он приходил в эту комнату, не оглядывался по сторонам и просто падал лицом в постель, проваливаясь в тревожную дрему.

Ему нужно было стать лучше. Глобальная цель, которую он дробил на мелкие задачи: нагнать программу по учебе и закрыть все долги, привести себя в надлежащую физическую форму, а главное — жестким ластиком стереть следы своих старых ошибок.

Возьми сто миллилитров дисциплины, добавь двадцать грамм дисциплины, смешай с дисциплиной — вот рецепт, который придумал для себя Арье. Получается горько и отключает на раз. А он смеется и говорит, что так даже лучше.

Отредактировано Adrian Elita-Lichtenberg (28-07-2026 14:57:07)

+3

7

1.01.2026

О планах на лето он задумался ещё под Новый год. Почему-то ему казалось, что чем раньше он это сделает, тем серьёзнее подойдёт к вопросу. Наивно. Он словно верил, что сможет управлять событиями, если зафиксирует их на бумаге. И тогда больше не произойдёт ничего, что нарушит привычный уклад его жизни.

Он слышал, как в соседнем номере отеля пьяная компания радостно ликует, встречая смену цифры в календаре. Несколько раз он смотрел на тёмный экран телефона и будто надеялся, что сейчас получит какое-нибудь дурацкое сообщение.

Ничего. И это ничего он создал своими руками.

И мог бы оставить его таким же «ничем», просто глядя в белый лист.

Первым пунктом стало короткое: «Вернуться домой». Разговоры с Гленном, как бы смешно это ни было, не раз возвращали его в прошлое, и, нужно признать, Адриан скучал по всему тому, что оставил позади. Альбом с музыкой о воспоминаниях он наверняка назвал бы "Bittersweet". Купить билеты, найти отель — всё это не было бы сложным. Он думал, что легко затерялся бы в толпе, что ему больше не составило бы труда просто наблюдать со стороны. И снова исчезнуть.

Вторым пунктом было наконец свозить Люси к ветеринару... Главное — найти её на заброшенных территориях Фасги. Но такую задачу он поставил себе ещё весной, а значит, к лету обязательно смог бы позаботиться о ней получше — по крайней мере, так твердили чернила, впитавшиеся в бумагу.

Третье... Адриан долго думал. Его мысли и желания держали оборону друг против друга, и от грохота их столкновений содрогался скелет. «Нужно поговорить с Гленном о переезде в общую комнату». Он вписал это почти не глядя. Ещё не представляя, где и как поднимет этот разговор. Не представляя и того, как собирается жить наедине со своей родственной душой.

Слишком много пятен осталось не стёртыми. И слишком много появлялось новых.

Адриан сжал пальцы. Закрыл записную книжку. Отодвинул её. И откинулся назад.

Do diabła...

Отредактировано Adrian Elita-Lichtenberg (28-07-2026 15:39:38)

+3

8

Попытки в плашки, которые пока что никуда не пошли:
https://upforme.ru/uploads/001c/82/f2/79/786145.png
https://upforme.ru/uploads/001c/82/f2/79/648583.png

Отредактировано Adrian Elita-Lichtenberg (28-07-2026 15:58:22)

+5

9

12.2025

"Откуда у тебя эти журналы?!"
"Зачем тебе эта фотография?"
Их интонации всегда звучали по-разному, но несли совершенно одну и ту же суть. Одних только воспоминаний об этих голосах хватало, чтобы в груди болезненно заныло. И по телу разливалось тягучее отвращение к себе.
Пальцы дрожали.
"Сожги их. Просто возьми и сожги их", — требовал внутренний голос. Множество снимков, что прежде были укромно упрятаны в конверт, пропихнутый в матрас, теперь лежали перед Арье как доказательство собственной греховности. Никакая это не помощь. И никакой Господь не мог спасти его от демонов, живущих внутри.

День за днем он собирает снимки, переводит их на бумагу, теперь — тщательно стирает все цифровые следы их присутствия на устройствах. Он хранит их поближе к подушке. Иногда бессонной ночью наблюдает, как вздымается грудь Валентайна, касается пальцами конверта и пытается представить текстуру чужого тела. Его тепло. Эту крошечную иллюзию обладания, помогающую хотя бы ненадолго заглушить тягостную потребность.

Вкусив однажды запретный плод, Адриан знает, что будет искать возможности впиться в него зубами всю оставшуюся жизнь.

А пока он перебьется суррогатами.

В комнате тихо. Соседи не вернутся до утра, у Гленна — тренировка. Время высчитано идеально. И трясущиеся пальцы могут тщательно оглаживать снимки.

Все начинается невинно. Все всегда начинается невинно. Разожженные благовония, приглушенный свет и эти фотографии — почти ритуал.

Адриан думает о прогулке по лимонной роще. Откуда-то издали веет соленым йодированным ароматом моря. Солнечный свет дробится и пятнами игриво пляшет по их коже сквозь шелестящую листву, и Гленн стирает со лба капельки пота — точно так, как делает он на одном из снимков. На щеках его играет красивый румянец, а сам он, пришелец из сырой промозглой Британии, отчаянно пытается спрятаться от палящих лучей. Он бы выглядел мило в соломенной шляпе. Адриан не сомневается: он пробовал добавить ее к одному из снимков ранее. А еще от пота одежда липнет к его телу, подчеркивая каждый изгиб.

Адриан виновато прикусывает губу и сжимает в пальцах простыню.

Взгляд цепляет один из кадров, на которых Валентайн остается без одежды. Поляк хорошо знает все его черты, но снова и снова пересматривает с любовным трепетом, не сдерживая смущения и нежности.

Воображение, точно дикий зверь, больше не слушалось. Он представляет, как снимает белую мокрую футболку с Гленна, как вжимает его в кору дерева. Лимоны покачиваются от порыва ветра, подобно китайским фонарикам. И от легкого холодка соски Валентайна твердеют.

Выдох — более резкий, чем положено, а внизу живота тянет жаром. Адриан закусывает согнутый указательный палец, второй рукой оглаживает снимки. Он ощущает, как накатывает возбуждение, как твердеет член, упираясь в ткань одежды.

"Wybacz mi, Boże..."

Адриан жмурится и медленно, цепляясь за одежду, опускает ладонь вниз. Он робко запускает ее под свою рубашку. Мелко вздрагивает. Рука Гленна больше, теплее. Предательски ясно он чувствует, что скучает по его прикосновениям, когда пытается имитировать движения фамильяра.

"Ojcze nasz, któryś jest w niebie..."

Он наказывает себя, не давая себе коснуться собственного напряженного полового органа. Бугорок явственно выступает на его штанах,  когда он склоняется и носом утыкается в один из снимков. В такой близости он может обмануть себя, он может вообразить, как их глаза пересекаются.

Как запах Гленна смешивается с легким цитрусовым ароматом, с морским прибоем. Он может представить вкус его губ и ощущение тока, которое проскальзывает при каждом прикосновении.

Ткань сковывает, делает больно, одежда кажется лишней, она лишь противно трется о чувствительную напряженную кожу.

Наконец поляк подается назад и касается пальцами бугра. Скользит по нему. И жалко скулит.

"... święć się imię Twoje, przyjdź Królestwo Twoje..."

Он жмурится. В уголках глаз скапливаются слезы. Наконец расстегивает ширинку и обхватывает ладонью разгоряченный ствол.

"... bądź wola Twoja, jako w niebie tak i na ziemi..."

Он представляет, как член тонет во рту Валентайна. Как его обволакивает влажное тепло. Как тело поддаётся ласкам.

Мысли плавятся.

"... Chleba naszego powszedniego daj nam dzisiaj..."

Все всегда начинается невинно. И никогда так... не заканчивается.

"... I odpuść nam nasze winy, jako i my odpuszczamy naszym winowajcom..."

Вдоль позвоночника стекает капелька пота.

Адриан не замечает, как сжимает в руке один из снимков, как начинает совершать фрикции. Вся реальность — иллюзия, и только образы в голове кажутся самыми что ни на есть действительными.

"... I nie wódź nas na pokuszenie..."

Этот взгляд снизу вверх.  Это разгоряченное лицо.

"... ale nas zbaw ode złego..."

Арье едва успевает закрыть себе рот, прежде чем со стоном кончить, пачкая кровать и снимки своей спермой.

Он перегибается пополам, будто сломанная ветвь. И тяжело дышит, наслаждаясь расцветающей в груди короткой эйфорией.

Той, платой за которую будет страх. Тот самый, с которым он скоро соберёт все испачканные фотографии и сожжет их в лесу.

"... Amen".

+9

10

https://upforme.ru/uploads/001c/82/f2/79/706349.png

+7

11

[html]<style>
.gs-inv{
  width:100%;
  max-width:640px;
  margin:0 auto;
  box-sizing:border-box;
  font-family:Arial,Helvetica,sans-serif;
  background:#141414;
  border:1px solid #333;
  border-radius:8px;
  padding:16px;
  color:#ddd;
}
.gs-inv *{box-sizing:border-box;}
.gs-inv-title{
  text-align:center;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:3px;
  color:#777;
  margin:0 0 12px;
}
.gs-inv-grid{
  display:grid;
  grid-template-columns:repeat(8,1fr);
  gap:6px;
}
.gs-inv-cell{
  position:relative;
  aspect-ratio:1/1;
  width:100%;
  background:#1c1c1c;
  border:1px solid #3a3a3a;
  border-radius:4px;
  box-shadow:inset 0 0 4px rgba(0,0,0,.6);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  transition:border-color .15s,background .15s;
}
.gs-inv-cell.has-item{cursor:pointer;}
.gs-inv-cell.has-item:hover,
.gs-inv-cell.is-active{
  border-color:#ccc;
  background:#262626;
}
.gs-inv-cell img{
  width:100%;
  height:100%;
  object-fit:contain;
  padding:5px;
  pointer-events:none;
}
.gs-inv-info{
  margin-top:12px;
  border:1px solid #333;
  border-radius:4px;
  background:#181818;
  padding:10px 12px;
}
.gs-inv-info-name{
  font-size:13px;
  font-weight:bold;
  text-transform:uppercase;
  letter-spacing:1px;
  color:#eee;
  margin-bottom:6px;
}
.gs-inv-info-desc{
  font-size:13px;
  line-height:1.5;
  color:#aaa;
  max-height:110px;
  overflow-y:auto;
  padding-right:8px;
}
.gs-inv-info-desc::-webkit-scrollbar{width:6px;}
.gs-inv-info-desc::-webkit-scrollbar-track{background:#111;}
.gs-inv-info-desc::-webkit-scrollbar-thumb{background:#555;border-radius:3px;}
@media (max-width:480px){
  .gs-inv{padding:10px;}
  .gs-inv-grid{gap:4px;}
  .gs-inv-info-desc{max-height:90px;font-size:12px;}
}
</style>

<div class="gs-inv">
  <p class="gs-inv-title">Инвентарь</p>
  <div class="gs-inv-grid" id="gsInvGrid"></div>
  <div class="gs-inv-info">
    <div class="gs-inv-info-name" id="gsInvName">Наведите или нажмите на предмет</div>
    <div class="gs-inv-info-desc" id="gsInvDesc"></div>
  </div>
</div>

<script>
(function(){
  /* =====================================================================
     СПИСОК ПРЕДМЕТОВ
     Чтобы добавить новый предмет — скопируйте один блок { ... } целиком
     и вставьте его перед закрывающей ] массива (не забудьте запятую
     после предыдущего блока). Ничего больше в коде трогать не нужно.

     img  — прямая ссылка на изображение предмета
     name — название предмета (покажется жирным сверху)
     desc — описание, любой длины (при переполнении появится скроллбар)

     Порядок предметов = порядок ячеек слева направо, сверху вниз.
     Ячеек всего 40 (8 столбцов × 5 строк). Лишние предметы свыше
     40-го просто не поместятся — при необходимости удалите старые.
     ===================================================================== */
  var items = [
{
      img:  "https://upforme.ru/uploads/001c/82/f2/79/406351.png",
      name: "Записная книжка",
      desc: "Потрёпанная записная книжка в бордовой кожаной обложке, запертая на небольшой замок. Её страницы заполнены заметками, наблюдениями и разрозненными мыслями. Из-за проблем с памятью Адриан привык доверять бумаге всё, что считает важным и боится забыть."
    }, 
{
      img:  "https://upforme.ru/uploads/001c/82/f2/79/136092.png",
      name: "Ручка и карандаш",
      desc: "Обычные ручка и карандаш, постоянно используемые для заметок, пометок и быстрых набросков."
    },
   {
      img:  "https://upforme.ru/uploads/001c/82/f2/79/758940.png",
      name: "Фотография",
      desc: "На первый взгляд — испорченная фотография с серым изображением. Под действием определённых чар скрытый снимок проявляется, раскрывая запечатлённый на нём момент."
    },   
{
      img:  "https://upforme.ru/uploads/001c/82/f2/79/578702.png",
      name: "Скрытая камера",
      desc: "Миниатюрное устройство скрытого наблюдения, замаскированное под обычную пуговицу. Записывает видео и звук на карту памяти microSD, работает от встроенного аккумулятора. Благодаря небольшим размерам обычно незаметно закреплена на одежде, заменяя одну из пуговиц."
    },
    {
      img:  "https://upforme.ru/uploads/001c/82/f2/79/891645.png",
      name: "GSM-рекордер",
      desc: "Устройство скрытого аудиопрослушивания с функциями удалённого прослушивания и автономной записи звука. Автоматически сохраняет разговоры в память устройства, активируясь при обнаружении голоса. Позволяет получить доступ к записям позднее или контролировать происходящее в режиме реального времени через мобильную сеть."
    },
{
      img:  "https://upforme.ru/uploads/001c/82/f2/79/453264.png",
      name: "Зелье здоровья",
      desc: "Небольшая колба с восстанавливающим эликсиром. Частично восполняет запас здоровья и ускоряет регенерацию повреждений."
    }
    // добавляйте новые { ... } сюда
  ];

  var TOTAL = 40; // 8 x 5, менять не нужно
  var grid = document.getElementById("gsInvGrid");
  var nameEl = document.getElementById("gsInvName");
  var descEl = document.getElementById("gsInvDesc");
  var activeCell = null;

  function showInfo(item, cell){
    nameEl.textContent = item.name;
    descEl.textContent = item.desc;
    if (activeCell) activeCell.classList.remove("is-active");
    activeCell = cell;
    cell.classList.add("is-active");
  }

  for (var i = 0; i < TOTAL; i++){
    (function(i){
      var cell = document.createElement("div");
      cell.className = "gs-inv-cell";
      var item = items[i];
      if (item){
        cell.classList.add("has-item");
        cell.tabIndex = 0;
        var img = document.createElement("img");
        img.src = item.img;
        img.alt = item.name;
        cell.appendChild(img);
        var show = function(){ showInfo(item, cell); };
        cell.addEventListener("mouseenter", show); // наведение (ПК)
        cell.addEventListener("click", show);       // нажатие (телефон/ПК)
        cell.addEventListener("focus", show);        // навигация с клавиатуры
      }
      grid.appendChild(cell);
    })(i);
  }
})();
</script>
[/html]

Отредактировано Adrian Elita-Lichtenberg (26-08-2026 22:23:31)

+4

12

https://upforme.ru/uploads/001c/82/f2/79/475251.png

This warzone of my soul
I underestimate

+6

13

https://upforme.ru/uploads/001c/82/f2/79/903663.png

+5

14

Решили все-таки не пропускать Хэллоуин, так чтоо

https://upforme.ru/uploads/001c/82/f2/79/412997.png

+5


Вы здесь » Kindred Spirits » Блоги » Монстров нет. Кроме одного, что у меня в шкафу.


Рейтинг форумов | Создать форум бесплатно