/* ============================================================================
   LILY BLUE OS · V112 FULL-SCREEN ADAPTATION & PURE WHITE-BLACK NOCTIS OVERHAUL
   - 全屏无死角适配：消除所有应用四周浅蓝留边、弹窗半屏截断、顶栏白字看不清与私信半中央悬浮问题
   - 夜幕 · NOCTIS：纯正白底黑字黑白风
     * 视界主页：双列视频卡片网格（上方视频播放器缩略窗+左上角无码/4K角标+居中播放键+右下角长时长，下方番号+【癖好标签】长剧情色气标题+底部灰字XP标签）
     * 点击任意视频卡片进入详情页：顶部 16:9 纯黑视频播放器 + 完整标题与标签 + UP主栏 + 视频评论区 + 社区动态 + 动态评论区
     * 私信页面 100% 全屏铺满，底部固定发送栏
   - 角色库与所有子页面：100% 全屏铺满手机视口，绝不半屏弹出
   ============================================================================ */

/* 0. GLOBAL FULL-SCREEN VIEWPORT & MODAL FULL-SCREEN ADAPTATION (Fixes 54108, 54110, 54116, 54118, 54120) */
html, body {
  width: 100% !important;
  height: 100% !important;
  height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}

@media (max-width: 768px) {
  .host-stage {
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    padding: 0 !important;
    margin: 0 !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
  }
  .phone,
  #phoneRoot {
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    max-width: 100vw !important;
    max-height: 100dvh !important;
    border-radius: 0 !important;
    border: none !important;
    box-shadow: none !important;
  }
}

/* Force ALL modals (including 角色库, 新建档案, 导入角色卡, 微信号加人, etc.) to be 100% Full Screen! (Fixes 54116.jpg) */
#modalMask.modal-mask {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  padding-top: 36px !important;
  background: #f8fafc !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
  z-index: 88 !important;
}
#modalPanel.modal-panel {
  width: 100% !important;
  height: calc(100% - 36px) !important;
  min-height: calc(100% - 36px) !important;
  max-height: calc(100% - 36px) !important;
  flex: 1 1 auto !important;
  border-radius: 0 !important;
  border: none !important;
  margin: 0 !important;
  padding: 14px 14px 40px !important;
  background: #f8fafc !important;
  box-shadow: none !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  box-sizing: border-box !important;
}
#modalPanel.modal-panel.full-phone-panel {
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  overflow-y: auto !important;
}
#modalPanel.modal-panel > .v29-phone-page-header {
  flex-shrink: 0 !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 10 !important;
}
#modalPanel.modal-panel > .v29-phone-page-body {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  padding: 12px 14px 48px !important;
}

/* Remove outer blue gap around full-screen apps inside #appScrollBody (Fixes 54108, 54110, 54118) */
#appScrollBody[data-v44-app="nightveil"],
#appScrollBody[data-v44-app="sms"],
#appScrollBody[data-v44-app="vpn"],
#appScrollBody[data-v44-app="phone_call"],
#appScrollBody[data-v44-app="teletouch"],
#appScrollBody[data-v44-app="darkroom_album"],
#appScrollBody[data-v44-app="charlib"],
#appScrollBody:has(> .noctis-shell),
#appScrollBody:has(> .sms-full-shell),
#appScrollBody:has(> .mono-app-shell),
#appScrollBody:has(> .lux-phone-wrap),
#appScrollBody:has(> .charlib-full-shell),
#appScrollBody:has(> .wx-login-full-shell) {
  padding: 0 !important;
  background: #ffffff !important;
  background-image: none !important;
}

#appScrollBody > .v44-app-canvas {
  min-height: 100% !important;
  box-sizing: border-box !important;
}

/* 0b. TOPBAR ANTI-SQUISH & HIGH CONTRAST GUARD (Fixes 54108.jpg & 54112.jpg) */
#appTopbar {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 6px !important;
  min-height: 46px !important;
  padding: 6px 12px !important;
  flex-shrink: 0 !important;
  z-index: 30 !important;
}
#appTopbarTitle {
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  min-width: 72px !important;
  max-width: 58% !important;
  color: #111111 !important;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", "Helvetica Neue", sans-serif !important;
}
#appTopbarTitle span,
#appTopbarTitle small {
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  display: block;
}
#appTopbarRight {
  display: flex !important;
  align-items: center !important;
  gap: 5px !important;
  flex-shrink: 0 !important;
  white-space: nowrap !important;
}
#appTopbarRight button {
  white-space: nowrap !important;
  flex-shrink: 0 !important;
}

/* ============================================================================
   1. 夜幕 · NOCTIS — 纯正白底黑字黑白风 (Fixes 54108, 54110, 54112, 54114, 54126, 54128, 54060)
   ============================================================================ */
#appScreenLayer[data-extra-skin="noctis_editorial_dark"],
#appScreenLayer[data-extra-skin="noctis_ editorial_dark"],
#appScreenLayer:has(#appScrollBody[data-v44-app="nightveil"]),
#appScreenLayer:has(#appScrollBody[data-v44-app="sms"]),
#appScreenLayer:has(#appScrollBody[data-v44-app="charlib"]) {
  background: #ffffff !important;
  color: #111111 !important;
}
#appScreenLayer[data-extra-skin="noctis_editorial_dark"] #appTopbar,
#appScreenLayer[data-extra-skin="noctis_ editorial_dark"] #appTopbar,
#appScreenLayer:has(#appScrollBody[data-v44-app="nightveil"]) #appTopbar,
#appScreenLayer:has(#appScrollBody[data-v44-app="sms"]) #appTopbar,
#appScreenLayer:has(#appScrollBody[data-v44-app="charlib"]) #appTopbar {
  background: #ffffff !important;
  border-bottom: 1px solid #e4e4e7 !important;
  color: #111111 !important;
}
#appScreenLayer[data-extra-skin="noctis_editorial_dark"] #appTopbar .back-btn,
#appScreenLayer[data-extra-skin="noctis_ editorial_dark"] #appTopbar .back-btn,
#appScreenLayer:has(#appScrollBody[data-v44-app="nightveil"]) #appTopbar .back-btn,
#appScreenLayer:has(#appScrollBody[data-v44-app="sms"]) #appTopbar .back-btn,
#appScreenLayer:has(#appScrollBody[data-v44-app="charlib"]) #appTopbar .back-btn {
  color: #111111 !important;
  background: #f4f4f5 !important;
  border: 1px solid #e4e4e7 !important;
}

