/*
  SWR Glass UI v2 (unified single-layer)
  Layer model:
    - background image (back/1.jpg) on #swr-container::before, with filter:blur for softness
    - color tint overlay on #swr-container::after (NO blur, just gradient colors)
    - content cards each carry ONE backdrop-filter blur (the only glass layer)
  Backend controls:
    - bg_blur → softens background photo (filter on ::before)
    - bg_overlay_alpha → controls tint overlay opacity (::after gradient)
    - glass_blur + glass_saturation → card-level glass (the single blur layer)
*/

:root{
  --swr-radius: 16px;           /* 鍏ㄥ眬鍦嗚鐣ユ敹绱?*/
  --swr-radius-sm: 12px;
  --swr-gap: 18px;              /* 鍒楄〃闂磋窛锛堟洿鈥滃懠鍚糕€濓級 */
  --swr-card-pad: 18px;
  --swr-accent: #20c997;
  --swr-title-color: rgba(40,40,48,.82);
  --swr-title-h: 55px;
  --swr-title-size: 16px;
  --swr-tab-size: 15px;
  --swr-tab-active-size: 16px;
  --swr-icon-bg-a: .72;
  --swr-menu-radius: var(--swr-radius);
  --swr-page-pad-x: 14px;
  --swr-header-pad-x: 18px;
  --swr-bottom-nav-inset: 12px;
  --swr-tab-underline-offset: 8px;
  --swr-tab-underline-h: 3px;
  --swr-detail-avatar-size: 34px;
  --swr-blur: 20px;             /* 鍗＄墖 blur锛堢暐澧炲己鐜荤拑锛?*/
  --swr-fog-blur: 8px;         /* 钖勯浘 blur */
  --swr-sat: 100%;
  --swr-border: rgba(255,255,255,.288);
  /* 鍏ㄧ珯鍗＄墖鈥滄洿鐧戒竴鐐光€濓細鍦ㄤ笉鏀瑰彉鑹茬浉涓嬫彁鍗囩害 20% 涓嶉€忔槑搴?*/
  --swr-glass-a1: 0.40;
  --swr-glass-a2: 0.173;
  --swr-glow: rgba(255,255,255,.18);
  --swr-shadow: 0 26px 70px rgba(0,0,0,.18);
  --swr-shadow-soft: 0 14px 40px rgba(0,0,0,.14);
  --swr-text: rgba(40,40,48,.78);
  --swr-subtext: rgba(20,20,25,.62);
  --swr-hairline: rgba(0,0,0,.06);

  /* Motion (visual-first) */
  --swr-ease-out: cubic-bezier(.16, 1, .3, 1);
  --swr-ease-spring: cubic-bezier(.2, .9, .2, 1);
  --swr-dur-view: 520ms;
  --swr-dur-card: 420ms;
}

html, body{
  background: transparent !important;
}

/* Stage */
#swr-container{
  position: fixed !important;
  inset: 0;
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
  background: transparent !important;
}

/* Background image: fill screen, maintain aspect ratio, no distortion */
#swr-container::before{
  content: "";
  position: absolute;
  inset: -20px;
  background-image: var(--swr-bg, none);
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  filter: blur(var(--swr-fog-blur));
  z-index: 0;
}

/* Thin fog glass */
#swr-container::after{
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(1200px 800px at 10% 0%, rgba(255,180,220,.22), transparent 60%),
    radial-gradient(900px 700px at 90% 10%, rgba(170,210,255,.18), transparent 55%),
    radial-gradient(900px 700px at 50% 100%, rgba(255,210,160,.14), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.03));
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  z-index: 1;
  pointer-events: none;
}

/* Noise overlay to add premium glass texture */
#swr-main-app,
.swr-swipeable-view,
.swr-right-drawer,
#swr-core-dialog-overlay{
  position: relative;
  z-index: 2;
}

#swr-container .swr-noise{
  pointer-events: none;
  position: absolute;
  inset: 0;
  background-image: url('../img/noise.png');
  opacity: .15;
  mix-blend-mode: normal;
  z-index: 2;
}

/* 3D stage (future-proof): keep a single perspective root */
#swr-main-app{
  transform-style: preserve-3d;
  animation: swr_app_fade 720ms var(--swr-ease-out) both;
}

@keyframes swr_app_fade{
  from{ opacity:0; transform: translateY(10px) scale(.99); }
  to{ opacity:1; transform: translateY(0) scale(1); }
}

/* Generic glass card */
.glass-card,
.swr-panel,
.swr-right-drawer,
.scribe-publish-box,
.scribe-post,
.sf-card,
#swr-core-dialog{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  border: 1px solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}
/* Header and nav styles controlled by backend inline CSS */
.scribe-post,
.sf-card{
  position: relative;
  overflow: hidden;
  will-change: transform, opacity, filter;
  transform: translateZ(0);
  transition:
    transform var(--swr-dur-card) var(--swr-ease-out),
    box-shadow var(--swr-dur-card) var(--swr-ease-out),
    border-color var(--swr-dur-card) var(--swr-ease-out),
    background var(--swr-dur-card) var(--swr-ease-out),
    filter var(--swr-dur-card) var(--swr-ease-out);
}

/* Feed header: make the "绛涢€? action match Messages header rhythm */
.swr-feed-header .swr-msg-action{
  font-size: 16px;
  font-weight: 600;
  color: rgba(0,0,0,.78);
  padding: 8px 12px;
  border-radius: 14px;
  background: rgba(255,255,255,var(--swr-glass-a2));
  border: 1px solid rgba(255,255,255,var(--swr-glass-border-a));
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  cursor: pointer;
  user-select: none;
}

/* Premium micro-interactions */
@media (hover:hover){
  .glass-card:hover,
  .swr-chat-entry:hover,
  .swr-contact-entry:hover,
  .scribe-post:hover,
  .sf-post-card:hover,
  .sf-cmt-item:hover{
    transform: translateY(-1px) translateZ(0);
    box-shadow: var(--swr-shadow) !important;
  }
}

.glass-card:active,
.swr-chat-entry:active,
.swr-contact-entry:active,
.scribe-post:active,
.sf-post-card:active,
.sf-cmt-item:active{
  transform: scale(.985) translateY(1px) translateZ(0);
  filter: saturate(100%);
}


/* Cursor highlight follow (desktop) */
.glass-card::after,
.scribe-post::after,
.sf-post-card::after,
.sf-cmt-item::after{
  content:"";
  position:absolute;
  inset:-2px;
  border-radius: inherit;
  pointer-events:none;
  background: radial-gradient(520px 420px at var(--swr-mx,50%) var(--swr-my,20%), rgba(255,255,255,.26), transparent 60%);
  opacity: .0;
  transition: opacity 260ms var(--swr-ease-out);
}
@media (hover:hover){
  .glass-card:hover::after,
  .scribe-post:hover::after,
  .sf-post-card:hover::after,
  .sf-cmt-item:hover::after{ opacity: .9; }
}

/* Stagger entrance for glass cards */
.swr-stagger-in .glass-card,
.swr-stagger-in .swr-chat-entry,
.swr-stagger-in .scribe-post,
.swr-stagger-in .sf-post-card,
.swr-stagger-in .sf-cmt-item{
  opacity: 0;
  transform: translateY(10px) scale(.985);
  animation: swr_stagger_in 680ms var(--swr-ease-out) forwards;
  animation-delay: var(--swr-delay, 0ms);
}
@keyframes swr_stagger_in{
  to{ opacity:1; transform: translateY(0) scale(1); }
}

/* Inner highlight */
.glass-card::before,
.swr-panel::before,
.swr-right-drawer::before,
.scribe-post::before,
.sf-card::before{
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22);
}

/* Remove hard solid backgrounds set inline */
#tab-me [style*="background:#fff"],
#tab-me [style*="background: #fff"],
#tab-feed [style*="background:#fff"],
#tab-feed [style*="background: #fff"],
#tab-msg [style*="background:#fff"],
#tab-msg [style*="background: #fff"],
.swr-swipeable-view[style*="background:#f2f2f2"],
.swr-swipeable-view[style*="background: #f2f2f2"]{
  background: transparent !important;
}

/* App background surfaces should be transparent to show fog + bg */
.swr-tab-content,
.swr-swipeable-view,
#swr-main-app{
  background: transparent !important;
}

/* Top bars */
/* Header styles controlled by backend inline CSS */
.swr-msg-header,
.swr-top-bar,
.swr-header{
  min-height: var(--swr-title-h);
  color: var(--swr-title-color) !important;
  border-radius: 0 !important;
  box-shadow: var(--swr-shadow-soft) !important;
}

/* Bottom nav style controlled by backend inline CSS */
.swr-bottom-nav{
  margin: 0 !important;
  width: auto !important;
  border-radius: var(--swr-radius) !important;
}

.swr-nav-item{
  transition: transform 380ms var(--swr-ease-out), color 260ms var(--swr-ease-out);
}
.swr-nav-item:active{ transform: translateY(1px) scale(.98); }
.swr-nav-item.active{
  filter: drop-shadow(0 10px 22px rgba(0,0,0,.12));
}

/* Lists: add breathing space to reveal background */
#scribe-feed-list .scribe-post,
#myfeed-feed-list .scribe-post,
.sf-topic,
.sf-post,
.sf-post-card,
.sf-cmt-item{
  margin-bottom: var(--swr-gap) !important;
  padding: var(--swr-card-pad) !important;
}

/* Forum: make topic/post/comment as standalone glass cards */
/* background / backdrop-filter / box-shadow 完全交给 inline CSS (glass-inline-css.php) 管理 */
.sf-post-card,
.sf-cmt-item,
.sf-dt-content{
  border: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
}

.sf-post-card{ padding: var(--swr-card-pad) !important; border-bottom: none !important; }
.sf-cmt-item{ padding: var(--swr-card-pad) !important; border-bottom: none !important; }
.sf-cmt-header{ background: transparent !important; border: none !important; padding: 0 !important; display:none !important; }
.sf-quote-block{ background: rgba(255,255,255,.10) !important; border: 1px solid rgba(255,255,255,.16) !important; }

/* Secondary views: show/hide controlled purely by JS (display toggle).
   Do NOT use opacity/transform/will-change/filter here — any of these
   create a backdrop-root or compositing layer that prevents child
   backdrop-filter from reaching #swr-container's background image. */

/* Drawer open animation becomes more premium */
.swr-right-drawer{
  transition:
    transform 560ms var(--swr-ease-out),
    opacity 220ms var(--swr-ease-out);
}

/* Scroll areas: a bit more padding */
.swr-scroll-area{
  padding-left: 14px !important;
  padding-right: 14px !important;
}

/* Chat bubbles / list items become glass */
.swr-chat-entry,
.swr-contact-entry,
.swr-msg-item{
  border-radius: var(--swr-radius) !important;
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  /* 涓庢湅鍙嬪湀鍗＄墖涓€鑷达細鏇存煍銆佹洿鍍忊€滈浘鍖栤€濈殑闃村奖 */
  box-shadow: var(--swr-shadow-soft) !important;
}



.swr-msg-tab{ font-size: var(--swr-tab-size) !important; display:inline-flex !important; align-items:center !important; padding-bottom: calc(var(--swr-tab-underline-offset, 8px) + var(--swr-tab-underline-h, 3px)) !important; }
.swr-msg-tab.active, .swr-msg-tab.is-active,
.sf-sort-tab.active,
.swr-feed-switch.active{ font-size: var(--swr-tab-active-size) !important; color: var(--swr-title-color) !important; }
.swr-msg-tab.active::after,
.swr-msg-tab.is-active::after,
.sf-sort-tab.active::after,
.swr-feed-switch.active::after{ background: var(--swr-accent) !important; bottom: var(--swr-tab-underline-offset, 8px) !important; width: 100% !important; height: var(--swr-tab-underline-h, 3px) !important; border-radius: 999px !important; }
.swr-top-bar,
.swr-header,
.swr-msg-header{ font-size: var(--swr-title-size) !important; color: var(--swr-title-color) !important; }
#swr-container .swr-app-icon,
#swr-container .swr-avatar,
#swr-container #me-avatar,
#swr-container #profile-avatar,
#swr-container .sf-avatar,
#swr-container .sf-topic-avatar,
#swr-container .sf-post-avatar,
#swr-container .swr-chat-avatar{ background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important; }

/* Typography */
#swr-container,
#swr-container *{
  color: var(--swr-text);
}

#swr-container .muted,
#swr-container .swr-sub,
#swr-container .swr-subtitle{
  color: var(--swr-subtext);
}

/* Buttons: glossy */
.swr-btn-primary,
.swr-circle-arrow-btn{
  border-radius: 999px !important;
  background: rgba(0,0,0,var(--swr-dark-btn-alpha, 0.50)) !important;
  color: var(--swr-dark-btn-text, #fff) !important;
  box-shadow: 0 18px 40px rgba(0,0,0,.22) !important;
}

/* Overlay/dialog glass */
#swr-core-dialog-overlay{
  background: rgba(0,0,0,.28) !important;
  backdrop-filter: blur(var(--swr-fog-blur)) saturate(100%);
  -webkit-backdrop-filter: blur(var(--swr-fog-blur)) saturate(100%);
}

/* Forum sidebar overlay should be clickable and above content */
#sf-sidebar-overlay{ z-index: 9998 !important; }
#sf-sidebar{ z-index: 9999 !important; }




/* ===== Glass UI v1.4 polish ===== */

/* 鍏ㄧ珯鏂囧瓧浠庣函榛戦檷鍒版繁鐏?*/
#swr-container, #swr-container *{
  color: var(--swr-text);
}
#swr-container b, #swr-container strong{
  color: var(--swr-text-strong, rgba(30,30,36,.86));
}
#swr-container .muted, #swr-container .swr-sub, #swr-container .sub, #swr-container .hint{
  color: rgba(40,40,48,.56) !important;
}

/* 鈥滄垜鐨勨€濆垪琛ㄦ潯鐩細涓庝笂鏂瑰崱鐗囧悓閫忔槑搴?鐜荤拑璐ㄦ劅 */
.swr-me-item{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: 1px solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  box-shadow: var(--swr-shadow-soft) !important;
  margin-bottom: var(--swr-gap) !important;
}
.swr-me-item:active{
  transform: scale(.995);
  box-shadow: 0 12px 30px rgba(0,0,0,.12) !important;
}

/* 鑱婂ぉ姘旀场锛氭敼涓烘湅鍙嬪湀鍚屾鐜荤拑鍗＄墖 */
.swr-msg-bubble{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: 1px solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  box-shadow: 0 16px 44px rgba(0,0,0,.14) !important;
  color: var(--swr-text) !important;
}
.swr-msg-left .swr-msg-bubble,
.swr-msg-right .swr-msg-bubble{
  border-top-left-radius: var(--swr-radius) !important;
  border-top-right-radius: var(--swr-radius) !important;
}
.swr-msg-right .swr-msg-bubble{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
}


/* 璁哄潧锛氫富棰?甯栧瓙/璺熷笘鍏ㄩ儴鐙珛鐜荤拑鍗＄墖 + 鏇村ぇ闂磋窛 */
.sf-post-card, .sf-dt-content, .sf-cmt-item, .sf-notif-card{
  border: 1px solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
  overflow: hidden;
}
.sf-post-card{
  margin: 0 0 var(--swr-gap) 0 !important;
  border-bottom: none !important;
}
.sf-cmt-item{
  margin-bottom: var(--swr-gap) !important;
}
.sf-post-title, .sf-dt-title, .sf-cmt-name, .sf-dt-name{
  color: var(--swr-text-strong, rgba(30,30,36,.86)) !important;
}
.sf-cmt-text, .sf-dt-text{
  color: var(--swr-text) !important;
}

/* 璁哄潧搴曢儴瀵艰埅/鎸夐挳榛樿涓嶈绾粦 */
.sf-meta-left, .sf-meta-right, .sf-post-meta{
  color: rgba(40,40,48,.62) !important;
}


/* ==============================
   Login background banding fix
   - Reduce fog blur and use lighter fog (less gradient banding).
   ============================== */
#swr-container::after{
  background: rgba(255,255,255,0.08) !important;
  filter: none !important;
}


/* ==============================
   Discover page + viewport fixes (v34.1.8)
   1) AI grid top 8 items reuse .swr-chat-entry for click routing.
      Glass-theme styles were making them look like chat cards.
   2) Ensure fullscreen container never overflows horizontally
      (fixes right-side white strip + nav visual offset on some browsers).
   3) Bottom nav is always centered regardless of viewport rounding.
   ============================== */

/* 1) Remove chat-card glass styling from the AI icon grid only */
#discover-ai-grid .swr-chat-entry{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  overflow: visible !important;
}

/* 2) Hard stop any horizontal overflow in fullscreen */
#swr-container.swr-is-fullscreen{
  /* Use inset to fully cover viewport and avoid scrollbar gutter side-effects */
  inset: 0 !important;
  width: 100% !important;
  overflow: hidden !important;
}
#swr-main-app{ overflow: hidden !important; }

/* 2.1) Hide root scrollbars completely (desktop Chrome/Edge sometimes shows a "track" gutter) */
html, body{
  width: 100% !important;
  height: 100% !important;
  overflow: hidden !important;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar{
  width: 0 !important;
  height: 0 !important;
}
html{ scrollbar-width: none !important; }
body{ -ms-overflow-style: none !important; }

/* 3) Bottom nav follows unified side inset; do not re-center with translate */
.swr-bottom-nav{
  left: var(--swr-bottom-nav-inset, 12px) !important;
  right: var(--swr-bottom-nav-inset, 12px) !important;
  width: auto !important;
  margin: 0 !important;
  transform: none !important;
}

/* 4) Icons / avatars a bit more solid (+10%) */
.swr-app-icon,
.swr-avatar,
.sf-avatar,
.sf-topic-avatar,
.sf-post-avatar{
  opacity: .75 !important;
}

/* Bottom tabbar icons */
.swr-nav-item svg{
  opacity: .75;
}

.swr-nav-item.swr-active svg{ opacity: 1; }

/* 鍏煎娑堟伅鍒楄〃鐨勫ご鍍忓鍣?*/
.swr-chat-avatar{ opacity: .75; }

/* 4.1) Boost icon/avatar edge highlights so glass is more legible even at lower opacity */
.swr-app-icon,
.swr-avatar,
#me-avatar,
#profile-avatar,
.sf-avatar,
.sf-topic-avatar,
.sf-post-avatar{
  border: 1px solid rgba(255,255,255,.42) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.38),
    0 10px 24px rgba(0,0,0,.12) !important;
}

/* 7) Friends-circle (鏈嬪弸鍦? layout
   Desktop: keep a clean "card stack" with a bit of side breathing room.
   Mobile: avoid double-inset (scroll padding + element margins) which looks like weird nesting.
*/

/* 7.0) Remove any "outer frame" on the feed surface.
   The glass should live on each post/publish card, not on the scroll surface / top bar.
*/
#tab-feed #scribe-scroll-area{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Unified topbar baseline (Messages / Feed / others) */
.swr-page-topbar{
  padding: 14px 16px;
  min-height: 54px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 10px;
}

