
:root{
  color-scheme:dark;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI","Noto Sans TC",sans-serif;
  background:#08090b;color:#f6f7fa;
  --panel:#111318;--panel-out:#151922;--line:rgba(255,255,255,.08);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#08090b}
body{background:radial-gradient(circle at 15% -10%,rgba(130,145,180,.12),transparent 36rem),#08090b}
button,input{font:inherit}.hidden{display:none!important}

.boot-screen{min-height:100vh;display:grid;place-items:center;align-content:center;gap:14px;color:#7f8794;font-size:13px}
.spinner{width:30px;height:30px;border-radius:50%;border:3px solid rgba(255,255,255,.08);border-top-color:#d9dde5;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{width:min(100%,410px);padding:34px;border:1px solid rgba(255,255,255,.1);border-radius:28px;background:rgba(18,20,25,.84);box-shadow:0 24px 80px rgba(0,0,0,.35)}
.mark{width:52px;height:52px;border-radius:17px;display:grid;place-items:center;font-size:24px;font-weight:800;background:#f4f5f7;color:#101115;margin-bottom:26px}
.eyebrow{margin:0 0 8px;color:#737b89;font-size:11px;font-weight:750;letter-spacing:.16em}
.login-card h1{font-size:36px;margin:0 0 10px}.desc{color:#9da3af}
.login-card label{display:block;font-size:13px;color:#b7bdc9;margin:22px 0 8px}
.login-card input{width:100%;height:58px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:#0c0e12;color:#fff;font:700 24px/1 ui-monospace,monospace;letter-spacing:.22em;padding:0 17px;outline:none}
.login-btn{width:100%;height:54px;margin-top:14px;border:0;border-radius:16px;background:#f3f4f6;color:#111318;font-size:16px;font-weight:760}
.login-msg{min-height:20px;color:#f2a7a7;font-size:13px}
.login-foot{display:flex;gap:8px;align-items:center;margin-top:22px;color:#747b88;font-size:12px}
.online-dot{width:7px;height:7px;border-radius:50%;background:#75c993}

.app-shell{width:min(100%,980px);margin:0 auto;padding:28px 22px 60px}
.topbar{display:flex;justify-content:space-between;gap:18px;margin-bottom:26px}.topbar h1{margin:0;font-size:34px}
.header-actions{display:flex;align-items:center;gap:9px}
.status-chip{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 13px;border:1px solid var(--line);border-radius:14px;color:#aeb4bf;font-size:13px}
.status-dot,.mini-dot{display:inline-block;border-radius:99px}.status-dot{width:8px;height:8px}.idle{background:#777f8d}.live{background:#70c38a!important;box-shadow:0 0 10px rgba(112,195,138,.4)}
.icon-btn,.soft-btn,.tab{border:0;cursor:pointer;color:inherit}
.icon-btn{min-height:40px;padding:0 14px;border-radius:14px;background:#171a20;border:1px solid var(--line);color:#adb4c0}

.tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;border-bottom:1px solid var(--line)}
.tab{display:flex;align-items:center;gap:8px;min-height:42px;padding:0 14px;border-radius:13px;background:transparent;color:#8f97a5;font-weight:650}
.tab span{min-width:22px;height:22px;padding:3px 6px;border-radius:99px;background:rgba(255,255,255,.055);font-size:11px}
.tab.active{background:#f2f3f5;color:#111318}

.toolbar{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line)}
.source-state{display:flex;align-items:center;gap:8px;color:#7f8794;font-size:12px}
.mini-dot{width:7px;height:7px}.off{background:#676e7a}.ok{background:#70c38a}
.toolbar-buttons{display:flex;gap:8px}
.soft-btn{min-height:38px;padding:0 12px;border-radius:12px;background:#14171c;border:1px solid var(--line);color:#aeb5c0}
.danger{color:#dca3a3}

.notification-list{
  display:flex;
  flex-direction:column;
  gap:var(--message-gap,14px);
  padding-top:20px
}
.group-card{
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  gap:12px;
  width:min(100%,780px);
  padding:15px 16px;
  border:1px solid var(--line);
  border-radius:19px;
  background:var(--panel)
}
.group-card.incoming{align-self:flex-start}
.group-card.outgoing{
  align-self:flex-end;
  width:min(94%,720px);
  background:var(--panel-out)
}
.avatar-wrap,.avatar-img,.avatar-fallback{
  width:44px;
  height:44px
}
.avatar-img,.avatar-fallback{
  border-radius:14px;
  border:1px solid rgba(255,255,255,.08)
}
.avatar-img{
  display:block;
  object-fit:cover
}
.avatar-fallback{
  display:grid;
  place-items:center;
  background:#252a33;
  color:#e6e9ee;
  font-size:16px;
  font-weight:800
}
.group-main{min-width:0}
.group-head{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:7px
}
.sender{
  color:#f4f6f9;
  font-size:16px;
  font-weight:800
}
.platform-pill{
  padding:3px 7px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:999px;
  color:#8e96a5;
  font-size:10px;
  font-weight:750
}
.chat-label{
  max-width:320px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#687180;
  font-size:11px
}
.message-stack{
  display:flex;
  flex-direction:column;
  gap:8px
}
.message-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:12px;
  align-items:end
}
.message{
  margin:0;
  color:#eef0f4;
  font-size:calc(19px * var(--user-font-scale,1));
  font-weight:560;
  line-height:1.5;
  white-space:pre-wrap;
  word-break:break-word
}
.time{
  color:#626b79;
  font-size:10px;
  white-space:nowrap
}
.message-divider{
  height:1px;
  background:rgba(255,255,255,.045)
}
.image-preview{
  display:block;
  max-width:min(100%,420px);
  max-height:270px;
  object-fit:cover;
  border-radius:13px;
  margin-top:9px;
  border:1px solid var(--line)
}

.empty-state{min-height:350px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 22px}
.empty-state.hidden{display:none}
.empty-icon{width:62px;height:62px;border-radius:20px;display:grid;place-items:center;background:#12151a;border:1px solid var(--line);font-size:28px;color:#747c89}
.empty-state h2{margin:18px 0 8px}.empty-state p{max-width:520px;margin:0;color:#7f8794;line-height:1.65;font-size:13px}

footer{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:34px;padding-top:17px;border-top:1px solid var(--line);color:#616977;font-size:11px}

@media(max-width:620px){
  .app-shell{padding:18px 12px 50px}
  .status-chip{display:none}
  .toolbar{align-items:flex-start;flex-direction:column;padding:13px 0}
  .toolbar-buttons{width:100%}.soft-btn{flex:1}
  .note{grid-template-columns:32px minmax(0,1fr) auto;padding:12px}
  .avatar{width:32px;height:32px;border-radius:10px;font-size:13px}
  .message{font-size:16px}
  .note.outgoing{width:94%}
  .time{grid-column:2}
  .login-card{padding:28px 22px}
}

@media(max-width:620px){
  .group-card{
    grid-template-columns:38px minmax(0,1fr);
    gap:10px;
    padding:13px
  }
  .avatar-wrap,.avatar-img,.avatar-fallback{
    width:38px;
    height:38px
  }
  .avatar-img,.avatar-fallback{border-radius:12px}
  .message{font-size:18px}
  .message-row{grid-template-columns:1fr}
  .time{justify-self:end}
}
@media(min-width:700px){
  .message{font-size:20px}
}


.reply-preview{
  margin:0 0 8px;
  padding:7px 10px;
  border-left:3px solid rgba(255,255,255,.18);
  border-radius:0 9px 9px 0;
  background:rgba(255,255,255,.035);
  overflow:hidden
}
.reply-label{
  color:#aeb6c4;
  font-size:11px;
  font-weight:750;
  margin-bottom:2px
}
.reply-text{
  color:#858e9d;
  font-size:13px;
  line-height:1.4;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}


html,
body,
.app-shell,
.notification-list{
  overflow-anchor:none
}

.bottom-anchor{
  width:100%;
  height:1px;
  pointer-events:none;
  opacity:0
}


.message-card img.image-preview[data-media-type="emoji"]{
  width:min(180px,42vw);
  max-height:180px;
  object-fit:contain
}


.notification-list{
  padding-bottom:20px;
  overflow-anchor:none
}

.bottom-anchor{
  display:block;
  width:100%;
  min-height:24px;
  flex:0 0 24px;
  pointer-events:none;
  opacity:0
}

.image-preview{
  height:auto;
  contain:layout paint;
}

@supports(padding:max(0px)){
  .notification-list{
    padding-bottom:max(20px,env(safe-area-inset-bottom))
  }
}


.message-body{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:0
}

.reply-preview{
  order:0;
  margin:0 0 8px;
  padding:7px 10px;
  border-left:3px solid rgba(255,255,255,.2);
  border-radius:0 9px 9px 0;
  background:rgba(255,255,255,.035);
  overflow:hidden
}

.actual-message{
  order:1;
  min-width:0
}

.reply-content{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0
}

.reply-thumb{
  width:42px;
  height:42px;
  flex:0 0 42px;
  object-fit:cover;
  border-radius:7px;
  border:1px solid rgba(255,255,255,.08)
}

.reply-text{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}


.group-card.has-reply{
  margin-top:8px
}

.group-card.has-reply .reply-preview{
  margin-bottom:9px;
  background:rgba(255,255,255,.05)
}

.group-card.has-reply .actual-message{
  padding-top:1px
}

.reaction-strip{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:9px
}

.reaction-chip{
  display:inline-flex;
  align-items:center;
  gap:5px;
  min-height:25px;
  padding:2px 8px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:9px;
  background:rgba(255,255,255,.045);
  color:#cbd1da;
  font-size:13px;
  line-height:1
}

.reaction-emoji{
  font-size:15px;
  line-height:1
}

.reaction-count{
  color:#8f98a7;
  font-size:11px;
  font-weight:700
}

/* v0.5.10 - same-ID enrichment should be visually quiet */
.message-row[data-message-id] {
  contain: layout style;
}

/* v0.5.11 - Reply media + custom reaction emoji */
.reaction-emoji-img{
  width:20px;
  height:20px;
  object-fit:contain;
  display:block;
  flex:0 0 20px;
}
.reply-preview .reply-thumb{
  object-fit:cover;
}
.reply-preview img.reply-thumb[src*="/emojis/"],
.reply-preview img.reply-thumb[src*="/stickers/"]{
  object-fit:contain;
  background:transparent;
}


/* v0.6.0 */
:root{--user-font-scale:1;--message-gap:14px;--gold:#e7b95b}
.live-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 12px}
.live-metrics>div{padding:10px 12px;border:1px solid var(--line);border-radius:13px;background:#101218;display:flex;flex-direction:column;gap:3px}.live-metrics span{font-size:9px;color:#707887;text-transform:uppercase;letter-spacing:.04em}.live-metrics b{font-size:12px;color:#d9dde5}
.metric-chip{min-height:40px;padding:5px 11px;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;justify-content:center;align-items:flex-end}.metric-chip b{font-size:13px}.metric-chip span{font-size:8px;color:#747c89}
.message-row.important{margin-left:-8px;padding:8px 9px;border-left:3px solid var(--gold);border-radius:0 10px 10px 0;background:linear-gradient(90deg,rgba(231,185,91,.16),rgba(231,185,91,.035))}
.important-badge{align-self:flex-start;margin:0 0 5px;padding:2px 7px;border-radius:999px;background:rgba(231,185,91,.14);color:#f0c86e;font-size:9px;font-weight:800}
.message-row.deleted .message{color:#777f8d;font-style:italic}.edited-pill{display:inline-block;margin-top:5px;color:#717987;font-size:9px}
.media-wrap{max-width:min(100%,420px);margin-top:9px}.media-wrap .image-preview{margin-top:0}.video-preview{width:min(100%,420px);background:#07080a}.media-error{color:#a28a8a;font-size:11px;margin-bottom:6px}.media-retry{border:1px solid var(--line);background:#171a20;color:#c3c8d0;border-radius:9px;padding:7px 10px;font-size:10px}
.drawer-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:40;backdrop-filter:blur(2px)}.side-drawer{position:fixed;z-index:50;right:0;top:0;width:min(430px,92vw);height:100dvh;background:#0f1116;border-left:1px solid var(--line);box-shadow:-18px 0 60px rgba(0,0,0,.35);display:flex;flex-direction:column}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:18px}.drawer-head p{margin:3px 0 0;color:#737b89;font-size:10px}.drawer-scroll{overflow:auto;padding:16px;flex:1}.drawer-foot{padding:14px 16px;border-top:1px solid var(--line)}.setting-group{padding:14px;border:1px solid var(--line);border-radius:16px;background:#121419;margin-bottom:12px}.setting-group h3{margin:0 0 12px;font-size:12px}.setting-group label{display:flex;flex-direction:column;gap:7px;color:#adb4c0;font-size:11px;margin:10px 0}.setting-group input[type=number],.setting-group select{height:38px;border:1px solid var(--line);border-radius:10px;background:#0b0d11;color:#e8ebef;padding:0 10px}.setting-group input[type=range]{width:100%}.switch-line{flex-direction:row!important;justify-content:space-between;align-items:center}.primary-btn{width:100%;min-height:42px;border:0;border-radius:12px;background:#f0f1f3;color:#101115;font-weight:800}.debug-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.debug-box{padding:10px;border:1px solid var(--line);border-radius:12px;background:#121419;min-width:0}.debug-box span{display:block;color:#6f7785;font-size:9px}.debug-box b{display:block;margin-top:3px;color:#e4e7eb;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:720px){.live-metrics{grid-template-columns:1fr 1fr}.metric-chip{display:none}.header-actions{gap:6px}.icon-btn{padding:0 10px}.debug-grid{grid-template-columns:1fr}}

/* v0.6.1 startup failure visibility */
.boot-screen.boot-error .spinner{
  display:none;
}
.boot-screen.boot-error p{
  max-width:80vw;
  color:#ff8f8f;
  text-align:center;
  line-height:1.5;
}

/* v0.6.2 Instagram shared post / Reel / Story */
.ig-share-card{
  display:flex;
  align-items:center;
  gap:10px;
  width:min(100%,360px);
  margin-top:8px;
  padding:10px 12px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:12px;
  background:rgba(255,255,255,.045);
  color:inherit;
  text-decoration:none;
}
a.ig-share-card:hover{
  background:rgba(255,255,255,.075);
}
.ig-share-icon{
  width:34px;
  height:34px;
  flex:0 0 34px;
  display:grid;
  place-items:center;
  border-radius:10px;
  background:rgba(255,255,255,.07);
  font-size:14px;
}
.ig-share-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:1px;
}
.ig-share-copy b{
  font-size:12px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ig-share-copy small{
  color:var(--muted);
  font-size:10px;
}

/* v0.6.3 IG reply-to-Reel */
.reply-thumb.reply-thumb-reel{
  width:42px;
  height:64px;
  flex-basis:42px;
  object-fit:cover;
}
.reply-preview:has(.reply-thumb-reel) .reply-content{
  align-items:flex-start;
}
