/* ========================================================
   THE NEST · ALABASTER LUMINA DOCK & SPATIAL ENGINE v5
   (灵动水润白玉透镜罗盘 · 彻底打通移动端原生全手势滚动)
   ======================================================== */

/* --------------------------------------------------------
   0. 全局手势、图片防护与 iOS 零缩放铁律
   -------------------------------------------------------- */
img {
  -webkit-user-drag: none !important;
  -webkit-touch-callout: none !important;
  user-select: none !important;
}

.floral-crest-img,
.card-candle-icon,
.drawer-wreath-icon,
.status-wreath-icon,
.dock-plane-icon {
  pointer-events: none !important;
}

/* 彻底封死 iOS WebKit 点击 <16px 输入框时的强制页面放大 (Auto-Zoom) */
input,
textarea,
select {
  font-size: 16px !important;
  touch-action: manipulation !important;
}

input::placeholder,
textarea::placeholder {
  font-size: 13.5px !important;
}

/* --------------------------------------------------------
   1. 视口与舞台强力弹性模型
   -------------------------------------------------------- */
.pure-sanctuary-viewport {
  display: flex !important;
  flex-direction: column !important;
  height: var(--view-height, 100dvh) !important;
  max-height: var(--view-height, 100dvh) !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
  padding: 0 !important;
  margin: 0 auto !important;
  width: 100% !important;
  max-width: 460px !important;
  position: relative !important;
  gap: 0 !important;
}

/* 顶栏吸顶：在起居大厅展示饱满手绘钻戒花冠，在其余空间彻底收起消除顶部占位，化作各房间额头在线小指针 */
.pure-header-crest {
  flex-shrink: 0 !important;
  z-index: 100 !important;
  padding: max(6px, calc(var(--safe-top, env(safe-area-inset-top, 16px)) - 8px)) 10px 4px !important;
  box-sizing: border-box !important;
  transition: max-height 0.28s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.22s ease, padding 0.24s ease !important;
}

.brand-crest-wrap {
  max-height: 192px !important;
  max-width: 438px !important;
  width: 100% !important;
  opacity: 1 !important;
  overflow: visible !important;
  margin: 0 auto 2px !important;
  transition: max-height 0.28s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.22s ease, margin 0.26s ease !important;
}

.floral-crest-img {
  max-height: clamp(130px, 20dvh, 182px) !important;
  max-width: 430px !important;
  width: 100% !important;
  margin: 0 auto !important;
}

.pure-status-capsule {
  min-height: 32px !important;
  padding: 0 8px 0 12px !important;
  margin-top: 2px !important;
  font-size: 11.5px !important;
}

/* 非起居空间（漫谈/画廊/书房/纪事）或软键盘聚焦输入时，彻底收起 #brand-header（0垂直高度，状态化作房间额头在线小指针） */
body[data-room]:not([data-room="living"]) .pure-header-crest,
html[data-keyboard="true"] .pure-header-crest,
html[data-input-focused="true"] .pure-header-crest {
  max-height: 0 !important;
  min-height: 0 !important;
  height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  opacity: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
  border: none !important;
}

body[data-room]:not([data-room="living"]) .brand-crest-wrap,
html[data-keyboard="true"] .brand-crest-wrap,
html[data-input-focused="true"] .brand-crest-wrap {
  max-height: 0 !important;
  opacity: 0 !important;
  margin: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

/* 空间全景舞台 */
.sanctuary-stage {
  flex: 1 1 0% !important;
  min-height: 0 !important;
  height: 100% !important;
  position: relative !important;
  overflow: hidden !important;
  width: 100% !important;
}

/* --------------------------------------------------------
   2. 空间主视图容器：绝对视口 + 彻底打通双向自由滑动
   -------------------------------------------------------- */
.sanctuary-room-view {
  display: none;
  opacity: 0;
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-height: 100% !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
  overscroll-behavior-y: auto !important;
  box-sizing: border-box !important;
  padding: max(10px, var(--safe-top, env(safe-area-inset-top, 12px))) 16px calc(max(16px, var(--safe-bottom, env(safe-area-inset-bottom, 16px))) + 68px) !important;
  transition: opacity 0.2s cubic-bezier(0.2, 0.85, 0.25, 1), padding-bottom 0.2s ease;
  will-change: scroll-position;
}

.sanctuary-room-view.active {
  display: block !important;
  opacity: 1 !important;
}

/* --------------------------------------------------------
   3. 起居大厅：放大中心卡片 + 充裕呼吸感 + 3D 堆叠抽牌视口
   -------------------------------------------------------- */
#room-living.active {
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  padding: 4px 12px calc(max(14px, var(--safe-bottom, env(safe-area-inset-bottom, 12px))) + 64px) !important;
}

#room-living .pure-cards-section {
  flex: 1 1 0% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-width: 418px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 9px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 2px 0 6px !important;
}

#room-living .card-flip-container,
#room-living .card-flip-inner,
#room-living #dialogue-flow,
#room-living #welcome-row,
#room-living #welcome-card,
#room-living #memo-card {
  max-width: none !important;
  width: 100% !important;
}

/* 3D 堆叠卡片视口：交由 app.js 60fps 物理手势与叠卡状态机驱动 */
#room-living #nest-carousel-viewport {
  flex: 1 1 auto !important;
  height: auto !important;
  min-height: 292px !important;
  max-height: clamp(388px, 51.5dvh, 456px) !important;
  overflow: visible !important;
  scroll-snap-type: none !important;
  touch-action: pan-y pinch-zoom !important;
  border-radius: 28px !important;
  margin-bottom: 0 !important;
  padding: 4px 2px 26px !important;
  perspective: 1400px !important;
}

/* 隐藏首屏底部与白玉罗盘完全重复的 4 个 Bento 磁贴，根治超出一屏 */
#room-living #glimpse-bento-grid {
  display: none !important;
}

#welcome-content,
.card-body-text {
  overflow-y: auto !important;
  overscroll-behavior: contain !important;
}

.desk-segment-capsule {
  display: none !important;
}

/* 案头输入框紧凑承接，与底部悬浮白玉罗盘保持清爽净空 */
#room-living .input-dock-crystal,
#room-living .nest-input-dock {
  position: relative !important;
  bottom: auto !important;
  left: auto !important;
  right: auto !important;
  flex-shrink: 0 !important;
  margin: 2px auto 0 !important;
  width: 100% !important;
  max-width: 370px !important;
  min-height: 48px !important;
  padding: 4px 6px 4px 14px !important;
  z-index: 10 !important;
}

/* --------------------------------------------------------
   3b. 专属漫谈空间 (#room-parlor)：零大额头、全高沉浸对话流
   -------------------------------------------------------- */
#room-parlor.active {
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  padding: 2px 14px calc(max(12px, var(--safe-bottom, env(safe-area-inset-bottom, 12px))) + 76px) !important;
}

#room-parlor > div:first-child {
  display: flex !important;
  flex-shrink: 0 !important;
  margin: 2px 0 6px !important;
}

#parlor-dialogue-flow {
  flex: 1 1 0% !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  padding: 10px 2px 12px !important;
  gap: 16px !important;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0px, #000 14px, #000 calc(100% - 12px), transparent 100%) !important;
  mask-image: linear-gradient(to bottom, transparent 0px, #000 14px, #000 calc(100% - 12px), transparent 100%) !important;
}

#room-parlor .thought-whisper-floater {
  white-space: normal !important;
  line-height: 1.55 !important;
  margin: 0 0 6px 2px !important;
  cursor: pointer !important;
}