/* Feed topbar structure styles - glass effect controlled by backend */
#tab-feed #swr-feed-topbar{
  border: 1px solid rgba(255,255,255,var(--swr-border-a));
  border-radius: var(--swr-radius);
  box-shadow: var(--swr-shadow-soft);
}

/* Keep title typography consistent */
#tab-feed #swr-feed-topbar .swr-title,
#tab-msg #swr-msg-header .swr-title{
  font-size: 16px;
  letter-spacing: .2px;
}


/* Make the filter notice a small glass chip (avoid a flat dark strip that reads like a container/frame). */
#tab-feed #scribe-filter-notice{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: 1px solid rgba(255,255,255,.16) !important;
  border-radius: var(--swr-radius) !important;
  box-shadow: 0 14px 40px rgba(0,0,0,.10) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
}
@media (min-width: 769px){
  #scribe-scroll-area{ padding-left: 0 !important; padding-right: 0 !important; }
  #scribe-filter-notice,
  #scribe-publish-box,
  #scribe-feed-list,
  #scribe-load-more,
  #scribe-no-more{ margin-left: 14px !important; margin-right: 14px !important; }
}
@media (max-width: 768px){
  #scribe-scroll-area{ padding-left: 14px !important; padding-right: 14px !important; }
  #scribe-filter-notice,
  #scribe-publish-box,
  #scribe-feed-list,
  #scribe-load-more,
  #scribe-no-more{ margin-left: 0 !important; margin-right: 0 !important; }
}

/* 7.1) Chat list shadow in message tab: keep it tighter (less "tall" shadow) */



/* 8) "鎴戠殑"椤甸潰鑿滃崟瀹瑰櫒蹇呴』淇濇寔閫忔槑锛岄伩鍏嶅嚭鐜版棤鍦嗚娣辫壊搴曞潡 */
.swr-me-menu,
#profile-system-menu{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* 5) Chat list: remove the oversized outer glass layer (keep only the inner card) */
.swr-chat-entry-wrap{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: var(--swr-radius) !important;
  overflow: visible !important; /* swipe-delete removed; keep shadow un-clipped */
  position: relative !important;
  z-index: 0 !important; /* 寤虹珛 stacking context锛岀‘淇濋槾褰卞眰涓嶈鍘嬪埌鑳屾櫙涓?*/
}

/* 6) Hide the bottom "clear private chats" strip (it reads like a flat, dark rectangle) */
#swr-clear-pms-btn{
  display: none !important;
}



/* Feed topbar unified with message header */
#tab-feed #swr-feed-topbar{
  padding: 12px 14px;
  margin: 10px 12px 12px;
  border-radius: 18px;
}

/* ======================================================================= */
/* Forum: make topic + reply blocks match Moments glass cards               */
/* ======================================================================= */

/* Topic list cards */
#tab-forum .swr-forum-item,
#tab-forum .swr-topic-item,
#tab-forum .swr-forum-card{
  background: rgba(255,255,255,var(--swr-glass-a1)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  border: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}

/* Topic detail: main post + replies */
.swr-forum-thread .swr-post,
.swr-forum-thread .swr-reply,
.swr-forum-thread .swr-comment{
  background: rgba(255,255,255,var(--swr-glass-a1)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  border: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}


/* ===== v3450 final centralized UI governance ===== */
#swr-container::after{
  background:
    radial-gradient(1200px 800px at 10% 0%, rgba(255,180,220,calc(var(--swr-stage-fog-alpha, .10) * 2.2)), transparent 60%),
    radial-gradient(900px 700px at 90% 10%, rgba(170,210,255,calc(var(--swr-stage-fog-alpha, .10) * 1.8)), transparent 55%),
    radial-gradient(900px 700px at 50% 100%, rgba(255,210,160,calc(var(--swr-stage-fog-alpha, .10) * 1.4)), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,var(--swr-stage-fog-alpha,.10)), rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 0.35))) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
#swr-container .swr-app-icon,
#swr-container .swr-avatar,
#swr-container #me-avatar,
#swr-container #profile-avatar,
#swr-container .sf-avatar,
#swr-container .sf-topic-avatar,
#swr-container .sf-post-avatar,
#swr-container .swr-chat-avatar{
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
}

/* Centralize addon / utility cards under same glass system */
.swr-todo-item,
.swr-note-card,
.swr-cd-card,
.swr-qa-card,
.swr-qad-q-wrap,
.swr-qad-a-item,
.swr-em-card,
.swr-dream-card,
.swr-cap-card,
.swr-cat-item,
.sf-admin-cat-card,
#tab-me [id=me-my-feed],
#tab-me [id=me-my-favs],
#profile-myfeed-card,
#swr-note-cat-sidebar,
#swr-note-list-view .swr-bottom-black-btn,
#swr-todo-view .swr-bottom-black-btn,
#swr-countdown-list-view .swr-bottom-black-btn,
#swr-qa-list-view .swr-bottom-black-btn,
#swr-em-list-view .swr-bottom-black-btn,
#swr-dream-list-view .swr-bottom-black-btn,
#swr-capsule-list-view .swr-bottom-black-btn{
  border-radius: var(--swr-radius) !important;
}
.swr-todo-item,
.swr-note-card,
.swr-cd-card,
.swr-qa-card,
.swr-qad-q-wrap,
.swr-qad-a-item,
.swr-em-card,
.swr-dream-card,
.swr-cap-card,
.sf-admin-cat-card,
#tab-me [id=me-my-feed],
#tab-me [id=me-my-favs],
#profile-myfeed-card,
#swr-note-cat-sidebar{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: 1px solid var(--swr-border) !important;
  box-shadow: var(--swr-shadow-soft) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}

/* Make all addon secondary page footers obey the style hub */
#swr-todo-view > div[style*="background:#fafafa"],
#swr-note-list-view > div[style*="background:#fafafa"],
#swr-countdown-list-view > div[style*="background:#fafafa"],
#swr-qa-list-view > div[style*="background:#fafafa"],
#swr-qa-detail-view > div[style*="background:#fafafa"],
#swr-em-list-view > div[style*="background:#fafafa"],
#swr-em-detail-view > div[style*="background:#fafafa"],
#swr-dream-list-view > div[style*="background:#fafafa"],
#swr-capsule-list-view > div[style*="background:#fafafa"],
#sf-action-sheet,
#sf-action-list,
#sf-action-cancel,
#sf-notif-drawer,
#sf-search-drawer{
  background: rgba(255,255,255,calc(var(--swr-glass-a2) + .06)) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}

/* 硅基文明底部只读栏：统一使用二级页面卡片玻璃参数 */
#swr-container #sf-view-detail #sf-readonly-area{
  background: var(--swr-subpage-glass-bg) !important;
  backdrop-filter: var(--swr-subpage-glass-backdrop) !important;
  -webkit-backdrop-filter: var(--swr-subpage-glass-backdrop) !important;
  border-top: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}

/* Forum topic detail main card should visually match replies */
/* background / backdrop-filter / box-shadow 完全交给 inline CSS (glass-inline-css.php) 管理 */
#sf-detail-container > .sf-dt-content,
#sf-cmt-list > .sf-cmt-item{
  border: 1px solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
}
#sf-detail-container > .sf-dt-content{ padding: var(--swr-card-pad) !important; }
#sf-cmt-list > .sf-cmt-item{ padding: var(--swr-card-pad) !important; }

/* Keep detail title/card layout stable */
.sf-dt-head{ display:flex !important; align-items:flex-start !important; gap:14px !important; }
.sf-dt-main{ flex:1 1 auto !important; min-width:0 !important; }
.sf-dt-title{ width:100% !important; min-width:0 !important; white-space:normal !important; word-break:break-word !important; }

/* Notes / todos / detail pages should not show flat white blocks anymore */
#swr-note-list-container .swr-note-card,
#swr-todo-list .swr-todo-item,
#swr-countdown-list-container .swr-cd-card,
#swr-qa-list-container .swr-qa-card,
#swr-em-list-container .swr-em-card,
#swr-dream-list-container .swr-dream-card,
#swr-capsule-list-container .swr-cap-card{
  color: var(--swr-text) !important;
}


/* v3451 fixes */
.swr-item-list > li{ margin:0 !important; padding:0 !important; }
.swr-item-list .swr-chat-entry{ margin:0 !important; padding:12px 18px !important; }
#tab-msg .swr-scroll-area{ padding-left:14px !important; padding-right:14px !important; }
#tab-feed #swr-feed-topbar{
  margin:0 !important;
  padding:0 18px !important;
  min-height: var(--swr-title-h) !important;
  height: var(--swr-title-h) !important;
  border-radius: 0 !important;
  border-left:none !important;
  border-right:none !important;
  border-top:none !important;
  box-shadow: var(--swr-shadow-soft) !important;
}
#tab-feed #swr-feed-topbar .swr-msg-tabs{ height:100%; align-items:center !important; gap:20px !important; }
#tab-feed #swr-feed-topbar .swr-msg-actions{ min-width:64px; }
#tab-feed .swr-scroll-area{ top: 0 !important; padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important; }

/* Make add-on pages inherit glass surfaces instead of flat white cards */
#swr-todo-list .swr-todo-item,
#swr-note-list-container .swr-note-card,
#swr-countdown-list-container .swr-cd-card,
#swr-qa-list-container .swr-qa-card,
#swr-qa-detail-container .swr-qad-q-wrap,
#swr-qa-detail-container .swr-qad-a-item,
#swr-em-list-container .swr-em-card,
#swr-dream-list-container .swr-dream-card,
#swr-capsule-list-container .swr-cap-card{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border:1px solid var(--swr-border) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}


/* v3452 spacing + feed/forum fixes */
#tab-msg .swr-item-list > li.swr-chat-entry-wrap,
#msg-contacts .swr-item-list > li.swr-chat-entry-wrap,
#swr-msg-list > li.swr-chat-entry-wrap,
#swr-contact-list > li.swr-chat-entry-wrap{
  margin: 0 0 var(--swr-gap) 0 !important;
  padding: 0 !important;
}
#tab-msg .swr-item-list > li.swr-chat-entry-wrap:last-child,
#msg-contacts .swr-item-list > li.swr-chat-entry-wrap:last-child{
  margin-bottom: 0 !important;
}
#tab-msg .swr-scroll-area{ padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important; }

/* 鍔ㄦ€侀〉鏍囬鏍忓畬鍏ㄥ榻愭秷鎭〉 */
#tab-feed #swr-feed-topbar,
#tab-feed .swr-msg-header{
  margin: 0 !important;
  padding: 0 18px !important;
  min-height: var(--swr-title-h) !important;
  height: var(--swr-title-h) !important;
  border-radius: 0 !important;
  border-left: none !important;
  border-right: none !important;
  border-top: none !important;
  border-bottom: var(--swr-border-w, 1px) solid rgba(255,255,255,.16) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}
#tab-feed #swr-feed-topbar .swr-msg-tabs,
#tab-feed .swr-msg-header .swr-msg-tabs{
  height: 100% !important;
  align-items: center !important;
  gap: 22px !important;
}

/* 璁哄潧姝ｆ枃鎷嗘垚鏍囬鍗?+ 姝ｆ枃鍗″悗缁熶竴鏍峰紡 */
#sf-detail-container .sf-dt-title-card,
#sf-detail-container .sf-dt-body-card{
  border: 1px solid var(--swr-border) !important;
  border-radius: var(--swr-radius) !important;
  overflow: hidden;
}
#sf-detail-container .sf-dt-title-card{ padding: var(--swr-card-pad) !important; }
#sf-detail-container .sf-dt-body-card{ }
#sf-detail-container .sf-dt-title-card{ width: 100% !important; box-sizing: border-box !important; }
#sf-detail-container .sf-dt-body-card{ width: 100% !important; box-sizing: border-box !important; }
#sf-detail-container .sf-dt-title-card .sf-dt-title{ margin: 0 !important; font-size: 18px !important; }
#sf-detail-container .sf-dt-body-card .sf-cmt-floor{ opacity:.72; }


/* v3453 unified vertical rhythm: one variable controls title-to-list and card-to-card spacing */
#tab-msg .swr-scroll-area,
#tab-feed .swr-scroll-area,
#sf-list-scroll{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}
#swr-todo-list,
#swr-note-list-container{
  padding-top: var(--swr-gap) !important;
}
#tab-msg .swr-item-list > li.swr-chat-entry-wrap,
#msg-contacts .swr-item-list > li.swr-chat-entry-wrap,
#swr-msg-list > li.swr-chat-entry-wrap,
#swr-contact-list > li.swr-chat-entry-wrap,
#sf-post-list > .sf-post-card,
#scribe-feed-list > .scribe-post,
#tab-feed .scribe-publish-box{
  margin-bottom: var(--swr-gap) !important;
}
#tab-feed .scribe-publish-box:first-child,
#sf-post-list > .sf-post-card:first-child,
#tab-msg .swr-item-list > li.swr-chat-entry-wrap:first-child{
  margin-top: 0 !important;
}

/* Forum detail: keep title horizontal and body card consistent with comments */
#sf-detail-container .sf-dt-title-card,
#sf-detail-container .sf-dt-body-card{
  display:block !important;
}
#sf-detail-container .sf-dt-title-card .sf-dt-title{
  display:block !important;
  writing-mode: horizontal-tb !important;
  white-space: normal !important;
  word-break: break-word !important;
  overflow-wrap: anywhere !important;
}
#sf-detail-container .sf-dt-title-card .sf-dt-head{
  display:flex !important;
  align-items:center !important;
  gap:14px !important;
}
#sf-detail-container .sf-dt-title-card .sf-dt-main{
  min-width:0 !important;
  flex:1 1 auto !important;
}
#sf-detail-container .sf-dt-title-card .sf-dt-time{
  margin-top:6px !important;
}


/* v3455 forum detail meta block + width consistency */
#sf-detail-scroll .sf-comments-sec{
  padding-left: 18px !important;
  padding-right: 18px !important;
  box-sizing: border-box !important;
}
#sf-detail-container{
  padding-bottom: 0 !important;
}
#sf-detail-container .sf-dt-body-card,
#sf-cmt-list > .sf-cmt-item{
  width: 100% !important;
  box-sizing: border-box !important;
}
#sf-detail-container .sf-dt-body-card{
  display: block !important;
  padding: var(--swr-card-pad) !important;
}
#sf-detail-container .sf-dt-meta-top{
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  margin-bottom: 16px !important;
}
#sf-detail-container .sf-dt-meta-avatar{
  width: 56px !important;
  height: 56px !important;
  min-width: 56px !important;
  min-height: 56px !important;
  margin: 0 !important;
  border-radius: 50% !important;
  background-size: 68% auto !important;
}
#sf-detail-container .sf-dt-meta-main{
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
#sf-detail-container .sf-dt-meta-name-row{
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  flex-wrap: wrap !important;
  margin-bottom: 6px !important;
}
#sf-detail-container .sf-dt-meta-name{
  font-size: 15px !important;
  line-height: 1.25 !important;
  color: var(--swr-text) !important;
}
#sf-detail-container .sf-dt-meta-sub{
  font-size: 12px !important;
  line-height: 1.3 !important;
  color: var(--swr-subtext) !important;
}
#sf-detail-container .sf-dt-body-card .sf-dt-text{
  margin-top: 0 !important;
}
#sf-detail-container .sf-dt-body-card .sf-cmt-time,
#sf-detail-container .sf-dt-body-card .sf-cmt-floor,
#sf-detail-container .sf-dt-body-card .sf-op-badge,
#sf-detail-container .sf-dt-body-card .sf-cmt-header-row,
#sf-detail-container .sf-dt-body-card .sf-cmt-actions{
  display: none !important;
}


/* v3456 forum detail page margins match feed cards + smaller detail avatar */
#sf-detail-scroll{
  padding-left: 14px !important;
  padding-right: 14px !important;
}
#sf-detail-container{
  padding-left: 0 !important;
  padding-right: 0 !important;
  padding-top: 16px !important;
  padding-bottom: 5px !important;
  box-sizing: border-box !important;
}
#sf-detail-scroll .sf-comments-sec{
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
}
#sf-detail-container .sf-dt-title-card,
#sf-detail-container .sf-dt-body-card,
#sf-cmt-list > .sf-cmt-item{
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  box-sizing: border-box !important;
}
#sf-detail-container .sf-dt-meta-top{
  gap: 12px !important;
}
#sf-detail-container .sf-dt-meta-avatar{
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  min-height: 34px !important;
  background-size: 58% auto !important;
}
#sf-detail-scroll .sf-cmt-header{
  padding-left: 0 !important;
  padding-right: 0 !important;
}


/* v3457 style-control audit */
#sf-detail-scroll{
  padding-left: var(--swr-page-pad-x, 14px) !important;
  padding-right: var(--swr-page-pad-x, 14px) !important;
}
#sf-detail-container{
  padding-top: var(--swr-gap, 18px) !important;
  padding-bottom: 5px !important;
}
#sf-detail-scroll .sf-comments-sec{
  padding-left: 0 !important;
  padding-right: 0 !important;
  padding-bottom: 20px !important;
}
#sf-detail-container .sf-dt-meta-avatar,
#sf-detail-container .sf-dt-avatar{
  width: var(--swr-detail-avatar-size, 34px) !important;
  height: var(--swr-detail-avatar-size, 34px) !important;
  flex: 0 0 var(--swr-detail-avatar-size, 34px) !important;
}
.swr-msg-header,.swr-top-bar,.swr-header{
  padding-left: var(--swr-header-pad-x, 18px) !important;
  padding-right: var(--swr-header-pad-x, 18px) !important;
}
.swr-bottom-nav{
  left: var(--swr-bottom-nav-inset, 12px) !important;
  right: var(--swr-bottom-nav-inset, 12px) !important;
  width: auto !important;
  margin: 0 !important;
  transform: none !important;
}


