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

Kindred Spirits

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

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


Вы здесь » Kindred Spirits » Блоги » Пером по воде


Пером по воде

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

1

А тут что-то будет. Точно будет!
[hideprofile]

+5

2

[html]
<script src="https://feather-tail.github.io/MyBB-scripts-bundle/js/theme-switcher/theme-iframe.js"></script>
<link rel="stylesheet" href="https://forumstatic.ru/files/001c/82/f2/26798.css">

<div class="rel-root">
  <input type="checkbox" id="rel-filter-toggle" />

  <input type="radio" name="rel-tab" id="rel-tab-all" checked />
  <input type="radio" name="rel-tab" id="rel-tab-friend" />
  <input type="radio" name="rel-tab" id="rel-tab-romance" />
  <input type="radio" name="rel-tab" id="rel-tab-family" />
  <input type="radio" name="rel-tab" id="rel-tab-neutral" />
  <input type="radio" name="rel-tab" id="rel-tab-conflict" />
  <input type="radio" name="rel-tab" id="rel-tab-other" />

  <input type="radio" name="rel-character" id="rel-char-1" checked />
  <input type="radio" name="rel-character" id="rel-char-2" />
  <input type="radio" name="rel-character" id="rel-char-3" />
  <input type="radio" name="rel-character" id="rel-char-4" />
  <input type="radio" name="rel-character" id="rel-char-5" />
  <input type="radio" name="rel-character" id="rel-char-6" />
  <input type="radio" name="rel-character" id="rel-char-7" />
  <input type="radio" name="rel-character" id="rel-char-8" />
  <input type="radio" name="rel-character" id="rel-char-9" />
  <input type="radio" name="rel-character" id="rel-char-10" />
  <input type="radio" name="rel-character" id="rel-char-11" />
  <input type="radio" name="rel-character" id="rel-char-12" />
  <input type="radio" name="rel-character" id="rel-char-13" />
  <input type="radio" name="rel-character" id="rel-char-14" />
  <input type="radio" name="rel-character" id="rel-char-15" />
  <input type="radio" name="rel-character" id="rel-char-16" />
  <input type="radio" name="rel-character" id="rel-char-17" />
  <input type="radio" name="rel-character" id="rel-char-18" />
  <input type="radio" name="rel-character" id="rel-char-19" />
  <input type="radio" name="rel-character" id="rel-char-20" />

  <label class="rel-filter-overlay" for="rel-filter-toggle"></label>

  <div class="rel-header">
    <div class="rel-header-copy">
      <div class="rel-title-kicker">relationship</div>
      <div class="rel-title">Отношения персонажа</div>
    </div>
  </div>

  <div class="rel-layout">
    <aside class="rel-sidebar">
      <div class="rel-filter">
        <label class="rel-filter-button" for="rel-filter-toggle">
          <i class="fa-solid fa-sliders"></i>
          <span>Фильтр связи</span>
        </label>
        <div class="rel-filter-panel">
          <label class="rel-filter-option" for="rel-tab-all">
            <i class="fa-solid fa-layer-group"></i><span>Все</span>
          </label>
          <label class="rel-filter-option" for="rel-tab-friend">
            <i class="fa-solid fa-user-group"></i><span>Дружба</span>
          </label>
          <label class="rel-filter-option" for="rel-tab-romance">
            <i class="fa-solid fa-heart"></i><span>Романтика</span>
          </label>
          <label class="rel-filter-option" for="rel-tab-family">
            <i class="fa-solid fa-people-roof"></i><span>Семья</span>
          </label>
          <label class="rel-filter-option" for="rel-tab-neutral">
            <i class="fa-solid fa-user"></i><span>Нейтральные</span>
          </label>
          <label class="rel-filter-option" for="rel-tab-conflict">
            <i class="fa-solid fa-bolt"></i><span>Конфликт</span>
          </label>
          <label class="rel-filter-option" for="rel-tab-other">
            <i class="fa-solid fa-ellipsis"></i><span>Прочее</span>
          </label>
        </div>
      </div>

      <div class="rel-people-wrap">
        <div class="rel-people">
          <label class="rel-item rel-cat-romance" for="rel-char-1">
            <div class="rel-item-avatar"><img src="https://upforme.ru/uploads/001c/82/f2/7/386726.jpg"></div>
            <div class="rel-item-text">
              <div class="rel-item-name">Эмилия Найтрей</div>
              <div class="rel-item-tagline">душа · любовь</div>
            </div>
          </label>

          <label class="rel-item rel-cat-friend" for="rel-char-2">
            <div class="rel-item-avatar">AS</div>
            <div class="rel-item-text">
              <div class="rel-item-name">Аарон Сэлмон</div>
              <div class="rel-item-tagline">сосед · друг</div>
            </div>
          </label>

          <label class="rel-item rel-cat-friend" for="rel-char-3">
            <div class="rel-item-avatar">ES</div>
            <div class="rel-item-text">
              <div class="rel-item-name">Эйджи Салливан</div>
              <div class="rel-item-tagline">сосед · друг</div>
            </div>
          </label>

          <label class="rel-item rel-cat-friend" for="rel-char-4">
            <div class="rel-item-avatar">AA</div>
            <div class="rel-item-text">
              <div class="rel-item-name">Алан Айрис</div>
              <div class="rel-item-tagline">сосед · друг</div>
            </div>
          </label>

          <label class="rel-item rel-cat-conflict" for="rel-char-5">
            <div class="rel-item-avatar">AO</div>
            <div class="rel-item-text">
              <div class="rel-item-name">Амара Ортис</div>
              <div class="rel-item-tagline">студентка · напряжение</div>
            </div>
          </label>

          <label class="rel-item rel-cat-neutral" for="rel-char-6">
            <div class="rel-item-avatar">T</div>
            <div class="rel-item-text">
              <div class="rel-item-name">Трисс</div>
              <div class="rel-item-tagline">студентка · знакомство</div>
            </div>
          </label>

          <label class="rel-item rel-cat-neutral" for="rel-char-7">
            <div class="rel-item-avatar">M</div>
            <div class="rel-item-text">
              <div class="rel-item-name">Мередит</div>
              <div class="rel-item-tagline">студентка · знакомство</div>
            </div>
          </label>

          <label class="rel-item rel-cat-conflict" for="rel-char-8">
           <div class="rel-item-avatar">S</div>
              <div class="rel-item-text">
              <div class="rel-item-name">Стэнли Майлс</div>
              <div class="rel-item-tagline">враг</div>
            </div>
          </label>

          <label class="rel-item rel-cat-conflict" for="rel-char-9">
           <div class="rel-item-avatar">M</div>
              <div class="rel-item-text">
              <div class="rel-item-name">Мариса</div>
              <div class="rel-item-tagline">враг</div>
            </div>
          </label>
        </div>
      </div>
    </aside>

    <section class="rel-main">
      <div class="rel-main-inner">
        <article class="rel-card rel-card--1">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="background-image: url('https://upforme.ru/uploads/001c/82/f2/7/386726.jpg')"
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Эмилия Найтрей</div>
              <div class="rel-card-meta">душа · любовь · однокурсники</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--warm">моя мечта</span>
            </div>
          </header>

          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Она...</div>
              <p>
                Мия. Я так часто о тебе думаю с приставкой "любимая". За столь короткий срок мы уже успели пережить вместе невероятно много, и всё же меня не оставляет беспокойство из-за того, как долго ты думаешь над нашими отношениями. Это пугает меня куда больше чем все возможные проявления Скверны вместе взятые.
              </p>

              <div class="rel-block-title" style="margin-top: 6px">
                Ключевые мысли:
              </div>
              <ul class="rel-keylist">
                <li>
                  Познакомились в Библиотеке и сразу попали в неприятности.
                </li>
                <li>Теперь я знаю её страхи. А она - мои.</li>
                <li>Мы поцеловались!</li>
                <li>Она из Канады. Нужно подготовить свои лучшие шутки.</li>
                <li>Только Хэллоуина нам и не хватало! Но, быть может именно его и не хватало?</li>
                <li>Между нами такое напряжение и столько заботы, но по прежнему чего-то не хватает.</li>
                <li>Под каким предлогом ей предложить ещё раз сыграть в бутылочку?</li>
                <li>Стэн и не знает на что я готов ради тебя. Но узнает.</li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--2">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/222/fff');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Аарон Сэлмон</div>
              <div class="rel-card-meta">сосед · друг · однокурсник · фамильяр</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--warm">друг</span>
            </div>
          </header>

          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Друзья</div>
              <p>
                Нас поселили вместе и этот парень сразу мне понравился. Он
                сочетает в себе умение задавать вопросы когда надо, и молчать,
                когда мне требуется тишина.
              </p>

              <div class="rel-block-title" style="margin-top: 6px">
                Ключевые мысли:
              </div>
              <ul class="rel-keylist">
                <li>
                  Он не похож на того, кто любит приключения и всё же тот ещё
                  авантюрист.
                </li>
                <li>
                  Его фамилия - Сэлмон. Но почему он не превращается в лосося?
                </li>
                <li>
                  И так, мы целовались на дне рождения Мередит. Отвратительно. Надеюсь об этом будут вспоминать как можно реже.
                </li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--3">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/111/ddd');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Эйджи Салливан</div>
              <div class="rel-card-meta">сосед · друг · однокурсник · фамильяр</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--warm">друг</span>
            </div>
          </header>

          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Друзья</div>
              <p>
                Один из нашей четвёрки. Он куда спокойнее и рассудительнее
                Аарона. Быть может именно этого нам и не хватает.
              </p>

              <div class="rel-block-title" style="margin-top: 6px">Ключевые мысли:</div>
              <ul class="rel-keylist">
                <li>
                  Теперь мы вместе будем вспоминать, как нас пришибло дверью и каждый будет утверждать что принял удар за другого.
                </li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--4">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/333/faa');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Алан Айрис</div>
              <div class="rel-card-meta">сосед · друг · однокурсник · фамильяр</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--warm">друг</span>
            </div>
          </header>

          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Друзья</div>
              <p>Самый разговорчивый из всех. Мне это нравится. Но не смотря на эту разговорчивость по какой-то причине мы с ним общаемся меньше чем с Аланом и Эйджи.</p>

              <div class="rel-block-title" style="margin-top: 6px">Ключевые мысли:</div>
              <ul class="rel-keylist">
                <li>Alan. Wake up.</li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--5">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/fab/333');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Амара Ортис</div>
              <div class="rel-card-meta">
                студентка · напряжение · соседка Мии · ведьма
              </div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--warm">симпатия</span>
              <span class="rel-tag rel-tag--cold">вражда</span>
            </div>
          </header>
          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Соседки Мии</div>
              <p>
                Наше знакомство в спортзале оказалось слишком горячим. Хорошо, что Мия про это ничего не знает. Амара со мной флиртует и делает недвусмысленные намёки. И она умна. И быть может мы даже могли бы быть друзьями, но зачем ей нужно постоянно поддевать Мию? Это злит неимоверно.
              </p>
              <p>
               Ещё как будто она спасла мне жизнь. Честно говоря, иногда я думаю, что мы могли бы поладить, не будь она такой стервой.
              </p>
              <p>Но стоит отдать ей должное...</p>
              <div class="rel-block-title" style="margin-top: 6px">
                Ключевые мысли:
              </div>
              <ul class="rel-keylist">
                <li>
                  То и дело вспоминаются её слова: "Я не дружить с тобой хочу".
                  Забавно?
                </li>
                <li>
                  "Ещё поцелует". Откуда вообще столько самоуверенности?
                </li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--6">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/777/fff');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Трисс</div>
              <div class="rel-card-meta">соседка Мии · знакомая · ведьма</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--neutral">знакомая</span>
            </div>
          </header>
          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Соседки Мии</div>
              <p>
                Нельзя сказать, что мы с ней друзья или сколь-нибудь много общаемся, но она мне нравится. Хоть я и испытываю какую-то неловкость в её присутствии, потому что она-то наверняка знает всё о нас с Мией.
              </p>
              <div class="rel-block-title" style="margin-top: 6px">Ключевые мысли:</div>
              <ul class="rel-keylist">
                <li></li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--7">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/999/111');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Мередит</div>
              <div class="rel-card-meta">соседка Мии · знакомая · ведьма</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--neutral">знакомая</span>
            </div>
          </header>
          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Соседки Мии</div>
              <p>
                Одна из соседок Мии. Все считают её глупой (я в общем-то тоже), но интуиция подсказывает, что она не так проста.
              </p>
              <div class="rel-block-title" style="margin-top: 6px">Ключевые мысли:</div>
              <ul class="rel-keylist">
                <li>Блондинка, как она есть.</li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--8">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/999/111');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Стэн</div>
              <div class="rel-card-meta">враг · фамильяр · второкурсник</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--conflict">кто кого?</span>
            </div>
          </header>
          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Враги</div>
              <p>
                Стэн живёт в соседней комнате. Он мне никогда особо не нравился, но в день, когда он напал на Мию я понял, что наступит момент, когда одна жизнь оборвётся.
              </p>
              <div class="rel-block-title" style="margin-top: 6px">Ключевые мысли:</div>
              <ul class="rel-keylist">
                <li>Гиена в образе зверя. Гиена и по жизни. Абсолютно мерзкий тип, который плохо кончит.</li>
                <li>Кто его родители, что его не отчислили?</li>
              </ul>
            </div>
          </div>
        </article>

        <article class="rel-card rel-card--9">
          <header class="rel-card-header">
            <div
              class="rel-card-avatar"
              style="
                background-image: url('https://placehold.co/120x120/999/111');
              "
            ></div>
            <div class="rel-card-title-block">
              <div class="rel-card-name">Мариса</div>
              <div class="rel-card-meta">враг · ведьма · второкурсница</div>
            </div>
            <div class="rel-tags">
              <span class="rel-tag rel-tag--conflict">кто кого?</span>
            </div>
          </header>
          <div class="rel-body">
            <div class="rel-block">
              <div class="rel-block-title">Враги</div>
              <p>
                Мариса. Она как будто не так плоха, как Стэн. А может просто более труслива. Но не смотря на это договориться с ней не выйдет.
              </p>
              <div class="rel-block-title" style="margin-top: 6px">Ключевые мысли:</div>
              <ul class="rel-keylist">
                <li>Её дар - стихия огня. Я нахожу это забавным. Вода и пламя. Воздух и земля...</li>
              </ul>
            </div>
          </div>
        </article>

        <!-- слоты rel-card--10 ... rel-card--20 можно добавлять по мере надобности -->
      </div>
    </section>
  </div>
