/* ============================================================
   VoidBuilders · index.css — шапка, главная, форум, друзья, чат
   ============================================================ */
/* ---------- Шапка ---------- */
.topbar{position:sticky;top:0;z-index:100;background:rgba(7,10,18,.82);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}
.topbar-in{display:flex;align-items:center;justify-content:space-between;gap:14px;height:68px}
.brand{display:inline-flex;align-items:center;gap:10px;cursor:pointer;flex-shrink:0}
.brand-mark{width:36px;height:36px;border-radius:10px;box-shadow:0 6px 18px -6px rgba(91,124,255,.6)}
.brand-name{font-size:19px;font-weight:800;letter-spacing:-.01em;color:#fff}
.brand-name b{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;font-weight:800}
.topnav{display:flex;gap:4px;background:rgba(9,13,22,.65);border:1px solid var(--border);padding:5px;border-radius:14px}
.navlink{padding:8px 17px;border-radius:10px;font-size:13.5px;font-weight:600;color:var(--dim);transition:.15s}
.navlink:hover{color:var(--text);background:var(--card-hover)}
.navlink.active{color:#fff;background:var(--card-hover);box-shadow:inset 0 0 0 1px var(--border-strong)}
.top-actions{display:flex;align-items:center;gap:12px}
.userchip{display:flex;align-items:center;gap:9px;padding:4px 6px 4px 4px;border-radius:var(--r-full);background:var(--card);border:1px solid var(--border);cursor:pointer;transition:.15s;max-width:220px}
.userchip:hover{border-color:var(--border-strong);background:var(--card-hover)}
.userchip .avatar{width:32px;height:32px;border-radius:50%}
.userchip .js-user-name{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.userchip .icon-btn{width:30px;height:30px;color:var(--err)}
/* ---------- Главная / hero ---------- */
.view{min-height:60vh}
.section-head{padding:46px 0 20px}
.section-head h2{font-size:27px;font-weight:800;letter-spacing:-.01em}
.section-head p{margin-top:4px;font-size:14px}
.hero{padding:76px 0 34px;text-align:center;display:flex;flex-direction:column;align-items:center}
.hero h1{font-size:clamp(34px,6vw,56px);font-weight:850;letter-spacing:-.03em;line-height:1.08}
.hero h1 span{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.hero-sub{max-width:600px;margin-top:14px;font-size:16px;color:var(--dim)}
.status-chip{display:inline-flex;align-items:center;gap:9px;margin-top:22px;padding:8px 16px;border-radius:var(--r-full);background:var(--ok-dim);border:1px solid rgba(61,220,151,.25);font-size:12.5px;font-weight:700;color:var(--ok);text-transform:uppercase;letter-spacing:.08em}
.pulse-dot{position:relative;width:9px;height:9px}
.pulse-dot::before{content:'';position:absolute;inset:-4px;border-radius:50%;background:rgba(61,220,151,.35);animation:pulse 1.6s infinite}
.pulse-dot::after{content:'';position:absolute;inset:0;border-radius:50%;background:var(--ok)}
.cta-row{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap;justify-content:center}
.cta-sub{display:block;margin-top:7px;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.75);text-transform:none;letter-spacing:0}
#dl-version{display:none}
#dl-version.show{display:inline}
.btn-wrap{display:inline-flex;flex-direction:column;align-items:center}
/* ---------- Преимущества ---------- */
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px;padding-bottom:26px}
.feat{padding:24px}
.feat-ico{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:13px;background:var(--info-dim);color:var(--accent)}
.feat-ico svg{width:21px;height:21px}
.feat h3{font-size:15.5px;font-weight:700;margin-top:15px}
.feat p{font-size:13.5px;color:var(--dim);margin-top:6px;line-height:1.55}
/* ---------- Новости ---------- */
/* ---------- Список сборок ---------- */
.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:52px 0 18px}
.packs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:16px;padding-bottom:64px}
.pack-tile{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px;display:flex;flex-direction:column;gap:10px;transition:.2s;backdrop-filter:blur(14px)}
.pack-tile:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow)}
.pack-thumb{position:relative;height:118px;border-radius:10px;overflow:hidden;background:linear-gradient(135deg,#131b2e,#0d1322);border:1px solid var(--border)}
.pack-thumb img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;transition:transform .35s}
.pack-tile:hover .pack-thumb img{transform:scale(1.04)}
.pack-thumb.no-img img{display:none}
.pack-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px;opacity:.45}
.pack-body{display:flex;flex-direction:column;gap:8px;flex:1}
.pack-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.pack-name{font-size:14px;font-weight:700;line-height:1.35}
.pack-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:11.5px;color:var(--mute)}
.pack-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:2px}
.pack-foot .btn{padding:9px 14px;font-size:13px}
.dl-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--dim);background:var(--card);border:1px solid var(--border);padding:6px 10px;border-radius:var(--r-full);white-space:nowrap}
.dl-chip svg{width:13px;height:13px;color:var(--accent);flex-shrink:0}
.dl-chip.bump{animation:bump .45s cubic-bezier(.2,.9,.3,1.4)}
@keyframes bump{35%{transform:scale(1.18)}}
.dl-inline{display:inline-flex;align-items:center;gap:5px}
.dl-inline svg{width:13px;height:13px;color:var(--accent);flex-shrink:0}
.dl-inline b{color:#fff;font-weight:700}
.line{height:12px;border-radius:6px;margin-top:9px}
.w40{width:40%}.w75{width:75%}.w90{width:90%}
.empty-state{text-align:center;padding:56px 20px;grid-column:1/-1}
.empty-state .big{font-size:40px;opacity:.7;margin-bottom:10px}
.empty-state h3{font-size:17px;font-weight:700}
.empty-state p{font-size:13.5px;margin-top:4px}
/*<<IDX-B>>*/
/* ---------- Форум ---------- */
.forum-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.toolbar-search{position:relative;flex:1;min-width:230px}
.toolbar-search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--mute);pointer-events:none}
.toolbar-search .input{padding-left:40px}
.forum-count{font-size:12.5px;color:var(--mute);white-space:nowrap}
#tickets-list{display:flex;flex-direction:column;gap:12px;padding-bottom:60px}
.ticket-card{display:flex;align-items:center;gap:14px;padding:15px 18px;background:var(--panel);border:1px solid var(--border);border-left:3px solid transparent;border-radius:16px;cursor:pointer;transition:.18s;backdrop-filter:blur(14px)}
.ticket-card:hover{transform:translateX(3px);border-color:var(--border-strong);border-left-color:var(--accent)}
.tk-title{font-size:15px;font-weight:700}
.tk-meta{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--mute);margin-top:3px}
.tk-meta b{color:var(--dim);font-weight:600}
.thread-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.thread-title{font-size:22px;font-weight:800;line-height:1.25}
.post{display:flex;gap:14px;padding:17px;background:var(--panel);border:1px solid var(--border);border-radius:16px;margin-bottom:12px;backdrop-filter:blur(14px)}
.post.op{border-left:3px solid var(--accent)}
.post-main{flex:1;min-width:0}
.post-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:7px}
.post-author{font-size:13.5px;font-weight:700;color:#cdd9f5}
.post-time{font-size:11.5px;color:var(--mute)}
.post-del{margin-left:auto}
.post-text{font-size:14px;line-height:1.62;white-space:pre-wrap;word-break:break-word;color:#dfe6f3}
.reply-panel{padding:16px;display:flex;gap:10px;align-items:flex-end;margin-top:4px;margin-bottom:60px}
.reply-panel textarea{flex:1}
/* ---------- Друзья ---------- */
.friends-grid{display:grid;grid-template-columns:390px 1fr;gap:18px;align-items:start;padding-bottom:60px}
.person-list{display:flex;flex-direction:column;gap:10px;padding:14px;max-height:520px;overflow-y:auto}
.person-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:14px;background:var(--card);transition:.15s}
.person-row:hover{background:var(--card-hover)}
.person-info{flex:1;min-width:0}
.person-info b{display:block;font-size:14px;line-height:1.3}
.person-info .chip,.person-info .presence{margin-top:2px}
.person-actions{display:flex;gap:6px;flex-shrink:0;align-items:center}
/* ---------- Чат ---------- */
.chat-shell{display:grid;grid-template-columns:320px 1fr;gap:18px;height:calc(100vh - 175px);min-height:470px;margin-bottom:60px}
.chat-side{display:flex;flex-direction:column;overflow:hidden}
.conv-list{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:7px}
.conv{position:relative;display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:9px 11px;border-radius:13px;border:1px solid transparent;transition:.15s}
.conv:hover{background:var(--card-hover)}
.conv.active{background:var(--info-dim);border-color:rgba(91,140,255,.35)}
.conv-info{flex:1;min-width:0}
.conv-info b{display:block;font-size:13.5px;line-height:1.3}
.conv-preview{display:block;font-size:11.5px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.conv-badge{min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-full);background:var(--grad);color:#fff;font-size:10.5px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.chat-main{display:flex;flex-direction:column;overflow:hidden}
.chat-head{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--border);flex-shrink:0}
#chat-back{margin-right:-2px}
.chat-peer{flex:1;min-width:0;display:flex;align-items:center;gap:11px}
.chat-peer-info{min-width:0}
.chat-peer-name{font-size:15px;font-weight:700;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-peer-sub{font-size:12px;color:var(--mute)}
.chat-msgs{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column}
.date-chip{align-self:center;font-size:11.5px;color:var(--mute);background:var(--card);border:1px solid var(--border);padding:3px 13px;border-radius:var(--r-full);margin:10px 0 2px}
.msg{display:flex;gap:10px;max-width:78%;margin-top:10px}
.msg .avatar{width:30px;height:30px;border-radius:9px;align-self:flex-end}
.msg .avatar::before{font-size:12px}
.msg-bubble{background:var(--card-hover);border:1px solid var(--border);padding:8px 13px 7px;border-radius:4px 14px 14px 14px;min-width:0}
.msg-from{font-size:11.5px;font-weight:700;color:var(--accent);margin-bottom:2px}
.msg-text{font-size:14px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
.msg-time{display:block;font-size:10.5px;color:var(--mute);margin-top:3px;text-align:right}
.msg.mine{align-self:flex-end;flex-direction:row-reverse}
.msg.mine .msg-bubble{background:var(--grad);border-color:transparent;border-radius:14px 4px 14px 14px}
.msg.mine .msg-from{display:none}
.msg.mine .msg-time{color:rgba(255,255,255,.65)}
.chat-placeholder{margin:auto;text-align:center;color:var(--mute);padding:40px 20px}
.chat-placeholder .big{font-size:44px;opacity:.55;margin-bottom:12px}
.composer{display:flex;gap:10px;align-items:flex-end;padding:13px 16px;border-top:1px solid var(--border);flex-shrink:0}
.composer textarea{flex:1;resize:none;max-height:120px}
/* ---------- Футер ---------- */
.footer{border-top:1px solid var(--border);padding:26px 0 30px;margin-top:10px}
.footer-in{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.footer-brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:14.5px;color:#fff}
.footer-brand .brand-mark{width:26px;height:26px;border-radius:8px}
.footer-note{font-size:12.5px;color:var(--mute);max-width:520px}
.footer-links{display:flex;gap:18px;font-size:13px}
.footer-links a{color:var(--dim)}
.footer-links a:hover{color:var(--accent)}
.copyright{font-size:12.5px;color:var(--mute)}
/* ---------- Нижняя навигация (мобильная) ---------- */
.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:150;display:none;background:rgba(9,13,23,.94);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--border);padding:7px 6px calc(7px + env(safe-area-inset-bottom))}
.bn-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0 4px;color:var(--mute);font-size:10px;font-weight:600;letter-spacing:.02em;position:relative;border-radius:10px;transition:.15s}
.bn-item svg{width:21px;height:21px}
.bn-item.active{color:var(--accent)}
.bnb{position:absolute;top:2px;right:calc(50% - 22px);min-width:17px;height:17px;padding:0 4px;border-radius:var(--r-full);background:#ff5470;color:#fff;font-size:10px;font-weight:800;display:none;align-items:center;justify-content:center;font-style:normal}
.bnb.show{display:flex}
body.has-bottomnav{padding-bottom:84px}
/* ---------- Адаптивность ---------- */
@media (max-width:1020px){
  .friends-grid{grid-template-columns:1fr}
}
@media (max-width:880px){
  .topbar-in{height:60px}
  .topnav{display:none}
  .only-mobile{display:inline-flex!important}
  body.has-bottomnav .bottomnav{display:flex}
  .hero{padding:48px 0 24px}
  .chat-shell{grid-template-columns:1fr;height:calc(100vh - 205px)}
  .chat-shell .chat-side{border-right:0}
  .chat-shell:not(.pane-window) .chat-main{display:none}
  .chat-shell.pane-window .chat-side{display:none}
  .msg{max-width:88%}
  .reply-panel{flex-direction:column;align-items:stretch}
  .reply-panel .btn{align-self:flex-end}
  .section-head{padding-top:34px}
}
@media (max-width:560px){
  .container{padding:0 16px}
  .userchip{max-width:150px}
  .forum-toolbar .btn span{display:none}
  .thread-head .btn.danger span{display:none}
}