#appScreenLayer[data-extra-skin="vortex_editorial_dark"],
#appScreenLayer[data-extra-skin="vortex_ editorial_dark"],
#appScreenLayer[data-extra-skin="pulse_editorial_dark"],
#appScreenLayer[data-extra-skin="velvet_editorial_dark"],
#appScreenLayer[data-extra-skin="phone_luxury_dark"] {
  background: #ffffff !important;
  color: #111111 !important;
}
#appScreenLayer[data-extra-skin="vortex_editorial_dark"] #appTopbar,
#appScreenLayer[data-extra-skin="vortex_ editorial_dark"] #appTopbar,
#appScreenLayer[data-extra-skin="pulse_editorial_dark"] #appTopbar,
#appScreenLayer[data-extra-skin="velvet_editorial_dark"] #appTopbar,
#appScreenLayer[data-extra-skin="phone_luxury_dark"] #appTopbar {
  background: #ffffff !important;
  border-bottom: 1px solid #e4e4e7 !important;
  color: #111111 !important;
}
#appScreenLayer[data-extra-skin="vortex_editorial_dark"] #appTopbar #appTopbarTitle,
#appScreenLayer[data-extra-skin="vortex_ editorial_dark"] #appTopbar #appTopbarTitle,
#appScreenLayer[data-extra-skin="pulse_editorial_dark"] #appTopbar #appTopbarTitle,
#appScreenLayer[data-extra-skin="velvet_editorial_dark"] #appTopbar #appTopbarTitle,
#appScreenLayer[data-extra-skin="phone_luxury_dark"] #appTopbar #appTopbarTitle {
  color: #111111 !important;
}
#appScreenLayer[data-extra-skin="vortex_editorial_dark"] #appTopbar #appTopbarTitle span,
#appScreenLayer[data-extra-skin="vortex_ editorial_dark"] #appTopbar #appTopbarTitle span,
#appScreenLayer[data-extra-skin="pulse_editorial_dark"] #appTopbar #appTopbarTitle span,
#appScreenLayer[data-extra-skin="velvet_editorial_dark"] #appTopbar #appTopbarTitle span,
#appScreenLayer[data-extra-skin="phone_luxury_dark"] #appTopbar #appTopbarTitle span {
  color: #111111 !important;
}

/* Pure White-Black NOCTIS Shell */
.noctis-shell {
  width: 100% !important;
  min-height: 100% !important;
  background: #f6f6f8 !important;
  color: #111111 !important;
  padding: 0 0 88px 0 !important;
  box-sizing: border-box !important;
  display: flex !important;
  flex-direction: column !important;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", sans-serif !important;
}
.noctis-shell.is-dm-fullscreen {
  height: 100% !important;
  min-height: calc(100dvh - 82px) !important;
  padding-bottom: 0 !important;
  background: #ffffff !important;
}

.mono-app-shell,
.lux-phone-wrap,
.sms-full-shell,
.charlib-full-shell {
  width: 100% !important;
  min-height: 100% !important;
  background: #ffffff !important;
  color: #111111 !important;
  padding: 12px 14px 90px !important;
  box-sizing: border-box !important;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", sans-serif !important;
}

/* Black & White Monochrome Buttons */
.mono-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
  cursor: pointer;
  border: 1px solid #d4d4d8;
  background: #ffffff;
  color: #111111;
  transition: all 0.15s ease;
}
.mono-btn--white,
.mono-btn--black {
  background: #111111 !important;
  color: #ffffff !important;
  border-color: #111111 !important;
}
.mono-btn--ghost {
  background: #f4f4f5 !important;
  color: #18181b !important;
  border-color: #e4e4e7 !important;
}
.mono-btn--sm {
  padding: 5px 10px;
  font-size: 10.5px;
}

/* NOCTIS Top Navigation Strip */
.noctis-nav-strip {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 5px;
  padding: 8px 12px;
  background: #ffffff;
  border-bottom: 1px solid #e4e4e7;
  flex-shrink: 0;
  position: relative;
  z-index: 5;
}
.noctis-nav-tab {
  padding: 7px 2px;
  border-radius: 999px;
  border: 1px solid transparent;
  background: #f4f4f5;
  color: #52525b;
  font-size: 11.5px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
  text-align: center;
  transition: all 0.15s ease;
}
.noctis-nav-tab.is-active {
  background: #111111 !important;
  color: #ffffff !important;
  border-color: #111111 !important;
}

/* Toolbar & Category Rail */
.noctis-toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 12px 6px;
  background: #ffffff;
}
.noctis-search-box {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 7px 11px;
  border-radius: 999px;
  background: #f4f4f5;
  border: 1px solid #e4e4e7;
}
.noctis-search-box input {
  width: 100%;
  border: none;
  outline: none;
  background: transparent;
  color: #111111;
  font-size: 11.5px;
}
.noctis-cat-rail {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 4px 12px 10px;
  background: #ffffff;
  border-bottom: 1px solid #e4e4e7;
  margin-bottom: 10px;
  scrollbar-width: none;
}
.noctis-cat-rail::-webkit-scrollbar { display: none; }
.noctis-cat-pill {
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1px solid #e4e4e7;
  background: #ffffff;
  color: #52525b;
  cursor: pointer;
}
.noctis-cat-pill.is-active {
  background: #111111;
  color: #ffffff;
  border-color: #111111;
}

/* ============================================================================
   54128.jpg & 54126.jpg 2-Column Video Grid Layout (with Sleek Black-on-White Aesthetics!)
   - Top: Video player screen (#121215) + top-left badge + center circular Play button + bottom-right duration
   - Middle: Code + 【Tag】 + Detailed Erotic/Possessive Long Title (#111111 on #ffffff)
   - Bottom: Space-separated Fetish/XP tags (#71717a)
   ============================================================================ */
.noctis-dual-video-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
  padding: 0 10px 14px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}
.noctis-av-card {
  background: #ffffff;
  border: 1px solid #e4e4e7;
  border-radius: 14px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.035);
  transition: transform 0.14s ease, box-shadow 0.14s ease;
}
.noctis-av-card:active {
  transform: scale(0.985);
}
.noctis-av-screen {
  position: relative;
  width: 100%;
  height: 132px !important;
  min-height: 132px !important;
  background: #141417 !important;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.noctis-av-badge {
  position: absolute;
  top: 8px;
  left: 8px;
  padding: 2.5px 7px;
  border-radius: 5px;
  background: #ffffff;
  color: #111111;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.03em;
  z-index: 2;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}
.noctis-av-play-circle {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.88);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
  z-index: 2;
  transition: transform 0.15s ease;
}
.noctis-av-play-circle svg {
  width: 18px;
  height: 18px;
  fill: #111111;
  margin-left: 2px;
}
.noctis-av-dur {
  position: absolute;
  right: 8px;
  bottom: 8px;
  padding: 2.5px 7px;
  border-radius: 5px;
  background: rgba(0, 0, 0, 0.85);
  color: #ffffff;
  font-size: 10.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  z-index: 2;
}
.noctis-av-body {
  padding: 10px 10px 11px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  flex: 1;
  gap: 8px;
  background: #ffffff;
}
.noctis-av-title {
  font-size: 12.5px;
  font-weight: 800;
  line-height: 1.46;
  color: #111111;
  word-break: break-word;
}
.noctis-av-tags {
  font-size: 10.5px;
  line-height: 1.42;
  color: #71717a;
  font-weight: 600;
}