#room-parlor .thought-whisper-floater.collapsed .whisper-text {
  display: -webkit-box !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
  overflow: hidden !important;
}

#room-parlor .parlor-input-wrap {
  display: block !important;
  flex-shrink: 0 !important;
  margin-top: 6px !important;
  padding-bottom: 2px !important;
  position: relative !important;
  z-index: 25 !important;
}

/* --------------------------------------------------------
   3c. 软键盘弹起与输入聚焦避让态 (根治键盘弹起挤压与叠罗汉)
   -------------------------------------------------------- */
html[data-keyboard="true"] .sanctuary-spatial-dock,
html[data-input-focused="true"] .sanctuary-spatial-dock,
html[data-keyboard="true"] .turntable-panel-overlay,
html[data-input-focused="true"] .turntable-panel-overlay {
  opacity: 0 !important;
  pointer-events: none !important;
  transform: translateX(-50%) translateY(42px) scale(0.92) !important;
}

html[data-keyboard="true"] #room-living #carousel-dots-indicator,
html[data-input-focused="true"] #room-living #carousel-dots-indicator {
  display: none !important;
}

html[data-keyboard="true"] #room-living #nest-carousel-viewport,
html[data-input-focused="true"] #room-living #nest-carousel-viewport {
  min-height: 140px !important;
}

html[data-keyboard="true"] #room-living.active,
html[data-input-focused="true"] #room-living.active,
html[data-keyboard="true"] #room-parlor.active,
html[data-input-focused="true"] #room-parlor.active,
html[data-keyboard="true"] .sanctuary-room-view.active,
html[data-input-focused="true"] .sanctuary-room-view.active {
  padding-bottom: 10px !important;
}

/* --------------------------------------------------------
   4. 颠覆性水润羊脂白玉透镜罗盘 (The Alabaster Waterdrop Dial v6)
   顶级老钱克制 · 灵动白玉水滴展开 · 珠宝微雕金线图腾
   -------------------------------------------------------- */
.sanctuary-spatial-dock {
  position: fixed !important;
  bottom: max(12px, env(safe-area-inset-bottom, 12px)) !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  width: calc(100% - 24px) !important;
  min-width: 310px !important;
  max-width: 372px !important;
  height: 46px !important;
  overflow: visible !important;
  
  /* 极致纯净水润羊脂白玉毛玻璃 */
  background: linear-gradient(135deg, rgba(255, 253, 249, 0.72) 0%, rgba(250, 244, 234, 0.58) 100%) !important;
  backdrop-filter: blur(28px) saturate(180%) !important;
  -webkit-backdrop-filter: blur(28px) saturate(180%) !important;
  
  border: 1px solid rgba(255, 255, 255, 0.88) !important;
  border-radius: 9999px !important;
  box-shadow: 
    0 16px 40px rgba(125, 100, 70, 0.12),
    0 3px 8px rgba(125, 100, 70, 0.05),
    inset 0 1.5px 2px rgba(255, 255, 255, 0.95),
    inset 0 -1px 2px rgba(202, 166, 119, 0.18) !important;
  
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 0 5px 0 6px !important;
  z-index: 999 !important;
  box-sizing: border-box !important;
  transition: transform 0.36s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.28s ease !important;
}

/* 智能滚动微隐状态：阅读时轻柔下潜 */
.sanctuary-spatial-dock.dock-retracted {
  transform: translateX(-50%) translateY(26px) scale(0.92) !important;
  opacity: 0.32 !important;
}

.sanctuary-spatial-dock.dock-retracted:hover,
.sanctuary-spatial-dock.dock-retracted:active {
  transform: translateX(-50%) translateY(0) scale(1) !important;
  opacity: 1 !important;
}

