/* ---- View Transitions API: мягкие переходы между экранами как в нативе ---- */
@keyframes pamSlideInRight{from{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes pamSlideOutLeft{from{transform:translateX(0);opacity:1}to{transform:translateX(-30px);opacity:0}}
@keyframes pamSlideInLeft{from{transform:translateX(-40px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes pamSlideOutRight{from{transform:translateX(0);opacity:1}to{transform:translateX(30px);opacity:0}}
@keyframes pamFadeIn{from{opacity:0}to{opacity:1}}
@keyframes pamFadeOut{from{opacity:1}to{opacity:0}}
::view-transition-old(root),::view-transition-new(root){animation-duration:.22s;animation-timing-function:cubic-bezier(.4,0,.2,1)}
html[data-nav-dir="forward"]::view-transition-old(root){animation-name:pamSlideOutLeft}
html[data-nav-dir="forward"]::view-transition-new(root){animation-name:pamSlideInRight}
html[data-nav-dir="back"]::view-transition-old(root){animation-name:pamSlideOutRight}
html[data-nav-dir="back"]::view-transition-new(root){animation-name:pamSlideInLeft}
html[data-nav-dir="fade"]::view-transition-old(root){animation-name:pamFadeOut;animation-duration:.14s}
html[data-nav-dir="fade"]::view-transition-new(root){animation-name:pamFadeIn;animation-duration:.18s}
/* Скелетоны для медленной загрузки */
@keyframes pamShimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
.skeleton{background:linear-gradient(90deg,rgba(255,255,255,.04) 0%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.04) 100%);background-size:200% 100%;animation:pamShimmer 1.4s linear infinite;border-radius:8px}
.sk-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.04)}
.sk-avatar{width:46px;height:46px;border-radius:50%;flex:none}
.sk-lines{flex:1;display:flex;flex-direction:column;gap:7px}
.sk-line{height:11px;border-radius:6px}
.sk-line.short{width:40%}
.sk-line.long{width:80%}
/* Pull-to-refresh индикатор */
.ptr-ind{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(-50px);transition:transform .2s ease;width:40px;height:40px;border-radius:50%;background:#1a1a1f;border:2px solid var(--c);display:grid;place-items:center;color:var(--c);font-size:18px;z-index:50;box-shadow:0 4px 12px rgba(0,0,0,.5)}
.ptr-ind.pulling{transform:translateX(-50%) translateY(20px)}
.ptr-ind.refreshing{transform:translateX(-50%) translateY(20px);animation:pamSpin 1s linear infinite}
@keyframes pamSpin{from{transform:translateX(-50%) translateY(20px) rotate(0)}to{transform:translateX(-50%) translateY(20px) rotate(360deg)}}
@font-face{font-family:'Inter';src:url('fonts/InterVariable.woff2') format('woff2-variations');font-weight:100 900;font-display:swap;}
@font-face{font-family:'Inter';src:url('fonts/InterVariable-Italic.woff2') format('woff2-variations');font-weight:100 900;font-style:italic;font-display:swap;}
@font-face{font-family:'CenturyGothic';src:url('fonts/CenturyGothic.ttf') format('truetype');font-weight:400 900;font-style:normal;font-display:swap;}
@font-face{font-family:'GilroyLight';src:url('fonts/Gilroy-Light.ttf') format('truetype');font-weight:100 500;font-style:normal;font-display:swap;}
@font-face{font-family:'Aldrich';src:url('fonts/Aldrich.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap;}
:root{--c:#ff2080;--cr:255,32,128;--bg:#111113;--card:#1b1b1f;--card2:#232329;--line:#2c2c33;--mut:#8b8b95;--ok:#34d27b;}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overflow-x:hidden}
body{background:#000;font-family:'GilroyLight','Inter',sans-serif;color:#fff;display:flex;justify-content:center;min-width:320px;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
.btn,.h1,.ttl,.sectitle,.logo,.tcard .nm,.row .nm,.cb-t,.game-n,.cbl-t,.sb-v,.tcounter,.vrate,.ahead .vn,.bigav,.h1+*[class*="h1"],.coinpill,.timer{font-family:'CenturyGothic','Inter',sans-serif}
/* Long words wrap to prevent overflow (имена/url/email) */
.nm,.ms,.bio,.h1,.h2,.ttl,.row .meta,.tcard .info{word-wrap:break-word;overflow-wrap:break-word;hyphens:auto}
/* Тонкие экраны (320–360): уменьшаем padding и font-size */
@media (max-width:360px){
  .pad{padding-left:12px!important;padding-right:12px!important}
  .h1{font-size:18px!important}
  .h2{font-size:13px!important}
  .btn{font-size:14px!important}
}
#root{width:100%;max-width:430px;height:100dvh;min-height:100vh;background:var(--bg);position:relative;overflow:hidden;display:flex;flex-direction:column}
.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
a,button{font-family:inherit;color:inherit;cursor:pointer}
.hide{display:none!important}

/* header */
.hdr{display:flex;align-items:center;gap:12px;padding:14px 16px;min-height:56px;border-bottom:1px solid var(--line);position:relative}
.hdr .ttl{font-weight:800;font-size:18px}
.hdr .sub{font-size:12px;color:var(--mut)}
.iconbtn{width:44px;height:44px;display:grid;place-items:center;border:none;background:none;color:#fff;border-radius:12px;cursor:pointer;-webkit-tap-highlight-color:rgba(214,51,108,.18);touch-action:manipulation}
.iconbtn.acc{color:var(--c)}
.spacer{flex:1}

/* buttons */
.btn{display:block;width:100%;height:54px;border:none;border-radius:40px;font-size:14px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase}
.btn-filled{background:var(--c);color:#fff;box-shadow:0 8px 24px rgba(var(--cr),.4)}
.btn-outline{background:transparent;border:2px solid var(--c);color:#fff}
.btn-ghost{background:rgba(var(--cr),.14);color:var(--c)}
.btn-sm{height:44px;font-size:12px}

/* top venue strip */
.vstrip{display:flex;align-items:stretch;gap:1px;background:var(--line);border-bottom:1px solid var(--line)}
.vstrip>div{flex:1;background:var(--bg);padding:9px 6px;text-align:center}
.vstrip .k{font-size:10px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px}
.vstrip .v{font-size:13px;font-weight:700;margin-top:2px;color:var(--c)}

/* tabbar — фиксирован внизу экрана, как в нативных приложениях */
.tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;border-top:1px solid var(--line);background:#0d0d0f;padding-bottom:env(safe-area-inset-bottom);z-index:60;width:100%;max-width:430px;margin:0 auto}
/* Скролл-контейнер выше таб-бара получает отступ снизу, чтобы контент не перекрывался */
.scroll{padding-bottom:calc(88px + env(safe-area-inset-bottom))}
.tab{position:relative;flex:1;background:none;border:none;padding:8px 0 10px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--mut);font-size:11px;font-weight:400;font-family:'Aldrich','GilroyLight','Inter',sans-serif;text-transform:uppercase;letter-spacing:1.4px}
.tab.on{color:var(--c)}
.tab svg{width:24px;height:24px}
.tab .tab-ic{width:28px;height:28px;display:block;background:rgba(255,255,255,.55);-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat;transition:background .18s,filter .18s,transform .18s}
.tab.on .tab-ic{background:var(--c);filter:drop-shadow(0 0 5px rgba(214,51,108,.65));transform:translateY(-1px)}
.tab.on::after{content:'';position:absolute;left:14%;right:14%;bottom:calc(env(safe-area-inset-bottom) + 2px);height:2px;background:var(--c);border-radius:2px;box-shadow:0 0 10px 1px rgba(214,51,108,.7),0 -2px 12px 2px rgba(214,51,108,.35);pointer-events:none}
.badge{position:absolute;top:-4px;right:50%;transform:translateX(16px);background:var(--c);color:#fff;font-size:9px;font-weight:800;border-radius:9px;padding:1px 5px}
.tab{position:relative}

/* avatars */
.av{border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff;flex:none}
.av.on::after{content:'';position:absolute;width:12px;height:12px;border-radius:50%;background:var(--ok);border:2px solid var(--card);right:-1px;bottom:-1px}
.avwrap{position:relative;flex:none}

/* lists / cards */
.pad{padding:16px}
.chips{display:flex;gap:8px;overflow-x:auto;padding:12px 16px;border-bottom:1px solid var(--line)}
.chip{flex:none;padding:8px 14px;border-radius:30px;background:var(--card);border:1px solid var(--line);font-size:13px;font-weight:600;color:#ddd;white-space:nowrap}
.chip.on{background:var(--c);border-color:var(--c);color:#fff}

.row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}
.row .nm{font-weight:700;font-size:15px}
.row .ms{font-size:13px;color:var(--mut);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .meta{flex:1;min-width:0}
.sr-sec{margin-bottom:10px}
.sr-t{color:var(--c);font-weight:800;font-size:12px;letter-spacing:1px;text-transform:uppercase;padding:14px 16px 6px}
.qty{display:flex;align-items:center;gap:14px;background:var(--card2);border-radius:12px;padding:6px 12px;flex:none}
.qty .qbtn{width:28px;height:28px;border-radius:8px;background:rgba(var(--cr),.16);color:var(--c);border:none;font-size:19px;font-weight:800;display:grid;place-items:center;line-height:1}
.qty>span{min-width:16px;text-align:center;font-weight:800;font-size:16px}
.spendbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--card2);border-top:1px solid var(--line);margin-bottom:calc(56px + env(safe-area-inset-bottom))}
.spendbar .sb-t{font-size:12px;color:var(--mut)}
.spendbar .sb-v{font-size:19px;font-weight:800;margin-top:2px}
[onclick]{cursor:pointer}
.routebtn{display:inline-flex;align-items:center;gap:5px;background:rgba(var(--cr),.14);color:var(--c);font-weight:700;font-size:13px;padding:8px 12px;border-radius:20px;text-decoration:none;white-space:nowrap}
.vrate{position:absolute;right:10px;bottom:10px;background:rgba(0,0,0,.62);color:#fff;font-weight:800;font-size:14px;padding:5px 11px;border-radius:14px;z-index:2}
.vslider{height:230px;margin:14px 16px 8px;border-radius:18px;overflow:hidden;position:relative;background:#1b1b1e}
.vs-track{display:flex;height:100%;width:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.vs-track::-webkit-scrollbar{display:none}
.vs-slide{flex:none;width:100%;height:100%;background-position:center;background-size:cover;scroll-snap-align:start;scroll-snap-stop:always}
.vs-dots{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:flex;gap:5px;z-index:2;pointer-events:none}
.vs-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.45);transition:all .25s}
.vs-dot.on{background:#fff;width:20px;border-radius:3px}
.rvstars{display:flex;gap:10px;justify-content:center;margin:6px 0 16px}
.rvstar{font-size:34px;color:#3a3a42;line-height:1}
.rvstar.on{color:var(--c)}
.rvarea{width:100%;min-height:92px;background:var(--card);border:1.5px solid var(--line);border-radius:14px;color:#fff;padding:12px 14px;font-family:inherit;font-size:15px;resize:none;outline:none}
.pin{font-size:10px;color:var(--c);text-transform:uppercase;letter-spacing:.5px;font-weight:700}
.unread{background:var(--c);color:#fff;border-radius:13px;min-width:24px;height:24px;display:grid;place-items:center;font-size:12px;font-weight:800;padding:0 7px;align-self:center;flex:none;box-shadow:0 2px 6px rgba(214,51,108,.35)}
/* В строках списка чатов прижимаем бэйдж к правому краю — Telegram-style */
.row{align-items:center}
.row .meta{flex:1;min-width:0}
.row .unread{margin-left:8px}

/* venue cards (places) */
.vcard{margin:14px 16px;border-radius:18px;overflow:hidden;background:var(--card);border:1px solid var(--line)}
.vcard .ph{height:120px;background-size:cover;background-position:center;position:relative}
.vcard .on{position:absolute;top:10px;left:10px;background:rgba(0,0,0,.55);color:#fff;font-size:12px;font-weight:700;padding:4px 9px;border-radius:20px}
.vcard .on b{color:var(--ok)}
.vcard .bd{padding:12px 14px}
.vcard .bd .t{font-weight:800;font-size:16px}
.vcard .bd .a{font-size:13px;color:var(--mut);margin-top:2px}

/* people grid */
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 16px}
.pcard{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.pcard .ph{height:150px;display:grid;place-items:center;font-size:34px;font-weight:800;color:#fff}
.pcard .bd{padding:10px 12px}
.pcard .nm{font-weight:800;font-size:15px}
.pcard .gl{font-size:12px;color:var(--c);font-weight:700;margin-top:2px}
.pcard .tg{font-size:11px;color:var(--mut);margin-top:4px;line-height:1.3}

/* profile */
.seg{display:flex;gap:12px;padding:16px}
.seg .b{flex:1;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;text-align:center}
.seg .b svg{width:26px;height:26px;color:var(--c)}
.seg .b .t{font-size:13px;font-weight:700;margin-top:8px}
.phgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 16px}
.phgrid .c{aspect-ratio:3/4;border-radius:12px;background:var(--card2);display:grid;place-items:center;color:var(--mut);border:1px dashed var(--line);font-size:12px}
.mlist{margin:10px 0}
.mitem{display:flex;align-items:center;gap:12px;padding:15px 16px;border-bottom:1px solid var(--line);font-size:15px;font-weight:600}
.mitem .ic{color:var(--c);width:22px;height:22px;flex:none}
.mitem .ch{margin-left:auto;color:var(--mut)}
.mitem .rv{margin-left:auto;color:var(--c);font-weight:800}
.tgl{width:42px;height:24px;border-radius:14px;background:rgba(255,255,255,.14);position:relative;flex:none;transition:background .18s ease}
.tgl::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .18s ease}
.tgl.on{background:var(--c)}
.tgl.on::after{left:20px}

/* chat view */
.msgs{flex:1;overflow-y:auto;overflow-x:hidden;padding:14px 12px;display:flex;flex-direction:column;gap:8px}
.chatrow{touch-action:pan-y;will-change:transform;-webkit-tap-highlight-color:transparent}
.msg{max-width:78%;padding:9px 13px;border-radius:16px;font-size:14px;line-height:1.35;position:relative;touch-action:pan-y;will-change:transform;-webkit-user-select:none;user-select:none;word-wrap:break-word;overflow-wrap:anywhere;word-break:break-word}
.msg-reply-ic{position:absolute;top:50%;right:-34px;transform:translateY(-50%) scale(.6);width:28px;height:28px;border-radius:50%;background:rgba(214,51,108,.85);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;opacity:0;pointer-events:none}
.msg-quote{display:flex;gap:8px;align-items:stretch;background:rgba(255,255,255,.08);border-radius:8px;padding:5px 8px;margin-bottom:5px;font-size:12.5px;color:#e0e0e0;max-width:100%}
.msg-quote .mq-bar{width:3px;background:rgba(255,255,255,.55);border-radius:2px;flex:none}
.msg.out .msg-quote{background:rgba(255,255,255,.18)}
.msg-quote .mq-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chatbar-wrap{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.chatbar-wrap .chatbar{border-top:none}
.reply-preview{display:flex;align-items:center;gap:10px;padding:8px 14px 6px;background:rgba(214,51,108,.08);border-bottom:1px solid var(--line)}
.reply-preview .rpv-bar{width:3px;height:32px;background:var(--c);border-radius:2px;flex:none}
.reply-preview .rpv-body{flex:1;min-width:0}
.reply-preview .rpv-name{font-size:11px;font-weight:700;color:var(--c);letter-spacing:.3px;margin-bottom:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reply-preview .rpv-msg{font-size:12.5px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reply-preview .rpv-x{border:none;background:transparent;color:var(--mut);font-size:18px;cursor:pointer;padding:4px 8px;line-height:1}
.msg.in{background:var(--card2);align-self:flex-start;border-bottom-left-radius:5px}
.msg.out{background:var(--c);align-self:flex-end;border-bottom-right-radius:5px}
.chatbar{display:flex;align-items:center;gap:6px;padding:8px 8px;border-top:1px solid var(--line);margin-bottom:calc(56px + env(safe-area-inset-bottom));background:#0d0d0f}
.chatbar .cb-field{flex:1;display:flex;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:0 4px 0 14px;min-width:0}
.chatbar .cb-field input{flex:1;min-width:0;height:40px;border:none;background:transparent;color:#fff;padding:0;font-size:14px;outline:none}
.chatbar .cb-emoji{background:transparent;border:none;color:var(--mut);width:36px;height:36px;display:grid;place-items:center;cursor:pointer;flex:none;border-radius:50%;padding:0}
.chatbar .cb-emoji:active{color:var(--c);background:rgba(214,51,108,.12)}
.chatbar .attachbtn{color:var(--mut);background:transparent;border:none;padding:6px;cursor:pointer;flex:none}
.chatbar .attachbtn:active{color:var(--c)}
.chatbar .cb-send{flex:none}
.emoji-pop{position:fixed;left:10px;right:10px;bottom:calc(124px + env(safe-area-inset-bottom));background:#1a1a1f;border:1px solid var(--line);border-radius:16px;padding:10px;display:flex;flex-wrap:wrap;gap:2px;z-index:9000;box-shadow:0 12px 32px rgba(0,0,0,.55);animation:emojiSlide .18s ease;max-height:240px;overflow-y:auto}
body.no-tabbar .emoji-pop{bottom:calc(68px + env(safe-area-inset-bottom))}
.emoji-pop button{flex:0 0 calc(100%/8 - 2px);height:42px;font-size:24px;background:transparent;border:none;cursor:pointer;border-radius:10px;padding:0;line-height:1}
.emoji-pop button:active{background:rgba(255,255,255,.08)}
@keyframes emojiSlide{from{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}
.chat-hdr{display:flex;align-items:center;gap:4px;padding:6px 8px 6px 4px;min-height:60px;border-bottom:1px solid var(--line);background:#0d0d0f;position:relative}
.chat-hdr .back-btn{display:flex;align-items:center;gap:4px;background:transparent;border:none;color:var(--c);padding:6px 6px;cursor:pointer;font-family:inherit;flex:none;border-radius:10px;-webkit-tap-highlight-color:rgba(214,51,108,.18)}
.chat-hdr .back-btn .bk-ic{width:20px;height:20px;display:grid;place-items:center}
.chat-hdr .back-btn .bk-ic svg{width:18px;height:18px}
.chat-hdr .back-btn .bk-cnt{background:rgba(214,51,108,.2);color:var(--c);font-size:12px;font-weight:800;padding:2px 8px;border-radius:11px;min-width:22px;text-align:center;line-height:1.4}
.chat-hdr .back-btn:active{background:rgba(214,51,108,.08)}
.chat-hdr .peer-info{flex:1;display:flex;align-items:center;gap:10px;padding:4px 6px;border-radius:10px;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(255,255,255,.04);min-width:0}
.chat-hdr .peer-info:active{background:rgba(255,255,255,.05)}
.chat-hdr .peer-av{position:relative;width:36px;height:36px;flex:none}
.chat-hdr .peer-av-img{width:36px;height:36px;border-radius:50%;overflow:hidden}
.chat-hdr .peer-dot{position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:var(--ok);border:2px solid #0d0d0f;box-shadow:0 0 6px rgba(52,210,123,.65)}
.chat-hdr .peer-text{display:flex;flex-direction:column;line-height:1.2;min-width:0;overflow:hidden}
.chat-hdr .peer-nm{font-weight:800;font-size:16px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-hdr .peer-sub-on{font-size:11.5px;color:var(--ok);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-hdr .peer-sub-mut{font-size:11.5px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-hdr .hdr-spacer{width:44px;flex:none}
.chat-hdr .iconbtn{flex:none}
.chat-hdr .hdr-act{flex:none;width:auto;padding:0 14px;height:34px;font-size:12.5px;font-weight:700;color:var(--c);border:1px solid rgba(214,51,108,.4);background:rgba(214,51,108,.12);border-radius:10px;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:rgba(214,51,108,.25)}
.chat-hdr .hdr-act:active{background:rgba(214,51,108,.25)}
.msg-img{display:block;max-width:240px;max-height:300px;border-radius:12px;cursor:pointer;object-fit:cover}
.msg-image-wrap{max-width:none!important}
.msg.sys{align-self:center;background:rgba(112,72,232,.14);border:1px solid rgba(112,72,232,.35);max-width:85%;text-align:center;padding:10px 14px;border-radius:14px}
.msg.sys.mut{background:rgba(var(--cr),.14);border-color:rgba(var(--cr),.4)}
.msg.sys.mut .msys-t{color:var(--c)}
.msys-t{color:#a796f3;font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.msys-g{font-size:14px;font-weight:800;margin-top:4px}
.msys-s{font-size:13px;color:var(--mut);margin-top:2px}
.msys-s b{color:var(--c);font-size:15px}
.chatbar-locked{padding:14px 16px;border-top:1px solid var(--line);background:rgba(112,72,232,.08);margin-bottom:calc(56px + env(safe-area-inset-bottom))}
/* В чате таббар скрыт — chatbar опускается на самый низ */
body.no-tabbar .chatbar,body.no-tabbar .chatbar-locked,body.no-tabbar .spendbar{margin-bottom:env(safe-area-inset-bottom)}
body.no-tabbar .tabbar{display:none}
/* Время сообщения — мелким серым в углу пузыря */
.msg-time{display:inline-block;font-size:10.5px;color:rgba(255,255,255,.5);margin-left:8px;vertical-align:bottom;line-height:1;font-weight:400;float:right;padding-top:6px;padding-left:6px}
.msg.out .msg-time{color:rgba(255,255,255,.7)}
/* Разделитель дня — chip */
.msg-day-sep{align-self:center;background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);font-size:11.5px;font-weight:600;padding:4px 12px;border-radius:12px;margin:8px 0;letter-spacing:.3px}
.cbl-t{font-weight:800;font-size:14px;color:#a796f3}
.cbl-s{font-size:12px;color:var(--mut);margin-top:3px;line-height:1.4}
.lockchip{font-size:10px;font-weight:700;color:#a796f3;background:rgba(112,72,232,.18);border:1px solid rgba(112,72,232,.35);padding:2px 6px;border-radius:8px;margin-left:6px;vertical-align:middle}

/* splash + auth */
.center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}
.logo{font-weight:900;font-size:40px;letter-spacing:-1px}
.logo span{color:var(--c)}
.tagline{color:var(--mut);font-weight:700;letter-spacing:3px;font-size:12px;margin-top:10px;text-transform:uppercase}
.counter{margin-top:18px;color:#fff;font-size:14px}
.counter b{color:var(--c)}
.field{width:100%;height:56px;border-radius:14px;border:2px solid var(--line);background:var(--card);color:#fff;font-size:18px;font-weight:700;text-align:center;letter-spacing:2px;outline:none}
.field:focus{border-color:var(--c)}
.phoneInput{width:100%;height:56px;border-radius:14px;border:2px solid var(--line);background:var(--card);display:flex;align-items:center;padding:0 14px;transition:border-color .15s}
.phoneInput:focus-within{border-color:var(--c)}
.phoneInput .phonePrefix{color:#fff;font-size:18px;font-weight:700;letter-spacing:2px;padding-right:8px;flex:none;user-select:none}
.phoneInput .phoneField{flex:1;height:100%;border:none;background:transparent;color:#fff;font-size:18px;font-weight:700;text-align:left;letter-spacing:2px;outline:none;padding:0;border-radius:0}
.tos-list{width:100%;margin-top:18px;display:flex;flex-direction:column;gap:10px}
.tos-row{display:flex;align-items:flex-start;gap:11px;padding:4px 2px;text-align:left;font-size:13px;color:var(--mut);line-height:1.45}
.tos-cb{width:20px;height:20px;border:1.5px solid var(--c);border-radius:5px;display:grid;place-items:center;color:#fff;font-size:14px;font-weight:800;flex:none;background:transparent;line-height:1;margin-top:1px}
.tos-cb.on{background:var(--c)}
.tos-txt{flex:1}
.tos-lnk{color:var(--c);text-decoration:underline;font-weight:600}
.otp{display:flex;gap:12px;justify-content:center}
.otp .d{width:54px;height:64px;border:2px solid var(--line);border-radius:14px;display:grid;place-items:center;font-size:28px;font-weight:800;background:var(--card)}
.otp .d.f{border-color:var(--c)}
.authfoot{padding:16px 24px calc(30px + 68px + env(safe-area-inset-bottom))}
.h1{font-size:24px;font-weight:800;margin-bottom:6px}
.h2{color:var(--mut);font-size:14px;margin-bottom:24px}
.obar{display:flex;align-items:center;gap:12px;padding:10px 16px 0}
.obar-track{flex:1;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.obar-fill{height:100%;background:var(--c);border-radius:3px;transition:width .25s}
.obar-step{color:var(--mut);font-size:13px;font-weight:700;flex:none}
.obbody{flex:1;display:flex;flex-direction:column;justify-content:center;padding:0 16px}
.dobrow{display:flex;gap:12px}
.dobcol{flex:1;display:flex;flex-direction:column;align-items:center;gap:9px}
.step{width:100%;height:96px;background:var(--card);border:1px solid var(--line);border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;position:relative}
.schev{background:none;border:none;padding:3px 10px;display:grid;place-items:center}
.sval{font-size:23px;font-weight:800;color:#fff}
.dlbl{color:var(--mut);font-size:13px}
.msel select{appearance:none;-webkit-appearance:none;background:none;border:none;color:#fff;font-size:15px;font-weight:700;text-align:center;text-align-last:center;width:100%;padding:0 18px;outline:none}
.msel .mchev{position:absolute;right:8px;top:50%;transform:translateY(-50%);pointer-events:none}
.opt{width:100%;padding:18px;border-radius:16px;border:2px solid var(--line);background:var(--card);font-size:16px;font-weight:700;text-align:left;margin-bottom:12px;display:flex;align-items:center;gap:12px}
.opt.on{border-color:var(--c);background:rgba(var(--cr),.12)}
.opt .e{width:30px;text-align:center}
.soon{color:var(--mut);font-size:13px;margin:-4px 2px 0;padding:13px 16px;border:1.5px dashed var(--line);border-radius:14px}

/* modal */
#modal{position:absolute;inset:0;z-index:80;display:none}
#modal.show{display:block}
.scrim{position:absolute;inset:0;background:rgba(0,0,0,.6)}
.sheet{position:absolute;left:0;right:0;bottom:0;background:var(--bg);border-radius:22px 22px 0 0;border-top:1px solid var(--line);padding:8px 0 24px;max-height:90%;overflow-y:auto}
.grab{width:40px;height:4px;border-radius:3px;background:#444;margin:8px auto 12px;cursor:pointer;position:relative}
.grab::before{content:'';position:absolute;inset:-18px -60px;cursor:pointer}
.grab:active{background:var(--c)}
.popup{position:absolute;left:24px;right:24px;top:50%;transform:translateY(-50%);background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:24px;text-align:center}
.popup .em{font-size:40px;margin-bottom:10px}
.small{font-size:13px;color:var(--mut)}
/* ===== design-system (Igor) overrides ===== */
:root{--bg:#1b1b1e;--card:#27272c;--card2:#303036;--line:#3a3a41;--mut:#9a9aa2}
.btn{border-radius:16px}
.btn-sm{border-radius:12px}
.av{box-shadow:0 0 0 2.5px var(--c)}
.av.on::after{border-color:var(--bg)}
.ahead{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.ahead .vn{flex:1;min-width:0;font-weight:800;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ahead .hp{flex:none;display:flex;gap:8px;align-items:center}
.timer{background:var(--c);color:#fff;font-weight:800;font-size:14px;padding:7px 14px;border-radius:22px}
.coinpill{border:1.5px solid var(--c);color:var(--c);font-weight:800;font-size:13px;padding:6px 11px;border-radius:22px;display:inline-flex;gap:6px;align-items:center}
.coinpill .cc,.balpill .cc{border-radius:50%;background:#0b0b0d url('img/coin.jpg') center/cover no-repeat;color:transparent;display:grid;place-items:center;overflow:hidden;text-indent:-9999px;font-size:0;line-height:0}
.coinpill .cc{width:18px;height:18px}
.sectitle{font-size:23px;font-weight:800;padding:16px 16px 6px}
.tinder{padding:8px 4px 6px}
.tcard{border-radius:22px;overflow:hidden;position:relative;aspect-ratio:3/4;display:flex;flex-direction:column;justify-content:flex-end;border:2px solid var(--c)}
.tcard .grad{position:absolute;inset:0;background:linear-gradient(transparent 60%,rgba(0,0,0,.85))}
.tcard .info{position:relative;padding:18px}
.tcard .info .nm{font-size:26px;font-weight:800}
.tcard .info .bio{color:#e3e3e3;font-size:14px;margin-top:4px}
.tacts{display:flex;justify-content:center;gap:24px;padding:16px 0 4px}
.tbtn{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;border:none}
.tbtn.x{background:var(--card2);color:#fff}.tbtn.g{background:#fff;color:var(--c)}.tbtn.p{background:#7048e8;color:#fff}.tbtn.h{background:var(--c);color:#fff}
.tbtn svg{width:28px;height:28px}
.tacts{gap:14px!important}
.tbtn{width:54px!important;height:54px!important}
.tbtn svg{width:24px;height:24px}
/* PNG-кнопки действий в карточке знакомств */
.tbtn-ic{width:54px;height:54px;padding:0;border:none;background:transparent;cursor:pointer;border-radius:50%;display:grid;place-items:center;transition:transform .12s;flex:none}
.tbtn-ic:hover{transform:scale(1.06)}
.tbtn-ic:active{transform:scale(.92)}
.tbtn-ic img{width:54px;height:54px;display:block;border-radius:50%;filter:drop-shadow(0 3px 8px rgba(0,0,0,.4))}
.game-opt{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--card);margin-bottom:8px;text-align:left;cursor:pointer}
.game-opt:hover{border-color:var(--c)}
.game-ic{width:38px;height:38px;border-radius:10px;background:rgba(var(--cr),.16);display:grid;place-items:center;font-size:18px;flex:none}
.game-meta{flex:1;min-width:0}
.game-n{font-weight:800;font-size:14px;color:#fff}
.game-d{font-size:12px;color:var(--mut);margin-top:2px;font-weight:500}
.game-tag{font-weight:800;color:var(--c);font-size:12px;flex:none;background:rgba(var(--cr),.14);padding:5px 9px;border-radius:10px}
.tslider{position:relative}
.tnav{position:absolute;top:36%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;border:none;display:grid;place-items:center;z-index:3;backdrop-filter:blur(4px);transition:background .15s}
.tnav:hover,.tnav:active{background:rgba(0,0,0,.75)}
.tnav.prev{left:8px}
.tnav.next{right:8px}
.tcounter{position:absolute;top:14px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.55);color:#fff;font-size:12px;font-weight:700;padding:5px 12px;border-radius:14px;z-index:2}
.tcard .grad{background:linear-gradient(transparent 35%,rgba(0,0,0,.92))}
.prof{display:flex;flex-direction:column;align-items:center;padding:18px 16px 6px}
.profhead{display:flex;align-items:flex-start;gap:18px;justify-content:center}
.prof .bigav{width:118px;height:118px;border-radius:50%;display:grid;place-items:center;font-size:46px;font-weight:800;color:#fff;box-shadow:0 0 0 3px var(--c);position:relative;cursor:pointer;overflow:hidden}
.prof .bigav.withph{color:transparent}
.prof .bigav .dot{position:absolute;right:7px;bottom:7px;width:18px;height:18px;border-radius:50%;background:var(--ok);border:3px solid var(--bg);z-index:2}
.av-edit{position:absolute;right:-2px;top:-2px;width:32px;height:32px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center;font-size:18px;font-weight:800;border:3px solid var(--bg);z-index:2}
.storybub{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;margin-top:18px}
.storybub .story-mini,.storybub .story-plus{width:66px;height:66px;border-radius:50%;background:var(--card);border:2.5px dashed var(--c);display:grid;place-items:center;color:var(--c);font-size:28px;font-weight:800;background-position:center;background-size:cover}
.storybub.has .story-mini{border-style:solid}
.story-lbl{font-size:11px;color:var(--mut);text-align:center;line-height:1.2}
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.photo-cell{aspect-ratio:3/4;border-radius:12px;background:var(--card2) center/cover;position:relative;overflow:hidden}
.photo-cell.empty{border:1.5px dashed var(--line);display:grid;place-items:center;color:var(--mut);font-size:30px;font-weight:300;cursor:pointer}
.photo-cell.main{box-shadow:0 0 0 2px var(--c)}
.photo-del{position:absolute;top:5px;right:5px;width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,.7);color:#fff;border:none;font-size:13px;display:grid;place-items:center;cursor:pointer}
.photo-main{position:absolute;left:5px;bottom:5px;background:rgba(0,0,0,.7);color:#fff;border:none;font-size:10px;font-weight:700;padding:4px 7px;border-radius:8px;cursor:pointer}
.photo-tag{position:absolute;left:5px;bottom:5px;background:var(--c);color:#fff;font-size:10px;font-weight:800;padding:4px 7px;border-radius:8px;text-transform:uppercase;letter-spacing:.5px}
.story-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.story-thumb{width:44px;height:44px;border-radius:12px;background-position:center;background-size:cover;flex:none}
.prof .nm{font-size:24px;font-weight:800;margin-top:14px}
.prof .sub2{color:var(--mut);font-size:14px;margin-top:3px}
.balpill{margin-top:14px;border:1.5px solid var(--c);color:var(--c);font-weight:800;border-radius:24px;padding:8px 16px;display:inline-flex;gap:8px;align-items:center;font-size:15px}
.balpill .cc{width:20px;height:20px;font-size:11px}
.rate-card{margin:16px;padding:18px;background:var(--card);border-radius:20px;cursor:pointer}
.rate-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.rate-title{font-weight:800;font-size:20px;font-family:'CenturyGothic','Inter',sans-serif}
.rate-row{display:flex;align-items:center;gap:12px;background:var(--bg);padding:12px 14px;border-radius:14px}
.rate-ic{width:36px;height:36px;border-radius:50%;background:#0b0b0d url('img/coin.jpg') center/cover no-repeat;color:transparent;display:grid;place-items:center;font-weight:800;font-size:0;flex:none;overflow:hidden}
.rate-text{font-size:15px}
.rate-text b{font-size:18px;font-weight:800;color:var(--c)}
.splav{display:flex;justify-content:center;margin-top:6px}
.splav .av{margin-left:-10px}
/* Места — планирование (МячМяч-стиль) */
.cityhdr{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 4px}
.city{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px}
.flag{width:22px;height:15px;border-radius:3px;overflow:hidden;display:flex;flex-direction:column;flex:none}
.flag i{flex:1}
.flt{color:var(--c);font-weight:700;font-size:15px}
.map-btn{display:inline-flex;align-items:center;gap:5px;color:var(--c);font-weight:700;font-size:13px;background:rgba(var(--cr),.14);padding:6px 10px;border-radius:14px}
.map-sheet{max-height:95%;padding:0;display:flex;flex-direction:column}
.map-top{display:flex;align-items:center;justify-content:space-between;padding:4px 16px 10px}
.map-iframe{flex:1;width:100%;border:0;min-height:50vh;background:#1b1b1e}
.map-legend{border-top:1px solid var(--line);max-height:32vh;overflow-y:auto;padding:4px 0}
.ml-num{width:30px;height:30px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px;flex:none}
.msearch{padding:10px 16px 14px}
.searchbox{display:flex;align-items:center;gap:10px;width:100%;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.searchbox svg{flex:none}
.searchbox input{flex:1;background:none;border:none;outline:none;color:#fff;font-family:inherit;font-size:14px;min-width:0}
.searchbox input::placeholder{color:var(--mut)}
.dates{display:flex;gap:10px;overflow-x:auto;padding:8px 16px 14px}
.dpill{flex:none;width:62px;border:1px solid var(--line);background:var(--card);border-radius:16px;padding:8px 0;text-align:center}
.dpill.on{background:var(--c);border-color:var(--c)}
.dpill .mo,.dpill .wd{font-size:11px;color:var(--mut)}
.dpill.on .mo,.dpill.on .wd{color:#fff}
.dpill .dn{font-size:20px;font-weight:800;margin:1px 0}
.promo2{margin:0 16px 14px;border-radius:18px;background:linear-gradient(135deg,#3a1f5d,#1b1b1e);padding:18px;border:1px solid var(--line)}
.promo2 .pb{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.5px;background:var(--c);color:#fff;padding:3px 8px;border-radius:6px}
.promo2 h4{font-size:18px;font-weight:800;margin:10px 0 4px}
.promo2 p{font-size:13px;color:#cfcfd6;line-height:1.4}
.promo2 .cta{margin-top:12px;color:var(--c);font-weight:800;font-size:14px}
.vcard2{margin:0 16px 14px;border-radius:18px;overflow:hidden;background:var(--card);border:1px solid var(--line)}
.vcard2 .ph{height:120px;position:relative}
.vcard2 .rate{position:absolute;bottom:10px;left:10px;background:rgba(0,0,0,.55);padding:5px 10px;border-radius:14px;font-size:12.5px;font-weight:700;backdrop-filter:blur(6px);color:#fff}
.vcard2 .favbtn{position:absolute;top:8px;right:8px;width:36px;height:36px;border-radius:50%;background:rgba(0,0,0,.45);display:grid;place-items:center;font-size:19px;line-height:1;color:rgba(255,255,255,.8)}
.vcard2 .favbtn.on{color:var(--c);background:rgba(0,0,0,.55)}
.vcard2 .bd{padding:12px 14px}
.vcard2 .t{font-weight:800;font-size:16px}
.vcard2 .a{color:var(--mut);font-size:13px;margin-top:2px}
.vcard2.active{border-color:var(--c);box-shadow:0 0 0 1px var(--c),0 6px 22px rgba(var(--cr),.35)}
.vcard2 .here{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:var(--c);color:#fff;font-weight:800;font-size:11px;letter-spacing:.5px;padding:5px 11px;border-radius:14px;text-transform:uppercase}
.checkin-banner{display:flex;align-items:center;gap:14px;margin:6px 16px 14px;padding:14px;background:linear-gradient(135deg,rgba(var(--cr),.18),rgba(var(--cr),.06));border:1px solid rgba(var(--cr),.4);border-radius:18px}
.checkin-banner .cb-ic{width:44px;height:44px;flex:none;border-radius:12px;background:var(--c);color:#fff;display:grid;place-items:center}
.checkin-banner .cb-t{font-weight:800;font-size:15px}
.checkin-banner .cb-s{color:var(--mut);font-size:12px;margin-top:3px;line-height:1.35}
.locked-hint{color:var(--mut);font-size:12px;font-style:italic;padding:0 14px;flex:none}
.tchips{display:flex;gap:8px;flex-wrap:wrap}
.tchip{padding:9px 14px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-weight:600;font-size:14px;color:#ddd}
.tchip.on{background:var(--c);border-color:var(--c);color:#fff}
.gchip{font-size:11px;font-weight:700;color:var(--c);background:rgba(var(--cr),.14);border:1px solid rgba(var(--cr),.3);padding:3px 8px;border-radius:8px}
.qrbox{width:200px;height:200px;border:2px dashed var(--c);border-radius:24px;display:grid;place-items:center;margin:0 auto;color:var(--c)}
.qrbox svg{width:88px;height:88px}