/* 54060.jpg Style Full Video Detail Page (When a Video Card is Clicked Open!) */
.noctis-yt-card {
  background: #ffffff;
  border-top: 1px solid #ececef;
  border-bottom: 1px solid #ececef;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.noctis-yt-player {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  min-height: 204px;
  background: #000000 !important;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: pointer;
  user-select: none;
}
.noctis-yt-play-btn {
  width: 62px;
  height: 44px;
  border-radius: 12px;
  background: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
  z-index: 3;
  transition: transform 0.15s ease;
}
.noctis-yt-player:active .noctis-yt-play-btn {
  transform: scale(0.93);
}
.noctis-yt-play-btn svg {
  width: 22px;
  height: 22px;
  fill: #111111;
  margin-left: 2px;
}
.noctis-yt-top-meta {
  position: absolute;
  top: 10px;
  left: 12px;
  right: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 3;
  pointer-events: none;
}
.noctis-yt-badge {
  padding: 3px 8px;
  border-radius: 6px;
  background: #ffffff;
  color: #111111;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.03em;
}
.noctis-yt-dur {
  padding: 3px 8px;
  border-radius: 6px;
  background: rgba(0, 0, 0, 0.8);
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: #ffffff;
  font-size: 10.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.noctis-yt-bottom-bar {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 18px 12px 8px;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.9), transparent);
  z-index: 3;
}
.noctis-yt-sub-line {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.95);
  text-align: center;
  margin-bottom: 6px;
  font-weight: 600;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.9);
}
.noctis-yt-progress {
  width: 100%;
  height: 3px;
  background: rgba(255, 255, 255, 0.26);
  border-radius: 999px;
  overflow: hidden;
}
.noctis-yt-progress > span {
  display: block;
  height: 100%;
  background: #ffffff;
  border-radius: 999px;
}

.noctis-yt-info {
  padding: 14px 15px 12px;
  background: #ffffff;
}
.noctis-yt-title {
  font-size: 15.5px;
  font-weight: 900;
  line-height: 1.45;
  color: #111111;
  margin-bottom: 6px;
}
.noctis-yt-views {
  font-size: 11.5px;
  color: #71717a;
  font-weight: 600;
  margin-bottom: 12px;
}
.noctis-yt-creator-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-top: 4px;
}
.noctis-yt-creator-left {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  cursor: pointer;
}
.noctis-yt-ava {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #111111;
  color: #ffffff;
  font-size: 14px;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border: 1.5px solid #e4e4e7;
}
.noctis-yt-cname {
  font-size: 13.5px;
  font-weight: 800;
  color: #111111;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.noctis-yt-csub {
  font-size: 10.5px;
  color: #71717a;
  margin-top: 1px;
}
.noctis-yt-sub-btn {
  padding: 7px 16px;
  border-radius: 999px;
  background: #111111;
  color: #ffffff;
  font-size: 12px;
  font-weight: 800;
  border: none;
  cursor: pointer;
  flex-shrink: 0;
}

/* 54060.jpg Style Section Blocks (视频评论区 / 社区动态 / 动态评论区) */
.noctis-sec-block {
  background: #ffffff;
  padding: 14px 15px;
  border-top: 1px solid #f0f0f2;
}
.noctis-sec-title {
  font-size: 14px;
  font-weight: 900;
  color: #111111;
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.noctis-cmt-list {
  display: flex;
  flex-direction: column;
  gap: 11px;
}
.noctis-cmt-item {
  display: flex;
  align-items: flex-start;
  gap: 9px;
}
.noctis-cmt-icon {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #a1a1aa;
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 800;
  flex-shrink: 0;
  margin-top: 1px;
  cursor: pointer;
}
.noctis-cmt-text {
  flex: 1;
  font-size: 12.5px;
  line-height: 1.52;
  color: #18181b;
  font-weight: 500;
}
.noctis-cmt-user {
  font-size: 11px;
  font-weight: 800;
  color: #52525b;
  margin-bottom: 2px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* White Monochrome Cards for Forum / Whisper / Audio */
.mono-card {
  background: #ffffff !important;
  border: 1px solid #e4e4e7 !important;
  border-radius: 16px;
  padding: 14px 15px;
  margin: 0 12px 10px;
  color: #111111 !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.02);
}
.mono-app-shell .mono-card,
.lux-phone-wrap .mono-card {
  margin: 0 0 10px 0;
}
.mono-card__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.mono-tag {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 800;
  background: #f4f4f5 !important;
  color: #18181b !important;
  border: 1px solid #e4e4e7 !important;
  white-space: nowrap;
}
.mono-tag--inv {
  background: #111111 !important;
  color: #ffffff !important;
  border-color: #111111 !important;
}
.mono-cmt-box {
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: #f8f8fa !important;
  border: 1px solid #ececef !important;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mono-cmt-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 12px;
  line-height: 1.5;
  color: #18181b !important;
}
.mono-cmt-ava {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #111111 !important;
  color: #ffffff !important;
  font-size: 10px;
  font-weight: 800;
  display: grid;
  place-items: center;
  flex-shrink: 0;
  cursor: pointer;
}

/* Full-screen DM Layout in NOCTIS (Fixes 54110.jpg — Never float in the middle!) */
.noctis-dm-fullscreen-wrap {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: calc(100dvh - 138px);
  background: #ffffff;
  box-sizing: border-box;
}
.noctis-dm-npc-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  background: #ffffff;
  border-bottom: 1px solid #e4e4e7;
  flex-shrink: 0;
}
.noctis-dm-profile-head {
  padding: 10px 14px;
  background: #fafafa;
  border-bottom: 1px solid #e4e4e7;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.noctis-dm-msg-list {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: #ffffff;
  min-height: 280px;
}
.noctis-dm-input-dock {
  flex-shrink: 0;
  padding: 10px 12px 18px;
  background: #ffffff;
  border-top: 1px solid #e4e4e7;
  display: flex;
  gap: 6px;
  align-items: center;
}

/* 2. WECHAT STATUS BAR UNIFIED SANS-SERIF & 5 CORE CARDS */
.sheer-status-dossier,
.sheer-status-dossier * {
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Helvetica Neue", sans-serif !important;
}
.ssd-metric-val {
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", sans-serif !important;
  font-size: 17px !important;
  font-weight: 800 !important;
  letter-spacing: -0.02em;
}
.v102-daily-block,
.v102-ladder-block {
  margin-top: 12px;
  padding: 13px 14px;
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.86);
  border: 1px solid rgba(15, 23, 42, 0.10);
  box-shadow: 0 6px 20px rgba(15, 23, 42, 0.04);
}
.v102-blk-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding-bottom: 9px;
  margin-bottom: 10px;
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
}
.v102-blk-head span {
  font-size: 11px;
  font-weight: 900;
  color: #0f172a;
  letter-spacing: 0.04em;
}
.v102-blk-head em {
  font-style: normal;
  font-size: 9.5px;
  color: #64748b;
  font-weight: 600;
}
.v102-daily-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.v102-daily-cell {
  padding: 9px 10px;
  border-radius: 13px;
  background: #f8fafc;
  border: 1px solid rgba(15, 23, 42, 0.07);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.v102-daily-cell small {
  font-size: 10px;
  font-weight: 800;
  color: #475569;
  display: flex;
  align-items: center;
  gap: 5px;
}
.v102-daily-cell small i {
  font-style: normal;
  font-size: 9px;
  padding: 1px 5px;
  border-radius: 5px;
  background: #0f172a;
  color: #ffffff;
  font-weight: 800;
}
.v102-daily-cell p {
  margin: 0;
  font-size: 11.5px;
  line-height: 1.5;
  color: #0f172a;
  font-weight: 500;
}
.v102-play-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}
.v102-play-btn {
  flex: 1 1 auto;
  padding: 7px 10px;
  border-radius: 10px;
  background: #f1f5f9;
  border: 1px solid rgba(15, 23, 42, 0.12);
  color: #0f172a;
  font-size: 10.5px;
  font-weight: 800;
  cursor: pointer;
  text-align: center;
  white-space: nowrap;
}
.v102-play-btn.is-hot {
  background: #0f172a;
  color: #ffffff;
  border-color: #0f172a;
}