/* ===== v3466 unified shell rebuild ===== */
:root{
  --swr-shell-bg: linear-gradient(145deg, rgba(255,255,255,calc(var(--swr-glass-a1) + .05)), rgba(255,255,255,calc(var(--swr-glass-a2) + .02)));
  --swr-shell-border: rgba(255,255,255,.34);
  --swr-shell-shadow: 0 18px 52px rgba(0,0,0,.12);
  --swr-surface-soft: rgba(255,255,255,.16);
  --swr-card-min-h: 78px;
  --swr-row-gap: var(--swr-gap);
}
#tab-msg,
#tab-feed,
#tab-forum,
#swr-todo-view,
#swr-note-list-view,
#swr-note-edit-view,
#swr-countdown-list-view,
#swr-countdown-edit-view,
#swr-qa-list-view,
#swr-qa-detail-view,
#swr-qa-edit-view{
  background: transparent !important;
}
.swr-unified-topbar,
#tab-feed #swr-feed-topbar,
.sf-forum-header{
  height: var(--swr-title-h) !important;
  padding-left: var(--swr-header-pad-x) !important;
  padding-right: var(--swr-header-pad-x) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap: 12px !important;
  border-radius: 0 0 calc(var(--swr-radius) + 2px) calc(var(--swr-radius) + 2px) !important;
  border-top: 0 !important;
  border-left: 0 !important;
  border-right: 0 !important;
  box-shadow: 0 8px 30px rgba(0,0,0,.06) !important;
}
.swr-unified-topbar .swr-msg-tabs,
#tab-feed #swr-feed-topbar .swr-msg-tabs,
.sf-forum-tabs{
  min-width: 0;
  height: 100%;
  display:flex !important;
  align-items:center !important;
  gap: 18px !important;
}
.swr-unified-topbar .swr-msg-actions,
.sf-forum-head-right{
  display:flex !important;
  align-items:center !important;
  gap: 8px !important;
}
.swr-msg-tab,
.sf-sort-tab,
.swr-feed-switch{
  position: relative;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  height: 100%;
  padding: 0 !important;
  color: var(--swr-subtext) !important;
  font-weight: 520;
  letter-spacing: .01em;
}
.swr-msg-tab.active,
.sf-sort-tab.active,
.swr-feed-switch.active{
  color: var(--swr-title-color) !important;
  font-weight: 640 !important;
}
.swr-msg-tab.active::after,
.swr-msg-tab.is-active::after,
.sf-sort-tab.active::after,
.swr-feed-switch.active::after{
  bottom: calc(var(--swr-tab-underline-offset) - 1px) !important;
  left: 0;
  right: 0;
  width: 100% !important;
}
.swr-card-list-shell{
  padding: calc(var(--swr-gap) - 2px) var(--swr-page-pad-x) calc(84px + env(safe-area-inset-bottom,0px)) !important;
  background: transparent !important;
}
.swr-unified-list,
#tab-msg .swr-item-list,
#swr-msg-list,
#swr-contact-list{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap: var(--swr-row-gap);
  background: transparent !important;
}
#tab-msg .swr-item-list > li,
#swr-msg-list > li,
#swr-contact-list > li{
  margin:0 !important;
  padding:0 !important;
  list-style:none !important;
  background: transparent !important;
  box-shadow:none !important;
}
.swr-chat-entry-wrap{
  background: transparent !important;
  box-shadow:none !important;
  border:none !important;
  filter:none !important;
}
.swr-chat-entry,
.swr-chat-entry-inner{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  box-shadow: none !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}
.scribe-post,
.scribe-publish-box,
.swr-note-card,
.swr-todo-item,
.swr-cd-card,
.swr-qa-card,
.swr-qad-q-wrap,
.swr-qad-a-item,
.swr-em-card,
.swr-dream-card,
.swr-cap-card{
  background: var(--swr-shell-bg) !important;
  border: 1px solid var(--swr-shell-border) !important;
  border-radius: calc(var(--swr-radius) + 2px) !important;
  box-shadow: var(--swr-shell-shadow) !important;
}
/* sf-post-card / sf-cmt-item / sf-dt-content 的 background/backdrop-filter/box-shadow
   完全交给 inline CSS (glass-inline-css.php) 管理，此处不再设置 */
.sf-post-card,
.sf-cmt-item,
.sf-dt-content{
  border-radius: calc(var(--swr-radius) + 2px) !important;
}
.swr-chat-entry,
.swr-chat-entry-inner{
  min-height: var(--swr-card-min-h);
  padding: 16px 18px !important;
  display:flex !important;
  align-items:center !important;
  gap: 14px !important;
}
.swr-chat-entry .swr-avatar,
.swr-chat-entry-inner .swr-avatar{
  width: 46px !important;
  height: 46px !important;
  flex: 0 0 46px !important;
}
.swr-list-content{
  min-width:0;
  flex:1 1 auto;
  display:flex;
  flex-direction:column;
  gap: 5px;
}
.swr-list-name{
  display:flex;
  align-items:center;
  gap: 8px;
  min-width:0;
  font-size: 15px;
  color: var(--swr-title-color);
  font-weight: 620;
}
.swr-list-name > span:first-child{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.swr-list-desc{
  font-size: 12.5px;
  color: var(--swr-subtext);
  line-height:1.45;
}
.swr-list-trailing{
  width: 18px;
  height: 18px;
  display:flex;
  align-items:center;
  justify-content:center;
  opacity:.52;
  flex: 0 0 18px;
}
.swr-list-trailing svg{
  width: 16px;
  height: 16px;
  stroke: currentColor;
  fill:none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
#swr-container .swr-list-trailing.is-unread{
  color: #e53935 !important;
  opacity: 1;
}
#swr-container .swr-list-trailing.is-unread svg{
  color: #e53935 !important;
  stroke: #e53935 !important;
}
.swr-tag-group,
.sf-cat-badge,
.swr-note-cat-tag,
.swr-cd-badge,
.swr-qa-ai-badge,
.sf-current-cat-title{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: 1px solid rgba(255,255,255,var(--swr-glass-border-a)) !important;
  color: var(--swr-title-color) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.32) !important;
}
.sf-current-cat-title{
  display:inline-flex;
  align-items:center;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 12px;
  white-space: nowrap;
}
#swr-clear-pms-btn,
#msg-contacts > div:first-child{
  display:none !important;
}
#scribe-scroll-area,
#sf-list-scroll,
#sf-user-scroll,
#sf-detail-scroll{
  padding-left: var(--swr-page-pad-x) !important;
  padding-right: var(--swr-page-pad-x) !important;
}
#scribe-feed-list,
#sf-post-list,
#sf-user-list-container,
#sf-cmt-list{
  display:flex;
  flex-direction:column;
  gap: var(--swr-row-gap);
}
.scribe-post,
.sf-post-card,
.sf-cmt-item,
.sf-dt-content{
  margin: 0 !important;
}
.sf-post-card{
  padding: 18px 18px 16px !important;
}
.sf-post-title{
  font-size: 16px !important;
  line-height: 1.5 !important;
  font-weight: 650 !important;
  color: var(--swr-title-color) !important;
  margin-bottom: 12px !important;
}
.sf-post-meta{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap: 10px !important;
  flex-wrap: wrap;
}
.sf-meta-left,
.sf-meta-right{
  display:flex !important;
  align-items:center !important;
  gap: 8px !important;
  min-width:0;
}
.sf-meta-right{
  row-gap: 6px !important;
  color: var(--swr-subtext) !important;
  font-size: 12px !important;
}
.swr-bottom-nav{
  left: var(--swr-bottom-nav-inset) !important;
  right: var(--swr-bottom-nav-inset) !important;
  width: auto !important;
}


/* v3467 message page second-pass rebuild: remove legacy list semantics entirely */
#msg-chats.swr-msg-scroll,
#msg-contacts.swr-msg-scroll{
  padding: var(--swr-gap) var(--swr-page-pad-x) calc(84px + env(safe-area-inset-bottom,0px)) !important;
  background: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
}
#msg-chats.swr-msg-scroll::before,
#msg-chats.swr-msg-scroll::after,
#msg-contacts.swr-msg-scroll::before,
#msg-contacts.swr-msg-scroll::after,
#swr-msg-list::before,
#swr-msg-list::after,
#swr-contact-list::before,
#swr-contact-list::after{
  content: none !important;
  display:none !important;
}
#swr-msg-list.swr-card-stack,
#swr-contact-list.swr-card-stack{
  display:grid !important;
  grid-template-columns: 1fr !important;
  gap: var(--swr-row-gap) !important;
  padding: 0 !important;
  margin: 0 !important;
  list-style: none !important;
  width: 100% !important;
  min-height: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  filter:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}
#swr-msg-list.swr-card-stack > *,
#swr-contact-list.swr-card-stack > *{
  margin:0 !important;
  padding:0 !important;
  background: transparent !important;
  box-shadow:none !important;
  border:0 !important;
  border-radius:0 !important;
  min-height:0 !important;
}
.swr-chat-card-host{
  display:block !important;
  margin:0 !important;
  padding:0 !important;
  background: transparent !important;
  box-shadow:none !important;
  border:0 !important;
  border-radius:0 !important;
  filter:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}
#msg-chats .swr-chat-entry,
#msg-chats .swr-chat-entry-inner,
#msg-contacts .swr-chat-entry,
#msg-contacts .swr-chat-entry-inner{
  width:100% !important;
  margin:0 !important;
}


/* ===== v3468 phase-2 unified rebuild ===== */
:root{
  --swr-shell-radius: calc(var(--swr-radius) + 2px);
  --swr-shell-pad: var(--swr-card-pad);
  --swr-shell-gap: 12px;
  --swr-dock-h: 70px;
  --swr-view-bottom: calc(var(--swr-dock-h) + env(safe-area-inset-bottom, 0px));
}

.swr-card-shell,
.swr-panel-shell,
.swr-form-shell,
.swr-sheet-shell,
.swr-me-shell,
.swr-subpage-shell,
.swr-dock-shell,
.swr-modal-sheet,
.swr-inline-panel{
  background: var(--swr-shell-bg) !important;
  border: 1px solid var(--swr-shell-border) !important;
  border-radius: var(--swr-shell-radius) !important;
  box-shadow: var(--swr-shell-shadow) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}

.swr-page-scroller,
.swr-view-scroller{
  position:absolute;
  left:0;
  right:0;
  top:0;
  bottom:var(--swr-view-bottom);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding: var(--swr-gap) var(--swr-page-pad-x);
  padding-top: calc(var(--swr-title-h) + var(--swr-gap));
  background: transparent !important;
}
.swr-view-scroller.is-form{ bottom: env(safe-area-inset-bottom,0px); }
.swr-view-scroller.is-detail{ padding-top: calc(var(--swr-title-h) + var(--swr-gap)); }

.swr-dock-bar,
.swr-bottom-dock,
.swr-action-dock{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding: 10px var(--swr-page-pad-x) calc(10px + env(safe-area-inset-bottom, 0px));
  background: transparent !important;
  border-top: 0 !important;
  z-index: 2;
}
.swr-dock-bar::before,
.swr-bottom-dock::before,
.swr-action-dock::before{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.12));
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  border-top: 1px solid rgba(255,255,255,.18);
  pointer-events:none;
}
.swr-dock-bar > *, .swr-bottom-dock > *, .swr-action-dock > *{ position:relative; z-index:1; }

.swr-primary-btn,
.swr-bottom-black-btn,
#swr-about-edit-btn,
#swr-about-save-btn,
#swr-notice-edit-btn,
#swr-notice-save-btn,
#swr-shells-edit-btn,
#swr-shells-save-btn,
#profile-save-btn{
  width:100%;
  min-height:48px;
  padding:12px 18px;
  border:none;
  border-radius: calc(var(--swr-radius) - 2px);
  background: rgba(24,24,28,.88) !important;
  color:#fff !important;
  font-size:15px;
  font-weight:600;
  box-shadow: 0 14px 32px rgba(0,0,0,.18);
}

.swr-secondary-btn,
#swr-todo-cancel{
  background: rgba(255,255,255,.78) !important;
  color: var(--swr-title-color) !important;
  border: 1px solid rgba(255,255,255,.35) !important;
  border-radius: calc(var(--swr-radius) - 2px);
}

.swr-form-stack,
.swr-editor-stack{
  display:flex;
  flex-direction:column;
  gap:var(--swr-gap);
}
.swr-form-shell,
.swr-editor-shell,
.swr-inline-panel{
  padding: 18px 18px 16px;
}
.swr-form-title{
  margin:0;
  font-size:22px;
  line-height:1.35;
  font-weight:650;
  color: var(--swr-title-color);
}
.swr-form-subtle{
  font-size:13px;
  color: var(--swr-subtext);
  line-height:1.5;
}
.swr-form-input,
.swr-form-textarea,
.swr-form-select,
#swr-search-chat-input,
#swr-friend-input,
#profile-nickname-input,
#profile-edit-input,
#swr-about-edit-input,
#swr-notice-edit-input,
#swr-shells-edit-input,
#swr-msg-input,
#scribe-input,
#qa-answer-input,
#em-reply-input{
  width:100%;
  border:none !important;
  outline:none !important;
  background: rgba(255,255,255,.56) !important;
  color: var(--swr-title-color) !important;
  border-radius: calc(var(--swr-radius) - 4px) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
}
.swr-form-input,
.swr-form-select,
#swr-search-chat-input,
#swr-friend-input,
#profile-nickname-input,
#profile-edit-input{ min-height:48px; padding: 0 14px !important; font-size:15px !important; }
.swr-form-textarea,
#swr-about-edit-input,
#swr-notice-edit-input,
#swr-shells-edit-input,
#swr-msg-input,
#scribe-input,
#qa-answer-input,
#em-reply-input{ padding: 12px 14px !important; font-size:15px !important; line-height:1.55 !important; }

.swr-form-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(255,255,255,.22);
}
.swr-form-row:last-child{ border-bottom:none; padding-bottom:0; }
.swr-form-row:first-child{ padding-top:0; }
.swr-form-label{ font-size:15px; color: var(--swr-title-color); }
.swr-form-value{ font-size:14px; color: var(--swr-subtext); }

.swr-me-hero,
.swr-profile-hero,
.swr-card-cluster{
  padding: 18px;
}
.swr-me-hero,
.swr-profile-hero{
  display:flex;
  align-items:center;
  gap:14px;
}
.swr-me-hero .swr-avatar-lg,
.swr-profile-hero #profile-avatar,
#me-avatar{
  width:60px !important;
  height:60px !important;
  border-radius:50% !important;
  flex:0 0 60px !important;
}
.swr-me-title,
.swr-profile-title,
#me-nickname,
#profile-nickname{
  font-size:18px !important;
  font-weight:650 !important;
  color: var(--swr-title-color) !important;
}
.swr-me-subline,
#profile-shells-badge,
#profile-shells-count,
.swr-profile-shells-label{ color: var(--swr-subtext) !important; }

.swr-menu-stack,
.swr-settings-stack,
#profile-system-menu{
  display:flex;
  flex-direction:column;
  gap: var(--swr-gap);
}
.swr-me-card,
.swr-me-item,
.swr-system-item{
  min-height:56px;
  padding: 0 18px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:12px;
  border:none !important;
  margin:0 !important;
}
.swr-me-item,
.swr-system-item{
  background: var(--swr-shell-bg) !important;
  border: 1px solid var(--swr-shell-border) !important;
  border-radius: var(--swr-shell-radius) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}
.swr-me-item span:last-child,
.swr-system-item span:last-child{ color: rgba(40,40,48,.34) !important; }
#me-go-home,
#me-exit{ justify-content:center !important; }
#me-exit{ color:#d44343 !important; }

#tab-me .swr-scroll-area,
#swr-profile-view .swr-scroll-area,
#swr-myfeed-view .swr-scroll-area,
#swr-about-view .swr-scroll-area,
#swr-notice-view .swr-scroll-area,
#swr-shells-view .swr-scroll-area{
  padding-left: var(--swr-page-pad-x) !important;
  padding-right: var(--swr-page-pad-x) !important;
}
#tab-me .swr-scroll-area{ display:flex; flex-direction:column; gap:var(--swr-gap); }

#tab-me .swr-scroll-area > div[style*="background:#fff"],
#tab-me .swr-scroll-area > div[style*="background: #fff"],
#profile-link-stack,
#profile-system-menu > .swr-me-item,
#profile-action-row > *{
  background: transparent !important;
  box-shadow:none !important;
  border:0 !important;
}

#tab-me .swr-scroll-area > div:first-child,
#tab-me .swr-scroll-area > div:nth-child(2),
#profile-myfeed-card,
#profile-link-stack{
  margin:0 !important;
}

#profile-content{ display:flex; flex-direction:column; gap:var(--swr-gap); }
#profile-content > div:first-child,
#profile-link-stack,
#profile-system-menu,
#profile-action-row{
  background: transparent !important;
  box-shadow:none !important;
  border:0 !important;
}
#profile-link-stack{
  display:flex;
  flex-direction:column;
  gap:var(--swr-gap);
  width:100%;
  padding:0 !important;
  box-sizing:border-box;
}
#profile-content > div:first-child{ padding: 10px 0 0 !important; }
#profile-action-row > *{
  min-height:46px;
  padding:0 18px !important;
  border-radius: var(--swr-shell-radius) !important;
  background: var(--swr-shell-bg) !important;
  border: 1px solid var(--swr-shell-border) !important;
  box-shadow: var(--swr-shadow-soft) !important;
  color: var(--swr-text) !important;
  -webkit-text-fill-color: var(--swr-text) !important;
}
#profile-action-row > *:disabled{
  color: var(--swr-subtext) !important;
  -webkit-text-fill-color: var(--swr-subtext) !important;
}
#profile-link-stack > .swr-myfeed-card{
  width:100%;
  flex:none;
  align-self:stretch;
  box-sizing:border-box;
  padding:0 !important;
}
#profile-link-stack > .swr-myfeed-card > span:first-child{ padding-left:18px; }
#profile-link-stack > .swr-myfeed-card > span:last-child{ padding-right:18px; }

#swr-chat-view .swr-messages,
#swr-chat-view .swr-input-area,
#scribe-comment-modal .scribe-comment-input-wrap,
#qa-answer-modal > div:last-child,
#em-reply-modal > div:last-child{
  background: transparent !important;
  border-top:0 !important;
}
#swr-chat-view .swr-messages{ padding-left: var(--swr-page-pad-x) !important; padding-right: var(--swr-page-pad-x) !important; }
#swr-chat-view .swr-input-wrapper,
#scribe-comment-modal textarea,
#qa-answer-input,
#em-reply-input{
  background: rgba(255,255,255,.72) !important;
  border:1px solid rgba(255,255,255,.32) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}
#swr-chat-view .swr-input-area::before,
#scribe-comment-modal .scribe-comment-input-wrap::before,
#qa-answer-modal > div:last-child::before,
#em-reply-modal > div:last-child::before{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.12));
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  border-top: 1px solid rgba(255,255,255,.18);
  pointer-events:none;
}

#swr-add-friend-drawer > div[style],
#swr-search-chat-drawer > div[style]{ padding: var(--swr-gap) var(--swr-page-pad-x) !important; }
#swr-send-friend-req{
  min-height:48px;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  border-radius: calc(var(--swr-radius) - 2px) !important;
  background: rgba(24,24,28,.88) !important;
  color:#fff !important;
  box-shadow: 0 14px 32px rgba(0,0,0,.18);
}

#swr-about-view .swr-scroll-area,
#swr-shells-view .swr-scroll-area,
#swr-profile-view .swr-scroll-area,
#swr-myfeed-view .swr-scroll-area{ top: 0 !important; padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important; bottom: 0 !important; }
#swr-about-text,
#swr-shells-text{
  background: var(--swr-shell-bg) !important;
  border:1px solid var(--swr-shell-border) !important;
  border-radius: var(--swr-shell-radius) !important;
  box-shadow: var(--swr-shell-shadow) !important;
  padding: 18px !important;
}


/* ===== v3469 phase-2 unified rebuild (editors / drawers / detail) ===== */
:root{
  --swr-sheet-pad-x: 18px;
  --swr-editor-title-size: 22px;
  --swr-editor-meta-gap: 14px;
}