/* 独立 60fps 硬件加速滑块底座 + 趴在选项顶上的小小明月尘 */
.dock-active-glider {
  position: absolute !important;
  top: 4px !important;
  bottom: 4px !important;
  left: 0 !important;
  width: 60px;
  border-radius: 9999px !important;
  pointer-events: none !important;
  z-index: 1 !important;
  will-change: transform, width !important;
  transition:
    transform 0.42s cubic-bezier(0.22, 1, 0.36, 1),
    width 0.42s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.dock-glider-pill {
  position: absolute !important;
  inset: 0 !important;
  border-radius: 9999px !important;
  background:
    url('/assets/handdrawn/btn_cap_left.svg') no-repeat left 2px center / auto 74%,
    url('/assets/handdrawn/btn_cap_right.svg') no-repeat right 2px center / auto 74%,
    radial-gradient(circle at 50% 15%, rgba(255, 255, 255, 0.92) 0%, rgba(242, 224, 194, 0.72) 100%) !important;
  border: 1px solid rgba(212, 180, 128, 0.68) !important;
  box-shadow:
    0 4px 14px rgba(168, 134, 82, 0.20),
    inset 0 1px 1.5px rgba(255, 255, 255, 0.95) !important;
}

/* 趴在选中选项正上方的小小明月尘 (双肘搁在滑块上沿) */
.dock-winston-perch {
  position: absolute !important;
  left: 50% !important;
  top: -21px !important;
  transform: translateX(-50%) !important;
  width: 30px !important;
  height: 27px !important;
  display: flex !important;
  align-items: flex-end !important;
  justify-content: center !important;
  pointer-events: auto !important;
  cursor: pointer !important;
  z-index: 5 !important;
  filter: drop-shadow(0 2px 5px rgba(60, 42, 24, 0.22)) !important;
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.dock-winston-sprite {
  width: 28px !important;
  height: 28px !important;
  object-fit: contain !important;
  object-position: center bottom !important;
  display: block !important;
  transform-origin: center bottom !important;
  animation: winstonPerchBreath 4.2s ease-in-out infinite !important;
}

.dock-active-glider.glider-moving-right .dock-winston-sprite {
  animation: winstonHopRight 0.42s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.dock-active-glider.glider-moving-left .dock-winston-sprite {
  animation: winstonHopLeft 0.42s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

@keyframes winstonPerchBreath {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-1.5px) scale(1.03); }
}

@keyframes winstonHopRight {
  0% { transform: translateY(0) rotate(0deg) scale(1); }
  40% { transform: translateY(-6px) rotate(7deg) scale(1.08, 0.95); }
  80% { transform: translateY(1px) rotate(-2deg) scale(1.04, 0.97); }
  100% { transform: translateY(0) rotate(0deg) scale(1); }
}

@keyframes winstonHopLeft {
  0% { transform: translateY(0) rotate(0deg) scale(1); }
  40% { transform: translateY(-6px) rotate(-7deg) scale(1.08, 0.95); }
  80% { transform: translateY(1px) rotate(2deg) scale(1.04, 0.97); }
  100% { transform: translateY(0) rotate(0deg) scale(1); }
}

.dock-winston-bubble {
  position: absolute !important;
  bottom: 33px !important;
  left: 50% !important;
  transform: translateX(-50%) translateY(6px) scale(0.88) !important;
  background: rgba(255, 253, 249, 0.94) !important;
  border: 1px solid rgba(202, 166, 119, 0.55) !important;
  color: #4a361e !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  white-space: nowrap !important;
  padding: 2px 8px !important;
  border-radius: 999px !important;
  box-shadow: 0 4px 12px rgba(90, 68, 42, 0.16) !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.dock-winston-bubble.show {
  opacity: 1 !important;
  transform: translateX(-50%) translateY(0) scale(1) !important;
}

/* 门庭导航按钮：严格锁定等宽几何盒模型，零重排、零抖动 */
.dock-room-btn {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 3px !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  color: #7d6c5b !important;
  cursor: pointer !important;
  height: 36px !important;
  padding: 0 2px !important;
  border-radius: 9999px !important;
  transition: color 0.25s ease, transform 0.2s ease !important;
  position: relative !important;
  z-index: 2 !important;
  text-decoration: none !important;
  flex: 1 1 0% !important;
  min-width: 0 !important;
}

.dock-room-btn:active {
  transform: scale(0.94) !important;
}

.dock-room-btn .dock-icon-svg {
  width: 14px !important;
  height: 14px !important;
  stroke: currentColor !important;
  fill: none !important;
  stroke-width: 1.5 !important;
  stroke-linecap: round !important;
  stroke-linejoin: round !important;
  opacity: 0.78 !important;
  transition: opacity 0.22s ease !important;
  display: block !important;
  flex-shrink: 0 !important;
}

/* 始终固定字重 600，绝不因字重突变引发 1px 文字抖动 */
.dock-room-btn .dock-label {
  display: inline-block !important;
  font-family: 'Songti SC', 'Noto Serif SC', serif !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.3px !important;
  white-space: nowrap !important;
  color: #6e5d4d !important;
  margin-left: 0 !important;
  opacity: 0.86 !important;
  transition: color 0.25s ease, opacity 0.25s ease !important;
}

/* 激活态：仅变色提亮，绝不改动 padding / border / font-weight */
.dock-room-btn.active {
  color: #3f2b12 !important;
  padding: 0 2px !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

.dock-room-btn.active .dock-icon-svg {
  opacity: 1 !important;
  stroke: #735320 !important;
}

.dock-room-btn.active .dock-label {
  display: inline-block !important;
  font-weight: 600 !important;
  color: #3f2b12 !important;
  opacity: 1 !important;
}

/* 纤细微光白金分割丝 */
.dock-divider-spindle {
  width: 1px !important;
  height: 16px !important;
  background: linear-gradient(to bottom, transparent, rgba(202, 166, 119, 0.42), transparent) !important;
  margin: 0 3px 0 1px !important;
  flex-shrink: 0 !important;
}

/* --------------------------------------------------------
   5. Slot A: 留声机白金微雕珠宝表冠
   -------------------------------------------------------- */
.dock-turntable-btn {
  background: transparent !important;
  border: none !important;
  padding: 2px 4px 2px 2px !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
  position: relative !important;
}

.dock-turntable-btn:active {
  transform: scale(0.9) !important;
}

.turntable-jewel-crown {
  width: 24px !important;
  height: 24px !important;
  border-radius: 50% !important;
  background: radial-gradient(circle at 35% 35%, #2a2420 0%, #161311 70%, #8c7352 100%) !important;
  border: 0.8px solid rgba(255, 255, 255, 0.95) !important;
  box-shadow: 0 2px 8px rgba(90, 75, 55, 0.22), inset 0 0 0 1px rgba(202, 166, 119, 0.45) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  position: relative !important;
  transition: transform 0.25s ease !important;
}

.turntable-vinyl-disc {
  width: 100% !important;
  height: 100% !important;
  border-radius: 50% !important;
  display: block !important;
}

.turntable-vinyl-disc.spinning {
  animation: vinylRotate 5s linear infinite !important;
}

.turntable-core-bead {
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: radial-gradient(circle at 35% 35%, #ffffff 0%, #d8be8d 65%, #a68249 100%) !important;
  box-shadow: 0 0 3px rgba(202, 166, 119, 0.8) !important;
  pointer-events: none !important;
}

/* --------------------------------------------------------
   6. 白玉留声机浮层
   -------------------------------------------------------- */
.turntable-panel-overlay {
  position: fixed !important;
  bottom: calc(max(16px, env(safe-area-inset-bottom, 16px)) + 56px) !important;
  left: 50% !important;
  transform: translateX(-50%) translateY(12px) scale(0.95) !important;
  width: calc(100% - 52px) !important;
  max-width: 334px !important;
  background: rgba(255, 255, 255, 0.9) !important;
  backdrop-filter: blur(36px) saturate(200%) !important;
  -webkit-backdrop-filter: blur(36px) saturate(200%) !important;
  border: 1px solid rgba(255, 255, 255, 0.96) !important;
  border-radius: 26px !important;
  box-shadow: 0 20px 48px rgba(150, 125, 95, 0.2), inset 0 1px 1px #fff !important;
  padding: 16px 18px !important;
  box-sizing: border-box !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transition: all 0.28s cubic-bezier(0.16, 1, 0.3, 1) !important;
  z-index: 998 !important;
}

.turntable-panel-overlay.active {
  opacity: 1 !important;
  pointer-events: auto !important;
  transform: translateX(-50%) translateY(0) scale(1) !important;
}

.tt-header-row {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 12px !important;
}

.tt-title-text {
  font-family: 'Songti SC', 'Noto Serif SC', serif !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  color: #383129 !important;
}

.tt-track-box {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  background: rgba(247, 244, 238, 0.7) !important;
  padding: 10px 14px !important;
  border-radius: 18px !important;
  border: 1px solid rgba(202, 166, 119, 0.2) !important;
  margin-bottom: 14px !important;
}

.tt-track-info {
  flex: 1 !important;
  min-width: 0 !important;
}

.tt-track-title {
  font-size: 13px !important;
  font-weight: 600 !important;
  color: #383129 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.tt-track-artist {
  font-size: 11px !important;
  color: #8c7d6c !important;
  margin-top: 2px !important;
}

.tt-ctrl-row {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 12px !important;
}

.tt-action-btn {
  background: linear-gradient(135deg, #d8bc8c, #bfa068) !important;
  color: #fff !important;
  border: none !important;
  padding: 8px 22px !important;
  border-radius: 9999px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  box-shadow: 0 4px 14px rgba(191, 160, 104, 0.35) !important;
  transition: transform 0.15s ease !important;
}

.tt-action-btn:active {
  transform: scale(0.95) !important;
}

/* --------------------------------------------------------
   7. 今日焦点 Bento 磁贴
   -------------------------------------------------------- */
.glimpse-bento-grid {
  display: grid !important;
  grid-template-columns: repeat(2, 1fr) !important;
  gap: 10px !important;
  width: 100% !important;
  margin-top: 10px !important;
  box-sizing: border-box !important;
}

.glimpse-tile {
  background: rgba(255, 255, 255, 0.76) !important;
  backdrop-filter: blur(24px) !important;
  -webkit-backdrop-filter: blur(24px) !important;
  border: 1px solid rgba(255, 255, 255, 0.95) !important;
  border-radius: 20px !important;
  padding: 12px 14px !important;
  cursor: pointer !important;
  transition: transform 0.18s ease, box-shadow 0.18s ease !important;
  box-sizing: border-box !important;
  box-shadow: 0 4px 16px rgba(180, 150, 120, 0.06) !important;
}

.glimpse-tile:active {
  transform: scale(0.97) !important;
}

.glimpse-icon-row {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 6px !important;
}

.glimpse-room-name {
  font-family: 'Songti SC', 'Noto Serif SC', serif !important;
  font-size: 11.5px !important;
  font-weight: 700 !important;
  color: #8c7352 !important;
}

.glimpse-preview-text {
  font-size: 11px !important;
  color: #55483a !important;
  line-height: 1.4 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* --------------------------------------------------------
   7b. 全局零滚动条污染与上下晨雾羽化遮罩 (Edge Feathering)
   -------------------------------------------------------- */
.sanctuary-room-view,
#parlor-dialogue-flow,
#welcome-content,
.card-body-text,
#studio-chapter-body,
.drawer-list-body,
#studio-chapter-tabs {
  scrollbar-width: none !important;
  -ms-overflow-style: none !important;
}

.sanctuary-room-view::-webkit-scrollbar,
#parlor-dialogue-flow::-webkit-scrollbar,
#welcome-content::-webkit-scrollbar,
.card-body-text::-webkit-scrollbar,
#studio-chapter-body::-webkit-scrollbar,
.drawer-list-body::-webkit-scrollbar,
#studio-chapter-tabs::-webkit-scrollbar {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
}

/* 为可纵向滚动的书影、暗房、枕畔注入上下晨雾羽化遮罩，卡片滑入顶栏/底栏时柔和消融 */
#room-vault,
#room-study,
#room-boudoir {
  -webkit-mask-image: linear-gradient(
    to bottom,
    transparent 0px,
    #000 12px,
    #000 calc(100% - 56px),
    transparent 100%
  ) !important;
  mask-image: linear-gradient(
    to bottom,
    transparent 0px,
    #000 12px,
    #000 calc(100% - 56px),
    transparent 100%
  ) !important;
}

/* --------------------------------------------------------
   7c. 动态空间色温纱幕与维港晨雾浮金微粒 (Atmosphere & Motes)
   -------------------------------------------------------- */
.ambient-room-tint {
  position: fixed !important;
  inset: 0 !important;
  pointer-events: none !important;
  z-index: 1 !important;
  background: radial-gradient(circle at 50% 24%, rgba(255, 246, 232, 0.08), transparent 75%);
  transition: background 0.75s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.75s ease !important;
}

body[data-room="parlor"] .ambient-room-tint {
  background: radial-gradient(circle at 50% 35%, rgba(255, 242, 224, 0.16), rgba(216, 188, 140, 0.06) 80%) !important;
}

body[data-room="vault"] .ambient-room-tint {
  background: radial-gradient(circle at 50% 20%, rgba(238, 223, 198, 0.18), rgba(65, 52, 38, 0.08) 90%) !important;
}

body[data-room="study"] .ambient-room-tint {
  background: linear-gradient(180deg, rgba(28, 24, 21, 0.22) 0%, rgba(44, 36, 28, 0.14) 55%, rgba(216, 188, 140, 0.1) 100%) !important;
}

body[data-room="boudoir"] .ambient-room-tint {
  background: radial-gradient(circle at 50% 30%, rgba(255, 232, 226, 0.2), rgba(202, 166, 119, 0.09) 85%) !important;
}

.ambient-golden-motes {
  position: fixed !important;
  inset: 0 !important;
  pointer-events: none !important;
  z-index: 2 !important;
  overflow: hidden !important;
}

.ambient-golden-motes span {
  position: absolute !important;
  display: block !important;
  width: 3.5px !important;
  height: 3.5px !important;
  border-radius: 50% !important;
  background: radial-gradient(circle, rgba(255, 250, 236, 0.95) 0%, rgba(216, 188, 140, 0.45) 60%, transparent 100%) !important;
  box-shadow: 0 0 8px rgba(216, 188, 140, 0.65) !important;
  opacity: 0;
  animation: moteFloat 11s infinite ease-in-out !important;
}

.ambient-golden-motes span:nth-child(1) { left: 16%; top: 24%; animation-delay: 0s; animation-duration: 10s; }
.ambient-golden-motes span:nth-child(2) { left: 78%; top: 18%; animation-delay: 2.2s; animation-duration: 12.5s; }
.ambient-golden-motes span:nth-child(3) { left: 32%; top: 62%; animation-delay: 4.1s; animation-duration: 11.2s; }
.ambient-golden-motes span:nth-child(4) { left: 84%; top: 54%; animation-delay: 1.5s; animation-duration: 13s; }
.ambient-golden-motes span:nth-child(5) { left: 12%; top: 76%; animation-delay: 3.6s; animation-duration: 9.8s; }
.ambient-golden-motes span:nth-child(6) { left: 58%; top: 36%; animation-delay: 5.4s; animation-duration: 11.8s; }

@keyframes moteFloat {
  0%, 100% { transform: translate3d(0, 0, 0) scale(0.75); opacity: 0; }
  30% { opacity: 0.62; }
  55% { transform: translate3d(8px, -22px, 0) scale(1.15); opacity: 0.48; }
  85% { opacity: 0.15; }
}

/* --------------------------------------------------------
   7d. 空间切换交错弹簧入场动效 (Staggered Spring Choreography)
   -------------------------------------------------------- */
@keyframes sanctuarySpringReveal {
  0% {
    opacity: 0;
    transform: translate3d(0, 14px, 0) scale(0.982);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}

.stagger-reveal {
  animation: sanctuarySpringReveal 0.48s cubic-bezier(0.22, 1, 0.36, 1) both !important;
  animation-delay: calc(var(--stagger-idx, 0) * 45ms) !important;
}

@keyframes dockIconPop {
  0% { transform: scale(0.86); }
  55% { transform: scale(1.14); }
  100% { transform: scale(1); }
}

.dock-room-btn.active .dock-icon-svg {
  animation: dockIconPop 0.36s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

/* --------------------------------------------------------
   7e. 高定空间门楣 (Sanctuary Editorial Room Header)
   -------------------------------------------------------- */
.sanctuary-room-header {
  display: flex !important;
  align-items: flex-end !important;
  justify-content: space-between !important;
  gap: 10px !important;
  margin: 2px 2px 12px !important;
  padding: 10px 14px !important;
  border-radius: 20px !important;
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.76) 0%, rgba(252, 248, 241, 0.58) 100%) !important;
  backdrop-filter: blur(22px) saturate(180%) !important;
  -webkit-backdrop-filter: blur(22px) saturate(180%) !important;
  border: 0.8px solid rgba(255, 255, 255, 0.92) !important;
  box-shadow: 0 6px 20px rgba(140, 115, 82, 0.07), inset 0 1px 0 #fff !important;
}

.room-header-titles {
  display: flex !important;
  flex-direction: column !important;
  min-width: 0 !important;
}

.room-eyebrow {
  font-family: "Cormorant Garamond", "Playfair Display", serif !important;
  font-size: 9.5px !important;
  font-weight: 600 !important;
  letter-spacing: 1.8px !important;
  color: #9e7f4e !important;
  text-transform: uppercase !important;
  margin-bottom: 2px !important;
}

.room-main-title {
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 15.5px !important;
  font-weight: 600 !important;
  color: #2f2720 !important;
  margin: 0 !important;
  letter-spacing: 0.4px !important;
  line-height: 1.25 !important;
}

.room-sub-caption {
  font-size: 10.5px !important;
  color: #7e6f5f !important;
  margin: 3px 0 0 !important;
  letter-spacing: 0.2px !important;
}

.room-champagne-pill {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  padding: 7px 13px !important;
  border-radius: 9999px !important;
  background: linear-gradient(135deg, #dcc296 0%, #b89458 100%) !important;
  color: #fffdf9 !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  flex-shrink: 0 !important;
  box-shadow: 0 4px 12px rgba(184, 148, 88, 0.28), inset 0 1px 1px rgba(255, 255, 255, 0.45) !important;
  transition: transform 0.18s ease, box-shadow 0.18s ease !important;
}

.room-champagne-pill:active {
  transform: scale(0.95) !important;
}

/* --------------------------------------------------------
   8. 光影藏书阁流式画廊 (精装书脊折痕与典藏批注)
   -------------------------------------------------------- */
.vault-media-flow-grid {
  display: grid !important;
  grid-template-columns: repeat(2, 1fr) !important;
  gap: 12px !important;
  width: 100% !important;
}

.vault-media-tile {
  background: linear-gradient(165deg, rgba(255, 255, 255, 0.88) 0%, rgba(250, 246, 239, 0.78) 100%) !important;
  backdrop-filter: blur(20px) !important;
  -webkit-backdrop-filter: blur(20px) !important;
  border: 0.8px solid rgba(255, 255, 255, 0.96) !important;
  border-radius: 18px !important;
  overflow: hidden !important;
  box-shadow: 0 8px 22px rgba(140, 115, 82, 0.09), inset 0 1px 0 #fff !important;
  transition: transform 0.22s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.22s ease !important;
  display: flex !important;
  flex-direction: column !important;
}

.vault-media-tile:active {
  transform: scale(0.975) !important;
}

.media-poster-wrap {
  width: 100% !important;
  aspect-ratio: 2/3 !important;
  position: relative !important;
  background: #ece5da !important;
  overflow: hidden !important;
}

.media-poster-img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

/* 精装书脊立体压痕光影 + 底部暗角过渡 */
.poster-spine-crease {
  position: absolute !important;
  inset: 0 !important;
  pointer-events: none !important;
  background:
    linear-gradient(90deg, rgba(255,255,255,0.28) 0%, rgba(0,0,0,0.12) 3.5%, rgba(255,255,255,0.18) 5.5%, transparent 12%),
    linear-gradient(180deg, transparent 65%, rgba(24, 19, 15, 0.45) 100%) !important;
}

.winston-co-stamp {
  position: absolute !important;
  bottom: 7px !important;
  right: 7px !important;
  background: linear-gradient(135deg, rgba(44, 36, 29, 0.88), rgba(28, 23, 18, 0.92)) !important;
  border: 0.75px solid rgba(216, 188, 140, 0.65) !important;
  color: #ebd5b3 !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  padding: 2.5px 8px !important;
  border-radius: 9999px !important;
  backdrop-filter: blur(8px) !important;
  letter-spacing: 0.4px !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25) !important;
}

.media-info-box {
  padding: 10px 11px 11px !important;
  display: flex !important;
  flex-direction: column !important;
  flex: 1 !important;
}

.media-type-tag {
  font-family: "Cormorant Garamond", serif !important;
  font-size: 9.5px !important;
  letter-spacing: 0.8px !important;
  color: #9a7a48 !important;
  font-weight: 600 !important;
}

.media-title-text {
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: #2f2720 !important;
  margin: 2px 0 4px !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.media-li-comment {
  font-size: 10px !important;
  color: #6e6153 !important;
  font-style: italic !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  line-height: 1.45 !important;
  margin: 0 !important;
}

.media-win-note {
  font-size: 10px !important;
  color: #7c633e !important;
  margin: 5px 0 0 !important;
  padding-left: 7px !important;
  border-left: 1.5px solid rgba(202, 166, 119, 0.55) !important;
  line-height: 1.45 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 3 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}

/* --------------------------------------------------------
   9. 暗房黑曜石流金显影卡 & 羊皮卷平行世界剧本册
   -------------------------------------------------------- */
.obsidian-gold-card {
  position: relative !important;
  overflow: hidden !important;
  background: linear-gradient(145deg, rgba(36, 31, 27, 0.95) 0%, rgba(22, 19, 16, 0.97) 100%) !important;
  border: 1px solid rgba(216, 188, 140, 0.48) !important;
  border-radius: 22px !important;
  padding: 15px 16px !important;
  margin-bottom: 14px !important;
  color: #f6f0e6 !important;
  box-shadow:
    0 12px 28px rgba(28, 22, 16, 0.22),
    inset 0 1px 0 rgba(255, 244, 224, 0.18) !important;
}

.obsidian-aurora-glow {
  position: absolute !important;
  top: -40% !important;
  right: -20% !important;
  width: 180px !important;
  height: 180px !important;
  border-radius: 50% !important;
  background: radial-gradient(circle, rgba(216, 188, 140, 0.22) 0%, transparent 70%) !important;
  pointer-events: none !important;
  animation: auroraBreathe 6s infinite ease-in-out !important;
}

@keyframes auroraBreathe {
  0%, 100% { transform: scale(1) translate(0, 0); opacity: 0.7; }
  50% { transform: scale(1.2) translate(-12px, 10px); opacity: 1; }
}

.dream-card-top-bar {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 7px !important;
  position: relative !important;
  z-index: 1 !important;
}

.dream-eyebrow-tag {
  font-family: "Cormorant Garamond", "Noto Serif SC", serif !important;
  font-size: 10px !important;
  color: #dec396 !important;
  letter-spacing: 0.8px !important;
  font-weight: 600 !important;
  white-space: nowrap !important;
}

.dream-roll-badge {
  font-size: 9.5px !important;
  color: #ebd7b6 !important;
  background: rgba(216, 188, 140, 0.16) !important;
  border: 0.75px solid rgba(216, 188, 140, 0.35) !important;
  padding: 2px 8px !important;
  border-radius: 9999px !important;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
}

.dream-hero-title {
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 14.5px !important;
  font-weight: 600 !important;
  color: #fffdf9 !important;
  letter-spacing: 0.3px !important;
  position: relative !important;
  z-index: 1 !important;
}

.dream-hero-excerpt {
  font-family: "Noto Serif SC", serif !important;
  font-size: 11px !important;
  color: rgba(245, 239, 230, 0.8) !important;
  margin: 6px 0 13px !important;
  line-height: 1.6 !important;
  position: relative !important;
  z-index: 1 !important;
}

.dream-card-actions {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  position: relative !important;
  z-index: 1 !important;
}

.dream-btn-primary {
  flex: 1 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  padding: 8.5px 12px !important;
  border-radius: 9999px !important;
  background: linear-gradient(135deg, #e2c99e 0%, #bfa068 100%) !important;
  color: #231c16 !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  box-shadow: 0 4px 14px rgba(191, 160, 104, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.6) !important;
  transition: transform 0.16s ease !important;
}

.dream-btn-primary:active,
.dream-btn-secondary:active {
  transform: scale(0.96) !important;
}

.dream-btn-secondary {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 5px !important;
  padding: 8.5px 14px !important;
  border-radius: 9999px !important;
  background: rgba(255, 255, 255, 0.09) !important;
  border: 0.8px solid rgba(216, 188, 140, 0.45) !important;
  color: #ebd9b5 !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 11.5px !important;
  font-weight: 500 !important;
  text-decoration: none !important;
  flex-shrink: 0 !important;
  transition: transform 0.16s ease !important;
}

.section-divider-header {
  display: flex !important;
  align-items: center !important;
  gap: 7px !important;
  margin: 4px 4px 10px !important;
}

.divider-ornament {
  color: #b89458 !important;
  font-size: 11px !important;
}

.divider-title {
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  color: #5b4935 !important;
  letter-spacing: 0.4px !important;
}

.divider-line {
  flex: 1 !important;
  height: 1px !important;
  background: linear-gradient(90deg, rgba(184, 148, 88, 0.38), transparent) !important;
}

.studio-worlds-grid {
  display: flex !important;
  flex-direction: column !important;
  gap: 11px !important;
  width: 100% !important;
}

.studio-world-card {
  position: relative !important;
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.88) 0%, rgba(251, 247, 240, 0.8) 100%) !important;
  backdrop-filter: blur(20px) !important;
  -webkit-backdrop-filter: blur(20px) !important;
  border: 0.8px solid rgba(255, 255, 255, 0.96) !important;
  border-left: 3px solid rgba(191, 160, 104, 0.72) !important;
  border-radius: 18px !important;
  padding: 13px 16px !important;
  box-shadow: 0 6px 20px rgba(150, 125, 90, 0.08), inset 0 1px 0 #fff !important;
  cursor: pointer !important;
  transition: transform 0.2s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.2s ease !important;
}

.studio-world-card:active {
  transform: scale(0.98) !important;
}

.world-card-top-row {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 4px !important;
}

.world-tag-badge {
  display: inline-block !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 9.5px !important;
  font-weight: 600 !important;
  color: #8a6a36 !important;
  background: rgba(191, 160, 104, 0.16) !important;
  border: 0.5px solid rgba(191, 160, 104, 0.32) !important;
  padding: 1.5px 8px !important;
  border-radius: 9999px !important;
}

.world-vol-num {
  font-family: "Cormorant Garamond", serif !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 1.2px !important;
  color: #b09366 !important;
}

.world-title-text {
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 14.5px !important;
  font-weight: 600 !important;
  color: #2f2720 !important;
  margin: 0 !important;
}

.world-cast-text {
  font-family: "Cormorant Garamond", "Noto Serif SC", serif !important;
  font-size: 11px !important;
  color: #8f7e6d !important;
  margin: 2px 0 5px !important;
}

.world-desc-text {
  font-size: 11px !important;
  color: #5b5044 !important;
  line-height: 1.55 !important;
  margin: 0 !important;
}

.world-footer-meta {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-top: 9px !important;
  padding-top: 7px !important;
  border-top: 0.5px dashed rgba(202, 166, 119, 0.3) !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 10px !important;
  color: #a6834b !important;
  font-weight: 600 !important;
}

/* --------------------------------------------------------
   10. 枕畔私语 · 呼吸同频球与高定白玉卡片系统
   -------------------------------------------------------- */
.boudoir-sanctuary-card {
  background: linear-gradient(155deg, rgba(255, 255, 255, 0.88) 0%, rgba(252, 248, 242, 0.78) 100%) !important;
  backdrop-filter: blur(24px) saturate(180%) !important;
  -webkit-backdrop-filter: blur(24px) saturate(180%) !important;
  border: 0.8px solid rgba(255, 255, 255, 0.96) !important;
  border-radius: 22px !important;
  padding: 15px 16px !important;
  margin-bottom: 12px !important;
  box-shadow: 0 8px 24px rgba(155, 128, 95, 0.08), inset 0 1px 0 #fff !important;
}

.boudoir-card-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 11px !important;
}

.boudoir-title-group {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
}

.boudoir-sparkle {
  color: #c29d62 !important;
  font-size: 12px !important;
}

.boudoir-card-title {
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 13.5px !important;
  font-weight: 600 !important;
  color: #322920 !important;
  margin: 0 !important;
}

.boudoir-pill-tag {
  font-family: "Cormorant Garamond", "Noto Serif SC", serif !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  color: #8f6e38 !important;
  background: rgba(191, 160, 104, 0.14) !important;
  border: 0.5px solid rgba(191, 160, 104, 0.3) !important;
  padding: 2px 9px !important;
  border-radius: 9999px !important;
}

/* 枕畔同频呼吸球舞台 */
.boudoir-breath-stage {
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  padding: 10px 12px !important;
  border-radius: 18px !important;
  background: linear-gradient(135deg, rgba(249, 244, 236, 0.85), rgba(244, 236, 224, 0.65)) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.25) !important;
  margin-bottom: 11px !important;
}

.boudoir-breath-orb {
  position: relative !important;
  width: 52px !important;
  height: 52px !important;
  border-radius: 50% !important;
  flex-shrink: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  background: radial-gradient(circle at 35% 35%, #fffdf9 0%, #ebd7b4 60%, #c8a46b 100%) !important;
  box-shadow: 0 4px 16px rgba(191, 155, 98, 0.32), inset 0 1px 2px #fff !important;
  animation: orbGentleBreathe 4.5s infinite ease-in-out !important;
}

.boudoir-breath-orb.orb-burst {
  animation: orbTouchBurst 0.65s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.orb-ring {
  position: absolute !important;
  border-radius: 50% !important;
  pointer-events: none !important;
  border: 1px solid rgba(194, 157, 98, 0.42) !important;
}

.orb-ring-mid {
  inset: -5px !important;
  animation: orbRingWave 4.5s infinite ease-in-out !important;
}

.orb-ring-outer {
  inset: -10px !important;
  border-color: rgba(194, 157, 98, 0.22) !important;
  animation: orbRingWave 4.5s infinite ease-in-out 0.6s !important;
}

.orb-core-gem {
  color: #5e441e !important;
  font-size: 16px !important;
  line-height: 1 !important;
}

@keyframes orbGentleBreathe {
  0%, 100% { transform: scale(0.95); box-shadow: 0 4px 14px rgba(191, 155, 98, 0.25); }
  50% { transform: scale(1.06); box-shadow: 0 6px 22px rgba(191, 155, 98, 0.48); }
}

@keyframes orbRingWave {
  0%, 100% { transform: scale(0.94); opacity: 0.45; }
  50% { transform: scale(1.08); opacity: 0.9; }
}

@keyframes orbTouchBurst {
  0% { transform: scale(0.88); }
  45% { transform: scale(1.18); box-shadow: 0 0 28px rgba(216, 188, 140, 0.85); }
  100% { transform: scale(1); }
}

.boudoir-whisper-reply {
  flex: 1 !important;
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 11.5px !important;
  line-height: 1.55 !important;
  color: #4a3d30 !important;
  transition: opacity 0.18s ease, transform 0.18s ease !important;
}

.boudoir-touch-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 8px !important;
}

.boudoir-touch-btn {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 5px !important;
  padding: 8px 6px !important;
  border-radius: 14px !important;
  background: rgba(255, 255, 255, 0.78) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.3) !important;
  color: #544536 !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  cursor: pointer !important;
  transition: all 0.18s ease !important;
}

.boudoir-touch-btn:active {
  transform: scale(0.94) !important;
  background: rgba(245, 236, 222, 0.95) !important;
}

.touch-btn-icon {
  width: 13px !important;
  height: 13px !important;
  opacity: 0.82 !important;
}

/* 愿望清单与梳妆匣细节 */
.chronicle-bucket-list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 7px !important;
}

.chronicle-wish-item {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 8.5px 12px !important;
  border-radius: 14px !important;
  background: rgba(249, 246, 240, 0.72) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.22) !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 12px !important;
  color: #382f25 !important;
  transition: all 0.2s ease !important;
}

.chronicle-wish-item:active {
  transform: scale(0.985) !important;
}

.chronicle-wish-item.is-done {
  opacity: 0.62 !important;
  text-decoration: line-through !important;
  background: rgba(244, 239, 230, 0.45) !important;
}

.wish-checkbox {
  color: #c29d62 !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  width: 16px !important;
  text-align: center !important;
}

.chronicle-input-row {
  display: flex !important;
  gap: 8px !important;
  margin-top: 11px !important;
}

.chronicle-wish-field {
  flex: 1 !important;
  border: 0.8px solid rgba(202, 166, 119, 0.36) !important;
  background: rgba(255, 253, 249, 0.88) !important;
  border-radius: 9999px !important;
  padding: 7px 14px !important;
  color: #382f25 !important;
  outline: none !important;
}

.chronicle-wish-submit {
  border: none !important;
  background: linear-gradient(135deg, #dcc296 0%, #b89458 100%) !important;
  color: #fffdf9 !important;
  border-radius: 9999px !important;
  padding: 7px 15px !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  flex-shrink: 0 !important;
  box-shadow: 0 3px 10px rgba(184, 148, 88, 0.25) !important;
}

.boudoir-card-desc {
  font-size: 11.5px !important;
  color: #6b5c4d !important;
  line-height: 1.55 !important;
  margin: 0 0 12px !important;
}

.boudoir-action-row {
  display: flex !important;
  align-items: center !important;
  gap: 9px !important;
}

.boudoir-btn-gold {
  flex: 1 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  padding: 9px 16px !important;
  border-radius: 9999px !important;
  border: none !important;
  background: linear-gradient(135deg, #dcc296 0%, #b89458 100%) !important;
  color: #fffdf9 !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  box-shadow: 0 4px 14px rgba(184, 148, 88, 0.26), inset 0 1px 0 rgba(255, 255, 255, 0.45) !important;
  transition: transform 0.16s ease !important;
}

.boudoir-btn-alabaster {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 5px !important;
  padding: 9px 16px !important;
  border-radius: 9999px !important;
  background: rgba(250, 246, 239, 0.9) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.4) !important;
  color: #6e5636 !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  cursor: pointer !important;
  transition: transform 0.16s ease !important;
}

.boudoir-btn-alabaster.full-width {
  width: 100% !important;
}

.boudoir-btn-gold:active,
.boudoir-btn-alabaster:active {
  transform: scale(0.96) !important;
}

/* --------------------------------------------------------
   11. 瞬态提示浮岛 Toast
   -------------------------------------------------------- */
.nest-ephemeral-toast {
  position: fixed !important;
  top: max(20px, env(safe-area-inset-top, 20px)) !important;
  left: 50% !important;
  transform: translateX(-50%) translateY(-20px) !important;
  background: rgba(44, 37, 30, 0.92) !important;
  border: 0.8px solid rgba(216, 188, 140, 0.45) !important;
  color: #fdfaf5 !important;
  padding: 8px 18px !important;
  border-radius: 9999px !important;
  font-family: 'Noto Serif SC', serif !important;
  font-size: 12px !important;
  backdrop-filter: blur(18px) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22) !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transition: all 0.25s cubic-bezier(0.2, 0.85, 0.25, 1) !important;
  z-index: 10001 !important;
}

.nest-ephemeral-toast.show {
  opacity: 1 !important;
  transform: translateX(-50%) translateY(0) !important;
}

/* --------------------------------------------------------
   12. 暗房奇珍双联匣 & 枕畔私房游艺宝匣 & 渴望私账/偏航路书抽屉
   -------------------------------------------------------- */
.curiosity-duo-grid {
  display: grid !important;
  grid-template-columns: repeat(2, 1fr) !important;
  gap: 10px !important;
  margin-bottom: 14px !important;
}

.curiosity-tile {
  text-align: left !important;
  padding: 12px 13px !important;
  border-radius: 18px !important;
  cursor: pointer !important;
  transition: transform 0.18s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.18s ease !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: space-between !important;
}

.curiosity-tile:active {
  transform: scale(0.96) !important;
}

.curiosity-desire {
  background: linear-gradient(145deg, rgba(48, 30, 32, 0.92), rgba(29, 20, 22, 0.95)) !important;
  border: 0.8px solid rgba(217, 115, 120, 0.45) !important;
  color: #f9ecec !important;
  box-shadow: 0 8px 20px rgba(45, 20, 24, 0.18) !important;
}

.curiosity-drift {
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.9), rgba(248, 242, 232, 0.84)) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.5) !important;
  color: #322920 !important;
  box-shadow: 0 8px 20px rgba(145, 120, 85, 0.1) !important;
}