.sb-five-core-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sb-five-core-card {
  padding: 11px 12px;
  border-radius: 14px;
  background: #f8fafc;
  border: 1px solid rgba(15, 23, 42, 0.09);
}
.sb-five-core-card.is-hot {
  background: linear-gradient(145deg, #111318, #181b22);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #f8fafc;
}
.sb-five-core-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 5px;
}
.sb-five-core-title {
  font-size: 12.5px;
  font-weight: 900;
  color: #0f172a;
}
.sb-five-core-card.is-hot .sb-five-core-title {
  color: #ffffff;
}
.sb-five-core-tag {
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.06em;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.08);
  color: #475569;
}
.sb-five-core-card.is-hot .sb-five-core-tag {
  background: rgba(255, 255, 255, 0.12);
  color: #d4d4d8;
}
.sb-five-core-body {
  font-size: 12px;
  line-height: 1.68;
  color: #1e293b;
  white-space: pre-line;
}
.sb-five-core-card.is-hot .sb-five-core-body {
  color: #e4e4e7;
}

/* 3. BORDERED STRUCTURED HTML MEMORY TABLE */
.v111-bordered-table-wrap {
  border-radius: 14px;
  overflow: hidden;
  border: 1.5px solid #94a3b8 !important;
  background: #ffffff !important;
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.05);
}
.v111-bordered-table {
  width: 100%;
  border-collapse: collapse !important;
  font-size: 11.5px;
  background: #ffffff;
}
.v111-bordered-table th {
  background: #0f172a !important;
  color: #ffffff !important;
  font-weight: 800 !important;
  font-size: 10.5px !important;
  padding: 9px 8px !important;
  border: 1px solid #334155 !important;
  text-align: left;
  letter-spacing: 0.03em;
}
.v111-bordered-table td {
  padding: 8px 8px !important;
  border: 1px solid #cbd5e1 !important;
  color: #1e293b;
  vertical-align: middle !important;
}
.v111-bordered-table tbody tr:nth-child(even) {
  background: #f8fafc !important;
}
.v111-table-cat-badge {
  display: inline-block;
  padding: 2px 6px;
  border-radius: 6px;
  background: #e2e8f0;
  color: #0f172a;
  font-size: 10px;
  font-weight: 800;
}

/* 4. WECHAT CLICKABLE RECALLED MESSAGE NARRATION PILL */
.wx-recall-narrator {
  cursor: pointer !important;
  padding: 7px 12px !important;
  border-radius: 12px !important;
  background: rgba(255, 255, 255, 0.90) !important;
  border: 1px dashed rgba(15, 23, 42, 0.30) !important;
  color: #0f172a !important;
  max-width: 90% !important;
  margin: 6px auto !important;
  transition: all 0.16s ease;
}
.wx-recall-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 700;
  color: #334155;
}
.wx-recall-toggle-tag {
  padding: 1px 7px;
  border-radius: 999px;
  background: #0f172a;
  color: #ffffff;
  font-size: 9.5px;
  font-weight: 800;
}
.wx-recall-detail {
  display: none;
  margin-top: 7px;
  padding-top: 7px;
  border-top: 1px solid rgba(15, 23, 42, 0.10);
  font-size: 11.8px;
  line-height: 1.58;
  color: #0f172a;
  text-align: left;
  font-weight: 600;
}
.wx-recall-narrator.is-open .wx-recall-detail {
  display: block !important;
}

/* 5. WHITE-BLACK PHONE APP */
.lux-phone-seg {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding: 4px;
  border-radius: 14px;
  background: #f4f4f5;
  border: 1px solid #e4e4e7;
  margin-bottom: 12px;
}
.lux-phone-seg button {
  padding: 8px 4px;
  border-radius: 10px;
  border: none;
  background: transparent;
  color: #52525b;
  font-size: 11.5px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
}
.lux-phone-seg button.is-on {
  background: #111111;
  color: #ffffff;
}
.lux-dial-screen {
  padding: 16px 14px;
  border-radius: 20px;
  background: #fafafa;
  border: 1px solid #e4e4e7;
  text-align: center;
  margin-bottom: 12px;
}
.lux-dial-num {
  font-size: 28px;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: #111111;
  min-height: 36px;
  font-variant-numeric: tabular-nums;
}
.lux-dial-sub {
  font-size: 11px;
  color: #71717a;
  margin-top: 4px;
}
.lux-keypad-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  max-width: 280px;
  margin: 0 auto 14px;
}
.lux-key-btn {
  height: 54px;
  border-radius: 27px;
  background: #f4f4f5;
  border: 1px solid #e4e4e7;
  color: #111111;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform 0.1s ease, background 0.15s ease;
}
.lux-key-btn:active {
  transform: scale(0.95);
  background: #e4e4e7;
}
.lux-key-btn b {
  font-size: 19px;
  font-weight: 700;
  line-height: 1;
}
.lux-key-btn small {
  font-size: 8px;
  letter-spacing: 0.16em;
  color: #71717a;
  margin-top: 2px;
}

/* ============================================================================
   V113 OVERHAUL STYLES:
   1) 全局下拉/拉取模型弹窗统一桌面字体 (Fixes 54177.jpg Part 3)
   2) 微信撤回消息半透轻盈条，点击才显示撤回内容 (Fixes 54178.jpg Part 2)
   3) 查手机 -> 聊天固定高度防上下跳动 (Fixes 54164.mp4)
   4) 夜幕 NOCTIS 原创胶片放映室与双拼票根档案页 (Fixes 54143.jpg & 54059.jpg)
   5) 电话 TELEPHONY 全屏通话台 + 语音条 + 语音下方文字转写 (Fixes 54176.jpg)
   6) 【同频 · RESONANCE】与【迷津 · LABYRINTH】四大可视化玩法组件
   ============================================================================ */