/* Core dialog / drawers / sheets */
#swr-core-dialog{
  background: var(--swr-shell-bg) !important;
  border:1px solid var(--swr-shell-border) !important;
  border-radius: calc(var(--swr-shell-radius) + 2px) !important;
  box-shadow: var(--swr-shell-shadow) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}
#swr-core-dialog-msg{ color: var(--swr-title-color) !important; }
#swr-core-dialog-confirm,
#swr-core-dialog-cancel{ background: transparent !important; }

#swr-add-friend-drawer,
#swr-search-chat-drawer,
#sf-search-drawer,
#sf-notif-drawer{
  background: linear-gradient(180deg, rgba(255,255,255,.72), rgba(255,255,255,.6)) !important;
  border-left: 1px solid rgba(255,255,255,.28) !important;
  box-shadow: -18px 0 48px rgba(0,0,0,.12) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}
.swr-drawer-header,
.sf-search-header,
#sf-notif-drawer > div:first-child{
  padding: calc(14px + env(safe-area-inset-top,0px)) var(--swr-header-pad-x) 14px !important;
  border-bottom: 1px solid rgba(255,255,255,.22) !important;
  background: transparent !important;
  color: var(--swr-title-color) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
}
#swr-add-friend-drawer > div:nth-child(2),
#swr-search-chat-drawer > div:nth-child(2),
.sf-search-body,
#sf-notif-list{
  padding: var(--swr-gap) var(--swr-page-pad-x) !important;
}
#sf-clear-notif{
  background: transparent !important;
  border-top: 1px solid rgba(255,255,255,.16) !important;
}
#sf-action-sheet{
  background: transparent !important;
  padding: 0 var(--swr-page-pad-x) calc(10px + env(safe-area-inset-bottom,0px)) !important;
  border-radius: 0 !important;
}
#sf-action-list,
#sf-action-cancel{
  background: var(--swr-shell-bg) !important;
  border: 1px solid var(--swr-shell-border) !important;
  border-radius: var(--swr-shell-radius) !important;
  box-shadow: var(--swr-shell-shadow) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}
#sf-action-cancel{ margin-top: 10px; }

/* Unified forum detail / edit surfaces */
#sf-view-detail .swr-scroll-area,
#sf-view-user .swr-scroll-area,
#sf-view-edit > div[style*="position:absolute; top:55px"]{
  padding-left: var(--swr-page-pad-x) !important;
  padding-right: var(--swr-page-pad-x) !important;
}
#sf-view-edit > div[style*="position:absolute; top:55px"]{
  top: 0 !important;
  bottom: 0 !important;
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
  padding-bottom: calc(var(--swr-gap) + env(safe-area-inset-bottom, 0px)) !important;
  gap: var(--swr-editor-meta-gap) !important;
}
#sf-edit-cat-box,
#sf-view-edit #sf-input-title,
#sf-view-edit #sf-input-content,
#sf-view-edit .sf-edit-toolbar,
#sf-view-edit .sf-tag-box,
#sf-view-edit .sf-custom-select-dropdown{
  width: 100% !important;
  box-sizing: border-box !important;
}
#sf-view-edit #sf-input-title,
#sf-view-edit #sf-input-content,
#sf-view-edit .sf-tag-box{
  background: rgba(255,255,255,.52) !important;
  border:1px solid rgba(255,255,255,.25) !important;
  border-radius: calc(var(--swr-radius) - 2px) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.26) !important;
}
#sf-view-edit #sf-input-title{ padding: 14px 16px !important; margin-bottom: 0 !important; font-size: var(--swr-editor-title-size) !important; border-bottom: none !important; }
#sf-view-edit #sf-input-content{ padding: 14px 16px !important; min-height: 260px !important; }
#sf-view-edit .sf-tag-box{ padding: 12px 14px !important; }
#sf-view-edit .sf-custom-select-trigger{
  min-width: 0 !important;
  width: 100% !important;
  background: rgba(255,255,255,.62) !important;
  border:1px solid rgba(255,255,255,.25) !important;
  border-radius: calc(var(--swr-radius) - 2px) !important;
  padding: 14px 16px !important;
  margin-bottom: 0 !important;
}
#sf-view-edit .sf-custom-select-dropdown{
  top: calc(100% + 8px) !important;
  background: var(--swr-shell-bg) !important;
  border: 1px solid var(--swr-shell-border) !important;
  border-radius: calc(var(--swr-radius) - 2px) !important;
  box-shadow: var(--swr-shell-shadow) !important;
}
#sf-view-detail .sf-bottom-input{
  border-top: 0 !important;
}
/* background 由 inline CSS (glass-inline-css.php) 统一注入 */
#sf-input-area{ padding: 0 !important; }
#sf-input-area .sf-detail-input-row{
  position: relative;
}
#sf-input-area .sf-detail-input-row::before{
  content: "";
  position:absolute;
  inset:0;
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.15));
  border-top: 1px solid rgba(255,255,255,.16);
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat));
  pointer-events:none;
}
#sf-input-area .sf-detail-input-row > *,
#sf-readonly-area > *{ position:relative; z-index:1; }
#sf-input-area .swr-input-wrapper{
  background: rgba(255,255,255,.72) !important;
  border: 1px solid rgba(255,255,255,.3) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.28) !important;
}

/* Chat search / add friend / comment composer */
#swr-add-friend-drawer input,
#swr-search-chat-input,
#scribe-comment-input{
  background: rgba(255,255,255,.62) !important;
  border: 1px solid rgba(255,255,255,.24) !important;
  border-radius: calc(var(--swr-radius) - 2px) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.26) !important;
}
#swr-send-friend-req{
  background: rgba(24,24,28,.88) !important;
  color:#fff !important;
  border-radius: calc(var(--swr-radius) - 2px) !important;
  box-shadow: 0 14px 32px rgba(0,0,0,.18) !important;
}
#scribe-comment-modal .scribe-comment-input-wrap{
  left: var(--swr-page-pad-x) !important;
  right: var(--swr-page-pad-x) !important;
  bottom: calc(10px + env(safe-area-inset-bottom,0px)) !important;
  padding: 12px 14px !important;
  border-radius: var(--swr-shell-radius) !important;
  background: var(--swr-shell-bg) !important;
  border:1px solid var(--swr-shell-border) !important;
  box-shadow: var(--swr-shell-shadow) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}
#scribe-comment-input{ min-height: 44px !important; padding: 10px 12px !important; }

/* Addons editor unification */
#swr-note-edit-view > div[style*="position:absolute;top:55px"],
#swr-note-edit-view .swr-addon-form,
#swr-capsule-edit-view .swr-addon-form,
#swr-countdown-edit-view .swr-addon-form,
#swr-dream-edit-view .swr-addon-form,
#swr-em-edit-view .swr-addon-form,
#swr-qa-edit-view .swr-addon-form{
  position:absolute !important;
  top: 0 !important;
  left:0 !important;
  right:0 !important;
  bottom: env(safe-area-inset-bottom,0px) !important;
  padding: var(--swr-gap) var(--swr-page-pad-x) calc(var(--swr-gap) + env(safe-area-inset-bottom,0px)) !important;
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
  display:flex !important;
  flex-direction:column !important;
  gap: var(--swr-editor-meta-gap) !important;
  background: transparent !important;
  box-sizing: border-box !important;
}
#swr-note-edit-view input,
#swr-note-edit-view textarea,
#swr-capsule-edit-view input,
#swr-capsule-edit-view textarea,
#swr-capsule-edit-view select,
#swr-countdown-edit-view input[type="text"],
#swr-countdown-edit-view input[type="date"],
#swr-dream-edit-view textarea,
#swr-em-edit-view textarea,
#swr-qa-edit-view textarea{
  background: rgba(255,255,255,.56) !important;
  border: 1px solid rgba(255,255,255,.24) !important;
  border-radius: calc(var(--swr-radius) - 2px) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.26) !important;
  padding: 14px 16px !important;
  color: var(--swr-title-color) !important;
}
#swr-note-edit-view #swr-note-title,
#swr-countdown-edit-view #swr-countdown-title,
#swr-capsule-edit-view h3,
#swr-dream-edit-view h3,
#swr-em-edit-view h3,
#swr-qa-edit-view h3{
  margin:0 !important;
  font-size: var(--swr-editor-title-size) !important;
  line-height:1.35 !important;
  font-weight:400 !important;
  color: var(--swr-title-color) !important;
}
#swr-note-edit-view #swr-note-category{
  font-size: 14px !important;
  color: var(--swr-subtext) !important;
}
#swr-note-edit-view #swr-note-content,
#swr-capsule-edit-view textarea,
#swr-dream-edit-view textarea,
#swr-em-edit-view textarea,
#swr-qa-edit-view textarea{
  flex:1 !important;
  min-height: 240px !important;
}
#swr-capsule-edit-view #swr-capsule-input{
  flex: 0 0 auto !important;
  min-height: 0 !important;
}
#swr-dream-edit-view #swr-dream-input{
  flex: 0 0 auto !important;
  min-height: 0 !important;
}
#swr-em-edit-view #swr-em-input{
  flex: 0 0 auto !important;
  min-height: 0 !important;
}
#swr-qa-edit-view #swr-qa-input{
  flex: 0 0 auto !important;
  min-height: 0 !important;
}
#swr-capsule-edit-view > div[style*="display:flex;justify-content:space-between"],
#swr-countdown-edit-view > div[style*="display:flex;justify-content:space-between"]{ display:none !important; }
#swr-capsule-edit-view .swr-addon-form > div[style*="display:flex;justify-content:space-between"],
#swr-countdown-edit-view .swr-addon-form > div[style*="display:flex;justify-content:space-between"],
#swr-dream-edit-view .swr-addon-form > div[style*="display:flex;justify-content:space-between"]{
  background: rgba(255,255,255,.48) !important;
  border:1px solid rgba(255,255,255,.22) !important;
  border-radius: calc(var(--swr-radius) - 3px) !important;
  padding: 14px 16px !important;
  margin:0 !important;
}
#swr-todo-modal .swr-modal-sheet{
  left: var(--swr-page-pad-x) !important;
  right: var(--swr-page-pad-x) !important;
  width:auto !important;
  padding: 16px !important;
  padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)) !important;
}
#swr-todo-modal input,
#swr-todo-modal button{ border-radius: calc(var(--swr-radius) - 2px) !important; }
#swr-todo-modal #swr-todo-input{
  background: rgba(255,255,255,.58) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  border-bottom: 1px solid rgba(255,255,255,.22) !important;
  padding: 14px 16px !important;
}