.curiosity-top {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 4px !important;
  margin-bottom: 6px !important;
}

.curiosity-eyebrow {
  font-family: "Cormorant Garamond", serif !important;
  font-size: 8.5px !important;
  letter-spacing: 1px !important;
  font-weight: 600 !important;
  opacity: 0.8 !important;
}

.curiosity-badge-crimson {
  font-size: 9px !important;
  background: rgba(217, 72, 97, 0.25) !important;
  border: 0.5px solid rgba(235, 120, 138, 0.5) !important;
  color: #ffd6dc !important;
  padding: 1px 6px !important;
  border-radius: 9999px !important;
  white-space: nowrap !important;
}

.curiosity-badge-gold {
  font-size: 9px !important;
  background: rgba(191, 160, 104, 0.18) !important;
  border: 0.5px solid rgba(191, 160, 104, 0.4) !important;
  color: #7d5e2e !important;
  padding: 1px 6px !important;
  border-radius: 9999px !important;
  white-space: nowrap !important;
}

.curiosity-title {
  font-family: "Noto Serif SC", "Songti SC", serif !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  margin-bottom: 4px !important;
}

.curiosity-sub {
  font-size: 10px !important;
  line-height: 1.4 !important;
  opacity: 0.82 !important;
  margin: 0 !important;
}

