[html]
<style>
html,body{margin:0!important;padding:0!important;background:transparent!important}
#ba_guestbook{--bg:#eee7dc;--panel:#f8f4ed;--panel-2:#e4d9ca;--ink:#28231f;--muted:#766b60;--accent:#8d7757;--accent-soft:rgba(141,119,87,.14);--blue:#5a6a70;--blue-soft:rgba(90,106,112,.18);--gold:#8d7757;--line:rgba(67,54,44,.22);--shadow:rgba(47,37,30,.16);--field:#fffaf2;display:block!important;position:relative!important;width:100%!important;max-width:none!important;margin:0!important;overflow:visible!important;color:var(--ink)!important;background:transparent!important;border:0!important;box-shadow:none!important;font-family:Arial,Helvetica,sans-serif!important;font-size:14px!important;line-height:1.65!important;box-sizing:border-box!important;transition:background .25s,color .25s,border-color .25s!important}
#ba_guestbook[data-theme="dark"]{--bg:#151310;--panel:#1d1a17;--panel-2:#25201b;--ink:#eee4d5;--muted:#ad9f8e;--accent:#b8986c;--accent-soft:rgba(184,152,108,.16);--blue:#765536;--blue-soft:rgba(184,152,108,.18);--gold:#b8986c;--line:rgba(191,157,111,.3);--shadow:rgba(0,0,0,.5);--field:#100f0d}
#ba_guestbook *,#ba_guestbook *:before,#ba_guestbook *:after{box-sizing:border-box!important}
#ba_guestbook a{color:inherit!important}
#ba_guestbook .bg-grain{position:absolute!important;inset:0!important;pointer-events:none!important;opacity:.35!important;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.13) 0 1px,transparent 1.5px),radial-gradient(circle at 75% 60%,rgba(0,0,0,.12) 0 1px,transparent 1.5px)!important;background-size:23px 29px,31px 37px!important;mix-blend-mode:soft-light!important}
#ba_guestbook .bg-shell{position:relative!important;z-index:1!important;padding:0!important}
#ba_guestbook .bg-topline{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:20px!important;margin:0 0 18px!important;color:var(--muted)!important;font-size:9px!important;font-weight:700!important;letter-spacing:2.3px!important;text-transform:uppercase!important}
#ba_guestbook .bg-topline:after{content:""!important;display:block!important;flex:1!important;max-width:170px!important;height:1px!important;background:var(--line)!important}
#ba_guestbook .bg-hero{display:grid!important;grid-template-columns:minmax(0,1.04fr) minmax(260px,.96fr)!important;min-height:330px!important;background:var(--panel)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-hero-copy{display:flex!important;flex-direction:column!important;justify-content:center!important;padding:44px 42px!important}
#ba_guestbook .bg-kicker{display:block!important;margin:0 0 15px!important;color:var(--gold)!important;font-size:9px!important;font-weight:700!important;letter-spacing:3px!important;text-transform:uppercase!important}
#ba_guestbook .bg-title{display:block!important;margin:0!important;color:var(--ink)!important;font-family:Georgia,"Times New Roman",serif!important;font-size:46px!important;font-weight:400!important;line-height:1!important;letter-spacing:1.5px!important;text-transform:uppercase!important}
#ba_guestbook .bg-deck{display:block!important;margin:18px 0 0!important;padding-left:18px!important;color:var(--muted)!important;border-left:2px solid var(--blue)!important;font-family:Georgia,"Times New Roman",serif!important;font-size:15px!important;font-style:italic!important;line-height:1.65!important}
#ba_guestbook .bg-hero-art{position:relative!important;min-height:330px!important;overflow:hidden!important;background:var(--panel-2)!important;border-left:1px solid var(--line)!important}
#ba_guestbook .bg-hero-art img,#ba_guestbook[data-theme="dark"] .bg-hero-art img{display:block!important;width:100%!important;height:100%!important;min-height:330px!important;object-fit:cover!important;filter:none!important;opacity:1!important}
#ba_guestbook .bg-hero-art:after{display:none!important;content:none!important}
#ba_guestbook .bg-nav{display:flex!important;flex-wrap:wrap!important;justify-content:center!important;gap:8px!important;margin:14px 0 0!important;padding:14px!important;background:var(--panel-2)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-nav a{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:34px!important;padding:7px 15px!important;color:var(--ink)!important;background:var(--panel)!important;border:1px solid var(--line)!important;text-decoration:none!important;font-size:9px!important;font-weight:700!important;letter-spacing:1.3px!important;text-transform:uppercase!important;transition:.2s ease!important}
#ba_guestbook .bg-nav a:hover{color:#fff!important;background:var(--blue)!important;border-color:var(--blue)!important;transform:translateY(-1px)!important}
#ba_guestbook .bg-grid{display:grid!important;grid-template-columns:.84fr 1.16fr!important;gap:14px!important;margin-top:14px!important}
#ba_guestbook .bg-card{padding:30px!important;background:var(--panel)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-card-no{display:block!important;margin-bottom:18px!important;color:var(--accent)!important;font-family:Georgia,"Times New Roman",serif!important;font-size:30px!important;line-height:1!important}
#ba_guestbook .bg-card-title{display:block!important;color:var(--ink)!important;font-family:Georgia,"Times New Roman",serif!important;font-size:22px!important;font-weight:400!important;line-height:1.25!important}
#ba_guestbook .bg-card-en{display:block!important;margin:7px 0 18px!important;color:var(--gold)!important;font-size:8px!important;font-weight:700!important;letter-spacing:2.1px!important;text-transform:uppercase!important}
#ba_guestbook p{margin:0 0 12px!important;color:var(--muted)!important;font-size:13px!important;line-height:1.75!important}
#ba_guestbook p:last-child{margin-bottom:0!important}
#ba_guestbook .bg-contact{display:inline-flex!important;margin-top:10px!important;padding-bottom:2px!important;color:var(--ink)!important;border-bottom:1px solid var(--accent)!important;text-decoration:none!important;font-weight:700!important}
#ba_guestbook .bg-claim{margin-top:14px!important;padding:34px!important;background:var(--panel)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-claim-head{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:24px!important;margin-bottom:25px!important}
#ba_guestbook .bg-claim-title{display:block!important;color:var(--ink)!important;font-family:Georgia,"Times New Roman",serif!important;font-size:26px!important;font-weight:400!important;line-height:1.2!important}
#ba_guestbook .bg-claim-note{max-width:360px!important;color:var(--muted)!important;font-size:12px!important;line-height:1.65!important;text-align:right!important}
#ba_guestbook .bg-form{display:grid!important;grid-template-columns:1.35fr 1fr .86fr!important;gap:12px!important;align-items:end!important}
#ba_guestbook .bg-field{display:block!important}
#ba_guestbook .bg-field span{display:block!important;margin:0 0 7px!important;color:var(--gold)!important;font-size:8px!important;font-weight:700!important;letter-spacing:1.5px!important;text-transform:uppercase!important}
#ba_guestbook input,#ba_guestbook select{display:block!important;width:100%!important;height:46px!important;margin:0!important;padding:0 14px!important;color:var(--ink)!important;background:var(--field)!important;border:1px solid var(--line)!important;border-radius:0!important;outline:none!important;font-family:Arial,Helvetica,sans-serif!important;font-size:13px!important;box-shadow:none!important}
#ba_guestbook input:focus,#ba_guestbook select:focus{border-color:var(--blue)!important;box-shadow:0 0 0 2px var(--blue-soft)!important}
#ba_guestbook .bg-submit{grid-column:1/-1!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:18px!important;margin-top:4px!important;padding:13px 15px!important;color:#fff!important;background:var(--blue)!important;border:1px solid var(--blue)!important;cursor:pointer!important;font-size:9px!important;font-weight:700!important;letter-spacing:1.8px!important;text-transform:uppercase!important;transition:.2s ease!important}
#ba_guestbook[data-theme="dark"] .bg-submit{color:#d7d2c7!important;background:#494137!important;border-color:#494137!important}
#ba_guestbook .bg-submit:hover{filter:brightness(1.08)!important;transform:translateY(-1px)!important}
#ba_guestbook .bg-submit:after{content:"→"!important;font-family:Georgia,"Times New Roman",serif!important;font-size:18px!important;font-weight:400!important}
#ba_guestbook .bg-form-status{display:none!important;margin-top:15px!important;padding:12px 14px!important;color:var(--ink)!important;background:var(--accent-soft)!important;border-left:2px solid var(--accent)!important;font-size:12px!important}
#ba_guestbook .bg-form-status.is-visible{display:block!important}
#ba_guestbook .bg-holds{margin-top:14px!important;padding:30px 34px 34px!important;background:var(--panel-2)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-holds-head{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:15px!important;margin-bottom:18px!important}
#ba_guestbook .bg-holds-title{color:var(--ink)!important;font-family:Georgia,"Times New Roman",serif!important;font-size:20px!important;text-transform:uppercase!important}
#ba_guestbook .bg-holds-count{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-width:32px!important;height:32px!important;color:var(--gold)!important;background:var(--panel)!important;border:1px solid var(--line)!important;font-size:10px!important;font-weight:700!important}
#ba_guestbook .bg-hold-list{display:grid!important;grid-template-columns:1fr 1fr!important;gap:9px!important}
#ba_guestbook .bg-hold-item{display:grid!important;grid-template-columns:1fr auto!important;gap:7px 14px!important;padding:15px 16px!important;color:var(--ink)!important;background:var(--panel)!important;border:1px solid var(--line)!important;text-decoration:none!important}
#ba_guestbook .bg-hold-face{font-family:Georgia,"Times New Roman",serif!important;font-size:15px!important}
#ba_guestbook .bg-hold-date{color:var(--accent)!important;font-size:9px!important;font-weight:700!important;letter-spacing:1px!important;text-transform:uppercase!important}
#ba_guestbook .bg-hold-player{grid-column:1/-1!important;color:var(--muted)!important;font-size:10px!important;letter-spacing:.7px!important}
#ba_guestbook .bg-player-link{color:var(--gold)!important;text-decoration:none!important;border-bottom:1px solid var(--line)!important}
#ba_guestbook .bg-player-link:hover{border-bottom-color:var(--gold)!important}
#ba_guestbook .bg-redeem-manager[hidden]{display:none!important}
#ba_guestbook .bg-redeem-manager{margin-top:14px!important;padding:34px!important;background:var(--panel)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-redeem-grid{display:grid!important;grid-template-columns:1fr 1.2fr!important;gap:12px!important}
#ba_guestbook .bg-redeem-grid .bg-value{grid-column:1/-1!important}
#ba_guestbook .bg-term-row{display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important}
#ba_guestbook .bg-term-date[hidden]{display:none!important}
#ba_guestbook .bg-redeem-meta{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:18px!important;margin-top:14px!important;padding-top:14px!important;border-top:1px solid var(--line)!important}
#ba_guestbook .bg-redeem-meta .bg-submit{grid-column:auto!important;min-width:180px!important;margin:0!important}
#ba_guestbook .bg-buyouts .bg-holds-head{margin-bottom:12px!important}
#ba_guestbook .bg-buyout-groups{display:grid!important;gap:9px!important}
#ba_guestbook .bg-buyout-group{background:var(--panel)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-buyout-group summary{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:14px!important;padding:15px 16px!important;color:var(--ink)!important;cursor:pointer!important;list-style:none!important;font-family:Georgia,"Times New Roman",serif!important;font-size:16px!important}
#ba_guestbook .bg-buyout-group summary::-webkit-details-marker{display:none!important}
#ba_guestbook .bg-buyout-group summary:after{content:"+"!important;color:var(--gold)!important;font-family:Arial,Helvetica,sans-serif!important;font-size:15px!important}
#ba_guestbook .bg-buyout-group[open] summary:after{content:"−"!important}
#ba_guestbook .bg-buyout-group summary span{display:inline-flex!important;align-items:center!important;gap:9px!important}
#ba_guestbook .bg-buyout-group summary b{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-width:25px!important;height:25px!important;color:var(--gold)!important;border:1px solid var(--line)!important;font-family:Arial,Helvetica,sans-serif!important;font-size:9px!important}
#ba_guestbook .bg-buyout-list{display:grid!important;grid-template-columns:1fr 1fr!important;gap:9px!important;padding:0 9px 9px!important}
#ba_guestbook .bg-buyout-card{position:relative!important;display:grid!important;grid-template-columns:1fr auto!important;gap:7px 14px!important;min-width:0!important;padding:15px 16px 42px!important;color:var(--ink)!important;background:var(--panel-2)!important;border:1px solid var(--line)!important}
#ba_guestbook .bg-buyout-value{min-width:0!important;font-family:Georgia,"Times New Roman",serif!important;font-size:15px!important;overflow-wrap:anywhere!important}
#ba_guestbook .bg-buyout-term{color:var(--accent)!important;font-size:9px!important;font-weight:700!important;letter-spacing:1px!important;text-transform:uppercase!important}
#ba_guestbook .bg-buyout-owner{grid-column:1/-1!important;color:var(--muted)!important;font-size:10px!important;letter-spacing:.7px!important}
#ba_guestbook .bg-buyout-kind{display:block!important;margin-bottom:3px!important;color:var(--gold)!important;font-size:8px!important;font-weight:700!important;letter-spacing:1.1px!important;text-transform:uppercase!important}
#ba_guestbook .bg-remove{position:absolute!important;right:10px!important;bottom:9px!important;padding:6px 9px!important;color:var(--muted)!important;background:transparent!important;border:1px solid var(--line)!important;cursor:pointer!important;font-size:8px!important;font-weight:700!important;letter-spacing:1px!important;text-transform:uppercase!important}
#ba_guestbook .bg-remove:hover{color:var(--ink)!important;border-color:var(--gold)!important}
#ba_guestbook .bg-redeem-status{display:none!important;margin-top:14px!important;padding:11px 13px!important;color:var(--ink)!important;background:var(--accent-soft)!important;border-left:2px solid var(--gold)!important;font-size:12px!important}
#ba_guestbook .bg-redeem-status.is-visible{display:block!important}
#ba_guestbook .bg-empty{grid-column:1/-1!important;padding:18px!important;color:var(--muted)!important;background:var(--panel)!important;border:1px dashed var(--line)!important;text-align:center!important;font-family:Georgia,"Times New Roman",serif!important;font-size:14px!important;font-style:italic!important}
#ba_guestbook .bg-foot{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:20px!important;margin-top:14px!important;padding:20px 5px 2px!important;color:var(--muted)!important;font-size:8px!important;font-weight:700!important;letter-spacing:1.8px!important;text-transform:uppercase!important}
#ba_guestbook .bg-foot-mark{color:var(--gold)!important;font-family:Georgia,"Times New Roman",serif!important;font-size:16px!important;letter-spacing:2px!important}
@media(max-width:760px){#ba_guestbook .bg-hero{grid-template-columns:1fr!important}#ba_guestbook .bg-hero-copy{padding:35px 27px!important}#ba_guestbook .bg-title{font-size:36px!important}#ba_guestbook .bg-hero-art{min-height:230px!important;border-left:0!important;border-top:1px solid var(--line)!important}#ba_guestbook .bg-hero-art img{min-height:230px!important}#ba_guestbook .bg-grid,#ba_guestbook .bg-form,#ba_guestbook .bg-redeem-grid,#ba_guestbook .bg-term-row{grid-template-columns:1fr!important}#ba_guestbook .bg-claim-head{display:block!important}#ba_guestbook .bg-claim-note{margin-top:10px!important;text-align:left!important}#ba_guestbook .bg-hold-list,#ba_guestbook .bg-buyout-list{grid-template-columns:1fr!important}}
@media(max-width:480px){#ba_guestbook .bg-card,#ba_guestbook .bg-claim,#ba_guestbook .bg-holds{padding:24px 20px!important}#ba_guestbook .bg-nav a{flex:1 1 42%!important;padding-left:8px!important;padding-right:8px!important}#ba_guestbook .bg-foot{display:block!important;text-align:center!important}#ba_guestbook .bg-foot-mark{display:block!important;margin-bottom:7px!important}}
</style>
<div id="ba_guestbook" data-theme="light">
<div class="bg-grain"></div>
<div class="bg-shell">
<div class="bg-topline"><span>Bad Atmosphere · New York City</span></div>
<section class="bg-hero">
<div class="bg-hero-copy">
<span class="bg-kicker">The door is open</span>
<span class="bg-title">Гостевая</span>
<span class="bg-deck">Нью-Йорк большой, шумный и довольно токсичный. Мы стараемся соответствовать — но гостей всё-таки встречаем.</span>
</div>
<div class="bg-hero-art"><img src="https://forumstatic.ru/files/001c/c5/0d/88227.png" alt="Вход в Bad Atmosphere"></div>
</section>
<nav class="bg-nav" aria-label="Полезные ссылки">
<a href="https://badnyc.ru/viewtopic.php?id=15#p34" target="_top">FAQ</a>
<a href="https://badnyc.ru/viewtopic.php?id=14#p33" target="_top">Правила</a>
<a href="https://badnyc.ru/viewtopic.php?id=7#p26" target="_top">Job Board</a>
<a href="https://badnyc.ru/viewtopic.php?id=6#p25" target="_top">Занятые внешности</a>
</nav>
<div class="bg-grid">
<section class="bg-card">
<span class="bg-card-no">01</span><span class="bg-card-title">Есть вопрос?</span><span class="bg-card-en">Ask before you panic</span>
<p>Уточнить концепт, проверить идею персонажа, разобраться с регистрацией или просто найти нужную дверь можно прямо в этой теме.</p>
<p>Мы ответим, подскажем и при необходимости покажем пальцем. Иногда буквально ссылкой.</p>
</section>
<section class="bg-card">
<span class="bg-card-no">02</span><span class="bg-card-title">Нужен человек?</span><span class="bg-card-en">The Doorman knows</span>
<p>Главный администратор форума — <strong>Doorman</strong>. Если вопрос лучше обсудить без свидетелей, напишите ему лично.</p>
<a class="bg-contact" href="https://badnyc.ru/messages.php?action=new&uid=2" target="_top">Открыть личные сообщения →</a>
</section>
</div>
<section class="bg-claim">
<div class="bg-claim-head">
<div><span class="bg-claim-title">Придержать внешность</span><span class="bg-card-en">Face claim / hold request</span></div>
<div class="bg-claim-note">Заполните два поля. Срок брони рассчитается автоматически — три календарных дня от даты заявки.</div>
</div>
<form class="bg-form" id="ba-hold-form">
<label class="bg-field"><span>Внешность</span><input id="ba-face" name="face" type="text" maxlength="80" autocomplete="off" placeholder="например, Eva Green" required></label>
<label class="bg-field"><span>Имя игрока</span><input id="ba-player" name="player" type="text" maxlength="60" autocomplete="nickname" placeholder="как к вам обращаться" required></label>
<label class="bg-field"><span>Срок брони</span><input id="ba-deadline-display" type="text" readonly aria-readonly="true" aria-label="Фиксированный срок брони — три дня"></label>
<button class="bg-submit" type="submit"><span>Перенести в форму ответа</span></button>
</form>
<div class="bg-form-status" id="ba-form-status" role="status" aria-live="polite"></div>
</section>
<section class="bg-holds">
<div class="bg-holds-head"><span class="bg-holds-title">Придержано</span><span class="bg-holds-count" id="ba-holds-count">…</span></div>
<div class="bg-hold-list" id="ba-hold-list"><div class="bg-empty">Загружаем актуальные брони…</div></div>
</section>
<section class="bg-redeem-manager" id="ba-redeem-manager" hidden>
<div class="bg-claim-head">
<div><span class="bg-claim-title">Оформить выкуп</span><span class="bg-card-en">Staff only / economy registry</span></div>
<div class="bg-claim-note">Панель видят только администраторы и модераторы. Здесь выкуп только регистрируется — списание оформляется отдельно.</div>
</div>
<form id="ba-redeem-form">
<div class="bg-redeem-grid">
<label class="bg-field"><span>Что выкупаем</span><select name="kind" id="ba-redeem-kind"></select></label>
<label class="bg-field"><span>Кто выкупает</span><select name="target" id="ba-redeem-user"></select></label>
<label class="bg-field bg-value"><span>Что именно</span><input name="value" id="ba-redeem-value" maxlength="100" autocomplete="off" required></label>
</div>
<div class="bg-term-row">
<label class="bg-field"><span>Срок</span><select name="term" id="ba-redeem-term"><option value="never">Бессрочно</option><option value="date">До выбранной даты</option></select></label>
<label class="bg-field bg-term-date" id="ba-redeem-date-wrap" hidden><span>Дата окончания</span><input name="date" id="ba-redeem-date" type="date"></label>
</div>
<div class="bg-redeem-meta"><button class="bg-submit" type="submit"><span>Оформить выкуп</span></button></div>
</form>
<div class="bg-redeem-status" id="ba-redeem-status" role="status" aria-live="polite"></div>
</section>
<section class="bg-holds bg-buyouts">
<div class="bg-holds-head"><span class="bg-holds-title">Выкуплено</span><span class="bg-holds-count" id="ba-redeemed-count">…</span></div>
<div class="bg-buyout-groups">
<details class="bg-buyout-group"><summary><span>Внешности <b id="ba-redeemed-faces-count">0</b></span></summary><div class="bg-buyout-list" id="ba-redeemed-faces"><div class="bg-empty">Загружаем внешности…</div></div></details>
<details class="bg-buyout-group"><summary><span>Имена и фамилии <b id="ba-redeemed-names-count">0</b></span></summary><div class="bg-buyout-list" id="ba-redeemed-names"><div class="bg-empty">Загружаем имена…</div></div></details>
</div>
</section>
<div class="bg-foot"><span class="bg-foot-mark">BA · NYC</span><span>Welcome desk · no panic after midnight</span></div>
</div>
</div>
<script>
(function(){
'use strict';
var root=document.getElementById('ba_guestbook');
var form=document.getElementById('ba-hold-form');
var status=document.getElementById('ba-form-status');
var list=document.getElementById('ba-hold-list');
var count=document.getElementById('ba-holds-count');
var manager=document.getElementById('ba-redeem-manager');
var redeemForm=document.getElementById('ba-redeem-form');
var redeemStatus=document.getElementById('ba-redeem-status');
var kindSelect=document.getElementById('ba-redeem-kind');
var userSelect=document.getElementById('ba-redeem-user');
var valueInput=document.getElementById('ba-redeem-value');
var termSelect=document.getElementById('ba-redeem-term');
var dateWrap=document.getElementById('ba-redeem-date-wrap');
var dateInput=document.getElementById('ba-redeem-date');
var redeemedCount=document.getElementById('ba-redeemed-count');
var facesList=document.getElementById('ba-redeemed-faces');
var namesList=document.getElementById('ba-redeemed-names');
var facesCount=document.getElementById('ba-redeemed-faces-count');
var namesCount=document.getElementById('ba-redeemed-names-count');
var ready=false;
var redeemReady=false;
var staff=false,users=[],catalog=[],faces={};
var pad=function(n){return String(n).padStart(2,'0');};
function isoToday(){var d=new Date();return d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate());}
function fixedDeadline(){var today=new Date();var deadline=new Date(today.getFullYear(),today.getMonth(),today.getDate()+3);var iso=deadline.getFullYear()+'-'+pad(deadline.getMonth()+1)+'-'+pad(deadline.getDate());document.getElementById('ba-deadline-display').value='3 дня · до '+pad(deadline.getDate())+'.'+pad(deadline.getMonth()+1)+'.'+deadline.getFullYear();return iso;}
fixedDeadline();dateInput.min=isoToday();
function showStatus(text,isError){status.textContent=text;status.className='bg-form-status is-visible';status.style.borderLeftColor=isError?'#b8986c':'';}
function render(items){
list.innerHTML='';count.textContent=String(items.length);
if(!items.length){var empty=document.createElement('div');empty.className='bg-empty';empty.textContent='Сейчас активных броней нет. Дверь открыта.';list.appendChild(empty);return;}
items.forEach(function(item){var a=document.createElement('a');a.className='bg-hold-item';a.href=item.url||'#';a.target='_top';var face=document.createElement('span');face.className='bg-hold-face';face.textContent=item.face;var date=document.createElement('span');date.className='bg-hold-date';date.textContent='до '+item.deadline;var player=document.createElement('span');player.className='bg-hold-player';player.textContent='игрок: '+item.player;a.appendChild(face);a.appendChild(date);a.appendChild(player);list.appendChild(a);});
}
function ruDate(iso){var p=String(iso||'').split('-');return p.length===3?p[2]+'.'+p[1]+'.'+p[0]:iso;}
function showRedeemStatus(text,isError){if(!text){redeemStatus.className='bg-redeem-status';redeemStatus.textContent='';return;}redeemStatus.textContent=text;redeemStatus.className='bg-redeem-status is-visible';redeemStatus.style.borderLeftColor=isError?'#9c5a4a':'';}
function emptyInto(target,text){target.innerHTML='';var empty=document.createElement('div');empty.className='bg-empty';empty.textContent=text;target.appendChild(empty);}
function renderRedeemed(items){
var faceItems=items.filter(function(x){return x.group==='faces';});
var nameItems=items.filter(function(x){return x.group==='names';});
redeemedCount.textContent=String(items.length);facesCount.textContent=String(faceItems.length);namesCount.textContent=String(nameItems.length);
function fill(target,rows,emptyText){target.innerHTML='';if(!rows.length){emptyInto(target,emptyText);return;}rows.forEach(function(item){var card=document.createElement('div');card.className='bg-buyout-card';var value=document.createElement('span');value.className='bg-buyout-value';if(item.group==='names'){var label=document.createElement('span');label.className='bg-buyout-kind';label.textContent=item.type_title||'';value.appendChild(label);}value.appendChild(document.createTextNode(item.value));var term=document.createElement('span');term.className='bg-buyout-term';term.textContent=item.expires_at?'до '+ruDate(item.expires_at):'бессрочно';var owner=document.createElement('span');owner.className='bg-buyout-owner';owner.appendChild(document.createTextNode('игрок: '));var link=document.createElement('a');link.className='bg-player-link';link.href=item.profile_url;link.target='_top';link.textContent=item.username;owner.appendChild(link);card.append(value,term,owner);if(staff){var remove=document.createElement('button');remove.type='button';remove.className='bg-remove';remove.textContent='Убрать';remove.addEventListener('click',function(){window.parent.postMessage({scope:'ba-redeemed',type:'remove',id:item.id},'https://badnyc.ru');});card.appendChild(remove);}target.appendChild(card);});}
fill(facesList,faceItems,'Выкупленных внешностей пока нет.');fill(namesList,nameItems,'Выкупленных имён и фамилий пока нет.');
}
function selectedUser(){return users.find(function(x){return String(x.user_id)===userSelect.value;});}
function autoValue(){var user=selectedUser(),kind=kindSelect.value,name=String(user&&user.username||'').trim(),parts=name.split(/\s+/).filter(Boolean),value='';if(kind==='face')value=faces[String(user&&user.user_id||'')]||'';if(kind==='first-name')value=parts[0]||'';if(kind==='last-name')value=parts.length>1?parts[parts.length-1]:'';if(kind==='full-name')value=name;valueInput.value=value;syncManager();}
function syncManager(){dateWrap.hidden=termSelect.value!=='date';dateInput.required=termSelect.value==='date';}
function setupManager(){
if(!staff){manager.hidden=true;return;}manager.hidden=false;
var oldKind=kindSelect.value,oldUser=userSelect.value;
kindSelect.innerHTML='';catalog.forEach(function(item){var o=document.createElement('option');o.value=item.kind;o.textContent=item.title;kindSelect.appendChild(o);});
userSelect.innerHTML='';users.forEach(function(user){var o=document.createElement('option');o.value=String(user.user_id);o.textContent=user.username;userSelect.appendChild(o);});
if(oldKind&&catalog.some(function(x){return x.kind===oldKind;}))kindSelect.value=oldKind;
if(oldUser&&users.some(function(x){return String(x.user_id)===oldUser;}))userSelect.value=oldUser;
if(!manager.dataset.ready){kindSelect.addEventListener('change',autoValue);userSelect.addEventListener('change',autoValue);termSelect.addEventListener('change',syncManager);manager.dataset.ready='1';autoValue();}else syncManager();
}
window.addEventListener('message',function(event){
if(event.origin!=='https://badnyc.ru'||!event.data)return;
if(event.data.scope==='ba-guestbook'){
if(event.data.type==='state'){ready=true;root.setAttribute('data-theme',event.data.theme==='dark'?'dark':'light');render(Array.isArray(event.data.holds)?event.data.holds:[]);}
if(event.data.type==='claim-ready')showStatus('Заявка перенесена в быстрый ответ ниже. Проверьте текст и нажмите «Отправить».',false);
if(event.data.type==='claim-error')showStatus(event.data.message||'Не удалось найти форму ответа. Обновите страницу и попробуйте ещё раз.',true);
}
if(event.data.scope==='ba-redeemed'&&event.data.type==='state'){
redeemReady=true;root.setAttribute('data-theme',event.data.theme==='dark'?'dark':'light');staff=!!event.data.staff;users=Array.isArray(event.data.users)?event.data.users:[];catalog=Array.isArray(event.data.catalog)?event.data.catalog:[];faces=event.data.faces&&typeof event.data.faces==='object'?event.data.faces:{};setupManager();renderRedeemed(Array.isArray(event.data.items)?event.data.items:[]);showRedeemStatus(event.data.status||event.data.error||'',!!(event.data.statusError||event.data.error));
}
});
form.addEventListener('submit',function(event){
event.preventDefault();
var face=form.elements.face.value.trim();var player=form.elements.player.value.trim();var deadline=fixedDeadline();
if(!face||!player){showStatus('Заполните внешность и имя игрока.',true);return;}
window.parent.postMessage({scope:'ba-guestbook',type:'claim',face:face,player:player,deadline:deadline},'https://badnyc.ru');
});
redeemForm.addEventListener('submit',function(event){event.preventDefault();var expires=termSelect.value==='never'?'never':dateInput.value;if(!valueInput.value.trim()||!userSelect.value||!kindSelect.value||!expires){showRedeemStatus('Проверьте игрока, предмет выкупа и срок.',true);return;}window.parent.postMessage({scope:'ba-redeemed',type:'add',kind:kindSelect.value,target:userSelect.value,value:valueInput.value.trim(),expires:expires},'https://badnyc.ru');});
window.parent.postMessage({scope:'ba-guestbook',type:'ready'},'https://badnyc.ru');
window.parent.postMessage({scope:'ba-redeemed',type:'ready'},'https://badnyc.ru');
setTimeout(function(){if(!ready){count.textContent='—';emptyInto(list,'Список появится после полной загрузки страницы форума.');}if(!redeemReady){redeemedCount.textContent='—';emptyInto(facesList,'Реестр появится после полной загрузки страницы форума.');emptyInto(namesList,'Реестр появится после полной загрузки страницы форума.');}},3500);
})();
</script>
[/html]
Скопируйте шаблон, замените подсказки и отправьте его ответом в эту тему.
Код:[align=center][b]Бронь внешности[/b] [b]Внешность:[/b] Имя внешности [b]Игрок:[/b] Ваше имя [b]Срок брони:[/b] 3 дня от даты сообщения[/align]


.png)




