/* ===== Cleanup pass: shared shells & utilities ===== */
.swr-hidden{display:none;}
.swr-flex-fill{flex:1;}
.swr-minw-0{min-width:0;}
.swr-title-sm{font-size:16px;}
.swr-tap-target{cursor:pointer;padding:10px;margin:-10px;}
.swr-menu-btn-lite{cursor:pointer;font-weight:700;font-size:24px;padding:0 5px;margin-top:-10px;}
.swr-header .swr-menu-btn-lite,
.sf-subpage-header .swr-icon-btn{
  width: var(--swr-top-action-size, 34px) !important;
  height: var(--swr-top-action-size, 34px) !important;
  min-width: var(--swr-top-action-size, 34px) !important;
  flex: 0 0 var(--swr-top-action-size, 34px) !important;
  border-radius: 12px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  margin: 0 !important;
  line-height: 1 !important;
  font-size: calc(var(--swr-top-action-size, 34px) * 0.65) !important;
  letter-spacing: -1px;
}
.swr-header-spacer{width:40px;display:inline-block;}
.swr-bottom-clear{bottom:0;}
.swr-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.swr-text-title{font-size:16px;color:#111;}
.swr-text-meta-label{font-size:15px;color:#666;}
.swr-text-strong{font-size:18px;font-weight:700;color:#111;}
.swr-text-link-title{font-size:15px;color:#000;}
.swr-me-item-arrow{color:#ccc;}
.swr-me-item-center{justify-content:center;text-align:center;margin-top:8px;}
.swr-meta-row{margin-top:6px;display:flex;align-items:center;gap:8px;}
.swr-ml-10{margin-left:10px;}
.swr-mt-10{margin-top:10px;}
.swr-z-125{z-index:125;}
.swr-list-pad-bottom{padding:12px 12px 80px;}
.swr-list-state{text-align:center;padding:12px;font-size:13px;}
.swr-list-state.is-action{color:#888;cursor:pointer;}
.swr-list-state.is-muted{color:#aaa;font-size:12px;}
.swr-centered-footer{width:100%;text-align:center !important;justify-content:center;}
.swr-discover-scroll{top:0;padding:25px 15px;padding-top:calc(25px + env(safe-area-inset-top, 0px));}
.swr-addon-grid-gap{margin-top:25px;}
.swr-feed-tabs{justify-content:flex-start;gap:18px;}
.swr-ptr-indicator{display:flex;text-align:center;padding:15px;font-size:12px;color:#888;align-items:center;justify-content:center;gap:5px;}
.swr-filter-notice{display:flex;background:rgba(0,0,0,0.02);padding:9px 18px;font-size:13px;justify-content:space-between;}
.swr-filter-clear{color:#e53935;cursor:pointer;}
.swr-core-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(var(--swr-fog-blur));}
.swr-core-dialog{background:#fff;width:300px;border-radius:16px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,0.15);transform:scale(.9);opacity:0;transition:all .2s cubic-bezier(.25,.8,.25,1);text-align:center;}
.swr-core-dialog-msg{padding:30px 24px;font-size:16px;color:#000;line-height:1.6;}
.swr-core-dialog-actions{display:flex;border-top:1px solid rgba(0,0,0,.05);}
.swr-core-dialog-btn{flex:1;padding:15px 0;font-size:16px;cursor:pointer;}
.swr-core-dialog-btn.is-cancel{color:#666;border-right:1px solid rgba(0,0,0,.05);}
.swr-core-dialog-btn.is-confirm{color:#000;background:#fafafa;}
.swr-auth-title{font-size:19px;font-weight:400;margin-bottom:20px;}
.swr-auth-greeting{margin-bottom:20px;font-size:15px;color:#333;}
.swr-auth-note{margin-top:4px;}
.swr-auth-guest-btn{margin-bottom:15px;}
.swr-auth-actions{display:flex;gap:10px;width:70%;}
.swr-auth-link.is-dark{color:#000;border-color:#000;}
.swr-auth-link.is-muted{color:#666;border-color:rgba(0,0,0,.2);}
.swr-drawer-body{padding:20px;}
.swr-field-input{width:100%;padding:14px;border-radius:8px;font-size:15px;outline:none;}
.swr-field-input.is-bordered{border:1px solid rgba(0,0,0,.1);background:#fff;margin-bottom:15px;}
.swr-field-input.is-soft{border:none;background:rgba(0,0,0,.03);}
.swr-solid-action{background:rgba(0,0,0,var(--swr-dark-btn-alpha, 0.50));color:var(--swr-dark-btn-text, #fff);text-align:center;padding:14px;border-radius:8px;font-size:15px;cursor:pointer;}
.swr-avatar{border-radius:50%;background-size:cover;background-position:center;background-repeat:no-repeat;}
.me-avatar{width:54px;height:54px;background:#ddd;}
.swr-subview{display:none;position:absolute;inset:0;width:100%;height:100%;z-index:120;transform:translateX(100%);transition:transform .3s cubic-bezier(.25,.8,.25,1);background:#f2f2f2;}
.swr-state-loading{text-align:center;padding:40px;color:#aaa;font-size:13px;}
.swr-profile-hero-shell{display:block;text-align:center;padding:20px 18px 22px;}
.swr-profile-avatar{width:84px;height:84px;background-color:#fff;margin:0 auto 15px;background-size:46%;border:1px solid rgba(0,0,0,.05);box-shadow:0 4px 10px rgba(0,0,0,.04);}
.swr-profile-name{margin:0 0 5px;font-size:20px;font-weight:400!important;color:#000;}
.swr-profile-shells{font-size:13px;color:#666;margin:4px 0 18px;display:flex;align-items:center;justify-content:center;gap:4px;}
.swr-profile-shells-label{font-size:12px;letter-spacing:.04em;color:var(--swr-text) !important;opacity:.72;}
#profile-shells-count{font-size:16px;font-weight:600;color:#000 !important;}
.swr-profile-edit-box{margin-top:15px;}
.swr-profile-edit-input{width:80%;text-align:center;background:#fff;margin-bottom:0;}
.swr-profile-edit-tip{margin-top:10px;font-size:12px;color:#6b7280;text-align:center;}
.swr-pill-action{background:rgba(0,0,0,var(--swr-dark-btn-alpha, 0.50));color:var(--swr-dark-btn-text, #fff);border:none;padding:8px 20px;border-radius:20px;font-size:13px;}
.swr-profile-action-row{display:flex;gap:15px;margin:0;justify-content:center;}
.swr-profile-link-stack{display:flex;flex-direction:column;gap:var(--swr-gap);}
.swr-card-cluster-row{display:flex;gap:12px;}
.swr-myfeed-card{flex:1;padding:18px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.02);}
.swr-burn-flame{display:inline-block;margin-left:3px;}


/* ===== v3471 cleanup pass 2 + white screen fail-safe ===== */
.swr-static-subview{display:none;z-index:110;}
.swr-title-sm{font-size:15px !important;}
.swr-info-stack{display:flex !important;flex-direction:column !important;gap:var(--swr-gap) !important;bottom:0 !important;}
.swr-rich-copy{font-size:15px;line-height:1.72;color:var(--swr-text);white-space:pre-wrap;word-break:break-all;}
.swr-rich-copy-title{font-size:17px;line-height:1.5;font-weight:600;color:var(--swr-text);margin:0 0 14px;white-space:pre-wrap;word-break:break-word;}
.swr-rich-copy-body{font-size:15px;line-height:1.72;color:var(--swr-text);white-space:normal;word-break:break-all;}
.swr-rich-editor{min-height:300px;flex:1;line-height:1.65;padding:15px !important;resize:none;}
.swr-form-actions{display:flex;gap:15px;align-items:center;}
.swr-form-actions--stack{flex-direction:column;margin-top:25px;}
.swr-btn-block{width:100%;}
#swr-account-view .swr-scroll-area{
  top: 0 !important;
  bottom: 0 !important;
  padding: calc(var(--swr-title-h, 55px) + 18px) 18px calc(34px + env(safe-area-inset-bottom, 0px)) !important;
}
#swr-account-view .swr-info-stack{
  gap: 14px !important;
}
#swr-account-view .swr-info-card{
  padding: 16px !important;
}
#swr-account-view .swr-account-section-title{
  width: 100%;
  text-align: left;
  font-size: 14px;
  font-weight: 600;
  color: var(--swr-text, #111);
  margin-bottom: 10px;
}
#swr-account-view .swr-account-narrow-control,
#swr-account-view .swr-field-input{
  display: block;
  width: 100% !important;
  margin-left: 0;
  margin-right: 0;
}
#swr-account-view .swr-field-input.is-bordered{
  margin-bottom: 0;
  padding: 14px 16px;
  border-radius: calc(var(--swr-radius, 18px) - 2px) !important;
}
#swr-account-view .swr-field-input.is-bordered + .swr-field-input.is-bordered{
  margin-top: 10px;
}
#swr-account-view .swr-profile-edit-tip{
  margin-top: 10px;
  font-size: 13px;
  line-height: 1.58;
  color: var(--swr-subtext, #6f6f6f);
  text-align: left;
}
#swr-account-view .swr-form-actions--stack{
  gap: 10px;
  margin-top: 14px;
}
#swr-account-view .swr-btn-primary{
  width: 100%;
  min-height: 46px;
  padding: 12px 14px;
  border-radius: calc(var(--swr-radius, 18px) - 2px) !important;
}
#swr-account-view .swr-account-icon-preview{
  margin: 4px auto 12px;
}
#swr-account-view .swr-account-icon-grid{
  margin-top: 14px;
}
.swr-account-icon-preview{
  width:72px;
  height:72px;
  margin:0 auto 14px;
  border-radius:20px;
  background-color:rgba(255,255,255,.72);
  background-size:54%;
  background-repeat:no-repeat;
  background-position:center;
  border:1px solid rgba(255,255,255,.35);
  box-shadow:0 14px 28px rgba(0,0,0,.08);
}
.swr-account-icon-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-top:18px;
}
.swr-account-icon-option{
  appearance:none;
  border:1px solid rgba(255,255,255,.22);
  background:rgba(255,255,255,.26);
  border-radius:16px;
  padding:10px 8px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  cursor:pointer;
  transition:border-color .2s ease, transform .2s ease, background .2s ease, box-shadow .2s ease;
  box-shadow:0 8px 18px rgba(0,0,0,.04);
}
.swr-account-icon-option:active{
  transform:scale(.97);
}
.swr-account-icon-option.is-selected{
  border-color:rgba(16, 82, 66, .38);
  background:rgba(255,255,255,.46);
  box-shadow:0 12px 24px rgba(0,0,0,.08);
}
.swr-account-icon-swatch{
  width:46px;
  height:46px;
  border-radius:14px;
  background-color:rgba(255,255,255,.84);
  background-size:55%;
  background-repeat:no-repeat;
  background-position:center;
  border:1px solid rgba(0,0,0,.05);
}
.swr-account-icon-index{
  font-size:11px;
  line-height:1.2;
  color:var(--swr-subtext);
}
#swr-account-reset-icon-btn,
#swr-account-reset-icon-btn:disabled{
  background:rgba(255,255,255,.72) !important;
  color:var(--swr-text) !important;
  -webkit-text-fill-color: var(--swr-text) !important;
  border:1px solid rgba(255,255,255,.32) !important;
  box-shadow:0 10px 20px rgba(0,0,0,.06);
  opacity:1 !important;
}
.swr-btn-primary--success{background:#07c160 !important;}
.swr-input-send-btn{margin-bottom:5px;}

.swr-addon-subview{z-index:160;}
.swr-head-btn{cursor:pointer;font-weight:500;padding:10px;margin:-10px;display:inline-flex;align-items:center;}
.swr-head-btn--strong{font-weight:600;color:#000;}
.swr-head-title{font-weight:600;font-size:16px;color:#000;}
.swr-head-spacer{width:40px;display:inline-block;}
.swr-editor-title{margin:0 0 15px 0;font-size:20px;font-weight:600;color:#000;}
.swr-editor-title-input{width:100%;border:none;outline:none;font-size:24px;font-weight:600;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.08);margin-bottom:20px;color:#000;background:transparent;}
.swr-editor-textarea{flex:1;width:100%;border:none;outline:none;font-size:16px;line-height:1.65;color:#000;resize:none;padding:0;background:transparent;margin-bottom:10px;}
.swr-form-row{display:flex;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid rgba(0,0,0,.06);gap:12px;}
.swr-form-row--topline{border-top:1px solid rgba(0,0,0,.06);border-bottom:none;}
.swr-form-row--hidden{display:none;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid rgba(0,0,0,.06);gap:12px;}
.swr-form-label{font-size:16px;color:var(--swr-text);}
.swr-form-label--accent,.swr-inline-accent{color:#e53935;}
.swr-form-inline{display:flex;align-items:center;gap:10px;}
.swr-form-select,.swr-form-date{border:none;outline:none;font-size:16px;color:#576b95;background:transparent;text-align:right;text-align-last:right;padding-right:0;}
.swr-form-note{font-size:13px;color:var(--swr-subtext);margin-top:5px;text-align:center;}
.swr-toggle-wrap{position:relative;display:inline-block;width:44px;height:24px;}
.swr-toggle-input{opacity:0;width:0;height:0;}
.swr-editor-danger-wrap{padding:20px 0;text-align:center;margin-top:auto;}
.swr-danger-link{color:#e53935;font-size:15px;cursor:pointer;}
.swr-sheet-form{position:absolute;bottom:0;left:0;width:100%;padding:20px 18px;padding-bottom:calc(20px + env(safe-area-inset-bottom, 0px));}
.swr-sheet-input{width:100%;border:none;border-bottom:1px solid #000;outline:none;font-size:16px;padding:10px 0;margin-bottom:20px;background:transparent;}
.swr-solid-action{flex:1;padding:12px;border-radius:12px;font-size:15px;cursor:pointer;background:rgba(0,0,0,var(--swr-dark-btn-alpha, 0.50));color:var(--swr-dark-btn-text, #fff);}
.swr-solid-action.is-muted{border:1px solid rgba(0,0,0,.14);background:rgba(255,255,255,.65);color:#333;}
.swr-solid-action.is-strong{border:none;background:rgba(0,0,0,var(--swr-dark-btn-alpha, 0.50));color:var(--swr-dark-btn-text, #fff);}

.sf-drawer-panel{position:fixed;top:0;right:0;width:80%;max-width:320px;height:100%;display:flex;flex-direction:column;z-index:190;transform:translateX(105%);transition:transform .3s cubic-bezier(.4,0,.2,1);}
.sf-drawer-head{padding:40px 20px 20px;border-bottom:1px solid rgba(0,0,0,.06);font-size:18px;color:#000;display:flex;justify-content:space-between;align-items:center;}
.sf-drawer-close{font-size:24px;cursor:pointer;line-height:1;}
.sf-drawer-body{flex:1;overflow-y:auto;padding:0;}
.sf-drawer-foot{padding:15px;text-align:center;font-size:13px;color:#888;border-top:1px solid rgba(0,0,0,.06);cursor:pointer;}
.sf-modal-overlay--top{z-index:200 !important;}
.sf-action-sheet-shell{position:fixed;bottom:0;left:0;width:100%;z-index:210;transform:translateY(100%);transition:transform .25s cubic-bezier(.4,0,.2,1);border-top-left-radius:var(--swr-radius);border-top-right-radius:var(--swr-radius);overflow:hidden;background:rgba(255,255,255,.18);backdrop-filter:blur(var(--swr-blur)) saturate(var(--swr-sat));-webkit-backdrop-filter:blur(var(--swr-blur)) saturate(var(--swr-sat));}
.sf-action-list-shell{background:rgba(255,255,255,.72);margin-bottom:8px;}
.sf-action-cancel{background:rgba(255,255,255,.88);padding:16px;text-align:center;font-size:16px;color:#000;cursor:pointer;}
.sf-load-more{width:100%;text-align:center !important;padding:20px;font-size:13px !important;color:#888 !important;cursor:pointer;display:flex !important;justify-content:center !important;align-items:center !important;}
.sf-bottom-input-shell{flex-direction:column;padding:0;}
.swr-input-wrapper--full{width:100%;}
.sf-readonly-shell{justify-content:center;align-items:center;background:rgba(255,255,255,.4);color:#888;font-size:14px;min-height:60px;}
.sf-editor-shell{position:absolute;top:55px;left:0;right:0;bottom:0;padding:20px 18px;display:flex;flex-direction:column;}
.sf-edit-cat-box{position:relative;z-index:50;}
.sf-editor-title-input{width:100%;font-size:18px;font-weight:normal;border:none;border-bottom:1px solid rgba(0,0,0,.08);padding:10px 0;margin-bottom:15px;outline:none;color:#000;background:transparent;}
.sf-editor-textarea{flex:1;width:100%;font-size:15px;line-height:1.6;border:none;outline:none;color:#333;resize:none;background:transparent;padding:0;}

/* prevent accidental blank shell if a cached view state hides the app */
#swr-container, #swr-main-app{visibility:visible;}


/* ===== v3473 discover grid + bottom nav rescue ===== */
#tab-discover,
#tab-msg,
#tab-feed,
#tab-forum,
#tab-me{
  padding-bottom: calc(102px + env(safe-area-inset-bottom, 0px)) !important;
  box-sizing: border-box !important;
}
.swr-discover-scroll{
  padding-left: var(--swr-page-pad-x, 14px) !important;
  padding-right: var(--swr-page-pad-x, 14px) !important;
  padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px)) !important;
  box-sizing: border-box !important;
}
.swr-app-grid{
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  column-gap: 14px !important;
  row-gap: 26px !important;
  align-items: start !important;
}
.swr-app-item{
  width: 100% !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  text-align: center !important;
  gap: 10px !important;
}
.swr-app-icon{
  margin: 0 auto !important;
  flex: 0 0 auto !important;
}
.swr-app-item > div:last-child,
.swr-app-item > span:last-child,
.swr-app-item .swr-app-name{
  width: 100% !important;
  min-height: 2.7em !important;
  line-height: 1.35 !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  text-align: center !important;
  word-break: break-word !important;
}
.swr-bottom-nav{
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  z-index: 10020 !important;
  bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
}
#swr-main-app{
  padding-bottom: calc(108px + env(safe-area-inset-bottom, 0px)) !important;
}


/* ===== v3474 discover root-cause fix ===== */
/* Root cause 1: #swr-main-app had transform/animation + overflow:hidden.
   On mobile browsers, fixed bottom nav inside a transformed ancestor can be clipped or disappear. */
#swr-main-app{
  transform: none !important;
  animation: none !important;
  overflow: visible !important;
  padding-bottom: 0 !important;
}

/* Keep bottom nav attached to viewport and above all content */
.swr-bottom-nav{
  position: fixed !important;
  display: flex !important;
  left: var(--swr-bottom-nav-inset, 12px) !important;
  right: var(--swr-bottom-nav-inset, 12px) !important;
  bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 2147483000 !important;
}

/* Content tabs should reserve space for the dock; do not rely on #swr-main-app padding */
.swr-tab-content{
  padding-bottom: calc(98px + env(safe-area-inset-bottom, 0px)) !important;
  box-sizing: border-box !important;
}

/* Root cause 2: discover AI items reused .swr-chat-entry semantics, and name rows still inherited old nowrap rhythm. */
.swr-app-grid{
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  column-gap: 14px !important;
  row-gap: 24px !important;
  align-items: start !important;
}
.swr-app-item{
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  text-align: center !important;
  min-width: 0 !important;
  min-height: 108px !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
.swr-app-icon{
  width: 48px !important;
  height: 48px !important;
  margin: 0 auto 8px !important;
  flex: 0 0 48px !important;
}
.swr-app-name{
  width: 100% !important;
  min-height: 32px !important;
  line-height: 16px !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  text-align: center !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  word-break: break-word !important;
}

/* Discover scroller reserves visible space above nav */
.swr-discover-scroll{
  padding-bottom: calc(120px + env(safe-area-inset-bottom, 0px)) !important;
}


/* v3475 emergency discover/nav root fix */
#swr-main-app{
  transform: none !important;
  transform-style: flat !important;
  animation: none !important;
  overflow: visible !important;
}
.swr-tab-content{
  overflow: visible !important;
}
#tab-discover .swr-scroll-area,
.swr-discover-scroll{
  top: 0 !important;
  bottom: calc(88px + env(safe-area-inset-bottom, 0px)) !important;
  padding-top: 16px !important;
}
.swr-bottom-nav{
  position: fixed !important;
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  z-index: 2147483000 !important;
}

/* ===== v3476 discover top blank hard fix ===== */
/* Discover has no top bar. Do not let it inherit the generic scroll-area top offset
   or any leftover stage spacing from previous rescue patches. */
#tab-discover{
  padding-top: 0 !important;
  overflow: hidden !important;
}
#tab-discover::before,
#tab-discover::after{
  content: none !important;
  display: none !important;
}
#tab-discover > .swr-scroll-area.swr-discover-scroll{
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: calc(88px + env(safe-area-inset-bottom, 0px)) !important;
  display: block !important;
  margin: 0 !important;
  padding-left: var(--swr-page-pad-x, 14px) !important;
  padding-right: var(--swr-page-pad-x, 14px) !important;
  padding-top: 0 !important;
  padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px)) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  box-sizing: border-box !important;
}
#tab-discover > .swr-scroll-area.swr-discover-scroll > *:first-child,
#discover-ai-grid{
  margin-top: 0 !important;
  padding-top: 0 !important;
}
#discover-addon-grid{
  margin-top: 18px !important;
}
#tab-discover .swr-app-grid{
  align-content: start !important;
}
#tab-discover .swr-app-item{
  margin-top: 0 !important;
}


/* ===== v3477 discover top blank source-backed fix ===== */
#tab-discover,
#tab-discover.active{
  position:absolute !important;
  inset:0 !important;
  padding:0 !important;
  margin:0 !important;
  overflow:hidden !important;
}
#tab-discover > .swr-scroll-area.swr-discover-scroll{
  position:absolute !important;
  inset:0 0 calc(88px + env(safe-area-inset-bottom, 0px)) 0 !important;
  top:0 !important;
  margin:0 !important;
  padding:0 var(--swr-page-pad-x, 12px) calc(112px + env(safe-area-inset-bottom, 0px)) var(--swr-page-pad-x, 12px) !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:flex-start !important;
  align-items:stretch !important;
  align-content:flex-start !important;
  transform:none !important;
}
#tab-discover > .swr-scroll-area.swr-discover-scroll::before,
#tab-discover > .swr-scroll-area.swr-discover-scroll::after,
#tab-discover::before,
#tab-discover::after{
  content:none !important;
  display:none !important;
}
#discover-ai-grid,
#tab-discover > .swr-scroll-area.swr-discover-scroll > *:first-child{
  margin-top:0 !important;
  padding-top:0 !important;
}


/* ===== v3479 discover shell + me topbar unify ===== */
#tab-discover,
#tab-discover.active{
  position:absolute !important;
  inset:0 !important;
  padding:0 !important;
  margin:0 !important;
  overflow:hidden !important;
}
#tab-discover > .swr-discover-shell{
  position:absolute !important;
  top:0 !important;
  left:0 !important;
  right:0 !important;
  bottom:calc(88px + env(safe-area-inset-bottom, 0px)) !important;
  margin:0 !important;
  padding:12px var(--swr-page-pad-x, 12px) calc(112px + env(safe-area-inset-bottom, 0px)) var(--swr-page-pad-x, 12px) !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  box-sizing:border-box !important;
  display:block !important;
  transform:none !important;
}
#tab-discover > .swr-discover-shell::before,
#tab-discover > .swr-discover-shell::after,
#tab-discover::before,
#tab-discover::after{
  content:none !important;
  display:none !important;
}
#discover-ai-grid{
  margin-top:0 !important;
  padding-top:0 !important;
}
#discover-addon-grid{
  margin-top:18px !important;
  padding-top:0 !important;
}
#tab-discover .swr-app-grid{
  align-content:start !important;
}
#tab-discover .swr-app-item{
  margin-top:0 !important;
}
#tab-me .swr-me-topbar{
  justify-content:space-between !important;
}
#tab-me .swr-me-topbar .swr-title{
  flex:0 1 auto;
  text-align:center;
}
#tab-me .swr-me-topbar .swr-head-spacer{
  width:40px;
  flex:0 0 40px;
}


/* ===== v3480 discover no-topbar + me left topbar + remove all green underlines ===== */
#tab-discover,
#tab-discover.active{
  position:absolute !important;
  inset:0 !important;
  padding:0 !important;
  margin:0 !important;
  overflow:hidden !important;
}
#tab-discover > .swr-discover-shell,
#tab-discover > .swr-scroll-area.swr-discover-scroll,
#tab-discover > .swr-no-topbar-view{
  position:absolute !important;
  top:0 !important;
  left:0 !important;
  right:0 !important;
  bottom:calc(88px + env(safe-area-inset-bottom, 0px)) !important;
  margin:0 !important;
  padding:0 var(--swr-page-pad-x, 12px) calc(112px + env(safe-area-inset-bottom, 0px)) var(--swr-page-pad-x, 12px) !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  box-sizing:border-box !important;
  display:block !important;
  transform:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  border:none !important;
}
#tab-discover > .swr-discover-shell::before,
#tab-discover > .swr-discover-shell::after,
#tab-discover > .swr-scroll-area.swr-discover-scroll::before,
#tab-discover > .swr-scroll-area.swr-discover-scroll::after,
#tab-discover::before,
#tab-discover::after{
  content:none !important;
  display:none !important;
}
#discover-ai-grid,
#tab-discover .swr-app-grid:first-child,
#tab-discover > .swr-discover-shell > *:first-child,
#tab-discover > .swr-scroll-area.swr-discover-scroll > *:first-child{
  margin-top:0 !important;
  padding-top:0 !important;
}
#discover-addon-grid{
  margin-top:18px !important;
  padding-top:0 !important;
}
#tab-me .swr-me-topbar{
  justify-content:flex-start !important;
  padding-left:var(--swr-header-pad-x, 18px) !important;
  padding-right:var(--swr-header-pad-x, 18px) !important;
}
#tab-me .swr-me-topbar .swr-msg-tabs.swr-me-tabs{
  display:flex !important;
  gap:20px !important;
  height:100% !important;
  align-items:center !important;
  justify-content:flex-start !important;
  flex:1 1 auto !important;
}
#tab-me .swr-me-topbar .swr-msg-actions{
  width:40px !important;
  flex:0 0 40px !important;
  opacity:0 !important;
  pointer-events:none !important;
}
#tab-me .swr-me-topbar .swr-me-tab-label,
#tab-me .swr-me-topbar .swr-title{
  text-align:left !important;
  justify-content:flex-start !important;
  margin:0 !important;
}
/* remove all active underline bars globally without shifting text position */
.swr-msg-tab.active::after,
.swr-msg-tab.is-active::after,
.sf-sort-tab.active::after,
.swr-feed-switch.active::after,
#tab-me .swr-me-topbar .swr-me-tab-label::after,
#tab-msg .swr-msg-tab.active::after,
#tab-feed .swr-msg-tab.active::after,
#tab-forum .swr-msg-tab.active::after{
  content:none !important;
  display:none !important;
  width:0 !important;
  height:0 !important;
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
}


