:root {
  color-scheme: dark;
  --bg: #07111c;
  --tg-bg: #0b1622;
  --tg-panel: #132231;
  --tg-panel-2: #172a3c;
  --tg-list: #101e2b;
  --tg-line: rgba(194, 225, 245, 0.12);
  --tg-blue: #2aa8dd;
  --tg-blue-2: #178ac2;
  --tg-own: #2991d6;
  --tg-other: #1d3143;
  --tg-ai: #233a55;
  --text: #f4f8fb;
  --muted: #8ea3b8;
  --soft: #647b90;
  --gold: #f4c96d;
  --ok: #53e0a4;
  --danger: #ff6f8b;
  --warning: #ffcf73;
  --shadow: 0 24px 72px rgba(0, 0, 0, 0.42);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", "PingFang SC", Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { min-height: 100%; margin: 0; }
body {
  background:
    radial-gradient(circle at 25% 8%, rgba(42, 168, 221, 0.16), transparent 34rem),
    radial-gradient(circle at 80% 12%, rgba(244, 201, 109, 0.08), transparent 28rem),
    linear-gradient(180deg, #050a12 0%, #07111c 48%, #03070d 100%);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
}
button, input, a { font: inherit; }
a { color: inherit; text-decoration: none; }
button { -webkit-tap-highlight-color: transparent; }
.noscript { padding: 1rem; background: #15283b; color: #fff; }
.is-hidden { display: none !important; }

.app-shell {
  width: min(100%, 540px);
  min-height: 100svh;
  margin: 0 auto;
  background: rgba(8, 17, 27, 0.96);
  border-left: 1px solid rgba(255,255,255,.08);
  border-right: 1px solid rgba(255,255,255,.08);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.boot-screen,
.auth-screen,
.locked-screen {
  min-height: 100svh;
  padding: max(20px, env(safe-area-inset-top)) 18px max(22px, env(safe-area-inset-bottom));
  display: grid;
  place-items: center;
}
.boot-screen { text-align: center; align-content: center; gap: 8px; }
.boot-screen::after {
  content: "";
  width: 118px;
  height: 3px;
  margin-top: 12px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, var(--tg-blue), var(--gold), transparent);
  animation: bootLine 760ms ease-in-out infinite;
}
@keyframes bootLine { 0%,100% { opacity: .34; transform: scaleX(.72); } 50% { opacity: 1; transform: scaleX(1); } }
.brand-orb,
.brand-mark,
.top-avatar,
.room-avatar-large {
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, rgba(42,168,221,.36), rgba(244,201,109,.16));
  border: 1px solid rgba(156, 224, 255, .26);
  color: #eaf8ff;
  font-weight: 950;
  letter-spacing: 0;
}
.brand-orb { width: 58px; height: 58px; border-radius: 14px; margin: 0 auto 8px; font-size: 22px; }
.boot-screen h1 { margin: 0; font-size: 25px; }
.boot-screen p { margin: 0; color: var(--muted); font-weight: 750; }
.eyebrow { margin: 0 0 4px; color: #78cdee; font-size: 10px; letter-spacing: .12em; text-transform: uppercase; font-weight: 950; }

.auth-card,
.apply-panel,
.hold-card {
  width: min(100%, 500px);
  padding: 22px;
  border-radius: 14px;
  border: 1px solid var(--tg-line);
  background: linear-gradient(180deg, rgba(19,34,49,.98), rgba(8,17,27,.98));
  box-shadow: var(--shadow);
}
.apply-panel { margin-top: 16px; }
.brand-line { display: flex; align-items: center; gap: 13px; margin-bottom: 18px; }
.brand-mark { width: 48px; height: 48px; border-radius: 12px; }
.auth-card h1, .apply-panel h2 { margin: 0; font-size: 24px; }
.auth-copy, .empty-note, .disclaimer, .apply-panel p, .plan-card p { color: var(--muted); line-height: 1.65; }
.login-form { display: grid; gap: 13px; margin-top: 18px; }
.login-form label { display: grid; gap: 8px; color: var(--muted); font-size: 13px; font-weight: 850; }
.login-form input, .send-form input {
  width: 100%; border: 1px solid rgba(255,255,255,.12); outline: none; color: var(--text);
  background: rgba(255,255,255,.075); border-radius: 12px; padding: 13px 14px;
}
.login-form input:focus, .send-form input:focus { border-color: rgba(42,168,221,.7); box-shadow: 0 0 0 4px rgba(42,168,221,.12); }
.remember-row { display: flex !important; align-items: center; gap: 9px !important; }
.remember-row input { width: auto; }
.primary-btn, .ghost-btn, .small-btn, .icon-btn, .deep-link, .send-form button {
  border: 0; cursor: pointer; font-weight: 950; border-radius: 12px; transition: transform .14s ease, opacity .14s ease, background .14s ease;
}
.primary-btn { background: var(--tg-blue); color: #06121c; padding: 13px 15px; }
.ghost-btn, .small-btn, .icon-btn, .deep-link { color: var(--text); background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12); }
.ghost-btn, .deep-link { display: grid; place-items: center; min-height: 46px; padding: 10px 14px; }
.small-btn, .icon-btn { padding: 9px 12px; font-size: 12px; }
button:hover, .deep-link:hover { transform: translateY(-1px); }
button:disabled { opacity: .6; cursor: wait; transform: none; }
.text-link { display: block; margin: 16px auto 0; border: 0; background: transparent; color: #a7e7ff; font-weight: 900; cursor: pointer; }
.form-message { min-height: 18px; margin: 0; color: var(--muted); font-size: 12px; }
.form-message.is-error { color: var(--danger); }
.form-message.is-ok { color: var(--ok); }
.auth-divider {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 12px;
  margin: 16px 0 12px;
  color: rgba(180,205,225,.78);
  font-size: 12px;
  font-weight: 850;
}
.auth-divider::before,
.auth-divider::after {
  content: "";
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.16), transparent);
}
.google-login-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  width: 100%;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.94);
  color: #17212b;
  text-decoration: none;
  font-weight: 950;
  box-shadow: 0 14px 34px rgba(0,0,0,.22);
  transition: transform .14s ease, box-shadow .14s ease, background .14s ease;
}
.google-login-btn:hover { transform: translateY(-1px); background: #fff; box-shadow: 0 18px 40px rgba(0,0,0,.26); }
.google-login-btn svg { width: 22px; height: 22px; flex: 0 0 auto; }
.google-login-note {
  margin: 9px 0 0;
  color: rgba(180,205,225,.72);
  font-size: 12px;
  line-height: 1.5;
  text-align: center;
}
.plan-grid, .link-grid, .radar-grid { display: grid; grid-template-columns: 1fr; gap: 10px; }
.plan-card, .radar-card, .radar-commander { border: 1px solid var(--tg-line); border-radius: 14px; background: rgba(255,255,255,.045); padding: 16px; }
.plan-card.is-highlight { border-color: rgba(244,201,109,.36); background: rgba(244,201,109,.08); }
.plan-tag { display: inline-flex; margin: 0 0 8px; color: var(--gold); font-weight: 950; }
.locked-actions { display: grid; gap: 10px; margin-top: 16px; }

.member-app {
  min-height: 100svh;
  padding: calc(74px + env(safe-area-inset-top)) 12px calc(88px + env(safe-area-inset-bottom));
  display: grid;
  gap: 10px;
}
.app-topbar {
  position: fixed; left: 50%; top: 0; z-index: 50; transform: translateX(-50%);
  width: min(100%, 540px);
  padding: calc(10px + env(safe-area-inset-top)) 12px 9px;
  background: rgba(8,17,27,.96); border-bottom: 1px solid var(--tg-line); backdrop-filter: blur(18px);
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.tg-title { display: flex; align-items: center; gap: 11px; min-width: 0; }
.top-avatar { width: 44px; height: 44px; border-radius: 50%; flex: 0 0 auto; }
.tg-title-text { min-width: 0; }
.app-topbar h1 { margin: 0; font-size: 18px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.member-subline { margin: 0; color: var(--muted); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.tabbar, .bottom-tabbar {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; padding: 7px;
  border: 1px solid var(--tg-line); background: rgba(8,17,27,.94); backdrop-filter: blur(18px);
}
.tabbar { position: sticky; top: calc(74px + env(safe-area-inset-top)); z-index: 40; border-radius: 12px; }
.bottom-tabbar { position: fixed; left: 50%; bottom: 0; transform: translateX(-50%); width: min(100%, 540px); z-index: 55; border-left: 0; border-right: 0; border-bottom: 0; padding-bottom: calc(7px + env(safe-area-inset-bottom)); }
.tab-btn { position: relative; min-height: 50px; display: grid; place-items: center; gap: 2px; border: 0; background: transparent; color: var(--muted); border-radius: 10px; font-weight: 950; }
.tab-btn > span:first-child { display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; font-size: 15px; }
.tab-btn b { font-size: 11px; }
.tab-btn.is-active { color: #eaf8ff; background: rgba(42,168,221,.14); }
.tab-btn.is-active > span:first-child { background: var(--tg-blue); }
.tab-btn.is-locked { color: #8193a4; }
.tab-btn.is-locked > span:first-child { opacity: .58; filter: grayscale(.45); }
.tab-lock-badge {
  display: none;
  position: absolute;
  top: 5px;
  left: calc(50% + 11px);
  min-width: 30px;
  padding: 2px 4px;
  border: 1px solid rgba(255, 202, 85, .58);
  border-radius: 6px;
  background: #253041;
  color: #ffd66f;
  font-size: 8px;
  font-style: normal;
  line-height: 1;
  letter-spacing: 0;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .28);
}
.tab-btn.is-locked .tab-lock-badge { display: block; }
.tab-panel { display: none; }
.tab-panel.is-active { display: grid; gap: 10px; }
.compact-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 2px 2px 0; }
.compact-head h2 { margin: 0; font-size: 19px; }

.chat-layout { display: grid; grid-template-columns: 1fr; gap: 10px; }
.room-list {
  border: 1px solid var(--tg-line); border-radius: 14px; background: var(--tg-list); padding: 5px; overflow: auto; max-height: 312px;
}
.room-btn { width: 100%; min-height: 68px; margin: 0; border: 1px solid transparent; border-radius: 10px; padding: 9px; color: var(--text); background: transparent; text-align: left; cursor: pointer; }
.room-btn + .room-btn { margin-top: 2px; }
.room-btn.is-active, .room-btn:hover { background: rgba(42,168,221,.12); border-color: rgba(42,168,221,.24); }
.room-row { display: flex; align-items: center; gap: 10px; }
.room-emoji { width: 47px; height: 47px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center; overflow: hidden; color: #fff; font-size: 12px; font-weight: 950; background: linear-gradient(135deg, #2aa8dd, #315eaa); }
.room-emoji img { width: 100%; height: 100%; object-fit: cover; }
.room-meta { min-width: 0; flex: 1; }
.room-title { display: flex; align-items: center; gap: 8px; font-weight: 950; }
.room-title span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.room-desc { margin-top: 4px; color: #8ca2b7; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.badge { margin-left: auto; border-radius: 999px; padding: 3px 7px; background: rgba(42,168,221,.16); color: #9be6ff; font-size: 10px; font-weight: 950; }
.badge.is-ai { background: rgba(244,201,109,.18); color: #ffe3a1; }

.chat-window {
  min-height: min(640px, calc(100svh - 318px));
  display: grid; grid-template-rows: auto auto 1fr auto auto; overflow: hidden;
  border: 1px solid var(--tg-line); border-radius: 14px;
  background:
    linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.014) 1px, transparent 1px),
    #0d1a27;
  background-size: 26px 26px, 26px 26px, auto;
}
.chat-room-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 12px; border-bottom: 1px solid var(--tg-line); background: rgba(19,34,49,.94); backdrop-filter: blur(12px); }
.chat-head-main { min-width: 0; display: flex; align-items: center; gap: 10px; }
.room-avatar-large { width: 38px; height: 38px; border-radius: 50%; flex: 0 0 auto; font-size: 11px; }
.chat-room-head h3 { margin: 0; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.live-dot { display: inline-flex; align-items: center; gap: 5px; border-radius: 999px; padding: 5px 8px; background: rgba(83,224,164,.12); color: #9ef2cb; font-size: 10px; font-weight: 950; }
.live-dot::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 4px rgba(83,224,164,.12); }
.pinned-bar { padding: 8px 12px; border-bottom: 1px solid rgba(255,255,255,.075); background: rgba(255,255,255,.045); color: #b7cad9; font-size: 12px; line-height: 1.35; }
.message-list { min-height: 350px; max-height: 610px; padding: 13px 10px 11px; overflow: auto; display: flex; flex-direction: column; gap: 7px; scroll-behavior: smooth; }
.message { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 7px; max-width: 92%; align-items: end; }
.message.is-own { align-self: flex-end; grid-template-columns: minmax(0, 1fr); max-width: 84%; }
.message.is-own .avatar { display: none; }
.avatar { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: #263a4d; color: #b6eaff; font-size: 11px; font-weight: 950; }
.bubble { position: relative; border: 1px solid rgba(255,255,255,.08); border-radius: 12px 12px 12px 3px; padding: 8px 10px 7px; background: var(--tg-other); box-shadow: 0 4px 16px rgba(0,0,0,.15); min-width: 0; }
.message.is-own .bubble { border-radius: 12px 12px 3px 12px; background: linear-gradient(135deg, var(--tg-own), var(--tg-blue-2)); color: #fff; border-color: rgba(155,230,255,.24); }
.message.is-ai .bubble { background: linear-gradient(135deg, rgba(40,60,88,.97), rgba(28,45,62,.98)); border-color: rgba(244,201,109,.22); }
.message.is-ai .avatar { background: linear-gradient(135deg, rgba(244,201,109,.32), rgba(42,168,221,.18)); color: #ffe3a1; }
.bubble-head { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 4px; color: rgba(226,241,249,.7); font-size: 10.5px; font-weight: 850; }
.message.is-own .bubble-head { justify-content: flex-end; }
.message.is-own .bubble-head span:first-child { display: none; }
.bubble-author-name { vertical-align: middle; }
.member-medals{display:inline-flex;align-items:center;gap:2px;margin-left:4px;vertical-align:middle;white-space:nowrap}.member-medals .bb88-medal-badge{--bb88-medal-size:1.15em}
.bubble p { margin: 0; line-height: 1.48; font-size: 14px; white-space: pre-wrap; word-break: break-word; }
.bubble a { color: #aeeaff; text-decoration: underline; text-underline-offset: 2px; }
.attachments { display: grid; gap: 6px; margin-top: 8px; }
.attachments img { width: min(100%, 260px); border-radius: 10px; border: 1px solid rgba(255,255,255,.1); display: block; }
.attachment-link { display: inline-flex; align-items: center; gap: 6px; width: fit-content; border-radius: 999px; padding: 6px 10px; background: rgba(255,255,255,.08); color: #d9f2ff; font-size: 12px; }
.send-form { display: grid; grid-template-columns: minmax(0,1fr) 44px; gap: 8px; padding: 10px; background: rgba(19,34,49,.96); border-top: 1px solid var(--tg-line); }
.send-form input { min-height: 43px; padding: 0 15px; border-radius: 999px; }
.send-form button { width: 44px; min-height: 43px; padding: 0; border-radius: 50%; background: var(--tg-blue); color: transparent; position: relative; }
.send-form button::before { content: "➤"; position: absolute; inset: 0; display: grid; place-items: center; color: #06121c; font-size: 18px; transform: translateX(1px); }
.form-message[data-chat-message] { min-height: 0; padding: 0 12px 8px; font-size: 11px; color: #8ca2b7; }

.radar-commander { display: grid; gap: 10px; background: linear-gradient(180deg, rgba(35,59,83,.9), rgba(16,30,45,.96)); }
.radar-commander h3 { margin: 0; font-size: 20px; }
.radar-commander p { margin: 0; color: #b5c7d7; line-height: 1.6; }
.command-pill, .state-pill { display: inline-flex; width: fit-content; border-radius: 999px; padding: 6px 10px; font-size: 11px; font-weight: 950; }
.command-pill { color: #06121c; background: var(--gold); }
.radar-card { display: grid; gap: 10px; background: rgba(19,34,49,.92); }
.radar-state { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.radar-state h3 { margin: 0; font-size: 16px; }
.radar-card p { margin: 0; color: #b5c7d7; line-height: 1.55; }
.state-pill { background: rgba(42,168,221,.14); color: #9be6ff; }
.kv-grid { display: grid; gap: 7px; }
.kv { display: flex; justify-content: space-between; gap: 12px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,.075); color: var(--muted); font-size: 12px; }
.kv strong { color: var(--text); text-align: right; }
.link-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.deep-link { min-height: 46px; text-align: center; background: rgba(42,168,221,.1); }
.disclaimer { font-size: 11px; line-height: 1.55; margin: 0 2px; }

@media (max-width: 540px) {
  .app-shell { width: 100%; border-left: 0; border-right: 0; box-shadow: none; }
  .member-app { padding-left: 10px; padding-right: 10px; }
  .room-list { max-height: 286px; }
  .chat-window { min-height: min(610px, calc(100svh - 304px)); }
  .message { max-width: 94%; }
  .message.is-own { max-width: 86%; }
  .link-grid { grid-template-columns: 1fr; }
}

/* v2: Telegram-style page flow — room list first, full room page after tap. */
.chat-window { display: none; }
.chat-layout.is-room-open .chat-window { display: grid; }
.chat-layout.is-room-open .room-list { display: none; }
.chat-back-btn {
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.07);
  color: #eef9ff;
  font-size: 36px;
  line-height: 1;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  padding: 0 0 4px;
  cursor: pointer;
}
.chat-back-btn:active { transform: scale(.96); }
.room-list {
  max-height: none;
  min-height: calc(100svh - 236px);
  border-radius: 18px;
  padding: 8px;
  background: rgba(10, 21, 32, .94);
}
.room-btn {
  min-height: 76px;
  border-radius: 15px;
  padding: 10px 11px;
}
.room-emoji { width: 54px; height: 54px; }
.room-title span:first-child { font-size: 15.5px; }
.room-desc { font-size: 12.5px; }
.member-app.is-chat-room-open {
  padding: 0;
  display: block;
  background: #08111c;
}
.member-app.is-chat-room-open [data-app-topbar],
.member-app.is-chat-room-open [data-top-tabbar],
.member-app.is-chat-room-open [data-bottom-tabbar],
.member-app.is-chat-room-open [data-chat-section-head] {
  display: none !important;
}
.member-app.is-chat-room-open [data-chat-panel] {
  display: block;
  min-height: 100svh;
}
.member-app.is-chat-room-open .chat-layout.is-room-open {
  width: 100%;
  min-height: 100svh;
  display: block;
}
.member-app.is-chat-room-open .chat-window {
  height: 100svh;
  min-height: 100svh;
  border: 0;
  border-radius: 0;
  grid-template-rows: auto auto minmax(0, 1fr) auto auto;
  background:
    radial-gradient(circle at 24% -10%, rgba(42,168,221,.16), transparent 28rem),
    linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.014) 1px, transparent 1px),
    #08111c;
  background-size: auto, 28px 28px, 28px 28px, auto;
}
.member-app.is-chat-room-open .chat-room-head {
  min-height: calc(64px + env(safe-area-inset-top));
  padding: calc(9px + env(safe-area-inset-top)) 10px 9px;
  border-bottom: 1px solid rgba(194,225,245,.13);
}
.member-app.is-chat-room-open .chat-head-main {
  flex: 1;
  min-width: 0;
}
.member-app.is-chat-room-open .room-avatar-large {
  width: 42px;
  height: 42px;
}
.member-app.is-chat-room-open .chat-room-head h3 {
  font-size: 17px;
}
.member-app.is-chat-room-open .live-dot {
  font-size: 0;
  width: 12px;
  height: 12px;
  padding: 0;
  background: transparent;
}
.member-app.is-chat-room-open .live-dot::before {
  width: 8px;
  height: 8px;
}
.member-app.is-chat-room-open .message-list {
  min-height: 0;
  max-height: none;
  padding: 12px 10px 14px;
}
.member-app.is-chat-room-open .send-form {
  padding: 9px 10px calc(9px + env(safe-area-inset-bottom));
}
.member-app.is-chat-room-open .form-message[data-chat-message] {
  display: none;
}
@media (max-width: 540px) {
  .room-list { min-height: calc(100svh - 220px); }
  .member-app.is-chat-room-open .chat-room-head { padding-left: 8px; padding-right: 8px; }
  .member-app.is-chat-room-open .message.is-own { max-width: 88%; }
}

/* v3: Telegram room order/icons + composer tools + cleaner message ranking */
.room-list {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: rgba(7, 16, 25, .98);
}
.room-btn {
  min-height: 72px;
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid rgba(194,225,245,.08);
  padding: 9px 12px;
  background: transparent;
}
.room-btn.is-active,
.room-btn:hover { background: rgba(42,168,221,.10); border-bottom-color: rgba(194,225,245,.08); }
.room-btn.is-locked { opacity: .62; }
.room-row { gap: 11px; }
.room-emoji,
.room-avatar-large {
  position: relative;
  background: linear-gradient(135deg, rgba(42,168,221,.26), rgba(139,92,246,.32));
  border: 1px solid rgba(155,230,255,.22);
  box-shadow: 0 0 0 2px rgba(42,168,221,.06);
}
.room-emoji span,
.room-avatar-large span { display: grid; place-items: center; width: 100%; height: 100%; }
.room-emoji.has-image span,
.room-avatar-large.has-image span { display: none; }
.room-emoji.has-image img,
.room-avatar-large.has-image img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.room-title { gap: 6px; }
.room-title span:first-child { font-size: 15px; letter-spacing: .01em; }
.room-lock { font-size: 11px; opacity: .78; }
.badge { padding: 2px 6px; font-size: 9px; letter-spacing: .04em; }
.room-desc { color: rgba(183,202,217,.74); }
.chat-room-head {
  background: rgba(11, 25, 38, .98);
  box-shadow: 0 6px 22px rgba(0,0,0,.18);
}
.pinned-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 7px 12px;
  background: rgba(25, 44, 62, .88);
  border-left: 3px solid rgba(42,168,221,.7);
  color: rgba(231,244,251,.82);
}
.message-list {
  gap: 5px;
  padding-left: 8px;
  padding-right: 8px;
  background:
    radial-gradient(circle at 10% 4%, rgba(42,168,221,.08), transparent 20rem),
    radial-gradient(circle at 92% 2%, rgba(244,201,109,.05), transparent 16rem),
    rgba(5, 12, 19, .22);
}
.message {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  width: 100%;
  max-width: 100%;
  align-self: stretch;
}
.message.is-own { justify-content: flex-end; max-width: 100%; }
.message.is-own .avatar { display: none; }
.avatar {
  width: 28px;
  height: 28px;
  align-self: flex-end;
  margin-bottom: 2px;
  font-size: 10px;
  flex: 0 0 auto;
}
.bubble {
  width: fit-content;
  max-width: min(82%, 420px);
  min-width: 0;
  border-radius: 15px 15px 15px 5px;
  padding: 7px 9px 6px;
  background: rgba(29, 49, 67, .96);
}
.message.is-own .bubble {
  max-width: min(80%, 410px);
  border-radius: 15px 15px 5px 15px;
  background: linear-gradient(135deg, #2a9adf, #1478b0);
}
.message.is-ai .bubble {
  max-width: min(94%, 460px);
  border-radius: 13px;
}
.bubble-head {
  gap: 8px;
  margin-bottom: 3px;
  font-size: 10px;
  opacity: .88;
}
.bubble-head span:last-child { white-space: nowrap; }
.bubble p { font-size: 13.5px; line-height: 1.44; }
.attachments img { max-height: 310px; object-fit: cover; }
.composer-shell {
  background: rgba(12, 24, 36, .98);
  border-top: 1px solid rgba(194,225,245,.12);
  padding-bottom: env(safe-area-inset-bottom);
}
.emoji-panel {
  display: flex;
  gap: 7px;
  overflow-x: auto;
  padding: 8px 10px 2px;
}
.emoji-panel button {
  width: 34px;
  height: 34px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.08);
  color: #fff;
  font-size: 18px;
}
.attachment-preview {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 7px 10px 0;
}
.attachment-preview span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  border-radius: 999px;
  padding: 5px 8px;
  background: rgba(42,168,221,.12);
  color: #d9f3ff;
  font-size: 11px;
}
.attachment-preview button {
  width: 18px;
  height: 18px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.14);
  color: #fff;
}
.send-form {
  grid-template-columns: 36px minmax(0,1fr) 36px 42px;
  gap: 6px;
  padding: 8px 10px;
  background: transparent;
  border-top: 0;
}
.send-form input[name="text"] {
  min-height: 40px;
  padding: 0 12px;
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.10);
}
.file-input { display: none !important; }
.send-form .composer-tool,
.send-form .send-btn {
  width: 36px;
  min-height: 40px;
  border-radius: 50%;
  padding: 0;
  display: grid;
  place-items: center;
  color: #d8f3ff;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.08);
  font-size: 18px;
}
.send-form .send-btn {
  width: 42px;
  background: #2aa8dd;
  color: #06121c;
  font-size: 18px;
  font-weight: 950;
}
.send-form button::before { content: none !important; }
.member-app.is-chat-room-open .composer-shell { padding-bottom: 0; }
.member-app.is-chat-room-open .send-form { padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); }
@media (max-width: 540px) {
  .bubble { max-width: 84%; }
  .message.is-own .bubble { max-width: 82%; }
  .message.is-ai .bubble { max-width: 95%; }
  .room-btn { min-height: 74px; }
}

/* v4: Website-like emoji panel + reliable private media rendering */
.attachments {
  gap: 8px;
  margin-top: 7px;
}
.attachment-image {
  margin: 0;
  display: grid;
  gap: 4px;
  max-width: min(100%, 320px);
}
.attachment-image a {
  display: block;
  overflow: hidden;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(0,0,0,.22);
}
.attachment-image img {
  width: 100%;
  max-width: 320px;
  max-height: 360px;
  object-fit: cover;
  display: block;
  border: 0;
  border-radius: 0;
}
.attachment-image figcaption {
  color: rgba(226,241,249,.64);
  font-size: 10.5px;
  line-height: 1.25;
  padding-left: 2px;
}
.attachment-image.is-broken a {
  min-height: 70px;
  display: grid;
  place-items: center;
}
.attachment-image.is-broken a::after {
  content: "图片读取失败，点开查看";
  color: rgba(226,241,249,.72);
  font-size: 12px;
}
.attachment-image.is-broken img { display: none; }
.attachment-link {
  gap: 8px;
  max-width: min(100%, 320px);
  border-radius: 14px;
  padding: 9px 11px;
  background: rgba(42,168,221,.12);
  border: 1px solid rgba(42,168,221,.16);
  text-decoration: none !important;
}
.attachment-link strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
}
.attachment-link small {
  color: rgba(226,241,249,.58);
  font-size: 10px;
  white-space: nowrap;
}
.emoji-panel {
  position: absolute;
  left: 8px;
  right: 8px;
  bottom: calc(58px + env(safe-area-inset-bottom));
  z-index: 30;
  display: grid;
  gap: 8px;
  max-height: min(46svh, 360px);
  overflow: hidden;
  padding: 10px;
  border: 1px solid rgba(155,230,255,.16);
  border-radius: 18px 18px 12px 12px;
  background: rgba(15, 28, 41, .98);
  box-shadow: 0 -18px 55px rgba(0,0,0,.38);
  backdrop-filter: blur(18px);
}
.emoji-panel.is-hidden { display: none; }
.emoji-sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: #edf9ff;
  font-size: 12px;
}
.emoji-sheet-head span {
  color: rgba(183,202,217,.68);
  font-size: 10px;
  white-space: nowrap;
}
.emoji-tabs {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding-bottom: 2px;
  scrollbar-width: none;
}
.emoji-tabs::-webkit-scrollbar { display: none; }
.emoji-tabs span {
  flex: 0 0 auto;
  border-radius: 999px;
  padding: 5px 8px;
  background: rgba(255,255,255,.07);
  color: rgba(226,241,249,.78);
  font-size: 10px;
  font-weight: 850;
}
.emoji-grid {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 5px;
  overflow-y: auto;
  padding-right: 2px;
}
.emoji-grid button {
  width: 100%;
  aspect-ratio: 1;
  min-height: 32px;
  border: 0;
  border-radius: 11px;
  background: rgba(255,255,255,.065);
  color: #fff;
  font-size: 19px;
  display: grid;
  place-items: center;
}
.emoji-grid button:active,
.emoji-grid button:hover {
  background: rgba(42,168,221,.18);
  transform: translateY(-1px);
}
.composer-shell { position: relative; }
.member-app.is-chat-room-open .emoji-panel {
  position: absolute;
  bottom: calc(58px + env(safe-area-inset-bottom));
}
@media (max-width: 420px) {
  .emoji-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); }
  .emoji-grid button { font-size: 18px; }
  .attachment-image { max-width: min(100%, 300px); }
  .attachment-image img { max-width: 300px; }
}

/* v8: APP native test polish — Telegram room settings, wallpaper, edit/delete clarity */
.member-app.is-chat-room-open .chat-window.wallpaper-command,
.chat-window.wallpaper-command {
  --chat-wallpaper-url: url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png');
  background:
    linear-gradient(180deg, rgba(4, 10, 17, .30), rgba(4, 10, 17, .62)),
    var(--chat-wallpaper-url) center center / cover no-repeat,
    #07111c !important;
}
.member-app.is-chat-room-open .chat-window.wallpaper-telegram,
.chat-window.wallpaper-telegram {
  background:
    radial-gradient(circle at 18% 10%, rgba(42,168,221,.10), transparent 16rem),
    radial-gradient(circle at 82% 8%, rgba(244,201,109,.06), transparent 14rem),
    linear-gradient(rgba(255,255,255,.022) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.014) 1px, transparent 1px),
    #0b1622 !important;
  background-size: auto, auto, 28px 28px, 28px 28px, auto !important;
}
.member-app.is-chat-room-open .chat-window.wallpaper-clean,
.chat-window.wallpaper-clean { background: #08111c !important; }
.member-app.is-chat-room-open .chat-window.wallpaper-custom,
.chat-window.wallpaper-custom {
  background:
    linear-gradient(180deg, rgba(4,10,17,.28), rgba(4,10,17,.60)),
    var(--chat-wallpaper-url, url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png')) center center / cover no-repeat,
    #07111c !important;
}
.room-head-actions { display: inline-flex; align-items: center; gap: 7px; flex: 0 0 auto; }
.room-menu-btn {
  width: 34px;
  height: 34px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.08);
  color: #eaf7ff;
  font-size: 22px;
  line-height: 1;
  display: grid;
  place-items: center;
  cursor: pointer;
}
.room-menu-btn:active { transform: scale(.96); }
.room-menu-sheet {
  position: absolute;
  top: calc(60px + env(safe-area-inset-top));
  right: 10px;
  z-index: 45;
  width: min(92vw, 320px);
  max-height: calc(100svh - 120px);
  overflow-y: auto;
  padding: 12px;
  border: 1px solid rgba(155,230,255,.16);
  border-radius: 18px;
  background: rgba(15, 28, 41, .98);
  box-shadow: 0 22px 65px rgba(0,0,0,.48);
  backdrop-filter: blur(18px);
}
.room-menu-sheet .sheet-head,
.forward-sheet .sheet-head,
.poll-panel .sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}
.room-menu-sheet .sheet-head button,
.forward-sheet .sheet-head button,
.poll-panel .sheet-head button { border: 0; border-radius: 50%; width: 28px; height: 28px; background: rgba(255,255,255,.09); color: #fff; }
.settings-group { display: grid; gap: 7px; padding: 10px 0; border-top: 1px solid rgba(255,255,255,.08); }
.settings-group:first-of-type { border-top: 0; padding-top: 0; }
.settings-label { margin: 0; color: rgba(183,202,217,.72); font-size: 11px; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.settings-group button {
  min-height: 38px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 12px;
  background: rgba(255,255,255,.065);
  color: #edf8ff;
  text-align: left;
  padding: 8px 10px;
  font-weight: 850;
}

[data-enable-notifications],
[data-test-notifications] {
  display: flex;
  align-items: center;
  gap: 6px;
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(80, 217, 239, .16);
}
[data-enable-notifications][aria-busy="true"] {
  cursor: wait;
  opacity: .82;
}
[data-enable-notifications][aria-busy="true"]::after {
  content: "";
  width: 16px;
  height: 16px;
  margin-left: auto;
  border: 2px solid rgba(255,255,255,.28);
  border-top-color: #7df2ae;
  border-radius: 50%;
  animation: app-push-spin .7s linear infinite;
}
@keyframes app-push-spin { to { transform: rotate(360deg); } }
.settings-note { margin: 6px 0 0; color: rgba(183,202,217,.72); font-size: 11px; line-height: 1.5; }
.wallpaper-command .message-list,
.wallpaper-custom .message-list { background: rgba(4, 11, 18, .22) !important; }
.message.is-selected .bubble { outline: 2px solid rgba(42,168,221,.72); box-shadow: 0 0 0 5px rgba(42,168,221,.13), 0 14px 38px rgba(0,0,0,.26); }
.selection-toolbar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 55;
  min-height: calc(58px + env(safe-area-inset-top));
  padding: calc(8px + env(safe-area-inset-top)) 10px 8px;
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(12, 24, 36, .98);
  border-bottom: 1px solid rgba(194,225,245,.13);
  box-shadow: 0 10px 30px rgba(0,0,0,.28);
}
.selection-x { width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(255,255,255,.08); color: #fff; font-size: 24px; }
.selection-toolbar strong { flex: 1; }
.selection-actions { display: flex; align-items: center; gap: 5px; overflow-x: auto; }
.selection-actions button { border: 0; border-radius: 999px; padding: 7px 10px; background: rgba(255,255,255,.08); color: #edf8ff; font-size: 12px; font-weight: 850; white-space: nowrap; }
.selection-actions button:disabled { opacity: .34; cursor: not-allowed; }
.reaction-dock {
  position: fixed;
  left: 50%;
  bottom: calc(76px + env(safe-area-inset-bottom));
  z-index: 70;
  transform: translateX(-50%);
  width: min(96vw, 510px);
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 8px 10px;
  border-radius: 999px;
  background: rgba(15,28,41,.96);
  border: 1px solid rgba(155,230,255,.15);
  box-shadow: 0 14px 50px rgba(0,0,0,.42);
}
.reaction-dock button { flex: 0 0 auto; width: 36px; height: 36px; border: 0; border-radius: 50%; background: rgba(255,255,255,.08); color: #fff; font-size: 18px; }
.forward-sheet,
.poll-panel,
.attachment-sheet {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: calc(58px + env(safe-area-inset-bottom));
  z-index: 44;
  max-height: min(62svh, 420px);
  overflow: auto;
  padding: 12px;
  border-radius: 18px;
  border: 1px solid rgba(155,230,255,.15);
  background: rgba(15, 28, 41, .98);
  box-shadow: 0 -18px 55px rgba(0,0,0,.40);
}
.attachment-sheet { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; }
.attachment-sheet button { border: 0; border-radius: 14px; background: rgba(255,255,255,.07); color: #edf8ff; min-height: 58px; font-weight: 900; display: grid; place-items: center; gap: 4px; }
.poll-panel { display: grid; gap: 8px; }
.poll-panel input,
.poll-panel textarea { width: 100%; border: 1px solid rgba(255,255,255,.12); border-radius: 12px; background: rgba(255,255,255,.07); color: #fff; padding: 10px; outline: none; }
.poll-panel textarea { min-height: 70px; resize: vertical; }
.mini-check { display: flex; align-items: center; gap: 8px; color: rgba(226,241,249,.78); font-size: 12px; }
.reply-preview { margin: 0 10px 7px; border-left: 3px solid rgba(42,168,221,.74); padding: 7px 9px; border-radius: 8px; background: rgba(42,168,221,.10); color: #dff5ff; font-size: 12px; line-height: 1.4; }
.reply-preview button { float: right; border: 0; background: transparent; color: #fff; }
.room-side b { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 7px; border-radius: 999px; background: #38aee5; color: #06121c; font-size: 11px; font-weight: 950; }
.room-mini-badge { border-radius: 999px; padding: 2px 6px; background: rgba(255,255,255,.08); color: rgba(226,241,249,.76); font-style: normal; }
.send-form { grid-template-columns: 38px minmax(0,1fr) 38px 44px !important; align-items: center; }
.composer-tool { width: 38px !important; min-height: 38px !important; border-radius: 50% !important; background: rgba(255,255,255,.08) !important; color: #edf8ff !important; }
.composer-tool::before { content: none !important; }
.send-btn { width: 44px !important; min-height: 43px !important; }
.file-input { display: none !important; }
@media (max-width: 540px) {
  .member-app.is-chat-room-open .room-menu-sheet { top: calc(60px + env(safe-area-inset-top)); right: 8px; }
  .member-app.is-chat-room-open .live-dot { display: none; }
  .member-app.is-chat-room-open .room-menu-btn { width: 36px; height: 36px; }
  .member-app.is-chat-room-open .chat-room-head { padding-right: 8px; }
}

/* v9: Telegram layout lock, search sizing, preview truncation, stable wallpaper */
html, body, .app-shell, .member-app { width: 100%; max-width: 100%; overflow-x: hidden; }
.app-shell { position: relative; }
.member-app { min-width: 0; }
.chat-search-shell {
  position: sticky;
  top: calc(72px + env(safe-area-inset-top));
  z-index: 42;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 42px;
  gap: 10px;
  align-items: center;
  padding: 10px 12px 9px;
  margin: -2px -2px 2px;
  background: rgba(8,17,27,.96);
  border-bottom: 1px solid rgba(194,225,245,.10);
  backdrop-filter: blur(16px);
}
.chat-search-box {
  min-width: 0;
  height: 48px;
  border-radius: 999px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 14px;
  background: rgba(255,255,255,.085);
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: inset 0 0 0 1px rgba(42,168,221,.035);
}
.chat-search-box span { flex: 0 0 auto; color: rgba(226,241,249,.55); font-size: 22px; line-height: 1; transform: translateY(-1px); }
.chat-search-box input {
  width: 100%;
  min-width: 0;
  height: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  color: #eef8ff;
  font-size: 16px;
  font-weight: 650;
}
.chat-search-box input::placeholder { color: rgba(226,241,249,.48); }
.chat-search-shell .menu-dot {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 22px;
  padding: 0;
}
.chat-layout, .room-list, .room-btn, .room-row, .room-meta, .room-title-line, .room-desc { min-width: 0; max-width: 100%; }
.room-list {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
  padding: 0;
  overflow-x: hidden !important;
  max-height: none;
  height: auto;
}
.room-btn {
  display: block;
  overflow: hidden;
  border-radius: 0;
  padding: 10px 12px;
  min-height: 74px;
  touch-action: pan-y;
}
.room-row { display: grid; grid-template-columns: 54px minmax(0, 1fr) auto; align-items: center; gap: 11px; width: 100%; }
.room-emoji { width: 52px; height: 52px; }
.room-meta { display: grid; gap: 3px; overflow: hidden; }
.room-title-line {
  display: flex;
  align-items: center;
  gap: 6px;
  overflow: hidden;
  white-space: nowrap;
}
.room-title-line strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 15.5px;
  letter-spacing: .01em;
}
.room-title-line em { flex: 0 0 auto; font-style: normal; }
.room-desc {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow: hidden !important;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: rgba(183,202,217,.72);
  font-size: 13px;
  line-height: 1.28;
}
.room-side {
  flex: none;
  min-width: 44px;
  max-width: 72px;
  display: grid;
  justify-items: end;
  gap: 5px;
  overflow: hidden;
}
.room-side small { max-width: 72px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: rgba(183,202,217,.55); font-size: 11px; }
.room-side b { min-width: 22px; height: 22px; border-radius: 999px; display: grid; place-items: center; padding: 0 7px; background: #2aa8dd; color: #03101a; font-size: 11px; font-weight: 950; }
.member-app.is-chat-room-open .chat-search-shell { display: none !important; }
.chat-window { max-width: 100%; overflow: hidden; }
.message-list { overflow-x: hidden !important; }
.chat-window.wallpaper-command,
.member-app.is-chat-room-open .chat-window.wallpaper-command {
  --chat-wallpaper-url: url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png');
}
.chat-window:not(.wallpaper-custom) { --chat-wallpaper-url: url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png'); }
.chat-window.wallpaper-custom { background-position: center center !important; background-size: cover !important; }

@media (max-width: 540px) {
  .member-app { padding-left: 0; padding-right: 0; }
  .app-topbar { width: 100%; }
  .chat-search-shell { margin-left: 0; margin-right: 0; }
  .tab-panel.is-active { gap: 0; }
  .compact-head { padding: 8px 12px 6px; }
}

/* v10: Telegram interaction parity — locked header/search, room selection, profile sheet, action sheet */
.member-app {
  gap: 0 !important;
  padding-top: calc(72px + env(safe-area-inset-top)) !important;
}
.top-actions { display: inline-flex; align-items: center; gap: 7px; flex: 0 0 auto; }
.profile-avatar-btn { border: 0; cursor: pointer; padding: 0; }
.profile-avatar-btn.has-image img,
.profile-big-avatar.has-image img,
.top-avatar.has-image img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; display: block; }
.profile-avatar-btn span,
.profile-big-avatar span,
.top-avatar span { display: grid; place-items: center; width: 100%; height: 100%; }
.profile-sheet {
  position: fixed;
  top: calc(72px + env(safe-area-inset-top));
  left: 50%;
  transform: translateX(-50%);
  z-index: 90;
  width: min(96vw, 500px);
  max-height: calc(100svh - 96px);
  overflow-y: auto;
  padding: 14px;
  border: 1px solid rgba(155,230,255,.16);
  border-radius: 20px;
  background: rgba(15, 28, 41, .98);
  box-shadow: 0 24px 74px rgba(0,0,0,.55);
  backdrop-filter: blur(20px);
}
.profile-sheet .sheet-head { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:12px; }
.profile-sheet .sheet-head button { border:0; border-radius:50%; width:30px; height:30px; background:rgba(255,255,255,.09); color:#fff; }
.profile-preview { display:flex; align-items:center; gap:13px; margin-bottom:10px; }
.profile-preview h3 { margin:0; font-size:18px; }
.profile-preview p:not(.eyebrow) { margin:3px 0 0; color:var(--muted); font-size:12px; }
.profile-big-avatar { width:58px; height:58px; border:0; border-radius:50%; color:#eaf8ff; font-weight:950; background:linear-gradient(135deg, rgba(42,168,221,.36), rgba(244,201,109,.16)); overflow:hidden; }
.settings-link { min-height:38px; border:1px solid rgba(255,255,255,.10); border-radius:12px; background:rgba(255,255,255,.065); color:#edf8ff; text-align:left; padding:8px 10px; font-weight:850; display:flex; align-items:center; }
.settings-link.is-danger-link { color: #ffb6bd; border-color: rgba(255, 102, 117, .2); }
.settings-legal-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.settings-legal-links .settings-label { grid-column: 1 / -1; }
html.is-ios-store .google-login-btn,
html.is-ios-store .google-login-note,
html.is-ios-store .auth-divider,
html.is-ios-store [data-show-apply],
html.is-ios-store [data-apply-panel],
html.is-ios-store .locked-actions a[href="/membership.php"] { display: none !important; }
.font-size-segmented {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px;
  padding: 4px;
  border: 1px solid rgba(155,230,255,.13);
  border-radius: 12px;
  background: rgba(3, 12, 20, .42);
}
.font-size-segmented button {
  min-width: 0;
  min-height: 42px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: rgba(237,248,255,.72);
  font-size: 13px;
  font-weight: 850;
}
.font-size-segmented button.is-active {
  background: #92f4b0;
  color: #07140e;
  box-shadow: 0 4px 14px rgba(105, 240, 161, .18);
}
.chat-search-shell {
  position: sticky !important;
  top: calc(72px + env(safe-area-inset-top)) !important;
  margin: 0 !important;
  padding: 8px 12px 8px !important;
  grid-template-columns: minmax(0, 1fr) 44px !important;
  background: rgba(8,17,27,.985) !important;
}
.chat-search-box { height: 44px !important; }
.chat-search-box input { font-size: 15.5px !important; }
.compact-head { display: none !important; }
.room-selection-toolbar {
  position: sticky;
  top: calc(72px + env(safe-area-inset-top));
  z-index: 88;
  width: 100%;
  min-height: 58px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  gap: 14px;
  background: rgba(12,24,36,.985);
  border-bottom: 1px solid rgba(194,225,245,.13);
  box-shadow: 0 10px 30px rgba(0,0,0,.28);
}
.room-selection-toolbar strong { flex: 1; font-size: 20px; }
.room-selection-toolbar button { border:0; width:38px; height:38px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.08); color:#fff; font-weight:900; font-size:17px; }
.room-context-menu {
  position: fixed;
  top: calc(116px + env(safe-area-inset-top));
  right: max(10px, calc((100vw - 540px)/2 + 10px));
  z-index: 95;
  width: min(76vw, 330px);
  padding: 8px;
  border-radius: 18px;
  border: 1px solid rgba(155,230,255,.16);
  background: rgba(28, 46, 62, .98);
  box-shadow: 0 22px 70px rgba(0,0,0,.55);
}
.room-context-menu button { width:100%; min-height:48px; border:0; background:transparent; color:#edf8ff; text-align:left; padding:10px 13px; border-radius:12px; font-size:15px; }
.room-context-menu button:hover { background:rgba(255,255,255,.08); }
.room-btn.is-room-selected { background: rgba(42,168,221,.10) !important; }
.room-check { width: 18px; height: 18px; display:grid; place-items:center; border-radius:50%; color:#06121c; background: var(--ok); font-size:12px; font-weight:950; opacity:0; transform:scale(.7); }
.room-btn.is-room-selected .room-check { opacity:1; transform:scale(1); }
.room-row { grid-template-columns: 0 54px minmax(0, 1fr) auto !important; }
.room-btn.is-room-selected .room-row { grid-template-columns: 22px 54px minmax(0, 1fr) auto !important; }
.room-drag-handle { display:grid; place-items:center; color:rgba(183,202,217,.42); font-style:normal; font-size:20px; line-height:1; cursor:grab; touch-action:none; }
.room-drag-handle:active { cursor:grabbing; color:#9be6ff; }
.room-btn.is-dragging { opacity:.52; }
.room-desc { max-width: min(100%, 280px) !important; }
.message-action-sheet {
  position: fixed;
  left: 50%;
  bottom: calc(74px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: 78;
  width: min(92vw, 430px);
  max-height: min(72svh, 560px);
  overflow-y: auto;
  padding: 10px;
  border-radius: 20px;
  border: 1px solid rgba(155,230,255,.16);
  background: rgba(29, 49, 67, .98);
  box-shadow: 0 24px 84px rgba(0,0,0,.56);
  backdrop-filter: blur(22px);
}
.action-react-row { display:flex; gap:8px; overflow-x:auto; padding:4px 2px 10px; }
.action-react-row button { flex:0 0 auto; width:40px; height:40px; border:0; border-radius:50%; background:rgba(255,255,255,.08); color:#fff; font-size:21px; }
.reacted-row { width:100%; min-height:46px; display:flex; align-items:center; justify-content:space-between; gap:10px; border:0; border-radius:14px; background:rgba(255,255,255,.065); color:#edf8ff; padding:8px 12px; margin-bottom:8px; }
.reacted-row em img { width:28px; height:28px; border-radius:50%; object-fit:cover; }
.action-menu-list { display:grid; gap:2px; }
.action-menu-list button { min-height:48px; display:flex; align-items:center; gap:16px; border:0; border-radius:13px; background:transparent; color:#edf8ff; text-align:left; padding:8px 12px; font-size:16px; }
.action-menu-list button:hover { background:rgba(255,255,255,.075); }
.action-menu-list button:disabled { opacity:.36; }
.selection-toolbar { z-index: 92 !important; }
.selection-actions button { font-size: 0 !important; min-width: 38px; height: 38px; border-radius: 50% !important; display:grid; place-items:center; }
[data-select-reply]::before { content:'↩'; font-size:18px; }
[data-select-edit]::before { content:'✎'; font-size:18px; }
[data-select-copy]::before { content:'⧉'; font-size:18px; }
[data-select-forward]::before { content:'↗'; font-size:18px; }
[data-select-delete]::before { content:'🗑'; font-size:16px; }
.member-app.is-chat-room-open .chat-room-head { position: sticky; top:0; z-index:50; backdrop-filter:blur(18px); background:rgba(8,17,27,.78); }
.member-app.is-chat-room-open .chat-head-main h3 { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width: 240px; }
.member-app.is-chat-room-open .room-avatar-large { overflow:hidden; }
.member-app.is-chat-room-open .room-avatar-large img { width:100%; height:100%; object-fit:cover; border-radius:inherit; }
[data-attach-voice], [data-voice-to-text] { color:#edf8ff; }
@media (max-width: 540px) {
  .member-app { padding-top: calc(68px + env(safe-area-inset-top)) !important; }
  .app-topbar { min-height: calc(68px + env(safe-area-inset-top)); }
  .chat-search-shell { top: calc(68px + env(safe-area-inset-top)) !important; }
  .room-selection-toolbar { top: calc(68px + env(safe-area-inset-top)) !important; }
  .room-list { min-height: calc(100svh - 184px) !important; }
  .room-desc { max-width: min(100%, 250px) !important; }
  .message-action-sheet { width: min(94vw, 420px); }
}
.member-app.is-room-selection .chat-search-shell { display: none !important; }

/* v11: native polish — safer long press, mobile back flow, icon, wallpaper bug fix, radar cards */
.member-app:not(.is-chat-room-open) {
  padding-top: calc(80px + env(safe-area-inset-top)) !important;
}
.member-app:not(.is-chat-room-open) .chat-search-shell {
  position: fixed !important;
  left: 50% !important;
  top: calc(78px + env(safe-area-inset-top)) !important;
  transform: translateX(-50%);
  width: min(100%, 540px);
  margin: 0 !important;
  padding: 8px 12px !important;
  z-index: 54 !important;
  box-sizing: border-box;
}
.member-app:not(.is-chat-room-open) [data-chat-panel].is-active {
  padding-top: 64px !important;
}
.member-app.is-chat-room-open [data-chat-panel].is-active { padding-top: 0 !important; }
.chat-search-box {
  height: 48px !important;
  border-radius: 999px !important;
  background: rgba(255,255,255,.09) !important;
}
.chat-search-shell .menu-dot { width: 48px !important; height: 48px !important; }
.room-btn { transition: transform .18s ease, background .18s ease, opacity .18s ease, box-shadow .18s ease; user-select: none; -webkit-user-select: none; }
.room-drag-handle { display: none !important; }
.member-app.is-room-selection .room-drag-handle { display: grid !important; }
.room-btn.is-dragging { opacity: .32 !important; transform: scale(.985); }
.room-btn.is-drop-target { box-shadow: inset 0 0 0 2px rgba(42,168,221,.46); background: rgba(42,168,221,.12) !important; }
.room-drag-ghost {
  position: fixed;
  z-index: 999;
  pointer-events: none;
  opacity: .96;
  transform-origin: center;
  box-shadow: 0 20px 55px rgba(0,0,0,.55), 0 0 0 1px rgba(155,230,255,.24);
  border-radius: 16px;
  background: rgba(24,42,58,.98) !important;
}
.room-drag-ghost .room-drag-handle { display: grid !important; }
.chat-window.wallpaper-command,
.member-app.is-chat-room-open .chat-window.wallpaper-command,
.chat-window:not(.wallpaper-custom) {
  --chat-wallpaper-url: url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png') !important;
  background:
    linear-gradient(180deg, rgba(4,9,15,.18), rgba(4,9,15,.52)),
    var(--chat-wallpaper-url) center center / cover no-repeat,
    #06101a !important;
}
.chat-window.wallpaper-custom {
  background:
    linear-gradient(180deg, rgba(4,9,15,.18), rgba(4,9,15,.52)),
    var(--chat-wallpaper-url, url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png')) center center / cover no-repeat,
    #06101a !important;
}
.commander-hero { display:grid; gap:8px; }
.fear-card {
  display:grid;
  grid-template-columns: 1fr auto;
  gap: 3px 10px;
  align-items:center;
  padding: 14px;
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(42,168,221,.22), rgba(244,201,109,.14));
  border: 1px solid rgba(155,230,255,.14);
}
.fear-card span { color: rgba(226,241,249,.72); font-weight: 900; font-size: 12px; text-transform: uppercase; letter-spacing:.08em; }
.fear-card strong { font-size: 34px; line-height:1; color:#fff; }
.fear-card em { grid-column: 1 / -1; font-style: normal; color: #b8cddd; font-weight: 850; }
.radar-grid { display:grid; gap:12px !important; }
.radar-section {
  display:grid;
  gap:9px;
  border: 1px solid rgba(155,230,255,.12);
  border-radius: 20px;
  padding: 12px;
  background: rgba(12, 24, 37, .86);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.025);
}
.radar-section-title { display:flex; justify-content:space-between; align-items:center; gap:10px; }
.radar-section-title h3 { margin:0; font-size:16px; }
.radar-section-title span { border-radius:999px; padding:4px 8px; background:rgba(255,255,255,.08); color:#9be6ff; font-size:11px; font-weight:950; }
.mini-coin-card {
  display:grid;
  grid-template-columns: 1fr auto;
  gap: 5px 10px;
  padding: 11px 12px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.045);
}
.mini-coin-card div { display:flex; align-items:center; gap:8px; min-width:0; }
.mini-coin-card strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mini-coin-card span { border-radius:999px; padding:2px 7px; background:rgba(255,255,255,.08); color:rgba(226,241,249,.72); font-size:10px; font-weight:900; }
.mini-coin-card b { width:36px; height:36px; display:grid; place-items:center; border-radius:50%; background:rgba(42,168,221,.16); color:#bff0ff; }
.mini-coin-card p { grid-column:1 / -1; margin:0; color:#b8cddd; font-size:12.5px; line-height:1.45; }
.mini-coin-card.is-watch { background: linear-gradient(135deg, rgba(42,168,221,.12), rgba(42,168,221,.035)); }
.mini-coin-card.is-avoid { background: linear-gradient(135deg, rgba(255,91,117,.12), rgba(255,255,255,.035)); }
.major-grid { display:grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap:10px; }
.major-radar-card {
  border-radius: 20px;
  padding: 13px;
  border: 1px solid rgba(255,255,255,.10);
  background: linear-gradient(135deg, rgba(42,168,221,.11), rgba(255,255,255,.04));
  min-height: 160px;
  display:grid;
  gap:8px;
}
.major-radar-card.is-bull { background: linear-gradient(135deg, rgba(29,213,142,.20), rgba(42,168,221,.06)); border-color: rgba(29,213,142,.25); }
.major-radar-card.is-bear { background: linear-gradient(135deg, rgba(255,91,117,.20), rgba(255,255,255,.045)); border-color: rgba(255,91,117,.24); }
.major-radar-card.is-wait { background: linear-gradient(135deg, rgba(244,201,109,.20), rgba(255,255,255,.045)); border-color: rgba(244,201,109,.24); }
.major-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.major-head span { font-size:20px; font-weight:950; }
.major-head b { border-radius:999px; padding:4px 8px; background:rgba(255,255,255,.10); font-size:10px; }
.major-radar-card h3 { margin:0; font-size:15px; }
.major-radar-card p { margin:0; color:#b8cddd; font-size:12px; line-height:1.45; }
.radar-site-note { margin: 4px 2px 0; padding: 12px; border-radius: 16px; background: rgba(255,255,255,.055); color:#b8cddd; text-align:center; font-weight:850; }
@media (max-width: 430px) {
  .major-grid { grid-template-columns: 1fr; }
  .member-app:not(.is-chat-room-open) [data-chat-panel].is-active { padding-top: 62px !important; }
}


/* v12: critical chat UX bugfixes — compact room header, safe wallpaper, real avatar handling, stable drag/back */
html, body { overflow-x: hidden !important; overscroll-behavior-x: none !important; }
.app-shell, .member-app, .chat-layout, .room-list, .chat-window, .message-list { max-width: 100% !important; overflow-x: hidden !important; }
.member-app.is-chat-room-open { padding: 0 !important; margin: 0 !important; height: 100svh !important; overflow: hidden !important; }
.member-app.is-chat-room-open .chat-layout.is-room-open,
.member-app.is-chat-room-open .chat-window { height: 100svh !important; min-height: 100svh !important; max-height: 100svh !important; }
.member-app.is-chat-room-open .chat-window { position: fixed !important; inset: 0 !important; width: 100% !important; border-radius: 0 !important; }
.member-app.is-chat-room-open .chat-room-head {
  position: sticky !important;
  top: 0 !important;
  min-height: calc(58px + env(safe-area-inset-top)) !important;
  padding: calc(5px + env(safe-area-inset-top)) 8px 7px !important;
  align-items: center !important;
  background: rgba(8,17,27,.90) !important;
}
.member-app.is-chat-room-open .chat-back-btn { width: 42px !important; height: 42px !important; font-size: 32px !important; }
.member-app.is-chat-room-open .room-avatar-large { width: 42px !important; height: 42px !important; }
.member-app.is-chat-room-open .chat-room-head h3 { font-size: 17px !important; line-height: 1.12 !important; max-width: min(58vw, 320px) !important; }
.member-app.is-chat-room-open .pinned-bar { min-height: 34px !important; padding: 7px 10px !important; }
.member-app.is-chat-room-open .message-list { padding-top: 10px !important; }
.avatar.avatar-empty { visibility: hidden !important; background: transparent !important; border-color: transparent !important; box-shadow: none !important; }
.message:not(.is-own) .avatar.avatar-empty + .bubble { margin-left: -4px; }
.attachment-image, .attachment-image a { max-width: min(100%, 320px) !important; overflow: hidden !important; }
.attachment-image img { width: 100% !important; max-width: 320px !important; max-height: 320px !important; object-fit: cover !important; display: block !important; }
.bubble { overflow: hidden !important; }
.bubble .attachments { max-width: 100% !important; overflow: hidden !important; }
.chat-window.wallpaper-command,
.member-app.is-chat-room-open .chat-window.wallpaper-command,
.chat-window:not(.wallpaper-custom) {
  --chat-wallpaper-url: url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png') !important;
  background:
    linear-gradient(180deg, rgba(4,9,15,.20), rgba(4,9,15,.58)),
    var(--chat-wallpaper-url) center center / cover no-repeat,
    #06101a !important;
}
.chat-window.wallpaper-custom {
  background:
    linear-gradient(180deg, rgba(4,9,15,.20), rgba(4,9,15,.58)),
    var(--chat-wallpaper-url, url('./assets/backgrounds/home-command-center-bg-no-text-9x16.png')) center center / cover no-repeat,
    #06101a !important;
}
.room-drag-ghost { transition: none !important; }
.room-btn.is-dragging { opacity: .22 !important; }
.member-app.is-room-selection .room-btn { cursor: grab; }
.member-app.is-room-selection .room-btn:active { cursor: grabbing; }


/* v15: composer/back/route stability + remove voice shortcut */
html, body { overflow-x: hidden !important; overscroll-behavior-x: none !important; overscroll-behavior-y: none !important; touch-action: pan-y !important; }
.app-shell, .member-app, .chat-panel, .chat-layout, .room-thread, .room-body, [data-messages] { overflow-x: hidden !important; max-width: 100% !important; overscroll-behavior: contain !important; }
.member-app.is-chat-room-open { overscroll-behavior-y: contain !important; }
.attachment-sheet.is-hidden, .emoji-panel.is-hidden, .poll-panel.is-hidden { pointer-events: none !important; }
.composer-shell { z-index: 90 !important; }
.send-form { grid-template-columns: 38px minmax(0, 1fr) 38px 48px !important; }
[data-voice-menu], [data-attach-voice], [data-voice-to-text] { display: none !important; }
/* v13: avatar + attachment containment hard fix */
.member-app.is-chat-room-open .chat-window,
.member-app.is-chat-room-open .message-list {
  background-clip: border-box !important;
}
.message {
  grid-template-columns: 36px minmax(0, auto) !important;
  column-gap: 8px !important;
  align-items: end !important;
  width: fit-content !important;
  max-width: calc(100vw - 18px) !important;
}
.message:not(.is-own) { align-self: flex-start !important; }
.message.is-own { align-self: flex-end !important; grid-template-columns: minmax(0, auto) !important; }
.avatar {
  width: 34px !important;
  height: 34px !important;
  flex: 0 0 34px !important;
  overflow: hidden !important;
  border: 1px solid rgba(155,230,255,.16) !important;
  box-shadow: 0 8px 20px rgba(0,0,0,.22) !important;
}
.avatar.has-image img { width: 100% !important; height: 100% !important; object-fit: cover !important; border-radius: 50% !important; display: block !important; }
.avatar.has-image span { display: none !important; }
.avatar.avatar-empty {
  visibility: visible !important;
  display: grid !important;
  place-items: center !important;
  background: radial-gradient(circle at 35% 25%, rgba(155,230,255,.35), rgba(27,48,68,.92)) !important;
  border-color: rgba(155,230,255,.16) !important;
}
.avatar.avatar-empty::before {
  content: "";
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: rgba(226,241,249,.72);
  box-shadow: 0 14px 0 4px rgba(226,241,249,.45);
  transform: translateY(-5px) scale(.62);
}
.avatar.avatar-empty span { display: none !important; }
.avatar.avatar-ai { color:#06121c !important; background:linear-gradient(135deg,#9be6ff,#f4c96d) !important; font-size:10px !important; font-weight:950 !important; }
.message:not(.is-own) .avatar.avatar-empty + .bubble { margin-left: 0 !important; }
.bubble {
  width: fit-content !important;
  max-width: min(78vw, 360px) !important;
  overflow: hidden !important;
  isolation: isolate !important;
}
.message.is-own .bubble { max-width: min(82vw, 380px) !important; }
.bubble p, .bubble-head, .reply-snapshot, .poll-card { max-width: 100% !important; overflow-wrap: anywhere !important; }
.bubble .attachments {
  width: 100% !important;
  max-width: min(100%, 310px) !important;
  overflow: hidden !important;
  display: grid !important;
  gap: 6px !important;
}
.bubble figure.attachment-image,
.bubble .attachment-image {
  margin: 6px 0 0 !important;
  width: 100% !important;
  max-width: min(100%, 310px) !important;
  overflow: hidden !important;
  border-radius: 12px !important;
  background: rgba(0,0,0,.22) !important;
}
.bubble .attachment-image a { display:block !important; width:100% !important; max-width:100% !important; }
.bubble .attachment-image img {
  display: block !important;
  width: 100% !important;
  max-width: 310px !important;
  max-height: 240px !important;
  min-height: 0 !important;
  object-fit: cover !important;
  border-radius: 12px !important;
}
.bubble .attachment-image figcaption { font-size: 11px !important; padding: 4px 2px 0 !important; color: rgba(226,241,249,.72) !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }
.message-list > img,
.message-list > picture,
.message-list > figure,
.message-list > a > img { max-width: 310px !important; max-height: 240px !important; object-fit: cover !important; }
.member-app.is-chat-room-open .chat-room-head { min-height: calc(52px + env(safe-area-inset-top)) !important; padding-top: calc(3px + env(safe-area-inset-top)) !important; }
.member-app.is-chat-room-open .pinned-bar { font-size: 13px !important; }

/* v14: hide fallback initials under real top/profile avatars */
.profile-avatar-btn.has-image span,
.profile-big-avatar.has-image span,
.top-avatar.has-image span { display: none !important; }

/* v16: safer room selection, confirmed archive, recover archived rooms, stable drag */
.room-tools-menu {
  position: fixed;
  top: calc(132px + env(safe-area-inset-top));
  right: max(10px, calc((100vw - 540px)/2 + 10px));
  z-index: 96;
  width: min(82vw, 340px);
  padding: 8px;
  border-radius: 18px;
  border: 1px solid rgba(155,230,255,.16);
  background: rgba(28, 46, 62, .98);
  box-shadow: 0 22px 70px rgba(0,0,0,.55);
}
.room-tools-menu button {
  width: 100%;
  min-height: 48px;
  border: 0;
  border-radius: 12px;
  padding: 10px 13px;
  background: transparent;
  color: #edf8ff;
  text-align: left;
  font-size: 14px;
  font-weight: 800;
}
.room-tools-menu button:hover { background: rgba(255,255,255,.08); }
.room-selection-toolbar { gap: 8px !important; }
.room-selection-toolbar strong {
  min-width: 92px;
  flex: 1 1 auto;
  font-size: 17px !important;
  white-space: nowrap;
}
.room-selection-toolbar button:not(.selection-x) {
  width: auto !important;
  min-width: 48px;
  height: 44px !important;
  padding: 4px 7px !important;
  border-radius: 16px !important;
  grid-auto-flow: row;
  gap: 1px;
}
.room-selection-toolbar button span { display: block; line-height: 1; font-size: 16px; }
.room-selection-toolbar button em {
  display: block;
  font-style: normal;
  font-size: 10px;
  line-height: 1.05;
  color: rgba(232,246,255,.82);
  letter-spacing: .02em;
}
.room-context-menu { width: min(84vw, 360px) !important; }
.app-toast {
  position: fixed;
  left: 50%;
  bottom: calc(86px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: 1200;
  width: min(92vw, 430px);
  min-height: 46px;
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: space-between;
  padding: 10px 13px;
  border-radius: 16px;
  border: 1px solid rgba(155,230,255,.18);
  background: rgba(19, 36, 50, .98);
  color: #edf8ff;
  box-shadow: 0 18px 60px rgba(0,0,0,.45);
  font-size: 13px;
  font-weight: 800;
}
.app-toast button {
  border: 0;
  border-radius: 999px;
  padding: 7px 10px;
  background: rgba(42,168,221,.22);
  color: #9be6ff;
  font-weight: 950;
}
.room-drag-ghost {
  max-width: min(92vw, 500px) !important;
  pointer-events: none !important;
  will-change: transform;
}
.is-room-dragging-live, .is-room-dragging-live * { user-select: none !important; -webkit-user-select: none !important; }
.is-room-dragging-live .room-list { touch-action: none !important; }
.member-app.is-room-selection .room-btn { touch-action: none; }
.member-app.is-room-selection .room-btn:not(.is-dragging) { transform: translateZ(0); }
.member-app.is-room-selection .room-drag-handle {
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: rgba(255,255,255,.055);
  font-size: 18px;
}
@media (max-width: 540px) {
  .room-selection-toolbar { padding: 7px 8px !important; gap: 6px !important; }
  .room-selection-toolbar strong { font-size: 16px !important; min-width: 80px; }
  .room-selection-toolbar button:not(.selection-x) { min-width: 44px; padding-inline: 5px !important; }
  .room-selection-toolbar button em { font-size: 9px; }
}


/* v17 Drag Stability: custom mobile drag only, no native browser drag ghost/imprint */
.room-drag-handle,
.room-drag-handle * {
  -webkit-user-drag: none !important;
  user-drag: none !important;
  -webkit-touch-callout: none !important;
}
.room-btn.is-drag-placeholder {
  visibility: hidden !important;
  opacity: 0 !important;
  box-shadow: none !important;
}
.room-btn.is-drop-target {
  box-shadow: inset 0 0 0 2px rgba(42,168,221,.5) !important;
  background: rgba(42,168,221,.16) !important;
}
.room-drag-ghost {
  position: fixed !important;
  z-index: 99999 !important;
  pointer-events: none !important;
  opacity: .98 !important;
  transform: none !important;
  transition: none !important;
  will-change: top, left !important;
  box-shadow: 0 18px 50px rgba(0,0,0,.58), 0 0 0 1px rgba(155,230,255,.34) !important;
  border-radius: 18px !important;
  overflow: hidden !important;
}
.is-room-dragging-live,
.is-room-dragging-live * {
  cursor: grabbing !important;
  user-select: none !important;
  -webkit-user-select: none !important;
  -webkit-touch-callout: none !important;
}
.is-room-dragging-live .room-list {
  touch-action: none !important;
  overscroll-behavior: contain !important;
}

/* v18 Message actions compact sheet: Telegram-like, anchored beside tapped bubble instead of blocking screen */
.message-action-sheet {
  position: fixed !important;
  z-index: 96 !important;
  width: min(292px, calc(100vw - 20px)) !important;
  max-height: min(60svh, 470px) !important;
  overflow: visible !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
}
.message-action-sheet.is-hidden { display: none !important; }
.message-action-sheet .action-react-row {
  display: flex !important;
  align-items: center;
  gap: 6px !important;
  width: max-content;
  max-width: min(92vw, 360px);
  overflow-x: auto;
  padding: 7px 8px !important;
  margin: 0 0 7px 0 !important;
  border-radius: 999px;
  background: rgba(31, 55, 75, .96);
  box-shadow: 0 10px 32px rgba(0,0,0,.32), 0 0 0 1px rgba(155,230,255,.12);
  -webkit-overflow-scrolling: touch;
}
.message-action-sheet .action-react-row button {
  flex: 0 0 auto !important;
  width: 36px !important;
  height: 36px !important;
  border: 0 !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,.06) !important;
  color: #fff !important;
  font-size: 20px !important;
  display: grid;
  place-items: center;
}
.message-action-sheet .action-menu-card {
  width: 264px;
  max-width: calc(100vw - 24px);
  overflow: hidden;
  border-radius: 15px;
  background: rgba(31, 55, 75, .97);
  box-shadow: 0 14px 40px rgba(0,0,0,.36), 0 0 0 1px rgba(155,230,255,.12);
  backdrop-filter: blur(18px);
}
.message-action-sheet .reacted-row {
  width: 100%;
  min-height: 42px !important;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border: 0;
  border-radius: 0 !important;
  background: rgba(255,255,255,.035) !important;
  color: #edf8ff;
  padding: 9px 12px !important;
  margin: 0 !important;
  font-size: 14px;
}
.message-action-sheet .reacted-row em img { width:24px !important; height:24px !important; border-radius:50%; object-fit:cover; }
.message-action-sheet .action-menu-list {
  display: grid;
  gap: 0 !important;
  padding: 4px 0 6px;
}
.message-action-sheet .action-menu-list button {
  min-height: 39px !important;
  display: grid !important;
  grid-template-columns: 34px 1fr;
  align-items: center;
  gap: 8px !important;
  border: 0;
  border-radius: 0 !important;
  background: transparent;
  color: #edf8ff;
  text-align: left;
  padding: 6px 13px !important;
  font-size: 15px !important;
}
.message-action-sheet .action-menu-list button i { font-style: normal; opacity: .92; text-align: center; font-size: 17px; }
.message-action-sheet .action-menu-list button:active,
.message-action-sheet .action-menu-list button:hover { background: rgba(255,255,255,.07) !important; }
.message-action-sheet .action-menu-list button:disabled { opacity: .35 !important; }
.message-action-sheet.is-above .action-react-row { margin-bottom: 7px !important; }

/* v18 Room drag safety: eliminate stale native imprint/old shadow as much as possible */
.room-btn,
.room-btn *,
.room-drag-ghost,
.room-drag-ghost * {
  -webkit-user-drag: none !important;
  user-drag: none !important;
  -webkit-tap-highlight-color: transparent !important;
}
.room-drag-ghost {
  filter: none !important;
  box-shadow: 0 10px 28px rgba(0,0,0,.42), 0 0 0 1px rgba(155,230,255,.28) !important;
  background: rgba(16, 34, 50, .98) !important;
}
.room-btn.is-drag-placeholder {
  visibility: visible !important;
  opacity: .14 !important;
  box-shadow: none !important;
  background: rgba(155,230,255,.06) !important;
}
.room-btn.is-drag-placeholder > * { opacity: 0 !important; }

/* v19: restore vertical scrolling for Chat list and Radar after overscroll guard */
html, body {
  height: auto !important;
  min-height: 100% !important;
  overflow-y: auto !important;
  overscroll-behavior-y: auto !important;
}
.app-shell {
  min-height: 100svh !important;
  height: auto !important;
  overflow-y: visible !important;
  overflow-x: hidden !important;
}
.member-app:not(.is-chat-room-open) {
  min-height: 100svh !important;
  height: auto !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch;
  padding-bottom: calc(96px + env(safe-area-inset-bottom)) !important;
}
.member-app:not(.is-chat-room-open) [data-chat-panel].is-active,
.member-app:not(.is-chat-room-open) [data-radar-panel].is-active {
  min-height: auto !important;
  height: auto !important;
  overflow-y: visible !important;
  overflow-x: hidden !important;
}
.member-app:not(.is-chat-room-open) .room-list {
  height: auto !important;
  max-height: none !important;
  min-height: auto !important;
  overflow-y: visible !important;
  overflow-x: hidden !important;
  padding-bottom: 14px !important;
}
.member-app:not(.is-chat-room-open) .radar-grid {
  height: auto !important;
  max-height: none !important;
  overflow-y: visible !important;
  padding-bottom: 22px !important;
}
/* Keep only the full chat room page locked; lists and radar must scroll normally. */
.member-app.is-chat-room-open,
.member-app.is-chat-room-open .chat-window {
  overflow: hidden !important;
  overscroll-behavior: contain !important;
}
.member-app.is-chat-room-open .message-list {
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch;
}


/* v20 HARD SCROLL FIX: do not rely on body scroll; make Chat list and Radar their own scroll containers. */
:root {
  --app-topbar-h: calc(82px + env(safe-area-inset-top));
  --chat-search-h: 64px;
  --bottom-nav-h: calc(65px + env(safe-area-inset-bottom));
}
html, body {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  overflow: hidden !important;
  overscroll-behavior-x: none !important;
  touch-action: auto !important;
}
.app-shell {
  width: 100% !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  overflow: hidden !important;
}
.member-app:not(.is-chat-room-open) {
  position: relative !important;
  width: 100% !important;
  max-width: none !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  display: block !important;
}
.member-app:not(.is-chat-room-open) .app-topbar {
  position: fixed !important;
  left: 0 !important;
  top: 0 !important;
  width: 100% !important;
  max-width: none !important;
  transform: none !important;
  z-index: 70 !important;
}
.member-app:not(.is-chat-room-open) .chat-search-shell {
  position: fixed !important;
  left: 0 !important;
  top: var(--app-topbar-h) !important;
  width: 100% !important;
  max-width: none !important;
  transform: none !important;
  z-index: 68 !important;
  margin: 0 !important;
  padding: 8px 12px !important;
  box-sizing: border-box !important;
}
.member-app:not(.is-chat-room-open) .bottom-tabbar {
  position: fixed !important;
  left: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  max-width: none !important;
  transform: none !important;
  z-index: 70 !important;
}
.member-app:not(.is-chat-room-open) [data-chat-panel].is-active,
.member-app:not(.is-chat-room-open) [data-radar-panel].is-active {
  position: fixed !important;
  left: 0 !important;
  transform: none !important;
  width: 100% !important;
  max-width: none !important;
  box-sizing: border-box !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior-y: contain !important;
  touch-action: pan-y !important;
  z-index: 10 !important;
}
.member-app:not(.is-chat-room-open) [data-chat-panel].is-active {
  top: calc(var(--app-topbar-h) + var(--chat-search-h)) !important;
  bottom: var(--bottom-nav-h) !important;
  padding: 0 12px 18px !important;
}
.member-app:not(.is-chat-room-open) [data-radar-panel].is-active {
  top: var(--app-topbar-h) !important;
  bottom: var(--bottom-nav-h) !important;
  padding: 12px 12px 22px !important;
}
.member-app:not(.is-chat-room-open) .section-head[data-chat-section-head] { display: none !important; }
.member-app:not(.is-chat-room-open) .room-list,
.member-app:not(.is-chat-room-open) .radar-grid,
.member-app:not(.is-chat-room-open) .radar-commander,
.member-app:not(.is-chat-room-open) .link-grid,
.member-app:not(.is-chat-room-open) .disclaimer {
  height: auto !important;
  min-height: auto !important;
  max-height: none !important;
  overflow: visible !important;
}
.member-app:not(.is-chat-room-open) .room-list {
  border-radius: 0 !important;
  border-left: 0 !important;
  border-right: 0 !important;
  background: transparent !important;
  padding: 4px 0 14px !important;
}
/* Do not let generic drag/overlay locks kill vertical scrolling unless an actual drag is active. */
body:not(.is-room-dragging-live) .member-app:not(.is-chat-room-open) [data-chat-panel].is-active,
body:not(.is-room-dragging-live) .member-app:not(.is-chat-room-open) [data-radar-panel].is-active,
body:not(.is-room-dragging-live) .member-app:not(.is-chat-room-open) .room-list {
  touch-action: pan-y !important;
  pointer-events: auto !important;
}
.member-app.is-chat-room-open {
  height: 100dvh !important;
  overflow: hidden !important;
}
.member-app.is-chat-room-open .message-list {
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
}


/* v21: release stability — admin/default room order only, emoji panel fix, upload UX polish */
.room-drag-handle,
.member-app.is-room-selection .room-drag-handle,
.room-drag-ghost { display: none !important; }
.room-btn.is-dragging,
.room-btn.is-drag-placeholder { opacity: 1 !important; transform: none !important; }
.member-app.is-room-selection .room-btn { cursor: default !important; }
.emoji-panel {
  grid-template-rows: auto auto minmax(0, 1fr) !important;
  overflow: hidden !important;
  max-height: min(48svh, 390px) !important;
  touch-action: pan-y !important;
}
.emoji-tabs {
  overflow-x: auto !important;
  overflow-y: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-x !important;
}
.emoji-tabs button {
  flex: 0 0 auto;
  border: 0;
  border-radius: 999px;
  padding: 7px 10px;
  background: rgba(255,255,255,.07);
  color: rgba(226,241,249,.78);
  font-size: 11px;
  font-weight: 900;
}
.emoji-tabs button.is-active {
  background: rgba(42,168,221,.28);
  color: #eaffff;
  box-shadow: inset 0 0 0 1px rgba(155,230,255,.18);
}
.emoji-grid {
  min-height: 0 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior: contain !important;
  touch-action: pan-y !important;
  padding-bottom: 8px !important;
}
.emoji-grid button { touch-action: manipulation !important; }
.room-emoji img,
.room-avatar-large img,
.top-avatar img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  image-rendering: auto;
}

/* v22: release QA — emoji stays open/scrolls, date separators, clean reaction chips */
.member-app.is-chat-room-open .emoji-panel,
.emoji-panel {
  display: flex !important;
  flex-direction: column !important;
  height: min(58svh, 440px) !important;
  max-height: min(58svh, 440px) !important;
  min-height: 260px !important;
  overflow: hidden !important;
  overscroll-behavior: contain !important;
  touch-action: pan-y !important;
}
.emoji-panel.is-hidden { display: none !important; }
.emoji-sheet-head,
.emoji-tabs { flex: 0 0 auto !important; }
.emoji-tabs {
  overflow-x: auto !important;
  overflow-y: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-x !important;
  scrollbar-width: none !important;
}
.emoji-grid {
  flex: 1 1 auto !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior: contain !important;
  touch-action: pan-y !important;
  padding-bottom: 14px !important;
}
.emoji-grid::-webkit-scrollbar { width: 0 !important; height: 0 !important; }
.date-separator {
  align-self: center;
  position: sticky;
  top: 6px;
  z-index: 4;
  margin: 10px auto 8px;
  pointer-events: none;
}
.date-separator span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  padding: 5px 11px;
  color: rgba(237,249,255,.92);
  background: rgba(11, 23, 35, .66);
  border: 1px solid rgba(155,230,255,.12);
  box-shadow: 0 6px 18px rgba(0,0,0,.28);
  backdrop-filter: blur(10px);
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .02em;
}
.reaction-summary {
  display: inline-flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  margin-top: 5px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
.reaction-summary .reaction-chip,
.reaction-summary button {
  display: inline-flex !important;
  align-items: center !important;
  gap: 2px !important;
  width: auto !important;
  min-width: 0 !important;
  height: auto !important;
  border: 0 !important;
  border-radius: 0 !important;
  margin: 0 !important;
  padding: 0 3px !important;
  color: rgba(245,251,255,.94) !important;
  background: transparent !important;
  box-shadow: none !important;
  font-size: 15px !important;
  line-height: 1.2 !important;
}
.reaction-summary .reaction-chip b,
.reaction-summary button b {
  color: rgba(245,251,255,.88) !important;
  font-size: 13px !important;
  font-weight: 850 !important;
}
.reaction-summary .reaction-chip span,
.reaction-summary button span { font-size: 18px !important; line-height: 1 !important; }
.bubble-head span:last-child {
  font-size: 9.5px !important;
  opacity: .78 !important;
  white-space: nowrap !important;
}


/* v23: strict reaction cleanup — no grey chips, no invalid symbol reactions */
.reaction-summary,
.message .reaction-summary,
.bubble .reaction-summary {
  display: inline-flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  margin: 5px 0 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  min-height: 0 !important;
}
.reaction-summary .reaction-inline,
.reaction-summary [data-react-again] {
  appearance: none !important;
  -webkit-appearance: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 2px !important;
  width: auto !important;
  min-width: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  line-height: 1 !important;
  margin: 0 !important;
  padding: 0 !important;
  color: rgba(246,251,255,.96) !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  font: inherit !important;
  cursor: pointer !important;
  -webkit-tap-highlight-color: transparent !important;
}
.reaction-summary .reaction-inline::before,
.reaction-summary .reaction-inline::after,
.reaction-summary [data-react-again]::before,
.reaction-summary [data-react-again]::after { display: none !important; content: none !important; }
.reaction-summary .reaction-emoji,
.reaction-summary .reaction-inline > span,
.reaction-summary [data-react-again] > span {
  display: inline !important;
  font-size: 18px !important;
  line-height: 1 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
.reaction-summary .reaction-inline > b,
.reaction-summary [data-react-again] > b {
  display: inline !important;
  font-size: 13px !important;
  line-height: 1 !important;
  font-weight: 850 !important;
  color: rgba(246,251,255,.92) !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 0 0 1px !important;
}


/* v24: emoji panel final behaviour — closeable, category pills fixed, grid scrolls */
.emoji-panel {
  display: flex !important;
  flex-direction: column !important;
  left: 10px !important;
  right: 10px !important;
  height: min(48svh, 380px) !important;
  min-height: 250px !important;
  max-height: min(48svh, 380px) !important;
  overflow: hidden !important;
  overscroll-behavior: contain !important;
  touch-action: none !important;
}
.emoji-panel.is-hidden { display: none !important; }
.emoji-sheet-head { flex: 0 0 auto !important; min-height: 26px !important; }
.emoji-close {
  flex: 0 0 auto !important;
  width: 30px !important;
  height: 30px !important;
  min-height: 30px !important;
  border-radius: 50% !important;
  border: 0 !important;
  background: rgba(255,255,255,.08) !important;
  color: rgba(238,249,255,.88) !important;
  font-size: 22px !important;
  line-height: 1 !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
}
.emoji-tabs {
  flex: 0 0 auto !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  gap: 7px !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-x !important;
  padding: 2px 0 7px !important;
  scrollbar-width: none !important;
}
.emoji-tabs button {
  width: auto !important;
  height: auto !important;
  min-width: 54px !important;
  min-height: 34px !important;
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 7px 12px !important;
  border-radius: 999px !important;
  white-space: nowrap !important;
  line-height: 1 !important;
}
.emoji-grid {
  flex: 1 1 auto !important;
  display: grid !important;
  grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
  align-content: start !important;
  align-items: start !important;
  gap: 8px !important;
  min-height: 0 !important;
  height: auto !important;
  max-height: none !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior: contain !important;
  touch-action: pan-y !important;
  padding: 2px 0 18px !important;
}
.emoji-grid button {
  width: 100% !important;
  height: auto !important;
  min-height: 46px !important;
  aspect-ratio: 1 / 1 !important;
  border-radius: 13px !important;
  font-size: 22px !important;
}


/* v25: hard close behavior for composer emoji panel */
.emoji-panel.is-hidden,
.emoji-panel[aria-hidden="true"] {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
  opacity: 0 !important;
}
.emoji-panel {
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  touch-action: auto !important;
}
.emoji-sheet-head,
.emoji-tabs { touch-action: pan-x !important; }
.emoji-grid { touch-action: pan-y !important; }
.member-app.has-message-selection .composer-shell .emoji-panel,
.member-app.is-room-selection .composer-shell .emoji-panel {
  display: none !important;
}

/* v26: Professional Radar Command cards */
.app-radar-screen {
  display: grid;
  gap: 14px;
  padding-bottom: 12px;
}
.radar-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 2px 2px 0;
}
.radar-topline h2 { margin: 2px 0 0; font-size: 22px; letter-spacing: .01em; }
.radar-refresh { min-width: 62px; border-color: rgba(155,230,255,.18) !important; }
.radar-commander {
  border: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  display: grid !important;
  gap: 12px !important;
}
.radar-hero-card {
  position: relative;
  overflow: hidden;
  border-radius: 24px;
  padding: 16px;
  border: 1px solid rgba(155,230,255,.16);
  background:
    radial-gradient(circle at 14% 0%, rgba(155,230,255,.18), transparent 30%),
    linear-gradient(135deg, rgba(13,31,44,.98), rgba(5,16,23,.94));
  box-shadow: 0 18px 46px rgba(0,0,0,.35), inset 0 0 0 1px rgba(255,255,255,.025);
}
.radar-hero-card.is-bull {
  border-color: rgba(31,221,149,.38);
  background: radial-gradient(circle at 10% 0%, rgba(31,221,149,.27), transparent 36%), linear-gradient(135deg, rgba(5,49,34,.98), rgba(4,20,18,.96));
}
.radar-hero-card.is-wait {
  border-color: rgba(244,201,109,.38);
  background: radial-gradient(circle at 12% 0%, rgba(244,201,109,.24), transparent 36%), linear-gradient(135deg, rgba(48,38,13,.98), rgba(14,18,20,.96));
}
.radar-hero-card.is-bear {
  border-color: rgba(255,91,117,.40);
  background: radial-gradient(circle at 10% 0%, rgba(255,91,117,.26), transparent 36%), linear-gradient(135deg, rgba(52,14,23,.98), rgba(15,17,21,.96));
}
.radar-hero-top {
  display: grid;
  grid-template-columns: 46px 1fr auto;
  gap: 12px;
  align-items: center;
}
.coin-icon {
  width: 46px;
  height: 46px;
  border-radius: 18px;
  display: grid;
  place-items: center;
  background: rgba(255,255,255,.09);
  font-size: 24px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06);
}
.radar-hero-top h3 { margin: 1px 0 0; font-size: 20px; }
.command-pill {
  border-radius: 999px;
  padding: 7px 10px;
  background: rgba(0,0,0,.24);
  color: #dff8ff;
  border: 1px solid rgba(255,255,255,.12);
  font-size: 11px;
  font-weight: 950;
  white-space: nowrap;
}
.hero-summary { margin: 14px 0 0; color: #e6f6fb; line-height: 1.58; font-weight: 720; }
.hero-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
  margin-top: 14px;
}
.radar-stat {
  min-width: 0;
  border-radius: 16px;
  padding: 10px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.20);
}
.radar-stat span {
  display: block;
  color: rgba(226,241,249,.60);
  font-size: 10px;
  font-weight: 950;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.radar-stat strong {
  display: block;
  margin-top: 4px;
  color: #fff;
  font-size: 12px;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
}
.fear-card-v2 {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  align-items: center;
  padding: 14px 16px;
  border-radius: 22px;
  border: 1px solid rgba(155,230,255,.15);
  background: linear-gradient(135deg, rgba(42,168,221,.14), rgba(255,255,255,.045));
}
.fear-card-v2 span { color: rgba(226,241,249,.65); font-size: 11px; font-weight: 950; text-transform: uppercase; letter-spacing: .08em; }
.fear-card-v2 strong { display:block; margin-top:4px; font-size: 36px; line-height: 1; color:#fff; }
.fear-card-v2 em { font-style: normal; font-weight: 950; color: #f4c96d; }
.fear-card-v2 small { grid-column: 1 / -1; color: rgba(226,241,249,.62); font-weight: 800; }
.radar-section {
  border-radius: 24px !important;
  padding: 13px !important;
  background: rgba(8,18,28,.78) !important;
  border: 1px solid rgba(155,230,255,.11) !important;
}
.radar-section-title h3 { font-size: 17px !important; }
.radar-section-title span { background: rgba(155,230,255,.10) !important; }
.bias-route-card {
  border-radius: 18px;
  padding: 13px;
  border: 1px solid rgba(244,201,109,.22);
  background: linear-gradient(135deg, rgba(244,201,109,.14), rgba(255,255,255,.035));
}
.bias-route-card.is-bull { border-color: rgba(31,221,149,.30); background: linear-gradient(135deg, rgba(31,221,149,.15), rgba(255,255,255,.035)); }
.bias-route-card.is-bear { border-color: rgba(255,91,117,.30); background: linear-gradient(135deg, rgba(255,91,117,.15), rgba(255,255,255,.035)); }
.bias-route-card b { color: #fff; font-size: 15px; }
.bias-route-card p { margin: 7px 0 0; color: #b9cedc; line-height: 1.5; }
.radar-coin-card {
  display: grid;
  grid-template-columns: 1fr 48px;
  gap: 8px 10px;
  padding: 12px;
  border-radius: 18px;
  background: rgba(255,255,255,.045);
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.015);
}
.radar-coin-card.is-watch { border-color: rgba(31,221,149,.18); background: linear-gradient(135deg, rgba(31,221,149,.10), rgba(255,255,255,.035)); }
.radar-coin-card.is-avoid { border-color: rgba(255,91,117,.19); background: linear-gradient(135deg, rgba(255,91,117,.11), rgba(255,255,255,.035)); }
.coin-main { min-width: 0; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.coin-main strong { font-size: 16px; color: #fff; letter-spacing: .01em; }
.coin-main em, .coin-badge {
  font-style: normal;
  border-radius: 999px;
  padding: 3px 7px;
  background: rgba(255,255,255,.08);
  color: rgba(226,241,249,.70);
  font-size: 10px;
  font-weight: 950;
}
.radar-coin-card.is-watch .coin-badge { color: #7dffd0; background: rgba(31,221,149,.13); }
.radar-coin-card.is-avoid .coin-badge { color: #ffb0bd; background: rgba(255,91,117,.13); }
.score-ring {
  width: 48px;
  height: 48px;
  border-radius: 18px;
  display: grid;
  place-items: center;
  background: rgba(42,168,221,.12);
  border: 1px solid rgba(155,230,255,.12);
}
.score-ring b { display:block; font-size: 16px; line-height: 1; color: #fff; }
.score-ring span { display:block; margin-top:-8px; font-size: 8px; color: rgba(226,241,249,.55); text-transform: uppercase; }
.radar-coin-card p { grid-column: 1 / -1; margin: 0; color: #b8cddd; line-height: 1.45; font-size: 12.5px; }
.major-grid { grid-template-columns: 1fr !important; gap: 12px !important; }
.major-radar-card {
  min-height: 0 !important;
  padding: 15px !important;
  border-radius: 24px !important;
  position: relative;
  overflow: hidden;
}
.major-radar-card.is-bull { background: linear-gradient(135deg, rgba(31,221,149,.18), rgba(5,20,20,.96)) !important; border-color: rgba(31,221,149,.30) !important; }
.major-radar-card.is-wait { background: linear-gradient(135deg, rgba(244,201,109,.17), rgba(16,19,23,.96)) !important; border-color: rgba(244,201,109,.30) !important; }
.major-radar-card.is-bear { background: linear-gradient(135deg, rgba(255,91,117,.18), rgba(16,19,23,.96)) !important; border-color: rgba(255,91,117,.30) !important; }
.major-title-row { display:flex; align-items:baseline; justify-content:space-between; gap: 10px; }
.major-title-row h3 { margin: 0; font-size: 17px; }
.major-price { font-size: 16px; color: #fff; white-space: nowrap; }
.radar-kv-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.radar-kv { border-radius: 14px; padding: 9px; background: rgba(0,0,0,.18); border: 1px solid rgba(255,255,255,.06); }
.radar-kv span { display:block; color:rgba(226,241,249,.55); font-size:10px; font-weight:950; text-transform:uppercase; letter-spacing:.06em; }
.radar-kv b { display:block; margin-top:3px; color:#fff; font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.major-radar-card small { color: rgba(226,241,249,.55); font-weight: 800; }
.radar-deep-links { margin-top: 2px; }
.radar-site-note { border: 1px solid rgba(155,230,255,.10) !important; background: rgba(155,230,255,.06) !important; }
@media (max-width: 430px) {
  .hero-stats { grid-template-columns: 1fr; }
  .radar-hero-top { grid-template-columns: 42px 1fr; }
  .radar-hero-top .command-pill { grid-column: 1 / -1; justify-self: start; }
}

.radar-source-line{margin:10px 0 0;color:rgba(191,231,255,.64);font-size:11px;letter-spacing:.03em}

/* v29: Radar data freshness visibility */
.radar-item-time,
.radar-fresh-line {
  display: block;
  margin-top: 7px;
  font-size: 10.5px;
  line-height: 1.25;
  color: rgba(193, 222, 235, .78);
  font-weight: 800;
  letter-spacing: .01em;
}
.radar-item-time.is-fresh,
.radar-fresh-line.is-fresh { color: rgba(90, 245, 176, .88); }
.radar-item-time.is-old,
.radar-fresh-line.is-old { color: rgba(244, 201, 109, .95); }
.radar-item-time.is-stale,
.radar-fresh-line.is-stale { color: rgba(255, 112, 112, .95); }
.radar-coin-card.is-stale,
.major-radar-card.is-stale {
  border-color: rgba(255, 103, 103, .34) !important;
  background: linear-gradient(135deg, rgba(110, 30, 44, .34), rgba(255,255,255,.04)) !important;
}
.radar-coin-card.is-old,
.major-radar-card.is-old {
  border-color: rgba(244, 201, 109, .32) !important;
}
.radar-source-line {
  word-break: break-word;
}
.radar-section-title span {
  max-width: 58%;
  text-align: right;
  line-height: 1.25;
}


/* v30: Radar bilingual toggle + Fear & Greed status */
.lang-toggle { min-width: 46px; font-weight: 950; letter-spacing: .04em; color: #9be6ff !important; border-color: rgba(155,230,255,.22) !important; background: rgba(155,230,255,.08) !important; }
.fear-card-v2 small { display:block; margin-top: 4px; color: rgba(226,241,249,.58); font-weight: 850; }
.fear-card-v2 em { max-width: 160px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.radar-lang-note { color: rgba(226,241,249,.62); font-size: 11px; }
@media (max-width: 420px) { .top-actions { gap: 5px; } .lang-toggle { min-width: 42px; padding-inline: 10px; } }


/* v31 Android APK / TWA login keyboard hotfix
   Purpose: reduce password-input lag and make the login form stable when Android keyboard opens.
   Scope: /app/ login/auth only; no root-site impact.
*/
.auth-screen {
  align-items: start !important;
  place-items: start center !important;
  align-content: start !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  min-height: 100dvh !important;
  padding-top: max(18px, env(safe-area-inset-top)) !important;
}
.auth-card {
  margin: 0 auto !important;
  transform: translateZ(0);
  will-change: auto;
}
.login-form input,
.auth-screen input,
.auth-screen textarea,
.auth-screen select {
  font-size: 16px !important;
  line-height: 1.28 !important;
  min-height: 52px !important;
  -webkit-user-select: text !important;
  user-select: text !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: rgba(42,168,221,.18) !important;
  caret-color: #ffffff !important;
  transform: none !important;
  will-change: auto !important;
}
.login-form input[type="password"] {
  letter-spacing: .02em;
}
.login-help-note {
  margin: -3px 0 0;
  color: rgba(180, 205, 225, .78);
  font-size: 12px;
  line-height: 1.55;
}
.app-web-fallback {
  margin-top: 10px !important;
  color: rgba(167,231,255,.82) !important;
  font-size: 12px;
}
html.is-keyboard-focus body,
html.is-keyboard-open body {
  overflow-y: auto !important;
}
html.is-keyboard-focus .auth-screen,
html.is-keyboard-open .auth-screen {
  place-items: start center !important;
  padding-top: max(10px, env(safe-area-inset-top)) !important;
  padding-bottom: max(24px, env(safe-area-inset-bottom)) !important;
}
html.is-keyboard-focus .auth-card,
html.is-keyboard-open .auth-card {
  box-shadow: 0 12px 38px rgba(0,0,0,.36) !important;
}
@media (max-width: 520px) {
  .auth-card,
  .apply-panel,
  .hold-card {
    padding: 18px !important;
    border-radius: 16px !important;
  }
  .auth-card h1,
  .apply-panel h2 { font-size: 22px !important; }
  .auth-copy { line-height: 1.52 !important; }
  .login-form { gap: 11px !important; margin-top: 14px !important; }
}
@media (hover: none) and (pointer: coarse) {
  button:hover,
  .deep-link:hover {
    transform: none !important;
  }
  .primary-btn,
  .ghost-btn,
  .small-btn,
  .icon-btn,
  .deep-link,
  .send-form button {
    transition: opacity .12s ease, background .12s ease !important;
  }
}

/* v33 Safe Recovery
   Roll back the aggressive v32 auth guard and keep only safe visibility rules.
   Goal: prevent login overlap without blocking Chat/Radar taps or room loading.
*/
[data-boot].is-hidden,
[data-auth-screen].is-hidden,
[data-locked-screen].is-hidden,
[data-apply-panel].is-hidden {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
[data-member-app]:not(.is-hidden) {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: relative !important;
  z-index: 1 !important;
}
.bottom-tabbar,
.bottom-tabbar .tab-btn,
.chat-search-shell,
.room-list,
.tab-panel.is-active {
  pointer-events: auto !important;
}
.room-list .empty-note {
  padding: 18px 14px;
  line-height: 1.6;
}
.app-recovery-note {
  margin: 14px 12px;
  padding: 13px 14px;
  border: 1px solid rgba(89, 192, 255, .22);
  border-radius: 16px;
  background: rgba(42, 168, 221, .09);
  color: rgba(226, 241, 249, .86);
  font-size: 13px;
  line-height: 1.55;
}
.app-recovery-note button,
.app-recovery-note a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 9px 8px 0 0;
  padding: 8px 11px;
  border-radius: 12px;
  border: 1px solid rgba(151, 222, 255, .25);
  background: rgba(255, 255, 255, .07);
  color: #eaf8ff;
  font-weight: 900;
  text-decoration: none;
}

/* v34 Android Login + Chat + Radar Stability
   Keep inactive login layers out of the touch stack and make recovery states actionable.
*/
body.is-member-app-visible [data-auth-screen],
body.is-member-app-visible [data-boot],
body.is-member-app-visible [data-locked-screen],
body.is-member-app-visible [data-apply-panel],
[data-auth-screen].is-hidden,
[data-boot].is-hidden,
[data-locked-screen].is-hidden,
[data-apply-panel].is-hidden {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

body.is-member-app-visible [data-member-app]:not(.is-hidden) {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

.member-app:not(.is-chat-room-open) .bottom-tabbar,
.member-app:not(.is-chat-room-open) .bottom-tabbar *,
.member-app:not(.is-chat-room-open) [data-tab-panel].is-active,
.member-app:not(.is-chat-room-open) .chat-search-shell {
  pointer-events: auto !important;
}

.app-recovery-note strong {
  display: block;
  margin-bottom: 6px;
  color: #eaf8ff;
  font-size: 14px;
}

.app-recovery-note p {
  margin: 0;
}

.app-recovery-note.is-empty {
  border-color: rgba(255, 207, 115, .28);
  background: rgba(255, 207, 115, .08);
}

.app-retry-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.app-retry-actions button {
  min-height: 38px;
  border: 1px solid rgba(151, 222, 255, .25);
  border-radius: 12px;
  padding: 8px 11px;
  background: rgba(255, 255, 255, .08);
  color: #eaf8ff;
  font-weight: 900;
}

/* v35 Auth Shell Visibility Fix
   Keep the whole member app shell hidden until app.js switches to is-member-app-visible.
*/
[data-member-app].is-hidden,
body:not(.is-member-app-visible) [data-member-app] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  position: absolute !important;
  inset: auto !important;
  width: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  overflow: hidden !important;
  z-index: -1 !important;
}

[data-member-app].is-hidden [data-app-topbar],
[data-member-app].is-hidden [data-chat-search-shell],
[data-member-app].is-hidden [data-bottom-tabbar],
[data-member-app].is-hidden [data-tab-panel],
body:not(.is-member-app-visible) [data-member-app] [data-app-topbar],
body:not(.is-member-app-visible) [data-member-app] [data-chat-search-shell],
body:not(.is-member-app-visible) [data-member-app] [data-bottom-tabbar],
body:not(.is-member-app-visible) [data-member-app] [data-tab-panel] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

body.is-member-app-visible [data-member-app]:not(.is-hidden) {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: relative !important;
  width: 100% !important;
  max-width: none !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  z-index: 1 !important;
}

/* v36 Room Preview Author
   Make room-list last replies read like "Name: message".
*/
.room-desc b {
  color: rgba(226, 241, 249, .92);
  font-weight: 900;
}

.room-desc span {
  color: rgba(183, 202, 217, .76);
}

/* v37 Member Avatar Shortform
   Members with a photo show the photo; members without a photo show initials from their name.
*/
.avatar.avatar-initials {
  visibility: visible !important;
  display: grid !important;
  place-items: center !important;
  width: 36px !important;
  height: 36px !important;
  border-radius: 50% !important;
  border: 1px solid rgba(155, 230, 255, .24) !important;
  background:
    radial-gradient(circle at 30% 25%, rgba(155,230,255,.32), transparent 34%),
    linear-gradient(135deg, rgba(42,168,221,.72), rgba(89,72,214,.72)) !important;
  color: #f2fbff !important;
  box-shadow: 0 8px 24px rgba(0,0,0,.28), inset 0 0 0 1px rgba(255,255,255,.08) !important;
  font-size: 11px !important;
  font-weight: 950 !important;
  letter-spacing: .02em !important;
  overflow: hidden !important;
}

.avatar.avatar-initials span {
  display: grid !important;
  place-items: center !important;
  width: 100% !important;
  height: 100% !important;
}

.avatar.avatar-initials.has-image span {
  display: none !important;
}

.message:not(.is-own) .avatar.avatar-initials + .bubble {
  margin-left: 0 !important;
}

/* v38 Telegram-style unread badges */
.room-btn.has-unread .room-title-line strong {
  color: #f4fbff;
}

.room-btn.has-unread .room-desc {
  color: rgba(220, 239, 250, .88);
}

.room-btn.has-unread .room-side b {
  min-width: 24px !important;
  height: 24px !important;
  padding: 0 8px !important;
  border-radius: 999px !important;
  background: linear-gradient(135deg, #6fb7ff, #4d86bd) !important;
  color: #ffffff !important;
  box-shadow: 0 8px 22px rgba(80, 154, 214, .34) !important;
  font-size: 11px !important;
  font-weight: 950 !important;
}

/* v43 Avatar cache + neon own messages + Telegram-style receipts */
.room-emoji.has-image,
.room-avatar-large.has-image,
.mini-room-avatar.has-image {
  background:
    radial-gradient(circle at 30% 24%, rgba(155,230,255,.28), transparent 34%),
    linear-gradient(135deg, rgba(42,168,221,.72), rgba(89,72,214,.72)) !important;
}

.room-emoji.has-image:not(.is-loaded) span,
.room-avatar-large.has-image:not(.is-loaded) span,
.mini-room-avatar.has-image:not(.is-loaded) span {
  display: grid !important;
  place-items: center !important;
  width: 100% !important;
  height: 100% !important;
}

.room-emoji.has-image:not(.is-loaded) img,
.room-avatar-large.has-image:not(.is-loaded) img,
.mini-room-avatar.has-image:not(.is-loaded) img {
  opacity: 0 !important;
  transform: scale(.96);
}

.room-emoji.has-image.is-loaded span,
.room-avatar-large.has-image.is-loaded span,
.mini-room-avatar.has-image.is-loaded span {
  display: none !important;
}

.room-emoji.has-image.is-loaded img,
.room-avatar-large.has-image.is-loaded img,
.mini-room-avatar.has-image.is-loaded img {
  opacity: 1 !important;
  transition: opacity .18s ease, transform .18s ease;
}

.room-emoji.is-avatar-cached img,
.room-avatar-large.is-avatar-cached img,
.mini-room-avatar.is-avatar-cached img {
  image-rendering: auto;
}

.message.is-own .bubble {
  position: relative !important;
  border: 1px solid rgba(155, 230, 255, .58) !important;
  background:
    linear-gradient(135deg, rgba(28, 150, 220, .98), rgba(86, 68, 218, .96) 58%, rgba(25, 185, 185, .94)) !important;
  box-shadow:
    0 12px 30px rgba(0, 0, 0, .30),
    0 0 0 1px rgba(255, 255, 255, .10),
    0 0 22px rgba(88, 215, 255, .24),
    0 0 34px rgba(85, 255, 214, .14),
    inset 0 1px 0 rgba(255, 255, 255, .22) !important;
}

.message.is-own .bubble::before {
  content: "";
  position: absolute;
  inset: 1px;
  border-radius: inherit;
  pointer-events: none;
  background:
    linear-gradient(135deg, rgba(255,255,255,.24), transparent 36%),
    radial-gradient(circle at 18% 12%, rgba(255,255,255,.18), transparent 30%);
  opacity: .46;
}

.message.is-own .bubble p,
.message.is-own .bubble .attachments,
.message.is-own .bubble .reply-snapshot,
.message.is-own .bubble .poll-card,
.message.is-own .bubble .reaction-summary,
.message.is-own .bubble .bubble-head {
  position: relative;
  z-index: 1;
}

.message.is-own .bubble p {
  text-shadow: 0 1px 8px rgba(0, 0, 0, .16);
}

.bubble-meta {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 5px !important;
  white-space: nowrap !important;
}

.message-status {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 16px !important;
  margin-left: 1px !important;
  color: rgba(226, 241, 249, .70) !important;
  font-size: 12px !important;
  font-weight: 950 !important;
  line-height: 1 !important;
}

.message-status i {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-style: normal !important;
  letter-spacing: 0 !important;
}

.message-status.is-delivered {
  color: rgba(232, 248, 255, .86) !important;
}

.message-status.is-read {
  color: #7ce2ff !important;
  text-shadow: 0 0 9px rgba(124, 226, 255, .70) !important;
}

/* v46 Smooth chat: local cache, optimistic send, quieter rendering */
.message-list {
  overscroll-behavior-y: contain !important;
  scrollbar-gutter: stable;
}

/* Smooth room opening: avoid old-room imprint and keep the latest messages in view */
.message-list.is-room-switching {
  scroll-behavior: auto !important;
}

.message-list.is-jump-bottom {
  scroll-behavior: auto !important;
}

.unread-separator {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 8px 4px;
  color: rgba(130, 222, 255, .94);
  font-size: 11px;
  font-weight: 900;
}

.unread-separator::before,
.unread-separator::after {
  content: "";
  height: 1px;
  flex: 1;
  background: linear-gradient(90deg, transparent, rgba(70, 184, 235, .42), transparent);
}

.unread-separator span {
  border-radius: 999px;
  padding: 4px 10px;
  background: rgba(11, 30, 45, .82);
  border: 1px solid rgba(88, 198, 246, .20);
  box-shadow: 0 8px 22px rgba(0, 0, 0, .20);
}

.jump-latest-btn {
  position: absolute;
  right: 14px;
  bottom: calc(82px + env(safe-area-inset-bottom));
  z-index: 96;
  width: 43px;
  height: 43px;
  border: 1px solid rgba(124, 226, 255, .20);
  border-radius: 999px;
  display: grid;
  place-items: center;
  color: #dff7ff;
  background:
    radial-gradient(circle at 30% 18%, rgba(124, 226, 255, .24), transparent 42%),
    rgba(11, 30, 45, .94);
  box-shadow:
    0 14px 34px rgba(0, 0, 0, .34),
    0 0 0 1px rgba(255, 255, 255, .04),
    0 0 22px rgba(42, 168, 221, .16);
  font-size: 28px;
  font-weight: 950;
  line-height: 1;
}

.jump-latest-btn.is-hidden {
  display: none;
}

.jump-latest-btn.has-count::after {
  content: attr(data-count);
  position: absolute;
  top: -8px;
  right: -5px;
  min-width: 19px;
  height: 19px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  padding: 0 5px;
  background: #2aa8dd;
  color: #06121c;
  border: 2px solid rgba(7, 17, 28, .96);
  font-size: 10px;
  font-weight: 950;
}

.room-switch-loading {
  display: grid;
  gap: 10px;
  padding: 8px 4px 18px;
}

.room-switch-title {
  justify-self: center;
  max-width: 78%;
  border-radius: 999px;
  padding: 5px 11px;
  color: rgba(204, 229, 244, .78);
  background: rgba(13, 28, 42, .72);
  border: 1px solid rgba(124, 226, 255, .10);
  font-size: 11px;
  font-weight: 800;
}

.message-skeleton-row {
  display: flex;
  align-items: flex-end;
  gap: 7px;
  width: min(76%, 390px);
}

.message-skeleton-row.is-own {
  justify-self: end;
  justify-content: flex-end;
  width: min(70%, 360px);
}

.message-skeleton-row i {
  width: 28px;
  height: 28px;
  flex: 0 0 auto;
  border-radius: 999px;
  background: rgba(124, 226, 255, .10);
}

.message-skeleton-row span {
  display: block;
  width: 100%;
  height: 42px;
  border-radius: 15px 15px 15px 5px;
  background:
    linear-gradient(90deg, rgba(255,255,255,.03), rgba(124,226,255,.13), rgba(255,255,255,.03)),
    rgba(28, 48, 65, .56);
  background-size: 220% 100%;
  animation: roomSwitchPulse 1.05s ease-in-out infinite;
}

.message-skeleton-row.is-own span {
  border-radius: 15px 15px 5px 15px;
  background:
    linear-gradient(90deg, rgba(255,255,255,.04), rgba(124,226,255,.18), rgba(255,255,255,.04)),
    rgba(24, 122, 178, .48);
}

@keyframes roomSwitchPulse {
  0% { background-position: 120% 0; opacity: .72; }
  50% { opacity: 1; }
  100% { background-position: -120% 0; opacity: .72; }
}

.message {
  content-visibility: auto;
  contain-intrinsic-size: 56px;
}

.message.is-pending .bubble {
  opacity: .82;
  filter: saturate(.92);
}

.message.is-failed .bubble {
  border-color: rgba(255, 91, 121, .58) !important;
  box-shadow:
    0 10px 26px rgba(0, 0, 0, .28),
    0 0 0 1px rgba(255, 91, 121, .20),
    0 0 22px rgba(255, 91, 121, .18) !important;
}

.message-status.is-pending {
  color: rgba(226, 241, 249, .58) !important;
}

.message-status.is-failed {
  width: 16px !important;
  height: 16px !important;
  border-radius: 50% !important;
  background: rgba(255, 91, 121, .18) !important;
  color: #ffb8c5 !important;
}

/* v59 Smooth Chat Core: keep chat transitions light on Android/PWA shells. */
.room-list {
  contain: layout paint style !important;
}

.room-btn {
  contain: layout paint !important;
  transform: translateZ(0);
  backface-visibility: hidden;
}

.room-btn img,
.avatar img,
.message img {
  content-visibility: auto;
}

.message-list {
  contain: layout paint style !important;
  transform: translateZ(0);
  will-change: scroll-position;
}

.message-list.is-room-switching {
  overflow-anchor: none !important;
}

.message-list.is-room-switching .room-switch-loading {
  min-height: 42vh;
  align-content: end;
}

.room-switch-loading {
  animation: roomSwitchFadeIn .14s ease-out both;
}

.message {
  contain: layout paint style;
}

.message .bubble {
  transform: translateZ(0);
  backface-visibility: hidden;
}

.jump-latest-btn {
  transform: translateZ(0);
}

@keyframes roomSwitchFadeIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* v63: quick reactions stay visible and tappable on mobile. */
.message-quick-reactions {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 6px !important;
  margin-top: 7px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

.message.is-own .message-quick-reactions {
  justify-content: flex-end !important;
}

.message-quick-reactions button {
  appearance: none !important;
  -webkit-appearance: none !important;
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  display: inline-grid !important;
  place-items: center !important;
  border-radius: 999px !important;
  border: 1px solid rgba(155,230,255,.18) !important;
  background: rgba(255,255,255,.065) !important;
  color: #fff !important;
  font-size: 19px !important;
  line-height: 1 !important;
  box-shadow: 0 8px 22px rgba(0,0,0,.2) !important;
  cursor: pointer !important;
  -webkit-tap-highlight-color: transparent !important;
}

.message-quick-reactions .quick-react-heart {
  background: rgba(255,72,96,.16) !important;
  border-color: rgba(255,120,142,.26) !important;
}

.message-quick-reactions button:active {
  transform: translateY(1px) scale(.98);
}

@media (max-width: 760px) {
  .message-quick-reactions {
    gap: 8px !important;
    margin-top: 8px !important;
  }

  .message-quick-reactions button {
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    font-size: 21px !important;
  }
}

/* v64: Telegram-style reactions + YouTube/link preview cards. */
.message-quick-reactions {
  display: none !important;
}

.link-preview-draft {
  padding: 7px 10px 0;
}

.link-preview-draft.is-hidden {
  display: none !important;
}

.link-preview-card {
  display: grid !important;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: 10px;
  width: min(100%, 430px);
  margin-top: 8px;
  overflow: hidden;
  border: 1px solid rgba(155,230,255,.15);
  border-radius: 14px;
  background: rgba(255,255,255,.065);
  color: #f3fbff;
  text-decoration: none;
  box-shadow: 0 10px 28px rgba(0,0,0,.22);
}

.link-preview-card.is-draft {
  width: 100%;
  margin-top: 0;
  background: rgba(20, 38, 55, .96);
}

.link-preview-thumb {
  display: grid;
  place-items: center;
  width: 96px;
  min-height: 74px;
  overflow: hidden;
  background: rgba(0,0,0,.22);
  color: rgba(236,248,255,.72);
  font-size: 12px;
  font-weight: 950;
}

.link-preview-thumb img {
  width: 100%;
  height: 100%;
  min-height: 74px;
  object-fit: cover;
  display: block;
}

.link-preview-body {
  min-width: 0;
  display: grid;
  align-content: center;
  gap: 3px;
  padding: 9px 10px 9px 0;
}

.link-preview-source {
  color: #8ee7ff;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.link-preview-body strong,
.link-preview-desc {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
}

.link-preview-body strong {
  -webkit-line-clamp: 2;
  font-size: 13.5px;
  line-height: 1.22;
}

.link-preview-desc {
  -webkit-line-clamp: 2;
  color: rgba(226,241,249,.72);
  font-size: 11.5px;
  line-height: 1.3;
}

.link-preview-close {
  position: absolute;
  right: 7px;
  top: 7px;
  width: 24px;
  height: 24px;
  border: 0;
  border-radius: 50%;
  background: rgba(0,0,0,.34);
  color: #fff;
}

.link-preview-card.is-draft {
  position: relative;
  padding-right: 28px;
}

.message-action-sheet {
  width: min(342px, calc(100vw - 20px)) !important;
}

.message-action-sheet .action-react-row {
  gap: 8px !important;
  max-width: min(94vw, 430px) !important;
  padding: 8px 10px !important;
  border-radius: 999px !important;
  background: rgba(36, 62, 82, .98) !important;
}

.message-action-sheet .action-react-row button {
  width: 46px !important;
  height: 46px !important;
  font-size: 30px !important;
  background: transparent !important;
}

.message-action-sheet .action-react-row .action-more-reactions {
  background: rgba(185,205,220,.22) !important;
  color: #dce9f1 !important;
  font-size: 25px !important;
}

.message-action-sheet .action-menu-card {
  width: min(342px, calc(100vw - 58px)) !important;
  border-radius: 16px !important;
  background: rgba(31, 55, 75, .98) !important;
}

.message-action-sheet .action-menu-list button {
  min-height: 54px !important;
  grid-template-columns: 44px 1fr !important;
  font-size: 19px !important;
}

.message-action-sheet .action-menu-list button i {
  font-size: 25px !important;
}

@media (max-width: 420px) {
  .message-action-sheet .action-react-row {
    gap: 5px !important;
    padding: 7px 8px !important;
  }

  .message-action-sheet .action-react-row button {
    width: 40px !important;
    height: 40px !important;
    font-size: 27px !important;
  }

  .message-action-sheet .action-menu-card {
    width: min(324px, calc(100vw - 48px)) !important;
  }
}

/* v65: media-first message layout, larger sent previews, compact Telegram-like action sheet, in-app profile editing. */
.profile-field {
  display: grid;
  gap: 6px;
}

.profile-field span {
  color: rgba(183,202,217,.78);
  font-size: 12px;
  font-weight: 900;
}

.profile-field input {
  min-height: 42px;
  width: 100%;
  border: 1px solid rgba(155,230,255,.16);
  border-radius: 12px;
  background: rgba(4, 12, 20, .58);
  color: #f3fbff;
  padding: 9px 11px;
  font: inherit;
  font-weight: 850;
  outline: none;
}

.profile-field input:focus {
  border-color: rgba(142,231,255,.48);
  box-shadow: 0 0 0 3px rgba(42,168,221,.14);
}

.profile-actions-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.profile-actions-row button {
  text-align: center !important;
  justify-content: center;
}

[data-profile-status]:empty {
  display: none;
}

.bubble .attachments {
  max-width: min(100%, 360px) !important;
  margin: 8px 0 0 !important;
}

.bubble figure.attachment-image,
.bubble .attachment-image {
  max-width: min(100%, 360px) !important;
  margin: 8px 0 0 !important;
}

.bubble .attachment-image img {
  width: 100% !important;
  max-width: none !important;
  max-height: 430px !important;
  aspect-ratio: 16 / 9;
  object-fit: cover !important;
}

.bubble .link-preview-card:not(.is-draft) {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 0 !important;
  width: min(100%, 360px) !important;
  max-width: 100% !important;
  margin: 8px 0 0 !important;
  overflow: hidden !important;
  border-radius: 15px !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-thumb {
  width: 100% !important;
  min-height: 165px !important;
  aspect-ratio: 16 / 9 !important;
  border-radius: 0 !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-thumb img {
  width: 100% !important;
  height: 100% !important;
  min-height: 165px !important;
  object-fit: cover !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-body {
  padding: 10px 11px 11px !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-body strong {
  font-size: 14.5px !important;
  line-height: 1.24 !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-desc {
  font-size: 12px !important;
}

.bubble .message-caption {
  margin-top: 8px !important;
}

.message-action-sheet {
  width: min(304px, calc(100vw - 24px)) !important;
}

.message-action-sheet .action-react-row {
  gap: 6px !important;
  max-width: min(92vw, 366px) !important;
  padding: 7px 8px !important;
}

.message-action-sheet .action-react-row button {
  width: 40px !important;
  height: 40px !important;
  font-size: 27px !important;
}

.message-action-sheet .action-react-row .action-more-reactions {
  width: 40px !important;
  height: 40px !important;
  font-size: 21px !important;
}

.message-action-sheet .action-menu-card {
  width: min(296px, calc(100vw - 58px)) !important;
  border-radius: 15px !important;
}

.message-action-sheet .reacted-row {
  min-height: 38px !important;
  font-size: 13px !important;
  padding: 7px 11px !important;
}

.message-action-sheet .action-menu-list {
  padding: 3px 0 5px !important;
}

.message-action-sheet .action-menu-list button {
  min-height: 41px !important;
  grid-template-columns: 32px 1fr !important;
  gap: 8px !important;
  padding: 6px 12px !important;
  font-size: 15.5px !important;
}

.message-action-sheet .action-menu-list button i {
  font-size: 18px !important;
}

@media (max-width: 420px) {
  .bubble .link-preview-card:not(.is-draft),
  .bubble .attachments,
  .bubble figure.attachment-image,
  .bubble .attachment-image {
    width: 100% !important;
    max-width: min(100%, 330px) !important;
  }

  .bubble .link-preview-card:not(.is-draft) .link-preview-thumb,
  .bubble .link-preview-card:not(.is-draft) .link-preview-thumb img {
    min-height: 150px !important;
  }

  .message-action-sheet .action-react-row button,
  .message-action-sheet .action-react-row .action-more-reactions {
    width: 37px !important;
    height: 37px !important;
  }
}

/* v66: keep photos compact, enlarge only link thumbnails, and slim down the reaction action card. */
.message.is-action-target .bubble {
  outline: 1px solid rgba(142, 231, 255, .5) !important;
  box-shadow: 0 0 0 3px rgba(42, 168, 221, .12), 0 10px 26px rgba(0,0,0,.22) !important;
}

.bubble .attachments {
  width: auto !important;
  max-width: min(100%, 310px) !important;
}

.bubble figure.attachment-image,
.bubble .attachment-image {
  width: auto !important;
  max-width: min(100%, 310px) !important;
}

.bubble .attachment-image img {
  width: 100% !important;
  max-width: 310px !important;
  max-height: 240px !important;
  aspect-ratio: auto !important;
  object-fit: cover !important;
}

.bubble .link-preview-card:not(.is-draft) {
  width: min(100%, 318px) !important;
  border-radius: 14px !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-thumb {
  min-height: 138px !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-thumb img {
  min-height: 138px !important;
}

.bubble .link-preview-card:not(.is-draft) .link-preview-body {
  padding: 8px 10px 10px !important;
}

.message-action-sheet {
  width: min(260px, calc(100vw - 26px)) !important;
}

.message-action-sheet .action-react-row {
  max-width: min(92vw, 330px) !important;
  gap: 5px !important;
  padding: 6px 7px !important;
}

.message-action-sheet .action-react-row button,
.message-action-sheet .action-react-row .action-more-reactions {
  width: 36px !important;
  height: 36px !important;
}

.message-action-sheet .action-react-row button {
  font-size: 24px !important;
}

.message-action-sheet .action-react-row .action-more-reactions {
  font-size: 18px !important;
}

.message-action-sheet .action-menu-card {
  width: min(248px, calc(100vw - 62px)) !important;
  border-radius: 14px !important;
}

.message-action-sheet .action-menu-target {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 30px;
  padding: 7px 10px 5px;
  color: rgba(226,241,249,.68);
  font-size: 11px;
  font-weight: 900;
  border-bottom: 1px solid rgba(255,255,255,.06);
}

.message-action-sheet .action-menu-target span,
.message-action-sheet .action-menu-target em {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.message-action-sheet .action-menu-target span {
  color: #8ee7ff;
}

.message-action-sheet .action-menu-target em {
  font-style: normal;
  flex: 0 0 auto;
}

.message-action-sheet .reacted-row {
  min-height: 34px !important;
  font-size: 12.5px !important;
  padding: 6px 10px !important;
}

.message-action-sheet .action-menu-list button {
  min-height: 36px !important;
  grid-template-columns: 27px 1fr !important;
  gap: 7px !important;
  padding: 5px 10px !important;
  font-size: 14px !important;
}

.message-action-sheet .action-menu-list button i {
  font-size: 16px !important;
}

@media (max-width: 420px) {
  .bubble .attachments,
  .bubble figure.attachment-image,
  .bubble .attachment-image {
    max-width: min(100%, 300px) !important;
  }

  .bubble .attachment-image img {
    max-width: 300px !important;
    max-height: 230px !important;
  }

  .bubble .link-preview-card:not(.is-draft) {
    max-width: min(100%, 306px) !important;
  }

  .bubble .link-preview-card:not(.is-draft) .link-preview-thumb,
  .bubble .link-preview-card:not(.is-draft) .link-preview-thumb img {
    min-height: 128px !important;
  }
}

/* v68: smooth message actions and compact seen-reader detail. */
.message-action-sheet .seen-row {
  width: 100%;
  min-height: 34px !important;
  display: grid !important;
  grid-template-columns: 26px 1fr auto;
  align-items: center;
  gap: 7px;
  border: 0;
  border-top: 1px solid rgba(255,255,255,.07);
  border-radius: 0 0 14px 14px !important;
  background: rgba(4, 14, 22, .24) !important;
  color: #dff7ff;
  padding: 6px 10px !important;
  text-align: left;
}

.message-action-sheet .seen-row span {
  color: #8ee7ff;
  font-size: 13px;
  letter-spacing: 0;
}

.message-action-sheet .seen-row strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 850;
}

.message-action-sheet .seen-row em {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-width: 0;
  font-style: normal;
}

.message-action-sheet .seen-row:disabled {
  opacity: .48;
}

.message-action-sheet .seen-mini-avatar {
  width: 20px;
  height: 20px;
  display: grid;
  place-items: center;
  margin-left: -5px;
  border: 1px solid rgba(255,255,255,.72);
  border-radius: 999px;
  background: linear-gradient(135deg, #23b7d6, #7c5cff);
  color: #fff;
  font-size: 9px;
  font-weight: 900;
}

.message-action-sheet .seen-mini-avatar:first-child {
  margin-left: 0;
}

.message-action-sheet .seen-list {
  display: grid;
  gap: 4px;
  max-height: 150px;
  overflow-y: auto;
  padding: 6px 8px 8px;
  border-top: 1px solid rgba(255,255,255,.07);
  background: rgba(3, 12, 20, .28);
}

.message-action-sheet .seen-list p {
  margin: 0;
  color: rgba(226,241,249,.72);
  font-size: 12px;
  line-height: 1.35;
}

.message-action-sheet .seen-person {
  min-height: 30px;
  display: grid;
  grid-template-columns: 24px 1fr auto;
  align-items: center;
  gap: 7px;
  color: #eef9ff;
}

.message-action-sheet .seen-person span {
  width: 24px;
  height: 24px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(35,183,214,.95), rgba(124,92,255,.92));
  color: #fff;
  font-size: 10px;
  font-weight: 900;
}

.message-action-sheet .seen-person strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12.5px;
}

.message-action-sheet .seen-person em {
  color: rgba(226,241,249,.58);
  font-size: 10.5px;
  font-style: normal;
}

/* v97: Today command desk and persistent in-app notification inbox. */
.bottom-tabbar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.member-app:not(.is-chat-room-open) [data-today-panel].is-active {
  position: fixed !important;
  inset: var(--app-topbar-h) 0 var(--bottom-nav-h) !important;
  width: 100% !important;
  max-width: none !important;
  min-height: 0 !important;
  height: auto !important;
  display: block !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  overscroll-behavior-y: contain !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
  z-index: 10 !important;
}
.notification-trigger {
  position: relative;
  width: 40px;
  min-width: 40px;
  height: 40px;
  padding: 0;
  display: grid;
  place-items: center;
  font-size: 16px;
}

.notification-trigger-badge {
  position: absolute;
  top: -5px;
  right: -5px;
  min-width: 19px;
  height: 19px;
  padding: 0 5px;
  display: grid;
  place-items: center;
  border: 2px solid #08131f;
  border-radius: 999px;
  background: #ff9f43;
  color: #111820;
  font-size: 10px;
  line-height: 1;
  font-weight: 950;
}

.notification-sheet {
  position: fixed;
  z-index: 140;
  inset: 0 auto 0 50%;
  transform: translateX(-50%);
  width: min(100%, 540px);
  min-height: 100svh;
  padding: max(18px, env(safe-area-inset-top)) 16px max(18px, env(safe-area-inset-bottom));
  overflow-y: auto;
  overscroll-behavior: contain;
  background: #091522;
  box-shadow: 0 0 70px rgba(0, 0, 0, .62);
}

.notification-sheet-head,
.notification-toolbar,
.today-head,
.today-band-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.notification-sheet-head {
  min-height: 54px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--tg-line);
}

.notification-sheet-head strong { font-size: 20px; }
.notification-close {
  width: 42px;
  height: 42px;
  border: 1px solid var(--tg-line);
  border-radius: 50%;
  background: #132231;
  color: var(--text);
  font-size: 22px;
}

.notification-toolbar { padding: 13px 0; }
.notification-filters {
  display: inline-grid;
  grid-template-columns: repeat(2, minmax(64px, 1fr));
  padding: 3px;
  border: 1px solid var(--tg-line);
  border-radius: 8px;
  background: #0e1c29;
}

.notification-filters button,
.notification-mark-all,
.today-band-head button,
.today-band-head a {
  min-height: 40px;
  padding: 8px 12px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #82d8f2;
  font-size: 12px;
  font-weight: 850;
}

.notification-filters button.is-active {
  background: #1c4355;
  color: #f3fbff;
}

.notification-list,
.today-priority-list { display: grid; gap: 8px; }
.notification-item {
  width: 100%;
  min-height: 78px;
  padding: 12px;
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  align-items: start;
  gap: 10px;
  border: 1px solid var(--tg-line);
  border-radius: 8px;
  background: #101f2d;
  color: var(--text);
  text-align: left;
}

.notification-item.is-unread {
  border-color: rgba(255, 159, 67, .55);
  background: #152637;
}

.notification-item-icon {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: #173d4d;
  color: #86e4f5;
  font-size: 17px;
}

.notification-item-copy { min-width: 0; }
.notification-item-copy strong,
.notification-item-copy span {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
}
.notification-item-copy strong { font-size: 13px; line-height: 1.35; }
.notification-item-copy span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.notification-item time { color: var(--soft); font-size: 10px; white-space: nowrap; }

.today-screen {
  min-height: calc(100svh - 142px);
  padding: 14px 14px calc(92px + env(safe-area-inset-bottom));
  background: #091522;
}
.today-head { align-items: flex-start; margin-bottom: 13px; }
.today-head h2 { margin: 0; font-size: 24px; letter-spacing: 0; }
.today-head p:last-child { margin: 6px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; }
.today-refresh { width: 42px; height: 42px; padding: 0; font-size: 18px; }

.today-status-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}
.today-status-grid article {
  min-width: 0;
  min-height: 74px;
  padding: 11px;
  border: 1px solid var(--tg-line);
  border-radius: 8px;
  background: #112231;
}
.today-status-grid article:nth-child(1) { border-top: 2px solid #ff9f43; }
.today-status-grid article:nth-child(2) { border-top: 2px solid #36c2df; }
.today-status-grid article:nth-child(3) { border-top: 2px solid #61d69d; }
.today-status-grid span { display: block; color: var(--muted); font-size: 10px; line-height: 1.25; }
.today-status-grid strong { display: block; margin-top: 7px; font-size: 22px; letter-spacing: 0; }

.today-band {
  padding: 13px 0;
  border-top: 1px solid var(--tg-line);
}
.today-band-head { margin-bottom: 10px; }
.today-band-head h3 { margin: 0; font-size: 16px; letter-spacing: 0; }
.today-priority-band { border-top-color: rgba(255, 159, 67, .38); }
.today-two-column { display: grid; grid-template-columns: 1fr; }

.today-market-summary,
.today-learning-summary {
  padding: 12px;
  border: 1px solid var(--tg-line);
  border-radius: 8px;
  background: #0f202e;
}
.today-market-summary.is-bull { border-left: 3px solid #61d69d; }
.today-market-summary.is-bear { border-left: 3px solid #ff718b; }
.today-market-summary.is-wait { border-left: 3px solid #f4c96d; }
.today-market-summary strong,
.today-learning-summary strong { display: block; font-size: 14px; line-height: 1.35; }
.today-market-summary p,
.today-learning-summary p { margin: 6px 0 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
.today-market-pills { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.today-market-pills span {
  padding: 5px 8px;
  border-radius: 6px;
  background: #173044;
  color: #ccecf7;
  font-size: 10px;
  font-weight: 800;
}
.today-progress-track { height: 7px; margin-top: 10px; overflow: hidden; border-radius: 6px; background: #1a3040; }
.today-progress-track i { display: block; height: 100%; background: #61d69d; }
.today-learning-action {
  margin-top: 10px;
  min-height: 44px;
  padding: 10px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-radius: 8px;
  background: #173044;
  color: #ecfaff;
  font-size: 12px;
  font-weight: 850;
}
.today-discipline {
  margin: 4px 0 0;
  padding: 12px;
  border-left: 3px solid var(--gold);
  background: #151e28;
  color: #d9e3e9;
  font-size: 11px;
  line-height: 1.55;
}

@media (min-width: 700px) {
  .today-two-column { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
}

@media (max-width: 390px) {
  .app-topbar { gap: 7px; }
  .tg-title-text { display: none; }
  .top-actions { gap: 4px; }
  .top-actions .icon-btn { padding-inline: 7px; font-size: 11px; }
  .notification-trigger { width: 36px; min-width: 36px; height: 36px; padding: 0 !important; }
  .today-status-grid { gap: 6px; }
  .today-status-grid article { padding: 9px 8px; }
  .today-status-grid strong { font-size: 19px; }
  .notification-toolbar { align-items: stretch; flex-direction: column; }
  .notification-mark-all { align-self: flex-end; }
}

@media (prefers-reduced-motion: reduce) {
  .today-refresh,
  .notification-sheet { scroll-behavior: auto; }
}

/* v98: focused Market Intel digest and read-only event calendar. */
.today-band-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 3px;
}

.today-intel-status {
  min-height: 16px;
  margin: -4px 0 9px;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}

.today-intel-list {
  display: grid;
  gap: 8px;
}

.today-intel-item {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--tg-line);
  border-left-width: 3px;
  border-radius: 8px;
  background: #0f202e;
}

.today-intel-item.is-bull,
.market-calendar-event.is-bull { border-left-color: #61d69d; }
.today-intel-item.is-bear,
.market-calendar-event.is-bear { border-left-color: #ff718b; }
.today-intel-item.is-wait,
.market-calendar-event.is-wait { border-left-color: #f4c96d; }

.today-intel-item-head,
.market-calendar-event-copy > div:first-child {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.today-intel-item-head strong {
  min-width: 0;
  color: #f2fbff;
  font-size: 13px;
  line-height: 1.42;
}

.today-intel-item-head > span,
.market-calendar-event-copy > div:first-child > b {
  flex: 0 0 auto;
  padding: 4px 6px;
  border-radius: 5px;
  background: #173447;
  color: #8de1f2;
  font-size: 9px;
  line-height: 1.2;
}

.today-intel-item > p {
  margin: 7px 0 0;
  color: #b7c8d2;
  font-size: 11px;
  line-height: 1.55;
  display: -webkit-box;
  overflow: hidden;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}

.today-intel-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  margin-top: 8px;
}

.today-intel-meta > span {
  padding: 4px 6px;
  border-radius: 5px;
  background: #142c3c;
  color: #9fc1cf;
  font-size: 9px;
  font-weight: 750;
}

.today-intel-action {
  margin-top: 8px;
  padding-top: 8px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 7px;
  border-top: 1px solid rgba(126, 180, 202, .16);
  color: #d7e5eb;
  font-size: 10px;
  line-height: 1.45;
}

.today-intel-action b { color: #f4c96d; }

body.is-market-calendar-open { overflow: hidden; }

.market-calendar-sheet {
  position: fixed;
  z-index: 142;
  inset: 0 auto 0 50%;
  transform: translateX(-50%);
  width: min(100%, 540px);
  min-height: 100svh;
  padding: max(18px, env(safe-area-inset-top)) 16px max(22px, env(safe-area-inset-bottom));
  overflow-y: auto;
  overscroll-behavior: contain;
  background: #091522;
  box-shadow: 0 0 70px rgba(0, 0, 0, .68);
}

.market-calendar-head {
  min-height: 54px;
  padding-bottom: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-bottom: 1px solid var(--tg-line);
}

.market-calendar-head strong { font-size: 20px; }
.market-calendar-close {
  width: 42px;
  height: 42px;
  border: 1px solid var(--tg-line);
  border-radius: 50%;
  background: #132231;
  color: var(--text);
  font-size: 22px;
}

.market-calendar-note {
  margin: 11px 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}

.market-calendar-dates {
  padding: 2px 0 11px;
  display: flex;
  gap: 7px;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
}

.market-calendar-dates button {
  min-width: 72px;
  min-height: 48px;
  padding: 7px 8px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--tg-line);
  border-radius: 7px;
  background: #102130;
  color: #d5e7ee;
  font-size: 10px;
  white-space: nowrap;
}

.market-calendar-dates button b {
  min-width: 20px;
  height: 20px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: #173b4d;
  color: #88def0;
  font-size: 9px;
}

.market-calendar-dates button.is-active {
  border-color: #40c5df;
  background: #153547;
  color: #fff;
}

.market-calendar-list { display: grid; gap: 8px; }
.market-calendar-day-head {
  min-height: 38px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.market-calendar-day-head strong { font-size: 14px; }
.market-calendar-day-head span { color: var(--muted); font-size: 10px; }

.market-calendar-event {
  min-width: 0;
  padding: 11px;
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: 10px;
  border: 1px solid var(--tg-line);
  border-left-width: 3px;
  border-radius: 8px;
  background: #0f202e;
}

.market-calendar-event-time {
  align-self: start;
  padding: 7px 5px;
  border-radius: 6px;
  background: #142f40;
  text-align: center;
}
.market-calendar-event-time strong,
.market-calendar-event-time span { display: block; }
.market-calendar-event-time strong { color: #f3fbff; font-size: 12px; }
.market-calendar-event-time span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.market-calendar-event-copy { min-width: 0; }
.market-calendar-event-copy > div:first-child > strong { min-width: 0; font-size: 12px; line-height: 1.4; }
.market-calendar-event-copy p { margin: 7px 0 0; color: #b7c8d2; font-size: 10px; line-height: 1.5; }
.market-calendar-event-copy p b { color: #f4c96d; }

.market-calendar-full-link {
  min-height: 44px;
  margin-top: 14px;
  display: grid;
  place-items: center;
  border: 1px solid #1c6075;
  border-radius: 7px;
  color: #82d8f2;
  font-size: 12px;
  font-weight: 850;
}

@media (min-width: 700px) {
  .today-intel-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 350px) {
  .today-band-head { align-items: flex-start; }
  .today-band-actions { align-items: flex-end; flex-direction: column; }
  .market-calendar-event { grid-template-columns: 52px minmax(0, 1fr); gap: 8px; padding: 9px; }
}

@media (prefers-reduced-motion: reduce) {
  .market-calendar-sheet,
  .market-calendar-dates { scroll-behavior: auto; }
}