/* 枕畔三联私房游艺宝匣 */
.playbox-trio-list {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
}

.playbox-item-btn {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  width: 100% !important;
  text-align: left !important;
  padding: 10px 12px !important;
  border-radius: 16px !important;
  background: rgba(252, 249, 243, 0.82) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.28) !important;
  text-decoration: none !important;
  cursor: pointer !important;
  transition: transform 0.16s ease, background 0.16s ease !important;
  box-sizing: border-box !important;
}

.playbox-item-btn:active {
  transform: scale(0.98) !important;
  background: rgba(246, 238, 225, 0.95) !important;
}

.playbox-item-left {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  min-width: 0 !important;
}

.playbox-dot {
  width: 8px !important;
  height: 8px !important;
  border-radius: 50% !important;
  flex-shrink: 0 !important;
}

.playbox-dot.crimson {
  background: #d94861 !important;
  box-shadow: 0 0 8px rgba(217, 72, 97, 0.55) !important;
}

.playbox-dot.gold {
  background: #c29d62 !important;
  box-shadow: 0 0 8px rgba(194, 157, 98, 0.55) !important;
}

.playbox-dot.amber {
  background: #d9822b !important;
  box-shadow: 0 0 8px rgba(217, 130, 43, 0.5) !important;
}

.playbox-item-title {
  font-family: "Noto Serif SC", serif !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: #322920 !important;
}