/* ===== v3481 global top-gap fix + discover restore + unified icon-bg alpha ===== */
/* Root cause: rebuilt shell introduced conflicting top-stage rules. Normalize all page roots to true top:0, then restore Discover to the stable pre-rebuild layout rhythm. */
#swr-container,
#swr-main-app,
.swr-tab-content,
.swr-tab-content.active,
.swr-swipeable-view{
  top:0 !important;
  left:0 !important;
  right:0 !important;
  margin-top:0 !important;
  padding-top:0 !important;
}
#swr-main-app{
  position:absolute !important;
  inset:0 !important;
  height:auto !important;
  transform:none !important;
  animation:none !important;
}
.swr-header,
.swr-msg-header,
.swr-top-bar,
.swr-page-topbar,
.swr-unified-topbar,
.sf-forum-header,
#tab-me .swr-me-topbar{
  top:0 !important;
  margin-top:0 !important;
  transform:none !important;
}
#tab-msg,
#tab-feed,
#tab-forum,
#tab-me,
#tab-discover{
  position:absolute !important;
  inset:0 !important;
  margin:0 !important;
}

/* Discover: use the stable pre-rebuild shell contract (no artificial top stage, but keep tasteful breathing room). */
#tab-discover > .swr-scroll-area.swr-discover-scroll,
#tab-discover > .swr-discover-shell,
#tab-discover > .swr-no-topbar-view{
  position:absolute !important;
  top:0 !important;
  left:0 !important;
  right:0 !important;
  bottom:calc(88px + env(safe-area-inset-bottom, 0px)) !important;
  margin:0 !important;
  padding:25px 15px calc(112px + env(safe-area-inset-bottom, 0px)) 15px !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  box-sizing:border-box !important;
  display:block !important;
  background:transparent !important;
  border:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}
#tab-discover > .swr-scroll-area.swr-discover-scroll::before,
#tab-discover > .swr-scroll-area.swr-discover-scroll::after,
#tab-discover > .swr-discover-shell::before,
#tab-discover > .swr-discover-shell::after,
#tab-discover::before,
#tab-discover::after{
  content:none !important;
  display:none !important;
}
#discover-ai-grid,
#tab-discover .swr-app-grid:first-child,
#tab-discover > .swr-scroll-area.swr-discover-scroll > *:first-child,
#tab-discover > .swr-discover-shell > *:first-child{
  margin-top:0 !important;
  padding-top:0 !important;
}
#discover-addon-grid,
.swr-addon-grid-gap{
  margin-top:calc(var(--swr-gap) - 5px) !important;
  padding-top:0 !important;
}

/* Discover icon rhythm */
#tab-discover .swr-app-grid{
  row-gap:calc(var(--swr-gap) - 5px) !important;
  column-gap:14px !important;
}
#tab-discover .swr-app-item{
  min-height:96px !important;
  gap:4px !important;
}
#tab-discover .swr-app-icon{
  margin:0 auto 5px !important;
}
#tab-discover .swr-app-name{
  min-height:28px !important;
  line-height:1.25 !important;
}

/* One alpha control for all white icon/avatar/category-pill chips. */
#swr-container .swr-app-icon,
#swr-container .swr-avatar,
#swr-container #me-avatar,
#swr-container #profile-avatar,
#swr-container .sf-avatar,
#swr-container .sf-topic-avatar,
#swr-container .sf-post-avatar,
#swr-container .swr-chat-avatar{
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}
#swr-container .sf-cat-badge,
#swr-container .sf-op-badge,
#swr-container .swr-cd-badge,
#swr-container .swr-qa-ai-badge,
#swr-container .swr-top-action-bubble,
#swr-container .swr-group-tag{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
}


/* ===== v3482 neutral background + unified avatar/icon ratio + hidden feed chrome fix ===== */
/* 1) Neutralize fog overlay so B/W background stays neutral, not purple/blue. */
#swr-container::after{
  background:
    radial-gradient(1200px 760px at 50% 0%, rgba(255,255,255,.08), transparent 62%),
    radial-gradient(980px 720px at 50% 100%, rgba(255,255,255,.06), transparent 62%),
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.02)) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* 2) All avatar/icon glyphs inside white chips use the forum-detail proportion. */
#swr-container .swr-avatar,
#swr-container #me-avatar,
#swr-container #profile-avatar,
#swr-container .swr-chat-avatar,
#swr-container .sf-avatar,
#swr-container .sf-topic-avatar,
#swr-container .sf-post-avatar,
#swr-container .sf-dt-meta-avatar,
#swr-container .sf-dt-avatar,
#swr-container .swr-group-avatar{
  background-size: 46% !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
}

/* 3) "鎴戠殑"椤靛ご鍍忎笌鏄电О淇銆?*/
#me-avatar{
  background-size: 46% !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
}
#me-nickname{
  font-weight: 400 !important;
  font-family: inherit !important;
}

/* 4) Global topbar action bubbles should stay consistent across pages. */
.sf-forum-header .sf-icon-btn,
.swr-msg-actions .sf-icon-btn,
.swr-header .swr-menu-btn-lite,
.sf-subpage-header .swr-icon-btn{
  width: var(--swr-top-action-size, 34px) !important;
  height: var(--swr-top-action-size, 34px) !important;
  min-width: var(--swr-top-action-size, 34px) !important;
  flex: 0 0 var(--swr-top-action-size, 34px) !important;
  border-radius: 12px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.sf-forum-header .sf-icon-btn,
.swr-msg-actions .sf-icon-btn{
  width: var(--swr-top-action-size, 34px) !important;
  height: var(--swr-top-action-size, 34px) !important;
  border-radius: 12px !important;
}

/* 5) Feed first-entry chrome should be hidden initially; white filter frame gets radius. */
.swr-ptr-indicator.swr-hidden,
.swr-filter-notice.swr-hidden,
#scribe-ptr-indicator.swr-hidden,
#scribe-filter-notice.swr-hidden{
  display: none !important;
}
#tab-feed #scribe-filter-notice,
#scribe-filter-notice{
  border-radius: 10px !important;
}

/* 6) White send/action bubble slightly smaller; glyph size unchanged. */
.swr-circle-arrow-btn{
  width: 29px !important;
  height: 29px !important;
  min-width: 29px !important;
}

/* 7) Keep all white-chip alphas on one variable, including topbar icon bubbles. */
#swr-container .swr-app-icon,
#swr-container .swr-avatar,
#swr-container #me-avatar,
#swr-container #profile-avatar,
#swr-container .sf-avatar,
#swr-container .sf-topic-avatar,
#swr-container .sf-post-avatar,
#swr-container .swr-chat-avatar{
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}
#swr-container .sf-cat-badge,
#swr-container .sf-op-badge,
#swr-container .swr-cd-badge,
#swr-container .swr-qa-ai-badge,
#swr-container .swr-top-action-bubble,
#swr-container .swr-group-tag,
#swr-container .sf-forum-header .sf-icon-btn,
#swr-container .swr-msg-actions .sf-icon-btn,
#swr-container .swr-header .swr-menu-btn-lite,
#swr-container .sf-subpage-header .swr-icon-btn{
  background: var(--swr-top-action-bg) !important;
  border: 1px solid rgba(255,255,255,var(--swr-top-action-border-a, .32)) !important;
  box-shadow: 0 10px 28px rgba(0,0,0,.08) !important;
  backdrop-filter: var(--swr-top-action-backdrop) !important;
  -webkit-backdrop-filter: var(--swr-top-action-backdrop) !important;
}


/* ===== v3483 background-position + unified card-gap + feed chip refinements ===== */
/* 1) Background image: move the source image upward so its first arc stays behind the top bars,
   instead of cutting across the content gap on every page. */
#swr-container::before{
  inset: -20px !important;
  transform: none !important;
  background-size: cover !important;
  background-position: center center !important;
  filter: blur(var(--swr-fog-blur)) !important;
}

/* 2) One backend number for vertical spacing between top bars and cards, and between cards. */
#msg-chats,
#msg-contacts,
#scribe-scroll-area,
#sf-list-scroll,
#tab-me > .swr-scroll-area,
#tab-me .swr-view-scroller,
#myfeed-scroll-area,
#myfavs-feed-scroll-area,
#myfavs-forum-scroll-area,
#sf-detail-scroll,
#sf-user-scroll{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}

#msg-chats > .swr-chat-entry-wrap,
#msg-contacts > .swr-contact-entry,
#scribe-publish-box,
#scribe-posts > .scribe-post,
#sf-list-scroll > .sf-post-card,
#tab-me .swr-panel,
#tab-me .swr-me-item,
#tab-me .swr-static-subview,
#myfeed-feed-list > .scribe-post,
#myfavs-feed-list > .scribe-post,
#myfavs-forum-list > .sf-post-card,
#sf-detail-container .sf-dt-body-card,
#sf-detail-container .sf-cmt-item,
#sf-user-list > .sf-post-card{
  margin-bottom: var(--swr-gap) !important;
}

#tab-me .swr-panel:first-child,
#tab-me .swr-me-item:first-child,
#myfeed-feed-list > .scribe-post:first-child,
#myfavs-feed-list > .scribe-post:first-child,
#myfavs-forum-list > .sf-post-card:first-child,
#sf-list-scroll > .sf-post-card:first-child,
#sf-user-list > .sf-post-card:first-child,
#msg-chats > .swr-chat-entry-wrap:first-child,
#msg-contacts > .swr-contact-entry:first-child{
  margin-top: 0 !important;
}

/* Discover keeps its own airy rhythm, but let the first row breathe with a smaller consistent top space. */
#tab-discover > .swr-scroll-area.swr-discover-scroll,
#tab-discover > .swr-discover-shell,
#tab-discover > .swr-no-topbar-view{
  padding-top: var(--swr-gap) !important;
}

/* 3) Feed inline comment box: slight radius and same white-chip alpha as avatars/icons. */
.scribe-comments-area{
  border-radius: 8px !important;
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}
.scribe-likes-area{
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}

/* 4) Feed white action button: slightly tighter so the ellipsis chip reads lighter. */
.scribe-action-toggle{
  padding: 2.7px 8.1px !important;
  border-radius: 8px !important;
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}

/* 5) Keep forum/detail/header white chips on the same icon-bg alpha, including menu bubbles. */
#swr-container .scribe-comments-area,
#swr-container .scribe-likes-area,
#swr-container .scribe-action-toggle,
#swr-container .sf-cat-badge,
#swr-container .sf-op-badge,
#swr-container .swr-top-action-bubble,
#swr-container .swr-group-tag{
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}


/* ===== v3484 top-aligned background + fully unified vertical card gap ===== */
/* 1) Background image must sit flush to the top edge of the screen. */
#swr-container::before{
  inset: -20px !important;
  transform: none !important;
  background-size: cover !important;
  background-position: center center !important;
}

/* 2) One backend number controls first-card distance and card-to-card distance across major pages. */
#tab-me > .swr-scroll-area,
#tab-msg > .swr-scroll-area,
#tab-feed > .swr-scroll-area,
#sf-list-scroll,
#sf-user-scroll,
#sf-detail-scroll,
#myfeed-scroll-area,
#myfavs-feed-scroll-area,
#myfavs-forum-scroll-area{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}

/* stack containers that were still using hard-coded gap values */
#tab-me > .swr-scroll-area,
#tab-me .swr-menu-stack,
#tab-me .swr-settings-stack,
#profile-system-menu,
#msg-chats .swr-item-list,
#msg-contacts .swr-item-list,
#swr-msg-list,
#swr-contact-list,
#scribe-posts,
#myfeed-feed-list,
#myfavs-feed-list,
#myfavs-forum-list,
#sf-post-list,
#sf-user-list{
  display: flex !important;
  flex-direction: column !important;
  gap: var(--swr-gap) !important;
}

/* once the parent stack owns the gap, children should not carry their own vertical spacing */
#tab-me .swr-panel,
#tab-me .swr-me-item,
#tab-me .swr-static-subview,
#profile-system-menu > .swr-me-item,
#msg-chats > .swr-chat-entry-wrap,
#msg-contacts > .swr-contact-entry,
#tab-msg .swr-item-list > li.swr-chat-entry-wrap,
#msg-contacts .swr-item-list > li.swr-chat-entry-wrap,
#swr-msg-list > li.swr-chat-entry-wrap,
#swr-contact-list > li.swr-chat-entry-wrap,
#scribe-publish-box,
#scribe-posts > .scribe-post,
#scribe-feed-list > .scribe-post,
#myfeed-feed-list > .scribe-post,
#myfavs-feed-list > .scribe-post,
#sf-list-scroll > .sf-post-card,
#sf-post-list > .sf-post-card,
#myfavs-forum-list > .sf-post-card,
#sf-user-list > .sf-post-card,
#sf-detail-container > .sf-dt-title-card,
#sf-detail-container > .sf-dt-body-card,
#sf-detail-container .sf-cmt-item,
#tab-feed .scribe-publish-box{
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* the first visible card under each topbar should also follow the same top padding, without extra offsets */
#tab-me > .swr-scroll-area > *:first-child,
#tab-msg > .swr-scroll-area > *:first-child,
#tab-feed > .swr-scroll-area > *:first-child,
#sf-list-scroll > *:first-child,
#myfeed-scroll-area > *:first-child,
#myfavs-feed-scroll-area > *:first-child,
#myfavs-forum-scroll-area > *:first-child{
  margin-top: 0 !important;
}


/* ===== v3485 fog + gap + forum detail + feed labels/title stability ===== */
/* 1) Restore thin fog so backend alpha works again, but keep it neutral B/W. */
#swr-container::after{
  background:
    radial-gradient(1200px 760px at 50% 0%, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 1.05)), transparent 62%),
    radial-gradient(980px 720px at 50% 100%, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 0.78)), transparent 62%),
    linear-gradient(180deg, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 0.55)), rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 0.22))) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* 2) One real vertical gap controller for all topbar-to-first-card and card-to-card gaps. */
#tab-msg > .swr-scroll-area,
#tab-feed > .swr-scroll-area,
#tab-me > .swr-scroll-area,
#sf-list-scroll,
#sf-user-scroll,
#sf-detail-scroll,
#myfeed-scroll-area,
#myfavs-feed-scroll-area,
#myfavs-forum-scroll-area{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}
#swr-msg-list,
#swr-contact-list,
#scribe-feed-list,
#myfeed-feed-list,
#myfavs-feed-list,
#myfavs-forum-list,
#sf-post-list,
#sf-user-list,
#sf-detail-container,
#tab-me .swr-menu-stack,
#tab-me .swr-view-scroller{
  display:flex !important;
  flex-direction:column !important;
  gap: var(--swr-gap) !important;
}
#tab-me .swr-card-shell,
#tab-me .swr-me-item,
#swr-msg-list > *,
#swr-contact-list > *,
#scribe-feed-list > .scribe-post,
#tab-feed .scribe-publish-box,
#myfeed-feed-list > .scribe-post,
#myfavs-feed-list > .scribe-post,
#myfavs-forum-list > .sf-post-card,
#sf-post-list > .sf-post-card,
#sf-user-list > .sf-post-card,
#sf-detail-container > .sf-dt-title-card,
#sf-detail-container > .sf-dt-body-card,
#sf-detail-container .sf-comments-sec,
#sf-detail-container .sf-cmt-item{
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
#tab-feed .scribe-publish-box{ margin-bottom:0 !important; }
#tab-feed #scribe-feed-list,
#tab-msg #swr-msg-list,
#tab-msg #swr-contact-list,
#tab-me .swr-menu-stack,
#sf-post-list,
#sf-user-list,
#sf-detail-container{
  padding-top:0 !important;
  padding-bottom:0 !important;
}

/* Forum detail readonly bar: keep visible, glass params from inline CSS */
#sf-detail-scroll .sf-dt-title-card{
  margin-top: 0 !important;
}

/* 4) Like area should look like姝ｆ枃, not a white strip. */
.scribe-likes-area{
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin-top: 10px !important;
  border-radius: 0 !important;
}
.scribe-likes-area .scribe-likes-icon{ opacity:.55 !important; }

/* 5) Title/tab labels keep one size, no selected animation or size jump. */
.swr-msg-tab,
.swr-feed-switch,
.sf-sort-tab,
#tab-me .swr-me-tab-label,
.swr-title,
.swr-title-sm{
  font-size: var(--swr-title-size) !important;
  transition: none !important;
  animation: none !important;
  transform: none !important;
}
.swr-msg-tab.active,
.swr-msg-tab.is-active,
.swr-feed-switch.active,
.sf-sort-tab.active,
#tab-me .swr-me-tab-label.active,
#tab-me .swr-me-tab-label{
  font-size: var(--swr-title-size) !important;
  font-weight: 400 !important;
  transform: none !important;
  transition: none !important;
}

/* 6) Remove the remaining active underline globally without moving text. */
.swr-msg-tab::after,
.swr-feed-switch::after,
.sf-sort-tab::after,
#tab-me .swr-me-tab-label::after{
  display:none !important;
  content:none !important;
}

/* 7) Feed comment chip and more button use icon/avatar alpha, with lighter geometry. */
.scribe-comments-area,
.scribe-action-toggle{
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}
.scribe-comments-area{
  border-radius: 8px !important;
}
.scribe-action-toggle{
  transform: scale(.77) !important;
  transform-origin: center !important;
}


/* ===== v3486 final fog + robust gap + forum detail readonly dock + feed chips ===== */
/* 1) Neutral fog must actually respond to backend alpha again. */
#swr-container::after{
  background:
    radial-gradient(1200px 760px at 50% 0%, rgba(255,255,255,0.22), transparent 62%),
    radial-gradient(980px 720px at 50% 100%, rgba(255,255,255,0.16), transparent 62%),
    linear-gradient(180deg, rgba(255,255,255,0.12), rgba(255,255,255,0.04)) !important;
  opacity: clamp(0, calc(var(--swr-stage-fog-alpha, .10) * 3.2), 1) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* 2) One true backend gap controller for topbar-to-first-card and card-to-card spacing. */
#msg-chats,
#msg-contacts,
#scribe-scroll-area,
#sf-list-scroll,
#sf-user-scroll,
#sf-detail-scroll,
#myfeed-scroll-area,
#myfavs-feed-scroll-area,
#myfavs-forum-scroll-area,
#tab-me > .swr-scroll-area{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}

/* gap 已在父容器上统一设置，子元素不再需要 margin 间距 */
#swr-msg-list > *,
#swr-contact-list > *,
#scribe-feed-list > *,
#myfeed-feed-list > *,
#myfavs-feed-list > *,
#myfavs-forum-list > *,
#sf-post-list > *,
#sf-user-list > *,
#sf-detail-container > *,
#sf-cmt-list > *,
#tab-me > .swr-scroll-area > *{
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* The feed composer is a card too; first post below it should follow the same gap. */
#tab-feed #scribe-publish-box{ margin-top: 0 !important; margin-bottom: 0 !important; }
#tab-feed #scribe-filter-notice,
#tab-feed #scribe-ptr-indicator,
#tab-feed #scribe-load-more,
#tab-feed #scribe-no-more{ margin-top: 0 !important; }

/* 3) Forum readonly banner must dock at the bottom, not overlay the title area. */
#sf-view-detail #sf-readonly-area{
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  z-index: 4 !important;
  display: none;
}
#sf-view-detail #sf-input-area{
  z-index: 4 !important;
}
#sf-view-detail #sf-detail-scroll{
  padding-bottom: calc(104px + env(safe-area-inset-bottom,0px)) !important;
}