</div>
[/html]
[hideprofile]

+14

3

[html]
<link rel="stylesheet" href="https://forumstatic.ru/files/001c/82/f2/68445.css?v=1">
<script src="https://feather-tail.github.io/MyBB-scripts-bundle/js/theme-switcher/theme-iframe.js"></script>
<div class="ep-root" data-ep-root>
  <div class="ep-header">
    <div class="ep-header-copy">
      <div class="ep-title-kicker">chronology</div>
      <div class="ep-title">Эпизоды</div>
    </div>
    <div class="ep-search">
      <input type="text" class="ep-search-input" placeholder="Поиск по эпизодам..." data-ep-search />
      <span class="ep-search-icon"><i class="fa-solid fa-magnifying-glass"></i></span>
    </div>
  </div>

  <div class="ep-list" data-ep-list>
    <article class="ep-item" data-ep-item>
      <div class="ep-date">05.10.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=139" target="_blank" rel="nofollow">Кошмарные сны</a>
          </div>
          <div class="ep-participants" data-ep-participants>Эмилия Найтрей</div>
        </div>
        <div class="ep-desc"><p>Первый разговор, первые приключения и первые чувства - капельки воды, что начали стекаться в океан, преодолевая собственные страхи. Дурацкая книга, дурацкая заклинание... но я не жалею ни о чём из того, что там произошло. Ни о чём, кроме своего позорного бегства в конце.</p></div>
      </div>
    </article>

    <article class="ep-item" data-ep-item>
      <div class="ep-date">12.10.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=209" target="_blank" rel="nofollow">Zugzwang</a>
          </div>
          <div class="ep-participants" data-ep-participants>Эмилия Найтрей</div>
        </div>
        <div class="ep-desc"><p>Я бегал так, словно снова оказался в темнице из собственных кошмаров. Но на этот раз бежал не от гигантской змеи, а от собственных чувств к Мие. В конечном итоге я сдался сам себе, но и этот ход не вёл меня к победе. Белые начинают и выигрывают... не всегда.</p></div>
      </div>
    </article>

    <article class="ep-item" data-ep-item>
      <div class="ep-date">12.10.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=251" target="_blank" rel="nofollow">Ты и сила моя и слабость</a>
          </div>
          <div class="ep-participants" data-ep-participants>Эмилия Найтрей</div>
        </div>
        <div class="ep-desc"><p>Мия - моя ведьма. А я - её фамильяр. А ещё я влюблён в неё. И я её поцеловал. И что будет дальше?</p></div>
      </div>
    </article>

    <article class="ep-item" data-ep-item>
      <div class="ep-date">31.10.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=154" target="_blank" rel="nofollow">Ночь сорванных замков — Сердце Паноптикума</a>
          </div>
          <div class="ep-participants" data-ep-participants>Эмилия Найтрей</div>
        </div>
        <div class="ep-desc"><p>Этот Хэллоуин я запомню надолго. Именно тогда я столкнулся со смертью на столько близко, что её зловонное дыхание ещё долго мерещилось в темноте на моей шее. Психолог говорит, что это закалило меня и сделало сильным. А я считаю, что единственная польза заключается в нашем примирении с Мией. От всего остального я бы с радостью отказался и никогда не встречал это существо. "Сердце Паноптикума". Что, чёрт возьми, за Паноптикум?</p></div>
      </div>
    </article>

    <article class="ep-item" data-ep-item>
      <div class="ep-date">21.10.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=494" target="_blank" rel="nofollow">Колесо судьбы</a>
          </div>
          <div class="ep-participants" data-ep-participants>Эмилия Найтрей</div>
        </div>
        <div class="ep-desc"><p>День рождения Мередит. Это был потрясающий день в котором было много смеха, разговор и того, что подарило надежду и зажгло сердце.</p></div>
      </div>
    </article>

    <article class="ep-item" data-ep-item>
      <div class="ep-date">29.10.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=344" target="_blank" rel="nofollow">Глаза устремлённые в небо</a>
          </div>
          <div class="ep-participants" data-ep-participants>Эмилия Найтрей</div>
        </div>
        <div class="ep-desc"><p>Тогда я проделал большой путь, чтобы научиться управлять птичьим телом. Сейчас уже смешно вспоминать те дни, когда я притворялся перед Мией птицей. И до сих пор горько вспоминать тот её взгляд в бассейне и удар, после которого между нами словно пролегла трещина. К счастью, не надолго...</p></div>
      </div>
    </article>

    <article class="ep-item" data-ep-item>
      <div class="ep-date">01.11.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=493" target="_blank" rel="nofollow">Vita brevis</a>
          </div>
          <div class="ep-participants" data-ep-participants>Эмилия Найтрей</div>
        </div>
        <div class="ep-desc"><p>Ночь прошла, и наступило утро, а за ним и новый день. Разрушения и утраты — это то, что приносит боль, но вместе с тем и то, что способно объединить и напомнить — жизнь коротка.</p></div>
      </div>
    </article>

    <article class="ep-item" data-ep-item>
      <div class="ep-date">03.12.2025</div>
      <div class="ep-main">
        <div class="ep-line-1">
          <div class="ep-name" data-ep-name>
            <a href="https://kindredspirits.ru/viewtopic.php?id=283" target="_blank" rel="nofollow">Нам сказали просто осмотреть</a>
          </div>
          <div class="ep-participants" data-ep-participants>Сейбл Холливел</div>
        </div>
        <div class="ep-desc"><p>Что могло пойти не так на задании на котором нужно было только убедиться, что всё "чисто"? Да в общем-то всё...</p></div>
      </div>
    </article>
  </div>

  <div class="ep-empty" data-ep-empty>Ничего не найдено по этому запросу.</div>