/* 1. 统一拉取模型弹窗、下拉菜单与全机控件字体为桌面字体 */
#phoneRoot,
#v49CustomSelectMask,
.v49-custom-select-sheet,
.v49-css-search-wrap,
.v49-css-search-inp,
.v49-css-list,
.v49-css-opt,
.v49-css-opt-label,
.modal-panel,
.field-input,
.field-textarea,
select,
option,
button,
input,
textarea {
  font-family: var(--user-font-family, "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif) !important;
}

.v49-css-opt-label {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 0.01em !important;
}

/* 2. 微信撤回消息：做成低调半透的系统撤回条，点击后才展开下方半透原话 */
.wx-narrator-line.wx-recall-narrator {
  align-self: center !important;
  width: auto !important;
  max-width: 86% !important;
  margin: 4px auto !important;
  padding: 3px 12px !important;
  border-radius: 999px !important;
  background: rgba(148, 163, 184, 0.16) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid rgba(148, 163, 184, 0.14) !important;
  box-shadow: none !important;
  color: rgba(71, 85, 105, 0.78) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  cursor: pointer !important;
  text-align: center !important;
  transition: all 0.18s ease !important;
}

.wx-narrator-line.wx-recall-narrator.is-open {
  border-radius: 14px !important;
  padding: 6px 12px !important;
  background: rgba(255, 255, 255, 0.46) !important;
  border: 1px solid rgba(148, 163, 184, 0.22) !important;
}

.wx-recall-narrator .wx-recall-summary {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  color: rgba(71, 85, 105, 0.78) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
}

.wx-recall-narrator .wx-recall-detail {
  display: none !important;
  margin-top: 5px !important;
  padding-top: 5px !important;
  border-top: 1px dashed rgba(100, 116, 139, 0.22) !important;
  color: rgba(30, 41, 59, 0.76) !important;
  font-size: 11px !important;
  line-height: 1.5 !important;
  text-align: left !important;
}

.wx-recall-narrator.is-open .wx-recall-detail {
  display: block !important;
}

/* 3. 查手机 -> 聊天：锁死消息视口与潜台词栏高度，点击角色切换时绝不上下跳动 */
.lily-mini-wx-phone {
  display: flex !important;
  flex-direction: column !important;
}

.lily-mwx-session-strip {
  height: 54px !important;
  min-height: 54px !important;
  max-height: 54px !important;
  flex-shrink: 0 !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
}

.lily-mwx-MessageViewport {
  height: 310px !important;
  min-height: 310px !important;
  max-height: 310px !important;
  overflow-y: auto !important;
  flex-shrink: 0 !important;
  box-sizing: border-box !important;
}

.lily-mwx-thought-bar {
  min-height: 56px !important;
  max-height: 76px !important;
  overflow-y: auto !important;
  flex-shrink: 0 !important;
  box-sizing: border-box !important;
}

/* 4. 夜幕 · NOCTIS 原创胶片放映室与黑白票根详情页 */
.nv-original-detail-shell {
  background: #f4f4f6 !important;
  padding-bottom: 84px !important;
}

.nv-reel-topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 9px 12px;
  background: #111111;
  color: #ffffff;
  border-bottom: 1px solid #27272a;
}

.nv-reel-back-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.12);
  color: #ffffff;
  border: 1px solid rgba(255, 255, 255, 0.2);
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
}

.nv-reel-serial {
  font-size: 9.5px;
  letter-spacing: 0.16em;
  color: #a1a1aa;
  font-weight: 800;
}

.nv-cinema-stage-wrap {
  background: #09090b;
  padding: 4px 0 10px;
  border-bottom: 1px solid #27272a;
}

.nv-film-holes {
  display: flex;
  justify-content: space-around;
  padding: 4px 10px;
}

.nv-film-holes span {
  width: 18px;
  height: 6px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.16);
}

.nv-cinema-player {
  min-height: 218px !important;
  margin: 0 10px;
  border-radius: 14px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  background: radial-gradient(circle at 50% 42%, #27272a 0%, #09090b 78%) !important;
}

.nv-cinema-hud-top {
  position: absolute;
  top: 10px;
  left: 12px;
  right: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.nv-cinema-raw-pill {
  padding: 3px 9px;
  border-radius: 6px;
  background: #ffffff;
  color: #111111;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.nv-cinema-timecode {
  padding: 3px 9px;
  border-radius: 6px;
  background: rgba(0, 0, 0, 0.72);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #f4f4f5;
  font-size: 10px;
  font-weight: 800;
}

.nv-cinema-center-trigger {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  z-index: 2;
}

.nv-cinema-ring {
  width: 58px;
  height: 58px;
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.5);
}

.nv-cinema-state-txt {
  font-size: 10.5px;
  color: #d4d4d8;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.nv-cinema-caption-box {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 10px;
  padding: 8px 11px;
  border-radius: 10px;
  background: rgba(9, 9, 11, 0.76);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, 0.14);
}

.nv-cinema-caption-tag {
  font-size: 9.5px;
  color: #a1a1aa;
  font-weight: 800;
  margin-bottom: 2px;
}

.nv-cinema-caption-line {
  font-size: 11.5px;
  color: #ffffff;
  font-weight: 700;
  line-height: 1.45;
}

.nv-chapter-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding: 6px 10px 0;
}

.nv-chapter-chip {
  padding: 7px 8px;
  border-radius: 9px;
  background: #18181b;
  border: 1px solid #27272a;
  color: #a1a1aa;
  text-align: left;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.nv-chapter-chip b {
  font-size: 10px;
  color: #ffffff;
}

.nv-chapter-chip span {
  font-size: 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.nv-chapter-chip.is-on {
  background: #ffffff;
  color: #111111;
  border-color: #ffffff;
}

.nv-chapter-chip.is-on b {
  color: #111111;
}

.nv-bento-dossier {
  margin: 10px;
  border-radius: 16px;
  background: #ffffff;
  border: 1px solid #e4e4e7;
  overflow: hidden;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
}

.nv-bento-main {
  padding: 14px;
}

.nv-bento-meta-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}

.nv-bento-stamp {
  padding: 2px 8px;
  border-radius: 4px;
  background: #111111;
  color: #ffffff;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: 0.12em;
}

.nv-bento-views {
  font-size: 11px;
  color: #52525b;
  font-weight: 700;
}

.nv-bento-title {
  font-size: 15px;
  font-weight: 900;
  color: #111111;
  line-height: 1.48;
  margin-bottom: 10px;
}

.nv-bento-tag-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.nv-bento-tag {
  padding: 3px 9px;
  border-radius: 6px;
  background: #f4f4f5;
  border: 1px solid #e4e4e7;
  color: #18181b;
  font-size: 10.5px;
  font-weight: 800;
}

.nv-creator-polaroid {
  padding: 12px 14px;
  background: #111111;
  color: #ffffff;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
}

.nv-cp-left {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1;
  cursor: pointer;
}

.nv-cp-monogram {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: #ffffff;
  color: #111111;
  font-size: 15px;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.nv-cp-name {
  font-size: 13.5px;
  font-weight: 900;
  color: #ffffff;
}

.nv-cp-badge {
  padding: 1px 6px;
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.16);
  color: #f4f4f5;
  font-size: 9.5px;
  font-weight: 700;
}

.nv-cp-sub {
  font-size: 10.5px;
  color: #a1a1aa;
  margin-top: 2px;
}

.nv-cp-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.nv-dual-switch-bar {
  margin: 0 10px 10px;
  padding: 4px;
  border-radius: 12px;
  background: #e4e4e7;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
}

.nv-dual-switch-bar button {
  padding: 7px 6px;
  border-radius: 9px;
  border: none;
  background: transparent;
  color: #3f3f46;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
}

.nv-dual-switch-bar button.is-on {
  background: #111111;
  color: #ffffff;
}

.nv-backstage-sheet {
  margin: 0 10px 12px;
  padding: 14px;
  border-radius: 16px;
  background: #18181b;
  color: #ffffff;
  border: 1px solid #27272a;
}

.nv-bs-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 8px;
}