/* 4) Likes area should be text-only like the body, not a separate white chip. */
#scribe-feed-list .scribe-likes-area,
#myfeed-feed-list .scribe-likes-area,
#myfavs-feed-list .scribe-likes-area{
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin-top: 10px !important;
  border-radius: 0 !important;
}

/* 5) Comment chips and more button still use the unified icon/avatar alpha. */
#scribe-feed-list .scribe-comments-area,
#myfeed-feed-list .scribe-comments-area,
#myfavs-feed-list .scribe-comments-area,
#scribe-feed-list .scribe-action-toggle,
#myfeed-feed-list .scribe-action-toggle,
#myfavs-feed-list .scribe-action-toggle{
  background-color: rgba(255,255,255,var(--swr-icon-bg-a)) !important;
}
#scribe-feed-list .scribe-comments-area,
#myfeed-feed-list .scribe-comments-area,
#myfavs-feed-list .scribe-comments-area{
  border-radius: 8px !important;
  margin-top: 4px !important;
}
#scribe-feed-list .scribe-action-toggle,
#myfeed-feed-list .scribe-action-toggle,
#myfavs-feed-list .scribe-action-toggle{
  transform: scale(.77) !important;
  transform-origin: center !important;
}

/* 6) Title-bar labels everywhere: same size, no active jump, no motion. */
.swr-msg-tab,
.swr-feed-switch,
.sf-sort-tab,
#tab-me .swr-me-tab-label,
.swr-title,
.swr-title-sm{
  font-size: var(--swr-title-size) !important;
  line-height: 1 !important;
  transition: none !important;
  animation: none !important;
  transform: none !important;
}
.swr-msg-tab.active,
.swr-msg-tab.is-active,
.swr-feed-switch.active,
.sf-sort-tab.active,
#tab-me .swr-me-tab-label.active,
#tab-me .swr-me-tab-label{
  font-size: var(--swr-title-size) !important;
  font-weight: 400 !important;
  transition: none !important;
  animation: none !important;
  transform: none !important;
}

/* ===== v3487 hotfix: top dark band + message list gap unified ===== */
/* 1) The background image stays top-aligned, but the top band must not appear as a hard dark strip.
   Lift the image slightly and brighten it a touch, while restoring a neutral top fog wash. */
#swr-container::before{
  background-position: center center !important;
  background-size: cover !important;
  filter: blur(var(--swr-fog-blur)) !important;
}
#swr-container::after{
  background:
    radial-gradient(1400px 420px at 50% -80px, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 2.8)), transparent 70%),
    radial-gradient(1200px 760px at 50% 0%, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 1.35)), transparent 62%),
    radial-gradient(980px 720px at 50% 100%, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 0.82)), transparent 62%),
    linear-gradient(180deg, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 0.72)), rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 0.22))) !important;
  opacity: 1 !important;
}

/* 2) Message list spacing must follow the backend card gap number, not the old fixed row-gap. */
:root{
  --swr-row-gap: var(--swr-gap);
}
#msg-chats,
#msg-contacts,
#msg-chats.swr-msg-scroll,
#msg-contacts.swr-msg-scroll,
#tab-msg > .swr-scroll-area{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}
#tab-msg .swr-item-list,
#msg-chats .swr-item-list,
#msg-contacts .swr-item-list,
#swr-msg-list,
#swr-contact-list,
#swr-msg-list.swr-card-stack,
#swr-contact-list.swr-card-stack{
  gap: var(--swr-gap) !important;
  row-gap: var(--swr-gap) !important;
}
#tab-msg .swr-item-list > li,
#msg-chats .swr-chat-entry-wrap,
#msg-contacts .swr-chat-entry-wrap,
#swr-msg-list > li,
#swr-contact-list > li,
#swr-msg-list > .swr-chat-card-host,
#swr-contact-list > .swr-chat-card-host,
#swr-msg-list > * ,
#swr-contact-list > *{
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
#swr-msg-list > * + *,
#swr-contact-list > * + *,
#tab-msg .swr-item-list > * + *{
  margin-top: var(--swr-gap) !important;
}

/* v3488 chat input shell refresh */
#swr-chat-view .swr-input-area{background:transparent !important;border-top:0 !important;box-shadow:none !important;}
#swr-chat-view .swr-input-wrapper{background:linear-gradient(180deg, rgba(255,255,255,var(--swr-glass-a1,.40)), rgba(255,255,255,var(--swr-glass-a2,.173))) !important;border:1px solid var(--swr-border, rgba(255,255,255,.288)) !important;border-radius:28px !important;padding:8px !important;box-shadow:var(--swr-shadow-soft) !important;backdrop-filter:blur(var(--swr-blur,20px)) saturate(var(--swr-sat,185%)) !important;-webkit-backdrop-filter:blur(var(--swr-blur,20px)) saturate(var(--swr-sat,185%)) !important;}
#swr-chat-view .swr-input-flex-box{background:rgba(255,255,255,var(--swr-icon-bg-a,.72)) !important;border-radius:999px !important;min-height:46px !important;padding:0 54px 0 18px !important;}
#swr-chat-view #swr-msg-input{background:transparent !important;padding:11px 0 !important;}
#swr-chat-view #swr-send-btn.swr-circle-arrow-btn{background:rgba(0,0,0,var(--swr-icon-bg-a,.72)) !important;right:14px !important;top:50% !important;bottom:auto !important;transform:translateY(-50%) !important;width:44px !important;height:44px !important;min-width:44px !important;}
#swr-chat-view #swr-send-btn svg{stroke:#fff !important;width:20px !important;height:20px !important;}

/* v3489 targeted hotfix: remove top dark band + make message card spacing truly controlled by --swr-gap */
#swr-container::before{
  background-position: center center !important;
  background-size:cover !important;
  filter: blur(var(--swr-fog-blur)) !important;
}
#swr-container::after{
  background:
    linear-gradient(180deg,
      rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 5.6)) 0px,
      rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 3.4)) 88px,
      rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 1.55)) 180px,
      rgba(255,255,255,0) 300px),
    radial-gradient(1200px 500px at 50% -120px, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * 2.2)), transparent 72%),
    radial-gradient(1080px 820px at 50% 100%, rgba(255,255,255,calc(var(--swr-stage-fog-alpha,.10) * .88)), transparent 66%) !important;
  opacity:1 !important;
}

#swr-msg-list,
#swr-contact-list,
#msg-chats .swr-item-list,
#msg-contacts .swr-item-list{
  display:flex !important;
  flex-direction:column !important;
  gap:var(--swr-gap) !important;
  row-gap:var(--swr-gap) !important;
  padding-top:0 !important;
  padding-bottom:0 !important;
}
#msg-chats,
#msg-contacts,
#msg-chats.swr-msg-scroll,
#msg-contacts.swr-msg-scroll,
#tab-msg > .swr-scroll-area{
  padding-top:calc(var(--swr-title-h) + var(--swr-gap)) !important;
}
#swr-msg-list > li,
#swr-contact-list > li,
#swr-msg-list > *,
#swr-contact-list > *,
#msg-chats .swr-item-list > li,
#msg-contacts .swr-item-list > li,
#msg-chats .swr-chat-entry-wrap,
#msg-contacts .swr-chat-entry-wrap{
  margin:0 !important;
}
#swr-msg-list > * + *,
#swr-contact-list > * + *,
#msg-chats .swr-item-list > * + *,
#msg-contacts .swr-item-list > * + *{
  margin-top:0 !important;
}




/* ===== v3515 background chain cleanup round 2 ===== */
:root{
  --swr-bg: url('../back/1.jpg');
}
html,body{
  background: transparent !important;
  background-color: transparent !important;
}
#swr-container,
#swr-container.swr-is-fullscreen,
#swr-container.swr-stage-login{
  background-image: var(--swr-bg) !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  background-size: cover !important;
  background-color: transparent !important;
}
#swr-container::before,
#swr-container::after,
#swr-container.swr-is-fullscreen::before,
#swr-container.swr-is-fullscreen::after,
#swr-container.swr-stage-login::before,
#swr-container.swr-stage-login::after,
.swr-noise,
#swr-container .swr-noise{
  content: none !important;
  display: none !important;
  background: none !important;
  background-image: none !important;
  opacity: 0 !important;
  filter: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  mix-blend-mode: normal !important;
  pointer-events: none !important;
}
#swr-main-app,
.swr-swipeable-view,
.swr-right-drawer,
.swr-tab-content,
#tab-discover,
#tab-msg,
#tab-feed,
#tab-me,
#swr-chat-view,
#myfeed-view,
#myfavs-view,
#sf-view-detail,
#sf-view-editor,
#sf-user-posts-view,
#sf-sidebar,
#sf-search-drawer,
#sf-notif-drawer,
#swr-add-friend-drawer,
#swr-search-chat-drawer{
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}
#swr-login,
#swr-login.swr-panel,
#swr-login.swr-login-view,
#swr-login.swr-login-minimal{
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: none !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  filter: none !important;
}
#swr-login::before,
#swr-login::after{
  content: none !important;
  display: none !important;
  background: none !important;
  background-image: none !important;
  box-shadow: none !important;
}
/* Header/Nav styles controlled by backend inline CSS in wechat-room.php */
/* sf-post-card / sf-cmt-item / sf-dt-content 的 background/backdrop-filter 由 inline CSS 管理 */
.swr-chat-entry,.swr-contact-entry,.swr-msg-item,.scribe-post,.scribe-publish-box,.glass-card,.swr-panel,.swr-form-shell,.swr-card-shell,.sf-thread-card,.sf-reply-card{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1,0.28)), rgba(255,255,255,var(--swr-glass-a2,0.12))) !important;
  backdrop-filter: blur(var(--swr-blur,2px)) saturate(var(--swr-sat,185%)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur,2px)) saturate(var(--swr-sat,185%)) !important;
}


/* v3524 rollback to stable 3515 base; no global frost experiments */


/* v3529: restore stage glass from 3526, but remove bottom-nav right-side slab */
#swr-login,
#swr-main-app{
  position: absolute;
  inset: 0;
  /* isolation: isolate 已移除 — 它会创建 stacking context 阻止
     子元素的 backdrop-filter 穿透到 #swr-container 的背景图 */
}
#swr-login::before,
#swr-main-app::before{
  content: "" !important;
  display: block !important;
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background: rgba(255,255,255,var(--swr-stage-fog-alpha,0.18)) !important;
  /* blur removed: single glass layer lives on each card, not here */
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
#swr-login > *,
#swr-main-app > *{
  position: relative;
  z-index: 1;
}
/* nav right slab comes from floating nav shadow spill; remove it only */
.swr-bottom-nav{
  box-shadow: none !important;
  filter: none !important;
  /* Unified with header transparency */
  background: rgba(255,255,255,calc(var(--swr-glass-a2,0.12) * 0.65)) !important;
  backdrop-filter: blur(var(--swr-blur,2px)) saturate(var(--swr-sat,185%)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur,2px)) saturate(var(--swr-sat,185%)) !important;
}

/* Fix glass slab behind nav for Feed/Messages/Forum (鏈嬪弸鍦?娑堟伅/宀涘笨) */
#tab-feed,
#tab-msg,
#tab-forum{
  position: absolute !important;
  inset: 0 !important;
  overflow: hidden !important;
  background: rgba(255,255,255,var(--swr-glass-a2,0.12)) !important;
}

/* Remove pseudo elements that create glass slab (like discover does) */
#tab-feed::before,
#tab-feed::after,
#tab-msg::before,
#tab-msg::after,
#tab-forum::before,
#tab-forum::after{
  content: none !important;
  display: none !important;
}

/* Scroll areas fill entire tab with padding for nav */
#tab-feed > .swr-scroll-area,
#scribe-scroll-area,
#tab-msg > .swr-scroll-area,
#msg-chats,
#msg-contacts,
#tab-forum > .swr-scroll-area,
#sf-list-scroll{
  position: absolute !important;
  top: 0 !important;
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  padding-bottom: calc(98px + env(safe-area-inset-bottom, 0px)) !important;
  background: transparent !important;
  border: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* ===== FINAL FIX: Completely disable fog overlay to fix color overflow ===== */
#swr-container::after,
#swr-container.swr-is-fullscreen::after{
  content: none !important;
  display: none !important;
  background: none !important;
  background-image: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  filter: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
}

/* ===== DISABLE NOISE TEXTURE COMPLETELY ===== */
#swr-container .swr-noise,
.swr-noise,
#swr-main-app .swr-noise,
.swr-swipeable-view .swr-noise,
.swr-right-drawer .swr-noise,
#swr-core-dialog-overlay .swr-noise{
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  background-image: none !important;
  background: none !important;
  pointer-events: none !important;
}

/* ===== MOBILE COLOR OVERFLOW FIX ===== */
@media (max-width: 768px) {
  .glass-card,
  .swr-panel,
  .swr-right-drawer,
  .swr-msg-header,
  .swr-top-bar,
  .swr-header,
  .scribe-publish-box,
  .scribe-post,
  .sf-card,
  #swr-core-dialog,
  .swr-bottom-nav,
  .swr-input-wrapper{
    backdrop-filter: blur(var(--swr-fog-blur)) !important;
    -webkit-backdrop-filter: blur(var(--swr-fog-blur)) !important;
  }
}

/* GPU hint removed — translateZ(0) creates a backdrop-root that blocks
   child backdrop-filter from blurring the real background image.
   #swr-container's background-image is the blur source; no intermediate
   compositing layers should exist between it and the glass cards.
   backface-visibility also removed — it can create stacking contexts
   in some browsers which interfere with backdrop-filter. */

.glass-card,
.swr-panel,
.scribe-post,
.sf-card{
  filter: none !important;
}


/* ===== UNIFY BACKGROUND ACROSS ALL TABS ===== */
#tab-msg,
#tab-feed,
#tab-me,
#tab-forum,
#tab-discover{
  background: transparent !important;
}
#tab-msg::before,
#tab-msg::after,
#tab-feed::before,
#tab-feed::after,
#tab-me::before,
#tab-me::after,
#tab-forum::before,
#tab-forum::after{
  content: none !important;
  display: none !important;
  background: none !important;
}
#tab-msg .swr-scroll-area,
#tab-feed .swr-scroll-area,
#tab-me .swr-scroll-area,
#tab-forum .swr-scroll-area{
  background: transparent !important;
}


/* ===== FINAL BACKGROUND FIX FOR MESSAGE PAGE ===== */
#swr-msg-list,
#swr-contact-list,
#msg-chats,
#msg-contacts{
  background: transparent !important;
}
#swr-msg-list > li,
#swr-contact-list > li,
#swr-msg-list > .swr-chat-entry-wrap,
#swr-contact-list > .swr-chat-entry-wrap{
  background: transparent !important;
}
#swr-msg-list .swr-chat-entry,
#swr-contact-list .swr-chat-entry,
#swr-msg-list .swr-chat-entry-inner,
#swr-contact-list .swr-chat-entry-inner{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1)), rgba(255,255,255,var(--swr-glass-a2))) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}


.swr-bottom-nav{
  background: linear-gradient(135deg, rgba(255,255,255,var(--swr-glass-a1,.18)), rgba(255,255,255,var(--swr-glass-a2,.07))) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}



/* ===== v34.8.1 unified page glass architecture =====
   One rule manages stage glass for first-level tabs and full-screen secondary pages.
   Avoid pseudo-element page overlays on swipeable views; they were causing content occlusion and blank panels.
*/
#swr-main-app,
.swr-swipeable-view,
.swr-subview,
.swr-addon-subview,
#sf-view-detail,
#sf-view-user,
#sf-view-edit,
#sf-view-admin,
#swr-chat-view,
#swr-profile-view,
#swr-myfeed-view,
#swr-about-view,
#swr-shells-view,
#swr-todo-view,
#swr-note-list-view,
#swr-note-edit-view,
#swr-countdown-list-view,
#swr-countdown-edit-view,
#swr-em-list-view,
#swr-em-edit-view,
#swr-em-detail-view,
#swr-dream-list-view,
#swr-dream-edit-view,
#swr-qa-list-view,
#swr-qa-edit-view,
#swr-qa-detail-view,
#swr-capsule-list-view,
#swr-capsule-edit-view,
#swr-food-view,
#swr-fortune-view{
  background: rgba(255,255,255,var(--swr-stage-fog-alpha,0.10)) !important;
  background-color: rgba(255,255,255,var(--swr-stage-fog-alpha,0.10)) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  /* isolation: isolate removed — it creates a stacking context that blocks
     child backdrop-filter from reaching the real background image */
}

/* Keep root glass on main app only; secondary pages use container background directly, not their own ::before overlays. */
.swr-swipeable-view::before,
.swr-subview::before,
.swr-addon-subview::before,
#sf-view-detail::before,
#sf-view-user::before,
#sf-view-edit::before,
#sf-view-admin::before,
#swr-chat-view::before,
#swr-profile-view::before,
#swr-myfeed-view::before,
#swr-about-view::before,
#swr-shells-view::before,
#swr-todo-view::before,
#swr-note-list-view::before,
#swr-note-edit-view::before{
  content: none !important;
  display: none !important;
}

/* Primary tabs keep content transparent so data lists remain visible. */
#tab-msg,
#tab-feed,
#tab-me,
#tab-forum,
#tab-discover,
#msg-chats,
#msg-contacts,
#scribe-scroll-area,
#swr-msg-list,
#swr-contact-list,
#scribe-feed-list,
#sf-list-scroll,
#sf-detail-scroll,
#sf-user-scroll,
#swr-messages,
.swr-scroll-area,
.swr-messages,
.sf-editor-shell{
  background: transparent !important;
  background-color: transparent !important;
}

/* Secondary page content regions remain transparent; only the page root owns the glass. */
#swr-chat-view #swr-messages,
#sf-view-detail #sf-detail-scroll,
#sf-view-user #sf-user-scroll,
#sf-view-edit .sf-editor-shell,
#sf-view-admin > .swr-scroll-area,
#swr-profile-view > .swr-scroll-area,
#swr-myfeed-view > .swr-scroll-area,
#swr-about-view > .swr-scroll-area,
#swr-shells-view > .swr-scroll-area,
#swr-todo-view .swr-scroll-area,
#swr-note-list-view .swr-scroll-area,
#swr-note-edit-view .swr-scroll-area{
  background: transparent !important;
}

/* Message and feed lists: render normally. */
#swr-msg-list,
#swr-contact-list,
#scribe-feed-list,
#scribe-publish-box{
  position: relative;
}

/* ============================================================
   v34.8.1 FINAL: Unified card spacing
   ONE gap variable controls:
     - titlebar ↔ first card distance
     - card ↔ card distance
     - publish box ↔ first card distance
   All previous conflicting declarations are overridden here.
   ============================================================ */