.playbox-item-desc {
  font-size: 10px !important;
  color: #7c6d5d !important;
  margin-top: 2px !important;
}

.playbox-arrow {
  font-family: "Noto Serif SC", serif !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  color: #a6834b !important;
  flex-shrink: 0 !important;
  margin-left: 8px !important;
}

/* Modal 7: 渴望私账黑曜石鎏金抽屉 */
.desire-ledger-dialog {
  width: 100% !important;
  max-width: 420px !important;
  max-height: 86dvh !important;
  display: flex !important;
  flex-direction: column !important;
  padding: 18px 16px !important;
  border-radius: 26px !important;
  background: linear-gradient(155deg, rgba(32, 24, 25, 0.97), rgba(20, 16, 17, 0.98)) !important;
  border: 1px solid rgba(216, 165, 140, 0.42) !important;
  color: #f7efe8 !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.55) !important;
}

.desire-dialog-header,
.drift-dialog-header {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 10px !important;
  padding-bottom: 12px !important;
  border-bottom: 1px solid rgba(216, 188, 140, 0.22) !important;
  flex-shrink: 0 !important;
}

.desire-dialog-eyebrow {
  font-family: "Cormorant Garamond", serif !important;
  font-size: 9.5px !important;
  letter-spacing: 1.5px !important;
  color: #e09f9f !important;
  display: block !important;
}