</div>

<script>
  (function () {
    var root = document.querySelector('[data-ep-root]');
    if (!root) return;

    var input = root.querySelector('[data-ep-search]');
    var items = Array.prototype.slice.call(root.querySelectorAll('[data-ep-item]'));
    var empty = root.querySelector('[data-ep-empty]');

    if (!input || !items.length) return;

    function filterEpisodes() {
      var q = input.value.trim().toLowerCase();
      var anyVisible = false;

      items.forEach(function (item) {
        var nameEl = item.querySelector('[data-ep-name]');
        var partEl = item.querySelector('[data-ep-participants]');
        var dateEl = item.querySelector('.ep-date');
        var descEl = item.querySelector('.ep-desc');
        var name = nameEl ? nameEl.textContent.toLowerCase() : '';
        var parts = partEl ? partEl.textContent.toLowerCase() : '';
        var date = dateEl ? dateEl.textContent.toLowerCase() : '';
        var desc = descEl ? descEl.textContent.toLowerCase() : '';
        var match = !q || name.indexOf(q) !== -1 || parts.indexOf(q) !== -1 || date.indexOf(q) !== -1 || desc.indexOf(q) !== -1;

        item.style.display = match ? '' : 'grid';
        if (!match) item.style.display = 'none';
        if (match) anyVisible = true;
      });

      if (empty) empty.style.display = anyVisible ? 'none' : 'block';
    }

    input.addEventListener('input', filterEpisodes);
  })();
