А тут что-то будет. Точно будет!
[hideprofile]
Пером по воде
Сообщений 1 страница 4 из 4
Поделиться129-10-2025 15:39:53
Поделиться228-11-2025 15:09:15
[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]
Поделиться304-12-2025 15:27:08
[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]
Поделиться424-06-2026 14:55:39
[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]


















