    .reading-paper {
      position: relative;
      min-height: 220px;
      padding: 0.15rem 0.25rem 0.5rem;
    }
    /** 与左侧命盘列等高：内层纵向 flex，追问输入贴底 */
    .reading-paper.reading-wechat {
      flex: 1 1 auto;
      display: flex;
      flex-direction: column;
      min-height: 0;
      width: 100%;
    }
    .reading-paper-head {
      text-align: center;
      margin-bottom: 1rem;
      padding-bottom: 0.75rem;
      border-bottom: 1px solid rgba(212, 175, 118, 0.12);
    }
    .reading-calligraphy-title {
      margin: 0;
      font-family: "Ma Shan Zheng", "KaiTi", "STKaiti", "Noto Serif SC", "Songti SC", serif;
      font-weight: 400;
      font-size: clamp(1.45rem, 3.4vw, 1.9rem);
      letter-spacing: 0.36em;
      text-indent: 0.36em;
      color: rgba(245, 238, 228, 0.95);
      text-shadow: 0 2px 20px rgba(0, 0, 0, 0.4);
    }
    .reading-paper-sub {
      margin: 0.45rem 0 0;
      font-size: 0.78rem;
      letter-spacing: 0.22em;
      color: var(--ink-muted);
    }
    .reading-body {
      position: relative;
      z-index: 0;
      min-height: 220px;
      padding: 1.35rem 1.25rem 1.55rem 1.35rem;
      border-radius: 14px;
      background: rgba(18, 16, 14, 0.72);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      box-shadow: inset 0 0 0 1px rgba(212, 175, 118, 0.1), 0 16px 48px rgba(0, 0, 0, 0.35);
      border: 1px solid rgba(212, 175, 118, 0.14);
      color: rgba(238, 232, 222, 0.94);
      font-family: "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
      font-size: clamp(0.95rem, 2.4vw, 1.06rem);
      line-height: 2.35;
      opacity: 0;
      transform: translateY(6px);
      transition: opacity 1s ease, transform 1s ease;
    }
    .reading-body.reading-body--visible {
      opacity: 1;
      transform: translateY(0);
    }
    .reading-body:empty,
    .reading-body.error,
    .reading-body.reading-body--typing-stream {
      opacity: 1;
      transform: none;
      transition: none;
    }
    .reading-body:empty::before {
      content: "排盘后点击「生成盲派批文」，批文在此显示。";
      color: rgba(168, 158, 148, 0.55);
      font-size: 0.88rem;
      letter-spacing: 0.06em;
    }
    .reading-body.error {
      background: rgba(48, 22, 22, 0.55);
      border-color: rgba(200, 120, 120, 0.35);
      color: #e0a0a0;
      font-family: "HarmonyOS Sans", "PingFang SC", "Noto Sans SC", sans-serif;
    }
    .reading-body .reading-p {
      margin: 0 0 1.15em;
      text-align: justify;
      text-indent: 2em;
      letter-spacing: 0.04em;
    }
    .reading-body .reading-p:last-child { margin-bottom: 0; }
    .reading-body .reading-hit {
      color: #c4a574;
      font-weight: 700;
      padding: 0 0.12em;
      border-bottom: 1px solid rgba(166, 139, 92, 0.45);
      text-shadow: none;
    }
    .reading-body.error .reading-hit { border-bottom-color: transparent; }
    .reading-body.reading-body--typing-stream {
      white-space: pre-wrap;
      text-align: justify;
      text-indent: 2em;
      line-height: 2.05;
      letter-spacing: 0.04em;
    }
    .reading-body .reading-p--pending {
      margin: 0.35em 0 0;
      text-align: center;
      text-indent: 0;
      color: rgba(168, 158, 148, 0.82);
      font-size: 0.92em;
      letter-spacing: 0.08em;
    }
    .visually-hidden {
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      white-space: nowrap;
      border: 0;
    }
    .reading-wechat {
      display: flex;
      flex-direction: column;
      align-items: stretch;
      min-width: 0;
      min-height: 0;
    }
    .reading-wechat__head {
      text-align: center;
      margin-bottom: 0.55rem;
      padding-bottom: 0.65rem;
      border-bottom: 1px solid rgba(212, 175, 118, 0.12);
      flex-shrink: 0;
    }
    .reading-wechat__title {
      margin: 0;
      font-size: clamp(1.28rem, 3.2vw, 1.72rem);
      letter-spacing: 0.22em;
      text-indent: 0.22em;
    }
    .reading-wechat__sub {
      margin: 0.38rem 0 0;
    }
    .reading-wechat__thread {
      flex: 0 0 auto;
      min-height: 0;
      display: flex;
      flex-direction: column;
    }
    .reading-chat__msg--main .reading-body.reading-body--chat-first {
      flex: 1 1 auto;
      min-height: clamp(12rem, 32vh, 30rem);
    }
    .reading-body.reading-body--chat-first {
      min-height: 5rem;
      margin: 0;
      padding: 0.2rem 0.08rem 0.35rem;
      border: none;
      border-radius: 0;
      box-shadow: none;
      background: transparent;
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      opacity: 1;
      transform: none;
      transition: none;
    }
    .reading-body.reading-body--chat-first.reading-body--typing-stream {
      text-indent: 0;
    }
    .reading-chat__msg--main .reading-body.reading-body--chat-first.error {
      padding: 0.45rem 0.4rem;
      border-radius: 8px;
      background: rgba(48, 22, 22, 0.42);
    }
    .reading-body.reading-body--chat-first.reading-body--visible {
      opacity: 1;
      transform: none;
    }
    .reading-wechat__composer {
      flex-shrink: 0;
      margin-top: auto;
      padding-top: 0.4rem;
    }
    .reading-wechat__composer-row {
      justify-content: flex-end;
    }
    /** 会话区：占满标题与输入框之间剩余高度，与左列命盘对齐 */
    .reading-wechat__stream {
      flex: 1 1 auto;
      min-height: 0;
      display: flex;
      flex-direction: column;
      gap: 0.42rem;
      overflow-y: auto;
      padding: 0.1rem 0 0.2rem;
      margin: 0 0 0.25rem;
      border: none;
      background: transparent;
      border-radius: 0;
      scrollbar-width: thin;
      scrollbar-color: rgba(196, 165, 118, 0.38) transparent;
    }
    .reading-chat__msg {
      margin-bottom: 0.65rem;
      padding: 0.5rem 0.55rem;
      border-radius: 10px;
      font-size: 0.86rem;
      line-height: 1.65;
      letter-spacing: 0.04em;
    }
    .reading-chat__msg:last-child { margin-bottom: 0; }
    .reading-chat__msg--user {
      margin-left: 1.5rem;
      background: rgba(48, 44, 38, 0.65);
      border: 1px solid rgba(212, 175, 118, 0.12);
      color: rgba(228, 220, 208, 0.95);
      text-align: justify;
    }
    .reading-chat__msg--asst {
      margin-right: 1.1rem;
      background: rgba(26, 24, 22, 0.85);
      border: 1px solid rgba(212, 175, 118, 0.16);
      color: rgba(238, 232, 222, 0.94);
      font-family: "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
    }
    .reading-chat__msg--asst .reading-p {
      text-indent: 1.5em;
      margin-bottom: 0.75em;
    }
    .reading-chat__msg--asst .reading-p:last-child { margin-bottom: 0; }
    /** 首条批文：拉高占满会话区上半段，追问气泡在其下 */
    #readingMainSlot.reading-chat__msg.reading-chat__msg--main {
      display: flex;
      flex-direction: column;
      flex: 1 1 auto;
      min-height: clamp(15rem, 44vh, 40rem);
      margin: 0 0.5rem 0.45rem 0;
      padding: 0.85rem 0.95rem 1rem;
      border-radius: 16px;
      max-width: 100%;
    }
    .reading-chat__msg--err {
      color: #e0a0a0;
      font-size: 0.84rem;
      border-color: rgba(200, 120, 120, 0.35);
    }
    .reading-chat__msg--typing {
      color: rgba(168, 158, 148, 0.92);
      font-size: 0.84rem;
      letter-spacing: 0.14em;
      text-align: center;
      text-indent: 0;
      animation: readingChatTypingPulse 1.1s ease-in-out infinite;
    }
    @keyframes readingChatTypingPulse {
      0%, 100% { opacity: 0.55; }
      50% { opacity: 1; }
    }
    .reading-chat__composer textarea {
      width: 100%;
      min-height: 3.2rem;
      resize: vertical;
      margin: 0 0 0.45rem;
      padding: 0.45rem 0.5rem;
      border-radius: 10px;
      border: 1px solid rgba(212, 175, 118, 0.2);
      background: rgba(18, 16, 14, 0.72);
      color: rgba(238, 232, 222, 0.94);
      font: inherit;
      font-size: 0.86rem;
      line-height: 1.5;
      box-sizing: border-box;
    }
    .reading-chat__composer textarea:focus {
      outline: none;
      border-color: rgba(196, 165, 118, 0.45);
      box-shadow: 0 0 0 1px rgba(196, 165, 118, 0.15);
    }
    .reading-chat__row {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: flex-end;
      gap: 0.45rem 0.65rem;
    }
    .reading-chat__row button {
      min-height: 1.88rem;
      padding: 0 1rem;
      border-radius: 8px;
      border: 1px solid rgba(212, 175, 118, 0.35);
      background: linear-gradient(180deg, rgba(90, 78, 58, 0.75) 0%, rgba(58, 50, 40, 0.92) 100%);
      color: rgba(248, 238, 220, 0.95);
      font: inherit;
      font-size: 0.82rem;
      font-weight: 600;
      letter-spacing: 0.12em;
      cursor: pointer;
    }
    .reading-chat__row button:disabled {
      opacity: 0.45;
      cursor: not-allowed;
    }

    /* 命盘：命牌卡片感，弱线框 */
    .table-wrap {
      border: none;
      background: transparent;
      border-radius: 12px;
    }
    table.mini th { background: rgba(34, 30, 26, 0.55); color: var(--ink-muted); }
    table.mini th,
    table.mini td { border-bottom: 1px solid rgba(255, 248, 235, 0.06); }
    table.bazi-grid {
      background: transparent;
      border: none;
      border-collapse: separate;
      border-spacing: 0.35rem 0.42rem;
    }
    table.bazi-grid th,
    table.bazi-grid td {
      border: 1px solid rgba(212, 175, 118, 0.1);
      border-radius: 10px;
      background: rgba(30, 26, 22, 0.55);
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px);
      box-shadow: 0 4px 14px rgba(0, 0, 0, 0.22);
      padding: 0.42rem 0.32rem;
      text-align: center;
      vertical-align: middle;
      line-height: 1.4;
      word-wrap: break-word;
      overflow-wrap: anywhere;
    }
    table.bazi-grid th {
      color: rgba(188, 180, 168, 0.82);
      background: rgba(24, 22, 20, 0.65);
      font-weight: 600;
    }
    table.bazi-grid td.row-h {
      background: rgba(20, 18, 16, 0.72);
      color: rgba(168, 158, 148, 0.78);
    }
    table.bazi-grid .ganzhi-lg {
      font-size: clamp(1.18rem, 3.2vw, 1.45rem);
      font-weight: 700;
      letter-spacing: 0.08em;
    }

    /* ========== 手机端样式区：基础响应式覆盖 ========== */
    /* —— 移动端 —— */