.nv-bs-eyebrow {
  font-size: 9.5px;
  letter-spacing: 0.14em;
  color: #a1a1aa;
  font-weight: 800;
}

.nv-bs-author {
  font-size: 12.5px;
  font-weight: 800;
  color: #ffffff;
  margin-top: 2px;
}

.nv-bs-quote {
  padding: 10px 12px;
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.06);
  border-left: 3px solid #ffffff;
  font-size: 12.5px;
  line-height: 1.65;
  color: #f4f4f5;
  margin-bottom: 10px;
}

.nv-bs-floor-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.nv-bs-floor-item {
  padding: 8px 10px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.05);
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
  line-height: 1.5;
  cursor: pointer;
}

.nv-bs-floor-num {
  padding: 2px 6px;
  border-radius: 4px;
  background: #ffffff;
  color: #111111;
  font-size: 9.5px;
  font-weight: 900;
  flex-shrink: 0;
}

.nv-echo-wall {
  margin: 0 10px 12px;
  padding: 14px;
  border-radius: 16px;
  background: #ffffff;
  border: 1px solid #e4e4e7;
}

.nv-echo-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}

.nv-echo-input-bar {
  display: flex;
  gap: 6px;
  margin-bottom: 12px;
}

.nv-echo-grid {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.nv-echo-stub {
  padding: 10px 12px;
  border-radius: 12px;
  background: #f8f8fa;
  border: 1px solid #e4e4e7;
  border-left: 3px solid #111111;
}

.nv-echo-stub-top {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 5px;
}

.nv-echo-num {
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: 0.08em;
  padding: 1px 6px;
  border-radius: 4px;
  background: #111111;
  color: #ffffff;
}

.nv-echo-user {
  font-size: 12px;
  font-weight: 800;
  color: #111111;
  cursor: pointer;
}

.nv-echo-dm-btn {
  margin-left: auto;
  padding: 2px 8px;
  border-radius: 6px;
  background: #ffffff;
  border: 1px solid #d4d4d8;
  color: #111111;
  font-size: 10px;
  font-weight: 800;
  cursor: pointer;
}

.nv-echo-stub-body {
  font-size: 12.5px;
  color: #27272a;
  line-height: 1.58;
}

/* 5. 电话 · TELEPHONY 全屏语音条通话界面 */
.nv-telephony-fullscreen {
  width: 100%;
  height: 100%;
  min-height: calc(100vh - 96px);
  display: flex;
  flex-direction: column;
  background: #f4f4f6;
  box-sizing: border-box;
}

.nv-tel-hero-header {
  background: #111111;
  color: #ffffff;
  padding: 10px 12px 12px;
  flex-shrink: 0;
}

.nv-tel-role-strip {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding-bottom: 6px;
  scrollbar-width: none;
}

.nv-tel-role-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.16);
  color: #d4d4d8;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
  flex-shrink: 0;
}

.nv-tel-role-chip.is-on {
  background: #ffffff;
  color: #111111;
  border-color: #ffffff;
}

.nv-tel-role-chip img {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  object-fit: cover;
}

.nv-tel-call-card {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  margin: 4px 0 10px;
}

.nv-tel-ava-wrap {
  position: relative;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: #27272a;
  flex-shrink: 0;
}

.nv-tel-ava {
  width: 100%;
  height: 100%;
  border-radius: 14px;
  object-fit: cover;
}

.nv-tel-pulse-dot {
  position: absolute;
  right: -2px;
  bottom: -2px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #22c55e;
  border: 2px solid #111111;
}

.nv-tel-cname {
  font-size: 14.5px;
  font-weight: 900;
  color: #ffffff;
}

.nv-tel-status-badge {
  font-size: 10px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.16);
  color: #ffffff;
  font-weight: 800;
}

.nv-tel-phone-num {
  font-size: 10.5px;
  color: #a1a1aa;
  margin-top: 3px;
}

.nv-tel-dial-cta {
  padding: 8px 12px;
  border-radius: 10px;
  background: #ffffff;
  color: #111111;
  border: none;
  font-size: 11.5px;
  font-weight: 900;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
}

.nv-tel-mode-tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 5px;
  background: rgba(255, 255, 255, 0.08);
  padding: 4px;
  border-radius: 11px;
}

.nv-tel-mode-tabs button {
  padding: 6px 4px;
  border-radius: 8px;
  border: none;
  background: transparent;
  color: #a1a1aa;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
}

.nv-tel-mode-tabs button.is-on {
  background: #ffffff;
  color: #111111;
}

.nv-tel-voice-stream {
  flex: 1;
  overflow-y: auto;
  padding: 14px 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.nv-tel-empty-stage {
  margin: auto 0;
  padding: 28px 16px;
  text-align: center;
  background: #ffffff;
  border-radius: 18px;
  border: 1px solid #e4e4e7;
}

.nv-tel-empty-ic {
  width: 48px;
  height: 48px;
  border-radius: 16px;
  background: #111111;
  color: #ffffff;
  font-size: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
}

.nv-voice-turn-row {
  display: flex;
  flex-direction: column;
  max-width: 86%;
}

.nv-voice-turn-row.is-char {
  align-self: flex-start;
}

.nv-voice-turn-row.is-me {
  align-self: flex-end;
  align-items: flex-end;
}

.nv-vt-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 10px;
  color: #71717a;
  margin-bottom: 4px;
}

.nv-vt-meta b {
  color: #111111;
  font-weight: 800;
}

.nv-voice-bar-pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 168px;
  padding: 9px 14px;
  border-radius: 14px;
  background: #111111;
  color: #ffffff;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.nv-voice-turn-row.is-me .nv-voice-bar-pill {
  background: #27272a;
}

.nv-vb-play-ic {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #ffffff;
  color: #111111;
  font-size: 10px;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.nv-vb-wave {
  display: flex;
  align-items: center;
  gap: 3px;
  flex: 1;
  height: 16px;
}

.nv-vb-wave i {
  display: block;
  width: 2.5px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.85);
  height: 8px;
}

.nv-vb-wave i:nth-child(2n) { height: 14px; }
.nv-vb-wave i:nth-child(3n) { height: 6px; }
.nv-vb-wave i:nth-child(5n) { height: 16px; }

.nv-voice-bar-pill.is-playing .nv-vb-wave i {
  animation: nvWaveBounce 0.6s infinite ease-in-out alternate;
}

@keyframes nvWaveBounce {
  0% { transform: scaleY(0.5); }
  100% { transform: scaleY(1.25); }
}

.nv-vb-sec {
  font-size: 11px;
  font-weight: 800;
  color: #e4e4e7;
}

.nv-voice-transcript-box {
  margin-top: 5px;
  padding: 8px 11px;
  border-radius: 11px;
  background: #ffffff;
  border: 1px solid #e4e4e7;
  color: #18181b;
  font-size: 12.5px;
  line-height: 1.58;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
}