</script>

[/html]
[hideprofile]

+9

4

[html]
<script src="https://feather-tail.github.io/MyBB-scripts-bundle/js/theme-switcher/theme-iframe.js"></script>
<link rel="stylesheet" href="https://forumstatic.ru/files/001c/82/f2/29687.css">

<div class="ava-root" data-ava-root>
  <div class="ava-header">
    <div class="ava-header-copy">
      <div class="ava-title-kicker">avatar gallery</div>
      <div class="ava-title">Галерея аватаров</div>
    </div>
    <div class="ava-count" data-ava-count>0 аватаров</div>
  </div>

  <div class="ava-toolbar">
    <input
      class="ava-search"
      type="text"
      placeholder="Поиск по группе, комментарию или ссылке..."
      data-ava-search
    />
  </div>

  <div class="ava-groups" data-ava-groups></div>
  <div class="ava-empty" data-ava-empty>Пока в галерее нет аватаров.</div>
  <div class="ava-toast" data-ava-toast>Ссылка скопирована</div>
</div>

<script>
  (() => {
    const avatars = [
      {
        group: 'Эпизоды',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/716000.webp',
        comment: 'Vita Brevis',
      },
      {
        group: 'Повседневное',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/470168.jpg',
        comment: 'Рождественское настроение',
      },
      {
        group: 'Эпизоды',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/930524.jpg',
        comment: 'Нам сказали просто посмотреть',
      },
      {
        group: 'Эпизоды',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/23454.jpg',
        comment: 'Ночь сорванных замков - Сердце Паноптикума',
      },
      {
        group: 'Повседневное',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/152456.jpg',
        comment: 'Я её использовал? А где?',
      },
      {
        group: 'Повседневное',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/461272.jpg',
        comment: 'Зима-зима',
      },
      {
        group: 'Эпизоды',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/985423.webp',
        comment: 'Ты и сила моя и слабость. Кай - холодное сердце',
      },
      {
        group: 'Повседневное',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/625359.jpg',
        comment: 'Весна на сердце',
      },
      {
        group: 'Романтика',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/697213.jpg',
        comment: 'В твоих глазах...',
      },
      {
        group: 'Романтика',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/497722.jpg',
        comment: 'И у стены...',
      },
      {
        group: 'Романтика',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/966025.jpg',
        comment: 'И у стены...',
      },
      {
        group: 'Повседневное',
        image: 'https://upforme.ru/uploads/001c/82/f2/2/78376.jpg',
        comment: 'Дух скопы',
      },
    ];

    const settings = {
      openGroupsByDefault: false,
      fallbackGroup: 'Без группы',
    };

    document.querySelectorAll('[data-ava-root]').forEach((root) => {
      const groupsRoot = root.querySelector('[data-ava-groups]');
      const count = root.querySelector('[data-ava-count]');
      const empty = root.querySelector('[data-ava-empty]');
      const search = root.querySelector('[data-ava-search]');
      const toast = root.querySelector('[data-ava-toast]');

      let toastTimer = null;

      function pluralizeAvatars(number) {
        const lastTwo = number % 100;
        const last = number % 10;

        if (lastTwo >= 11 && lastTwo <= 14) return 'аватаров';
        if (last === 1) return 'аватар';
        if (last >= 2 && last <= 4) return 'аватара';
        return 'аватаров';
      }

      function groupAvatars(items) {
        return items.reduce((acc, avatar) => {
          const group = avatar.group || settings.fallbackGroup;

          if (!acc.has(group)) acc.set(group, []);
          acc.get(group).push(avatar);

          return acc;
        }, new Map());
      }

      function showToast(text) {
        if (!toast) return;

        toast.textContent = text;
        toast.classList.add('is-visible');

        clearTimeout(toastTimer);
        toastTimer = setTimeout(() => {
          toast.classList.remove('is-visible');
        }, 1600);
      }

      function copyText(text) {
        if (navigator.clipboard && window.isSecureContext) {
          return navigator.clipboard.writeText(text);
        }

        const area = document.createElement('textarea');
        area.value = text;
        area.style.position = 'fixed';
        area.style.left = '-9999px';
        area.style.top = '0';

        document.body.appendChild(area);
        area.focus();
        area.select();

        const ok = document.execCommand('copy');
        document.body.removeChild(area);

        return ok ? Promise.resolve() : Promise.reject();
      }

      function createAvatarCard(avatar) {
        const card = document.createElement('button');
        card.className = 'ava-card';
        card.type = 'button';
        card.setAttribute('aria-label', 'Скопировать ссылку на аватар');
        card.dataset.avaCopy = avatar.image;

        const imageWrap = document.createElement('div');
        imageWrap.className = 'ava-image-wrap';

        const image = document.createElement('img');
        image.className = 'ava-image';
        image.src = avatar.image;
        image.alt = avatar.comment || 'Аватар';
        image.loading = 'lazy';

        const copyHint = document.createElement('div');
        copyHint.className = 'ava-copy-hint';
        copyHint.textContent = 'копировать';

        imageWrap.appendChild(image);
        imageWrap.appendChild(copyHint);

        if (avatar.comment) {
          const comment = document.createElement('div');
          comment.className = 'ava-comment';
          comment.textContent = avatar.comment;
          imageWrap.appendChild(comment);
        }

        card.appendChild(imageWrap);

        card.addEventListener('click', () => {
          copyText(avatar.image)
            .then(() => showToast('Ссылка скопирована'))
            .catch(() => showToast('Не удалось скопировать ссылку'));
        });

        return card;
      }

      function render(items) {
        groupsRoot.innerHTML = '';

        const grouped = groupAvatars(items);

        grouped.forEach((groupItems, groupName) => {
          const details = document.createElement('details');
          details.className = 'ava-group';
          details.open =
            settings.openGroupsByDefault || items.length !== avatars.length;

          const summary = document.createElement('summary');
          summary.className = 'ava-group-summary';

          const left = document.createElement('div');
          left.className = 'ava-group-left';

          const arrow = document.createElement('span');
          arrow.className = 'ava-group-arrow';
          arrow.innerHTML = '<i class="fa-solid fa-chevron-right"></i>';

          const title = document.createElement('div');
          title.className = 'ava-group-title';
          title.textContent = groupName;

          const groupCount = document.createElement('div');
          groupCount.className = 'ava-group-count';
          groupCount.textContent = `${groupItems.length} ${pluralizeAvatars(groupItems.length)}`;

          left.appendChild(arrow);
          left.appendChild(title);
          summary.appendChild(left);
          summary.appendChild(groupCount);

          const gallery = document.createElement('div');
          gallery.className = 'ava-gallery';

          groupItems.forEach((avatar) => {
            gallery.appendChild(createAvatarCard(avatar));
          });

          details.appendChild(summary);
          details.appendChild(gallery);
          groupsRoot.appendChild(details);
        });

        count.textContent = `${items.length} ${pluralizeAvatars(items.length)}`;
        empty.style.display = items.length ? 'none' : 'block';
      }

      function filterAvatars() {
        const q = search.value.trim().toLowerCase();

        if (!q) {
          render(avatars);
          return;
        }

        const filtered = avatars.filter((avatar) => {
          const group = (avatar.group || settings.fallbackGroup).toLowerCase();
          const image = avatar.image.toLowerCase();
          const comment = (avatar.comment || '').toLowerCase();

          return group.includes(q) || image.includes(q) || comment.includes(q);
        });

        render(filtered);
      }

      if (search) search.addEventListener('input', filterAvatars);

      render(avatars);
    });
  })();