.desire-dialog-title {
  font-family: "Noto Serif SC", serif !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  color: #fffaf5 !important;
  margin: 2px 0 !important;
}

.desire-dialog-sub {
  font-size: 10.5px !important;
  color: rgba(247, 239, 232, 0.68) !important;
  margin: 0 !important;
}

.ledger-close-btn {
  width: 28px !important;
  height: 28px !important;
  border-radius: 50% !important;
  border: 1px solid rgba(255, 255, 255, 0.2) !important;
  background: rgba(255, 255, 255, 0.08) !important;
  color: #f7efe8 !important;
  cursor: pointer !important;
  flex-shrink: 0 !important;
}

.ledger-close-btn.light {
  color: #43392f !important;
  background: rgba(0, 0, 0, 0.06) !important;
  border: none !important;
}

.desire-ledger-list {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  padding: 12px 2px 4px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  scrollbar-width: none !important;
}

.desire-ledger-list::-webkit-scrollbar {
  display: none !important;
}

.desire-entry-card {
  background: rgba(255, 255, 255, 0.05) !important;
  border: 0.8px solid rgba(224, 159, 159, 0.3) !important;
  border-radius: 18px !important;
  padding: 13px 14px !important;
  transition: all 0.2s ease !important;
}

.desire-entry-card.is-redeemed {
  border-color: rgba(216, 188, 140, 0.25) !important;
  background: rgba(255, 255, 255, 0.025) !important;
  opacity: 0.82 !important;
}