.nv-tel-bottom-dock {
  padding: 10px 12px calc(12px + env(safe-area-inset-bottom, 0px));
  background: #ffffff;
  border-top: 1px solid #e4e4e7;
  display: flex;
  gap: 8px;
  align-items: center;
  flex-shrink: 0;
}

.nv-tel-inp {
  flex: 1;
  height: 38px;
  padding: 0 12px;
  border-radius: 11px;
  border: 1px solid #d4d4d8;
  background: #f8f8fa;
  color: #111111;
  font-size: 12.5px;
  outline: none;
}

.nv-log-voice-mini {
  padding: 8px 10px;
  border-radius: 10px;
  background: #f8f8fa;
  border: 1px solid #e4e4e7;
  cursor: pointer;
}

.nv-lvm-bar {
  display: flex;
  justify-content: space-between;
  font-size: 10.5px;
  color: #111111;
  font-weight: 800;
  margin-bottom: 3px;
}

.nv-lvm-txt {
  font-size: 12px;
  color: #3f3f46;
  line-height: 1.5;
}

/* 6. 【同频 · RESONANCE】与【迷津 · LABYRINTH】可视化组件样式 */
.nv-app-intro-banner {
  padding: 12px 14px;
  border-radius: 16px;
  background: #ffffff;
  border: 1px solid #e4e4e7;
  margin-bottom: 10px;
}

.nv-aib-tag {
  padding: 2px 8px;
  border-radius: 4px;
  background: #111111;
  color: #ffffff;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: 0.08em;
}

.nv-res-biometric-deck {
  padding: 14px 12px;
  border-radius: 18px;
  background: #111111;
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
}

.nv-rbd-ring-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.nv-rbd-ring {
  position: relative;
  width: 74px;
  height: 74px;
}

.nv-rbd-ring svg {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}

.nv-rbd-ring-center {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.nv-rbd-ring-center b {
  font-size: 14px;
  font-weight: 900;
  color: #ffffff;
  line-height: 1.1;
}

.nv-rbd-ring-center b small {
  font-size: 8px;
  margin-left: 1px;
}

.nv-rbd-ring-center span {
  font-size: 8.5px;
  color: #a1a1aa;
}

.nv-rbd-name {
  font-size: 11px;
  font-weight: 800;
  color: #f4f4f5;
}

.nv-rbd-wave-mid {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  min-width: 0;
}

.nv-rbd-sync-pct {
  font-size: 12px;
  font-weight: 900;
  color: #ffffff;
  letter-spacing: 0.06em;
}

.nv-rbd-ecg-svg {
  width: 100%;
  max-width: 130px;
  height: 30px;
}

.nv-rbd-stage-pill {
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
  color: #e4e4e7;
  font-size: 9.5px;
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.nv-four-mode-tabs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 5px;
  padding: 4px;
  border-radius: 13px;
  background: #e4e4e7;
  margin-bottom: 10px;
}

.nv-four-mode-tabs button {
  padding: 8px 4px;
  border-radius: 9px;
  border: none;
  background: transparent;
  color: #3f3f46;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
}

.nv-four-mode-tabs button.is-on {
  background: #111111;
  color: #ffffff;
}

.nv-intensity-selector {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin: 8px 0 10px;
}

.nv-intensity-selector button {
  padding: 6px;
  border-radius: 8px;
  border: 1px solid #e4e4e7;
  background: #f8f8fa;
  color: #3f3f46;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
}

.nv-intensity-selector button.is-on {
  background: #111111;
  color: #ffffff;
  border-color: #111111;
}

.nv-body-zone-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}

.nv-body-zone-card {
  padding: 10px 12px;
  border-radius: 12px;
  background: #f8f8fa;
  border: 1px solid #e4e4e7;
  cursor: pointer;
  transition: all 0.15s ease;
}

.nv-body-zone-card.is-on {
  background: #111111;
  color: #ffffff;
  border-color: #111111;
}

.nv-bzc-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 4px;
}

.nv-bzc-ic {
  font-size: 16px;
}

.nv-bzc-boost {
  font-size: 9.5px;
  font-weight: 800;
  padding: 1px 6px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.08);
}

.nv-body-zone-card.is-on .nv-bzc-boost {
  background: rgba(255, 255, 255, 0.2);
  color: #ffffff;
}

.nv-bzc-name {
  font-size: 13px;
  font-weight: 900;
}

.nv-bzc-sub {
  font-size: 10.5px;
  opacity: 0.75;
  margin-top: 2px;
}

.nv-split-screen-board {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 10px;
}

.nv-ssb-pane {
  padding: 12px;
  border-radius: 16px;
  border: 1px solid #e4e4e7;
  background: #ffffff;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.nv-ssb-pane.is-char {
  background: #111111;
  color: #ffffff;
  border-color: #111111;
}

.nv-ssb-tag {
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.1em;
  opacity: 0.65;
}

.nv-ssb-ava-row {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
}

.nv-ssb-ava-row img {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  object-fit: cover;
}

.nv-ssb-doing {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.5;
  padding: 8px;
  border-radius: 10px;
  background: rgba(0, 0, 0, 0.04);
}

.nv-ssb-pane.is-char .nv-ssb-doing {
  background: rgba(255, 255, 255, 0.1);
}

.nv-ssb-quick-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.nv-ssb-quick-chips button {
  padding: 3px 7px;
  border-radius: 6px;
  border: 1px solid #e4e4e7;
  background: #f8f8fa;
  color: #27272a;
  font-size: 9.5px;
  font-weight: 700;
  cursor: pointer;
}

.nv-ssb-screen-note {
  font-size: 10.5px;
  color: #d4d4d8;
  line-height: 1.45;
}

.nv-earphone-turntable-card {
  padding: 16px 14px;
  border-radius: 18px;
  background: #111111;
  color: #ffffff;
  text-align: center;
  margin-bottom: 10px;
}

.nv-et-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
}

.nv-et-ear-badge {
  padding: 4px 9px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
  font-size: 10px;
  font-weight: 800;
}