</script>
<script>
  (function () {
    var vars = [
      '--podform',
      '--quote',
      '--bord',
      '--dark-bord',
      '--text',
      '--sec-text',
      '--accent',
      '--accent2',
      '--tab-text',
      '--main-font',
      '--sec-font',
      '--shadow',
      '--shadow2',
      '--radius',
    ];

    function getVars(node) {
      if (!node) return null;

      var style = getComputedStyle(node);
      var result = {};

      vars.forEach(function (name) {
        result[name] = style.getPropertyValue(name).trim();
      });

      return result;
    }

    function getRoot() {
      return (
        document.querySelector('.rel-root') ||
        document.querySelector('.ava-root') ||
        document.querySelector('.ep-root') ||
        document.body
      );
    }

    function send(stage) {
      var root = getRoot();
      var rootStyle = root ? getComputedStyle(root) : null;

      var payload = {
        eventName: 'ksIframeDeepDiag',
        stage: stage,
        href: location.href,
        name: window.name,
        readyState: document.readyState,
        title: document.title,
        html: {
          className: document.documentElement.className,
          dataStyle: document.documentElement.getAttribute('data-style'),
          dataScheme: document.documentElement.getAttribute('data-scheme'),
          dataView: document.documentElement.getAttribute('data-view'),
          vars: getVars(document.documentElement),
          scrollHeight: document.documentElement.scrollHeight,
          clientHeight: document.documentElement.clientHeight,
        },
        body: {
          className: document.body ? document.body.className : null,
          vars: getVars(document.body),
          scrollHeight: document.body ? document.body.scrollHeight : null,
          clientHeight: document.body ? document.body.clientHeight : null,
        },
        root: root
          ? {
              tagName: root.tagName,
              className: root.className,
              vars: getVars(root),
              display: rootStyle.display,
              position: rootStyle.position,
              width: rootStyle.width,
              height: rootStyle.height,
              background: rootStyle.background,
              backgroundColor: rootStyle.backgroundColor,
              color: rootStyle.color,
              border: rootStyle.border,
              fontFamily: rootStyle.fontFamily,
            }
          : null,
        styles: Array.prototype.map.call(document.styleSheets, function (sheet) {
          var rulesCount = null;

          try {
            rulesCount = sheet.cssRules ? sheet.cssRules.length : null;
          } catch (error) {
            rulesCount = 'blocked: ' + error.name;
          }

          return {
            href: sheet.href,
            rulesCount: rulesCount,
          };
        }),
        scripts: Array.prototype.map.call(document.scripts, function (script) {
          return script.src || '[inline]';
        }),
        errors: window.__ksIframeErrors || [],
      };

      try {
        parent.postMessage(payload, '*');
      } catch (error) {}

      try {
        top.postMessage(payload, '*');
      } catch (error) {}
    }

    window.__ksIframeErrors = [];
    window.addEventListener('error', function (event) {
      window.__ksIframeErrors.push({
        message: event.message,
        source: event.filename,
        line: event.lineno,
        column: event.colno,
      });
      send('error');
    });

    window.addEventListener('unhandledrejection', function (event) {
      window.__ksIframeErrors.push({
        message: String(event.reason),
        type: 'unhandledrejection',
      });
      send('unhandledrejection');
    });

    window.addEventListener('message', function (event) {
      if ((event.data || {}).eventName === 'displayChange') {
        setTimeout(function () {
          send('after-displayChange');
        }, 100);
      }
    });

    send('inline-script-loaded');

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', function () {
        send('domcontentloaded');
      });
    }

    window.addEventListener('load', function () {
      send('window-load');
    });

    setTimeout(function () {
      send('after-1000ms');
    }, 1000);

    setTimeout(function () {
      send('after-3000ms');
    }, 3000);
  })();
</script>
[/html]
[hideprofile]

+3


Вы здесь » Kindred Spirits » Блоги » Пером по воде


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