.desire-entry-top {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 6px !important;
}

.desire-status-pill {
  font-size: 9.5px !important;
  font-weight: 600 !important;
  padding: 2px 8px !important;
  border-radius: 9999px !important;
}

.desire-status-pill.unredeemed {
  background: rgba(217, 72, 97, 0.25) !important;
  border: 0.5px solid rgba(235, 120, 138, 0.55) !important;
  color: #ffccd5 !important;
}

.desire-status-pill.redeemed {
  background: rgba(216, 188, 140, 0.18) !important;
  border: 0.5px solid rgba(216, 188, 140, 0.45) !important;
  color: #ebd5b3 !important;
}

.desire-intensity-tag {
  font-size: 10px !important;
  color: #e2c08d !important;
  letter-spacing: 0.5px !important;
}

.desire-entry-title {
  font-family: "Noto Serif SC", serif !important;
  font-size: 13.5px !important;
  font-weight: 600 !important;
  color: #fffdf9 !important;
  margin: 0 0 3px !important;
}

.desire-entry-meta {
  font-size: 9.5px !important;
  color: rgba(247, 239, 232, 0.52) !important;
  margin-bottom: 8px !important;
}

.desire-trigger-box {
  font-size: 10.5px !important;
  color: #ebd7c5 !important;
  background: rgba(0, 0, 0, 0.25) !important;
  border-left: 2px solid #d96b78 !important;
  padding: 6px 9px !important;
  border-radius: 4px 10px 10px 4px !important;
  margin-bottom: 8px !important;
  line-height: 1.5 !important;
}

.desire-thought-body {
  font-family: "Noto Serif SC", serif !important;
  font-size: 11.5px !important;
  line-height: 1.65 !important;
  color: rgba(252, 246, 240, 0.9) !important;
  margin: 0 0 10px !important;
  text-align: justify !important;
}

.desire-entry-actions {
  display: flex !important;
  gap: 8px !important;
}

.desire-act-btn {
  flex: 1 !important;
  padding: 7px 10px !important;
  border-radius: 9999px !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  transition: transform 0.15s ease !important;
}

.desire-act-btn:active {
  transform: scale(0.95) !important;
}

.desire-act-btn.redeem-btn {
  background: rgba(217, 72, 97, 0.22) !important;
  border: 0.8px solid rgba(235, 120, 138, 0.5) !important;
  color: #ffdce2 !important;
}

.desire-act-btn.confront-btn {
  background: linear-gradient(135deg, #dcc296, #b89458) !important;
  border: none !important;
  color: #231c16 !important;
}

/* Modal 8: 胡萝卜先生的偏航手札抽屉 */
.drift-roadbook-dialog {
  width: 100% !important;
  max-width: 420px !important;
  max-height: 86dvh !important;
  display: flex !important;
  flex-direction: column !important;
  padding: 18px 16px !important;
  border-radius: 26px !important;
}

.drift-dialog-eyebrow {
  font-family: "Cormorant Garamond", serif !important;
  font-size: 9.5px !important;
  letter-spacing: 1.4px !important;
  color: #9e7f4e !important;
  display: block !important;
}

.drift-dialog-title {
  font-family: "Noto Serif SC", serif !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  color: #2f2720 !important;
  margin: 2px 0 !important;
}

.drift-dialog-sub {
  font-size: 10.5px !important;
  color: #7e6f5f !important;
  margin: 0 !important;
}

.drift-tabs-bar {
  display: flex !important;
  gap: 6px !important;
  overflow-x: auto !important;
  padding: 10px 2px !important;
  flex-shrink: 0 !important;
  scrollbar-width: none !important;
}

.drift-tabs-bar::-webkit-scrollbar {
  display: none !important;
}

.drift-tab-pill {
  padding: 5px 12px !important;
  border-radius: 9999px !important;
  font-size: 11px !important;
  font-family: "Noto Serif SC", serif !important;
  white-space: nowrap !important;
  cursor: pointer !important;
  border: 0.8px solid rgba(202, 166, 119, 0.35) !important;
  background: rgba(255, 255, 255, 0.75) !important;
  color: #5c4e3e !important;
}

.drift-tab-pill.active {
  background: linear-gradient(135deg, #dcc296, #b89458) !important;
  color: #fffdf9 !important;
  border-color: #b89458 !important;
  font-weight: 600 !important;
}

.drift-content-scroll {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  padding: 4px 2px 10px !important;
  scrollbar-width: none !important;
}

.drift-content-scroll::-webkit-scrollbar {
  display: none !important;
}

.drift-meta-banner {
  background: rgba(247, 242, 232, 0.85) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.3) !important;
  border-radius: 14px !important;
  padding: 9px 12px !important;
  font-size: 10.5px !important;
  color: #5b4d3e !important;
  line-height: 1.55 !important;
  margin-bottom: 10px !important;
}

.drift-souvenir-card {
  background: linear-gradient(135deg, rgba(44, 38, 33, 0.92), rgba(29, 25, 22, 0.95)) !important;
  border: 0.8px solid rgba(216, 188, 140, 0.45) !important;
  border-radius: 16px !important;
  padding: 11px 13px !important;
  color: #f6efe6 !important;
  margin-bottom: 12px !important;
}

.souvenir-header {
  font-size: 10.5px !important;
  font-weight: 600 !important;
  color: #dec396 !important;
  margin-bottom: 4px !important;
}

.souvenir-text {
  font-family: "Noto Serif SC", serif !important;
  font-size: 11px !important;
  line-height: 1.55 !important;
  color: rgba(246, 239, 230, 0.9) !important;
}

.drift-narrative-body {
  background: rgba(252, 249, 244, 0.82) !important;
  border: 0.8px solid rgba(202, 166, 119, 0.22) !important;
  border-radius: 16px !important;
  padding: 12px 14px !important;
  font-family: "Noto Serif SC", serif !important;
  font-size: 13px !important;
  line-height: 1.85 !important;
  color: #2f2720 !important;
}

.drift-dialog-footer {
  padding-top: 10px !important;
  flex-shrink: 0 !important;
}