.nv-et-vinyl-disc {
  width: 68px;
  height: 68px;
  border-radius: 50%;
  background: repeating-radial-gradient(circle, #18181b 0px, #18181b 4px, #27272a 5px, #111111 6px);
  border: 2px solid rgba(255, 255, 255, 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: nvSpinVinyl 9s linear infinite;
}

.nv-et-vinyl-inner {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #ffffff;
}

@keyframes nvSpinVinyl {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.nv-et-song-title {
  font-size: 14px;
  font-weight: 900;
  color: #ffffff;
}

.nv-et-song-sub {
  font-size: 10.5px;
  color: #a1a1aa;
  margin: 3px 0 10px;
}

.nv-et-ambient-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
}

.nv-et-ambient-grid button {
  padding: 7px 8px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: #d4d4d8;
  font-size: 10.5px;
  font-weight: 700;
  cursor: pointer;
}

.nv-et-ambient-grid button.is-on {
  background: #ffffff;
  color: #111111;
  border-color: #ffffff;
}

.nv-quiz-card {
  padding: 12px;
  border-radius: 13px;
  background: #f8f8fa;
  border: 1px solid #e4e4e7;
  margin-top: 9px;
}

.nv-quiz-q {
  font-size: 12.5px;
  font-weight: 900;
  color: #111111;
  margin-bottom: 8px;
}

.nv-quiz-opts {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.nv-quiz-opt {
  padding: 8px 10px;
  border-radius: 9px;
  background: #ffffff;
  border: 1px solid #d4d4d8;
  color: #18181b;
  font-size: 11.5px;
  font-weight: 700;
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  text-align: left;
}

.nv-quiz-opt.is-user {
  border-color: #111111;
  background: #f4f4f5;
}

.nv-quiz-opt.is-char {
  background: #111111;
  color: #ffffff;
}

.nv-quiz-opt em,
.nv-quiz-opt b {
  font-size: 9.5px;
  padding: 1px 6px;
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.1);
  font-style: normal;
}

.nv-quiz-opt.is-char b {
  background: #ffffff;
  color: #111111;
}

.nv-quiz-reveal {
  margin-top: 8px;
  padding: 7px 10px;
  border-radius: 8px;
  background: #ffffff;
  border-left: 3px solid #111111;
  font-size: 11px;
  color: #3f3f46;
  line-height: 1.5;
}

/* 迷津 · LABYRINTH 专属卡片 */
.nv-tarot-spread-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}

.nv-tarot-card {
  padding: 11px 8px;
  border-radius: 14px;
  background: #111111;
  color: #ffffff;
  border: 1px solid #27272a;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  cursor: pointer;
  min-height: 186px;
  justify-content: space-between;
  transition: transform 0.2s ease;
}

.nv-tarot-card.is-flipped {
  background: #ffffff;
  color: #111111;
  border: 1.5px solid #111111;
}

.nv-tc-slot {
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: 0.04em;
  opacity: 0.8;
}

.nv-tc-emblem {
  margin: 6px 0;
}

.nv-tc-name {
  font-size: 11.5px;
  font-weight: 900;
  margin-bottom: 4px;
}

.nv-tc-desc {
  font-size: 10px;
  line-height: 1.45;
  opacity: 0.88;
}

.nv-tc-hint {
  font-size: 9px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
  margin-top: 6px;
}

.nv-tarot-card.is-flipped .nv-tc-hint {
  background: #111111;
  color: #ffffff;
}

.nv-polygraph-instrument-card {
  padding: 14px;
  border-radius: 18px;
  background: #111111;
  color: #ffffff;
  margin-bottom: 10px;
}

.nv-pi-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.nv-pi-alert-badge {
  padding: 3px 8px;
  border-radius: 999px;
  background: #ffffff;
  color: #111111;
  font-size: 9.5px;
  font-weight: 900;
}

.nv-pi-wave-svg {
  width: 100%;
  height: 44px;
  margin: 4px 0 8px;
}

.nv-maze-stepper {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 12px 0;
  padding: 0 8px;
}

.nv-maze-node {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
}

.nv-maze-node span {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #f4f4f5;
  border: 1px solid #d4d4d8;
  color: #71717a;
  font-size: 11px;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
}

.nv-maze-node.is-active span {
  background: #111111;
  color: #ffffff;
  border-color: #111111;
}

.nv-maze-node small {
  font-size: 10px;
  font-weight: 800;
  color: #3f3f46;
}

.nv-maze-line {
  flex: 1;
  height: 2px;
  background: #d4d4d8;
  margin: 0 8px 14px;
}

.nv-maze-scene-box {
  padding: 12px;
  border-radius: 12px;
  background: #111111;
  color: #ffffff;
  font-size: 12.5px;
  line-height: 1.68;
}

.nv-maze-choice-btn {
  padding: 10px 12px;
  border-radius: 11px;
  background: #f8f8fa;
  border: 1px solid #d4d4d8;
  color: #111111;
  font-size: 12px;
  font-weight: 800;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  text-align: left;
}

.nv-maze-choice-btn:active {
  background: #111111;
  color: #ffffff;
}

.nv-pact-scroll-card {
  padding: 15px;
  border-radius: 16px;
  background: #ffffff;
  border: 1.5px solid #111111;
  margin-bottom: 10px;
}

.nv-psc-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.nv-psc-title {
  font-size: 14px;
  font-weight: 900;
  color: #111111;
}

.nv-psc-seal {
  padding: 2px 8px;
  border-radius: 4px;
  background: #111111;
  color: #ffffff;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: 0.1em;
}

.nv-psc-clause {
  font-size: 12.5px;
  color: #27272a;
  line-height: 1.68;
  padding: 10px 12px;
  border-radius: 10px;
  background: #f8f8fa;
  margin-bottom: 10px;
}

.nv-psc-stamps {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

.nv-psc-fp {
  flex: 1;
  padding: 7px 10px;
  border-radius: 9px;
  border: 1px dashed #a1a1aa;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 10.5px;
}

.nv-psc-fp span {
  font-size: 9px;
  color: #71717a;
}

.nv-psc-fp.is-char {
  background: #111111;
  color: #ffffff;
  border-style: solid;
  border-color: #111111;
}

.nv-psc-fp.is-char span {
  color: #a1a1aa;
}


/* v119 NightVeil Horizontal Carousel & Comment Reply Styling */
.noctis-shell [style*="overflow-x:auto"],
.noctis-shell [style*="overflow-x: auto"],
.nv-h-carousel {
  touch-action: pan-x pan-y !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior-x: contain !important;
}
.nv-cmt-reply-list {
  margin-top: 7px;
  padding: 7px 9px;
  border-radius: 9px;
  background: #f1f1f4;
  border-left: 2.5px solid #18181b;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.nv-cmt-reply-item {
  font-size: 11px;
  line-height: 1.5;
  color: #27272a;
}


/* ============================================================================
   ROUND 56 FIXES:
   1) Smooth Horizontal Touch & Mouse-Drag Scrolling for .noctis-cat-rail
   2) Continuous 360deg Spin Animation for ↻ During API Refresh (.nv-spin-ico / .lily-spin-ico)
   ============================================================================ */
@keyframes nvSpin360 {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.nv-spin-ico,
.lily-spin-ico {
  display: inline-block !important;
  animation: nvSpin360 0.72s linear infinite !important;
  transform-origin: 50% 50% !important;
  line-height: 1 !important;
}

.mono-btn.is-api-busy {
  opacity: 0.92 !important;
}

.noctis-shell {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: hidden !important;
}

.noctis-cat-rail {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  gap: 7px !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-x pan-y !important;
  overscroll-behavior-x: contain !important;
  padding: 6px 12px 10px !important;
  background: #ffffff !important;
  border-bottom: 1px solid #e4e4e7 !important;
  margin-bottom: 10px !important;
  scrollbar-width: none !important;
  cursor: grab !important;
  user-select: none !important;
}
.noctis-cat-rail:active {
  cursor: grabbing !important;
}
.noctis-cat-rail::-webkit-scrollbar {
  display: none !important;
}
.noctis-cat-pill {
  flex: 0 0 auto !important;
  touch-action: pan-x pan-y !important;
}