/* 1) ALL scroll areas: titlebar-to-first-card = title height + gap */
#tab-msg .swr-scroll-area,
#tab-msg #msg-chats,
#tab-msg #msg-contacts,
#tab-feed .swr-scroll-area,
#tab-feed #scribe-scroll-area,
#tab-forum .swr-scroll-area,
#tab-me > .swr-scroll-area,
#sf-list-scroll,
#sf-detail-scroll,
#sf-user-scroll,
#swr-chat-view .swr-messages,
#swr-profile-view .swr-scroll-area,
#swr-myfeed-view .swr-scroll-area,
#swr-myfavs-view .swr-scroll-area,
#swr-about-view .swr-scroll-area,
#swr-shells-view .swr-scroll-area,
#swr-todo-view .swr-scroll-area,
#swr-note-list-view .swr-scroll-area,
#swr-note-edit-view .swr-scroll-area,
#swr-countdown-list-view .swr-scroll-area,
#swr-countdown-edit-view .swr-scroll-area,
#swr-qa-list-view .swr-scroll-area,
#swr-qa-detail-view .swr-scroll-area,
#swr-qa-edit-view .swr-scroll-area,
#swr-em-list-view .swr-scroll-area,
#swr-em-detail-view .swr-scroll-area,
#swr-dream-list-view .swr-scroll-area,
#swr-capsule-list-view .swr-scroll-area,
#swr-fortune-view .swr-scroll-area,
#swr-food-view .swr-scroll-area,
.swr-swipeable-view > .swr-scroll-area,
.swr-swipeable-view > .swr-view-scroller{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}
/* Chat messages: title height + gap + extra breathing */
#swr-chat-view .swr-messages{
  padding-top: calc(var(--swr-title-h) + var(--swr-gap)) !important;
}

/* 2) ALL card lists: use flex column + gap (single source of spacing) */
#scribe-feed-list,
#myfeed-feed-list,
#myfavs-feed-list,
#sf-post-list,
#sf-user-list-container,
#sf-cmt-list,
#swr-msg-list,
#swr-contact-list,
.swr-unified-list,
#swr-todo-list,
#swr-note-list-container,
#swr-countdown-list-container,
#swr-qa-list-container,
#swr-qa-detail-container,
#swr-em-list-container,
#swr-dream-list-container,
#swr-capsule-list-container{
  display: flex !important;
  flex-direction: column !important;
  gap: var(--swr-gap) !important;
}

/* 3) ALL card items: remove margin (flex gap handles spacing) */
#scribe-feed-list > .scribe-post,
#myfeed-feed-list > .scribe-post,
#myfavs-feed-list > .scribe-post,
#sf-post-list > .sf-post-card,
#sf-cmt-list > .sf-cmt-item,
#swr-msg-list > li,
#swr-contact-list > li,
#swr-todo-list > .swr-todo-item,
#swr-note-list-container > .swr-note-card,
#swr-countdown-list-container > .swr-cd-card,
#swr-qa-list-container > .swr-qa-card,
#swr-em-list-container > .swr-em-card,
#swr-dream-list-container > .swr-dream-card,
#swr-capsule-list-container > .swr-cap-card{
  margin: 0 !important;
}
#swr-todo-list > .swr-todo-item,
#swr-note-list-container > .swr-note-card,
#swr-countdown-list-container > .swr-cd-card,
#swr-qa-list-container > .swr-qa-card,
#swr-qa-detail-container > .swr-qad-q-wrap,
#swr-qa-detail-container > .swr-qad-a-item,
#swr-em-list-container > .swr-em-card,
#swr-dream-list-container > .swr-dream-card,
#swr-capsule-list-container > .swr-cap-card,
.swr-card-stack > *{
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* 4) Publish box: same gap as cards (it's a sibling in the feed) */
#tab-feed .scribe-publish-box,
#tab-feed #scribe-publish-box{
  margin-top: 0 !important;
  margin-bottom: var(--swr-gap) !important;
}

/* Forum detail cards: margin handled by flex gap on parent */

/* 6) No z-index on scroll areas (so header backdrop-filter can see cards) */
.swr-scroll-area,
.swr-messages,
#msg-chats,
#msg-contacts,
#scribe-scroll-area{
  z-index: auto !important;
}


/* ===== v34.8.3 final card opacity unification =====
   Keep all major cards on the same glass formula to avoid
   page-to-page and card-to-card transparency drift.
*/
:root{
  --swr-card-unify-a1: var(--swr-glass-a1);
  --swr-card-unify-a2: var(--swr-glass-a2);
}

.swr-chat-entry,
.swr-chat-entry-inner,
.swr-contact-entry,
.swr-msg-item,
.scribe-post,
.sf-post-card,
.sf-cmt-item,
.sf-dt-content,
.sf-dt-title-card,
.sf-dt-body-card,
.scribe-publish-box,
.glass-card,
.swr-panel,
.swr-form-shell,
.swr-card-shell,
.sf-thread-card,
.sf-reply-card,
.swr-msg-bubble,
.swr-msg-left .swr-msg-bubble,
.swr-msg-right .swr-msg-bubble{
  background: linear-gradient(
    135deg,
    rgba(255,255,255,var(--swr-card-unify-a1)),
    rgba(255,255,255,var(--swr-card-unify-a2))
  ) !important;
  border: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  box-shadow: var(--swr-shadow-soft) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}

/* ===== v34.8.4 final topbar unification =====
   Secondary-page headers must match first-level headers
   (Messages/Feed) with the same transparency formula.
*/
.swr-msg-header,
.swr-top-bar,
.swr-header,
.swr-page-topbar,
.swr-unified-topbar,
.swr-me-topbar,
.swr-feed-header,
.sf-forum-header,
.swr-swipeable-view > .swr-header,
.swr-subview > .swr-header,
.swr-addon-subview > .swr-header,
#sf-view-detail .swr-header,
#sf-view-user .swr-header,
#sf-view-edit .swr-header,
#sf-view-admin .swr-header,
#swr-chat-view .swr-header,
#swr-profile-view .swr-header,
#swr-myfeed-view .swr-header,
#swr-about-view .swr-header,
#swr-shells-view .swr-header,
#swr-todo-view .swr-header,
#swr-note-list-view .swr-header,
#swr-note-edit-view .swr-header,
#swr-countdown-list-view .swr-header,
#swr-countdown-edit-view .swr-header,
#swr-em-list-view .swr-header,
#swr-em-edit-view .swr-header,
#swr-em-detail-view .swr-header,
#swr-dream-list-view .swr-header,
#swr-dream-edit-view .swr-header,
#swr-qa-list-view .swr-header,
#swr-qa-edit-view .swr-header,
#swr-qa-detail-view .swr-header,
#swr-capsule-list-view .swr-header,
#swr-capsule-edit-view .swr-header,
#swr-food-view .swr-header,
#swr-fortune-view .swr-header{
  background: linear-gradient(
    135deg,
    rgba(255,255,255,var(--swr-titlebar-alpha-hi)),
    rgba(255,255,255,var(--swr-titlebar-alpha-lo))
  ) !important;
  border-bottom: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  border-top: none !important;
  border-left: none !important;
  border-right: none !important;
  backdrop-filter: blur(var(--swr-titlebar-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-titlebar-blur)) saturate(var(--swr-sat)) !important;
  box-shadow: var(--swr-shadow-soft) !important;
}


/* ===== v34.8.6 secondary stage transparency lock =====
   Secondary pages should share the same stage behavior as first-level tabs.
*/
.swr-subview,
.swr-addon-subview,
#sf-view-detail,
#sf-view-user,
#sf-view-edit,
#sf-view-admin,
#swr-chat-view,
#swr-profile-view,
#swr-myfeed-view,
#swr-about-view,
#swr-shells-view,
#swr-todo-view,
#swr-note-list-view,
#swr-note-edit-view,
#swr-countdown-list-view,
#swr-countdown-edit-view,
#swr-em-list-view,
#swr-em-edit-view,
#swr-em-detail-view,
#swr-dream-list-view,
#swr-dream-edit-view,
#swr-qa-list-view,
#swr-qa-edit-view,
#swr-qa-detail-view,
#swr-capsule-list-view,
#swr-capsule-edit-view,
#swr-food-view,
#swr-fortune-view{
  background: transparent !important;
  background-color: transparent !important;
}

/* ===== v34.8.6 feed/detail card parity lock =====
   Ensure feed cards and forum detail cards use the exact same glass formula.
*/
#scribe-feed-list > .scribe-post,
#myfeed-feed-list > .scribe-post,
#myfavs-feed-list > .scribe-post{
  background: linear-gradient(
    135deg,
    rgba(255,255,255,var(--swr-glass-a1)),
    rgba(255,255,255,var(--swr-glass-a2))
  ) !important;
  border: var(--swr-border-w, 1px) solid var(--swr-border) !important;
  box-shadow: var(--swr-shadow-soft) !important;
  backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-blur)) saturate(var(--swr-sat)) !important;
}
/* 论坛元素的 background/backdrop-filter/box-shadow 完全交给 inline CSS 管理 */




/* ===== v35.0.4 secondary page glass override =====
   v34.8.3 unified all cards to --swr-blur / --swr-glass-a1/a2,
   v34.8.4 unified all headers to --swr-titlebar-blur.
   This broke the backend's separate subpage knobs.
   Fix: re-apply --swr-subpage-* variables for secondary-page elements
   so the backend settings actually take effect.
   ============================================================ */

/* --- Secondary page CARDS: use subpage glass variables --- */
.swr-swipeable-view .swr-card-shell,
.swr-swipeable-view .swr-panel-shell,
.swr-swipeable-view .swr-form-shell,
.swr-swipeable-view .swr-sheet-shell,
.swr-swipeable-view .swr-me-item,
.swr-swipeable-view .scribe-post,
.swr-swipeable-view .sf-post-card,
.swr-swipeable-view .sf-dt-content,
.swr-swipeable-view .sf-dt-title-card,
.swr-swipeable-view .sf-dt-body-card,
.swr-swipeable-view .sf-cmt-item,
.swr-swipeable-view .swr-todo-item,
.swr-swipeable-view .swr-note-card,
.swr-swipeable-view .swr-cd-card,
.swr-swipeable-view .swr-qa-card,
.swr-swipeable-view .swr-qad-q-wrap,
.swr-swipeable-view .swr-qad-a-item,
.swr-swipeable-view .swr-em-card,
.swr-swipeable-view .swr-dream-card,
.swr-swipeable-view .swr-cap-card,
.swr-swipeable-view .swr-pourover-hero-card,
.swr-swipeable-view .swr-pourover-card,
.swr-swipeable-view .swr-pourover-current-card,
.swr-swipeable-view .swr-pourover-next-card,
.swr-swipeable-view .swr-pourover-progress-card,
.swr-swipeable-view .swr-pourover-finish-card,
.swr-swipeable-view .swr-pourover-preview-card,
.swr-swipeable-view .swr-pourover-list-card,
.swr-swipeable-view .swr-pourover-stage-card{
  background: var(--swr-subpage-glass-bg, var(--swr-glass-bg)) !important;
  backdrop-filter: var(--swr-subpage-glass-backdrop, blur(var(--swr-blur)) saturate(var(--swr-sat))) !important;
  -webkit-backdrop-filter: var(--swr-subpage-glass-backdrop, blur(var(--swr-blur)) saturate(var(--swr-sat))) !important;
}

/* --- Secondary page HEADERS: use subpage header variables --- */
.swr-swipeable-view:not(#swr-chat-view) > .swr-header,
.swr-swipeable-view:not(#swr-chat-view) > .sf-subpage-header,
.swr-subview > .swr-header,
.swr-addon-subview > .swr-header{
  background: var(--swr-subpage-titlebar-bg, linear-gradient(135deg, rgba(255,255,255,var(--swr-titlebar-alpha-hi)), rgba(255,255,255,var(--swr-titlebar-alpha-lo)))) !important;
  backdrop-filter: blur(var(--swr-subpage-titlebar-blur, var(--swr-titlebar-blur))) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-subpage-titlebar-blur, var(--swr-titlebar-blur))) saturate(var(--swr-sat)) !important;
}

/* --- Chat page: use dedicated chat variables --- */
#swr-chat-view > .swr-header{
  background: var(--swr-chat-header-bg, linear-gradient(135deg, rgba(255,255,255,var(--swr-titlebar-alpha-hi)), rgba(255,255,255,var(--swr-titlebar-alpha-lo)))) !important;
  backdrop-filter: blur(var(--swr-chat-header-blur, var(--swr-titlebar-blur))) saturate(var(--swr-sat)) !important;
  -webkit-backdrop-filter: blur(var(--swr-chat-header-blur, var(--swr-titlebar-blur))) saturate(var(--swr-sat)) !important;
}
#swr-chat-view .swr-msg-bubble,
#swr-chat-view .swr-msg-left .swr-msg-bubble,
#swr-chat-view .swr-msg-right .swr-msg-bubble{
  background: var(--swr-chat-bubble-bg, var(--swr-glass-bg)) !important;
  backdrop-filter: var(--swr-chat-bubble-backdrop, blur(var(--swr-blur)) saturate(var(--swr-sat))) !important;
  -webkit-backdrop-filter: var(--swr-chat-bubble-backdrop, blur(var(--swr-blur)) saturate(var(--swr-sat))) !important;
}

/* ===== v35.9 media upload + glass image display ===== */
.swr-media-file-input{
  display:none !important;
}
.swr-media-add-btn,
.swr-media-mini-btn{
  border:1px solid rgba(255,255,255,.28) !important;
  background: linear-gradient(135deg, rgba(255,255,255,.52), rgba(255,255,255,.28)) !important;
  color: var(--swr-text) !important;
  border-radius: 999px !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34) !important;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  transition: opacity .2s ease, transform .2s ease;
}
.swr-media-add-btn{
  min-height: 34px;
  padding: 0 14px;
  font-size: 13px;
  line-height: 1;
}
.swr-media-mini-btn{
  width: 34px;
  min-width: 34px;
  height: 34px;
  font-size: 13px;
  line-height: 1;
  padding: 0;
  flex: 0 0 34px;
}
.swr-media-add-btn.is-disabled,
.swr-media-mini-btn.is-disabled{
  opacity: .55;
}
.swr-media-add-btn.is-hidden,
.swr-media-mini-btn.is-hidden{
  display:none !important;
}
.scribe-publish-tools{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.scribe-publish-tools-left{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
#scribe-counter{
  font-size:12px;
  color: var(--swr-subtext);
}
#swr-chat-view .swr-input-area{
  display:flex;
  flex-direction:column;
  gap:10px;
}
#swr-chat-view .swr-input-flex-box{
  display:flex;
  align-items:flex-end;
  gap:10px;
  width:100%;
}
#swr-chat-view #swr-msg-input{
  flex:1;
  margin:0 !important;
}
#tab-feed .swr-media-preview-strip,
#swr-chat-view .swr-media-preview-strip{
  margin:0;
}
.swr-media-preview-strip{
  display:none;
}
.swr-media-preview-strip.is-active{
  display:block;
}
.swr-media-preview-grid{
  display:grid;
  gap:10px;
  width:fit-content;
  max-width:100%;
}
.swr-media-preview-grid.swr-media-grid--single{
  grid-template-columns:minmax(0, 120px);
}
.swr-media-preview-grid.swr-media-grid--two{
  grid-template-columns:repeat(2, minmax(0, 88px));
}
.swr-media-preview-grid.swr-media-grid--three{
  grid-template-columns:repeat(3, minmax(0, 78px));
}
.swr-media-preview-item{
  position:relative;
  aspect-ratio:1 / 1;
  overflow:hidden;
  border-radius: calc(var(--swr-radius) - 8px);
  background: rgba(255,255,255,.42);
  border:1px solid rgba(255,255,255,.26);
}
.swr-media-preview-grid.swr-media-grid--single .swr-media-preview-item{
  aspect-ratio: 4 / 3;
}
.swr-media-preview-img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  filter: saturate(.84) contrast(.92) brightness(1.04);
}
.swr-media-preview-remove{
  position:absolute;
  top:8px;
  right:8px;
  width:22px;
  height:22px;
  border:none;
  border-radius:50%;
  background: rgba(24,24,28,.78);
  color:#fff !important;
  font-size:14px;
  line-height:1;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.swr-media-uploading-hint{
  margin-top:8px;
  font-size:12px;
  color: var(--swr-subtext);
}
.swr-media-shell{
  margin-top:12px;
  padding:12px;
  background: linear-gradient(135deg, rgba(255,255,255,.26), rgba(255,255,255,.15));
  border:1px solid rgba(255,255,255,.24);
  border-radius: calc(var(--swr-radius) - 2px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.24);
}
.swr-media-shell--chat{
  margin-top:0;
}
.swr-media-grid{
  display:grid;
  gap:10px;
  max-width:100%;
  margin:0 auto;
}
.swr-media-shell--feed .swr-media-grid--single,
.swr-media-shell--forum .swr-media-grid--single{
  width:min(100%, 340px);
}
.swr-media-shell--feed .swr-media-grid--two,
.swr-media-shell--forum .swr-media-grid--two{
  width:min(100%, 340px);
  grid-template-columns:repeat(2, minmax(0, 1fr));
}
.swr-media-shell--feed .swr-media-grid--three,
.swr-media-shell--forum .swr-media-grid--three{
  width:min(100%, 420px);
  grid-template-columns:repeat(3, minmax(0, 1fr));
}
.swr-media-shell--chat .swr-media-grid--single{
  width:min(68vw, 240px);
}
.swr-media-shell--chat .swr-media-grid--two{
  width:min(72vw, 260px);
  grid-template-columns:repeat(2, minmax(0, 1fr));
}
.swr-media-shell--chat .swr-media-grid--three{
  width:min(74vw, 280px);
  grid-template-columns:repeat(3, minmax(0, 1fr));
}
.swr-media-tile{
  position:relative;
  display:block;
  width:100%;
  overflow:hidden;
  padding:0;
  border:none;
  border-radius: calc(var(--swr-radius) - 6px);
  background: rgba(255,255,255,.2);
  cursor:pointer;
}
.swr-media-tile::after{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.04) 36%, rgba(255,255,255,.14));
  pointer-events:none;
}
.swr-media-tile--grid{
  aspect-ratio:1 / 1;
}
.swr-media-tile--single{
  aspect-ratio:auto;
}
.swr-media-img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  filter: saturate(.82) contrast(.9) brightness(1.05);
}
.swr-media-tile--single .swr-media-img{
  max-height:360px;
  object-fit:cover;
}
.swr-media-live-badge{
  position:absolute;
  top:10px;
  right:10px;
  z-index:1;
  padding:4px 7px;
  border-radius:999px;
  background: rgba(24,24,28,.76);
  color:#fff !important;
  font-size:10px;
  letter-spacing:.06em;
}
.swr-msg-text{
  line-height:1.6;
}
.swr-msg-bubble .swr-msg-text + .swr-media-shell,
.swr-msg-bubble .swr-media-shell + .swr-msg-text{
  margin-top:10px;
}
.scribe-post .swr-media-shell{
  margin-top:14px;
}
#swr-media-lightbox{
  display:none;
  position:fixed;
  inset:0;
  z-index:10020;
  padding:18px;
  background: rgba(14,14,18,.72);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  align-items:center;
  justify-content:center;
}
#swr-media-lightbox img{
  max-width:100%;
  max-height:100%;
  display:block;
  margin:auto;
  border-radius: calc(var(--swr-radius) - 2px);
  box-shadow: 0 20px 60px rgba(0,0,0,.26);
}
