/* Balance Messenger — mobile-first, light and dark */
:root{--bg:#f4f5fb;--panel:#fff;--ink:#17162b;--muted:#6b6f86;--line:#e6e7f0;--brand:#5b6cff;--brand2:#7b5bff;--mine:#5b6cff;--mine-ink:#fff;--their:#fff;--danger:#d33;--ok:#1a9d55;
  --r:18px;--safe-b:env(safe-area-inset-bottom);--safe-t:env(safe-area-inset-top)}
@media (prefers-color-scheme:dark){:root{--bg:#0f1020;--panel:#181a2e;--ink:#eceefa;--muted:#9a9db8;--line:#2a2d46;--their:#22253d;--mine:#5b6cff}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overscroll-behavior:none;background:var(--bg);color:var(--ink);font:16px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;overflow:hidden}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
#app{height:100dvh;display:flex;flex-direction:column;max-width:760px;margin:0 auto;background:var(--bg)}
.top{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--safe-t)) 14px 10px;background:var(--panel);border-bottom:1px solid var(--line);min-height:56px}
.top h1{font-size:19px;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .sub{font-size:12px;color:var(--muted);font-weight:400}
.ibtn{width:40px;height:40px;border-radius:12px;border:0;background:transparent;display:grid;place-items:center;font-size:20px;color:var(--brand)}
.ibtn:active{background:var(--line)}
.logo{width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,var(--brand),var(--brand2));display:grid;place-items:center;color:#fff;font-weight:800}
.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.auth{flex:1;display:flex;flex-direction:column;justify-content:center;padding:24px 22px calc(24px + var(--safe-b));gap:14px;max-width:420px;width:100%;margin:0 auto}
.auth h2{font-size:28px;margin:8px 0 0}
.auth p{color:var(--muted);margin:0}
.tabs{display:flex;background:var(--line);border-radius:14px;padding:4px}
.tabs button{flex:1;border:0;background:transparent;padding:10px;border-radius:11px;font-weight:600;color:var(--muted)}
.tabs button.on{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
label.f{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--muted)}
.inp{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel);outline:none}
.inp:focus{border-color:var(--brand)}
.btn{border:0;border-radius:14px;padding:14px 16px;font-weight:700;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff}
.btn:disabled{opacity:.6}
.btn.ghost{background:var(--panel);color:var(--brand);border:1px solid var(--line)}
.btn.danger{background:var(--panel);color:var(--danger);border:1px solid var(--line)}
.note{font-size:13px;color:var(--muted)}
.err{color:var(--danger);font-size:14px;min-height:1.2em}
.chat-row{display:flex;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--panel);width:100%;border-left:0;border-right:0;border-top:0;text-align:left}
.chat-row:active{background:var(--line)}
.ava{flex:0 0 46px;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:18px}
.chat-meta{flex:1;min-width:0}
.chat-meta b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-meta span{display:block;color:var(--muted);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:12px;color:var(--muted)}
.badge{background:var(--brand);color:#fff;border-radius:10px;padding:1px 7px;font-size:12px;font-weight:700}
.empty{padding:40px 24px;text-align:center;color:var(--muted)}
.msgs{flex:1;overflow-y:auto;padding:12px 10px;display:flex;flex-direction:column;gap:4px}
.day{align-self:center;font-size:12px;color:var(--muted);background:var(--panel);padding:3px 10px;border-radius:10px;margin:8px 0}
.bub{max-width:80%;padding:8px 12px 6px;border-radius:var(--r);background:var(--their);align-self:flex-start;box-shadow:0 1px 1px rgba(0,0,0,.05);word-wrap:break-word;white-space:pre-wrap}
.bub.me{align-self:flex-end;background:var(--mine);color:var(--mine-ink)}
.bub .who{font-size:12px;font-weight:700;color:var(--brand);margin-bottom:2px}
.bub .t{font-size:11px;opacity:.65;text-align:right;margin-top:2px}
.bub.lock{font-style:italic;opacity:.7}
.bub img{max-width:100%;border-radius:12px;display:block;margin:2px 0}
.bub a.file{color:inherit;text-decoration:underline}
.composer{display:flex;align-items:flex-end;gap:8px;padding:8px 10px calc(8px + var(--safe-b));background:var(--panel);border-top:1px solid var(--line)}
.composer textarea{flex:1;resize:none;max-height:140px;min-height:42px;padding:10px 14px;border:1px solid var(--line);border-radius:21px;background:var(--bg);outline:none}
.send{width:42px;height:42px;border-radius:50%;border:0;background:var(--brand);color:#fff;font-size:18px;display:grid;place-items:center;flex:0 0 42px}
.sheet-bg{position:fixed;inset:0;background:rgba(10,10,30,.45);display:flex;align-items:flex-end;justify-content:center;z-index:10}
.sheet{background:var(--panel);width:100%;max-width:760px;border-radius:22px 22px 0 0;padding:18px 18px calc(18px + var(--safe-b));display:flex;flex-direction:column;gap:12px;max-height:90dvh;overflow:auto}
.sheet h3{margin:0;font-size:19px}
.fp{font-family:ui-monospace,Menlo,monospace;font-size:14px;letter-spacing:.5px;background:var(--bg);padding:10px;border-radius:12px;text-align:center}
.lockline{text-align:center;font-size:12px;color:var(--muted);padding:6px}
.fab{position:absolute;right:18px;bottom:calc(18px + var(--safe-b));width:56px;height:56px;border-radius:50%;border:0;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;font-size:26px;box-shadow:0 6px 18px rgba(91,108,255,.4)}
.list-wrap{position:relative;flex:1;display:flex;flex-direction:column;min-height:0}
/* v2 */
.logo.big{width:56px;height:56px;border-radius:16px;font-size:26px}
.link{border:0;background:none;color:var(--brand);padding:6px;font-weight:600;align-self:center}
.tip{display:block;width:calc(100% - 20px);margin:10px;padding:12px 14px;border:1px dashed var(--brand);border-radius:14px;background:var(--panel);color:var(--ink);text-align:left;font-size:14px}
.group{display:flex;flex-direction:column;gap:10px;padding-top:6px;border-top:1px solid var(--line)}
.group h4{margin:6px 0 0;font-size:15px}
.htitle{flex:1;min-width:0}
.htitle h1{font-size:17px}
.top .sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ibtn.back{font-size:30px}
.quote{display:flex;flex-direction:column;border-left:3px solid currentColor;padding:2px 8px;margin:2px 0 4px;border-radius:4px;background:rgba(127,127,160,.12);font-size:13px;cursor:pointer;min-width:0}
.quote b{font-size:12px}
.quote span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.85}
.bub.me .quote{background:rgba(255,255,255,.18)}
.replybar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel);border-top:1px solid var(--line);color:var(--brand)}
.replybar .quote{flex:1;color:var(--brand)}
.replybar .quote span{color:var(--ink)}
.tick{font-size:11px;letter-spacing:-2px}
.bub audio{max-width:240px;height:40px;display:block}
.bub.flash{outline:2px solid var(--brand2)}
.toast{position:fixed;left:50%;bottom:calc(90px + var(--safe-b));transform:translate(-50%,20px);background:#17162b;color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;opacity:0;transition:.25s;z-index:20;max-width:90vw}
.toast.on{opacity:.95;transform:translate(-50%,0)}
.rec{font-size:28px;text-align:center;font-variant-numeric:tabular-nums;padding:12px}
.bub{-webkit-user-select:text;user-select:text;-webkit-touch-callout:none}

/* keyboard on iPhone: the body never scrolls, the app follows the visible area */
body{position:fixed;inset:0}
#app{position:absolute;left:0;right:0;top:0;will-change:transform}
html.kb .composer{padding-bottom:8px}
html.kb .top{padding-top:10px}
.msgs{overscroll-behavior:contain}
/* v3 */
.ava{overflow:hidden;position:relative}
.ava img{width:100%;height:100%;object-fit:cover;display:block}
.ava.online::after{content:"";position:absolute;right:1px;bottom:1px;width:12px;height:12px;border-radius:50%;background:var(--ok);border:2px solid var(--panel)}
.top .ava{flex:0 0 38px;width:38px;height:38px;font-size:15px}
.phead{display:flex;flex-direction:column;align-items:center;gap:6px}
.pava .ava{width:84px;height:84px;font-size:34px}
.switch{display:flex;gap:10px;align-items:flex-start;font-size:15px;cursor:pointer}
.switch input{width:20px;height:20px;margin-top:1px;accent-color:var(--brand);flex:0 0 20px}
.lock{position:fixed;inset:0;background:var(--bg);z-index:30;display:flex}
.inp.pin{font-size:24px;text-align:center;letter-spacing:8px}
select.inp{appearance:auto}
/* bot */
.bbtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.bbtn{border:1px solid var(--brand);background:transparent;color:var(--brand);border-radius:12px;padding:7px 12px;font-size:14px;font-weight:600}
.bbtn:active{background:var(--brand);color:#fff}
a.lnk{color:inherit;text-decoration:underline;word-break:break-all}
/* swipes */
.bub{position:relative}
.bub.swipe-ok::after{content:"↩";position:absolute;right:-30px;top:50%;transform:translateY(-50%);font-size:18px;color:var(--brand)}
.verified{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:#2aabee;color:#fff;font-size:10px;font-weight:900;margin-left:5px;vertical-align:1px}
.okline{margin:0;color:var(--ok);font-weight:600}
img.logo{display:block;object-fit:cover;background:none;border-radius:50%;box-shadow:0 0 0 2px rgba(95,180,255,.35)}
img.logo.big{width:72px;height:72px;border-radius:50%}
.verified{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}
.chat-meta b{display:flex;align-items:center;gap:0;min-width:0}
.chat-meta b .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.chat-meta b .nm{color:var(--ink);font-size:16px;display:block}.chat-meta b .verified{color:#fff;font-size:10px;display:inline-flex}
/* sheets & devices */
.grab{width:42px;height:5px;border-radius:3px;background:var(--line);margin:-6px auto 4px;flex:0 0 auto}
.sheet{will-change:transform}
.dev{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.dev-info{flex:1;min-width:0;display:flex;flex-direction:column}
.dev-info span{font-size:13px;color:var(--muted)}
.btn.small{padding:8px 12px;font-size:14px}
.bbtns{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.bbtn{text-align:center;padding:9px 8px}

/* BC_PHOTO_VIEWER_V1 */
.viewer{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.94);display:flex;align-items:center;justify-content:center;touch-action:pinch-zoom}
.viewer img{max-width:100vw;max-height:100vh;object-fit:contain;touch-action:pinch-zoom}
.viewer-bar{position:fixed;top:calc(env(safe-area-inset-top) + 10px);right:12px;display:flex;gap:10px}
.viewer-bar a,.viewer-bar button{width:44px;height:44px;border-radius:22px;border:0;background:rgba(255,255,255,.18);color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer}
.msg img,.bubble img{cursor:zoom-in}

/* BALANCE_CHAT_DESKTOP_V1 */
#app.desk{max-width:none;flex-direction:row}
#app.desk .side{flex:0 0 380px;max-width:40vw;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);background:var(--panel)}
#app.desk .main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}
#app.desk .chat-row{cursor:pointer;border-radius:12px;margin:2px 6px;width:calc(100% - 12px);border-bottom:0}
#app.desk .chat-row:hover{background:var(--bg)}
#app.desk .chat-row.on{background:var(--brand)}
#app.desk .chat-row.on .nm,#app.desk .chat-row.on span,#app.desk .chat-row.on .chat-side{color:#fff}
#app.desk .bub{max-width:min(620px,70%)}
#app.desk .msgs{padding:16px 6%}
#app.desk .composer{padding:10px 6% 12px}
.pick{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--muted)}
.pick img{width:96px;height:96px;border-radius:50%;opacity:.85}
@media (min-width:900px){
  .sheet-bg{align-items:center}
  .sheet{max-width:520px;border-radius:22px;max-height:86vh}
  .grab{display:none}
}

/* BALANCE_CHAT_VOICE_UI_V1 */
.voice{display:flex;align-items:center;gap:10px;min-width:210px;max-width:260px;padding:2px 0}
.vplay{flex:0 0 40px;width:40px;height:40px;border-radius:50%;border:0;background:var(--brand);color:#fff;font-size:15px;display:grid;place-items:center;padding:0}
.bub.me .vplay{background:#fff;color:var(--brand)}
.vbar{position:relative;flex:1;height:28px;display:flex;align-items:center;gap:2px;cursor:pointer}
.vbar i{flex:1;background:currentColor;opacity:.35;border-radius:2px;min-height:3px}
.vfill{position:absolute;left:0;top:0;bottom:0;width:0;background:linear-gradient(90deg,rgba(255,255,255,.0),rgba(255,255,255,.0));border-right:2px solid currentColor;pointer-events:none}
.vtime{font-size:12px;opacity:.8;font-variant-numeric:tabular-nums;min-width:32px;text-align:right}

/* BALANCE_CHAT_CALLS_V1 */
.call{position:fixed;inset:0;z-index:9000;background:radial-gradient(circle at 50% 30%,#2a2f6b,#0b0c1a 70%);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}
.call-remote{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000;display:none}
.call.has-remote .call-remote{display:block}
.call-local{position:absolute;right:14px;top:calc(14px + env(safe-area-inset-top));width:28vw;max-width:180px;aspect-ratio:3/4;object-fit:cover;border-radius:14px;background:#000;display:none;transform:scaleX(-1);box-shadow:0 6px 20px rgba(0,0,0,.5)}
.call.has-local .call-local{display:block}
.call-who{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:0 20px}
.call.has-remote .call-who{position:absolute;top:calc(18px + env(safe-area-inset-top));left:16px;align-items:flex-start;text-shadow:0 1px 4px #000}
.call.has-remote .call-ava{display:none}
.call-ava .ava{width:112px;height:112px;font-size:44px;flex:0 0 112px}
.call-who h2{margin:6px 0 0;font-size:26px}
.call.has-remote .call-who h2{font-size:18px;margin:0}
.call-st{opacity:.85;font-size:15px;font-variant-numeric:tabular-nums}
.call-bar{position:absolute;bottom:calc(34px + env(safe-area-inset-bottom));left:0;right:0;display:flex;justify-content:center;gap:18px;flex-wrap:wrap}
.call-btn{width:62px;height:62px;border-radius:50%;border:0;background:rgba(255,255,255,.18);color:#fff;font-size:24px;display:grid;place-items:center;backdrop-filter:blur(6px)}
.call-btn.off{background:rgba(255,255,255,.85);color:#222}
.call-btn.red{background:#e5484d}
.call-btn.green{background:#30a46c}

/* BALANCE_CHAT_BOT_KEYBOARD_V1 */
.botkb{background:var(--panel);border-top:1px solid var(--line);padding:8px 8px calc(8px + var(--safe-b));max-height:42vh;overflow-y:auto}
.botkb-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.botkb-btn{border:0;background:var(--bg);color:var(--ink);border-radius:12px;padding:12px 8px;font-size:15px;font-weight:600;text-align:center}
.botkb-btn:active{background:var(--brand);color:#fff}
.botkb-btn.alt{color:var(--brand)}
.botkb .kbtoggle{width:auto;height:auto;padding:10px;border-radius:12px;background:var(--bg);grid-column:span 1}

/* BALANCE_CHAT_THEME_V1: a chosen theme beats the system one */
:root[data-theme=light]{--bg:#f4f5fb;--panel:#fff;--ink:#17162b;--muted:#6b6f86;--line:#e6e7f0;--their:#fff;--mine:#5b6cff;color-scheme:light}
:root[data-theme=dark]{--bg:#0f1020;--panel:#181a2e;--ink:#eceefa;--muted:#9a9db8;--line:#2a2d46;--their:#22253d;--mine:#5b6cff;color-scheme:dark}

/* BALANCE_CHAT_BOT_KEYBOARD_V2 */
.botkb{flex:0 0 auto}
.botkb + .composer{border-top:0}

/* BALANCE_CHAT_UPLOAD_UI_V1 */
.bub.pending{opacity:.95}
.up-box{position:relative;min-width:140px;min-height:90px;display:flex;align-items:center;justify-content:center}
.up-box img{max-width:100%;max-height:260px;border-radius:12px;display:block;filter:brightness(.6) blur(1px)}
.up-file{padding:18px 54px 18px 4px}
.up-ring{position:absolute;width:52px;height:52px;display:grid;place-items:center}
.up-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.up-ring circle{fill:none;stroke-width:4}
.up-ring .bg{stroke:rgba(255,255,255,.3)}
.up-ring .fg{stroke:#fff;stroke-linecap:round;transition:stroke-dashoffset .2s}
.up-ring:not(.det) svg{animation:upspin 1s linear infinite}
.up-ring:not(.det) .fg{stroke-dashoffset:80 !important}
.up-pct{font-size:11px;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}
@keyframes upspin{to{transform:rotate(270deg)}}
.bub.failed{background:#e5484d !important}

/* BALANCE_CHAT_CARD_V1 */
.card-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.card-row{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;background:var(--bg);text-align:left;border:0;width:100%;color:var(--ink)}
.file-row{cursor:pointer}
.media-body{display:flex;flex-direction:column;gap:6px;min-height:80px}
.media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px}
.media-cell{position:relative;aspect-ratio:1;border:0;padding:0;background:var(--bg);overflow:hidden;border-radius:6px;cursor:pointer}
.media-cell img,.media-cell video{width:100%;height:100%;object-fit:cover;display:block}
.media-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:22px;text-shadow:0 1px 4px #000}

/* BALANCE_CHAT_SHEET_FIX_V1: fields in sheets never squash; iOS date field stays inside */
.sheet > *{flex-shrink:0}
textarea.inp{min-height:68px;resize:vertical;font:inherit}
input[type=date].inp{-webkit-appearance:none;appearance:none;display:block;width:100%;max-width:100%;min-width:0;min-height:48px;text-align:left}
label.f{min-width:0;max-width:100%}

/* BALANCE_CHAT_CARD_V2: tidier contact card */
.pava .ava{flex:0 0 92px !important;width:92px !important;height:92px !important;aspect-ratio:1/1;border-radius:50% !important;font-size:38px}
.phead h3{margin:4px 0 0;font-size:21px}
.card-acts{grid-template-columns:repeat(2,1fr);gap:10px}
.card-acts .btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:11px 8px;font-size:15px;border-radius:14px}
.sheet .tabs button{white-space:nowrap;font-size:14px;padding:9px 4px;overflow:hidden;text-overflow:ellipsis}
.sheet > .btn.ghost,.sheet > .btn.danger{text-align:left;padding:13px 16px;border-radius:14px;font-size:15px;font-weight:600;border:0;background:var(--bg)}
.sheet > .btn.danger{color:var(--danger)}
.media-grid{border-radius:12px;overflow:hidden}

/* BALANCE_CHAT_SAFETY_V1 */
.devwarn{align-self:center;max-width:92%;text-align:center;font-size:13px;padding:8px 12px;border-radius:12px;background:rgba(245,159,0,.15);color:var(--ink);margin:6px 0;cursor:pointer}
.devwarn.strong{background:rgba(229,72,77,.18)}
.safety-code{font-size:16px;letter-spacing:1px;line-height:1.7;word-spacing:6px}

/* BALANCE_CHAT_CHANNELS_V1 */
.readonly-bar{padding:14px;text-align:center;color:var(--muted);background:var(--panel);border-top:1px solid var(--line);padding-bottom:calc(14px + var(--safe-b))}
.search-res{display:flex;flex-direction:column;gap:2px;max-height:46vh;overflow:auto}
.search-res .chat-row{border-radius:12px;border-bottom:0}
.preview-feed{display:flex;flex-direction:column;gap:6px}

/* BALANCE_CHAT_CIRCLES_V1 */
.bub.round-bub{background:transparent !important;box-shadow:none;padding:2px}
.round{position:relative;width:220px;height:220px;border-radius:50%;overflow:hidden;cursor:pointer;background:#000}
.round video{width:100%;height:100%;object-fit:cover;display:block}
.round.playing{box-shadow:0 0 0 3px var(--brand)}
.round-time{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:rgba(0,0,0,.45);color:#fff;font-size:12px;padding:2px 8px;border-radius:10px}
.circle-rec{position:fixed;inset:0;z-index:9500;background:rgba(10,10,25,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}
.circle-wrap{position:relative;width:min(78vw,340px);aspect-ratio:1;border-radius:50%;overflow:hidden;box-shadow:0 0 0 4px rgba(255,255,255,.15)}
.circle-view{width:100%;height:100%;object-fit:cover}
.circle-view.mirror{transform:scaleX(-1)}
.circle-prog{position:absolute;inset:0;border-radius:50%;background:conic-gradient(#e5484d var(--p,0%),transparent 0);-webkit-mask:radial-gradient(circle,transparent 66%,#000 67%);mask:radial-gradient(circle,transparent 66%,#000 67%);pointer-events:none}
.circle-timer{color:#fff;font-size:18px;font-variant-numeric:tabular-nums}
.circle-rec .call-bar{position:static}

/* BALANCE_CHAT_ICONS_V1 */
.send svg,.icon-btn svg{display:block}
.icon-btn{color:var(--muted)}

/* BALANCE_CHAT_FOLDERS_V1 */
.folder-bar{display:flex;gap:6px;overflow-x:auto;padding:8px 10px;background:var(--panel);border-bottom:1px solid var(--line);scrollbar-width:none}
.folder-bar::-webkit-scrollbar{display:none}
.folder-tab{flex:0 0 auto;border:0;background:var(--bg);color:var(--muted);padding:7px 14px;border-radius:16px;font-size:14px;font-weight:600;white-space:nowrap}
.folder-tab.on{background:var(--brand);color:#fff}
.folder-tab.add{background:transparent;color:var(--brand)}
.btn.sel{background:var(--brand) !important;color:#fff !important}
.folder-chats{display:flex;flex-direction:column;gap:8px;max-height:34vh;overflow:auto;padding:4px 2px}

/* BALANCE_CHAT_STICKERS_V1 */
.sticker-bub .t{background:rgba(0,0,0,.35);color:#fff;border-radius:8px;padding:0 6px;display:inline-block;float:right}
.sticker-emoji{font-size:96px;line-height:1.1}
.sticker-img{width:170px;height:170px;object-fit:contain;display:block}
.sticker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;max-height:44vh;overflow:auto}
.sticker-pick{aspect-ratio:1;border:0;border-radius:14px;background:var(--bg);font-size:38px;display:grid;place-items:center;padding:4px;cursor:pointer}
.sticker-pick img{width:100%;height:100%;object-fit:contain}
.sticker-pick.add{color:var(--brand);font-size:30px}

/* BALANCE_CHAT_PACKS_V1 */
.sticker-sugg{display:flex;gap:6px;overflow-x:auto;padding:6px 10px;background:var(--panel);border-top:1px solid var(--line)}
.sticker-pick.small{flex:0 0 64px;width:64px;height:64px;font-size:34px}

/* BALANCE_CHAT_CIRCLES_V2: recorder in the app style */
.circle-rec{position:fixed;inset:0;z-index:9500;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:20px}
.circle-wrap{position:relative;width:min(80vw,360px);aspect-ratio:1;border-radius:50%;overflow:hidden;background:#000;box-shadow:0 10px 40px rgba(91,108,255,.25)}
.circle-view{width:100%;height:100%;display:block;object-fit:cover;transform:none}
.circle-prog{position:absolute;inset:0;border-radius:50%;background:conic-gradient(var(--brand) var(--p,0%),rgba(255,255,255,.18) 0);-webkit-mask:radial-gradient(circle,transparent 67.5%,#000 68.5%);mask:radial-gradient(circle,transparent 67.5%,#000 68.5%);pointer-events:none}
.circle-timer{color:var(--ink);font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:6px}
.rec-dot{width:10px;height:10px;border-radius:50%;background:#e5484d;animation:recblink 1.2s infinite}
@keyframes recblink{50%{opacity:.25}}
.circle-hint{color:var(--muted);font-size:14px}
.circle-bar{display:flex;gap:22px;align-items:center}
.circle-btn{width:60px;height:60px;border-radius:50%;border:0;display:grid;place-items:center;cursor:pointer}
.circle-btn.ghost{background:var(--panel);color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.08)}
.circle-btn.primary{width:70px;height:70px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;box-shadow:0 6px 18px rgba(91,108,255,.4)}
.circle-btn:disabled{opacity:.5}

/* BALANCE_CHAT_CALL_ICONS_V1 */
.call-btn svg{display:block}
.call-btn.off{background:rgba(255,255,255,.9);color:#1d1d2b}
.call-btn.off svg{opacity:.85}
.call-btn.off::after{content:"";position:absolute;width:34px;height:2.5px;background:currentColor;transform:rotate(-45deg);border-radius:2px}
.call-btn{position:relative}

/* BALANCE_CHAT_CALL_LOG_V1 */
.bub.call-log{display:flex;flex-direction:column;gap:6px;min-width:200px}
.call-log-row{display:flex;align-items:center;gap:8px;font-weight:600}
.call-log-row.missed{color:var(--danger)}
.call-log-ico{font-size:18px}
.call-again{align-self:flex-start;border:0;background:rgba(127,127,160,.15);color:inherit;border-radius:10px;padding:5px 10px;font-size:13px;font-weight:600;cursor:pointer}

/* BALANCE_CHAT_CALL_ICONS_V2 */
.hdr-ico svg{display:block}
.hdr-ico{color:var(--brand)}
.call-log-ico{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:rgba(127,127,160,.15)}
.call-log-ico svg{width:18px;height:18px}
.call-log-row.missed .call-log-ico{background:rgba(229,72,77,.15)}
.card-acts .btn svg{width:20px;height:20px;flex:0 0 auto}

/* BALANCE_CHAT_CIRCLES_SEEK_V1 */
.round-seek{position:absolute;inset:0;border-radius:50%;background:conic-gradient(var(--brand) var(--p,0%),transparent 0);-webkit-mask:radial-gradient(circle,transparent 66%,#000 67%);mask:radial-gradient(circle,transparent 66%,#000 67%);pointer-events:none;opacity:0;transition:opacity .2s}
.round.playing .round-seek{opacity:1}
.circle-wrap.switching::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.25) url('data:image/svg+xml;utf8,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 50 50%22><circle cx=%2225%22 cy=%2225%22 r=%2220%22 fill=%22none%22 stroke=%22white%22 stroke-width=%224%22 stroke-dasharray=%2290 60%22><animateTransform attributeName=%22transform%22 type=%22rotate%22 from=%220 25 25%22 to=%22360 25 25%22 dur=%22.8s%22 repeatCount=%22indefinite%22/></circle></svg>') center/48px no-repeat;border-radius:50%}

/* BALANCE_CHAT_CIRCLES_V3 */
.round{touch-action:pan-y;user-select:none;-webkit-user-select:none}
.round-seek{background:conic-gradient(var(--brand) var(--p,0%),rgba(255,255,255,.28) 0);-webkit-mask:radial-gradient(circle,transparent 90%,#000 91%);mask:radial-gradient(circle,transparent 90%,#000 91%)}
.round-knob{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .2s}
.round-knob::before{content:"";position:absolute;left:50%;top:1px;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:#fff;box-shadow:0 1px 5px rgba(0,0,0,.45)}
.round.playing .round-knob{opacity:1}
.round.seeking .round-knob::before{width:22px;height:22px;margin-left:-11px;top:-2px}
.round.playing{box-shadow:none}
.round-icon{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;background:rgba(0,0,0,.45);color:#fff;display:grid;place-items:center;pointer-events:none;opacity:0;transform:scale(.8);transition:opacity .25s,transform .25s}
.round-icon.show{opacity:1;transform:scale(1)}
.round.playing:not(.paused) .round-icon.show{animation:rfade .7s forwards}
@keyframes rfade{0%{opacity:1;transform:scale(1)}60%{opacity:1}100%{opacity:0;transform:scale(1.15)}}
.round-stop{position:absolute;right:22px;top:22px;width:30px;height:30px;border-radius:50%;border:0;background:rgba(0,0,0,.5);color:#fff;display:none;place-items:center;cursor:pointer;padding:0}
.round.playing .round-stop{display:grid}
.circle-wrap{transform-style:preserve-3d;will-change:transform}
.circle-wrap.switching::after{display:none}

/* BALANCE_CHAT_CIRCLES_V4 */
.bub.round-bub{position:relative;overflow:visible}
.round{overflow:visible;background:transparent;width:230px;height:230px}
.round video{border-radius:50%;background:#000;width:210px;height:210px;margin:10px}
.round-seek{position:absolute;inset:0;background:none;-webkit-mask:none;mask:none;opacity:0;transition:opacity .2s;pointer-events:none}
.round-seek svg{width:100%;height:100%;transform:rotate(-90deg)}
.round-seek circle{fill:none;stroke-width:3}
.rs-bg{stroke:rgba(127,127,160,.25)}
.rs-fg{stroke:var(--brand);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100}
.round.playing .round-seek{opacity:1}
.round-knob::before{top:0;width:14px;height:14px;margin-left:-7px;background:var(--brand);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.3);box-sizing:border-box}
.round.seeking .round-knob::before{width:20px;height:20px;margin-left:-10px;top:-3px}
.round-time{bottom:18px}
.round-stop{position:absolute;top:10px;left:-38px;right:auto;width:30px;height:30px;border-radius:50%;border:0;background:var(--panel);color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.15);display:none;place-items:center;padding:0;cursor:pointer}
.bub.round-bub:not(.me) .round-stop{left:auto;right:-38px}
.bub.round-bub.rplay .round-stop{display:grid}
.bub.round-bub .t{background:rgba(0,0,0,.4);color:#fff;border-radius:8px;padding:0 6px;display:inline-block;float:right}

/* BALANCE_CHAT_STICKER_SAVE_V1 */
.sticker-card{display:grid;place-items:center;padding:6px 0 4px}
.sticker-card img{width:160px;height:160px;object-fit:contain}
.sticker-card .sticker-emoji{font-size:110px;line-height:1.1}
.sticker-bub{cursor:pointer}

/* BALANCE_CHAT_KEY_PRIVATE_V1 */
.row-toggle{display:flex;align-items:center;gap:10px;padding:10px 2px;font-weight:600;cursor:pointer}
.row-toggle input{width:20px;height:20px;accent-color:var(--brand)}
.round.playing{touch-action:none}

/* BALANCE_CHAT_LONG_CIRCLES_V1 */
.circle-lens{display:flex;gap:6px;background:var(--line);border-radius:14px;padding:4px}
.circle-len{border:0;background:transparent;color:var(--muted);padding:7px 14px;border-radius:11px;font-weight:600;font-size:14px;cursor:pointer}
.circle-len.on{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.round-retry{border:0;background:none;color:var(--brand);font-weight:600;cursor:pointer;padding:4px 0}
/* BALANCE_CHAT_ROUND_PENDING_V1 */
.bub.round-pending{padding:2px}
.round-pending .up-box{position:relative;width:230px;height:230px;display:grid;place-items:center}
.round-pending .up-box video{width:210px;height:210px;border-radius:50%;object-fit:cover;background:#000;filter:brightness(.6)}
.round-pending .up-ring{width:72px;height:72px;background:rgba(0,0,0,.35);border-radius:50%}
.round-pending .up-pct{color:#fff;font-weight:700;font-size:15px}
.round-pending .t{background:rgba(0,0,0,.4);color:#fff;border-radius:8px;padding:0 6px;display:inline-block;float:right}
.up-box video{max-width:240px;max-height:320px;border-radius:12px;display:block}
/* BALANCE_CHAT_UPLOAD_CONTROL_V1 */
.up-ring{cursor:pointer}
.up-cancel{position:absolute;inset:0;margin:auto;width:30px;height:30px;border:0;border-radius:50%;background:transparent;color:#fff;display:grid;place-items:center;padding:0;cursor:pointer}
.up-ring .up-pct{display:none}
.round-pending .up-ring .up-pct{display:none}
.up-actions{display:flex;gap:8px;margin-top:6px}
.up-actions button{border:0;border-radius:10px;padding:6px 12px;font-weight:600;font-size:14px;background:rgba(255,255,255,.9);color:#e5484d;cursor:pointer}
.up-actions button:first-child{color:var(--brand)}

/* BALANCE_CHAT_SEARCH_V1 */
.search-sheet input[type=search]{width:100%;box-sizing:border-box;padding:12px 14px;border-radius:12px;border:1px solid var(--line,#3334);background:var(--bg2,transparent);color:inherit;font-size:16px}
.search-st{font-size:13px;opacity:.65;margin:8px 2px}
.search-res{max-height:60vh;overflow-y:auto;display:flex;flex-direction:column;gap:2px}
.search-hit{display:block;width:100%;text-align:left;background:none;border:0;color:inherit;padding:10px 6px;border-radius:10px;cursor:pointer}
.search-hit:hover,.search-hit:active{background:#8882}
.sh-meta{font-size:12px;opacity:.6;margin-bottom:2px}
.sh-text{font-size:15px;line-height:1.3;word-break:break-word}
.sh-text mark{background:#4ea1ff55;color:inherit;border-radius:3px;padding:0 1px}
.bub.flash{animation:bubflash 1.8s ease}
@keyframes bubflash{0%,40%{box-shadow:0 0 0 3px #4ea1ffaa}100%{box-shadow:0 0 0 0 #4ea1ff00}}
/* BALANCE_CHAT_CALL_QUALITY_V2 */
.call-weak{position:absolute;top:calc(env(safe-area-inset-top) + 14px);left:50%;transform:translateX(-50%);background:#000a;color:#ffd666;font-size:13px;padding:5px 12px;border-radius:20px;display:none;z-index:5}
.call.weak .call-weak{display:block}
.call-local{cursor:pointer}
.call.swap.has-remote.has-local .call-remote{position:absolute;width:110px;height:150px;right:14px;top:calc(env(safe-area-inset-top) + 14px);left:auto;bottom:auto;border-radius:14px;z-index:3;object-fit:cover}
.call.swap.has-remote.has-local .call-local{position:absolute;inset:0;width:100%;height:100%;border-radius:0;z-index:1;object-fit:cover}

/* BALANCE_CHAT_SAVED_V1 */
.saved-ava{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#4ea1ff,#2b6fd6)!important;color:#fff}

/* BALANCE_CHAT_FORWARD_V1 */
.bub .fwd{font-size:12.5px;font-weight:600;color:#4ea1ff;margin-bottom:3px}
.bub.me .fwd{color:inherit;opacity:.8}
.fwd-row{width:100%;display:flex;align-items:center;gap:12px;text-align:left}

/* BALANCE_CHAT_EDIT_PIN_SELECT_DRAFT_V1 */
.pinbar{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--card,#fff);border-bottom:1px solid #8883;cursor:pointer}
.pinbar[hidden]{display:none}
.pin-t{flex:1;min-width:0;display:flex;flex-direction:column;border-left:3px solid #5b6cff;padding-left:9px}
.pin-t b{font-size:12.5px;color:#5b6cff}
.pin-t span{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.85}
.top{position:relative}
.selbar{position:absolute;inset:0;display:flex;align-items:center;gap:10px;padding:0 10px;background:var(--card,#fff);z-index:5}
.selbar b{flex:1;font-size:17px}
.selbar .ibtn{font-size:22px}
.msgs.selecting .bub{cursor:pointer;-webkit-user-select:none;user-select:none}
.msgs.selecting .bub.sel{outline:3px solid #5b6cffaa;outline-offset:2px}
.msgs.selecting .bub:not(.sel){opacity:.75}
.chat-row .draft{color:#e5484d;font-style:normal}
@media (prefers-color-scheme:dark){.pinbar,.selbar{background:var(--card,#1c1c1e)}}

/* BALANCE_CHAT_ROUND_BIG_V1: a playing circle grows, as in Telegram */
.round,.round video{transition:width .25s ease,height .25s ease,margin .25s ease}
.bub.round-bub.rplay .round{width:min(310px,82vw);height:min(310px,82vw)}
.bub.round-bub.rplay .round video{width:calc(min(310px,82vw) - 20px);height:calc(min(310px,82vw) - 20px)}
/* BALANCE_CHAT_EMOJI_TEXT_V1 */
.emoji-note{grid-column:1/-1;font-size:12.5px;opacity:.65;margin:0 2px 6px}
.sticker-pick.picked{transform:scale(1.25);transition:transform .1s}
.viewer img{touch-action:pinch-zoom}

/* BALANCE_CHAT_NO_LOST_V1 */
.bub.lock{opacity:.75;font-style:italic;cursor:pointer}

/* BALANCE_CHAT_HIDDEN_FIX_V1: hidden bars (reply, sticker hints) must not leave empty strips above the composer */
.replybar[hidden],.sticker-sugg[hidden],.botkb[hidden]{display:none!important}

.tip+.tabs{margin-top:10px}

/* BALANCE_CHAT_WALLPAPER_V1 */
.wall-all{display:flex;align-items:center;gap:6px;margin:4px 0 12px;font-size:15px;cursor:pointer}
.wall-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.wall-item{border:2px solid transparent;border-radius:14px;background:none;padding:0;cursor:pointer;color:inherit;display:flex;flex-direction:column;align-items:stretch;gap:4px;font:inherit}
.wall-item i{display:block;height:92px;border-radius:12px;border:1px solid var(--line)}
.wall-item b{font-size:12.5px;font-weight:600;text-align:center}
.wall-item.on i{outline:3px solid var(--brand);outline-offset:1px}
.wall-own{justify-content:center}
.wall-own span{display:flex;align-items:center;justify-content:center;height:92px;border-radius:12px;border:1px dashed var(--line);font-size:30px}
.wall-btn{margin-bottom:10px}
.msgs.has-wall .day,.msgs.has-wall .lockline{background:rgba(0,0,0,.35);color:#fff;border-radius:12px;padding:3px 10px;align-self:center}

/* BALANCE_CHAT_CIRCLE_TORCH_ZOOM_V1 */
.circle-zoom{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:3;border:0;border-radius:14px;background:rgba(0,0,0,.45);color:#fff;font:600 13px/1 system-ui,sans-serif;padding:6px 10px;cursor:pointer}
.circle-btn.on{background:#ffd54a!important;color:#222!important}
.screen-light{background:#fff!important}
.screen-light .circle-wrap{box-shadow:0 0 0 14px #fff,0 0 80px 40px #fff!important}
.screen-light .circle-timer,.screen-light .circle-hint,.screen-light .circle-len{color:#222!important}

/* BALANCE_CHAT_CIRCLE_SCREENLIGHT_V2: the front «flashlight» lights the whole screen as brightly as possible */
.circle-rec.screen-light{background:#fff!important;filter:none}
.circle-rec.screen-light::before{content:"";position:fixed;inset:0;background:#fff;z-index:-1}
.circle-rec.screen-light .circle-btn.ghost{background:#f1f1f4;color:#222}

/* BALANCE_CHAT_SCREENLIGHT_V3: more lit area — the circle gets smaller, everything else is warm white */
.circle-rec.screen-light{background:#fffaf2!important}
.circle-rec.screen-light::before{background:#fffaf2}
.circle-rec.screen-light .circle-wrap{width:min(56vw,240px)!important;transition:width .25s ease;box-shadow:0 0 0 18px #fffaf2,0 0 120px 60px #fffaf2!important}
.circle-rec.screen-light .circle-lens{opacity:.35}

/* BC_COMPOSER_WIDE_V1 */
.composer{gap:4px;padding-left:6px;padding-right:6px}
.composer.typing .icon-btn[aria-label='Видеосообщение']{display:none}
.composer textarea{min-width:0;padding:10px 12px}

/* BC_EMOJI_PREVIEW_V1 */
.emoji-preview{grid-column:1/-1;position:sticky;top:0;z-index:2;display:flex;align-items:flex-end;gap:6px;padding:8px;margin-bottom:4px;background:var(--panel);border-bottom:1px solid var(--line)}
.emoji-preview-text{flex:1;min-width:0;max-height:72px;overflow-y:auto;padding:8px 12px;border-radius:16px;background:var(--bg);font-size:16px;line-height:1.35;white-space:pre-wrap;word-break:break-word}
.emoji-preview-text.empty{color:var(--muted,#8a8fa3);font-size:13px}
.emoji-preview-btn{flex:0 0 auto;border:0;border-radius:14px;background:var(--bg);color:var(--ink);padding:8px 12px;font-size:16px}
.emoji-preview-btn.ok{background:var(--brand);color:#fff;font-weight:600;font-size:15px}

/* BC_VOICE_BAR_V1 */
.composer.recording > :not(.voice-bar){display:none!important}
.voice-bar{flex:1;display:flex;align-items:center;gap:10px}
.voice-bar .rec{flex:1;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}
.voice-cancel{border:0;background:none;color:#ff5d5d;font-size:15px;font-weight:600;padding:10px 6px}

/* BC_UPLOAD_ROW_V1 */
.up-box.up-row{display:flex;flex-direction:row-reverse;align-items:center;justify-content:flex-end;gap:12px;min-height:0;padding:2px 0}
.up-box.up-row .up-ring{position:relative;flex:0 0 auto;width:40px;height:40px;background:rgba(0,0,0,.18);border-radius:50%}
.up-box.up-row .up-file{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}

/* BC_NO_PAGE_ZOOM_V1 */
body{touch-action:manipulation}

/* BC_CIRCLE_ROUND_V1: the recorder circle stays round in short windows (Mac) */
.circle-wrap{flex:0 0 auto;width:min(80vw,360px,max(200px,calc(100dvh - 330px)));height:auto;aspect-ratio:1/1}
.circle-rec{overflow-y:auto}

/* BC_PLAY_RATE_V1 / BC_STT_V1 / BC_REACTIONS_V1 */
.rate-btn{border:0;border-radius:10px;padding:3px 7px;font-size:12px;font-weight:700;background:rgba(127,127,160,.18);color:inherit;flex:0 0 auto}
.round-bub .rate-btn{position:absolute;right:6px;bottom:44px;display:none;background:rgba(0,0,0,.55);color:#fff;z-index:3}
.round-bub.rplay .rate-btn{display:block}
.round-bub{position:relative}
.stt-btn{display:inline-block;margin-top:6px;border:0;border-radius:10px;padding:4px 10px;font-size:13px;font-weight:600;background:rgba(127,127,160,.16);color:inherit}
.stt{margin-top:6px;font-size:14px;line-height:1.35;padding:6px 10px;border-radius:12px;background:rgba(127,127,160,.12);white-space:pre-wrap;max-width:260px}
.round-bub .stt,.round-bub .stt-btn{background:var(--panel);color:var(--ink)}
.reacts{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.react{border:0;border-radius:12px;padding:2px 8px;font-size:14px;background:rgba(127,127,160,.18);color:inherit}
.react.mine{background:var(--brand);color:#fff}
.bub.me .react.mine{background:#fff;color:var(--brand)}
.react-pick{display:flex;justify-content:space-between;gap:4px;margin:0 0 10px}
.react-pick button{flex:1;border:0;border-radius:14px;padding:10px 0;font-size:24px;background:var(--bg)}
.react-pick button.on{background:var(--brand)}

/* BALANCE_CHAT_PREMIUM_V1 */
.prem-star{margin-left:5px;font-size:.8em;vertical-align:1px}

/* BC_TEXT_SIZE_FIX_V1: iPhone enlarged the font of long messages (text autosizing); a tap no longer selects words in a message — copying is in the long-press menu */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.bub{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* BALANCE_CHAT_CALL_REC_V1 */
.call-btn.rec-btn{color:#ff5d5d}
.call-btn.rec-btn.on{background:#ff3b30;color:#fff;animation:recpulse 1.2s ease-in-out infinite}
@keyframes recpulse{50%{opacity:.6}}
.call-rec{margin-top:8px;font-size:14px;font-weight:600;color:#ff8a80}

.circle-len.locked{opacity:.6}
.prem-line{font-size:13px;font-weight:600;color:#c88a00;margin:-4px 0 6px;text-align:center}

/* BC_ROUND_LAZY_V1: spinner while a circle downloads/decrypts */
.round.round-load::after{content:"";position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;border:3px solid rgba(255,255,255,.4);border-top-color:#fff;animation:rspin .8s linear infinite;z-index:4;pointer-events:none}
@keyframes rspin{to{transform:rotate(360deg)}}
/* BC_STT_V2: transcription is labelled and collapsible */
.stt-cap{font-size:11px;font-weight:700;color:var(--brand);opacity:.85;margin-bottom:3px;letter-spacing:.2px}
.stt-txt{white-space:pre-wrap}

/* BALANCE_CHAT_STORE_UI_V1: scrollable tabs + Telegram-style pack store */
.stab{overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.stab::-webkit-scrollbar{display:none}
.stab button{flex:0 0 auto;white-space:nowrap}
.store-list{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:2px}
.store-pack{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:12px}
.store-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px}
.store-title{font-weight:700;font-size:15px}
.store-add{border:0;border-radius:11px;padding:8px 16px;font-weight:700;background:var(--brand);color:#fff;flex:0 0 auto}
.store-add.on{background:var(--line);color:var(--muted)}
.store-prev{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.store-prev::-webkit-scrollbar{display:none}
.store-prev img{width:66px;height:66px;object-fit:contain;flex:0 0 auto}

/* BC_QUICK_REACT_V1 */
@keyframes qrpop{0%{transform:scale(1)}40%{transform:scale(1.04)}100%{transform:scale(1)}}
.bub.qr-pop{animation:qrpop .25s ease-out}

/* BC_PHOTO_ZOOM_V1: the viewer zooms by itself (the page zoom is off) */
.viewer,.viewer img{touch-action:none}
.viewer img{will-change:transform;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}

/* BALANCE_CHAT_ALBUM_V1: photos sent together — one grid */
.album-wrap{align-self:flex-start;max-width:min(80%,420px);display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:3px;border-radius:var(--r);background:var(--their);box-shadow:0 1px 1px rgba(0,0,0,.05)}
.album-wrap.me{align-self:flex-end;background:var(--mine);color:var(--mine-ink)}
.album-wrap:empty{display:none}
.album-wrap>.bub{max-width:none;align-self:auto;margin:0;padding:0;background:none;box-shadow:none;min-width:0;white-space:normal}
.album-wrap>.bub:first-child:nth-last-child(odd){grid-column:span 2}
.album-wrap>.bub img:not(.sticker-img){width:100%;aspect-ratio:1;object-fit:cover;margin:0;border-radius:10px}
.album-wrap>.bub:first-child:nth-last-child(odd) img:not(.sticker-img){aspect-ratio:16/10}
.album-wrap>.bub:only-child img:not(.sticker-img){aspect-ratio:auto}
.album-wrap>.bub>.t{display:none}
.album-wrap>.bub:last-child>.t{display:block;padding:2px 6px 1px}
.album-wrap>.bub>.reacts{padding:2px 4px}

/* BC_PHOTO_FLIP_V1 */
.viewer-nav{position:fixed;top:50%;transform:translateY(-50%);width:44px;height:64px;border:0;border-radius:14px;background:rgba(255,255,255,.14);color:#fff;font-size:30px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.viewer-nav.prev{left:10px}.viewer-nav.next{right:10px}
@media (hover:none){.viewer-nav{display:none}}
.viewer-count{position:fixed;top:calc(env(safe-area-inset-top) + 20px);left:16px;color:#fff;font-size:14px;opacity:.85;pointer-events:none}
