* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
:root {
  --widget-placeholder-gray: #e2e2df;
  --ideal-app-height: var(--ideal-fullscreen-height, 100vh);
  --ideal-safe-bottom: env(safe-area-inset-bottom, 0px);
  /* App 页面不跟随操作系统深色模式；夜间主题由各 App 自己的状态控制。 */
  color-scheme: only light;
}
@supports (height: 100dvh) {
  :root { --ideal-app-height: var(--ideal-fullscreen-height, 100dvh); }
}
/* 阅读讨论：独立于阅读页日夜主题的毛玻璃聊天样式 */
.chat-reading-mini { background: rgba(255,255,255,.78) !important; color: var(--reading-chat-text-color, #222) !important; border-color: rgba(255,255,255,.82) !important; -webkit-backdrop-filter: blur(20px) saturate(135%) !important; backdrop-filter: blur(20px) saturate(135%) !important; }
.chat-reading-mini header, .chat-reading-mini footer { background: rgba(255,255,255,.36) !important; border-color: rgba(255,255,255,.68) !important; }
.chat-reading-mini header b, .chat-reading-mini-messages p, .chat-reading-mini-messages > small { color: var(--reading-chat-text-color, #222) !important; }
.chat-reading-mini-actions { display: flex; align-items: center; gap: 5px; }
.chat-reading-mini-actions button { display: grid; place-items: center; width: 27px !important; height: 27px !important; border: 1px solid rgba(0,0,0,.08) !important; background: rgba(255,255,255,.55) !important; color: var(--reading-chat-text-color, #222) !important; font: inherit; font-size: 13px; }
.chat-reading-mini-actions button[data-chat-reading-text-color] { font-family: Georgia, 'Times New Roman', serif; font-size: 16px; font-weight: 700; }
.chat-reading-mini-messages p.is-user, .chat-reading-modal.is-night .chat-reading-mini-messages p.is-user, .chat-reading-modal:not(.is-night) .chat-reading-mini-messages p.is-user, .chat-reading-mini-messages p.is-character, .chat-reading-modal.is-night .chat-reading-mini-messages p.is-character, .chat-reading-modal:not(.is-night) .chat-reading-mini-messages p.is-character { width: fit-content !important; max-width: 82% !important; padding: 8px 11px !important; border: 1px solid rgba(255,255,255,.72) !important; border-radius: 13px 13px 4px 13px !important; background: rgba(255,255,255,.48) !important; color: var(--reading-chat-text-color, #222) !important; -webkit-backdrop-filter: blur(14px) saturate(130%) !important; backdrop-filter: blur(14px) saturate(130%) !important; box-shadow: 0 6px 18px rgba(0,0,0,.09) !important; }
.chat-reading-mini-messages p.is-user { margin-left: auto !important; text-align: left !important; }
.chat-reading-mini-messages p.is-character { margin-right: auto !important; border-radius: 13px 13px 13px 4px !important; }
.chat-reading-mini footer input { background: rgba(255,255,255,.52) !important; color: var(--reading-chat-text-color, #222) !important; }
.chat-reading-mini footer button { background: rgba(255,255,255,.64) !important; color: var(--reading-chat-text-color, #222) !important; }
.chat-reading-reply-status { margin-left: 5px; color: #8d857d; font-size: 9px; font-weight: 400; white-space: nowrap; }
.chat-reading-mini footer button:disabled { opacity: .55; cursor: wait; }
.chat-reading-favorites-backdrop { position: absolute; inset: 0; z-index: 20; background: rgba(0,0,0,.22); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.chat-reading-favorites-panel { position: absolute; top: 50%; left: 50%; z-index: 21; display: flex; flex-direction: column; width: min(360px, calc(100vw - 34px)); max-height: 72vh; transform: translate(-50%, -50%); overflow: hidden; border: 1px solid rgba(255,255,255,.8); border-radius: 22px; background: #fff; color: #222; box-shadow: 0 24px 70px rgba(0,0,0,.25); }
.chat-reading-favorites-panel > header { display: flex; align-items: center; justify-content: space-between; padding: 17px 18px 13px; border-bottom: 1px solid #ededee; }
.chat-reading-favorites-panel h2 { margin-top: 3px; font-size: 20px; }
.chat-reading-favorites-panel > header button, .chat-reading-chat-settings > header button { width: 29px; height: 29px; border: 0; border-radius: 50%; background: #f0f0f2; color: #555; font-size: 18px; }
.chat-reading-favorites-list { overflow-y: auto; padding: 8px 14px 15px; }
.chat-reading-favorites-list article { padding: 12px 5px; border-bottom: 1px solid #ededee; }
.chat-reading-favorites-list article:last-child { border-bottom: 0; }
.chat-reading-favorites-list p { margin: 0; font-family: Georgia, 'Songti SC', serif; font-size: 13px; line-height: 1.65; }
.chat-reading-favorites-list small { display: block; margin-top: 6px; color: #999; font-size: 10px; }
body .chat-reading-favorites-backdrop { position: absolute; inset: 0; z-index: 20; background: rgba(0,0,0,.16); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); animation: chatReadingFavoriteFade .22s ease both; }
body .chat-reading-favorites-panel { position: absolute; top: max(10px, env(safe-area-inset-top)); left: 50%; z-index: 21; width: min(390px, calc(100vw - 24px)); max-height: min(62vh, 500px); transform: translateX(-50%); overflow: hidden; border: 1px solid rgba(255,255,255,.76); border-radius: 0 0 22px 22px; background: rgba(255,255,255,.92); color: #222; box-shadow: 0 18px 50px rgba(0,0,0,.2); -webkit-backdrop-filter: blur(20px) saturate(130%); backdrop-filter: blur(20px) saturate(130%); animation: chatReadingFavoriteDrop .28s cubic-bezier(.2,.8,.2,1) both; }
body .chat-reading-favorites-panel > header { padding: 15px 17px 12px; background: rgba(255,255,255,.56); }
body .chat-reading-favorites-header-actions { display: flex; align-items: center; gap: 6px; }
body .chat-reading-favorites-header-actions button:first-child { min-width: 38px; height: 28px; padding: 0 8px; border: 0; border-radius: 8px; background: rgba(0,0,0,.06); color: #555; font: inherit; font-size: 11px; }
body .chat-reading-favorites-list { max-height: calc(min(62vh, 500px) - 65px); overflow-y: auto; padding: 8px 14px 16px; }
.chat-reading-favorite-group { margin: 7px 0 14px; }
.chat-reading-favorite-group h3 { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 0 5px 7px; border-bottom: 1px solid rgba(0,0,0,.09); font-size: 13px; font-weight: 600; }
.chat-reading-favorite-group h3 small { flex: 0 0 auto; color: #999; font-size: 10px; font-weight: 400; }
.chat-reading-favorite-group h3[data-chat-reading-favorite-group-toggle] { cursor: pointer; }
.chat-reading-favorite-group h3[data-chat-reading-favorite-group-toggle]::after { margin-left: auto; color: #999; content: '⌄'; font-size: 13px; }
.chat-reading-favorite-group.is-collapsed h3[data-chat-reading-favorite-group-toggle]::after { content: '›'; }
.chat-reading-favorite-group.is-collapsed article { display: none; }
.chat-reading-favorite-group article { position: relative; padding: 10px 76px 10px 5px; border-bottom: 1px solid rgba(0,0,0,.07); }
.chat-reading-favorite-group article:last-child { border-bottom: 0; }
.chat-reading-favorite-group article p { margin: 0; color: inherit; font-family: Georgia, 'Songti SC', serif; font-size: 13px; line-height: 1.65; }
.chat-reading-favorite-group article p[data-chat-reading-favorite-open] { overflow: hidden; cursor: pointer; text-overflow: ellipsis; white-space: nowrap; }
.chat-reading-favorite-group article small { position: absolute; top: 12px; right: 5px; max-width: 66px; overflow: hidden; color: #999; font-size: 10px; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.chat-reading-favorites-panel.is-editing .chat-reading-favorite-group article { position: relative; padding-right: 76px; }
.chat-reading-favorite-delete-one { position: absolute; top: 50%; right: 4px; min-width: 36px; height: 25px; transform: translateY(-50%); border: 0; border-radius: 7px; background: #ececee; color: #666; font: inherit; font-size: 10px; }
.chat-reading-favorites-panel.is-editing .chat-reading-favorite-delete-one { top: auto; bottom: 6px; transform: none; }
body .chat-reading-modal.is-night .chat-reading-favorites-panel { border-color: rgba(255,255,255,.16); background: rgba(38,38,40,.96); color: #f2f2f4; box-shadow: 0 18px 50px rgba(0,0,0,.45); }
body .chat-reading-modal.is-night .chat-reading-favorites-panel > header { background: rgba(70,70,74,.42); border-bottom-color: rgba(255,255,255,.12); }
body .chat-reading-modal.is-night .chat-reading-favorites-panel > header button { background: #4a4a4d; color: #eee; }
body .chat-reading-modal.is-night .chat-reading-favorite-group h3 { border-bottom-color: rgba(255,255,255,.14); }
body .chat-reading-modal.is-night .chat-reading-favorite-group article { border-bottom-color: rgba(255,255,255,.1); }
body .chat-reading-modal.is-night .chat-reading-favorites-header-actions button:first-child, body .chat-reading-modal.is-night .chat-reading-favorite-delete-one { background: #4a4a4d; color: #eee; }
@keyframes chatReadingFavoriteDrop { from { opacity: 0; transform: translate(-50%, -105%); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes chatReadingFavoriteFade { from { opacity: 0; } to { opacity: 1; } }
.chat-reading-chat-settings { position: absolute; right: 16px; bottom: 85px; z-index: 10; width: min(270px, calc(100vw - 32px)); padding: 15px; border: 1px solid rgba(255,255,255,.8); border-radius: 18px; background: rgba(255,255,255,.9); color: #222; box-shadow: 0 18px 48px rgba(0,0,0,.2); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); }
.chat-reading-mini > .chat-reading-chat-settings { top: 52px; right: 9px; bottom: auto; width: min(270px, calc(100% - 18px)); max-height: calc(100% - 61px); overflow-y: auto; }
.chat-reading-chat-settings > header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.chat-reading-chat-settings label { display: flex; align-items: center; justify-content: space-between; min-height: 42px; border-bottom: 1px solid rgba(0,0,0,.07); color: #555; font-size: 12px; }
.chat-reading-chat-settings input[type="color"] { width: 38px; height: 25px; padding: 0; border: 0; border-radius: 7px; background: transparent; }
.chat-reading-chat-settings input[type="number"], .chat-reading-chat-settings select { width: 145px; height: 32px; padding: 0 8px; border: 1px solid rgba(0,0,0,.12); border-radius: 8px; outline: 0; background: rgba(255,255,255,.72); color: #333; font: inherit; font-size: 11px; }
.chat-reading-chat-settings input[type="number"] { width: 64px; text-align: center; }
.chat-reading-chat-settings footer { display: flex; justify-content: flex-end; gap: 7px; margin-top: 13px; }
.chat-reading-chat-settings footer button { min-width: 55px; height: 31px; border: 0; border-radius: 9px; background: #ededee; color: #555; font: inherit; font-size: 11px; }
.chat-reading-chat-settings footer button:last-child { background: #222; color: #fff; }
body .chat-reading-modal .chat-reading-mini, body .chat-reading-modal.is-night .chat-reading-mini, body .chat-reading-modal:not(.is-night) .chat-reading-mini { background-color: rgba(255,255,255,.78) !important; color: var(--reading-chat-text-color, #222) !important; border-color: rgba(255,255,255,.82) !important; -webkit-backdrop-filter: blur(20px) saturate(135%) !important; backdrop-filter: blur(20px) saturate(135%) !important; background-image: var(--reading-chat-background-image, none) !important; background-size: cover !important; background-position: center !important; background-repeat: no-repeat !important; }
body .chat-reading-modal .chat-reading-mini header, body .chat-reading-modal .chat-reading-mini footer, body .chat-reading-modal.is-night .chat-reading-mini header, body .chat-reading-modal.is-night .chat-reading-mini footer { background: rgba(255,255,255,.36) !important; border-color: rgba(255,255,255,.68) !important; color: var(--reading-chat-text-color, #222) !important; }
body .chat-reading-modal.is-night .chat-reading-mini-messages p, body .chat-reading-modal:not(.is-night) .chat-reading-mini-messages p, body .chat-reading-modal.is-night .chat-reading-mini-messages p.is-user, body .chat-reading-modal.is-night .chat-reading-mini-messages p.is-character { color: var(--reading-chat-text-color, #222) !important; }
.chat-reading-background-url { display: flex; flex: 1; margin-left: 12px; }
.chat-reading-background-url input { width: 100%; min-width: 0; height: 32px; padding: 0 9px; border: 1px solid rgba(0,0,0,.12); border-radius: 9px; outline: 0; background: #fafafa; color: #222; font: inherit; font-size: 11px; }
.chat-reading-background-url button { flex: 0 0 auto; height: 32px; margin-left: 6px; padding: 0 10px; border: 0; border-radius: 9px; background: #222; color: #fff; font: inherit; font-size: 11px; }
.chat-reading-chat-settings > p[data-chat-reading-background-status] { min-height: 15px; margin-top: 8px; color: #999; font-size: 10px; line-height: 1.4; }
.chat-reading-background-file { display: flex !important; align-items: center; justify-content: space-between; min-height: 40px; padding: 0 10px; border: 1px solid rgba(0,0,0,.1); border-radius: 10px; background: #f7f7f8; color: #555; font-size: 12px; }
.chat-reading-background-file input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); }
.chat-reading-background-file b { display: inline-grid; place-items: center; min-height: 29px; padding: 0 10px; border-radius: 8px; background: #e8e8eb; color: #333; font-size: 11px; font-weight: 550; }
.chat-reading-background-album { width: 100%; min-height: 40px; margin-top: 8px; border: 1px solid rgba(0,0,0,.1); border-radius: 10px; background: #fff; color: #444; font: inherit; font-size: 11px; cursor: pointer; }
.chat-reading-background-file { display: inline-flex !important; align-items: center; justify-content: center; width: calc(50% - 5px); min-height: 40px; padding: 0; vertical-align: middle; background: #fff; color: #444; font: inherit; font-size: 11px; cursor: pointer; }
.chat-reading-background-album { display: inline-block; width: calc(50% - 5px); margin-top: 8px; margin-left: 6px; vertical-align: middle; }
.chat-reading-background-file,
.chat-reading-background-album { height: 40px !important; min-height: 40px !important; max-height: 40px !important; padding: 0 !important; margin-top: 8px; }
.chat-reading-background-file > span { display: none !important; }
.chat-reading-background-file b { display: block; width: 100%; min-height: 0; padding: 0; border-radius: 0; background: transparent; color: inherit; font-size: 11px; font-weight: 400; text-align: center; }
.chat-reading-background-file b::after { content: none; }
.chat-reading-chat-settings [hidden] { display: none !important; }
.chat-reading-mini { font-size: var(--reading-chat-font-size, 11px) !important; }
.chat-reading-mini .chat-reading-mini-messages p { font-size: var(--reading-chat-font-size, 11px) !important; }
.chat-reading-mini .chat-reading-mini-messages > small, .chat-reading-mini footer input, .chat-reading-mini footer button { font-size: calc(var(--reading-chat-font-size, 11px) * .92) !important; }
.chat-reading-mini header b { font-size: calc(var(--reading-chat-font-size, 11px) * 1.15) !important; }
.chat-reading-chat-settings footer button[data-chat-reading-background-reset] { background: #f0f0f2; color: #555; }
.chat-reading-chat-settings footer button,
.chat-reading-chat-settings footer button:last-child,
.chat-reading-chat-settings footer button[data-chat-reading-background-reset] { background: #222 !important; color: #fff !important; }
.chat-reading-chat-settings footer button[data-chat-reading-background-reset] { min-width: 78px !important; }
.chat-reading-manage { min-width: 44px; height: 31px; padding: 0 9px; border: 0; border-radius: 9px; background: #efefed; color: #444; font: inherit; font-size: 11px; }
.chat-reading-book-item { display: flex; align-items: center; gap: 7px; }
.chat-reading-book-item > button[data-chat-reading-book] { flex: 1; min-width: 0; }
.chat-reading-book-delete { flex: 0 0 auto; min-width: 40px; height: 31px; padding: 0 7px; border: 0; border-radius: 8px; background: #ededee; color: #666; font: inherit; font-size: 10px; }
.chat-reading-book-item small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-reading-modal.is-night .chat-reading-manage { background: #303033; color: #eee; }
.chat-reading-modal.is-night .chat-reading-book-delete { background: #3a3a3e; color: #eee; }
body .chat-reading-modal .chat-reading-books { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px 10px; }
.chat-reading-book-item { display: flex; min-width: 0; flex-direction: column; align-items: stretch; gap: 7px; }
.chat-reading-book-item > button[data-chat-reading-book] { display: flex; flex-direction: column; align-items: stretch; gap: 8px; width: 100%; min-width: 0; padding: 0; overflow: hidden; border: 0; background: transparent; box-shadow: none; }
.chat-reading-book-item .chat-book-cover { flex: none; align-self: center; width: 82%; height: auto; aspect-ratio: .68; border-radius: 9px; font-size: 23px; box-shadow: 0 8px 18px rgba(0,0,0,.12); }
.chat-reading-book-item > button[data-chat-reading-book] > span:nth-child(2) { display: block; min-width: 0; text-align: left; }
.chat-reading-book-item > button[data-chat-reading-book] > span:nth-child(2) { width: 82%; margin: 0 auto; text-align: center; }
.chat-reading-book-item > button[data-chat-reading-book] b { display: block; overflow: hidden; color: #222; font-size: 12px; font-weight: 600; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.chat-reading-book-item > button[data-chat-reading-book] small { display: block; margin-top: 3px; overflow: hidden; color: #999; font-size: 10px; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.chat-reading-book-item > button[data-chat-reading-book] i { display: none; }
.chat-reading-book-delete { align-self: stretch; min-width: 0; height: 26px; }
.chat-reading-modal.is-night .chat-reading-book-item > button[data-chat-reading-book] b { color: #eee; }
.chat-reading-modal.is-night .chat-reading-book-item > button[data-chat-reading-book] small { color: #aaa; }
.chat-reading-quote-highlight { padding: 0 .12em; border-radius: 4px; background: #d9d9d4; color: inherit; box-shadow: 0 0 0 2px rgba(210,210,204,.35); }
.chat-reading-avatar { cursor: grab; touch-action: none; user-select: none; }
.chat-reading-avatar:active { cursor: grabbing; }
.chat-reading-modal.is-night .chat-reading-quote-highlight { background: #65652f; color: #fff; box-shadow: 0 0 0 2px rgba(190,190,90,.2); }
body .chat-reading-modal:not(.is-night) .chat-reading-quote-highlight { background: #d9d9d4 !important; color: #222 !important; box-shadow: 0 0 0 2px rgba(210,210,204,.35) !important; }
body .chat-reading-modal.is-night .chat-reading-quote-highlight { background: #555 !important; color: #fff !important; box-shadow: 0 0 0 2px rgba(85,85,85,.28) !important; }
body .chat-reading-modal .chat-reading-manage { width: 38px !important; min-width: 38px !important; height: 27px !important; padding: 0 6px !important; border-radius: 8px !important; font-size: 10px !important; }
.chat-reading-head-actions button[data-chat-reading-chapters] { font-size: 19px; }
.chat-reading-chapter-nav { display: flex; align-items: center; justify-content: space-between; gap: 10px; max-width: 620px; margin: 28px auto 0; padding: 10px 0 0; border-top: 1px solid rgba(0,0,0,.08); }
.chat-reading-chapter-nav button { min-width: 78px; height: 34px; padding: 0 12px; border: 1px solid rgba(0,0,0,.1); border-radius: 10px; background: rgba(255,255,255,.78); color: #333; font: inherit; font-size: 11px; }
.chat-reading-chapter-nav button:disabled { opacity: .35; }
.chat-reading-chapter-nav span { color: #999; font-size: 10px; }
.chat-reading-modal.is-night .chat-reading-chapter-nav { border-top-color: rgba(255,255,255,.14); }
.chat-reading-modal.is-night .chat-reading-chapter-nav button { border-color: rgba(255,255,255,.16); background: #2b2b2d; color: #eee; }
.chat-reading-modal.is-night .chat-reading-chapter-nav span { color: #aaa; }
.chat-reading-chapter-menu-backdrop { position: absolute; inset: 0; z-index: 30; background: rgba(0,0,0,.12); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.chat-reading-chapter-menu { position: absolute; top: 76px; right: 16px; z-index: 31; display: flex; flex-direction: column; width: min(280px, calc(100vw - 32px)); max-height: min(58vh, 420px); overflow: hidden; border: 1px solid rgba(255,255,255,.72); border-radius: 18px; background: rgba(255,255,255,.94); color: #222; box-shadow: 0 18px 48px rgba(0,0,0,.2); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); }
.chat-reading-chapter-menu header { display: flex; align-items: center; justify-content: space-between; padding: 13px 15px; border-bottom: 1px solid rgba(0,0,0,.08); }
.chat-reading-chapter-menu header button { width: 27px; height: 27px; border: 0; border-radius: 50%; background: #ededee; color: #555; font-size: 17px; }
.chat-reading-chapter-menu > div { overflow-y: auto; padding: 6px; }
.chat-reading-chapter-menu > div > button { display: flex; align-items: center; gap: 9px; width: 100%; min-height: 40px; padding: 0 9px; border: 0; border-radius: 9px; background: transparent; color: #444; text-align: left; font: inherit; font-size: 11px; }
.chat-reading-chapter-menu > div > button span { width: 20px; color: #999; font-family: Georgia, serif; font-size: 13px; text-align: center; }
.chat-reading-chapter-menu > div > button b { overflow: hidden; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.chat-reading-chapter-menu > div > button.is-current { background: #ededee; color: #111; }
.chat-reading-modal.is-night .chat-reading-chapter-menu { border-color: rgba(255,255,255,.16); background: rgba(38,38,40,.96); color: #eee; }
.chat-reading-modal.is-night .chat-reading-chapter-menu header { border-bottom-color: rgba(255,255,255,.12); }
.chat-reading-modal.is-night .chat-reading-chapter-menu header button { background: #4a4a4d; color: #eee; }
.chat-reading-modal.is-night .chat-reading-chapter-menu > div > button { color: #ddd; }
.chat-reading-modal.is-night .chat-reading-chapter-menu > div > button.is-current { background: #4a4a4d; color: #fff; }
html, body { width: 100%; overflow: hidden; }
body { background: #f4f4f2 center/cover no-repeat; color: #222; font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", system-ui, sans-serif; }
/* 根背景始终覆盖完整视口，键盘只调整 body 内容区。 */
html { height: var(--ideal-fullscreen-height, 100%); background: #f4f4f2 center/cover no-repeat; overscroll-behavior: none; }
body {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  /* 常态高度由 CSS 视口单位管理；安全区只用于控件避让。 */
  min-height: var(--ideal-app-height);
  height: var(--ideal-app-height);
  padding-bottom: 0;
  overflow: hidden;
  overscroll-behavior: none;
}

/* iOS 安全区只留给内容顶栏，不能再把整层高度加长。 */
.ta-app .ta-phone-head,
.ta-app .ta-role-app-header,
.ta-app .ta-role-conversation-header {
  position: relative;
  z-index: 12;
  flex-shrink: 0;
}
.ta-app .ta-phone-head {
  padding-top: max(7px, env(safe-area-inset-top, 0px)) !important;
}
.ta-app .ta-role-app-header,
.ta-app .ta-role-conversation-header {
  padding-top: max(18px, env(safe-area-inset-top, 0px)) !important;
}
.doubao-app .doubao-header,
.ta-role-doubao-page .doubao-header {
  position: relative;
  z-index: 12;
  flex-shrink: 0;
  padding-top: max(25px, env(safe-area-inset-top, 0px)) !important;
}
.album-app .album-header {
  position: relative;
  z-index: 12;
  flex-shrink: 0;
  padding-top: max(20px, env(safe-area-inset-top, 0px)) !important;
}
.doubao-app .doubao-chat-title,
.ta-role-doubao-page .doubao-chat-title {
  top: 50% !important;
  transform: translateY(-50%) !important;
}
.album-app .album-header > div:nth-child(2) {
  position: static !important;
  z-index: auto;
  width: auto !important;
  max-width: none !important;
  margin-left: 16px;
  transform: none !important;
  pointer-events: auto;
}
.chat-app:not(.is-chatting) .chat-tabs {
  bottom: max(24px, env(safe-area-inset-bottom, 0px)) !important;
  padding-bottom: max(9px, env(safe-area-inset-bottom, 0px)) !important;
}

body > .desktop-scroll-wrap {
  flex: 1 1 auto;
  min-height: 0;
  height: auto !important;
}
body > .page-indicator,
body > .dock-bar {
  flex: 0 0 auto;
}
body > .dock-bar {
  box-sizing: border-box;
  height: 88px;
  min-height: 88px;
  margin-bottom: max(12px, var(--ideal-safe-bottom)) !important;
  padding: 10px 18px;
}
body > .desktop-scroll-wrap {
  touch-action: pan-x !important;
  overscroll-behavior-y: none !important;
}
.desktop-scroll-wrap { height: calc(100vh - 140px); display: flex; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; }
.desktop-scroll-wrap::-webkit-scrollbar { display: none; }
.desktop-layout-pending .desktop-scroll-wrap,
.desktop-layout-pending .page-indicator,
.desktop-layout-pending .dock-bar { visibility:hidden; }
.desktop-page { position: relative; flex: 0 0 100vw; min-height: 100%; padding: 28px 18px; overflow-x: hidden; overflow-y: auto; scrollbar-width: none; scroll-snap-align: start; scroll-snap-stop: always; }
.desktop-page::-webkit-scrollbar { display:none; }
.bg-layer { position: absolute; inset: 0; z-index: 0; background: transparent; }

.profile-card, .todo-widget, .image-widget, .countdown-widget, .elapsed-days-widget, .shared-widget, .now-playing-widget, .search-input, .photo-card, .date-calendar-card, .dock-bar {
  background: rgba(255,255,255,.52);
  border: 1px solid rgba(255,255,255,.72);
  box-shadow: 0 8px 26px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.72);
  -webkit-backdrop-filter: blur(22px) saturate(135%);
  backdrop-filter: blur(22px) saturate(135%);
}
.chat-message.is-character .chat-message-avatar { cursor: pointer; }

/* 线下见面 V2：可更换壁纸的全屏毛玻璃现场。 */
.chat-offline-modal.is-fullscreen-modal {
  --offline-accent:#202124;
  --offline-accent-rgb:32,33,36;
  --offline-ink:#171717;
  --offline-muted:rgba(23,23,23,.62);
  --offline-line:rgba(255,255,255,.52);
  --offline-glass:rgba(255,255,255,.26);
  --offline-glass-strong:rgba(255,255,255,.44);
  --offline-shadow:0 16px 42px rgba(0,0,0,.16);
  --offline-wallpaper-image:radial-gradient(circle at 16% 10%,rgba(255,255,255,.96),transparent 31%),radial-gradient(circle at 86% 20%,rgba(206,206,206,.82),transparent 36%),linear-gradient(145deg,#eeeeee 0%,#bcbcbc 48%,#6c6c6c 100%);
}
.chat-offline-modal[data-offline-theme="rose"] { --offline-accent:#a45f7b; --offline-accent-rgb:164,95,123; --offline-wallpaper-image:radial-gradient(circle at 12% 9%,rgba(255,255,255,.93),transparent 31%),radial-gradient(circle at 84% 18%,rgba(241,184,204,.82),transparent 35%),linear-gradient(145deg,#f3dde5,#d9a9ba 51%,#9d657d); }
.chat-offline-modal[data-offline-theme="sky"] { --offline-accent:#557fa3; --offline-accent-rgb:85,127,163; --offline-wallpaper-image:radial-gradient(circle at 15% 10%,rgba(255,255,255,.96),transparent 30%),radial-gradient(circle at 88% 21%,rgba(177,218,240,.82),transparent 36%),linear-gradient(145deg,#dcecf5,#9fc4dc 50%,#607f9d); }
.chat-offline-modal[data-offline-theme="sage"] { --offline-accent:#5f8670; --offline-accent-rgb:95,134,112; --offline-wallpaper-image:radial-gradient(circle at 16% 9%,rgba(255,255,255,.94),transparent 30%),radial-gradient(circle at 85% 20%,rgba(190,222,201,.84),transparent 36%),linear-gradient(145deg,#dfece3,#accbb7 49%,#6d917b); }
.chat-offline-modal[data-offline-theme="amber"] { --offline-accent:#9d7041; --offline-accent-rgb:157,112,65; --offline-wallpaper-image:radial-gradient(circle at 14% 8%,rgba(255,255,255,.94),transparent 31%),radial-gradient(circle at 87% 21%,rgba(241,210,163,.82),transparent 36%),linear-gradient(145deg,#f2e6d1,#d9b889 50%,#9f774c); }
.chat-offline-modal[data-offline-theme="white"] { --offline-accent:#222; --offline-accent-rgb:34,34,34; --offline-wallpaper-image:radial-gradient(circle at 13% 8%,#fff,transparent 31%),radial-gradient(circle at 88% 20%,rgba(220,220,220,.84),transparent 37%),linear-gradient(145deg,#f7f7f7,#d9d9d9 50%,#aaa); }
.chat-offline-modal[data-offline-theme="black"] { --offline-accent:#fff; --offline-accent-rgb:255,255,255; --offline-ink:#fff; --offline-muted:rgba(255,255,255,.68); --offline-line:rgba(255,255,255,.2); --offline-glass:rgba(15,15,18,.35); --offline-glass-strong:rgba(15,15,18,.56); --offline-shadow:0 18px 46px rgba(0,0,0,.38); --offline-wallpaper-image:radial-gradient(circle at 12% 8%,rgba(98,98,105,.8),transparent 30%),radial-gradient(circle at 86% 20%,rgba(45,45,51,.9),transparent 36%),linear-gradient(145deg,#33343a,#18191d 52%,#050506); }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] { --offline-ink:#f7f7f7; --offline-muted:rgba(255,255,255,.75); --offline-line:rgba(255,255,255,.26); --offline-glass:rgba(12,15,20,.28); --offline-glass-strong:rgba(12,15,20,.42); --offline-shadow:0 18px 46px rgba(0,0,0,.3); }

.chat-offline-modal .chat-offline-card.offline-meeting-v2 {
  isolation:isolate;
  box-sizing:border-box;
  position:relative;
  display:flex;
  width:100%;
  height:100%;
  max-height:none;
  overflow:hidden;
  padding:0 !important;
  border:0;
  border-radius:0;
  background:#a7a7a7 !important;
  color:var(--offline-ink);
  box-shadow:none;
}
.chat-offline-modal .offline-meeting-v2::before,
.chat-offline-modal .offline-meeting-v2::after { position:absolute; inset:0; content:""; pointer-events:none; }
.chat-offline-modal .offline-meeting-v2::before { z-index:-2; background-image:var(--offline-wallpaper-image); background-position:center; background-size:cover; transform:scale(1.02); }
.chat-offline-modal .offline-meeting-v2::after { z-index:-1; background:linear-gradient(180deg,rgba(255,255,255,.13),rgba(255,255,255,.03) 45%,rgba(20,12,26,.12)); }
.chat-offline-modal[data-offline-theme="black"] .offline-meeting-v2::after { background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.2) 48%,rgba(0,0,0,.42)); }
.chat-offline-modal .offline-meeting-v2.has-custom-wallpaper::after { background:linear-gradient(180deg,rgba(12,10,15,.08),rgba(12,10,15,.04) 44%,rgba(12,10,15,.24)); }

.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-topbar {
  box-sizing:border-box;
  display:grid;
  grid-template-columns:56px minmax(0,1fr) 112px;
  flex:0 0 auto;
  align-items:center;
  width:100%;
  min-height:68px;
  padding:max(10px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) 8px max(14px,env(safe-area-inset-left)) !important;
  border:0 !important;
  background:linear-gradient(180deg,rgba(255,255,255,.22),transparent);
}
.chat-offline-modal .chat-offline-v2-topbar > button,
.chat-offline-modal .chat-offline-v2-topbar nav button {
  box-sizing:border-box;
  display:grid;
  place-items:center;
  width:34px !important;
  height:34px !important;
  margin:0 !important;
  padding:0;
  border:1px solid var(--offline-line) !important;
  border-radius:50%;
  background:var(--offline-glass) !important;
  color:var(--offline-ink) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.42),0 7px 18px rgba(30,20,39,.09);
  -webkit-backdrop-filter:blur(18px) saturate(160%);
  backdrop-filter:blur(18px) saturate(160%);
  cursor:pointer;
}
.chat-offline-modal .chat-offline-v2-topbar svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.chat-offline-modal .chat-offline-v2-topbar > div { display:grid; gap:2px; min-width:0; text-align:center; }
.chat-offline-modal .chat-offline-v2-topbar > div span { color:var(--offline-muted); font-size:7px; font-weight:700; letter-spacing:.22em; }
.chat-offline-modal .chat-offline-v2-topbar h2 { overflow:hidden; margin:0; color:var(--offline-ink) !important; font-size:15px !important; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
.chat-offline-modal .chat-offline-v2-topbar nav { display:flex; justify-content:flex-end; gap:5px; }
.chat-offline-modal .chat-offline-v2-topbar button:active { transform:scale(.94); }

.offline-beauty-editor { position:fixed; inset:0; z-index:120; display:grid; place-items:center; box-sizing:border-box; padding:18px; }
.offline-beauty-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(0,0,0,.42); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); cursor:pointer; }
.offline-beauty-sheet { position:relative; z-index:1; display:flex; flex-direction:column; box-sizing:border-box; width:min(92vw,500px); max-height:min(82dvh,650px); overflow:hidden; border:1px solid rgba(0,0,0,.18); border-radius:18px; background:#f2f2f2; color:#222; box-shadow:0 20px 55px rgba(0,0,0,.28); }
.offline-beauty-sheet header { display:flex; align-items:center; justify-content:space-between; gap:12px; flex:0 0 auto; padding:15px 17px 12px; border-bottom:1px solid rgba(0,0,0,.12); }
.offline-beauty-sheet header span { color:#777; font-size:8px; font-weight:750; letter-spacing:.2em; }
.offline-beauty-sheet header h2 { margin:4px 0 0; font-size:18px; font-weight:700; }
.offline-beauty-sheet header button { display:grid; place-items:center; width:32px; height:32px; border:1px solid rgba(0,0,0,.16); border-radius:50%; background:#e5e5e5; color:#333; font-size:20px; line-height:1; cursor:pointer; }
.offline-beauty-sheet main { display:flex; min-height:0; flex-direction:column; overflow:hidden; padding:13px 15px 15px; }
.offline-beauty-description { flex:0 0 auto; margin:0 0 10px; color:#666; font-size:11px; line-height:1.55; }
.offline-beauty-hints { display:flex; min-height:0; max-height:235px; flex:1 1 235px; flex-direction:column; gap:8px; overflow-y:auto; margin-bottom:12px; padding-right:3px; overscroll-behavior:contain; scrollbar-gutter:stable; }
.offline-beauty-hint-group { flex:0 0 auto; overflow:hidden; border:1px solid rgba(0,0,0,.14); border-radius:12px; background:#fafafa; }
.offline-beauty-hint-group h3 { margin:0; padding:8px 10px; border-bottom:1px solid rgba(0,0,0,.1); background:#e7e7e7; color:#333; font-size:11px; }
.offline-beauty-hint-line { display:grid; grid-template-columns:minmax(148px,.9fr) minmax(0,1.1fr); gap:9px; align-items:start; padding:7px 10px; border-bottom:1px solid rgba(0,0,0,.07); font-size:10px; line-height:1.45; }
.offline-beauty-hint-line:last-child { border-bottom:0; }
.offline-beauty-hint-line code { color:#444; font:600 10px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace; overflow-wrap:anywhere; }
.offline-beauty-hint-line span { color:#666; }
.offline-beauty-css-field { display:grid; gap:7px; }
.offline-beauty-css-field > span { color:#333; font-size:11px; font-weight:700; }
.offline-beauty-css-field textarea { box-sizing:border-box; width:100%; min-height:150px; resize:vertical; padding:10px; border:1px solid rgba(0,0,0,.2); border-radius:11px; outline:0; background:#fff; color:#222; font:11px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace; }
.offline-beauty-css-field textarea:focus { border-color:#555; box-shadow:0 0 0 3px rgba(0,0,0,.08); }
.offline-beauty-status { min-height:15px; margin:7px 0 0; color:#777; font-size:10px; }
.offline-beauty-sheet footer { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:7px; flex:0 0 auto; padding:11px 15px max(11px,env(safe-area-inset-bottom)); border-top:1px solid rgba(0,0,0,.12); background:#e9e9e9; }
.offline-beauty-sheet footer button { min-height:33px; padding:0 11px; border:1px solid rgba(0,0,0,.18); border-radius:9px; background:#f8f8f8; color:#333; font:inherit; font-size:11px; cursor:pointer; }
.offline-beauty-sheet footer select { min-height:33px; min-width:112px; padding:0 26px 0 11px; border:1px solid rgba(0,0,0,.18); border-radius:9px; background:#f8f8f8; color:#333; font:inherit; font-size:11px; cursor:pointer; }
.offline-beauty-sheet footer button.is-primary { border-color:#333; background:#333; color:#fff; }
@media (max-width:520px) {
  .offline-beauty-editor { align-items:center; padding:16px; }
  .offline-beauty-sheet { width:min(100%,500px); max-height:82dvh; border-radius:18px; }
  .offline-beauty-hints { flex-basis:190px; max-height:190px; }
  .offline-beauty-css-field textarea { min-height:125px; }
  .offline-beauty-hint-line { grid-template-columns:1fr; gap:2px; }
}

.chat-offline-modal .offline-meeting-v2 > .offline-theme-picker {
  top:calc(max(12px,env(safe-area-inset-top)) + 52px);
  right:max(14px,env(safe-area-inset-right));
  z-index:40;
  box-sizing:border-box;
  width:min(320px,calc(100% - 28px));
  padding:14px;
  border:1px solid rgba(255,255,255,.5);
  border-radius:21px;
  background:rgba(255,255,255,.3);
  color:var(--offline-ink);
  box-shadow:0 18px 48px rgba(30,20,39,.24),inset 0 1px 0 rgba(255,255,255,.48);
  -webkit-backdrop-filter:blur(30px) saturate(175%);
  backdrop-filter:blur(30px) saturate(175%);
}
.chat-offline-modal .offline-meeting-v2 > .offline-theme-picker.is-open { display:block; }
.chat-offline-modal[data-offline-theme="black"] .offline-meeting-v2 > .offline-theme-picker { background:rgba(18,18,21,.48); }
.chat-offline-modal .offline-theme-picker > span { display:block; margin-bottom:10px; color:var(--offline-muted); font-size:9px; font-weight:650; letter-spacing:.08em; }
.chat-offline-modal .offline-theme-picker .offline-theme-colors { display:flex; justify-content:space-between; gap:7px; }
.chat-offline-modal .offline-theme-picker .offline-theme-colors button { width:25px; height:25px; }
.chat-offline-modal[data-offline-theme="lavender"] [data-offline-theme-choice="lavender"],
.chat-offline-modal[data-offline-theme="rose"] [data-offline-theme-choice="rose"],
.chat-offline-modal[data-offline-theme="sky"] [data-offline-theme-choice="sky"],
.chat-offline-modal[data-offline-theme="sage"] [data-offline-theme-choice="sage"],
.chat-offline-modal[data-offline-theme="amber"] [data-offline-theme-choice="amber"],
.chat-offline-modal[data-offline-theme="white"] [data-offline-theme-choice="white"],
.chat-offline-modal[data-offline-theme="black"] [data-offline-theme-choice="black"] { outline:2px solid var(--offline-ink); outline-offset:2px; }
.chat-offline-modal .offline-meeting-v2 .offline-wallpaper-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; width:100%; margin-top:0; padding-top:0; border-top:0; }
.chat-offline-modal .offline-wallpaper-actions label,
.chat-offline-modal .offline-wallpaper-actions button { box-sizing:border-box; display:flex; align-items:center; justify-content:center; gap:6px; width:100%; min-height:38px; padding:0 11px; border:1px solid rgba(255,255,255,.45); border-radius:11px; background:rgba(255,255,255,.27); color:var(--offline-ink); font:inherit; font-size:9px; cursor:pointer; }
.chat-offline-modal .offline-wallpaper-actions label { box-sizing:border-box; width:100%; min-height:38px; }
.chat-offline-modal .offline-wallpaper-actions label { background:rgba(24,24,24,.78); color:#fff; }
.chat-offline-modal[data-offline-theme="black"] .offline-wallpaper-actions label { background:rgba(255,255,255,.84); color:#111; }
.chat-offline-modal .offline-wallpaper-actions svg { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.chat-offline-modal .offline-wallpaper-actions input { position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; pointer-events:none; }
.chat-offline-modal .offline-wallpaper-actions .offline-wallpaper-url { position:static; width:100%; min-height:38px; box-sizing:border-box; padding:0 10px; overflow:visible; opacity:1; pointer-events:auto; border:1px solid rgba(255,255,255,.45); border-radius:11px; background:rgba(255,255,255,.72); color:var(--offline-ink); font:inherit; font-size:10px; outline:0; }
.chat-offline-modal .offline-wallpaper-actions .offline-wallpaper-url::placeholder { color:rgba(40,40,40,.58); }
.chat-offline-modal .offline-wallpaper-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }
.chat-offline-modal .offline-wallpaper-actions .offline-wallpaper-url { grid-column:1 / -1; }
.chat-offline-modal .offline-font-size-control { display:grid; gap:8px; margin-top:12px; padding-top:12px; border-top:1px solid rgba(255,255,255,.28); color:var(--offline-ink); }
.chat-offline-modal .offline-font-size-control > span { display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:9px; }
.chat-offline-modal .offline-font-size-control > span b { font-size:9px; font-weight:650; }
.chat-offline-modal .offline-font-size-control output { color:var(--offline-muted); font-variant-numeric:tabular-nums; }
.chat-offline-modal .offline-font-size-control input[type="number"] { box-sizing:border-box; width:100%; min-height:36px; padding:0 10px; border:1px solid var(--offline-line); border-radius:10px; background:var(--offline-glass); color:var(--offline-ink); font:inherit; font-size:12px; outline:0; }
@media not all { .chat-offline-modal .offline-wallpaper-actions .offline-wallpaper-url { background:rgba(20,20,22,.42); color:#fff; border-color:rgba(255,255,255,.34); } .chat-offline-modal .offline-wallpaper-actions .offline-wallpaper-url::placeholder { color:rgba(255,255,255,.66); } }

.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-scene {
  box-sizing:border-box;
  display:grid;
  grid-template-columns:minmax(0,1fr) 70px;
  flex:0 0 auto;
  gap:13px 16px;
  width:min(calc(100% - 28px),760px);
  margin:6px auto 8px;
  padding:16px;
  border:1px solid var(--offline-line);
  border-radius:24px;
  background:var(--offline-glass);
  box-shadow:var(--offline-shadow),inset 0 1px 0 rgba(255,255,255,.48);
  -webkit-backdrop-filter:blur(24px) saturate(155%);
  backdrop-filter:blur(24px) saturate(155%);
}
.chat-offline-v2-scene-copy { align-self:center; min-width:0; }
.chat-offline-v2-scene-copy > span { display:flex; align-items:center; gap:6px; color:var(--offline-muted); font-size:7px; font-weight:750; letter-spacing:.15em; }
.chat-offline-v2-scene-copy > span i { width:6px; height:6px; border-radius:50%; background:rgb(var(--offline-accent-rgb)); box-shadow:0 0 0 4px rgba(var(--offline-accent-rgb),.16); }
.chat-offline-v2-scene-copy h1 { overflow:hidden; margin:8px 0 4px; color:var(--offline-ink); font-size:22px; line-height:1.12; text-overflow:ellipsis; white-space:nowrap; }
.chat-offline-v2-scene-copy p { overflow:hidden; margin:0; color:var(--offline-muted); font-size:10px; line-height:1.5; text-overflow:ellipsis; white-space:nowrap; }
.chat-offline-modal .chat-avatar.chat-offline-v2-hero-avatar { width:66px; height:66px; border:2px solid rgba(255,255,255,.65); border-radius:21px; background:rgba(255,255,255,.3); color:var(--offline-ink); box-shadow:0 11px 24px rgba(30,20,39,.16); font-size:20px; }
.chat-offline-v2-hero-avatar img { width:100%; height:100%; object-fit:cover; }
.chat-offline-v2-scene dl { display:grid; grid-column:1/-1; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:0; padding-top:12px; border-top:1px solid rgba(255,255,255,.35); }
.chat-offline-v2-scene dl div { min-width:0; }
.chat-offline-v2-scene dt { margin:0 0 3px; color:var(--offline-muted); font-size:7px; }
.chat-offline-v2-scene dd { overflow:hidden; margin:0; color:var(--offline-ink); font-size:9px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }

.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-presence { box-sizing:border-box; display:flex; flex:0 0 auto; align-items:center; justify-content:space-between; gap:10px; width:min(calc(100% - 36px),752px); margin:0 auto 4px; padding:7px 10px; color:var(--offline-muted); }
.chat-offline-v2-presence > div { display:flex; align-items:center; gap:8px; min-width:0; }
.chat-offline-v2-presence i { flex:0 0 auto; width:7px; height:7px; border-radius:50%; background:#75b88d; box-shadow:0 0 0 4px rgba(117,184,141,.16); }
.chat-offline-v2-presence i.is-busy { background:rgb(var(--offline-accent-rgb)); box-shadow:0 0 0 4px rgba(var(--offline-accent-rgb),.16); animation:offline-v2-pulse 1.25s ease-in-out infinite; }
.chat-offline-v2-presence span,.chat-offline-v2-presence small { overflow:hidden; font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.chat-offline-v2-presence b { color:var(--offline-ink); font-weight:650; }

.chat-offline-modal .offline-meeting-v2 .chat-offline-messages {
  box-sizing:border-box;
  flex:1;
  width:min(calc(100% - 20px),780px);
  min-height:0;
  margin:0 auto !important;
  padding:10px 12px 18px !important;
  overflow-x:hidden;
  overflow-y:auto;
  border:0 !important;
  scrollbar-width:none;
}
.chat-offline-modal .offline-meeting-v2 .chat-offline-messages::-webkit-scrollbar { display:none; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-messages article { display:flex; align-items:flex-end; gap:8px; width:fit-content; max-width:min(88%,650px); margin:0 0 13px !important; padding:0 !important; background:transparent !important; color:var(--offline-ink) !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-messages article.is-user { flex-direction:row-reverse; margin-left:auto !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-avatar,
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-user-avatar { box-sizing:border-box; display:grid; flex:0 0 29px; place-items:center; width:29px; height:29px; overflow:hidden; border:1px solid rgba(255,255,255,.58); border-radius:10px; background:var(--offline-glass-strong); color:var(--offline-ink); box-shadow:0 5px 14px rgba(30,20,39,.1); font-size:8px; -webkit-backdrop-filter:blur(18px) saturate(145%); backdrop-filter:blur(18px) saturate(145%); }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-avatar img { width:100%; height:100%; object-fit:cover; }
.chat-offline-v2-message-body { display:grid; justify-items:start; gap:4px; min-width:0; }
.chat-offline-messages article.is-user .chat-offline-v2-message-body { justify-items:end; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-message-body > span { margin:0 4px; color:var(--offline-muted) !important; font-size:7px !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-message-body > .chat-offline-v2-message-text {
  box-sizing:border-box;
  margin:0 !important;
  padding:10px 12px !important;
  border:1px solid rgba(255,255,255,.48);
  border-radius:16px 16px 16px 5px !important;
  background:var(--offline-glass-strong) !important;
  color:var(--offline-ink) !important;
  box-shadow:0 8px 22px rgba(30,20,39,.1),inset 0 1px 0 rgba(255,255,255,.45);
  font-size:var(--offline-message-font-size,10px) !important;
  line-height:1.7 !important;
  white-space:pre-wrap;
  -webkit-backdrop-filter:blur(24px) saturate(155%);
  backdrop-filter:blur(24px) saturate(155%);
}
.chat-offline-modal .offline-meeting-v2 .chat-offline-messages article.is-character:not(.is-thinking) .chat-offline-v2-message-text > p {
  margin:0 0 .75em !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  text-indent:2em;
  white-space:pre-wrap;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-message-text > p:last-child { margin-bottom:0 !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-messages article.is-character:not(.is-thinking) .chat-offline-v2-message-text {
  padding:10px 12px !important;
  border:1px solid rgba(255,255,255,.32) !important;
  border-radius:16px 16px 16px 5px !important;
  background:rgba(255,255,255,.18) !important;
  box-shadow:0 8px 22px rgba(30,20,39,.08),inset 0 1px 0 rgba(255,255,255,.28) !important;
  -webkit-backdrop-filter:blur(24px) saturate(155%);
  backdrop-filter:blur(24px) saturate(155%);
}
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-messages article.is-character:not(.is-thinking) .chat-offline-v2-message-text { border-color:rgba(255,255,255,.22) !important; background:rgba(12,15,20,.36) !important; box-shadow:0 8px 22px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.1) !important; }
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-messages article.is-character:not(.is-thinking) .chat-offline-v2-message-text > p { color:var(--offline-ink) !important; }
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-messages article { color:var(--offline-ink) !important; }
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-message-body > span { color:var(--offline-muted) !important; }
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 > .offline-theme-picker { background:rgba(12,15,20,.5); }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-message-body .chat-offline-inner-voice { font-style:italic; }
.chat-offline-preset-controls { display:grid; grid-template-columns:minmax(0,1fr); align-items:stretch; gap:8px; width:100%; margin:8px 0; }
.chat-offline-preset-controls label { display:grid; width:100%; gap:5px; font-size:12px; }
.chat-offline-preset-controls select { width:100%; min-height:34px; border:1px solid #ddd; border-radius:8px; background:transparent; color:inherit; }
.chat-offline-preset-controls button { width:100%; min-height:34px; padding:8px 10px; border:1px solid #ddd; border-radius:8px; background:transparent; color:inherit; cursor:pointer; }
.chat-offline-preset-controls small { line-height:1.6; overflow-wrap:anywhere; opacity:.65; }
.chat-offline-preset-controls .offline-preset-variable-guide { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px 8px; padding:9px 10px; border:1px solid rgba(0,0,0,.08); border-radius:10px; background:rgba(255,255,255,.24); color:inherit; font-size:9px; line-height:1.45; }
.chat-offline-preset-controls .offline-preset-variable-guide b { grid-column:1 / -1; font-size:10px; }
.chat-offline-preset-controls .offline-preset-variable-guide code { color:var(--offline-accent-dark,var(--offline-ink)); font:600 9px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace; }
.chat-offline-preset-controls .offline-preset-read-note { padding:0 2px; color:var(--offline-muted,var(--offline-ink)); }
.chat-offline-preset-editor { display:grid; grid-column:1 / -1; gap:8px; margin-top:2px; padding:11px; border:1px solid var(--offline-line); border-radius:13px; background:rgba(255,255,255,.18); }
.chat-offline-preset-editor[hidden] { display:none; }
.chat-offline-preset-editor label { display:grid; gap:5px; color:var(--offline-ink); font-size:10px; }
.chat-offline-preset-editor input,
.chat-offline-preset-editor textarea { box-sizing:border-box; width:100%; min-width:0; padding:8px 9px; border:1px solid var(--offline-line); border-radius:9px; outline:0; background:var(--offline-glass-strong); color:var(--offline-ink); font:inherit; font-size:10px; }
.chat-offline-preset-editor input { height:34px; }
.chat-offline-preset-editor textarea { min-height:115px; line-height:1.55; resize:vertical; }
.chat-offline-preset-editor > div { display:grid; grid-template-columns:1fr 1.35fr; gap:7px; }
.chat-offline-preset-editor > div button { min-height:34px; border:1px solid var(--offline-line); border-radius:9px; background:var(--offline-glass); color:var(--offline-ink); font:inherit; font-size:10px; cursor:pointer; }
.chat-offline-preset-editor > div button:last-child { border-color:var(--offline-accent); background:var(--offline-accent); color:#fff; }
.chat-offline-selection-toolbar { display:flex; align-items:center; gap:8px; padding:8px 15px; color:var(--offline-ink); font-size:12px; }
.chat-offline-selection-toolbar[hidden] { display:none; }
.chat-offline-selection-toolbar span { flex:1; }
.chat-offline-selection-toolbar button { padding:7px 11px; border:1px solid rgba(120,120,120,.25); border-radius:9px; background:var(--offline-glass-strong); color:inherit; font:inherit; }
.chat-offline-selection-toolbar [data-offline-delete-selected] { background:#9b3b45; color:white; }
.chat-offline-selection-toolbar button:disabled { opacity:.45; }
.chat-offline-modal.is-selecting-messages .offline-meeting-v2 [data-offline-message-index] { cursor:pointer; user-select:none; -webkit-user-select:none; }
.chat-offline-modal.is-selecting-messages .offline-meeting-v2 [data-offline-message-index].is-selected .chat-offline-v2-message-body > .chat-offline-v2-message-text { outline:2px solid #d85b64; outline-offset:2px; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-messages article.is-user p { border-color:rgba(255,255,255,.34); border-radius:16px 16px 5px 16px !important; background:rgba(var(--offline-accent-rgb),.68) !important; color:#fff !important; }
.chat-offline-complete { margin:5px 0 0 4px; padding:7px 11px; border:1px solid var(--offline-line) !important; border-radius:10px; background:var(--offline-glass) !important; color:var(--offline-ink) !important; box-shadow:0 7px 18px rgba(30,20,39,.1),inset 0 1px 0 rgba(255,255,255,.35); font:inherit; font-size:10px; cursor:pointer; -webkit-backdrop-filter:blur(24px) saturate(155%); backdrop-filter:blur(24px) saturate(155%); }
.chat-offline-modal[data-offline-theme="black"] .offline-meeting-v2 .chat-offline-messages article.is-user p { background:rgba(255,255,255,.76) !important; color:#111 !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-messages .chat-offline-empty { display:grid; place-items:center; align-content:center; gap:7px; min-height:160px; padding:30px 12px; color:var(--offline-muted); text-align:center; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-empty b { color:var(--offline-ink); font-size:12px; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-empty span { font-size:9px; }
.chat-offline-modal .offline-meeting-v2 .is-thinking p { display:flex; align-items:center; gap:4px; min-width:52px; min-height:34px; }
.chat-offline-modal .offline-meeting-v2 .is-thinking p i { width:4px; height:4px; border-radius:50%; background:var(--offline-muted); animation:offline-v2-dot 1.1s ease-in-out infinite; }
.chat-offline-modal .offline-meeting-v2 .is-thinking p i:nth-child(2) { animation-delay:.14s; }
.chat-offline-modal .offline-meeting-v2 .is-thinking p i:nth-child(3) { animation-delay:.28s; }

.chat-offline-modal .offline-meeting-v2 > .chat-offline-v2-dock {
  box-sizing:border-box;
  display:flex !important;
  flex-direction:column !important;
  align-items:stretch !important;
  flex:0 0 auto;
  gap:7px !important;
  width:100%;
  min-width:100%;
  align-self:stretch;
  margin:0 !important;
  position:relative;
  transform:none;
  padding:8px 0 max(10px,env(safe-area-inset-bottom)) !important;
  border:0 !important;
  background:linear-gradient(0deg,rgba(18,12,23,.14),transparent);
}
.chat-offline-v2-shortcuts { box-sizing:border-box; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); justify-content:stretch; align-self:stretch; flex:0 0 auto; gap:7px; width:calc(100% - 28px); max-width:none; margin:0 auto; position:relative; left:0; }
.chat-offline-v2-shortcuts button { display:flex; flex:1; align-items:center; justify-content:center; gap:clamp(4px,1.3vw,8px); min-height:31px; padding:0 clamp(5px,2vw,10px); border:1px solid var(--offline-line); border-radius:12px; background:var(--offline-glass); color:var(--offline-ink); box-shadow:inset 0 1px 0 rgba(255,255,255,.35); font:inherit; font-size:clamp(8px,2.4vw,12px); line-height:1.2; -webkit-appearance:none; appearance:none; -webkit-backdrop-filter:blur(22px) saturate(155%); backdrop-filter:blur(22px) saturate(155%); cursor:pointer; }
.chat-offline-v2-shortcuts button svg { flex:0 0 auto; width:clamp(12px,3.3vw,16px); height:clamp(12px,3.3vw,16px); fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.chat-offline-v2-shortcuts button:disabled { opacity:.55; cursor:default; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock form {
  box-sizing:border-box;
  display:flex;
  align-items:center;
  gap:7px;
  width:calc(100% - 28px);
  max-width:none;
  margin:0 auto !important;
  flex:0 0 auto;
  align-self:stretch;
  position:relative;
  left:0;
  padding:6px 6px 6px 13px !important;
  border:1px solid var(--offline-line) !important;
  border-radius:17px !important;
  background:var(--offline-glass-strong) !important;
  box-shadow:var(--offline-shadow),inset 0 1px 0 rgba(255,255,255,.42) !important;
  -webkit-backdrop-filter:blur(28px) saturate(165%);
  backdrop-filter:blur(28px) saturate(165%);
}
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock form:focus-within { border-color:rgba(255,255,255,.78) !important; box-shadow:0 14px 34px rgba(30,20,39,.18),0 0 0 3px rgba(255,255,255,.13) !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock input { flex:1; min-width:0; height:31px; padding:0; border:0; outline:0; background:transparent; color:var(--offline-ink); font:inherit; font-size:10px; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock input::placeholder { color:var(--offline-muted); }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock textarea[data-offline-input] { box-sizing:border-box; flex:1; min-width:0; height:34px; min-height:34px; max-height:116px; padding:9.5px 0; resize:none; overflow-y:auto; border:0; outline:0; background:transparent; color:var(--offline-ink); font:inherit; font-size:10px; line-height:15px; text-align:center; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock textarea[data-offline-input]::placeholder { color:var(--offline-muted); }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock form button { display:flex; flex:0 0 auto; align-items:center; justify-content:center; gap:4px; width:62px !important; height:34px; border:1px solid rgba(255,255,255,.3) !important; border-radius:12px !important; background:rgba(var(--offline-accent-rgb),.78) !important; color:#fff !important; box-shadow:0 6px 16px rgba(30,20,39,.15) !important; font:inherit; font-size:9px !important; cursor:pointer; }
.chat-offline-modal[data-offline-theme="black"] .offline-meeting-v2 .chat-offline-v2-dock form button { background:rgba(255,255,255,.82) !important; color:#111 !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock form button::before { display:none !important; content:none !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock form button svg { width:13px; height:13px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-dock form button:disabled { opacity:.5; cursor:default; }

.chat-offline-modal .offline-meeting-v2 > .chat-offline-v2-settings {
  position:absolute;
  inset:0;
  z-index:45;
  box-sizing:border-box;
  display:block;
  width:100%;
  height:100%;
  margin:0;
  padding:max(20px,env(safe-area-inset-top)) 18px max(20px,env(safe-area-inset-bottom));
  overflow-y:auto;
  border:0;
  border-radius:0;
  background:rgba(255,255,255,.38);
  box-shadow:none;
  -webkit-backdrop-filter:blur(38px) saturate(175%);
  backdrop-filter:blur(38px) saturate(175%);
}
.chat-offline-modal[data-offline-theme="black"] .offline-meeting-v2 > .chat-offline-v2-settings { background:rgba(16,16,19,.55); }
.chat-offline-modal .offline-meeting-v2 > .chat-offline-v2-settings[hidden] { display:none !important; }
.chat-offline-modal .chat-offline-v2-settings > header { display:flex; align-items:center; justify-content:space-between; padding:0 !important; border:0 !important; }
.chat-offline-v2-settings > header > div { display:grid; gap:4px; }
.chat-offline-v2-settings > header span { color:var(--offline-muted); font-size:7px; font-weight:700; letter-spacing:.16em; }
.chat-offline-modal .chat-offline-v2-settings > header h2 { margin:0; color:var(--offline-ink) !important; font-size:20px !important; }
.chat-offline-modal .chat-offline-v2-settings > header button { display:grid; place-items:center; width:32px !important; height:32px !important; padding:0; border:1px solid var(--offline-line) !important; border-radius:50%; background:var(--offline-glass) !important; color:var(--offline-ink) !important; font-size:18px; cursor:pointer; }
.chat-offline-v2-settings > p { margin:9px 0 18px; color:var(--offline-muted); font-size:9px; }
.chat-offline-v2-settings > section { overflow:hidden; border:1px solid var(--offline-line); border-radius:18px; background:rgba(255,255,255,.18); }
.chat-offline-v2-settings > section label { box-sizing:border-box; display:grid; align-items:stretch; gap:9px; min-height:82px; padding:12px 0 7px; border-bottom:1px solid rgba(255,255,255,.35); color:var(--offline-ink); }
.chat-offline-v2-settings > section label:last-child { border-bottom:0; }
.chat-offline-v2-settings label > span { display:grid; flex:1; gap:3px; min-width:0; }
.chat-offline-v2-settings > section label > span { box-sizing:border-box; width:100%; padding:0 13px; }
.chat-offline-v2-settings label b { color:var(--offline-ink); font-size:10px; }
.chat-offline-v2-settings label small { color:var(--offline-muted); font-size:8px; font-weight:400; line-height:1.4; }
.chat-offline-modal .chat-offline-v2-settings input,
.chat-offline-modal .chat-offline-v2-settings select { box-sizing:border-box; display:block; width:100%; min-width:0; height:40px; padding:0 11px; border:1px solid var(--offline-line); border-radius:11px; outline:0; background:var(--offline-glass-strong); color:var(--offline-ink); font:inherit; font-size:10px; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings input,
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings select { width:100% !important; min-width:0 !important; max-width:none !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings > section [data-offline-length],
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings > section [data-offline-user-person],
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings > section [data-offline-character-person] { box-sizing:border-box !important; display:block !important; justify-self:stretch; width:calc(100% - 8px) !important; min-width:calc(100% - 8px) !important; max-width:calc(100% - 8px) !important; margin:0 4px !important; }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-v2-preset { box-sizing:border-box; display:grid; gap:8px; width:100%; margin:12px 0 0; padding:13px 0 6px; border:1px solid var(--offline-line); border-radius:18px; background:rgba(255,255,255,.18); color:var(--offline-ink); }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-v2-preset > span { box-sizing:border-box; width:100%; padding:0 13px; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings .chat-offline-v2-preset > textarea { box-sizing:border-box !important; display:block !important; justify-self:stretch; width:calc(100% - 8px) !important; min-width:calc(100% - 8px) !important; max-width:calc(100% - 8px) !important; height:190px; min-height:190px; max-height:190px; margin:0 4px !important; padding:12px 13px; overflow-x:hidden; overflow-y:auto; border:1px solid var(--offline-line); border-radius:12px; outline:0; background:var(--offline-glass-strong); color:var(--offline-ink); font:inherit; font-size:10px; line-height:1.65; resize:none; scrollbar-width:thin; overscroll-behavior:contain; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings textarea[data-offline-preset]:focus { border-color:rgba(34,34,34,.62) !important; box-shadow:0 0 0 3px rgba(34,34,34,.12) !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings textarea[data-offline-style-detail]:focus { border-color:rgba(var(--offline-accent-rgb),.78) !important; box-shadow:0 0 0 3px rgba(var(--offline-accent-rgb),.16) !important; }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings .chat-offline-v2-preset:has(> textarea[data-offline-preset]:focus) { border-color:rgba(34,34,34,.5); background:rgba(255,255,255,.3); }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings .chat-offline-v2-preset:has(> textarea[data-offline-style-detail]:focus) { border-color:rgba(var(--offline-accent-rgb),.7); background:rgba(var(--offline-accent-rgb),.08); }
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings [data-offline-preset],
.chat-offline-modal .offline-meeting-v2 .chat-offline-v2-settings [data-offline-style-detail] { scroll-margin-block:18px; }
.chat-offline-v2-settings-note { display:flex; align-items:flex-start; gap:8px; margin-top:13px; padding:11px; border-radius:14px; background:rgba(var(--offline-accent-rgb),.12); color:var(--offline-muted); font-size:8px; line-height:1.55; }
.chat-offline-v2-settings-note i { flex:0 0 6px; width:6px; height:6px; margin-top:3px; border-radius:50%; background:rgb(var(--offline-accent-rgb)); }
.chat-offline-modal .chat-offline-v2-settings > .chat-offline-v2-settings-actions { position:sticky; right:0; bottom:-1px; left:0; display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px !important; width:100%; margin:16px 0 -2px !important; padding:10px 0 2px !important; border:0 !important; border-radius:0; background:transparent; box-shadow:none; -webkit-backdrop-filter:none; backdrop-filter:none; }
.chat-offline-modal .chat-offline-v2-settings-actions button { box-sizing:border-box; width:100%; height:39px; padding:0 15px; border:1px solid rgba(255,255,255,.58); border-radius:13px; background:rgba(255,255,255,.3); color:#222; box-shadow:0 8px 20px rgba(20,20,20,.1),inset 0 1px 0 rgba(255,255,255,.58); font:inherit; font-size:10px; -webkit-backdrop-filter:blur(24px) saturate(155%); backdrop-filter:blur(24px) saturate(155%); cursor:pointer; }
.chat-offline-modal .chat-offline-v2-settings-actions button:last-child { background:rgba(20,20,20,.7); color:#fff; box-shadow:0 8px 20px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.16); }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-style-new { justify-self:stretch; width:calc(100% - 8px); margin:0 4px 5px; height:34px; border:1px dashed var(--offline-line); border-radius:10px; background:transparent; color:var(--offline-accent); font:inherit; font-size:10px; cursor:pointer; }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-style-editor { display:grid; gap:9px; margin-top:10px; padding:13px; border:1px solid var(--offline-line); border-radius:16px; background:rgba(255,255,255,.16); }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-style-editor[hidden] { display:none; }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-style-editor label { display:grid; gap:5px; color:var(--offline-ink); font-size:9px; }
.chat-offline-modal .chat-offline-v2-settings > .chat-offline-style-editor label { min-height:0; padding:0; border-bottom:0; }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-style-editor textarea { min-height:100px; padding:10px; border:1px solid var(--offline-line); border-radius:10px; background:var(--offline-glass-strong); color:var(--offline-ink); font:inherit; font-size:10px; line-height:1.55; resize:vertical; }
.chat-offline-modal .chat-offline-v2-settings .chat-offline-style-editor button { height:36px; border:0; border-radius:10px; background:var(--offline-accent); color:#fff; font:inherit; font-size:10px; cursor:pointer; }

.chat-offline-modal .chat-offline-card.chat-offline-v2-summary { display:block; padding:0 !important; text-align:center; }
.chat-offline-v2-summary > header { box-sizing:border-box; display:grid !important; grid-template-columns:34px 1fr 34px; align-items:center; width:100%; padding:max(12px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) 8px max(14px,env(safe-area-inset-left)) !important; border:0 !important; }
.chat-offline-v2-summary > header button { display:grid; place-items:center; width:34px !important; height:34px !important; padding:0; border:1px solid var(--offline-line) !important; border-radius:50%; background:var(--offline-glass) !important; color:var(--offline-ink) !important; -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
.chat-offline-v2-summary > header svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.chat-offline-v2-summary > header span { color:var(--offline-muted); font-size:8px; font-weight:700; letter-spacing:.18em; }
.chat-offline-v2-summary > main { box-sizing:border-box; display:flex; flex-direction:column; align-items:center; justify-content:center; width:min(calc(100% - 32px),610px); min-height:calc(100% - 72px); margin:0 auto; padding:24px 0 max(30px,env(safe-area-inset-bottom)); }
.chat-offline-v2-summary-mark { display:grid; place-items:center; width:78px; height:78px; margin-bottom:18px; border:1px solid var(--offline-line); border-radius:27px; background:var(--offline-glass); box-shadow:var(--offline-shadow),inset 0 1px 0 rgba(255,255,255,.48); -webkit-backdrop-filter:blur(28px) saturate(160%); backdrop-filter:blur(28px) saturate(160%); transform:rotate(-6deg); }
.chat-offline-v2-summary-mark span { display:grid; place-items:center; width:42px; height:42px; border-radius:50%; background:rgba(var(--offline-accent-rgb),.76); color:#fff; font-size:18px; transform:rotate(6deg); }
.chat-offline-v2-summary main > small { color:var(--offline-muted); font-size:7px; font-weight:750; letter-spacing:.18em; }
.chat-offline-v2-summary main > h1 { max-width:420px; margin:9px 0 12px; color:var(--offline-ink); font-size:24px; line-height:1.3; }
.chat-offline-v2-summary main > p { box-sizing:border-box; width:100%; margin:0; padding:17px; border:1px solid var(--offline-line); border-radius:20px; background:var(--offline-glass); color:var(--offline-ink); box-shadow:var(--offline-shadow); font-size:10px; line-height:1.85; -webkit-backdrop-filter:blur(26px) saturate(160%); backdrop-filter:blur(26px) saturate(160%); }
.chat-offline-v2-summary main > dl { box-sizing:border-box; width:100%; margin:10px 0 16px; padding:5px 14px; border:1px solid var(--offline-line); border-radius:17px; background:var(--offline-glass); -webkit-backdrop-filter:blur(24px) saturate(155%); backdrop-filter:blur(24px) saturate(155%); }
.chat-offline-v2-summary main > dl div { display:flex; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid rgba(255,255,255,.3); color:var(--offline-muted); font-size:9px; }
.chat-offline-v2-summary main > dl div:last-child { border-bottom:0; }
.chat-offline-v2-summary main > dl dt,.chat-offline-v2-summary main > dl dd { margin:0; }
.chat-offline-v2-summary main > dl dd { max-width:72%; color:var(--offline-ink); line-height:1.5; text-align:right; overflow-wrap:anywhere; }
.chat-offline-v2-summary main > button { min-width:145px; height:40px; border:1px solid rgba(255,255,255,.34); border-radius:14px; background:rgba(var(--offline-accent-rgb),.78); color:#fff; box-shadow:0 10px 28px rgba(30,20,39,.18); font:inherit; font-size:10px; cursor:pointer; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-v2-summary main > button { background:rgba(255,255,255,.82); color:#111; }

@keyframes offline-v2-dot { 0%,60%,100% { opacity:.35; transform:translateY(0); } 30% { opacity:1; transform:translateY(-3px); } }
@keyframes offline-v2-pulse { 0%,100% { opacity:.55; transform:scale(.88); } 50% { opacity:1; transform:scale(1); } }
@media (max-width:520px) {
  .chat-offline-modal .offline-meeting-v2 .chat-offline-v2-scene { width:calc(100% - 22px); margin-top:3px; padding:13px; border-radius:21px; }
  .chat-offline-v2-scene-copy h1 { font-size:19px; }
  .chat-offline-v2-scene dl { gap:5px; }
  .chat-offline-v2-scene dd { font-size:8px; }
  .chat-offline-modal .offline-meeting-v2 .chat-offline-messages { width:100%; padding-right:11px !important; padding-left:11px !important; }
  .chat-offline-modal .offline-meeting-v2 .chat-offline-messages article { max-width:91%; }
  .chat-offline-v2-presence > small { display:none; }
}
@media (max-height:650px) {
  .chat-offline-modal .offline-meeting-v2 .chat-offline-v2-topbar { min-height:56px; padding-top:max(6px,env(safe-area-inset-top)) !important; }
  .chat-offline-modal .offline-meeting-v2 .chat-offline-v2-scene { grid-template-columns:minmax(0,1fr) 54px; gap:8px 12px; margin-bottom:3px; padding:10px 12px; border-radius:18px; }
  .chat-offline-modal .chat-avatar.chat-offline-v2-hero-avatar { width:52px; height:52px; border-radius:16px; }
  .chat-offline-v2-scene-copy h1 { margin-top:5px; font-size:17px; }
  .chat-offline-v2-scene dl { padding-top:8px; }
  .chat-offline-modal .offline-meeting-v2 .chat-offline-v2-presence { padding-top:4px; padding-bottom:4px; }
  .chat-offline-v2-shortcuts button { min-height:27px; }
}
@media (prefers-reduced-motion:reduce) {
  .chat-offline-v2-presence i.is-busy,.chat-offline-modal .offline-meeting-v2 .is-thinking p i { animation:none; }
}

/* 聊天三级记忆设置 */
.chat-settings-page .chat-api-settings-group { display:grid; gap:8px; margin-bottom:17px; padding:18px; border:1px solid rgba(0,0,0,.08); border-radius:18px; background:rgba(255,255,255,.5); }
.chat-api-settings-group > h3 { margin:0 0 2px; }
.chat-api-settings-items { display:grid; gap:10px; }
.chat-settings-page .chat-api-settings-group .chat-memory-settings { margin:0; padding:13px; border-color:rgba(0,0,0,.08); border-radius:14px; background:#fff; }
.chat-settings-page .chat-memory-settings { margin-bottom:17px; padding:14px; border:1px solid rgba(0,0,0,.08); border-radius:16px; background:rgba(255,255,255,.72); }
.chat-memory-settings-head { display:flex; align-items:center; justify-content:space-between; width:100%; padding:0; border:0; background:transparent; color:#222; font:inherit; text-align:left; cursor:pointer; }
.chat-memory-settings-head > span { display:grid; gap:4px; }
.chat-memory-settings-head b { font-size:13px; font-weight:650; }
.chat-memory-settings-head small { color:#999; font-size:10px; }
.chat-memory-settings-head i { color:#888; font-size:17px; font-style:normal; }
.chat-memory-settings-body { display:grid; gap:13px; margin-top:13px; padding-top:13px; border-top:1px solid rgba(0,0,0,.07); }
.chat-memory-advanced { display:grid; gap:10px; }
.chat-memory-advanced-toggle { display:flex; align-items:center; justify-content:space-between; width:100%; padding:10px 11px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:rgba(247,247,248,.72); color:#333; font:inherit; text-align:left; cursor:pointer; }
.chat-memory-advanced-toggle > span { display:grid; gap:3px; }
.chat-memory-advanced-toggle b { font-size:11px; font-weight:600; }
.chat-memory-advanced-toggle small { color:#999; font-size:9px; line-height:1.35; }
.chat-memory-advanced-toggle i { color:#888; font-size:16px; font-style:normal; }
.chat-memory-advanced-body { display:none; }
.chat-memory-advanced-body.is-open { display:grid; }
.chat-memory-switch { display:flex; align-items:center; gap:10px; }
.chat-memory-switch input { width:17px; height:17px; margin:0; accent-color:#222; }
.chat-memory-switch > span { display:grid; flex:1; gap:3px; }
.chat-memory-switch b { font-size:11px; font-weight:600; }
.chat-memory-switch small { color:#999; font-size:9px; line-height:1.45; }
.chat-memory-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.chat-memory-grid > label { display:grid; gap:5px; padding:10px; border:1px solid rgba(0,0,0,.07); border-radius:12px; background:rgba(247,247,248,.82); color:#555; font-size:10px; }
.chat-memory-grid input { width:100%; height:32px; padding:0 9px; border:1px solid rgba(0,0,0,.1); border-radius:9px; outline:0; background:#fff; color:#222; font:inherit; font-size:12px; }
.chat-memory-grid small { min-height:25px; color:#999; font-size:8px; line-height:1.45; }
.chat-active-message-grid { grid-template-columns:1fr; gap:0; }
.chat-active-message-grid > label { display:grid; grid-template-columns:minmax(0,1fr) 96px; align-items:center; gap:4px 10px; min-height:43px; padding:7px 0; border:0; border-radius:0; background:transparent; color:#555; }
.chat-active-message-grid > label input { grid-column:2; grid-row:1 / span 2; width:96px; height:32px; }
.chat-active-message-grid > label small { grid-column:1; grid-row:2; min-height:0; }
.chat-moment-automation-grid { display:grid; grid-template-columns:1fr; gap:7px; }
.chat-moment-automation-grid > label { display:flex; align-items:center; gap:8px; min-height:32px; padding:0; border:0; background:transparent; }
.chat-moment-automation-grid > label > span:first-child { color:#555; font-size:10px; }
.chat-moment-time-inputs { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:5px; flex:1; }
.chat-moment-time-inputs input { min-width:0; width:100%; height:29px; padding:0 4px; text-align:center; }
.chat-moment-time-inputs b { color:#999; font-size:10px; font-weight:500; text-align:center; }
.chat-moment-count-row { justify-content:space-between; }
.chat-moment-count-value { display:flex; align-items:center; gap:5px; }
.chat-moment-count-value input { width:48px; height:29px; padding:0 5px; text-align:center; }
.chat-moment-count-value small { min-height:0; color:#999; font-size:9px; }
.chat-memory-status { display:flex; flex-wrap:wrap; gap:6px; }
.chat-memory-status span { padding:5px 7px; border-radius:8px; background:#ededed; color:#222; font-size:8px; }
.chat-memory-actions { display:flex; justify-content:flex-end; gap:8px; }
.chat-memory-actions button { min-height:34px; padding:0 13px; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:#fff; color:#555; font:inherit; font-size:10px; cursor:pointer; }
.chat-memory-actions button.is-primary { border-color:#222; background:#222; color:#fff; }
.chat-memory-actions button:disabled { opacity:.55; }
.chat-settings-page .chat-thought-settings { padding:14px; }
.chat-thought-settings .chat-memory-settings-body { gap:15px; }
.chat-thought-api-setting { display:grid; gap:7px; color:#333; font-size:11px; }
.chat-thought-api-setting > span { display:grid; gap:3px; font-weight:600; }
.chat-thought-api-setting small { color:#999; font-size:9px; font-weight:400; line-height:1.45; }
.chat-thought-api-setting select { width:100%; min-width:0; height:37px; padding:0 11px; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:#fff; color:#333; font:inherit; font-size:11px; }
.chat-thought-api-setting select:disabled { opacity:.5; }
.chat-vision-api-warning { margin:0; padding:9px 10px; border-radius:10px; background:rgba(196,148,37,.1); color:#896b22; font-size:9px; line-height:1.55; }
.chat-settings-page .chat-wallpaper-settings { margin-bottom:17px; padding:13px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:#fff; }

/* 记忆库中的当前核心记忆 */
.memory-core-card { margin:0 0 16px; padding:16px; border:1px solid rgba(123,100,153,.13); border-radius:18px; background:linear-gradient(145deg,rgba(255,255,255,.76),rgba(239,233,245,.7)); box-shadow:0 8px 20px rgba(92,74,114,.05); }
.memory-core-card header { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.memory-core-card header span { color:#927ca5; font-size:8px; font-weight:750; letter-spacing:.16em; }
.memory-core-card header b { color:#51445d; font-size:10px; }
.memory-core-card > p { margin-top:10px; color:#62566c; font-size:10px; line-height:1.75; white-space:pre-wrap; }
.memory-core-card > small { display:block; margin-top:11px; color:#a094aa; font-size:8px; }
.memory-core-card.is-empty { border-style:dashed; background:rgba(255,255,255,.42); }

@media not all {
  .chat-settings-page .chat-api-settings-group { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }
  .chat-settings-page .chat-api-settings-group .chat-memory-settings { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }
  .chat-settings-page .chat-memory-settings { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }
  .chat-memory-settings-head { color:#eee; }
  .chat-memory-settings-body { border-color:rgba(255,255,255,.12); }
  .chat-memory-advanced-toggle { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.05); color:#eee; }
  .chat-memory-grid > label { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.05); color:#ddd; }
  .chat-active-message-grid > label { border-color:rgba(255,255,255,.1); background:transparent; color:#ddd; }
  .chat-memory-grid input,.chat-memory-actions button { border-color:rgba(255,255,255,.13); background:#2b2b2b; color:#eee; }
  .chat-moment-automation-grid > label > span:first-child { color:#ddd; }
  .chat-moment-time-inputs b,.chat-moment-count-value small { color:#aaa; }
  .chat-memory-status span { background:rgba(255,255,255,.1); color:#ddd; }
  .chat-memory-actions button.is-primary { border-color:#eee; background:#eee; color:#111; }
  .chat-thought-api-setting { color:#eee; }
  .chat-thought-api-setting select { border-color:rgba(255,255,255,.13); background:#2b2b2b; color:#eee; }
  .chat-vision-api-warning { background:rgba(226,183,73,.12); color:#e8ca7d; }
  .chat-settings-page .chat-wallpaper-settings { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }
  .memory-core-card { border-color:rgba(255,255,255,.12); background:linear-gradient(145deg,rgba(255,255,255,.09),rgba(127,98,149,.08)); }
  .memory-core-card header b,.memory-core-card > p { color:#e3d9e9; }
}


@media (max-width:430px) {
  .chat-memory-grid { grid-template-columns:1fr 1fr; }
  .chat-moment-automation-grid { grid-template-columns:1fr; }
  .memory-hero { gap:10px; padding:17px 14px; }
  .memory-hero dl { gap:9px; }
}
.chat-settings-page .chat-active-message-grid { grid-template-columns:1fr; }

/* 自定义桌面图标使用独立图片层，避免相册默认渐变覆盖图片。 */
.app-icon,
.dock-icon { position:relative; }
.app-icon > .default-app-icon,
.dock-icon > .default-app-icon,
.folder-app-icon > .default-app-icon,
.beauty-app-preview > .default-app-icon { display:block; width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.app-icon:has(> .default-app-icon),
.dock-icon:has(> .default-app-icon),
.folder-app-icon:has(> .default-app-icon) { overflow:hidden; border-color:transparent; background:none; }
.folder-mini-app > .default-app-icon { display:block; width:100%; height:100%; object-fit:cover; }
.folder-mini-app:has(> .default-app-icon)::before,
.folder-mini-app:has(> .default-app-icon)::after,
.folder-mini-app:has(> .default-app-icon) > span { display:none; }
.folder-app-icon:has(> .default-app-icon)::before,
.folder-app-icon:has(> .default-app-icon)::after,
.folder-app-icon:has(> .default-app-icon) > span { display:none; }
.app-icon.has-custom-image,
.dock-icon.has-custom-image { overflow:hidden; }
.app-icon > .app-custom-image,
.dock-icon > .app-custom-image { position:absolute !important; inset:0 !important; z-index:3 !important; display:block !important; width:100% !important; height:100% !important; border-radius:inherit; object-fit:cover !important; filter:none !important; opacity:1 !important; visibility:visible !important; mix-blend-mode:normal !important; }
.profile-card { position: relative; z-index: 1; margin: 140px 0 24px; padding: 48px 16px; border-radius: 18px; }
.person-wrap { position: relative; display: flex; align-items: center; justify-content: space-between; }
.user-item, .char-item { display: flex; align-items: center; gap: 10px; }
.love-heart { position: absolute; left: 50%; display: grid; place-items: center; width: 104px; height: 28px; color: #333; font-size: 22px; line-height: 1; transform: translateX(-50%); animation: heart-beat 1.25s ease-in-out infinite; }
.love-heart svg { position: absolute; inset: 0; width: 104px; height: 28px; overflow: visible; }
.love-heart span { position: relative; z-index: 1; }
.heartbeat-line { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 58; stroke-dashoffset: 58; animation: heartbeat-draw 1.25s linear infinite; }
@keyframes heartbeat-draw {
  0% { stroke-dashoffset: 58; opacity: .3; }
  45%, 75% { stroke-dashoffset: 0; opacity: 1; }
  100% { stroke-dashoffset: -8; opacity: .3; }
}
@keyframes heart-beat {
  0%, 100% { transform: translateX(-50%) scale(1); }
  14% { transform: translateX(-50%) scale(1.16); }
  28% { transform: translateX(-50%) scale(1); }
  42% { transform: translateX(-50%) scale(1.11); }
  56% { transform: translateX(-50%) scale(1); }
}
.avatar { width: 64px; height: 64px; flex-shrink: 0; border: 3px solid #fff; border-radius: 50%; background: var(--widget-placeholder-gray); background-clip: padding-box; box-shadow: 0 2px 8px rgba(0,0,0,.08); background-size: cover; background-position: center; }
.nickname-text { color: #242424; font-size: 18px; font-weight: 600; }
.sign-text { margin-top: 2px; color: #888; font-size: 13px; text-align: center; }

.page1-middle { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.todo-widget { width: 100%; aspect-ratio: 1; padding: 14px; overflow: hidden; border-radius: 22px; }
.todo-title { margin-bottom: 8px; color: #222; font-size: 14px; font-weight: 600; }
.todo-list { max-height: calc(100% - 28px); overflow-y: auto; color: #444; font-size: 12px; }
.todo-new-row { color: #999; font-size: 12px; }
.image-widget { position:relative; width:100%; aspect-ratio:1; overflow:hidden; border-radius:22px; background-position:center; background-size:contain; background-repeat:no-repeat; cursor:pointer; }
.image-widget::after { position:absolute; inset:0; border-radius:inherit; box-shadow:inset 0 1px 0 rgba(255,255,255,.7); content:''; pointer-events:none; }
.image-widget-placeholder { position:absolute; inset:0; display:grid; place-content:center; justify-items:center; gap:8px; padding:18px; color:#777; text-align:center; transition:opacity .16s ease; }
.image-widget-placeholder svg { width:34px; height:34px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; opacity:.72; }
.image-widget-placeholder span { font-size:10px; letter-spacing:.03em; }
.image-widget.has-image .image-widget-placeholder { opacity:0; }
.countdown-widget { position:relative; width:100%; aspect-ratio:1; overflow:hidden; border-radius:22px; padding:14px; display:grid; grid-template-rows:auto 1fr auto; align-items:center; justify-items:center; text-align:center; cursor:pointer; }
.countdown-title { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin-top:2px; color:#222; font-size:18px; font-weight:600; letter-spacing:.02em; }
.countdown-days { color:#1f1f1f; font-family:"Snell Roundhand","Bradley Hand","Segoe Print","STKaiti",cursive; font-size:60px; font-style:italic; font-weight:800; line-height:1; }
.countdown-days.is-empty, .elapsed-days.is-empty { font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",system-ui,sans-serif; font-size:17px; font-style:normal; font-weight:600; letter-spacing:0; }
.countdown-date { color:#888; font-size:14px; letter-spacing:.04em; }
.countdown-date-pickers { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.shared-widget { position:relative; display:grid; grid-template-columns:minmax(0,1.12fr) minmax(0,1fr); grid-template-rows:auto minmax(0,1fr); gap:10px 14px; width:100%; min-height:170px; padding:14px; overflow:hidden; border-radius:22px; color:#222; cursor:pointer; }
.shared-tabs { grid-column:1/-1; display:flex; align-items:center; justify-content:center; gap:20px; min-width:0; color:inherit; font-size:10px; font-weight:650; letter-spacing:.04em; }
.shared-tabs span { white-space:nowrap; }
.shared-tabs .is-active { padding:4px 10px; border-radius:11px; background:rgba(255,255,255,.46); }
.shared-images { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; min-width:0; align-self:center; }
.shared-picture { position:relative; display:grid; place-items:center; min-width:0; aspect-ratio:1; overflow:hidden; border-radius:16px; background:rgba(255,255,255,.22) center/cover no-repeat; color:inherit; }
.shared-picture::after { position:absolute; inset:0; border-radius:inherit; box-shadow:inset 0 1px 0 rgba(255,255,255,.48); content:''; pointer-events:none; }
.shared-copy { grid-column:2; grid-row:2; display:grid; grid-template-rows:minmax(0,1fr) auto; align-self:stretch; min-width:0; min-height:0; }
.shared-note { align-self:center; min-width:0; max-height:100%; margin:0; overflow:auto; color:inherit; font-size:13px; line-height:1.65; white-space:pre-wrap; overflow-wrap:anywhere; }
.shared-note:empty::before { content:'(^_^)'; opacity:.7; }
.shared-stats { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:4px; min-width:0; margin-top:8px; color:inherit; font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",system-ui,sans-serif; font-size:10px; font-variant-numeric:normal; line-height:1.2; white-space:nowrap; }
.shared-stats span { min-width:12px; }
.shared-stats span:empty::before { content:'(^_^)'; font-size:8px; opacity:.7; }
.shared-stats b { font-weight:500; }
.shared-stats i { margin:0 2px; font-style:normal; opacity:.55; }
.chat-widget { position:relative; display:grid; gap:12px; width:100%; min-height:170px; padding:12px 10px; color:#222; cursor:pointer; }
.chat-widget-row { display:grid; align-items:center; gap:8px; min-width:0; }
.chat-widget-row.is-left { grid-template-columns:36px minmax(0,1fr) auto; }
.chat-widget-row.is-right { grid-template-columns:auto minmax(0,1fr) 36px; }
.chat-widget-row.is-left .chat-widget-bubble, .chat-widget-row.is-right .chat-widget-bubble { width:calc(100% - 36px); margin:0; box-sizing:border-box; }
.chat-widget-row.is-right .chat-widget-bubble { justify-self:end; }
.chat-widget-row.is-left time { transform:translateX(-36px); }
.chat-widget-row.is-right time { transform:translateX(36px); }
.chat-widget-avatar { width:36px; height:36px; overflow:hidden; border:1px solid rgba(255,255,255,.78); border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; background-clip:padding-box; box-shadow:0 3px 8px rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.65); }
.chat-widget-avatar:empty::before { content:none; }
.chat-widget-bubble { min-width:0; padding:10px 14px; overflow:hidden; border:1px solid rgba(255,255,255,.64); border-radius:18px; background:rgba(255,255,255,.22); box-shadow:inset 0 1px 0 rgba(255,255,255,.48),0 5px 14px rgba(0,0,0,.07); -webkit-backdrop-filter:blur(16px) saturate(135%); backdrop-filter:blur(16px) saturate(135%); }
.chat-widget-content { display:block; min-width:0; min-height:15px; overflow:hidden; color:inherit; font-size:11px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.chat-widget-row.is-right .chat-widget-content { text-align:right; }
.chat-widget-content:empty::before { content:'点击编辑气泡内容'; opacity:.45; }
.chat-widget-row time { min-width:34px; color:inherit; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:8px; line-height:1; opacity:.78; text-align:center; white-space:nowrap; }
.chat-widget-row time:empty::before { content:'时间'; opacity:.58; }
.mood-profile-widget { position:relative; display:grid; grid-template-columns:minmax(0,1fr) 86px minmax(0,1fr); align-items:center; gap:10px; width:100%; min-height:170px; padding:12px 8px; overflow:hidden; color:#222; cursor:pointer; }
.mood-profile-side { display:grid; gap:12px; min-width:0; }
.mood-profile-pill { display:flex; align-items:center; justify-content:center; min-width:0; min-height:36px; padding:0 10px; overflow:hidden; border:1px solid rgba(255,255,255,.68); border-radius:17px; background:rgba(255,255,255,.24); box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 5px 14px rgba(0,0,0,.06); text-align:center; -webkit-backdrop-filter:blur(16px) saturate(135%); backdrop-filter:blur(16px) saturate(135%); }
.mood-profile-pill span { min-width:0; overflow:hidden; color:inherit; font-size:10px; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }
.mood-profile-center { display:grid; justify-items:center; gap:8px; min-width:0; }
.mood-profile-avatar { width:78px; height:78px; overflow:hidden; border:1px solid rgba(255,255,255,.78); border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; background-clip:padding-box; box-shadow:0 5px 15px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.62); }
.mood-profile-avatar:empty::before { content:none; }
.mood-profile-footer { max-width:100%; overflow:hidden; color:inherit; font-size:12px; line-height:1.2; text-overflow:ellipsis; white-space:nowrap; }
.time-photo-widget { position:relative; display:grid; gap:10px; width:100%; min-height:190px; padding:10px 8px; overflow:hidden; color:#222; cursor:pointer; }
.time-photo-header { display:grid; grid-template-columns:minmax(0,1fr) auto 50px; align-items:center; gap:9px; min-width:0; }
.time-photo-meta { display:flex; align-items:baseline; gap:14px; min-width:0; padding-left:8px; }
.time-photo-meta strong { overflow:hidden; font:italic 24px/1 Georgia,'Times New Roman',serif; letter-spacing:-.04em; text-overflow:ellipsis; white-space:nowrap; }
.time-photo-meta span { overflow:hidden; font:italic 17px/1 Georgia,'Times New Roman',serif; text-overflow:ellipsis; white-space:nowrap; }
.time-photo-heart { color:inherit; font-size:17px; line-height:1; }
.time-photo-avatar { width:50px; height:50px; overflow:hidden; border:1px solid rgba(255,255,255,.78); border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; background-clip:padding-box; box-shadow:0 4px 12px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.62); }
.time-photo-avatar:empty::before { content:none; }
.time-photo-gallery { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; min-width:0; padding:11px; border:1px solid rgba(255,255,255,.7); border-radius:22px; background:rgba(255,255,255,.24); box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 6px 16px rgba(0,0,0,.06); -webkit-backdrop-filter:blur(18px) saturate(135%); backdrop-filter:blur(18px) saturate(135%); }
.time-photo-image { width:100%; aspect-ratio:1 / 1; min-width:0; overflow:hidden; border:1px solid rgba(255,255,255,.72); border-radius:14px; background:var(--widget-placeholder-gray) center/cover no-repeat; }
.now-playing-widget { position:relative; display:grid; grid-template-rows:auto auto 1fr; gap:9px; width:100%; min-height:170px; padding:13px 15px; overflow:hidden; border-radius:22px; color:#222; cursor:pointer; }
.now-playing-widget::before { position:absolute; top:30px; left:32px; z-index:0; width:1px; height:26px; background:currentColor; content:''; opacity:.22; }
.now-playing-widget::after { position:absolute; top:104px; right:auto; bottom:13px; left:32px; z-index:0; width:1px; background:currentColor; content:''; opacity:.22; }
.now-playing-head { display:grid; grid-template-columns:34px minmax(0,1fr) auto 22px; align-items:center; gap:9px; min-width:0; }
.now-playing-avatar { position:relative; z-index:1; width:34px; height:34px; overflow:hidden; border:1px solid rgba(255,255,255,.78); border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; background-clip:padding-box; box-shadow:0 3px 8px rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.65); }
.now-playing-avatar:empty::before { content:none; }
.now-playing-avatar.has-image::before { content:none; }
.now-playing-head strong { min-width:0; overflow:hidden; font-size:12px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.now-playing-head time { color:inherit; font-size:10px; white-space:nowrap; }
.now-playing-check { display:grid; place-items:center; width:21px; height:21px; border-radius:50%; background:rgba(0,0,0,.72); color:#fff; font-size:13px; line-height:1; }
.now-playing-middle { display:grid; grid-template-columns:34px minmax(0,1fr); align-items:center; gap:9px; min-width:0; }
.now-playing-rail { position:relative; z-index:1; display:grid; place-items:center; height:53px; }
.now-playing-rail::before { display:none; }
.now-playing-rail i { position:relative; z-index:1; display:grid; place-items:center; width:29px; height:29px; border:1px solid rgba(255,255,255,.72); border-radius:50%; background:rgba(255,255,255,.52); color:inherit; font-size:15px; font-style:normal; line-height:1; }
.now-playing-rail i.is-cutlery { width:29px; height:53px; border-radius:15px; background:#fff; }
.now-playing-rail svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; }
.now-playing-details { display:grid; gap:5px; min-width:0; }
.now-playing-weather { display:flex; align-items:center; gap:8px; min-width:0; color:inherit; font-size:11px; }
.now-playing-weather span:first-child { font-weight:700; }
.now-playing-weather span:last-child { opacity:.78; }
.now-playing-details > strong { min-width:0; overflow:hidden; font-size:14px; font-weight:750; text-overflow:ellipsis; white-space:nowrap; }
.now-playing-images { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; gap:9px; min-width:0; margin-left:43px; }
.now-image { position:relative; display:grid; place-items:center; align-self:start; width:100%; height:auto; aspect-ratio:1 / 1; min-width:0; min-height:0; overflow:hidden; border:1px solid rgba(255,255,255,.7); border-radius:12px; background-color:var(--widget-placeholder-gray); background-position:center; background-size:cover; background-repeat:no-repeat; color:rgba(75,105,130,.72); }
.now-image span { display:none; }
.now-image.is-drop, .now-image.is-rain, .now-image.is-house { background-color:var(--widget-placeholder-gray); }
.now-image.has-image > span { opacity:0; }
@media (max-width:390px) { .countdown-title { font-size:16px; } .countdown-days { font-size:54px; } .countdown-date { font-size:12px; } }
.elapsed-days-widget { position:relative; width:100%; aspect-ratio:1; overflow:hidden; border-radius:22px; padding:14px; display:grid; grid-template-rows:auto 1fr auto; align-items:center; justify-items:center; text-align:center; cursor:pointer; }
.elapsed-title { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-height:22px; margin-top:2px; color:#222; font-size:17px; font-weight:600; letter-spacing:.02em; }
.elapsed-title:empty::before { content:'(^_^)'; color:#888; font-size:12px; font-weight:500; }
.elapsed-days { color:#1f1f1f; font-family:"Snell Roundhand","Bradley Hand","Segoe Print","STKaiti",cursive; font-size:48px; font-style:italic; font-weight:800; line-height:1; }
.elapsed-date { color:#888; font-size:13px; letter-spacing:.04em; }
.page1-apps-grid { display: grid; grid-template: repeat(2, 1fr) / repeat(2, 1fr); gap: 12px; transform: translateY(12px); }
.page2-apps-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px 6px; }
.app-item, .dock-item { text-align: center; cursor: pointer; }
.desktop-scroll-wrap [data-desktop-item] { -webkit-touch-callout:none; }
.app-icon, .dock-icon { display: grid; place-items: center; width: 62px; height: 62px; margin: 0 auto 6px; border: 1px solid rgba(255,255,255,.78); border-radius: 20px; background: rgba(255,255,255,.46); box-shadow: 0 3px 8px rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.8); -webkit-backdrop-filter: blur(18px) saturate(140%); backdrop-filter: blur(18px) saturate(140%); }
.app-icon svg, .dock-icon svg { width: 40px; height: 40px; }
.app-name { color: #303030; font-size: 11px; }
.icon-night { display: none; }

.search-wrap { position: relative; z-index: 1; margin: 40px 0 24px; }
.search-input { width: 100%; height: 44px; padding: 0 18px; border: 0; border-radius: 22px; outline: 0; color: #222; font-size: 15px; }
.search-input::placeholder { color: #8a8a8a; }
.photo-group { position: relative; z-index: 1; display: flex; gap: 10px; margin: 24px 0; }
.photo-card { flex: 1; aspect-ratio: 9 / 16; border: 1px solid rgba(255,255,255,.7); border-radius: 18px; background: var(--widget-placeholder-gray) center/cover no-repeat; }

.date-calendar-card { position: relative; z-index: 1; width: 100%; min-height: 100px; margin: 28px 0; padding: 14px 14px 14px 100px; border-radius: 36px; }
.date-calendar-image { position: absolute; top: 14px; left: 14px; width: 72px; height: 72px; overflow: hidden; border-radius: 20px; background: var(--widget-placeholder-gray); }
.date-calendar-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.date-calendar-left { display: grid; grid-template-columns: auto 1fr; column-gap: 26px; align-items: center; color: #242424; }
.date-calendar-note { position: absolute; top: 18px; left: 205px; max-width: calc(100% - 220px); max-height: 42px; overflow: auto; color: #777; font-size: 11px; line-height: 1.4; overflow-wrap: anywhere; text-align: left; white-space: normal; scrollbar-width: none; }
.date-calendar-note::-webkit-scrollbar { display: none; }
.edit-select { width: 100%; min-height: 40px; padding: 0 11px; border: 1px solid rgba(0,0,0,.1); border-radius: 13px; outline: 0; background: rgba(255,255,255,.68); color: #222; font: inherit; font-size: 15px; }
.date-calendar-year, .date-calendar-weekday { color: #888; font-size: 12px; }
.date-calendar-weekday { grid-column: 2; grid-row: 1; }
.date-calendar-month-day { grid-column: 1 / -1; grid-row: 2; margin-top: 1px; font-size: 22px; font-weight: 650; }
.date-calendar-right { margin-top: 10px; }
.calendar-header { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; }
.calendar-header { color: #888; font-size: 10px; }
.calendar-days { display: flex; flex-direction: column; gap: 2px; height: 64px; margin-top: 5px; overflow-y: auto; color: #555; font-size: 11px; scrollbar-width: none; overscroll-behavior: contain; }
.calendar-days::-webkit-scrollbar { display: none; }
.calendar-week { display: grid; flex: 0 0 20px; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; align-items: center; text-align: center; }
.calendar-day { display: grid; place-items: center; width: 20px; height: 20px; margin: auto; border-radius: 50%; }
.calendar-day.today, .calendar-day[data-calendar-today="true"], .calendar-day[aria-current="date"] { display: grid; place-items: center; width: 21px; height: 21px; border: 1px solid rgba(105,105,102,.22); border-radius: 50%; background: #aaa9a5 !important; color: #222 !important; font-weight: 700; box-shadow: 0 1px 4px rgba(0,0,0,.18); }
.calendar-day.today, .calendar-day[data-calendar-today="true"], .calendar-day[aria-current="date"] { position: relative; width: 23px; height: 22px; border: 0 !important; border-radius: 0; background: transparent !important; color: inherit !important; box-shadow: none !important; }
.calendar-day-number { position: relative; z-index: 1; }
.calendar-today-heart {
  position: absolute; top: 50%; left: 50%; z-index: 0;
  display: block !important; width: 31px; height: 28px;
  overflow: visible; pointer-events: none;
  fill: none; stroke: #cc4d5a; stroke-width: 1.55;
  stroke-linecap: round; stroke-linejoin: round;
  transform: translate(-50%,-50%) rotate(-6deg); transform-origin: 50% 52%;
  filter: drop-shadow(.2px .3px 0 rgba(204,77,90,.25));
}
.calendar-today-heart path { fill:none; stroke:inherit; vector-effect:non-scaling-stroke; }
.calendar-day.has-event { box-shadow: inset 0 -2px 0 #777; }
.couple-action-row { display:grid; grid-template-columns:1fr 1fr; gap:8px; max-width:520px; margin:0 auto 13px; }.couple-action-row .couple-primary, .couple-action-row .couple-secondary { margin:0; }

.page-indicator { position: relative; z-index: 2; display: flex; justify-content: center; gap: 7px; padding-top: 6px; }
.dot { width: 6px; height: 6px; border-radius: 50%; background: #d0d0cc; }
.dot.active { background: #4b4b4b; }
.page-indicator.auto-light .dot { background: rgba(255,255,255,.52); box-shadow: 0 1px 3px rgba(0,0,0,.22); }
.page-indicator.auto-light .dot.active { background: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.28); }
.dock-bar { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-around; height: 88px; margin: 16px 12px 24px; padding: 10px 18px 4px; border-radius: 30px; }
.dock-bar > .dock-item { flex:1 1 0; min-width:0; }
.desktop-edit-mode .dock-bar { touch-action:none; user-select:none; -webkit-user-select:none; will-change:transform; }
.desktop-edit-mode .page-indicator { align-items:center; min-height:34px; margin:-11px 0; padding:0; cursor:grab; touch-action:none; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; will-change:transform; }
.desktop-edit-mode .dock-bar.is-dock-dragging { z-index:110; cursor:grabbing; box-shadow:0 16px 38px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.72); }
.desktop-edit-mode .page-indicator.is-dock-dragging { z-index:111; cursor:grabbing; }
.desktop-edit-mode .page-indicator.is-dock-dragging .dot { transform:scale(1.2); }
.dock-icon { width: 62px; height: 62px; margin-bottom: 0; border-color: rgba(255,255,255,.62); background: rgba(255,255,255,.14); box-shadow: 0 4px 12px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.62); -webkit-backdrop-filter: blur(26px) saturate(160%); backdrop-filter: blur(26px) saturate(160%); }
.dock-item .dock-name { display:none; }
.dock-name { color: #303030; font-size: 10px; }
.app-icon.has-custom-image, .dock-icon.has-custom-image { background-position: center; background-size: cover; }
.app-icon.has-custom-image svg, .dock-icon.has-custom-image svg { display: none; }
.app-item.auto-light .app-name { color: #fff !important; text-shadow: 0 1px 4px rgba(0,0,0,.5); }
.app-item.auto-light .app-icon svg { filter: invert(1) drop-shadow(0 1px 2px rgba(0,0,0,.35)); }
.folder-app-item.auto-light { color: #fff !important; text-shadow: 0 1px 4px rgba(0,0,0,.5); }
.folder-app-item.auto-light .folder-app-name { color: #fff !important; }
.folder-app-item.auto-light .folder-app-icon { color: #fff; border-color: rgba(255,255,255,.72); }
.folder-app-item.auto-light .generated-folder-icon .icon-day { display: none; }
.folder-app-item.auto-light .generated-folder-icon .icon-night { display: inline; }
.folder-app-item.auto-dark { color: #222 !important; text-shadow: 0 1px 4px rgba(255,255,255,.28); }
.folder-app-item.auto-dark .folder-app-name { color: #222 !important; }
.folder-app-item.auto-dark .folder-app-icon { color: #222; border-color: rgba(0,0,0,.24); }
.folder-app-item.auto-dark .generated-folder-icon .icon-day { display: inline; }
.folder-app-item.auto-dark .generated-folder-icon .icon-night { display: none; }
.folder-app-item { color: #222 !important; text-shadow: none !important; }
.folder-app-item .folder-app-name { color: #222 !important; text-shadow: none !important; }
.folder-app-item.is-wallpaper-dark .folder-app-name { color:#fff !important; -webkit-text-fill-color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.5) !important; }
.folder-app-item.is-wallpaper-light .folder-app-name { color:#222 !important; -webkit-text-fill-color:#222 !important; text-shadow:0 1px 2px rgba(255,255,255,.28) !important; }
.folder-app-item .folder-app-icon,
.folder-app-item.auto-light .folder-app-icon,
.folder-app-item.auto-dark .folder-app-icon { color: #222 !important; border-color: rgba(255,255,255,.58) !important; box-shadow: 0 5px 13px rgba(0,0,0,.06), inset 0 1px 0 rgba(255,255,255,.58) !important; }
.folder-app-item .folder-app-icon svg { filter: brightness(0) !important; }
.dock-item.auto-light .dock-name { color: #fff !important; text-shadow: 0 1px 4px rgba(0,0,0,.5); }
.desktop-layout-toolbar > button.auto-light { background:#fff !important; color:#111 !important; box-shadow:0 3px 8px rgba(0,0,0,.25) !important; text-shadow:none; }
.desktop-layout-toolbar > button.auto-dark { background:#111 !important; color:#fff !important; box-shadow:0 3px 8px rgba(0,0,0,.3) !important; text-shadow:none; }
.profile-card.auto-light .nickname-text, .profile-card.auto-light .love-heart { color: #fff !important; text-shadow: 0 1px 4px rgba(0,0,0,.55); }
.profile-card.auto-light .sign-text, .todo-widget.auto-light .todo-title, .todo-widget.auto-light .todo-list, .todo-widget.auto-light .todo-new-row { color: #f5f5f5 !important; text-shadow: 0 1px 4px rgba(0,0,0,.55); }
.image-widget.auto-light { color:#fff !important; }
.image-widget.auto-light .image-widget-placeholder { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.55); }
.image-widget.auto-dark { color:#222 !important; }
.image-widget.auto-dark .image-widget-placeholder { color:#777 !important; text-shadow:0 1px 3px rgba(255,255,255,.3); }
.search-input.auto-light { color: #fff !important; text-shadow: 0 1px 4px rgba(0,0,0,.5); }
.search-input.auto-light::placeholder { color: rgba(255,255,255,.82); }
.date-calendar-card.auto-light .date-calendar-left, .date-calendar-card.auto-light .date-calendar-year, .date-calendar-card.auto-light .date-calendar-weekday, .date-calendar-card.auto-light .date-calendar-note, .date-calendar-card.auto-light .calendar-header, .date-calendar-card.auto-light .calendar-days { color: #fff !important; text-shadow: 0 1px 4px rgba(0,0,0,.5); }
.shared-widget.auto-light { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.52); }
.shared-widget.auto-light .shared-tabs, .shared-widget.auto-light .shared-note, .shared-widget.auto-light .shared-stats { color:#fff !important; }
.shared-widget.auto-light .shared-tabs .is-active { background:rgba(255,255,255,.28); }
.shared-widget.auto-dark { color:#222 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.shared-widget.auto-dark .shared-tabs, .shared-widget.auto-dark .shared-note, .shared-widget.auto-dark .shared-stats { color:#222 !important; }
.shared-widget.auto-dark .shared-tabs .is-active { background:rgba(0,0,0,.08); }
.chat-widget.auto-light { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.52); }
.chat-widget.auto-light .chat-widget-bubble { border-color:rgba(255,255,255,.66); background:rgba(255,255,255,.25); }
.chat-widget.auto-light .chat-widget-avatar { border-color:rgba(255,255,255,.78); }
.chat-widget.auto-dark { color:#222 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.chat-widget.auto-dark .chat-widget-bubble { border-color:rgba(255,255,255,.5); background:rgba(255,255,255,.2); }
.chat-widget.auto-dark .chat-widget-avatar { border-color:rgba(255,255,255,.78); }
.now-playing-widget.auto-light { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.52); }
.now-playing-widget.auto-light .now-playing-check { background:rgba(255,255,255,.78); color:#222; }
.now-playing-widget.auto-light .now-playing-rail i { border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.3); }
.now-playing-widget.auto-dark { color:#222 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.now-playing-widget.auto-dark .now-playing-check { background:rgba(0,0,0,.72); color:#fff; }
.now-playing-widget.auto-dark .now-playing-rail i { border-color:rgba(0,0,0,.18); background:rgba(255,255,255,.44); }
.mood-profile-widget.auto-light { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.52); }
.mood-profile-widget.auto-light .mood-profile-pill { border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.24); }
.mood-profile-widget.auto-dark { color:#222 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.mood-profile-widget.auto-dark .mood-profile-pill { border-color:rgba(255,255,255,.58); background:rgba(255,255,255,.2); }
.time-photo-widget.auto-light { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.52); }
.time-photo-widget.auto-light .time-photo-gallery { border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.24); }
.time-photo-widget.auto-dark { color:#222 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.time-photo-widget.auto-dark .time-photo-gallery { border-color:rgba(255,255,255,.58); background:rgba(255,255,255,.2); }
.countdown-widget.auto-light { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.52); }
.countdown-widget.auto-light .countdown-title, .countdown-widget.auto-light .countdown-days, .countdown-widget.auto-light .countdown-date { color:#fff !important; }
.countdown-widget.auto-dark { color:#222 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.countdown-widget.auto-dark .countdown-title, .countdown-widget.auto-dark .countdown-days, .countdown-widget.auto-dark .countdown-date { color:#222 !important; }
.elapsed-days-widget.auto-light { color:#fff !important; text-shadow:0 1px 4px rgba(0,0,0,.52); }
.elapsed-days-widget.auto-light .elapsed-title, .elapsed-days-widget.auto-light .elapsed-days, .elapsed-days-widget.auto-light .elapsed-date { color:#fff !important; }
.elapsed-days-widget.auto-dark { color:#222 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.elapsed-days-widget.auto-dark .elapsed-title, .elapsed-days-widget.auto-dark .elapsed-days, .elapsed-days-widget.auto-dark .elapsed-date { color:#222 !important; }
.dock-bar.auto-light .dock-name { color: #fff !important; text-shadow: 0 1px 4px rgba(0,0,0,.5); }
.dock-bar.auto-light .dock-icon { background: rgba(255,255,255,.18); border-color: rgba(255,255,255,.68); }
.dock-bar.auto-light .dock-icon svg { filter: brightness(0) drop-shadow(0 1px 2px rgba(255,255,255,.45)); }

.beauty-modal { position: fixed; inset: 0; z-index: 25; display: none; align-items: stretch; justify-content: stretch; padding: 0; }
.beauty-modal.is-open { display: flex; }
.beauty-backdrop { display: none; }
.beauty-sheet { position: relative; display: flex; flex-direction: column; width: 100%; height: 100%; max-height: none; overflow: hidden; border: 0; border-radius: 0; background: rgba(248,248,246,.94); box-shadow: none; -webkit-backdrop-filter: blur(30px) saturate(125%); backdrop-filter: blur(30px) saturate(125%); }
.beauty-head { display: flex; align-items: flex-start; justify-content: space-between; padding: max(22px, env(safe-area-inset-top)) 24px 17px; border-bottom: 1px solid rgba(0,0,0,.08); }
.beauty-kicker { margin-bottom: 5px; color: #888; font-size: 10px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.beauty-title { color: #161616; font-size: 22px; font-weight: 650; letter-spacing: -.02em; }
.beauty-subtitle { margin-top: 5px; color: #888; font-size: 12px; }
.beauty-close { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #444; font-size: 21px; cursor: pointer; }
.beauty-content { overflow-y: auto; padding: 18px 24px 22px; }
.beauty-section { margin-bottom: 22px; }
.beauty-transfer { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 22px; padding: 14px; border: 1px solid rgba(0,0,0,.1); border-radius: 17px; background: rgba(255,255,255,.42); }
.beauty-transfer > div:first-child { min-width: 0; }
.beauty-transfer p { display: -webkit-box; max-width: clamp(120px, 35vw, 210px); margin-top: 5px; overflow: hidden; color: #999; font-size: clamp(8px, 2.4vw, 10px); line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.beauty-transfer-actions { display: flex; flex-shrink: 0; gap: 7px; }
.beauty-transfer-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 78px; min-height: 34px; padding: 0 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; background: rgba(255,255,255,.6); color: #444; font-size: 11px; cursor: pointer; }
.beauty-section-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.beauty-section-title { color: #222; font-size: 14px; font-weight: 650; }
.beauty-section-note { color: #999; font-size: 11px; }
.beauty-launcher-hint { display:block; margin-top:4px; color:#999; font-size:10px; }
.beauty-launcher-panel { display:grid; gap:10px; padding:13px; border:1px solid rgba(0,0,0,.1); border-radius:17px; background:rgba(255,255,255,.46); }
.beauty-launcher-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.beauty-launcher-choice,.beauty-launcher-upload { display:grid; justify-items:center; gap:6px; min-width:0; padding:7px 4px 8px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:rgba(255,255,255,.6); color:#666; font:inherit; cursor:pointer; }
.beauty-launcher-choice.is-selected,.beauty-launcher-upload.is-selected { border-color:#222; background:#fff; color:#222; box-shadow:0 4px 12px rgba(0,0,0,.08); }
.beauty-launcher-choice img,.beauty-launcher-custom-preview { display:grid; place-items:center; width:42px; height:42px; overflow:hidden; border-radius:13px; object-fit:contain; }
.beauty-launcher-custom-preview { background:linear-gradient(145deg,#ececea,#d5d5d1); color:#777; font-size:24px; }.beauty-launcher-custom-preview img { width:100%; height:100%; object-fit:cover; }
.beauty-launcher-choice b,.beauty-launcher-upload b { font-size:10px; font-weight:600; }
.beauty-launcher-mode { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-top:2px; }.beauty-launcher-mode span { display:grid; gap:3px; min-width:0; }.beauty-launcher-mode b { color:#444; font-size:11px; }.beauty-launcher-mode small { color:#999; font-size:9px; line-height:1.35; }
.beauty-launcher-mode select { flex:0 0 auto; width:92px; height:32px; padding:0 7px; border:1px solid rgba(0,0,0,.1); border-radius:9px; outline:0; background:#fff; color:#444; font:inherit; font-size:10px; }
.beauty-launcher-note { color:#999; font-size:9px; line-height:1.45; }
.launcher-setup { position:fixed; inset:0; z-index:30; display:none; align-items:flex-end; justify-content:center; padding:16px max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
.launcher-setup.is-open { display:flex; }
.launcher-setup-backdrop { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(17,20,18,.38); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); }
.launcher-setup-sheet { position:relative; z-index:1; box-sizing:border-box; width:min(100%,620px); max-height:min(760px,calc(100% - 12px)); overflow-y:auto; padding:19px; border:1px solid rgba(255,255,255,.72); border-radius:27px; background:rgba(247,248,245,.96); box-shadow:0 28px 80px rgba(16,22,19,.3); -webkit-backdrop-filter:blur(30px) saturate(145%); backdrop-filter:blur(30px) saturate(145%); }
.launcher-setup-sheet header { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.launcher-setup-sheet header span { color:#929895; font-size:8px; font-weight:750; letter-spacing:.18em; }
.launcher-setup-sheet h2 { margin:4px 0 0; color:#252a27; font-size:21px; letter-spacing:-.04em; }
.launcher-setup-sheet header p { margin:6px 0 0; color:#7f8782; font-size:10px; line-height:1.5; }
.launcher-setup-sheet header > button { display:grid; place-items:center; flex:0 0 auto; width:32px; height:32px; padding:0; border:1px solid var(--album-line); border-radius:50%; background:#fff; color:#626864; font:inherit; font-size:19px; cursor:pointer; }
.launcher-setup-body { display:grid; grid-template-columns:130px minmax(0,1fr); gap:15px; align-items:start; margin-top:17px; }
.launcher-setup-preview { display:grid; justify-items:center; gap:8px; padding:12px 8px 10px; border:1px solid rgba(0,0,0,.08); border-radius:17px; background:rgba(255,255,255,.52); color:#929895; font-size:9px; text-align:center; }
.launcher-setup-preview img { display:block; width:88px; height:88px; border-radius:22px; object-fit:cover; box-shadow:0 8px 18px rgba(30,38,33,.12); }
.launcher-setup-body .beauty-launcher-panel { padding:0; border:0; background:transparent; }
.launcher-setup-sheet footer { display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
.launcher-setup-sheet footer button { min-height:38px; padding:0 14px; border:1px solid rgba(0,0,0,.1); border-radius:12px; background:#fff; color:#606762; font:inherit; font-size:10px; cursor:pointer; }
.launcher-setup-sheet footer .launcher-setup-install { border-color:#252a27; background:#252a27; color:#fff; }
.beauty-wallpaper-box { display: grid; gap: 10px; padding: 13px; border: 1px solid rgba(0,0,0,.1); border-radius: 17px; background: rgba(255,255,255,.46); }
.beauty-wallpaper-preview { height: 90px; border-radius: 12px; background: #ddd center/cover no-repeat; }
.beauty-input { width: 100%; height: 38px; padding: 0 11px; border: 1px solid rgba(0,0,0,.1); border-radius: 10px; outline: 0; background: rgba(255,255,255,.68); color: #222; font: inherit; font-size: 13px; }
.url-fetch-field { display: flex; align-items: center; gap: 6px; width: 100%; }.url-fetch-field > input[type="url"] { min-width: 0; flex: 1; }.url-fetch-button { flex: 0 0 auto; min-height: 30px; padding: 0 11px; border: 1px solid rgba(0,0,0,.12); border-radius: 9px; background: rgba(255,255,255,.72); color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.beauty-file-label { display: inline-flex; align-items: center; justify-content: center; width: fit-content; min-height: 34px; padding: 0 12px; border: 1px solid rgba(0,0,0,.1); border-radius: 10px; background: rgba(0,0,0,.06); color: #444; font-size: 12px; cursor: pointer; }
.beauty-wallpaper-delete { width: fit-content; min-height: 32px; padding: 0 12px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; background: rgba(255,255,255,.68); color: #777; font: inherit; font-size: 11px; cursor: pointer; }
.beauty-wallpaper-album { width: fit-content; min-height: 32px; padding: 0 12px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; background: rgba(255,255,255,.68); color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.beauty-wallpaper-actions { display: flex; flex-wrap: nowrap; align-items: center; justify-content: flex-start; gap: 8px; width: 100%; overflow-x: auto; }
.beauty-wallpaper-actions > .beauty-file-label,
.beauty-wallpaper-actions > .beauty-wallpaper-album,
.beauty-wallpaper-actions > .beauty-wallpaper-delete { flex: 0 0 auto; white-space: nowrap; }
.beauty-launch-animation-setting { margin-top: -2px; }
.beauty-launch-animation-card { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px; border:1px solid rgba(0,0,0,.1); border-radius:17px; background:rgba(255,255,255,.46); cursor:pointer; }
.beauty-launch-animation-copy { display:grid; gap:5px; min-width:0; }
.beauty-launch-animation-copy b { color:#333; font-size:12px; font-weight:650; }
.beauty-launch-animation-copy small { color:#999; font-size:10px; line-height:1.45; }
.beauty-launch-animation-switch { position:relative; flex:0 0 46px; width:46px; height:27px; }
.beauty-launch-animation-switch input { position:absolute; width:1px; height:1px; opacity:0; }
.beauty-launch-animation-switch i { position:absolute; inset:0; border-radius:999px; background:#d8d8d5; box-shadow:inset 0 0 0 1px rgba(0,0,0,.08); transition:background .2s ease; }
.beauty-launch-animation-switch i::after { position:absolute; top:3px; left:3px; width:21px; height:21px; border-radius:50%; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,.16); content:''; transition:transform .2s ease; }
.beauty-launch-animation-switch input:checked + i { background:#222; }
.beauty-launch-animation-switch input:checked + i::after { transform:translateX(19px); }
.beauty-launch-animation-switch input:focus-visible + i { outline:2px solid rgba(0,0,0,.35); outline-offset:3px; }
.beauty-icon-section-actions { display:flex; align-items:center; justify-content:flex-end; gap:clamp(3px,.7vw,7px); min-width:0; container-type:inline-size; }
.beauty-icon-section-actions button { box-sizing:border-box; flex:0 1 auto; min-width:0; padding-right:clamp(4px,1cqi,11px); padding-left:clamp(4px,1cqi,11px); font-size:clamp(8px,1.6cqi,11px); white-space:nowrap; }
.beauty-icon-section-head { min-width:0; }
.beauty-batch-icons,.beauty-other-import { border:1px solid rgba(0,0,0,.12); background:rgba(255,255,255,.68); color:#555; }
.beauty-batch-backdrop { position:fixed; inset:0; z-index:20; background:rgba(0,0,0,.22); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.beauty-batch-panel { position:fixed; top:50%; left:50%; z-index:21; display:flex; flex-direction:column; width:min(92vw,430px); max-height:78vh; padding:18px; border:1px solid rgba(0,0,0,.08); border-radius:22px; background:#fbfbfa; box-shadow:0 22px 60px rgba(0,0,0,.2); transform:translate(-50%,-50%); }
.beauty-batch-panel header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }.beauty-batch-panel header h3 { margin-top:5px; font-size:18px; }.beauty-batch-panel header span { color:#999; font-size:9px; letter-spacing:.12em; }.beauty-batch-panel header button { width:30px; height:30px; border:0; border-radius:50%; background:#eee; color:#555; font-size:20px; cursor:pointer; }
.beauty-batch-panel > p { margin:12px 0; color:#888; font-size:11px; line-height:1.5; }.beauty-batch-panel main { display:grid; gap:8px; overflow-y:auto; padding:2px; }.beauty-batch-icon-item { display:flex; align-items:center; gap:10px; padding:8px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:#fff; cursor:grab; touch-action:none; }.beauty-batch-icon-item.is-dragging { opacity:.55; border-color:#222; }.beauty-batch-icon-preview { display:grid; flex:0 0 46px; place-items:center; width:46px; height:46px; overflow:hidden; border-radius:13px; background:#eee; }.beauty-batch-icon-preview img { width:100%; height:100%; object-fit:cover; }.beauty-batch-icon-item div { display:grid; gap:4px; }.beauty-batch-icon-item b { font-size:12px; }.beauty-batch-icon-item small { color:#999; font-size:10px; }.beauty-batch-panel footer { display:flex; gap:8px; margin-top:14px; }.beauty-batch-panel footer button { flex:1; min-height:38px; border:1px solid rgba(0,0,0,.1); border-radius:11px; background:#fff; color:#555; font:inherit; font-size:11px; cursor:pointer; }.beauty-batch-panel footer .is-primary { border-color:#222; background:#222; color:#fff; }
.beauty-other-backdrop { position:fixed; inset:0; z-index:22; background:rgba(0,0,0,.24); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.beauty-other-panel { position:fixed; top:50%; left:50%; z-index:23; display:flex; flex-direction:column; box-sizing:border-box; width:min(92vw,430px); max-height:min(78vh,650px); padding:18px; border:1px solid rgba(255,255,255,.72); border-radius:22px; background:rgba(251,251,250,.97); box-shadow:0 22px 60px rgba(0,0,0,.22); transform:translate(-50%,-50%); -webkit-backdrop-filter:blur(26px) saturate(135%); backdrop-filter:blur(26px) saturate(135%); }
.beauty-other-panel header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex:0 0 auto; }.beauty-other-panel header span { color:#999; font-size:9px; letter-spacing:.12em; }.beauty-other-panel header h3 { margin-top:5px; color:#222; font-size:18px; }.beauty-other-panel header > button { display:grid; place-items:center; width:30px; height:30px; padding:0; border:0; border-radius:50%; background:#eee; color:#555; font:inherit; font-size:20px; cursor:pointer; }
.beauty-other-note { flex:0 0 auto; margin:12px 0; color:#858585; font-size:10px; line-height:1.55; }
.beauty-other-options { display:grid; grid-template-columns:1fr 1fr; gap:9px; }.beauty-other-options > button { display:grid; justify-items:start; gap:5px; min-height:104px; padding:14px; border:1px solid rgba(0,0,0,.09); border-radius:15px; background:#fff; color:#222; font:inherit; text-align:left; cursor:pointer; }.beauty-other-options b { font-size:24px; font-weight:500; line-height:1; }.beauty-other-options span { font-size:12px; font-weight:650; }.beauty-other-options small { color:#999; font-size:9px; }
.beauty-other-url-list,.beauty-other-local-list { display:grid; flex:1 1 auto; gap:8px; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:2px; }
.beauty-other-url-list label { display:grid; grid-template-columns:82px minmax(0,1fr); align-items:center; gap:8px; }.beauty-other-url-list span { overflow:hidden; color:#555; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.beauty-other-url-list input { width:100%; min-width:0; height:36px; padding:0 10px; border:1px solid rgba(0,0,0,.1); border-radius:10px; outline:0; background:#fff; color:#222; font:inherit; font-size:10px; }.beauty-other-url-list input:focus { border-color:#777; }.beauty-other-url-list input.is-invalid { border-color:#bd5656; background:#fff5f5; }
.beauty-other-local-list article { display:flex; align-items:center; gap:10px; padding:8px; border:1px solid rgba(0,0,0,.08); border-radius:13px; background:#fff; }.beauty-other-local-list img { flex:0 0 44px; width:44px; height:44px; border-radius:12px; object-fit:cover; }.beauty-other-local-list article > span { display:grid; gap:4px; min-width:0; }.beauty-other-local-list b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }.beauty-other-local-list small { color:#999; font-size:9px; }
.beauty-other-panel footer { display:flex; flex:0 0 auto; gap:8px; margin-top:14px; }.beauty-other-panel footer button { flex:1; min-height:38px; padding:0 10px; border:1px solid rgba(0,0,0,.1); border-radius:11px; background:#fff; color:#555; font:inherit; font-size:10px; cursor:pointer; }.beauty-other-panel footer .is-primary { border-color:#222; background:#222; color:#fff; }
.beauty-file { display: none; }
.beauty-app-list { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }
.beauty-app-row { display: grid; gap: 7px; align-items: start; min-width: 0; padding: 8px; border: 1px solid rgba(0,0,0,.08); border-radius: 14px; background: rgba(255,255,255,.38); }
.beauty-app-change { width: 100%; min-height: 27px; padding: 0 4px; border: 1px solid rgba(0,0,0,.1); border-radius: 8px; background: rgba(255,255,255,.68); color: #555; font: inherit; font-size: 10px; cursor: pointer; }
.beauty-app-change:active { background: #fff; transform: translateY(1px); }
.beauty-icon-swap-hint { margin:-2px 0 10px; color:#888; font-size:10px; line-height:1.45; }
.beauty-app-row.is-swap-selected { border-color:#222; box-shadow:0 0 0 2px rgba(34,34,34,.1); }
.beauty-app-row.is-swap-selected .beauty-app-preview::after { position:absolute; inset:3px; border:2px solid rgba(255,255,255,.92); border-radius:10px; content:''; pointer-events:none; }
.beauty-app-preview { position: relative; display: grid; place-items: center; width: 100%; aspect-ratio: 1; min-width: 0; overflow: hidden; border: 0; border-radius: 13px; background: #e5e5e2 center/cover no-repeat; cursor: pointer; }
.beauty-app-preview svg { width: 28px; height: 28px; }
.beauty-app-pick-mark { position: absolute; right: 4px; bottom: 4px; display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: rgba(255,255,255,.88); color: #444; font-size: 12px; font-weight:700; line-height: 1; opacity: 0; transition: opacity .15s ease; }
.beauty-app-row.is-swap-selected .beauty-app-pick-mark { opacity:1; }
.beauty-app-preview:hover .beauty-app-pick-mark, .beauty-app-preview:focus-visible .beauty-app-pick-mark { opacity: 1; }
.beauty-app-name { width: 100%; height: 30px; padding: 0 4px; border: 0; border-bottom: 1px solid rgba(0,0,0,.1); border-radius: 0; background: transparent; color: #333; font: inherit; font-size: 11px; text-align: center; }
.beauty-icon-controls { display: grid; gap: 5px; min-width: 0; }
.beauty-icon-controls .beauty-input { height: 30px; min-width: 0; padding: 0 6px; font-size: 9px; }
.beauty-icon-controls .beauty-file-label { width: 100%; min-height: 28px; padding: 0 5px; font-size: 10px; }
.beauty-icon-picker { position: absolute; inset: 0; z-index: 4; visibility: hidden; opacity: 0; pointer-events: none; transition: opacity .16s ease, visibility .16s; }
.beauty-icon-picker.is-open { visibility: visible; opacity: 1; pointer-events: auto; }
.beauty-icon-picker-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.18); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); }
.beauty-icon-picker-sheet { position: absolute; top: 50%; left: 50%; width: min(330px, calc(100% - 36px)); padding: 16px; transform: translate(-50%, calc(-50% + 8px)) scale(.98); border: 1px solid rgba(255,255,255,.72); border-radius: 20px; background: rgba(248,248,246,.96); box-shadow: 0 18px 50px rgba(0,0,0,.22); transition: transform .16s ease; }
.beauty-icon-picker.is-open .beauty-icon-picker-sheet { transform: translate(-50%, -50%) scale(1); }
.beauty-icon-picker-sheet header { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 13px; }
.beauty-icon-picker-sheet header > div { display: grid; gap: 4px; }
.beauty-icon-picker-sheet header span { color: #999; font-size: 8px; font-weight: 750; letter-spacing: .16em; }
.beauty-icon-picker-sheet h3 { color: #222; font-size: 17px; }
.beauty-icon-picker-sheet header button { display: grid; place-items: center; width: 28px; height: 28px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 19px; cursor: pointer; }
.beauty-icon-picker-options { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.beauty-icon-picker-options > button { display: grid; justify-items: start; gap: 4px; min-height: 86px; padding: 12px; border: 1px solid rgba(0,0,0,.09); border-radius: 14px; background: rgba(255,255,255,.62); color: #222; font: inherit; text-align: left; cursor: pointer; }
.beauty-icon-picker-options > button:hover { background: #fff; }
.beauty-icon-picker-options b { font-size: 22px; font-weight: 500; line-height: 1; }
.beauty-icon-picker-options span { font-size: 11px; font-weight: 650; }
.beauty-icon-picker-options small { color: #999; font-size: 8px; }
.beauty-icon-picker-url { display: flex; gap: 6px; margin-top: 9px; }
.beauty-icon-picker-url[hidden] { display: none; }
.beauty-icon-picker-url input { min-width: 0; flex: 1; height: 34px; padding: 0 9px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; outline: 0; background: #fff; color: #222; font: inherit; font-size: 10px; }
.beauty-icon-picker-url button { flex: 0 0 auto; height: 34px; padding: 0 11px; border: 0; border-radius: 9px; background: #171717; color: #fff; font: inherit; font-size: 10px; cursor: pointer; }
.beauty-footer { display: flex; justify-content: flex-end; gap: 9px; padding: 14px 24px 18px; border-top: 1px solid rgba(0,0,0,.08); }
.beauty-btn { min-width: 82px; min-height: 38px; padding: 0 15px; border: 0; border-radius: 11px; font: inherit; font-size: 13px; cursor: pointer; }
.beauty-cancel { margin-right: auto; background: rgba(0,0,0,.07); color: #444; }
.beauty-save { background: #171717; color: #fff; }
.beauty-inline-reset { min-width: 0; min-height: 32px; padding: 0 11px; border: 1px solid rgba(0,0,0,.14); border-radius: 10px; background: rgba(255,255,255,.34); color: #666; font-size: 11px; }
@media (max-width: 520px) {
  .beauty-icon-section-head { display:grid; grid-template-columns:minmax(0,1fr); align-items:start; gap:9px; }
  .beauty-icon-section-actions { display:grid; grid-template-columns:auto auto minmax(0,1.35fr) minmax(0,1.15fr) auto; width:100%; gap:clamp(2px,1vw,6px); }
  .beauty-icon-section-actions button { width:100%; min-width:0; min-height:clamp(27px,8vw,32px); padding:0 clamp(2px,1.2vw,8px); overflow:hidden; font-size:clamp(7px,2.25vw,9px); letter-spacing:-.03em; text-overflow:ellipsis; }
}
@media (max-width:390px) { .beauty-other-panel { width:calc(100vw - 24px); padding:16px; }.beauty-other-url-list label { grid-template-columns:68px minmax(0,1fr); }.beauty-other-options > button { min-height:96px; padding:12px; } }
.beauty-confirm-backdrop { position: absolute; inset: 0; z-index: 2; background: rgba(0,0,0,.22); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); }
.beauty-confirm-card { position: absolute; top: 50%; left: 50%; z-index: 3; width: min(320px, calc(100% - 40px)); transform: translate(-50%, -50%); padding: 22px; border: 1px solid rgba(255,255,255,.75); border-radius: 20px; background: rgba(250,250,248,.94); box-shadow: 0 18px 55px rgba(0,0,0,.2); text-align: center; }
.beauty-confirm-card h3 { color: #222; font-size: 16px; font-weight: 650; }
.beauty-confirm-card p { margin: 8px 0 18px; color: #888; font-size: 12px; line-height: 1.5; }
.beauty-confirm-card > div { display: flex; gap: 8px; justify-content: center; }
.beauty-confirm-card .beauty-btn { flex: 1; min-width: 0; min-height: 36px; }
.beauty-confirm-cancel { background: rgba(0,0,0,.07); color: #444; }
.beauty-confirm-ok { background: #171717; color: #fff; }
.edit-modal { position: fixed; inset: 0; z-index: 20; display: none; align-items: center; justify-content: center; padding: 20px; }
.edit-modal.is-open { display: flex; }
.edit-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); }
.edit-sheet { position: relative; width: min(100%, 380px); max-height: min(620px, calc(100vh - 40px)); overflow: auto; padding: 20px; border: 1px solid rgba(255,255,255,.72); border-radius: 24px; background: rgba(250,250,250,.78); box-shadow: 0 18px 50px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.85); -webkit-backdrop-filter: blur(28px) saturate(140%); backdrop-filter: blur(28px) saturate(140%); }
.edit-sheet-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.edit-sheet h2 { color: #222; font-size: 20px; font-weight: 650; }
.edit-close { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(0,0,0,.08); color: #444; font-size: 24px; line-height: 26px; cursor: pointer; }
.edit-field { display: grid; gap: 8px; margin-bottom: 15px; }
.edit-field label { color: #666; font-size: 13px; }
.edit-field input, .edit-field textarea { width: 100%; padding: 12px 13px; border: 1px solid rgba(0,0,0,.1); border-radius: 13px; outline: 0; background: rgba(255,255,255,.68); color: #222; font: inherit; font-size: 15px; }
.edit-field textarea { min-height: 112px; resize: vertical; line-height: 1.5; }
.font-size-control { display: grid; grid-template-columns: 1fr 68px auto; align-items: center; gap: 10px; }
.font-size-control input[type="number"] { width: 68px; padding: 8px 6px; text-align: center; }
.font-size-value { min-width: 42px; color: #666; font-size: 13px; text-align: right; }
.edit-file { display: none; }
.file-picker { display: inline-flex; align-items: center; justify-content: center; width: fit-content; min-height: 38px; padding: 0 14px; border: 1px solid rgba(0,0,0,.1); border-radius: 12px; background: rgba(255,255,255,.58); color: #333; font-size: 13px !important; cursor: pointer; box-shadow: inset 0 1px 0 rgba(255,255,255,.7); }
.edit-image-actions { display:flex; flex-wrap:nowrap; gap:clamp(4px,1.5vw,8px); width:100%; }
.image-edit-field .edit-image-actions > .file-picker, .image-edit-field .edit-image-actions > button { box-sizing:border-box; flex:1 1 0; width:auto; min-width:0; justify-content:center; padding-right:clamp(3px,1.7vw,12px); padding-left:clamp(3px,1.7vw,12px); font-size:clamp(9px,3.1vw,13px) !important; white-space:nowrap; }
.edit-image-actions button { min-height: 38px; padding: 0 14px; border: 1px solid rgba(0,0,0,.1); border-radius: 12px; background: #fff; color: #333; font: inherit; font-size: 13px; cursor: pointer; }
.edit-preview { width: 100%; height: 130px; border-radius: 15px; background: #ddd center/cover no-repeat; }
.edit-actions { display: flex; gap: 10px; margin-top: 20px; }
.edit-actions button { flex: 1; min-height: 42px; border: 0; border-radius: 13px; font: inherit; cursor: pointer; }
.edit-cancel { background: rgba(0,0,0,.08); color: #333; }
.edit-save { background: #111; color: #fff; }

.worldbook-app { position: fixed; inset: 0; z-index: 26; display: none; background: #f5f5f2; color: #202020; }
.worldbook-app.is-open { display: block; }
.worldbook-page { display: flex; flex-direction: column; width: 100%; height: 100%; background: #f1f1f3; }
.worldbook-header { display: flex; align-items: flex-start; justify-content: space-between; padding: max(24px, env(safe-area-inset-top)) 28px 22px; border-bottom: 1px solid rgba(0,0,0,.08); }
.worldbook-kicker, .worldbook-eyebrow { color: #999; font-size: 10px; font-weight: 700; letter-spacing: .16em; }
.worldbook-header h1 { margin-top: 6px; font-size: 30px; font-weight: 650; letter-spacing: -.04em; }
.worldbook-header p { margin-top: 7px; color: #999; font-size: 12px; }
.worldbook-close { width: 32px; height: 32px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #444; font-size: 23px; cursor: pointer; }
.worldbook-tabs { position: relative; display: flex; gap: 5px; padding: 14px 120px 14px 28px; border-bottom: 1px solid rgba(0,0,0,.08); overflow-x: auto; }
.worldbook-tabs > .worldbook-add-book { position: absolute; top: 14px; right: 28px; z-index: 2; }
.worldbook-tabs > .worldbook-add-book { top: 50%; transform: translateY(-50%); }
.worldbook-tabs button { padding: 9px 13px; border: 0; border-radius: 10px; background: transparent; color: #999; font: inherit; font-size: 13px; white-space: nowrap; cursor: pointer; }
.worldbook-tabs button.is-active { background: #202020; color: #fff; }
.worldbook-main { display: grid; grid-template-columns: minmax(220px,.78fr) minmax(0,1.5fr); flex: 1; min-height: 0; }
.worldbook-books, .worldbook-entries { min-width: 0; overflow-y: auto; padding: 24px 28px; }
.worldbook-books { border-right: 1px solid rgba(0,0,0,.08); }
.worldbook-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.worldbook-section-head h2 { margin-top: 5px; color: #222; font-size: 19px; font-weight: 650; }
.worldbook-add-book, .worldbook-add-entry { padding: 8px 11px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; background: rgba(255,255,255,.6); color: #333; font: inherit; font-size: 12px; cursor: pointer; }
.worldbook-add-entry:disabled { opacity: .35; cursor: default; }
.worldbook-book-list, .worldbook-entry-list { display: grid; gap: 9px; }
.worldbook-book { display: flex; align-items: center; width: 100%; padding: 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 15px; background: rgba(255,255,255,.42); text-align: left; cursor: pointer; }
.worldbook-book.is-active { border-color: #222; background: #222; color: #fff; }
.worldbook-book-mark { width: 7px; height: 28px; margin-right: 11px; border-radius: 4px; background: #bbb; }
.worldbook-book.is-active .worldbook-book-mark { background: #fff; }
.worldbook-book-info { display: grid; gap: 4px; min-width: 0; flex: 1; }
.worldbook-book-info b { overflow: hidden; font-size: 13px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.worldbook-book-info small { color: #999; font-size: 10px; }
.worldbook-book.is-active .worldbook-book-info small { color: #aaa; }
.worldbook-book-actions { display: flex; align-items: center; flex-shrink: 0; gap: 5px; }
.worldbook-book-edit, .worldbook-book-delete { padding: 6px 9px; border: 0; border-radius: 8px; background: rgba(0,0,0,.06); color: #666; font: inherit; font-size: 11px; cursor: pointer; }
.worldbook-book-delete { color: #777; }
.worldbook-book.is-active .worldbook-book-edit, .worldbook-book.is-active .worldbook-book-delete { background: rgba(255,255,255,.12); color: #ddd; }
.worldbook-empty { padding: 42px 10px; color: #aaa; font-size: 13px; line-height: 1.8; text-align: center; }
.worldbook-empty small { font-size: 11px; }
.worldbook-entry { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; padding: 16px; border: 1px solid rgba(0,0,0,.08); border-radius: 16px; background: rgba(255,255,255,.42); }
.worldbook-entry-copy { flex: 1; min-width: 0; overflow: hidden; }
.worldbook-entry h3 { color: #222; font-size: 14px; font-weight: 650; }
.worldbook-entry p { max-height: min(220px, 32vh); margin-top: 8px; padding-right: 9px; overflow-x: hidden; overflow-y: auto; color: #777; font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; white-space: normal; scrollbar-gutter: stable; scrollbar-width: thin; overscroll-behavior: contain; }
.worldbook-entry-actions { display: flex; flex-shrink: 0; gap: 5px; }
.worldbook-entry-actions-stack { display: flex; align-items: center; gap: clamp(8px, 2.5vw, 12px); min-width: 0; }
.worldbook-entries > .worldbook-section-head { position: sticky; top: 0; z-index: 3; padding: 2px 0 16px; background: #f1f1f3; }
.worldbook-entries > .worldbook-section-head .worldbook-entry-actions { margin-left: auto; min-width: 0; flex: 0 1 auto; }
.worldbook-add-book, .worldbook-add-entry { min-width: 68px; padding: 8px 11px; border-color: rgba(0,0,0,.12); background: #fff !important; color: #111 !important; text-align: center; }
.worldbook-library-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 0; }
.worldbook-import-book { min-width: 68px; height: 34px; box-sizing: border-box; padding: 8px 11px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; background: rgba(255,255,255,.62); color: #333; font: inherit; font-size: 12px; cursor: pointer; text-align: center; }
.worldbook-books > .worldbook-section-head, .worldbook-entries > .worldbook-section-head { width: 100%; box-sizing: border-box; }
.worldbook-books > .worldbook-section-head > .worldbook-add-book, .worldbook-entries > .worldbook-section-head > .worldbook-entry-actions { margin-right: 0; }
.worldbook-entries > .worldbook-section-head > .worldbook-entry-actions { display: flex; justify-content: flex-end; }
.worldbook-books > .worldbook-section-head, .worldbook-entries > .worldbook-section-head { align-items: flex-start; }
.worldbook-entries > .worldbook-section-head { flex-wrap: nowrap; align-items: center; gap: clamp(4px, 1.5vw, 16px); }
.worldbook-entries > .worldbook-section-head > div:first-child { flex: 1 1 auto; min-width: 0; }
.worldbook-entries > .worldbook-section-head h2 { min-width: 0; overflow: hidden; font-size: clamp(13px, 4vw, 19px); line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.worldbook-entries > .worldbook-section-head > .worldbook-entry-actions { flex: 0 1 auto; min-width: 0; gap: clamp(2px, 1vw, 5px); }
.worldbook-add-book, .worldbook-add-entry { height: 34px; min-height: 34px; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; }
.worldbook-add-entry { position: relative; left: 16px; }
.worldbook-analyze,.worldbook-view-analysis { width:clamp(42px, 14vw, 68px); min-width:0; height:34px; min-height:34px; box-sizing:border-box; padding:6px clamp(3px, 1.5vw, 9px); display:inline-flex; align-items:center; justify-content:center; flex:0 1 auto; border:1px solid rgba(0,0,0,.12) !important; border-radius:10px; background:#fff !important; color:#111 !important; font:inherit; font-size:clamp(8px,2.5vw,12px); line-height:1; text-align:center; white-space:nowrap; }
.worldbook-tabs { padding: 14px 28px; }
.worldbook-tabs > .worldbook-add-book { position: static; transform: none; }
.worldbook-books > .worldbook-section-head > .worldbook-add-book { position: static; transform: none; margin-left: auto; }
.worldbook-api-hint { display: block; max-width: 180px; color: #999; font-size: 10px; line-height: 1.4; text-align: right; }
.worldbook-entry-actions .worldbook-analyze,.worldbook-entry-actions .worldbook-view-analysis,.worldbook-entry-actions .worldbook-add-entry,.worldbook-entry-actions .worldbook-scroll-top { padding:6px clamp(3px, 1.5vw, 9px); border:1px solid rgba(0,0,0,.1); border-radius:8px; background:rgba(0,0,0,.06); color:#555; font:inherit; font-size:clamp(8px, 2.5vw, 11px); cursor:pointer; }
.worldbook-entry-actions-stack .worldbook-add-entry,.worldbook-entry-actions-stack .worldbook-scroll-top { width:clamp(42px,12vw,68px); min-width:0; padding-left:clamp(3px,1.5vw,9px); padding-right:clamp(3px,1.5vw,9px); font-size:clamp(8px,2.5vw,11px); white-space:nowrap; }
.worldbook-entry-actions-stack .worldbook-add-entry,.worldbook-entry-actions-stack .worldbook-scroll-top { position:static; left:auto; }
.worldbook-entry-actions-stack .worldbook-scroll-top { border-color:#111 !important; background:#111 !important; color:#fff !important; }
.worldbook-entry-actions-stack .worldbook-scroll-top { height:34px; min-height:34px; box-sizing:border-box; }
.worldbook-entry-actions button:disabled { opacity: .45; cursor: not-allowed; }
.worldbook-entry button { padding: 6px 9px; border: 0; border-radius: 8px; background: rgba(0,0,0,.06); color: #666; font: inherit; font-size: 11px; cursor: pointer; }
.worldbook-analysis { margin-top: 16px; padding: 16px; border: 1px solid rgba(0,0,0,.1); border-radius: 16px; background: rgba(255,255,255,.48); }
.worldbook-analysis-head { display: flex; align-items: baseline; gap: 9px; margin-bottom: 11px; }.worldbook-analysis-head b { font-size: 13px; }.worldbook-analysis-copy { max-height: min(300px, 38vh); padding-right: 9px; overflow-x: hidden; overflow-y: auto; color: #555; font-size: 12px; line-height: 1.75; overflow-wrap: anywhere; scrollbar-gutter: stable; scrollbar-width: thin; overscroll-behavior: contain; }
.worldbook-analysis-page { position:absolute; inset:0; z-index:20; display:none; flex-direction:column; background:#f1f1f3; color:#222; }
.worldbook-analysis-page.is-open { display:flex; }
.worldbook-analysis-page > header { display:grid; grid-template-columns:36px minmax(0,1fr) 36px; align-items:center; gap:12px; padding:max(18px,env(safe-area-inset-top)) 20px 14px; border-bottom:1px solid rgba(60,60,67,.12); background:rgba(247,247,248,.92); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); }
.worldbook-analysis-page > header > button { display:grid; place-items:center; width:34px; height:34px; border:0; border-radius:50%; background:#e9e9ec; color:#444; font:inherit; font-size:24px; cursor:pointer; }
.worldbook-analysis-page > header > div { min-width:0; }
.worldbook-analysis-page > header small,.world-analysis-hero > span,.world-analysis-section > header > span { color:#999; font-size:9px; font-weight:750; letter-spacing:.16em; }
.worldbook-analysis-page > header h1 { margin-top:3px; overflow:hidden; font-size:20px; text-overflow:ellipsis; white-space:nowrap; }
.worldbook-analysis-page > header p { margin-top:3px; overflow:hidden; color:#999; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.worldbook-analysis-page > main { flex:1; overflow-y:auto; padding:18px 20px max(34px,env(safe-area-inset-bottom)); }
.world-analysis-hero,.world-analysis-section { max-width:760px; margin:0 auto 14px; padding:18px; border:1px solid rgba(60,60,67,.12); border-radius:20px; background:#fff; box-shadow:0 8px 24px rgba(0,0,0,.04); }
.world-analysis-hero { background:#ededf0; color:#222; }
.world-analysis-hero > span { color:#8e8e93; }
.world-analysis-hero h2 { margin-top:8px; font-size:24px; }
.world-analysis-hero > p { max-width:650px; margin-top:10px; color:#666; font-size:12px; line-height:1.75; }
.world-analysis-hero > div { display:flex; flex-wrap:wrap; gap:7px; margin-top:15px; }
.world-analysis-hero > div span { display:grid; gap:2px; padding:7px 10px; border:1px solid rgba(60,60,67,.1); border-radius:10px; background:rgba(255,255,255,.72); font-size:10px; }
.world-analysis-hero > div small { color:#999; font-size:7px; letter-spacing:.1em; }
.world-analysis-section > header h2 { margin-top:5px; font-size:17px; }
.world-analysis-section > header p { margin-top:5px; color:#999; font-size:10px; line-height:1.5; }
.world-analysis-graphs { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:10px; margin-top:14px; }
.world-analysis-graph { min-width:0; margin:0; overflow:hidden; border:1px solid rgba(60,60,67,.12); border-radius:17px; background-color:#f2f2f4; background-image:radial-gradient(circle,rgba(60,60,67,.12) 1px,transparent 1px); background-size:18px 18px; }
.world-analysis-graph svg { display:block; width:100%; height:auto; max-height:340px; }
.world-relation-rings circle { fill:none; stroke:#d4d4d8; stroke-width:1px; stroke-dasharray:3 5; }
.world-relation-edge { stroke:#a8a8ad; stroke-width:var(--edge-width,1.5px); }
.world-relation-node { cursor:pointer; outline:none; }
.world-relation-node circle { fill:#fff; stroke:#b8b8bd; stroke-width:1.2px; filter:drop-shadow(0 4px 5px rgba(0,0,0,.08)); }
.world-relation-node:hover circle,.world-relation-node:focus circle { fill:#e5e5e8; stroke:#555; }
.world-relation-node text,.world-relation-center text { font-size:6.5px; font-weight:650; text-anchor:middle; }
.world-relation-node text { fill:#444; pointer-events:none; }
.world-relation-center circle { fill:#222; stroke:#fff; stroke-width:3px; filter:drop-shadow(0 6px 8px rgba(0,0,0,.16)); }
.world-relation-center text { fill:#fff; font-size:7px; }
.world-analysis-graph figcaption { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 12px; border-top:1px solid rgba(0,0,0,.06); color:#777; font-size:9px; }
.world-analysis-graph figcaption b { color:#333; font-size:10px; }
.world-analysis-graph figcaption span { display:flex; align-items:center; gap:5px; }
.world-analysis-graph figcaption i { display:block; width:22px; height:2px; background:#777; }
.world-analysis-role-centers { display:flex; flex-wrap:wrap; justify-content:center; gap:7px; margin:16px 0 10px; }
.world-analysis-role-centers b { padding:8px 13px; border-radius:999px; background:#222; color:#fff; font-size:11px; }
.world-analysis-network { display:grid; gap:8px; }
.world-analysis-link { display:grid; grid-template-columns:minmax(70px,1fr) minmax(130px,1.5fr) minmax(70px,1fr); align-items:center; gap:9px; padding:11px; border-radius:14px; background:#f1f1ee; text-align:center; }
.world-analysis-link > span { overflow:hidden; font-size:11px; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
.world-analysis-link > div { display:grid; gap:4px; min-width:0; }
.world-analysis-link > div b { color:#716c60; font-size:9px; }
.world-analysis-link > div i { display:block; width:100%; height:2px; border-radius:2px; background:linear-gradient(90deg,#34332f var(--relation-strength),#d7d5cf var(--relation-strength)); }
.world-analysis-link > div small { overflow:hidden; color:#999; font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.world-analysis-npcs { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:14px; }
.world-analysis-npc { display:grid; grid-template-columns:42px minmax(0,1fr); gap:10px; padding:12px; border:1px solid rgba(0,0,0,.07); border-radius:15px; background:#fafaf8; }
.world-analysis-npc > i { display:grid; place-items:center; width:42px; height:42px; border-radius:14px; background:#deddd8; color:#65635d; font-style:normal; }
.world-analysis-npc h3 { font-size:13px; }.world-analysis-npc b { display:block; margin-top:3px; color:#777; font-size:9px; }.world-analysis-npc p { margin-top:6px; color:#555; font-size:10px; line-height:1.55; }.world-analysis-npc small { display:block; margin-top:5px; color:#999; font-size:9px; line-height:1.45; }
.world-analysis-rules { display:grid; gap:7px; margin:13px 0 0; padding:0; list-style:none; }
.world-analysis-rules li { padding:10px 12px; border-radius:12px; background:#f1f1f3; color:#555; font-size:10px; line-height:1.55; }
.world-analysis-empty { padding:28px 10px; color:#aaa; font-size:11px; text-align:center; }
.world-relation-detail { position:absolute; inset:0; z-index:30; display:flex; align-items:flex-end; justify-content:center; }
.world-relation-detail-backdrop { position:absolute; inset:0; width:100%; border:0; background:rgba(0,0,0,.22); }
.world-relation-detail > section { position:relative; width:min(100%,520px); padding:18px 18px max(22px,env(safe-area-inset-bottom)); border-radius:22px 22px 0 0; background:#f7f7f8; box-shadow:0 -18px 50px rgba(0,0,0,.16); animation:world-relation-sheet-in .2s ease both; }
.world-relation-detail > section > header { display:grid; grid-template-columns:44px minmax(0,1fr) 30px; align-items:center; gap:10px; }
.world-relation-detail > section > header > i { display:grid; place-items:center; width:44px; height:44px; border-radius:14px; background:#dedee2; color:#555; font-style:normal; }
.world-relation-detail > section > header small { color:#999; font-size:9px; }.world-relation-detail > section > header h2 { margin-top:3px; font-size:17px; }
.world-relation-detail > section > header button { width:30px; height:30px; border:0; border-radius:50%; background:#e5e5e8; color:#555; font-size:19px; }
.world-relation-detail dl { display:grid; gap:8px; margin:16px 0 0; }
.world-relation-detail dl > div { padding:12px; border:1px solid rgba(60,60,67,.1); border-radius:13px; background:#fff; }
.world-relation-detail dt { color:#999; font-size:9px; }.world-relation-detail dd { margin:5px 0 0; font-size:13px; font-weight:650; }
.world-relation-detail dd b { display:inline-block; width:32px; font-size:15px; }.world-relation-detail dd span { display:inline-block; width:calc(100% - 38px); height:5px; overflow:hidden; border-radius:5px; background:#dedee2; vertical-align:2px; }.world-relation-detail dd span i { display:block; height:100%; border-radius:5px; background:#333; }
.world-relation-detail > section > p { margin-top:11px; color:#666; font-size:11px; line-height:1.65; }
@keyframes world-relation-sheet-in { from { transform:translateY(100%); } to { transform:translateY(0); } }
.world-analysis-loading { display:grid; place-items:center; max-width:420px; margin:28vh auto 0; text-align:center; }
.world-analysis-loading i { width:30px; height:30px; margin-bottom:15px; border:2px solid #ddd; border-top-color:#222; border-radius:50%; animation:world-analysis-spin .8s linear infinite; }
.world-analysis-loading b { font-size:16px; }.world-analysis-loading p { margin-top:7px; color:#999; font-size:11px; }.world-analysis-loading button { min-height:34px; margin-top:14px; padding:0 14px; border:0; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; }
@keyframes world-analysis-spin { to { transform:rotate(360deg); } }
@media (max-width:560px) { .world-analysis-npcs { grid-template-columns:1fr; }.world-analysis-link { grid-template-columns:minmax(58px,1fr) minmax(96px,1.25fr) minmax(58px,1fr); gap:6px; padding:9px 7px; }.worldbook-analysis-page > main { padding-right:14px; padding-left:14px; }.world-analysis-hero,.world-analysis-section { padding:15px; } }
@media not all { .worldbook-analysis-page { background:#202020; color:#eee; }.worldbook-analysis-page > header { border-color:rgba(255,255,255,.12); background:rgba(28,28,28,.92); }.worldbook-analysis-page > header > button { background:#393939; color:#eee; }.world-analysis-hero,.world-analysis-section { border-color:rgba(255,255,255,.12); background:#292929; color:#eee; }.world-analysis-hero > p { color:#bbb; }.world-analysis-hero > div span { border-color:rgba(255,255,255,.1); background:#353535; }.world-analysis-link,.world-analysis-rules li { background:#353535; }.world-analysis-graph { border-color:rgba(255,255,255,.1); background-color:#29292b; background-image:radial-gradient(circle,rgba(255,255,255,.1) 1px,transparent 1px); }.world-relation-rings circle { stroke:#49494d; }.world-relation-edge { stroke:#666; }.world-relation-node circle { fill:#3b3b3d; stroke:#737377; }.world-relation-node:hover circle,.world-relation-node:focus circle { fill:#505054; stroke:#aaa; }.world-relation-node text { fill:#eee; }.world-analysis-graph figcaption { border-color:rgba(255,255,255,.08); color:#aaa; }.world-analysis-graph figcaption b { color:#eee; }.world-relation-detail > section { background:#29292b; color:#eee; }.world-relation-detail dl > div { border-color:rgba(255,255,255,.1); background:#353537; }.world-relation-detail > section > p { color:#bbb; } }
.world-editor { position: fixed; inset: 0; z-index: 28; display: none; align-items: center; justify-content: center; padding: 18px; }
.world-editor.is-open { display: flex; }
.world-editor-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.world-editor-sheet { position: relative; display: flex; flex-direction: column; width: min(100%, 520px); max-height: min(720px, calc(100vh - 36px)); padding: 21px; overflow: hidden; border: 1px solid rgba(255,255,255,.75); border-radius: 23px; background: rgba(250,250,248,.86); box-shadow: 0 20px 60px rgba(0,0,0,.22); -webkit-backdrop-filter: blur(28px); backdrop-filter: blur(28px); }
.world-editor-head { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 20px; }
.world-editor-head h2 { margin-top: 5px; font-size: 20px; }
.world-editor-head button { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); font-size: 21px; cursor: pointer; }
.world-editor-field { display: grid; gap: 8px; margin-bottom: 15px; color: #777; font-size: 12px; }
.world-editor-field input, .world-editor-field textarea { width: 100%; padding: 12px; border: 1px solid rgba(0,0,0,.12); border-radius: 12px; outline: 0; background: rgba(255,255,255,.7); color: #222; font: inherit; font-size: 14px; }
.world-editor-sheet #worldEditorForm { min-height: 0; overflow-y: auto; scrollbar-width: thin; overscroll-behavior: contain; }
.world-editor-field textarea { box-sizing: border-box; height: min(280px, 38vh); min-height: min(280px, 38vh); max-height: min(280px, 38vh); overflow-x: hidden; overflow-y: auto; resize: none; line-height: 1.6; scrollbar-gutter: stable; scrollbar-width: thin; overscroll-behavior: contain; }
.world-editor-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 20px; }
.world-editor-actions button { min-width: 76px; min-height: 38px; border: 0; border-radius: 11px; font: inherit; font-size: 13px; cursor: pointer; }
.world-editor-cancel { background: rgba(0,0,0,.07); color: #555; }
.world-editor-save { background: #171717; color: #fff; }
.world-import-choice { position: fixed; inset: 0; z-index: 29; display: none; align-items: center; justify-content: center; padding: 18px; }
.world-import-choice.is-open { display: flex; }
.world-import-choice-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.world-import-choice-sheet { position: relative; display: grid; gap: 10px; width: min(100%, 420px); padding: 21px; border: 1px solid rgba(255,255,255,.75); border-radius: 23px; background: rgba(250,250,248,.92); box-shadow: 0 20px 60px rgba(0,0,0,.22); -webkit-backdrop-filter: blur(28px); backdrop-filter: blur(28px); }
.world-import-choice-sheet .world-editor-head { margin-bottom: 8px; }
.world-import-choice-button { min-height: 42px; padding: 10px 13px; border: 1px solid rgba(0,0,0,.1); border-radius: 12px; background: rgba(255,255,255,.72); color: #333; font: inherit; font-size: 13px; text-align: left; cursor: pointer; }
.world-import-choice-button:hover { background: #fff; }
.world-import-choice-note { margin: 2px 0 3px; color: #999; font-size: 10px; line-height: 1.5; }
.world-import-choice-cancel { width: 100%; min-height: 38px; border: 0; border-radius: 11px; font: inherit; font-size: 13px; cursor: pointer; }
.world-entry-choice .world-import-choice-sheet { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.world-entry-choice .world-editor-head, .world-entry-choice .world-import-choice-note, .world-entry-choice .world-import-choice-cancel { grid-column: 1 / -1; }
.world-entry-choice .world-import-choice-note { display: none; }
.worldbook-entry p::-webkit-scrollbar, .worldbook-analysis-copy::-webkit-scrollbar, .world-editor-sheet #worldEditorForm::-webkit-scrollbar, .world-editor-field textarea::-webkit-scrollbar { width: 5px; }
.worldbook-entry p::-webkit-scrollbar-thumb, .worldbook-analysis-copy::-webkit-scrollbar-thumb, .world-editor-sheet #worldEditorForm::-webkit-scrollbar-thumb, .world-editor-field textarea::-webkit-scrollbar-thumb { border-radius: 5px; background: rgba(0,0,0,.2); }

@media (max-width: 600px) {
  .edit-modal { align-items: center; padding: 16px; }
  .edit-sheet { border-radius: 24px; }
  .worldbook-header { padding-left: 20px; padding-right: 20px; }
  .worldbook-tabs { padding-left: 20px; padding-right: 20px; }
  .worldbook-tabs > .worldbook-add-book { right: 20px; }
  .worldbook-main { display: block; overflow-y: auto; }
  /* 三类世界书共用同一套布局：书目区固定在上方，书多时只在这里滚动，
     不把下方当前世界书的具体条目继续往下挤。 */
  .worldbook-books { height: 50%; min-height: 260px; overflow-y: auto; padding: 20px; scrollbar-gutter: stable; overscroll-behavior: contain; }
  .worldbook-entries { min-height: 50%; overflow: visible; padding: 20px; }
  .worldbook-books { border-right: 0; border-bottom: 1px solid rgba(0,0,0,.08); }
  .worldbook-entries { min-height: 50%; }
  .worldbook-entry p { max-height: min(190px, 28vh); }
  .world-editor-sheet { width: min(100%, 520px); max-height: calc(100vh - 32px); padding: 18px; }
  .world-editor-field textarea { height: min(240px, 34vh); min-height: min(240px, 34vh); max-height: min(240px, 34vh); }
  .worldbook-header h1 { font-size: 27px; }
}

@media not all {
  .profile-card, .todo-widget, .countdown-widget, .elapsed-days-widget, .shared-widget, .now-playing-widget, .search-input, .photo-card, .date-calendar-card, .dock-bar { background: rgba(255,255,255,.72); border-color: rgba(255,255,255,.78); box-shadow: 0 8px 26px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.82); }
  .image-widget { background-color:rgba(255,255,255,.72); border-color:rgba(255,255,255,.78); box-shadow:0 8px 26px rgba(0,0,0,.08),inset 0 1px 0 rgba(255,255,255,.82); background-position:center; background-size:contain; background-repeat:no-repeat; }
  .image-widget-placeholder { color:#ccc; }
  .avatar { border-color:rgba(255,255,255,.86); }
  .date-calendar-image, .photo-card { background-color: var(--widget-placeholder-gray); border-color: #555; }
  .nickname-text, .todo-title, .date-calendar-left, .app-name, .dock-name, .search-input { color: #eee; }
  .countdown-title, .countdown-days { color:#eee; }
  .countdown-date { color:#aaa; }
  .elapsed-title, .elapsed-days { color:#eee; }
  .elapsed-title:empty::before, .elapsed-date { color:#aaa; }
  .shared-widget { color:#eee; }
  .chat-widget { color:#eee; }
  .now-playing-widget { color:#eee; }
  .love-heart { color: #eee; }
  .app-icon, .dock-icon { border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.09); box-shadow: 0 3px 8px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.16); }
  .icon-day { display: none; }
  .icon-night { display: inline; }
  .dot { background: #5b5b5b; }
  .dot.active { background: #ddd; }
  .calendar-day { color: #ccc; }
  .calendar-day.today, .calendar-day[data-calendar-today="true"], .calendar-day[aria-current="date"] { border-color:transparent !important; background: transparent !important; color: #eee !important; box-shadow:none !important; }
  .edit-sheet { background: rgba(35,35,35,.78); border-color: rgba(255,255,255,.16); box-shadow: 0 18px 50px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.14); }
  .edit-sheet h2, .edit-field input, .edit-field textarea { color: #f1f1f1; }
  .edit-field input, .edit-field textarea { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); }
  .file-picker { border-color: rgba(255,255,255,.16); background: rgba(255,255,255,.1); color: #eee; box-shadow: inset 0 1px 0 rgba(255,255,255,.12); }
  .edit-image-actions button { border-color: rgba(0,0,0,.1); background: #fff; color: #333; }
  .edit-field label { color: #aaa; }
  .edit-close, .edit-cancel { background: rgba(255,255,255,.12); color: #eee; }
  .edit-save { background: #f1f1f1; color: #111; }
  .beauty-sheet { background: rgba(28,28,28,.96); }
  .beauty-head, .beauty-footer { border-color: rgba(255,255,255,.12); }
  .beauty-title, .beauty-section-title { color: #f1f1f1; }
  .beauty-wallpaper-box, .beauty-app-row { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.08); }
  .beauty-transfer { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.08); }
  .beauty-transfer-btn { border-color: rgba(255,255,255,.16); background: rgba(255,255,255,.1); color: #eee; }
  .beauty-input { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; }
  .beauty-file-label, .beauty-cancel { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.1); color: #eee; }
  .beauty-save { background: #f1f1f1; color: #111; }
  .beauty-inline-reset { border-color: rgba(255,255,255,.18); background: rgba(255,255,255,.08); color: #ccc; }
  .beauty-confirm-card { border-color: rgba(255,255,255,.14); background: rgba(35,35,35,.96); }
  .beauty-confirm-card h3 { color: #f1f1f1; }
  .beauty-confirm-card p { color: #aaa; }
  .beauty-confirm-cancel { background: rgba(255,255,255,.1); color: #eee; }
  .beauty-confirm-ok { background: #f1f1f1; color: #111; }
  .worldbook-app, .worldbook-page, .worldbook-books, .worldbook-entries, .worldbook-entries > .worldbook-section-head { background: #202020; color: #eee; }
  .worldbook-header, .worldbook-tabs, .worldbook-books { border-color: rgba(255,255,255,.12); }
  .worldbook-header h1, .worldbook-section-head h2, .worldbook-entry h3, .world-editor-head h2 { color: #eee; }
  .worldbook-tabs button.is-active { background: #eee; color: #111; }
  .worldbook-book, .worldbook-entry { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); }
  .worldbook-book.is-active { border-color: #eee; background: #eee; color: #111; }
  .worldbook-book.is-active .worldbook-book-mark { background: #111; }
  .worldbook-add-book, .worldbook-import-book, .worldbook-add-entry, .worldbook-scroll-top, .worldbook-entry button, .worldbook-entry-actions .worldbook-analyze,.worldbook-entry-actions .worldbook-view-analysis { border-color: rgba(255,255,255,.16); background: rgba(255,255,255,.1); color: #ddd; }
  .worldbook-entry p { color: #aaa; }
  .worldbook-analysis { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); }.worldbook-analysis-copy { color: #ccc; }
  .world-editor-sheet { border-color: rgba(255,255,255,.16); background: rgba(35,35,35,.92); }
  .world-editor-head button, .world-editor-cancel { background: rgba(255,255,255,.1); color: #eee; }
  .world-editor-field input, .world-editor-field textarea { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; }
  .world-editor-save { background: #eee; color: #111; }
  .world-import-choice-sheet { border-color: rgba(255,255,255,.16); background: rgba(35,35,35,.92); }
  .world-import-choice-button { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.08); color: #eee; }
  .world-import-choice-button:hover { background: rgba(255,255,255,.14); }
  .world-import-choice-cancel { background: rgba(255,255,255,.1); color: #eee; }
}

/* 日历 App：月视图、用户行程与角色日程 */
.calendar-app { position:fixed; inset:0; z-index:30; display:none; background:#f5f5f7; color:#202124; }
.calendar-app.is-open { display:block; }
.calendar-page { height:100%; overflow-y:auto; }
.calendar-app-header { position:sticky; top:0; z-index:3; display:flex; align-items:flex-start; justify-content:space-between; padding:max(22px, env(safe-area-inset-top)) 22px 16px; border-bottom:1px solid rgba(0,0,0,.08); background:rgba(255,255,255,.86); -webkit-backdrop-filter:blur(22px) saturate(150%); backdrop-filter:blur(22px) saturate(150%); }
.calendar-app-header span, .calendar-upcoming > span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }
.calendar-app-header h1 { margin-top:6px; font-size:25px; letter-spacing:-.04em; }
.calendar-app-header button, .calendar-month-head button, .calendar-event-card > button, .calendar-day-title button, .calendar-editor header button { border:0; cursor:pointer; }
.calendar-app-header button { width:30px; height:30px; border-radius:50%; background:rgba(0,0,0,.07); color:#555; font-size:20px; }
.calendar-main { padding:22px 20px 42px; }
.calendar-month-head { display:flex; align-items:center; justify-content:space-between; max-width:520px; margin:auto; }
.calendar-month-head h2 { font-size:18px; letter-spacing:-.03em; }
.calendar-month-head button { width:34px; height:34px; border-radius:50%; background:#fff; color:#555; font-size:25px; line-height:1; box-shadow:0 3px 12px rgba(0,0,0,.06); }
.calendar-week-head, .calendar-month-grid { display:grid; grid-template-columns:repeat(7,1fr); max-width:520px; margin:auto; }
.calendar-week-head { margin-top:18px; color:#999; font-size:10px; text-align:center; }
.calendar-month-grid { gap:5px; margin-top:7px; }
.calendar-empty-day { min-height:40px; }
.calendar-date-cell { position:relative; min-height:40px; border:0; border-radius:13px; background:transparent; color:#333; font:inherit; font-size:12px; cursor:pointer; }
.calendar-date-cell:hover { background:rgba(0,0,0,.05); }
.calendar-date-cell.is-selected { background:#222; color:#fff; }
.calendar-date-cell.has-event::after { position:absolute; right:50%; bottom:5px; width:4px; height:4px; border-radius:50%; background:#999; content:""; transform:translateX(50%); }
.calendar-date-cell.is-selected.has-event::after { background:#fff; }
.calendar-day-section, .calendar-upcoming { max-width:520px; margin:28px auto 0; }
.calendar-day-title { display:flex; align-items:center; justify-content:space-between; margin-bottom:11px; }
.calendar-day-title span { color:#999; font-size:10px; }
.calendar-day-title h2, .calendar-upcoming h2 { margin-top:5px; font-size:18px; }
.calendar-day-title button { min-height:32px; padding:0 13px; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; }
.calendar-event-card { display:flex; align-items:center; gap:10px; min-height:59px; margin-top:8px; padding:10px 11px; border:1px solid rgba(0,0,0,.08); border-radius:15px; background:rgba(255,255,255,.72); }
.calendar-event-mark { display:grid; flex:0 0 31px; place-items:center; width:31px; height:31px; border-radius:11px; background:#e7e7e7; color:#555; font-size:17px; }
.calendar-event-mark.is-role { background:#222; color:#fff; }
.calendar-event-card > div:nth-child(2) { display:grid; flex:1; gap:4px; min-width:0; }
.calendar-event-card b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.calendar-event-card small { overflow:hidden; color:#999; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.calendar-event-card p { margin:0; overflow:hidden; color:#777; font-size:10px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.calendar-event-card > button { width:24px; height:24px; border-radius:50%; background:rgba(0,0,0,.06); color:#888; font-size:16px; }
.calendar-upcoming { padding-top:3px; }
.calendar-role-group { margin-top:16px; }
.calendar-role-group h3 { margin:0 0 8px; font-size:13px; font-weight:700; }
.calendar-role-heading { display:flex; align-items:end; justify-content:space-between; gap:12px; }
.calendar-role-heading > div > span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }
.calendar-role-heading button { padding:7px 12px; border:0; border-radius:9px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.calendar-role-heading button:disabled { opacity:.55; cursor:wait; }
.calendar-time-group { margin-top:12px; overflow:hidden; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:rgba(255,255,255,.62); }
.calendar-time-group > header { padding:10px 12px 8px; border-bottom:1px solid rgba(0,0,0,.07); }
.calendar-time-group time { color:#8d5b3c; font-size:11px; font-weight:700; letter-spacing:.04em; }
.calendar-role-row { display:grid; grid-template-columns:74px minmax(0,1fr) 24px; align-items:center; gap:8px; min-height:48px; padding:8px 10px 8px 12px; border-bottom:1px solid rgba(0,0,0,.055); }
.calendar-role-row:last-child { border-bottom:0; }
.calendar-role-row > b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.calendar-role-row > div { min-width:0; }
.calendar-role-row strong { display:block; overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.calendar-role-row p { margin:3px 0 0; overflow:hidden; color:#777; font-size:10px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.calendar-role-row > button { width:22px; height:22px; border:0; border-radius:50%; background:rgba(0,0,0,.06); color:#888; font-size:14px; cursor:pointer; }
.calendar-daypart { margin-top:16px; }
.calendar-daypart > header { display:flex; align-items:baseline; justify-content:space-between; padding:0 2px 7px; }
.calendar-daypart > header h3 { margin:0; font-size:14px; }
.calendar-daypart > header small { color:#aaa; font-size:9px; }
.calendar-daypart .calendar-time-group { margin-top:7px; }
.calendar-daypart .calendar-time-group > header { padding:7px 10px 6px; }
.calendar-daypart .calendar-role-row { min-height:42px; padding-top:6px; padding-bottom:6px; }
.calendar-time-block { margin-top:7px; overflow:hidden; border:1px solid rgba(0,0,0,.08); border-radius:13px; background:rgba(255,255,255,.62); }
.calendar-time-block > summary { display:grid; grid-template-columns:auto minmax(0,1fr) 16px; align-items:center; gap:10px; padding:10px 11px; cursor:pointer; list-style:none; }
.calendar-time-block > summary::-webkit-details-marker { display:none; }
.calendar-time-block > summary time { color:#8d5b3c; font-size:11px; font-weight:700; white-space:nowrap; }
.calendar-time-block > summary span { overflow:hidden; color:#666; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.calendar-time-block > summary b { color:#999; font-size:16px; font-weight:400; transform:rotate(0deg); transition:transform .15s ease; }
.calendar-time-block[open] > summary { border-bottom:1px solid rgba(0,0,0,.07); }
.calendar-time-block[open] > summary b { transform:rotate(90deg); }
.calendar-time-block-details .calendar-role-row { grid-template-columns:74px 78px minmax(0,1fr) 22px; min-height:40px; padding-top:6px; padding-bottom:6px; }
.calendar-role-row > small { color:#999; font-size:9px; white-space:nowrap; }
.calendar-timeline { padding:0 10px 10px 0; }
.calendar-timeline-scale { display:grid; grid-template-columns:repeat(var(--calendar-tick-count),1fr); margin:0 0 4px 34px; color:#aaa; font-size:8px; }
.calendar-timeline-scale span { text-align:left; }
.calendar-timeline-lanes { display:grid; gap:3px; }
.calendar-timeline-row { display:grid; grid-template-columns:30px minmax(0,1fr); align-items:center; gap:4px; min-height:32px; }
.calendar-role-label { display:flex; align-items:center; min-width:0; gap:4px; padding:0 0 0 2px; border:0; background:transparent; color:inherit; font:inherit; text-align:left; cursor:pointer; }
.calendar-role-label > img, .calendar-role-label > span { display:grid; flex:0 0 22px; place-items:center; width:22px; height:22px; overflow:hidden; border-radius:50%; background:var(--role-color); color:#fff; font-size:10px; font-weight:700; object-fit:cover; }
.calendar-role-label > span { background:var(--role-color); }
.calendar-role-track { position:relative; height:24px; border-radius:7px; background:repeating-linear-gradient(to right, transparent 0, transparent calc(100% / var(--calendar-tick-count) - 1px), rgba(0,0,0,.1) calc(100% / var(--calendar-tick-count) - 1px), rgba(0,0,0,.1) calc(100% / var(--calendar-tick-count))); box-shadow:inset 0 0 0 1px rgba(0,0,0,.06); }
.calendar-role-segment { position:absolute; top:4px; height:16px; min-width:5px; overflow:hidden; padding:0 4px; border:0; border-radius:5px; background:var(--role-color); color:#fff; font:inherit; font-size:8px; line-height:16px; text-align:left; text-overflow:ellipsis; white-space:nowrap; cursor:pointer; }
.calendar-role-detail { position:fixed; inset:0; z-index:10; display:grid; align-items:end; }
.calendar-role-detail-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(0,0,0,.26); cursor:pointer; }
.calendar-role-detail > section { position:relative; max-height:min(72vh,560px); overflow:auto; padding:16px; border-radius:22px 22px 0 0; background:rgba(250,250,250,.97); box-shadow:0 -12px 40px rgba(0,0,0,.18); }
.calendar-role-detail header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-bottom:12px; border-bottom:1px solid rgba(0,0,0,.08); }
.calendar-role-detail header > div { display:flex; align-items:center; gap:9px; min-width:0; }
.calendar-role-detail header img, .calendar-role-detail header > div > span { display:grid; place-items:center; width:34px; height:34px; overflow:hidden; border-radius:50%; background:#ddd; object-fit:cover; }
.calendar-role-detail header small { color:#999; font-size:9px; }
.calendar-role-detail header h2 { margin-top:2px; font-size:17px; }
.calendar-role-detail header > button { width:28px; height:28px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:18px; cursor:pointer; }
.calendar-role-detail main { padding-top:4px; }
.calendar-role-detail .calendar-event-card { margin-top:8px; }
.calendar-empty { padding:16px 0; color:#aaa; font-size:11px; }
.calendar-editor { position:fixed; inset:0; z-index:8; display:grid; place-items:center; padding:20px; }
.calendar-editor-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.calendar-editor > section { position:relative; width:min(100%,380px); padding:19px; border:1px solid rgba(255,255,255,.8); border-radius:21px; background:rgba(250,250,250,.97); box-shadow:0 20px 60px rgba(0,0,0,.2); }
.calendar-editor header { display:flex; align-items:center; justify-content:space-between; }
.calendar-editor h2 { font-size:18px; }
.calendar-editor header button { width:28px; height:28px; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:18px; }
.calendar-editor label { display:grid; gap:7px; margin-top:15px; color:#777; font-size:11px; }
.calendar-editor input, .calendar-editor select { width:100%; height:39px; padding:0 10px; border:1px solid rgba(0,0,0,.11); border-radius:10px; outline:0; background:#fff; color:#222; font:inherit; font-size:12px; }
.calendar-editor-time { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
.calendar-editor-time label { min-width:0; }
.calendar-editor textarea { width:100%; min-height:72px; padding:10px; border:1px solid rgba(0,0,0,.11); border-radius:10px; outline:0; resize:vertical; background:#fff; color:#222; font:inherit; font-size:12px; line-height:1.5; }
.calendar-editor footer { display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }
.calendar-editor footer button { min-height:35px; padding:0 14px; border:0; border-radius:10px; background:#eee; color:#555; font:inherit; font-size:11px; cursor:pointer; }
.calendar-editor footer button:last-child { background:#222; color:#fff; }
.calendar-refresh-picker { position:fixed; inset:0; z-index:12; display:grid; place-items:center; padding:20px; }
.calendar-refresh-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(0,0,0,.28); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); cursor:pointer; }
.calendar-refresh-picker > section { position:relative; display:flex; flex-direction:column; width:min(100%,390px); max-height:min(82vh,620px); overflow:hidden; padding:18px; border:1px solid rgba(255,255,255,.82); border-radius:22px; background:rgba(250,250,250,.98); box-shadow:0 20px 60px rgba(0,0,0,.22); }
.calendar-refresh-picker header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.calendar-refresh-picker header > div { min-width:0; }
.calendar-refresh-picker header span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }
.calendar-refresh-picker header h2 { margin-top:5px; font-size:18px; }
.calendar-refresh-picker header p { margin-top:7px; color:#888; font-size:11px; line-height:1.5; }
.calendar-refresh-picker header p b { color:#222; }
.calendar-refresh-picker header > button { flex:0 0 28px; width:28px; height:28px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:18px; cursor:pointer; }
.calendar-refresh-all { display:flex; align-items:center; gap:8px; width:100%; margin-top:14px; padding:10px 11px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:rgba(0,0,0,.035); color:#444; font:inherit; font-size:11px; text-align:left; cursor:pointer; }
.calendar-refresh-all i { display:grid; flex:0 0 18px; place-items:center; width:18px; height:18px; border:1px solid #c9c9c9; border-radius:5px; color:#fff; font-size:12px; font-style:normal; }
.calendar-refresh-all i.is-checked { border-color:#222; background:#222; }
.calendar-refresh-all small { margin-left:auto; color:#999; font-size:10px; }
.calendar-refresh-picker main { min-height:0; overflow-y:auto; margin-top:8px; }
.calendar-refresh-role { display:flex; align-items:center; gap:10px; width:100%; min-height:55px; padding:8px 5px; border:0; border-bottom:1px solid rgba(0,0,0,.07); background:transparent; color:#333; font:inherit; text-align:left; cursor:pointer; }
.calendar-refresh-role:last-child { border-bottom:0; }
.calendar-refresh-avatar { display:grid; flex:0 0 34px; place-items:center; width:34px; height:34px; overflow:hidden; border-radius:50%; background:#ddd; color:#fff; font-size:12px; font-weight:700; }
.calendar-refresh-avatar img, .calendar-refresh-avatar > span { display:block; width:100%; height:100%; object-fit:cover; }
.calendar-refresh-avatar > span { display:grid; place-items:center; }
.calendar-refresh-role > span:nth-child(2) { display:grid; flex:1; min-width:0; gap:3px; }
.calendar-refresh-role b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.calendar-refresh-role small { overflow:hidden; color:#999; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.calendar-refresh-role em { display:grid; flex:0 0 20px; place-items:center; width:20px; height:20px; border:1px solid #c9c9c9; border-radius:50%; color:#fff; font-size:12px; font-style:normal; }
.calendar-refresh-role.is-selected em { border-color:#222; background:#222; }
.calendar-refresh-empty { padding:22px 4px; color:#999; font-size:11px; text-align:center; }
.calendar-refresh-picker footer { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; padding-top:12px; border-top:1px solid rgba(0,0,0,.07); }
.calendar-refresh-picker footer button { min-height:35px; padding:0 13px; border:0; border-radius:10px; background:#eee; color:#555; font:inherit; font-size:11px; cursor:pointer; }
.calendar-refresh-picker footer button.is-primary { background:#222; color:#fff; }
.calendar-refresh-picker footer button:disabled { cursor:default; opacity:.45; }
@media not all {
  .calendar-app { background:#202020; color:#eee; }
  .calendar-app-header { border-color:rgba(255,255,255,.12); background:rgba(32,32,32,.86); }
  .calendar-app-header button, .calendar-month-head button { background:rgba(255,255,255,.1); color:#ddd; }
  .calendar-date-cell { color:#eee; }
  .calendar-date-cell:hover { background:rgba(255,255,255,.08); }
  .calendar-date-cell.is-selected, .calendar-day-title button, .calendar-editor footer button:last-child { background:#eee; color:#111; }
  .calendar-event-card { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }
  .calendar-event-card p { color:#aaa; }
  .calendar-event-mark { background:rgba(255,255,255,.12); color:#ddd; }
  .calendar-event-mark.is-role { background:#eee; color:#111; }
  .calendar-event-card > button, .calendar-editor header button { background:rgba(255,255,255,.1); color:#ddd; }
  .calendar-editor > section { border-color:rgba(255,255,255,.14); background:rgba(35,35,35,.97); }
  .calendar-editor input, .calendar-editor select, .calendar-editor textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.22); color:#eee; }
  .calendar-editor footer button { background:rgba(255,255,255,.1); color:#ddd; }
  .calendar-refresh-picker > section { border-color:rgba(255,255,255,.14); background:rgba(35,35,35,.97); }
  .calendar-refresh-picker header p, .calendar-refresh-picker header p b { color:#aaa; }
  .calendar-refresh-picker header > button { background:rgba(255,255,255,.1); color:#ddd; }
  .calendar-refresh-all { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#ddd; }
  .calendar-refresh-all i, .calendar-refresh-role em { border-color:rgba(255,255,255,.28); }
  .calendar-refresh-all i.is-checked, .calendar-refresh-role.is-selected em { border-color:#eee; background:#eee; color:#111; }
  .calendar-refresh-role { border-color:rgba(255,255,255,.1); color:#eee; }
  .calendar-refresh-role small, .calendar-refresh-all small, .calendar-refresh-empty { color:#aaa; }
  .calendar-refresh-picker footer { border-color:rgba(255,255,255,.1); }
  .calendar-refresh-picker footer button { background:rgba(255,255,255,.1); color:#ddd; }
  .calendar-refresh-picker footer button.is-primary { background:#eee; color:#111; }
}

/* 辩论：API 出题、双方安排与可回看的本地辩论记录。 */
.debate-app { position:fixed; inset:0; z-index:75; display:none; background:#f5f5f3; color:#272727; }
.debate-app.is-open { display:block; }
.debate-page { width:min(100%,720px); height:100%; margin:auto; overflow-y:auto; background:linear-gradient(160deg,#f8f8f6 0%,#efefed 100%); scrollbar-width:none; }
.debate-page::-webkit-scrollbar { display:none; }
.debate-header { position:sticky; top:0; z-index:3; display:grid; grid-template-columns:38px 1fr 38px; align-items:center; min-height:78px; padding:max(14px,env(safe-area-inset-top)) 18px 11px; border-bottom:1px solid rgba(0,0,0,.07); background:rgba(248,248,246,.86); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.debate-header > div { min-width:0; text-align:center; }
.debate-header h1 { margin-top:4px; font-size:18px; font-weight:650; letter-spacing:-.03em; }
.debate-header p { margin-top:4px; overflow:hidden; color:#999; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.debate-kicker,.debate-card-eyebrow span,.debate-section-head span { color:#a2a2a0; font-size:9px; font-weight:700; letter-spacing:.16em; }
.debate-header button { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:rgba(0,0,0,.055); color:#555; font:inherit; font-size:23px; cursor:pointer; }
.debate-header-close { justify-self:end; font-size:20px !important; }
.debate-main { padding:20px 18px 44px; }
.debate-hero { display:flex; align-items:center; gap:15px; padding:18px; border:1px solid rgba(255,255,255,.78); border-radius:23px; background:linear-gradient(135deg,#343434,#5a5a58); color:#fff; box-shadow:0 14px 28px rgba(0,0,0,.13); }
.debate-hero > div { display:grid; flex:1; gap:5px; min-width:0; }
.debate-hero > div > span { color:rgba(255,255,255,.62); font-size:9px; letter-spacing:.12em; }
.debate-hero h2 { font-size:17px; line-height:1.4; }
.debate-hero p { color:rgba(255,255,255,.66); font-size:10px; line-height:1.5; }
.debate-hero > button { display:grid; justify-items:center; flex:0 0 76px; gap:4px; min-height:78px; padding:9px 5px; border:1px solid rgba(255,255,255,.2); border-radius:16px; background:rgba(255,255,255,.12); color:#fff; font:inherit; cursor:pointer; }
.debate-hero > button i { font-size:23px; font-style:normal; line-height:1; }
.debate-hero > button b { font-size:10px; font-weight:600; }
.debate-hero > button small { color:rgba(255,255,255,.6); font-size:8px; }
.debate-history,.debate-arrange-card { margin-top:25px; }
.debate-section-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin:0 3px 11px; }
.debate-section-head > div { display:grid; gap:5px; }
.debate-section-head h2 { font-size:19px; letter-spacing:-.04em; }
.debate-section-head > b,.debate-section-head > small { color:#aaa; font-size:10px; font-weight:500; }
.debate-history-card { display:flex; align-items:center; width:100%; gap:11px; margin-top:8px; padding:13px; border:1px solid rgba(0,0,0,.07); border-radius:17px; background:rgba(255,255,255,.68); color:#333; font:inherit; text-align:left; cursor:pointer; }
.debate-history-card > span:nth-child(2) { display:grid; flex:1; min-width:0; gap:5px; }
.debate-history-card b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.debate-history-card small { color:#999; font-size:9px; }
.debate-history-card > i { color:#aaa; font-size:21px; font-style:normal; }
.debate-history-mark { display:grid; place-items:center; flex:0 0 39px; width:39px; height:39px; border-radius:13px; background:#e5e5e3; color:#555; font-size:14px; font-style:normal; font-weight:700; }
.debate-empty,.debate-transcript-empty { padding:40px 15px; border:1px dashed rgba(0,0,0,.1); border-radius:17px; color:#aaa; font-size:10px; line-height:1.7; text-align:center; }
.debate-empty i { display:block; margin-bottom:8px; color:#777; font-size:24px; font-style:normal; font-weight:700; }
.debate-topic-card,.debate-arrange-card,.debate-room-topic { padding:17px; border:1px solid rgba(255,255,255,.8); border-radius:21px; background:rgba(255,255,255,.68); box-shadow:0 7px 18px rgba(0,0,0,.04); }
.debate-card-eyebrow { display:flex; justify-content:space-between; gap:10px; }
.debate-card-eyebrow b { color:#888; font-size:9px; font-weight:500; }
.debate-topic-card h2 { min-height:48px; margin-top:15px; color:#343434; font-size:19px; line-height:1.5; }
.debate-topic-card textarea,.debate-composer textarea { width:100%; min-height:66px; margin-top:12px; padding:11px 12px; resize:vertical; border:1px solid rgba(0,0,0,.09); border-radius:13px; outline:0; background:rgba(255,255,255,.62); color:#333; font:inherit; font-size:11px; line-height:1.55; }
.debate-topic-card textarea { min-height:52px; }
.debate-topic-card textarea::placeholder,.debate-composer textarea::placeholder { color:#aaa; }
.debate-generate-button { width:100%; min-height:36px; margin-top:9px; border:0; border-radius:11px; background:#303030; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.debate-generate-button:disabled,.debate-record-button:disabled { opacity:.55; cursor:wait; }
.debate-draft-sides { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.debate-draft-side { min-width:0; padding:12px; border:1px solid rgba(0,0,0,.07); border-radius:16px; background:rgba(255,255,255,.62); }
.debate-side-heading { display:flex; align-items:center; justify-content:space-between; gap:5px; }
.debate-side-heading span,.debate-room-side > span { color:#777; font-size:10px; font-weight:700; }
.debate-draft-side.is-affirmative .debate-side-heading span,.debate-room-side.is-affirmative > span,.debate-turn.is-affirmative .debate-turn-meta > span { color:#68748b; }
.debate-draft-side.is-negative .debate-side-heading span,.debate-room-side.is-negative > span,.debate-turn.is-negative .debate-turn-meta > span { color:#94716d; }
.debate-side-heading small { color:#aaa; font-size:8px; }
.debate-side-person { display:flex; align-items:center; gap:7px; min-height:40px; margin:10px 0; }
.debate-side-person > i { display:grid; place-items:center; flex:0 0 32px; width:32px; height:32px; border-radius:11px; background:#e7e7e5; color:#999; font-size:17px; font-style:normal; }
.debate-side-person > div { display:grid; min-width:0; gap:3px; }
.debate-side-person b { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.debate-side-person small { overflow:hidden; color:#aaa; font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.debate-draft-side select,.debate-composer select { width:100%; height:31px; padding:0 7px; border:1px solid rgba(0,0,0,.09); border-radius:9px; outline:0; background:rgba(255,255,255,.65); color:#666; font:inherit; font-size:9px; }
.debate-draft-side > button { width:100%; margin-top:7px; padding:6px 4px; border:0; background:transparent; color:#888; font:inherit; font-size:9px; cursor:pointer; }
.debate-start-button { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:46px; margin-top:18px; padding:0 17px; border:0; border-radius:14px; background:#303030; color:#fff; font:inherit; font-size:12px; cursor:pointer; }
.debate-start-button span { font-size:21px; }
.debate-local-note { margin-top:10px; color:#aaa; font-size:9px; text-align:center; }
.debate-room-topic > span { color:#aaa; font-size:9px; letter-spacing:.15em; }
.debate-room-topic h2 { margin-top:8px; font-size:19px; line-height:1.5; }
.debate-room-sides { display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-top:16px; }
.debate-generating-status { display:flex; align-items:center; gap:10px; margin-top:12px; padding:12px 14px; border:1px solid rgba(0,0,0,.08); border-radius:15px; background:rgba(255,255,255,.72); box-shadow:0 5px 16px rgba(0,0,0,.04); }
.debate-generating-status > i { flex:0 0 16px; width:16px; height:16px; border:2px solid rgba(0,0,0,.15); border-top-color:#555; border-radius:50%; animation:debate-spin .8s linear infinite; }
.debate-generating-status.is-error { border-color:rgba(155,80,65,.22); background:rgba(255,247,244,.8); }
.debate-generating-status.is-error > i { display:grid; place-items:center; border:0; background:#a66b60; color:#fff; font-size:10px; font-style:normal; animation:none; }
.debate-generating-status.is-error small { color:#956c65; }
.debate-generating-status > div { display:grid; gap:3px; min-width:0; }
.debate-generating-status b { font-size:11px; }
.debate-generating-status small { color:#999; font-size:9px; line-height:1.45; }
@keyframes debate-spin { to { transform:rotate(360deg); } }
.debate-room-side { display:grid; gap:5px; min-width:0; padding:11px 12px; border-radius:14px; background:#eeece9; }
.debate-room-side.is-negative { background:#f0e8e6; }
.debate-room-side b { overflow:hidden; color:#444; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.debate-room-side small { color:#aaa; font-size:8px; }
.debate-room-side button { justify-self:start; padding:4px 0; border:0; background:transparent; color:#777; font:inherit; font-size:9px; cursor:pointer; }
.debate-rounds { display:grid; grid-template-columns:repeat(4,1fr); gap:5px; margin:14px 0 24px; }
.debate-rounds button { display:grid; justify-items:center; gap:5px; padding:8px 2px; border:0; border-radius:12px; background:transparent; color:#aaa; font:inherit; cursor:pointer; }
.debate-rounds button i { display:grid; place-items:center; width:23px; height:23px; border-radius:50%; background:#e5e5e3; color:#999; font-size:9px; font-style:normal; }
.debate-rounds button span { font-size:9px; }
.debate-rounds button.is-active { background:rgba(255,255,255,.74); color:#444; }
.debate-rounds button.is-active i,.debate-rounds button.is-done i { background:#555; color:#fff; }
.debate-transcript { margin-top:22px; }
.debate-turn { margin-top:9px; padding:12px 13px; border-left:3px solid #aab3c0; border-radius:13px; background:rgba(255,255,255,.72); }
.debate-turn.is-negative { border-left-color:#c09b96; }
.debate-turn-meta { display:flex; align-items:baseline; gap:7px; min-width:0; }
.debate-turn-meta > span { flex:0 0 auto; font-size:9px; font-weight:700; }
.debate-turn-meta b { overflow:hidden; color:#555; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.debate-turn-meta small { margin-left:auto; color:#aaa; font-size:8px; white-space:nowrap; }
.debate-turn p { margin-top:8px; color:#4d4d4d; font-size:11px; line-height:1.7; white-space:pre-wrap; overflow-wrap:anywhere; }
.debate-composer { margin-top:22px; padding:15px; border:1px solid rgba(255,255,255,.8); border-radius:19px; background:rgba(255,255,255,.7); }
.debate-page:has(.debate-result) .debate-composer { display:none; }
.debate-composer-head { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.debate-composer-head b { font-size:13px; }
.debate-composer-head span { color:#aaa; font-size:8px; }
.debate-composer-selects { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:11px; }
.debate-composer-selects label { display:grid; gap:4px; color:#999; font-size:8px; }
.debate-record-button { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:38px; margin-top:9px; padding:0 12px; border:0; border-radius:11px; background:#363636; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.debate-record-button span { font-size:16px; }
.debate-result { margin-top:16px; padding:15px 16px; border:1px solid rgba(0,0,0,.1); border-radius:16px; background:rgba(255,255,255,.62); }
.debate-result > span { color:#999; font-size:9px; letter-spacing:.12em; }
.debate-result h3 { margin-top:5px; font-size:18px; }
.debate-result p { margin-top:6px; color:#777; font-size:10px; line-height:1.6; }
.debate-result.is-affirmative h3 { color:#596f8e; }
.debate-result.is-negative h3 { color:#94685d; }
.debate-composer-actions { display:grid; grid-template-columns:1fr 1fr 1.15fr; gap:8px; margin-top:9px; }
.debate-composer-actions .debate-record-button { margin-top:0; }
.debate-generate-turn-button { min-height:38px; border:1px solid rgba(0,0,0,.14); border-radius:11px; background:transparent; color:#444; font:inherit; font-size:10px; cursor:pointer; }
.debate-generate-turn-button:disabled { opacity:.55; cursor:wait; }
@media (max-width:520px) { .debate-composer-actions { grid-template-columns:1fr 1fr; }.debate-composer-actions .debate-record-button { grid-column:1 / -1; } }
@media (max-width:430px) { .debate-main { padding-right:15px; padding-left:15px; }.debate-draft-sides,.debate-room-sides { gap:7px; }.debate-draft-side { padding:10px; } }
@media not all { .debate-app { background:#202020; color:#f1f1f1; }.debate-page { background:linear-gradient(160deg,#252525,#1d1d1d); }.debate-header { border-color:rgba(255,255,255,.1); background:rgba(35,35,35,.88); }.debate-header button { background:rgba(255,255,255,.1); color:#eee; }.debate-header p,.debate-section-head > b,.debate-section-head > small,.debate-side-heading small,.debate-local-note { color:#999; }.debate-history-card,.debate-topic-card,.debate-arrange-card,.debate-room-topic,.debate-composer,.debate-turn,.debate-result { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.08); color:#eee; }.debate-history-card b,.debate-side-person b,.debate-room-side b,.debate-turn-meta b,.debate-turn p,.debate-topic-card h2,.debate-result h3 { color:#eee; }.debate-result p { color:#bbb; }.debate-history-mark,.debate-side-person > i { background:rgba(255,255,255,.12); color:#ccc; }.debate-draft-side { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); }.debate-room-side,.debate-room-side.is-negative { background:rgba(255,255,255,.1); }.debate-topic-card textarea,.debate-composer textarea,.debate-draft-side select,.debate-composer select { border-color:rgba(255,255,255,.12); background:rgba(0,0,0,.2); color:#eee; }.debate-rounds button.is-active { background:rgba(255,255,255,.1); color:#eee; }.debate-rounds button i { background:rgba(255,255,255,.12); color:#aaa; }.debate-rounds button.is-active i,.debate-rounds button.is-done i { background:#eee; color:#222; }.debate-transcript-empty,.debate-empty { border-color:rgba(255,255,255,.14); color:#999; } }

.debate-side-people { display:flex; flex-wrap:wrap; align-content:flex-start; gap:5px; min-height:38px; margin:10px 0 8px; }
.debate-person-chip,.debate-room-person { display:inline-flex; align-items:center; gap:4px; max-width:100%; padding:5px 7px; overflow:hidden; border-radius:9px; background:#e9e9e7; color:#555; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.debate-person-chip button { display:grid; place-items:center; width:13px; height:13px; padding:0; border:0; border-radius:50%; background:rgba(0,0,0,.08); color:#777; font:inherit; font-size:11px; line-height:1; cursor:pointer; }
.debate-no-people { align-self:center; color:#aaa; font-size:9px; font-style:normal; }
.debate-add-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:5px; align-items:center; }
.debate-add-row select { min-width:0; }
.debate-add-row > button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-width:0; min-height:32px; margin:0; padding:0 10px; border:1px solid rgba(0,0,0,.11); border-radius:10px; background:#ededeb; box-shadow:inset 0 1px 0 rgba(255,255,255,.7); color:#555; font:inherit; font-size:10px; line-height:1; white-space:nowrap; cursor:pointer; }
.debate-add-row > button:hover { border-color:rgba(0,0,0,.2); background:#e5e5e3; }
.debate-add-row > button:active { transform:translateY(1px); box-shadow:none; }
.debate-add-row > button:disabled,.debate-room-side > button:disabled { opacity:.45; cursor:not-allowed; }
.debate-role-picker-button { justify-content:space-between !important; }
.debate-role-picker-button span { color:#777; font-size:14px; line-height:1; }
.debate-person-avatar { display:grid; place-items:center; width:34px; height:34px; padding:0; overflow:hidden; border:2px solid rgba(0,0,0,.06); border-radius:50%; background:#e9e9e7; color:#777; font-size:13px; font-weight:700; cursor:pointer; }
.debate-person-avatar.is-user { border-radius:11px; }
.debate-person-avatar img,.debate-role-avatar-option img { display:block; width:100%; height:100%; object-fit:cover; }
.debate-role-picker-layer { position:fixed; inset:0; z-index:90; display:grid; place-items:center; padding:20px; }
.debate-role-picker-backdrop { position:absolute; inset:0; border:0; background:rgba(24,24,24,.22); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); cursor:default; }
.debate-role-picker { position:relative; width:min(292px,calc(100vw - 34px)); padding:15px; border:1px solid rgba(0,0,0,.08); border-radius:20px; background:rgba(248,248,246,.94); box-shadow:0 18px 48px rgba(0,0,0,.18); }
.debate-role-picker header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.debate-role-picker header div { display:grid; gap:4px; }
.debate-role-picker header span { color:#999; font-size:9px; letter-spacing:.12em; }
.debate-role-picker header b { color:#333; font-size:14px; }
.debate-role-picker header button { display:grid; place-items:center; width:27px; height:27px; padding:0; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:18px; cursor:pointer; }
.debate-role-avatar-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:13px; max-height:226px; overflow-y:auto; padding:18px 7px; }
.debate-role-avatar-option { position:relative; display:grid; place-items:center; width:43px; height:43px; justify-self:center; padding:0; border:2px solid transparent; border-radius:50%; background:#e9e9e7; color:#777; cursor:pointer; transition:transform .16s ease,border-color .16s ease; }
.debate-role-avatar-option > span { display:grid; place-items:center; width:100%; height:100%; overflow:hidden; border-radius:50%; font-size:14px; font-weight:700; }
.debate-role-avatar-option.is-selected { border-color:#555; transform:scale(1.08); }
.debate-role-avatar-option:disabled { opacity:.3; cursor:not-allowed; }
.debate-role-avatar-option > i { position:absolute; right:-5px; bottom:-4px; display:none; place-items:center; width:16px; height:16px; border-radius:50%; background:#333; color:#fff; font-size:10px; font-style:normal; }
.debate-role-avatar-option.is-selected > i { display:grid; }
.debate-role-picker-empty { grid-column:1 / -1; padding:18px 0; color:#aaa; font-size:10px; text-align:center; }
.debate-role-picker footer { display:flex; align-items:center; justify-content:space-between; gap:10px; border-top:1px solid rgba(0,0,0,.07); padding-top:12px; }
.debate-role-picker footer small { color:#999; font-size:9px; }
.debate-role-picker footer button { min-height:30px; padding:0 14px; border:0; border-radius:10px; background:#333; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.debate-open-hint { display:block; margin-top:7px; color:#aaa; font-size:8px; line-height:1.4; }
.debate-room-side-head { display:flex; align-items:center; justify-content:space-between; gap:6px; }
.debate-room-side-head small { color:#aaa; font-size:8px; }
.debate-room-people { display:flex; flex-wrap:wrap; gap:5px; min-height:25px; margin:7px 0 2px; }
.debate-room-person { padding:4px 6px; background:rgba(255,255,255,.64); color:#666; }
.debate-room-side > button { margin-top:7px; }
.debate-composer-selects { grid-template-columns:1fr 1fr 1fr; }
@media (max-width:430px) { .debate-composer-selects { grid-template-columns:1fr 1fr; }.debate-composer-selects label:last-child { grid-column:1 / -1; } }
@media not all { .debate-person-chip { background:rgba(255,255,255,.12); color:#ddd; }.debate-person-chip button { background:rgba(255,255,255,.12); color:#bbb; }.debate-add-row > button { border-color:rgba(255,255,255,.16); background:rgba(255,255,255,.12); box-shadow:inset 0 1px 0 rgba(255,255,255,.08); color:#ddd; }.debate-room-person { background:rgba(255,255,255,.12); color:#ddd; }.debate-person-avatar,.debate-role-avatar-option { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.12); color:#ddd; }.debate-role-avatar-option.is-selected { border-color:#eee; }.debate-role-picker-backdrop { background:rgba(0,0,0,.42); }.debate-role-picker { border-color:rgba(255,255,255,.12); background:rgba(38,38,38,.95); }.debate-role-picker header b { color:#eee; }.debate-role-picker header button { background:rgba(255,255,255,.1); color:#eee; }.debate-role-picker footer { border-color:rgba(255,255,255,.1); }.debate-role-picker footer button { background:#eee; color:#222; } }

@media (prefers-reduced-motion: reduce) {
  .love-heart, .heartbeat-line { animation: none; }
}

.chat-app { position: fixed; inset: 0; z-index: 29; display: none; background: #f5f5f3; color: #222; }
.chat-app.is-open { display: block; }.chat-page { display: flex; flex-direction: column; width: 100%; height: 100%; }
.chat-header { display: flex; align-items: flex-start; justify-content: space-between; padding: max(27px, env(safe-area-inset-top)) 24px 17px; border-bottom: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.84); -webkit-backdrop-filter: blur(24px); backdrop-filter: blur(24px); }
.chat-kicker { color: #999; font-size: 10px; font-weight: 700; letter-spacing: .16em; }.chat-header h1 { margin-top: 7px; font-size: 29px; letter-spacing: -.04em; }.chat-close { width: 32px; height: 32px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 22px; cursor: pointer; }
.chat-main { flex: 1; min-height: 0; overflow: hidden; }.chat-conversation { display: flex; flex-direction: column; height: 100%; }.chat-person { display: flex; align-items: center; gap: 10px; padding: 14px 20px; border-bottom: 1px solid rgba(0,0,0,.07); }.chat-person > div:nth-child(2) { display: grid; flex: 1; gap: 4px; }.chat-person b { font-size: 14px; }.chat-person small { color: #999; font-size: 10px; }.chat-person button, .chat-subhead button { padding: 7px 10px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; background: rgba(255,255,255,.55); color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.chat-launch-list { height: 100%; overflow-y: auto; padding: 0 20px 26px; }.chat-launch-head { margin-bottom: 14px; }.chat-launch-head span { color: #999; font-size: 10px; font-weight: 700; letter-spacing: .15em; }.chat-launch-head p { margin-top: 6px; color: #999; font-size: 12px; }.chat-launch-contact { display: flex; align-items: center; width: 100%; gap: 11px; margin-bottom: 9px; padding: 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 16px; background: rgba(255,255,255,.48); color: #333; text-align: left; cursor: pointer; }.chat-launch-contact span { display: grid; flex: 1; gap: 4px; }.chat-launch-contact small { color: #999; font-size: 10px; }.chat-launch-contact i { color: #aaa; font-size: 22px; font-style: normal; }.chat-back { width: 29px; height: 29px; padding: 0 !important; border: 0 !important; border-radius: 50% !important; background: rgba(0,0,0,.07) !important; font-size: 22px !important; }
.chat-message-search { position:sticky; top:0; z-index:8; margin:0 -20px 6px; padding:14px 20px 8px; background:rgba(245,245,243,.94); -webkit-backdrop-filter:blur(18px) saturate(145%); backdrop-filter:blur(18px) saturate(145%); }.chat-message-search > label { display:flex; align-items:center; gap:8px; min-height:42px; padding:0 10px 0 13px; border:1px solid rgba(0,0,0,.1); border-radius:13px; background:rgba(255,255,255,.68); color:#999; }.chat-message-search > label > svg { flex:0 0 17px; width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }.chat-message-search input { min-width:0; flex:1; height:34px; padding:0; border:0; outline:0; background:transparent; color:#333; font:inherit; font-size:12px; }.chat-message-search input::placeholder { color:#b2b2b2; }.chat-message-search > label > button { width:24px; height:24px; padding:0; border:0; border-radius:50%; background:rgba(0,0,0,.06); color:#777; font:inherit; font-size:16px; line-height:1; cursor:pointer; }.chat-message-search-results { display:grid; gap:7px; margin:0 0 8px; }.chat-message-search-results > button { display:grid; grid-template-columns:minmax(0,1fr) 18px; gap:3px 8px; width:100%; padding:9px 10px; border:1px solid rgba(0,0,0,.07); border-radius:12px; background:rgba(255,255,255,.58); color:#444; text-align:left; cursor:pointer; }.chat-message-search-results > button > span { display:flex; align-items:baseline; gap:7px; min-width:0; }.chat-message-search-results b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }.chat-message-search-results small { color:#aaa; font-size:9px; }.chat-message-search-results p { grid-column:1; overflow:hidden; color:#777; font-size:10px; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }.chat-message-search-results i { grid-column:2; grid-row:1 / span 2; align-self:center; color:#aaa; font-size:19px; font-style:normal; }.chat-message-search-empty { padding:6px 4px; color:#aaa; font-size:10px; }.chat-message-search-results > button:active { transform:scale(.99); background:rgba(0,0,0,.05); }
.chat-message-search { background:#e5e5e5; }
.chat-message-search > label { border-color:#c9c9c9; background:#e5e5e5; }
@media not all { .chat-message-search { background:rgba(32,32,32,.94); }.chat-message-search > label { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.08); }.chat-message-search input { color:#eee; }.chat-message-search > label > button { background:rgba(255,255,255,.1); color:#bbb; } }
.chat-message.is-search-target > .chat-message-line .chat-bubble { outline:2px solid #777 !important; outline-offset:4px; box-shadow:0 0 0 5px rgba(0,0,0,.08), 0 8px 20px rgba(0,0,0,.12); }
.chat-avatar { display: grid; place-items: center; width: 42px; height: 42px; aspect-ratio: 1 / 1; flex: 0 0 42px; overflow: hidden; border-radius: 15px; background: #ddd; color: #666; font-size: 17px; font-weight: 650; }.chat-avatar.small-avatar { width: 34px; height: 34px; flex-basis: 34px; border-radius: 12px; font-size: 13px; }
.chat-avatar img, .chat-editor-avatar img { display: block; width: 100%; height: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: inherit; }
.chat-messages { flex: 1; overflow-y: auto; padding: 17px 20px; }.chat-hint { margin-top: 35vh; color: #aaa; font-size: 12px; text-align: center; }.chat-message { display: flex; flex-direction: column; max-width: 82%; margin-bottom: 13px; }.chat-message.is-user { align-items: flex-end; margin-left: auto; }.chat-message.is-character { align-items: flex-start; }.chat-bubble { padding: 10px 13px; border: 1px solid rgba(0,0,0,.07); border-radius: 16px; background: rgba(255,255,255,.62); color: #444; font-size: 13px; line-height: 1.55; word-break: break-word; }.chat-message.is-user .chat-bubble { border-color: #222; background: #222; color: #fff; border-bottom-right-radius: 5px; }.chat-message.is-character .chat-bubble { border-bottom-left-radius: 5px; }.chat-bubble img { display: block; max-width: 220px; max-height: 240px; border-radius: 10px; }.chat-message small { margin-top: 4px; color: #aaa; font-size: 9px; }
.chat-compose-wrap { position: relative; padding: 8px 14px max(12px, env(safe-area-inset-bottom)); border-top: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.76); -webkit-backdrop-filter: blur(22px); backdrop-filter: blur(22px); }.chat-compose { display: flex; align-items: center; gap: 5px; }.chat-compose button { border: 0; cursor: pointer; }.chat-plus, .chat-emoji { width: 30px; height: 30px; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 17px; }.chat-compose input { min-width: 0; flex: 1; height: 34px; padding: 0 11px; border: 1px solid rgba(0,0,0,.1); border-radius: 17px; outline: 0; background: rgba(255,255,255,.65); color: #222; font: inherit; font-size: 12px; }.chat-send, .chat-reply { height: 34px; padding: 0 9px; border-radius: 17px; background: #222; color: #fff; font: inherit; font-size: 10px; }.chat-reply { background: rgba(0,0,0,.1); color: #444; }.chat-reply:disabled { opacity: .5; }
.chat-app.is-chatting .chat-tabs { display: none; }.chat-tools, .chat-emoji-panel { position: absolute; right: 0; bottom: 100%; left: 0; transform: none; opacity: 1; animation: none; }.chat-tools { grid-template-columns: repeat(4, 1fr); padding: 11px 14px; border-top: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.94); -webkit-backdrop-filter: blur(25px); backdrop-filter: blur(25px); }.chat-emoji-panel { padding: 12px 14px; border-top: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.96); -webkit-backdrop-filter: blur(25px); backdrop-filter: blur(25px); }.chat-app.is-emoji-open .chat-compose { display: none; }
@keyframes chat-panel-up { to { transform: translateY(0); opacity: 1; } }
.chat-emoji-head { display: flex; align-items: center; gap: 5px; margin-bottom: 10px; }.chat-emoji-groups { display: flex; flex: 1; gap: 5px; overflow-x: auto; }.chat-emoji-head button, .chat-emoji-footer button, .chat-emoji-import button { min-height: 29px; padding: 0 9px; border: 1px solid rgba(0,0,0,.1); border-radius: 8px; background: rgba(255,255,255,.55); color: #666; font: inherit; font-size: 10px; white-space: nowrap; cursor: pointer; }.chat-emoji-groups button.is-active { background: #222; color: #fff; }.chat-emoji-list { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; max-height: 220px; overflow-y: auto; }.chat-emoji-item { display: grid; gap: 3px; min-width: 0; }.chat-emoji-item > button:first-child { display: grid; gap: 3px; min-width: 0; padding: 5px; border: 1px solid rgba(0,0,0,.07); border-radius: 10px; background: rgba(255,255,255,.45); cursor: pointer; }.chat-emoji-item img { width: 100%; height: 48px; object-fit: contain; }.chat-emoji-item span { overflow: hidden; color: #888; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.chat-emoji-item > div { display: flex; justify-content: center; gap: 4px; }.chat-emoji-item > div button { border: 0; background: transparent; color: #999; font-size: 9px; cursor: pointer; }.chat-emoji-empty { grid-column: 1 / -1; padding: 28px; color: #aaa; font-size: 11px; text-align: center; }.chat-emoji-footer { display: flex; justify-content: flex-end; gap: 6px; margin-top: 10px; }.chat-emoji-import { display: grid; gap: 10px; }.chat-emoji-import label { display: grid; gap: 5px; color: #777; font-size: 10px; }.chat-emoji-import small { color: #aaa; }.chat-emoji-import input, .chat-emoji-import textarea { width: 100%; padding: 8px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; outline: 0; background: rgba(255,255,255,.65); color: #222; font: inherit; font-size: 11px; }.chat-emoji-import textarea { min-height: 76px; resize: vertical; }
.chat-emoji-head { position: relative; z-index: 8; min-width: 0; padding-right: 145px; }.chat-emoji-groups { position: relative; z-index: 9; min-width: 0; padding-bottom: 2px; scrollbar-width: none; pointer-events: auto; }.chat-emoji-groups::-webkit-scrollbar { display: none; }.chat-emoji-groups button { position: relative; z-index: 10; pointer-events: auto; }.chat-emoji-list.is-editing .chat-emoji-item { position: relative; }.chat-emoji-item.is-selected > button:first-child { border-color: #222; background: rgba(0,0,0,.09); }.chat-emoji-check { display: flex; align-items: center; justify-content: center; gap: 4px; color: #777; font-size: 9px; }.chat-emoji-check input { accent-color: #222; }.chat-emoji-footer { position: absolute; top: 12px; right: 14px; z-index: 12; margin-top: 0; }
.chat-emoji-create-form { display: flex; gap: 7px; }.chat-emoji-create-form input { flex: 1; min-width: 0; }.chat-emoji-create-form button { flex-shrink: 0; }
.chat-tools { display: grid; grid-template-columns: repeat(4, 1fr); gap: 7px; padding: 11px 0; }.chat-tools button { display: grid; place-items: center; gap: 4px; min-height: 54px; border: 1px solid rgba(0,0,0,.07); border-radius: 13px; background: rgba(255,255,255,.45); color: #555; font-size: 19px; }.chat-tools span { font-size: 10px; }
.chat-tabs { display: flex; justify-content: space-around; padding: 9px 8px max(9px, env(safe-area-inset-bottom)); border-top: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.88); -webkit-backdrop-filter: blur(24px); backdrop-filter: blur(24px); }.chat-tabs button { display: grid; gap: 3px; min-width: 55px; border: 0; background: transparent; color: #aaa; font: inherit; cursor: pointer; }.chat-tabs button.is-active { color: #222; }.chat-tabs b { font-size: 18px; font-weight: 500; }.chat-tabs small { font-size: 9px; }
.chat-tab-icon { width: 21px; height: 21px; margin: 0 auto; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.chat-action-icon { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }.chat-top-back, .chat-top-settings { display: grid; place-items: center; width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; cursor: pointer; }.chat-top-name { flex: 1; margin: 0; font-size: 17px; text-align: center; }.chat-top-settings { margin-left: auto; }.chat-app.is-chatting .chat-header { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }.chat-app.is-chatting .chat-top-back { justify-self: start; }.chat-app.is-chatting .chat-top-settings { justify-self: end; }.chat-top-name { max-width: 240px; overflow: hidden; font-size: 16px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.chat-empty { display: grid; place-items: center; align-content: center; height: 100%; padding: 30px; text-align: center; }.chat-empty.small { height: 50%; }.chat-empty-mark { display: grid; place-items: center; width: 54px; height: 54px; margin-bottom: 14px; border: 1px solid rgba(0,0,0,.12); border-radius: 18px; color: #888; font-size: 23px; }.chat-empty h2 { font-size: 17px; }.chat-empty p { max-width: 260px; margin: 7px 0 16px; color: #999; font-size: 11px; line-height: 1.6; }.chat-empty button { padding: 9px 14px; border: 0; border-radius: 10px; background: #222; color: #fff; font: inherit; font-size: 11px; }
.chat-subhead { display: flex; align-items: flex-end; justify-content: space-between; padding: 24px 22px 17px; }.chat-subhead span { color: #999; font-size: 10px; font-weight: 700; letter-spacing: .14em; }.chat-subhead h2 { margin-top: 6px; font-size: 22px; }.chat-contact-list, .chat-profile-list, .chat-moments { height: calc(100% - 90px); overflow-y: auto; padding: 0 20px 25px; }.chat-contact-card, .chat-profile-card, .chat-moment { display: flex; align-items: center; gap: 11px; margin-bottom: 9px; padding: 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 16px; background: rgba(255,255,255,.48); }.chat-contact-card > div:nth-child(2), .chat-profile-card > div:first-child { display: grid; flex: 1; gap: 5px; min-width: 0; }.chat-contact-card p, .chat-profile-card p { overflow: hidden; color: #999; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }.chat-contact-actions { display: flex; gap: 5px; }.chat-contact-actions button, .chat-profile-card button { padding: 6px 8px; border: 0; border-radius: 8px; background: rgba(0,0,0,.06); color: #666; font: inherit; font-size: 10px; cursor: pointer; }.chat-note { margin: -7px 22px 16px; color: #999; font-size: 11px; }.chat-profile-card { align-items: flex-start; }.chat-profile-card p { overflow: visible; white-space: normal; line-height: 1.5; }.chat-moment { display: block; padding: 15px; }.chat-moment-head { display: flex; align-items: center; gap: 9px; }.chat-moment-head > div:last-child { display: grid; gap: 3px; }.chat-moment-head small { color: #aaa; font-size: 9px; }.chat-moment > p { margin: 12px 0 0 43px; color: #555; font-size: 12px; line-height: 1.6; }.chat-moment > img { max-width: 100%; margin: 10px 0 0 43px; border-radius: 12px; }
.chat-editor { position: fixed; inset: 0; z-index: 35; display: none; align-items: center; justify-content: center; padding: 18px; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }.chat-editor.is-open { display: flex; }.chat-editor-sheet { width: min(100%, 520px); max-height: 92vh; overflow-y: auto; border: 1px solid rgba(255,255,255,.72); border-radius: 24px; background: rgba(248,248,246,.92); box-shadow: 0 20px 60px rgba(0,0,0,.22); }.chat-editor-sheet header { display: flex; align-items: flex-start; justify-content: space-between; padding: 22px; border-bottom: 1px solid rgba(0,0,0,.08); }.chat-editor-sheet header h2 { margin-top: 6px; font-size: 21px; }.chat-editor-sheet header button { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 21px; cursor: pointer; }.chat-editor-body { padding: 20px 22px; }.chat-avatar-picker { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; color: #666; font-size: 11px; cursor: pointer; }.chat-avatar-picker input { display: block; margin-top: 5px; font-size: 10px; }.chat-editor-avatar { display: grid; place-items: center; width: 64px; height: 64px; overflow: hidden; border-radius: 21px; background: #ddd center/cover no-repeat; color: #777; font-size: 22px; }.chat-editor-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }.chat-editor-grid label, .chat-editor-wide { display: grid; gap: 6px; color: #777; font-size: 11px; }.chat-editor-grid input, .chat-editor-grid select, .chat-editor-wide textarea { width: 100%; min-height: 37px; padding: 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; outline: 0; background: rgba(255,255,255,.7); color: #222; font: inherit; font-size: 12px; }.chat-editor-wide { margin-top: 12px; }.chat-editor-wide textarea { min-height: 125px; padding-top: 10px; resize: vertical; line-height: 1.6; }.chat-editor-sheet footer { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 22px 20px; border-top: 1px solid rgba(0,0,0,.08); }.chat-editor-sheet footer button { min-height: 37px; padding: 0 14px; border: 0; border-radius: 10px; background: rgba(0,0,0,.07); color: #555; font: inherit; font-size: 12px; cursor: pointer; }.chat-editor-sheet footer button:last-child { background: #222; color: #fff; }
.chat-settings { position: fixed; inset: 0; z-index: 36; display: none; background: #f5f5f3; color: #222; }.chat-settings.is-open { display: block; }.chat-settings-page { width: 100%; height: 100%; overflow-y: auto; }.chat-settings-page header { display: flex; align-items: center; justify-content: space-between; padding: max(24px, env(safe-area-inset-top)) 22px 18px; border-bottom: 1px solid rgba(0,0,0,.08); }.chat-settings-page header h1 { font-size: 19px; }.chat-settings-page header button { display: grid; place-items: center; width: 32px; height: 32px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; cursor: pointer; }.chat-settings-page main { padding: 24px 20px; }.chat-settings-page section { margin-bottom: 17px; padding: 18px; border: 1px solid rgba(0,0,0,.08); border-radius: 18px; background: rgba(255,255,255,.5); }.chat-settings-page section h2 { margin-top: 6px; font-size: 19px; }.chat-settings-page section p { margin-top: 6px; color: #999; font-size: 11px; }.chat-settings-row { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 48px; margin-bottom: 8px; padding: 0 14px; border: 1px solid rgba(0,0,0,.08); border-radius: 12px; background: rgba(255,255,255,.48); color: #444; font: inherit; font-size: 12px; cursor: pointer; }.chat-settings-row b { color: #999; font-size: 11px; font-weight: 400; }.chat-settings-row.danger { color: #8a3a3a; }
.chat-css-editor { padding: 0 !important; overflow: hidden; }.chat-css-editor-head { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 15px 16px; border: 0; background: transparent; color: #333; font: inherit; text-align: left; cursor: pointer; }.chat-css-editor-head span { display: grid; gap: 4px; }.chat-css-editor-head b { font-size: 14px; font-weight: 600; }.chat-css-editor-head small { color: #999; font-size: 10px; }.chat-css-editor-head i { color: #999; font-size: 18px; font-style: normal; transition: transform .2s ease; }.chat-css-editor.is-open .chat-css-editor-head i { transform: rotate(180deg); }.chat-css-editor-body { display: none; padding: 0 16px 16px; }.chat-css-editor.is-open .chat-css-editor-body { display: block; }.chat-css-hint { max-height: 112px; overflow-y: auto; overscroll-behavior: contain; margin-bottom: 9px; padding: 7px 8px; border: 1px solid rgba(0,0,0,.08); border-radius: 8px; background: rgba(0,0,0,.025); color: #999; font-size: 10px; line-height: 1.7; scrollbar-gutter: stable; }.chat-css-hint-title { display: block; margin: 3px 0 1px; color: #555; font-size: 10px; font-weight: 650; }.chat-css-hint-title:first-child { margin-top: 0; }.chat-css-hint-line { display: block; }.chat-css-hint code { color: #777; font: 10px ui-monospace, SFMono-Regular, Menlo, monospace; }.chat-css-editor textarea { display: block; width: 100%; min-height: 190px; padding: 11px; border: 1px solid rgba(0,0,0,.11); border-radius: 11px; outline: 0; background: #fafaf8; color: #222; font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; resize: vertical; }.chat-css-status { display: block; min-height: 15px; margin-top: 6px; color: #8a7777; font-size: 10px; line-height: 1.5; }.chat-css-actions { display: flex; justify-content: flex-end; gap: 7px; margin-top: 10px; }.chat-css-actions button { min-height: 32px; padding: 0 11px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; background: #f1f1ef; color: #555; font: inherit; font-size: 11px; cursor: pointer; }.chat-css-actions button.is-primary { background: #222; color: #fff; }.chat-css-actions input { display: none; }
.chat-css-editor .chat-css-hint-title:has(+ .chat-css-hint-line + .chat-css-hint-note), .chat-css-editor .chat-css-hint-title:has(+ .chat-css-hint-line + .chat-css-hint-note) + .chat-css-hint-line { display:none; }
.chat-avatar-picker { cursor: default; }.chat-avatar-picker > div { display: grid; gap: 7px; }.chat-file-button { display: inline-flex; align-items: center; justify-content: center; width: fit-content; min-height: 32px; padding: 0 12px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; background: rgba(255,255,255,.58); color: #555; font-size: 11px; cursor: pointer; }.chat-file-button input { display: none; }.chat-avatar-url { width: min(100%, 270px); height: 32px; padding: 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; outline: 0; background: rgba(255,255,255,.65); color: #222; font: inherit; font-size: 11px; }
.chat-avatar-actions { display: flex !important; flex-wrap: nowrap; gap: clamp(4px, 1.4vw, 7px); width: 100%; min-width: 0; }
.chat-avatar-actions > .chat-file-button,
.chat-avatar-actions > button { flex: 1 1 0; min-width: 0; padding-right: clamp(5px, 1.6vw, 12px); padding-left: clamp(5px, 1.6vw, 12px); white-space: nowrap; font-size: clamp(9px, 2.5vw, 11px); }
.chat-contact-actions { flex-wrap: wrap; justify-content: flex-end; }.chat-contact-actions button:last-child { color: #8a3a3a; }
.chat-send, .chat-reply { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border-radius: 50%; }.chat-send .chat-action-icon, .chat-reply .chat-action-icon { width: 18px; height: 18px; }
@media (max-width: 600px) { .chat-send { display: grid; }.chat-reply { padding: 0; }.chat-person { padding-left: 15px; padding-right: 15px; }.chat-tools { grid-template-columns: repeat(4, 1fr); }.chat-bubble { font-size: 12px; } }
.chat-moment-actions { display: flex; gap: 5px; }
@media not all { .chat-moment-actions button { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); color: #ddd; } }
@media not all { .chat-app { background: #202020; color: #eee; }.chat-header, .chat-compose-wrap, .chat-tabs { border-color: rgba(255,255,255,.12); background: rgba(28,28,28,.9); }.chat-close, .chat-plus, .chat-emoji { background: rgba(255,255,255,.1); color: #ddd; }.chat-person { border-color: rgba(255,255,255,.12); }.chat-person button, .chat-subhead button, .chat-contact-card, .chat-profile-card, .chat-moment, .chat-tools button { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); color: #ddd; }.chat-compose input { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; }.chat-bubble { border-color: rgba(255,255,255,.12); background: rgba(255,255,255,.09); color: #ddd; }.chat-message.is-user .chat-bubble, .chat-empty button { background: #eee; color: #111; }.chat-reply, .chat-contact-actions button, .chat-profile-card button { background: rgba(255,255,255,.1); color: #ccc; }.chat-tabs button.is-active { color: #eee; }.chat-moment > p, .chat-contact-card p, .chat-profile-card p { color: #aaa; }.chat-avatar { background: #444; color: #ddd; } }
@media not all { .chat-launch-contact { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); color: #eee; }.chat-back { background: rgba(255,255,255,.1) !important; color: #ddd; } }
@media not all { .chat-editor-sheet { border-color: rgba(255,255,255,.16); background: rgba(35,35,35,.95); }.chat-editor-sheet header, .chat-editor-sheet footer { border-color: rgba(255,255,255,.12); }.chat-editor-sheet header button, .chat-editor-sheet footer button:first-child { background: rgba(255,255,255,.1); color: #ddd; }.chat-editor-sheet footer button:last-child { background: #eee; color: #111; }.chat-editor-grid input, .chat-editor-grid select, .chat-editor-wide textarea { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; }.chat-editor-avatar { background-color: #444; color: #ddd; } }
.chat-avatar, .chat-avatar img, .chat-editor-avatar, .chat-editor-avatar img { aspect-ratio: 1 / 1; }
.chat-avatar { overflow: hidden; flex: 0 0 42px; }

/* 联系人与“我”页面的操作区固定，只有条目列表滚动。 */
.chat-contacts-page, .chat-me-page { display:flex; flex-direction:column; height:100%; min-height:0; overflow:hidden; }
.chat-app.is-contacts-tab .chat-main, .chat-app.is-me-tab .chat-main { overflow:hidden !important; }
.chat-contacts-fixed-head, .chat-me-fixed-head { position:relative; z-index:4; flex:0 0 auto; background:rgba(241,241,243,.96); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
.chat-contacts-page .chat-contact-list, .chat-me-page .chat-profile-list { flex:1 1 auto; min-height:0; height:auto !important; max-height:none !important; overflow-y:auto !important; overflow-x:hidden; padding-bottom:120px; }
.chat-contacts-page .chat-contact-group-panel { max-height:min(48vh,380px); margin-bottom:12px !important; }
@media not all {
  .chat-contacts-fixed-head, .chat-me-fixed-head { background:rgba(32,32,32,.96); }
}
.chat-avatar.small-avatar { flex-basis: 34px; }
.chat-avatar img, .chat-editor-avatar img { object-fit: cover; }
.chat-editor-avatar { flex: 0 0 64px; overflow: hidden; }
@media not all { .chat-top-back, .chat-top-settings, .chat-settings-page header button { background: rgba(255,255,255,.1); color: #ddd; }.chat-settings { background: #202020; color: #eee; }.chat-settings-page header, .chat-settings-page section, .chat-settings-row { border-color: rgba(255,255,255,.13); }.chat-settings-page section, .chat-settings-row { background: rgba(255,255,255,.07); color: #ddd; } }
@media not all { .chat-tools, .chat-emoji-panel { border-color: rgba(255,255,255,.12); background: rgba(28,28,28,.96); }.chat-emoji-head button, .chat-emoji-footer button, .chat-emoji-import button, .chat-emoji-item > button:first-child { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); color: #ddd; }.chat-emoji-groups button.is-active { background: #eee; color: #111; }.chat-emoji-import input, .chat-emoji-import textarea { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; } }

/* 聊天页：网名只保留文字；打开加号菜单时隐藏完整输入栏。 */
.chat-top-name { appearance: none; -webkit-appearance: none; padding: 0; border: 0 !important; outline: 0; background: transparent !important; color: inherit; box-shadow: none; cursor: default; }
.chat-app.is-menu-open .chat-compose { display: none; }
.chat-app.is-menu-open .chat-tools { background: #fff !important; -webkit-backdrop-filter: none; backdrop-filter: none; }
.chat-profile-card > div:first-child { display: block; flex: 0 0 42px; }
.chat-profile-card > div:nth-child(2) { display: grid; flex: 1; gap: 5px; min-width: 0; }
.chat-profile-card > .chat-avatar { width: 42px !important; height: 42px !important; }
.chat-profile-card > .chat-avatar { display:grid !important; place-items:center; padding:0; line-height:1; text-align:center; }

.settings-app { position: fixed; inset: 0; z-index: 30; display: none; background: #f5f5f3; color: #222; }
.settings-app.is-open { display: block; }
.settings-page { width: 100%; height: 100%; overflow-y: auto; }
.settings-collapsible > .settings-collapse-toggle { box-sizing: border-box; width: 100%; margin: 0; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.settings-collapsible > .settings-collapse-toggle > div { flex: 1; min-width: 0; }
.settings-collapsible:not(.is-expanded) > .settings-collapse-toggle { margin-bottom: 0; }
.settings-collapsible:not(.is-expanded) > :not(.settings-collapse-toggle) { display: none; }
.settings-collapsible > .settings-collapse-toggle::after { display: block; flex: 0 0 8px; width: 8px; height: 8px; margin: -4px 3px 0 8px; border-right: 1.5px solid #999; border-bottom: 1.5px solid #999; content: ''; transform: rotate(45deg); transition: transform .18s ease, margin .18s ease; }
.settings-collapsible.is-expanded > .settings-collapse-toggle::after { margin-top: 4px; transform: rotate(225deg); }
.settings-collapse-toggle:focus-visible { outline: 2px solid rgba(34,34,34,.28); outline-offset: 5px; border-radius: 8px; }
.settings-header { display: flex; align-items: flex-start; justify-content: space-between; padding: max(28px, env(safe-area-inset-top)) max(24px, 6vw) 22px; border-bottom: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.82); -webkit-backdrop-filter: blur(26px); backdrop-filter: blur(26px); }
.settings-header { position: sticky; top: 0; z-index: 4; }
.settings-kicker, .settings-eyebrow { color: #999; font-size: 10px; font-weight: 700; letter-spacing: .15em; }
.settings-header h1 { margin-top: 8px; font-size: 30px; letter-spacing: -.04em; }
.settings-header p, .settings-section-head p { margin-top: 6px; color: #999; font-size: 12px; }
.settings-close { width: 32px; height: 32px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 22px; cursor: pointer; }
.settings-main { width: min(100% - 40px, 760px); margin: 0 auto; padding: 24px 0 50px; }
.settings-section { margin-bottom: 18px; padding: 21px; border: 1px solid rgba(0,0,0,.09); border-radius: 22px; background: rgba(255,255,255,.5); box-shadow: 0 10px 28px rgba(0,0,0,.05); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); }
.settings-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; margin-bottom: 17px; }
.settings-section-head > div { flex:1 1 auto; min-width:0; }
.settings-section h2 { margin-top: 6px; font-size: 19px; letter-spacing: -.02em; }
.settings-status, .settings-storage-total { flex:0 0 auto; max-width:42%; min-width:58px; overflow:visible; color:#888; font-size:11px; line-height:1.35; overflow-wrap:anywhere; text-align:right; white-space:normal; }
.settings-profile-bar { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.settings-profile-picker { position: relative; flex: 1 1 auto; min-width: 0; }
.settings-profile-trigger { display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; height:34px; padding:0 11px; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:rgba(255,255,255,.74); box-shadow:0 2px 8px rgba(0,0,0,.035); color:#444; font:inherit; font-size:11px; text-align:left; cursor:pointer; }
.settings-profile-trigger span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.settings-profile-trigger i { flex:0 0 auto; color:#888; font-size:14px; font-style:normal; line-height:1; }
.settings-profile-menu { position:absolute; top:calc(100% + 7px); right:0; left:0; z-index:8; max-height:260px; overflow-y:auto; padding:6px; border:1px solid rgba(0,0,0,.08); border-radius:15px; background:rgba(255,255,255,.98); box-shadow:0 14px 32px rgba(0,0,0,.13); }
.settings-profile-menu[hidden] { display:none; }
.settings-profile-item-row { display:flex; align-items:stretch; gap:5px; padding:2px; border-radius:11px; }
.settings-profile-item-row + .settings-profile-item-row { margin-top:2px; }
.settings-profile-item { display:flex; flex:1; align-items:center; min-width:0; padding:9px 10px; border:0; border-radius:9px; background:transparent; color:#444; font:inherit; text-align:left; cursor:pointer; }
.settings-profile-item:hover, .settings-profile-item.is-active { background:rgba(0,0,0,.055); }
.settings-profile-item > span { display:grid; min-width:0; gap:3px; }
.settings-profile-item b, .settings-profile-item small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.settings-profile-item b { font-size:11px; }
.settings-profile-item small { color:#999; font-size:9px; }
.settings-profile-delete { align-self:center; flex:0 0 auto; min-height:27px; padding:0 8px; border:1px solid transparent; border-radius:8px; background:transparent; color:#999; font:inherit; font-size:10px; cursor:pointer; }
.settings-profile-delete:hover { border-color:rgba(190,70,70,.18); background:rgba(190,70,70,.08); color:#b25555; }
.settings-profile-empty { padding:18px 10px; color:#999; font-size:10px; text-align:center; }
.settings-profile-bar > button { display: inline-flex; flex: 0 0 auto; flex-direction: row; align-items: center; justify-content: center; width: max-content; min-width: max-content; height: 34px; padding: 0 11px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; background: rgba(255,255,255,.5); color: #555; font: inherit; font-size: 11px; line-height: 1; white-space: nowrap; writing-mode: horizontal-tb; cursor: pointer; }
.settings-profile-bar .settings-profile-trigger { display:flex; flex:1 1 auto; width:100%; min-width:0; }
.settings-profile-bar .settings-profile-picker { flex:1 1 auto; }
.settings-api-form { display: grid; grid-template-columns: .9fr 1.2fr 1fr auto; align-items: end; gap: 9px; }
.settings-api-form label { display: grid; gap: 7px; color: #777; font-size: 11px; }
.settings-api-form input { width: 100%; height: 38px; padding: 0 11px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; outline: 0; background: rgba(255,255,255,.68); color: #222; font: inherit; font-size: 12px; }
.settings-primary, .settings-save-api { min-height: 38px; padding: 0 14px; border: 0; border-radius: 10px; background: #222; color: #fff; font: inherit; font-size: 12px; cursor: pointer; }
.settings-primary:disabled { opacity: .5; cursor: wait; }
.settings-model-panel, .settings-assignment { margin-top: 17px; padding-top: 16px; border-top: 1px solid rgba(0,0,0,.08); }
.settings-vector-section code { padding:2px 5px; border-radius:6px; background:rgba(0,0,0,.05); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:10px; }
.settings-vector-form { display:grid; grid-template-columns:1.15fr 1fr 1fr; gap:9px; }
.settings-vector-form label { display:grid; gap:7px; color:#777; font-size:11px; }
.settings-vector-form input { width:100%; height:38px; padding:0 11px; border:1px solid rgba(0,0,0,.11); border-radius:10px; outline:0; background:rgba(255,255,255,.68); color:#222; font:inherit; font-size:12px; }
.settings-vector-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
.settings-vector-actions button { min-height:36px; padding:0 13px; border:1px solid rgba(0,0,0,.11); border-radius:10px; background:rgba(255,255,255,.64); color:#555; font:inherit; font-size:11px; cursor:pointer; }
.settings-vector-actions button.is-primary { border-color:#222; background:#222; color:#fff; }
.settings-vector-actions button:disabled { opacity:.5; cursor:wait; }
.settings-vector-note { margin-top:15px; padding:13px 14px; border:1px solid rgba(112,91,127,.1); border-radius:13px; background:rgba(241,237,244,.66); }
.settings-vector-note b { color:#5f5268; font-size:11px; }
.settings-vector-note p { margin-top:5px; color:#8b8290; font-size:9px; line-height:1.6; }
.settings-prompt-label { display:grid; gap:8px; color:#777; font-size:11px; }
.settings-prompt-label textarea { box-sizing:border-box; width:100%; min-height:190px; resize:vertical; padding:12px; border:1px solid rgba(0,0,0,.11); border-radius:12px; outline:0; background:rgba(255,255,255,.68); color:#222; font:inherit; font-size:12px; line-height:1.65; }
.settings-prompt-label textarea:focus { border-color:rgba(0,0,0,.3); box-shadow:0 0 0 3px rgba(0,0,0,.05); }
.settings-prompt-subhead { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:14px; }
.settings-prompt-subhead b { color:#333; font-size:13px; }
.settings-prompt-subhead small, .settings-prompt-variable-title small { color:#999; font-size:10px; }
.settings-prompt-variable-title { margin-bottom:8px; color:#777; font-size:10px; }
.settings-prompt-variables { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px 8px; margin-bottom:16px; padding:10px; border:1px solid rgba(0,0,0,.08); border-radius:13px; background:rgba(255,255,255,.36); }
.settings-prompt-variables button { display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:0; padding:5px 4px; border:0; background:transparent; color:#999; font:inherit; font-size:9px; text-align:left; cursor:pointer; }
.settings-prompt-variables button:hover { color:#555; }
.settings-prompt-variables code { color:#555; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:10px; white-space:nowrap; }
.settings-prompt-variables span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.settings-prompt-hint { margin-top:8px; color:#999; font-size:10px; line-height:1.55; }
.settings-prompt-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:13px; }
.settings-prompt-actions button { min-height:36px; padding:0 13px; border:1px solid rgba(0,0,0,.11); border-radius:10px; background:rgba(255,255,255,.64); color:#555; font:inherit; font-size:11px; cursor:pointer; }
.settings-prompt-actions button.is-primary { border-color:#222; background:#222; color:#fff; }
.settings-subhead { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 10px; }
.settings-subhead b { font-size: 13px; }
.settings-subhead small { color: #999; font-size: 10px; }
.settings-model-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; max-height: 190px; overflow-y: auto; overscroll-behavior: contain; padding-right: 3px; scrollbar-width: thin; }
.settings-model-option { display: flex; align-items: center; gap: 9px; min-width: 0; padding: 10px; border: 1px solid rgba(0,0,0,.08); border-radius: 11px; background: rgba(255,255,255,.4); cursor: pointer; }
.settings-model-option input { accent-color: #222; }
.settings-model-option span { display: grid; min-width: 0; gap: 3px; }
.settings-model-option b { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.settings-model-option small { color: #999; font-size: 9px; }
.settings-assignment-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.settings-assignment-item { display: grid; gap: 6px; color: #666; font-size: 11px; }
.settings-assignment-item select { width: 100%; height: 34px; padding: 0 8px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; background: rgba(255,255,255,.62); color: #333; font: inherit; font-size: 11px; }
.settings-save-api { display: block; margin: 16px 0 0 auto; }
.settings-empty { padding: 18px 8px; color: #aaa; font-size: 11px; text-align: center; }
.settings-storage-list { display: grid; gap: 10px; }
.settings-storage-row { display: grid; grid-template-columns: 10px 1fr auto auto; align-items: center; gap: 8px; color: #555; font-size: 11px; }
.settings-storage-row small, .settings-storage-row em { color: #999; font-size: 10px; font-style: normal; }
.settings-storage-dot { width: 8px; height: 8px; border-radius: 50%; background: #222; }
.settings-storage-dot.dot-1 { background: #777; }.settings-storage-dot.dot-2 { background: #aaa; }.settings-storage-dot.dot-3 { background: #c9c9c5; }.settings-storage-dot.dot-4 { background: #555; }
.settings-data-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.settings-data-actions button, .settings-import-label { display: flex; align-items: center; justify-content: space-between; min-height: 46px; padding: 0 14px; border: 1px solid rgba(0,0,0,.11); border-radius: 12px; background: rgba(255,255,255,.48); color: #444; font: inherit; font-size: 12px; cursor: pointer; }
.settings-data-actions small { color: #999; font-size: 10px; }.settings-import-label input { display: none; }
.settings-danger { min-height: 40px; padding: 0 14px; border: 1px solid rgba(130,30,30,.25); border-radius: 11px; background: rgba(150,40,40,.06); color: #8a3a3a; font: inherit; font-size: 12px; cursor: pointer; }
.settings-reset-confirm { position: fixed; inset: 0; z-index: 10; display: grid; place-items: center; padding: 20px; background: rgba(0,0,0,.24); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); }
.settings-reset-confirm > section { width: min(340px, 100%); padding: 23px; border: 1px solid rgba(255,255,255,.78); border-radius: 21px; background: rgba(250,250,248,.96); box-shadow: 0 18px 55px rgba(0,0,0,.22); text-align: center; }
.settings-reset-confirm h2 { color: #222; font-size: 17px; }
.settings-reset-confirm p { margin: 9px 0 20px; color: #888; font-size: 12px; line-height: 1.55; }
.settings-reset-confirm footer { display: flex; gap: 9px; }
.settings-reset-confirm button { flex: 1; min-height: 38px; border: 0; border-radius: 11px; font: inherit; font-size: 12px; cursor: pointer; }
.settings-reset-cancel { background: rgba(0,0,0,.07); color: #444; }
.settings-reset-confirm-ok { background: #222; color: #fff; }
@media (max-width: 600px) { .settings-main { width: calc(100% - 28px); padding-top: 16px; }.settings-api-form { grid-template-columns: 1fr 1fr; }.settings-api-form label:first-child, .settings-api-form label:nth-child(2) { grid-column: 1 / -1; }.settings-primary { grid-column: 2; }.settings-model-list { grid-template-columns: 1fr; }.settings-section { padding: 17px; }.settings-prompt-variables { grid-template-columns:1fr; } }
@media (max-width:600px) { .settings-vector-form { grid-template-columns:1fr; }.settings-vector-actions { display:grid; grid-template-columns:1fr 1fr; }.settings-vector-actions button.is-primary { grid-column:1/-1; }.settings-vector-section .settings-section-head { align-items:flex-start; }.settings-vector-section .settings-status { max-width:110px; text-align:right; white-space:normal; } }
@media (max-width:600px) { .settings-api-section .settings-section-head { display:flex; gap:12px; }.settings-api-section .settings-status { flex:0 0 auto; max-width:40%; overflow:hidden; line-height:1.45; text-align:right; text-overflow:ellipsis; white-space:nowrap; } }
@media not all { .settings-app { background: #202020; color: #eee; }.settings-header { border-color: rgba(255,255,255,.12); background: rgba(28,28,28,.88); }.settings-close { background: rgba(255,255,255,.1); color: #ddd; }.settings-section { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); }.settings-api-form input, .settings-assignment-item select, .settings-profile-bar select, .settings-prompt-label textarea { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; }.settings-profile-bar > button { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.08); color: #ddd; }.settings-profile-trigger { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.22); color:#eee; }.settings-profile-menu { border-color:rgba(255,255,255,.14); background:rgba(35,35,35,.98); }.settings-profile-item { color:#eee; }.settings-profile-item:hover, .settings-profile-item.is-active { background:rgba(255,255,255,.1); }.settings-profile-item small { color:#aaa; }.settings-profile-delete { border:1px solid transparent; background:transparent; color:#aaa; }.settings-profile-delete:hover { border-color:rgba(220,120,120,.25); background:rgba(220,120,120,.16); color:#e0a1a1; }.settings-profile-empty { color:#aaa; }.settings-model-panel, .settings-assignment { border-color: rgba(255,255,255,.12); }.settings-model-option, .settings-data-actions button, .settings-import-label { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); color: #ddd; }.settings-primary, .settings-save-api { background: #eee; color: #111; }.settings-storage-dot { background: #eee; }.settings-storage-dot.dot-1 { background: #aaa; }.settings-storage-dot.dot-2 { background: #777; }.settings-storage-dot.dot-3 { background: #555; }.settings-storage-dot.dot-4 { background: #ccc; }.settings-danger { border-color: rgba(220,120,120,.3); background: rgba(180,70,70,.12); color: #e0a1a1; }.settings-reset-confirm > section { border-color: rgba(255,255,255,.14); background: rgba(35,35,35,.97); }.settings-reset-confirm h2 { color: #f1f1f1; }.settings-reset-confirm p { color: #aaa; }.settings-reset-cancel { background: rgba(255,255,255,.1); color: #eee; }.settings-reset-confirm-ok { background: #f1f1f1; color: #111; }.settings-prompt-actions button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#ddd; }.settings-prompt-actions button.is-primary { border-color:#eee; background:#eee; color:#111; }.settings-prompt-subhead b, .settings-prompt-variables code { color:#eee; }.settings-prompt-variables { border-color:rgba(255,255,255,.12); background:rgba(0,0,0,.12); }.settings-prompt-variables button { color:#aaa; } }
@media not all { .settings-vector-form input { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.22); color:#eee; }.settings-vector-actions button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#ddd; }.settings-vector-actions button.is-primary { border-color:#eee; background:#eee; color:#111; }.settings-vector-note { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.05); }.settings-vector-note b { color:#ddd; }.settings-vector-note p { color:#aaa; }.settings-vector-section code { background:rgba(255,255,255,.1); } }
.settings-notification-row { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:16px; padding:13px 14px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:rgba(255,255,255,.56); }
.settings-notification-row > div { display:grid; gap:4px; }
.settings-notification-row b { color:#333; font-size:12px; }
.settings-notification-row small { color:#999; font-size:9px; line-height:1.45; }
.settings-notification-switch { position:relative; display:block; flex:0 0 39px; width:39px; height:23px; cursor:pointer; }
.settings-notification-switch input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.settings-notification-switch i { position:absolute; inset:0; border-radius:12px; background:#d7d7d5; transition:background .2s ease; }
.settings-notification-switch i::after { position:absolute; top:3px; left:3px; width:17px; height:17px; border-radius:50%; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,.18); content:''; transition:transform .2s ease; }
.settings-notification-switch input:checked + i { background:#222; }
.settings-notification-switch input:checked + i::after { transform:translateX(16px); }
.settings-notification-tests { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:9px; }
.settings-notification-test { width:100%; min-height:37px; border:1px solid rgba(0,0,0,.1); border-radius:11px; background:#fff; color:#444; font:inherit; font-size:11px; cursor:pointer; }
.settings-notification-test.is-system { background:#222; color:#fff; }
.settings-notification-push-status { margin:8px 1px 0; color:#888; font-size:11px; line-height:1.45; }
.settings-notification-push-status[data-state="ready"] { color:#25804e; }
.settings-notification-push-status[data-state="error"] { color:#b34d4d; }
.settings-notification-push-status[data-state="busy"] { color:#777; }
.ideal-message-notification { position:fixed; top:max(10px,env(safe-area-inset-top)); left:50%; z-index:220; display:grid; grid-template-columns:42px minmax(0,1fr) auto; align-items:center; gap:10px; width:min(430px,calc(100vw - 20px)); min-height:64px; padding:10px 12px; overflow:hidden; border:1px solid rgba(255,255,255,.78); border-radius:20px; background:rgba(247,247,245,.9); color:#222; box-shadow:0 12px 34px rgba(0,0,0,.2); opacity:0; pointer-events:none; transform:translate(-50%,calc(-100% - 36px)); transition:transform .32s cubic-bezier(.2,.85,.25,1),opacity .22s ease; -webkit-backdrop-filter:blur(24px) saturate(145%); backdrop-filter:blur(24px) saturate(145%); font:inherit; text-align:left; }
.ideal-message-notification.is-visible { opacity:1; pointer-events:auto; transform:translate(-50%,0); }
.ideal-message-notification-avatar { display:grid; place-items:center; width:42px; height:42px; overflow:hidden; border-radius:14px; background:#dededc; color:#666; font-size:15px; font-weight:650; line-height:1; text-align:center; }
.ideal-message-notification-avatar img { display:block; width:100%; height:100%; object-fit:cover; }
.ideal-message-notification-copy { display:grid; min-width:0; gap:4px; }
.ideal-message-notification-copy b { overflow:hidden; font-size:12px; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
.ideal-message-notification-copy small { overflow:hidden; color:#6f6f73; font-size:10px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.ideal-message-notification time { align-self:start; margin-top:2px; color:#aaa; font-size:8px; }
@media not all { .settings-notification-row { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.06); }.settings-notification-row b { color:#eee; }.settings-notification-test { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#ddd; }.settings-notification-test.is-system { background:#eee; color:#222; }.settings-notification-switch i { background:#555; }.settings-notification-switch input:checked + i { background:#eee; }.settings-notification-switch input:checked + i::after { background:#222; }.ideal-message-notification { border-color:rgba(255,255,255,.16); background:rgba(34,34,34,.9); color:#f2f2f2; }.ideal-message-notification-avatar { background:#4a4a4a; color:#eee; }.ideal-message-notification-copy small { color:#bbb; } }
.chat-top-name { max-width: 60%; overflow: hidden; font-size: 16px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.chat-tools { min-height: 190px; align-content: center; z-index: 5; }.chat-emoji-panel { min-height: 300px; z-index: 6; }.chat-emoji-head > button { flex-shrink: 0; min-width: 58px; pointer-events: auto; }.chat-emoji-groups { pointer-events: auto; }.chat-emoji-groups button { pointer-events: auto; }
.chat-profile-editor { position: fixed; inset: 0; z-index: 37; display: none; align-items: center; justify-content: center; padding: 18px; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }.chat-profile-editor.is-open { display: flex; }
.chat-profile-card .chat-avatar { width: 50px; height: 50px; border-radius: 50%; }.chat-thought { position: fixed; inset: 0; z-index: 38; display: none; align-items: center; justify-content: center; padding: 22px; }.chat-thought.is-open { display: flex; }.chat-thought-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.25); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); }.chat-thought-card { position: relative; width: min(100%, 330px); padding: 19px; border: 1px solid rgba(255,255,255,.75); border-radius: 23px; background: rgba(248,248,246,.92); box-shadow: 0 18px 50px rgba(0,0,0,.2); text-align: center; }.chat-thought-card header { display: flex; align-items: center; justify-content: space-between; }.chat-thought-card header button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 19px; cursor: pointer; }.chat-thought-avatar { display: grid; place-items: center; width: 62px; height: 62px; margin: 5px auto 12px; overflow: hidden; border-radius: 50%; background: #ddd; color: #777; font-size: 22px; }.chat-thought-avatar img { width: 100%; height: 100%; object-fit: cover; }.chat-thought-card h2 { font-size: 18px; }.chat-thought-card p { margin: 12px 4px; color: #666; font-size: 12px; line-height: 1.7; }.chat-thought-card > small { color: #aaa; font-size: 10px; }
.chat-app.is-chatting .chat-header { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }.chat-app.is-chatting .chat-top-back { justify-self: start; }.chat-app.is-chatting .chat-top-settings { justify-self: end; }.chat-top-name { max-width: 240px; overflow: hidden; font-size: 16px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }.chat-profile-picker { position: absolute; top: 72px; right: 16px; left: 16px; z-index: 9; padding: 14px; border: 1px solid rgba(0,0,0,.1); border-radius: 17px; background: rgba(248,248,246,.96); box-shadow: 0 14px 35px rgba(0,0,0,.16); }.chat-profile-picker-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 9px; }.chat-profile-picker-head button { border: 0; background: transparent; color: #888; font: inherit; font-size: 11px; cursor: pointer; }.chat-profile-picker > button { display: grid; width: 100%; gap: 4px; margin-top: 6px; padding: 10px; border: 1px solid rgba(0,0,0,.08); border-radius: 10px; background: rgba(255,255,255,.55); color: #444; text-align: left; cursor: pointer; }.chat-profile-picker > button small { overflow: hidden; color: #999; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.chat-profile-empty { padding: 14px 6px 8px; color: #999; font-size: 11px; line-height: 1.7; text-align: center; }
.chat-tools { height: min(330px, calc(100vh - 150px)); max-height: calc(100vh - 150px); overflow-y: auto; align-content: start; padding: 14px; }
.chat-tools button { min-height: 0; aspect-ratio: 1 / 1; border-radius: 15px; }
.chat-tool-icon { width: 25px; height: 25px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.chat-tools button[data-chat-tool="transfer"] .chat-tool-icon { width: 30px; height: 30px; stroke-width: 2.1; }
.chat-image-choice { display: grid; grid-column: 1 / -1; grid-template-columns: 1fr 1fr; gap: 9px; padding: 10px 0 2px; }
.chat-image-choice button { aspect-ratio: auto; min-height: 42px; border-radius: 12px; background: #f2f2f0; color: #444; font: inherit; font-size: 11px; }
.chat-image-choice-panel { display: grid; grid-column: 1 / -1; gap: 9px; padding: 10px 12px 2px; }
.chat-image-choice-panel button { width: min(100%, 260px); min-height: 44px; margin: 0 auto; border: 1px solid rgba(0,0,0,.1); border-radius: 13px; background: #f2f2f0; color: #333; font: inherit; font-size: 12px; }
.chat-image-description-modal { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 22px; background: rgba(0,0,0,.22); }
.chat-image-description-card { width: min(100%, 330px); padding: 18px; border: 1px solid rgba(0,0,0,.1); border-radius: 18px; background: #fff; box-shadow: 0 18px 45px rgba(0,0,0,.2); }
.chat-image-description-card h3 { margin-bottom: 12px; font-size: 15px; }
.chat-image-description-card textarea { width: 100%; min-height: 110px; padding: 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 11px; outline: 0; resize: vertical; font: inherit; font-size: 12px; }
.chat-image-description-card > div { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.chat-image-description-card button { min-width: 60px; padding: 8px 12px; border: 0; border-radius: 9px; background: #eee; color: #555; font: inherit; font-size: 11px; }
.chat-image-description-card button:last-child { background: #222; color: #fff; }
.chat-image-choice-modal { position: fixed; inset: 0; z-index: 40; display: grid; place-items: center; padding: 22px; background: rgba(0,0,0,.24); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.chat-generated-image-modal { position:fixed; inset:0; z-index:55; display:grid; place-items:center; padding:18px; background:rgba(0,0,0,.58); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); }
.chat-generated-image-card { display:grid; grid-template-rows:auto minmax(0,1fr) auto; width:min(100%,520px); max-height:calc(100vh - 36px); overflow:hidden; border:1px solid rgba(255,255,255,.28); border-radius:20px; background:#f7f7f5; box-shadow:0 20px 70px rgba(0,0,0,.3); }
.chat-generated-image-card header { display:flex; align-items:center; justify-content:space-between; padding:14px 17px; border-bottom:1px solid rgba(0,0,0,.09); color:#555; font-size:11px; }
.chat-generated-image-card header button { width:28px; height:28px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:19px; cursor:pointer; }
.chat-generated-image-card main { display:grid; place-items:center; min-height:180px; padding:14px; overflow:auto; background:#e7e7e4; }
.chat-generated-image-card main img { display:block; max-width:100%; max-height:calc(100vh - 170px); object-fit:contain; border-radius:10px; }
.chat-generated-image-card footer { display:flex; justify-content:flex-end; gap:8px; padding:12px 14px 14px; border-top:1px solid rgba(0,0,0,.09); }
.chat-generated-image-card footer button { min-height:36px; padding:0 13px; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:#fff; color:#555; font:inherit; font-size:10px; cursor:pointer; }
.chat-generated-image-card footer button:last-child { border-color:#222; background:#222; color:#fff; }
.chat-generated-image-card footer button:disabled { opacity:.55; cursor:wait; }
.chat-message .chat-bubble.image img, .chat-moment > img { cursor:zoom-in; }
@media not all { .chat-generated-image-card { border-color:rgba(255,255,255,.14); background:#242424; } .chat-generated-image-card header { border-color:rgba(255,255,255,.12); color:#ddd; } .chat-generated-image-card header button,.chat-generated-image-card footer button { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.08); color:#ddd; } .chat-generated-image-card main { background:#333; } .chat-generated-image-card footer { border-color:rgba(255,255,255,.12); } .chat-generated-image-card footer button:last-child { border-color:#eee; background:#eee; color:#111; } }
.chat-image-choice-card { display: grid; width: min(100%, 300px); gap: 10px; padding: 20px; border: 1px solid rgba(255,255,255,.72); border-radius: 20px; background: #fff; box-shadow: 0 20px 55px rgba(0,0,0,.22); }
.chat-image-choice-card h3 { margin-bottom: 4px; font-size: 16px; text-align: center; }
.chat-image-choice-card > button { width: 100%; min-height: 46px; border: 1px solid rgba(0,0,0,.1); border-radius: 12px; background: #f3f3f1; color: #333; font: inherit; font-size: 12px; cursor: pointer; }
.chat-image-choice-card > button:hover { background: #e9e9e7; }
.chat-image-choice-card textarea { width: 100%; min-height: 112px; padding: 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 11px; outline: 0; resize: vertical; font: inherit; font-size: 12px; }
.chat-image-choice-card > div { display: flex; justify-content: flex-end; gap: 8px; margin-top: 2px; }
.chat-image-choice-card > div button { min-width: 60px; padding: 8px 12px; border: 0; border-radius: 9px; background: #eee; color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.chat-image-choice-card > div button:last-child { background: #222; color: #fff; }
.chat-bubble.image-desc { display: flex; align-items: stretch; width: 220px; height: 220px; min-height: 0; padding: 14px; border: 0; border-radius: 14px; background: linear-gradient(145deg, #e9e9e6, #cfcfcb); color: #333; aspect-ratio: 1 / 1; }
.chat-message.is-user .chat-bubble.image-desc { background: linear-gradient(145deg, #e9e9e6, #cfcfcb); color: #333; }
.chat-image-description { display: flex; flex: 1; flex-direction: column; justify-content: flex-end; min-width: 0; }
.chat-image-description strong { margin-bottom: auto; color: rgba(0,0,0,.38); font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.chat-image-description p { margin: 18px 0 0; color: #333; font-size: 12px; line-height: 1.55; overflow-wrap: anywhere; white-space: pre-wrap; }
.chat-transfer-modal { position: fixed; inset: 0; z-index: 41; display: grid; place-items: center; padding: 22px; background: rgba(0,0,0,.24); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.chat-transfer-card { width: min(100%, 330px); padding: 20px; border: 1px solid rgba(0,0,0,.1); border-radius: 20px; background: #fff; box-shadow: 0 20px 55px rgba(0,0,0,.22); color: #333; }
.chat-transfer-card header { display: flex; align-items: center; justify-content: space-between; color: #999; font-size: 10px; font-weight: 700; letter-spacing: .14em; }
.chat-transfer-card header button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: #f0f0ee; color: #666; font-size: 19px; cursor: pointer; }
.chat-transfer-card h2 { margin: 14px 0 17px; font-size: 20px; }
.chat-transfer-card label { display: grid; gap: 7px; margin-top: 12px; color: #777; font-size: 11px; }
.chat-transfer-card input { width: 100%; height: 40px; padding: 0 11px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 13px; }
.chat-transfer-amount-row { display: grid; grid-template-columns: minmax(0,1fr) 132px; gap: 7px; }
.chat-transfer-amount-row select { min-width: 0; height: 40px; padding: 0 7px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 11px; }
.chat-transfer-conversion { margin: 10px 1px 0; color: #333; font-size: 11px; font-weight: 650; line-height: 1.45; }
.chat-transfer-rate-note { margin: 4px 1px 0; color: #aaa; font-size: 9px; line-height: 1.4; }
.chat-transfer-optional { margin-left: 4px; color: #aaa; }
.chat-transfer-card footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 19px; }
.chat-transfer-card footer button { min-height: 36px; padding: 0 13px; border: 0; border-radius: 10px; background: #eee; color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.chat-transfer-card footer button:last-child { background: #222; color: #fff; }
.chat-bubble.transfer { min-width: 190px; padding: 0; border: 0; overflow: hidden; background: #e8e8e5; color: #333; }
.chat-message.is-user .chat-bubble.transfer { background: #e8e8e5; color: #333; }
.chat-transfer-message { padding: 14px; }
.chat-transfer-message > strong { display: block; color: #777; font-size: 10px; letter-spacing: .12em; }
.chat-transfer-message > b { display: block; margin-top: 8px; font-size: 22px; font-weight: 600; }
.chat-transfer-message > p { margin-top: 7px; color: #666; font-size: 11px; line-height: 1.4; overflow-wrap: anywhere; }
.chat-transfer-message > small { display: block; margin-top: 12px; color: #999; font-size: 10px; }
.chat-transfer-actions { display: flex; gap: 6px; margin-top: 12px; }
.chat-transfer-actions button { flex: 1; min-height: 30px; border: 1px solid rgba(0,0,0,.12); border-radius: 8px; background: rgba(255,255,255,.62); color: #555; font: inherit; font-size: 10px; cursor: pointer; }
.chat-user-home-page { position: fixed; inset: 0; z-index: 43; overflow-y: auto; background: #f5f5f3; color: #222; }
.chat-user-home-page > header { display: flex; align-items: center; justify-content: space-between; padding: max(24px, env(safe-area-inset-top)) 22px 18px; border-bottom: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.9); }
.chat-user-home-page > header h1 { font-size: 19px; }
.chat-user-home-page > header button { display: grid; place-items: center; width: 32px; height: 32px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; cursor: pointer; }
.chat-user-home-page > main { padding: 24px 20px 40px; }
.chat-user-home-hero { padding: 28px 20px 24px; border: 1px solid rgba(0,0,0,.08); border-radius: 22px; background: rgba(255,255,255,.52); text-align: center; }
.chat-user-home-avatar { width: 82px !important; height: 82px !important; margin: 0 auto 14px; border-radius: 50% !important; font-size: 27px; }
.chat-user-home-hero h2 { font-size: 21px; }
.chat-user-home-hero p { margin-top: 5px; color: #888; font-size: 11px; }
.chat-user-home-hero small { display: block; max-width: 280px; margin: 14px auto 0; color: #777; font-size: 11px; line-height: 1.65; }
.chat-user-wallet { margin-top: 13px; padding: 18px; border: 1px solid rgba(0,0,0,.08); border-radius: 18px; background: #fff; color: #222; }
.chat-user-wallet > div:first-child > span { color: #999; font-size: 9px; letter-spacing: .15em; }
.chat-user-wallet h3 { margin-top: 7px; color: #666; font-size: 12px; font-weight: 500; }
.chat-user-wallet > div:first-child > b { display: block; margin-top: 11px; font-size: 28px; font-weight: 500; letter-spacing: .02em; }
.chat-wallet-actions { display: flex; gap: 7px; margin-top: 17px; }
.chat-wallet-actions button { flex: 1; min-height: 34px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; background: #f1f1ef; color: #444; font: inherit; font-size: 11px; cursor: pointer; }
.chat-wallet-records { display: grid; gap: 8px; margin-top: 15px; padding-top: 12px; border-top: 1px solid rgba(0,0,0,.1); }
.chat-wallet-records div { display: flex; justify-content: space-between; color: #666; font-size: 10px; }
.chat-wallet-records b { font-weight: 500; }.chat-wallet-records b.is-in { color: #222; }.chat-wallet-records b.is-out { color: #888; }
.chat-wallet-empty { margin-top: 14px; color: #888; font-size: 10px; }
.chat-user-home-actions { display: grid; gap: 8px; margin-top: 13px; }
.chat-user-home-actions button { min-height: 46px; border: 1px solid rgba(0,0,0,.08); border-radius: 13px; background: rgba(255,255,255,.5); color: #555; font: inherit; font-size: 14px; font-weight: 500; cursor: pointer; }
.chat-wallet-modal { position: fixed; inset: 0; z-index: 45; display: grid; place-items: center; padding: 22px; background: rgba(0,0,0,.24); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.chat-wallet-modal > section { width: min(100%, 330px); padding: 20px; border: 1px solid rgba(0,0,0,.1); border-radius: 20px; background: #fff; box-shadow: 0 20px 55px rgba(0,0,0,.22); }
.chat-wallet-modal header { display: flex; align-items: center; justify-content: space-between; font-size: 15px; }.chat-wallet-modal header button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: #f0f0ee; color: #666; font-size: 19px; cursor: pointer; }
.chat-wallet-modal label { display: grid; gap: 7px; margin-top: 15px; color: #777; font-size: 11px; }.chat-wallet-modal input { width: 100%; height: 40px; padding: 0 11px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 13px; }
.chat-wallet-modal footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 19px; }.chat-wallet-modal footer button { min-height: 36px; padding: 0 14px; border: 0; border-radius: 10px; background: #eee; color: #555; font: inherit; font-size: 11px; cursor: pointer; }.chat-wallet-modal footer button:last-child { background: #222; color: #fff; }
.chat-wallet-modal.is-ledger { align-items: stretch; padding: 0; background: #f5f5f3; }
.chat-wallet-modal.is-ledger > section { display: flex; flex-direction: column; width: 100%; min-height: 100%; padding: max(24px, env(safe-area-inset-top)) 22px max(24px, env(safe-area-inset-bottom)); border: 0; border-radius: 0; background: #f5f5f3; box-shadow: none; }
.chat-wallet-modal.is-ledger header { min-height: 40px; }
.chat-wallet-modal.is-ledger header b { font-size: 19px; }
.chat-wallet-modal.is-ledger label { max-width: 520px; margin: 28px auto 0; width: 100%; color: #666; font-size: 12px; }
.chat-wallet-modal.is-ledger input, .chat-wallet-modal.is-ledger select { height: 46px; border-radius: 12px; background: #fff; font-size: 14px; }
.chat-wallet-modal.is-ledger footer { width: 100%; max-width: 520px; margin: auto auto 0; }
.chat-wallet-modal.is-ledger footer button { min-height: 44px; flex: 1; }
.chat-bill-overview { display: flex; align-items: center; gap: 22px; max-width: 520px; width: 100%; margin: 24px auto 0; padding: 18px; border: 1px solid rgba(0,0,0,.08); border-radius: 18px; background: rgba(255,255,255,.64); }
.chat-bill-rings { display: flex; justify-content: center; gap: 28px; max-width: 520px; width: 100%; margin: 24px auto 0; padding: 18px; border: 1px solid rgba(0,0,0,.08); border-radius: 18px; background: rgba(255,255,255,.64); }
.chat-bill-ring-group { display: grid; justify-items: center; gap: 8px; }.chat-bill-ring-group > small { color: #888; font-size: 10px; }
.chat-bill-ring { position: relative; display: grid; place-items: center; width: 118px; height: 118px; flex: 0 0 118px; border-radius: 50%; }
.chat-bill-ring::before { width: 82px; height: 82px; border-radius: 50%; background: #f5f5f3; content: ''; }
.chat-bill-ring span { position: absolute; color: #777; font-size: 10px; line-height: 1.6; text-align: center; }.chat-bill-ring strong { color: #222; font-size: 14px; font-weight: 600; }
.chat-bill-ring-group > small { color: #666; font-size: 11px; line-height: 1.6; text-align: center; }.chat-bill-ring-group > small b { color: #222; font-size: 14px; font-weight: 650; }
.chat-bill-totals { display: grid; flex: 1; gap: 12px; }.chat-bill-totals p { display: flex; justify-content: space-between; color: #777; font-size: 12px; }.chat-bill-totals b { font-weight: 600; }.chat-bill-totals b.is-in { color: #555; }.chat-bill-totals b.is-out { color: #222; }.chat-bill-totals small { color: #aaa; font-size: 10px; }
.chat-bill-categories { display: flex; flex-wrap: wrap; gap: 8px 14px; max-width: 520px; width: 100%; margin: 12px auto 0; }.chat-bill-categories div { display: flex; align-items: center; gap: 5px; color: #777; font-size: 10px; }.chat-bill-categories i { width: 7px; height: 7px; border-radius: 50%; }.chat-bill-categories b { color: #444; font-weight: 500; }
.chat-bill-entry { display: grid; grid-template-columns: 110px 1fr 1.5fr; gap: 8px; max-width: 520px; width: 100%; margin: 22px auto 0; }.chat-bill-entry label { display: grid; gap: 6px; color: #777; font-size: 10px; }.chat-bill-entry input, .chat-bill-entry select { width: 100%; height: 38px; padding: 0 9px; border: 1px solid rgba(0,0,0,.1); border-radius: 10px; background: #fff; color: #333; font: inherit; font-size: 11px; }
.chat-bill-list { display: grid; gap: 8px; max-width: 520px; width: 100%; margin: 20px auto 0; overflow-y: auto; }.chat-bill-list article { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 13px; border: 1px solid rgba(0,0,0,.07); border-radius: 12px; background: rgba(255,255,255,.58); }.chat-bill-list article > div { min-width: 0; }.chat-bill-list b { display: block; color: #444; font-size: 12px; }.chat-bill-list small { display: block; margin-top: 4px; color: #999; font-size: 10px; }.chat-bill-list p { margin-top: 4px; color: #777; font-size: 10px; overflow-wrap: anywhere; }.chat-bill-list > article > strong { flex: 0 0 auto; font-size: 13px; font-weight: 600; }.chat-bill-list .is-in { color: #555; }.chat-bill-list .is-out { color: #222; }
.chat-bill-list article { border-color: rgba(0,0,0,.12); background: #fff; }.chat-bill-list b { color: #222; }.chat-bill-list small, .chat-bill-list p { color: #777; }
.chat-bubble.transfer { min-width: 224px; border: 1px solid #111; border-radius: 18px; background: #111; color: #fff; box-shadow: 0 14px 30px rgba(0,0,0,.2); }.chat-message.is-user .chat-bubble.transfer { border-color: #222; background: #fff; color: #111; }.chat-transfer-message { padding: 17px 17px 15px; }.chat-transfer-message > strong { display: flex; align-items: center; gap: 8px; color: #aaa; font-size: 9px; letter-spacing: .2em; }.chat-transfer-message > strong::after { width: 22px; height: 1px; background: currentColor; content: ''; opacity: .6; }.chat-message.is-user .chat-transfer-message > strong { color: #777; }.chat-transfer-message > b { display: block; margin-top: 12px; color: inherit; font-family: 'Snell Roundhand', 'Bradley Hand', 'Segoe Print', 'Comic Sans MS', cursive; font-size: 31px; font-weight: 600; letter-spacing: .02em; line-height: 1.05; text-align: center; }.chat-transfer-message > p { min-height: 16px; margin-top: 10px; color: #bbb; font-size: 11px; line-height: 1.5; text-align: center; }.chat-message.is-user .chat-transfer-message > p { color: #555; }.chat-transfer-message > small { display: block; padding-top: 11px; border-top: 1px solid rgba(255,255,255,.18); color: #aaa; font-size: 9px; letter-spacing: .05em; }.chat-message.is-user .chat-transfer-message > small { border-color: rgba(0,0,0,.14); color: #777; }.chat-transfer-actions { gap: 7px; margin-top: 13px; }.chat-transfer-actions button { min-height: 31px; border-color: rgba(255,255,255,.3); background: #222; color: #fff; }.chat-message.is-user .chat-transfer-actions button { border-color: rgba(0,0,0,.16); background: #f1f1ef; color: #222; }
@media (max-width: 520px) { .chat-bill-overview, .chat-bill-rings { gap: 14px; padding: 13px; }.chat-bill-ring { width: 96px; height: 96px; flex-basis: 96px; }.chat-bill-ring::before { width: 68px; height: 68px; }.chat-bill-entry { grid-template-columns: 1fr 1fr; }.chat-bill-entry label:last-child { grid-column: 1 / -1; } }
.chat-tool-text-icon { display: grid; place-items: center; width: 30px; height: 30px; color: currentColor; font-size: 32px; font-weight: 700; line-height: 1; }
.chat-bubble.blocked-failure { position: relative; border-color: rgba(180,45,45,.3) !important; background: #fff1f1 !important; color: #c33 !important; }.chat-bubble.blocked-failure::before { display: inline-grid; place-items: center; width: 17px; height: 17px; margin-right: 6px; border-radius: 50%; background: #d33; color: #fff; content: '!'; font-size: 12px; font-weight: 700; }
.chat-message:has(.chat-recalled) { width: 100%; max-width: 100%; align-items: center; margin-left: 0; margin-right: 0; }.chat-message:has(.chat-recalled) .chat-message-line { justify-content: center; }.chat-message:has(.chat-recalled) .chat-message-avatar { display: none; }.chat-message .chat-bubble:has(.chat-recalled) { display: inline-flex; width: max-content; min-width: 0; max-width: fit-content; align-items: center; justify-content: center; padding: 6px 10px; border: 0; border-radius: 11px; background: #f0f0ee !important; color: #999 !important; font-size: 10px; line-height: 1.3; }
.chat-message .chat-bubble:not(.transfer) { color: var(--chat-character-text, #111); }
.chat-message.is-user .chat-bubble:not(.transfer) { color: var(--chat-user-text, #fff); }
.chat-message .chat-bubble.transfer, .chat-message.is-user .chat-bubble.transfer { border-radius: 18px !important; }
.chat-person { border-bottom: 0 !important; }
.chat-message-line { align-items: flex-start !important; }
.chat-message .chat-bubble.image img { width: auto !important; height: auto !important; max-width: none !important; max-height: none !important; }
.chat-settings-page { position: relative; }
.chat-settings-page > header { position: sticky; top: 0; z-index: 5; background: rgba(247,247,248,.96); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); }
.chat-danger-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
#chatDangerConfirm { position: fixed; inset: 0; z-index: 100; display: none; pointer-events: none; }
#chatDangerConfirm.is-open { display: block; pointer-events: auto; }
.chat-danger-dialog { position: fixed; top: 50%; left: 50%; width: min(340px, calc(100vw - 40px)); transform: translate(-50%, -50%); padding: 24px 20px 18px; border: 1px solid rgba(255,255,255,.8); border-radius: 22px; background: rgba(250,250,249,.98); box-shadow: 0 24px 70px rgba(0,0,0,.24); color: #222; text-align: center; }
.chat-danger-mark { display: grid; place-items: center; width: 34px; height: 34px; margin: 0 auto 12px; border-radius: 50%; background: #222; color: #fff; font-size: 17px; font-weight: 700; }
.chat-danger-dialog h2 { font-size: 17px; }.chat-danger-dialog p { margin-top: 8px; color: #777; font-size: 12px; line-height: 1.6; }.chat-danger-dialog footer { display: flex; gap: 8px; margin-top: 20px; }.chat-danger-dialog button { flex: 1; min-height: 38px; border: 1px solid rgba(0,0,0,.1); border-radius: 11px; background: #fff; color: #555; font: inherit; font-size: 12px; cursor: pointer; }.chat-danger-dialog button.is-danger { border-color: #222; background: #222; color: #fff; }
.chat-app.is-chatting .chat-person { display: none !important; }
.chat-bubble.image img { width: auto !important; height: auto !important; max-width: min(280px, calc(100vw - 118px)) !important; max-height: 300px !important; object-fit: contain; }
.chat-bubble.image.sticker img { width: auto !important; height: auto !important; max-width: 150px !important; max-height: 150px !important; }
.chat-message .chat-bubble.image:not(.sticker) img { width: auto !important; height: auto !important; max-width: min(280px, calc(100vw - 118px)) !important; max-height: 300px !important; }
.chat-message-avatar { width: 38px !important; height: 38px !important; flex-basis: 38px; border-radius: 12px !important; font-size: 14px !important; }
.chat-message-line .chat-message-avatar { width: 38px !important; height: 38px !important; flex-basis: 38px !important; border-radius: 12px !important; font-size: 14px !important; }
.chat-conversation { background-position: center; background-size: cover; background-repeat: no-repeat; }
.chat-wallpaper-settings { display: grid; gap: 10px; }.chat-wallpaper-settings h3 { font-size: 14px; }.chat-wallpaper-preview { width: 100%; height: 112px; border: 1px solid rgba(0,0,0,.1); border-radius: 14px; background: #f0f0ee center/cover no-repeat; }.chat-wallpaper-url { width: 100%; height: 38px; padding: 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; outline: 0; background: #fff; color: #222; font: inherit; font-size: 11px; }.chat-wallpaper-actions { display: flex; flex-wrap: nowrap; align-items: center; justify-content: flex-start; gap: 8px; overflow-x: auto; }.chat-wallpaper-actions > * { flex: 1 1 0; min-width: 0; }.chat-wallpaper-actions button { min-height: 32px; padding: 0 8px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; background: #fff; color: #666; font: inherit; font-size: 11px; cursor: pointer; white-space: nowrap; }
.chat-emoji-panel { background: #fff !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
.chat-emoji-item > button:first-child { aspect-ratio: 1 / 1; align-content: center; justify-items: center; border-radius: 14px; background: #f7f7f5; }
.chat-emoji-item img { width: 70px; height: 70px; max-width: 100%; max-height: 100%; border-radius: 11px; object-fit: cover; }
.chat-message-editbar { display:flex; align-items:center; gap:6px; box-sizing:border-box; width:100%; min-height:44px; padding:7px 14px; border-bottom:1px solid rgba(0,0,0,.08); background:#fff; color:#777; font-size:11px; }
.chat-message-editbar > span { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.chat-message-editbar button { flex:0 0 auto; min-width:46px; min-height:30px; padding:0 9px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:#f5f5f3; color:#555; font:inherit; font-size:10px; cursor:pointer; }
.chat-message-editbar button:disabled { cursor:default; opacity:.35; }
.chat-message-editbar button:last-child { background:#222; color:#fff; }
.chat-message.is-selected .chat-bubble { outline:2px solid #777; outline-offset:3px; box-shadow:0 0 0 5px rgba(0,0,0,.08),0 8px 20px rgba(0,0,0,.12); transform:translateY(-1px); }
.chat-message.is-selected .chat-message-avatar { outline:2px solid #777; outline-offset:2px; filter:saturate(.65); }
.chat-recalled { color:#999; font-size:11px; font-style:italic; }
.chat-message-editor-backdrop { position:fixed; inset:0; z-index:119; background:rgba(0,0,0,.28); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.chat-message-editor-card { position:fixed; top:50%; left:50%; z-index:120; box-sizing:border-box; width:min(360px,calc(100vw - 36px)); max-height:calc(100dvh - 36px); overflow-y:auto; transform:translate(-50%,-50%); padding:18px; border:1px solid rgba(255,255,255,.8); border-radius:20px; background:#fff; box-shadow:0 24px 70px rgba(0,0,0,.24); }
.chat-message-editor-card header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.chat-message-editor-card h2 { font-size:17px; }
.chat-message-editor-card header button { flex:0 0 auto; width:28px; height:28px; border:0; border-radius:50%; background:#f1f1ef; color:#555; font-size:18px; cursor:pointer; }
.chat-message-format-editor { display:grid; gap:6px; margin-top:14px; color:#777; font-size:11px; }
.chat-message-format-editor > span { font-weight:650; }
.chat-message-format-editor select { width:100%; min-height:36px; padding:0 10px; border:1px solid rgba(0,0,0,.12); border-radius:10px; outline:0; background:#f8f8f6; color:#333; font:inherit; }
.chat-message-format-editor small { color:#aaa; font-size:10px; line-height:1.45; }
.chat-message-editor-quote { display:grid; gap:3px; margin-top:10px; padding:8px 10px; border-left:2px solid #888; border-radius:8px; background:#f3f3f1; color:#666; font-size:10px; line-height:1.4; }
.chat-message-editor-quote span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.chat-message-editor-card textarea { width:100%; min-height:120px; margin-top:14px; padding:11px; border:1px solid rgba(0,0,0,.12); border-radius:11px; outline:0; resize:vertical; font:inherit; font-size:12px; line-height:1.6; }
.chat-message-editor-card footer { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
.chat-message-editor-card footer button { min-width:60px; min-height:34px; border:0; border-radius:9px; background:#eee; color:#555; font:inherit; font-size:11px; cursor:pointer; }
.chat-message-editor-card footer button:last-child { background:#222; color:#fff; }
@media (max-width:380px) {
  .chat-message-editbar { gap:4px; padding-right:10px; padding-left:10px; }
  .chat-message-editbar button { min-width:42px; padding:0 7px; font-size:9px; }
}
@media not all {
  .chat-message-editbar { border-color:rgba(255,255,255,.12); background:#242424; color:#bbb; }
  .chat-message-editbar button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.1); color:#ddd; }
  .chat-message-editbar button:last-child { background:#eee; color:#111; }
  .chat-message-editor-card { border-color:rgba(255,255,255,.14); background:#2a2a2a; color:#eee; }
  .chat-message-editor-card header button { background:rgba(255,255,255,.1); color:#ddd; }
  .chat-message-format-editor, .chat-message-translation-editor { color:#bbb; }
  .chat-message-format-editor select, .chat-message-editor-card textarea { border-color:rgba(255,255,255,.16); background:rgba(0,0,0,.2); color:#eee; }
  .chat-message-format-editor small, .chat-message-editor-quote { color:#aaa; }
  .chat-message-editor-quote { background:rgba(255,255,255,.08); }
  .chat-message-editor-card footer button { background:rgba(255,255,255,.1); color:#ddd; }
  .chat-message-editor-card footer button:last-child { background:#eee; color:#111; }
}
.chat-message-translation-editor { display:grid; gap:6px; margin-top:12px; color:#777; font-size:11px; }.chat-message-translation-editor span { font-weight:650; }.chat-message-translation-editor textarea { margin-top:0; min-height:90px; }
.chat-message-translation-editor[hidden] { display:none !important; }
.chat-bubble-preview { display: grid; gap: 8px; margin: 12px 0 16px; padding: 12px; border: 1px solid rgba(0,0,0,.08); border-radius: 14px; background: rgba(245,245,243,.72); }.chat-bubble-preview > span { color: #999; font-size: 10px; letter-spacing: .08em; }.chat-preview-row { display: flex; }.chat-preview-row.is-user { justify-content: flex-end; }.chat-preview-bubble { max-width: 82%; padding: 8px 11px; border: 1px solid rgba(0,0,0,.1); border-radius: 13px; font-size: 11px; line-height: 1.45; }
.chat-bubble-preview-panel { margin-bottom: 17px; padding: 12px; border: 1px solid rgba(0,0,0,.08); border-radius: 16px; background: rgba(255,255,255,.56); }.chat-bubble-preview-panel .chat-bubble-preview { margin: 0; border: 0; background: transparent; }.chat-bubble-actions { display: flex; gap: 7px; margin-top: 10px; }.chat-bubble-actions button { flex: 1 1 0; min-height: 34px; padding: 0 8px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; background: #fff; color: #555; font: inherit; font-size: 11px; cursor: pointer; }.chat-bubble-actions button.is-primary { border-color: #222; background: #222; color: #fff; }
@media not all { .chat-user-wallet { border-color: rgba(255,255,255,.12); background: #222; color: #fff; }.chat-user-wallet > div:first-child > span { color: #aaa; }.chat-user-wallet h3 { color: #ddd; }.chat-wallet-actions button { border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.1); color: #eee; }.chat-wallet-records { border-color: rgba(255,255,255,.14); }.chat-wallet-records div { color: #bbb; }.chat-wallet-records b.is-in { color: #eee; }.chat-wallet-records b.is-out { color: #aaa; }.chat-user-home-actions button { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); color: #ddd; } }
@media not all { .chat-bubble-preview-panel { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.06); }.chat-bubble-actions button { border-color: rgba(255,255,255,.18); background: rgba(255,255,255,.08); color: #ddd; }.chat-bubble-actions button.is-primary { border-color: #eee; background: #eee; color: #111; } }
@media all {
  .beauty-sheet, .worldbook-app, .worldbook-page, .worldbook-books, .worldbook-entries, .worldbook-entries > .worldbook-section-head, .worldbook-analysis-page, .chat-app, .chat-settings, .settings-app, .chat-user-home-page { background-color: #f1f1f3; }
  .beauty-sheet, .chat-header, .chat-compose-wrap, .chat-tools, .chat-emoji-panel, .settings-header { background-color: rgba(247,247,248,.9); }
  .beauty-sheet { background-color: #f5f5f3; }
  .beauty-head, .beauty-footer { background-color: rgba(248,248,246,.9); }
  .beauty-wallpaper-preview { background-color: #f0f0ee; }
  .beauty-app-preview { background-color: #f1f1ef; }
  .beauty-file-label, .beauty-cancel { background: rgba(255,255,255,.62); }
  .beauty-transfer, .beauty-wallpaper-box, .beauty-app-row, .worldbook-book, .worldbook-entry, .worldbook-analysis, .chat-contact-card, .chat-profile-card, .chat-moment, .chat-launch-contact, .settings-section, .chat-settings-page section, .chat-settings-row, .world-editor-sheet, .chat-editor-sheet, .chat-thought-card, .chat-wallet-modal > section, .chat-image-choice-card, .chat-image-description-card, .chat-transfer-card { background-color: rgba(255,255,255,.86); }
  .beauty-input, .world-editor-field input, .world-editor-field textarea, .chat-editor-grid input, .chat-editor-grid select, .chat-editor-wide textarea, .chat-compose input, .settings-api-form input, .settings-assignment-item select, .settings-profile-bar select, .chat-avatar-url { background-color: #fff; }
  .beauty-wallpaper-box, .beauty-app-row, .worldbook-book, .worldbook-entry, .chat-contact-card, .chat-profile-card, .chat-moment, .settings-section, .chat-settings-page section, .chat-settings-row { border-color: rgba(60,60,67,.16); }
}
.chat-message-line { display: flex; align-items: flex-start; gap: 8px; max-width: 100%; }.chat-message.is-user .chat-message-line { flex-direction: row-reverse; }.chat-message-avatar { width: 30px !important; height: 30px !important; flex: 0 0 30px; border-radius: 10px !important; font-size: 12px !important; }.chat-message .chat-bubble { background: var(--chat-character-bubble, #fff); color: #111; }.chat-message.is-user .chat-bubble { background: var(--chat-user-bubble, #222); color: #fff; }.chat-message .chat-bubble.image img { width: auto; height: auto; max-width: none; max-height: none; object-fit: contain; border-radius: 10px; }.chat-message .chat-bubble.image { padding: 5px; background: transparent; border: 0; }.chat-message.is-user .chat-bubble.image { background: transparent; }.chat-message.is-user > small { text-align: right; }.chat-message.is-character > small { text-align: left; }.chat-conversation > .chat-person > [data-chat-bind], .chat-settings-row[data-chat-edit-current] { display: none; }
.chat-display-settings, .chat-color-settings { display: grid; gap: 13px; }.chat-setting-toggle { display: flex; align-items: center; justify-content: space-between; gap: 14px; color: #333; font-size: 12px; }.chat-setting-toggle span { display: grid; gap: 4px; }.chat-setting-toggle small { color: #999; font-size: 10px; }.chat-setting-toggle input { width: 18px; height: 18px; accent-color: #222; }.chat-color-settings h3 { font-size: 14px; }.chat-color-settings label { display: grid; gap: 6px; color: #777; font-size: 11px; }.chat-color-control { display: flex; gap: 7px; }.chat-color-control input[type="text"] { min-width: 0; flex: 1; height: 37px; padding: 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; outline: 0; background: #fff; color: #222; font: inherit; font-size: 11px; }.chat-color-control input[type="color"] { width: 42px; height: 37px; padding: 3px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; background: #fff; cursor: pointer; }.chat-color-settings > small { color: #999; font-size: 10px; line-height: 1.5; }
.chat-message-line { align-items: flex-start; }.chat-message .chat-bubble.image img { width: auto; height: auto; max-width: none; max-height: none; }
.chat-conversation > .chat-profile-picker { display: none; }
.chat-message-line { display: flex; align-items: flex-end; gap: 8px; max-width: 100%; }.chat-message.is-user .chat-message-line { flex-direction: row-reverse; }.chat-message-avatar { width: 30px !important; height: 30px !important; flex: 0 0 30px; border-radius: 10px !important; font-size: 12px !important; }.chat-message .chat-bubble { background: var(--chat-character-bubble, #fff); color: #111; }.chat-message.is-user .chat-bubble { background: var(--chat-user-bubble, #222); color: #fff; }.chat-message .chat-bubble.image img { width: 118px; height: 118px; max-width: 118px; max-height: 118px; object-fit: contain; border-radius: 10px; }.chat-message .chat-bubble.image { padding: 5px; background: transparent; border: 0; }.chat-message.is-user .chat-bubble.image { background: transparent; }.chat-message.is-user > small { text-align: right; }.chat-message.is-character > small { text-align: left; }
.chat-message-line { align-items: center !important; }.chat-message-line .chat-message-avatar { align-self: flex-start; }.chat-message-line > small { display: block; flex: 0 0 auto; align-self: flex-end; margin: 0 0 1px; white-space: nowrap; }
.chat-display-settings, .chat-color-settings { display: grid; gap: 13px; }.chat-setting-toggle { display: flex; align-items: center; justify-content: space-between; gap: 14px; color: #333; font-size: 12px; }.chat-setting-toggle span { display: grid; gap: 4px; }.chat-setting-toggle small { color: #999; font-size: 10px; }.chat-setting-toggle input { width: 18px; height: 18px; accent-color: #222; }.chat-color-settings h3 { font-size: 14px; }.chat-color-settings label { display: grid; gap: 6px; color: #777; font-size: 11px; }.chat-color-control { display: flex; gap: 7px; }.chat-color-control input[type="text"] { min-width: 0; flex: 1; height: 37px; padding: 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; outline: 0; background: #fff; color: #222; font: inherit; font-size: 11px; }.chat-color-control input[type="color"] { width: 42px; height: 37px; padding: 3px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; background: #fff; cursor: pointer; }.chat-color-settings > small { color: #999; font-size: 10px; line-height: 1.5; }
.chat-color-settings.is-collapsed > :not(h3) { display: none; }.chat-color-settings > h3 { display: flex; align-items: center; justify-content: space-between; cursor: pointer; }.chat-color-settings > h3::after { color: #999; content: '⌄'; font-size: 16px; font-weight: 400; transition: transform .2s ease; }.chat-color-settings.is-open > h3::after { transform: rotate(180deg); }.chat-settings-page .chat-profile-picker { position: relative; top: auto; right: auto; left: auto; z-index: 2; max-height: 260px; margin: -1px 0 17px; overflow-y: auto; border-radius: 16px; box-shadow: 0 8px 24px rgba(0,0,0,.1); animation: chat-profile-picker-slide .2s ease both; }.chat-settings-page .chat-profile-picker > button { background: rgba(255,255,255,.78); }.chat-settings-page .chat-profile-picker + .chat-display-settings { margin-top: 0; } @keyframes chat-profile-picker-slide { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
.chat-css-editor-head i,
.chat-css-editor-head i::after,
.chat-color-settings > h3::after { color: transparent !important; content: ''; font-size: 0 !important; }
.chat-css-editor-head i,
.chat-color-settings > h3::after { display: block; width: 8px; height: 8px; flex: 0 0 8px; border-right: 1.5px solid #999; border-bottom: 1.5px solid #999; transform: rotate(45deg) translate(-2px, -2px); transition: transform .2s ease; }
.chat-css-editor-head i::after { display: none; }
.chat-css-editor.is-open .chat-css-editor-head i,
.chat-color-settings.is-open > h3::after { transform: rotate(225deg) translate(-2px, -2px); }
.chat-css-actions { align-items: center; }
.chat-css-actions select[data-chat-css-preset] { min-width: 104px; height: 32px; padding: 0 26px 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; outline: 0; background: #f1f1ef; color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.chat-css-actions { justify-content: flex-start; flex-wrap: nowrap; width: 100%; min-width: 0; gap: clamp(3px, 1.5vw, 7px); }
.chat-css-actions select[data-chat-css-preset] { flex: 1 1 104px; min-width: 0; margin-right: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-css-actions > button { flex: 0 1 auto; min-width: 0; max-width: 100%; min-height: 32px; padding-inline: clamp(6px, 2.5vw, 11px); white-space: nowrap; word-break: keep-all; overflow-wrap: normal; writing-mode: horizontal-tb !important; text-orientation: mixed !important; text-align: center; line-height: 1; font-size: clamp(9px, 2.8vw, 11px); }
.chat-css-actions.is-compact > select[data-chat-css-preset] { flex-basis: 82px; padding-left: 7px; padding-right: 20px; }
.chat-css-actions.is-compact > button { flex: 1 1 0; padding-inline: 4px; }
.chat-css-actions.is-ultra-compact { gap: 3px; }
.chat-css-actions.is-ultra-compact > select[data-chat-css-preset] { flex: 1.15 1 0; padding-left: 5px; padding-right: 15px; font-size: 9px; }
.chat-css-actions.is-ultra-compact > button { font-size: 9px; padding-inline: 2px; }
.chat-css-actions > button[data-chat-css-import], .chat-css-actions > button[data-chat-css-export], .chat-css-actions > button[data-chat-css-save], .chat-css-actions > button[data-chat-css-add] { writing-mode: horizontal-tb !important; white-space: nowrap !important; }
.chat-css-actions { justify-content: flex-end !important; flex-wrap: wrap !important; width: 100%; }
.chat-css-actions > select[data-chat-css-preset] { flex: 0 1 150px !important; }
.chat-css-actions > button { flex: 0 0 auto !important; }
.chat-css-preset-form { display: inline-flex; align-items: center; gap: 6px; margin-right: auto; }
.chat-css-preset-form input { width: 108px; height: 32px; padding: 0 9px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; outline: 0; background: #fff; color: #333; font: inherit; font-size: 11px; }
.chat-css-preset-form button { min-height: 32px; padding: 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 9px; background: #f1f1ef; color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.chat-css-preset-form button[data-chat-css-preset-save] { background: #222; color: #fff; }
.chat-voice-modal, [data-chat-voice-modal] { position: fixed; inset: 0; z-index: 70; display: grid; place-items: center; padding: 22px; }
.chat-voice-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.25); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.chat-voice-card { position: relative; width: min(100%, 340px); padding: 20px; border: 1px solid rgba(255,255,255,.82); border-radius: 20px; background: #fff; box-shadow: 0 22px 65px rgba(0,0,0,.24); }
.chat-voice-card header { display: flex; align-items: center; justify-content: space-between; }.chat-voice-card header b { color: #222; font-size: 16px; }.chat-voice-card header button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: #f0f0ee; color: #555; font-size: 18px; cursor: pointer; }.chat-voice-card label { display: grid; gap: 7px; margin-top: 16px; color: #777; font-size: 11px; }.chat-voice-card textarea, .chat-voice-card input { width: 100%; padding: 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 12px; }.chat-voice-card textarea { min-height: 92px; resize: vertical; line-height: 1.55; }.chat-voice-card input { height: 39px; }.chat-voice-card > p { margin-top: 10px; color: #999; font-size: 10px; }.chat-voice-card footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }.chat-voice-card footer button { min-width: 70px; min-height: 36px; border: 0; border-radius: 10px; background: #eee; color: #555; font: inherit; font-size: 11px; cursor: pointer; }.chat-voice-card footer button:last-child { background: #222; color: #fff; }
.chat-voice-wrap { display: grid; gap: 6px; min-width: 0; }.chat-voice-bubble { display: inline-flex; align-items: center; gap: 9px; min-width: 104px; min-height: 38px; padding: 8px 12px; border: 0; border-radius: 13px; background: #fff; color: #222; font: inherit; cursor: pointer; }.chat-message.is-user .chat-voice-bubble { background: #222; color: #fff; }.chat-voice-bubble b { font-size: 11px; font-weight: 500; }.chat-voice-wave { display: inline-flex; align-items: center; gap: 2px; height: 20px; }.chat-voice-wave i { display: block; width: 2px; height: 8px; border-radius: 2px; background: currentColor; }.chat-voice-wave i:nth-child(2) { height: 13px; }.chat-voice-wave i:nth-child(3) { height: 18px; }.chat-voice-wave i:nth-child(4) { height: 12px; }.chat-voice-wave i:nth-child(5) { height: 7px; }.chat-voice-text { max-width: 210px; padding: 7px 10px; border-radius: 10px; background: rgba(0,0,0,.06); color: #555; font-size: 11px; line-height: 1.5; }.chat-message.is-user .chat-voice-text { background: rgba(0,0,0,.08); color: #eee; }
.chat-tools button { gap: 1px; }
.chat-tools .chat-tool-icon, .chat-tools .chat-tool-text-icon { margin-bottom: -1px; }
.chat-voice-bubble { min-height: 32px; padding: 5px 10px; border-radius: 11px; }
.chat-voice-wave { height: 17px; }
.chat-voice-bubble { min-height: 26px; padding: 3px 9px; border-radius: 9px; }
.chat-voice-wave { height: 14px; gap: 1.5px; }
.chat-voice-wave i { width: 1.5px; }
.chat-voice-wave i:nth-child(2) { height: 10px; }.chat-voice-wave i:nth-child(3) { height: 14px; }.chat-voice-wave i:nth-child(4) { height: 9px; }
.chat-video-call-modal { position: fixed; inset: 0; z-index: 72; display: flex; flex-direction: column; background: #111; color: #fff; }
.chat-video-call-head { display: flex; align-items: center; justify-content: space-between; padding: max(22px, env(safe-area-inset-top)) 18px 14px; }.chat-video-call-head b { font-size: 16px; font-weight: 500; }.chat-video-call-head button { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(255,255,255,.14); color: #fff; font-size: 20px; cursor: pointer; }
.chat-video-call-stage { display: grid; flex: 1; place-items: center; min-height: 0; padding: 20px; background: radial-gradient(circle at 50% 32%, #454545, #151515 58%); }.chat-video-call-avatar { display: grid; place-items: center; width: 94px; height: 94px; overflow: hidden; border-radius: 30px; background: #555 center/cover no-repeat; color: #ddd; font-size: 34px; }.chat-video-call-status { margin-top: 16px; color: #bbb; font-size: 12px; }.chat-video-call-log { align-self: stretch; max-height: 34vh; overflow-y: auto; padding: 12px; }.chat-video-call-log p { margin: 6px 0; color: #ddd; font-size: 12px; line-height: 1.5; }.chat-video-call-log p.is-user { color: #a9d5ff; text-align: right; }.chat-video-call-bottom { display: flex; gap: 8px; padding: 12px 16px max(16px, env(safe-area-inset-bottom)); background: #171717; }.chat-video-call-bottom input { min-width: 0; flex: 1; height: 40px; padding: 0 11px; border: 1px solid rgba(255,255,255,.15); border-radius: 12px; outline: 0; background: #292929; color: #fff; font: inherit; font-size: 12px; }.chat-video-call-bottom button { min-width: 50px; border: 0; border-radius: 12px; background: #eee; color: #111; font: inherit; font-size: 11px; cursor: pointer; }.chat-video-call-bottom button[data-video-reply] { background: #555; color: #fff; }.chat-video-call-actions { display: flex; gap: 9px; margin-top: 20px; }.chat-video-call-actions button { min-width: 88px; min-height: 38px; border: 0; border-radius: 20px; background: #eee; color: #111; font: inherit; font-size: 12px; cursor: pointer; }.chat-video-call-actions button:first-child { background: #b64242; color: #fff; }
.chat-css-name-modal { position: fixed; inset: 0; z-index: 80; display: grid; place-items: center; padding: 22px; }
.chat-css-name-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.25); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.chat-css-name-card { position: relative; width: min(100%, 330px); padding: 19px; border: 1px solid rgba(255,255,255,.8); border-radius: 19px; background: #fff; box-shadow: 0 20px 60px rgba(0,0,0,.22); }
.chat-css-name-card header { display: flex; align-items: center; justify-content: space-between; }.chat-css-name-card header b { color: #222; font-size: 16px; }.chat-css-name-card header button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: #f0f0ee; color: #555; font-size: 18px; cursor: pointer; }.chat-css-name-card p { margin-top: 10px; color: #888; font-size: 11px; line-height: 1.5; }.chat-css-name-card input { width: 100%; height: 40px; margin-top: 14px; padding: 0 11px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 12px; }.chat-css-name-card footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }.chat-css-name-card footer button { min-width: 62px; min-height: 34px; border: 0; border-radius: 9px; background: #eee; color: #555; font: inherit; font-size: 11px; cursor: pointer; }.chat-css-name-card footer button:last-child { background: #222; color: #fff; }
.edit-sheet { display: flex; flex-direction: column; overflow: hidden; padding: 0; }
.edit-sheet-header { flex: 0 0 auto; margin: 0; padding: 20px; background: inherit; }
.edit-form { min-height: 0; flex: 1 1 auto; overflow-y: auto; padding: 0 20px 4px; overscroll-behavior: contain; }
.edit-actions { flex: 0 0 auto; margin: 0; padding: 14px 20px 20px; background: inherit; }
.chat-call-rejected { display: inline-flex; align-items: center; gap: 7px; color: #777; font-size: 11px; }.chat-call-rejected i { position: relative; display: inline-block; width: 17px; height: 17px; border: 1.6px solid currentColor; border-radius: 50%; }.chat-call-rejected i::before { position: absolute; top: 7px; left: 2px; width: 11px; height: 1.5px; transform: rotate(-45deg); background: currentColor; content: ''; }.chat-call-rejected i::after { position: absolute; top: 3px; left: 7px; width: 3px; height: 7px; border-left: 1.5px solid currentColor; border-radius: 3px; content: ''; }
.chat-call-rejected svg { display: block; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.chat-video-call-stage > div { display: flex; width: 100%; flex-direction: column; align-items: center; transform: translateY(0); text-align: center; }
.chat-video-call-stage .chat-video-call-avatar { flex: 0 0 94px !important; width: 94px !important; min-width: 94px !important; height: 94px !important; min-height: 94px !important; aspect-ratio: 1 / 1; }
.chat-video-call-head small { display: block; margin-top: 4px; color: #aaa; font-size: 10px; }
.chat-video-call-live-stage { position: relative; }
.chat-video-call-online { position: absolute; top: 18px; right: 18px; padding: 4px 8px; border-radius: 999px; background: rgba(211,62,62,.8); color: #fff; font-size: 9px; letter-spacing: .08em; }
.chat-video-call-context { padding: 7px 14px; border-top: 1px solid rgba(255,255,255,.08); border-bottom: 1px solid rgba(255,255,255,.08); color: #999; font-size: 10px; text-align: center; }
.chat-video-call-ending-time { display: block; margin-top: 8px; color: #ddd; font-size: 16px; font-weight: 500; letter-spacing: .08em; }
.chat-video-call-timer { display: block; margin-top: 8px; color: #fff; font-size: 22px; font-weight: 500; letter-spacing: .08em; }
.chat-video-call-stage .chat-video-call-hangup { display: block; min-width: 112px; min-height: 38px; margin: 18px auto 0; border: 0; border-radius: 20px; background: #b64242; color: #fff; font: inherit; font-size: 12px; cursor: pointer; }
.chat-video-call-log { min-height: 0; overscroll-behavior: contain; touch-action: pan-y; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.chat-video-call-voice { display: inline-flex; align-items: center; margin-left: 4px; padding: 5px 9px; border-radius: 999px; background: rgba(255,255,255,.12); color: #eee; font-size: 11px; }
.chat-video-call-voice-text { display: block; margin-top: 5px; color: #aaa; font-size: 10px; line-height: 1.5; }
.chat-video-call-empty { color: #888 !important; text-align: center !important; }
.chat-video-record-message { width: 100%; max-width: none; margin: 5px 0 13px; }
.chat-video-record-bubble { display: flex; align-items: center; gap: 10px; width: min(310px, 88%); margin: 0 auto; padding: 11px 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 14px; background: rgba(255,255,255,.7); color: #333; text-align: left; box-shadow: 0 7px 18px rgba(0,0,0,.08); cursor: pointer; }
.chat-video-record-icon { display: grid; flex: 0 0 32px; place-items: center; width: 32px; height: 32px; border-radius: 10px; background: #222; color: #fff; font-size: 14px; }
.chat-video-record-bubble > span:nth-child(2) { display: grid; flex: 1; gap: 4px; min-width: 0; }
.chat-video-record-bubble b { font-size: 12px; }
.chat-video-record-bubble small { color: #999; font-size: 10px; }
.chat-video-record-bubble i { color: #999; font-size: 20px; font-style: normal; }
.chat-video-record-message.is-selected .chat-video-record-bubble { outline: 2px solid #222; outline-offset: 3px; }
.chat-video-incoming-bubble { display: inline-flex; align-items: center; gap: 8px; }
.chat-video-incoming-bubble svg { width: 18px; height: 18px; flex: 0 0 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.chat-video-call-record-modal { background: #151515; }
.chat-video-record-detail { flex: 1; overflow-y: auto; padding: 18px 16px 30px; }
.chat-video-call-record-modal { overflow: hidden; }
.chat-video-call-record-modal .chat-video-record-detail { display: block; flex: 1 1 auto; width: 100%; height: auto; min-height: 0; max-height: none; padding: 0; overflow: hidden !important; }
.chat-video-record-detail-scroll { display: block; width: 100%; height: 100%; max-height: 100%; box-sizing: border-box; overflow-y: auto !important; padding: 18px 16px 30px; overscroll-behavior: contain; touch-action: none; -webkit-overflow-scrolling: touch; scrollbar-width: thin; cursor: grab; }
.chat-video-record-detail-scroll.is-dragging { cursor: grabbing; user-select: none; -webkit-user-select: none; }
.chat-video-record-detail-scroll > section { margin-bottom: 14px; padding: 14px; border: 1px solid rgba(255,255,255,.1); border-radius: 15px; background: rgba(255,255,255,.06); }
.chat-video-record-detail-scroll > section > span { display: block; margin-bottom: 8px; color: #aaa; font-size: 10px; letter-spacing: .08em; }
.chat-video-record-detail-scroll > section > p { color: #eee; font-size: 13px; line-height: 1.7; white-space: pre-wrap; }
.chat-video-record-detail .chat-video-call-log { max-height: none; overflow: visible; padding: 0; }
.chat-video-call-modal[data-video-status="rejected"] .chat-video-call-head { position: absolute; inset: 0 0 auto; z-index: 2; justify-content: center; padding-top: max(22px, env(safe-area-inset-top)); }.chat-video-call-modal[data-video-status="rejected"] .chat-video-call-head b { display: none; }.chat-video-call-modal[data-video-status="rejected"] .chat-video-call-head button { display: none; }.chat-video-call-modal[data-video-status="rejected"] .chat-video-call-actions { justify-content: center; }.chat-video-call-modal[data-video-status="rejected"] .chat-video-call-stage > div { transform: translateY(-20vh); }
.chat-tools button { justify-items: center; align-content: center; gap: 3px; line-height: 1; }
.chat-tools button span { margin-top: -2px; text-align: center; }
.chat-location-modal, [data-chat-location-modal] { position: fixed; inset: 0; z-index: 74; display: grid; place-items: center; padding: 22px; }
.chat-location-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.25); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.chat-location-card { position: relative; width: min(100%, 340px); padding: 20px; border: 1px solid rgba(255,255,255,.82); border-radius: 20px; background: #fff; box-shadow: 0 22px 65px rgba(0,0,0,.24); }
.chat-location-card header { display: flex; align-items: center; justify-content: space-between; }.chat-location-card header b { color: #222; font-size: 16px; }.chat-location-card header button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: #f0f0ee; color: #555; font-size: 18px; cursor: pointer; }
.chat-location-card label { display: grid; gap: 7px; margin-top: 15px; color: #777; font-size: 11px; }.chat-location-card input { width: 100%; height: 39px; padding: 0 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 12px; }.chat-location-card input:focus { border-color: #222; }
.chat-location-card footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }.chat-location-card footer button { min-height: 36px; padding: 0 13px; border: 0; border-radius: 10px; background: #eee; color: #555; font: inherit; font-size: 11px; cursor: pointer; }.chat-location-card footer button:last-child { background: #222; color: #fff; }
.chat-location-message { display: flex; align-items: center; gap: 10px; min-width: 190px; }.chat-location-message > svg { flex: 0 0 auto; width: 28px; height: 28px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }.chat-location-message b { display: block; font-size: 12px; }.chat-location-message p { margin: 3px 0 0; color: #777; font-size: 10px; }.chat-location-message small { display: block; margin-top: 4px; color: #999; font-size: 9px; }
.chat-message .chat-bubble.location,
.chat-message.is-user .chat-bubble.location { width: 220px; min-width: 220px; padding: 13px 14px; border: 1px solid rgba(0,0,0,.1); border-radius: 15px !important; background: #f7f7f5 !important; color: #171717 !important; box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.chat-message .chat-bubble.location .chat-location-message { color: #171717; }
.chat-message .chat-bubble.location .chat-location-message p { color: #555; }
.chat-message .chat-bubble.location .chat-location-message small { color: #888; }
.chat-location-message { position: relative; min-width: 220px; padding-right: 55px; }
.chat-location-message .chat-location-copy { min-width: 0; }
.chat-location-message .chat-location-distance { position: absolute; top: 50%; right: 0; display: inline-flex; align-items: baseline; justify-content: flex-end; gap: 1px; width: auto; max-width: 54px; transform: translateY(-50%); overflow: hidden; color: #222; font-family: 'Snell Roundhand', 'Bradley Hand', 'Segoe Print', cursive; font-size: 35px; font-weight: 600; letter-spacing: -.07em; line-height: .8; white-space: nowrap; }
.chat-location-message .chat-location-distance b { max-width: 44px; overflow: hidden; font: inherit; line-height: .8; text-overflow: ellipsis; }
.chat-location-message .chat-location-distance small { color: #777; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif; font-size: 9px; font-weight: 500; letter-spacing: 0; line-height: 1; }
.chat-message .chat-bubble.location, .chat-message.is-user .chat-bubble.location { box-sizing: border-box; overflow: hidden; }
.chat-location-message { box-sizing: border-box; width: 100%; min-width: 0; padding-right: 72px; overflow: hidden; }
.chat-location-message .chat-location-copy { min-width: 0; max-width: calc(100% - 2px); overflow: hidden; }
.chat-location-message .chat-location-distance { right: 0; width: 66px; max-width: 66px; overflow:visible; font-size:27px; letter-spacing:-.035em; }
.chat-location-message .chat-location-distance b { max-width:none; overflow:visible; font-family:inherit; font-variant-numeric:normal; letter-spacing:inherit; text-overflow:clip; }
.chat-location-message .chat-location-distance.is-decimal { font-size:24px; }
.chat-location-message .chat-location-distance.is-long-number { font-size:20px; }
.chat-location-message .chat-location-distance small { flex: 0 0 auto; }
.chat-location-message .chat-location-distance.is-text { align-items:center; justify-content:flex-end; font-family:-apple-system,BlinkMacSystemFont,'Helvetica Neue',sans-serif; font-size:10px; font-weight:600; letter-spacing:0; line-height:1.2; }
.chat-tap-settings { margin-top: 14px; padding: 15px; border: 1px solid rgba(0,0,0,.08); border-radius: 15px; background: rgba(245,245,243,.72); }
.chat-tap-settings h3 { color: #222; font-size: 14px; font-weight: 600; }.chat-tap-settings p { margin-top: 5px; color: #999; font-size: 10px; line-height: 1.5; }.chat-tap-settings label { display: grid; gap: 7px; margin-top: 13px; color: #777; font-size: 11px; }.chat-tap-settings input { width: 100%; height: 37px; padding: 0 10px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; outline: 0; background: #fff; color: #222; font: inherit; font-size: 12px; }.chat-tap-settings input:focus { border-color: #222; }.chat-tap-settings > small { display: block; margin-top: 10px; color: #aaa; font-size: 10px; }
.chat-tap-settings-head { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 0; border: 0; background: transparent; color: #222; text-align: left; cursor: pointer; }.chat-tap-settings-head span { display: grid; gap: 4px; }.chat-tap-settings-head b { font-size: 14px; font-weight: 600; }.chat-tap-settings-head small { color: #999; font-size: 10px; font-weight: 400; }.chat-tap-settings-head i { color: #888; font-size: 17px; font-style: normal; line-height: 1; }.chat-tap-settings-body { margin-top: 3px; }
.chat-settings-page .chat-settings-row[data-chat-bind]:has(+ .chat-profile-picker) { margin-bottom: 0; border-bottom-color: transparent; border-radius: 14px 14px 0 0; }
.chat-settings-page .chat-settings-row[data-chat-bind] + .chat-profile-picker { margin-top: 0; border-top: 0; border-radius: 0 0 16px 16px; }
.character-message-settings { display: grid; gap: 13px; }
.character-message-settings h3 { margin: 0; color: #222; font-size: 14px; font-weight: 600; }
.character-message-toggle { display: flex; align-items: flex-start; gap: 9px; cursor: pointer; }
.character-message-toggle input, .character-emoji-option input { width: 16px; height: 16px; margin: 1px 0 0; accent-color: #222; }
.character-message-toggle span { display: grid; gap: 4px; }
.character-message-toggle b, .character-emoji-title b { color: #444; font-size: 12px; font-weight: 500; }
.character-message-toggle small, .character-emoji-title small { color: #999; font-size: 10px; line-height: 1.5; }
.character-message-count { display: flex; align-items: center; justify-content: space-between; color: #777; font-size: 11px; }
.character-message-count input { width: 62px; height: 32px; padding: 0 8px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; outline: 0; background: #fff; color: #222; font: inherit; text-align: center; }
.character-message-range { display: flex; align-items: end; gap: 8px; color: #888; font-size: 11px; }
.character-message-range label { display: grid; gap: 5px; color: #777; font-size: 10px; }
.character-message-range input { width: 58px; height: 32px; padding: 0 7px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; outline: 0; background: #fff; color: #222; font: inherit; text-align: center; }
.character-message-range span { padding-bottom: 8px; }
.character-message-range em { padding-bottom: 8px; color: #999; font-size: 10px; font-style: normal; }
.character-message-range button { height: 32px; padding: 0 10px; border: 0; border-radius: 9px; background: #222; color: #fff; font: inherit; font-size: 10px; cursor: pointer; }
.character-emoji-title { display: grid; gap: 4px; margin-top: 3px; }
.character-emoji-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; max-height: 170px; overflow-y: auto; }
.character-emoji-option { display: flex; align-items: center; gap: 7px; min-width: 0; padding: 7px 9px; border: 1px solid rgba(0,0,0,.08); border-radius: 10px; background: rgba(255,255,255,.55); color: #666; font-size: 10px; cursor: pointer; }
.character-emoji-option img { width: 25px; height: 25px; flex: 0 0 25px; border-radius: 6px; object-fit: cover; }
.character-emoji-option span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.character-emoji-empty { color: #aaa; font-size: 10px; line-height: 1.5; }
@media not all { .character-message-settings h3 { color: #eee; }.character-message-toggle b, .character-emoji-title b { color: #ddd; }.character-message-count input, .character-message-range input, .character-emoji-option { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); color: #ddd; }.character-message-count input, .character-message-range input { color: #eee; }.character-message-range button { background: #eee; color: #111; } }
.chat-bind-guide { display: block; margin-top: 4px; color: #9a9a9f; font-size: 10px; line-height: 1.45; }
.chat-settings-page .chat-settings-row[data-chat-bind] + .chat-profile-picker { position: relative; top: auto; right: auto; left: auto; width: 100%; margin: -8px 0 10px; }
.chat-settings-page .chat-settings-row[data-chat-bind]:has(+ .chat-profile-picker) { margin-bottom: 0; border-bottom-color: transparent; border-radius: 12px 12px 0 0; }
.chat-settings-page .chat-settings-row[data-chat-bind] + .chat-profile-picker { margin: 0 0 10px !important; padding-top: 10px; border-top: 0; border-radius: 0 0 12px 12px; background: #fff; box-shadow: none; }
.chat-profile-option { display: flex !important; align-items: center; justify-content: space-between; text-align: left; }
.chat-profile-option > span { display: grid; min-width: 0; gap: 4px; }
.chat-profile-option > span b { overflow: hidden; color: #444; font-size: 12px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.chat-profile-option > em { flex: 0 0 auto; padding: 4px 9px; border: 1px solid rgba(0,0,0,.12); border-radius: 7px; color: #555; font-size: 10px; font-style: normal; }
@media not all { .chat-profile-option > span b { color: #eee; }.chat-profile-option > em { border-color: rgba(255,255,255,.18); color: #ddd; } }
.chat-conversation > .chat-compose-wrap { flex: 0 0 88px; box-sizing: border-box; height: 88px; margin: 0 12px 24px; padding: 10px 18px 4px; border: 1px solid rgba(255,255,255,.68); border-radius: 30px; background: rgba(255,255,255,.22); box-shadow: 0 4px 14px rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.62); -webkit-backdrop-filter: blur(26px) saturate(160%); backdrop-filter: blur(26px) saturate(160%); }
.chat-conversation > .chat-compose-wrap .chat-compose { height: 100%; gap: 5px; }
.chat-conversation > .chat-compose-wrap .chat-compose input { height: 38px; border-radius: 10px; background: rgba(255,255,255,.72); }
.chat-conversation > .chat-compose-wrap .chat-compose input { -webkit-backdrop-filter: blur(18px) saturate(145%); backdrop-filter: blur(18px) saturate(145%); }
.chat-conversation > .chat-compose-wrap .chat-compose button { background: transparent; color: #555; }
.chat-conversation > .chat-compose-wrap .chat-compose .chat-send, .chat-conversation > .chat-compose-wrap .chat-compose .chat-reply { width: 34px; height: 34px; padding: 0; border-radius: 50%; }
@media not all { .chat-conversation > .chat-compose-wrap { border-color: rgba(255,255,255,.16); background: rgba(35,35,35,.52); box-shadow: 0 8px 26px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.12); }.chat-conversation > .chat-compose-wrap .chat-compose input { background: rgba(0,0,0,.22); }.chat-conversation > .chat-compose-wrap .chat-compose button { color: #ddd; } }
.chat-conversation.chat-wallpaper-dark > .chat-compose-wrap { border-color: rgba(255,255,255,.42); background: rgba(15,15,17,.34); box-shadow: 0 5px 18px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.24); }
.chat-conversation.chat-wallpaper-dark > .chat-compose-wrap .chat-compose input { border-color: rgba(255,255,255,.3); background: rgba(255,255,255,.16); color: #fff; }
.chat-conversation.chat-wallpaper-dark > .chat-compose-wrap .chat-compose input::placeholder { color: rgba(255,255,255,.72); }
.chat-conversation.chat-wallpaper-dark > .chat-compose-wrap .chat-compose button { color: #fff; filter: drop-shadow(0 1px 2px rgba(0,0,0,.65)); }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply { width: 38px !important; height: 38px !important; min-height: 38px; padding: 0 !important; }
.chat-message .chat-bubble.recalled-bubble,
.chat-message .chat-bubble:has(.chat-recalled) { background: rgba(255,255,255,.28) !important; background-image: none !important; color: #555 !important; border: 1px solid rgba(255,255,255,.58) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,.55), 0 5px 16px rgba(0,0,0,.08) !important; -webkit-backdrop-filter: blur(18px) saturate(145%) !important; backdrop-filter: blur(18px) saturate(145%) !important; }

/* 生图 API：独立配置、测试预览与生成图片状态。 */
.settings-image-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.settings-image-grid .is-wide { grid-column:1 / -1; }
.settings-image-grid label, .settings-image-prompts label { display:grid; gap:7px; min-width:0; color:#777; font-size:11px; }
.settings-image-grid input, .settings-image-grid select, .settings-image-prompts textarea { width:100%; border:1px solid rgba(0,0,0,.11); border-radius:10px; outline:0; background:rgba(255,255,255,.68); color:#222; font:inherit; font-size:12px; }
.settings-image-grid input, .settings-image-grid select { height:38px; padding:0 11px; }
.settings-image-model-control { display:flex; min-width:0; gap:7px; }
.settings-image-model-control input { min-width:0; flex:1; }
.settings-image-model-control button { min-width:76px; height:38px; padding:0 10px; border:1px solid rgba(0,0,0,.11); border-radius:10px; background:rgba(255,255,255,.58); color:#555; font:inherit; font-size:10px; cursor:pointer; }
.settings-image-model-control button:disabled { opacity:.55; cursor:wait; }
.settings-image-retain { margin-top:12px; padding:12px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:rgba(255,255,255,.32); }
.settings-image-retained-list { display:grid; gap:5px; max-height:220px; margin-top:9px; overflow:auto; }
.settings-image-retained-option { display:flex; align-items:center; gap:9px; min-height:32px; padding:5px 8px; border-radius:8px; background:rgba(255,255,255,.42); color:#444; font-size:11px; overflow-wrap:anywhere; cursor:pointer; }
.settings-image-retained-option input { flex:0 0 auto; width:15px; height:15px; margin:0; accent-color:#222; }
.settings-image-retained-option span { min-width:0; }
.settings-image-prompts { display:grid; gap:10px; }
.settings-image-prompts textarea { min-height:76px; padding:10px 11px; resize:vertical; line-height:1.55; }
.settings-image-block { margin-top:17px; padding-top:16px; border-top:1px solid rgba(0,0,0,.08); }
.settings-image-behavior-note { margin:12px 0 0; padding:11px 12px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:rgba(255,255,255,.38); color:#777; font-size:10px; line-height:1.6; }
.settings-image-auto-grid { display:grid; grid-template-columns:1.25fr .75fr; gap:10px; margin-top:12px; }
.settings-image-auto-card { padding:12px; border:1px solid rgba(0,0,0,.08); border-radius:13px; background:rgba(255,255,255,.38); }
.settings-image-switch { display:flex; align-items:flex-start; gap:9px; color:#333; cursor:pointer; }
.settings-image-switch input { margin-top:2px; accent-color:#222; }
.settings-image-switch span { display:grid; gap:3px; }
.settings-image-switch b { font-size:12px; }
.settings-image-switch small { color:#999; font-size:9px; line-height:1.45; }
.settings-image-auto-card > div { display:flex; flex-wrap:wrap; gap:8px; margin-top:11px; }
.settings-image-auto-card > div label { display:flex; align-items:center; gap:5px; color:#888; font-size:9px; }
.settings-image-auto-card > div input { width:58px; height:30px; padding:0 7px; border:1px solid rgba(0,0,0,.1); border-radius:8px; background:rgba(255,255,255,.64); color:#333; font:inherit; font-size:10px; }
.settings-image-auto-card > div i { color:#aaa; font-size:9px; font-style:normal; }
.settings-image-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:11px; }
.settings-image-actions button { min-height:38px; padding:0 14px; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:rgba(255,255,255,.62); color:#555; font:inherit; font-size:11px; cursor:pointer; }
.settings-image-actions button.is-primary { border-color:#222; background:#222; color:#fff; }
.settings-image-actions button:disabled { opacity:.55; cursor:wait; }
.settings-status[data-state="ready"] { color:#39744c; }
.settings-status[data-state="busy"] { color:#8b7339; }
.settings-status[data-state="error"] { color:#a34d4d; white-space:normal; text-align:right; }
.chat-bubble.image img[data-generated-image-loading="true"], .chat-moment > img[data-generated-image-loading="true"] { min-width:120px; min-height:120px; background:linear-gradient(100deg,#dededb 25%,#efefec 45%,#dededb 65%); background-size:220% 100%; animation:generated-image-loading 1.35s ease infinite; }
.chat-bubble.image.generated-image { position:relative; }
.chat-bubble.image.generated-image::after { position:absolute; right:9px; bottom:8px; padding:3px 6px; border-radius:7px; background:rgba(0,0,0,.48); color:#fff; content:'AI'; font-size:8px; letter-spacing:.08em; }
@keyframes generated-image-loading { to { background-position:-220% 0; } }
@media (max-width:600px) { .settings-image-grid, .settings-image-auto-grid { grid-template-columns:1fr; }.settings-image-grid .is-wide { grid-column:auto; } }
@media not all {
  .settings-image-grid input, .settings-image-grid select, .settings-image-prompts textarea, .settings-image-auto-card > div input { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.22); color:#eee; }
  .settings-image-model-control button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#ddd; }
  .settings-image-retain { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.05); }
  .settings-image-retained-option { background:rgba(255,255,255,.06); color:#ddd; }
  .settings-image-retained-option input { accent-color:#eee; }
  .settings-image-block { border-color:rgba(255,255,255,.12); }
  .settings-image-behavior-note { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.06); color:#aaa; }
  .settings-image-auto-card { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.06); }
  .settings-image-switch { color:#eee; }
  .settings-image-actions button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#ddd; }
  .settings-image-actions button.is-primary { border-color:#eee; background:#eee; color:#111; }
}
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble.recalled-bubble,
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble:has(.chat-recalled) { background: rgba(255,255,255,.2) !important; color: #fff !important; border-color: rgba(255,255,255,.5) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,.42), 0 5px 16px rgba(0,0,0,.18) !important; }
.chat-interaction-settings { display: grid; gap: 8px; }
.chat-interaction-title { margin: 0 0 2px; color: #777; font-size: 11px; font-weight: 500; letter-spacing: .04em; }
.chat-interaction-settings > .chat-tap-settings, .chat-interaction-settings > .character-setting-item { margin: 0; padding: 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 14px; background: #fff; }
.chat-interaction-settings.chat-appearance-settings > .chat-bubble-preview-panel,
.chat-interaction-settings.chat-appearance-settings > .chat-css-editor,
.chat-interaction-settings.chat-appearance-settings > .chat-color-settings { margin: 0; padding: 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 14px; background: #fff; }
.character-setting-head { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 0; border: 0; background: transparent; color: #222; text-align: left; cursor: pointer; }
.character-setting-head span { display: grid; gap: 4px; }
.character-setting-head b { font-size: 13px; font-weight: 600; }
.character-setting-head small { color: #999; font-size: 10px; }
.character-setting-head i { color: #888; font-size: 17px; font-style: normal; line-height: 1; }
.character-setting-body { display: grid; gap: 12px; margin-top: 13px; padding-top: 12px; border-top: 1px solid rgba(0,0,0,.07); }
.character-setting-body .character-emoji-list { max-height: 145px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
@media not all { .chat-interaction-title { color: #aaa; }.chat-interaction-settings > .chat-tap-settings, .chat-interaction-settings > .character-setting-item, .chat-interaction-settings.chat-appearance-settings > .chat-bubble-preview-panel, .chat-interaction-settings.chat-appearance-settings > .chat-css-editor, .chat-interaction-settings.chat-appearance-settings > .chat-color-settings { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); }.character-setting-head { color: #eee; }.character-setting-body { border-color: rgba(255,255,255,.12); } }
.chat-book-import { text-align: center; justify-content: center; }
#chatBookPickerPortal { position: fixed; inset: 0; z-index: 1000; pointer-events: auto; }
#chatBookPickerPortal .chat-book-picker-backdrop { position: absolute; inset: 0; z-index: 1; }
#chatBookPickerPortal .chat-book-picker-card { position: absolute; top: 50%; left: 50%; z-index: 2; display: flex; flex-direction: column; width: min(360px, calc(100vw - 34px)); max-height: min(620px, calc(100vh - 70px)); box-sizing: border-box; padding: 19px; transform: translate(-50%, -50%); overflow: hidden; border: 1px solid rgba(0,0,0,.1); border-radius: 22px; background: #fff; color: #222; box-shadow: 0 24px 70px rgba(0,0,0,.24); }
#chatBookPickerPortal .chat-book-picker-card header, #chatBookPickerPortal .chat-book-picker-card footer { flex: 0 0 auto; }
#chatBookPickerPortal .chat-book-picker-card .chat-book-list { min-height: 70px; overflow-y: auto; }
#chatBookPickerPortal .chat-book-picker-card { width: min(350px, calc(100vw - 40px)); padding: 22px; border-radius: 24px; box-shadow: 0 18px 55px rgba(0,0,0,.18); }
#chatBookPickerPortal .chat-book-picker-card header { align-items: flex-start; padding-bottom: 4px; }
#chatBookPickerPortal .chat-book-picker-card header h2 { margin-top: 5px; font-size: 21px; font-weight: 650; letter-spacing: -.02em; }
#chatBookPickerPortal .chat-book-picker-card header button { width: 30px; height: 30px; background: #f1f1f3; color: #555; font-size: 17px; }
#chatBookPickerPortal .chat-book-import { min-height: 48px; margin-top: 16px; border: 1px solid rgba(0,0,0,.1); border-radius: 14px; background: #f6f6f8; color: #222; font-size: 12px; font-weight: 500; transition: background .18s ease, transform .18s ease; }
#chatBookPickerPortal .chat-book-import:active { transform: scale(.98); background: #ededf0; }
#chatBookPickerPortal .chat-book-hint { margin: 12px 0 2px; color: #8b8b91; font-size: 11px; text-align: center; }
#chatBookPickerPortal .chat-book-picker-card footer { justify-content: stretch; gap: 9px; margin-top: 18px; }
#chatBookPickerPortal .chat-book-picker-card footer button { flex: 1; min-height: 40px; border: 0; border-radius: 12px; background: #f0f0f2; color: #333; font-size: 12px; font-weight: 500; }
#chatBookPickerPortal .chat-book-picker-card footer button:last-child { background: #222; color: #fff; }

/* 一起看书：选择弹窗重制 */
#chatBookPickerPortal {
  position: fixed !important;
  inset: 0 !important;
  z-index: 1000 !important;
  pointer-events: auto !important;
}
#chatBookPickerPortal:not(.is-open) { visibility: hidden !important; pointer-events: none !important; }

#chatBookPickerPortal .chat-book-picker-backdrop {
  position: absolute !important;
  inset: 0 !important;
  background: rgba(18, 18, 20, .22) !important;
  -webkit-backdrop-filter: blur(18px) saturate(110%) !important;
  backdrop-filter: blur(18px) saturate(110%) !important;
}

#chatBookPickerPortal .chat-book-picker-card {
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  display: flex !important;
  flex-direction: column !important;
  width: min(350px, calc(100vw - 40px)) !important;
  max-height: calc(100vh - 80px) !important;
  box-sizing: border-box !important;
  padding: 22px !important;
  transform: translate(-50%, -50%) !important;
  overflow: hidden !important;
  border: 1px solid rgba(255, 255, 255, .82) !important;
  border-radius: 26px !important;
  outline: 1px solid rgba(0, 0, 0, .04) !important;
  background: rgba(250, 250, 251, .94) !important;
  color: #1c1c1e !important;
  box-shadow: 0 26px 80px rgba(0, 0, 0, .22), 0 2px 8px rgba(0, 0, 0, .06) !important;
  -webkit-backdrop-filter: blur(28px) saturate(125%) !important;
  backdrop-filter: blur(28px) saturate(125%) !important;
}

#chatBookPickerPortal .chat-book-picker-card header {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  min-height: 39px !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

#chatBookPickerPortal .chat-book-picker-card header > div {
  min-width: 0 !important;
}

#chatBookPickerPortal .chat-book-picker-card .chat-kicker {
  display: block !important;
  color: #a0a0a6 !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  letter-spacing: .18em !important;
  line-height: 1 !important;
}

#chatBookPickerPortal .chat-book-picker-card h2 {
  margin: 7px 0 0 !important;
  color: #1c1c1e !important;
  font-size: 21px !important;
  font-weight: 650 !important;
  letter-spacing: -.035em !important;
  line-height: 1.15 !important;
}

#chatBookPickerPortal .chat-book-picker-card header > button {
  display: grid !important;
  flex: 0 0 auto !important;
  place-items: center !important;
  width: 30px !important;
  height: 30px !important;
  margin: -2px -2px 0 12px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 50% !important;
  background: rgba(118, 118, 128, .12) !important;
  color: #66666c !important;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", sans-serif !important;
  font-size: 19px !important;
  font-weight: 400 !important;
  line-height: 30px !important;
  cursor: pointer !important;
}

#chatBookPickerPortal .chat-book-picker-card header > button:active {
  transform: scale(.92) !important;
  background: rgba(118, 118, 128, .2) !important;
}

#chatBookPickerPortal .chat-book-picker-card .chat-book-import {
  display: grid !important;
  place-items: center !important;
  width: 100% !important;
  min-height: 54px !important;
  box-sizing: border-box !important;
  margin: 24px 0 0 !important;
  padding: 0 14px !important;
  border: 1px solid rgba(60, 60, 67, .13) !important;
  border-radius: 15px !important;
  background: rgba(255, 255, 255, .68) !important;
  color: #262629 !important;
  font-size: 13px !important;
  font-weight: 560 !important;
  line-height: 1 !important;
  text-align: center !important;
  cursor: pointer !important;
  transition: transform .16s ease, background .16s ease, border-color .16s ease !important;
}

#chatBookPickerPortal .chat-book-picker-card .chat-book-import:hover {
  border-color: rgba(60, 60, 67, .22) !important;
  background: rgba(255, 255, 255, .9) !important;
}

#chatBookPickerPortal .chat-book-picker-card .chat-book-import:active {
  transform: scale(.985) !important;
  background: rgba(235, 235, 238, .9) !important;
}

#chatBookPickerPortal .chat-book-picker-card .chat-book-import input {
  display: none !important;
}

#chatBookPickerPortal .chat-book-picker-card .chat-book-hint {
  display: block !important;
  margin: 13px 0 0 !important;
  color: #8b8b91 !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  line-height: 1.4 !important;
  text-align: center !important;
}
#chatBookPickerPortal .chat-book-format-hint { display: block; margin-top: 9px; color: #a0a0a6; font-size: 10px; line-height: 1.4; text-align: center; }

#chatBookPickerPortal .chat-book-picker-card footer {
  display: flex !important;
  gap: 10px !important;
  width: 100% !important;
  margin: 25px 0 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

#chatBookPickerPortal .chat-book-picker-card footer button {
  display: grid !important;
  flex: 1 1 0 !important;
  place-items: center !important;
  min-width: 0 !important;
  min-height: 42px !important;
  margin: 0 !important;
  padding: 0 12px !important;
  border: 0 !important;
  border-radius: 13px !important;
  background: rgba(118, 118, 128, .12) !important;
  color: #3a3a3c !important;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", sans-serif !important;
  font-size: 12px !important;
  font-weight: 560 !important;
  line-height: 1 !important;
  cursor: pointer !important;
  transition: transform .16s ease, background .16s ease !important;
}

#chatBookPickerPortal .chat-book-picker-card footer button:hover {
  background: rgba(118, 118, 128, .18) !important;
}

#chatBookPickerPortal .chat-book-picker-card footer button:active {
  transform: scale(.97) !important;
}

#chatBookPickerPortal .chat-book-picker-card footer button:last-child {
  background: #1c1c1e !important;
  color: #fff !important;
}

#chatBookPickerPortal .chat-book-picker-card footer button:last-child:hover {
  background: #303033 !important;
}
.chat-message.is-user .chat-bubble.transfer.is-settled { border-color: #b8b8ba; background: #d7d7da; color: #666; box-shadow: none; filter: grayscale(.15); opacity: .82; }
.chat-message.is-user .chat-bubble.transfer.is-settled .chat-transfer-message > strong, .chat-message.is-user .chat-bubble.transfer.is-settled .chat-transfer-message > p, .chat-message.is-user .chat-bubble.transfer.is-settled .chat-transfer-message > small { color: #777; }
.chat-bubble.transfer.is-settled .chat-transfer-actions { display: none; }
.chat-reading-font-file { display: flex !important; align-items: center !important; justify-content: space-between !important; min-height: 44px !important; box-sizing: border-box !important; padding: 0 11px !important; border: 1px solid rgba(60,60,67,.13) !important; border-radius: 11px !important; background: #f7f7f8 !important; color: #555 !important; }
.chat-reading-font-file > span { color: #555 !important; font-size: 12px !important; }
.chat-reading-font-file input { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
.chat-reading-font-file > b { display: inline-grid !important; place-items: center !important; min-height: 30px !important; padding: 0 11px !important; border-radius: 8px !important; background: #e8e8eb !important; color: #333 !important; font-size: 11px !important; font-weight: 550 !important; }
.chat-reading-font-file:hover > b { background: #dedee2 !important; }
.chat-reading-modal { position: fixed; inset: 0; z-index: 78; display: flex; flex-direction: column; overflow: hidden; background: #f5f5f3; color: #222; }.chat-reading-header { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; padding: max(20px, env(safe-area-inset-top)) 18px 14px; border-bottom: 1px solid rgba(0,0,0,.08); background: rgba(255,255,255,.9); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }.chat-reading-header h1 { margin-top: 4px; max-width: 240px; overflow: hidden; font-size: 20px; text-overflow: ellipsis; white-space: nowrap; }.chat-reading-header > button { width: 31px; height: 31px; border: 0; border-radius: 50%; background: #efefed; color: #444; font-size: 22px; }.chat-reading-shelf { flex: 1; overflow-y: auto; padding: 28px 20px 40px; }.chat-reading-intro > span { color: #aaa; font-size: 10px; letter-spacing: .15em; }.chat-reading-intro p { margin-top: 7px; color: #777; font-size: 12px; }.chat-reading-books { display: grid; gap: 10px; margin-top: 22px; }.chat-reading-books > button { display: flex; align-items: center; gap: 12px; width: 100%; padding: 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 15px; background: #fff; color: #222; text-align: left; box-shadow: 0 8px 22px rgba(0,0,0,.05); }.chat-book-cover { display: grid; flex: 0 0 43px; place-items: center; width: 43px; height: 57px; border-radius: 8px; background: #222; color: #fff; font-family: Georgia, serif; font-size: 22px; }.chat-reading-books > button > span:nth-child(2) { display: grid; flex: 1; gap: 4px; }.chat-reading-books b { font-size: 13px; }.chat-reading-books small { color: #999; font-size: 10px; }.chat-reading-books i { color: #aaa; font-size: 20px; font-style: normal; }.chat-reading-body { flex: 1; overflow-y: auto; padding: 31px 25px 95px; }.chat-reading-text { max-width: 620px; margin: 0 auto; color: #333; font-family: Georgia, 'Songti SC', serif; font-size: 16px; line-height: 2; }.chat-reading-text p { margin: 0 0 15px; }.chat-reading-empty { color: #aaa; text-align: center; }.chat-reading-progress { position: sticky; bottom: 12px; max-width: 620px; margin: 25px auto 0; padding: 10px 12px; border: 1px solid rgba(0,0,0,.07); border-radius: 12px; background: rgba(255,255,255,.86); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); color: #999; font-size: 10px; }.chat-reading-progress > div { height: 3px; margin-top: 7px; overflow: hidden; border-radius: 3px; background: #e3e3e0; }.chat-reading-progress i { display: block; height: 100%; border-radius: inherit; background: #222; transition: width .25s ease; }.chat-reading-avatar { position: absolute; right: 20px; bottom: 25px; z-index: 4; width: 52px; height: 52px; padding: 0; overflow: hidden; border: 2px solid #fff; border-radius: 18px; background: #ddd; box-shadow: 0 10px 25px rgba(0,0,0,.18); }.chat-reading-avatar .chat-avatar { width: 100%; height: 100%; border-radius: 15px; }.chat-reading-actions { position: absolute; right: 20px; bottom: 86px; z-index: 5; display: flex; gap: 7px; padding: 7px; border: 1px solid rgba(0,0,0,.1); border-radius: 12px; background: #fff; box-shadow: 0 10px 25px rgba(0,0,0,.15); }.chat-reading-actions[hidden] { display: none; }.chat-reading-actions button { min-height: 30px; padding: 0 10px; border: 0; border-radius: 8px; background: #f0f0ee; color: #444; font: inherit; font-size: 10px; }.chat-reading-mini { position: absolute; right: 16px; bottom: 85px; z-index: 6; display: flex; flex-direction: column; width: min(340px, calc(100vw - 30px)); height: min(44vh, 390px); overflow: hidden; border: 1px solid rgba(0,0,0,.1); border-radius: 18px; background: rgba(255,255,255,.96); box-shadow: 0 20px 55px rgba(0,0,0,.24); }.chat-reading-mini header { display: flex; align-items: center; justify-content: space-between; padding: 13px 14px; border-bottom: 1px solid rgba(0,0,0,.07); }.chat-reading-mini header button { width: 25px; height: 25px; border: 0; border-radius: 50%; background: #eee; color: #555; }.chat-reading-mini-messages { flex: 1; overflow-y: auto; padding: 12px; }.chat-reading-mini-messages p { margin: 7px 0; color: #555; font-size: 11px; line-height: 1.5; }.chat-reading-mini-messages p.is-user { color: #111; text-align: right; }.chat-reading-mini-messages p b { margin-right: 5px; font-size: 10px; }.chat-reading-mini-messages > small { color: #aaa; font-size: 10px; }.chat-reading-mini footer { display: flex; gap: 6px; padding: 10px; border-top: 1px solid rgba(0,0,0,.07); }.chat-reading-mini footer input { min-width: 0; flex: 1; height: 35px; padding: 0 9px; border: 1px solid rgba(0,0,0,.12); border-radius: 9px; outline: 0; font: inherit; font-size: 11px; }.chat-reading-mini footer button { min-width: 38px; border: 0; border-radius: 9px; background: #222; color: #fff; font: inherit; font-size: 10px; }.chat-reading-mini footer button:last-child { background: #eee; color: #444; }
.chat-message .chat-bubble.tap, .chat-message.is-user .chat-bubble.tap { display: block; width: max-content; max-width: min(86vw, 300px); padding: 7px 12px; border: 0; border-radius: 999px !important; background: #f0f0ee !important; color: #888 !important; box-shadow: none; font-size: 10px; line-height: 1.35; text-align: center; }
.chat-message:has(.chat-bubble.tap) { width: 100%; max-width: 100%; align-items: center; margin-left: 0; margin-right: 0; }.chat-message:has(.chat-bubble.tap) .chat-message-line { justify-content: center; }.chat-message:has(.chat-bubble.tap) .chat-message-avatar, .chat-message:has(.chat-bubble.tap) > small, .chat-message:has(.chat-bubble.tap) .chat-message-line > small { display: none !important; }
.chat-message.is-selected .chat-bubble { outline: 2px solid #222 !important; outline-offset: 3px; box-shadow: 0 0 0 5px rgba(0,0,0,.08), 0 8px 20px rgba(0,0,0,.12); transform: translateY(-1px); }
.chat-message.is-selected .chat-message-avatar { outline: 2px solid #222; outline-offset: 2px; filter: saturate(.65); }
.chat-recalled { cursor: pointer; }.chat-recalled-original { margin-top: 6px; padding: 6px 9px; border-radius: 8px; background: rgba(0,0,0,.06); color: #777; font-size: 10px; line-height: 1.45; }
.chat-reading-modal > .chat-reading-header { display: grid; grid-template-columns: 1fr auto 1fr; }.chat-reading-modal > .chat-reading-header > div { justify-self: center; text-align: center; }.chat-reading-modal > .chat-reading-header > button:first-child { justify-self: start; }.chat-reading-modal > .chat-reading-header > button:last-child { justify-self: end; }.chat-reading-head-actions { display: flex; justify-self: end !important; gap: 6px; }.chat-reading-head-actions button { width: 31px; height: 31px; border: 0; border-radius: 50%; background: #efefed; color: #444; font-size: 18px; }
.chat-reading-chapters { display: grid; gap: 8px; margin-top: 22px; }.chat-reading-chapters button { display: grid; grid-template-columns: 34px 1fr 20px; align-items: center; gap: 9px; width: 100%; padding: 13px; border: 1px solid rgba(0,0,0,.08); border-radius: 13px; background: #fff; color: #222; text-align: left; }.chat-reading-chapters button > span { color: #999; font-family: Georgia, serif; font-size: 17px; }.chat-reading-chapters button b { font-size: 12px; font-weight: 500; }.chat-reading-chapters button i { color: #aaa; font-size: 18px; font-style: normal; }
.chat-reading-body.is-night { background: #181818; }.chat-reading-body.is-night .chat-reading-text, .chat-reading-body.is-night .chat-reading-text p { color: #ddd; }.chat-reading-body.is-night + .chat-reading-avatar { border-color: #444; }
.chat-reading-modal.is-night { background: #181818; color: #ddd; }.chat-reading-modal.is-night .chat-reading-header { border-bottom-color: rgba(255,255,255,.12); background: rgba(24,24,24,.94); color: #eee; }.chat-reading-modal.is-night .chat-reading-header h1, .chat-reading-modal.is-night .chat-kicker { color: #eee; }.chat-reading-modal.is-night .chat-reading-head-actions button { background: #303030; color: #eee; }
.chat-reading-settings-backdrop { position: fixed; inset: 0; z-index: 91; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }.chat-reading-settings { position: fixed; top: 50%; left: 50%; z-index: 92; display: flex; flex-direction: column; width: min(360px, calc(100vw - 34px)); max-height: calc(100vh - 60px); padding: 19px; transform: translate(-50%, -50%); overflow-y: auto; border: 1px solid rgba(255,255,255,.8); border-radius: 22px; background: #fff; color: #222; box-shadow: 0 24px 70px rgba(0,0,0,.25); }.chat-reading-settings header { display: flex; align-items: center; justify-content: space-between; }.chat-reading-settings h2 { margin-top: 4px; font-size: 20px; }.chat-reading-settings header button { width: 29px; height: 29px; border: 0; border-radius: 50%; background: #eee; color: #555; font-size: 18px; }.chat-reading-settings label { display: grid; gap: 7px; margin-top: 16px; color: #555; font-size: 12px; }.chat-reading-settings label > span { display: flex; align-items: center; gap: 5px; }.chat-reading-settings input[type="number"], .chat-reading-settings input[type="url"] { width: 100%; min-width: 0; height: 38px; padding: 0 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafafa; color: #222; font: inherit; }.chat-reading-settings input[type="number"] { width: 80px; }.chat-reading-url { width: 100%; }.chat-reading-url button { flex: 0 0 auto; height: 38px; padding: 0 10px; border: 0; border-radius: 10px; background: #222; color: #fff; font: inherit; font-size: 11px; }.chat-reading-font-file { display: flex !important; align-items: center; justify-content: space-between; min-height: 42px; padding: 0 11px; border: 1px solid rgba(0,0,0,.1); border-radius: 10px; background: #fafafa; }.chat-reading-font-file input { max-width: 150px; font-size: 10px; }.chat-reading-settings p { margin-top: 12px; color: #999; font-size: 10px; line-height: 1.5; }.chat-reading-settings footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }.chat-reading-settings footer button { min-width: 66px; min-height: 35px; padding: 0 12px; border: 0; border-radius: 10px; background: #eee; color: #555; font: inherit; font-size: 11px; }.chat-reading-settings footer button:last-child { background: #222; color: #fff; }
 .chat-reading-settings footer button[data-chat-reading-settings-reset] { margin-right: auto; }
.app-icon .icon-day, .dock-icon .icon-day { fill: none; stroke: #222; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.app-icon .icon-night, .dock-icon .icon-night { fill: none; stroke: #f1f1f1; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.chat-message .chat-bubble.image-desc, .chat-message.is-user .chat-bubble.image-desc, .chat-message.is-character .chat-bubble.image-desc { background: #e4e4e1 !important; color: #333 !important; }
.chat-message:has(.chat-recalled) { width: 100% !important; max-width: 100% !important; align-items: center !important; margin: 0 0 13px !important; }
.chat-message:has(.chat-recalled) .chat-message-line { width: 100% !important; justify-content: center !important; }
.chat-message:has(.chat-recalled) .chat-message-avatar, .chat-message:has(.chat-recalled) > small { display: none !important; }
.chat-message .chat-bubble:has(.chat-recalled) { display: flex !important; align-items: center !important; justify-content: center !important; width: 150px !important; min-width: 150px !important; max-width: 150px !important; height: 24px !important; min-height: 24px !important; box-sizing: border-box !important; padding: 0 8px !important; border: 0 !important; border-radius: 7px !important; background: #f1f1f1 !important; color: #8b8b8b !important; box-shadow: none !important; filter: none !important; font-size: 10px !important; font-style: normal !important; line-height: 1 !important; text-align: center !important; }
.chat-message .chat-bubble:has(.chat-recalled) .chat-recalled { display: block !important; width: 100% !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.chat-message .chat-bubble.image-desc:has(.chat-recalled), .chat-message .chat-bubble.transfer:has(.chat-recalled), .chat-message .chat-bubble.location:has(.chat-recalled) { background: #f1f1f1 !important; color: #8b8b8b !important; border: 0 !important; box-shadow: none !important; filter: none !important; }
.chat-message .chat-bubble.transfer:has(.chat-recalled) { display: flex !important; align-items: center !important; justify-content: center !important; width: 150px !important; min-width: 150px !important; max-width: 150px !important; height: 24px !important; min-height: 24px !important; padding: 0 8px !important; border-radius: 7px !important; overflow: hidden !important; }
.chat-message .chat-bubble.image-desc:has(.chat-recalled) { display: flex !important; align-items: center !important; justify-content: center !important; width: 150px !important; min-width: 150px !important; max-width: 150px !important; height: 24px !important; min-height: 24px !important; padding: 0 8px !important; border-radius: 7px !important; overflow: hidden !important; }
.chat-message .chat-bubble.location:has(.chat-recalled) { display: flex !important; align-items: center !important; justify-content: center !important; width: 150px !important; min-width: 150px !important; max-width: 150px !important; height: 24px !important; min-height: 24px !important; padding: 0 8px !important; border-radius: 7px !important; overflow: hidden !important; }
.chat-message.is-user .chat-bubble:has(.chat-recalled), .chat-message.is-character .chat-bubble:has(.chat-recalled) { background: #f1f1f1 !important; color: #8b8b8b !important; border: 0 !important; box-shadow: none !important; filter: none !important; }
.chat-message .chat-bubble.voice:has(.chat-recalled), .chat-message .chat-bubble.voice:has(.chat-recalled) .chat-voice-bubble { background: #f1f1f1 !important; color: #8b8b8b !important; border: 0 !important; box-shadow: none !important; filter: none !important; }
.chat-message .chat-bubble:has(.chat-recalled), .chat-message .chat-bubble.transfer:has(.chat-recalled), .chat-message .chat-bubble.image-desc:has(.chat-recalled) { width: max-content !important; min-width: 150px !important; max-width: min(80vw, 280px) !important; }
.chat-message .chat-bubble:has(.chat-recalled) .chat-recalled { width: auto !important; max-width: 100% !important; white-space: nowrap !important; }
.chat-message .chat-bubble:has(.chat-recalled-original) { height: auto !important; min-height: 24px !important; padding: 5px 8px !important; flex-direction: column !important; gap: 2px !important; }
.chat-message .chat-bubble:has(.chat-recalled-original) .chat-recalled-original { display: block !important; margin: 0 !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; color: #999 !important; font-size: 9px !important; line-height: 1.25 !important; white-space: normal !important; }
.chat-page { position: relative; }
.chat-app:not(.is-chatting) .chat-main { box-sizing: border-box; padding-bottom: 104px; }
.chat-tabs { position: absolute !important; right: 12px; bottom: max(24px, env(safe-area-inset-bottom)); left: 12px; z-index: 8; display: flex; align-items: center; justify-content: space-around; height: 88px; box-sizing: border-box; padding: 10px 18px 4px; border: 1px solid rgba(255,255,255,.72) !important; border-radius: 30px; background: rgba(248,248,246,.72) !important; box-shadow: 0 8px 26px rgba(0,0,0,.14), inset 0 1px 0 rgba(255,255,255,.82); -webkit-backdrop-filter: blur(24px) saturate(140%); backdrop-filter: blur(24px) saturate(140%); }
.chat-tabs button { display: grid; place-items: center; gap: 4px; width: 58px; min-width: 58px; height: 58px; padding: 5px 4px; border-radius: 17px; }
.chat-tabs button.is-active { background: rgba(255,255,255,.42); color: #222; }
.chat-tabs .chat-tab-icon { width: 23px; height: 23px; }
@media not all { .chat-tabs { border-color: rgba(255,255,255,.16) !important; background: rgba(35,35,35,.72) !important; box-shadow: 0 8px 26px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.12); } .chat-tabs button.is-active { background: rgba(255,255,255,.12); color: #eee; } }
.chat-tabs button, .chat-tabs button.is-active { background: transparent !important; }
.chat-message .chat-bubble.recalled-bubble,
.chat-message .chat-bubble:has(.chat-recalled) { background: rgba(255,255,255,.28) !important; background-image: none !important; color: #555 !important; border: 1px solid rgba(255,255,255,.58) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,.55), 0 5px 16px rgba(0,0,0,.08) !important; -webkit-backdrop-filter: blur(18px) saturate(145%) !important; backdrop-filter: blur(18px) saturate(145%) !important; }
.chat-message .chat-bubble.recalled-bubble .chat-recalled,
.chat-message .chat-bubble:has(.chat-recalled) .chat-recalled,
.chat-message .chat-bubble.recalled-bubble .chat-recalled-original,
.chat-message .chat-bubble:has(.chat-recalled) .chat-recalled-original { color: #555 !important; }
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble.recalled-bubble .chat-recalled,
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble:has(.chat-recalled) .chat-recalled,
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble.recalled-bubble .chat-recalled-original,
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble:has(.chat-recalled) .chat-recalled-original { color: #fff !important; }
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble.recalled-bubble,
.chat-conversation.chat-wallpaper-dark .chat-message .chat-bubble:has(.chat-recalled) { background: rgba(255,255,255,.2) !important; color: #fff !important; border-color: rgba(255,255,255,.5) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,.42), 0 5px 16px rgba(0,0,0,.18) !important; }
.chat-conversation > .chat-compose-wrap > .chat-tools,
.chat-conversation > .chat-compose-wrap > .chat-emoji-panel { right: 0; bottom: 0; left: 0; transform: translateY(100%); border-radius: 26px; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply { width: 42px !important; height: 38px !important; min-height: 38px; padding: 0 !important; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply .chat-action-icon { width: 22px; height: 22px; }
.chat-conversation > .chat-compose-wrap .chat-compose { gap: 2px; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply { width: 38px !important; }
.chat-conversation > .chat-compose-wrap.has-text .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap.has-text .chat-compose > .chat-plus,
.chat-conversation > .chat-compose-wrap.has-text .chat-compose > .chat-reply { display: none !important; }
.chat-conversation > .chat-compose-wrap:not(.has-text) .chat-compose > .chat-send { display: none !important; }
.chat-conversation > .chat-compose-wrap.has-text .chat-compose > .chat-send { display: grid !important; }
.chat-conversation > .chat-compose-wrap.has-text .chat-compose > .chat-send { width: 38px !important; }
.chat-conversation > .chat-compose-wrap { padding-right: 12px; padding-left: 12px; }
.chat-conversation > .chat-compose-wrap .chat-compose { gap: 0; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply { width: 34px !important; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply .chat-action-icon { width: 20px; height: 20px; }
.chat-app.is-chatting .chat-header { position: relative; z-index: 12; border-bottom-color: rgba(255,255,255,.58); background: rgba(248,248,246,.46); box-shadow: 0 8px 24px rgba(0,0,0,.07), inset 0 1px 0 rgba(255,255,255,.62); -webkit-backdrop-filter: blur(24px) saturate(145%); backdrop-filter: blur(24px) saturate(145%); }
.chat-app.is-chatting.chat-wallpaper-dark .chat-header { border-bottom-color: rgba(255,255,255,.28); background: rgba(22,22,24,.36); box-shadow: 0 8px 24px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.16); }
.chat-app.is-chatting .chat-header .chat-top-name { color: #222 !important; text-shadow: 0 1px 2px rgba(255,255,255,.42); }
.chat-app.is-chatting .chat-header .chat-top-back,
.chat-app.is-chatting .chat-header .chat-top-settings { background: rgba(255,255,255,.42) !important; color: #222 !important; border: 1px solid rgba(255,255,255,.5) !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-header .chat-top-name { color: #fff !important; text-shadow: 0 1px 3px rgba(0,0,0,.58); }
.chat-app.is-chatting.chat-wallpaper-dark .chat-header .chat-top-back,
.chat-app.is-chatting.chat-wallpaper-dark .chat-header .chat-top-settings { background: rgba(0,0,0,.3) !important; color: #fff !important; border-color: rgba(255,255,255,.34) !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-person,
.chat-app.is-chatting.chat-wallpaper-dark .chat-person b,
.chat-app.is-chatting.chat-wallpaper-dark .chat-person small,
.chat-app.is-chatting.chat-wallpaper-dark .chat-compose-wrap .chat-compose input { color: #fff !important; caret-color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.45); }
.chat-app.is-chatting.chat-wallpaper-dark .chat-compose-wrap .chat-compose input::placeholder { color: rgba(255,255,255,.72) !important; }
.forum-app { position: fixed; inset: 0; z-index: 52; display: none; overflow: hidden; background: #f5f5f3; color: #171717; font-family: var(--forum-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif); }
.forum-app.is-open { display: block; }
.forum-page { display: flex; flex-direction: column; width: 100%; height: 100%; }
.forum-header { display: flex; align-items: center; justify-content: space-between; min-height: 78px; padding: max(24px, env(safe-area-inset-top)) 20px 14px; border-bottom: 1px solid rgba(0,0,0,.08); background: rgba(248,248,246,.9); -webkit-backdrop-filter: blur(24px) saturate(135%); backdrop-filter: blur(24px) saturate(135%); }
.forum-brand span, .forum-feed-intro > span, .forum-compose-card header > div > span, .forum-profile-card header > div > span { color: #999; font-size: 9px; font-weight: 700; letter-spacing: .18em; }
.forum-brand h1 { margin-top: 4px; font-size: 26px; letter-spacing: -.05em; }
.forum-header-actions { display: flex; align-items: center; gap: 8px; }
.forum-header-actions > button { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font: inherit; font-size: 22px; cursor: pointer; }
.forum-header-actions > button:first-child { overflow: hidden; background: #e2e2df; }
.forum-header-avatar, .forum-header-avatar img { display: block; width: 100%; height: 100%; border-radius: 50%; }
.forum-header-avatar { display: grid; place-items: center; color: #666; font-size: 12px; }
.forum-main { flex: 1; min-height: 0; overflow-y: auto; }
.forum-feed { width: min(100%, 640px); margin: 0 auto; padding: 18px 16px 128px; }
.forum-feed-intro { margin-bottom: 14px; padding: 0 4px 10px; border-bottom: 1px solid rgba(0,0,0,.08); }
.forum-feed-intro p { margin-top: 6px; color: #888; font-size: 12px; }
.forum-post { display: flex; gap: 11px; padding: 17px 3px 15px; border-bottom: 1px solid rgba(0,0,0,.1); }
.forum-post-avatar, .forum-post-avatar img { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 42px; border-radius: 50%; object-fit: cover; }
.forum-post-avatar { background: #dededb; color: #777; font-size: 16px; font-weight: 600; }
.forum-post-body { min-width: 0; flex: 1; }
.forum-post-body > header { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.forum-post-body > header > div { min-width: 0; overflow: hidden; }
.forum-post-body b { font-size: 13px; font-weight: 650; }
.forum-post-body header span, .forum-post-body time { margin-left: 6px; color: #999; font-size: 10px; }
.forum-post-body time { flex: 0 0 auto; margin-left: 0; }
.forum-post-text { margin-top: 8px; color: #292929; font-size: var(--forum-font-size, 13px); line-height: 1.65; overflow-wrap: anywhere; white-space: pre-wrap; }
.forum-post-style { display: block; margin-top: 8px; color: #aaa; font-size: 9px; }
.forum-post-body footer { display: flex; align-items: center; justify-content: space-between; max-width: 330px; margin-top: 13px; }
.forum-post-body footer button { min-width: 32px; padding: 3px 5px; border: 0; background: transparent; color: #999; font: inherit; font-size: 11px; cursor: pointer; }
.forum-post-body footer button:hover, .forum-post-body footer button.is-liked { color: #222; }
.forum-post-body footer button:last-child { color: #aaa; font-size: 10px; }
.forum-post-icon { display: block; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.forum-post-body footer button:not(:last-child) { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-width: 42px; }
.forum-post-body footer button[data-forum-like].is-liked { color: #222; }
.forum-empty { padding: 22vh 20px; color: #999; text-align: center; }
.forum-empty > div { font-size: 34px; }
.forum-empty h2 { margin-top: 12px; color: #555; font-size: 18px; }
.forum-empty p { margin-top: 7px; font-size: 11px; }
.forum-compose-fab { position: fixed; right: 20px; bottom: max(24px, env(safe-area-inset-bottom)); z-index: 4; display: grid; place-items: center; width: 52px; height: 52px; border: 1px solid rgba(255,255,255,.8); border-radius: 50%; background: #202020; color: #fff; box-shadow: 0 10px 25px rgba(0,0,0,.2); font-size: 27px; cursor: pointer; }
.forum-compose-fab { display: none; }
.forum-tabs { position: absolute; right: 12px; bottom: max(24px, env(safe-area-inset-bottom)); left: 12px; z-index: 5; display: flex; align-items: center; justify-content: space-around; height: 78px; padding: 8px 10px 4px; border: 1px solid rgba(255,255,255,.76); border-radius: 28px; background: rgba(248,248,246,.72); box-shadow: 0 8px 25px rgba(0,0,0,.14), inset 0 1px 0 rgba(255,255,255,.82); -webkit-backdrop-filter: blur(25px) saturate(145%); backdrop-filter: blur(25px) saturate(145%); }
.forum-tabs > button { display: grid; place-items: center; gap: 3px; width: 48px; height: 54px; padding: 4px 3px; border: 0; border-radius: 15px; background: transparent; color: #999; font: inherit; cursor: pointer; }
.forum-tabs > button.is-active { color: #222; }
.forum-tabs > button svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.1; stroke-linecap: round; stroke-linejoin: round; }
.forum-tabs > button small { font-size: 9px; }
.forum-tabs .forum-tab-compose { width: 44px; height: 44px; border: 1px solid rgba(255,255,255,.82); border-radius: 15px; background: #222; color: #fff; box-shadow: 0 5px 12px rgba(0,0,0,.18); }
.forum-tabs .forum-tab-compose svg { width: 23px; height: 23px; }
.forum-compose-sheet, .forum-profile-sheet { position: fixed; inset: 0; z-index: 10; display: none; align-items: center; justify-content: center; padding: 20px; }
.forum-compose-sheet.is-open, .forum-profile-sheet.is-open { display: flex; }
.forum-sheet-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.22); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.forum-compose-card, .forum-profile-card { position: relative; width: min(100%, 370px); padding: 20px; border: 1px solid rgba(255,255,255,.8); border-radius: 22px; background: rgba(255,255,255,.94); box-shadow: 0 24px 70px rgba(0,0,0,.22); }
.forum-compose-card header, .forum-profile-card header { display: flex; align-items: flex-start; justify-content: space-between; }
.forum-compose-card h2, .forum-profile-card h2 { margin-top: 5px; font-size: 20px; }
.forum-compose-card header button, .forum-profile-card header button { width: 29px; height: 29px; border: 0; border-radius: 50%; background: #f0f0ee; color: #555; font-size: 19px; cursor: pointer; }
.forum-compose-author { display: flex; align-items: center; gap: 9px; margin-top: 20px; color: #444; font-size: 12px; }
.forum-compose-author .forum-post-avatar { width: 32px; height: 32px; flex-basis: 32px; font-size: 12px; }
.forum-compose-card textarea, .forum-profile-card textarea { width: 100%; min-height: 130px; margin-top: 14px; padding: 11px; border: 1px solid rgba(0,0,0,.12); border-radius: 12px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 13px; line-height: 1.6; resize: vertical; }
.forum-compose-card footer, .forum-profile-card footer { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 14px; }
.forum-compose-card footer small { margin-right: auto; color: #aaa; font-size: 10px; }
.forum-compose-card footer button, .forum-profile-card footer button { min-width: 62px; min-height: 34px; border: 0; border-radius: 10px; background: #eee; color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.forum-compose-card footer button:last-child, .forum-profile-card footer .is-primary { background: #222; color: #fff; }
.forum-profile-card { max-height: calc(100vh - 40px); overflow-y: auto; }
.forum-profile-avatar-preview { display: grid; place-items: center; width: 70px; height: 70px; margin: 20px auto 18px; overflow: hidden; border-radius: 50%; background: #dededb; color: #777; font-size: 24px; }
.forum-profile-avatar-preview img { width: 100%; height: 100%; object-fit: cover; }
.forum-avatar-choose { display: flex !important; align-items: center; flex-direction: column; gap: 7px !important; margin-top: 18px !important; color: #888 !important; font-size: 10px !important; cursor: pointer; }
.forum-avatar-choose .forum-profile-avatar-preview { margin: 0; transition: transform .18s ease, box-shadow .18s ease; }
.forum-avatar-choose:hover .forum-profile-avatar-preview { transform: scale(1.04); box-shadow: 0 5px 16px rgba(0,0,0,.13); }
.forum-avatar-choose input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.forum-role-selector { margin-top: 18px; padding-top: 15px; border-top: 1px solid rgba(0,0,0,.08); }
.forum-role-selector h3 { font-size: 13px; font-weight: 600; }
.forum-role-selector > p { margin-top: 5px; color: #999; font-size: 10px; line-height: 1.45; }
.forum-role-selector > div { display: grid; gap: 7px; max-height: 190px; margin-top: 10px; overflow-y: auto; }
.forum-role-option { display: flex !important; align-items: center; gap: 8px; min-height: 48px; margin: 0 !important; padding: 6px 8px; border: 1px solid rgba(0,0,0,.08); border-radius: 11px; background: rgba(248,248,246,.72); cursor: pointer; }
.forum-role-option > span:nth-child(2) { display: grid; flex: 1; gap: 3px; min-width: 0; }
.forum-role-option b { overflow: hidden; color: #444; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.forum-role-option small { overflow: hidden; color: #999; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.forum-role-avatar, .forum-role-avatar img { display: grid; place-items: center; width: 32px; height: 32px; overflow: hidden; border-radius: 50%; background: #dededb; color: #777; font-size: 11px; }
.forum-role-avatar img { object-fit: cover; }
.forum-role-option input { width: 16px; height: 16px; accent-color: #222; }
.forum-no-roles { padding: 10px 0; color: #aaa; font-size: 10px; }
.forum-me-page, .forum-settings-page { width: min(100%, 520px); margin: 0 auto; padding: 24px 4px 120px; }
.forum-home-card { padding: 28px 20px 22px; border: 1px solid rgba(0,0,0,.08); border-radius: 22px; background: rgba(255,255,255,.58); text-align: center; }
.forum-home-card-avatar { display: grid; place-items: center; width: 82px; height: 82px; margin: 0 auto 15px; overflow: hidden; border-radius: 50%; background: #dededb; color: #777; font-size: 25px; }
.forum-home-card-avatar img { width: 100%; height: 100%; object-fit: cover; }
.forum-kicker { color: #999; font-size: 9px; font-weight: 700; letter-spacing: .16em; }
.forum-home-card h2, .forum-settings-page h2 { margin-top: 6px; font-size: 20px; }
.forum-home-card p, .forum-settings-page section > p { margin-top: 6px; color: #999; font-size: 11px; line-height: 1.55; }
.forum-home-card > div:last-child { display: grid; gap: 3px; margin-top: 18px; }.forum-home-card > div:last-child b { font-size: 15px; }.forum-home-card > div:last-child small { color: #999; font-size: 10px; }
.forum-me-row { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 58px; margin-top: 12px; padding: 0 15px; border: 1px solid rgba(0,0,0,.08); border-radius: 15px; background: rgba(255,255,255,.58); color: #333; text-align: left; cursor: pointer; }
.forum-me-row span { display: grid; gap: 4px; }.forum-me-row b { font-size: 12px; }.forum-me-row small { color: #999; font-size: 10px; }.forum-me-row i { color: #aaa; font-size: 24px; font-style: normal; }
.forum-settings-back { display: flex; align-items: center; gap: 6px; margin-bottom: 22px; border: 0; background: transparent; color: #555; font: inherit; font-size: 13px; cursor: pointer; }.forum-settings-back span { font-size: 11px; }
.forum-settings-page section { margin-bottom: 13px; padding: 18px; border: 1px solid rgba(0,0,0,.08); border-radius: 18px; background: rgba(255,255,255,.58); }.forum-settings-page section h2 { font-size: 17px; }.forum-settings-page label { display: grid; gap: 7px; margin-top: 17px; color: #777; font-size: 11px; }.forum-settings-page select, .forum-settings-page input { width: 100%; height: 40px; padding: 0 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 12px; }.forum-settings-save { width: 100%; height: 38px; margin-top: 18px; border: 0; border-radius: 10px; background: #222; color: #fff; font: inherit; font-size: 11px; cursor: pointer; }
.forum-role-option input { position: relative; width: 18px; height: 18px; appearance: none; border: 1.5px solid #aaa; border-radius: 50%; background: transparent; cursor: pointer; }
.forum-role-option input:checked { border-color: #222; background: #222; }
.forum-role-option input:checked::after { position: absolute; top: 3px; left: 5px; width: 4px; height: 7px; transform: rotate(45deg); border: solid #fff; border-width: 0 1.5px 1.5px 0; content: ''; }
.forum-role-toggle { flex: 0 0 auto; min-width: 48px; height: 28px; padding: 0 9px; border: 1px solid rgba(0,0,0,.14); border-radius: 9px; background: #fff; color: #555; font: inherit; font-size: 10px; cursor: pointer; }
.forum-role-toggle.is-selected { border-color: #222; background: #222; color: #fff; }
.forum-profile-card footer .forum-profile-delete { margin-right: auto; color: #9a5555; }
.forum-search-box { position: relative; margin-top: 18px; }
.forum-search-box input { width: 100%; height: 42px; padding: 0 42px 0 13px; border: 1px solid rgba(0,0,0,.1); border-radius: 14px; outline: 0; background: rgba(255,255,255,.72); color: #222; font: inherit; font-size: 12px; }
.forum-search-box svg { position: absolute; top: 11px; right: 13px; width: 20px; height: 20px; fill: none; stroke: #999; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; }
.forum-profile-card label { display: grid; gap: 7px; margin-top: 13px; color: #777; font-size: 11px; }
.forum-profile-card input:not([type="file"]) { width: 100%; height: 38px; padding: 0 10px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; outline: 0; background: #fafaf8; color: #222; font: inherit; font-size: 12px; }
.forum-profile-card textarea { min-height: 86px; margin-top: 0; }
.forum-file-label { display: flex !important; align-items: center; justify-content: center; min-height: 38px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; background: #f3f3f1; color: #555 !important; cursor: pointer; }
.forum-file-label input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.forum-profile-note { margin-top: 13px; color: #aaa; font-size: 10px; line-height: 1.5; }
@media not all { .forum-app { background: #202020; color: #eee; }.forum-header { border-color: rgba(255,255,255,.12); background: rgba(28,28,28,.9); }.forum-header-actions > button { background: rgba(255,255,255,.1); color: #ddd; }.forum-header-actions > button:first-child, .forum-post-avatar, .forum-profile-avatar-preview { background: #444; color: #ddd; }.forum-feed-intro, .forum-post, .forum-role-selector { border-color: rgba(255,255,255,.12); }.forum-feed-intro p, .forum-post-body header span, .forum-post time, .forum-post-style, .forum-post-body footer button { color: #aaa; }.forum-post-text { color: #eee; }.forum-post-body footer button:hover, .forum-post-body footer button.is-liked { color: #fff; }.forum-tabs { border-color: rgba(255,255,255,.16); background: rgba(35,35,35,.72); box-shadow: 0 8px 25px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.12); }.forum-tabs > button.is-active { color: #eee; }.forum-tabs .forum-tab-compose { background: #eee; color: #111; }.forum-compose-card, .forum-profile-card { border-color: rgba(255,255,255,.14); background: rgba(35,35,35,.97); }.forum-compose-card header button, .forum-profile-card header button { background: #4a4a4d; color: #eee; }.forum-compose-card textarea, .forum-profile-card input:not([type="file"]), .forum-profile-card textarea, .forum-search-box input { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; }.forum-file-label { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.08); color: #ddd !important; }.forum-role-option { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); }.forum-role-option b { color: #ddd; }.forum-role-toggle { border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.08); color: #ddd; }.forum-role-toggle.is-selected { border-color: #eee; background: #eee; color: #111; }.forum-compose-card footer button, .forum-profile-card footer button { background: rgba(255,255,255,.1); color: #eee; }.forum-compose-card footer button:last-child, .forum-profile-card footer .is-primary { background: #eee; color: #111; }.forum-profile-card footer .forum-profile-delete { color: #e6a0a0; }.forum-empty h2 { color: #ddd; } }
.chat-reading-head-actions .chat-reading-action-icon { display: block; width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 2.1; stroke-linecap: round; stroke-linejoin: round; }
.chat-app .chat-header { padding-top: max(54px, env(safe-area-inset-top)); padding-bottom: 35px; }
.chat-app.is-chatting .chat-header > .chat-top-back,
.chat-app.is-chatting .chat-header > .chat-top-name,
.chat-app.is-chatting .chat-header > .chat-top-settings { transform: translateY(14px); }

/* 具体聊天页顶栏紧凑高度 */
.chat-app.is-chatting .chat-header,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header {
  padding-top: max(36px, env(safe-area-inset-top));
  padding-bottom: 20px;
}
.chat-app.is-chatting .chat-header > .chat-top-back,
.chat-app.is-chatting .chat-header > .chat-top-name,
.chat-app.is-chatting .chat-header > .chat-top-settings {
  transform: translateY(8px);
}
@media not all { .forum-home-card, .forum-me-row, .forum-settings-page section { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); color: #eee; }.forum-home-card-avatar { background: #444; color: #ddd; }.forum-me-row { color: #eee; }.forum-settings-back { color: #ddd; }.forum-settings-page select, .forum-settings-page input { border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.22); color: #eee; }.forum-settings-save { background: #eee; color: #111; } }
.forum-refresh svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.forum-refresh.is-loading svg { animation: forum-refresh-spin .8s linear infinite; }
@keyframes forum-refresh-spin { to { transform: rotate(360deg); } }

.forum-beauty-trigger { font-size: 17px !important; }
.forum-page-beauty-editor { position: fixed; inset: 0; z-index: 63; display: none; align-items: center; justify-content: center; padding: 18px; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.forum-page-beauty-editor.is-open { display: flex; }
.forum-page-beauty-sheet { display: flex; flex-direction: column; width: min(100%, 560px); max-height: 92vh; overflow: hidden; border: 1px solid rgba(255,255,255,.72); border-radius: 24px; background: rgba(248,248,246,.96); color: #222; box-shadow: 0 20px 60px rgba(0,0,0,.22); }
.forum-page-beauty-sheet > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 22px; border-bottom: 1px solid rgba(0,0,0,.08); }
.forum-page-beauty-sheet > header h2 { margin-top: 6px; font-size: 21px; }
.forum-page-beauty-sheet > header small { display: block; margin-top: 5px; color: #999; font-size: 10px; }
.forum-page-beauty-sheet > header button { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 21px; cursor: pointer; }
.forum-page-beauty-sheet > main { min-height: 0; overflow-y: auto; padding: 18px 22px; }
.forum-page-beauty-tabs { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-bottom: 14px; padding: 4px; border-radius: 12px; background: rgba(0,0,0,.045); }
.forum-page-beauty-tabs button { min-height: 34px; border: 0; border-radius: 9px; background: transparent; color: #888; font: inherit; font-size: 11px; cursor: pointer; }
.forum-page-beauty-tabs button.is-active { background: #222; color: #fff; box-shadow: 0 4px 10px rgba(0,0,0,.12); }
.forum-page-beauty-current { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.forum-page-beauty-current b { font-size: 14px; }
.forum-page-beauty-current span { color: #999; font-size: 10px; }
.forum-page-beauty-hint { max-height: 150px; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; margin: 0 0 9px; padding: 9px 10px; border: 1px solid rgba(0,0,0,.08); border-radius: 10px; background: rgba(0,0,0,.025); color: #999; font-size: 10px; line-height: 1.7; }
.forum-beauty-hint-line { display: block; }
.forum-beauty-hint-line code { display: inline-block; margin-right: 5px; color: #777; font: 10px ui-monospace, SFMono-Regular, Menlo, monospace; }
.forum-beauty-hint-line > span { color: #888; }
.forum-page-beauty-sheet textarea { display: block; width: 100%; min-height: 230px; padding: 12px; border: 1px solid rgba(0,0,0,.11); border-radius: 12px; outline: 0; background: #fafaf8; color: #222; font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; resize: vertical; }
.forum-page-beauty-sheet > footer { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 14px 22px 20px; border-top: 1px solid rgba(0,0,0,.08); }
.forum-page-beauty-sheet > footer button { min-height: 36px; padding: 0 13px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; background: #f1f1ef; color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.forum-page-beauty-sheet > footer button.is-primary { background: #222; color: #fff; }
.forum-page-beauty-sheet > footer input { display: none; }
@media not all {
  .forum-beauty-trigger { color: #ddd !important; }
  .forum-page-beauty-sheet { border-color: rgba(255,255,255,.15); background: #242424; color: #eee; }
  .forum-page-beauty-sheet > header, .forum-page-beauty-sheet > footer { border-color: rgba(255,255,255,.12); }
  .forum-page-beauty-sheet > header button, .forum-page-beauty-sheet > footer button { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); color: #ddd; }
  .forum-page-beauty-tabs { background: rgba(255,255,255,.07); }
  .forum-page-beauty-tabs button { color: #aaa; }
  .forum-page-beauty-tabs button.is-active, .forum-page-beauty-sheet > footer button.is-primary { background: #eee; color: #111; }
  .forum-page-beauty-hint { border-color: rgba(255,255,255,.12); background: rgba(255,255,255,.06); }
  .forum-beauty-hint-line code { color: #bbb; }
  .forum-page-beauty-sheet textarea { border-color: rgba(255,255,255,.14); background: #1c1c1c; color: #eee; }
}

/* 阅读页顶栏：四个功能按钮等宽排列，图标严格居中 */
.chat-reading-modal > .chat-reading-header .chat-reading-head-actions {
  display: grid;
  grid-template-columns: repeat(4, 32px);
  align-items: center;
  justify-content: end;
  justify-self: end !important;
  gap: 6px;
  margin: 0;
}
.chat-reading-modal > .chat-reading-header .chat-reading-head-actions > button {
  display: grid;
  place-items: center;
  width: 32px;
  min-width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  line-height: 0;
  text-align: center;
}
.chat-reading-modal > .chat-reading-header .chat-reading-head-actions .chat-reading-action-icon {
  display: block;
  width: 19px;
  height: 19px;
  margin: 0;
  transform: none;
  transform-origin: center;
}

/* 论坛账号面板：仅角色列表滚动，账号资料与操作栏保持固定 */
.forum-profile-card {
  display: flex;
  width: min(100%, 370px);
  height: min(760px, calc(100vh - 40px));
  height: min(760px, calc(100dvh - 40px));
  max-height: calc(100vh - 40px);
  max-height: calc(100dvh - 40px);
  flex-direction: column;
  overflow: hidden;
}
.forum-profile-card > header,
.forum-profile-card > label,
.forum-profile-card > .forum-profile-note,
.forum-profile-card > footer {
  flex: 0 0 auto;
}
.forum-profile-card > .forum-role-selector {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
  overflow: hidden;
}
.forum-profile-card > .forum-role-selector > div {
  min-height: 72px;
  max-height: none;
  flex: 1 1 auto;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}
.forum-profile-card > label textarea {
  min-height: 86px;
  max-height: 86px;
  resize: none;
}
@media (max-height: 650px) {
  .forum-profile-sheet { padding: 10px; }
  .forum-profile-card {
    height: calc(100vh - 20px);
    height: calc(100dvh - 20px);
    max-height: calc(100vh - 20px);
    max-height: calc(100dvh - 20px);
    padding: 14px;
  }
  .forum-profile-card h2 { margin-top: 2px; font-size: 18px; }
  .forum-avatar-choose { margin-top: 8px !important; }
  .forum-profile-avatar-preview { width: 50px; height: 50px; }
  .forum-profile-card label { gap: 5px; margin-top: 8px; }
  .forum-profile-card input:not([type="file"]) { height: 34px; }
  .forum-profile-card > label textarea { min-height: 58px; max-height: 58px; }
  .forum-profile-card > .forum-role-selector { margin-top: 10px; padding-top: 10px; }
  .forum-profile-card > .forum-role-selector > div { min-height: 50px; margin-top: 6px; }
  .forum-role-option { min-height: 43px; }
  .forum-profile-note { margin-top: 8px; }
  .forum-profile-card footer { margin-top: 8px; }
  .forum-profile-card footer button { min-height: 32px; }
}

/* 论坛“我的”：设置直接放在用户名片下方 */
.forum-home-card .forum-home-card-details {
  display: grid;
  gap: 5px;
  margin-top: 18px;
  padding-top: 15px;
  border-top: 1px solid rgba(0,0,0,.07);
}
.forum-home-card .forum-home-card-details b {
  color: #777;
  font-size: 10px;
  font-weight: 600;
}
.forum-home-card .forum-home-card-details small {
  display: -webkit-box;
  overflow: hidden;
  color: #999;
  font-size: 11px;
  line-height: 1.55;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.forum-inline-settings {
  display: grid;
  gap: 12px;
  margin-top: 12px;
}
.forum-inline-settings > section {
  padding: 18px;
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 18px;
  background: rgba(255,255,255,.58);
}
.forum-inline-settings h2 { margin-top: 6px; font-size: 17px; }
.forum-inline-settings section > p {
  margin-top: 6px;
  color: #999;
  font-size: 11px;
  line-height: 1.55;
}
.forum-inline-settings label {
  display: grid;
  gap: 7px;
  margin-top: 15px;
  color: #777;
  font-size: 11px;
}
.forum-inline-settings select,
.forum-inline-settings input {
  width: 100%;
  height: 40px;
  margin-top: 15px;
  padding: 0 10px;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 10px;
  outline: 0;
  background: #fafafa;
  color: #222;
  font: inherit;
  font-size: 12px;
}
.forum-inline-settings label select,
.forum-inline-settings label input { margin-top: 0; }
@media not all {
  .forum-home-card .forum-home-card-details { border-top-color: rgba(255,255,255,.11); }
  .forum-inline-settings > section {
    border-color: rgba(255,255,255,.13);
    background: rgba(255,255,255,.07);
    color: #eee;
  }
  .forum-inline-settings select,
  .forum-inline-settings input {
    border-color: rgba(255,255,255,.14);
    background: rgba(0,0,0,.22);
    color: #eee;
  }
}

/* 壁纸主题下，底部毛玻璃直接复用聊天顶栏的透明度与模糊参数。 */
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap {
  border-color:rgba(255,255,255,.28) !important;
  background:rgba(22,22,24,.36) !important;
  box-shadow:0 8px 24px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.16) !important;
  -webkit-backdrop-filter:blur(24px) saturate(145%) !important;
  backdrop-filter:blur(24px) saturate(145%) !important;
}
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose input {
  border-color:rgba(255,255,255,.3) !important;
  background:rgba(255,255,255,.16) !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:blur(14px) !important;
  backdrop-filter:blur(14px) !important;
}
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap {
  border-color:rgba(255,255,255,.58) !important;
  background:rgba(248,248,246,.46) !important;
  box-shadow:0 8px 24px rgba(0,0,0,.07), inset 0 1px 0 rgba(255,255,255,.62) !important;
  -webkit-backdrop-filter:blur(24px) saturate(145%) !important;
  backdrop-filter:blur(24px) saturate(145%) !important;
}
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose input {
  background:rgba(255,255,255,.72) !important;
  box-shadow:none !important;
}

/* 群聊右侧用户昵称贴近用户头像，消除头像栏与昵称之间的空隙。 */
.chat-group-conversation .chat-message.is-user .chat-group-sender {
  align-self:flex-end !important;
  margin-right:2px !important;
  text-align:right !important;
}

.forum-profile-card .forum-role-option {
  min-height: 32px;
  padding: 2px 7px;
  border-radius: 9px;
}
.forum-profile-card .forum-role-avatar,
.forum-profile-card .forum-role-avatar img {
  width: 28px;
  height: 28px;
}
.forum-profile-card .forum-role-toggle {
  min-width: 44px;
  height: 24px;
  padding: 0 7px;
  border-radius: 8px;
  font-size: 9px;
}
.forum-font-file {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  min-height: 42px;
  padding: 0 10px;
  border: 1px solid rgba(0,0,0,.1);
  border-radius: 10px;
  background: #fafafa;
  cursor: pointer;
}
.forum-font-file input {
  position: absolute;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}
.forum-font-file b {
  display: block;
  max-width: 145px;
  overflow: hidden;
  padding: 7px 10px;
  border-radius: 8px;
  background: #e9e9eb;
  color: #444;
  font-size: 10px;
  font-weight: 550;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.forum-font-hint {
  display: block;
  margin-top: 7px;
  color: #aaa;
  font-size: 9px;
}
.forum-font-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
}
.forum-font-actions button {
  min-width: 0;
  min-height: 36px;
  padding: 0 9px;
  border: 1px solid rgba(0,0,0,.1);
  border-radius: 10px;
  background: #f0f0f2;
  color: #555;
  font: inherit;
  font-size: 10px;
  cursor: pointer;
}
.forum-font-actions button:first-child {
  background: #222;
  color: #fff;
}
.forum-font-actions button:disabled {
  opacity: .38;
  cursor: default;
}
.forum-post-replies {
  display: grid;
  gap: 8px;
  margin-top: 12px;
  padding: 10px;
  border-radius: 12px;
  background: rgba(0,0,0,.035);
}
.forum-post-replies article {
  display: flex;
  align-items: flex-start;
  gap: 7px;
}
.forum-post-replies article[data-forum-reply-id] { cursor: pointer; }
.forum-post-replies article[data-forum-reply-id]:hover { opacity: .72; }
.forum-post-replies article.is-nested { margin-left: 25px; padding-left: 8px; border-left: 2px solid rgba(0,0,0,.08); }
.forum-post-reply-avatar,
.forum-post-reply-avatar img {
  display: grid;
  flex: 0 0 24px;
  place-items: center;
  width: 24px;
  height: 24px;
  overflow: hidden;
  border-radius: 50%;
  background: #dededb;
  color: #777;
  font-size: 9px;
}
.forum-post-reply-avatar img { object-fit: cover; }
.forum-post-replies p {
  min-width: 0;
  color: #555;
  font-size: 11px;
  line-height: 1.55;
}
.forum-post-replies p b { margin-right: 5px; font-size: 11px; }
.forum-post-replies p small { margin-right: 5px; color: #999; font-size: 9px; }
.forum-post-replies p span { overflow-wrap: anywhere; }
.forum-post-body footer [data-forum-interact].is-loading {
  animation: forum-interact-pulse .75s ease-in-out infinite alternate;
  pointer-events: none;
}
@keyframes forum-interact-pulse { to { opacity: .35; transform: scale(.88); } }
@media not all {
  .forum-font-file {
    border-color: rgba(255,255,255,.14);
    background: rgba(0,0,0,.22);
  }
  .forum-font-file b { background: rgba(255,255,255,.12); color: #ddd; }
  .forum-font-actions button { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.1); color: #ddd; }
  .forum-font-actions button:first-child { background: #eee; color: #111; }
  .forum-post-replies { background: rgba(255,255,255,.07); }
  .forum-post-replies p { color: #ddd; }
  .forum-post-reply-avatar { background: #444; color: #ddd; }
}

.forum-discover-page { padding-top: 2px; }
.forum-discover-page .forum-search-box { margin-top: 0; }
.forum-discover-section { margin-top: 22px; }
.forum-discover-section-head,
.forum-discover-feed-title { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; padding: 0 2px; }
.forum-discover-section-head h2,
.forum-discover-feed-title h2 { margin-top: 5px; font-size: 18px; letter-spacing: -.02em; }
.forum-discover-section-head > button { min-width: 65px; height: 30px; padding: 0 10px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; background: #222; color: #fff; font: inherit; font-size: 10px; cursor: pointer; }
.forum-discover-section-head > button:disabled { opacity: .5; cursor: default; }
.forum-discover-topics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin-top: 12px; }
.forum-discover-topics button { display: grid; gap: 5px; min-height: 70px; padding: 12px; border: 1px solid rgba(0,0,0,.08); border-radius: 14px; background: rgba(255,255,255,.62); color: #333; text-align: left; cursor: pointer; }
.forum-discover-topics b { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.forum-discover-topics small { overflow: hidden; color: #999; font-size: 10px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.forum-discover-roles { display: flex; gap: 13px; margin-top: 12px; padding: 2px 2px 6px; overflow-x: auto; scrollbar-width: none; }
.forum-discover-roles::-webkit-scrollbar { display: none; }
.forum-discover-role { display: grid; flex: 0 0 54px; justify-items: center; gap: 5px; }
.forum-discover-role > span,
.forum-discover-role img { display: grid; place-items: center; width: 42px; height: 42px; overflow: hidden; border-radius: 50%; background: #dededb; color: #777; font-size: 14px; }
.forum-discover-role img { object-fit: cover; }
.forum-discover-role b { max-width: 58px; overflow: hidden; color: #777; font-size: 9px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.forum-discover-muted { padding: 9px 2px; color: #aaa; font-size: 10px; }
.forum-discover-filters { display: flex; gap: 7px; margin: 24px 0 3px; overflow-x: auto; scrollbar-width: none; }
.forum-discover-filters::-webkit-scrollbar { display: none; }
.forum-discover-filters button { min-width: 52px; height: 30px; padding: 0 11px; border: 1px solid rgba(0,0,0,.08); border-radius: 15px; background: rgba(255,255,255,.55); color: #999; font: inherit; font-size: 10px; white-space: nowrap; cursor: pointer; }
.forum-discover-filters button.is-active { border-color: #222; background: #222; color: #fff; }
.forum-discover-feed-title { padding: 17px 2px 0; }
.forum-discover-feed .forum-post:first-of-type { margin-top: 3px; }
@media not all {
  .forum-discover-topics button { border-color: rgba(255,255,255,.12); background: rgba(255,255,255,.08); color: #eee; }
  .forum-discover-topics small, .forum-discover-role b { color: #aaa; }
  .forum-discover-section-head > button { border-color: rgba(255,255,255,.16); background: #eee; color: #111; }
  .forum-discover-filters button { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); color: #aaa; }
  .forum-discover-filters button.is-active { border-color: #eee; background: #eee; color: #111; }
  .forum-discover-role > span { background: #444; color: #ddd; }
}

.forum-notice-page { padding-top: 2px; }
.forum-notice-tools { display: flex; justify-content: flex-end; margin: 2px 0 10px; }
.forum-notice-tools button { min-width: 64px; height: 30px; padding: 0 9px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; background: #222; color: #fff; font: inherit; font-size: 10px; cursor: pointer; }
.forum-notice-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; padding: 10px 2px 4px; }
.forum-notice-head h2 { margin-top: 5px; font-size: 22px; }
.forum-notice-head p { margin-top: 5px; color: #999; font-size: 10px; }
.forum-notice-head > button { min-width: 64px; height: 30px; padding: 0 9px; border: 1px solid rgba(0,0,0,.1); border-radius: 9px; background: #222; color: #fff; font: inherit; font-size: 10px; cursor: pointer; }
.forum-notice-head > button:disabled { opacity: .35; cursor: default; }
.forum-notice-filters { display: flex; gap: 7px; margin: 18px 0 4px; overflow-x: auto; scrollbar-width: none; }
.forum-notice-filters::-webkit-scrollbar { display: none; }
.forum-notice-filters button { min-width: 52px; height: 30px; padding: 0 10px; border: 1px solid rgba(0,0,0,.08); border-radius: 15px; background: rgba(255,255,255,.55); color: #999; font: inherit; font-size: 10px; white-space: nowrap; cursor: pointer; }
.forum-notice-filters button.is-active { border-color: #222; background: #222; color: #fff; }
.forum-notice-list { display: grid; gap: 7px; margin-top: 13px; }
.forum-notice-item { position: relative; display: flex; align-items: center; gap: 10px; width: 100%; min-height: 70px; padding: 10px 8px; border: 1px solid rgba(0,0,0,.07); border-radius: 14px; background: rgba(255,255,255,.52); color: #333; text-align: left; cursor: pointer; }
.forum-notice-item.is-unread { border-color: rgba(0,0,0,.14); background: rgba(255,255,255,.82); }
.forum-notice-item.is-unread::before { position: absolute; top: 12px; left: 3px; width: 5px; height: 5px; border-radius: 50%; background: #222; content: ''; }
.forum-notice-avatar,
.forum-notice-avatar img { display: grid; flex: 0 0 38px; place-items: center; width: 38px; height: 38px; overflow: hidden; border-radius: 50%; background: #dededb; color: #777; font-size: 13px; }
.forum-notice-avatar img { object-fit: cover; }
.forum-notice-copy { display: grid; min-width: 0; flex: 1; gap: 4px; }
.forum-notice-copy b { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.forum-notice-copy small { overflow: hidden; color: #777; font-size: 10px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.forum-notice-copy time { color: #aaa; font-size: 9px; }
.forum-notice-item > i { color: #aaa; font-size: 20px; font-style: normal; }
.forum-notice-empty { padding-top: 16vh; }
.forum-tabs > button[data-forum-tab="notice"] { position: relative; }
.forum-tabs > button[data-forum-tab="notice"].has-unread::after { position: absolute; top: 5px; right: calc(50% - 16px); width: 6px; height: 6px; border: 2px solid rgba(248,248,246,.9); border-radius: 50%; background: #222; content: ''; }
.forum-post.is-notice-target { animation: forum-notice-target 1.3s ease both; }
@keyframes forum-notice-target { 0%, 100% { background: transparent; } 25%, 70% { background: rgba(0,0,0,.06); } }
@media not all {
  .forum-notice-tools button { border-color: rgba(255,255,255,.16); background: #eee; color: #111; }
  .forum-notice-head > button { border-color: rgba(255,255,255,.16); background: #eee; color: #111; }
  .forum-notice-filters button { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); color: #aaa; }
  .forum-notice-filters button.is-active { border-color: #eee; background: #eee; color: #111; }
  .forum-notice-item { border-color: rgba(255,255,255,.12); background: rgba(255,255,255,.07); color: #eee; }
  .forum-notice-item.is-unread { border-color: rgba(255,255,255,.22); background: rgba(255,255,255,.12); }
  .forum-notice-item.is-unread::before { background: #eee; }
  .forum-notice-copy small { color: #aaa; }
  .forum-notice-avatar { background: #444; color: #ddd; }
  .forum-tabs > button[data-forum-tab="notice"].has-unread::after { border-color: rgba(35,35,35,.9); background: #eee; }
}
.chat-moment-hero { display:flex; align-items:center; gap:14px; margin:18px 20px 6px; padding:18px; border:1px solid rgba(0,0,0,.08); border-radius:22px; background:rgba(255,255,255,.58); box-shadow:0 12px 30px rgba(0,0,0,.04); }
.chat-moment-hero-avatar .chat-avatar { width:48px; height:48px; font-size:17px; }
.chat-moment-hero h2 { margin:3px 0 2px; font-size:22px; letter-spacing:-.04em; }
.chat-moment-hero p { margin:0; color:#8c8c8c; font-size:11px; }
.chat-moment-hero-copy { min-width:0; flex:1; }
.chat-moment-profile-control { display:flex; align-items:center; gap:6px; margin-top:7px; }
.chat-moment-profile-reminder { margin:0 0 14px; padding:9px 11px; border-radius:10px; background:rgba(0,0,0,.045); color:#888; font-size:10px; line-height:1.5; }
.chat-moment-composer { position:fixed; inset:0; z-index:60; display:none; align-items:center; justify-content:center; padding:20px; }
.chat-moment-composer.is-open { display:flex; }
.chat-group-composer { position:fixed; inset:0; z-index:61; display:none; align-items:center; justify-content:center; padding:20px; }
.chat-group-composer.is-open { display:flex; }
.chat-moment-composer-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.chat-moment-composer-card { position:relative; z-index:1; width:min(100%,420px); overflow:hidden; border:1px solid rgba(255,255,255,.7); border-radius:22px; background:rgba(248,248,246,.96); box-shadow:0 20px 60px rgba(0,0,0,.2); }
.chat-moment-composer-card header { display:flex; align-items:flex-start; justify-content:space-between; padding:20px; border-bottom:1px solid rgba(0,0,0,.08); }
.chat-moment-composer-card h2 { margin:5px 0 4px; font-size:20px; }
.chat-moment-composer-card header small { color:#999; font-size:10px; }
.chat-moment-composer-card header button { width:30px; height:30px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#555; font-size:20px; cursor:pointer; }
.chat-moment-composer-card main { display:grid; gap:10px; padding:20px; }
.chat-group-name-field { display:grid; gap:7px; color:#666; font-size:11px; }
.chat-group-name-field input { margin-top:0; }
.chat-role-moment-composer { position:fixed; inset:0; z-index:62; display:none; align-items:center; justify-content:center; padding:20px; }
.chat-role-moment-composer.is-open { display:flex; }
.chat-role-list { display:grid; gap:8px; max-height:190px; overflow-y:auto; padding-top:8px; border-top:1px solid rgba(0,0,0,.08); }
.chat-role-list.hidden, .chat-role-random-count.hidden { display:none; }
.chat-role-random-count { padding:9px 0 10px; color:#666; font-size:10px; }
.chat-role-random-count label { display:flex; align-items:center; justify-content:space-between; }
.chat-role-random-count select { min-width:90px; padding:6px 8px; border:1px solid rgba(0,0,0,.1); border-radius:8px; background:#fff; color:#444; font:inherit; font-size:10px; }
.chat-role-choice { display:flex; align-items:center; gap:8px; min-height:34px; color:#555; font-size:11px; }
.chat-role-choice { width:100%; box-sizing:border-box; padding:8px 0; border-bottom:1px solid rgba(0,0,0,.07); }
.chat-role-choice input { appearance:none; -webkit-appearance:none; width:15px; height:15px; margin:0; border:1px solid #aaa; border-radius:50%; background:transparent; }
.chat-role-choice input:checked { border:4px solid #222; background:#fff; }
.chat-role-image-toggle { position:relative; display:flex; align-items:center; justify-content:space-between; width:100%; min-height:48px; box-sizing:border-box; padding:0 12px; border:0; border-bottom:1px solid rgba(0,0,0,.08); border-radius:0; background:transparent; color:#333; cursor:pointer; }
.chat-role-image-toggle span { display:grid; order:1; gap:3px; font-size:12px; }
.chat-role-image-toggle b { color:#333; font-size:12px; font-weight:500; }
.chat-role-image-toggle small { color:#999; font-size:10px; line-height:1.45; }
.chat-role-image-toggle i { display:grid; order:2; place-items:center; width:17px; min-width:17px; height:17px; border:1px solid #999; border-radius:50%; background:transparent; color:transparent; font-size:0; font-style:normal; }
.chat-role-image-toggle:has(input:checked) i { border-color:#999; background:radial-gradient(circle,#222 0 3.5px,transparent 4px); }
.chat-role-image-toggle input { position:absolute; top:50%; right:4px; z-index:2; width:40px; height:40px; margin:0; opacity:0; pointer-events:auto; transform:translateY(-50%); cursor:pointer; }
.chat-role-image-toggle:has(input:disabled) { color:#aaa; cursor:not-allowed; opacity:.72; }
.chat-role-action-choice { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:48px; padding:0 12px; border:0; border-bottom:1px solid rgba(0,0,0,.08); background:transparent; color:#333; font:inherit; text-align:left; cursor:pointer; }
.chat-role-action-choice span { display:grid; gap:3px; font-size:12px; }
.chat-role-action-choice small { color:#999; font-size:10px; }
.chat-role-action-choice i { display:grid; place-items:center; width:18px; height:18px; border:1px solid #aaa; border-radius:50%; color:#777; font-size:11px; font-style:normal; }
.chat-role-action-choice i { width:17px !important; min-width:17px; height:17px !important; padding:0 !important; border:1px solid #999 !important; border-radius:50% !important; background:transparent !important; color:transparent !important; font-size:0 !important; -webkit-text-fill-color:transparent !important; }
.chat-role-action-choice i::after { content:none; }
.chat-role-action-choice.is-selected i { border:1px solid #999 !important; background:radial-gradient(circle, #222 0 3.5px, transparent 4px) !important; }
.chat-role-avatar-list { display:flex; flex-wrap:nowrap; gap:13px; max-height:none; overflow-x:auto; padding:12px 2px 10px; border-top:0; scrollbar-width:none; }
.chat-role-avatar-list::-webkit-scrollbar { display:none; }
.chat-role-avatar-list .chat-role-choice { position:relative; display:grid; flex:0 0 58px; justify-items:center; gap:5px; min-height:72px; padding:0; border:0; text-align:center; }
.chat-role-avatar-list .chat-role-choice input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.chat-role-avatar-list .chat-role-choice > span { display:grid; justify-items:center; gap:5px; }
.chat-role-select-avatar { width:46px !important; height:46px !important; border-radius:15px !important; font-size:14px !important; }
.chat-role-avatar-list .chat-role-choice:has(input:checked) .chat-role-select-avatar { outline:2px solid #aaa; outline-offset:3px; }
.chat-role-avatar-list .chat-role-choice small { width:58px; overflow:hidden; color:#666; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.chat-moment-visibility-label { display:block; margin:9px 0 0 43px; color:#aaa; font-size:9px; }
.chat-moment-composer-card textarea, .chat-moment-composer-card input { width:100%; box-sizing:border-box; border:1px solid rgba(0,0,0,.1); border-radius:12px; outline:0; background:#fff; color:#222; font:inherit; font-size:12px; }
.chat-moment-image-picker { display:grid; gap:8px; }
.chat-moment-image-picker img { width:100%; max-height:180px; object-fit:cover; border-radius:12px; }
.chat-moment-image-empty { display:grid; place-items:center; min-height:70px; border:1px dashed rgba(0,0,0,.14); border-radius:12px; color:#aaa; font-size:10px; }
.chat-moment-image-picker button { justify-self:start; padding:7px 10px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:#fff; color:#555; font:inherit; font-size:10px; cursor:pointer; }
.chat-moment-visibility { display:grid; gap:8px; padding:12px 0 0; border-top:1px solid rgba(0,0,0,.08); color:#666; font-size:10px; }
.chat-moment-visibility > b { display:inline-block; margin-right:10px; }
.chat-moment-visibility { display:flex; align-items:center; flex-wrap:wrap; column-gap:10px; }
.chat-moment-visibility > small { flex-basis:100%; }
.chat-moment-visibility > .chat-moment-group-choices { flex-basis:100%; }
.chat-moment-visibility > label, .chat-moment-visibility > div label { display:inline-flex; align-items:center; gap:5px; width:max-content; min-height:27px; padding:0 9px; border:1px solid rgba(0,0,0,.1); border-radius:999px; background:rgba(255,255,255,.72); cursor:pointer; }
.chat-moment-visibility > div { display:flex; flex-wrap:wrap; gap:6px; }
.chat-moment-visibility input { width:13px; height:13px; margin:0; accent-color:#222; }
.chat-moment-visibility > label { display:flex; width:auto; min-height:34px; padding:0; border:0; border-radius:0; background:transparent; color:#444; }
.chat-moment-group-choices { display:grid; gap:0; margin:2px 0 2px 22px; border-left:1px solid rgba(0,0,0,.1); }
.chat-moment-group-choices label { display:flex; align-items:center; min-height:30px; padding-left:12px; color:#666; font-size:10px; }
.chat-moment-visibility small { color:#999; font-size:9px; }
.chat-contact-head-actions { display:flex; gap:5px; }
.chat-contact-head-actions button { padding:7px 8px; border:0; border-radius:9px; background:rgba(0,0,0,.06); color:#555; font:inherit; font-size:10px; cursor:pointer; }
.chat-contact-groups { display:flex; gap:6px; overflow-x:auto; padding:0 20px 12px; }
.chat-contact-groups span { flex:0 0 auto; padding:6px 10px; border-radius:999px; background:rgba(0,0,0,.06); color:#777; font-size:10px; }
.chat-contact-groups button { flex:0 0 auto; padding:6px 10px; border:0; border-radius:999px; background:rgba(0,0,0,.06); color:#777; font:inherit; font-size:10px; cursor:pointer; }
.chat-contact-groups button.is-active { background:#222; color:#fff; }
.chat-contact-groups button small { margin-left:3px; font-size:9px; opacity:.7; }
@media not all { .chat-contact-groups button { background:rgba(255,255,255,.1); color:#bbb; } .chat-contact-groups button.is-active { background:#f5f5f5; color:#111; } }
.chat-contact-group-panel { max-height:min(68vh, 560px); margin:0 20px calc(88px + max(24px, env(safe-area-inset-bottom)) + 10px); overflow-y:auto; padding:0 14px 14px; border:1px solid rgba(0,0,0,.08); border-radius:16px; background:rgba(255,255,255,.6); }
.chat-app:not(.is-chatting) .chat-main { overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch; }
.chat-app:not(.is-chatting) .chat-contact-list, .chat-app:not(.is-chatting) .chat-moments { height:auto; max-height:none; overflow:visible; padding-bottom:120px; }
.chat-app:not(.is-chatting):has(.chat-contact-group-panel) .chat-main { overflow:hidden; padding-bottom:0; }
.chat-app:not(.is-chatting):has(.chat-contact-group-panel) .chat-contact-group-panel { max-height:min(48vh, 380px); margin-bottom:0; }
.chat-contact-group-panel header { position:sticky; top:0; z-index:2; display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin:0 -14px 12px; padding:14px; border-bottom:1px solid rgba(0,0,0,.08); background:rgba(255,255,255,.94); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); }
.chat-contact-group-panel h2 { margin-top:4px; font-size:16px; }
.chat-contact-group-panel p { margin-top:5px; color:#999; font-size:10px; line-height:1.5; }
.chat-contact-group-panel header button { padding:6px 9px; border:0; border-radius:8px; background:#222; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.chat-group-editor-row { padding:10px 0; border-top:1px solid rgba(0,0,0,.07); }
.chat-group-editor-row > b { display:block; margin-bottom:8px; font-size:11px; }
.chat-group-editor-row .chat-group-editor-title { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
.chat-group-editor-title b { font-size:11px; }
.chat-group-editor-title button { padding:5px 9px; border:1px solid rgba(180,55,55,.2); border-radius:8px; background:rgba(180,55,55,.07); color:#a33; font:inherit; font-size:10px; cursor:pointer; }
.chat-group-editor-row > div { display:flex; flex-wrap:wrap; gap:7px; }
.chat-group-editor-row label { display:flex; align-items:center; gap:4px; padding:5px 7px; border-radius:8px; background:rgba(0,0,0,.045); color:#666; font-size:10px; }
.chat-group-contacts-scroll { display:flex !important; flex-wrap:nowrap !important; gap:12px !important; overflow-x:auto; padding:3px 2px 8px; scrollbar-width:none; }
.chat-group-contacts-scroll::-webkit-scrollbar { display:none; }
.chat-group-contact-choice { position:relative; display:grid !important; flex:0 0 55px; gap:5px; padding:0 !important; background:transparent !important; text-align:center; cursor:pointer; }
.chat-group-contact-choice input { position:absolute; top:0; right:0; z-index:1; width:17px; height:17px; margin:0; accent-color:#222; }
.chat-group-contact-choice > span { display:grid; justify-items:center; gap:5px; }
.chat-group-contact-choice small { width:55px; overflow:hidden; color:#666; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.chat-group-avatar { width:43px !important; height:43px !important; border-radius:14px !important; font-size:14px !important; }
.chat-group-empty { color:#999; font-size:10px; }
@media not all { .chat-moment-image-empty { border-color:rgba(255,255,255,.18); } .chat-moment-image-picker button, .chat-contact-head-actions button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.1); color:#ddd; } .chat-moment-visibility { border-color:rgba(255,255,255,.12); background:transparent; color:#bbb; } .chat-moment-visibility > label, .chat-moment-visibility > div label { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#ddd; } .chat-contact-group-panel, .chat-group-editor-row label { background:rgba(255,255,255,.08); } .chat-contact-group-panel { border-color:rgba(255,255,255,.14); } .chat-contact-group-panel header { border-color:rgba(255,255,255,.12); background:rgba(30,30,30,.94); } .chat-contact-group-panel header button { background:#f5f5f5; color:#111; } .chat-contact-groups span { background:rgba(255,255,255,.1); color:#bbb; } }
@media not all { .chat-role-choice input:checked { border-color:#eee; background:#222; } .chat-role-image-toggle { border-color:transparent; background:transparent; color:#eee; } .chat-role-image-toggle b { color:#eee; } .chat-role-image-toggle small { color:#aaa; } .chat-role-image-toggle i { border-color:#777; background:transparent; } .chat-role-image-toggle:has(input:checked) i { border-color:#777; background:radial-gradient(circle,#eee 0 3.5px,transparent 4px); } }
@media not all { .chat-role-action-choice { border-color:rgba(255,255,255,.12); color:#eee; } }
@media not all { .chat-role-action-choice i { border-color:#777 !important; } .chat-role-action-choice.is-selected i { border-color:#777 !important; background:radial-gradient(circle, #fff 0 3.5px, transparent 4px) !important; } .chat-role-avatar-list .chat-role-choice small { color:#bbb; } }
.chat-moment-composer-card textarea { min-height:130px; padding:12px; resize:vertical; line-height:1.6; }
.chat-moment-composer-card input { height:40px; padding:0 12px; }
.chat-moment-composer-card footer { display:flex; justify-content:flex-end; gap:8px; padding:14px 20px 20px; border-top:1px solid rgba(0,0,0,.08); }
.chat-moment-composer-card footer button { min-height:36px; padding:0 15px; border:0; border-radius:10px; background:rgba(0,0,0,.07); color:#555; font:inherit; font-size:11px; cursor:pointer; }
.chat-moment-composer-card footer button:last-child { background:#222; color:#fff; }
@media not all { .chat-moment-profile-reminder { background:rgba(255,255,255,.08); } .chat-moment-composer-card { border-color:rgba(255,255,255,.14); background:rgba(30,30,30,.96); } .chat-moment-composer-card header { border-color:rgba(255,255,255,.12); } .chat-moment-composer-card header button { background:rgba(255,255,255,.1); color:#ddd; } .chat-moment-composer-card textarea, .chat-moment-composer-card input { border-color:rgba(255,255,255,.14); background:#242424; color:#eee; } .chat-moment-composer-card footer { border-color:rgba(255,255,255,.12); } .chat-moment-composer-card footer button:last-child { background:#f5f5f5; color:#111; } }
.chat-moment-profile-control select { max-width:140px; padding:4px 7px; border:1px solid rgba(0,0,0,.1); border-radius:8px; background:rgba(255,255,255,.72); color:#777; font:inherit; font-size:10px; }
.chat-moment-profile-edit { flex:0 0 auto; padding:7px 10px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:rgba(255,255,255,.72); color:#666; font:inherit; font-size:10px; cursor:pointer; }
.chat-moment-actions { display:flex; gap:8px; padding:10px 20px 6px; }
.chat-moment-actions button { min-height:34px; padding:0 13px; border:1px solid rgba(0,0,0,.1); border-radius:12px; background:#fff; color:#222; font:inherit; font-size:11px; cursor:pointer; }
.chat-moment-actions button:last-child { background:#222; color:#fff; border-color:#222; }
.chat-moment-actions button:disabled { opacity:.5; cursor:wait; }
.chat-moment-filters { display:flex; gap:7px; overflow-x:auto; padding:10px 20px 13px; scrollbar-width:none; }
.chat-moment-filters::-webkit-scrollbar { display:none; }
.chat-moment-filters button { flex:0 0 auto; padding:6px 13px; border:0; border-radius:999px; background:rgba(0,0,0,.06); color:#777; font:inherit; font-size:10px; cursor:pointer; }
.chat-moment-filters button.is-active { background:#222; color:#fff; }
.chat-moment { position:relative; }
.chat-moment-owner { margin-left:auto; color:#aaa; font-size:9px; }
.chat-moment-footer { display:flex; align-items:center; gap:14px; margin:13px 0 0 43px; }
.chat-moment-footer button { padding:0; border:0; background:none; color:#999; font:inherit; font-size:10px; cursor:pointer; }
.chat-moment-footer .chat-moment-comment-button { display:inline-flex; align-items:center; gap:4px; color:#888; }
.chat-moment-comment-button svg { width:14px; height:14px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.65; }
.chat-moment-comment-button:hover { color:#333; }
.chat-moment-comment-button:active { transform:scale(.94); }
.chat-moment-footer button.is-moment-busy { color:#aaa; cursor:wait; }
.chat-moment-footer button.is-liked { color:#222; font-weight:700; }
.chat-moment-footer .chat-moment-delete { margin-left:auto; color:#aaa; }
.chat-moment-comments { display:grid; gap:5px; margin:10px 0 0 43px; padding:9px 11px; border-radius:10px; background:rgba(0,0,0,.035); font-size:10px; }
.chat-moment-liked-by { display:flex; align-items:flex-start; gap:7px; margin:10px 0 0 43px; padding:9px 11px; border-radius:10px; background:rgba(0,0,0,.035); color:#666; font-size:10px; line-height:1.5; }
.chat-moment-liked-by > span:first-child { color:#d37586; }
@media not all { .chat-moment-liked-by { background:rgba(255,255,255,.08); color:#bbb; } }
.chat-moment-comments div { display:flex; gap:6px; line-height:1.45; }
.chat-moment-comments b { flex:0 0 auto; color:#555; }
.chat-moment-comment.is-replyable,
.chat-moment-comment-reply-item { cursor:pointer; border-radius:6px; transition:background .15s ease; }
.chat-moment-comments .chat-moment-comment { display:grid; grid-template-columns:auto minmax(0,1fr); }
.chat-moment-comment.is-replyable:hover,
.chat-moment-comment-reply-item:hover { background:rgba(0,0,0,.045); }
.chat-moment-comments .chat-moment-comment-replies { display:grid; grid-column:1 / -1; gap:4px; margin:5px 0 0 12px; padding-left:8px; border-left:1px solid rgba(0,0,0,.1); }
.chat-moment-comment-replies div { font-size:9px; }
.chat-moment-location { margin:10px 0 0 43px; color:#777; font-size:10px; }
@media not all {
  .chat-moment-hero { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.08); box-shadow:none; }
  .chat-moment-actions button { border-color:rgba(255,255,255,.16); background:rgba(255,255,255,.12); color:#f4f4f4; }
  .chat-moment-actions button:last-child, .chat-moment-filters button.is-active { background:#f5f5f5; color:#111; border-color:#f5f5f5; }
  .chat-moment-profile-edit { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.12); color:#ddd; }
  .chat-moment-profile-control select { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.12); color:#ddd; }
  .chat-moment-filters button { background:rgba(255,255,255,.1); color:#aaa; }
  .chat-moment-footer button.is-liked { color:#fff; }
  .chat-moment-comments { background:rgba(255,255,255,.08); }
  .chat-moment-comments b { color:#ddd; }
  .chat-moment-comment.is-replyable:hover,
  .chat-moment-comment-reply-item:hover { background:rgba(255,255,255,.08); }
  .chat-moment-comment-replies { border-color:rgba(255,255,255,.16); }
}
.chat-moment-visibility > label { border:0 !important; border-radius:0 !important; background:transparent !important; }
.chat-moment-group-choices label { border:0 !important; border-radius:0 !important; background:transparent !important; }
.chat-moment-visibility { gap:7px 9px; }

/* 朋友圈页面：大图封面、悬浮资料和无卡片动态流。 */
.chat-app.is-moments-tab .chat-header { display:none; }
.chat-app.is-moments-tab { background:#fff; }
.chat-app.is-moments-tab .chat-main { overflow:hidden !important; padding-bottom:0 !important; background:#fff; }
.chat-moments-page { height:100%; box-sizing:border-box; overflow-y:auto; padding-bottom:126px; background:#fff; color:#222; scrollbar-width:none; }
.chat-moments-page::-webkit-scrollbar { display:none; }
.chat-moments-cover { position:relative; z-index:2; height:clamp(270px,46vh,430px); min-height:270px; background-color:#78877a; background-image:var(--chat-moments-cover,linear-gradient(135deg,#6b9278,#d2b38b 48%,#8e6570)); background-position:center; background-size:cover; color:#fff; }
.chat-moments-cover-change { position:absolute; inset:0; z-index:1; width:100%; height:100%; padding:0; border:0; background:transparent; cursor:pointer; }
.chat-moments-cover-shade { position:absolute; inset:0; background:transparent; pointer-events:none; }
.chat-moments-topbar { position:absolute; top:0; right:0; left:0; z-index:2; display:flex; align-items:center; justify-content:space-between; padding:max(16px,env(safe-area-inset-top)) 16px 12px; }
.chat-moments-top-actions { display:flex; align-items:center; gap:13px; }
.chat-moments-icon-button { display:grid; place-items:center; width:34px; height:34px; padding:0; border:0; border-radius:50%; background:transparent; color:#fff; cursor:pointer; filter:drop-shadow(0 1px 2px rgba(0,0,0,.4)); }
.chat-moments-icon-button:active { transform:scale(.94); }
.chat-moments-icon { width:25px; height:25px; fill:currentColor; stroke:currentColor; stroke-width:2.35; stroke-linecap:round; stroke-linejoin:round; }
.chat-moments-icon-refresh, .chat-moments-icon-camera { width:29px; height:29px; object-fit:contain; }
.chat-moments-icon-bell { width:26px; height:26px; object-fit:contain; }
.chat-moments-icon-back { fill:none; stroke-width:3.1; }
.chat-moments-icon-refresh { stroke-width:3.8; }
.chat-moments-icon-refresh path:last-child { stroke:none; }
.chat-moments-icon-button[data-chat-role-post]:disabled .chat-moments-icon-refresh { animation:chat-moments-role-refresh-spin .85s linear infinite; transform-origin:50% 50%; }
@keyframes chat-moments-role-refresh-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .chat-moments-icon-button[data-chat-role-post]:disabled .chat-moments-icon-refresh { animation:none; } }
.chat-moments-icon-bell, .chat-moments-icon-camera { stroke:none; }
.chat-moments-profile { position:absolute; right:22px; bottom:-28px; z-index:3; display:flex; align-items:center; gap:12px; }
.chat-moments-profile-copy { max-width:180px; padding:0; border:0; background:transparent; color:inherit; font:inherit; text-align:right; text-shadow:0 1px 3px rgba(0,0,0,.45); cursor:pointer; }
.chat-moments-profile-copy h2 { overflow:hidden; font-size:19px; text-overflow:ellipsis; white-space:nowrap; }
.chat-moments-nickname-input { width:150px; height:36px; padding:0 8px; border:1px solid rgba(255,255,255,.8); border-radius:8px; background:rgba(255,255,255,.94); color:#222; font:inherit; font-size:16px; }
.chat-moments-avatar-choices { position:absolute; top:calc(100% + 8px); right:0; z-index:6; display:grid; gap:6px; width:210px; padding:10px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:#fff; box-shadow:0 12px 32px rgba(0,0,0,.18); color:#222; text-shadow:none; }
.chat-moments-avatar-choices button, .chat-moments-avatar-choices input { min-height:34px; box-sizing:border-box; border:1px solid rgba(0,0,0,.1); border-radius:8px; background:#f7f7f7; color:#333; font:inherit; font-size:11px; }
.chat-moments-avatar-choices button { cursor:pointer; }
.chat-moments-avatar-choices > div { display:flex; gap:5px; }
.chat-moments-avatar-choices input { width:0; min-width:0; flex:1; padding:0 7px; }
.chat-moments-avatar-choices > div button { flex:0 0 auto; padding:0 7px; }
.chat-moments-profile-copy p { margin-top:4px; color:rgba(255,255,255,.8); font-size:10px; }
.chat-moments-cover-avatar { display:grid; place-items:center; width:88px; height:88px; padding:3px; overflow:hidden; border:1px solid rgba(255,255,255,.9); border-radius:14px; background:#fff; box-shadow:0 2px 10px rgba(0,0,0,.18); cursor:pointer; }
.chat-moments-cover-avatar .chat-avatar { width:100%; height:100%; border-radius:10px; background:#ddd; }
.chat-moments-body { position:relative; z-index:0; min-height:calc(100% - 270px); padding-top:40px; background:#fff; }
.chat-moments-page .chat-moment-actions { margin:3px 0 0; padding:10px 20px 6px; }
.chat-moments-page .chat-moment-actions button { min-height:32px; padding:0 11px; border-radius:10px; font-size:10px; }
.chat-moments-page .chat-moment-filters { position:sticky; top:0; z-index:5; box-sizing:border-box; align-items:center; min-height:62px; padding:8px 20px; border-bottom:1px solid rgba(0,0,0,.07); background:rgba(255,255,255,.96); -webkit-backdrop-filter:blur(16px) saturate(130%); backdrop-filter:blur(16px) saturate(130%); }
.chat-moments-page .chat-moment-filters button { min-height:36px; }
.chat-moments-page .chat-moment-filters {
  --moments-sticky-gap:env(safe-area-inset-top, 0px);
  --moments-sticky-background:#fff;
  top:var(--moments-sticky-gap);
}
/* Only cover the status-bar gap once the filter row reaches its sticky position. */
.chat-moments-page .chat-moment-filters.is-pinned {
  background:var(--moments-sticky-background);
  box-shadow:0 calc(-1 * var(--moments-sticky-gap)) 0 var(--moments-sticky-background);
}
@media not all {
  .chat-moments-page .chat-moment-filters { --moments-sticky-background:#202020; }
}
.chat-moments-page .chat-moments { height:auto; overflow:visible; padding:0; }
.chat-moments-page .chat-moment { display:block; margin:0; padding:22px 20px 25px; border:0; border-bottom:1px solid rgba(0,0,0,.07); border-radius:0; background:#fff; }
.chat-moments-page .chat-moment-head { gap:10px; }
.chat-moments-page .chat-moment-head > .chat-avatar { width:42px !important; min-width:42px; max-width:42px; height:42px !important; min-height:42px; max-height:42px; flex:0 0 42px; aspect-ratio:1 / 1; border-radius:10px; }
.chat-moments-page .chat-moment-head > .chat-avatar img { width:100%; height:100%; aspect-ratio:1 / 1; object-fit:cover; }
.chat-moments-page .chat-moment-head > div { display:grid; flex:1; min-width:0; gap:4px; }
.chat-moments-page .chat-moment-head b { color:#315a93; font-size:13px; }
.chat-moments-page .chat-moment-head small { color:#aaa; font-size:9px; }
.chat-moments-page .chat-moment-owner { display:none; }
.chat-moments-page .chat-moment > p { margin:12px 0 0 52px; color:#333; font-size:13px; line-height:1.65; }
.chat-moments-page .chat-moment > img { display:block; width:auto; max-width:calc(100% - 52px); max-height:340px; margin:12px 0 0 52px; border-radius:2px; object-fit:cover; }
.chat-moments-page .chat-moment-location, .chat-moments-page .chat-moment-visibility-label { margin-left:52px; }
.chat-moments-page .chat-moment-footer { margin:14px 0 0 52px; padding:0; }
.chat-moments-page .chat-moment-footer button { color:#7a7a7a; font-size:10px; }
.chat-moments-page .chat-moment-comments, .chat-moments-page .chat-moment-liked-by { margin-left:52px; }
.chat-moment-cover-editor-card main { display:grid; gap:11px; }
.chat-moment-cover-preview { display:grid; place-items:center; min-height:145px; border-radius:13px; background:#e7e7e3 center/cover no-repeat; color:#aaa; font-size:10px; }
.chat-moment-cover-source-row { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:stretch; gap:8px; width:100%; max-width:100%; }
.chat-moment-cover-source-row > button, .chat-moment-cover-source-row > .chat-file-button { display:grid; place-items:center; width:100%; min-width:0; min-height:36px; box-sizing:border-box; padding:0 4px; text-align:center; white-space:nowrap; }
.chat-moment-cover-file { justify-self:stretch; }
.chat-moment-cover-reset { width:100%; min-height:36px; margin-left:0; padding:0 4px; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:transparent; color:#777; font:inherit; font-size:11px; white-space:nowrap; cursor:pointer; }
.chat-moment-cover-editor { position:fixed; inset:0; z-index:60; display:none; align-items:center; justify-content:center; padding:20px; }
.chat-moment-cover-editor.is-open { display:flex; }
.chat-app.is-moments-tab .chat-tabs { background:rgba(248,248,246,.72) !important; -webkit-backdrop-filter:blur(24px) saturate(140%); backdrop-filter:blur(24px) saturate(140%); }
@media not all {
  .chat-app.is-moments-tab, .chat-app.is-moments-tab .chat-main { background:#202020; }
  .chat-moments-page, .chat-moments-page .chat-moment, .chat-moments-body { background:#202020; color:#eee; }
  .chat-moments-page .chat-moment-filters { border-color:rgba(255,255,255,.1); background:rgba(32,32,32,.96); }
  .chat-moments-page .chat-moment { border-color:rgba(255,255,255,.1); }
  .chat-moments-page .chat-moment > p { color:#eee; }
  .chat-moments-page .chat-moment-head b { color:#a9c9f2; }
  .chat-moments-page .chat-moment-footer button { color:#bbb; }
  .chat-moment-cover-preview { background-color:#333; }
  .chat-moment-cover-reset { border-color:rgba(255,255,255,.14); color:#ccc; }
}
.chat-moment-visibility > b { margin-right:4px; }
.chat-moment-visibility-modes { display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px; }
.chat-moment-visibility > .chat-moment-visibility-modes label { display:inline-flex; align-items:center; gap:4px; width:auto; min-height:23px; padding:0; border:0; border-radius:0; background:transparent; color:#444; font-size:10px; cursor:pointer; }
.chat-moment-visibility > .chat-moment-visibility-modes input[type="radio"] { appearance:none !important; -webkit-appearance:none !important; box-sizing:border-box !important; flex:0 0 12px !important; width:12px !important; min-width:12px !important; max-width:12px !important; height:12px !important; min-height:12px !important; max-height:12px !important; aspect-ratio:1 / 1; margin:0 !important; padding:0 !important; border:1px solid #929292; border-radius:3px; background:#fff; }
.chat-moment-visibility-modes input[type="radio"]:checked { border-color:#222; background:#222; }
.chat-moment-group-choices { display:flex; flex-wrap:wrap; gap:6px; margin:1px 0 3px; padding:7px; border:0; border-radius:10px; background:rgba(0,0,0,.035); }
.chat-moment-visibility > .chat-moment-group-choices label { display:inline-flex; align-items:center; gap:5px; width:auto; min-height:25px; padding:0 8px; border:1px solid rgba(0,0,0,.1) !important; border-radius:8px !important; background:rgba(255,255,255,.82) !important; color:#666; font-size:10px; cursor:pointer; }
.chat-moment-group-choices label:has(input:checked) { border-color:#3d3d3d !important; background:#f1f1ef !important; color:#222; }
.chat-moment-group-choices input[type="checkbox"] { width:11px; height:11px; margin:0; accent-color:#222; }
@media not all { .chat-moment-visibility > .chat-moment-visibility-modes label { color:#ddd; } .chat-moment-visibility-modes input[type="radio"] { border-color:#949494; background:#202020; } .chat-moment-visibility-modes input[type="radio"]:checked { border-color:#000; background:#000; } .chat-moment-group-choices { background:rgba(255,255,255,.06); } .chat-moment-visibility > .chat-moment-group-choices label { border-color:rgba(255,255,255,.15) !important; background:rgba(255,255,255,.07) !important; color:#ddd; } .chat-moment-group-choices label:has(input:checked) { border-color:#ddd !important; background:rgba(255,255,255,.16) !important; color:#fff; } .chat-moment-group-choices input[type="checkbox"] { accent-color:#eee; } }

.couple-home-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; max-width:520px; margin:0 auto 14px; }
.couple-home-grid button { display:grid; gap:7px; min-height:112px; padding:15px; border:1px solid rgba(0,0,0,.08); border-radius:17px; background:rgba(255,255,255,.68); color:#333; text-align:left; cursor:pointer; }
.couple-home-grid b { font-size:11px; font-weight:600; }
.couple-home-grid strong { overflow:hidden; font-size:15px; font-weight:500; text-overflow:ellipsis; white-space:nowrap; }
.couple-home-grid small { color:#999; font-size:10px; }
.couple-feature-card { max-width:520px; margin:0 auto; padding:19px; border:1px solid rgba(0,0,0,.08); border-radius:19px; background:rgba(255,255,255,.68); }
.couple-feature-card > span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }
.couple-feature-card h2 { max-width:260px; margin-top:9px; font-size:20px; line-height:1.3; }
.couple-feature-card p { margin-top:8px; color:#999; font-size:11px; line-height:1.6; }
.couple-feature-card button, .couple-primary { min-height:36px; margin-top:15px; padding:0 14px; border:0; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.couple-title { max-width:520px; margin:10px auto 17px; }
.couple-subhint { max-width:520px; margin:8px auto 17px; color:#999; font-size:11px; line-height:1.5; }
.couple-header.is-subpage { align-items:center; }.couple-header.is-subpage h1 { margin:0; font-size:20px; }
.couple-title > span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }
.couple-title h2 { margin-top:7px; font-size:24px; letter-spacing:-.04em; }
.couple-title p { margin-top:6px; color:#999; font-size:11px; line-height:1.5; }
.couple-primary { display:block; width:100%; max-width:520px; margin:0 auto 13px; }
.couple-list, .couple-memory-list { display:grid; gap:8px; max-width:520px; margin:auto; }
.couple-list-card, .couple-letter, .couple-memory-card, .couple-question { border:1px solid rgba(0,0,0,.08); border-radius:16px; background:rgba(255,255,255,.68); }
.couple-list-card { display:flex; align-items:center; justify-content:space-between; padding:13px 14px; }
.couple-list-card div, .couple-letter { display:grid; gap:5px; }
.couple-list-card b, .couple-letter b { font-size:12px; }
.couple-list-card small, .couple-letter small, .couple-memory-card small { color:#999; font-size:10px; }
.couple-list-card button { width:25px; height:25px; border:0; border-radius:50%; background:rgba(0,0,0,.06); color:#888; cursor:pointer; }
.couple-memory-card { overflow:hidden; }
.couple-memory-card img { display:block; width:100%; max-height:190px; object-fit:cover; }
.couple-memory-card > div, .couple-letter { padding:14px; }
.couple-memory-card > div { display:grid; gap:5px; }
.couple-memory-card b { font-size:13px; }
.couple-memory-card p, .couple-letter p { color:#666; font-size:11px; line-height:1.6; }
.couple-letter { width:100%; padding:14px; border:1px solid rgba(0,0,0,.08); color:#333; text-align:left; cursor:pointer; }.couple-letter em { color:#999; font-size:9px; font-style:normal; }
.couple-letter-sheet { position:fixed; inset:0; z-index:8; display:grid; place-items:center; padding:20px; }.couple-letter-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }.couple-letter-sheet > section { position:relative; width:min(100%,380px); max-height:82vh; overflow-y:auto; padding:20px; border:1px solid rgba(255,255,255,.78); border-radius:22px; background:rgba(248,248,246,.97); box-shadow:0 20px 60px rgba(0,0,0,.2); }.couple-letter-sheet header { display:flex; align-items:flex-start; justify-content:space-between; }.couple-letter-sheet header span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }.couple-letter-sheet h2 { margin-top:6px; font-size:19px; }.couple-letter-sheet header button { width:28px; height:28px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:18px; cursor:pointer; }.couple-letter-date { display:block; margin-top:18px; color:#999; font-size:10px; }.couple-letter-content { margin-top:10px; padding:13px; border-radius:13px; background:rgba(0,0,0,.045); color:#444; font-size:12px; line-height:1.7; white-space:pre-wrap; }.couple-letter-reply { margin-top:13px; padding:13px; border-left:2px solid #999; background:rgba(0,0,0,.035); }.couple-letter-reply span, .couple-letter-waiting { color:#999; font-size:10px; }.couple-letter-reply p { margin-top:6px; color:#555; font-size:12px; line-height:1.7; }.couple-letter-waiting { margin-top:14px; }.couple-letter-sheet footer { display:flex; justify-content:flex-end; margin-top:18px; }.couple-letter-sheet footer button { min-height:36px; padding:0 14px; border:0; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.couple-wish { display:flex; align-items:center; gap:10px; width:100%; padding:14px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:rgba(255,255,255,.68); color:#333; text-align:left; cursor:pointer; }
.couple-wish-wrap { display:grid; gap:6px; }.couple-wish span { display:grid; gap:4px; }.couple-wish span small { color:#999; font-size:9px; }.couple-wish-reply { margin:0 8px; padding:10px 12px; border-left:2px solid #bbb; background:rgba(0,0,0,.035); }.couple-wish-reply b { color:#999; font-size:9px; font-weight:500; }.couple-wish-reply p { margin-top:4px; color:#555; font-size:11px; line-height:1.55; }
.couple-shared-wishes { margin:16px 0; padding:16px; border-radius:18px; background:rgba(255,255,255,.68); }.couple-shared-wishes header { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }.couple-shared-wishes header span { color:#999; font-size:9px; letter-spacing:.12em; }.couple-shared-wishes h3 { margin:3px 0 0; font-size:16px; }.couple-shared-wishes header button,.couple-wish-reply button { border:0; border-radius:9px; padding:8px 10px; background:#252525; color:#fff; font:inherit; font-size:10px; cursor:pointer; }.couple-wish-note { margin:0 12px; color:#666; font-size:11px; line-height:1.6; white-space:pre-wrap; }.couple-wish-reply button { margin-top:8px; }
.couple-wish i { color:#888; font-size:18px; font-style:normal; }.couple-wish.is-done span { color:#999; text-decoration:line-through; }
.couple-question { max-width:520px; margin:auto; padding:18px; }.couple-question h3 { font-size:16px; line-height:1.5; }.couple-question textarea { width:100%; min-height:130px; margin-top:15px; padding:11px; border:1px solid rgba(0,0,0,.1); border-radius:11px; outline:0; background:#fff; color:#222; font:inherit; font-size:12px; resize:vertical; }.couple-question .couple-primary { margin-top:10px; }
.couple-choice-list { display:grid; gap:9px; max-width:520px; margin:auto; }.couple-choice { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:52px; padding:0 15px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:rgba(255,255,255,.68); color:#333; font:inherit; font-size:12px; text-align:left; cursor:pointer; }.couple-choice i { color:#aaa; font-size:16px; font-style:normal; }.couple-choice.is-selected { border-color:#222; background:#fff; }.couple-choice.is-selected i { color:#222; }.couple-response { max-width:520px; margin:16px auto 0; padding:14px; border-radius:15px; background:rgba(0,0,0,.045); }.couple-response span { color:#999; font-size:10px; }.couple-response p { margin-top:6px; color:#555; font-size:12px; line-height:1.6; }
.couple-choice:disabled { cursor:wait; opacity:.58; }.couple-api-status { margin:15px auto; color:#999; font-size:11px; text-align:center; }
.couple-secondary { display:block; width:100%; max-width:520px; min-height:35px; margin:13px auto 0; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:rgba(255,255,255,.62); color:#555; font:inherit; font-size:11px; cursor:pointer; }.couple-secondary:disabled { opacity:.55; cursor:wait; }
.couple-record-sheet { position:fixed; inset:0; z-index:8; display:grid; place-items:center; padding:20px; }.couple-record-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }.couple-record-sheet > section { position:relative; width:min(100%,370px); padding:19px; border:1px solid rgba(255,255,255,.78); border-radius:21px; background:rgba(248,248,246,.97); box-shadow:0 20px 60px rgba(0,0,0,.2); }.couple-record-sheet header { display:flex; align-items:center; justify-content:space-between; }.couple-record-sheet h2 { font-size:18px; }.couple-record-sheet header button { width:28px; height:28px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:18px; cursor:pointer; }.couple-record-sheet label { display:grid; gap:7px; margin-top:15px; color:#777; font-size:11px; }.couple-record-sheet input, .couple-record-sheet textarea { width:100%; padding:0 10px; border:1px solid rgba(0,0,0,.11); border-radius:10px; outline:0; background:#fff; color:#222; font:inherit; font-size:12px; }.couple-record-sheet input { height:39px; }.couple-record-sheet textarea { min-height:100px; padding-top:10px; resize:vertical; }.couple-record-sheet footer { display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }.couple-record-sheet footer button { min-height:35px; padding:0 14px; border:0; border-radius:10px; background:#eee; color:#555; font:inherit; font-size:11px; cursor:pointer; }.couple-record-sheet footer button:last-child { background:#222; color:#fff; }
.couple-tabs { position:fixed; right:12px; bottom:18px; left:12px; z-index:3; display:flex; justify-content:space-around; height:72px; padding:8px 8px 5px; border:1px solid rgba(255,255,255,.62); border-radius:25px; background:rgba(255,255,255,.62); box-shadow:0 8px 25px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.72); -webkit-backdrop-filter:blur(24px) saturate(150%); backdrop-filter:blur(24px) saturate(150%); }
.couple-tabs button { display:grid; place-items:center; gap:2px; min-width:48px; border:0; background:transparent; color:#999; font-size:22px; cursor:pointer; }.couple-tabs button small { font-size:9px; }.couple-tabs button.is-active { color:#222; }.couple-tab-icon { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.couple-answer-thread { display:grid; gap:8px; margin-top:16px; padding-top:14px; border-top:1px solid rgba(0,0,0,.08); }.couple-answer-thread > div { padding:11px 12px; border-radius:12px; background:rgba(0,0,0,.045); }.couple-answer-thread span { color:#999; font-size:10px; }.couple-answer-thread p { margin-top:5px; color:#555; font-size:11px; line-height:1.6; }
.couple-role-sheet { position:fixed; inset:0; z-index:5; display:grid; place-items:center; padding:20px; }.couple-role-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }.couple-role-sheet > section { position:relative; width:min(100%,380px); max-height:72vh; overflow:auto; padding:18px; border:1px solid rgba(255,255,255,.75); border-radius:22px; background:rgba(248,248,246,.96); box-shadow:0 20px 60px rgba(0,0,0,.2); }.couple-role-sheet header { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }.couple-role-sheet header h2 { font-size:18px; }.couple-role-sheet header button { width:28px; height:28px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#666; font-size:18px; cursor:pointer; }.couple-role-sheet > section > div { display:grid; gap:8px; max-height:55vh; overflow-y:auto; }
.couple-role-entry-hint { max-width:260px; margin-top:6px; color:#999; font-size:10px; line-height:1.5; }
@media not all { .couple-home-grid button, .couple-feature-card, .couple-list-card, .couple-letter, .couple-memory-card, .couple-question, .couple-wish, .couple-choice, .couple-secondary { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); color:#eee; }.couple-choice.is-selected { border-color:#eee; background:rgba(255,255,255,.13); }.couple-choice.is-selected i { color:#fff; }.couple-feature-card p, .couple-memory-card p, .couple-letter p { color:#aaa; }.couple-tabs { border-color:rgba(255,255,255,.18); background:rgba(35,35,35,.72); }.couple-tabs button.is-active { color:#fff; }.couple-feature-card button, .couple-primary { background:#eee; color:#111; }.couple-question textarea, .couple-record-sheet input, .couple-record-sheet textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.22); color:#eee; }.couple-answer-thread, .couple-response, .couple-wish-reply { border-color:rgba(255,255,255,.12); }.couple-answer-thread > div, .couple-response, .couple-wish-reply { background:rgba(255,255,255,.08); }.couple-answer-thread p, .couple-response p, .couple-wish-reply p { color:#ddd; }.couple-role-sheet > section, .couple-record-sheet > section, .couple-letter-sheet > section { border-color:rgba(255,255,255,.14); background:rgba(35,35,35,.96); }.couple-role-sheet header button, .couple-record-sheet header button, .couple-letter-sheet header button { background:rgba(255,255,255,.1); color:#ddd; }.couple-record-sheet footer button { background:rgba(255,255,255,.1); color:#ddd; }.couple-record-sheet footer button:last-child, .couple-letter-sheet footer button { background:#eee; color:#111; }.couple-letter-content, .couple-letter-reply { background:rgba(255,255,255,.08); }.couple-letter-content, .couple-letter-reply p { color:#ddd; } }

/* 游戏 App：单人小游戏与情侣互动游戏大厅 */
.game-app { position:fixed; inset:0; z-index:30; display:none; background:#f5f5f7; color:#222; }
.game-app.is-open { display:block; }.game-page { height:100%; overflow-y:auto; }.game-header { position:sticky; top:0; z-index:3; display:flex; align-items:flex-start; justify-content:space-between; padding:max(22px,env(safe-area-inset-top)) 22px 16px; border-bottom:1px solid rgba(0,0,0,.08); background:rgba(255,255,255,.86); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }.game-header span,.game-hero>span,.game-interaction>span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }.game-header h1 { margin-top:6px; font-size:25px; letter-spacing:-.04em; }.game-header button { width:30px; height:30px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#555; font-size:20px; cursor:pointer; }.game-main { padding:22px 20px 42px; }.game-hero,.game-board,.game-card,.game-interaction { border:1px solid rgba(0,0,0,.08); border-radius:20px; background:rgba(255,255,255,.74); }.game-hero { max-width:520px; margin:auto; padding:20px; }.game-hero h2 { margin-top:8px; font-size:23px; }.game-hero p,.game-hint,.game-interaction>p { margin-top:7px; color:#999; font-size:11px; line-height:1.6; }.game-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; max-width:520px; margin:16px auto 0; }.game-card { display:grid; justify-items:start; gap:5px; min-height:116px; padding:15px; color:#222; text-align:left; cursor:pointer; }.game-card i { display:grid; place-items:center; width:38px; height:38px; border-radius:13px; background:#222; color:#fff; font-size:20px; font-style:normal; }.game-card span { font-size:13px; font-weight:600; }.game-card small { color:#999; font-size:10px; }.game-back { margin-bottom:12px; border:0; background:none; color:#777; font:inherit; font-size:11px; cursor:pointer; }.game-board { max-width:520px; margin:auto; padding:17px; }.game-score { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; font-size:11px; }.game-score b { margin-left:5px; font-size:17px; }.game-score button,.game-primary { min-height:34px; padding:0 13px; border:0; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }.g2048,.gmatch,.gpuzzle,.gmemory,.gmines,.ggomoku { display:grid; gap:6px; }.g2048 { grid-template-columns:repeat(4,1fr); padding:7px; border-radius:14px; background:#ddd; }.g2048 .tile { min-height:58px; border:0; border-radius:10px; background:#eee; color:#222; font-size:20px; font-weight:700; cursor:pointer; }.g2048 .t2 { background:#fff; }.g2048 .t4 { background:#ddd; }.g2048 .t8,.g2048 .t16 { background:#222; color:#fff; }.gmatch { grid-template-columns:repeat(6,1fr); }.gmatch button,.gpuzzle button,.gmemory button,.gmines button,.ggomoku button { border:0; border-radius:10px; background:#eee; color:#333; cursor:pointer; }.gmatch button { aspect-ratio:1; font-size:18px; }.gpuzzle { grid-template-columns:repeat(3,1fr); max-width:280px; margin:auto; }.gpuzzle button { aspect-ratio:1; font-size:20px; }.gpuzzle button.is-empty { background:transparent; }.gsudoku { display:grid; grid-template-columns:repeat(9,1fr); gap:2px; max-width:360px; margin:10px auto 15px; }.gsudoku input { width:100%; aspect-ratio:1; border:1px solid #ddd; border-radius:4px; background:#fff; color:#222; text-align:center; font:inherit; font-size:13px; }.gsudoku input:disabled { background:#e8e8e8; font-weight:700; }.gmemory { grid-template-columns:repeat(4,1fr); max-width:310px; margin:auto; }.gmemory button { aspect-ratio:1; color:transparent; font-size:23px; }.gmemory button.is-open { background:#222; color:#fff; }.gmines { grid-template-columns:repeat(5,1fr); max-width:300px; margin:auto; }.gmines button { aspect-ratio:1; font-size:18px; }.gmines button.is-mine { background:#222; color:#fff; }.gmines button.is-safe { background:#ddd; }.gtetris { display:grid; grid-template-columns:repeat(8,1fr); gap:3px; max-width:280px; margin:10px auto 15px; padding:5px; background:#ddd; }.gtetris button { aspect-ratio:1; border:0; border-radius:3px; background:#f5f5f5; cursor:pointer; }.gtetris button.is-filled { background:#222; }.ggomoku { grid-template-columns:repeat(10,1fr); max-width:360px; margin:auto; padding:5px; background:#d7d7d7; }.ggomoku button { aspect-ratio:1; border-radius:3px; background:#f4f4f4; font-size:14px; }.game-result { margin-top:13px; color:#555; font-size:12px; line-height:1.6; }.game-interaction { padding:20px; }.game-interaction h2 { margin-top:8px; font-size:21px; }.game-options { display:grid; gap:8px; margin-top:18px; }.game-options button { min-height:43px; border:1px solid rgba(0,0,0,.1); border-radius:12px; background:#fff; color:#333; font:inherit; font-size:12px; cursor:pointer; }.dice-result { display:grid; place-items:center; height:100px; margin:18px 0; border-radius:18px; background:#222; color:#fff; font-size:48px; }.joint-puzzle { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; margin:18px 0; }.joint-puzzle i { display:grid; place-items:center; aspect-ratio:1; border-radius:8px; background:#e7e7e7; color:#fff; font-style:normal; }.joint-puzzle i.is-done { background:#222; }.date-plan { display:grid; gap:9px; margin:17px 0; }.date-plan label { display:flex; align-items:center; justify-content:space-between; color:#777; font-size:11px; }.date-plan select { min-width:150px; height:34px; padding:0 8px; border:1px solid #ddd; border-radius:9px; background:#fff; color:#333; font:inherit; font-size:11px; }
@media not all { .game-app { background:#202020; color:#eee; }.game-header { border-color:rgba(255,255,255,.12); background:rgba(32,32,32,.86); }.game-header button { background:rgba(255,255,255,.1); color:#ddd; }.game-hero,.game-board,.game-card,.game-interaction { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }.game-card { color:#eee; }.game-card i,.game-score button,.game-primary,.dice-result { background:#eee; color:#111; }.g2048 { background:#444; }.g2048 .tile,.gmatch button,.gpuzzle button,.gmemory button,.gmines button,.ggomoku button { background:rgba(255,255,255,.12); color:#eee; }.g2048 .t2 { background:#eee; color:#111; }.g2048 .t8,.g2048 .t16,.gmemory button.is-open,.gmines button.is-mine,.ggomoku button { background:#eee; color:#111; }.gsudoku input { border-color:#555; background:#333; color:#eee; }.gsudoku input:disabled { background:#555; }.gtetris { background:#444; }.gtetris button { background:#333; }.gtetris button.is-filled { background:#eee; }.game-options button,.date-plan select { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.1); color:#eee; }.date-plan select { background:#333; }.joint-puzzle i { background:#444; }.joint-puzzle i.is-done { background:#eee; color:#111; }.game-result { color:#ddd; } }
.gmatch button.is-selected { outline:2px solid #222; outline-offset:2px; }.gtetris button.is-active { background:#222; }.tetris-controls { display:flex; justify-content:center; gap:8px; margin-top:12px; }.tetris-controls button { width:42px; height:34px; border:0; border-radius:10px; background:#eee; color:#333; font:inherit; font-size:17px; cursor:pointer; }.tetris-controls button:last-child { background:#222; color:#fff; }
@media not all { .gmatch button.is-selected { outline-color:#fff; }.gtetris button.is-active { background:#eee; }.tetris-controls button { background:rgba(255,255,255,.12); color:#eee; }.tetris-controls button:last-child { background:#eee; color:#111; } }
.doubao-app { position:fixed; inset:0; z-index:30; display:none; background:#f5f5f7; color:#222; }.doubao-app.is-open { display:block; }.doubao-page { display:flex; flex-direction:column; height:100%; }.doubao-header { display:flex; align-items:flex-start; justify-content:space-between; padding:max(22px,env(safe-area-inset-top)) 22px 16px; border-bottom:1px solid rgba(0,0,0,.08); background:rgba(255,255,255,.86); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }.doubao-header span,.doubao-welcome>span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }.doubao-header h1 { margin-top:6px; font-size:25px; letter-spacing:-.04em; }.doubao-header-actions { display:flex; align-items:center; gap:8px; }.doubao-header-actions button { border:0; cursor:pointer; }.doubao-header-actions button:first-child { min-height:30px; padding:0 10px; border-radius:9px; background:rgba(0,0,0,.06); color:#666; font:inherit; font-size:10px; }.doubao-header-actions button:last-child { width:30px; height:30px; border-radius:50%; background:rgba(0,0,0,.07); color:#555; font-size:20px; }.doubao-main { flex:1; overflow-y:auto; padding:22px 20px 28px; }.doubao-welcome { max-width:520px; margin:0 auto 18px; padding:19px; border:1px solid rgba(0,0,0,.08); border-radius:20px; background:rgba(255,255,255,.72); }.doubao-welcome h2 { margin-top:7px; font-size:22px; }.doubao-welcome p { margin-top:7px; color:#999; font-size:11px; line-height:1.6; }.doubao-messages { display:grid; gap:10px; max-width:520px; margin:auto; }.doubao-message { max-width:82%; padding:12px 14px; border:1px solid rgba(0,0,0,.08); border-radius:16px; }.doubao-message span { display:block; margin-bottom:5px; color:#999; font-size:9px; letter-spacing:.08em; }.doubao-message p { font-size:12px; line-height:1.65; }.doubao-message.is-user { justify-self:end; border-color:#222; background:#222; color:#fff; }.doubao-message.is-user span { color:#bbb; }.doubao-message.is-assistant { justify-self:start; background:rgba(255,255,255,.78); }.doubao-composer { display:flex; align-items:flex-end; gap:8px; padding:10px 18px max(12px,env(safe-area-inset-bottom)); border-top:1px solid rgba(0,0,0,.08); background:rgba(255,255,255,.82); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }.doubao-composer textarea { flex:1; min-height:42px; max-height:120px; padding:12px 13px; border:1px solid rgba(0,0,0,.1); border-radius:13px; outline:0; background:rgba(245,245,247,.85); color:#222; font:inherit; font-size:12px; resize:none; }.doubao-composer button { width:42px; height:42px; border:0; border-radius:13px; background:#222; color:#fff; font-size:22px; cursor:pointer; }
@media not all { .doubao-app { background:#202020; color:#eee; }.doubao-header,.doubao-composer { border-color:rgba(255,255,255,.12); background:rgba(32,32,32,.86); }.doubao-header-actions button:first-child,.doubao-header-actions button:last-child { background:rgba(255,255,255,.1); color:#ddd; }.doubao-welcome,.doubao-message.is-assistant { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }.doubao-message.is-user { border-color:#eee; background:#eee; color:#111; }.doubao-message.is-user span { color:#777; }.doubao-composer textarea { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#eee; }.doubao-composer button { background:#eee; color:#111; } }
.doubao-app { background:linear-gradient(160deg,#fff7fb 0%,#f6f3ff 48%,#f1f7ff 100%); color:#282238; }
.doubao-header { border-bottom-color:rgba(126,91,177,.1); background:rgba(255,255,255,.7); box-shadow:0 5px 22px rgba(107,78,151,.06); }
.doubao-header span,.doubao-welcome>span { color:#a477cf; }
.doubao-header h1 { color:#302746; font-size:24px; }
.doubao-header-actions button:first-child { background:#f0e8ff; color:#7955a9; }
.doubao-header-actions button:last-child { background:#fff; color:#80649c; box-shadow:0 4px 14px rgba(103,74,146,.1); }
.doubao-main { padding-top:25px; }
.doubao-welcome { border:0; background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(249,239,255,.86)); box-shadow:0 12px 30px rgba(125,87,171,.1); }
.doubao-welcome h2 { color:#36264f; }
.doubao-welcome p { color:#947eaa; }
.doubao-welcome::after { display:block; width:42px; height:5px; margin-top:15px; border-radius:99px; background:linear-gradient(90deg,#e6a9d9,#9f9cf1); content:""; }
.doubao-message { border:0; box-shadow:0 6px 18px rgba(100,73,135,.07); }
.doubao-message span { color:#a58bb9; }
.doubao-message.is-assistant { background:rgba(255,255,255,.86); }
.doubao-message.is-user { background:linear-gradient(135deg,#a779e0,#8c9bf1); color:#fff; box-shadow:0 8px 20px rgba(128,103,211,.2); }
.doubao-message.is-user span { color:rgba(255,255,255,.72); }
.doubao-composer { border-top-color:rgba(126,91,177,.1); background:rgba(255,255,255,.68); }
.doubao-composer textarea { border:1px solid rgba(166,133,207,.22); background:rgba(255,255,255,.86); color:#302746; box-shadow:inset 0 1px 3px rgba(96,66,136,.04); }
.doubao-composer button { background:linear-gradient(135deg,#a778df,#8b96ee); box-shadow:0 6px 14px rgba(126,101,205,.24); }
@media not all { .doubao-app { background:linear-gradient(160deg,#241d2e,#20243a 55%,#1d2935); color:#f5efff; }.doubao-header,.doubao-composer { border-color:rgba(220,193,255,.12); background:rgba(37,30,51,.72); }.doubao-header h1,.doubao-welcome h2 { color:#fff5ff; }.doubao-header-actions button:first-child { background:rgba(186,143,255,.2); color:#e5cbff; }.doubao-header-actions button:last-child { background:rgba(255,255,255,.12); color:#eedcff; }.doubao-welcome { background:linear-gradient(135deg,rgba(74,53,91,.88),rgba(51,60,104,.86)); box-shadow:none; }.doubao-welcome p { color:#c9b8d7; }.doubao-message.is-assistant { background:rgba(255,255,255,.11); }.doubao-message.is-user { background:linear-gradient(135deg,#8f63c4,#6879d5); }.doubao-composer textarea { border-color:rgba(220,193,255,.18); background:rgba(255,255,255,.1); color:#fff; }.doubao-composer button { background:linear-gradient(135deg,#b17be4,#8090ed); } }

/* 豆包会话页：参考现代 AI 聊天界面的清爽白底与蓝色操作系统 */
.doubao-app, .doubao-app:is(.is-open) { background:#fff; color:#111; }.doubao-page { background:#fff; }.doubao-header { position:relative; flex:0 0 128px; align-items:center; min-height:128px; padding:max(25px,env(safe-area-inset-top)) 28px 16px; border:0; background:#fff; box-shadow:none; -webkit-backdrop-filter:none; backdrop-filter:none; }.doubao-menu-button { display:grid; flex:0 0 48px; place-items:center; width:48px; height:48px; padding:0; border:0; background:transparent; color:#000; cursor:pointer; }.doubao-menu-button svg { width:35px; height:35px; fill:none; stroke:currentColor; stroke-width:3.5; stroke-linecap:round; }.doubao-chat-title { position:absolute; top:max(29px,env(safe-area-inset-top)); right:112px; left:112px; text-align:center; }.doubao-chat-title h1 { margin:0; color:#000; font-size:24px; font-weight:700; letter-spacing:-.04em; line-height:1.25; }.doubao-chat-title h1 i { color:#c6c6c6; font-size:30px; font-style:normal; vertical-align:-2px; }.doubao-chat-title p { margin-top:6px; color:#a0a0a0; font-size:12px; }.doubao-header-tools { display:flex; align-items:center; gap:13px; margin-left:auto; }.doubao-header-tools button { display:grid; place-items:center; width:42px; height:42px; padding:0; border:0; background:transparent; color:#000; cursor:pointer; }.doubao-header-tools svg { width:31px; height:31px; fill:none; stroke:currentColor; stroke-width:2.6; stroke-linecap:round; stroke-linejoin:round; }.doubao-menu-popover { position:absolute; top:calc(max(25px,env(safe-area-inset-top)) + 48px); left:25px; z-index:5; display:grid; min-width:120px; padding:6px; border:1px solid #eee; border-radius:13px; background:#fff; box-shadow:0 12px 28px rgba(0,0,0,.13); }.doubao-menu-popover button { min-height:34px; border:0; border-radius:8px; background:transparent; color:#333; font:inherit; font-size:11px; text-align:left; cursor:pointer; }.doubao-menu-popover button:hover { background:#f4f4f4; }.doubao-main { min-height:0; padding:23px 36px 14px; background:#fff; }.doubao-messages { gap:19px; max-width:690px; }.doubao-message { max-width:92%; padding:0; border:0; border-radius:0; background:none; box-shadow:none; }.doubao-message p { font-size:16px; line-height:1.65; }.doubao-message.is-user { justify-self:end; width:60px; min-height:70px; padding:15px 8px; border-radius:24px 24px 24px 24px; background:#56afe8; color:#fff; box-shadow:none; text-align:center; }.doubao-message.is-user p { font-size:18px; line-height:1.35; }.doubao-message.is-assistant { width:100%; max-width:none; overflow:hidden; border-radius:25px; background:#f7f7f7; color:#111; }.doubao-message.is-assistant > p { min-height:70px; padding:22px 24px; }.doubao-loading { color:#999; }.doubao-answer-actions { display:flex; align-items:center; gap:17px; min-height:72px; padding:12px 23px; border-top:1px solid #dfdfdf; }.doubao-answer-actions button { display:grid; place-items:center; width:43px; height:43px; padding:0; border:0; border-radius:15px; background:#edf4fb; color:#2f68ed; cursor:pointer; }.doubao-answer-actions button:last-child { margin-left:auto; }.doubao-answer-actions svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }.doubao-quick-wrap { flex:0 0 auto; overflow:hidden; padding:8px 0 14px; background:#fff; }.doubao-quick-list { display:flex; gap:11px; width:max-content; min-width:100%; padding:0 36px; overflow-x:auto; scrollbar-width:none; }.doubao-quick-list::-webkit-scrollbar { display:none; }.doubao-quick-list button { display:flex; align-items:center; flex:0 0 auto; gap:7px; min-height:46px; padding:0 15px; border:1px solid #e3e3e3; border-radius:14px; background:#fff; color:#111; font:inherit; font-size:15px; font-weight:650; white-space:nowrap; cursor:pointer; }.doubao-quick-list svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2.7; stroke-linecap:round; stroke-linejoin:round; }.doubao-quick-list i { color:#c3c3c3; font-size:21px; font-style:normal; }.doubao-composer { flex:0 0 auto; gap:12px; margin:0 36px max(18px,env(safe-area-inset-bottom)); padding:0 17px; border:0; border-radius:25px; background:#fff; box-shadow:0 12px 26px rgba(0,0,0,.12); -webkit-backdrop-filter:none; backdrop-filter:none; }.doubao-composer textarea { min-height:68px; padding:22px 4px; border:0; border-radius:0; background:transparent; box-shadow:none; color:#111; font-size:17px; line-height:1.35; }.doubao-composer textarea::placeholder { color:#a4a4a4; }.doubao-composer button { display:grid; flex:0 0 45px; place-items:center; width:45px; height:45px; padding:0; border:0; border-radius:50%; background:transparent; color:#000; box-shadow:none; cursor:pointer; }.doubao-composer button svg { width:34px; height:34px; fill:none; stroke:currentColor; stroke-width:2.9; stroke-linecap:round; stroke-linejoin:round; }.doubao-composer .doubao-plus-button svg { stroke-width:3.3; }
@media not all { .doubao-app, .doubao-app:is(.is-open), .doubao-page, .doubao-header, .doubao-main, .doubao-quick-wrap { background:#fff; color:#111; }.doubao-header h1,.doubao-chat-title h1,.doubao-header-tools button,.doubao-menu-button { color:#000; }.doubao-message.is-assistant { background:#f7f7f7; color:#111; }.doubao-message.is-user { background:#56afe8; color:#fff; }.doubao-composer { background:#fff; }.doubao-composer textarea { background:transparent; color:#111; }.doubao-composer button { background:transparent; color:#000; }.doubao-quick-list button { background:#fff; color:#111; }.doubao-answer-actions button { background:#edf4fb; color:#2f68ed; } }
.doubao-header { padding-right:7px; padding-left:7px; }.doubao-chat-title { top:calc(max(29px,env(safe-area-inset-top)) + 18px); }.doubao-chat-title p { margin:0; font-size:13px; }.doubao-main { padding-right:22px; padding-left:22px; }.doubao-message.is-user { transform:translateX(11px); }.doubao-message.is-assistant { transform:translateX(-11px); }.doubao-quick-list { padding-right:15px; padding-left:15px; }.doubao-composer { margin-right:14px; margin-left:14px; padding-right:14px; padding-left:14px; }

/* 情侣空间：角色选择与聊天绑定的用户设定联动，不包含账本功能 */
.couple-app { position: fixed; inset: 0; z-index: 30; display: none; background: #f4f4f2; color: #222; }
.couple-app.is-open { display: block; }
.couple-page { height: 100%; overflow-y: auto; }
.couple-header { position: sticky; top: 0; z-index: 2; display: flex; align-items: flex-start; justify-content: space-between; padding: max(22px, env(safe-area-inset-top)) 22px 16px; border-bottom: 1px solid rgba(0,0,0,.08); background: rgba(244,244,242,.9); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); }
.couple-header span, .couple-section-head span { color: #999; font-size: 9px; font-weight: 700; letter-spacing: .16em; }
.couple-header h1 { margin-top: 6px; font-size: 25px; letter-spacing: -.04em; }
.couple-header button { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 20px; cursor: pointer; }
.couple-main { padding: 24px 20px 112px; }
.couple-hero { display: grid; grid-template-columns: 1fr 34px 1fr; align-items: center; max-width: 430px; margin: 12px auto 28px; padding: 28px 20px 24px; border: 1px solid rgba(0,0,0,.08); border-radius: 24px; background: rgba(255,255,255,.7); text-align: center; }
.couple-hero-avatar { display: grid; place-items: center; width: 76px; height: 76px; margin: auto; overflow: hidden; border-radius: 25px; background: #e0e0dc; color: #777; font-size: 22px; }
.couple-hero-avatar img, .couple-role-avatar img { width: 100%; height: 100%; object-fit: cover; }
.couple-heart { color: #888; font-size: 25px; }
.couple-hero h2 { grid-column: 1 / -1; margin-top: 19px; font-size: 19px; }
.couple-hero p { grid-column: 1 / -1; margin-top: 7px; color: #999; font-size: 11px; }
.couple-section { max-width: 520px; margin: auto; }
.couple-section-head { display: flex; align-items: end; justify-content: space-between; margin-bottom: 11px; }
.couple-section-head h2 { margin-top: 5px; font-size: 17px; }
.couple-section-head small { color: #aaa; font-size: 10px; }
.couple-role-list { display: grid; gap: 8px; }
.couple-role { display: flex; align-items: center; width: 100%; gap: 11px; padding: 10px 12px; border: 1px solid rgba(0,0,0,.08); border-radius: 15px; background: rgba(255,255,255,.68); color: #333; text-align: left; cursor: pointer; }
.couple-role.is-selected { border-color: #222; background: #fff; }
.couple-role-avatar { display: grid; flex: 0 0 44px; place-items: center; width: 44px; height: 44px; overflow: hidden; border-radius: 14px; background: #e0e0dc; color: #777; }
.couple-role > span { display: grid; flex: 1; gap: 4px; min-width: 0; }
.couple-role b { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.couple-role small { overflow: hidden; color: #999; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.couple-role i { color: #999; font-size: 18px; font-style: normal; }
.couple-role.is-selected i { color: #222; font-size: 14px; }
.couple-empty, .couple-note { color: #999; font-size: 11px; line-height: 1.6; text-align: center; }
.couple-note { max-width: 350px; margin: 20px auto 0; }
@media not all {
  .couple-app { background: #202020; color: #eee; }
  .couple-header { border-color: rgba(255,255,255,.12); background: rgba(32,32,32,.9); }
  .couple-header button { background: rgba(255,255,255,.1); color: #ddd; }
  .couple-hero, .couple-role { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); }
  .couple-role.is-selected { border-color: #eee; background: rgba(255,255,255,.13); }
  .couple-role.is-selected i { color: #fff; }
  .couple-hero-avatar, .couple-role-avatar { background: #444; color: #ddd; }
}

/* 豆包消息位置微调 */
.doubao-message.is-user, .doubao-message.is-assistant { width:fit-content; max-width:85vw; box-sizing:border-box; }
.doubao-message.is-user, .doubao-message.is-assistant, .doubao-message.is-user p, .doubao-message.is-assistant p { text-align:left; }
.doubao-message.is-user { min-height:44px; padding-top:6px; padding-bottom:6px; }
.doubao-message.is-assistant { transform:translateX(-7px); }

/* 购物 App：按用户设定隔离的角色陪逛商店 */
.shopping-app { position:fixed; inset:0; z-index:30; display:none; background:#f5f5f7; color:#222; }.shopping-app.is-open { display:block; }.shopping-page { display:flex; flex-direction:column; height:100%; }.shopping-header { display:flex; align-items:flex-start; justify-content:space-between; padding:max(22px,env(safe-area-inset-top)) 22px 16px; border-bottom:1px solid rgba(0,0,0,.07); background:rgba(255,255,255,.88); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }.shopping-header span,.shop-section-head span,.shop-account span,.shop-companion span,.shop-detail>span,.shop-sheet header span { color:#999; font-size:9px; font-weight:700; letter-spacing:.15em; }.shopping-header h1 { margin-top:6px; font-size:25px; letter-spacing:-.04em; }.shopping-header>button,.shop-sheet header>button { display:grid; place-items:center; width:30px; height:30px; border:0; border-radius:50%; background:rgba(0,0,0,.06); color:#555; cursor:pointer; }.shopping-header svg,.shop-sheet header svg { width:19px; fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; }.shopping-main { flex:1; overflow-y:auto; padding:20px 20px 104px; }.shop-account,.shop-companion,.shop-product,.shop-cart-list article,.shop-order-list article,.shop-wish-list article,.shop-gift-list article { border:1px solid rgba(0,0,0,.08); background:rgba(255,255,255,.74); }.shop-account { display:flex; align-items:center; gap:11px; max-width:520px; margin:auto; padding:11px; border-radius:17px; cursor:pointer; }.shop-account-avatar,.shop-role-list i,.shop-profile-list i { display:grid; flex:0 0 42px; place-items:center; width:42px; height:42px; overflow:hidden; border-radius:14px; background:#dedede; color:#777; font-size:14px; font-style:normal; }.shop-account-avatar img,.shop-role-list img,.shop-profile-list img { width:100%; height:100%; object-fit:cover; }.shop-account div { display:grid; flex:1; gap:3px; }.shop-account b { font-size:13px; }.shop-account small { color:#999; font-size:10px; }.shop-account>i { color:#aaa; font-style:normal; }.shop-search { display:flex; align-items:center; gap:8px; max-width:520px; height:42px; margin:13px auto; padding:0 12px; border-radius:13px; background:#e9e9eb; }.shop-search svg { width:18px; fill:none; stroke:#888; stroke-width:2.5; }.shop-search input { flex:1; border:0; outline:0; background:transparent; color:#222; font:inherit; font-size:12px; }.shop-companion { display:flex; align-items:center; justify-content:space-between; gap:10px; max-width:520px; margin:0 auto 22px; padding:15px; border-radius:19px; }.shop-companion h2 { margin-top:6px; font-size:16px; }.shop-companion p { margin-top:5px; color:#999; font-size:10px; line-height:1.5; }.shop-companion button,.shop-section-head button,.shop-wish-list button { min-height:31px; padding:0 11px; border:0; border-radius:9px; background:#222; color:#fff; font:inherit; font-size:10px; cursor:pointer; }.shop-section-head { display:flex; align-items:end; justify-content:space-between; max-width:520px; margin:20px auto 10px; }.shop-section-head h2 { margin-top:5px; font-size:18px; }.shop-section-head small { color:#999; font-size:10px; }.shop-section-head button { display:flex; align-items:center; gap:4px; background:#fff; color:#333; border:1px solid rgba(0,0,0,.1); }.shop-section-head button svg { width:15px; fill:none; stroke:currentColor; stroke-width:2.4; }.shop-products { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; max-width:520px; margin:auto; }.shop-product { position:relative; overflow:hidden; border-radius:17px; }.shop-product-cover { display:grid; place-items:center; width:100%; aspect-ratio:1.08; border:0; color:#fff; cursor:pointer; }.shop-product-cover i,.shop-detail-cover i,.shop-mini-cover { font-size:38px; font-style:normal; font-weight:300; }.shop-product>div { display:grid; gap:4px; padding:11px 11px 13px; }.shop-product b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }.shop-product small { min-height:27px; overflow:hidden; color:#999; font-size:9px; line-height:1.4; }.shop-product span { margin-top:2px; font-size:12px; font-weight:700; }.shop-wish { position:absolute; top:8px; right:8px; display:grid; place-items:center; width:28px; height:28px; border:0; border-radius:50%; background:rgba(255,255,255,.72); color:#555; cursor:pointer; }.shop-wish.is-active { color:#d9687e; }.shop-wish svg { width:17px; fill:none; stroke:currentColor; stroke-width:2.5; }.lilac { background:linear-gradient(135deg,#d7c6ea,#856aaf); }.blue { background:linear-gradient(135deg,#bfd6ed,#628bb7); }.cream { background:linear-gradient(135deg,#f1e4cb,#c7a87c); }.rose { background:linear-gradient(135deg,#eccbd0,#bd7484); }.ink { background:linear-gradient(135deg,#7a7b8a,#2e3040); }.gold { background:linear-gradient(135deg,#f4dfa2,#c9a555); }.mint { background:linear-gradient(135deg,#cae5d9,#6fac94); }.pink { background:linear-gradient(135deg,#f3c5d4,#c76e91); }.shop-cart-list,.shop-order-list,.shop-wish-list,.shop-gift-list { display:grid; gap:9px; max-width:520px; margin:auto; }.shop-cart-list article,.shop-order-list article,.shop-wish-list article,.shop-gift-list article { display:flex; align-items:center; gap:10px; padding:10px; border-radius:15px; }.shop-mini-cover { display:grid; flex:0 0 42px; place-items:center; width:42px; height:42px; border-radius:12px; color:#fff; font-size:18px; }.shop-cart-list article>div:nth-child(2),.shop-order-list article>div:nth-child(2),.shop-wish-list article>div:nth-child(2),.shop-gift-list article>div:nth-child(2) { display:grid; flex:1; gap:4px; min-width:0; }.shop-cart-list b,.shop-order-list b,.shop-wish-list b,.shop-gift-list b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }.shop-cart-list small,.shop-order-list small,.shop-wish-list small,.shop-gift-list small { color:#999; font-size:10px; }.shop-order-list p,.shop-gift-list p { color:#777; font-size:10px; line-height:1.4; }.shop-order-list strong { font-size:11px; }.shop-quantity { display:flex; align-items:center; gap:7px; }.shop-quantity button { width:23px; height:23px; border:0; border-radius:50%; background:#eee; color:#555; cursor:pointer; }.shop-quantity span { min-width:12px; text-align:center; font-size:11px; }.shop-checkout { position:sticky; bottom:0; display:flex; align-items:center; justify-content:space-between; max-width:520px; margin:18px auto 0; padding:12px; border-radius:16px; background:#fff; box-shadow:0 8px 22px rgba(0,0,0,.1); }.shop-checkout div { display:grid; gap:3px; }.shop-checkout span { color:#999; font-size:9px; }.shop-checkout b { font-size:16px; }.shop-checkout button { min-width:92px; height:37px; border:0; border-radius:11px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }.shop-subtitle { max-width:520px; margin:22px auto 9px; font-size:13px; }.shop-wish-list button { background:#fff; color:#555; border:1px solid rgba(0,0,0,.1); }.shop-empty { max-width:520px; margin:25px auto; color:#aaa; font-size:11px; text-align:center; }.shop-tabs { position:fixed; right:12px; bottom:18px; left:12px; z-index:2; display:flex; justify-content:space-around; height:70px; padding:7px; border:1px solid rgba(255,255,255,.7); border-radius:24px; background:rgba(255,255,255,.72); box-shadow:0 8px 25px rgba(0,0,0,.12); -webkit-backdrop-filter:blur(24px); backdrop-filter:blur(24px); }.shop-tabs button { display:grid; place-items:center; gap:3px; min-width:50px; border:0; background:transparent; color:#999; cursor:pointer; }.shop-tabs button.is-active { color:#222; }.shop-tabs svg { width:21px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }.shop-tabs small { font-size:9px; }.shop-sheet { position:fixed; inset:0; z-index:8; display:grid; place-items:center; padding:20px; }.shop-sheet-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }.shop-sheet>section { position:relative; width:min(100%,390px); max-height:78vh; overflow-y:auto; padding:19px; border-radius:22px; background:#fbfbfb; box-shadow:0 20px 60px rgba(0,0,0,.2); }.shop-sheet header { display:flex; align-items:center; justify-content:space-between; }.shop-sheet header>div { display:grid; gap:5px; }.shop-sheet h2 { font-size:18px; }.shop-profile-list,.shop-role-list { display:grid; gap:8px; margin-top:16px; }.shop-profile-list button,.shop-role-list button { display:flex; align-items:center; gap:10px; width:100%; padding:9px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:#fff; color:#333; text-align:left; cursor:pointer; }.shop-profile-list button.is-selected { border-color:#222; }.shop-profile-list span,.shop-role-list span { display:grid; flex:1; gap:4px; }.shop-profile-list b,.shop-role-list b { font-size:12px; }.shop-profile-list small,.shop-role-list small { color:#999; font-size:10px; }.shop-profile-list em,.shop-role-list em { color:#777; font-size:11px; font-style:normal; }.shop-sheet-note { margin-top:15px; color:#888; font-size:11px; line-height:1.6; }.shop-detail header { margin-bottom:15px; }.shop-detail-cover { display:grid; place-items:center; height:160px; border-radius:18px; color:#fff; }.shop-detail>span { display:block; margin-top:16px; }.shop-detail>h2 { margin-top:6px; font-size:22px; }.shop-detail>b { display:block; margin-top:8px; font-size:18px; }.shop-detail>p { margin-top:13px; color:#777; font-size:12px; line-height:1.7; }.shop-detail-actions { display:flex; gap:8px; margin-top:20px; }.shop-detail-actions button { flex:1; height:39px; border:1px solid #222; border-radius:11px; background:#fff; color:#222; font:inherit; font-size:11px; cursor:pointer; }.shop-detail-actions button:last-child { background:#222; color:#fff; }.shop-no-profile { display:grid; justify-items:center; max-width:320px; margin:90px auto; text-align:center; }.shop-no-profile i { display:grid; place-items:center; width:56px; height:56px; border-radius:19px; background:#e5e5e5; color:#777; }.shop-no-profile svg { width:28px; fill:none; stroke:currentColor; stroke-width:2.2; }.shop-no-profile h2 { margin-top:15px; font-size:18px; }.shop-no-profile p { margin-top:7px; color:#999; font-size:11px; line-height:1.6; }.shop-no-profile button { min-height:36px; margin-top:17px; padding:0 14px; border:0; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
@media not all { .shopping-app { background:#202020; color:#eee; }.shopping-header { border-color:rgba(255,255,255,.12); background:rgba(32,32,32,.88); }.shopping-header>button,.shop-sheet header>button { background:rgba(255,255,255,.1); color:#ddd; }.shop-account,.shop-companion,.shop-product,.shop-cart-list article,.shop-order-list article,.shop-wish-list article,.shop-gift-list article { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }.shop-search { background:rgba(255,255,255,.11); }.shop-search input { color:#eee; }.shop-companion button,.shop-checkout button,.shop-detail-actions button:last-child,.shop-no-profile button { background:#eee; color:#111; }.shop-section-head button,.shop-wish-list button { border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.1); color:#ddd; }.shop-tabs { border-color:rgba(255,255,255,.16); background:rgba(35,35,35,.72); }.shop-tabs button.is-active { color:#fff; }.shop-sheet>section { background:#292929; }.shop-profile-list button,.shop-role-list button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#eee; }.shop-detail-actions button { border-color:#eee; background:transparent; color:#eee; }.shop-checkout { background:#292929; }.shop-quantity button { background:rgba(255,255,255,.12); color:#ddd; } }

/* 首页账户头像保持清晰的正方形比例，不受通用头像尺寸影响。 */
.shopping-app .shop-account-avatar { display:grid; flex:0 0 62px; place-items:center; width:62px; min-width:62px; height:62px; min-height:62px; padding:0; overflow:hidden; border-radius:18px; line-height:1; text-align:center; }
.shopping-app .shop-account-avatar img { display:block; width:100%; height:100%; object-fit:cover; }

/* 结算栏固定在屏幕底部 Dock 的正上方。 */
.shopping-app .shopping-main { padding-bottom:190px; }
.shopping-app .shop-checkout { position:fixed; right:20px; bottom:96px; left:20px; z-index:4; width:auto; max-width:480px; margin:0 auto; }

.shop-companion-actions { display:grid; flex:0 0 auto; gap:7px; }
.shop-companion-actions .shop-role-gift { border:1px solid rgba(0,0,0,.12); background:#fff; color:#333; }
.shop-mode-switch { display:flex; align-items:center; gap:9px; max-width:520px; margin:0 auto 13px; padding:10px 12px; border:1px solid rgba(0,0,0,.08); border-radius:15px; background:rgba(255,255,255,.72); }
.shop-mode-switch span { color:#a06c82; font-size:8px; font-weight:750; letter-spacing:.12em; }
.shop-mode-switch b { flex:1; font-size:11px; }
.shop-mode-switch button { min-height:31px; padding:0 10px; border:0; border-radius:9px; background:#302832; color:#fff; font:inherit; font-size:9px; cursor:pointer; }
.shop-private-note { max-width:520px; margin:0 auto 20px; padding:14px; border:1px solid rgba(132,70,98,.13); border-radius:17px; background:linear-gradient(135deg,rgba(64,47,60,.94),rgba(105,65,83,.9)); color:#fff; }
.shop-private-note b { font-size:12px; }.shop-private-note p { margin-top:5px; color:rgba(255,255,255,.7); font-size:9px; line-height:1.55; }
.shop-order-list article.is-private-order { border-color:rgba(155,82,112,.22); background:rgba(255,243,248,.78); }
.shop-order-list article b em { margin-left:4px; padding:2px 5px; border-radius:5px; background:#392d35; color:#fff; font-size:7px; font-style:normal; font-weight:600; }
.shop-detail-taobao .shop-detail-price { display:flex; align-items:end; justify-content:space-between; margin-top:15px; }.shop-detail-taobao .shop-detail-price>b { color:#e5533d; font-size:23px; }.shop-detail-taobao .shop-detail-price>span { color:#999; font-size:9px; }
.shop-sheet:has(.shop-detail-taobao) { align-items:stretch; padding:0; }.shop-sheet:has(.shop-detail-taobao)>.shop-sheet-backdrop { display:none; }.shop-sheet>section.shop-detail-taobao { width:100%; max-height:100%; padding:max(18px,env(safe-area-inset-top)) 18px max(20px,env(safe-area-inset-bottom)); border-radius:0; box-shadow:none; }
.shop-detail-taobao>h2 { margin-top:8px; font-size:19px; line-height:1.4; }.shop-detail-desc { margin-top:7px; color:#777; font-size:11px; line-height:1.6; }
.shop-detail-facts { display:grid; margin-top:15px; overflow:hidden; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:#fff; }.shop-detail-facts>div { display:grid; grid-template-columns:68px minmax(0,1fr); gap:9px; padding:10px 11px; border-bottom:1px solid rgba(0,0,0,.06); }.shop-detail-facts>div:last-child { border-bottom:0; }.shop-detail-facts dt { color:#999; font-size:9px; }.shop-detail-facts dd { margin:0; color:#444; font-size:10px; line-height:1.55; }
.shop-detail-taobao .shop-detail-actions { position:sticky; bottom:0; z-index:2; padding-top:10px; background:linear-gradient(180deg,transparent,#fbfbfb 28%); }
.shop-ask-pay { width:100%; min-height:38px; margin-top:9px; border:1px dashed rgba(0,0,0,.22); border-radius:11px; background:#fff; color:#574b53; font:inherit; font-size:10px; cursor:pointer; }
.shop-product.is-takeaway .shop-takeaway-meta { display:block; min-height:0; color:#b06b50; font-size:9px; font-style:normal; line-height:1.45; }
.shop-takeaway-note { max-width:520px; margin:0 auto 12px; color:#999; font-size:10px; line-height:1.5; }
.shop-tabs button { min-width:42px; }
@media not all { .shop-companion-actions .shop-role-gift { border-color:rgba(255,255,255,.18); background:rgba(255,255,255,.1); color:#eee; } }

/* 音乐 App：搜索与邀请角色一起听 */
.music-app { position:fixed; inset:0; z-index:31; display:none; overflow:hidden; overscroll-behavior:none; background:#f6f6f8; color:#171719; touch-action:none; }.music-app.is-open { display:block; }.music-page { display:flex; flex-direction:column; width:100%; max-width:100%; height:100%; min-width:0; min-height:0; overflow:hidden; overscroll-behavior:none; }.music-header { display:flex; align-items:flex-start; justify-content:space-between; flex:0 0 auto; min-width:0; padding:max(22px,env(safe-area-inset-top)) 22px 16px; border-bottom:1px solid rgba(0,0,0,.06); background:rgba(255,255,255,.9); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }.music-header span,.music-room-copy span,.music-sheet header span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }.music-header h1 { margin-top:6px; font-size:25px; letter-spacing:-.04em; }.music-header>button,.music-sheet header>button { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:#f0f0f2; color:#555; cursor:pointer; }.music-header svg,.music-sheet header svg { width:19px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; }.music-main { flex:1 1 auto; min-width:0; min-height:0; overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y; padding:20px 20px 36px; }.music-search { display:flex; align-items:center; gap:9px; max-width:580px; height:44px; margin:auto; padding:0 6px 0 13px; border-radius:14px; background:#e9e9ed; }.music-search>svg { flex:0 0 18px; width:18px; fill:none; stroke:#828287; stroke-width:2.5; }.music-search input { flex:1; min-width:0; border:0; outline:0; background:transparent; color:#222; font:inherit; font-size:12px; }.music-search button { height:32px; padding:0 13px; border:0; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }.music-room { display:grid; grid-template-columns:54px minmax(0,1fr) auto; gap:11px; align-items:center; max-width:580px; margin:17px auto 21px; padding:11px; border:1px solid rgba(0,0,0,.07); border-radius:18px; background:#fff; box-shadow:0 8px 26px rgba(0,0,0,.04); }.music-room-art,.music-cover,.music-invite-song>div { display:grid; place-items:center; overflow:hidden; background:linear-gradient(145deg,#cfd4df,#747d92); color:#fff; }.music-room-art { width:54px; height:54px; border-radius:14px; }.music-room-art img,.music-cover img,.music-invite-song img { width:100%; height:100%; object-fit:cover; }.music-room-art svg,.music-cover svg,.music-invite-song svg { width:27px; fill:none; stroke:currentColor; stroke-width:2.1; }.music-room-copy { display:grid; gap:4px; min-width:0; }.music-room-copy b,.music-room-copy small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-room-copy b { font-size:13px; }.music-room-copy small { color:#858589; font-size:10px; }.music-room>button,.music-room>a { padding:8px 10px; border:0; border-radius:9px; background:#f0f0f3; color:#444; font:inherit; font-size:10px; text-decoration:none; cursor:pointer; }.music-room audio { grid-column:1 / -1; width:100%; height:32px; }.music-results { display:grid; gap:8px; max-width:580px; margin:auto; }.music-song { display:flex; align-items:center; gap:10px; padding:9px; border-radius:15px; background:rgba(255,255,255,.72); }.music-song.is-current { outline:1px solid rgba(0,0,0,.17); }.music-cover { flex:0 0 46px; width:46px; height:46px; border-radius:12px; }.music-song>div:nth-child(2) { display:grid; flex:1; gap:4px; min-width:0; }.music-song b,.music-song small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-song b { font-size:12px; }.music-song small { color:#909094; font-size:10px; }.music-song>button { display:grid; flex:0 0 31px; place-items:center; width:31px; height:31px; border:0; border-radius:50%; background:#252527; color:#fff; cursor:pointer; }.music-song>button svg { width:17px; fill:none; stroke:currentColor; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }.music-empty,.music-status { max-width:580px; margin:64px auto; color:#9a9a9e; font-size:12px; text-align:center; }.music-sheet { position:fixed; inset:0; z-index:5; display:grid; place-items:center; padding:20px; touch-action:none; }.music-sheet-mask { position:absolute; inset:0; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }.music-sheet>section { position:relative; width:min(100%,390px); max-height:76vh; overflow-y:auto; overscroll-behavior:contain; touch-action:pan-y; padding:18px; border-radius:22px; background:#fbfbfc; box-shadow:0 20px 60px rgba(0,0,0,.2); }.music-sheet header { display:flex; align-items:center; justify-content:space-between; }.music-sheet header>div { display:grid; gap:5px; }.music-sheet h2 { font-size:18px; }.music-invite-song { display:flex; align-items:center; gap:10px; margin:17px 0 11px; padding:9px; border-radius:14px; background:#f0f0f3; }.music-invite-song>div { flex:0 0 42px; width:42px; height:42px; border-radius:10px; }.music-invite-song span { display:grid; gap:4px; min-width:0; }.music-invite-song b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }.music-invite-song small,.music-sheet>section>p { color:#909094; font-size:10px; }.music-sheet>section>p { margin:12px 0; }.music-role-list { display:grid; gap:8px; }.music-role-list button { display:flex; align-items:center; gap:10px; width:100%; padding:9px; border:1px solid rgba(0,0,0,.07); border-radius:14px; background:#fff; color:#333; text-align:left; cursor:pointer; }.music-role-list i { display:grid; flex:0 0 40px; place-items:center; width:40px; height:40px; overflow:hidden; border-radius:12px; background:#dedee1; color:#777; font-style:normal; }.music-role-list i img { width:100%; height:100%; object-fit:cover; }.music-role-list span { display:grid; flex:1; gap:4px; }.music-role-list b { font-size:12px; }.music-role-list small { color:#96969a; font-size:10px; }.music-role-list em { padding:7px 9px; border-radius:8px; background:#222; color:#fff; font-size:10px; font-style:normal; }
@media not all { .music-app { background:#202022; color:#eee; }.music-header { border-color:rgba(255,255,255,.1); background:rgba(32,32,34,.9); }.music-header>button,.music-sheet header>button { background:rgba(255,255,255,.1); color:#eee; }.music-search { background:rgba(255,255,255,.1); }.music-search input { color:#eee; }.music-search button,.music-role-list em { background:#eee; color:#171719; }.music-room,.music-song { background:rgba(255,255,255,.07); }.music-room>button,.music-room>a,.music-invite-song { background:rgba(255,255,255,.1); color:#eee; }.music-song>button { background:#eee; color:#222; }.music-sheet>section { background:#2a2a2d; }.music-role-list button { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#eee; } }

/* 音乐播放页与独立底部切换栏。 */
.music-app .music-main { padding-bottom:112px; }
.music-app .music-main:has(.music-player) { background:#fff; }
.music-tabs { position:fixed; right:14px; bottom:18px; left:14px; z-index:3; display:flex; justify-content:space-around; height:68px; padding:6px; border:1px solid rgba(255,255,255,.82); border-radius:23px; background:rgba(255,255,255,.76); box-shadow:0 9px 26px rgba(0,0,0,.12); -webkit-backdrop-filter:blur(24px); backdrop-filter:blur(24px); }.music-tabs button { display:grid; place-items:center; gap:3px; min-width:80px; border:0; background:transparent; color:#97979c; cursor:pointer; }.music-tabs button.is-active { color:#222; }.music-tabs svg { width:21px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }.music-tabs small { font-size:10px; }.music-player { display:grid; justify-items:center; max-width:440px; margin:8px auto; padding-top:16px; text-align:center; }.music-disc { display:grid; place-items:center; width:min(66vw,270px); aspect-ratio:1; padding:14px; border-radius:50%; background:radial-gradient(circle,#f1f1f3 0 21%,#27272a 22% 26%,#f0f0f3 27% 28%,#d6d6da 29% 100%); box-shadow:0 16px 38px rgba(0,0,0,.14); }.music-disc>div { width:100%; height:100%; overflow:hidden; border-radius:50%; background:#bbb; }.music-disc img { width:100%; height:100%; object-fit:cover; }.music-disc svg { width:44px; margin-top:calc(50% - 22px); fill:none; stroke:#fff; stroke-width:2; }.music-player-meta { margin-top:25px; }.music-player-meta h2 { max-width:330px; overflow:hidden; font-size:20px; text-overflow:ellipsis; white-space:nowrap; }.music-player-meta p { max-width:310px; margin-top:7px; overflow:hidden; color:#909095; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }.music-audio { width:min(100%,330px); height:42px; margin-top:22px; }.music-preview-note { margin-top:4px; color:#aaa; font-size:10px; }.music-official-link { display:flex; align-items:center; justify-content:center; gap:5px; width:200px; height:39px; margin-top:23px; border-radius:12px; background:#222; color:#fff; font-size:11px; text-decoration:none; }.music-official-link svg { width:17px; fill:none; stroke:currentColor; stroke-width:2.3; }.music-together { display:flex; align-items:center; justify-content:space-between; gap:12px; width:min(100%,390px); margin-top:30px; padding:13px; border:1px solid rgba(0,0,0,.08); border-radius:18px; background:#fff; text-align:left; }.music-together>div { display:grid; gap:4px; min-width:0; }.music-together span { color:#999; font-size:8px; font-weight:700; letter-spacing:.14em; }.music-together b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }.music-together small { color:#999; font-size:10px; }.music-together button { display:flex; align-items:center; gap:4px; padding:9px 11px; border:0; border-radius:10px; background:#242426; color:#fff; font:inherit; font-size:10px; cursor:pointer; }.music-together button svg { width:16px; fill:none; stroke:currentColor; stroke-width:2.3; }.music-player-empty { display:grid; justify-items:center; max-width:280px; margin:105px auto; text-align:center; }.music-player-empty i { display:grid; place-items:center; width:62px; height:62px; border-radius:21px; background:#e5e5e9; color:#777; }.music-player-empty i svg { width:30px; fill:none; stroke:currentColor; stroke-width:2.1; }.music-player-empty h2 { margin-top:17px; font-size:18px; }.music-player-empty p { margin-top:8px; color:#999; font-size:11px; line-height:1.7; }.music-player-empty button { height:38px; margin-top:17px; padding:0 14px; border:0; border-radius:11px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
@media not all { .music-tabs { border-color:rgba(255,255,255,.15); background:rgba(36,36,39,.78); }.music-tabs button.is-active { color:#fff; }.music-disc { background:radial-gradient(circle,#4d4d52 0 21%,#050505 22% 26%,#4b4b50 27% 28%,#252528 29% 100%); }.music-together { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.08); }.music-together button,.music-player-empty button { background:#eee; color:#171719; }.music-player-empty i { background:rgba(255,255,255,.1); color:#ddd; }.music-official-link { background:#eee; color:#171719; } }

.music-preview-play { display:flex; align-items:center; justify-content:center; gap:5px; width:170px; height:38px; margin-top:12px; border:0; border-radius:12px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }.music-preview-play svg { width:17px; fill:none; stroke:currentColor; stroke-width:2.4; }
.music-global-audio, .ideal-keepalive-audio { display:none; }.music-play-control { display:flex; align-items:center; justify-content:center; gap:6px; width:170px; height:40px; margin-top:20px; border:0; border-radius:13px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }.music-play-control svg { width:18px; fill:none; stroke:currentColor; stroke-width:2.4; }

/* 我的音乐库：本地文件与授权音频链接。 */
.music-role-playlists { max-width:580px; margin:0 auto; padding:0; border:0; }.music-role-switcher { display:flex; gap:8px; max-width:100%; margin:0 0 12px; overflow-x:auto; padding-bottom:2px; }.music-role-switcher button { display:flex; align-items:center; gap:7px; flex:0 0 auto; min-width:0; padding:6px 10px 6px 6px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:#fff; color:#666; font:inherit; font-size:10px; cursor:pointer; }.music-role-switcher button.is-active { border-color:#222; background:#222; color:#fff; }.music-role-switcher i { display:grid; place-items:center; width:25px; height:25px; overflow:hidden; border-radius:8px; background:#e8e8eb; color:#777; font-style:normal; }.music-role-switcher i img { width:100%; height:100%; object-fit:cover; }.music-role-playlist { overflow:hidden; border:1px solid rgba(0,0,0,.07); border-radius:17px; background:#fff; box-shadow:0 9px 24px rgba(0,0,0,.035); }.music-role-playlist>header { display:flex; align-items:center; gap:10px; padding:12px; border-bottom:1px solid rgba(0,0,0,.06); }.music-role-playlist>header>i { display:grid; flex:0 0 38px; place-items:center; width:38px; height:38px; overflow:hidden; border-radius:12px; background:#e8e8eb; color:#777; font-style:normal; }.music-role-playlist>header>i img { width:100%; height:100%; object-fit:cover; }.music-role-playlist>header>div { display:grid; flex:1; gap:3px; min-width:0; }.music-role-playlist>header b,.music-role-playlist>header small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-role-playlist>header b { font-size:12px; }.music-role-playlist>header small { color:#999; font-size:9px; }.music-role-playlist>header em { color:#aaa; font-size:8px; font-style:normal; letter-spacing:.1em; }.music-role-playlist-songs { display:grid; gap:1px; padding:5px 8px 8px; }.music-role-song { display:flex; align-items:center; gap:9px; min-width:0; padding:8px 5px; }.music-role-song>span { flex:0 0 18px; color:#aaa; font-size:10px; text-align:center; }.music-role-song>div { display:grid; flex:1; gap:3px; min-width:0; }.music-role-song b,.music-role-song small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-role-song b { font-size:11px; }.music-role-song small { color:#999; font-size:9px; }.music-role-playlists-empty { margin:12px auto 18px; }
.music-library-head { max-width:580px; margin:5px auto 18px; }.music-library-head span { color:#999; font-size:9px; font-weight:700; letter-spacing:.15em; }.music-library-head h2 { margin-top:6px; font-size:21px; }.music-library-head p { margin-top:7px; color:#929297; font-size:11px; line-height:1.55; }.music-import-actions { max-width:580px; margin:0 auto 10px; }.music-import-actions button { display:flex; align-items:center; justify-content:center; gap:6px; width:100%; height:44px; border:0; border-radius:14px; background:#242426; color:#fff; font:inherit; font-size:12px; cursor:pointer; }.music-import-actions svg { width:18px; fill:none; stroke:currentColor; stroke-width:2.2; }.music-url-import { display:flex; gap:8px; max-width:580px; margin:0 auto 22px; padding:6px; border-radius:14px; background:#e9e9ed; }.music-url-import input { flex:1; min-width:0; height:32px; padding:0 8px; border:0; outline:0; background:transparent; color:#222; font:inherit; font-size:11px; }.music-url-import button { flex:0 0 auto; padding:0 12px; border:0; border-radius:9px; background:#fff; color:#444; font:inherit; font-size:10px; cursor:pointer; }.music-library-list { display:grid; gap:8px; max-width:580px; margin:auto; }
.music-provider-login { display:grid; grid-template-columns:44px minmax(0,1fr) auto; gap:11px; align-items:center; max-width:580px; margin:1px auto 16px; padding:11px; border:1px solid rgba(0,0,0,.07); border-radius:16px; background:#fff; box-shadow:0 9px 24px rgba(0,0,0,.035); }.music-provider-mark { position:relative; width:44px; height:44px; overflow:hidden; border-radius:50%; background:#df3030; box-shadow:inset 0 0 0 1px rgba(255,255,255,.16); }.music-provider-mark i { position:absolute; display:block; box-sizing:border-box; border:3px solid #fff; border-radius:50%; transform:rotate(-30deg); }.music-provider-mark i:nth-child(1) { width:30px; height:30px; left:7px; top:7px; border-right-color:transparent; }.music-provider-mark i:nth-child(2) { width:18px; height:18px; left:13px; top:13px; border-left-color:transparent; }.music-provider-mark i:nth-child(3) { width:6px; height:6px; left:23px; top:19px; border:0; background:#fff; box-shadow:-11px 7px 0 -1px #fff; }.music-provider-copy { display:grid; gap:4px; min-width:0; }.music-provider-copy span { color:#999; font-size:8px; font-weight:700; letter-spacing:.12em; }.music-provider-copy b { font-size:13px; }.music-provider-copy small { color:#929297; font-size:10px; }.music-provider-login>button { height:30px; padding:0 10px; border:0; border-radius:9px; background:#222; color:#fff; font:inherit; font-size:10px; white-space:nowrap; cursor:pointer; }
.music-netease-profile { display:grid; grid-template-columns:44px minmax(0,1fr) auto; gap:11px; align-items:center; max-width:580px; margin:1px auto 16px; padding:11px; border:1px solid rgba(0,0,0,.07); border-radius:16px; background:#fff; box-shadow:0 9px 24px rgba(0,0,0,.035); }.music-netease-avatar { display:grid; place-items:center; width:44px; height:44px; overflow:hidden; border-radius:50%; background:#e6e6e8; color:#666; font-size:15px; }.music-netease-avatar img { width:100%; height:100%; object-fit:cover; }.music-netease-profile>div:nth-child(2) { display:grid; gap:4px; min-width:0; }.music-netease-profile span { color:#999; font-size:8px; font-weight:700; letter-spacing:.12em; }.music-netease-profile b,.music-netease-profile small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-netease-profile b { font-size:13px; }.music-netease-profile small { color:#929297; font-size:10px; }.music-netease-profile button { height:29px; padding:0 10px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:#fff; color:#444; font:inherit; font-size:10px; cursor:pointer; }.music-qr-panel { max-width:270px; margin:12px auto 16px; padding:16px; border:1px solid rgba(0,0,0,.07); border-radius:16px; background:#fff; text-align:center; }.music-qr-panel img { display:block; width:220px; height:220px; max-width:100%; margin:auto; image-rendering:auto; }.music-qr-panel p { margin-top:10px; color:#777; font-size:10px; }
.music-netease-account { max-width:580px; margin:1px auto 16px; padding:13px; border:1px solid rgba(0,0,0,.07); border-radius:17px; background:#fff; box-shadow:0 9px 24px rgba(0,0,0,.035); }.music-netease-account-head { display:grid; grid-template-columns:44px minmax(0,1fr) auto; gap:11px; align-items:center; }.music-netease-account-head>div:nth-child(2) { display:grid; gap:4px; min-width:0; }.music-netease-account-head span { color:#999; font-size:8px; font-weight:700; letter-spacing:.12em; }.music-netease-account-head b,.music-netease-account-head small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-netease-account-head b { font-size:13px; }.music-netease-account-head small { color:#929297; font-size:10px; }.music-netease-account-head em { padding:5px 7px; border-radius:7px; background:#eee; color:#888; font-size:9px; font-style:normal; }.music-netease-account-head em.is-vip { background:#f8e8b8; color:#926e20; }.music-netease-account-meta { display:flex; gap:18px; margin:13px 0 10px 55px; color:#999; font-size:10px; }.music-netease-account-meta b { margin-left:3px; color:#444; font-size:11px; }.music-netease-synced { display:grid; gap:7px; max-height:190px; overflow-y:auto; padding-top:10px; border-top:1px solid rgba(0,0,0,.06); }.music-netease-synced>div { display:flex; align-items:center; gap:9px; min-width:0; }.music-netease-synced>div>div { display:grid; flex:0 0 32px; place-items:center; width:32px; height:32px; overflow:hidden; border-radius:8px; background:#ececef; }.music-netease-synced img { width:100%; height:100%; object-fit:cover; }.music-netease-synced svg { width:18px; fill:none; stroke:#999; stroke-width:2; }.music-netease-synced span { display:grid; gap:3px; min-width:0; }.music-netease-synced b,.music-netease-synced small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-netease-synced b { font-size:11px; }.music-netease-synced small { color:#999; font-size:9px; }.music-netease-account-actions { display:flex; justify-content:flex-end; gap:7px; margin-top:12px; }.music-netease-account-actions button { height:29px; padding:0 10px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:#fff; color:#444; font:inherit; font-size:10px; cursor:pointer; }.music-netease-account-actions button:last-child { border-color:#222; background:#222; color:#fff; }
.music-netease-playlists { display:grid; gap:8px; margin-top:13px; padding-top:11px; border-top:1px solid rgba(0,0,0,.06); }.music-netease-playlists-title { display:flex; align-items:center; justify-content:space-between; gap:10px; color:#444; font-size:11px; }.music-netease-playlists-title span { overflow:hidden; color:#999; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }.music-netease-playlist { display:flex; align-items:center; gap:9px; width:100%; min-width:0; padding:5px; border:0; border-radius:10px; background:transparent; color:inherit; font:inherit; text-align:left; cursor:pointer; }.music-netease-playlist:hover { background:rgba(0,0,0,.04); }.music-netease-playlist>div { display:grid; flex:0 0 32px; place-items:center; width:32px; height:32px; overflow:hidden; border-radius:8px; background:#ececef; }.music-netease-playlist img { width:100%; height:100%; object-fit:cover; }.music-netease-playlist svg { width:17px; fill:none; stroke:#999; stroke-width:2; }.music-netease-playlist span { display:grid; flex:1; gap:3px; min-width:0; }.music-netease-playlist b,.music-netease-playlist small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-netease-playlist b { font-size:11px; }.music-netease-playlist small { color:#999; font-size:9px; }.music-netease-playlist em { color:#aaa; font-size:18px; font-style:normal; }.music-playlist-back { padding:0; border:0; background:transparent; color:#333; font:inherit; font-size:10px; cursor:pointer; }.music-playlist-tracks { display:grid; gap:7px; max-height:360px; overflow-y:auto; }.music-playlist-tracks .music-empty { margin:24px auto; }
@media not all { .music-import-actions button { background:#eee; color:#171719; }.music-url-import { background:rgba(255,255,255,.1); }.music-url-import input { color:#eee; }.music-url-import button { background:rgba(255,255,255,.14); color:#eee; } }
@media not all { .music-play-control { background:#eee; color:#171719; } }
@media not all { .music-role-playlists { border-color:rgba(255,255,255,.12); }.music-role-switcher button,.music-role-playlist { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#eee; }.music-role-switcher button.is-active { border-color:#eee; background:#eee; color:#171719; }.music-role-playlist>header { border-color:rgba(255,255,255,.1); }.music-role-playlist>header>i,.music-role-switcher i { background:rgba(255,255,255,.12); color:#ddd; }.music-role-playlist>header small,.music-role-song small { color:#aaa; } }
@media not all { .music-preview-play { background:#eee; color:#171719; } }
.music-provider-mark { background-color:#df3030; background-image:url('https://s1.music.126.net/style/favicon.ico?v20180823'); background-position:center; background-size:cover; background-repeat:no-repeat; }.music-provider-mark i { display:none; }
.music-together-people { display:flex; align-items:center; gap:8px; margin-bottom:12px; }.music-together-person { display:grid; justify-items:center; gap:4px; min-width:42px; }.music-together-person i { display:grid; place-items:center; width:39px; height:39px; overflow:hidden; border:2px solid #fff; border-radius:50%; background:#e4e4e7; box-shadow:0 2px 8px rgba(0,0,0,.1); color:#777; font-style:normal; }.music-together-person i img { width:100%; height:100%; object-fit:cover; }.music-together-person small { max-width:78px; overflow:hidden; color:#8d8d92; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }.music-together-link { color:#999; font-size:10px; }.music-together-empty { font-size:15px; }
.music-together>.music-together-people { display:flex; align-items:center; justify-content:center; gap:10px; width:100%; min-width:0; }.music-together-link { position:relative; flex:1 1 48px; min-width:38px; height:24px; color:#9b9ba0; font-size:0; }.music-together-link::before { position:absolute; top:13px; right:0; left:0; height:1.5px; border-radius:3px; background:currentColor; content:""; }.music-together-link::after { position:absolute; top:3px; left:50%; width:18px; height:12px; border:1.5px solid currentColor; border-bottom:0; border-radius:12px 12px 0 0; content:""; transform:translateX(-50%); }
.music-together-link { flex:0 0 34px; min-width:34px; height:34px; font-size:0; color:#9b9ba0; }.music-together-link::before { top:3px; right:auto; left:50%; width:28px; height:28px; border:0; background:transparent; content:"♡"; font-family:Arial,sans-serif; font-size:28px; line-height:28px; text-align:center; transform:translateX(-50%); animation:music-heartbeat 1.35s ease-in-out infinite; }.music-together-link::after { display:none; }.music-together-role-pick { cursor:pointer; }.music-together-role-pick i { background:#dedee1; color:#85858a; }.music-together-role-pick i svg { width:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }.music-together-role-pick:hover i { background:#d2d2d6; } @keyframes music-heartbeat { 0%,100% { transform:translateX(-50%) scale(1); } 12% { transform:translateX(-50%) scale(1.12); } 24% { transform:translateX(-50%) scale(.96); } 36% { transform:translateX(-50%) scale(1.08); } 52% { transform:translateX(-50%) scale(1); } }
.music-together-link { flex-basis:25px; min-width:25px; height:25px; color:#111; }.music-together-link::before { top:2px; width:22px; height:22px; color:#111; font-size:21px; line-height:22px; }.music-together b { display:block; width:100%; margin-top:2px; white-space:normal; }.music-together>button { display:none; }
.music-together>div>span:not(.music-together-link),.music-together>div>b,.music-together>div>small { display:none; }
.music-together { width:min(100%,420px); padding:0; border:0; background:transparent; box-shadow:none; }.music-together>.music-together-people { gap:18px; }.music-together-person { min-width:54px; }.music-together-person i { width:52px; height:52px; border:0; box-shadow:0 2px 8px rgba(0,0,0,.12); }.music-together-link { position:relative; flex-basis:26px; min-width:26px; height:26px; color:#111; }.music-together-link::before { top:7px; left:50%; width:14px; height:14px; border:0; border-radius:2px 2px 3px 0; background:#111; content:""; transform:translateX(-50%) rotate(-45deg); animation:music-heartbeat 1.35s ease-in-out infinite; }.music-together-link::after { display:block; top:2px; left:50%; width:12px; height:12px; border:0; border-radius:50%; background:#111; box-shadow:9px 0 0 #111; content:""; transform:translateX(-50%); animation:music-heartbeat 1.35s ease-in-out infinite; }
.music-together-link { display:grid; flex:0 0 72px; place-items:center; height:26px; }.music-together-link::before,.music-together-link::after { display:none; }.music-together-link svg { position:absolute; width:72px; height:26px; overflow:visible; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }.music-together-link .heartbeat-line { fill:none; stroke:#111; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:58; stroke-dashoffset:58; animation:music-heartbeat-draw 1.25s linear infinite; }.music-together-link>span { position:relative; z-index:1; color:#111; font-size:15px; line-height:1; animation:music-heartbeat-scale 1.25s ease-in-out infinite; } @keyframes music-heartbeat-draw { 0% { stroke-dashoffset:58; opacity:.3; } 45%,75% { stroke-dashoffset:0; opacity:1; } 100% { stroke-dashoffset:-8; opacity:.3; } } @keyframes music-heartbeat-scale { 0%,100% { transform:scale(1); } 14% { transform:scale(1.14); } 28% { transform:scale(1); } 42% { transform:scale(1.1); } 56% { transform:scale(1); } }
.music-player .music-together { position:fixed; right:14px; bottom:96px; left:14px; z-index:4; width:auto; margin:0; padding:0; }
.music-player .music-together>.music-together-people { min-height:58px; }
.music-progress { width:min(88vw,360px); margin-top:22px; }
.music-progress-times { display:flex; justify-content:space-between; color:#96969b; font-size:10px; font-variant-numeric:tabular-nums; }
.music-progress input { display:block; width:100%; height:20px; margin:2px 0 0; accent-color:#222; cursor:pointer; }
.music-player-controls { display:flex; align-items:center; justify-content:center; gap:22px; margin-top:5px; }
.music-player-controls button { display:grid; place-items:center; width:34px; height:34px; padding:0; border:0; border-radius:50%; background:transparent; color:#222; cursor:pointer; }
.music-player-controls button svg { width:21px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
.music-player-controls .music-play-control { width:46px; height:46px; margin:0; border-radius:50%; background:#222; color:#fff; }
.music-player-controls .music-play-control svg { width:22px; }
@media not all { .music-progress input { accent-color:#fff; }.music-player-controls button { color:#eee; }.music-player-controls .music-play-control { background:#eee; color:#171719; } }
.music-progress { width:min(88vw,360px); margin-top:24px; padding:12px 16px 0; border-radius:18px 18px 0 0; background:rgba(242,242,244,.86); }
.music-progress-times { color:#77777d; font-size:10px; }
.music-progress input { height:18px; margin:0; }
.music-player-controls { width:min(88vw,360px); box-sizing:border-box; gap:34px; margin-top:0; padding:7px 16px 12px; border-radius:0 0 18px 18px; background:rgba(242,242,244,.86); }
.music-player-controls button { width:38px; height:38px; }
.music-player-controls button svg { width:20px; height:20px; }
.music-player-controls .music-play-control { width:46px; height:46px; }
@media not all { .music-progress,.music-player-controls { background:rgba(45,45,49,.86); } }
.music-lyrics { width:min(88vw,360px); height:104px; margin-top:14px; overflow:hidden; text-align:center; }
.music-lyrics-window { display:grid; align-content:center; height:100%; overflow-y:auto; scroll-behavior:smooth; scrollbar-width:none; }
.music-lyrics-window::-webkit-scrollbar { display:none; }
.music-lyrics p { min-height:25px; margin:0; padding:3px 10px; color:#aaaab0; font-size:12px; line-height:1.5; transition:color .25s, transform .25s, font-size .25s; }
.music-lyrics p.is-active { color:#222; font-size:14px; font-weight:600; transform:scale(1.02); }
.music-lyrics p.is-placeholder { color:#aaaab0; }
@media not all { .music-lyrics p.is-active { color:#f4f4f5; }.music-lyrics p { color:#77777d; }.music-player .music-lyrics p[data-music-lyric-line] .music-lyric-text { background:linear-gradient(90deg,#f4f4f5 0 var(--lyric-progress,0%),#77777d var(--lyric-progress,0%) 100%); } }
.music-disc[data-music-open-lyrics] { border:0; color:inherit; font:inherit; cursor:pointer; appearance:none; -webkit-appearance:none; }
.music-disc[data-music-open-lyrics]:active { transform:scale(.985); }
.music-full-lyrics-page { position:relative; width:100%; height:100%; overflow:hidden; background:#17171a; color:#fff; isolation:isolate; }
.music-full-lyrics-bg { position:absolute; inset:-45px; z-index:-2; overflow:hidden; background:radial-gradient(circle at 28% 12%,#50505a,#17171a 58%); }
.music-full-lyrics-bg img { width:100%; height:100%; object-fit:cover; filter:blur(42px) saturate(1.22); opacity:.48; transform:scale(1.12); }
.music-full-lyrics-page::after { position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg,rgba(8,8,10,.28),rgba(12,12,15,.72)); content:""; }
.music-full-lyrics-header { position:relative; z-index:2; display:grid; grid-template-columns:42px minmax(0,1fr) 42px; align-items:center; gap:10px; padding:max(16px,env(safe-area-inset-top)) 18px 12px; }
.music-full-lyrics-header>button { display:grid; place-items:center; width:38px; height:38px; border:1px solid rgba(255,255,255,.16); border-radius:50%; background:rgba(15,15,18,.28); color:#fff; font:inherit; font-size:28px; line-height:1; cursor:pointer; -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px); }
.music-full-lyrics-header>button:last-child svg { width:18px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; }
.music-full-lyrics-header>div { display:grid; gap:4px; min-width:0; text-align:center; }
.music-full-lyrics-header b { font-size:13px; letter-spacing:.04em; }
.music-full-lyrics-header small { overflow:hidden; color:rgba(255,255,255,.62); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.music-full-lyrics-main { position:relative; display:grid; grid-template-rows:auto minmax(0,1fr); justify-items:center; gap:16px; height:calc(100% - 78px); padding:10px 24px calc(102px + env(safe-area-inset-bottom)); box-sizing:border-box; }
.music-full-lyrics-art { width:70px; height:70px; overflow:hidden; border-radius:17px; background:rgba(255,255,255,.12); box-shadow:0 12px 34px rgba(0,0,0,.28); }
.music-full-lyrics-art img { width:100%; height:100%; object-fit:cover; }
.music-full-lyrics-art svg { width:32px; margin:19px; fill:none; stroke:#fff; stroke-width:2; }
.music-full-lyrics-scroll { width:min(100%,590px); overflow-y:auto; padding:34vh 8px 38vh; box-sizing:border-box; scroll-behavior:smooth; scrollbar-width:none; -webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent); mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent); }
.music-full-lyrics-scroll::-webkit-scrollbar { display:none; }
.music-full-lyrics-scroll p { margin:0; padding:10px 4px; color:rgba(255,255,255,.42); font-size:18px; font-weight:600; line-height:1.55; text-align:left; transition:color .25s,transform .25s,font-size .25s,opacity .25s; transform-origin:left center; }
.music-full-lyrics-scroll .music-lyric-text { position:relative; display:inline-block; color:rgba(255,255,255,.42); }
.music-full-lyrics-scroll .music-lyric-base { display:block; color:rgba(255,255,255,.42); }
.music-full-lyrics-scroll .music-lyric-highlight { position:absolute; inset:0 auto 0 0; display:block; width:0; overflow:hidden; color:#fff; white-space:nowrap; transition:width .12s linear; will-change:width; }
.music-full-lyrics-scroll p.is-active .music-lyric-highlight { width:var(--lyric-progress,0%); }
.music-full-lyrics-scroll p:not(.is-active) .music-lyric-highlight { width:0 !important; }
.music-full-lyrics-scroll p[data-music-lyric-line]:not(.is-active),
.music-full-lyrics-scroll p[data-music-lyric-line]:not(.is-active) *,
.music-full-lyrics-scroll p[data-music-lyric-line]:not(.is-active) .music-lyric-base {
  color:rgba(255,255,255,.42) !important;
  -webkit-text-fill-color:rgba(255,255,255,.42) !important;
  background:none !important;
}
.music-full-lyrics-scroll p[data-music-lyric-line].is-active .music-lyric-base {
  color:rgba(255,255,255,.42) !important;
  -webkit-text-fill-color:rgba(255,255,255,.42) !important;
}
.music-full-lyrics-scroll p[data-music-lyric-line].is-active .music-lyric-highlight {
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
}
.music-full-lyrics-scroll p.is-active { color:#fff; font-size:23px; opacity:1; transform:scale(1.015); text-shadow:0 2px 18px rgba(0,0,0,.35); }
.music-full-lyrics-scroll p.is-placeholder { color:rgba(255,255,255,.62); text-align:center; }
.music-full-lyrics-controls { position:absolute; right:22px; bottom:calc(18px + env(safe-area-inset-bottom)); left:22px; z-index:2; display:flex; align-items:center; justify-content:center; gap:28px; }
.music-full-lyrics-controls button { display:grid; place-items:center; width:44px; height:44px; border:0; border-radius:50%; background:rgba(20,20,24,.34); color:#fff; cursor:pointer; -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
.music-full-lyrics-controls button.is-primary { width:54px; height:54px; background:rgba(255,255,255,.92); color:#17171a; }
.music-full-lyrics-controls svg { width:22px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
@media (max-height:650px) { .music-full-lyrics-art { display:none; }.music-full-lyrics-main { grid-template-rows:minmax(0,1fr); gap:0; }.music-full-lyrics-scroll { padding-top:24vh; } }
.music-progress { width:min(86vw,350px); margin-top:25px; padding:0; background:transparent; }
.music-progress-times { padding:0 2px; color:#a0a0a5; font-size:9px; letter-spacing:.02em; }
.music-progress input { width:100%; height:16px; margin:4px 0 0; appearance:none; -webkit-appearance:none; outline:0; background:transparent; accent-color:auto; }
.music-progress input::-webkit-slider-runnable-track { height:3px; border-radius:99px; background:linear-gradient(to right,#222 0%,#222 var(--music-progress,0%),#dedee2 var(--music-progress,0%),#dedee2 100%); }
.music-progress input::-webkit-slider-thumb { width:11px; height:11px; margin-top:-4px; appearance:none; -webkit-appearance:none; border:2px solid #fff; border-radius:50%; background:#222; box-shadow:0 1px 4px rgba(0,0,0,.18); }
.music-progress input::-moz-range-track { height:3px; border-radius:99px; background:#dedee2; }
.music-progress input::-moz-range-progress { height:3px; border-radius:99px; background:#222; }
.music-progress input::-moz-range-thumb { width:8px; height:8px; border:2px solid #fff; border-radius:50%; background:#222; box-shadow:0 1px 4px rgba(0,0,0,.18); }
.music-player-controls { width:auto; gap:31px; margin-top:12px; padding:0; background:transparent; }
.music-player-controls button { width:40px; height:40px; color:#55555b; transition:transform .18s ease, color .18s ease; }
.music-player-controls button:not(.music-play-control) { width:42px; height:42px; border:1px solid rgba(0,0,0,.06); background:rgba(255,255,255,.56); box-shadow:0 3px 10px rgba(0,0,0,.06); }
.music-player-controls button:hover { color:#111; transform:scale(1.08); }
.music-player-controls button svg { width:22px; height:22px; stroke-width:2; }
.music-player-controls .music-play-control { width:52px; height:52px; background:#18181a; color:#fff; box-shadow:0 7px 17px rgba(0,0,0,.17); }
.music-player-controls .music-play-control svg { width:23px; height:23px; stroke-width:2.1; }
@media not all { .music-progress input::-webkit-slider-runnable-track { background:linear-gradient(to right,#f4f4f5 0%,#f4f4f5 var(--music-progress,0%),#55555b var(--music-progress,0%),#55555b 100%); }.music-progress input::-webkit-slider-thumb { border-color:#18181a; background:#f4f4f5; }.music-progress input::-moz-range-track { background:#55555b; }.music-progress input::-moz-range-progress { background:#f4f4f5; }.music-progress input::-moz-range-thumb { border-color:#18181a; background:#f4f4f5; }.music-player-controls button { color:#b5b5bb; }.music-player-controls button:hover { color:#fff; }.music-player-controls .music-play-control { background:#f4f4f5; color:#18181a; } }
@media not all { .music-player-controls button:not(.music-play-control) { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.08); } }
.music-player-controls { gap:18px; }
.music-player { position:relative; }
.music-player-controls { position:relative; width:min(86vw,350px); gap:30px; }
.music-player-controls .music-queue-button { position:absolute; right:0; width:38px; height:38px; }
.music-player-controls [data-music-mode] { width:34px; height:34px; border:0; background:transparent; box-shadow:none; }
.music-player .music-progress,.music-player .music-player-controls { transform:translateY(-5px); }
.music-player .music-progress,.music-player .music-player-controls { position:relative; top:-5px; transform:none; }
.music-player-controls { display:grid; grid-template-columns:repeat(5,42px); align-items:center; justify-content:center; gap:12px; width:258px; }
.music-player-controls .music-queue-button { position:static; width:38px; height:38px; }
.music-player-controls [data-music-mode] { width:34px; height:34px; }
.music-player .music-progress { margin-top:19px !important; }
.music-player .music-player-controls { position:relative !important; top:0 !important; transform:none !important; }
.music-player-controls { grid-template-columns:repeat(5,52px); gap:14px; width:316px; }
.music-player-controls>button { justify-self:center; }
.music-player .music-lyrics { position:relative; top:-25px; }
.music-player-controls .music-play-control { width:52px; height:52px; }
.music-queue-button { position:relative; }
.music-queue-panel { position:absolute; right:16px; bottom:178px; left:16px; z-index:5; max-height:220px; overflow-y:auto; padding:12px; border:1px solid rgba(0,0,0,.07); border-radius:18px; background:rgba(255,255,255,.96); box-shadow:0 12px 32px rgba(0,0,0,.16); text-align:left; }
.music-queue-panel header { display:flex; align-items:center; justify-content:space-between; padding:0 3px 8px; color:#222; font-size:12px; }
.music-queue-panel header button { display:grid; place-items:center; width:26px; height:26px; padding:0; border:0; background:transparent; color:#777; cursor:pointer; }
.music-queue-panel header svg { width:15px; }
.music-queue-item { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:38px; padding:0 9px; border:0; border-radius:10px; background:transparent; color:#333; font:inherit; font-size:11px; text-align:left; cursor:pointer; }
.music-queue-item:hover,.music-queue-item.is-selected { background:#f0f0f2; color:#111; }
.music-queue-item small { color:#999; font-size:9px; }
.music-queue-panel header select { max-width:calc(100% - 32px); border:0; outline:0; background:transparent; color:#222; font:inherit; font-size:12px; font-weight:600; }
.music-queue-song { display:flex; align-items:center; gap:9px; width:100%; min-height:42px; padding:5px 7px; border:0; border-radius:10px; background:transparent; color:#333; font:inherit; text-align:left; cursor:pointer; }
.music-queue-song:hover,.music-queue-song.is-current { background:#f0f0f2; }
.music-queue-song>em { width:18px; color:#aaa; font-size:10px; font-style:normal; text-align:center; }
.music-queue-song>span { display:grid; flex:1; gap:2px; min-width:0; }
.music-queue-song b,.music-queue-song small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.music-queue-song b { font-size:11px; font-weight:500; }
.music-queue-song small { color:#999; font-size:9px; }
.music-queue-song>i { color:#777; font-style:normal; }.music-queue-song>i svg { width:16px; fill:none; stroke:currentColor; stroke-width:2.2; }
@media not all { .music-queue-panel { border-color:rgba(255,255,255,.1); background:rgba(35,35,39,.97); }.music-queue-panel header,.music-queue-item { color:#eee; }.music-queue-item:hover,.music-queue-item.is-selected { background:#4a4a50; }.music-queue-item small { color:#aaa; } }
@media not all { .music-queue-panel header select,.music-queue-song { color:#eee; }.music-queue-song:hover,.music-queue-song.is-current { background:#4a4a50; }.music-queue-song small { color:#aaa; } }
.doubao-composer .doubao-voice-button,.doubao-composer .doubao-plus-button { position:relative; top:-10px; }
.doubao-header-tools button:first-child svg { width:33px; height:33px; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }

/* 豆包顶部图标与快捷功能随屏幕尺寸缩放。 */
.doubao-menu-button svg,
.doubao-header-tools svg { width:31px; height:31px; }
.doubao-menu-button svg { width:23px; height:23px; }
.doubao-header-tools button:first-child svg { width:22px; height:22px; }
.doubao-quick-list { gap:clamp(8px,2.8vw,11px); }
.doubao-quick-list button { gap:clamp(5px,1.8vw,7px); min-height:clamp(40px,11.8vw,46px); padding:0 clamp(11px,3.85vw,15px); border-radius:clamp(12px,3.6vw,14px); font-size:clamp(12px,3.85vw,15px); }
.doubao-quick-list svg { width:clamp(18px,5.65vw,22px); height:clamp(18px,5.65vw,22px); }
.doubao-quick-list i { font-size:clamp(18px,5.4vw,21px); }

/* 播放器仅显示当前一句；完整歌词只在沉浸式歌词页滚动。 */
.music-player .music-lyrics { position:static; top:auto; width:min(86vw,350px); height:34px; margin:8px auto 0; }
.music-player .music-lyrics-window { display:flex; align-items:center; justify-content:center; height:34px; overflow:hidden; }
.music-player .music-lyrics p[data-music-lyric-line] { display:none; width:100%; min-height:0; padding:4px 8px; overflow:hidden; box-sizing:border-box; font-size:13px; line-height:26px; text-overflow:ellipsis; white-space:nowrap; }
.music-player .music-lyrics .music-lyric-text { position:relative; display:inline-block; max-width:100%; color:#aaaab0; white-space:nowrap !important; }
.music-player .music-lyrics .music-lyric-base { display:block; color:#aaaab0; }
.music-player .music-lyrics .music-lyric-highlight { position:absolute; inset:0 auto 0 0; display:block; width:0; overflow:hidden; color:#222; white-space:nowrap; }
.music-player .music-lyrics p.is-active .music-lyric-highlight { width:var(--lyric-progress,0%); }
.music-player .music-lyrics p:not(.is-active) .music-lyric-highlight { width:0 !important; }
.music-player .music-lyrics p[data-music-lyric-line].is-active { display:block; font-size:13px; transform:none; }
.music-player .music-lyrics p.is-placeholder { display:block; width:100%; padding:4px 8px; box-sizing:border-box; line-height:26px; }
.music-full-lyrics-page { position:absolute; inset:0; display:grid; grid-template-rows:auto minmax(0,1fr); width:auto; height:auto; overflow:hidden; }
.music-full-lyrics-main { min-height:0; height:auto; overflow:hidden; }
.music-full-lyrics-scroll { min-height:0; overflow-y:auto; overflow-anchor:none; overscroll-behavior:contain; }

/* 播放页歌名与歌手统一居中；矮屏时避免单行歌词被“一起听”头像遮挡。 */
.music-player .music-player-meta h2,
.music-player .music-player-meta p { width:100%; margin-right:auto; margin-left:auto; text-align:center; }
.music-player .music-together-person { min-width:var(--music-together-person-width,54px); }
.music-player .music-together-person i { width:var(--music-together-avatar-size,52px); height:var(--music-together-avatar-size,52px); }
.music-player .music-together>.music-together-people { gap:var(--music-together-gap,18px); min-height:calc(var(--music-together-avatar-size,52px) + 6px); }
.music-app .music-main.is-player-page { overflow-x:hidden !important; overflow-y:hidden !important; overscroll-behavior:none !important; touch-action:pan-x !important; }
.music-app .music-main.is-player-page > .music-player { touch-action:pan-x !important; }
.music-player .music-progress input { touch-action:pan-x; }
.music-player.is-compact .music-turntable { width:min(68vw,250px); }
@media (max-width:720px) {
  .music-player.is-compact .music-together { position:static; width:min(100%,420px); margin:6px auto 0; }
  .music-player.is-compact .music-lyrics { height:var(--music-lyrics-height,30px); margin-top:4px; }
  .music-player.is-compact .music-lyrics-window { height:var(--music-lyrics-height,30px); }
}
@media (max-height:740px) {
  .music-app .music-main:has(> .music-player) { padding-top:8px; padding-bottom:78px; }
  .music-app .music-player { margin-top:0; margin-bottom:0; }
  .music-player .music-player-meta { margin-top:12px; }
  .music-player .music-progress { margin-top:12px !important; }
  .music-player .music-together { margin-top:6px; }
}

/* Ta：角色手机桌面 */
.ta-app { position:fixed; inset:0; z-index:32; display:none; background:#dfe6f1; color:#1f2430; }
.ta-app.is-open { display:block; }
.ta-phone-page { position:relative; display:flex; flex-direction:column; width:100%; height:100%; overflow:hidden; isolation:isolate; }
.ta-wallpaper { position:absolute; inset:0; z-index:-2; background:linear-gradient(145deg,#d9e9fb 0%,#f8e7f0 48%,#f7e7ca 100%); background-position:center; background-size:cover; }
.ta-wallpaper::after { position:absolute; inset:0; background:radial-gradient(circle at 80% 12%,rgba(255,255,255,.75),transparent 32%),linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.42)); content:""; }
.ta-phone-status { position:relative; z-index:3; display:flex; flex:0 0 auto; justify-content:space-between; padding:max(12px,env(safe-area-inset-top,0px)) 24px 0; color:#303642; font-size:12px; font-weight:700; }
.ta-phone-head { position:relative; z-index:3; display:flex; flex:0 0 auto; align-items:center; justify-content:space-between; padding:14px 22px 10px; }
.ta-phone-head > button:first-child { display:flex; align-items:center; gap:9px; min-width:0; padding:0; border:0; background:transparent; color:inherit; text-align:left; cursor:pointer; }
.ta-phone-head > button:first-child > i { display:grid; flex:0 0 42px; place-items:center; width:42px; height:42px; overflow:hidden; border:2px solid rgba(255,255,255,.9); border-radius:14px; background:rgba(255,255,255,.56); color:#737987; font-style:normal; box-shadow:0 4px 13px rgba(86,103,131,.13); }
.ta-phone-head > button:first-child > i img { width:100%; height:100%; object-fit:cover; }
.ta-phone-head > button:first-child > span { display:grid; gap:2px; min-width:0; }
.ta-phone-head b { overflow:hidden; font-size:15px; text-overflow:ellipsis; white-space:nowrap; }
.ta-phone-head small { color:#747c8c; font-size:10px; }
.ta-phone-head em { display:grid; flex:0 0 34px; place-items:center; width:34px; height:34px; margin-left:2px; color:#8b92a0; font-size:21px; font-style:normal; transform:scaleX(1.65); transform-origin:center; }
.ta-close { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:rgba(255,255,255,.55); color:#5e6675; font:inherit; font-size:23px; line-height:1; cursor:pointer; }
.ta-head-actions { display:flex; align-items:center; gap:7px; }
.ta-head-actions > button { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:rgba(255,255,255,.55); color:#5e6675; font:inherit; font-size:18px; line-height:1; cursor:pointer; }
.ta-head-actions > button:first-child { font-size:22px; }
.ta-head-actions > button:first-child:disabled { opacity:.55; cursor:wait; }
.ta-phone-main { flex:1; min-height:0; overflow-y:auto; padding:8px 22px 120px; }
.ta-welcome { padding:13px 4px 20px; }
.ta-welcome > span { color:#8493ad; font-size:10px; font-weight:750; letter-spacing:.16em; }
.ta-welcome h1 { margin-top:6px; color:#252d3b; font-size:25px; letter-spacing:-.04em; }
.ta-welcome p { max-width:290px; margin-top:6px; overflow:hidden; color:#70798a; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.ta-app-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:22px 12px; max-width:430px; margin:auto; }
.ta-app-icon { display:grid; justify-items:center; gap:7px; min-width:0; border:0; background:transparent; color:#323947; font:inherit; cursor:pointer; }
.ta-app-icon > i { display:grid; place-items:center; width:clamp(52px,15vw,68px); height:clamp(52px,15vw,68px); border:1px solid rgba(255,255,255,.7); border-radius:21px; background:var(--ta-icon-color); color:#fff; box-shadow:0 9px 19px rgba(65,82,112,.16),inset 0 1px 1px rgba(255,255,255,.48); font-style:normal; }
.ta-app-icon > i svg { width:58%; height:58%; fill:none; stroke:currentColor; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.ta-app-icon > i img { width:100%; height:100%; border-radius:20px; object-fit:cover; }
.ta-app-icon span { max-width:78px; overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.ta-app-icon:active > i { transform:scale(.94); }
.ta-phone-dock { position:absolute; right:18px; bottom:max(18px,env(safe-area-inset-bottom)); left:18px; display:flex; justify-content:space-around; height:70px; padding:8px 22px; border:1px solid rgba(255,255,255,.72); border-radius:25px; background:rgba(255,255,255,.48); box-shadow:0 12px 28px rgba(72,89,116,.15); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
.ta-phone-dock button { display:grid; justify-items:center; gap:3px; min-width:74px; border:0; background:transparent; color:#656e7c; font:inherit; cursor:pointer; }
.ta-phone-dock button:first-child { color:#303a4b; }
.ta-phone-dock svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; stroke-linejoin:round; }
.ta-phone-dock small { font-size:10px; }
.ta-role-sheet { position:absolute; inset:0; z-index:4; display:grid; place-items:center; padding:20px; }
.ta-appearance-sheet { position:absolute; inset:0; z-index:6; display:block; padding:0; background:#f7f8fb; }
.ta-appearance-sheet > .ta-role-backdrop { display:none; }
.ta-appearance-sheet > section { position:relative; width:100%; height:100%; max-height:none; overflow-y:auto; padding:max(18px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom)); border:0; border-radius:0; background:#f7f8fb; box-shadow:none; }
.ta-appearance-sheet header { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.ta-appearance-sheet header small,.ta-appearance-wallpaper>span,.ta-appearance-icons>span { color:#8d97a7; font-size:9px; font-weight:700; letter-spacing:.14em; }
.ta-appearance-sheet header h2 { margin-top:4px; font-size:20px; }
.ta-appearance-sheet header button { width:29px; height:29px; border:0; border-radius:50%; background:#edf0f4; color:#6e7684; font-size:20px; cursor:pointer; }
.ta-appearance-wallpaper { display:grid; grid-template-columns:1fr auto; gap:9px; align-items:center; }
.ta-appearance-wallpaper>span,.ta-appearance-wallpaper>.ta-wallpaper-preview { grid-column:1/-1; }
.ta-appearance-wallpaper>.ta-wallpaper-preview { height:110px; border-radius:16px; background:linear-gradient(145deg,#d9e9fb,#f8e7f0 48%,#f7e7ca); background-position:center; background-size:cover; }
.ta-appearance-sheet label,.ta-appearance-sheet article>button { display:grid; place-items:center; min-height:31px; padding:0 10px; border:1px solid rgba(0,0,0,.09); border-radius:9px; background:#fff; color:#4f5969; font-size:10px; cursor:pointer; }
.ta-appearance-sheet input { display:none; }
.ta-appearance-wallpaper>button { min-height:31px; border:0; border-radius:9px; background:#edf0f4; color:#687181; cursor:pointer; }
.ta-appearance-icons { display:grid; gap:8px; margin-top:20px; }
.ta-appearance-icons article { display:grid; grid-template-columns:44px 1fr auto auto; align-items:center; gap:9px; padding:8px; border:1px solid rgba(0,0,0,.07); border-radius:13px; background:rgba(255,255,255,.65); }
.ta-appearance-icons article>i { display:grid; place-items:center; width:44px; height:44px; overflow:hidden; border-radius:13px; background:var(--ta-icon-color); color:#fff; }
.ta-appearance-icons article>i svg { width:26px; fill:none; stroke:currentColor; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.ta-appearance-icons article>i img { width:100%; height:100%; object-fit:cover; }
.ta-appearance-icons article>b { font-size:11px; }
.ta-image-sources { display:flex; gap:4px; }
.ta-image-sources label,.ta-image-sources button { display:grid; place-items:center; min-width:38px; min-height:29px; padding:0 7px; border:1px solid rgba(0,0,0,.09); border-radius:8px; background:#fff; color:#4f5969; font:inherit; font-size:9px; cursor:pointer; }
.ta-appearance-wallpaper>.ta-image-sources { grid-column:1; }
.ta-appearance-icons article { grid-template-columns:44px minmax(42px,1fr) auto; }
.ta-appearance-icons article>.ta-image-sources { justify-self:end; }
.ta-appearance-icons article>button { grid-column:3; min-width:62px; }
.ta-url-sheet { position:absolute; inset:0; z-index:8; display:grid; place-items:center; padding:24px; }
.ta-url-sheet>section { position:relative; display:grid; gap:13px; width:min(100%,360px); padding:18px; border-radius:20px; background:#fff; box-shadow:0 18px 50px rgba(0,0,0,.22); }
.ta-url-sheet>section input { width:100%; height:40px; padding:0 11px; border:1px solid #ddd; border-radius:10px; outline:0; }
.ta-url-sheet>section>div { display:flex; justify-content:flex-end; gap:7px; }
.ta-url-sheet>section button { min-width:64px; height:32px; border:0; border-radius:9px; background:#edf0f4; color:#596272; }
.ta-url-sheet>section button:last-child { background:#263143; color:#fff; }
.ta-appearance-sheet button:disabled { opacity:.45; cursor:default; }
.ta-appearance-wallpaper { grid-template-columns:1fr; }
.ta-appearance-wallpaper>.ta-image-sources { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); width:100%; }
.ta-appearance-wallpaper>.ta-image-sources label,.ta-appearance-wallpaper>.ta-image-sources button { width:100%; height:36px; min-height:36px; padding:0 5px; }
.ta-wallpaper-default { width:100%; height:34px; border:0; border-radius:9px; background:#edf0f4; color:#687181; }
.ta-icon-custom-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; align-items:start; }
.ta-icon-custom-grid article { display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:52px auto; justify-items:center; align-items:center; gap:6px; min-width:0; padding:10px 6px; text-align:center; }
.ta-icon-custom-grid article>.ta-icon-swap-preview { grid-column:1; justify-self:center; display:grid; place-items:center; width:52px; min-width:52px; max-width:52px; height:52px; min-height:52px; max-height:52px; aspect-ratio:1/1; box-sizing:border-box; padding:0; overflow:hidden; border:2px solid transparent; border-radius:16px; background:var(--ta-icon-color); color:#fff; cursor:pointer; transition:border-color .15s,transform .15s; }
.ta-icon-custom-grid article>.ta-icon-swap-preview.is-selected { border-color:#263143; transform:scale(.94); box-shadow:0 0 0 3px rgba(38,49,67,.13); }
.ta-icon-swap-preview svg { width:30px; fill:none; stroke:currentColor; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.ta-icon-swap-preview img { width:100%; height:100%; object-fit:cover; }
.ta-icon-custom-grid article>b { grid-column:1; justify-self:center; width:100%; overflow:hidden; font-size:10px; text-align:center; text-overflow:ellipsis; white-space:nowrap; }
.ta-icon-source-sheet { position:absolute; inset:0; z-index:8; display:grid; place-items:center; padding:20px; }
.ta-icon-source-sheet>section { position:relative; width:min(100%,390px); padding:18px; border-radius:22px; background:#fff; box-shadow:0 20px 60px rgba(0,0,0,.22); }
.ta-icon-source-sheet header { display:flex; align-items:center; justify-content:space-between; }
.ta-icon-source-sheet header small { color:#98a1b1; font-size:9px; letter-spacing:.14em; }
.ta-icon-source-sheet header h2 { margin-top:4px; font-size:19px; }
.ta-icon-source-sheet header>button { width:29px; height:29px; border:0; border-radius:50%; background:#edf0f4; color:#677181; font-size:19px; }
.ta-icon-source-sheet>section>p { margin-top:10px; color:#8a93a1; font-size:10px; line-height:1.5; }
.ta-icon-source-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:14px; }
.ta-icon-source-options>button,.ta-icon-source-options>label { display:grid; justify-items:center; gap:5px; min-height:92px; padding:10px 5px; border:1px solid #e3e6eb; border-radius:13px; background:#f8f9fb; color:#3d4654; font:inherit; cursor:pointer; }
.ta-icon-source-options input { display:none; }
.ta-icon-source-options b { font-size:21px; }
.ta-icon-source-options span { font-size:10px; font-weight:650; }
.ta-icon-source-options small { color:#959dab; font-size:8px; }
.ta-icon-url-panel { margin-top:12px; }
.ta-icon-url-list { display:grid; gap:7px; max-height:230px; overflow-y:auto; }
.ta-icon-url-list label { display:grid; grid-template-columns:82px minmax(0,1fr); align-items:center; gap:8px; padding:6px 8px; }
.ta-icon-url-list label span { font-size:9px; text-align:left; }
.ta-icon-url-list label input { display:block; width:100%; min-width:0; height:29px; padding:0 8px; border:1px solid #dfe3e9; border-radius:8px; outline:0; font-size:9px; }
.ta-icon-url-panel button { width:100%; height:34px; margin-top:7px; border:0; border-radius:9px; background:#263143; color:#fff; }
.ta-icon-source-reset { width:100%; height:34px; margin-top:10px; border:1px solid #e1e4e9; border-radius:9px; background:#fff; color:#6f7886; font:inherit; font-size:10px; }
.ta-appearance-section-head { display:flex; align-items:center; justify-content:space-between; gap:8px; grid-column:1/-1; }
.ta-appearance-section-head>span { color:#8d97a7; font-size:9px; font-weight:700; letter-spacing:.14em; }
.ta-appearance-section-head>div { display:flex; gap:6px; }
.ta-appearance-section-head button { min-width:62px; height:34px; padding:0 7px; border:1px solid rgba(0,0,0,.09); border-radius:9px; background:#fff; color:#4f5969; font:inherit; font-size:9px; white-space:nowrap; }
.ta-appearance-section-head button:first-child { background:#263143; color:#fff; }
.ta-appearance-section-head.is-reference-layout { display:grid; justify-content:stretch; gap:10px; }
.ta-appearance-section-head.is-reference-layout > span { color:#242424; font-size:13px; font-weight:700; letter-spacing:0; }
.ta-appearance-section-head.is-reference-layout > div { display:flex; flex-wrap:wrap; gap:7px; }
.ta-appearance-section-head.is-reference-layout button { min-width:0; height:44px; padding:0 11px; border:1px solid transparent; border-radius:13px; background:#fff; color:#555; font-size:10px; }
.ta-appearance-section-head.is-reference-layout button:first-child { background:#fff; color:#555; }
.ta-appearance-section-head.is-reference-layout [data-ta-icons-reset] { border-color:#d4d6da; }
.ta-appearance-section-head.is-reference-layout + .ta-icon-swap-tip { color:#929292; font-size:10px; text-align:left; }
.ta-appearance-save-footer { display:flex; justify-content:center; width:100%; padding:22px 0 max(8px,env(safe-area-inset-bottom)); }
.ta-appearance-save-footer [data-ta-appearance-save] { width:min(100%,360px); min-height:46px; padding:0 22px; border:0; border-radius:14px; background:#263143; color:#fff; font:inherit; font-size:12px; font-weight:700; cursor:pointer; }
.ta-icon-swap-tip { margin:0; color:#929aa7; font-size:9px; text-align:center; }
.ta-appearance-wallpaper>.ta-appearance-section-head+div { grid-column:1/-1; }
.ta-role-backdrop { position:absolute; inset:0; background:rgba(31,39,53,.25); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.ta-role-sheet > section { position:relative; width:min(100%,380px); max-height:74vh; overflow-y:auto; padding:18px; border:1px solid rgba(255,255,255,.8); border-radius:23px; background:rgba(255,255,255,.92); box-shadow:0 20px 55px rgba(39,52,74,.22); }
.ta-role-sheet header { display:flex; align-items:center; justify-content:space-between; margin-bottom:13px; }
.ta-role-sheet header small { color:#98a1b1; font-size:9px; letter-spacing:.14em; }
.ta-role-sheet h2 { margin-top:4px; font-size:20px; }
.ta-role-sheet header button { width:29px; height:29px; border:0; border-radius:50%; background:#edf0f4; color:#6e7684; font-size:20px; cursor:pointer; }
.ta-role-list { display:grid; gap:8px; }
.ta-role-list > button { display:flex; align-items:center; gap:10px; width:100%; padding:9px; border:1px solid rgba(51,63,82,.08); border-radius:14px; background:rgba(255,255,255,.65); color:#303746; text-align:left; cursor:pointer; }
.ta-role-list > button > i { display:grid; flex:0 0 42px; place-items:center; width:42px; height:42px; overflow:hidden; border-radius:13px; background:#e1e5ec; color:#7d8695; font-style:normal; }
.ta-role-list > button > i img { width:100%; height:100%; object-fit:cover; }
.ta-role-list > button > span { display:grid; flex:1; gap:3px; min-width:0; }
.ta-role-list b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.ta-role-list small { color:#929aa8; font-size:10px; }
.ta-role-list em { color:#8c96a7; font-size:18px; font-style:normal; }
.ta-refresh-sheet { position:absolute; inset:0; z-index:5; display:grid; place-items:end center; padding:18px; }
.ta-refresh-backdrop { position:absolute; inset:0; background:rgba(31,39,53,.22); -webkit-backdrop-filter:blur(7px); backdrop-filter:blur(7px); }
.ta-refresh-sheet > section { position:relative; width:min(100%,390px); padding:18px; border:1px solid rgba(255,255,255,.82); border-radius:24px; background:rgba(255,255,255,.95); box-shadow:0 20px 55px rgba(39,52,74,.24); animation:taRefreshSheetIn .22s ease both; }
.ta-refresh-sheet header { display:flex; align-items:center; justify-content:space-between; margin-bottom:13px; }
.ta-refresh-sheet header small { color:#98a1b1; font-size:9px; letter-spacing:.14em; }
.ta-refresh-sheet h2 { margin-top:4px; font-size:20px; }
.ta-refresh-sheet header button { width:29px; height:29px; border:0; border-radius:50%; background:#edf0f4; color:#6e7684; font-size:20px; cursor:pointer; }
.ta-refresh-select-all { display:flex; align-items:center; gap:9px; width:100%; min-height:38px; margin-bottom:8px; padding:0 4px; border:0; background:transparent; color:#303746; font:inherit; font-size:12px; text-align:left; cursor:pointer; }
.ta-refresh-select-all i { display:grid; place-items:center; width:20px; height:20px; border:1px solid #c6ccd5; border-radius:6px; color:#fff; font-size:13px; font-style:normal; }
.ta-refresh-select-all i.is-checked { border-color:#52657d; background:#52657d; }
.ta-refresh-sheet main { display:grid; gap:8px; }
.ta-refresh-sheet main > button { display:flex; align-items:center; gap:11px; width:100%; min-height:58px; padding:8px 10px; border:1px solid rgba(51,63,82,.08); border-radius:15px; background:rgba(248,249,251,.9); color:#303746; text-align:left; cursor:pointer; }
.ta-refresh-sheet main > button.is-selected { border-color:#9eafc4; background:#f0f4f8; }
.ta-refresh-sheet main > button > i { display:grid; flex:0 0 40px; place-items:center; width:40px; height:40px; border-radius:12px; background:#edf0f4; color:#687487; font-style:normal; }
.ta-refresh-sheet main > button > i svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; stroke-linejoin:round; }
.ta-refresh-sheet main > button > span { display:grid; flex:1; gap:3px; min-width:0; }
.ta-refresh-sheet main > button b { font-size:12px; }
.ta-refresh-sheet main > button small { color:#929aa8; font-size:10px; }
.ta-refresh-sheet main > button em { color:#8c96a7; font-size:18px; font-style:normal; }
.ta-refresh-submit { width:100%; min-height:42px; margin-top:12px; border:0; border-radius:13px; background:#303a4b; color:#fff; font:inherit; font-size:12px; cursor:pointer; }
.ta-refresh-submit:disabled { background:#d8dce2; color:#9aa2ae; cursor:not-allowed; }
@keyframes taRefreshSheetIn { from { opacity:0; transform:translateY(22px); } to { opacity:1; transform:none; } }
.ta-empty { padding:25px 8px; color:#929aa8; font-size:12px; line-height:1.6; text-align:center; }
.ta-no-role { display:grid; justify-items:center; max-width:290px; margin:16vh auto 0; text-align:center; }
.ta-no-role > i { display:grid; place-items:center; width:64px; height:64px; border-radius:22px; background:rgba(255,255,255,.58); color:#8994a7; font-size:34px; font-style:normal; }
.ta-no-role h2 { margin-top:15px; font-size:19px; }
.ta-no-role p { margin-top:7px; color:#768092; font-size:11px; line-height:1.6; }
.ta-no-role button { min-height:36px; margin-top:16px; padding:0 15px; border:0; border-radius:10px; background:#344256; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
@media (min-width:600px) { .ta-app { background:#cfd9e7; }.ta-phone-page { width:min(100%,520px); margin:auto; box-shadow:0 0 70px rgba(46,63,87,.2); } }
@media not all { .ta-app { background:#1e2530; }.ta-wallpaper { background:linear-gradient(145deg,#27394c,#453746 52%,#494337); }.ta-wallpaper::after { background:linear-gradient(180deg,rgba(21,28,39,.08),rgba(21,28,39,.38)); }.ta-phone-status,.ta-phone-head,.ta-welcome h1,.ta-app-icon,.ta-phone-dock button { color:#f2f4f8; }.ta-phone-head small,.ta-welcome p { color:#b7c0cf; }.ta-welcome > span { color:#b4c3df; }.ta-close,.ta-phone-head > button:first-child > i,.ta-phone-dock { background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.18); }.ta-phone-dock button:first-child { color:#fff; }.ta-role-sheet > section { background:rgba(42,49,62,.96); color:#f2f4f8; }.ta-role-sheet header button { background:#596273; color:#fff; }.ta-role-list > button { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.08); color:#f2f4f8; }.ta-empty,.ta-role-list small,.ta-no-role p { color:#b4bdcc; }.ta-no-role > i { background:rgba(255,255,255,.12); } }
.ta-role-app-page { display:flex; flex-direction:column; width:100%; height:100%; background:#f7f8fb; color:#202734; }
.ta-role-app-header { display:flex; align-items:center; gap:12px; padding:max(18px,env(safe-area-inset-top)) 20px 15px; border-bottom:1px solid #e6e9ef; background:rgba(255,255,255,.9); }
.ta-role-app-header > button { width:34px; height:34px; border:0; border-radius:50%; background:#eef1f5; color:#4d5868; font:inherit; font-size:28px; line-height:1; cursor:pointer; }
.ta-role-app-header > .ta-app-header-refresh { margin-left:auto; font-size:21px; }
.ta-app-header-refresh.is-refreshing,.ta-chat-refresh-button.is-refreshing { animation:ta-chat-refresh-spin .8s linear infinite; }
.ta-role-app-header > div { display:grid; flex:1; gap:3px; min-width:0; }
.ta-role-app-header small { overflow:hidden; color:#919aa9; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.ta-role-app-header h1 { font-size:21px; }
.ta-role-app-header > i { display:grid; place-items:center; width:40px; height:40px; border-radius:13px; background:var(--ta-icon-color); color:#fff; font-style:normal; }
.ta-role-app-header > i svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
.ta-role-app-main { flex:1; overflow-y:auto; padding:18px 20px 30px; }
.ta-role-perspective { display:grid; gap:5px; margin:0 auto 16px; padding:13px 14px; border-radius:15px; background:#eef5ff; color:#3569a6; }
.ta-role-perspective span { font-size:9px; font-weight:750; letter-spacing:.15em; }
.ta-role-perspective b { color:#273e5f; font-size:13px; }
.ta-role-perspective small { color:#7590af; font-size:10px; }
.ta-role-intro { display:flex; align-items:center; gap:10px; margin-bottom:12px; padding:12px; border-radius:15px; background:#fff; box-shadow:0 5px 16px rgba(38,54,78,.06); }
.ta-role-intro > i { display:grid; place-items:center; width:42px; height:42px; overflow:hidden; border-radius:13px; background:#e4e8ef; color:#7b8595; font-style:normal; }
.ta-role-intro > i img { width:100%; height:100%; object-fit:cover; }
.ta-role-intro > div { display:grid; gap:4px; }
.ta-role-intro small { color:#8c96a6; font-size:10px; }
.ta-role-card { display:grid; gap:6px; margin-bottom:9px; padding:13px; border:1px solid #e8ebf0; border-radius:15px; background:#fff; box-shadow:0 4px 13px rgba(38,54,78,.04); }
.ta-role-card b { font-size:13px; }
.ta-role-card p { color:#667184; font-size:12px; line-height:1.6; white-space:pre-wrap; }
.ta-role-card small { color:#a1a9b5; font-size:10px; }
.ta-couple-section { margin:16px 0; }.ta-couple-section h3 { margin:0 0 10px; font-size:14px; }.ta-couple-card { display:grid; gap:6px; margin-bottom:9px; padding:13px; border:1px solid #e8ebf0; border-radius:15px; background:#fff; }.ta-couple-card b { font-size:13px; }.ta-couple-card p { margin:0; color:#667184; font-size:12px; line-height:1.6; white-space:pre-wrap; }.ta-couple-card small,.ta-couple-empty { color:#8c96a6; font-size:11px; }.ta-couple-new-wish { width:100%; margin-bottom:10px; padding:11px; border:0; border-radius:12px; background:#dceafb; color:#244b72; font:inherit; font-size:12px; cursor:pointer; }
.ta-couple-new-wish:disabled { opacity:.6; cursor:wait; }.ta-couple-overview { padding:22px 18px; border-radius:19px; background:#fff; }.ta-couple-overview span { color:#8a9bb0; font-size:10px; letter-spacing:.16em; }.ta-couple-overview h2 { margin:7px 0; font-size:20px; }.ta-couple-overview p { color:#667184; font-size:12px; line-height:1.7; }.ta-couple-overview-links { display:grid; gap:9px; margin-top:14px; }.ta-couple-overview-links button { display:grid; grid-template-columns:1fr auto; gap:4px; align-items:center; padding:14px; border:1px solid #e8ebf0; border-radius:14px; background:#fff; color:#27313f; font:inherit; text-align:left; cursor:pointer; }.ta-couple-overview-links b { font-size:13px; }.ta-couple-overview-links small { grid-column:1; color:#8c96a6; font-size:10px; }.ta-couple-overview-links i { grid-column:2; grid-row:1 / span 2; color:#8c96a6; font-size:20px; font-style:normal; }.ta-role-app-page .ta-couple-dock { position:relative; right:auto; bottom:auto; left:auto; z-index:2; flex:0 0 auto; width:auto; height:72px; margin:0 12px max(12px,env(safe-area-inset-bottom)); }.ta-role-app-page .ta-couple-dock button { flex:1; min-width:0; }.is-ta-couple-app .ta-role-app-main { min-height:0; padding-bottom:18px; }
.ta-couple-reply-wish { justify-self:start; margin-top:3px; padding:7px 12px; border:1px solid #cbdcf1; border-radius:9px; background:#f5f9ff; color:#3569a6; font:inherit; font-size:11px; cursor:pointer; }.ta-couple-reply-wish:disabled { opacity:.6; cursor:wait; }
.ta-couple-date-file { margin-bottom:9px; border:1px solid #e8ebf0; border-radius:14px; background:#fff; overflow:hidden; }.ta-couple-date-file summary { display:grid; gap:4px; padding:12px 14px; list-style:none; cursor:pointer; }.ta-couple-date-file summary::-webkit-details-marker { display:none; }.ta-couple-date-file summary span { color:#8c96a6; font-size:10px; }.ta-couple-date-file summary b { font-size:13px; }.ta-couple-date-file summary small { color:#8c96a6; font-size:10px; }.ta-couple-date-file > div { display:grid; gap:10px; padding:0 14px 14px; border-top:1px solid #eef0f3; }.ta-couple-date-file p { margin:0; padding-top:10px; color:#667184; font-size:11px; line-height:1.6; white-space:pre-wrap; }.ta-couple-date-file strong { display:block; margin-bottom:3px; color:#35465b; font-size:10px; }
.ta-bound-user { border-color:#d8e6f8; background:#f5f9ff; }
.ta-role-section-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:16px 0 9px; }
.ta-role-section-head b { font-size:14px; }
.ta-role-section-head button { min-height:30px; padding:0 9px; border:1px solid #cbdcf1; border-radius:9px; background:#fff; color:#4775a8; font:inherit; font-size:10px; cursor:pointer; }
.ta-role-section-head button:disabled { opacity:.55; cursor:wait; }
.ta-chat-entry-list { display:grid; gap:8px; }
.ta-chat-entry { display:flex; align-items:center; gap:10px; width:100%; padding:10px; border:1px solid #e7ebf1; border-radius:15px; background:#fff; color:#27313f; text-align:left; cursor:pointer; }
.ta-chat-entry > i { display:grid; flex:0 0 43px; place-items:center; width:43px; height:43px; overflow:hidden; border-radius:14px; background:#e2e7ef; color:#7d8796; font-style:normal; }
.ta-chat-entry > i img { width:100%; height:100%; object-fit:cover; }
.ta-chat-entry > span { display:grid; flex:1; gap:4px; min-width:0; }
.ta-chat-entry b { overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.ta-chat-entry small { overflow:hidden; color:#8e98a7; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.ta-chat-entry em { color:#a2aab6; font-size:21px; font-style:normal; }
.ta-group-entry { border-color:#d8e5f2; background:linear-gradient(135deg,#fff,#f3f8fc); }
.ta-group-entry > em { display:flex; align-items:center; gap:2px; font-size:10px; line-height:1.2; white-space:nowrap; }
.ta-group-entry.is-long-press { border-color:#e58c8c; background:#fff3f3; transform:scale(.985); transition:transform .12s ease,background .12s ease,border-color .12s ease; }
.chat-group-entry.is-long-press { border-color:#e58c8c; background:#fff3f3; transform:scale(.985); transition:transform .12s ease,background .12s ease,border-color .12s ease; }
.chat-app,
.ta-app,
.chat-app *,
.ta-app * { -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; }
.chat-app input,
.chat-app textarea,
.ta-app input,
.ta-app textarea { -webkit-user-select:text; user-select:text; -webkit-touch-callout:default; }
.ta-role-conversation { display:flex; flex-direction:column; width:100%; height:100%; background:#f7f8fb; color:#202734; }
.ta-role-conversation-header { display:flex; align-items:center; gap:11px; padding:max(18px,env(safe-area-inset-top)) 18px 13px; border-bottom:1px solid #e6e9ef; background:#fff; }
.ta-role-conversation-header > button { width:34px; height:34px; border:0; border-radius:50%; background:#eef1f5; color:#4d5868; font:inherit; font-size:28px; line-height:1; cursor:pointer; }
.ta-role-conversation-header > .ta-chat-refresh-button { margin-left:auto; font-size:21px; }
.ta-role-conversation-header > div { display:grid; flex:1; gap:3px; min-width:0; }
.ta-role-conversation-header small { color:#919aa9; font-size:10px; }
.ta-role-conversation-header > i { display:grid; place-items:center; width:40px; height:40px; overflow:hidden; border-radius:13px; background:#e4e8ef; color:#7b8595; font-style:normal; }
.ta-role-conversation-header > i img { width:100%; height:100%; object-fit:cover; }
.ta-role-conversation main { flex:1; overflow-y:auto; padding:18px 20px 26px; }
.ta-chat-message { display:flex; width:100%; max-width:100%; margin-bottom:13px; }
.ta-chat-message.is-owner { justify-content:flex-end; margin-left:auto; }
.ta-chat-message.is-other { justify-content:flex-start; }
.ta-chat-message-line { display:flex; align-items:flex-end; gap:8px; width:100%; max-width:100%; }
.ta-chat-message.is-owner .ta-chat-message-line { flex-direction:row-reverse; }
.ta-chat-message-line > i { display:grid; flex:0 0 38px; place-items:center; width:38px; height:38px; overflow:hidden; border-radius:12px; background:#e4e8ef; color:#7b8595; font-size:14px; font-style:normal; }
.ta-chat-message-line > i img { width:100%; height:100%; object-fit:cover; }
.ta-group-member-list { display:flex; gap:6px; margin:-4px 0 17px; padding-bottom:3px; overflow-x:auto; scrollbar-width:none; }
.ta-group-member-list::-webkit-scrollbar { display:none; }
.ta-group-member-list > span { display:grid; flex:0 0 auto; gap:2px; min-width:72px; padding:7px 9px; border:1px solid #e2e7ee; border-radius:11px; background:#fff; }
.ta-group-member-list b { color:#344052; font-size:11px; }
.ta-group-member-list small { max-width:110px; overflow:hidden; color:#8a95a5; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.ta-chat-message-content { display:grid; flex:0 1 auto; justify-items:start; gap:5px; min-width:0; max-width:min(76%,calc(100% - 48px)); }
.ta-chat-message.is-owner .ta-chat-message-content { justify-items:end; }
.ta-chat-message-content .ta-chat-bubble { max-width:100%; }
.ta-chat-sender-name { display:flex; max-width:100%; align-items:center; gap:5px; padding:3px 7px; overflow:hidden; border-radius:7px; background:#e8edf4; color:#344052; font-size:11px; font-weight:750; line-height:1.2; text-overflow:ellipsis; white-space:nowrap; }
.ta-chat-sender-name span { overflow:hidden; text-overflow:ellipsis; }
.ta-chat-sender-name em { overflow:hidden; color:#8490a0; font-size:8px; font-style:normal; font-weight:550; text-overflow:ellipsis; }
.ta-chat-message.is-owner .ta-chat-sender-name { text-align:right; }
.ta-chat-bubble { box-sizing:border-box; flex:0 1 auto; width:fit-content; min-width:0; max-width:min(76%,calc(100% - 48px)); padding:10px 13px; border:1px solid rgba(0,0,0,.07); border-radius:16px 16px 16px 5px; background:var(--ta-other-bubble,#222); color:var(--ta-other-text,#fff); font-size:13px; line-height:1.55; word-break:break-word; white-space:pre-wrap; }
.ta-chat-message.is-owner .ta-chat-bubble { border-radius:16px 16px 5px 16px; background:var(--ta-owner-bubble,#fff); color:var(--ta-owner-text,#111); }
.ta-chat-message .ta-chat-bubble.tap { display:block; width:max-content; max-width:min(86vw,300px); padding:7px 12px; border:0; border-radius:999px !important; background:#f0f0ee !important; color:#888 !important; box-shadow:none; font-size:10px; line-height:1.35; text-align:center; }
.ta-chat-message:has(.ta-chat-bubble.tap) { width:100%; max-width:100%; align-items:center; margin-left:0; margin-right:0; }
.ta-chat-message:has(.ta-chat-bubble.tap) .ta-chat-message-line { justify-content:center; }
.ta-chat-message:has(.ta-chat-bubble.tap) .ta-chat-message-line > i,
.ta-chat-message:has(.ta-chat-bubble.tap) .ta-chat-message-line > small { display:none !important; }
.ta-chat-message-line > small { flex:0 0 auto; margin-bottom:1px; color:#9ba4b2; font-size:9px; white-space:nowrap; }
.ta-chat-message.is-image .ta-chat-bubble { padding:5px; border:0; background:transparent; }
.ta-chat-message.is-image .ta-chat-bubble img { display:block; max-width:min(220px,calc(100vw - 138px)); max-height:300px; border-radius:10px; object-fit:contain; }
.ta-chat-recalled { color:#999; font-size:11px; font-style:italic; }
.ta-chat-bubble.transfer { width:min(260px,calc(100% - 48px)); max-width:calc(100% - 48px); padding:0; overflow:hidden; }
.ta-chat-transfer-card { padding:14px 15px 12px; }
.ta-chat-transfer-card > strong { display:block; color:inherit; font-size:10px; letter-spacing:.14em; opacity:.68; }
.ta-chat-transfer-card > b { display:block; margin-top:8px; color:inherit; font-size:24px; font-weight:650; line-height:1.1; }
.ta-chat-transfer-card > p { min-height:16px; margin:7px 0 0; color:inherit; font-size:11px; line-height:1.45; opacity:.78; }
.ta-chat-transfer-card > small { display:block; margin-top:11px; padding-top:9px; border-top:1px solid currentColor; color:inherit; font-size:9px; opacity:.58; }
.ta-chat-bubble.location { width:min(260px,calc(100% - 48px)); max-width:calc(100% - 48px); padding:12px 13px; }
.ta-chat-location-card { display:flex; align-items:center; gap:10px; min-width:0; }
.ta-chat-location-card > svg { flex:0 0 27px; width:27px; height:27px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.ta-chat-location-card > div { min-width:0; }
.ta-chat-location-card b { display:block; overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.ta-chat-location-card p { margin:3px 0 0; overflow-wrap:anywhere; color:inherit; font-size:10px; line-height:1.4; opacity:.78; }
.ta-chat-location-card small { display:block; margin-top:4px; color:inherit; font-size:9px; opacity:.58; }
.ta-chat-list-refresh { min-width:72px; }
.ta-chat-list-manage { min-width:72px; }
.ta-group-manage-layer { position:fixed; inset:0; z-index:120; display:grid; place-items:end center; background:rgba(23,31,43,.22); -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px); }
.ta-group-manage-backdrop { position:absolute; inset:0; border:0; background:transparent; cursor:pointer; }
.ta-group-manage-sheet { position:relative; z-index:1; display:flex; flex-direction:column; width:min(430px,calc(100% - 24px)); max-height:min(76vh,620px); margin-bottom:max(12px,env(safe-area-inset-bottom)); overflow:hidden; border:1px solid rgba(255,255,255,.82); border-radius:22px; background:#fff; color:#27313f; box-shadow:0 18px 55px rgba(25,38,58,.22); }
.ta-group-manage-sheet header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:18px 18px 13px; border-bottom:1px solid #edf0f4; }
.ta-group-manage-sheet header small { color:#9aa5b4; font-size:9px; letter-spacing:.14em; }
.ta-group-manage-sheet header h2 { margin-top:4px; font-size:19px; }
.ta-group-manage-sheet header p { margin-top:4px; color:#8d98a7; font-size:10px; }
.ta-group-manage-sheet header > button { width:28px; height:28px; border:0; border-radius:50%; background:#eef1f5; color:#566273; font-size:19px; line-height:1; cursor:pointer; }
.ta-group-manage-sheet main { display:grid; gap:8px; overflow-y:auto; padding:13px; }
.ta-group-manage-row { display:flex; align-items:center; gap:10px; width:100%; padding:10px; border:1px solid #e6ebf1; border-radius:14px; background:#fff; color:#27313f; text-align:left; cursor:pointer; }
.ta-group-manage-row.is-selected { border-color:#9dbfe5; background:#f1f7ff; }
.ta-group-manage-row > i { display:grid; flex:0 0 42px; place-items:center; width:42px; height:42px; overflow:hidden; border-radius:13px; background:#e2e7ef; color:#7d8796; font-style:normal; }
.ta-group-manage-row > i img { width:100%; height:100%; object-fit:cover; }
.ta-group-manage-row > span { display:grid; flex:1; gap:4px; min-width:0; }
.ta-group-manage-row b { overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.ta-group-manage-row small { overflow:hidden; color:#8e98a7; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.ta-group-manage-row em { display:grid; place-items:center; width:21px; height:21px; border:1px solid #cfd7e2; border-radius:7px; color:#fff; font-size:13px; font-style:normal; }
.ta-group-manage-row.is-selected em { border-color:#3975b5; background:#3975b5; }
.ta-group-manage-sheet footer { display:flex; justify-content:flex-end; gap:8px; padding:12px 14px max(14px,env(safe-area-inset-bottom)); border-top:1px solid #edf0f4; }
.ta-group-manage-sheet footer button { min-width:70px; min-height:34px; padding:0 12px; border:0; border-radius:10px; background:#eef1f5; color:#566273; font:inherit; font-size:11px; cursor:pointer; }
.ta-group-manage-sheet footer button.is-danger { background:#242b35; color:#fff; }
.ta-group-manage-sheet footer button:disabled { opacity:.45; cursor:not-allowed; }
@media not all { .ta-group-manage-sheet { border-color:#465160; background:#2a323e; color:#f1f3f7; }.ta-group-manage-sheet header,.ta-group-manage-sheet footer { border-color:#3b4553; }.ta-group-manage-sheet header p,.ta-group-manage-row small { color:#aeb8c6; }.ta-group-manage-sheet header > button,.ta-group-manage-sheet footer button { background:#3a4554; color:#e7ebf2; }.ta-group-manage-row { border-color:#3d4654; background:#303945; color:#f1f3f7; }.ta-group-manage-row.is-selected { border-color:#668fbd; background:#304965; }.ta-group-manage-row > i { background:#3a4554; }.ta-group-manage-row em { border-color:#697588; }.ta-group-manage-sheet footer button.is-danger { background:#eef1f5; color:#27313f; } }
@keyframes ta-chat-refresh-spin { to { transform:rotate(360deg); } }
.ta-chat-empty { display:grid; justify-items:center; margin-top:20vh; text-align:center; }
.ta-chat-empty > i { display:grid; place-items:center; width:58px; height:58px; overflow:hidden; border-radius:19px; background:#e4e8ef; color:#7b8595; font-style:normal; }
.ta-chat-empty > i img { width:100%; height:100%; object-fit:cover; }
.ta-chat-empty h2 { margin-top:13px; font-size:17px; }
.ta-chat-empty p { max-width:250px; margin-top:7px; color:#929cab; font-size:11px; line-height:1.6; }
.ta-role-conversation footer { padding:12px 20px max(15px,env(safe-area-inset-bottom)); border-top:1px solid #e6e9ef; background:#fff; color:#9ba4b2; font-size:10px; text-align:center; }
.ta-role-conversation footer button { margin-left:10px; padding:6px 10px; border:0; border-radius:9px; background:#202734; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.chat-group-conversation .chat-person { display:flex !important; }
.chat-group-conversation .chat-person > div:nth-child(2) { display:grid; flex:1; gap:4px; }
.chat-group-conversation .chat-group-sender { margin:0 0 4px 38px; color:#596576; font-size:11px; }
.chat-group-conversation .chat-group-sender b { display:inline-block; padding:3px 7px; border-radius:7px; background:#e8edf4; font-weight:750; }
.chat-group-conversation .chat-message.is-user .chat-group-sender { margin-right:38px; margin-left:0; text-align:right; }
.chat-group-conversation .chat-group-join { padding:7px 10px; border:0; border-radius:9px; background:#222; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.chat-group-locked { padding:14px 20px max(18px,env(safe-area-inset-bottom)); border-top:1px solid rgba(0,0,0,.08); color:#9ba4b2; font-size:11px; text-align:center; }
.ta-role-empty { padding:60px 15px; color:#9ba4b2; font-size:12px; line-height:1.6; text-align:center; }
@media not all { .ta-role-app-page { background:#202631; color:#f1f3f7; }.ta-role-app-header { border-color:#343c49; background:rgba(32,38,49,.95); }.ta-role-app-header > button { background:#343d4c; color:#e7ebf2; }.ta-role-perspective { background:#263b55; color:#a9c8ef; }.ta-role-perspective b { color:#e5efff; }.ta-role-perspective small,.ta-role-intro small { color:#a5b5c8; }.ta-role-intro,.ta-role-card { border-color:#353e4c; background:#2a323e; }.ta-bound-user { border-color:#3c5875; background:#293b52; }.ta-role-section-head button { border-color:#49627f; background:#2a323e; color:#b8d4f5; }.ta-role-card p,.ta-role-empty { color:#b4bdca; }.ta-role-card small { color:#8995a5; } }
@media not all { .ta-chat-entry,.ta-role-conversation,.ta-role-conversation-header,.ta-role-conversation footer { border-color:#353e4c; background:#2a323e; color:#f1f3f7; }.ta-chat-entry small,.ta-chat-empty p { color:#aeb8c6; }.ta-role-conversation-header { background:#202631; }.ta-role-conversation-header > button { background:#343d4c; color:#e7ebf2; }.ta-role-conversation main { background:#202631; }.ta-chat-empty > i,.ta-chat-message-line > i { background:#343d4c; }.ta-role-conversation footer { background:#202631; color:#aeb8c6; } }
@media not all { .ta-group-member-list > span { border-color:#3d4654; background:#2a323e; }.ta-group-member-list b,.ta-chat-sender-name { color:#e7ebf2; }.ta-group-member-list small,.ta-chat-sender-name em { color:#aeb8c6; }.ta-chat-sender-name,.chat-group-conversation .chat-group-sender b { background:#343d4c; } }

/* TA 中的豆包是角色第一视角：角色提问在右侧，豆包回答在左侧。 */
.ta-role-doubao-page { background:#fff; color:#111; }
.ta-role-doubao-page .doubao-header { flex:0 0 128px; min-height:128px; padding:max(25px,env(safe-area-inset-top)) 7px 16px; }
.ta-role-doubao-page .doubao-menu-button { width:42px; height:42px; font-size:28px; font-family:inherit; }
.ta-role-doubao-page .doubao-chat-title { top:calc(max(29px,env(safe-area-inset-top)) + 18px); right:112px; left:112px; }
.ta-role-doubao-page .doubao-chat-title p { margin:0; color:#a0a0a0; font-size:13px; }
.ta-role-doubao-page .doubao-header-tools { min-width:90px; justify-content:flex-end; }
.ta-role-doubao-page .doubao-header-tools button { color:#aaa; cursor:pointer; }
.ta-role-doubao-page .doubao-header-tools button { width:48px; height:48px; padding:0; font-size:25px; }
.ta-role-doubao-page .doubao-header-tools button:disabled { opacity:.5; cursor:default; }
.ta-role-doubao-page .doubao-header-tools button.is-refreshing { animation:taDoubaoRefreshSpin .9s linear infinite; }
.ta-role-doubao-page .doubao-main { flex:1; min-height:0; overflow-y:auto; padding:23px 36px 14px; }
.ta-role-doubao-page .doubao-messages { gap:19px; max-width:690px; }
.ta-role-doubao-page .doubao-message { width:fit-content; max-width:85%; box-sizing:border-box; }
.ta-role-doubao-page .doubao-message.is-user { justify-self:end; width:fit-content; min-height:0; padding:11px 17px; border-radius:17px; background:#0798f5 !important; color:#fff; box-shadow:none; }
.ta-role-doubao-page .doubao-message.is-user p { color:#fff; font-size:15px; line-height:1.45; }
.ta-role-doubao-page .doubao-message.is-assistant { justify-self:start; width:100%; max-width:none; padding:0; overflow:hidden; border-radius:25px; background:#f7f7f7; color:#111; transform:translateX(-11px); }
.ta-role-doubao-page .doubao-message.is-assistant > p { min-height:70px; padding:22px 24px; font-size:16px; line-height:1.55; }
.ta-role-doubao-page .doubao-answer-actions { display:flex; align-items:center; gap:17px; min-height:72px; padding:12px 23px; border-top:1px solid #dfdfdf; }
.ta-role-doubao-page .doubao-answer-actions button { width:43px; height:43px; padding:0; border:0; border-radius:15px; background:#edf4fb; color:#2f68ed; opacity:1; }
.ta-role-doubao-page .doubao-answer-actions button:last-child { margin-left:auto; }
.ta-role-doubao-page .doubao-answer-actions svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
.ta-role-doubao-page .doubao-message > small { display:none; }
.ta-role-doubao-page .ta-doubao-empty { padding:22vh 15px; color:#aaa; font-size:12px; text-align:center; }
.ta-role-doubao-page .doubao-quick-wrap { padding:8px 0 10px; }
.ta-role-doubao-page .doubao-quick-list { padding:0 36px; }
.ta-role-doubao-page .doubao-quick-list button { cursor:default; opacity:.72; }
.ta-role-doubao-page .ta-doubao-readonly-composer { margin:0 14px max(14px,env(safe-area-inset-bottom)); padding:0 12px; opacity:.72; }
.ta-role-doubao-page .ta-doubao-readonly-composer textarea { min-height:50px; padding:15px 4px; font-size:12px; }
.ta-role-doubao-page .ta-doubao-readonly-composer button { color:#aaa; }
.ta-doubao-history-layer { position:absolute; inset:0; z-index:10; }
.ta-doubao-history-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.16); }
.ta-doubao-history-panel { position:absolute; top:0; bottom:0; left:0; width:min(86vw,360px); overflow:hidden; background:#fff; box-shadow:12px 0 32px rgba(0,0,0,.15); animation:taDoubaoHistoryIn .22s ease both; }
.ta-doubao-history-panel > header { display:flex; align-items:flex-start; justify-content:space-between; padding:max(25px,env(safe-area-inset-top)) 18px 15px; border-bottom:1px solid #eee; }
.ta-doubao-history-panel header small { color:#999; font-size:9px; letter-spacing:.15em; }
.ta-doubao-history-panel h2 { margin-top:6px; font-size:20px; }
.ta-doubao-history-panel header button { width:29px; height:29px; border:0; border-radius:50%; background:#f0f0f0; color:#555; font-size:19px; cursor:pointer; }
.ta-doubao-history-panel > main { display:grid; gap:8px; padding:12px; overflow-y:auto; }
.ta-doubao-history-panel > main > button { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:54px; padding:0 12px; border:1px solid #e8e8e8; border-radius:13px; background:#fafafa; color:#222; text-align:left; cursor:pointer; }
.ta-doubao-history-panel > main > button span { display:grid; flex:1; gap:4px; min-width:0; }
.ta-doubao-history-panel > main > button b { display:block; overflow:hidden; font-size:11px; font-weight:550; text-overflow:ellipsis; white-space:nowrap; }
.ta-doubao-history-panel > main > button small { color:#999; font-size:10px; }
.ta-doubao-history-panel > main > button i { flex:0 0 auto; margin-left:8px; color:#999; font-size:19px; font-style:normal; }
.ta-doubao-history-empty { padding:60px 15px; color:#aaa; font-size:11px; line-height:1.6; text-align:center; }
@keyframes taDoubaoHistoryIn { from { transform:translateX(-100%); } to { transform:translateX(0); } }
@keyframes taDoubaoRefreshSpin { to { transform:rotate(360deg); } }
@keyframes doubaoRerollSpin { to { transform:rotate(360deg); } }
@media not all {
  .ta-role-doubao-page { background:#fff; color:#111; }
  .ta-role-doubao-page .doubao-message.is-assistant { background:#f3f3f3; color:#111; }
}


/* if 时空：独立的平行世界与独立记忆 */
.ifspace-app { position:fixed; inset:0; z-index:33; display:none; background:#f7f4ff; color:#28243b; }
.ifspace-app.is-open { display:block; }
.ifspace-page,.ifspace-create,.ifspace-detail { display:flex; flex-direction:column; height:100%; }
.ifspace-header { display:flex; align-items:flex-start; justify-content:space-between; padding:max(24px,env(safe-area-inset-top)) 22px 17px; background:rgba(255,255,255,.78); border-bottom:1px solid rgba(112,86,165,.1); }
.ifspace-header > div { display:grid; gap:5px; }
.ifspace-header span,.ifspace-create small,.ifspace-detail small { color:#a58bc4; font-size:9px; font-weight:750; letter-spacing:.16em; }
.ifspace-header h1 { font-size:28px; letter-spacing:-.05em; }
.ifspace-header p { color:#9a91aa; font-size:11px; }
.ifspace-close,.ifspace-detail header > button:last-child { display:grid; place-items:center; width:31px; height:31px; border:0; border-radius:50%; background:#eee9f8; color:#726285; font-size:22px; line-height:1; cursor:pointer; }
.ifspace-main { flex:1; overflow-y:auto; padding:20px 20px 32px; }
.ifspace-hero { display:flex; align-items:center; justify-content:space-between; gap:14px; max-width:620px; margin:0 auto 19px; padding:18px; border-radius:21px; background:linear-gradient(135deg,#eee4ff,#e3f2ff); box-shadow:0 10px 26px rgba(124,102,173,.1); }
.ifspace-hero small { color:#9679c1; font-size:9px; font-weight:750; letter-spacing:.15em; }
.ifspace-hero h2 { max-width:300px; margin-top:7px; color:#40335b; font-size:19px; line-height:1.3; }
.ifspace-hero p { max-width:310px; margin-top:7px; color:#827a99; font-size:10px; line-height:1.5; }
.ifspace-hero > button { display:grid; justify-items:center; gap:5px; flex:0 0 69px; width:69px; height:69px; padding:12px 4px; border:0; border-radius:20px; background:#7654ad; color:#fff; font:inherit; cursor:pointer; box-shadow:0 8px 16px rgba(105,76,155,.22); }
.ifspace-hero > button svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; }
.ifspace-hero > button span { font-size:10px; }
.ifspace-owner { display:flex; align-items:center; justify-content:space-between; max-width:620px; margin:0 auto 22px; padding:0 5px; }
.ifspace-owner > span,.ifspace-section-title span { color:#a59bb3; font-size:10px; font-weight:750; letter-spacing:.14em; }
.ifspace-owner > button { display:flex; align-items:center; gap:7px; padding:5px 8px; border:0; border-radius:10px; background:#fff; color:#4d425e; font:inherit; cursor:pointer; }
.ifspace-owner i { display:grid; place-items:center; width:27px; height:27px; overflow:hidden; border-radius:9px; background:#e6def3; color:#8979a0; font-style:normal; }
.ifspace-owner i img { width:100%; height:100%; object-fit:cover; }
.ifspace-owner b { font-size:11px; }.ifspace-owner em { color:#a79bb3; font-style:normal; }
.ifspace-list { max-width:620px; margin:auto; }.ifspace-section-title { display:flex; justify-content:space-between; align-items:center; margin-bottom:9px; }.ifspace-section-title b { color:#aaa1b4; font-size:10px; font-weight:400; }
.ifspace-space-card { display:flex; align-items:center; gap:11px; width:100%; margin-bottom:9px; padding:11px; border:1px solid rgba(119,91,163,.1); border-radius:16px; background:rgba(255,255,255,.82); color:#42384f; text-align:left; cursor:pointer; box-shadow:0 5px 16px rgba(109,87,148,.05); }
.ifspace-space-card > i { display:grid; flex:0 0 41px; place-items:center; width:41px; height:41px; border-radius:13px; background:linear-gradient(135deg,#bba4e5,#8ebbe2); color:#fff; font-style:normal; }.ifspace-space-card svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; }
.ifspace-space-card > span { display:grid; flex:1; gap:4px; min-width:0; }.ifspace-space-card b { overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }.ifspace-space-card small,.ifspace-space-card p { overflow:hidden; color:#9990a7; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.ifspace-space-card em { color:#b0a6b8; font-size:21px; font-style:normal; }
.ifspace-empty-block { padding:58px 0; color:#aaa1b4; font-size:12px; line-height:1.7; text-align:center; }.ifspace-empty-block i { display:grid; place-items:center; width:54px; height:54px; margin:0 auto 12px; border-radius:18px; background:#e9e1f5; color:#a789c5; font-size:25px; font-style:normal; }
.ifspace-create header,.ifspace-detail header { display:flex; align-items:center; gap:12px; padding:max(18px,env(safe-area-inset-top)) 20px 15px; border-bottom:1px solid rgba(112,86,165,.1); background:rgba(255,255,255,.84); }.ifspace-create header > button,.ifspace-detail header > button:first-child { display:grid; place-items:center; width:34px; height:34px; border:0; border-radius:50%; background:#eee9f8; color:#726285; cursor:pointer; }.ifspace-create header svg,.ifspace-detail header svg { width:22px; fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; }.ifspace-create header > div,.ifspace-detail header > div { display:grid; gap:4px; flex:1; }.ifspace-create h1,.ifspace-detail h1 { font-size:21px; }.ifspace-create main { width:min(100%,620px); margin:auto; padding:25px 20px; }.ifspace-create label { display:grid; gap:7px; margin-bottom:16px; color:#6f6580; font-size:11px; }.ifspace-create input,.ifspace-create textarea { width:100%; min-height:42px; padding:11px 12px; border:1px solid #e3dcef; border-radius:12px; outline:0; background:#fff; color:#342b42; font:inherit; font-size:12px; }.ifspace-create textarea { min-height:100px; resize:vertical; }.ifspace-primary { display:flex; align-items:center; justify-content:center; gap:6px; width:100%; height:43px; margin-top:8px; border:0; border-radius:13px; background:#7654ad; color:#fff; font:inherit; font-size:12px; cursor:pointer; }.ifspace-primary svg { width:18px; fill:none; stroke:currentColor; stroke-width:2.2; }
.ifspace-detail header > div { min-width:0; }.ifspace-detail header h1 { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.ifspace-detail main { flex:1; overflow-y:auto; padding:20px; }.ifspace-world-card { max-width:620px; margin:auto; padding:17px; border-radius:18px; background:linear-gradient(135deg,#eee4ff,#e8f4ff); }.ifspace-world-card span { color:#9478bb; font-size:9px; font-weight:750; letter-spacing:.14em; }.ifspace-world-card h2 { margin-top:7px; color:#40345a; font-size:18px; line-height:1.4; }.ifspace-world-card p { margin-top:8px; color:#817895; font-size:11px; line-height:1.6; }.ifspace-character { display:flex; align-items:center; gap:10px; max-width:620px; margin:13px auto; padding:10px; border-radius:14px; background:#fff; }.ifspace-character i { display:grid; place-items:center; width:39px; height:39px; overflow:hidden; border-radius:12px; background:#e6def3; color:#8979a0; font-style:normal; }.ifspace-character i img { width:100%; height:100%; object-fit:cover; }.ifspace-character div { display:grid; gap:4px; }.ifspace-character small { color:#9990a7; font-size:10px; }.ifspace-message-list { max-width:620px; margin:22px auto 90px; }.ifspace-message { max-width:78%; margin-bottom:10px; padding:10px 12px; border-radius:15px 15px 15px 4px; background:#fff; box-shadow:0 4px 12px rgba(92,71,128,.06); }.ifspace-message.is-user { margin-left:auto; border-radius:15px 15px 4px 15px; background:#8a69bd; color:#fff; }.ifspace-message p { font-size:12px; line-height:1.6; white-space:pre-wrap; }.ifspace-empty-chat { padding:38px 0; color:#a39aaf; font-size:12px; line-height:1.7; text-align:center; }.ifspace-composer { position:absolute; right:16px; bottom:max(16px,env(safe-area-inset-bottom)); left:16px; display:flex; gap:8px; max-width:620px; margin:auto; padding:7px 8px 7px 13px; border:1px solid #e4ddef; border-radius:17px; background:rgba(255,255,255,.92); box-shadow:0 8px 24px rgba(87,68,122,.14); }.ifspace-composer input { flex:1; min-width:0; border:0; outline:0; background:transparent; color:#342b42; font:inherit; font-size:12px; }.ifspace-composer button { display:grid; place-items:center; width:34px; height:34px; border:0; border-radius:50%; background:#7654ad; color:#fff; cursor:pointer; }.ifspace-composer svg { width:18px; fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; }
.ifspace-sheet { position:absolute; inset:0; z-index:5; display:grid; place-items:center; padding:20px; }.ifspace-sheet-backdrop { position:absolute; inset:0; background:rgba(55,38,75,.22); backdrop-filter:blur(7px); }.ifspace-sheet > section { position:relative; width:min(100%,380px); max-height:72vh; overflow-y:auto; padding:17px; border-radius:21px; background:#fff; box-shadow:0 20px 55px rgba(56,39,82,.22); }.ifspace-sheet header { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }.ifspace-sheet header h2 { font-size:19px; }.ifspace-sheet header button { display:grid; place-items:center; width:29px; height:29px; border:0; border-radius:50%; background:#eee9f8; color:#726285; cursor:pointer; }.ifspace-sheet header svg { width:16px; fill:none; stroke:currentColor; stroke-width:2.5; }.ifspace-role-list { display:grid; gap:8px; }.ifspace-role-list > button { display:flex; align-items:center; gap:9px; width:100%; padding:9px; border:1px solid #eee9f3; border-radius:13px; background:#fff; color:#42384f; text-align:left; cursor:pointer; }.ifspace-role-list i { display:grid; flex:0 0 40px; place-items:center; width:40px; height:40px; overflow:hidden; border-radius:12px; background:#e6def3; color:#8979a0; font-style:normal; }.ifspace-role-list i img { width:100%; height:100%; object-fit:cover; }.ifspace-role-list span { display:grid; flex:1; gap:3px; }.ifspace-role-list b { font-size:12px; }.ifspace-role-list small { color:#9990a7; font-size:10px; }.ifspace-role-list em { color:#a89cb4; font-size:18px; font-style:normal; }.ifspace-empty { padding:25px 5px; color:#a39aaf; font-size:12px; text-align:center; }
@media not all { .ifspace-app { background:#20202b; color:#f3eff8; }.ifspace-header,.ifspace-create header,.ifspace-detail header { border-color:#3a3446; background:rgba(34,33,45,.9); }.ifspace-header h1,.ifspace-create h1,.ifspace-detail h1 { color:#f6f1ff; }.ifspace-header p,.ifspace-hero p,.ifspace-space-card small,.ifspace-space-card p,.ifspace-empty-block,.ifspace-owner > span,.ifspace-section-title span,.ifspace-section-title b { color:#b9afc5; }.ifspace-hero { background:linear-gradient(135deg,#403455,#31404f); }.ifspace-hero h2,.ifspace-world-card h2 { color:#f0e6ff; }.ifspace-hero p,.ifspace-world-card p { color:#c2b6d2; }.ifspace-owner > button,.ifspace-space-card,.ifspace-character,.ifspace-role-list > button,.ifspace-sheet > section { background:#2d2a38; color:#f2edf8; border-color:#463d52; }.ifspace-space-card > i { background:linear-gradient(135deg,#765aa2,#50779b); }.ifspace-create label { color:#c6bbd0; }.ifspace-create input,.ifspace-create textarea,.ifspace-composer { border-color:#4c4257; background:#2d2a38; color:#f3eff8; }.ifspace-world-card { background:linear-gradient(135deg,#403455,#31404f); }.ifspace-message { background:#2d2a38; }.ifspace-message.is-user { background:#765aa2; }.ifspace-composer input { color:#f3eff8; }.ifspace-sheet header button,.ifspace-role-list i { background:#463d52; color:#ddd0e8; }.ifspace-empty { color:#b9afc5; } }

/* IF 时空：纯黑白编辑部视觉。 */
.ifspace-app { --if-ink:#0a0a0a; --if-paper:#f6f6f3; --if-line:#c8c8c3; --if-muted:#747470; background:var(--if-paper); color:var(--if-ink); font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif; }
.ifspace-header,.ifspace-create header,.ifspace-detail header { border-color:var(--if-ink); background:rgba(246,246,243,.96); box-shadow:none; }
.ifspace-header span,.ifspace-create small,.ifspace-detail small,.ifspace-hero small,.ifspace-world-card span { color:var(--if-ink); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-weight:700; letter-spacing:.18em; }
.ifspace-header h1,.ifspace-create h1,.ifspace-detail h1 { color:var(--if-ink); font-weight:800; letter-spacing:-.055em; }
.ifspace-header p,.ifspace-hero p,.ifspace-space-card small,.ifspace-space-card p,.ifspace-world-card p { color:var(--if-muted); }
.ifspace-close,.ifspace-create header > button,.ifspace-detail header > button,.ifspace-detail header > button:last-child { border:1px solid var(--if-ink); border-radius:0; background:transparent; color:var(--if-ink); }
.ifspace-main,.ifspace-detail main { background-image:linear-gradient(rgba(0,0,0,.032) 1px,transparent 1px); background-size:100% 24px; }
.ifspace-hero { position:relative; overflow:hidden; border:1px solid var(--if-ink); border-radius:0; background:var(--if-paper); box-shadow:none; }
.ifspace-hero::after { position:absolute; top:-38px; right:78px; width:92px; height:152px; border-right:1px solid var(--if-ink); border-left:1px solid var(--if-ink); content:""; transform:rotate(34deg); pointer-events:none; }
.ifspace-hero h2 { color:var(--if-ink); font-family:Georgia,"Songti SC",serif; font-size:21px; font-weight:400; }
.ifspace-hero > button,.ifspace-primary { position:relative; z-index:1; border:1px solid var(--if-ink); border-radius:0; background:var(--if-ink); color:var(--if-paper); box-shadow:none; transition:background .18s ease,color .18s ease; }
.ifspace-hero > button:hover,.ifspace-primary:hover { background:var(--if-paper); color:var(--if-ink); }
.ifspace-owner > span,.ifspace-section-title span { color:var(--if-ink); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.ifspace-owner > button { border:1px solid var(--if-ink); border-radius:0; background:var(--if-paper); color:var(--if-ink); }
.ifspace-owner i,.ifspace-character i,.ifspace-role-list i { border-radius:0; background:#deded9; color:var(--if-ink); filter:grayscale(1); }
.ifspace-space-card { border:0; border-top:1px solid var(--if-ink); border-radius:0; background:transparent; color:var(--if-ink); box-shadow:none; }
.ifspace-space-card:last-child { border-bottom:1px solid var(--if-ink); }
.ifspace-space-card > i { border:1px solid var(--if-ink); border-radius:0; background:var(--if-ink); color:#fff; }
.ifspace-empty-block i { border:1px solid var(--if-ink); border-radius:50%; background:transparent; color:var(--if-ink); }
.ifspace-create main { margin-top:0; }
.ifspace-create label { color:var(--if-ink); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }
.ifspace-create input,.ifspace-create textarea { border:0; border-bottom:1px solid var(--if-ink); border-radius:0; background:transparent; color:var(--if-ink); }
.ifspace-create input:focus,.ifspace-create textarea:focus { background:#fff; outline:1px solid var(--if-ink); }
.ifspace-world-card { position:relative; max-width:680px; padding:25px 22px 27px; border:1px solid var(--if-ink); border-radius:0; background:var(--if-ink); color:#fff; }
.ifspace-world-card::after { position:absolute; right:16px; bottom:13px; width:7px; height:7px; border:1px solid #fff; border-radius:50%; content:""; }
.ifspace-world-index,.ifspace-transcript-title { display:flex; align-items:center; justify-content:space-between; }
.ifspace-world-index em,.ifspace-transcript-title em { color:inherit; font:400 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.12em; }
.ifspace-world-card span,.ifspace-world-card h2,.ifspace-world-card p { color:#fff; }
.ifspace-world-card h2 { max-width:520px; margin-top:29px; font-family:Georgia,"Songti SC",serif; font-size:24px; font-weight:400; line-height:1.48; letter-spacing:-.025em; }
.ifspace-world-card p { margin-top:24px; padding-top:13px; border-top:1px solid #555; font-size:11px; }
.ifspace-character { max-width:680px; padding:11px 0; border-bottom:1px solid var(--if-ink); border-radius:0; background:transparent; color:var(--if-ink); }
.ifspace-character div { grid-template-columns:auto 1fr; align-items:baseline; width:100%; }
.ifspace-character small { grid-column:1; color:var(--if-muted); }.ifspace-character b { grid-column:1; }.ifspace-character p { grid-column:2; grid-row:1 / span 2; color:var(--if-muted); font-size:10px; text-align:right; }
.ifspace-transcript-title { max-width:680px; margin:29px auto 0; padding-bottom:8px; border-bottom:1px solid var(--if-ink); font:700 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.15em; }
.ifspace-message-list { max-width:680px; margin-top:0; }
.ifspace-message { max-width:82%; margin:0; padding:16px 0 18px; border-bottom:1px solid var(--if-line); border-radius:0; background:transparent; color:var(--if-ink); box-shadow:none; }
.ifspace-message.is-user { margin-left:auto; border-radius:0; background:transparent; color:var(--if-ink); text-align:right; }
.ifspace-message > span { display:block; margin-bottom:7px; color:var(--if-muted); font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.14em; }
.ifspace-message p { font-family:Georgia,"Songti SC",serif; font-size:13px; line-height:1.75; }
.ifspace-empty-chat { padding:47px 0; color:var(--if-muted); }.ifspace-empty-chat span { font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.16em; }.ifspace-empty-chat p { margin-top:12px; line-height:1.8; }
.ifspace-composer { max-width:680px; padding:5px 5px 5px 14px; border:1px solid var(--if-ink); border-radius:0; background:rgba(246,246,243,.96); box-shadow:0 8px 0 rgba(0,0,0,.08); }
.ifspace-composer input { color:var(--if-ink); }.ifspace-composer button { border:1px solid var(--if-ink); border-radius:0; background:var(--if-ink); color:#fff; }
.ifspace-sheet-backdrop { background:rgba(0,0,0,.35); }.ifspace-sheet > section { border:1px solid var(--if-ink); border-radius:0; background:var(--if-paper); color:var(--if-ink); box-shadow:12px 12px 0 rgba(0,0,0,.2); }.ifspace-sheet header button,.ifspace-role-list > button { border:1px solid var(--if-ink); border-radius:0; background:transparent; color:var(--if-ink); }
.ifspace-hero { min-height:210px; padding:25px 20px; isolation:isolate; }
.ifspace-hero::after { display:none; }
.ifspace-hero-copy { position:relative; z-index:2; align-self:flex-end; max-width:64%; }
.ifspace-hero-copy h2 { margin-top:10px; font-size:24px; line-height:1.22; }
.ifspace-hero-copy p { max-width:255px; margin-top:12px; }
.ifspace-cosmos { position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none; }
.ifspace-orbit { position:absolute; border:1px solid currentColor; border-radius:50%; opacity:.3; transform:rotate(-19deg); }
.ifspace-orbit::after { position:absolute; width:7px; height:7px; border-radius:50%; background:currentColor; content:""; }
.ifspace-orbit.orbit-one { top:-84px; right:-22px; width:245px; height:245px; }.ifspace-orbit.orbit-one::after { bottom:39px; left:20px; }
.ifspace-orbit.orbit-two { top:-29px; right:25px; width:160px; height:160px; transform:rotate(28deg); }.ifspace-orbit.orbit-two::after { top:18px; right:21px; width:5px; height:5px; }
.ifspace-orbit.orbit-three { right:89px; bottom:-59px; width:112px; height:112px; transform:rotate(64deg); }.ifspace-orbit.orbit-three::after { top:7px; left:31px; width:4px; height:4px; }
.ifspace-star { position:absolute; color:currentColor; font-style:normal; font-weight:400; }.ifspace-star.star-one { top:21px; left:48%; font-size:14px; }.ifspace-star.star-two { top:77px; left:44%; font-size:25px; }.ifspace-star.star-three { right:39%; bottom:23px; font-size:11px; }
.ifspace-hero > button { position:relative; z-index:3; display:flex; align-items:center; justify-content:center; flex:0 0 116px; width:116px; height:116px; padding:0; border-radius:50%; background:var(--if-ink); }
.ifspace-hero > button::before,.ifspace-hero > button::after { position:absolute; inset:44px -19px; border:1px solid currentColor; border-radius:50%; content:""; opacity:.65; transform:rotate(-19deg); }
.ifspace-hero > button::after { inset:36px -10px; opacity:.25; transform:rotate(21deg); }
.ifspace-hero > button span { position:relative; z-index:1; font-size:11px; font-weight:700; letter-spacing:.08em; }
.ifspace-hero > button small { position:absolute; right:0; bottom:17px; left:0; color:inherit; font:600 6px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.13em; opacity:.6; }
.ifspace-new-planet { position:absolute; top:17px; right:0; left:0; font:300 18px/1 Arial,sans-serif; font-style:normal; }
.ifspace-space-card { min-height:76px; padding:12px 4px; }
.ifspace-space-card > .ifspace-planet { position:relative; display:grid; flex:0 0 50px; place-items:center; width:50px; height:50px; border:1px solid var(--if-ink); border-radius:50%; background:transparent; color:var(--if-ink); }
.ifspace-planet::before { position:absolute; top:20px; right:-7px; left:-7px; height:9px; border:1px solid currentColor; border-radius:50%; content:""; transform:rotate(-17deg); }
.ifspace-planet::after { position:absolute; top:7px; left:8px; width:6px; height:6px; border:1px solid currentColor; border-radius:50%; content:""; opacity:.45; }
.ifspace-planet span { position:relative; z-index:1; padding:2px; background:var(--if-paper); font:700 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }
.ifspace-space-card:nth-child(3n) .ifspace-planet::before { transform:rotate(15deg); }.ifspace-space-card:nth-child(3n + 1) .ifspace-planet::before { transform:rotate(-28deg); }
.ifspace-space-card > em { color:var(--if-ink); font:400 13px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }
.ifspace-empty-block { position:relative; min-height:170px; overflow:hidden; }
.ifspace-empty-block::before,.ifspace-empty-block::after { position:absolute; top:50%; left:50%; width:130px; height:54px; border:1px solid var(--if-line); border-radius:50%; content:""; transform:translate(-50%,-50%) rotate(-16deg); }
.ifspace-empty-block::after { width:80px; height:80px; border-radius:50%; transform:translate(-50%,-50%); }
.ifspace-empty-block i { position:relative; z-index:1; width:45px; height:45px; background:var(--if-paper); }.ifspace-empty-block p { position:relative; z-index:1; margin-top:20px; }
@media not all { .ifspace-app { --if-ink:#f4f4f0; --if-paper:#080808; --if-line:#3a3a38; --if-muted:#9b9b96; }.ifspace-header,.ifspace-create header,.ifspace-detail header { background:rgba(8,8,8,.96); }.ifspace-main,.ifspace-detail main { background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px); }.ifspace-hero,.ifspace-owner > button,.ifspace-sheet > section { background:var(--if-paper); color:var(--if-ink); }.ifspace-hero > button,.ifspace-primary,.ifspace-space-card > i,.ifspace-composer button { background:var(--if-ink); color:var(--if-paper); }.ifspace-create input,.ifspace-create textarea,.ifspace-composer { background:var(--if-paper); color:var(--if-ink); }.ifspace-create input:focus,.ifspace-create textarea:focus { background:#111; }.ifspace-world-card { background:var(--if-ink); color:var(--if-paper); }.ifspace-world-card span,.ifspace-world-card h2,.ifspace-world-card p { color:var(--if-paper); }.ifspace-world-card::after { border-color:var(--if-paper); }.ifspace-world-card p { border-color:#aaa; }.ifspace-character,.ifspace-message,.ifspace-message.is-user { background:transparent; color:var(--if-ink); }.ifspace-composer { background:rgba(8,8,8,.96); }.ifspace-sheet header button,.ifspace-role-list > button { background:transparent; color:var(--if-ink); } }
@media (max-width:420px) { .ifspace-hero { min-height:196px; padding:20px 16px; }.ifspace-hero-copy { max-width:62%; }.ifspace-hero-copy h2 { font-size:20px; }.ifspace-hero-copy p { font-size:9px; }.ifspace-hero > button { flex-basis:96px; width:96px; height:96px; }.ifspace-hero > button::before { inset:36px -15px; }.ifspace-hero > button::after { inset:31px -8px; }.ifspace-new-planet { top:13px; }.ifspace-hero > button small { bottom:13px; } }

/* IF 时空空状态：天文图谱，图像与说明保持独立层级。 */
.ifspace-empty-block { display:grid; grid-template-columns:minmax(210px,1.15fr) minmax(160px,.85fr); align-items:center; min-height:250px; padding:25px 20px; overflow:hidden; border-bottom:1px solid var(--if-ink); color:var(--if-ink); text-align:left; }
.ifspace-empty-block::before,.ifspace-empty-block::after { display:none; }
.ifspace-empty-system { position:relative; width:220px; height:180px; margin:auto; color:var(--if-ink); }
.ifspace-empty-system::before,.ifspace-empty-system::after { position:absolute; background:currentColor; content:""; opacity:.28; }
.ifspace-empty-system::before { top:0; bottom:22px; left:50%; width:1px; }.ifspace-empty-system::after { top:79px; right:4px; left:4px; height:1px; }
.ifspace-empty-sun { position:absolute; top:53px; left:83px; width:52px; height:52px; border:1px solid currentColor; border-radius:50%; background:var(--if-paper); box-shadow:inset 0 0 0 7px var(--if-paper),inset 0 0 0 8px currentColor; }
.ifspace-empty-sun::before { position:absolute; top:23px; left:23px; width:4px; height:4px; border-radius:50%; background:currentColor; content:""; }
.ifspace-empty-orbit { position:absolute; top:38px; left:20px; width:178px; height:81px; border:1px solid currentColor; border-radius:50%; transform:rotate(-13deg); }
.ifspace-empty-orbit.orbit-b { top:25px; left:53px; width:112px; height:108px; opacity:.42; transform:rotate(51deg); }
.ifspace-empty-orbit > i { position:absolute; top:11px; right:21px; width:8px; height:8px; border:1px solid currentColor; border-radius:50%; background:var(--if-paper); }
.ifspace-empty-orbit.orbit-b > i { top:auto; right:auto; bottom:7px; left:25px; width:4px; height:4px; background:currentColor; }
.ifspace-empty-coordinate { position:absolute; right:0; bottom:0; color:var(--if-muted); font:400 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace; font-style:normal; letter-spacing:.1em; }
.ifspace-empty-copy { position:relative; z-index:1; display:grid; align-content:center; padding-left:24px; border-left:1px solid var(--if-line); }
.ifspace-empty-copy > span { color:var(--if-ink); font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.18em; }
.ifspace-empty-copy p { margin:14px 0 20px; color:var(--if-muted); font-family:Georgia,"Songti SC",serif; font-size:13px; line-height:1.75; }
.ifspace-empty-copy button { display:flex; align-items:center; justify-content:space-between; width:100%; max-width:170px; padding:10px 0; border:0; border-top:1px solid var(--if-ink); border-bottom:1px solid var(--if-ink); background:transparent; color:var(--if-ink); font:700 10px/1 Arial,"PingFang SC",sans-serif; cursor:pointer; }
.ifspace-empty-copy button b { font-size:13px; font-weight:400; }
@media (max-width:460px) { .ifspace-empty-block { grid-template-columns:1fr; min-height:330px; padding:22px 16px 27px; }.ifspace-empty-system { width:210px; height:164px; }.ifspace-empty-copy { width:min(100%,250px); margin:auto; padding:18px 0 0; border-top:1px solid var(--if-line); border-left:0; text-align:center; }.ifspace-empty-copy p { margin:11px 0 16px; }.ifspace-empty-copy button { margin:auto; } }

/* 创建时空：无需调用模型的随机世界种子。 */
.ifspace-create-intro { position:relative; display:grid; grid-template-columns:1fr auto; align-items:center; gap:6px 18px; margin-bottom:26px; padding:0 0 18px; border-bottom:1px solid var(--if-ink); }
.ifspace-create-intro > span { color:var(--if-ink); font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.17em; }
.ifspace-create-intro > p { grid-column:1; color:var(--if-muted); font-family:Georgia,"Songti SC",serif; font-size:12px; }
.ifspace-create-intro > button { grid-column:2; grid-row:1 / span 2; display:grid; grid-template-columns:22px 1fr; align-items:center; min-width:124px; padding:10px 12px; border:1px solid var(--if-ink); background:transparent; color:var(--if-ink); text-align:left; cursor:pointer; }
.ifspace-create-intro > button i { grid-row:1 / span 2; font-size:15px; font-style:normal; }.ifspace-create-intro > button b { font-size:11px; }.ifspace-create-intro > button small { color:var(--if-muted); font-size:6px; letter-spacing:.13em; }
.ifspace-create-intro > button:hover { background:var(--if-ink); color:var(--if-paper); }.ifspace-create-intro > button:hover small { color:inherit; opacity:.65; }
.ifspace-create-intro.is-randomized > button i { animation:ifspace-random-spin .45s ease; }
@keyframes ifspace-random-spin { from { transform:rotate(0) scale(.7); } to { transform:rotate(180deg) scale(1); } }
@media (max-width:390px) { .ifspace-create-intro { grid-template-columns:1fr; }.ifspace-create-intro > button { grid-column:1; grid-row:auto; margin-top:7px; }.ifspace-create-intro > p { grid-column:1; } }
@media (prefers-reduced-motion:reduce) { .ifspace-create-intro.is-randomized > button i { animation:none; } }
.ifspace-create-options { display:grid; grid-template-columns:repeat(2,1fr); gap:13px 10px; margin:23px 0 18px; padding-top:20px; border-top:1px solid var(--if-line); }
.ifspace-create-options label { margin:0; }
.ifspace-create-options select,.ifspace-create-options input { box-sizing:border-box; width:100%; height:40px; min-height:40px; padding:0 10px; border:1px solid var(--if-ink); border-radius:0; outline:0; background:var(--if-paper); color:var(--if-ink); font:600 11px/1 Arial,"PingFang SC",sans-serif; }
.ifspace-style-field { grid-column:1 / -1; }.ifspace-style-field > div:not(.ifspace-style-detail) { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); gap:6px; align-items:center; }.ifspace-style-field select { grid-column:1 / -1; min-width:0; width:100%; }.ifspace-style-field > div:not(.ifspace-style-detail) > button { width:100%; min-width:0; min-height:34px; padding:0 10px; border:1px solid var(--if-ink); background:var(--if-ink); color:var(--if-paper); font:700 9px/1 Arial,"PingFang SC",sans-serif; cursor:pointer; }
.ifspace-style-editor { margin:11px 0 0; padding:16px; border:1px solid var(--if-ink); background:var(--if-paper); }.ifspace-style-editor[hidden] { display:none; }.ifspace-style-editor > div { display:flex; align-items:center; justify-content:space-between; margin-bottom:15px; }.ifspace-style-editor > div span { font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.17em; }.ifspace-style-editor > div button { width:25px; height:25px; border:1px solid var(--if-ink); background:transparent; color:var(--if-ink); cursor:pointer; }.ifspace-style-editor label { margin-bottom:13px; }.ifspace-style-editor input,.ifspace-style-editor textarea { box-sizing:border-box; width:100%; border:1px solid var(--if-line); border-radius:0; background:transparent; color:var(--if-ink); }.ifspace-style-editor textarea { min-height:88px; }.ifspace-style-editor > button { width:100%; min-height:39px; border:1px solid var(--if-ink); background:var(--if-ink); color:var(--if-paper); font:700 10px/1 Arial,"PingFang SC",sans-serif; cursor:pointer; }
.ifspace-style-detail { display:grid !important; gap:7px; margin-top:11px; color:var(--if-ink); font:700 10px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.06em; }.ifspace-style-detail textarea { box-sizing:border-box; width:100%; min-height:150px; padding:12px; border:1px solid var(--if-ink); border-radius:0; background:var(--if-paper); color:var(--if-ink); font:400 12px/1.7 Arial,"PingFang SC",sans-serif; resize:vertical; }.ifspace-style-detail > input { box-sizing:border-box; width:100%; min-height:40px; padding:0 10px; border:1px solid var(--if-ink); border-radius:0; background:var(--if-paper); color:var(--if-ink); font:400 11px/1 Arial,"PingFang SC",sans-serif; }.ifspace-style-detail small { color:var(--if-muted); font-size:8px; font-weight:400; letter-spacing:0; }.ifspace-style-detail > button { justify-self:end; min-width:104px; min-height:35px; padding:0 14px; border:1px solid var(--if-ink); background:var(--if-ink); color:var(--if-paper); font:700 10px/1 Arial,"PingFang SC",sans-serif; cursor:pointer; }
.ifspace-style-detail[hidden] { display:none !important; }
.ifspace-create { min-height:0; overflow:hidden; }
.ifspace-create > header { flex:0 0 auto; }
.ifspace-create > main { box-sizing:border-box; flex:1 1 auto; min-height:0; width:min(100%,620px); margin:0 auto; padding:25px 20px max(38px,calc(env(safe-area-inset-bottom) + 24px)); overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
.ifspace-create > main .ifspace-primary { margin-bottom:4px; }

/* IF 时空阅读页固定为白底黑字，并采用小说段落排版。 */
.ifspace-detail { --if-ink:#080808; --if-paper:#fff; --if-line:#d4d4d0; --if-muted:#686864; background:#fff; color:#080808; }
.ifspace-detail > header { border-color:#080808 !important; background:rgba(255,255,255,.97) !important; color:#080808 !important; }
.ifspace-detail > header h1,.ifspace-detail > header small,.ifspace-detail > header button { color:#080808 !important; }
.ifspace-detail > header button { border-color:#080808 !important; background:#fff !important; }
.ifspace-detail > main { background-color:#fff; background-image:linear-gradient(rgba(0,0,0,.025) 1px,transparent 1px) !important; color:#080808; }
.ifspace-detail .ifspace-world-card { background:#080808; color:#fff; }
.ifspace-detail .ifspace-world-card span,.ifspace-detail .ifspace-world-card h2,.ifspace-detail .ifspace-world-card p { color:#fff; }
.ifspace-detail .ifspace-character,.ifspace-detail .ifspace-message,.ifspace-detail .ifspace-message.is-user { background:transparent; color:#080808; }
.ifspace-detail .ifspace-message p,.ifspace-detail .ifspace-world-card > p { margin-top:0; margin-bottom:1.35em; text-indent:2em; white-space:pre-wrap; }
.ifspace-detail .ifspace-message p + p { margin-top:.45em; }
.ifspace-detail .ifspace-world-card > p + p { margin-top:.55em; padding-top:0; border-top:0; }
.ifspace-detail .ifspace-composer { border-color:#080808; background:rgba(255,255,255,.97); color:#080808; }
.ifspace-detail .ifspace-composer input { color:#080808; }.ifspace-detail .ifspace-composer button { background:#080808; color:#fff; }
.ifspace-detail .ifspace-world-card { border-color:#080808; background:#fff; color:#080808; }
.ifspace-detail .ifspace-world-card span,.ifspace-detail .ifspace-world-card h2,.ifspace-detail .ifspace-world-card p { color:#080808; }
.ifspace-detail .ifspace-world-card p { border-color:#d4d4d0; }
.ifspace-detail .ifspace-world-card::after { border-color:#080808; }
.ifspace-detail .ifspace-world-card h2,.ifspace-detail .ifspace-world-card > p,.ifspace-detail .ifspace-message p { color:var(--if-reading-color,#111); font-family:var(--if-reading-font,Georgia,"Songti SC",serif); font-size:var(--if-reading-size,15px); line-height:1.9; }
.ifspace-type-button { flex:0 0 34px; width:34px; height:34px; margin-left:auto; border:1px solid #080808 !important; border-radius:0 !important; background:#fff !important; color:#080808 !important; font:700 11px/1 Georgia,serif; cursor:pointer; }
.ifspace-type-panel { position:absolute; top:64px; right:14px; z-index:7; width:min(290px,calc(100% - 28px)); box-sizing:border-box; padding:16px; border:1px solid #080808; background:#fff; color:#080808; box-shadow:9px 9px 0 rgba(0,0,0,.14); }.ifspace-type-panel[hidden] { display:none; }.ifspace-type-panel > div:first-child { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }.ifspace-type-panel > div:first-child span { font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.15em; }.ifspace-type-panel > div:first-child button { width:25px; height:25px; border:1px solid #080808; background:#fff; color:#080808; cursor:pointer; }.ifspace-type-panel > label { display:grid; gap:7px; margin-top:13px; color:#080808; font:700 9px/1.3 Arial,"PingFang SC",sans-serif; }.ifspace-type-panel select { width:100%; height:38px; padding:0 9px; border:1px solid #080808; border-radius:0; background:#fff; color:#080808; }.ifspace-type-panel label > div { display:flex; align-items:center; gap:10px; }.ifspace-type-panel input[type="range"] { flex:1; accent-color:#080808; }.ifspace-type-panel input[type="color"] { width:44px; height:34px; padding:2px; border:1px solid #080808; background:#fff; }.ifspace-type-panel output { min-width:52px; color:#686864; font:600 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }.ifspace-font-upload input { position:absolute; width:1px; height:1px; opacity:0; }.ifspace-font-upload b { display:grid; place-items:center; min-height:37px; border:1px solid #080808; font-size:10px; cursor:pointer; }
@media (max-width:460px) { .ifspace-create-options { grid-template-columns:1fr; gap:13px; } }

/* 三个主页面保留手机安全区，不再额外强制 79px 顶栏占位。 */
.beauty-head,
.settings-header,
.chat-app .chat-header { box-sizing:border-box; min-height:0; padding-top:max(10px, env(safe-area-inset-top)); padding-bottom:8px; }
.settings-header h1,
.chat-header h1 { margin-top:6px; font-size:22px; }
.settings-header p { margin-top:5px; }

/* Safari 对动态插入的外部 SVG symbol 可能丢失内部 class 样式，预览中直接补齐线条。 */
.beauty-app-preview svg .icon-day { fill:none; stroke:#222; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.beauty-app-preview svg .icon-night { fill:none; stroke:#f1f1f1; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.chat-offline-modal { position:fixed; inset:0; z-index:60; display:none; place-items:center; padding:20px; }
.chat-offline-modal.is-open { display:grid; }
.chat-offline-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.24); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.chat-offline-card { position:relative; display:flex; flex-direction:column; width:min(100%,390px); max-height:82vh; overflow:hidden; padding:18px; border-radius:22px; background:#fbfbfc; color:#222; box-shadow:0 20px 60px rgba(0,0,0,.22); }
.chat-offline-card header { display:flex; align-items:center; justify-content:space-between; }.chat-offline-card header > div { display:grid; gap:5px; }.chat-offline-card header h2 { margin-top:4px; font-size:20px; }.chat-offline-card header button { width:29px; height:29px; border:0; border-radius:50%; background:#ededf0; color:#777; font-size:19px; cursor:pointer; }
.chat-offline-note { margin:12px 0 17px; color:#92929a; font-size:11px; line-height:1.5; }.chat-offline-card > label { display:grid; gap:7px; margin-top:12px; color:#777; font-size:11px; }.chat-offline-card > label input { height:39px; padding:0 11px; border:1px solid #e2e2e6; border-radius:10px; outline:0; background:#fff; color:#222; font:inherit; font-size:12px; }.chat-offline-card > footer { display:flex; justify-content:flex-end; gap:8px; margin-top:20px; }.chat-offline-card > footer button { min-width:64px; height:35px; padding:0 12px; border:0; border-radius:10px; background:#ededf0; color:#666; font:inherit; font-size:11px; cursor:pointer; }.chat-offline-card > footer button:last-child { background:#222; color:#fff; }
.chat-offline-card.is-session { padding:0; }.chat-offline-card.is-session header { padding:18px 18px 13px; border-bottom:1px solid #ededf0; }.chat-offline-scene { display:grid; gap:5px; margin:13px 18px 3px; padding:11px 12px; border-radius:12px; background:#f1edf8; color:#5d4a78; }.chat-offline-scene b { font-size:12px; }.chat-offline-scene small { color:#8e819e; font-size:10px; }.chat-offline-messages { flex:1; min-height:180px; overflow-y:auto; padding:12px 18px; }.chat-offline-messages article { max-width:78%; margin:0 0 9px; padding:9px 11px; border-radius:14px 14px 14px 4px; background:#f1f1f3; font-size:12px; line-height:1.6; }.chat-offline-messages article.is-user { margin-left:auto; border-radius:14px 14px 4px 14px; background:#7e62b3; color:#fff; }.chat-offline-empty { padding:45px 12px; color:#aaaab0; font-size:11px; line-height:1.7; text-align:center; }.chat-offline-card.is-session form { display:flex; gap:8px; padding:10px 14px 14px; border-top:1px solid #ededf0; }.chat-offline-card.is-session form input { flex:1; min-width:0; height:37px; padding:0 10px; border:1px solid #e2e2e6; border-radius:10px; outline:0; font:inherit; font-size:11px; }.chat-offline-card.is-session form button { width:55px; border:0; border-radius:10px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
@media not all { .chat-offline-card { background:#29292d; color:#eee; }.chat-offline-card header button,.chat-offline-card > footer button:first-child { background:#444449; color:#ddd; }.chat-offline-card > label { color:#bbb; }.chat-offline-card > label input,.chat-offline-card.is-session form input { border-color:#4b4b51; background:#343438; color:#eee; }.chat-offline-card > footer button:last-child,.chat-offline-card.is-session form button { background:#eee; color:#111; }.chat-offline-card.is-session header { border-color:#444449; }.chat-offline-scene { background:#3c344a; color:#e5d8f4; }.chat-offline-scene small { color:#b9aaca; }.chat-offline-messages article { background:#38383e; }.chat-offline-messages article.is-user { background:#765da6; }.chat-offline-card.is-session form { border-color:#444449; } }

/* 线下见面：把普通对话变成一个有地点、时间和行动的现场。 */
.chat-offline-card.is-immersive { width:min(100%,400px); height:min(720px,86vh); padding:0; border:1px solid rgba(255,255,255,.7); background:linear-gradient(165deg,#fbf8ff 0%,#f5f0fa 52%,#ebe5f3 100%); }
.chat-offline-topbar { display:flex; align-items:center; justify-content:space-between; padding:17px 18px 8px !important; border:0 !important; }
.chat-offline-topbar > button { width:30px !important; height:30px !important; background:rgba(255,255,255,.72) !important; color:#67537d !important; font-size:23px !important; line-height:1; }
.chat-offline-topbar > div { text-align:center; }.chat-offline-topbar h2 { font-size:18px !important; }.chat-offline-more { font-size:18px !important; }
.chat-offline-meta { display:flex; align-items:center; justify-content:space-between; padding:0 20px 13px; color:#8d7c9a; font-size:10px; }.chat-offline-meta b { color:#513d68; font-size:12px; }
.chat-offline-atmosphere { display:flex; align-items:center; gap:13px; margin:0 16px 10px; padding:18px 16px; border-radius:19px; background:linear-gradient(120deg,#c9b4df,#8e73af); color:#fff; box-shadow:0 10px 24px rgba(105,76,133,.2); }.chat-offline-atmosphere > div:last-child { display:grid; gap:5px; }.chat-offline-atmosphere span { font-size:10px; opacity:.82; }.chat-offline-atmosphere b { font-size:13px; font-weight:600; }
.chat-offline-orbit { position:relative; display:grid; place-items:center; width:48px; height:48px; border:1px solid rgba(255,255,255,.5); border-radius:50%; }.chat-offline-orbit i { position:absolute; width:8px; height:8px; border-radius:50%; background:#fff; box-shadow:0 0 0 8px rgba(255,255,255,.13); }.chat-offline-orbit strong { margin-top:37px; font-size:8px; font-weight:500; }
.chat-offline-character { display:flex; align-items:center; gap:10px; margin:0 20px 8px; }.chat-offline-pulse { width:10px; height:10px; border-radius:50%; background:#a88bc4; box-shadow:0 0 0 5px rgba(168,139,196,.16); }.chat-offline-character > div:nth-child(2) { display:grid; gap:3px; flex:1; }.chat-offline-character span { color:#9d8da7; font-size:9px; }.chat-offline-character b { color:#5d496b; font-size:11px; font-weight:500; }.chat-offline-character em { color:#a28eaf; font-size:9px; font-style:normal; }
.chat-offline-card.is-immersive .chat-offline-messages { min-height:0; margin:0 12px; padding:12px 8px; border-top:1px solid rgba(120,93,145,.12); border-bottom:1px solid rgba(120,93,145,.12); }.chat-offline-card.is-immersive .chat-offline-messages article { margin-bottom:13px; padding:0; background:transparent; color:#4d4055; }.chat-offline-card.is-immersive .chat-offline-messages article span { display:block; margin-bottom:4px; color:#a693b0; font-size:9px; }.chat-offline-card.is-immersive .chat-offline-messages article p { margin:0; padding:10px 12px; border-radius:14px 14px 14px 3px; background:rgba(255,255,255,.75); font-size:11px; line-height:1.65; }.chat-offline-card.is-immersive .chat-offline-messages article.is-user p { border-radius:14px 14px 3px 14px; background:#80639b; color:#fff; }
.chat-offline-actions { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; padding:11px 14px 5px; }.chat-offline-actions button { display:grid; justify-items:center; gap:3px; min-width:0; padding:5px 1px; border:0; border-radius:10px; background:rgba(255,255,255,.45); color:#806a90; font:inherit; font-size:16px; cursor:pointer; }.chat-offline-actions button span { color:#816f8b; font-size:9px; white-space:nowrap; }.chat-offline-actions button:active { transform:scale(.96); background:#fff; }
.chat-offline-card.is-immersive form { padding:9px 14px 15px; border:0; }.chat-offline-card.is-immersive form input { background:rgba(255,255,255,.78); }.chat-offline-card.is-immersive form button { background:#765990; }
.chat-offline-card.is-fullscreen { width:100%; height:100%; max-height:none; border:0; border-radius:0; padding:0 max(14px, env(safe-area-inset-left)) max(12px, env(safe-area-inset-bottom)); background:linear-gradient(165deg,#fbf8ff 0%,#f4eff9 50%,#e9e2f1 100%); }
.chat-offline-card.is-fullscreen .chat-offline-topbar { padding-top:max(16px, env(safe-area-inset-top)) !important; }.chat-offline-card.is-fullscreen .chat-offline-context { margin:0 14px 12px; padding:12px; border:1px solid rgba(126,99,155,.13); border-radius:16px; background:rgba(255,255,255,.4); }.chat-offline-context-label { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:8px; }.chat-offline-context-label span { color:#705783; font-size:11px; font-weight:600; }.chat-offline-context-label small { color:#ad9db7; font-size:9px; }.chat-offline-context-messages { max-height:108px; overflow:hidden; opacity:.68; }.chat-offline-context-messages article { display:flex; gap:6px; align-items:baseline; margin:4px 0; color:#75647e; font-size:10px; line-height:1.45; }.chat-offline-context-messages article span { flex:0 0 auto; color:#a48eae; }.chat-offline-context-messages article p { overflow:hidden; margin:0; text-overflow:ellipsis; white-space:nowrap; }.chat-offline-context-messages article.is-user { justify-content:flex-end; color:#806594; }.chat-offline-context-empty { margin:0; color:#aa9ab2; font-size:10px; }
.chat-offline-card.is-fullscreen .chat-offline-atmosphere { margin-top:0; }.chat-offline-card.is-fullscreen .chat-offline-messages { flex:1; min-height:100px; }.chat-offline-card.is-fullscreen .chat-offline-actions { margin-top:auto; }
.chat-offline-modal.is-fullscreen-modal { padding:0; }.chat-offline-settings-button { width:30px !important; height:30px !important; margin-left:auto; margin-right:7px; border:0; border-radius:50%; background:rgba(255,255,255,.72) !important; color:#806a90 !important; font-size:15px !important; cursor:pointer; }.chat-offline-settings-panel { display:grid; gap:9px; margin:0 18px 10px; padding:12px; border:1px solid rgba(126,99,155,.13); border-radius:15px; background:rgba(255,255,255,.62); }.chat-offline-settings-panel[hidden] { display:none; }.chat-offline-settings-title { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:1px; }.chat-offline-settings-title span { color:#705783; font-size:11px; font-weight:600; }.chat-offline-settings-title small { color:#ad9db7; font-size:9px; }.chat-offline-settings-panel label { display:grid; align-items:stretch; gap:9px; width:100%; min-width:0; color:#796582; font-size:10px; }.chat-offline-settings-panel select { box-sizing:border-box; display:block; width:100%; min-width:0; max-width:none; padding:5px 7px; border:1px solid rgba(126,99,155,.18); border-radius:8px; background:#fff; color:#675273; font:inherit; font-size:10px; outline:0; }
.chat-offline-preset-label { display:grid !important; align-items:stretch !important; gap:6px; width:100%; }.chat-offline-preset-label textarea { display:block; width:100%; min-width:0; min-height:120px; resize:vertical; box-sizing:border-box; padding:10px 11px; border:1px solid rgba(126,99,155,.18); border-radius:10px; background:rgba(255,255,255,.82); color:#675273; font:inherit; font-size:10px; line-height:1.5; outline:0; }.chat-offline-preset-label textarea:focus { border-color:#9d7bb5; box-shadow:0 0 0 3px rgba(157,123,181,.12); }.chat-offline-settings-panel { width:100%; box-sizing:border-box; margin-left:0; margin-right:0; }.chat-offline-settings-panel label > input[type="number"] { display:block; width:100%; min-width:0; max-width:none; box-sizing:border-box; padding:5px 7px; border:1px solid rgba(126,99,155,.18); border-radius:8px; background:#fff; color:#675273; font:inherit; font-size:10px; outline:0; }
.chat-offline-card.is-fullscreen form { display:flex; align-items:center; gap:7px; margin:0 12px 12px; padding:7px 7px 7px 13px; border:1px solid rgba(126,99,155,.16); border-radius:18px; background:rgba(255,255,255,.72); box-shadow:0 8px 22px rgba(104,78,127,.1); }.chat-offline-card.is-fullscreen form:focus-within { border-color:#a582bc; box-shadow:0 8px 24px rgba(104,78,127,.16),0 0 0 3px rgba(165,130,188,.1); }.chat-offline-card.is-fullscreen form input { flex:1; min-width:0; height:35px; padding:0; border:0; background:transparent; color:#53415f; font-size:11px; }.chat-offline-card.is-fullscreen form input::placeholder { color:#ad9eb4; }.chat-offline-card.is-fullscreen form button { flex:0 0 auto; width:42px; height:32px; border:0; border-radius:12px; background:linear-gradient(135deg,#9f7ab8,#72548c); color:#fff; font-size:0; box-shadow:0 4px 10px rgba(114,84,140,.22); }.chat-offline-card.is-fullscreen form button[type="submit"]::before { content:''; display:block; width:8px; height:8px; margin:0 auto 2px; border-top:2px solid #fff; border-right:2px solid #fff; transform:rotate(-45deg); }.chat-offline-card.is-fullscreen form .chat-offline-reply-button { width:55px; background:rgba(126,99,155,.13); color:#76598b; font-size:10px; box-shadow:none; }.chat-offline-card.is-fullscreen form .chat-offline-reply-button::before { content:none; }
.chat-offline-settings-panel .chat-offline-preset-wide { display:block; grid-column:1 / -1; width:100% !important; min-width:100% !important; max-width:none !important; box-sizing:border-box; color:#796582; font-size:10px; }.chat-offline-preset-wide > span { display:block; margin-bottom:7px; }.chat-offline-settings-panel .chat-offline-preset-wide textarea { display:block !important; width:100% !important; min-width:100% !important; max-width:none !important; height:132px; min-height:132px; box-sizing:border-box !important; margin:0; padding:11px 12px; border:1px solid rgba(126,99,155,.18); border-radius:11px; background:#fff; color:#675273; font:inherit; font-size:11px; line-height:1.55; resize:vertical; outline:0; }
.chat-offline-finish-button { align-self:center; min-height:32px; margin:8px 0 4px; padding:0 16px; border:1px solid rgba(115,82,137,.16); border-radius:16px; background:rgba(255,255,255,.52); color:#826b91; font:inherit; font-size:10px; cursor:pointer; }.chat-offline-finish-button:disabled { opacity:.55; cursor:default; }.chat-offline-summary { display:flex; align-items:center; justify-content:center; padding:calc(max(24px,env(safe-area-inset-top)) + 16px) 26px max(24px,env(safe-area-inset-bottom)); text-align:center; }.chat-offline-summary header { display:grid; justify-items:center; gap:7px; }.chat-offline-summary header h2 { font-size:22px; }.chat-offline-summary-mark { display:grid; place-items:center; width:58px; height:58px; margin:27px 0 18px; border-radius:50%; background:linear-gradient(135deg,#b89aca,#7b5c92); color:#fff; font-size:24px; box-shadow:0 12px 28px rgba(112,82,136,.22); }.chat-offline-summary > p { max-width:520px; color:#5f5067; font-size:12px; line-height:1.85; }.chat-offline-summary dl { width:min(100%,420px); margin:24px 0; padding:12px 15px; border-radius:15px; background:rgba(255,255,255,.58); }.chat-offline-summary dl div { display:flex; justify-content:space-between; gap:14px; padding:7px 0; color:#8a7895; font-size:10px; }.chat-offline-summary dt,.chat-offline-summary dd { margin:0; }.chat-offline-summary dd { color:#5f5067; }.chat-offline-summary > button { min-width:132px; height:40px; border:0; border-radius:14px; background:linear-gradient(135deg,#9672ad,#72548c); color:#fff; font:inherit; font-size:11px; cursor:pointer; }

/* 第一页的世界入口：保留记忆库和创作文件夹。 */
.page1-launch-row { grid-column:1 / -1; grid-row:2; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; margin-top:2px; }
.page1-launch-row .app-item { grid-row:1; justify-self:center; width:64px; margin:0; }
.page1-launch-row .page1-memory-launch { grid-column:1; transform:translateX(9px); }
.page1-launch-row .page1-memory-launch .app-icon { width:62px; min-width:62px; height:62px; transform:none; }
.page1-launch-row .page1-memory-launch .app-name { width:auto; transform:none; }
.page1-launch-row .page1-creative-folder { grid-column:2; transform:translateX(5px); }

/* 桌面文件夹：保持第一屏布局不变，只占用“家”右侧原本空着的第四格。 */
.desktop-folder-icon { display:grid; grid-template:repeat(3,15px)/repeat(3,15px); place-items:center; place-content:center; width:62px; min-width:62px; height:62px; gap:3px; padding:5px; overflow:hidden; border-radius:20px; border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.26); -webkit-backdrop-filter:blur(22px) saturate(155%); backdrop-filter:blur(22px) saturate(155%); }
.folder-mini-app { position:relative; display:grid; place-items:center; width:12px; height:12px; overflow:hidden; border:1px solid rgba(255,255,255,.5); border-radius:3.5px; background:linear-gradient(145deg,rgba(255,255,255,.2),rgba(255,255,255,.035)); color:#222; font-size:4px; font-style:normal; font-weight:800; line-height:1; box-shadow:inset 0 1px 0 rgba(255,255,255,.52); -webkit-backdrop-filter:blur(16px) saturate(155%); backdrop-filter:blur(16px) saturate(155%); }
.folder-mini-app::before,.folder-mini-app::after { position:absolute; content:''; pointer-events:none; }
.folder-mini-app span { position:relative; z-index:1; }
.folder-mini-app svg { width:100%; height:100%; }
.folder-mini-app.has-custom-image { background-position:center; background-size:cover; background-repeat:no-repeat; }
.folder-mini-app.has-custom-image::before,.folder-mini-app.has-custom-image::after,.folder-mini-app.has-custom-image span,.folder-mini-app.has-custom-image svg { display:none; }
.folder-mini-app.is-debate::before { top:2px; left:1.5px; width:4px; height:3px; border:.7px solid currentColor; border-radius:2px 2px 2px .8px; }
.folder-mini-app.is-debate::after { right:1.5px; bottom:2px; width:4px; height:3px; border:.7px solid currentColor; border-radius:2px 2px .8px 2px; opacity:.58; }
.folder-mini-app.is-debate span { font-family:Arial,sans-serif; font-size:3px; letter-spacing:-.05em; }
.folder-mini-app.is-fanfic::before { width:7px; height:8px; border:.7px solid currentColor; border-radius:1px 2px 2px 1px; background:rgba(255,255,255,.06); transform:rotate(-3deg); }
.folder-mini-app.is-fanfic span { margin-right:4px; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:3.5px; }
.folder-mini-app.is-magazine::before { width:7px; height:8px; border:.7px solid currentColor; background:linear-gradient(90deg,transparent 47%,currentColor 48%,currentColor 53%,transparent 54%); transform:rotate(3deg); }
.folder-mini-app.is-magazine::after { top:3px; left:3px; width:2px; height:.7px; background:currentColor; box-shadow:0 2px 0 currentColor,4px 0 0 currentColor,4px 2px 0 currentColor; opacity:.65; }
.folder-mini-app.is-magazine span { display:none; }
.desktop-folder-layer { position:fixed; inset:0; z-index:70; display:grid; place-items:start center; padding:0 24px; visibility:hidden; opacity:0; pointer-events:none; transition:opacity .2s ease,visibility .2s ease; }
.desktop-folder-layer.is-open { visibility:visible; opacity:1; pointer-events:auto; }
.desktop-folder-layer.is-fast-closing,.desktop-folder-layer.is-fast-closing .desktop-folder-panel { transition:none !important; }
.desktop-folder-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(255,255,255,.035); -webkit-backdrop-filter:blur(6px) saturate(120%) brightness(1.08); backdrop-filter:blur(6px) saturate(120%) brightness(1.08); }
.desktop-folder-panel { position:relative; width:min(76vw,340px); aspect-ratio:.9; margin-top:clamp(168px,24svh,230px); border:0; background:transparent; transform:scale(.82); transform-origin:center; transition:transform .24s cubic-bezier(.2,.82,.2,1); }
.desktop-folder-layer.is-open .desktop-folder-panel { transform:scale(1); }
.desktop-folder-header { position:absolute; right:0; bottom:calc(100% + clamp(48px,7svh,72px)); left:0; z-index:2; display:flex; align-items:center; justify-content:center; height:auto; padding:0; border:0; pointer-events:auto; }
.desktop-folder-header h2 { pointer-events:auto; cursor:pointer; color:#fff; font-size:clamp(28px,8vw,38px); font-weight:400; letter-spacing:.01em; line-height:1.1; text-shadow:0 2px 14px rgba(0,0,0,.34); }
.desktop-folder-header button { display:none; }
.desktop-folder-grid { display:grid; grid-template:repeat(3,86px)/repeat(3,minmax(0,1fr)); align-content:start; gap:14px 10px; width:100%; height:100%; padding:30px 22px 20px; overflow:hidden; border:1px solid rgba(255,255,255,.38); border-radius:clamp(34px,10vw,48px); background:linear-gradient(145deg,rgba(242,235,232,.3),rgba(224,232,238,.22)); box-shadow:0 20px 50px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.42); -webkit-backdrop-filter:blur(14px) saturate(115%); backdrop-filter:blur(14px) saturate(115%); }
.folder-app-item { position:relative; display:grid; justify-items:center; align-content:start; gap:7px; min-width:0; border:0; outline:0; background:transparent; color:#fff; font:inherit; text-shadow:0 1px 5px rgba(0,0,0,.38); cursor:pointer; }
.folder-app-item.is-folder-dragging { opacity:.2; }
.desktop-folder-drag-ghost { position:fixed !important; z-index:130 !important; margin:0 !important; opacity:0; pointer-events:none !important; transform:scale(.94); transition:opacity .1s ease,transform .1s ease; filter:drop-shadow(0 12px 18px rgba(0,0,0,.24)); }
.desktop-folder-drag-ghost.is-active { opacity:.94; transform:scale(1.06); }
.folder-app-item:active .folder-app-icon { transform:scale(.91); }
.folder-app-item b { max-width:76px; overflow:hidden; font-size:10px; font-weight:500; text-overflow:ellipsis; white-space:nowrap; }
.folder-app-remove { display:none !important; }
.folder-app-icon { position:relative; display:grid; place-items:center; width:62px; height:62px; overflow:hidden; border:1px solid rgba(255,255,255,.58); border-radius:20px; background:linear-gradient(145deg,rgba(255,255,255,.18),rgba(255,255,255,.035)); color:#222; font-style:normal; box-shadow:0 5px 13px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.58); -webkit-backdrop-filter:blur(28px) saturate(165%); backdrop-filter:blur(28px) saturate(165%); transition:transform .16s ease; }
.folder-app-icon::before,.folder-app-icon::after { position:absolute; content:''; pointer-events:none; }
.folder-app-icon.is-debate::before { top:11px; left:9px; width:13px; height:10px; border:1.5px solid currentColor; border-radius:6px 6px 6px 2px; }
.folder-app-icon.is-debate::after { right:8px; bottom:11px; width:13px; height:10px; border:1.5px solid currentColor; border-radius:6px 6px 2px 6px; opacity:.58; }
.folder-app-icon.is-debate span { position:relative; z-index:1; margin-top:1px; font-family:Arial,sans-serif; font-size:10px; font-weight:800; letter-spacing:-.04em; }
.folder-app-icon.is-fanfic::before { width:25px; height:28px; border:1.5px solid currentColor; border-radius:4px 8px 8px 4px; background:rgba(255,255,255,.08); transform:rotate(-3deg); }
.folder-app-icon.is-fanfic::after { top:12px; left:17px; width:16px; height:1.5px; background:currentColor; box-shadow:0 5px 0 currentColor,0 10px 0 currentColor; opacity:.68; }
.folder-app-icon.is-fanfic span { position:relative; z-index:1; margin-right:19px; color:currentColor; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:10px; font-weight:700; }
.folder-app-icon.is-magazine::before { width:27px; height:31px; border:1.5px solid currentColor; border-radius:2px; background:linear-gradient(90deg,transparent 48%,currentColor 49%,currentColor 52%,transparent 53%); transform:rotate(2deg); }
.folder-app-icon.is-magazine::after { top:13px; left:14px; width:7px; height:1.5px; background:currentColor; box-shadow:0 5px 0 currentColor,0 10px 0 currentColor,15px 0 0 currentColor,15px 5px 0 currentColor,15px 10px 0 currentColor; opacity:.62; }
.folder-app-icon.is-magazine span { display:none; }
.folder-app-icon.has-custom-image { background-position:center; background-size:cover; }
.folder-app-icon.has-custom-image::before,.folder-app-icon.has-custom-image::after,.folder-app-icon.has-custom-image span { display:none; }
.generated-folder-icon svg { width:34px; height:34px; }
.beauty-app-preview .folder-app-icon { transform:scale(.84); box-shadow:none; }
.beauty-app-preview.has-custom-image .folder-app-icon { visibility:hidden; }
.folder-app-shell { position:fixed; inset:0; z-index:72; visibility:hidden; opacity:0; pointer-events:none; background:rgba(247,247,245,.97); transition:opacity .18s ease,visibility .18s ease; }
.folder-app-shell.is-open { visibility:visible; opacity:1; pointer-events:auto; }
.folder-app-placeholder { width:100%; height:100%; color:#222; }
.folder-app-placeholder > header { display:grid; grid-template-columns:38px 1fr 38px; align-items:center; min-height:68px; padding:max(10px,env(safe-area-inset-top)) 16px 8px; border-bottom:1px solid rgba(0,0,0,.07); background:rgba(255,255,255,.56); -webkit-backdrop-filter:blur(24px); backdrop-filter:blur(24px); }
.folder-app-placeholder > header h1 { text-align:center; font-size:17px; font-weight:600; }
.folder-app-placeholder > header button { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:rgba(0,0,0,.055); color:#4f4f4f; font:inherit; font-size:23px; cursor:pointer; }
.folder-app-placeholder > header button:last-child { justify-self:end; font-size:20px; }
.folder-app-placeholder > main { display:grid; justify-items:center; align-content:center; min-height:calc(100% - 68px); padding:30px; text-align:center; }
.folder-app-placeholder > main .folder-app-icon { width:72px; height:72px; border-radius:23px; }
.folder-app-placeholder > main h2 { margin-top:17px; font-size:22px; font-weight:650; }
.folder-app-placeholder > main p { max-width:260px; margin-top:7px; color:#929292; font-size:12px; line-height:1.6; }
@media not all {
  .desktop-folder-icon { border-color:rgba(255,255,255,.18); background:rgba(255,255,255,.1); }
  .folder-mini-app { border-color:rgba(255,255,255,.2); background:linear-gradient(145deg,rgba(255,255,255,.12),rgba(255,255,255,.025)); color:#f1f1f1; }
  .desktop-folder-grid { border-color:rgba(255,255,255,.28); background:linear-gradient(145deg,rgba(242,235,232,.3),rgba(224,232,238,.22)); box-shadow:0 20px 50px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.32); }
  .desktop-folder-header h2,.folder-app-item { color:#f2f2f2; }
  .folder-app-icon { border-color:rgba(255,255,255,.2); background:linear-gradient(145deg,rgba(255,255,255,.12),rgba(255,255,255,.025)); color:#f2f2f2; box-shadow:0 5px 13px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.14); }
  .folder-app-shell { background:rgba(28,28,29,.98); }
  .folder-app-placeholder { color:#f1f1f1; }
  .folder-app-placeholder > header { border-color:rgba(255,255,255,.1); background:rgba(45,45,47,.7); }
  .folder-app-placeholder > header button { background:rgba(255,255,255,.1); color:#eee; }
}

/* 记忆库 */
.memory-library-app { position:fixed; inset:0; z-index:48; display:none; overflow:hidden; background:linear-gradient(160deg,#f7f4ef 0%,#eee8df 52%,#e8e0d5 100%); color:#332f2b; }.memory-library-app.is-open { display:block; }.memory-page { height:100%; overflow-y:auto; }.memory-header,.memory-subheader { position:sticky; top:0; z-index:4; display:flex; align-items:center; justify-content:space-between; padding:max(20px,env(safe-area-inset-top)) 20px 15px; border-bottom:1px solid rgba(86,71,53,.09); background:rgba(248,245,240,.84); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); }.memory-header > div { display:grid; gap:4px; }.memory-header span,.memory-subheader span,.memory-section-head span,.memory-detail > small { color:#9b8d7d; font-size:9px; font-weight:700; letter-spacing:.14em; }.memory-header h1,.memory-subheader h1 { font-size:23px; letter-spacing:-.04em; }.memory-header p { color:#9a8e82; font-size:10px; }.memory-header > button,.memory-subheader > button { display:grid; place-items:center; width:32px; height:32px; padding:0; border:0; border-radius:50%; background:rgba(91,72,52,.08); color:#675a4d; font:inherit; font-size:20px; cursor:pointer; }.memory-header svg,.memory-subheader svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }.memory-subheader { gap:12px; }.memory-subheader > div { flex:1; }.memory-subheader > div span { display:block; margin-bottom:4px; }.memory-main { width:min(100%,650px); margin:auto; padding:20px 18px 44px; }.memory-hero { display:flex; align-items:center; gap:16px; padding:19px; border:1px solid rgba(255,255,255,.72); border-radius:22px; background:linear-gradient(135deg,rgba(126,104,80,.88),rgba(83,72,60,.93)); color:#fff; box-shadow:0 14px 30px rgba(80,65,49,.16); }.memory-hero > div { display:grid; grid-template-columns:auto auto; align-items:baseline; gap:3px 7px; }.memory-hero > div small { grid-column:1/-1; opacity:.7; font-size:9px; }.memory-hero > div b { font-size:34px; }.memory-hero > div span { font-size:10px; opacity:.8; }.memory-hero dl { display:flex; flex:1; gap:14px; margin:0; }.memory-hero dl div { display:grid; justify-items:center; gap:3px; }.memory-hero dt { font-size:15px; font-weight:600; }.memory-hero dd { margin:0; font-size:9px; opacity:.7; }.memory-hero button { display:grid; justify-items:center; gap:4px; min-width:74px; padding:10px 8px; border:1px solid rgba(255,255,255,.22); border-radius:15px; background:rgba(255,255,255,.12); color:#fff; font:inherit; font-size:9px; cursor:pointer; }.memory-hero button:disabled { opacity:.55; }.memory-hero svg { width:20px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }.memory-section-head { display:flex; justify-content:space-between; margin:24px 3px 10px; }.memory-section-head > div { display:flex; align-items:baseline; justify-content:space-between; width:100%; }.memory-section-head small { color:#aaa095; font-size:9px; }.memory-role-list { display:grid; gap:8px; }.memory-role-list > button { display:flex; align-items:center; gap:11px; width:100%; min-height:67px; padding:10px 12px; border:1px solid rgba(85,67,48,.08); border-radius:17px; background:rgba(255,255,255,.55); color:#3f3933; font:inherit; text-align:left; cursor:pointer; }.memory-role-list > button > i,.memory-role-hero > i { display:grid; place-items:center; flex:0 0 44px; width:44px; height:44px; overflow:hidden; border-radius:15px; background:#b7a590; color:#fff; font-size:16px; font-style:normal; }.memory-role-list img,.memory-role-hero img { width:100%; height:100%; object-fit:cover; }.memory-role-list > button > span { display:grid; flex:1; min-width:0; gap:5px; }.memory-role-list b { font-size:12px; }.memory-role-list small { overflow:hidden; color:#9b9085; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }.memory-role-list em { color:#b4a89b; font-size:18px; font-style:normal; }.memory-empty { display:grid; justify-items:center; gap:8px; padding:52px 15px; color:#a4988c; text-align:center; }.memory-empty i { font-size:22px; font-style:normal; }.memory-empty p { font-size:10px; line-height:1.6; }.memory-role-hero { display:flex; align-items:center; gap:12px; margin-bottom:16px; }.memory-role-hero > div { display:grid; gap:4px; }.memory-role-hero b { font-size:16px; }.memory-role-hero p { color:#a09488; font-size:10px; }.memory-search { display:flex; align-items:center; gap:8px; height:40px; padding:0 12px; border:1px solid rgba(85,67,48,.1); border-radius:14px; background:rgba(255,255,255,.62); }.memory-search svg { flex:0 0 17px; width:17px; fill:none; stroke:#a19487; stroke-width:2; }.memory-search input { flex:1; min-width:0; border:0; outline:0; background:transparent; color:#403930; font:inherit; font-size:11px; }.memory-filters { display:flex; gap:7px; margin:12px 0 16px; }.memory-filters button { min-width:55px; height:29px; border:1px solid rgba(85,67,48,.09); border-radius:15px; background:rgba(255,255,255,.48); color:#918477; font:inherit; font-size:9px; cursor:pointer; }.memory-filters button.is-active { background:#695c4e; color:#fff; }.memory-timeline { display:grid; gap:10px; }.memory-entry { display:flex; align-items:flex-start; gap:11px; width:100%; padding:13px; border:1px solid rgba(85,67,48,.08); border-radius:18px; background:rgba(255,255,255,.58); color:#403930; font:inherit; text-align:left; cursor:pointer; }.memory-entry > i { display:grid; place-items:center; flex:0 0 38px; width:38px; height:38px; border-radius:13px; background:#d9cdbf; color:#6e5d4d; font-style:normal; }.memory-entry > i.is-offline { background:#d8c7d4; color:#785d73; }.memory-entry svg,.memory-detail-symbol svg { width:21px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }.memory-entry > span { position:relative; display:grid; flex:1; min-width:0; gap:5px; padding-right:42px; }.memory-entry small { color:#a09488; font-size:8px; }.memory-entry b { font-size:12px; }.memory-entry p { display:-webkit-box; overflow:hidden; color:#776d64; font-size:10px; line-height:1.55; -webkit-box-orient:vertical; -webkit-line-clamp:2; }.memory-entry em { position:absolute; top:0; right:0; padding:3px 6px; border-radius:8px; background:#eee7df; color:#8b7c6d; font-size:8px; font-style:normal; }.memory-detail { text-align:center; }.memory-detail-symbol { display:grid; place-items:center; width:62px; height:62px; margin:12px auto 13px; border-radius:21px; background:#d8cbbd; color:#685847; }.memory-detail-symbol.is-offline { background:#d9c8d5; color:#755b70; }.memory-detail > h2 { margin:9px 0 14px; font-size:23px; }.memory-detail > p { max-width:520px; margin:auto; color:#625950; font-size:12px; line-height:1.9; text-align:left; }.memory-detail > section { max-width:520px; margin:20px auto 0; padding:14px; border-radius:16px; background:rgba(255,255,255,.54); text-align:left; }.memory-detail > section span { color:#998c80; font-size:9px; }.memory-detail > section p { margin-top:7px; color:#685e55; font-size:11px; line-height:1.7; }.memory-tags { display:flex; flex-wrap:wrap; justify-content:center; gap:6px; margin:18px 0; }.memory-tags i { padding:5px 8px; border-radius:10px; background:rgba(255,255,255,.58); color:#887a6e; font-size:9px; font-style:normal; }.memory-delete { margin-top:28px; border:0; background:transparent; color:#b28e89; font:inherit; font-size:9px; cursor:pointer; }
@media not all { .memory-library-app { background:linear-gradient(160deg,#24211e,#302a25); color:#f2eee8; }.memory-header,.memory-subheader { border-color:rgba(255,255,255,.1); background:rgba(38,34,30,.86); }.memory-header > button,.memory-subheader > button { background:rgba(255,255,255,.1); color:#eee5dc; }.memory-role-list > button,.memory-entry,.memory-search,.memory-detail > section,.memory-tags i { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); color:#f0eae4; }.memory-role-list small,.memory-entry p,.memory-detail > p,.memory-detail > section p { color:#b8ada3; }.memory-search input { color:#eee8e2; }.memory-filters button { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.08); color:#bcb0a5; }.memory-filters button.is-active { background:#eee4da; color:#2d2824; }.memory-entry em { background:rgba(255,255,255,.1); color:#c6b9ad; } }

/* 记忆库视觉重做：轻玻璃、淡紫灰、时间线感。 */
.memory-library-app { background:radial-gradient(circle at 12% 0%,rgba(218,202,235,.55),transparent 32%),linear-gradient(145deg,#f8f7fb,#f0edf5 58%,#e8e3ef); color:#302b38; }
.memory-header,.memory-subheader { padding-left:22px; padding-right:22px; border-color:rgba(112,88,145,.1); background:rgba(250,249,253,.68); -webkit-backdrop-filter:blur(26px) saturate(145%); backdrop-filter:blur(26px) saturate(145%); }
.memory-header span,.memory-subheader span,.memory-section-head span,.memory-detail > small { color:#a293b4; letter-spacing:.18em; }.memory-header h1,.memory-subheader h1 { color:#393041; font-weight:650; }.memory-header p { color:#a095aa; }.memory-header > button,.memory-subheader > button { background:rgba(126,100,155,.1); color:#79628d; }
.memory-main { padding-top:24px; }.memory-hero { position:relative; min-height:112px; overflow:hidden; padding:20px; border:1px solid rgba(255,255,255,.75); border-radius:27px; background:linear-gradient(135deg,#8f7aaa,#756391 55%,#a68fbb); box-shadow:0 18px 35px rgba(112,88,142,.19),inset 0 1px 1px rgba(255,255,255,.3); }.memory-hero::after { position:absolute; right:-25px; bottom:-46px; width:145px; height:145px; border:1px solid rgba(255,255,255,.18); border-radius:50%; box-shadow:0 0 0 18px rgba(255,255,255,.06),0 0 0 37px rgba(255,255,255,.045); content:''; }.memory-hero > div,.memory-hero dl,.memory-hero button { position:relative; z-index:1; }.memory-hero > div b { font-size:38px; font-weight:500; letter-spacing:-.06em; }.memory-hero dl { gap:16px; }.memory-hero dt { font-size:17px; font-weight:550; }.memory-hero button { min-width:66px; border-color:rgba(255,255,255,.28); border-radius:17px; background:rgba(255,255,255,.15); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); }.memory-section-head { margin-top:29px; margin-bottom:12px; }.memory-section-head > div { justify-content:flex-start; gap:9px; }.memory-section-head span { color:#635477; font-size:11px; letter-spacing:.04em; font-weight:600; }.memory-section-head small { color:#aca1b7; }
.memory-role-list { gap:10px; }.memory-role-list > button { min-height:76px; padding:13px 14px; border-color:rgba(123,100,153,.1); border-radius:21px; background:rgba(255,255,255,.58); box-shadow:0 7px 18px rgba(92,74,114,.05); -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px); }.memory-role-list > button:active,.memory-entry:active { transform:scale(.985); }.memory-role-list > button > i { width:48px; height:48px; flex-basis:48px; border-radius:17px; background:linear-gradient(145deg,#b8a6c8,#8d759f); box-shadow:inset 0 1px rgba(255,255,255,.45); }.memory-role-list b { color:#41374d; font-size:13px; font-weight:600; }.memory-role-list small { color:#a095aa; }.memory-role-list em { color:#b3a2be; }
.memory-role-hero { margin:4px 3px 19px; }.memory-role-hero > i { width:52px; height:52px; flex-basis:52px; border-radius:18px; background:linear-gradient(145deg,#b8a6c8,#8d759f); }.memory-role-hero b { color:#40364d; font-size:19px; }.memory-role-hero p { color:#a095aa; }.memory-search { height:44px; border-color:rgba(123,100,153,.11); border-radius:16px; background:rgba(255,255,255,.63); box-shadow:0 6px 16px rgba(92,74,114,.04); }.memory-search input { color:#4b4055; }.memory-filters { gap:8px; margin:14px 0 18px; }.memory-filters button { height:31px; border-color:rgba(123,100,153,.1); background:rgba(255,255,255,.5); color:#9b8eaa; }.memory-filters button.is-active { background:#75608a; box-shadow:0 5px 12px rgba(117,96,138,.18); }
.memory-timeline { position:relative; gap:13px; padding-left:10px; }.memory-timeline::before { position:absolute; top:10px; bottom:10px; left:27px; width:1px; background:linear-gradient(#cfc1db,transparent); content:''; }.memory-entry { position:relative; z-index:1; gap:12px; min-height:84px; padding:14px 13px; border-color:rgba(123,100,153,.1); border-radius:20px; background:rgba(255,255,255,.66); box-shadow:0 8px 20px rgba(92,74,114,.05); }.memory-entry > i { width:36px; height:36px; flex-basis:36px; border:4px solid #f1edf5; border-radius:14px; background:#d9cce4; color:#806b94; }.memory-entry > i.is-offline { background:#cdbbd4; color:#795c7b; }.memory-entry small { color:#aa9cb6; }.memory-entry b { color:#4b3e57; font-weight:600; }.memory-entry p { color:#867a91; line-height:1.6; }.memory-entry em { background:#f0ebf4; color:#9988a5; }
.memory-detail { padding-top:38px; }.memory-detail-symbol { width:70px; height:70px; margin-bottom:17px; border:1px solid rgba(255,255,255,.75); border-radius:24px; background:linear-gradient(145deg,#c8b6d5,#9c83ad); color:#fff; box-shadow:0 12px 25px rgba(114,88,139,.17); }.memory-detail-symbol.is-offline { background:linear-gradient(145deg,#c4abc7,#967694); }.memory-detail > h2 { color:#40364d; font-size:25px; font-weight:650; }.memory-detail > p { color:#665b70; font-size:13px; line-height:2; }.memory-detail > section { border:1px solid rgba(123,100,153,.08); background:rgba(255,255,255,.55); box-shadow:0 8px 20px rgba(92,74,114,.04); }.memory-detail > section span { color:#a293b4; }.memory-detail > section p { color:#766a80; }.memory-tags i { border:1px solid rgba(123,100,153,.08); background:rgba(255,255,255,.58); color:#897699; }.memory-delete { color:#b490a2; }
@media not all { .memory-library-app { background:radial-gradient(circle at 12% 0%,rgba(91,69,114,.34),transparent 32%),linear-gradient(145deg,#211d28,#292331 58%,#302838); color:#f1ecf6; }.memory-header,.memory-subheader { border-color:rgba(255,255,255,.1); background:rgba(33,29,40,.72); }.memory-header h1,.memory-subheader h1,.memory-role-list b,.memory-role-hero b,.memory-entry b,.memory-detail > h2 { color:#f1eaf6; }.memory-header p,.memory-role-list small,.memory-role-hero p,.memory-entry small,.memory-entry p,.memory-detail > p,.memory-detail > section p { color:#b8abbe; }.memory-role-list > button,.memory-entry,.memory-search,.memory-detail > section { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); }.memory-search input { color:#eee6f3; }.memory-entry > i { border-color:#2a2331; }.memory-filters button { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.08); color:#c1b3c8; }.memory-filters button.is-active { background:#d8c7e2; color:#2d2435; }.memory-entry em,.memory-tags i { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.1); color:#c9b9d1; } }

/* 记忆库与线下模式的可保存主题色。 */
.memory-theme-picker { position:absolute; top:calc(max(70px,env(safe-area-inset-top) + 58px)); right:18px; z-index:8; display:grid; gap:9px; padding:11px 12px; border:1px solid rgba(255,255,255,.72); border-radius:15px; background:rgba(255,255,255,.78); box-shadow:0 12px 30px rgba(93,72,115,.16); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); }.memory-theme-picker > span { color:#887698; font-size:9px; }.memory-theme-picker > div { display:flex; gap:8px; }.memory-theme-picker button,.offline-theme-picker button { width:23px; height:23px; padding:0; border:2px solid rgba(255,255,255,.8); border-radius:50%; box-shadow:0 2px 5px rgba(0,0,0,.12); cursor:pointer; }.memory-theme-picker button[data-memory-theme-choice="lavender"],.offline-theme-picker button[data-offline-theme-choice="lavender"] { background:#9b83b4; }.memory-theme-picker button[data-memory-theme-choice="rose"],.offline-theme-picker button[data-offline-theme-choice="rose"] { background:#bf8e9e; }.memory-theme-picker button[data-memory-theme-choice="sky"],.offline-theme-picker button[data-offline-theme-choice="sky"] { background:#7d9fbb; }.memory-theme-picker button[data-memory-theme-choice="sage"],.offline-theme-picker button[data-offline-theme-choice="sage"] { background:#8da695; }.memory-theme-picker button[data-memory-theme-choice="amber"],.offline-theme-picker button[data-offline-theme-choice="amber"] { background:#b89461; }
.memory-library-app[data-memory-theme="rose"] { background:radial-gradient(circle at 12% 0%,rgba(242,196,208,.55),transparent 32%),linear-gradient(145deg,#fff7fa,#f4e7ec 58%,#ebdce4); }.memory-library-app[data-memory-theme="sky"] { background:radial-gradient(circle at 12% 0%,rgba(190,218,239,.58),transparent 32%),linear-gradient(145deg,#f6fbff,#e6eef5 58%,#dce7f0); }.memory-library-app[data-memory-theme="sage"] { background:radial-gradient(circle at 12% 0%,rgba(194,221,204,.56),transparent 32%),linear-gradient(145deg,#f7fbf8,#e8f0ea 58%,#dce9e0); }.memory-library-app[data-memory-theme="amber"] { background:radial-gradient(circle at 12% 0%,rgba(237,211,169,.56),transparent 32%),linear-gradient(145deg,#fffaf2,#f3eadb 58%,#e9decc); }.memory-library-app[data-memory-theme="rose"] .memory-hero { background:linear-gradient(135deg,#bd8597,#9e6b82); }.memory-library-app[data-memory-theme="sky"] .memory-hero { background:linear-gradient(135deg,#7e9fbc,#617f9e); }.memory-library-app[data-memory-theme="sage"] .memory-hero { background:linear-gradient(135deg,#86a493,#668775); }.memory-library-app[data-memory-theme="amber"] .memory-hero { background:linear-gradient(135deg,#b9915d,#987344); }
.offline-theme-picker-anchor { display:contents; }.offline-theme-picker { position:absolute; top:calc(max(63px,env(safe-area-inset-top) + 50px)); right:18px; z-index:9; display:none; gap:8px; align-items:center; padding:10px 12px; border:1px solid rgba(255,255,255,.72); border-radius:15px; background:rgba(255,255,255,.8); box-shadow:0 12px 30px rgba(93,72,115,.16); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); }.offline-theme-picker.is-open { display:flex; }.offline-theme-picker > span { color:#887698; font-size:9px; }.offline-theme-picker > div { display:flex; gap:7px; }.chat-offline-theme-button { width:30px !important; height:30px !important; margin-left:auto; margin-right:7px; border:0; border-radius:50%; background:rgba(255,255,255,.72) !important; color:#806a90 !important; font-size:15px !important; cursor:pointer; }
.chat-offline-modal[data-offline-theme="rose"] .chat-offline-card.is-fullscreen { background:linear-gradient(165deg,#fff7fa,#f4e7ec 54%,#ebdce4); }.chat-offline-modal[data-offline-theme="sky"] .chat-offline-card.is-fullscreen { background:linear-gradient(165deg,#f6fbff,#e6eef5 54%,#dce7f0); }.chat-offline-modal[data-offline-theme="sage"] .chat-offline-card.is-fullscreen { background:linear-gradient(165deg,#f7fbf8,#e8f0ea 54%,#dce9e0); }.chat-offline-modal[data-offline-theme="amber"] .chat-offline-card.is-fullscreen { background:linear-gradient(165deg,#fffaf2,#f3eadb 54%,#e9decc); }.chat-offline-modal[data-offline-theme="rose"] .chat-offline-atmosphere { background:linear-gradient(120deg,#c893a5,#a76d87); }.chat-offline-modal[data-offline-theme="sky"] .chat-offline-atmosphere { background:linear-gradient(120deg,#91b7d3,#6e91b3); }.chat-offline-modal[data-offline-theme="sage"] .chat-offline-atmosphere { background:linear-gradient(120deg,#9dbba8,#729783); }.chat-offline-modal[data-offline-theme="amber"] .chat-offline-atmosphere { background:linear-gradient(120deg,#d1aa73,#a77b4b); }
.chat-offline-theme-button { margin-left:0; }

/* 黑白主题：与其他颜色一样会通过 localStorage 记住。 */
.memory-theme-picker button[data-memory-theme-choice="white"], .offline-theme-picker button[data-offline-theme-choice="white"] { background:#fff; border-color:rgba(0,0,0,.22); }
.memory-theme-picker button[data-memory-theme-choice="black"], .offline-theme-picker button[data-offline-theme-choice="black"] { background:#111; border-color:rgba(255,255,255,.9); }
.memory-library-app[data-memory-theme="white"] { background:#fff; color:#111; }
.memory-library-app[data-memory-theme="white"] .memory-header, .memory-library-app[data-memory-theme="white"] .memory-subheader { background:rgba(255,255,255,.94); border-color:rgba(0,0,0,.1); }
.memory-library-app[data-memory-theme="white"] .memory-hero { background:linear-gradient(135deg,#fff,#e9e9e9); color:#111; }
.memory-library-app[data-memory-theme="white"] .memory-hero button { border:1px solid rgba(0,0,0,.24); border-radius:16px; background:#fff; color:#111; box-shadow:0 4px 12px rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.9); }
.memory-library-app[data-memory-theme="white"] .memory-role-list > button, .memory-library-app[data-memory-theme="white"] .memory-entry, .memory-library-app[data-memory-theme="white"] .memory-search, .memory-library-app[data-memory-theme="white"] .memory-detail > section, .memory-library-app[data-memory-theme="white"] .memory-tags i { background:#fafafa; border-color:rgba(0,0,0,.1); color:#111; }
.memory-library-app[data-memory-theme="white"] .memory-header h1, .memory-library-app[data-memory-theme="white"] .memory-subheader h1, .memory-library-app[data-memory-theme="white"] .memory-role-list b, .memory-library-app[data-memory-theme="white"] .memory-role-hero b, .memory-library-app[data-memory-theme="white"] .memory-entry b, .memory-library-app[data-memory-theme="white"] .memory-detail > h2, .memory-library-app[data-memory-theme="white"] .memory-header > button, .memory-library-app[data-memory-theme="white"] .memory-subheader > button { color:#111; }
.memory-library-app[data-memory-theme="white"] .memory-header > button, .memory-library-app[data-memory-theme="white"] .memory-subheader > button { background:#f1f1f1; border:1px solid rgba(0,0,0,.12); }
.memory-library-app[data-memory-theme="white"] .memory-header p, .memory-library-app[data-memory-theme="white"] .memory-header span, .memory-library-app[data-memory-theme="white"] .memory-subheader span, .memory-library-app[data-memory-theme="white"] .memory-section-head span, .memory-library-app[data-memory-theme="white"] .memory-section-head small, .memory-library-app[data-memory-theme="white"] .memory-role-list small, .memory-library-app[data-memory-theme="white"] .memory-role-hero p, .memory-library-app[data-memory-theme="white"] .memory-entry small, .memory-library-app[data-memory-theme="white"] .memory-entry p, .memory-library-app[data-memory-theme="white"] .memory-entry em, .memory-library-app[data-memory-theme="white"] .memory-detail > small, .memory-library-app[data-memory-theme="white"] .memory-detail > p, .memory-library-app[data-memory-theme="white"] .memory-detail > section p, .memory-library-app[data-memory-theme="white"] .memory-filters button { color:#555; }
.memory-library-app[data-memory-theme="white"] .memory-filters button { border-color:rgba(0,0,0,.18); background:#fff; }
.memory-library-app[data-memory-theme="white"] .memory-filters button.is-active { background:#111; color:#fff; box-shadow:0 4px 10px rgba(0,0,0,.12); }
.memory-library-app[data-memory-theme="white"] .memory-search input { color:#111; }
.memory-library-app[data-memory-theme="white"] .memory-search input::placeholder { color:#777; }
.memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-header h1, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-subheader h1, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-role-list b, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-role-hero b, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-entry b, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-detail > h2, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-header > button, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-subheader > button { color:#111; }
.memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-header > button, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-subheader > button { background:#f1f1f1; border:1px solid rgba(0,0,0,.14); }
.memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-header p, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-header span, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-subheader span, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-section-head span, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-section-head small, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-role-list small, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-role-hero p, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-entry small, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-entry p, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-entry em, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-detail > small, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-detail > p, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-detail > section p, .memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-filters button { color:#555; }
.memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-filters button { border-color:rgba(0,0,0,.18); background:#fff; }
.memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-filters button.is-active { background:#111; color:#fff; box-shadow:0 4px 10px rgba(0,0,0,.12); }
.memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-search input { color:#111; }
.memory-library-app[data-memory-theme]:not([data-memory-theme="black"]):not([data-memory-theme="white"]) .memory-search input::placeholder { color:#777; }
.memory-header > button[data-memory-theme-toggle], .memory-subheader > button[data-memory-theme-toggle] { margin-left:auto; }
.memory-header > button[data-memory-close], .memory-subheader > button[data-memory-refresh] { margin-left:6px; }
.memory-library-app[data-memory-theme="black"] { background:#101010; color:#f5f5f5; }
.memory-library-app[data-memory-theme="black"] .memory-header, .memory-library-app[data-memory-theme="black"] .memory-subheader { background:rgba(18,18,18,.96); border-color:rgba(255,255,255,.12); }
.memory-library-app[data-memory-theme="black"] .memory-hero { background:linear-gradient(135deg,#050505,#292929); color:#fff; }
.memory-library-app[data-memory-theme="black"] .memory-role-list > button, .memory-library-app[data-memory-theme="black"] .memory-entry, .memory-library-app[data-memory-theme="black"] .memory-search, .memory-library-app[data-memory-theme="black"] .memory-detail > section, .memory-library-app[data-memory-theme="black"] .memory-tags i { background:#1d1d1d; border-color:rgba(255,255,255,.12); color:#f5f5f5; }
.memory-library-app[data-memory-theme="black"] .memory-role-list small, .memory-library-app[data-memory-theme="black"] .memory-entry p, .memory-library-app[data-memory-theme="black"] .memory-detail > p, .memory-library-app[data-memory-theme="black"] .memory-detail > section p, .memory-library-app[data-memory-theme="black"] .memory-search input { color:#bdbdbd; }
.memory-library-app[data-memory-theme="black"] .memory-header h1, .memory-library-app[data-memory-theme="black"] .memory-subheader h1, .memory-library-app[data-memory-theme="black"] .memory-header p, .memory-library-app[data-memory-theme="black"] .memory-header span, .memory-library-app[data-memory-theme="black"] .memory-subheader span, .memory-library-app[data-memory-theme="black"] .memory-section-head span, .memory-library-app[data-memory-theme="black"] .memory-section-head small, .memory-library-app[data-memory-theme="black"] .memory-role-list b, .memory-library-app[data-memory-theme="black"] .memory-role-hero b, .memory-library-app[data-memory-theme="black"] .memory-role-hero p, .memory-library-app[data-memory-theme="black"] .memory-entry small, .memory-library-app[data-memory-theme="black"] .memory-entry em, .memory-library-app[data-memory-theme="black"] .memory-detail > small, .memory-library-app[data-memory-theme="black"] .memory-filters button, .memory-library-app[data-memory-theme="black"] .memory-header > button, .memory-library-app[data-memory-theme="black"] .memory-subheader > button { color:#e5e5e5; }
.memory-library-app[data-memory-theme="black"] .memory-filters button.is-active { background:#fff; color:#111; }
.memory-library-app[data-memory-theme="black"] .memory-search input::placeholder { color:#aaa; }

/* 记忆库：固定中性色极简毛玻璃主题。 */
.memory-library-app[data-memory-theme="glass"] {
  background:
    radial-gradient(circle at 12% 2%,rgba(255,255,255,.96),transparent 35%),
    radial-gradient(circle at 92% 92%,rgba(186,190,196,.34),transparent 38%),
    linear-gradient(145deg,#e9ebee 0%,#f6f7f8 48%,#dfe2e6 100%);
  color:#111;
}
.memory-library-app[data-memory-theme="glass"]::before,
.memory-library-app[data-memory-theme="glass"]::after {
  position:fixed;
  width:240px;
  height:240px;
  border-radius:50%;
  background:rgba(255,255,255,.5);
  filter:blur(3px);
  content:"";
  pointer-events:none;
}
.memory-library-app[data-memory-theme="glass"]::before { top:-95px; right:-65px; }
.memory-library-app[data-memory-theme="glass"]::after { bottom:-115px; left:-70px; background:rgba(125,132,141,.12); }
.memory-library-app[data-memory-theme="glass"] .memory-page { position:relative; z-index:1; scrollbar-width:none; }
.memory-library-app[data-memory-theme="glass"] .memory-page::-webkit-scrollbar { display:none; }
.memory-library-app[data-memory-theme="glass"] [data-memory-theme-toggle] { display:none; }
.memory-library-app[data-memory-theme="glass"] .memory-header,
.memory-library-app[data-memory-theme="glass"] .memory-subheader {
  border-color:rgba(17,17,17,.08);
  background:rgba(248,249,250,.58);
  box-shadow:0 1px 0 rgba(255,255,255,.72);
  -webkit-backdrop-filter:blur(26px) saturate(125%);
  backdrop-filter:blur(26px) saturate(125%);
}
.memory-library-app[data-memory-theme="glass"] .memory-header h1,
.memory-library-app[data-memory-theme="glass"] .memory-subheader h1,
.memory-library-app[data-memory-theme="glass"] .memory-role-list b,
.memory-library-app[data-memory-theme="glass"] .memory-role-hero b,
.memory-library-app[data-memory-theme="glass"] .memory-entry b,
.memory-library-app[data-memory-theme="glass"] .memory-detail > h2 { color:#111; }
.memory-library-app[data-memory-theme="glass"] .memory-header span,
.memory-library-app[data-memory-theme="glass"] .memory-subheader span,
.memory-library-app[data-memory-theme="glass"] .memory-section-head span,
.memory-library-app[data-memory-theme="glass"] .memory-detail > small { color:#70747a; }
.memory-library-app[data-memory-theme="glass"] .memory-header p,
.memory-library-app[data-memory-theme="glass"] .memory-section-head small,
.memory-library-app[data-memory-theme="glass"] .memory-role-list small,
.memory-library-app[data-memory-theme="glass"] .memory-role-hero p,
.memory-library-app[data-memory-theme="glass"] .memory-entry small,
.memory-library-app[data-memory-theme="glass"] .memory-entry p,
.memory-library-app[data-memory-theme="glass"] .memory-detail > p,
.memory-library-app[data-memory-theme="glass"] .memory-detail > section p { color:#666b72; }
.memory-library-app[data-memory-theme="glass"] .memory-header > button,
.memory-library-app[data-memory-theme="glass"] .memory-subheader > button {
  border:1px solid rgba(17,17,17,.08);
  background:rgba(255,255,255,.46);
  color:#171717;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
  -webkit-backdrop-filter:blur(16px);
  backdrop-filter:blur(16px);
}
.memory-library-app[data-memory-theme="glass"] .memory-main { padding-top:18px; }
.memory-library-app[data-memory-theme="glass"] .memory-hero,
.memory-library-app[data-memory-theme="glass"] .memory-role-list > button,
.memory-library-app[data-memory-theme="glass"] .memory-entry,
.memory-library-app[data-memory-theme="glass"] .memory-search,
.memory-library-app[data-memory-theme="glass"] .memory-detail > section,
.memory-library-app[data-memory-theme="glass"] .memory-tags i,
.memory-library-app[data-memory-theme="glass"] .memory-core-card {
  border:1px solid rgba(255,255,255,.7);
  background:rgba(255,255,255,.42);
  color:#171717;
  box-shadow:0 10px 30px rgba(21,25,30,.07),inset 0 1px 0 rgba(255,255,255,.82);
  -webkit-backdrop-filter:blur(22px) saturate(120%);
  backdrop-filter:blur(22px) saturate(120%);
}
.memory-library-app[data-memory-theme="glass"] .memory-hero { color:#111; }
.memory-library-app[data-memory-theme="glass"] .memory-hero > div small,
.memory-library-app[data-memory-theme="glass"] .memory-hero > div span,
.memory-library-app[data-memory-theme="glass"] .memory-hero dd { color:#666b72; opacity:1; }
.memory-library-app[data-memory-theme="glass"] .memory-hero button {
  border:1px solid rgba(17,17,17,.1);
  background:rgba(255,255,255,.5);
  color:#111;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}
.memory-library-app[data-memory-theme="glass"] .memory-role-list > button > i,
.memory-library-app[data-memory-theme="glass"] .memory-role-hero > i,
.memory-library-app[data-memory-theme="glass"] .memory-entry > i,
.memory-library-app[data-memory-theme="glass"] .memory-entry > i.is-offline,
.memory-library-app[data-memory-theme="glass"] .memory-detail-symbol,
.memory-library-app[data-memory-theme="glass"] .memory-detail-symbol.is-offline {
  background:rgba(17,17,17,.88);
  color:#fff;
}
.memory-library-app[data-memory-theme="glass"] .memory-filters button {
  border:1px solid rgba(17,17,17,.1);
  background:rgba(255,255,255,.35);
  color:#60646a;
  -webkit-backdrop-filter:blur(14px);
  backdrop-filter:blur(14px);
}
.memory-library-app[data-memory-theme="glass"] .memory-filters button.is-active { background:#151515; color:#fff; box-shadow:none; }
.memory-library-app[data-memory-theme="glass"] .memory-entry em { background:rgba(17,17,17,.06); color:#5f6368; }
.memory-selection-toolbar { display:flex; align-items:center; gap:8px; margin:0 0 10px; padding:8px 10px; border:1px solid rgba(123,100,153,.12); border-radius:14px; background:rgba(255,255,255,.58); color:#5f5368; font-size:10px; }
.memory-selection-toolbar[hidden] { display:none; }
.memory-selection-toolbar span { flex:1; }
.memory-selection-toolbar button { padding:7px 10px; border:1px solid rgba(123,100,153,.18); border-radius:9px; background:transparent; color:inherit; font:inherit; cursor:pointer; }
.memory-selection-toolbar [data-memory-delete-selected] { background:#9d5967; color:#fff; }
.memory-selection-toolbar button:disabled { opacity:.42; cursor:default; }
.memory-library-app .memory-entry.is-selected { border-color:rgba(157,89,103,.55); background:rgba(246,226,229,.82); box-shadow:0 0 0 2px rgba(157,89,103,.14),0 8px 20px rgba(92,74,114,.06); }
.memory-library-app .memory-entry { position:relative; }
.memory-library-app .memory-entry.is-selected::after { position:absolute; top:9px; right:9px; width:18px; height:18px; border-radius:50%; background:#9d5967; content:''; }
.memory-library-app .memory-entry.is-selected::before { position:absolute; z-index:1; top:14px; right:15px; width:4px; height:7px; border-right:2px solid #fff; border-bottom:2px solid #fff; content:''; transform:rotate(45deg); }
@media not all { .memory-selection-toolbar { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.08); color:#e7dce9; }.memory-library-app .memory-entry.is-selected { border-color:rgba(220,135,149,.7); background:rgba(112,58,70,.3); } }
.memory-library-app[data-memory-theme="glass"] .memory-search input { color:#111; }
.memory-library-app[data-memory-theme="glass"] .memory-search svg { stroke:#6f7379; }
.memory-library-app[data-memory-theme="glass"] .memory-core-card header span,
.memory-library-app[data-memory-theme="glass"] .memory-core-card header b,
.memory-library-app[data-memory-theme="glass"] .memory-core-card > p { color:#24272b; }
.memory-library-app[data-memory-theme="glass"] .memory-core-card > small { color:#777b81; }
.memory-library-app[data-memory-theme="glass"] .memory-delete { color:#666; }

@media not all {
  .memory-library-app[data-memory-theme="glass"] { background:radial-gradient(circle at 15% 0%,#34373b,transparent 38%),linear-gradient(145deg,#151617,#242629 56%,#111213); color:#f5f5f5; }
  .memory-library-app[data-memory-theme="glass"] .memory-header,
  .memory-library-app[data-memory-theme="glass"] .memory-subheader { border-color:rgba(255,255,255,.1); background:rgba(20,21,23,.58); box-shadow:0 1px 0 rgba(255,255,255,.04); }
  .memory-library-app[data-memory-theme="glass"] .memory-hero,
  .memory-library-app[data-memory-theme="glass"] .memory-role-list > button,
  .memory-library-app[data-memory-theme="glass"] .memory-entry,
  .memory-library-app[data-memory-theme="glass"] .memory-search,
  .memory-library-app[data-memory-theme="glass"] .memory-detail > section,
  .memory-library-app[data-memory-theme="glass"] .memory-tags i,
  .memory-library-app[data-memory-theme="glass"] .memory-core-card { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#f4f4f4; box-shadow:0 12px 32px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.08); }
  .memory-library-app[data-memory-theme="glass"] .memory-header h1,
  .memory-library-app[data-memory-theme="glass"] .memory-subheader h1,
  .memory-library-app[data-memory-theme="glass"] .memory-role-list b,
  .memory-library-app[data-memory-theme="glass"] .memory-role-hero b,
  .memory-library-app[data-memory-theme="glass"] .memory-entry b,
  .memory-library-app[data-memory-theme="glass"] .memory-detail > h2,
  .memory-library-app[data-memory-theme="glass"] .memory-hero,
  .memory-library-app[data-memory-theme="glass"] .memory-core-card header b,
  .memory-library-app[data-memory-theme="glass"] .memory-core-card > p { color:#f5f5f5; }
  .memory-library-app[data-memory-theme="glass"] .memory-header > button,
  .memory-library-app[data-memory-theme="glass"] .memory-subheader > button,
  .memory-library-app[data-memory-theme="glass"] .memory-hero button { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.08); color:#f5f5f5; }
  .memory-library-app[data-memory-theme="glass"] .memory-filters button { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.06); color:#bbbfc5; }
  .memory-library-app[data-memory-theme="glass"] .memory-filters button.is-active { background:#f3f3f3; color:#111; }
  .memory-library-app[data-memory-theme="glass"] .memory-search input { color:#f5f5f5; }
}
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-fullscreen { background:#fff; color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-atmosphere { background:linear-gradient(120deg,#fff,#e8e8e8); color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-topbar, .chat-offline-modal[data-offline-theme="white"] .chat-offline-meta, .chat-offline-modal[data-offline-theme="white"] .chat-offline-character { color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-topbar h2, .chat-offline-modal[data-offline-theme="white"] .chat-offline-meta b, .chat-offline-modal[data-offline-theme="white"] .chat-offline-atmosphere b, .chat-offline-modal[data-offline-theme="white"] .chat-offline-character b { color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-topbar > button, .chat-offline-modal[data-offline-theme="white"] .chat-offline-settings-button, .chat-offline-modal[data-offline-theme="white"] .chat-offline-theme-button { background:#f1f1f1 !important; color:#111 !important; border:1px solid rgba(0,0,0,.14); }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-meta, .chat-offline-modal[data-offline-theme="white"] .chat-offline-character span, .chat-offline-modal[data-offline-theme="white"] .chat-offline-character em, .chat-offline-modal[data-offline-theme="white"] .chat-offline-atmosphere span { color:#555; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-pulse { background:#111; box-shadow:0 0 0 5px rgba(0,0,0,.12); }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-fullscreen .chat-offline-messages { border-color:rgba(0,0,0,.12); }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-immersive .chat-offline-messages article { color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-immersive .chat-offline-messages article span { color:#555; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-immersive .chat-offline-messages article p { background:#f3f3f3; color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-immersive .chat-offline-messages article.is-user p { background:#111; color:#fff; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-actions button { background:#f2f2f2; color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-actions button span { color:#444; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-fullscreen form { border-color:rgba(0,0,0,.18); background:#fafafa; box-shadow:0 8px 22px rgba(0,0,0,.08); }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-fullscreen form input { color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-fullscreen form input::placeholder { color:#777; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-fullscreen form button { background:#111; color:#fff; box-shadow:0 4px 10px rgba(0,0,0,.16); }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-card.is-fullscreen form .chat-offline-reply-button { background:#e8e8e8; color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-context, .chat-offline-modal[data-offline-theme="white"] .chat-offline-settings-panel { border-color:rgba(0,0,0,.14); background:#fafafa; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-context-label span, .chat-offline-modal[data-offline-theme="white"] .chat-offline-settings-title span, .chat-offline-modal[data-offline-theme="white"] .chat-offline-settings-panel label { color:#111; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-context-label small, .chat-offline-modal[data-offline-theme="white"] .chat-offline-settings-title small, .chat-offline-modal[data-offline-theme="white"] .chat-offline-context-messages article, .chat-offline-modal[data-offline-theme="white"] .chat-offline-context-messages article span { color:#555; }
.chat-offline-modal[data-offline-theme="white"] .chat-offline-settings-panel select { border-color:rgba(0,0,0,.18); color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-topbar h2, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-meta b, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-character b { color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-topbar > button, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-settings-button, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-theme-button { background:#f1f1f1 !important; color:#111 !important; border:1px solid rgba(0,0,0,.14); }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-meta, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-character span, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-character em { color:#555; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-pulse { background:#111; box-shadow:0 0 0 5px rgba(0,0,0,.12); }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-immersive .chat-offline-messages article { color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-immersive .chat-offline-messages article span { color:#555; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-immersive .chat-offline-messages article p { background:rgba(255,255,255,.82); color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-immersive .chat-offline-messages article.is-user p { background:#111; color:#fff; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-actions button { background:rgba(255,255,255,.82); color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-actions button span { color:#444; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-fullscreen form { border-color:rgba(0,0,0,.18); background:rgba(255,255,255,.86); box-shadow:0 8px 22px rgba(0,0,0,.08); }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-fullscreen form input { color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-fullscreen form input::placeholder { color:#777; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-fullscreen form button { background:#111; color:#fff; box-shadow:0 4px 10px rgba(0,0,0,.16); }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-fullscreen form .chat-offline-reply-button { background:#e8e8e8; color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card header h2, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card header button, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card > label, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-note { color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card header button, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card > footer button:first-child { background:#f1f1f1; color:#111; border:1px solid rgba(0,0,0,.14); }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card > label input, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-session form input { border-color:rgba(0,0,0,.18); background:#fff; color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card > footer button:last-child, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-card.is-session form button { background:#111; color:#fff; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-scene { background:#f1f1f1; color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-scene small, .chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-empty { color:#666; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-messages article { background:#f1f1f1; color:#111; }
.chat-offline-modal[data-offline-theme]:not([data-offline-theme="black"]) .chat-offline-messages article.is-user { background:#111; color:#fff; }
.chat-offline-modal[data-offline-theme="lavender"] { --offline-accent:#80639b; --offline-accent-dark:#5d496b; --offline-accent-soft:#f1edf8; }
.chat-offline-modal[data-offline-theme="rose"] { --offline-accent:#a76d87; --offline-accent-dark:#6e4858; --offline-accent-soft:#f5e9ed; }
.chat-offline-modal[data-offline-theme="sky"] { --offline-accent:#6e91b3; --offline-accent-dark:#425f78; --offline-accent-soft:#e8f0f6; }
.chat-offline-modal[data-offline-theme="sage"] { --offline-accent:#729783; --offline-accent-dark:#486854; --offline-accent-soft:#e9f1eb; }
.chat-offline-modal[data-offline-theme="amber"] { --offline-accent:#a77b4b; --offline-accent-dark:#73502e; --offline-accent-soft:#f4ecdf; }
.chat-offline-modal[data-offline-theme="white"], .chat-offline-modal[data-offline-theme="black"] { --offline-accent:#111; --offline-accent-dark:#111; --offline-accent-soft:#f1f1f1; }
.chat-offline-modal[data-offline-theme] .chat-offline-card header h2, .chat-offline-modal[data-offline-theme] .chat-offline-meta b, .chat-offline-modal[data-offline-theme] .chat-offline-character b, .chat-offline-modal[data-offline-theme] .chat-offline-context-label span, .chat-offline-modal[data-offline-theme] .chat-offline-settings-title span { color:var(--offline-accent-dark); }
.chat-offline-modal[data-offline-theme] .chat-offline-topbar > button, .chat-offline-modal[data-offline-theme] .chat-offline-settings-button, .chat-offline-modal[data-offline-theme] .chat-offline-theme-button { background:var(--offline-accent-soft) !important; color:var(--offline-accent) !important; border-color:color-mix(in srgb, var(--offline-accent) 24%, transparent); }
.chat-offline-modal[data-offline-theme] .chat-offline-actions button { background:var(--offline-accent-soft); color:var(--offline-accent); }
.chat-offline-modal[data-offline-theme] .chat-offline-actions button span, .chat-offline-modal[data-offline-theme] .chat-offline-character span, .chat-offline-modal[data-offline-theme] .chat-offline-character em { color:var(--offline-accent); }
.chat-offline-modal[data-offline-theme] .chat-offline-card.is-fullscreen form button { background:var(--offline-accent); }
.chat-offline-modal[data-offline-theme] .chat-offline-card.is-fullscreen form .chat-offline-reply-button { background:var(--offline-accent-soft); color:var(--offline-accent-dark); }
.chat-offline-modal[data-offline-theme] .chat-offline-pulse { background:var(--offline-accent); box-shadow:0 0 0 5px color-mix(in srgb, var(--offline-accent) 16%, transparent); }
.chat-offline-modal[data-offline-theme] .chat-offline-settings-panel select { border-color:color-mix(in srgb, var(--offline-accent) 24%, transparent); color:var(--offline-accent-dark); }
.chat-offline-modal[data-offline-theme] .chat-offline-topbar > button, .chat-offline-modal[data-offline-theme] .chat-offline-theme-button, .chat-offline-modal[data-offline-theme] .chat-offline-settings-button { background:var(--offline-accent-soft) !important; color:var(--offline-accent) !important; border:1px solid var(--offline-accent) !important; }
.chat-offline-modal[data-offline-theme] .chat-offline-card.is-fullscreen form button[type="submit"] { background:var(--offline-accent) !important; color:#fff !important; border-color:var(--offline-accent) !important; }
.chat-offline-modal[data-offline-theme] .chat-offline-card.is-fullscreen form .chat-offline-reply-button { background:var(--offline-accent-soft) !important; color:var(--offline-accent-dark) !important; border:1px solid var(--offline-accent) !important; }
.chat-offline-modal[data-offline-theme] .chat-offline-card > footer button:last-child, .chat-offline-modal[data-offline-theme] .chat-offline-card.is-session form button { background:var(--offline-accent) !important; color:#fff !important; border-color:var(--offline-accent) !important; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-fullscreen { background:#101010; color:#f5f5f5; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-atmosphere { background:linear-gradient(120deg,#050505,#292929); color:#fff; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-topbar, .chat-offline-modal[data-offline-theme="black"] .chat-offline-meta, .chat-offline-modal[data-offline-theme="black"] .chat-offline-character { border-color:rgba(255,255,255,.12); color:#f5f5f5; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-fullscreen .chat-offline-topbar h2, .chat-offline-modal[data-offline-theme="black"] .chat-offline-meta b, .chat-offline-modal[data-offline-theme="black"] .chat-offline-character b, .chat-offline-modal[data-offline-theme="black"] .chat-offline-context-label span, .chat-offline-modal[data-offline-theme="black"] .chat-offline-settings-title span { color:#f5f5f5 !important; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-meta, .chat-offline-modal[data-offline-theme="black"] .chat-offline-character span, .chat-offline-modal[data-offline-theme="black"] .chat-offline-character em, .chat-offline-modal[data-offline-theme="black"] .chat-offline-context-label small, .chat-offline-modal[data-offline-theme="black"] .chat-offline-settings-title small, .chat-offline-modal[data-offline-theme="black"] .chat-offline-settings-panel label { color:#bdbdbd !important; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-context, .chat-offline-modal[data-offline-theme="black"] .chat-offline-settings-panel { border-color:rgba(255,255,255,.14); background:#1b1b1b; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-context-messages article, .chat-offline-modal[data-offline-theme="black"] .chat-offline-context-messages article span { color:#bdbdbd; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-immersive .chat-offline-messages article { color:#f5f5f5; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-immersive .chat-offline-messages article span { color:#bdbdbd; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-immersive .chat-offline-messages article p { background:#242424; color:#f5f5f5; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-immersive .chat-offline-messages article.is-user p { background:#fff; color:#111; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-fullscreen form { border-color:rgba(255,255,255,.18); background:#1b1b1b; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-fullscreen form input { color:#f5f5f5; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-card.is-fullscreen form input::placeholder { color:#aaa; }
.chat-offline-modal[data-offline-theme="black"] .chat-offline-settings-panel select, .chat-offline-modal[data-offline-theme="black"] .chat-offline-settings-panel textarea, .chat-offline-modal[data-offline-theme="black"] .chat-offline-settings-panel input { border-color:rgba(255,255,255,.18); background:#242424; color:#f5f5f5; }

/* 壁纸取色必须优先于旧主题的固定深色规则，尤其是移动端的线下全屏页。 */
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-topbar,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-presence,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-summary { color:var(--offline-ink) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-topbar > div span,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-topbar h2,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-topbar > button,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-topbar nav button,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene-copy > span,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene-copy h1,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene-copy p,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene dt,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene dd,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-presence span,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-presence small,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-presence b,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-message-body > span,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-message-text,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-message-text > p,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-empty,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-shortcuts button,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock input,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock textarea,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings h2,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings p,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings label,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings label b,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings label small,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings input,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings select,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings textarea { color:var(--offline-ink) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock input::placeholder,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock textarea::placeholder { color:var(--offline-muted) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock form button,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings-actions button { color:var(--offline-ink) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock form button[type="submit"] { color:#fff !important; }

/* 线下设置的字数、人称条目也保持毛玻璃，不使用旧版的纯白控件底色。 */
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-settings > section,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-settings > section label { background:var(--offline-glass) !important; }
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-settings > section [data-offline-length],
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-settings > section [data-offline-user-person],
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-settings > section [data-offline-character-person] { background:var(--offline-glass-strong) !important; color:var(--offline-ink) !important; }

/* iOS 会给 disabled button 套原生浅灰底，必须显式保留线下玻璃和明暗对比。 */
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-shortcuts button,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-shortcuts button:disabled { background:rgba(255,255,255,.68) !important; color:#171717 !important; opacity:.82; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-shortcuts button,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-shortcuts button:disabled { background:rgba(12,15,20,.62) !important; color:#fff !important; opacity:.82; }

/* 线下文字大小由设置面板实时控制，连同气泡内的段落和输入框一起应用。 */
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-message-text,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-message-text > p { font-size:var(--offline-message-font-size,10px) !important; }
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-dock textarea[data-offline-input],
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-dock input[data-offline-input] { font-size:clamp(9px,var(--offline-message-font-size,10px),16px) !important; }

/* 输入内容和占位提示左对齐；用户消息与角色消息统一使用毛玻璃气泡。 */
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-dock textarea[data-offline-input],
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-dock input[data-offline-input] { text-align:left !important; }
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text {
  border:1px solid rgba(255,255,255,.48) !important;
  background:var(--offline-glass-strong) !important;
  color:var(--offline-ink) !important;
  box-shadow:0 8px 22px rgba(30,20,39,.1),inset 0 1px 0 rgba(255,255,255,.45) !important;
  -webkit-backdrop-filter:blur(24px) saturate(155%) !important;
  backdrop-filter:blur(24px) saturate(155%) !important;
}
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text > p {
  border:0 !important;
  background:transparent !important;
  color:inherit !important;
}
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text {
  border-color:rgba(255,255,255,.22) !important;
  background:rgba(12,15,20,.36) !important;
  box-shadow:0 8px 22px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.1) !important;
}

/* 线下模式的角色、用户、报错和补足提示统一使用同一层毛玻璃，不再叠加白色实底。 */
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-character:not(.is-thinking) .chat-offline-v2-message-text,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-error .chat-offline-v2-message-text {
  border:1px solid rgba(255,255,255,.32) !important;
  background:var(--offline-glass) !important;
  color:var(--offline-ink) !important;
  box-shadow:0 8px 22px rgba(30,20,39,.1),inset 0 1px 0 rgba(255,255,255,.35) !important;
  -webkit-backdrop-filter:blur(24px) saturate(155%) !important;
  backdrop-filter:blur(24px) saturate(155%) !important;
}
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text > p,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-character:not(.is-thinking) .chat-offline-v2-message-text > p,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-error .chat-offline-v2-message-text > p {
  margin:0 0 .75em !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  color:inherit !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text > p,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-messages article.is-error .chat-offline-v2-message-text > p { text-indent:0 !important; }

/* 快捷键按屏幕宽度缩放，按钮文案保持单行，避免“继续”被挤到下一行。 */
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-shortcuts button,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-shortcuts button:disabled {
  min-width:0;
  gap:clamp(2px, 1vw, 6px);
  padding-right:clamp(3px, 1.5vw, 8px);
  padding-left:clamp(3px, 1.5vw, 8px);
  font-size:clamp(7px, calc(100vw / 40), 12px) !important;
  letter-spacing:-.02em;
  white-space:nowrap !important;
}
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-shortcuts button > span {
  min-width:0;
  overflow:visible;
  white-space:nowrap !important;
  font-size:inherit !important;
}
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-shortcuts button > svg {
  width:clamp(10px, calc(100vw / 30), 14px);
  height:clamp(10px, calc(100vw / 30), 14px);
}

/* 同人文：先自选故事设定，再生成和保存章节。 */
.fanfic-app { position:fixed; inset:0; z-index:76; display:none; background:#f3f0f4; color:#403746; }
.fanfic-app.is-open { display:block; }
.fanfic-page { width:min(100%,720px); height:100%; margin:auto; overflow-y:auto; background:linear-gradient(155deg,#fbfafc 0%,#f1edf3 100%); scrollbar-width:none; }
.fanfic-page::-webkit-scrollbar { display:none; }
.fanfic-title-tools { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:2px; color:#a296a5; font-size:9px; }.fanfic-title-tools button { min-height:28px; padding:0 8px; border:1px dashed rgba(101,79,107,.25); border-radius:8px; background:transparent; color:#806b85; font:inherit; font-size:9px; cursor:pointer; }.fanfic-title-tools > label { display:grid; flex:1; gap:6px; min-width:0; }.fanfic-title-tools input,.fanfic-title-tools textarea { width:100%; padding:9px; border:1px solid rgba(84,60,94,.1); border-radius:10px; outline:0; background:rgba(255,255,255,.72); color:#54465a; font:inherit; font-size:10px; }.fanfic-title-tools input { height:35px; }.fanfic-title-tools textarea { min-height:105px; line-height:1.55; resize:vertical; }.fanfic-title-tools > div { display:flex; gap:5px; align-self:flex-end; }.fanfic-title-tools > div button:first-child { border:0; background:#654f6b; color:#fff; }.fanfic-title-tools > div button:last-child { border-style:solid; }
.fanfic-title-tools.is-editing { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; }.fanfic-title-tools.is-editing > label,.fanfic-title-tools.is-editing > div { grid-column:1 / -1; }.fanfic-title-tools.is-editing > div { justify-content:flex-end; }
.fanfic-saved-styles { margin-bottom:11px; padding:10px; border:1px solid rgba(101,79,107,.1); border-radius:12px; background:rgba(240,232,241,.58); }.fanfic-saved-styles > div { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }.fanfic-saved-styles b { color:#76617b; font-size:10px; }.fanfic-saved-styles small { color:#a79aa9; font-size:8px; }.fanfic-saved-styles section { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }.fanfic-saved-styles section button { max-width:100%; padding:6px 8px; overflow:hidden; border:1px solid transparent; border-radius:9px; background:rgba(255,255,255,.72); color:#806b85; font:inherit; font-size:9px; line-height:1.35; text-align:left; text-overflow:ellipsis; cursor:pointer; }.fanfic-saved-styles section button.is-active { border-color:#9b82a0; background:#e5d9e7; color:#654f6b; }.fanfic-saved-styles > p { margin-top:8px; color:#7f9b87; font-size:9px; }
@media not all { .fanfic-saved-styles { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.08); }.fanfic-saved-styles b,.fanfic-saved-styles section button.is-active { color:#e1d4e3; }.fanfic-saved-styles small { color:#aaa; }.fanfic-saved-styles section button { background:rgba(255,255,255,.1); color:#d0b9d4; }.fanfic-saved-styles section button.is-active { border-color:#b59abc; background:rgba(190,154,198,.22); }.fanfic-saved-styles > p { color:#a6c0ab; } }
@media not all { .fanfic-title-tools { color:#aaa; }.fanfic-title-tools button { border-color:rgba(206,177,211,.35); color:#d0b9d4; }.fanfic-title-tools > div button:first-child { background:#806b83; color:#fff; }.fanfic-title-tools input,.fanfic-title-tools textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.2); color:#eee; } }
.fanfic-header { position:sticky; top:0; z-index:4; display:grid; grid-template-columns:38px 1fr 38px; align-items:center; min-height:82px; padding:max(14px,env(safe-area-inset-top)) 18px 12px; border-bottom:1px solid rgba(65,48,76,.08); background:rgba(250,249,251,.88); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.fanfic-header > div { min-width:0; text-align:center; }.fanfic-kicker,.fanfic-setup-title > span,.fanfic-section-head > div > span,.fanfic-story-settings-head > div > span { color:#a99bab; font-size:9px; font-weight:700; letter-spacing:.16em; }.fanfic-header h1 { margin-top:4px; overflow:hidden; color:#493d50; font-size:18px; font-weight:650; letter-spacing:-.04em; text-overflow:ellipsis; white-space:nowrap; }.fanfic-header p { margin-top:4px; overflow:hidden; color:#a49aa7; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.fanfic-header button { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:rgba(79,57,88,.07); color:#716276; font:inherit; font-size:23px; cursor:pointer; }.fanfic-header-close { justify-self:end; font-size:20px !important; }
.fanfic-main { padding:20px 18px 46px; }
.fanfic-section-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin:0 3px 11px; }.fanfic-section-head > div { display:grid; gap:5px; }.fanfic-section-head h2 { color:#493d50; font-size:19px; letter-spacing:-.04em; }.fanfic-section-head > b { color:#ad9fac; font-size:10px; font-weight:500; }.fanfic-empty { padding:40px 15px; border:1px dashed rgba(87,63,96,.13); border-radius:17px; color:#aaa0ad; font-size:10px; line-height:1.7; text-align:center; }.fanfic-empty i { display:block; margin-bottom:8px; color:#8a738e; font-size:24px; font-style:normal; font-weight:700; }
.fanfic-setup-card { margin-top:14px; padding:17px; border:1px solid rgba(255,255,255,.82); border-radius:21px; background:rgba(255,255,255,.68); box-shadow:0 7px 18px rgba(78,56,85,.04); }.fanfic-setup-card:first-child { margin-top:0; }.fanfic-setup-title { display:grid; gap:5px; margin-bottom:15px; }.fanfic-setup-title h2 { color:#4d4053; font-size:18px; letter-spacing:-.04em; }.fanfic-setup-title p { color:#a69ba9; font-size:10px; line-height:1.5; }.fanfic-setting-field { display:grid; gap:7px; margin-top:13px; color:#918494; font-size:10px; }.fanfic-setting-field > span { font-weight:650; }.fanfic-setting-field input,.fanfic-setting-field select,.fanfic-setting-field textarea { width:100%; border:1px solid rgba(84,60,94,.1); border-radius:11px; outline:0; background:rgba(255,255,255,.72); color:#54465a; font:inherit; font-size:11px; }.fanfic-setting-field input,.fanfic-setting-field select { height:37px; padding:0 10px; }.fanfic-setting-field textarea { min-height:65px; padding:10px 11px; resize:vertical; line-height:1.55; }.fanfic-setting-field input::placeholder,.fanfic-setting-field textarea::placeholder { color:#b8aebb; }.fanfic-setting-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 10px; }.fanfic-setting-grid .fanfic-setting-field { min-width:0; }
.fanfic-character-list { display:flex; flex-wrap:wrap; gap:6px; min-height:31px; }.fanfic-character-chip { display:inline-flex; align-items:center; gap:5px; max-width:100%; padding:6px 8px; overflow:hidden; border-radius:10px; background:#e9e0eb; color:#6f5a74; font-size:10px; }.fanfic-character-chip button { display:grid; place-items:center; width:14px; height:14px; padding:0; border:0; border-radius:50%; background:rgba(75,52,84,.1); color:#866f89; font:inherit; font-size:11px; line-height:1; cursor:pointer; }.fanfic-empty-roles { align-self:center; color:#b1a6b3; font-size:10px; font-style:normal; }.fanfic-character-picker { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:6px; margin-top:12px; }.fanfic-character-picker select { min-width:0; height:33px; padding:0 7px; border:1px solid rgba(84,60,94,.1); border-radius:10px; outline:0; background:rgba(255,255,255,.72); color:#77677b; font:inherit; font-size:10px; }.fanfic-character-picker button { min-height:33px; padding:0 9px; border:0; border-radius:10px; background:#e5d9e7; color:#765f7c; font:inherit; font-size:10px; cursor:pointer; }
.fanfic-title-card { padding-top:4px; }.fanfic-setup-actions { display:grid; grid-template-columns:1fr 1.35fr; gap:8px; margin-top:16px; }.fanfic-setup-actions button { min-height:43px; border:0; border-radius:13px; background:#e5dce7; color:#725d77; font:inherit; font-size:11px; cursor:pointer; }.fanfic-setup-actions .fanfic-primary-action { background:#654f6b; color:#fff; box-shadow:0 7px 15px rgba(92,69,99,.16); }.fanfic-primary-action span { margin-left:4px; font-size:16px; }.fanfic-setup-actions button:disabled { opacity:.55; cursor:wait; }.fanfic-local-note { margin-top:11px; color:#aaa0ad; font-size:9px; text-align:center; }
.fanfic-story-settings { padding:17px; border:1px solid rgba(255,255,255,.82); border-radius:21px; background:rgba(255,255,255,.7); box-shadow:0 7px 18px rgba(78,56,85,.04); }.fanfic-story-settings-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }.fanfic-story-settings-head > div { display:grid; gap:5px; }.fanfic-story-settings-head h2 { color:#4d4053; font-size:17px; }.fanfic-story-settings-head button { min-height:30px; padding:0 9px; border:0; border-radius:9px; background:#e5dce7; color:#765f7c; font:inherit; font-size:9px; cursor:pointer; }.fanfic-story-cast { display:flex; flex-wrap:wrap; gap:6px; margin-top:14px; }.fanfic-story-cast span { padding:6px 9px; border-radius:10px; background:#e9e0eb; color:#6f5a74; font-size:10px; }.fanfic-story-cast em { color:#aaa0ad; font-size:10px; font-style:normal; }.fanfic-setting-tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:14px; }.fanfic-setting-tags span { padding:5px 8px; border-radius:9px; background:#f0e8f1; color:#7e6883; font-size:9px; }.fanfic-story-details { display:grid; gap:9px; margin-top:14px; padding-top:13px; border-top:1px solid rgba(78,56,85,.08); }.fanfic-story-details p { color:#8f8292; font-size:10px; line-height:1.6; }.fanfic-story-details b { display:block; margin-bottom:2px; color:#706176; font-size:9px; }
.fanfic-chapters { margin-top:0; }.fanfic-draft-page { padding-bottom:12px; }.fanfic-chapters .fanfic-section-head { align-items:center; }.fanfic-chapters .fanfic-section-head > button { min-height:31px; padding:0 9px; border:0; border-radius:9px; background:#654f6b; color:#fff; font:inherit; font-size:9px; cursor:pointer; }.fanfic-chapters .fanfic-section-head > button:disabled { opacity:.55; cursor:wait; }.fanfic-chapter { margin-top:10px; padding:14px; border:1px solid rgba(255,255,255,.8); border-radius:18px; background:rgba(255,255,255,.68); box-shadow:0 6px 15px rgba(78,56,85,.035); }.fanfic-chapter-head { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:8px; }.fanfic-chapter-head > span { color:#ab9dac; font-size:8px; font-weight:700; letter-spacing:.12em; }.fanfic-chapter-head input { min-width:0; padding:3px 0; border:0; border-bottom:1px solid rgba(84,60,94,.12); outline:0; background:transparent; color:#58495e; font:inherit; font-size:11px; font-weight:650; }.fanfic-chapter-head small { color:#b0a5b1; font-size:8px; white-space:nowrap; }.fanfic-chapter textarea { display:block; width:100%; min-height:0; height:auto; margin-top:12px; padding:12px; overflow:hidden; border:1px solid rgba(84,60,94,.09); border-radius:12px; outline:0; background:rgba(255,255,255,.6); color:#55475b; font:inherit; font-size:11px; line-height:1.75; resize:none; }.fanfic-chapter > button { min-height:31px; margin-top:8px; padding:0 10px; border:0; border-radius:9px; background:#e5dce7; color:#765f7c; font:inherit; font-size:9px; cursor:pointer; }.fanfic-add-chapter { width:100%; min-height:38px; margin-top:11px; border:1px dashed rgba(101,79,107,.25); border-radius:12px; background:transparent; color:#806b85; font:inherit; font-size:10px; cursor:pointer; }
@media (max-width:430px) { .fanfic-main { padding-right:15px; padding-left:15px; }.fanfic-setup-card,.fanfic-story-settings { padding:15px; }.fanfic-chapter-head { grid-template-columns:auto minmax(0,1fr); }.fanfic-chapter-head small { grid-column:2; }.fanfic-character-picker { grid-template-columns:1fr; } }
@media not all { .fanfic-app { background:#202022; color:#eee; }.fanfic-page { background:linear-gradient(155deg,#29262b,#201e22); }.fanfic-header { border-color:rgba(255,255,255,.1); background:rgba(42,39,44,.9); }.fanfic-header h1,.fanfic-section-head h2,.fanfic-setup-title h2,.fanfic-story-settings-head h2 { color:#f1ecf2; }.fanfic-header p,.fanfic-kicker,.fanfic-setup-title > span,.fanfic-section-head > div > span,.fanfic-story-settings-head > div > span { color:#aaa0ad; }.fanfic-header button { background:rgba(255,255,255,.1); color:#eee; }.fanfic-setup-card,.fanfic-story-settings,.fanfic-chapter { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.08); color:#eee; }.fanfic-setup-title h2,.fanfic-story-settings-head h2,.fanfic-chapter-head input,.fanfic-chapter textarea { color:#eee; }.fanfic-section-head > b,.fanfic-setting-field,.fanfic-setup-title p,.fanfic-local-note,.fanfic-empty,.fanfic-story-details p,.fanfic-chapter-head small { color:#aaa; }.fanfic-character-chip,.fanfic-story-cast span,.fanfic-character-picker button,.fanfic-setup-actions button,.fanfic-story-settings-head button,.fanfic-chapter > button { background:rgba(255,255,255,.12); color:#ddd; }.fanfic-setting-tags span { background:rgba(190,154,198,.18); color:#d0b9d4; }.fanfic-setting-field input,.fanfic-setting-field select,.fanfic-setting-field textarea,.fanfic-character-picker select,.fanfic-chapter textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.2); color:#eee; }.fanfic-character-chip button { background:rgba(255,255,255,.12); color:#bbb; }.fanfic-story-details { border-color:rgba(255,255,255,.1); }.fanfic-story-details b { color:#c6b5c9; }.fanfic-chapter-head input { border-color:rgba(255,255,255,.14); }.fanfic-add-chapter { border-color:rgba(206,177,211,.35); color:#d0b9d4; } }
/* 桌面整理与磨砂小组件库预览。 */
.desktop-page { overflow-x:hidden; overflow-y:auto; scrollbar-width:none; }
.desktop-page::-webkit-scrollbar,.desktop-layout-grid::-webkit-scrollbar { display:none; }
.desktop-scroll-wrap { overflow-x:auto; overflow-y:hidden; overscroll-behavior:contain; touch-action:pan-x; }
.desktop-page { height:100%; min-height:0; overflow-y:hidden; overscroll-behavior-y:none; touch-action:pan-x; }
.desktop-layout-grid { --desktop-grid-row:80px; position:relative; z-index:1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); grid-auto-rows:var(--desktop-grid-row); grid-auto-flow:row; column-gap:14px; row-gap:20px; width:100%; min-height:calc(100vh - 170px); padding-bottom:24px; align-content:start; justify-items:stretch; }
.desktop-layout-grid-1 { margin-top:30px; padding-top:0; }
.desktop-layout-grid > .app-item { grid-column:auto; align-self:start; min-width:0; width:auto; margin:0; }
.desktop-layout-grid > .app-item .app-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.desktop-layout-grid > [data-desktop-widget] { align-self:start; min-width:0; margin:0; }
.desktop-layout-grid > [data-desktop-columns="1"] { grid-column:span 1; }
.desktop-layout-grid > [data-desktop-columns="2"] { grid-column:span 2; }
.desktop-layout-grid > [data-desktop-columns="4"] { grid-column:span 4; }
.desktop-layout-grid > [data-desktop-rows="1"] { grid-row:span 1; }
.desktop-layout-grid > [data-desktop-rows="2"] { grid-row:span 2; }
.desktop-layout-grid > [data-desktop-rows="3"] { grid-row:span 3; }
.desktop-layout-grid > [data-desktop-rows="4"] { grid-row:span 4; }
.desktop-layout-grid > [data-desktop-size="wide"],.desktop-layout-grid > [data-desktop-size="photos"] { grid-column:span 4; }
.desktop-layout-grid > [data-desktop-size="square"] { grid-column:span 2; }
.desktop-layout-grid > .desktop-search-before-photos { align-self:end; }
.desktop-layout-grid .page1-memory-launch,.desktop-layout-grid .page1-creative-folder { grid-column:auto; grid-row:auto; justify-self:stretch; width:auto; transform:none; }
.desktop-layout-grid .page1-memory-launch .app-icon { width:62px; min-width:62px; height:62px; }.desktop-layout-grid .page1-memory-launch .app-name { width:auto; }
/* 编辑时显示统一的横纵网格，App 与小组件都从同一套位置中排列。 */
.desktop-edit-mode .desktop-layout-grid { margin-left:-6px; width:calc(100% + 12px); padding:0 6px 24px; border-radius:22px; background-image:linear-gradient(to right,rgba(255,255,255,.12) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.08) 1px,transparent 1px); background-size:calc((100% - 42px) / 4 + 14px) 100%,100% var(--desktop-grid-row); background-position:0 0; align-content:start; }
.desktop-edit-mode .desktop-layout-grid > .app-item { justify-self:center; }
.desktop-edit-mode .desktop-layout-grid-1 { margin-top:30px; padding-top:0; }
.desktop-edit-mode .desktop-layout-grid-2 { padding-top:0; }
.desktop-widget-pool { display:none !important; }
.desktop-widget-remove { position:absolute; top:6px; left:6px; z-index:9; display:none; place-items:center; width:23px; height:23px; padding:0; border:1px solid rgba(255,255,255,.76); border-radius:50%; background:rgba(255,255,255,.68); color:#4b4b4b; box-shadow:0 3px 9px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.72); -webkit-backdrop-filter:blur(14px) saturate(135%); backdrop-filter:blur(14px) saturate(135%); font:500 19px/1 system-ui,sans-serif; cursor:pointer; }
.desktop-widget-copy { position:absolute; right:6px; bottom:6px; z-index:9; display:none; place-items:center; width:23px; height:23px; padding:0; border:1px solid rgba(255,255,255,.76); border-radius:50%; background:rgba(255,255,255,.72); color:#4b4b4b; box-shadow:0 3px 9px rgba(0,0,0,.16); font:600 17px/1 system-ui,sans-serif; cursor:pointer; }
.desktop-layout-toolbar[hidden],.desktop-widget-remove[hidden],.desktop-widget-copy[hidden] { display:none !important; }
.desktop-edit-mode .desktop-widget-copy { display:grid; }
.desktop-widget-copy:hover { background:#fff; }
.desktop-widget-just-placed { animation:desktop-widget-land .3s cubic-bezier(.2,.8,.2,1) both; }
.desktop-edit-mode [data-desktop-item].desktop-widget-just-placed { animation:desktop-widget-land .3s cubic-bezier(.2,.8,.2,1) both !important; }
.desktop-edit-mode [data-desktop-item] { position:relative; user-select:none; -webkit-user-select:none; touch-action:none; animation:desktop-jiggle .18s ease-in-out infinite alternate; }.desktop-edit-mode [data-desktop-item]:nth-child(even) { animation-direction:alternate-reverse; }.desktop-edit-mode .desktop-widget-remove { display:grid; animation:none; }.desktop-edit-mode .desktop-scroll-wrap { scroll-snap-type:x mandatory; scroll-snap-stop:always; overscroll-behavior-x:none; }.desktop-edit-mode .desktop-page { scroll-snap-stop:always; }.desktop-edit-mode .desktop-page,.desktop-edit-mode .dock-bar { outline:1px dashed rgba(80,80,80,.12); outline-offset:-4px; }
@keyframes desktop-jiggle { from { transform:rotate(-.45deg); } to { transform:rotate(.45deg); } }
@keyframes desktop-app-land { 0% { transform:scale(.76); opacity:.35; } 70% { transform:scale(1.08); opacity:1; } 100% { transform:scale(1); opacity:1; } }
@keyframes desktop-widget-land { 0% { opacity:.35; transform:scale(.94); } 70% { opacity:1; transform:scale(1.02); } 100% { opacity:1; transform:scale(1); } }
.desktop-edit-mode .desktop-layout-grid > .desktop-app-just-placed { animation:desktop-app-land .3s cubic-bezier(.2,.8,.2,1) both !important; }
@keyframes desktop-folder-return { 0% { transform:scale(1); } 45% { transform:scale(.82); } 75% { transform:scale(1.1); } 100% { transform:scale(1); } }
.desktop-edit-mode .desktop-layout-grid > .desktop-folder-return-feedback { animation:desktop-folder-return .3s cubic-bezier(.2,.8,.2,1) both !important; }
.desktop-layout-placeholder { pointer-events:none; }
.desktop-layout-ghost, .desktop-layout-ghost * { pointer-events:none !important; }
.desktop-edit-mode [data-desktop-item], .desktop-edit-mode [data-desktop-item] * {
  touch-action:none !important;
  -webkit-user-drag:none;
  -webkit-touch-callout:none;
}
.desktop-layout-toolbar { position:fixed; top:max(12px,env(safe-area-inset-top)); right:14px; left:14px; z-index:90; display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:44px; padding:5px 6px; visibility:hidden; border:1px solid rgba(255,255,255,.72); border-radius:17px; background:rgba(247,247,245,.84); box-shadow:0 10px 30px rgba(0,0,0,.13); opacity:0; pointer-events:none; transform:translateY(-12px); transition:opacity .16s ease,transform .16s ease,visibility .16s; -webkit-backdrop-filter:blur(24px) saturate(140%); backdrop-filter:blur(24px) saturate(140%); }.desktop-edit-mode .desktop-layout-toolbar { visibility:visible; opacity:1; pointer-events:auto; transform:none; }.desktop-layout-toolbar button { min-width:34px; height:34px; padding:0 11px; border:0; border-radius:12px; background:rgba(0,0,0,.07); color:#333; font:inherit; font-size:18px; cursor:pointer; }.desktop-layout-toolbar button:last-child { background:#222; color:#fff; font-size:11px; }.desktop-layout-toolbar span { overflow:hidden; color:#777; font-size:9px; text-align:center; text-overflow:ellipsis; white-space:nowrap; }
.desktop-layout-toolbar { justify-content:flex-end; }
.desktop-layout-toolbar { right:14px; left:auto; width:42px; min-height:30px; padding:0; border:0; border-radius:0; background:transparent !important; box-shadow:none !important; -webkit-backdrop-filter:none; backdrop-filter:none; }
.desktop-layout-toolbar > button { width:42px; min-width:42px; height:30px; padding:0; border-radius:10px; background:#111 !important; color:#fff !important; box-shadow:0 3px 8px rgba(0,0,0,.26) !important; font-family:Arial,sans-serif; font-size:25px; font-weight:700; line-height:1; text-shadow:none; }
@media not all { .desktop-layout-toolbar > button { background:transparent; color:#eee; } }
.desktop-add-menu { position:fixed; top:max(48px,calc(env(safe-area-inset-top) + 42px)); right:14px; z-index:95; display:grid; width:190px; padding:7px; visibility:hidden; border:1px solid rgba(255,255,255,.78); border-radius:18px; background:rgba(247,247,245,.92); box-shadow:0 12px 32px rgba(0,0,0,.16); opacity:0; pointer-events:none; transform:translateY(-7px) scale(.98); transform-origin:top right; transition:opacity .16s ease,transform .16s ease,visibility .16s; -webkit-backdrop-filter:blur(24px) saturate(140%); backdrop-filter:blur(24px) saturate(140%); }.desktop-add-menu.is-open { visibility:visible; opacity:1; pointer-events:auto; transform:none; }.desktop-add-menu button { display:grid; grid-template-columns:25px 1fr; gap:1px 7px; align-items:center; width:100%; padding:9px 10px; border:0; border-radius:12px; background:transparent; color:#333; font:inherit; text-align:left; cursor:pointer; }.desktop-add-menu button:hover { background:rgba(0,0,0,.06); }.desktop-add-menu b { grid-row:1/3; display:grid; place-items:center; width:25px; height:25px; border-radius:8px; background:rgba(0,0,0,.07); font-size:17px; font-weight:500; }.desktop-add-menu span { font-size:11px; }.desktop-add-menu small { color:#999; font-size:8px; }
.desktop-add-menu button:disabled { cursor:not-allowed; opacity:.42; }.desktop-add-menu button:disabled:hover { background:transparent; }
.desktop-layout-placeholder { align-self:stretch; min-height:60px; border:1px dashed rgba(76,76,76,.28); border-radius:18px; background:rgba(255,255,255,.13); animation:none !important; }.desktop-layout-placeholder[data-desktop-columns="1"] { grid-column:span 1; }.desktop-layout-placeholder[data-desktop-columns="2"] { grid-column:span 2; }.desktop-layout-placeholder[data-desktop-columns="4"] { grid-column:span 4; }.desktop-layout-placeholder[data-desktop-rows="1"] { grid-row:span 1; }.desktop-layout-placeholder[data-desktop-rows="2"] { grid-row:span 2; }.desktop-layout-placeholder[data-desktop-rows="3"] { grid-row:span 3; }.desktop-layout-placeholder[data-desktop-rows="4"] { grid-row:span 4; }.desktop-layout-placeholder[data-desktop-size="wide"],.desktop-layout-placeholder[data-desktop-size="photos"] { grid-column:span 4; }.desktop-layout-placeholder[data-desktop-size="square"] { grid-column:span 2; }.dock-bar > .desktop-layout-placeholder { flex:1 1 0; min-width:50px; height:66px; border-radius:17px; }.is-layout-source { visibility:hidden !important; animation:none !important; }.desktop-layout-ghost { position:fixed !important; z-index:110 !important; margin:0 !important; visibility:visible !important; opacity:.88; pointer-events:none !important; animation:none !important; transform:scale(1.04) !important; filter:drop-shadow(0 13px 18px rgba(0,0,0,.22)); }
.desktop-widget-library { position:fixed; inset:0; z-index:120; visibility:hidden; opacity:0; pointer-events:none; transition:opacity .18s ease,visibility .18s; }.desktop-widget-library.is-open { visibility:visible; opacity:1; pointer-events:auto; }.desktop-widget-library-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(35,35,35,.18); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }.desktop-widget-library > section { position:absolute; right:0; bottom:0; left:0; width:min(100%,720px); max-height:84vh; margin:auto; overflow:hidden; border:1px solid rgba(255,255,255,.72); border-radius:28px 28px 0 0; background:rgba(248,248,246,.95); box-shadow:0 -18px 55px rgba(0,0,0,.17); transform:translateY(22px); transition:transform .2s ease; -webkit-backdrop-filter:blur(28px) saturate(130%); backdrop-filter:blur(28px) saturate(130%); }.desktop-widget-library.is-open > section { transform:none; }.desktop-widget-library header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:21px 20px 15px; border-bottom:1px solid rgba(0,0,0,.07); }.desktop-widget-library header > div { display:grid; gap:4px; }.desktop-widget-library header span { color:#999; font-size:8px; font-weight:750; letter-spacing:.18em; }.desktop-widget-library header h2 { font-size:20px; }.desktop-widget-library header p { color:#979797; font-size:9px; line-height:1.5; }.desktop-widget-library header > button { display:grid; place-items:center; width:30px; height:30px; border:0; border-radius:50%; background:#ececeb; color:#666; font-size:19px; cursor:pointer; }.desktop-widget-library main { max-height:calc(84vh - 91px); padding:13px 15px max(24px,env(safe-area-inset-bottom)); overflow-y:auto; }.desktop-widget-library-label { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin:5px 3px 8px; }.desktop-widget-library-label b { color:#3d3a35; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:14px; }.desktop-widget-library-label small { color:#aaa39b; font-size:8px; }.desktop-widget-library-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-bottom:18px; }.desktop-widget-option { min-width:0; padding:8px; border:1px solid rgba(0,0,0,.07); border-radius:17px; background:rgba(255,255,255,.48); }.desktop-widget-option.is-preview { background:rgba(255,255,255,.34); }.desktop-widget-preview-card { position:relative; display:flex; align-items:center; min-height:76px; overflow:hidden; padding:11px; border:1px solid rgba(255,255,255,.6); border-radius:13px; background:linear-gradient(145deg,rgba(255,255,255,.62),rgba(218,220,220,.27)); box-shadow:inset 0 1px 0 rgba(255,255,255,.72),0 5px 14px rgba(35,35,35,.06); color:#383837; -webkit-backdrop-filter:blur(16px) saturate(130%); backdrop-filter:blur(16px) saturate(130%); }.desktop-widget-preview-card > div { display:grid; min-width:0; gap:4px; }.desktop-widget-preview-card b { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.desktop-widget-preview-card span,.desktop-widget-preview-card small,.desktop-widget-preview-card p { overflow:hidden; color:#888; font-size:8px; line-height:1.45; text-overflow:ellipsis; white-space:nowrap; }.desktop-widget-preview-card em { color:#777; font-style:normal; }.desktop-widget-option footer { display:flex; align-items:center; justify-content:space-between; gap:6px; padding:8px 2px 1px; }.desktop-widget-option footer > div { display:grid; min-width:0; gap:3px; }.desktop-widget-option footer b { overflow:hidden; color:#494640; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.desktop-widget-option footer small { overflow:hidden; color:#aaa29a; font-size:7px; text-overflow:ellipsis; white-space:nowrap; }.desktop-widget-option footer button { flex:0 0 auto; min-height:27px; padding:0 7px; border:0; border-radius:8px; background:#292823; color:#fff; font:inherit; font-size:7px; }.desktop-widget-option footer button:disabled { background:#e5e3df; color:#a09b95; }
.preview-profile i { width:35px; height:35px; margin-right:8px; border:2px solid #fff; border-radius:50%; background:linear-gradient(135deg,#b7b3af 0 48%,#807c79 49%); }.preview-profile em { margin-left:auto; font-size:15px; }.preview-todo { display:grid; align-content:start; gap:5px; }.preview-todo b { margin-bottom:1px; }.preview-todo .muted { color:#aaa; }.preview-photos { gap:5px; }.preview-photos i { flex:1; height:58px; border-radius:6px; background:linear-gradient(145deg,#aaa8a2,#dedbd5 48%,#8d8c89); }.preview-photos i:nth-child(2) { background:linear-gradient(145deg,#b9c1c6,#7e8b90 55%,#d6d1c5); }.preview-photos i:nth-child(3) { background:linear-gradient(145deg,#d5c0af,#9c887d 55%,#e2d8cc); }.preview-calendar { display:grid; grid-template-columns:auto 1fr; gap:3px 8px; }.preview-calendar b { font-size:14px; }.preview-calendar span { align-self:end; }.preview-calendar small,.preview-calendar i { grid-column:1/-1; }.preview-calendar i { color:#aaa; font-size:11px; font-style:normal; letter-spacing:2px; }.preview-role i,.preview-unread i { display:grid; place-items:center; flex:0 0 29px; width:29px; height:29px; margin-right:8px; border-radius:50%; background:linear-gradient(135deg,#beb5ae,#77716a); color:#fff; font-size:10px; font-style:normal; }.preview-role em { margin-left:auto; }.preview-unread { display:grid; align-content:start; gap:5px; }.preview-unread > b { display:block; }.preview-unread > b em { display:inline-grid; place-items:center; width:14px; height:14px; margin-left:3px; border-radius:50%; background:#8c8178; color:#fff; font-size:7px; font-style:normal; }.preview-unread > span { display:flex; align-items:center; }.preview-unread > span i { flex-basis:21px; width:21px; height:21px; margin-right:5px; font-size:7px; }.preview-unread > span small { overflow:hidden; text-overflow:ellipsis; }.preview-countdown,.preview-memory,.preview-progress,.preview-debate,.preview-magazine,.preview-inspiration,.preview-today { display:grid; align-content:center; gap:4px; }.preview-countdown small,.preview-memory small,.preview-progress small,.preview-debate small,.preview-magazine i,.preview-inspiration small,.preview-today small { color:#9c7560; font-size:7px; letter-spacing:.12em; }.preview-countdown b { font-family:Georgia,serif; font-size:18px; }.preview-countdown i { width:100%; height:3px; border-radius:3px; background:linear-gradient(90deg,#9d7e69 70%,rgba(100,100,100,.13) 70%); }.preview-music { gap:8px; }.preview-music > i { display:grid; place-items:center; width:35px; height:35px; border-radius:11px; background:#4b4843; color:#fff; font-size:19px; font-style:normal; }.preview-music em { margin-left:auto; font-size:12px; }.preview-memory b,.preview-debate b,.preview-magazine b,.preview-inspiration b,.preview-today b { font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:13px; line-height:1.25; white-space:normal; }.preview-memory p { white-space:normal; }.preview-progress i { display:block; width:100%; height:5px; border-radius:5px; background:rgba(80,80,80,.14); }.preview-progress i em { display:block; width:58%; height:100%; border-radius:5px; background:#8d7563; }.preview-progress strong { color:#9a7a64; font-size:8px; }.preview-debate > span { display:flex; gap:5px; }.preview-debate > span i { padding:3px 5px; border-radius:6px; background:rgba(125,105,91,.12); font-size:7px; font-style:normal; }.preview-magazine { background:linear-gradient(145deg,rgba(53,50,45,.8),rgba(135,117,101,.42)); color:#fff; }.preview-magazine i,.preview-magazine span { color:rgba(255,255,255,.65); }.preview-inspiration { background:linear-gradient(145deg,rgba(232,222,193,.62),rgba(255,255,255,.35)); }.preview-relation { gap:9px; }.preview-relation > i { color:#9b7467; font-size:23px; font-style:normal; }.preview-relation strong { margin-left:auto; color:#9a7563; font:italic 15px Georgia,serif; }.preview-today { background:linear-gradient(145deg,rgba(211,204,219,.5),rgba(255,255,255,.34)); }
.preview-search { gap:8px; }.preview-search > i { display:grid; place-items:center; width:24px; height:24px; border:1px solid rgba(90,90,90,.22); border-radius:50%; color:#777; font-size:17px; font-style:normal; }.preview-search > span { color:#777; font-size:10px; }
@media (max-width:390px) { .desktop-widget-library-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.desktop-widget-library > section { max-height:88vh; }.desktop-widget-library main { max-height:calc(88vh - 91px); padding-right:12px; padding-left:12px; }.desktop-layout-grid { column-gap:10px; row-gap:20px; }.desktop-layout-grid-1 { margin-top:30px; } }
@media not all { .desktop-layout-toolbar { border-color:rgba(255,255,255,.13); background:rgba(37,37,38,.9); }.desktop-layout-toolbar button { background:rgba(255,255,255,.1); color:#eee; }.desktop-layout-toolbar button:last-child { background:#eee; color:#111; }.desktop-layout-toolbar span { color:#aaa; }.desktop-add-menu { border-color:rgba(255,255,255,.13); background:rgba(37,37,38,.95); color:#eee; }.desktop-add-menu button { color:#eee; }.desktop-add-menu button:hover { background:rgba(255,255,255,.08); }.desktop-add-menu b { background:rgba(255,255,255,.1); }.desktop-add-menu small { color:#aaa; }.desktop-widget-remove { border-color:rgba(255,255,255,.82); background:rgba(255,255,255,.72); color:#414141; box-shadow:0 3px 9px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.82); }.desktop-widget-library > section { border-color:rgba(255,255,255,.12); background:rgba(38,38,39,.97); color:#eee; }.desktop-widget-library header { border-color:rgba(255,255,255,.09); }.desktop-widget-library header > button,.desktop-widget-option footer button:disabled { background:#4a4a4c; color:#bbb; }.desktop-widget-option { border-color:rgba(255,255,255,.09); background:rgba(255,255,255,.07); }.desktop-widget-preview-card { border-color:rgba(255,255,255,.12); background:linear-gradient(145deg,rgba(255,255,255,.13),rgba(255,255,255,.04)); color:#eee; }.desktop-widget-option footer b { color:#ddd; }.desktop-widget-option footer small { color:#aaa; }.desktop-widget-library-label b { color:#eee; }.desktop-layout-placeholder { border-color:rgba(255,255,255,.22); } }

/* 杂志社：从选题、采访和稿件编辑到封面发布的完整工作台。 */
.magazine-app { position:fixed; inset:0; z-index:77; display:none; background:#ece9e3; color:#292621; }
.magazine-app.is-open { display:block; }
.magazine-page { width:min(100%,760px); height:100%; margin:auto; overflow-y:auto; background:linear-gradient(155deg,#f8f6f1,#e9e5dc); scrollbar-width:none; }
.magazine-page::-webkit-scrollbar { display:none; }
.magazine-header { position:sticky; top:0; z-index:8; display:grid; grid-template-columns:38px minmax(0,1fr) 38px; align-items:center; min-height:82px; padding:max(14px,env(safe-area-inset-top)) 18px 12px; border-bottom:1px solid rgba(44,38,31,.09); background:rgba(246,243,236,.88); -webkit-backdrop-filter:blur(22px) saturate(130%); backdrop-filter:blur(22px) saturate(130%); }
.magazine-header > div { min-width:0; text-align:center; }.magazine-header span,.magazine-panel-head span,.magazine-form-title span,.magazine-toc > span { color:#9d6e4d; font-size:8px; font-weight:800; letter-spacing:.2em; }.magazine-header h1 { margin-top:3px; overflow:hidden; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:19px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }.magazine-header p { margin-top:3px; overflow:hidden; color:#8e887f; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }.magazine-round-button { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:rgba(47,42,35,.07); color:#615b53; font:inherit; font-size:23px; cursor:pointer; }.magazine-header .magazine-round-button:last-child { justify-self:end; font-size:20px; }
.magazine-main { padding:20px 18px 48px; }
.magazine-panel-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; }.magazine-panel-head > div,.magazine-form-title { display:grid; gap:5px; }.magazine-panel-head h2,.magazine-form-title h2,.magazine-toc h2 { font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:20px; }
.magazine-empty,.magazine-empty-small { padding:38px 16px; border:1px dashed rgba(65,52,40,.15); border-radius:18px; color:#9c958c; font-size:10px; line-height:1.7; text-align:center; }.magazine-empty i { display:block; margin-bottom:7px; color:#3d3933; font-family:Georgia,serif; font-size:27px; font-style:normal; }.magazine-empty-small { padding:24px 12px; }
.magazine-form-card,.magazine-overview,.magazine-section-card,.magazine-article-editor,.magazine-cover-settings { position:relative; margin-top:12px; padding:17px; border:1px solid rgba(60,49,39,.08); border-radius:20px; background:rgba(255,255,255,.58); box-shadow:0 7px 20px rgba(60,50,40,.04); }.magazine-form-card:first-child { margin-top:0; }.magazine-number { position:absolute; top:16px; right:17px; color:#d1c8bd; font:italic 25px Georgia,serif; }.magazine-form-title { margin-bottom:14px; }.magazine-form-title p,.magazine-panel-head p { color:#948d84; font-size:9px; line-height:1.55; }
.magazine-form-card > label,.magazine-overview > label,.magazine-overview > div > label,.magazine-cover-settings > label { display:grid; gap:7px; margin-top:12px; color:#766e65; font-size:9px; font-weight:650; }.magazine-form-card input,.magazine-form-card textarea,.magazine-form-card select,.magazine-overview input,.magazine-overview textarea,.magazine-overview select,.magazine-cover-settings input,.magazine-cover-settings textarea { width:100%; border:1px solid rgba(61,49,39,.12); border-radius:10px; outline:0; background:rgba(255,255,255,.65); color:#322e29; font:inherit; font-size:10px; }.magazine-form-card input,.magazine-form-card select,.magazine-overview input,.magazine-overview select,.magazine-cover-settings input { height:37px; padding:0 10px; }.magazine-form-card textarea,.magazine-overview textarea,.magazine-cover-settings textarea { min-height:72px; padding:10px; line-height:1.55; resize:vertical; }.magazine-form-grid,.magazine-overview > div { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.magazine-role-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.magazine-role-choice { position:relative; display:flex; align-items:center; min-width:0; gap:8px; padding:9px; border:1px solid transparent; border-radius:13px; background:#f0ece5; cursor:pointer; }.magazine-role-choice:has(input:checked) { border-color:#a87a59; background:#eee1d6; }.magazine-role-choice input { position:absolute; width:1px; height:1px; opacity:0; }.magazine-role-avatar,.magazine-interview-room > header > span { display:grid; place-items:center; flex:0 0 34px; width:34px; height:34px; overflow:hidden; border-radius:50%; background:#d8cec2; color:#5c4c3f; font-size:12px; }.magazine-role-avatar img,.magazine-interview-room > header img,.magazine-interview-roles img { width:100%; height:100%; object-fit:cover; }.magazine-role-choice > span:last-child { display:grid; min-width:0; gap:3px; }.magazine-role-choice b { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.magazine-role-choice small,.magazine-no-roles { color:#9d958b; font-size:8px; }.magazine-create-button,.magazine-publish-button { width:100%; min-height:46px; margin-top:16px; border:0; border-radius:14px; background:#292823; color:#fff; font:inherit; font-size:11px; cursor:pointer; }.magazine-create-button span,.magazine-publish-button span { margin-left:5px; font-size:17px; }
.magazine-tabs { position:sticky; top:82px; z-index:7; display:grid; grid-template-columns:repeat(4,1fr); border-bottom:1px solid rgba(52,44,36,.09); background:rgba(240,236,227,.9); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }.magazine-tabs button { display:flex; align-items:center; justify-content:center; gap:5px; height:46px; border:0; border-bottom:2px solid transparent; background:transparent; color:#9b9389; font:inherit; font-size:9px; cursor:pointer; }.magazine-tabs button i { font:italic 9px Georgia,serif; }.magazine-tabs button.is-active { border-color:#9f6f4e; color:#6c4934; }.magazine-studio-main { padding-top:17px; }.magazine-panel-head { align-items:flex-start; margin-bottom:15px; }.magazine-panel-head > button { min-height:33px; padding:0 10px; border:0; border-radius:10px; background:#332f29; color:#fff; font:inherit; font-size:9px; cursor:pointer; }.magazine-panel-head button:disabled { opacity:.5; cursor:wait; }
.magazine-overview { margin:0 0 13px; }.magazine-participant-chips { display:flex !important; grid-template-columns:none !important; flex-wrap:wrap; align-items:center; gap:6px !important; margin-top:13px; }.magazine-participant-chips b { margin-right:4px; color:#766e65; font-size:9px; }.magazine-participant-chips span { padding:5px 8px; border-radius:9px; background:#e9e1d8; color:#705744; font-size:8px; }.magazine-participant-chips em { color:#9d958b; font-size:8px; font-style:normal; }
.magazine-participant-manager { margin-top:12px; padding-top:11px; border-top:1px solid rgba(60,49,39,.08); }.magazine-participant-manager summary { color:#80644f; font-size:9px; cursor:pointer; }.magazine-participant-manager .magazine-role-grid { margin-top:10px; }
.magazine-section-list { display:grid; gap:9px; }.magazine-section-card { display:grid; grid-template-columns:24px minmax(0,1fr) 72px; gap:10px; margin:0; padding:13px; }.magazine-section-card > span { color:#a57b5d; font:italic 12px Georgia,serif; }.magazine-section-card > div { display:grid; min-width:0; gap:6px; }.magazine-section-card select,.magazine-section-card input,.magazine-section-card textarea { width:100%; border:0; outline:0; background:transparent; color:inherit; font:inherit; }.magazine-section-card select { color:#a07454; font-size:8px; }.magazine-section-card input { border-bottom:1px solid rgba(62,51,40,.1); font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:13px; font-weight:700; }.magazine-section-card textarea { min-height:42px; color:#837b72; font-size:9px; line-height:1.5; resize:vertical; }.magazine-section-card aside { display:grid; align-content:start; gap:6px; }.magazine-section-card aside b { color:#999086; font-size:7px; font-weight:500; text-align:center; }.magazine-section-card aside button,.magazine-add-section { min-height:27px; border:0; border-radius:8px; background:#ece5dc; color:#725844; font:inherit; font-size:7px; cursor:pointer; }.magazine-section-card aside button:last-child { background:transparent; color:#a49a90; }.magazine-add-section { width:100%; min-height:38px; margin-top:10px; border:1px dashed rgba(92,69,52,.24); background:transparent; font-size:9px; }
.magazine-interview-layout { display:grid; grid-template-columns:112px minmax(0,1fr); gap:10px; min-height:480px; }.magazine-interview-roles { display:grid; align-content:start; gap:7px; }.magazine-interview-roles button { display:grid; grid-template-columns:30px minmax(0,1fr); align-items:center; gap:2px 7px; padding:7px; border:1px solid transparent; border-radius:12px; background:rgba(255,255,255,.45); color:inherit; font:inherit; text-align:left; cursor:pointer; }.magazine-interview-roles button.is-active { border-color:#aa7c5a; background:#eee2d7; }.magazine-interview-roles button > span { grid-row:1/3; width:30px; height:30px; overflow:hidden; border-radius:50%; background:#d8cec2; }.magazine-interview-roles b { overflow:hidden; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }.magazine-interview-roles small { color:#9d958b; font-size:7px; }.magazine-interview-room { display:grid; grid-template-rows:auto minmax(0,1fr) auto; overflow:hidden; border:1px solid rgba(60,49,39,.09); border-radius:19px; background:rgba(255,255,255,.56); }.magazine-interview-room > header { display:flex; align-items:center; gap:9px; padding:12px; border-bottom:1px solid rgba(60,49,39,.08); }.magazine-interview-room > header > div { display:grid; min-width:0; gap:3px; }.magazine-interview-room > header b { font-size:11px; }.magazine-interview-room > header small { overflow:hidden; color:#948c82; font-size:8px; text-overflow:ellipsis; white-space:nowrap; }.magazine-interview-room > main { display:grid; align-content:start; gap:8px; max-height:390px; padding:13px; overflow-y:auto; }.magazine-interview-empty { padding:50px 15px; color:#a29a90; font-size:9px; line-height:1.6; text-align:center; }.magazine-interview-turn { max-width:86%; padding:10px 11px; border-radius:13px; background:#eee7dd; }.magazine-interview-turn.is-editor { justify-self:end; background:#35312b; color:#fff; }.magazine-interview-turn span,.magazine-interview-turn small { display:block; color:#a27d61; font-size:7px; }.magazine-interview-turn.is-editor span,.magazine-interview-turn.is-editor small { color:rgba(255,255,255,.5); }.magazine-interview-turn p { margin:5px 0; font-size:9px; line-height:1.65; }.magazine-interview-form { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px; padding:10px; border-top:1px solid rgba(60,49,39,.08); }.magazine-interview-form textarea { min-height:54px; padding:9px; border:1px solid rgba(60,49,39,.11); border-radius:10px; outline:0; background:rgba(255,255,255,.65); color:inherit; font:inherit; font-size:9px; resize:none; }.magazine-interview-form button { width:58px; border:0; border-radius:10px; background:#332f29; color:#fff; font:inherit; font-size:9px; cursor:pointer; }
.magazine-pending-drafts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-bottom:11px; }.magazine-pending-drafts button { display:grid; gap:4px; padding:11px; border:1px dashed rgba(86,65,48,.2); border-radius:12px; background:transparent; color:inherit; font:inherit; text-align:left; cursor:pointer; }.magazine-pending-drafts span { color:#a47858; font-size:7px; }.magazine-pending-drafts b { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.magazine-pending-drafts small { color:#9b9389; font-size:8px; }.magazine-article-list { display:grid; gap:11px; }.magazine-article-editor { margin:0; }.magazine-article-editor > header { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:8px; }.magazine-article-editor > header span { color:#a27555; font-size:7px; font-weight:700; letter-spacing:.12em; }.magazine-article-editor > header input,.magazine-article-deck,.magazine-article-editor textarea { width:100%; border:0; outline:0; background:transparent; color:inherit; font:inherit; }.magazine-article-editor > header input { padding:4px 0; border-bottom:1px solid rgba(60,49,39,.1); font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:14px; font-weight:700; }.magazine-article-editor > header button { border:0; background:transparent; color:#a59b91; font:inherit; font-size:8px; cursor:pointer; }.magazine-article-deck { margin-top:10px; padding:8px 0; color:#827970 !important; font-size:9px !important; }.magazine-article-editor textarea { min-height:220px; padding:12px; border:1px solid rgba(60,49,39,.09); border-radius:12px; background:rgba(255,255,255,.45); font-size:10px; line-height:1.8; resize:vertical; }.magazine-article-editor footer { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:8px; }.magazine-article-editor footer small { color:#9d958c; font-size:8px; }.magazine-article-editor footer button { min-height:29px; padding:0 10px; border:0; border-radius:8px; background:#332f29; color:#fff; font:inherit; font-size:8px; cursor:pointer; }
.magazine-design-layout { display:grid; grid-template-columns:minmax(220px,.8fr) minmax(0,1fr); align-items:start; gap:16px; }.magazine-cover-stage { display:grid; place-items:center; padding:16px; border-radius:20px; background:#ddd6cb; }.magazine-cover { position:relative; width:min(100%,330px); aspect-ratio:3/4; overflow:hidden; border-radius:4px; background:var(--mag-cover,#d7c8bd); color:var(--mag-ink,#241f1c); box-shadow:0 14px 30px rgba(45,38,31,.2); }.magazine-cover-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }.magazine-cover-shade { position:absolute; inset:0; background:linear-gradient(180deg,rgba(255,255,255,.08),transparent 42%,rgba(0,0,0,.17)); mix-blend-mode:multiply; }.magazine-cover-copy { position:absolute; inset:0; display:grid; grid-template-columns:1fr auto; grid-template-rows:auto 1fr auto auto; gap:6px; padding:9% 8%; color:inherit; }.magazine-cover-copy span { font:700 8px Arial,sans-serif; letter-spacing:.22em; }.magazine-cover-copy small { font:italic 7px Georgia,serif; text-align:right; }.magazine-cover-copy h2 { grid-column:1/-1; align-self:end; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:clamp(25px,7vw,47px); line-height:1.05; letter-spacing:-.06em; text-shadow:0 1px 8px rgba(255,255,255,.2); }.magazine-cover-copy p { grid-column:1/-1; max-width:82%; font-size:8px; line-height:1.5; }.magazine-cover-settings { display:grid; gap:2px; margin:0; }.magazine-color-row { display:flex; align-items:center; flex-wrap:wrap; gap:7px; margin-top:13px; }.magazine-color-row b { margin-right:4px; color:#766e65; font-size:9px; }.magazine-color-row button { width:25px; height:25px; border:2px solid #fff; border-radius:50%; box-shadow:0 1px 5px rgba(0,0,0,.13); cursor:pointer; }.magazine-color-row button.is-active { outline:2px solid #a47555; outline-offset:2px; }.magazine-cover-actions { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:14px; }.magazine-cover-actions label,.magazine-cover-actions button { display:grid; place-items:center; min-height:36px; margin:0; border:0; border-radius:10px; background:#e9e1d8; color:#6f5542; font:inherit; font-size:8px; cursor:pointer; }.magazine-cover-actions input { display:none; }.magazine-cover-actions button:last-child { grid-column:1/-1; background:transparent; color:#a0968d; }
.magazine-reader { padding:20px 18px 60px; }.magazine-reader > .magazine-cover { width:min(92%,430px); margin:0 auto 24px; }.magazine-toc,.magazine-reading-page { margin-top:13px; padding:22px; border-radius:20px; background:rgba(255,255,255,.62); }.magazine-toc ol { margin-top:16px; list-style:none; }.magazine-toc li { display:grid; grid-template-columns:25px minmax(0,1fr) auto; gap:9px; padding:9px 0; border-top:1px solid rgba(60,49,39,.09); }.magazine-toc li span { color:#a17453; font:italic 9px Georgia,serif; }.magazine-toc li b { font-size:10px; }.magazine-toc li small { color:#9c9389; font-size:7px; }.magazine-reading-page header > span { color:#a17453; font-size:8px; font-weight:700; letter-spacing:.15em; }.magazine-reading-page h2 { margin-top:8px; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:24px; line-height:1.25; }.magazine-reading-page header p { margin-top:8px; color:#887f75; font-size:10px; line-height:1.55; }.magazine-reading-page > div { margin-top:18px; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:11px; line-height:2; }
@media (max-width:600px) { .magazine-main { padding-right:14px; padding-left:14px; }.magazine-form-grid,.magazine-overview > div { grid-template-columns:1fr; gap:0; }.magazine-section-card { grid-template-columns:20px minmax(0,1fr); }.magazine-section-card aside { grid-column:2; grid-template-columns:repeat(3,1fr); align-items:center; }.magazine-interview-layout { grid-template-columns:1fr; }.magazine-interview-roles { display:flex; overflow-x:auto; }.magazine-interview-roles button { flex:0 0 112px; }.magazine-design-layout { grid-template-columns:1fr; }.magazine-cover-stage { padding:19px 36px; }.magazine-role-grid { grid-template-columns:1fr 1fr; } }
@media not all { .magazine-app { background:#1e1d1b; color:#eeeae3; }.magazine-page { background:linear-gradient(155deg,#292722,#201f1c); }.magazine-header { border-color:rgba(255,255,255,.09); background:rgba(39,37,33,.9); }.magazine-header p,.magazine-panel-head p,.magazine-form-title p { color:#aaa39a; }.magazine-round-button { background:rgba(255,255,255,.09); color:#eee; }.magazine-tabs { border-color:rgba(255,255,255,.09); background:rgba(39,37,33,.92); }.magazine-form-card,.magazine-overview,.magazine-section-card,.magazine-article-editor,.magazine-cover-settings,.magazine-interview-room,.magazine-toc,.magazine-reading-page { border-color:rgba(255,255,255,.09); background:rgba(255,255,255,.07); }.magazine-form-card input,.magazine-form-card textarea,.magazine-form-card select,.magazine-overview input,.magazine-overview textarea,.magazine-overview select,.magazine-cover-settings input,.magazine-cover-settings textarea,.magazine-interview-form textarea,.magazine-article-editor textarea { border-color:rgba(255,255,255,.1); background:rgba(0,0,0,.18); color:#eee; }.magazine-role-choice,.magazine-section-card aside button,.magazine-cover-actions label,.magazine-cover-actions button,.magazine-participant-chips span,.magazine-interview-turn { background:rgba(255,255,255,.09); color:#e1d7ce; }.magazine-role-choice:has(input:checked),.magazine-interview-roles button.is-active { border-color:#b98965; background:rgba(176,126,89,.2); }.magazine-interview-room > header,.magazine-interview-form,.magazine-toc li,.magazine-participant-manager { border-color:rgba(255,255,255,.08); }.magazine-cover-stage { background:#34312c; }.magazine-empty,.magazine-empty-small { border-color:rgba(255,255,255,.13); } }

/* 小组件库：现有组件使用桌面真实样式，库本身保持纯黑白界面。 */
.desktop-widget-library { color:#111; }
.desktop-widget-library-backdrop { background:rgba(0,0,0,.08); -webkit-backdrop-filter:blur(9px); backdrop-filter:blur(9px); }
.desktop-widget-library > section { border:0; background:rgba(246,246,244,.24); color:#111; box-shadow:0 -18px 55px rgba(0,0,0,.18); -webkit-backdrop-filter:blur(28px) saturate(125%); backdrop-filter:blur(28px) saturate(125%); }
.desktop-widget-library main { background:transparent; }
.desktop-widget-library header { border-bottom:0; }
.desktop-widget-library header span,
.desktop-widget-library header p,
.desktop-widget-library-label small,
.desktop-widget-option footer small { color:#666; }
.desktop-widget-library header > button { border:0; background:#fff; color:#111; }
.desktop-widget-library-tabs { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; margin:2px 0 16px; padding:4px; border-radius:14px; background:rgba(255,255,255,.38); }
.desktop-widget-library-tabs button { height:34px; border:0; border-radius:10px; background:transparent; color:#777; font:inherit; font-size:10px; font-weight:650; cursor:pointer; transition:background .16s ease,color .16s ease,box-shadow .16s ease; }
.desktop-widget-library-tabs button.is-active { background:#111; color:#fff; box-shadow:0 4px 11px rgba(0,0,0,.16); }
.desktop-widget-option { padding:0; border:0; border-radius:0; background:transparent; }
.desktop-widget-option.is-preview { background:transparent; }
.desktop-widget-option.is-preview { filter:grayscale(1); }
.desktop-widget-option.is-wide,.desktop-widget-option.is-photos { grid-column:1 / -1; }
.desktop-widget-option.is-tiny { grid-column:1 / -1; justify-self:center; width:calc(50% - 4.5px); }
.desktop-widget-option footer b,
.desktop-widget-library-label b { color:#111; }
.desktop-widget-option footer button { border:1px solid #111; background:#111; color:#fff; }
.desktop-widget-option footer button:disabled { border-color:#c9c9c9; background:#e5e5e5; color:#666; }
.desktop-widget-preview-card,
.desktop-widget-preview-card.preview-magazine,
.desktop-widget-preview-card.preview-inspiration,
.desktop-widget-preview-card.preview-today { border:0; border-radius:0; background:transparent !important; color:#111 !important; box-shadow:none; -webkit-backdrop-filter:none; backdrop-filter:none; }
.desktop-widget-preview-card span,
.desktop-widget-preview-card small,
.desktop-widget-preview-card p,
.desktop-widget-preview-card em,
.desktop-widget-preview-card.preview-calendar i { color:#666 !important; }
.desktop-widget-real-stage { width:100%; max-height:190px; overflow:hidden; background:transparent; pointer-events:none; }
.desktop-widget-real-stage-photos { max-height:none; }
.desktop-widget-real-stage-now { max-height:none; overflow:visible; }
.desktop-widget-real-stage-time-photo { max-height:none; overflow:visible; }
.desktop-widget-real-stage-frost-profile { max-height:none; overflow:visible; }
.desktop-widget-real-stage-habit-mini { display:grid; place-items:center; min-height:90px; overflow:visible; }
.desktop-widget-real-preview { width:100% !important; max-width:none !important; margin:0 !important; animation:none !important; transform:none !important; pointer-events:none !important; filter:drop-shadow(0 4px 8px rgba(0,0,0,.1)); }
.desktop-widget-real-preview.profile-card { padding:28px 12px !important; }
.desktop-widget-real-preview.todo-widget { aspect-ratio:1 !important; }
.desktop-widget-real-preview.image-widget { aspect-ratio:1 !important; }
.desktop-widget-real-preview.countdown-widget { aspect-ratio:1 !important; }
.desktop-widget-real-preview.elapsed-days-widget { aspect-ratio:1 !important; }
.desktop-widget-real-preview.contact-mini-widget,.desktop-widget-real-preview.daily-photo-widget,.desktop-widget-real-preview.relationship-mini-widget,.desktop-widget-real-preview.polaroid-mini-widget { aspect-ratio:1 !important; }
.desktop-widget-real-preview.shared-widget { min-height:170px !important; }
.desktop-widget-real-preview.chat-widget { min-height:170px !important; }
.desktop-widget-real-preview.now-playing-widget { min-height:170px !important; }
.desktop-widget-real-preview.time-photo-widget { min-height:190px !important; }
.desktop-widget-real-preview.frost-profile-widget { min-height:280px !important; }
.desktop-widget-real-preview.habit-mini-widget { width:72px !important; height:72px !important; aspect-ratio:1 !important; }
.desktop-widget-real-preview.search-wrap { margin:0 !important; }
.desktop-widget-real-preview.photo-group { margin:0 !important; }

/* 所有可换图区域共用第二页三张照片的默认灰色；有图片时仍由背景图覆盖。 */
.avatar,
.image-widget,
.shared-picture,
.chat-widget-avatar,
.now-playing-avatar,
.now-image,
.mood-profile-avatar,
.time-photo-avatar,
.frost-profile-cover,
.frost-profile-avatar,
.contact-mini-cover,
.contact-mini-avatar,
.daily-photo-image,
.daily-photo-avatar,
.relationship-mini-avatar,
.polaroid-mini-photo,
.time-photo-image,
.photo-card,
.date-calendar-image { background-color: var(--widget-placeholder-gray); }

/* 星月玻璃标本：不承载信息，只作为桌面氛围装饰。 */
.celestial-specimen-widget { position:relative; width:100%; min-height:180px; overflow:hidden; border:1px solid rgba(255,255,255,.76); border-radius:24px; background:radial-gradient(circle at 68% 42%,rgba(255,255,255,.56),transparent 29%),linear-gradient(135deg,rgba(255,255,255,.58),rgba(218,222,225,.32) 54%,rgba(255,255,255,.2)); color:#34363a; box-shadow:0 10px 28px rgba(39,43,50,.1),inset 0 1px 0 rgba(255,255,255,.78); -webkit-backdrop-filter:blur(24px) saturate(120%); backdrop-filter:blur(24px) saturate(120%); isolation:isolate; }
.celestial-specimen-widget::before { position:absolute; inset:0; z-index:-1; background-image:linear-gradient(rgba(40,44,50,.032) 1px,transparent 1px),linear-gradient(90deg,rgba(40,44,50,.026) 1px,transparent 1px); background-position:0 0; background-size:18px 18px; content:''; mask-image:linear-gradient(90deg,#000,transparent 78%); -webkit-mask-image:linear-gradient(90deg,#000,transparent 78%); animation:celestialGridDrift 24s linear infinite; }
.celestial-specimen-widget::after { position:absolute; top:-44px; right:-26px; width:174px; height:174px; border:1px solid rgba(55,59,66,.09); border-radius:50%; content:''; box-shadow:0 0 0 22px rgba(255,255,255,.06),0 0 0 23px rgba(55,59,66,.05); animation:celestialHaloBreath 8s ease-in-out infinite; }
.celestial-specimen-number { position:absolute; top:13px; left:15px; font:600 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.16em; opacity:.56; }
.celestial-specimen-copy { position:absolute; top:35px; left:15px; z-index:2; display:grid; gap:5px; width:112px; }
.celestial-specimen-copy small { font:600 6px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.17em; opacity:.52; }
.celestial-specimen-copy strong { font:italic 24px/.84 Georgia,'Times New Roman',serif; font-weight:400; letter-spacing:-.055em; }
.celestial-specimen-copy i { width:96px; margin-top:5px; padding-top:7px; border-top:1px solid rgba(52,54,58,.22); font:italic 7px/1.3 Georgia,'Times New Roman',serif; letter-spacing:.025em; opacity:.62; }
.celestial-specimen-orbit { position:absolute; top:18px; left:52%; z-index:1; width:126px; height:126px; transform:translateX(-26%) rotate(0deg); transform-origin:center; border:1px solid rgba(44,48,54,.18); border-radius:50%; animation:celestialOrbitTurn 26s linear infinite; }
.celestial-specimen-orbit::before,.celestial-specimen-orbit::after { position:absolute; top:50%; left:50%; border:1px solid rgba(44,48,54,.13); border-radius:50%; content:''; }
.celestial-specimen-orbit::before { width:145px; height:57px; transform:translate(-50%,-50%) rotate(-18deg); }
.celestial-specimen-orbit::after { width:92px; height:134px; transform:translate(-50%,-50%) rotate(38deg); }
.celestial-specimen-moon { position:absolute; top:50%; left:50%; z-index:2; width:72px; height:72px; transform:translate(-50%,-50%); overflow:hidden; border:1px solid rgba(255,255,255,.86); border-radius:50%; background:radial-gradient(circle at 34% 28%,rgba(255,255,255,.96) 0 5%,transparent 6%),radial-gradient(circle at 66% 68%,rgba(100,107,116,.12) 0 8%,transparent 9%),radial-gradient(circle at 39% 62%,rgba(96,103,112,.1) 0 6%,transparent 7%),linear-gradient(145deg,#f7f7f4,#cfd3d6); box-shadow:0 9px 25px rgba(54,60,68,.17),inset -12px -10px 18px rgba(65,72,82,.1),inset 7px 7px 12px rgba(255,255,255,.76); animation:celestialMoonFloat 6s ease-in-out infinite; }
.celestial-specimen-moon::before { position:absolute; top:15px; right:13px; width:13px; height:13px; border-radius:50%; background:rgba(96,103,112,.1); box-shadow:-25px 14px 0 -3px rgba(96,103,112,.1),-5px 32px 0 -4px rgba(96,103,112,.12); content:''; }
.celestial-specimen-moon i { position:absolute; inset:7px; border:1px solid rgba(255,255,255,.38); border-radius:50%; }
.celestial-specimen-moon b { position:absolute; right:-14px; bottom:-9px; width:54px; height:54px; border-radius:50%; background:rgba(117,124,133,.08); filter:blur(6px); }
.celestial-star { position:absolute; z-index:4; color:#474c54; font-style:normal; line-height:1; animation:celestialStarPulse 3.2s ease-in-out infinite; }
.celestial-star.is-one { top:4px; right:10px; font-size:12px; }
.celestial-star.is-two { right:-4px; bottom:32px; font-size:18px; animation-delay:-1.1s; }
.celestial-star.is-three { bottom:4px; left:14px; font-size:9px; animation-delay:-2.2s; }
.celestial-specimen-botanical { position:absolute; right:-2px; bottom:-18px; z-index:3; width:91px; height:151px; fill:none; stroke:rgba(53,57,62,.42); stroke-width:1.15; stroke-linecap:round; stroke-linejoin:round; transform:rotate(7deg); transform-origin:72% 100%; animation:celestialBotanicalSway 7s ease-in-out infinite; }
.celestial-specimen-film { position:absolute; right:58px; bottom:11px; z-index:4; display:flex; gap:4px; padding:5px 6px; border:1px solid rgba(255,255,255,.7); border-radius:5px; background:rgba(246,246,242,.44); box-shadow:0 5px 13px rgba(44,49,56,.09); transform:translateY(0) rotate(-7deg); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); animation:celestialFilmFloat 5.6s ease-in-out infinite; }
.celestial-specimen-film span { width:14px; height:18px; border-radius:2px; background:linear-gradient(145deg,rgba(74,79,86,.2),rgba(255,255,255,.5)); box-shadow:inset 0 0 0 1px rgba(46,50,56,.09); }
.celestial-specimen-film span:nth-child(2) { background:linear-gradient(145deg,rgba(255,255,255,.62),rgba(82,88,96,.2)); }
.celestial-specimen-seal { position:absolute; right:14px; top:12px; z-index:5; display:grid; place-items:center; width:25px; height:25px; border:1px solid rgba(53,57,62,.2); border-radius:50%; font:14px/1 Georgia,serif; transform:rotate(12deg); animation:celestialSealPulse 6.5s ease-in-out infinite; }
@keyframes celestialGridDrift { to { background-position:36px 18px; } }
@keyframes celestialHaloBreath { 0%,100% { opacity:.55; transform:scale(.96); } 50% { opacity:1; transform:scale(1.04); } }
@keyframes celestialOrbitTurn { to { transform:translateX(-26%) rotate(360deg); } }
@keyframes celestialMoonFloat { 0%,100% { transform:translate(-50%,-50%); } 50% { transform:translate(-50%,calc(-50% - 3px)); } }
@keyframes celestialStarPulse { 0%,100% { opacity:.32; transform:scale(.82); } 50% { opacity:.88; transform:scale(1.08); } }
@keyframes celestialBotanicalSway { 0%,100% { transform:rotate(5deg); } 50% { transform:rotate(10deg); } }
@keyframes celestialFilmFloat { 0%,100% { transform:translateY(0) rotate(-7deg); } 50% { transform:translateY(-4px) rotate(-4deg); } }
@keyframes celestialSealPulse { 0%,100% { opacity:.62; transform:rotate(12deg) scale(.96); } 50% { opacity:1; transform:rotate(5deg) scale(1.04); } }
@media (prefers-reduced-motion:reduce) { .celestial-specimen-widget::before,.celestial-specimen-widget::after,.celestial-specimen-orbit,.celestial-specimen-moon,.celestial-star,.celestial-specimen-botanical,.celestial-specimen-film,.celestial-specimen-seal { animation:none; } }
@media not all { .celestial-specimen-widget { border-color:rgba(255,255,255,.24); background:radial-gradient(circle at 68% 42%,rgba(255,255,255,.18),transparent 29%),linear-gradient(135deg,rgba(54,57,64,.7),rgba(27,29,34,.58)); color:#f0f0ef; box-shadow:0 12px 30px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.2); }.celestial-specimen-orbit,.celestial-specimen-orbit::before,.celestial-specimen-orbit::after { border-color:rgba(255,255,255,.2); }.celestial-star { color:#fff; }.celestial-specimen-botanical { stroke:rgba(255,255,255,.46); }.celestial-specimen-copy i { border-color:rgba(255,255,255,.25); }.celestial-specimen-seal { border-color:rgba(255,255,255,.28); } }

/* 雾雨玻璃窗 */
.mist-rain-window-widget { position:relative; width:100%; min-height:180px; overflow:hidden; border:1px solid rgba(255,255,255,.28); border-radius:24px; background:linear-gradient(155deg,rgba(36,44,58,.92),rgba(72,78,91,.72)); color:#f4f4f2; box-shadow:0 12px 30px rgba(23,29,39,.22),inset 0 1px 0 rgba(255,255,255,.2); isolation:isolate; }
.mist-rain-window-widget::before { position:absolute; inset:0; z-index:-1; background:linear-gradient(110deg,rgba(255,255,255,.12),transparent 34%,rgba(173,199,222,.08) 66%,transparent); content:''; animation:rainWindowHaze 9s ease-in-out infinite; }
.rain-glows i { position:absolute; border-radius:50%; filter:blur(13px); opacity:.76; animation:rainGlowPulse 6s ease-in-out infinite; }
.rain-glows i:nth-child(1) { right:55px; bottom:29px; width:50px; height:50px; background:#8bb5d0; }
.rain-glows i:nth-child(2) { right:118px; bottom:44px; width:38px; height:38px; background:#e7c27d; animation-delay:-2s; }
.rain-glows i:nth-child(3) { right:18px; bottom:67px; width:29px; height:29px; background:#d995a5; animation-delay:-4s; }
.rain-window-frame::before,.rain-window-frame::after { position:absolute; z-index:2; background:rgba(224,231,237,.2); content:''; box-shadow:0 0 0 1px rgba(0,0,0,.08); }
.rain-window-frame::before { top:0; bottom:0; left:48%; width:2px; }
.rain-window-frame::after { right:0; bottom:26px; left:0; height:2px; }
.rain-drops i { position:absolute; z-index:3; top:-25px; width:2px; height:21px; border-radius:50%; background:linear-gradient(transparent,rgba(255,255,255,.72)); opacity:0; animation:rainDropFall 4.8s linear infinite; }
.rain-drops i:nth-child(1) { left:9%; animation-delay:-1s; }.rain-drops i:nth-child(2) { left:21%; height:32px; animation-delay:-3.4s; }.rain-drops i:nth-child(3) { left:35%; animation-delay:-2.2s; }.rain-drops i:nth-child(4) { left:47%; height:28px; animation-delay:-4s; }.rain-drops i:nth-child(5) { left:61%; animation-delay:-.4s; }.rain-drops i:nth-child(6) { left:72%; height:35px; animation-delay:-2.8s; }.rain-drops i:nth-child(7) { left:84%; animation-delay:-1.8s; }.rain-drops i:nth-child(8) { left:94%; height:27px; animation-delay:-4.5s; }
.rain-caption { position:absolute; top:22px; left:17px; z-index:5; display:grid; gap:6px; text-shadow:0 2px 9px rgba(0,0,0,.28); }
.rain-caption small { font:600 7px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.18em; opacity:.58; }
.rain-caption strong { font:italic 25px/1 Georgia,'Times New Roman',serif; font-weight:400; letter-spacing:-.045em; }
.rain-curtain { position:absolute; top:-15px; right:-25px; z-index:4; width:92px; height:200px; border-left:1px solid rgba(255,255,255,.16); border-radius:52% 0 0 55%; background:linear-gradient(90deg,rgba(255,255,255,.03),rgba(255,255,255,.18)); box-shadow:-10px 0 30px rgba(255,255,255,.05); transform-origin:100% 0; animation:rainCurtainSway 8s ease-in-out infinite; }
@keyframes rainDropFall { 0% { opacity:0; transform:translateY(-20px); } 16% { opacity:.8; } 82% { opacity:.45; } 100% { opacity:0; transform:translateY(220px); } }
@keyframes rainWindowHaze { 0%,100% { opacity:.55; transform:translateX(-3%); } 50% { opacity:1; transform:translateX(4%); } }
@keyframes rainGlowPulse { 0%,100% { opacity:.45; transform:scale(.9); } 50% { opacity:.85; transform:scale(1.08); } }
@keyframes rainCurtainSway { 0%,100% { transform:rotate(0deg); } 50% { transform:rotate(-3deg); } }

@media (prefers-reduced-motion:reduce) { .mist-rain-window-widget::before,.rain-glows i,.rain-drops i,.rain-curtain { animation:none; } }

/* 磨砂个人名片：高版封面、压线大头像与可编辑个人文字。 */
.frost-profile-widget { position:relative; width:100%; min-height:280px; overflow:hidden; border:1px solid rgba(255,255,255,.48); border-radius:25px; background:rgba(205,210,214,.18); color:#303033; box-shadow:0 15px 34px rgba(31,34,39,.12),inset 0 1px 0 rgba(255,255,255,.52); cursor:pointer; isolation:isolate; -webkit-backdrop-filter:blur(34px) saturate(112%); backdrop-filter:blur(34px) saturate(112%); }
.frost-profile-widget::after { position:absolute; inset:0; z-index:4; border-radius:inherit; box-shadow:inset 0 0 0 1px rgba(255,255,255,.11); pointer-events:none; content:''; }
.frost-profile-cover { position:absolute; inset:0; z-index:1; display:grid; place-items:center; width:100%; height:100%; overflow:hidden; background:var(--widget-placeholder-gray) center/cover no-repeat; }
.frost-profile-cover.has-image { background-position:center; background-repeat:no-repeat; background-size:cover; }
.frost-profile-body { position:absolute; inset:140px 0 0; z-index:2; display:flex; align-items:center; flex-direction:column; padding:54px 20px 18px; border-top:1px solid rgba(255,255,255,.52); background:linear-gradient(145deg,rgba(255,255,255,.48),rgba(244,246,247,.32)); color:#303033; text-align:center; -webkit-backdrop-filter:blur(26px) saturate(98%); backdrop-filter:blur(26px) saturate(98%); }
.frost-profile-body::before { position:absolute; inset:0; background:repeating-linear-gradient(118deg,rgba(255,255,255,.035) 0 1px,rgba(74,82,89,.014) 1px 2px,transparent 2px 5px),linear-gradient(180deg,rgba(255,255,255,.09),transparent 48%); opacity:.72; pointer-events:none; content:''; }
.frost-profile-avatar { position:absolute; top:-53px; left:50%; z-index:3; width:106px; height:106px; overflow:hidden; border:0; border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; box-shadow:0 8px 22px rgba(26,29,34,.18),inset 0 1px 0 rgba(255,255,255,.54); transform:translateX(-50%); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
.frost-profile-body > strong { position:relative; z-index:1; display:block; max-width:100%; overflow:hidden; color:inherit; font-size:22px; font-weight:700; line-height:1.15; letter-spacing:-.025em; text-overflow:ellipsis; white-space:nowrap; }
.frost-profile-body > p { position:relative; z-index:1; display:flex; align-items:flex-start; justify-content:center; max-width:100%; gap:8px; margin-top:13px; color:rgba(48,48,52,.61); font-size:11px; line-height:1.55; }
.frost-profile-body > p span { display:-webkit-box; max-width:230px; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.frost-profile-body > p i { color:rgba(48,48,52,.46); font:700 19px/1 Georgia,serif; font-style:normal; }
@media not all { .frost-profile-widget { border-color:rgba(255,255,255,.3); background:rgba(222,225,228,.24); color:#303033; box-shadow:0 15px 35px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.28); }.frost-profile-body { border-color:rgba(255,255,255,.5); background:linear-gradient(145deg,rgba(255,255,255,.5),rgba(239,242,244,.34)); color:#303033; }.frost-profile-body > p { color:rgba(48,48,52,.64); }.frost-profile-body > p i { color:rgba(48,48,52,.44); } }

/* 与待办同尺寸的四款可编辑手机小组件。 */
.square-personal-widget { position:relative; width:100%; aspect-ratio:1; min-width:0; overflow:hidden; border:1px solid rgba(255,255,255,.72); border-radius:22px; background:rgba(255,255,255,.68); color:#303236; box-shadow:0 9px 24px rgba(33,38,44,.1),inset 0 1px 0 rgba(255,255,255,.78); cursor:pointer; isolation:isolate; -webkit-backdrop-filter:blur(25px) saturate(115%); backdrop-filter:blur(25px) saturate(115%); }
.square-personal-widget button { display:grid; place-items:center; border:1px solid rgba(255,255,255,.44); background:rgba(255,255,255,.28); color:inherit; font:inherit; cursor:pointer; -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); }

.contact-mini-cover { position:absolute; inset:0; z-index:-2; background:var(--widget-placeholder-gray) center/cover no-repeat; }
.contact-mini-widget:has(.contact-mini-cover.has-image)::before { position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg,rgba(20,23,28,.04),rgba(18,21,26,.68)); content:''; }
.contact-mini-avatar { position:absolute; top:14px; left:14px; width:58px; height:58px; border:3px solid rgba(255,255,255,.74); border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; background-clip:padding-box; box-shadow:0 5px 14px rgba(0,0,0,.18); }
.contact-mini-copy { position:absolute; right:12px; bottom:14px; left:14px; display:grid; gap:4px; color:#fff; text-shadow:0 2px 7px rgba(0,0,0,.32); }
.contact-mini-widget:not(:has(.contact-mini-cover.has-image)) .contact-mini-copy { color:#303236 !important; -webkit-text-fill-color:#303236 !important; text-shadow:none !important; }
.contact-mini-copy strong,.contact-mini-copy p { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.contact-mini-copy strong { font-size:13px; }.contact-mini-copy p { color:rgba(255,255,255,.76); font-size:8px; }.contact-mini-widget:not(:has(.contact-mini-cover.has-image)) .contact-mini-copy p { color:rgba(48,50,54,.72) !important; -webkit-text-fill-color:rgba(48,50,54,.72) !important; }
.contact-mini-actions { position:absolute; top:14px; right:12px; display:grid; gap:6px; }
.contact-mini-actions button { width:28px; height:28px; border-radius:50%; color:#fff; font-size:10px; text-shadow:0 1px 5px rgba(0,0,0,.3); }

.daily-photo-image { position:absolute; inset:0; z-index:-2; background:var(--widget-placeholder-gray) center/cover no-repeat; }
.daily-photo-image.has-image + .daily-photo-shade { position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg,rgba(16,18,22,.02) 35%,rgba(16,18,22,.7)); }
.daily-photo-avatar { position:absolute; top:12px; right:12px; width:34px; height:34px; border:2px solid rgba(255,255,255,.76); border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; background-clip:padding-box; box-shadow:0 4px 11px rgba(0,0,0,.16); }
.daily-photo-copy { position:absolute; right:14px; bottom:13px; left:14px; display:grid; gap:4px; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,.38); }
.daily-photo-widget:not(:has(.daily-photo-image.has-image)) .daily-photo-copy { color:#303236 !important; -webkit-text-fill-color:#303236 !important; text-shadow:none !important; }
.daily-photo-copy time { font:600 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.14em; opacity:.72; }
.daily-photo-copy p { display:-webkit-box; overflow:hidden; font-size:11px; font-weight:650; line-height:1.35; -webkit-box-orient:vertical; -webkit-line-clamp:2; }

.relationship-mini-widget { display:flex; align-items:center; justify-content:center; flex-direction:column; padding:16px 10px 11px; background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(241,239,243,.58)); }
.relationship-mini-avatars { display:flex; align-items:center; justify-content:center; }
.relationship-mini-avatar { width:45px; height:45px; border:2px solid rgba(255,255,255,.72); border-radius:50%; background:var(--widget-placeholder-gray) center/cover no-repeat; background-clip:padding-box; box-shadow:0 4px 12px rgba(34,39,45,.1); }
.relationship-mini-avatars span { display:grid; z-index:2; place-items:center; width:25px; height:25px; margin:0 -5px; border:1px solid rgba(255,255,255,.7); border-radius:50%; background:rgba(255,255,255,.54); color:#c98798; font-size:11px; }
.relationship-mini-names { display:flex; align-items:center; justify-content:center; width:100%; gap:4px; margin-top:7px; color:#68646a; font-size:7px; }
.relationship-mini-names span { max-width:42%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.relationship-mini-names i { opacity:.45; font-style:normal; }
.relationship-mini-widget > strong { margin-top:4px; font:italic 27px/.9 Georgia,'Times New Roman',serif; letter-spacing:-.05em; }
.relationship-mini-widget > small { margin-top:4px; color:#9b9197; font-size:6px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }
.relationship-mini-widget > button { position:absolute; right:9px; bottom:9px; width:24px; height:24px; border-radius:50%; font-size:10px; }

.habit-mini-widget { position:relative; display:grid; place-items:center; align-self:start; width:100%; aspect-ratio:1; min-width:0; padding:3px; overflow:visible; border:0; border-radius:0; background:transparent; color:#000; box-shadow:none; text-align:center; isolation:isolate; -webkit-backdrop-filter:none; backdrop-filter:none; }
.habit-mini-widget.auto-light { color:#fff !important; text-shadow:0 1px 5px rgba(0,0,0,.42); }
.habit-mini-widget.auto-dark { color:#000 !important; text-shadow:0 1px 4px rgba(255,255,255,.3); }
.habit-mini-progress { --habit-progress:0deg; position:relative; display:grid; place-items:center; width:58px; height:58px; border-radius:10px; color:inherit; }
.habit-mini-progress::before { position:absolute; inset:0; box-sizing:border-box; padding:4px; border-radius:10px; background:conic-gradient(currentColor var(--habit-progress),transparent 0); content:''; -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0); mask-composite:exclude; opacity:.95; }
.habit-mini-progress::after { position:absolute; inset:6px; border-radius:6px; background:#fff; box-shadow:0 2px 7px rgba(0,0,0,.12); content:''; }
.habit-mini-progress > div { position:relative; z-index:1; display:flex; align-items:baseline; justify-content:center; gap:2px; color:#000; text-shadow:none; }
.habit-mini-progress strong { font:700 20px/.9 Arial,sans-serif; letter-spacing:-.06em; }
.habit-mini-progress small { color:inherit; font-size:7px; font-weight:700; }
.habit-mini-check { position:absolute; top:3px; right:4px; color:inherit; font-size:9px; font-weight:800; opacity:0; transform:scale(.7); transition:opacity .2s ease,transform .2s ease; }
.habit-mini-status { position:absolute; right:0; bottom:4px; left:0; overflow:hidden; color:inherit; font:600 6px/1 ui-monospace,SFMono-Regular,Menlo,monospace; text-overflow:ellipsis; white-space:nowrap; opacity:.78; }
.habit-mini-bar { position:absolute; right:9px; bottom:0; left:9px; height:2px; overflow:hidden; background:currentColor; opacity:.24; }
.habit-mini-bar b { display:block; width:0; height:100%; background:currentColor; opacity:1; transition:width .3s ease; }
.habit-mini-widget.is-complete .habit-mini-check { opacity:1; transform:scale(1); }

.polaroid-mini-widget { padding:0; overflow:hidden; border:0; background:transparent; box-shadow:none; -webkit-backdrop-filter:none; backdrop-filter:none; }
.polaroid-mini-stack { position:absolute; inset:0; width:100%; height:100%; }
.polaroid-mini-photo { position:absolute; top:4%; left:50%; width:66%; height:auto; aspect-ratio:.78; border:7px solid rgba(249,248,244,.96); border-bottom-width:21px; border-radius:3px; background:var(--widget-placeholder-gray) center/cover no-repeat; box-shadow:0 7px 16px rgba(38,40,42,.2); transform-origin:center 80%; transition:transform .28s ease,z-index 0s .14s; }
.polaroid-mini-photo.is-one { z-index:1; transform:translateX(-61%) rotate(-9deg); }.polaroid-mini-photo.is-two { z-index:2; transform:translateX(-39%) rotate(8deg); }.polaroid-mini-photo.is-three { z-index:3; transform:translateX(-50%) rotate(0); }
.polaroid-mini-widget[data-active="1"] .is-one { z-index:3; transform:translateX(-50%) rotate(0); }.polaroid-mini-widget[data-active="1"] .is-two { z-index:1; transform:translateX(-61%) rotate(-9deg); }.polaroid-mini-widget[data-active="1"] .is-three { z-index:2; transform:translateX(-39%) rotate(8deg); }
.polaroid-mini-widget[data-active="2"] .is-one { z-index:2; transform:translateX(-39%) rotate(8deg); }.polaroid-mini-widget[data-active="2"] .is-two { z-index:3; transform:translateX(-50%) rotate(0); }.polaroid-mini-widget[data-active="2"] .is-three { z-index:1; transform:translateX(-61%) rotate(-9deg); }
.polaroid-mini-widget > p { position:absolute; right:40px; bottom:-1px; left:25px; z-index:5; overflow:hidden; color:#77736d; font:italic 8px/1.2 Georgia,'Times New Roman',serif; text-align:center; text-overflow:ellipsis; white-space:nowrap; }
.polaroid-mini-widget > button { position:absolute; right:7px; bottom:6px; z-index:6; width:25px; height:25px; border-color:rgba(255,255,255,.82); border-radius:50%; background:rgba(250,249,246,.86); color:#68645f; box-shadow:0 3px 9px rgba(0,0,0,.12); font-size:12px; }

@media not all { .square-personal-widget { border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.68); color:#303236; box-shadow:0 9px 24px rgba(33,38,44,.1),inset 0 1px 0 rgba(255,255,255,.78); }.relationship-mini-widget { background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(241,239,243,.58)); }.relationship-mini-names { color:#68646a; }.relationship-mini-widget > small { color:#9b9197; }.square-personal-widget button { border-color:rgba(255,255,255,.62); background:rgba(255,255,255,.48); }.polaroid-mini-widget { border:0; background:transparent; box-shadow:none; }.polaroid-mini-widget > p { color:#77736d; }.polaroid-mini-widget > button { border-color:rgba(255,255,255,.72); background:rgba(250,249,246,.88); color:#68645f; } }
@media (prefers-reduced-motion:reduce) { .polaroid-mini-photo { transition:none; } }

/* 小组件库保持固定高度，分类切换只改变内部滚动内容。 */
.desktop-widget-library > section { display:flex; flex-direction:column; height:min(84vh,760px); max-height:none; }
.desktop-widget-library header { flex:0 0 auto; }
.desktop-widget-library main { flex:1 1 auto; min-height:0; max-height:none; }
@media (max-width:390px) { .desktop-widget-library > section { height:88vh; max-height:none; }.desktop-widget-library main { max-height:none; } }

/* 分类栏与库标题固定，只有小组件列表滚动。 */
.desktop-widget-library > section > .desktop-widget-library-tabs { flex:0 0 auto; margin:0; padding:10px 15px; border-bottom:1px solid rgba(0,0,0,.07); border-radius:0; background:rgba(248,248,246,.72); -webkit-backdrop-filter:blur(20px) saturate(125%); backdrop-filter:blur(20px) saturate(125%); }

@media not all { .habit-mini-widget:not(.auto-dark) { color:#fff; } }
@media (prefers-reduced-motion:reduce) { .habit-mini-check,.habit-mini-bar b { transition:none; } }

/* 所有 App 页面统一使用更紧凑的顶栏。保留安全区，但压缩额外留白。 */
.beauty-head,
.worldbook-header,
.calendar-app-header,
.chat-app:not(.is-chatting) .chat-header,
.settings-header,
.forum-header,
.couple-header:not(.is-subpage),
.music-header,
.shopping-header,
.ifspace-header,
.memory-header,
.chat-settings-page > header
{
  box-sizing:border-box;
  min-height:0 !important;
  padding-top:max(10px,env(safe-area-inset-top)) !important;
  padding-bottom:8px !important;
}

.beauty-head h1,
.worldbook-header h1,
.calendar-app-header h1,
.chat-app:not(.is-chatting) .chat-header h1,
.settings-header h1,
.forum-header h1,
.couple-header:not(.is-subpage) h1,
.music-header h1,
.shopping-header h1,
.ifspace-header h1,
.memory-header h1,
.chat-settings-page > header h1
{
  margin-top:2px !important;
  font-size:20px !important;
  line-height:1.15;
}

.beauty-head p,
.worldbook-header p,
.settings-header p,
.forum-header p,
.couple-header p,
.ifspace-header p,
.memory-header p
{
  margin-top:2px !important;
  font-size:9px !important;
  line-height:1.25;
}

.worldbook-kicker,
.settings-kicker,
.chat-kicker,
.calendar-app-header span,
.forum-header span,
.couple-header span,
.music-header span,
.shopping-header span,
.ifspace-header span,
.memory-header span
{
  font-size:8px !important;
}

/* 含返回按钮的二级页面顶栏。 */
.chat-app.is-chatting .chat-header,
.chat-reading-header,
.debate-header,
.fanfic-header,
.magazine-header,
.couple-header.is-subpage,
.ta-role-app-header,
.ta-role-conversation-header,
.ifspace-create > header,
.ifspace-detail > header,
.memory-subheader,
.music-full-lyrics-header {
  box-sizing:border-box;
  min-height:52px !important;
  padding-top:max(8px,env(safe-area-inset-top)) !important;
  padding-bottom:7px !important;
}

.debate-header h1,
.fanfic-header h1,
.magazine-header h1,
.couple-header.is-subpage h1,
.ta-role-app-header h1,
.ifspace-create h1,
.ifspace-detail h1,
.memory-subheader h1,
.chat-reading-header h1 {
  margin-top:1px !important;
  font-size:17px !important;
  line-height:1.15;
}

.debate-header p,
.fanfic-header p,
.magazine-header p {
  margin-top:2px !important;
  font-size:8px !important;
  line-height:1.2;
}

.debate-header button,
.fanfic-header button,
.magazine-header button,
.chat-top-back,
.chat-top-settings,
.chat-reading-header > button,
.couple-header button,
.ta-role-app-header > button,
.ta-role-conversation-header > button,
.ifspace-create header > button,
.ifspace-detail header > button,
.memory-header > button,
.memory-subheader > button {
  width:29px !important;
  height:29px !important;
}

/* 豆包原顶栏使用 128px 固定高度，单独收紧。 */
.doubao-header {
  flex-basis:72px !important;
  min-height:72px !important;
  padding:max(8px,env(safe-area-inset-top)) 8px 6px !important;
}
.doubao-app .doubao-chat-title,
.ta-role-doubao-page .doubao-chat-title { top:calc(50% + 12px) !important; display:flex; align-items:center; justify-content:center; width:auto !important; height:34px !important; min-height:34px; line-height:34px; transform:translateY(-50%); }
.doubao-chat-title p,
.ta-role-doubao-page .doubao-chat-title p { display:block; box-sizing:border-box; height:34px; margin:0 !important; padding:0; font-size:13px !important; line-height:34px !important; }
.doubao-menu-button { flex-basis:36px !important; width:36px !important; height:36px !important; }
.doubao-menu-button svg { width:27px !important; height:27px !important; }
.doubao-header-tools { gap:7px !important; }
.doubao-header-tools button { width:34px !important; height:34px !important; }
.doubao-header-tools svg { width:24px !important; height:24px !important; }

/* Ta 手机主页由状态栏和账户栏两段组成，两段一起压缩。 */
.ta-phone-status { padding:max(7px,env(safe-area-inset-top)) 20px 0 !important; font-size:10px !important; }
.ta-phone-head { padding:7px 18px 6px !important; }
.ta-phone-head > button:first-child > i { flex-basis:34px !important; width:34px !important; height:34px !important; border-radius:11px !important; }
.ta-phone-head b { font-size:13px !important; }
.ta-phone-head small { font-size:9px !important; }
.ta-head-actions button { width:29px !important; height:29px !important; }
.ta-role-app-header > i,
.ta-role-conversation-header > i { width:34px !important; height:34px !important; border-radius:11px !important; }

/* 全屏线下聊天的顶部操作栏。 */
.chat-offline-topbar { padding:max(8px,env(safe-area-inset-top)) 16px 5px !important; }
.chat-offline-topbar h2 { font-size:16px !important; }

/* 美化、设置、聊天设置和记忆库与世界书采用完全一致的顶栏高度。 */
.beauty-head,
.settings-header,
.chat-settings-page > header,
.memory-header {
  align-items:flex-start !important;
  min-height:calc(max(10px,env(safe-area-inset-top)) + 56px) !important;
  padding-top:max(10px,env(safe-area-inset-top)) !important;
  padding-bottom:8px !important;
}
.beauty-head { flex:0 0 auto !important; }
.beauty-head > div,
.settings-header > div {
  display:grid;
  min-width:0;
  gap:0;
}
.beauty-kicker,
.settings-kicker {
  display:none !important;
}
.beauty-title,
.settings-header h1 {
  margin:0 !important;
  font-size:21px !important;
  line-height:1.2;
  white-space:nowrap;
}
.beauty-subtitle,
.settings-header p {
  margin-top:4px !important;
  overflow:hidden;
  font-size:11px !important;
  line-height:1.3;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.beauty-close,
.settings-close {
  flex:0 0 31px;
  width:31px !important;
  height:31px !important;
}
.chat-settings-page > header > button,
.chat-settings-page > header > h1 {
  transform:none;
}
.chat-settings-page > header {
  align-items:center !important;
}

/* 美化 App 与设置 App 使用相同的浅灰页面底色。 */
@media all {
  .beauty-sheet {
    background-color:#f7f7f8 !important;
  }
  .beauty-head,
  .beauty-footer {
    background-color:rgba(247,247,248,.9) !important;
  }
}

/* 编辑特殊消息时复用发送定位、发送转账的原始面板。 */
#chatMessageEditor.is-open {
  position:fixed;
  inset:0;
  z-index:86;
}
#chatMessageEditor .chat-message-special-editor {
  position:fixed;
  top:50%;
  left:50%;
  z-index:1;
  width:min(340px,calc(100vw - 44px));
  transform:translate(-50%,-50%);
}

/* 收款/退回回执与主动转账卡片明确区分。 */
.chat-message .chat-bubble.transfer.is-transfer-receipt,
.chat-message.is-user .chat-bubble.transfer.is-transfer-receipt {
  border-color:#b8b8ba;
  background:#d7d7da;
  color:#606064;
  box-shadow:none;
  filter:none;
  opacity:.92;
}
.chat-message .chat-bubble.transfer.is-transfer-receipt .chat-transfer-message > strong,
.chat-message .chat-bubble.transfer.is-transfer-receipt .chat-transfer-message > p,
.chat-message .chat-bubble.transfer.is-transfer-receipt .chat-transfer-message > small {
  color:#6f6f73;
  border-color:rgba(0,0,0,.12);
}

/* 具体聊天：长气泡可延伸到对方气泡的起始边界。 */
.chat-app.is-chatting .chat-messages > .chat-message:not(:has(.chat-recalled)):not(:has(.chat-bubble.tap)) {
  width:100%;
  max-width:100%;
}
.chat-app.is-chatting .chat-messages > .chat-message:not(:has(.chat-recalled)):not(:has(.chat-bubble.tap)) > .chat-message-line {
  width:100%;
  max-width:100%;
}
.chat-app.is-chatting .chat-messages > .chat-message .chat-bubble:not(.image):not(.image-desc):not(.transfer):not(.location):not(.voice):not(.tap):not(:has(.chat-recalled)) {
  box-sizing:border-box;
  max-width:calc(100% - 92px);
}

/* 豆包消息操作与右滑引用。 */
.doubao-message[data-doubao-message-id] { position:relative; touch-action:pan-y; }
.doubao-message-quote { display:grid; gap:3px; margin-bottom:9px; padding:8px 10px; border-left:3px solid #8cb9e8; border-radius:7px; background:rgba(86,175,232,.1); color:#6d7885; }
.doubao-message-quote small { color:#6aa2d2; font-size:10px; font-weight:700; }
.doubao-message-quote span { overflow:hidden; max-width:100%; font-size:11px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.doubao-message-action-menu { display:flex; gap:6px; align-items:center; position:absolute; right:12px; bottom:-42px; z-index:4; padding:5px; border:1px solid #e1e1e1; border-radius:11px; background:#fff; box-shadow:0 8px 22px rgba(0,0,0,.13); }
.doubao-message.is-user .doubao-message-action-menu { right:auto; left:12px; }
.doubao-message-action-menu button { min-width:48px; padding:6px 9px; border:0; border-radius:7px; background:transparent; color:#333; font:inherit; font-size:11px; cursor:pointer; }
.doubao-message-action-menu button:hover { background:#f1f5f9; }
.doubao-message-action-menu button:last-child { color:#e05252; }
.doubao-composer-fields { display:flex; flex:1; min-width:0; flex-direction:column; }
.doubao-quote-preview { display:flex; align-items:center; gap:8px; min-width:0; padding:8px 0 0; color:#6d7885; }
.doubao-quote-preview span { display:grid; min-width:0; gap:2px; overflow:hidden; font-size:10px; line-height:1.3; }
.doubao-quote-preview b { color:#6aa2d2; font-size:10px; }
.doubao-quote-preview span br { display:none; }
.doubao-quote-preview button { flex:0 0 22px; width:22px; height:22px; color:#999; font-size:17px; }
.doubao-page.is-selecting .doubao-quick-wrap,
.doubao-page.is-selecting .doubao-composer { display:none; }
.doubao-selection-header { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-right:14px !important; padding-left:14px !important; }
.doubao-selection-header > button:first-child { flex:0 0 auto; width:auto; height:34px; padding:0 8px; border:0; background:transparent; color:#333; font:inherit; font-size:13px; cursor:pointer; }
.doubao-selection-header > div { display:grid; flex:1; gap:2px; min-width:0; text-align:center; }
.doubao-selection-header > div b { color:#111; font-size:14px; }
.doubao-selection-header > div small { color:#999; font-size:10px; }
.doubao-selection-header nav { display:flex; flex:0 0 auto; align-items:center; gap:4px; }
.doubao-selection-header nav button { min-width:38px; height:32px; padding:0 5px; border:0; border-radius:8px; background:transparent; color:#222; font:inherit; font-size:11px; cursor:pointer; }
.doubao-selection-header nav button[data-doubao-recall-selected] { color:#527fa9; }
.doubao-selection-header nav button[data-doubao-delete-selected] { color:#dc5555; }
.doubao-selection-header nav button:disabled { color:#bdbdbd; cursor:not-allowed; opacity:.65; }
.doubao-answer-actions .doubao-reroll-button:disabled { cursor:wait; opacity:.5; }
.doubao-answer-actions .doubao-reroll-button.is-rerolling svg { animation:doubaoRerollSpin .9s linear infinite; }
.doubao-message[data-doubao-round-select] { cursor:pointer; }
.doubao-message.is-round-selected { outline:2px solid rgba(86,175,232,.56); outline-offset:5px; }
.doubao-round-check { position:absolute; top:9px; display:grid; place-items:center; width:19px; height:19px; border:1px solid #b7b7b7; border-radius:50%; background:#fff; color:#fff; font-size:12px; font-weight:700; line-height:1; }
.doubao-message.is-assistant .doubao-round-check { left:-29px; }
.doubao-message.is-user .doubao-round-check { right:-29px; }
.doubao-message.is-round-selected .doubao-round-check { border-color:#56afe8; background:#56afe8; }
.doubao-message.is-recalled { width:auto !important; max-width:none !important; justify-self:center; color:#999; }
.doubao-message.is-recalled p { padding:7px 12px; border-radius:999px; background:#f1f1f1; font-size:11px; }

/* 豆包用户消息：按参考图使用亮蓝色圆角气泡。 */
.doubao-message.is-user {
  width:fit-content !important;
  min-width:0 !important;
  max-width:85vw !important;
  min-height:0 !important;
  padding:14px 24px !important;
  transform:none !important;
  border-radius:17px !important;
  background:#0798f5 !important;
  color:#fff !important;
  box-shadow:none !important;
  text-align:left !important;
}
.doubao-message.is-user p {
  margin:0 !important;
  color:#fff !important;
  font-size:18px !important;
  line-height:1.4 !important;
  text-align:left !important;
}
.doubao-edit-layer { position:absolute; inset:0; z-index:20; display:grid; place-items:center; padding:20px; }
.doubao-edit-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.3); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.doubao-edit-card { position:relative; z-index:1; display:grid; gap:14px; width:min(420px,100%); padding:17px; border-radius:18px; background:#fff; box-shadow:0 18px 50px rgba(0,0,0,.2); }
.doubao-edit-card header,.doubao-edit-card footer { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.doubao-edit-card header b { font-size:15px; }
.doubao-edit-card header button { width:28px; height:28px; border:0; border-radius:50%; background:#f1f1f1; color:#666; font-size:18px; cursor:pointer; }
.doubao-edit-card textarea { box-sizing:border-box; width:100%; min-height:118px; padding:12px; border:1px solid #dcdcdc; border-radius:12px; outline:0; background:#fafafa; color:#111; font:inherit; font-size:14px; line-height:1.55; resize:vertical; }
.doubao-edit-card textarea:focus { border-color:#56afe8; box-shadow:0 0 0 3px rgba(86,175,232,.14); }
.doubao-edit-card footer { justify-content:flex-end; }
.doubao-edit-card footer button { min-width:70px; height:36px; border:0; border-radius:10px; background:#f1f1f1; color:#444; font:inherit; cursor:pointer; }
.doubao-edit-card footer button:last-child { background:#56afe8; color:#fff; }
@media not all {
  .doubao-message-quote { border-color:#6aa2d2; background:rgba(106,162,210,.14); color:#c4d1df; }
  .doubao-message-quote small,.doubao-quote-preview b { color:#9ac9ef; }
  .doubao-message-action-menu { border-color:#444; background:#252525; box-shadow:0 8px 22px rgba(0,0,0,.35); }
  .doubao-message-action-menu button { color:#eee; }
  .doubao-message-action-menu button:hover { background:#353535; }
  .doubao-quote-preview { color:#c4d1df; }
  .doubao-selection-header > button:first-child,.doubao-selection-header > div b,.doubao-selection-header nav button { color:#eee; }
  .doubao-selection-header > div small { color:#999; }
  .doubao-selection-header nav button[data-doubao-recall-selected] { color:#9ac9ef; }
  .doubao-selection-header nav button[data-doubao-delete-selected] { color:#f18484; }
  .doubao-round-check { border-color:#666; background:#252525; }
  .doubao-message.is-round-selected { outline-color:rgba(106,162,210,.8); }
  .doubao-message.is-recalled p { background:#353535; }
  .doubao-edit-card { background:#242424; color:#f4f4f4; }
  .doubao-edit-card header button,.doubao-edit-card footer button { background:#373737; color:#ddd; }
  .doubao-edit-card textarea { border-color:#4b4b4b; background:#303030; color:#fff; }
  .doubao-edit-card footer button:last-child { background:#56afe8; color:#fff; }
}

/* 本地相册：统一收集各 App 选择上传的图片。 */
.album-launcher-icon { overflow:hidden; background:linear-gradient(145deg,#f3f3f0,#d6dcdd) !important; box-shadow:inset 0 1px 0 rgba(255,255,255,.84),0 4px 12px rgba(35,43,48,.12) !important; }
.album-launcher-icon svg { width:100%; height:100%; }
.album-launcher-icon > .app-custom-image { position:absolute !important; inset:0 !important; z-index:3 !important; display:block !important; width:100% !important; height:100% !important; border-radius:inherit; object-fit:cover !important; filter:none !important; opacity:1 !important; visibility:visible !important; mix-blend-mode:normal !important; }
.album-launcher-bg { fill:#fafaf7; stroke:#30383b; stroke-width:1.5; }
.album-launcher-sun { fill:#aebabc; }
.album-launcher-line { fill:none; stroke:#30383b; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.album-app { --album-ink:#171918; --album-muted:#777c79; --album-line:rgba(28,34,31,.11); position:fixed; inset:0; z-index:82; display:none; overflow:hidden; background:#f3f4f1; color:var(--album-ink); font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; }
.album-app.is-open { display:block; }
.album-picker-sheet { position:fixed; inset:0; z-index:84; display:flex; align-items:flex-end; justify-content:center; pointer-events:none; }
.album-picker-sheet.is-open { pointer-events:auto; }
.album-picker-backdrop { position:absolute; inset:0; border:0; background:rgba(0,0,0,.28); opacity:0; transition:opacity .22s ease; }
.album-picker-sheet.is-open .album-picker-backdrop { opacity:1; }
.album-picker-panel { position:relative; width:min(100%,560px); max-height:min(72vh,620px); overflow:hidden; border:1px solid rgba(255,255,255,.82); border-bottom:0; border-radius:28px 28px 0 0; background:rgba(246,247,244,.98); box-shadow:0 -18px 55px rgba(0,0,0,.2); transform:translateY(100%); transition:transform .28s cubic-bezier(.22,.8,.24,1); }
.album-picker-sheet.is-open .album-picker-panel { transform:translateY(0); }
.album-picker-panel > header { display:flex; align-items:center; justify-content:space-between; padding:18px 20px 10px; border-bottom:1px solid rgba(28,34,31,.1); }
.album-picker-panel > header span { color:#929895; font-size:8px; font-weight:750; letter-spacing:.18em; }
.album-picker-panel > header h2 { margin-top:4px; color:#171918; font-size:21px; font-weight:680; }
.album-picker-panel > header button { width:32px; height:32px; border:1px solid rgba(0,0,0,.08); border-radius:50%; background:rgba(255,255,255,.72); color:#363b38; font-size:21px; line-height:1; cursor:pointer; }
.album-picker-hint { margin:13px 20px 0; color:#777c79; font-size:11px; }
.album-picker-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; max-height:calc(min(72vh,620px) - 102px); padding:14px 20px max(22px,env(safe-area-inset-bottom)); overflow:auto; }
.album-picker-photo { min-width:0; padding:0; border:0; background:transparent; color:#333; font:inherit; text-align:left; cursor:pointer; }
.album-picker-photo > span { display:block; aspect-ratio:1; overflow:hidden; border-radius:16px; background:#dfe3e0; box-shadow:0 5px 14px rgba(25,33,30,.09); }
.album-picker-photo img { display:block; width:100%; height:100%; object-fit:cover; }
.album-picker-multi-panel .album-picker-photo { position:relative; border-radius:16px; outline:2px solid transparent; outline-offset:2px; transition:outline-color .16s ease, transform .16s ease; }
.album-picker-multi-panel .album-picker-photo.is-selected { outline-color:#222624; transform:translateY(-1px); }
.album-picker-multi-panel .album-picker-photo > span { position:relative; }
.album-picker-multi-panel .album-picker-photo > span::after { position:absolute; inset:0; display:block; border:3px solid transparent; border-radius:16px; content:''; pointer-events:none; }
.album-picker-multi-panel .album-picker-photo.is-selected > span::after { border-color:rgba(255,255,255,.9); }
.album-picker-multi-panel .album-picker-photo > span > i { position:absolute; top:7px; right:7px; display:grid; place-items:center; width:24px; height:24px; border:2px solid #fff; border-radius:50%; background:#222624; color:#fff; font-size:11px; font-style:normal; font-weight:700; line-height:1; box-shadow:0 2px 7px rgba(0,0,0,.25); }
.album-picker-multi-panel { display:flex; flex-direction:column; }
.album-picker-multi-panel > .album-picker-grid { flex:1 1 auto; min-height:0; max-height:none; }
.album-picker-multi-panel > footer { display:flex; flex:0 0 auto; gap:8px; padding:10px 20px max(16px,env(safe-area-inset-bottom)); border-top:1px solid rgba(28,34,31,.1); background:rgba(246,247,244,.98); }
.album-picker-multi-panel > footer button { flex:1; min-height:38px; padding:0 12px; border:1px solid rgba(0,0,0,.1); border-radius:11px; background:#fff; color:#555; font:inherit; font-size:11px; cursor:pointer; }
.album-picker-multi-panel > footer button.is-primary { border-color:#222624; background:#222624; color:#fff; }
.album-picker-multi-panel > footer button:disabled { opacity:.42; cursor:not-allowed; }
.album-picker-photo b,.album-picker-photo small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.album-picker-photo b { margin:7px 2px 0; font-size:11px; font-weight:650; }
.album-picker-photo small { margin:3px 2px 0; color:#8b918e; font-size:9px; }
.album-picker-empty { grid-column:1/-1; display:flex; min-height:180px; align-items:center; justify-content:center; flex-direction:column; gap:8px; color:#777c79; font-size:11px; text-align:center; }
.album-picker-empty b { color:#333; font-size:15px; }
.album-picker-empty button { margin-top:6px; padding:9px 13px; border:0; border-radius:11px; background:#222624; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.album-page { display:flex; flex-direction:column; width:100%; height:100%; background:radial-gradient(circle at 88% 2%,rgba(202,210,208,.58),transparent 27%),#f3f4f1; }
.album-header { box-sizing:border-box; position:relative; display:grid; grid-template-columns:44px minmax(0,1fr) auto; flex:0 0 auto; align-items:center; min-height:78px; padding:max(20px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left)); border-bottom:1px solid var(--album-line); background:rgba(246,247,244,.78); -webkit-backdrop-filter:blur(26px) saturate(140%); backdrop-filter:blur(26px) saturate(140%); }
.album-header-actions { display:flex; align-items:center; justify-content:flex-end; gap:7px; }
.album-host-settings-button { display:grid; place-items:center; width:34px; height:34px; padding:0; border:1px solid rgba(0,0,0,.08); border-radius:11px; background:rgba(255,255,255,.62); color:#6f7672; font-size:16px; cursor:pointer; }
.album-header > button { display:grid; place-items:center; width:38px; height:38px; padding:0; border:1px solid rgba(0,0,0,.06); border-radius:50%; background:rgba(255,255,255,.62); color:#282b29; font:inherit; font-size:29px; line-height:1; cursor:pointer; }
.album-header > div { min-width:0; text-align:left; }
.album-header > div:nth-child(2) { position:static; width:auto; max-width:none; transform:none; pointer-events:auto; }
.album-header > div span { display:block; color:#929895; font-size:8px; font-weight:750; letter-spacing:.18em; }
.album-header h1 { margin:0; color:var(--album-ink); font-size:28px; font-weight:720; line-height:1.05; letter-spacing:-.05em; }
.album-import { position:relative; display:grid; place-items:center; justify-self:end; box-sizing:border-box; width:76px; height:36px; padding:0 10px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:#222624; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.album-import.is-busy { opacity:.58; cursor:wait; }
.album-import input,.album-empty label input { position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; pointer-events:none; }
.album-select-button,.album-delete-selected-button,.album-picker-cancel { box-sizing:border-box; height:36px; padding:0 12px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:rgba(255,255,255,.72); color:#363b38; font:inherit; font-size:11px; cursor:pointer; }
.album-select-button { width:76px; }
.album-select-button.is-active { border-color:#242826; background:#242826; color:#fff; }
.album-delete-selected-button { color:#a33d3d; }
.album-delete-selected-button:disabled { opacity:.48; cursor:not-allowed; }
.album-hero { box-sizing:border-box; display:flex; flex:0 0 auto; align-items:center; justify-content:space-between; width:min(calc(100% - 32px),760px); min-height:105px; margin:16px auto 12px; padding:17px 20px; overflow:hidden; border:1px solid rgba(255,255,255,.8); border-radius:25px; background:linear-gradient(128deg,rgba(255,255,255,.75),rgba(214,221,219,.6)); box-shadow:0 14px 34px rgba(34,44,40,.09),inset 0 1px 0 #fff; }
.album-hero > div:first-child { display:grid; grid-template-columns:auto auto; align-items:end; gap:0 7px; }
.album-hero small { grid-column:1/-1; margin-bottom:2px; color:var(--album-muted); font-size:9px; font-weight:650; letter-spacing:.08em; }
.album-hero strong { color:#202422; font-size:34px; font-weight:620; line-height:1; letter-spacing:-.07em; }
.album-hero span { padding-bottom:3px; color:var(--album-muted); font-size:10px; }
.album-hero-mark { position:relative; width:90px; height:66px; }
.album-hero-mark i { position:absolute; display:block; width:48px; height:58px; overflow:hidden; border:3px solid rgba(255,255,255,.9); border-radius:12px; background:linear-gradient(145deg,#b5c3bf,#737f7c); box-shadow:0 8px 18px rgba(25,33,30,.14); }
.album-hero-mark i::after { position:absolute; right:7px; bottom:7px; left:7px; height:24px; background:linear-gradient(135deg,transparent 38%,rgba(255,255,255,.68) 39% 63%,transparent 64%),linear-gradient(45deg,rgba(255,255,255,.48) 48%,transparent 49%); clip-path:polygon(0 100%,33% 34%,53% 70%,72% 43%,100% 100%); content:''; }
.album-hero-mark i:nth-child(1) { right:33px; transform:rotate(-12deg); }
.album-hero-mark i:nth-child(2) { right:15px; transform:rotate(4deg); background:linear-gradient(145deg,#d1d7d5,#949e9b); }
.album-hero-mark i:nth-child(3) { right:0; transform:rotate(15deg); background:linear-gradient(145deg,#929d99,#505957); }
.album-privacy-note { box-sizing:border-box; width:min(calc(100% - 40px),740px); margin:0 auto 12px; padding:9px 12px; border:1px solid rgba(60,60,60,.13); border-radius:11px; background:rgba(232,232,230,.78); color:#666; font-size:10px; line-height:1.5; text-align:center; }
.album-search { box-sizing:border-box; display:flex; flex:0 0 auto; align-items:center; gap:8px; width:min(calc(100% - 32px),760px); height:42px; margin:0 auto 12px; padding:0 12px; border:1px solid var(--album-line); border-radius:15px; background:rgba(255,255,255,.67); box-shadow:inset 0 1px 0 rgba(255,255,255,.8); }
.album-search svg { flex:0 0 17px; width:17px; height:17px; fill:none; stroke:#7d837f; stroke-width:2; stroke-linecap:round; }
.album-search input { flex:1; min-width:0; height:100%; padding:0; border:0; outline:0; background:transparent; color:var(--album-ink); font:inherit; font-size:12px; }
.album-search input::placeholder { color:#a0a5a2; }
.album-search button { display:grid; place-items:center; flex:0 0 23px; width:23px; height:23px; padding:0; border:0; border-radius:50%; background:#dfe3e1; color:#666c68; font:inherit; font-size:15px; cursor:pointer; }
.album-search button[hidden] { display:none; }
.album-main { flex:1; min-height:0; overflow-x:hidden; overflow-y:auto; padding:0 max(14px,env(safe-area-inset-right)) 24px max(14px,env(safe-area-inset-left)); scrollbar-width:none; }
.album-main::-webkit-scrollbar { display:none; }
.album-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; width:min(100%,800px); margin:0 auto; }
.album-photo { min-width:0; padding:0; overflow:hidden; border:0; border-radius:14px; outline:0; background:#e1e5e2; color:var(--album-ink); text-align:left; cursor:pointer; }
.album-photo:focus-visible { box-shadow:0 0 0 3px rgba(53,67,61,.28); }
.album-photo.is-selected { box-shadow:inset 0 0 0 3px #242826; }
.album-photo-image { position:relative; display:block; aspect-ratio:1/1; overflow:hidden; background:linear-gradient(145deg,#e0e4e1,#c8cecb); }
.album-photo-image::after { position:absolute; inset:0; border:1px solid rgba(255,255,255,.3); border-radius:inherit; pointer-events:none; content:''; }
.album-photo-image img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .22s ease; }
.album-photo:hover .album-photo-image img { transform:scale(1.035); }
.album-photo-check { position:absolute; top:8px; right:8px; display:grid; place-items:center; box-sizing:border-box; width:22px; height:22px; border:2px solid rgba(255,255,255,.94); border-radius:50%; background:rgba(25,29,27,.32); color:#fff; font-size:13px; font-weight:800; line-height:1; text-shadow:0 1px 2px rgba(0,0,0,.3); }
.album-photo.is-selected .album-photo-check { border-color:#242826; background:#242826; text-shadow:none; }
.album-photo-meta { display:none; }
.album-empty { display:grid; place-items:center; align-content:center; min-height:42vh; color:var(--album-muted); text-align:center; }
.album-empty > div { display:grid; place-items:center; width:64px; height:64px; margin-bottom:14px; border:1px solid var(--album-line); border-radius:22px; background:rgba(255,255,255,.6); color:#8e9692; font-size:29px; }
.album-empty h2 { margin:0; color:#3d433f; font-size:18px; }
.album-empty p { max-width:260px; margin:7px 0 0; font-size:11px; line-height:1.6; }
.album-empty label { position:relative; display:grid; place-items:center; min-width:126px; height:38px; margin-top:17px; border-radius:12px; background:#242826; color:#fff; font-size:11px; cursor:pointer; }
.album-footnote { display:flex; flex:0 0 auto; align-items:center; justify-content:center; gap:7px; min-height:32px; padding:0 16px max(7px,env(safe-area-inset-bottom)); color:#969c98; font-size:8px; }
.album-footnote i { width:5px; height:5px; border-radius:50%; background:#7e8984; }
.album-detail { position:absolute; inset:0; z-index:6; display:flex; align-items:flex-end; justify-content:center; padding:16px max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
.album-detail-backdrop { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(17,20,18,.38); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); }
.album-detail > section { position:relative; z-index:1; box-sizing:border-box; display:grid; grid-template-columns:minmax(0,1.2fr) minmax(220px,.8fr); grid-template-rows:auto 1fr auto; gap:0 18px; width:min(100%,720px); max-height:min(720px,calc(100% - 12px)); padding:18px; overflow-y:auto; border:1px solid rgba(255,255,255,.72); border-radius:27px; background:rgba(247,248,245,.94); box-shadow:0 28px 80px rgba(16,22,19,.3); -webkit-backdrop-filter:blur(30px) saturate(145%); backdrop-filter:blur(30px) saturate(145%); }
.album-detail header { display:flex; grid-column:1/-1; align-items:flex-start; justify-content:space-between; margin-bottom:15px; }
.album-detail header span { color:#929895; font-size:8px; font-weight:750; letter-spacing:.18em; }
.album-detail h2 { margin:4px 0 0; font-size:20px; letter-spacing:-.04em; }
.album-detail header button { display:grid; place-items:center; width:32px; height:32px; padding:0; border:1px solid var(--album-line); border-radius:50%; background:#fff; color:#626864; font:inherit; font-size:19px; cursor:pointer; }
.album-detail-preview { grid-row:2/4; min-height:260px; overflow:hidden; border-radius:19px; background:#dfe3e0; }
.album-detail-preview img { display:block; width:100%; height:100%; min-height:260px; max-height:560px; object-fit:cover; }
.album-detail-copy { min-width:0; }
.album-detail-copy h3 { overflow:hidden; margin:3px 0 5px; font-size:15px; text-overflow:ellipsis; white-space:nowrap; }
.album-detail-copy > p { margin:0 0 16px; color:var(--album-muted); font-size:9px; line-height:1.5; }
.album-detail-copy dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin:0 0 14px; }
.album-detail-copy dl div { min-width:0; padding:10px; border-radius:12px; background:#e9ece9; }
.album-detail-copy dt { color:#8a908c; font-size:8px; }
.album-detail-copy dd { overflow:hidden; margin:4px 0 0; color:#353a37; font-size:10px; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
.album-detail-copy label { display:grid; gap:6px; }
.album-detail-copy label span { color:#676d69; font-size:9px; }
.album-detail-copy input { box-sizing:border-box; width:100%; height:37px; padding:0 10px; border:1px solid var(--album-line); border-radius:10px; outline:0; background:#fff; color:#727874; font:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:8px; }
.album-detail-copy > small { display:block; margin-top:8px; color:#929894; font-size:8px; line-height:1.5; }
.album-detail footer { display:flex; grid-column:2; align-items:end; justify-content:flex-end; gap:7px; margin-top:15px; }
.album-detail footer button { flex:1; height:38px; padding:0 12px; border:1px solid var(--album-line); border-radius:12px; background:#fff; color:#5e6561; font:inherit; font-size:10px; cursor:pointer; }
.album-detail footer button.is-primary { border-color:#242826; background:#242826; color:#fff; }
.album-detail footer button:disabled { opacity:.55; cursor:wait; }
.album-toast { position:absolute; bottom:max(28px,env(safe-area-inset-bottom)); left:50%; z-index:10; max-width:calc(100% - 40px); padding:10px 16px; border-radius:999px; background:rgba(24,28,26,.9); color:#fff; box-shadow:0 10px 28px rgba(0,0,0,.22); font-size:10px; text-align:center; opacity:0; pointer-events:none; transform:translate(-50%,12px); transition:opacity .18s ease,transform .18s ease; }
.album-toast.is-visible { opacity:1; transform:translate(-50%,0); }
.album-transfer-sheet { position:fixed; inset:0; z-index:110; display:flex; align-items:flex-end; justify-content:center; visibility:hidden; opacity:0; pointer-events:none; transition:opacity .18s ease,visibility .18s; }
.album-transfer-sheet.is-open { visibility:visible; opacity:1; pointer-events:auto; }
.album-transfer-backdrop { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(18,22,20,.34); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); }
.album-transfer-panel { position:relative; z-index:1; box-sizing:border-box; width:min(100%,520px); max-height:82vh; padding:19px 18px max(20px,env(safe-area-inset-bottom)); overflow-y:auto; border:1px solid rgba(255,255,255,.76); border-radius:27px 27px 0 0; background:rgba(247,248,245,.97); box-shadow:0 -20px 55px rgba(17,23,20,.2); }
.album-transfer-panel header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:16px; }
.album-transfer-panel header span { display:block; color:#929895; font-size:8px; font-weight:750; letter-spacing:.18em; }
.album-transfer-panel header h2 { margin:4px 0 0; color:#282d2a; font-size:20px; }
.album-transfer-panel header > button { display:grid; place-items:center; width:31px; height:31px; padding:0; border:0; border-radius:50%; background:#e7eae7; color:#616763; font:inherit; font-size:19px; cursor:pointer; }
.album-transfer-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.album-transfer-options > button,.album-transfer-options > label { position:relative; display:grid; align-content:center; min-height:92px; box-sizing:border-box; padding:14px; border:1px solid rgba(38,45,41,.1); border-radius:17px; background:rgba(255,255,255,.74); color:#303532; font:inherit; text-align:left; cursor:pointer; }
.album-transfer-options b { font-size:13px; font-weight:680; }
.album-transfer-options small { margin-top:5px; color:#8d938f; font-size:9px; line-height:1.5; }
.album-transfer-options input { position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; pointer-events:none; }
.album-transfer-links { display:grid; gap:7px; color:#646a66; font-size:10px; }
.album-transfer-links textarea { box-sizing:border-box; width:100%; min-height:150px; padding:12px; resize:vertical; border:1px solid rgba(38,45,41,.13); border-radius:15px; outline:0; background:#fff; color:#292e2b; font:11px/1.65 ui-monospace,SFMono-Regular,Menlo,monospace; }
.album-transfer-text-file { position:relative; display:grid; gap:4px; margin-top:10px; padding:12px 14px; border:1px solid rgba(38,45,41,.1); border-radius:15px; background:rgba(255,255,255,.74); color:#303532; cursor:pointer; }
.album-transfer-text-file b { font-size:12px; }
.album-transfer-text-file small { color:#8d938f; font-size:9px; }
.album-transfer-text-file input { position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; pointer-events:none; }
.album-transfer-panel footer { display:flex; gap:8px; margin-top:14px; }
.album-transfer-panel footer button { flex:1; height:39px; border:1px solid rgba(38,45,41,.12); border-radius:12px; background:#fff; color:#555c58; font:inherit; font-size:11px; cursor:pointer; }
.album-transfer-panel footer button.is-primary { border-color:#222624; background:#222624; color:#fff; }
.album-export-selected-button { color:#244f3b; }
.album-host-config { position:absolute; inset:0; z-index:8; display:grid; place-items:center; padding:16px; }
.album-host-config-backdrop { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(17,20,18,.32); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.album-host-config > section { position:relative; z-index:1; display:grid; gap:13px; width:min(100%,420px); padding:18px; border:1px solid rgba(255,255,255,.75); border-radius:22px; background:rgba(247,248,245,.96); box-shadow:0 24px 60px rgba(16,22,19,.24); }
.album-host-config header,.album-host-config footer { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.album-host-config header span { color:#929895; font-size:8px; font-weight:750; letter-spacing:.18em; }
.album-host-config h2 { margin:4px 0 0; font-size:19px; }
.album-host-config header button { width:30px; height:30px; padding:0; border:0; border-radius:50%; background:#e9ece9; color:#68706b; font-size:18px; cursor:pointer; }
.album-host-config label { display:grid; gap:6px; }
.album-host-config label span { color:#676d69; font-size:9px; }
.album-host-config input { box-sizing:border-box; width:100%; height:38px; padding:0 10px; border:1px solid var(--album-line); border-radius:10px; outline:0; background:#fff; color:#252a27; font:inherit; font-size:10px; }
.album-host-config p { margin:0; color:#929894; font-size:9px; line-height:1.55; }
.album-host-config footer { justify-content:flex-end; }
.album-host-config footer button { min-width:82px; height:36px; border:1px solid var(--album-line); border-radius:10px; background:#fff; color:#5e6561; font:inherit; font-size:10px; cursor:pointer; }
.album-host-config footer button.is-primary { border-color:#242826; background:#242826; color:#fff; }
@media (min-width:680px) {
  .album-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
  .album-photo { background:rgba(255,255,255,.72); }
  .album-photo-meta { display:grid; gap:3px; padding:9px 10px 10px; }
  .album-photo-meta b,.album-photo-meta small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .album-photo-meta b { font-size:10px; }
  .album-photo-meta small { color:var(--album-muted); font-size:8px; }
}
@media (max-width:580px) {
  .launcher-setup-sheet { padding:16px; border-radius:25px 25px 0 0; }
  .launcher-setup-body { grid-template-columns:1fr; gap:12px; }
  .launcher-setup-preview { grid-template-columns:auto 1fr; justify-items:start; align-items:center; text-align:left; }
  .launcher-setup-preview img { width:64px; height:64px; border-radius:17px; }
  .album-detail { padding:0; }
  .album-detail > section { display:block; width:100%; max-height:92%; padding:16px 16px max(16px,env(safe-area-inset-bottom)); border-right:0; border-bottom:0; border-left:0; border-radius:27px 27px 0 0; }
  .album-detail-preview { min-height:0; aspect-ratio:4/3; }
  .album-detail-preview img { min-height:0; max-height:none; }
  .album-detail-copy { margin-top:15px; }
  .album-detail footer { margin-top:15px; }
}
@media not all {
  .launcher-setup-sheet { border-color:rgba(255,255,255,.12); background:rgba(30,34,32,.97); }
  .launcher-setup-sheet h2 { color:#edf0ee; }
  .launcher-setup-sheet header p,.launcher-setup-preview,.beauty-launcher-note { color:#9da5a1; }
  .launcher-setup-sheet header > button,.launcher-setup-sheet footer button { border-color:rgba(255,255,255,.12); background:#292e2b; color:#d9deda; }
  .launcher-setup-sheet footer .launcher-setup-install { border-color:#e7ebe8; background:#e7ebe8; color:#1b201d; }
  .launcher-setup-preview,.beauty-launcher-choice,.beauty-launcher-upload { border-color:rgba(255,255,255,.12); background:rgba(40,45,42,.9); color:#bfc7c2; }
  .beauty-launcher-choice.is-selected,.beauty-launcher-upload.is-selected { border-color:#e7ebe8; background:#353b39; color:#f2f4f2; }
  .beauty-launcher-mode b { color:#dbe0dd; }
  .beauty-launcher-mode select { border-color:rgba(255,255,255,.12); background:#292e2b; color:#d9deda; }
  .album-launcher-icon { background:linear-gradient(145deg,#525958,#272c2b) !important; }
  .album-launcher-bg { fill:#353b39; stroke:#eef1ef; }
  .album-launcher-sun { fill:#9ca8a4; }
  .album-launcher-line { stroke:#eef1ef; }
  .album-app { --album-ink:#edf0ee; --album-muted:#9da5a1; --album-line:rgba(255,255,255,.1); background:#171a18; }
  .album-page { background:radial-gradient(circle at 88% 2%,rgba(90,104,98,.27),transparent 28%),#171a18; }
  .album-header { background:rgba(26,30,28,.8); }
  .album-header > button,.album-search button { background:#303532; color:#dfe4e1; }
  .album-import { background:#ecefec; color:#1d211f; }
  .album-select-button,.album-picker-cancel { border-color:rgba(255,255,255,.12); background:#303532; color:#dfe4e1; }
  .album-select-button.is-active { border-color:#e7ebe8; background:#e7ebe8; color:#1b201d; }
  .album-delete-selected-button { border-color:rgba(255,255,255,.12); background:#303532; color:#ff9d9d; }
  .album-hero { border-color:rgba(255,255,255,.1); background:linear-gradient(128deg,rgba(61,69,65,.78),rgba(35,40,38,.85)); box-shadow:0 14px 34px rgba(0,0,0,.2); }
  .album-hero strong { color:#f2f4f2; }
  .album-search,.album-photo { background:rgba(40,45,42,.9); }
  .album-search input { color:#edf0ee; }
  .album-photo-image { background:linear-gradient(145deg,#343a37,#252a28); }
  .album-empty > div { background:#292e2b; }
  .album-empty h2 { color:#dce1de; }
  .album-empty label { background:#eef1ef; color:#1d211f; }
  .album-host-settings-button { border-color:rgba(255,255,255,.12); background:#292e2b; color:#d9deda; }
  .album-host-config > section { border-color:rgba(255,255,255,.12); background:rgba(30,34,32,.96); }
  .album-host-config header button,.album-host-config input,.album-host-config footer button { background:#292e2b; color:#d9deda; }
  .album-host-config footer button.is-primary { border-color:#e7ebe8; background:#e7ebe8; color:#1b201d; }
  .album-detail > section { border-color:rgba(255,255,255,.12); background:rgba(30,34,32,.96); }
  .album-detail header button,.album-detail-copy input,.album-detail footer button { background:#292e2b; color:#d9deda; }
  .album-detail-preview,.album-detail-copy dl div { background:#252a27; }
  .album-detail-copy dd { color:#dbe0dd; }
  .album-detail footer button.is-primary { border-color:#e7ebe8; background:#e7ebe8; color:#1b201d; }
  .album-picker-panel { border-color:rgba(255,255,255,.12); background:rgba(30,34,32,.98); }
  .album-picker-panel > header { border-color:rgba(255,255,255,.1); }
  .album-picker-panel > header h2,.album-picker-photo b,.album-picker-empty b { color:#edf0ee; }
  .album-picker-panel > header button { border-color:rgba(255,255,255,.12); background:#292e2b; color:#d9deda; }
  .album-picker-photo > span { background:#343a37; }
  .album-picker-empty button { background:#ecefec; color:#1d211f; }
}

/* 相册与设置 App 统一为黑白灰视觉。 */
.album-app { --album-ink:#222; --album-muted:#999; --album-line:rgba(0,0,0,.09); background:#f5f5f3; color:#222; }
.album-page { background:#f5f5f3; }
.album-header { border-color:rgba(0,0,0,.08); background:rgba(248,248,246,.94); }
.album-header > button,.album-search button { border-color:rgba(0,0,0,.08); background:rgba(0,0,0,.06); color:#555; }
.album-header > div span,.album-picker-panel > header span { color:#999; }
.album-import,.album-empty label,.album-picker-empty button { background:#222; color:#fff; }
.album-select-button,.album-delete-selected-button,.album-picker-cancel { border-color:rgba(0,0,0,.1); background:#fff; color:#444; }
.album-select-button.is-active { border-color:#222; background:#222; color:#fff; }
.album-delete-selected-button { color:#666; }
.album-hero { border-color:rgba(0,0,0,.08); background:#fff; box-shadow:0 10px 28px rgba(0,0,0,.05),inset 0 1px 0 #fff; }
.album-hero strong { color:#222; }
.album-hero-mark i { filter:grayscale(1); background:linear-gradient(145deg,#d8d8d8,#8e8e8e); }
.album-hero-mark i:nth-child(2) { background:linear-gradient(145deg,#e4e4e4,#aaa); }
.album-hero-mark i:nth-child(3) { background:linear-gradient(145deg,#aaa,#666); }
.album-search { border-color:rgba(0,0,0,.09); background:#fff; box-shadow:inset 0 1px 0 rgba(255,255,255,.8); }
.album-search svg { stroke:#777; }
.album-search button { background:#e5e5e5; color:#666; }
.album-photo { background:#e5e5e5; }
.album-photo:focus-visible { box-shadow:0 0 0 3px rgba(34,34,34,.2); }
.album-photo.is-selected { box-shadow:inset 0 0 0 3px #222; }
.album-photo-image { background:linear-gradient(145deg,#e5e5e5,#cfcfcf); }
.album-photo-image::after { border-color:rgba(255,255,255,.5); }
.album-photo-check { background:rgba(34,34,34,.34); }
.album-photo.is-selected .album-photo-check { border-color:#222; background:#222; }
.album-empty > div { border-color:rgba(0,0,0,.09); background:#ededed; color:#888; }
.album-empty h2 { color:#333; }
.album-footnote { color:#999; }
.album-footnote i { background:#888; }
.album-detail-backdrop,.album-picker-backdrop { background:rgba(0,0,0,.3); }
.album-detail > section,.album-host-config > section,.album-picker-panel { border-color:rgba(0,0,0,.09); background:rgba(248,248,246,.97); box-shadow:0 24px 60px rgba(0,0,0,.16); }
.album-detail header button,.album-detail-copy input,.album-detail footer button,.album-host-config header button,.album-host-config input,.album-host-config footer button,.album-picker-panel > header button { border-color:rgba(0,0,0,.09); background:#fff; color:#555; }
.album-detail-preview,.album-detail-copy dl div,.album-picker-photo > span { background:#e5e5e5; }
.album-detail-copy dd { color:#333; }
.album-detail footer button.is-primary,.album-host-config footer button.is-primary { border-color:#222; background:#222; color:#fff; }
.album-picker-panel > header { border-color:rgba(0,0,0,.09); }
.album-picker-panel > header h2,.album-picker-photo b,.album-picker-empty b { color:#222; }
.album-picker-photo small,.album-picker-empty { color:#999; }
.album-picker-empty button { background:#222; color:#fff; }

@media not all {
  .album-app { --album-ink:#eee; --album-muted:#aaa; --album-line:rgba(255,255,255,.13); background:#202020; color:#eee; }
  .album-page { background:#202020; }
  .album-header { border-color:rgba(255,255,255,.12); background:rgba(28,28,28,.92); }
  .album-header > button,.album-search button { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.1); color:#ddd; }
  .album-import,.album-empty label,.album-picker-empty button { background:#eee; color:#111; }
  .album-select-button,.album-delete-selected-button,.album-picker-cancel { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); color:#ddd; }
  .album-select-button.is-active { border-color:#eee; background:#eee; color:#111; }
  .album-delete-selected-button { color:#ddd; }
  .album-hero { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); box-shadow:0 10px 28px rgba(0,0,0,.18); }
  .album-hero strong { color:#eee; }
  .album-hero-mark i { background:linear-gradient(145deg,#666,#333); }
  .album-hero-mark i:nth-child(2) { background:linear-gradient(145deg,#777,#444); }
  .album-hero-mark i:nth-child(3) { background:linear-gradient(145deg,#555,#222); }
  .album-search,.album-photo { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); }
  .album-search button { background:#444; color:#ddd; }
  .album-photo-image,.album-detail-preview,.album-detail-copy dl div,.album-picker-photo > span { background:#444; }
  .album-photo-image::after { border-color:rgba(255,255,255,.18); }
  .album-empty > div { border-color:rgba(255,255,255,.13); background:#333; color:#aaa; }
  .album-empty h2 { color:#eee; }
  .album-detail > section,.album-host-config > section,.album-picker-panel { border-color:rgba(255,255,255,.13); background:rgba(35,35,35,.97); box-shadow:0 24px 60px rgba(0,0,0,.38); }
  .album-detail header button,.album-detail-copy input,.album-detail footer button,.album-host-config header button,.album-host-config input,.album-host-config footer button,.album-picker-panel > header button { border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.07); color:#ddd; }
  .album-detail-copy dd,.album-picker-panel > header h2,.album-picker-photo b,.album-picker-empty b { color:#eee; }
  .album-detail footer button.is-primary,.album-host-config footer button.is-primary { border-color:#eee; background:#eee; color:#111; }
}

/* 具体聊天底栏：四个操作键收成一组，把更多横向空间留给输入框。 */
.chat-conversation > .chat-compose-wrap { padding-right:9px !important; padding-left:9px !important; }
.chat-conversation > .chat-compose-wrap .chat-compose { gap:0 !important; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply { flex:0 0 28px !important; width:28px !important; height:28px !important; min-height:28px; padding:0 !important; border-radius:50% !important; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send .chat-action-icon,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply .chat-action-icon { width:18px !important; height:18px !important; }
.chat-app.is-chatting .chat-conversation > .chat-messages {
  min-height:0;
}
.chat-card-import-box{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:center;column-gap:16px;row-gap:7px;margin-bottom:18px;padding:14px 16px;border:1px solid rgba(0,0,0,.1);border-radius:16px;background:rgba(248,248,246,.9)}
.chat-card-import-box>div{display:grid;gap:5px;min-width:0}.chat-card-import-box b{font-size:13px}.chat-card-import-box small,.chat-card-import-note{color:#8c8c88;font-size:11px;line-height:1.5}.chat-card-import-box .chat-file-button{flex:none;white-space:nowrap}.chat-card-import-note{grid-column:1/-1;grid-row:2;margin:0}.chat-editor-sheet .chat-card-import-box{flex-wrap:nowrap}
.chat-card-import-actions{grid-column:2;grid-row:1;display:flex!important;align-items:center;justify-content:flex-end;gap:10px;margin-left:0}.chat-card-lock{position:relative;display:inline-block;width:24px;height:24px;color:#202020;font-size:0;line-height:1;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10V7a5 5 0 0 1 10 0v3' fill='none' stroke='%23202020' stroke-width='2' stroke-linecap='round'/%3E%3Crect x='4' y='10' width='16' height='11' rx='2' fill='none' stroke='%23202020' stroke-width='2'/%3E%3Ccircle cx='12' cy='15' r='1.2' fill='%23202020'/%3E%3Cpath d='M12 16.2v2' stroke='%23202020' stroke-width='1.7' stroke-linecap='round'/%3E%3C/svg%3E") center/24px 24px no-repeat}.chat-card-lock::before,.chat-card-lock::after{display:none}.chat-card-unlock{padding:9px 13px;border:1px solid rgba(0,0,0,.12);border-radius:999px;background:#202020;color:#fff;font:inherit;font-size:12px;cursor:pointer}.chat-card-import-actions .chat-file-button{display:inline-flex;align-items:center;justify-content:center;padding:9px 13px;border-radius:999px;font-size:0}.chat-card-import-actions .chat-file-button::after{content:"\5BFC\5165";font-size:12px}
#idealActivationPortal{position:fixed;inset:0;z-index:1000;display:none}.ideal-activation-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.3);backdrop-filter:blur(8px)}#idealActivationPortal.is-open{display:block}.ideal-activation-card{position:absolute;left:50%;top:50%;width:min(430px,calc(100% - 32px));max-height:min(720px,calc(100% - 32px));overflow:auto;transform:translate(-50%,-50%);box-sizing:border-box;padding:24px;border-radius:24px;background:#fff;color:#202020;box-shadow:0 24px 80px rgba(0,0,0,.2)}.ideal-activation-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.ideal-activation-card header span{color:#999;font-size:10px;letter-spacing:.16em}.ideal-activation-card h2{margin:6px 0 0;font-size:22px}.ideal-activation-card header button{width:30px;height:30px;border:0;border-radius:50%;background:#f1f1ef;color:#555;font-size:20px;cursor:pointer}.ideal-activation-card main{display:grid;gap:13px;margin-top:20px}.ideal-activation-card main p{margin:0;color:#777;font-size:13px;line-height:1.7}.ideal-activation-device{display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center;padding:14px 15px;border-radius:15px;background:#f4f4f2}.ideal-activation-device small{grid-column:1/-1;color:#999;font-size:11px}.ideal-activation-device b{font-size:18px;letter-spacing:.1em}.ideal-activation-device button{border:0;background:none;color:#777;font-size:12px;cursor:pointer}.ideal-activation-link{display:block;padding:13px 15px;border-radius:13px;background:#202020;color:#fff;text-align:center;text-decoration:none;font-size:13px}.ideal-activation-card label{display:grid;gap:7px;color:#555;font-size:12px}.ideal-activation-card input{box-sizing:border-box;width:100%;padding:13px 14px;border:1px solid #ddd;border-radius:12px;background:#fff;color:#202020;font:inherit;text-transform:uppercase;outline:0}.ideal-activation-warning,.ideal-activation-message{padding:10px 12px;border-radius:10px;background:#f7f3e9;color:#866d3b!important;font-size:12px!important}.ideal-activation-card footer{display:flex;gap:10px;margin-top:20px}.ideal-activation-card footer button{flex:1;padding:13px;border:1px solid #ddd;border-radius:13px;background:#fff;color:#444;font:inherit;cursor:pointer}.ideal-activation-card footer button.is-primary{border-color:#202020;background:#202020;color:#fff}.ideal-activation-card footer button:disabled{opacity:.5;cursor:default}
.chat-editor-sheet{display:flex;flex-direction:column;height:min(92vh,760px);max-height:92vh;overflow:hidden}.chat-editor-sheet .chat-editor-body{flex:1;min-height:0;overflow-y:auto;padding-bottom:28px}.chat-editor-sheet footer{position:sticky;bottom:0;z-index:3;flex:none;background:rgba(248,248,246,.98);box-shadow:0 -8px 18px rgba(0,0,0,.06)}
@media not all{.chat-editor-sheet footer{background:rgba(35,35,35,.98);box-shadow:0 -8px 18px rgba(0,0,0,.18)}}

/* 聊天气泡右滑引用。 */
.chat-message { touch-action: pan-y; }
.chat-message-line { transition: transform .18s ease; }
.chat-message.is-quote-tracking .chat-message-line { transition: none; }
.chat-quote-bar { position: absolute; right: 0; bottom: calc(100% + 8px); left: 0; z-index: 4; display: flex; align-items: center; gap: 10px; margin: 0; padding: 8px 10px; border-left: 3px solid #222; border-radius: 10px; background: rgba(255,255,255,.9); color: #555; box-shadow: 0 5px 16px rgba(0,0,0,.1); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); }
.chat-quote-bar > div { min-width: 0; flex: 1; }
.chat-quote-bar small { display: block; color: #777; font-size: 10px; }
.chat-quote-bar p { margin-top: 3px; overflow: hidden; color: #999; font-size: 10px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.chat-quote-bar > button { flex: 0 0 auto; width: 22px; height: 22px; padding: 0; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #777; font-size: 16px; line-height: 1; cursor: pointer; }
.chat-message-quote { margin: -2px -2px 7px; padding: 6px 8px; border-left: 2px solid currentColor; border-radius: 6px; background: rgba(0,0,0,.07); opacity: .78; }
.chat-message-quote small { display: block; color: inherit; font-size: 9px; }
.chat-message-quote p { margin-top: 2px; overflow: hidden; color: inherit; font-size: 10px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }

/* 回复引用与群聊正文都要完整换行，不能被单行省略号截断。 */
.chat-message-quote p {
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}
.chat-group-conversation .chat-group-bubble-row > .chat-bubble:not(.transfer):not(.location):not(.tap):not(.image):not(.image-stack):not(.image-desc) {
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}
.chat-conversation.has-chat-quote .chat-messages { padding-bottom: 17px; }
.chat-conversation.has-chat-quote .chat-messages::after { content: ''; display: block; height: 58px; min-height: 58px; }
.chat-conversation.has-chat-quote .chat-messages { padding-bottom:0; }
.chat-conversation.has-chat-quote .chat-messages::after { content:none; display:none; height:0; min-height:0; }
.chat-message.is-quote-tracking .chat-message-line { will-change:transform; }
.chat-contact-card { position:relative; display:block; overflow:hidden; padding:0; touch-action:pan-y; }
.chat-contact-swipe-action { position:absolute; inset:0; display:flex; align-items:center; justify-content:flex-end; background:transparent; }
.chat-contact-pin { width:38px; height:38px; margin-right:12px; padding:0; border:0; border-radius:50%; background:#222; color:#fff; font:inherit; font-size:21px; line-height:1; opacity:0; pointer-events:none; box-shadow:0 5px 13px rgba(0,0,0,.18); cursor:pointer; transition:opacity .12s ease; }
.chat-contact-card.is-swipe-open .chat-contact-pin,
.chat-contact-card.is-swipe-revealing .chat-contact-pin { opacity:1; pointer-events:auto; }
.chat-contact-card-content { position:relative; z-index:1; display:flex !important; align-items:center; width:100%; min-height:69px; box-sizing:border-box; gap:11px; padding:13px; border-radius:inherit; background:rgba(255,255,255,.48); transition:transform .18s cubic-bezier(.22,.61,.36,1); will-change:transform; }
.chat-contact-card-content.is-swipe-tracking { transition:none; }
.chat-contact-card.is-pinned .chat-contact-card-content { border-color:rgba(34,34,34,.24); background:rgba(34,34,34,.13); }
.chat-contact-card-content > div:nth-child(2) { display:grid; flex:1; min-width:0; gap:5px; }
.chat-contact-card-content > div:nth-child(2) b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.chat-contact-card-content > div:nth-child(2) p { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.chat-launch-contact-swipe { position:relative; overflow:hidden; margin-bottom:9px; border-radius:16px; background:rgba(255,255,255,.48); touch-action:pan-y; }
.chat-launch-contact-swipe > .chat-launch-contact { position:relative; z-index:1; margin:0; transition:transform .18s cubic-bezier(.22,.61,.36,1); will-change:transform; }
.chat-launch-contact-swipe > .chat-launch-contact.is-swipe-tracking { transition:none; }
.chat-launch-contact-swipe > .chat-launch-contact.is-pinned { border-color:rgba(34,34,34,.24); background:rgba(34,34,34,.13); }
.chat-launch-contact-pin { position:absolute; top:50%; right:12px; z-index:0; width:38px; height:38px; padding:0; transform:translateY(-50%); border:0; border-radius:50%; background:#222; color:#fff; font:inherit; font-size:21px; line-height:1; opacity:0; pointer-events:none; box-shadow:0 5px 13px rgba(0,0,0,.18); cursor:pointer; transition:opacity .12s ease; }
.chat-launch-contact-swipe.is-swipe-open .chat-launch-contact-pin,
.chat-launch-contact-swipe.is-swipe-revealing .chat-launch-contact-pin { opacity:1; pointer-events:auto; }
@media not all {
  .chat-contact-card-content { background:rgba(255,255,255,.07); }
  .chat-contact-card.is-pinned .chat-contact-card-content { border-color:rgba(255,255,255,.24); background:rgba(255,255,255,.16); }
  .chat-launch-contact-swipe { background:rgba(255,255,255,.07); }
  .chat-launch-contact-swipe > .chat-launch-contact.is-pinned { border-color:rgba(255,255,255,.24); background:rgba(255,255,255,.16); }
}
@media not all {
  .chat-quote-bar { border-left-color: #eee; background: rgba(255,255,255,.1); color: #ddd; }
  .chat-quote-bar small { color: #ccc; }
  .chat-quote-bar p { color: #aaa; }
  .chat-quote-bar > button { background: rgba(255,255,255,.12); color: #ddd; }
  .chat-message-quote { background: rgba(255,255,255,.12); }
}

/* 引用预览属于底部输入区本身：和聊天气泡一样位于消息列表下方、输入框上方，
   不再以绝对定位浮在消息内容上。这样键盘抬升时整组输入区也会一起移动。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap.has-chat-quote {
  display:flex !important;
  flex-direction:column !important;
  flex-basis:auto !important;
  height:auto !important;
  min-height:96px !important;
  padding-top:10px !important;
  padding-bottom:8px !important;
  overflow:visible !important;
  background:transparent !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap.has-chat-quote > .chat-quote-bar {
  position:relative !important;
  inset:auto !important;
  order:0 !important;
  flex:0 0 auto !important;
  width:100% !important;
  box-sizing:border-box !important;
  margin:0 0 8px !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap.has-chat-quote > .chat-compose {
  order:1 !important;
  flex:0 0 44px !important;
  height:44px !important;
  min-height:44px !important;
  transform:none !important;
}


/* 世界书条目正文占满卡片宽度，编辑/删除操作单独放在正文下方。 */
.worldbook-entry { display: block; }
.worldbook-entry > .worldbook-entry-copy { width: 100%; max-width: none; }
.worldbook-entry > .worldbook-entry-copy > p { width: 100%; box-sizing: border-box; padding-right: 0; scrollbar-gutter: auto; }
.worldbook-entry > .worldbook-entry-actions { justify-content: flex-end; margin-top: 12px; }
.chat-thought-actions { display: flex; justify-content: center; align-items: center; gap: 28px; margin-top: 14px; }
.chat-thought-actions button { min-width: 92px; min-height: 32px; padding: 0 14px; border: 1px solid rgba(0,0,0,.12); border-radius: 999px; background: #222; color: #fff; font: inherit; font-size: 11px; cursor: pointer; }
.chat-thought-actions button:disabled { cursor: default; opacity: .45; }
.chat-thought-actions button[data-chat-thought-prev],
.chat-thought-actions button[data-chat-thought-next] {
  min-width: 28px;
  width: 28px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #222;
  font-size: 25px;
  line-height: 1;
}
.worldbook-entry.is-disabled .worldbook-entry-copy { opacity: .48; }
.worldbook-entry-actions { align-items: center; }
.worldbook-entry-count { flex: 0 0 auto; min-width: 42px; color: #999; font-size: 10px; line-height: 1; text-align: right; white-space: nowrap; }
.worldbook-entry-toggle { display: inline-flex; align-items: center; gap: 5px; padding: 5px 7px !important; border: 1px solid rgba(0,0,0,.1) !important; border-radius: 999px !important; background: rgba(0,0,0,.04) !important; color: #999 !important; font-size: 10px !important; }
.worldbook-entry-toggle-track { position: relative; width: 24px; height: 14px; border-radius: 999px; background: #c8c8c4; transition: background .18s ease; }
.worldbook-entry-toggle-track i { position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.18); transition: transform .18s ease; }
.worldbook-entry-toggle.is-on { border-color: #222 !important; background: #fff !important; color: #222 !important; }
.worldbook-entry-toggle.is-on .worldbook-entry-toggle-track { background: #222; }
.worldbook-entry-toggle.is-on .worldbook-entry-toggle-track i { transform: translateX(10px); }
@media not all {
  .worldbook-entry-toggle { border-color: rgba(255,255,255,.16) !important; background: rgba(255,255,255,.08) !important; color: #aaa !important; }
  .worldbook-entry-toggle-track { background: #666; }
  .worldbook-entry-toggle.is-on { border-color: #eee !important; background: rgba(255,255,255,.08) !important; color: #eee !important; }
  .worldbook-entry-toggle.is-on .worldbook-entry-toggle-track { background: #eee; }
  .worldbook-entry-toggle-track i { background: #222; }
}

/* 心声面板改为从聊天顶栏下方滑出的顶部抽屉。 */
.chat-thought { align-items: flex-start; justify-content: center; overflow-y: auto; padding: max(64px, calc(env(safe-area-inset-top) + 58px)) 12px 18px; }
.chat-thought-card { width: min(100%, 430px); transform: translateY(-18px); opacity: 0; }
.chat-thought.is-open .chat-thought-card { animation: chat-thought-slide-down .24s ease-out forwards; }
@keyframes chat-thought-slide-down { from { transform: translateY(-18px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

/* 心声只作为顶栏下方的抽屉出现，不遮暗或模糊后面的聊天内容。 */
.chat-thought-backdrop {
  background: transparent !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
.chat-thought-card {
  display: block;
  box-sizing: border-box;
  max-height: none;
  overflow: visible;
  background: rgba(248,248,246,.58) !important;
  -webkit-backdrop-filter: blur(24px) saturate(150%);
  backdrop-filter: blur(24px) saturate(150%);
}
.chat-thought-card p {
  max-height: none;
  overflow: visible;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
  word-break: break-word;
}
.chat-tools button[data-chat-tool="reroll"] { color: #222; }
.chat-tools button[data-chat-tool="reroll"]:disabled { cursor: default; opacity: .45; }
@media not all {
  .chat-thought-card { background: rgba(32,32,32,.62) !important; border-color: rgba(255,255,255,.2); }
}
.chat-launch-contact .chat-unread-badge {
  display:grid;
  place-items:center;
  flex:0 0 auto;
  min-width:20px;
  height:20px;
  padding:0 6px;
  border-radius:999px;
  background:#222;
  color:#fff;
  font-size:10px;
  font-style:normal;
  font-weight:700;
  line-height:1;
}
.chat-back-unread-badge {
  display: grid;
  place-items: center;
  width: 29px;
  height: 29px;
  border-radius: 50%;
  background: #222;
  color: #fff;
  font-size: 10px;
  font-style: normal;
  font-weight: 700;
  line-height: 1;
}
@media not all {
  .chat-launch-contact .chat-unread-badge,
  .chat-back-unread-badge { background:#f2f2f2; color:#222; }
}

/* Ta 手机：全天日程、最近歌单与订单页面。 */
.ta-role-app-page { position:relative; overflow:hidden; }
.ta-day-plan > header,.ta-recent-playlist > header,.ta-order-list > header { margin-bottom:14px; padding:2px 2px 12px; }
.ta-day-plan > header small,.ta-recent-playlist > header small,.ta-order-list > header small { color:#9a9a9a; font-size:9px; font-weight:700; letter-spacing:.14em; }
.ta-day-plan > header h2,.ta-recent-playlist > header h2,.ta-order-list > header h2 { margin-top:5px; color:#202020; font-size:20px; }
.ta-day-plan > header p,.ta-order-list > header p { margin-top:5px; color:#999; font-size:10px; line-height:1.5; }
.ta-calendar-date-nav { display:grid; grid-template-columns:76px minmax(0,1fr) 76px; align-items:center; gap:8px; }
.ta-calendar-date-nav > div { min-width:0; text-align:center; }
.ta-calendar-date-nav button { min-height:32px; padding:0 8px; border:1px solid #dedede; border-radius:10px; background:#fff; color:#555; font:inherit; font-size:10px; cursor:pointer; }
.ta-day-plan > header > p { text-align:center; }
.ta-day-timeline { position:relative; display:grid; }
.ta-day-timeline::before { position:absolute; top:15px; bottom:18px; left:76px; width:1px; background:#d9d9d9; content:""; }
.ta-day-timeline article { position:relative; display:grid; grid-template-columns:61px 12px minmax(0,1fr); gap:10px; min-height:70px; }
.ta-day-timeline time { display:flex; flex-direction:column; align-items:flex-end; padding-top:4px; color:#777; font-size:9px; font-variant-numeric:tabular-nums; }
.ta-day-timeline time b { color:#303030; font-size:11px; font-weight:650; }
.ta-day-timeline time span { margin:1px 0; color:#aaa; font-size:8px; }
.ta-day-timeline article > i { position:relative; z-index:1; width:9px; height:9px; margin-top:7px; border:2px solid #f7f8fb; border-radius:50%; background:#555; box-shadow:0 0 0 1px #bbb; }
.ta-day-timeline article > div { position:relative; align-self:start; margin-bottom:10px; padding:12px 13px; border:1px solid #e7e7e7; border-radius:14px; background:#fff; box-shadow:0 4px 12px rgba(0,0,0,.035); }
.ta-calendar-status { display:inline-flex; align-items:center; min-height:18px; margin-bottom:7px; padding:0 7px; border-radius:999px; background:#ededed; color:#777; font-size:8px; font-weight:650; }
.ta-day-timeline article.is-done .ta-calendar-status { background:#dedede; color:#555; }
.ta-day-timeline article.is-doing .ta-calendar-status { background:#333; color:#fff; }
.ta-day-timeline article.is-changed > div { border-style:dashed; border-color:#999; }
.ta-day-timeline article.is-changed .ta-calendar-status { background:#666; color:#fff; }
.ta-day-timeline article.is-planned > div { opacity:.78; }
.ta-day-timeline article > div b { display:block; font-size:13px; }
.ta-day-timeline article > div p { margin-top:5px; color:#777; font-size:11px; line-height:1.55; white-space:pre-wrap; }
.ta-calendar-empty { margin-top:28px; padding:42px 20px; border:1px dashed #d4d4d4; border-radius:17px; color:#777; text-align:center; }
.ta-calendar-empty b { color:#444; font-size:13px; }
.ta-calendar-empty p { margin-top:7px; font-size:10px; line-height:1.6; }
.ta-recent-playlist > header { display:flex; align-items:flex-end; justify-content:space-between; }
.ta-recent-playlist > header span { color:#999; font-size:10px; }
.ta-recent-playlist > div { overflow:hidden; border:1px solid #e7e7e7; border-radius:18px; background:#fff; }
.ta-recent-playlist button { display:flex; align-items:center; gap:10px; width:100%; min-height:66px; padding:8px 12px; border:0; border-bottom:1px solid #ededed; background:transparent; color:#222; font:inherit; text-align:left; cursor:pointer; }
.ta-recent-playlist button:last-child { border-bottom:0; }
.ta-recent-playlist button > em { flex:0 0 18px; color:#aaa; font-size:10px; font-style:normal; text-align:center; }
.ta-recent-playlist button > i { display:grid; flex:0 0 42px; place-items:center; width:42px; height:42px; border-radius:12px; background:linear-gradient(145deg,#e8e8e8,#cfcfcf); color:#555; }
.ta-recent-playlist button > i img { width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.ta-recent-playlist button > i svg { width:23px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; }
.ta-recent-playlist button > span { display:grid; flex:1; gap:4px; min-width:0; }
.ta-recent-playlist button b,.ta-recent-playlist button small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ta-recent-playlist button b { font-size:12px; }
.ta-recent-playlist button small { color:#999; font-size:10px; }
.ta-recent-playlist button strong { flex:0 0 auto; color:#777; font-size:9px; font-weight:500; }
.ta-recent-playlist button u { color:#aaa; font-size:19px; text-decoration:none; }
.ta-order-list { display:grid; gap:10px; }
.ta-order-list > header { margin-bottom:0; }
.ta-order-list > article { overflow:hidden; border:1px solid #e6e6e6; border-radius:16px; background:#fff; box-shadow:0 4px 13px rgba(0,0,0,.035); }
.ta-order-shop { display:flex; align-items:center; justify-content:space-between; min-height:35px; padding:0 13px; border-bottom:1px solid #eee; }
.ta-order-shop b { font-size:10px; }
.ta-order-shop span { color:#777; font-size:9px; }
.ta-order-list article > button { display:flex; align-items:center; gap:11px; width:100%; min-height:84px; padding:11px 13px; border:0; background:transparent; color:#222; font:inherit; text-align:left; cursor:pointer; }
.ta-order-list article > button > i { display:grid; flex:0 0 58px; place-items:center; width:58px; height:58px; border-radius:11px; background:#ededed; color:#666; }
.ta-order-list article > button > i svg { width:28px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; }
.ta-order-list article > button > span { display:grid; flex:1; align-self:stretch; align-content:space-between; gap:5px; min-width:0; }
.ta-order-list article > button b { display:-webkit-box; overflow:hidden; font-size:11px; font-weight:550; line-height:1.45; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.ta-order-list article > button small { color:#999; font-size:9px; }
.ta-order-list article > button strong { align-self:flex-end; color:#111; font-size:13px; }
.ta-order-list article > button em { color:#aaa; font-size:18px; font-style:normal; }
.ta-wallet-page { display:grid; gap:15px; }
.ta-wallet-balance { display:grid; gap:8px; padding:20px; border-radius:21px; background:linear-gradient(135deg,#263f38,#56836f); color:#fff; box-shadow:0 12px 28px rgba(35,74,58,.2); }
.ta-wallet-balance>small { color:rgba(255,255,255,.7); font-size:9px; letter-spacing:.12em; }.ta-wallet-balance>strong { font-size:30px; }.ta-wallet-balance>div { display:flex; gap:18px; color:rgba(255,255,255,.78); font-size:10px; }.ta-wallet-balance>div>span { display:grid; gap:3px; }.ta-wallet-cny { display:block; color:#9299a6; font-size:9px; font-weight:500; letter-spacing:0; line-height:1.4; }
.ta-wallet-page>header small { color:#999; font-size:9px; font-weight:700; letter-spacing:.14em; }.ta-wallet-page>header h2 { margin-top:5px; font-size:19px; }
.ta-wallet-list { display:grid; gap:8px; }.ta-wallet-list article { display:flex; align-items:center; gap:10px; padding:11px; border:1px solid #e5e8e7; border-radius:15px; background:#fff; }
.ta-wallet-list article>i { display:grid; flex:0 0 38px; place-items:center; width:38px; height:38px; border-radius:12px; background:#f3f4f4; color:#8c9691; font-style:normal; }.ta-wallet-list article.is-income>i { background:#e4f3ea; color:#438162; }
.ta-wallet-list article>span { display:grid; flex:1; gap:4px; min-width:0; }.ta-wallet-list article b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }.ta-wallet-list article small { color:#999; font-size:9px; }.ta-wallet-list article>strong { display:grid; justify-items:end; gap:3px; font-size:11px; }.ta-wallet-list article.is-income>strong { color:#438162; }
.ta-reverse-page { display:flex; flex-direction:column; width:100%; height:100%; background:#f4f1f3; color:#272329; }
.ta-reverse-page>header { display:flex; align-items:center; gap:12px; padding:max(18px,env(safe-area-inset-top)) 20px 14px; border-bottom:1px solid rgba(0,0,0,.07); background:rgba(255,255,255,.82); }.ta-reverse-page>header>button { width:32px; height:32px; border:0; border-radius:50%; background:#ece8eb; font-size:21px; }.ta-reverse-page>header small { color:#9a8791; font-size:8px; letter-spacing:.14em; }.ta-reverse-page>header h1 { margin-top:3px; font-size:21px; }
.ta-reverse-page>header>div { flex:1; }.ta-reverse-page>header>.ta-reverse-rate-open { flex:0 0 32px; color:#765765; font-size:14px; font-weight:800; }.ta-reverse-page>header>.ta-reverse-rate-open:disabled { opacity:.35; }
.ta-reverse-page>main { flex:1; overflow-y:auto; padding:18px 18px 38px; }.ta-reverse-hero { display:grid; grid-template-columns:48px 1fr; gap:11px; max-width:560px; margin:auto; padding:16px; border-radius:20px; background:linear-gradient(135deg,#3b3038,#6c5361); color:#fff; }.ta-reverse-hero>i { display:grid; place-items:center; width:48px; height:48px; overflow:hidden; border-radius:15px; background:rgba(255,255,255,.16); font-style:normal; }.ta-reverse-hero>i img { width:100%; height:100%; object-fit:cover; }.ta-reverse-hero>span { display:grid; gap:3px; }.ta-reverse-hero small { color:rgba(255,255,255,.62); font-size:8px; }.ta-reverse-hero b { font-size:14px; }.ta-reverse-hero p { color:rgba(255,255,255,.72); font-size:9px; line-height:1.5; }.ta-reverse-hero>button { grid-column:1/-1; height:39px; border:0; border-radius:11px; background:#fff; color:#4b3943; font:inherit; font-size:10px; font-weight:700; }.ta-reverse-hero>button:disabled { opacity:.7; }
.ta-reverse-page.is-live>main { display:flex; flex-direction:column; min-height:0; overflow:hidden; overflow-anchor:none; }
.ta-reverse-start-actions { grid-column:1/-1; display:grid; grid-template-columns:1fr 1fr; gap:8px; }.ta-reverse-start-actions button { min-height:41px; border:0; border-radius:11px; background:#fff; color:#4b3943; font:inherit; font-size:10px; font-weight:700; }.ta-reverse-start-actions button:last-child { background:rgba(255,255,255,.14); color:#fff; outline:1px solid rgba(255,255,255,.32); }
.ta-reverse-caught { display:grid; justify-items:center; width:min(100%,430px); margin:70px auto 0; padding:38px 24px; border-radius:25px; background:#30282d; color:#fff; text-align:center; box-shadow:0 20px 45px rgba(43,28,36,.25); }.ta-reverse-caught>i { display:grid; place-items:center; width:58px; height:58px; border-radius:50%; background:#d76c73; font-size:27px; font-style:normal; }.ta-reverse-caught small { margin-top:16px; color:#d49fa9; font-size:8px; letter-spacing:.14em; }.ta-reverse-caught h2 { margin-top:7px; font-size:21px; }.ta-reverse-caught p { margin-top:11px; color:rgba(255,255,255,.72); font-size:10px; line-height:1.7; }.ta-reverse-caught b { margin-top:20px; color:#f0c9d0; font-size:9px; }
.ta-reverse-catch-now { display:block; width:min(100%,390px); min-height:45px; margin:14px auto 0; border:0; border-radius:14px; background:#3f343a; color:#fff; box-shadow:0 8px 20px rgba(48,35,42,.16); font:inherit; font-size:10px; font-weight:700; cursor:pointer; }
.ta-reverse-rate-sheet { position:absolute; inset:0; z-index:30; display:grid; align-items:end; }.ta-reverse-rate-sheet>div { position:absolute; inset:0; background:rgba(28,22,26,.34); }.ta-reverse-rate-sheet>section { position:relative; display:grid; gap:18px; padding:20px 20px max(24px,env(safe-area-inset-bottom)); border-radius:24px 24px 0 0; background:#faf8f9; box-shadow:0 -18px 45px rgba(35,25,30,.18); }.ta-reverse-rate-sheet header { display:flex; align-items:center; gap:12px; }.ta-reverse-rate-sheet header>div { flex:1; }.ta-reverse-rate-sheet header small { color:#a17d8e; font-size:8px; letter-spacing:.13em; }.ta-reverse-rate-sheet header h2 { margin-top:4px; font-size:19px; }.ta-reverse-rate-sheet header>button { width:30px; height:30px; border:0; border-radius:50%; background:#eee7ea; font-size:18px; }.ta-reverse-rate-sheet>section>p { color:#71676c; font-size:10px; line-height:1.6; }.ta-reverse-rate-sheet label { display:grid; grid-template-columns:auto 1fr 42px; align-items:center; gap:12px; }.ta-reverse-rate-sheet label span,.ta-reverse-rate-sheet output { font-size:10px; font-weight:700; }.ta-reverse-rate-sheet input { width:100%; accent-color:#775766; }.ta-reverse-rate-sheet output { text-align:right; }.ta-reverse-rate-sheet footer { display:grid; grid-template-columns:1fr 1.4fr; gap:9px; }.ta-reverse-rate-sheet footer button { height:42px; border:0; border-radius:12px; background:#eae4e7; color:#5e5057; font:inherit; font-size:10px; font-weight:700; }.ta-reverse-rate-sheet footer button:last-child { background:#4a3942; color:#fff; }
.ta-reverse-result { display:grid; gap:12px; max-width:560px; margin:18px auto 0; }.ta-reverse-result>header small { color:#999; font-size:8px; }.ta-reverse-result>header h2 { margin-top:4px; font-size:18px; }.ta-reverse-result>div { display:grid; gap:8px; }.ta-reverse-result article { display:flex; gap:10px; padding:12px; border:1px solid rgba(0,0,0,.07); border-radius:15px; background:#fff; }.ta-reverse-result article>i { display:grid; flex:0 0 27px; place-items:center; width:27px; height:27px; border-radius:9px; background:#eee8ec; color:#785d6b; font-size:10px; font-style:normal; }.ta-reverse-result article>span { display:grid; gap:4px; }.ta-reverse-result article small { color:#a27c8f; font-size:8px; }.ta-reverse-result article b { font-size:11px; }.ta-reverse-result article p { color:#666; font-size:10px; line-height:1.5; }.ta-reverse-result article em { color:#8b6276; font-size:9px; font-style:normal; line-height:1.5; }.ta-reverse-result>footer { padding:14px; border-radius:16px; background:#e9dfe5; }.ta-reverse-result>footer small { color:#947181; font-size:8px; }.ta-reverse-result>footer p { margin-top:6px; font-size:11px; line-height:1.6; }.ta-reverse-result>footer b { display:block; margin-top:8px; font-size:10px; }
.ta-reverse-browser { display:flex; flex-direction:column; width:min(100%,560px); height:min(560px,100%); min-height:0; margin:0 auto; overflow:hidden; border:1px solid rgba(0,0,0,.08); border-radius:24px; background:#fff; box-shadow:0 16px 36px rgba(54,38,47,.11); contain:layout paint; }
.ta-reverse-browser>header { display:flex; align-items:center; gap:12px; padding:14px 16px; border-bottom:1px solid #eee9ec; background:#fbfafb; }.ta-reverse-browser>header button { width:28px; height:28px; border:0; border-radius:50%; background:#eee9ec; color:#888; }.ta-reverse-browser>header div { flex:1; }.ta-reverse-browser>header small { color:#a38392; font-size:8px; letter-spacing:.05em; }.ta-reverse-browser>header h2 { margin-top:2px; font-size:16px; }.ta-reverse-browser>header i { color:#9a8b92; font-style:normal; letter-spacing:.12em; }
.ta-reverse-browser>main { display:grid; align-content:start; flex:1; min-height:0; gap:8px; padding:15px; overflow-y:auto; overflow-anchor:none; background:#f6f4f5; }.ta-reverse-browser>main article,.ta-reverse-browser>main>p { padding:12px 13px; border:1px solid rgba(0,0,0,.055); border-radius:13px; background:#fff; color:#514a4e; font-size:10px; line-height:1.55; overflow-wrap:anywhere; }
.ta-reverse-browser>footer { padding:14px 16px; border-top:1px solid #eee8eb; background:#fff7fa; }.ta-reverse-browser>footer small { color:#a5788e; font-size:8px; }.ta-reverse-browser>footer p { margin-top:5px; color:#6c4b5b; font-size:10px; line-height:1.6; }.ta-reverse-browser>footer.is-looking p { margin:0; animation:taReversePulse 1.1s ease-in-out infinite alternate; }
.ta-reverse-browser > footer { display:none !important; }
.ta-reverse-opened-icon { display:grid; flex:0 0 34px; place-items:center; width:34px; height:34px; border-radius:10px; background:#e8e3e6 center/cover no-repeat; color:#735a66; font-size:11px; }.ta-reverse-opened-icon.has-custom-image { color:transparent; }.ta-reverse-opened-icon.has-folder-image { grid-template:repeat(3,8px)/repeat(3,8px); gap:2px; padding:4px; background:rgba(232,227,230,.72); }.ta-reverse-opened-icon.has-folder-image img { display:block; width:8px; height:8px; border-radius:2px; object-fit:cover; }
.ta-default-ios-icon,.ta-reverse-opened-icon.has-default-image img,.ta-reverse-desktop-pages article>i.has-default-image img { display:block; width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.ta-reverse-opened-icon.has-default-image,.ta-reverse-desktop-pages article>i.has-default-image { overflow:hidden; background:transparent !important; color:transparent; }
.ta-reverse-browser>main>div { display:grid; gap:9px; }.ta-reverse-app-empty { padding:28px 12px!important; color:#aaa!important; text-align:center; }
.ta-reverse-chat-list article { display:flex!important; align-items:center; gap:10px; }.ta-reverse-chat-list article>i { display:grid; flex:0 0 38px; place-items:center; width:38px; height:38px; border-radius:50%; background:#87b99a; color:#fff; font-style:normal; }.ta-reverse-chat-list article>span { display:grid; flex:1; gap:4px; min-width:0; }.ta-reverse-chat-list article small { overflow:hidden; color:#999; text-overflow:ellipsis; white-space:nowrap; }.ta-reverse-chat-list article>em { color:#aaa; font-size:9px; font-style:normal; }
.ta-reverse-chat-list article.is-other-role { border-color:#d9c4cf; background:#fff8fb; }.ta-reverse-chat-list article.is-other-role>i { background:#aa768e; }.ta-reverse-chat-list article.is-other-role span small:first-of-type { color:#a36f87; font-weight:700; }
.ta-reverse-app-liaotian>main { padding:0; overflow:hidden; background:#f5f5f3; }.ta-reverse-chat-conversation { display:flex!important; flex-direction:column; width:100%; height:100%; min-height:0; gap:0!important; background-color:#f5f5f3; background-position:center; background-size:cover; background-repeat:no-repeat; }.ta-reverse-chat-conversation>.chat-person { flex:0 0 auto; }.ta-reverse-chat-conversation>.chat-messages { width:100%; min-height:0; overflow-y:auto; }.ta-reverse-chat-conversation .chat-avatar img,.ta-reverse-chat-conversation .chat-message-avatar img { width:100%; height:100%; object-fit:cover; }
.ta-reverse-forum-feed article { display:grid!important; gap:7px; }.ta-reverse-forum-feed article header { display:flex; align-items:center; gap:7px; }.ta-reverse-forum-feed article header i { display:grid; place-items:center; width:25px; height:25px; border-radius:50%; background:#ded9d5; font-style:normal; }.ta-reverse-forum-feed article h3 { font-size:12px; }.ta-reverse-forum-feed article p { padding:0!important; border:0!important; color:#666!important; line-height:1.55; }.ta-reverse-forum-feed article>small { color:#aaa; font-size:8px; }
.ta-reverse-music-page>section { display:flex; align-items:center; gap:12px; padding:18px; border-radius:18px; background:linear-gradient(135deg,#8e82b1,#c095ab); color:#fff; }.ta-reverse-music-page>section>i { display:grid; place-items:center; width:48px; height:48px; border-radius:15px; background:rgba(255,255,255,.2); font-size:22px; font-style:normal; }.ta-reverse-music-page>section>span { display:grid; gap:4px; }.ta-reverse-music-page>section small,.ta-reverse-music-page>section em { color:rgba(255,255,255,.72); font-size:8px; font-style:normal; }.ta-reverse-music-page>div { display:grid; gap:6px; }.ta-reverse-music-page article { display:flex!important; align-items:center; gap:10px; }.ta-reverse-music-page article>i { color:#999; font-style:normal; }.ta-reverse-music-page article>span { display:grid; flex:1; gap:3px; }.ta-reverse-music-page article small { color:#999; }
.ta-reverse-shop-page section { display:grid; gap:7px; }.ta-reverse-shop-page section h3 { font-size:12px; }.ta-reverse-shop-page section>div { display:grid; gap:7px; }.ta-reverse-shop-page article { display:flex!important; align-items:center; gap:9px; }.ta-reverse-shop-page article>i { display:grid; place-items:center; width:34px; height:34px; border-radius:10px; background:#f3dfc9; color:#9a6a3e; font-style:normal; }.ta-reverse-shop-page article>span { display:grid; flex:1; gap:3px; }.ta-reverse-shop-page article small { color:#999; }.ta-reverse-shop-page article strong { color:#b66d4c; font-size:10px; }.ta-reverse-flower-badge { justify-self:start; padding:5px 9px; border-radius:12px; background:#2e2830; color:#fff; font-size:8px; }
.ta-reverse-album-grid { grid-template-columns:repeat(3,1fr); }.ta-reverse-album-grid article { position:relative; display:grid!important; align-content:end; min-height:112px; overflow:hidden; background:linear-gradient(145deg,#d9d2d6,#aeb8c7)!important; }.ta-reverse-album-grid article>img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }.ta-reverse-album-grid article::after { content:''; position:absolute; inset:45% 0 0; background:linear-gradient(transparent,rgba(0,0,0,.72)); pointer-events:none; }.ta-reverse-album-grid article>i { font-size:20px; font-style:normal; }.ta-reverse-album-grid article>b,.ta-reverse-album-grid article>small { position:relative; z-index:1; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.55); }.ta-reverse-album-grid article>b { margin-top:12px; font-size:9px; }.ta-reverse-album-grid article>small { font-size:7px; }
.ta-reverse-calendar-page article { display:flex!important; gap:11px; border-left:3px solid #d48187!important; }.ta-reverse-calendar-page time { flex:0 0 52px; color:#b36f75; font-size:8px; }.ta-reverse-calendar-page span { display:grid; gap:4px; }.ta-reverse-calendar-page small { color:#999; }
.ta-reverse-nav { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:10px; width:min(100%,560px); margin:12px auto 0; }.ta-reverse-nav button { height:38px; border:0; border-radius:12px; background:#e8dfe4; color:#654d59; font:inherit; font-size:10px; font-weight:700; }.ta-reverse-nav button:last-child { background:#513e48; color:#fff; }.ta-reverse-nav button:disabled { opacity:.32; }.ta-reverse-nav span { color:#917f87; font-size:9px; }
.ta-reverse-final { width:min(100%,560px); margin:12px auto 0; padding:15px; border-radius:17px; background:#e8dde3; }.ta-reverse-final small { color:#967383; font-size:8px; }.ta-reverse-final p { margin-top:6px; font-size:11px; line-height:1.6; }.ta-reverse-final b { display:block; margin-top:8px; font-size:10px; }
.ta-reverse-user-phone { display:flex; flex:1; flex-direction:column; width:min(100%,390px); height:min(560px,100%); min-height:0; margin:0 auto; overflow:hidden; border:5px solid #2f2b2e; border-radius:34px; background-color:#b8b7c4; background-image:linear-gradient(145deg,#d9c5d0,#adbdcf); background-position:center; background-size:cover; box-shadow:0 20px 45px rgba(35,28,32,.24); contain:layout paint; }.ta-reverse-user-phone>header { display:flex; align-items:center; justify-content:space-between; padding:16px 20px 9px; color:#272126; text-shadow:0 1px 4px rgba(255,255,255,.5); }.ta-reverse-user-phone>header time,.ta-reverse-user-phone>header span { font-size:9px; font-weight:700; }.ta-reverse-user-phone>header i { font-size:8px; font-style:normal; letter-spacing:.08em; }
.ta-reverse-user-owner { display:flex; align-items:center; gap:6px; }.ta-reverse-user-owner>i,.ta-reverse-user-mini { display:grid; place-items:center; overflow:hidden; border-radius:50%; background:rgba(255,255,255,.8); font-style:normal; }.ta-reverse-user-owner>i { width:23px; height:23px; }.ta-reverse-user-mini { flex:0 0 30px; width:30px; height:30px; }.ta-reverse-user-owner img,.ta-reverse-user-mini img { width:100%; height:100%; object-fit:cover; }
.ta-reverse-desktop-pages { flex:1; overflow:hidden; }.ta-reverse-desktop-pages>main { display:grid; grid-template-columns:repeat(3,1fr); gap:24px 18px; padding:45px 25px; animation:none; transform:none; }.ta-reverse-desktop-pages article { display:grid; justify-items:center; gap:7px; transition:none; transform:none; }.ta-reverse-desktop-pages article>i { display:grid; place-items:center; width:54px; height:54px; border-radius:16px; background:rgba(255,255,255,.86) center/cover no-repeat; color:#6e5361; box-shadow:0 7px 15px rgba(57,45,51,.12); font-size:17px; font-style:normal; }.ta-reverse-desktop-pages article>i.has-custom-image { color:transparent; }.ta-reverse-desktop-pages article>i.has-folder-image { grid-template:repeat(3,15px)/repeat(3,15px); gap:3px; padding:5px; background:rgba(255,255,255,.45); }.ta-reverse-desktop-pages article>i.has-folder-image img { display:block; width:15px; height:15px; border-radius:4px; object-fit:cover; }.ta-reverse-desktop-pages article>b { padding:2px 5px; border-radius:6px; background:rgba(255,255,255,.38); font-size:9px; text-shadow:0 1px 4px #fff; }.ta-reverse-desktop-pages article.is-target { transform:none; }.ta-reverse-desktop-pages article.is-target>i { outline:3px solid rgba(255,255,255,.9); animation:none; box-shadow:0 0 0 5px rgba(126,87,105,.25),0 7px 15px rgba(57,45,51,.12); }
.ta-reverse-user-phone>footer { display:grid; justify-items:center; gap:10px; padding:12px 20px 20px; color:#54454c; font-size:9px; }.ta-reverse-user-phone>footer>div { display:flex; gap:5px; }.ta-reverse-user-phone>footer>div i { width:5px; height:5px; border-radius:50%; background:rgba(0,0,0,.2); }.ta-reverse-user-phone>footer>div i.is-current { width:14px; border-radius:9px; background:rgba(0,0,0,.55); }
.ta-reverse-browser.is-opening { transform:none; animation:none; }.ta-reverse-user-phone.is-chat-jump { justify-content:flex-start; background:#f3f3f5; transform:none; animation:none; }.ta-reverse-user-phone.is-chat-jump>main { display:grid; flex:1; place-content:center; justify-items:center; gap:12px; padding:30px; text-align:center; }.ta-reverse-user-phone.is-chat-jump>main>i { display:grid; place-items:center; width:70px; height:70px; overflow:hidden; border-radius:24px; background:#ddd; font-style:normal; }.ta-reverse-user-phone.is-chat-jump>main>i img { width:100%; height:100%; object-fit:cover; }.ta-reverse-user-phone.is-chat-jump>main b { font-size:13px; }.ta-reverse-user-phone.is-chat-jump>main small { color:#888; font-size:9px; }
@keyframes taReversePulse { from { opacity:.48; } to { opacity:1; } }
@keyframes taReverseDesktopSlide { from { opacity:.45; transform:translateX(80px); } to { opacity:1; transform:translateX(0); } }
@keyframes taReverseTargetTap { 0%,100% { transform:scale(1); } 55% { transform:scale(.76); } }
.ta-reverse-user-phone.is-thinking .ta-reverse-desktop-pages article { animation:none; }.ta-reverse-user-phone.is-thinking>footer>span { animation:taReversePulse 1.1s ease-in-out infinite alternate; }
@keyframes taReverseAppOpen { from { opacity:.2; transform:scale(.25); border-radius:40px; } to { opacity:1; transform:scale(1); } }
.ta-item-detail-layer { position:absolute; inset:0; z-index:12; display:grid; align-items:end; }
.ta-item-detail-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(0,0,0,.18); cursor:pointer; }
.ta-item-detail-sheet { position:relative; box-sizing:border-box; width:100%; max-height:72%; overflow-y:auto; overscroll-behavior:contain; padding:18px 18px max(24px,env(safe-area-inset-bottom)); border-radius:24px 24px 0 0; background:rgba(250,250,250,.97); box-shadow:0 -15px 40px rgba(0,0,0,.14); animation:taItemDetailIn .22s ease both; -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); }
.ta-item-detail-sheet > header { display:flex; align-items:center; gap:12px; }
.ta-item-detail-sheet > header > i { display:grid; flex:0 0 48px; place-items:center; width:48px; height:48px; border-radius:14px; background:#e8e8e8; color:#555; }
.ta-item-detail-sheet > header > i img { width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.ta-item-detail-sheet > header > i svg { width:25px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; }
.ta-item-detail-sheet > header > div { display:grid; flex:1; gap:3px; min-width:0; }
.ta-item-detail-sheet > header small,.ta-item-detail-sheet main small { color:#999; font-size:8px; font-weight:700; letter-spacing:.12em; }
.ta-item-detail-sheet > header h2 { overflow:hidden; font-size:15px; text-overflow:ellipsis; white-space:nowrap; }
.ta-item-detail-sheet > header span { color:#888; font-size:9px; }
.ta-item-detail-sheet > header button { display:grid; place-items:center; width:30px; height:30px; border:0; border-radius:50%; background:#e9e9e9; color:#555; font:inherit; font-size:20px; cursor:pointer; }
.ta-item-detail-sheet > main { margin-top:16px; padding:16px; border-radius:16px; background:#eee; }
.ta-item-detail-sheet > main p { display:block; max-height:none; margin-top:8px; color:#333; font-size:13px; line-height:1.7; white-space:pre-wrap; overflow:visible; overflow-wrap:anywhere; word-break:break-word; }
@keyframes taItemDetailIn { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:translateY(0); } }
@media not all {
  .ta-day-plan > header h2,.ta-recent-playlist > header h2,.ta-order-list > header h2 { color:#f1f1f1; }
  .ta-calendar-date-nav button { border-color:#444; background:#2b2b2e; color:#ddd; }
  .ta-day-timeline article > i { border-color:#202631; background:#ddd; }
  .ta-day-timeline article > div,.ta-recent-playlist > div,.ta-order-list > article { border-color:#3b3b3d; background:#2b2b2e; }
  .ta-day-timeline time b,.ta-recent-playlist button,.ta-order-list article > button { color:#eee; }
  .ta-order-shop,.ta-recent-playlist button { border-color:#3c3c3f; }
  .ta-order-list article > button strong { color:#fff; }
  .ta-item-detail-sheet { background:rgba(36,36,38,.97); color:#f2f2f2; }
  .ta-item-detail-sheet > header > i,.ta-item-detail-sheet > header button,.ta-item-detail-sheet > main { background:#454548; }
  .ta-item-detail-sheet > main p { color:#eee; }
  .ta-calendar-empty { border-color:#4a4a4d; color:#aaa; }
  .ta-calendar-empty b { color:#eee; }
}

/* 用户豆包：历史记录、保存新对话与分享到聊天联系人。 */
.doubao-header-tools button[data-doubao-save]:disabled { opacity:.28; cursor:not-allowed; }
.doubao-header-tools button[data-doubao-save] svg { fill:none; stroke:currentColor; }
.doubao-header-tools button[data-doubao-close] { color:#111; font-size:31px; font-weight:300; line-height:1; }
.doubao-history-layer,.doubao-share-layer { position:absolute; inset:0; z-index:30; }
.doubao-history-backdrop,.doubao-share-backdrop { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(0,0,0,.2); cursor:pointer; }
.doubao-history-layer > aside { position:absolute; top:0; bottom:0; left:0; display:flex; flex-direction:column; width:min(86vw,370px); background:#fff; box-shadow:12px 0 38px rgba(0,0,0,.17); animation:doubaoHistorySlideIn .22s ease both; }
.doubao-history-layer > aside > header,.doubao-share-layer > section > header { display:flex; align-items:flex-start; justify-content:space-between; padding:max(24px,env(safe-area-inset-top)) 18px 14px; border-bottom:1px solid #ededed; }
.doubao-history-layer header small,.doubao-share-layer header small { color:#999; font-size:8px; font-weight:700; letter-spacing:.15em; }
.doubao-history-layer header h2,.doubao-share-layer header h2 { margin-top:5px; font-size:20px; }
.doubao-history-layer header > button,.doubao-share-layer header > button { display:grid; place-items:center; width:30px; height:30px; padding:0; border:0; border-radius:50%; background:#eee; color:#555; font:inherit; font-size:20px; cursor:pointer; }
.doubao-history-layer aside > main { flex:1; overflow-y:auto; padding:12px; }
.doubao-history-layer main > section { margin-bottom:17px; }
.doubao-history-layer main h3 { margin:0 4px 7px; color:#888; font-size:10px; font-weight:600; }
.doubao-history-layer main article { position:relative; display:flex; align-items:center; min-height:61px; margin-bottom:7px; border:1px solid #e8e8e8; border-radius:14px; background:#fafafa; }
.doubao-history-entry { display:grid; flex:1; gap:5px; min-width:0; min-height:59px; padding:10px 9px 10px 12px; border:0; background:transparent; color:#222; font:inherit; text-align:left; cursor:pointer; }
.doubao-history-entry b,.doubao-history-entry small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.doubao-history-entry b { font-size:11px; }
.doubao-history-entry small { color:#999; font-size:9px; }
.doubao-history-more { flex:0 0 42px; width:42px; height:42px; padding:0; border:0; background:transparent; color:#777; font:inherit; font-size:13px; letter-spacing:1px; cursor:pointer; }
.doubao-history-delete { display:grid; flex:0 0 32px; place-items:center; width:32px; height:32px; margin-right:7px; padding:0; border:0; border-radius:9px; background:rgba(224,48,48,.09); color:#df3838; cursor:pointer; }
.doubao-history-delete svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.doubao-history-actions { position:absolute; top:48px; right:8px; z-index:2; min-width:130px; padding:5px; border:1px solid #ddd; border-radius:11px; background:#fff; box-shadow:0 9px 26px rgba(0,0,0,.15); }
.doubao-history-actions button { width:100%; min-height:34px; padding:0 9px; border:0; border-radius:7px; background:transparent; color:#222; font:inherit; font-size:10px; text-align:left; cursor:pointer; }
.doubao-history-actions button:hover { background:#f1f1f1; }
.doubao-history-empty { padding:25vh 15px; color:#999; font-size:11px; text-align:center; }
.doubao-share-layer { display:grid; align-items:end; }
.doubao-share-layer > section { position:relative; max-height:72%; overflow:hidden; border-radius:24px 24px 0 0; background:#fff; box-shadow:0 -14px 40px rgba(0,0,0,.16); animation:none; }
.doubao-share-layer > section > main { display:grid; gap:7px; max-height:55vh; overflow-y:auto; padding:12px 14px max(18px,env(safe-area-inset-bottom)); }
.doubao-share-layer main > button { display:flex; align-items:center; gap:10px; width:100%; min-height:58px; padding:8px 10px; border:1px solid #e9e9e9; border-radius:14px; background:#fafafa; color:#222; font:inherit; text-align:left; cursor:pointer; }
.doubao-share-layer main > button > i { display:grid; flex:0 0 40px; place-items:center; width:40px; height:40px; overflow:hidden; border-radius:50%; background:#e7e7e7; color:#777; font-style:normal; }
.doubao-share-layer main > button > i img { width:100%; height:100%; object-fit:cover; }
.doubao-share-layer main > button > span { display:grid; flex:1; gap:3px; min-width:0; }
.doubao-share-layer main b { font-size:12px; }
.doubao-share-layer main small { color:#999; font-size:9px; }
.doubao-share-layer main em { color:#aaa; font-size:18px; font-style:normal; }
.doubao-history-view-footer { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 18px max(16px,env(safe-area-inset-bottom)); border-top:1px solid #eee; background:#fff; }
.doubao-history-view-footer span { color:#999; font-size:10px; }
.doubao-history-view-footer button { min-height:36px; padding:0 13px; border:0; border-radius:11px; background:#111; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
@keyframes doubaoHistorySlideIn { from { opacity:0; transform:translateX(-28px); } to { opacity:1; transform:translateX(0); } }
@keyframes doubaoShareUp { from { opacity:0; transform:translateY(28px); } to { opacity:1; transform:translateY(0); } }
@media not all {
  .doubao-history-layer > aside,.doubao-share-layer > section,.doubao-history-view-footer { background:#fff; color:#111; }
}
.chat-bubble.doubao-share { min-width:min(270px,72vw); padding:0 !important; overflow:hidden; }
.chat-doubao-share-card { display:grid; gap:7px; padding:13px; background:rgba(255,255,255,.12); }
.chat-doubao-share-card > small { font-size:9px; opacity:.68; }
.chat-doubao-share-card > strong { font-size:13px; line-height:1.4; }
.chat-doubao-share-card > div { display:grid; gap:5px; padding:8px 9px; border-radius:9px; background:rgba(0,0,0,.08); }
.chat-doubao-share-card p { display:flex; gap:6px; margin:0; overflow:hidden; font-size:9px; line-height:1.45; text-overflow:ellipsis; white-space:nowrap; }
.chat-doubao-share-card p b { flex:0 0 auto; }
.chat-doubao-share-card > em { font-size:8px; font-style:normal; opacity:.65; }
 .fanfic-chapter-actions { display:flex; gap:8px; margin-top:8px; }
 .fanfic-chapter-actions button { flex:1; min-height:31px; padding:0 10px; border:0; border-radius:9px; background:#e5dce7; color:#765f7c; font:inherit; font-size:9px; cursor:pointer; }
 .fanfic-chapter-actions button:disabled { opacity:.55; cursor:wait; }
 @media not all { .fanfic-chapter-actions button { background:rgba(255,255,255,.12); color:#ddd; } }

/* 豆包在窄屏上的消息安全边距：两侧统一留白，不让气泡贴边。 */
@media (max-width:430px) {
  .ta-role-doubao-page { --ta-doubao-side-gap:16px; --ta-doubao-bubble-width:85%; }
  .doubao-main,
  .ta-role-doubao-page .doubao-main { padding-right:var(--ta-doubao-side-gap,16px) !important; padding-left:var(--ta-doubao-side-gap,16px) !important; }
  .doubao-messages,
  .ta-role-doubao-page .doubao-messages { width:100%; max-width:none; }
  .doubao-message.is-user,
  .ta-role-doubao-page .doubao-message.is-user { justify-self:end !important; transform:none !important; margin-right:0 !important; margin-left:auto !important; }
  .ta-role-doubao-page .doubao-message.is-user { max-width:var(--ta-doubao-bubble-width) !important; }
  .doubao-message.is-assistant,
  .ta-role-doubao-page .doubao-message.is-assistant { transform:none !important; margin-left:0 !important; margin-right:0 !important; inset-inline:0 !important; }
  .ta-role-doubao-page .doubao-message.is-assistant { justify-self:start !important; width:var(--ta-doubao-bubble-width) !important; max-width:var(--ta-doubao-bubble-width) !important; }
}

/* 最终兜底：IF 阅读详情始终白底，系统深色模式不得反转。 */
html .ifspace-app .ifspace-detail,
html .ifspace-app .ifspace-detail > main { background-color:#fff !important; color:#080808 !important; }
html .ifspace-app .ifspace-detail .ifspace-world-card { border:1px solid #080808 !important; background:#fff !important; color:#080808 !important; box-shadow:none !important; }
html .ifspace-app .ifspace-detail .ifspace-world-card span,
html .ifspace-app .ifspace-detail .ifspace-world-card h2,
html .ifspace-app .ifspace-detail .ifspace-world-card p { color:var(--if-reading-color,#111) !important; }

/* IF 时空回复卡片、撰写状态与重 ROLL。 */
.ifspace-detail .ifspace-message:not(.is-user) { box-sizing:border-box; width:92%; max-width:680px; margin:16px auto; padding:20px 22px; border:1px solid #080808; background:#fff; color:#080808; text-align:left; }
.ifspace-detail .ifspace-message.is-user { width:min(82%,560px); margin:14px 0 14px auto; padding:12px 14px; border:1px solid #b8b8b3; background:#fff; text-align:left; }
.ifspace-detail .ifspace-message:not(.is-user) > span { padding-bottom:9px; border-bottom:1px solid #d4d4d0; color:#080808; }
.ifspace-writing { display:flex; align-items:center; justify-content:center; gap:5px; width:92%; max-width:680px; min-height:72px; box-sizing:border-box; margin:16px auto; border:1px solid #080808; background:#fff; color:#080808; }
.ifspace-writing span { margin-right:4px; font:700 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }
.ifspace-writing i { width:4px; height:4px; border-radius:50%; background:#080808; animation:ifspace-writing-dot 1s ease-in-out infinite; }.ifspace-writing i:nth-child(3) { animation-delay:.14s; }.ifspace-writing i:nth-child(4) { animation-delay:.28s; }
@keyframes ifspace-writing-dot { 0%,70%,100% { opacity:.25; transform:translateY(0); } 35% { opacity:1; transform:translateY(-3px); } }
.ifspace-composer .ifspace-reroll { flex:0 0 auto; width:auto; min-width:58px; padding:0 8px; border:1px solid #080808; border-radius:0; background:#fff; color:#080808; font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.06em; }
.ifspace-composer .ifspace-reroll:disabled { border-color:#c8c8c4; color:#aaa; cursor:not-allowed; }
.ifspace-composer .ifspace-reroll { min-width:36px; width:36px; padding:0; font:400 23px/1 Arial,"PingFang SC",sans-serif; letter-spacing:0; }
.ifspace-detail > header > .ifspace-type-button { font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif !important; font-weight:500; }
.ifspace-type-panel .ifspace-type-inline { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:13px; }
.ifspace-type-panel .ifspace-type-inline > label { display:grid; gap:7px; min-width:0; color:#080808; font:700 9px/1.3 Arial,"PingFang SC",sans-serif; }
.ifspace-type-panel input[type="number"] { box-sizing:border-box; width:100%; height:38px; padding:0 9px; border:1px solid #080808; border-radius:0; background:#fff; color:#080808; font:500 12px Arial,"PingFang SC",sans-serif; }
@media (prefers-reduced-motion:reduce) { .ifspace-writing i { animation:none; opacity:.65; } }

.ifspace-loading { display:grid; place-content:center; justify-items:center; width:100%; min-height:100%; box-sizing:border-box; padding:38px 26px; background:#fff; color:#080808; text-align:center; }
.ifspace-loading-window { position:relative; width:min(238px,72vw); aspect-ratio:1; margin-bottom:34px; overflow:hidden; border:1px solid #080808; background:#080808; color:#fff; box-shadow:9px 9px 0 #e7e7e3; }
.ifspace-loading-index { position:absolute; top:15px; left:16px; z-index:3; font:700 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.18em; }
.ifspace-loading-window > em { position:absolute; right:15px; bottom:14px; z-index:4; color:rgba(255,255,255,.62); font:400 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; font-style:normal; letter-spacing:.14em; }
.ifspace-loading-star { position:absolute; z-index:2; width:3px; height:3px; border-radius:50%; background:#fff; animation:ifspace-loading-star 2.4s ease-in-out infinite; }
.ifspace-loading-star.star-a { top:27%; left:20%; }
.ifspace-loading-star.star-b { top:18%; right:23%; width:2px; height:2px; animation-delay:.6s; }
.ifspace-loading-star.star-c { top:49%; left:37%; width:2px; height:2px; animation-delay:1.2s; }
.ifspace-loading-star.star-d { top:38%; right:12%; animation-delay:1.8s; }
.ifspace-loading-planet { position:absolute; right:-34%; bottom:-47%; width:117%; aspect-ratio:1; border:1px solid rgba(255,255,255,.75); border-radius:50%; background:#f7f7f3; animation:ifspace-loading-drift 5.8s ease-in-out infinite alternate; }
.ifspace-loading-planet::before { position:absolute; top:-7%; left:-5%; width:108%; height:108%; border:1px solid rgba(255,255,255,.35); border-radius:50%; content:""; }
.ifspace-loading-planet b { position:absolute; top:-9%; left:-19%; width:82%; height:82%; border-radius:50%; background:#080808; }
.ifspace-loading > small { font:700 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.18em; }
.ifspace-loading > h1 { margin-top:13px; font-size:28px; font-weight:650; letter-spacing:-.06em; }
.ifspace-loading > p { margin-top:12px; color:#777; font-size:11px; line-height:1.8; }
.ifspace-loading-progress { width:min(230px,70vw); height:2px; margin-top:25px; overflow:hidden; background:#dededb; }
.ifspace-loading-progress i { display:block; width:42%; height:100%; background:#080808; animation:ifspace-loading-progress 1.55s ease-in-out infinite; }
@keyframes ifspace-loading-drift { from { transform:translate3d(-2px,2px,0); } to { transform:translate3d(7px,-7px,0); } }
@keyframes ifspace-loading-star { 0%,100% { opacity:.28; } 50% { opacity:1; } }
@keyframes ifspace-loading-progress { 0% { transform:translateX(-110%); } 50% { transform:translateX(80%); } 100% { transform:translateX(260%); } }
@media (prefers-reduced-motion:reduce) { .ifspace-loading-planet,.ifspace-loading-star,.ifspace-loading-progress i { animation:none; } }

.ifspace-detail > header > .ifspace-type-button,
.ifspace-detail > header > button[data-if-delete] { display:grid; place-items:center; flex:0 0 29px; width:29px !important; height:29px !important; padding:0; font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif; font-size:12px; font-weight:500; line-height:1; text-align:center; }
.ifspace-detail > header > button[data-if-delete] { font-size:0; }
.ifspace-detail > header > button[data-if-delete]::after { display:block; content:"删"; font:500 12px/1 Arial,"PingFang SC","Microsoft YaHei",sans-serif; transform:translateY(-3px); }

/* 开场、用户消息与角色回复使用同一阅读栏宽度。 */
html .ifspace-app .ifspace-detail .ifspace-world-card,
html .ifspace-app .ifspace-detail .ifspace-character,
html .ifspace-app .ifspace-detail .ifspace-transcript-title,
html .ifspace-app .ifspace-detail .ifspace-message-list { box-sizing:border-box; width:100%; max-width:680px; }
html .ifspace-app .ifspace-detail .ifspace-message { box-sizing:border-box; width:100%; max-width:680px; margin:16px auto; }
html .ifspace-app .ifspace-detail .ifspace-message.is-user { width:100%; max-width:680px; margin:16px auto; padding:17px 20px; border:1px solid #9f9f9a; border-left:6px solid #080808; background:#f1f1ee; color:#080808; text-align:left; }
html .ifspace-app .ifspace-detail .ifspace-message.is-user > span { display:inline-block; margin-bottom:10px; padding:4px 7px; border:0; background:#080808; color:#fff; }
html .ifspace-app .ifspace-detail .ifspace-message.is-user p { margin:0; color:#080808 !important; font-family:Arial,"PingFang SC",sans-serif; font-size:calc(var(--if-reading-size,15px) * .92); line-height:1.75; text-indent:0; }
html .ifspace-app .ifspace-detail .ifspace-message:not(.is-user) { padding:20px 22px; border:1px solid #080808; background:#fff; }
html .ifspace-app .ifspace-detail .ifspace-world-card h2 { margin-top:24px; color:var(--if-reading-color,#111) !important; font-family:var(--if-reading-font,Georgia,"Songti SC",serif); font-size:calc(var(--if-reading-size,15px) + 10px); font-weight:600; line-height:1.45; letter-spacing:-.025em; text-indent:0; }

/* 桌面 App 图片直接贴合裁剪区，移除容器自带的白色描边与内高光。 */
.app-icon:has(> .default-app-icon),
.dock-icon:has(> .default-app-icon) {
  border:0 !important;
  background:transparent !important;
  box-shadow:0 3px 8px rgba(0,0,0,.12) !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.app-icon > .default-app-icon,
.dock-icon > .default-app-icon { transform:scale(1.02); }

/* TA 角色手机：图片图标不显示白色容器边缘或内高光。 */
.ta-app-icon > i:has(img),
.ta-icon-swap-preview:has(img),
.ta-reverse-desktop-pages article > i:has(img),
.ta-reverse-opened-icon:has(img) {
  overflow:hidden;
  border:0 !important;
  background:transparent !important;
  box-shadow:0 7px 15px rgba(57,45,51,.12) !important;
}
.ta-app-icon > i > img,
.ta-icon-swap-preview > img { transform:scale(1.02); }

/* 文件夹内的图片 App 与桌面一致：去掉白色描边和内高光。 */
.folder-app-icon:has(img),.folder-mini-app:has(img) { overflow:hidden; border:0 !important; background:transparent !important; box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
.folder-app-icon>img { display:block; width:100%; height:100%; border-radius:inherit; object-fit:cover; transform:scale(1.02); }

/* 桌面与文件夹图标统一使用更接近 iOS 主屏图标的圆角比例。 */
.app-icon,
.dock-icon,
.desktop-folder-icon,
.folder-app-icon { border-radius:17px; }
.folder-mini-app { border-radius:3px; }

/* Ta 手机及“TA 看我”里的手机预览也同步同一套 iOS 图标圆角。 */
.ta-app-icon > i { border-radius:17px; }
.ta-app-icon > i > img,
.ta-icon-swap-preview > img { border-radius:inherit; }
.ta-icon-swap-preview { border-radius:14px; }
.ta-reverse-desktop-pages article > i { border-radius:15px; }
.ta-reverse-desktop-pages article > i.has-folder-image img { border-radius:3px; }
.ta-reverse-opened-icon { border-radius:9px; }
.ta-reverse-opened-icon.has-folder-image img { border-radius:3px; }
.ta-reverse-cheat-phone button > i { border-radius:10px; }

/* 用户与角色的余额区统一为银行卡卡面。 */
.chat-user-wallet,.ta-wallet-balance { position:relative; isolation:isolate; min-height:190px; overflow:hidden; padding:24px !important; border:0 !important; border-radius:22px !important; background:linear-gradient(135deg,#17191f 0%,#303747 58%,#15171c 100%) !important; color:#fff !important; box-shadow:0 15px 34px rgba(20,24,32,.24) !important; }
.chat-user-wallet::before,.ta-wallet-balance::before { display:block; width:40px; height:29px; margin-bottom:15px; border:1px solid rgba(255,255,255,.38); border-radius:7px; background:linear-gradient(135deg,#e8d9a3,#aa9360); box-shadow:inset 0 0 0 5px rgba(255,255,255,.13); content:""; }
.chat-user-wallet::after,.ta-wallet-balance::after { position:absolute; right:22px; bottom:19px; color:rgba(255,255,255,.7); font:600 10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.13em; content:attr(data-card-number); }
.chat-user-wallet h3,.chat-user-wallet>div:first-child>span,.ta-wallet-balance>small { color:rgba(255,255,255,.68) !important; }
.chat-user-wallet>div:first-child>b,.ta-wallet-balance>strong { color:#fff; text-shadow:0 2px 8px rgba(0,0,0,.2); }
.chat-user-wallet .chat-wallet-actions { position:absolute; top:22px; right:22px; margin:0; }
.chat-user-wallet .chat-wallet-actions button { flex:none; min-height:29px; padding:0 10px; border-color:rgba(255,255,255,.2); background:rgba(255,255,255,.12); color:#fff; }
.ta-wallet-balance>div { margin-bottom:25px; }

/* 时间照片卡片的时钟固定占满五个字符，避免数字宽度变化时右侧被裁掉。 */
.time-photo-meta strong {
  flex:0 0 auto;
  min-width:5ch;
  overflow:visible;
  text-overflow:clip;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.time-photo-meta span {
  flex:1 1 0;
  min-width:0;
}
 .chat-launch-contact > span { min-width:0; }
 .chat-launch-contact > span > b { display:flex; align-items:baseline; gap:7px; min-width:0; font-size:15px; line-height:1.25; }
 .chat-contact-real-name { flex:0 1 auto; overflow:hidden; color:#999; font-size:11px; font-style:italic; font-weight:400; text-overflow:ellipsis; white-space:nowrap; }
 .chat-launch-contact > span > small { display:block; width:100%; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
 .chat-moment { min-width:0; overflow:hidden; }
 .chat-moment-head > div { min-width:0; }
.chat-moment > p { display:block; width:auto; max-width:calc(100% - 43px); overflow-wrap:anywhere; word-break:break-word; white-space:pre-wrap; }
/* 朋友圈正文、评论和点赞必须各自占一整行，避免评论回复被挤到正文右侧。 */
.chat-moment {
  display: block !important;
  width: 100%;
  box-sizing: border-box;
}
.chat-moment > .chat-moment-head,
.chat-moment > p,
.chat-moment > img,
.chat-moment > .chat-moment-location,
.chat-moment > .chat-moment-visibility-label,
.chat-moment > .chat-moment-footer,
.chat-moment > .chat-moment-comments,
.chat-moment > .chat-moment-liked-by {
  display: block;
  width: auto;
  max-width: none;
  min-width: 0;
  box-sizing: border-box;
  grid-column: 1 / -1;
}
.chat-moment > .chat-moment-head { display: flex; }
.chat-moment > .chat-moment-footer { display: flex; }
.chat-moment > .chat-moment-comments {
  clear: both;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  width: auto;
  margin-left: 43px;
}
.chat-moment-comments > div,
.chat-moment-comments .chat-moment-comment,
.chat-moment-comments .chat-moment-comment-replies {
  min-width: 0;
  width: 100%;
  box-sizing: border-box;
}
.chat-moment-comments > div { display: block !important; }
.chat-moment-comments .chat-moment-comment {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr) !important;
  align-items: start;
}
.chat-moment-comments .chat-moment-comment-replies {
  display: grid !important;
  grid-column: 1 / -1 !important;
}
.chat-moment > .chat-moment-liked-by {
  clear: both;
  display: flex !important;
  width: auto;
  margin-left: 43px;
}
.chat-moment-footer button[data-moment-like].is-liked {
  color: #777 !important;
  font-weight: 700;
}
.chat-moment-footer button[data-moment-like].is-liked::first-letter {
  color: #e46786;
}
@media not all {
  .chat-moment-footer button[data-moment-like].is-liked { color: #bbb !important; }
  .chat-moment-footer button[data-moment-like].is-liked::first-letter { color: #ff8ca6; }
}
/* 豆包消息操作栏：紧凑小图标 */
.doubao-answer-actions button { width:36px !important; height:36px !important; border-radius:12px !important; }
.doubao-answer-actions button svg { width:20px !important; height:20px !important; }
/* 豆包回复操作栏直接使用参考图原始像素，避免重绘图标失真。 */
.doubao-app .doubao-answer-actions button {
  width: 50px !important;
  height: 50px !important;
  border: 0 !important;
  border-radius: 16px !important;
  background-color: transparent !important;
  background-image: url("assets/ui/doubao-actions-reference.jpeg") !important;
  background-size: 527.5px 113px !important;
  background-repeat: no-repeat !important;
}
.doubao-app .doubao-answer-actions button svg { visibility: hidden; }
.doubao-app .doubao-answer-actions button:nth-child(1) { background-position: -42px -26px !important; }
.doubao-app .doubao-answer-actions button:nth-child(2) { background-position: -106px -26px !important; }
.doubao-app .doubao-answer-actions button:nth-child(3) { background-position: -169px -26px !important; }
.doubao-app .doubao-answer-actions button:nth-child(4) { background-position: -232px -26px !important; }
.doubao-app .doubao-answer-actions button:nth-child(5) { background-position: -295px -26px !important; }
.doubao-app .doubao-answer-actions button:nth-child(6) { background-position: -420px -26px !important; }
/* 豆包与 Ta 手机豆包共用独立裁切图标，并适配 360px / 390px 屏宽。 */
.doubao-answer-actions { gap: clamp(7px, 2.4vw, 11px) !important; padding-inline: clamp(14px, 4.5vw, 22px) !important; }
.doubao-answer-actions button {
  flex: 0 0 clamp(34px, 10vw, 40px) !important;
  width: clamp(34px, 10vw, 40px) !important;
  height: clamp(34px, 10vw, 40px) !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: clamp(11px, 3.2vw, 13px) !important;
  background-color: transparent !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  background-repeat: no-repeat !important;
  overflow: hidden;
}
.doubao-answer-actions button svg { visibility: hidden; }
.doubao-answer-actions button:nth-child(1) { background-image: url("assets/ui/doubao-action-copy.jpeg") !important; }
.doubao-answer-actions button:nth-child(2) { background-image: url("assets/ui/doubao-action-voice.jpeg") !important; }
.doubao-answer-actions button:nth-child(3) { background-image: url("assets/ui/doubao-action-like.jpeg") !important; }
.doubao-answer-actions button:nth-child(4) { background-image: url("assets/ui/doubao-action-dislike.jpeg") !important; }
.doubao-answer-actions button:nth-child(5) { background-image: url("assets/ui/doubao-action-share.jpeg") !important; }
.doubao-answer-actions button:nth-child(6) { background-image: url("assets/ui/doubao-action-retry.jpeg") !important; }
.ta-reverse-takeover-composer { position:sticky; bottom:8px; z-index:3; display:flex; flex:0 0 auto; align-items:center; gap:8px; margin:8px 12px 12px; padding:7px 8px 7px 12px; border:1px solid rgba(0,0,0,.1); border-radius:18px; background:rgba(255,255,255,.96); box-shadow:0 5px 18px rgba(0,0,0,.12); }
.ta-reverse-takeover-composer span { flex:1; min-height:18px; max-height:54px; overflow-y:auto; color:#333; font-size:11px; line-height:18px; white-space:normal; overflow-wrap:anywhere; }
.ta-reverse-takeover-composer i { color:#2878ff; font-size:10px; font-style:normal; }
.ta-reverse-message-image { display:block; width:min(150px,48vw); max-height:180px; border-radius:10px; object-fit:cover; }
.ta-reverse-message-image.is-sticker { width:min(92px,28vw); max-height:92px; border-radius:6px; object-fit:contain; }
.ta-reverse-message-voice { display:block; min-width:90px; }
.ta-reverse-message-transfer { display:block; min-width:120px; font-weight:600; }
.ta-reverse-browser.is-takeover { width:100%; height:100%; max-height:none; }
.ta-reverse-browser.is-takeover > footer { display:none; }
.ta-reverse-browser.is-takeover + .ta-reverse-catch-now { display:none; }
.ta-reverse-browser.is-takeover > main { min-height:0; }
.ta-reverse-browser.is-takeover .ta-reverse-chat-conversation { overflow:hidden; }
.ta-reverse-browser.is-takeover .ta-reverse-chat-conversation > .chat-messages { flex:1 1 auto; min-height:0; }
.ta-reverse-page.is-live .ta-reverse-browser { height:100%; max-height:none; }
.ta-reverse-chat-conversation .chat-message { box-sizing:border-box; width:100%; max-width:100%; padding:0 12px; }
.ta-reverse-chat-conversation .chat-message-line { box-sizing:border-box; width:100%; max-width:100%; }
.ta-reverse-chat-conversation .chat-message.is-user .chat-message-line { justify-content:flex-start; }
.ta-reverse-chat-conversation .chat-message.is-character .chat-message-line { justify-content:flex-start; }
.ta-reverse-chat-conversation .chat-message-avatar { flex:0 0 30px !important; width:30px !important; min-width:30px; height:30px !important; overflow:hidden; }
.ta-reverse-chat-conversation .chat-bubble { flex:0 1 auto; max-width:calc(100% - 82px); }
.ta-reverse-chat-conversation .chat-message-line > small { flex:0 0 auto; }
.ta-reverse-chat-conversation > .chat-messages { box-sizing:border-box; width:100% !important; max-width:100%; padding-right:12px; padding-left:12px; overflow-x:hidden; }
.ta-reverse-chat-conversation .chat-message.is-user .chat-message-avatar { margin-right:3px; }
.ta-reverse-chat-conversation .chat-message .chat-bubble.image,
.ta-reverse-chat-conversation .chat-message.is-user .chat-bubble.image,
.ta-reverse-chat-conversation .chat-message.is-character .chat-bubble.image { box-sizing:border-box; max-width:calc(100% - 82px) !important; overflow:hidden; }
.ta-reverse-chat-conversation .chat-message .chat-bubble.image img.ta-reverse-message-image {
  display:block;
  width:min(140px,42vw) !important;
  height:auto !important;
  max-width:100% !important;
  max-height:180px !important;
  object-fit:contain !important;
}
.ta-reverse-chat-conversation .chat-message .chat-bubble.image img.ta-reverse-message-image.is-sticker {
  width:min(88px,26vw) !important;
  height:min(88px,26vw) !important;
  max-height:88px !important;
  object-fit:contain !important;
}
.ta-reverse-chat-conversation .chat-message .chat-bubble.sticker { max-width:calc(100% - 82px) !important; padding:3px; overflow:hidden; background:transparent; border:0; }
.ta-reverse-chat-conversation .chat-message .chat-bubble.sticker img.ta-reverse-message-image.is-sticker { display:block; width:min(88px,26vw) !important; height:min(88px,26vw) !important; max-width:88px !important; max-height:88px !important; object-fit:contain !important; }
.ta-reverse-chat-conversation,
.ta-reverse-chat-conversation > .chat-messages,
.ta-reverse-chat-conversation .chat-message-line { overflow-x:hidden; }
.ta-reverse-app-cheat { margin:12px 0; padding:13px; border:1px dashed rgba(0,0,0,.14); border-radius:16px; background:rgba(255,255,255,.58); }
.ta-reverse-app-cheat header { display:flex; align-items:center; justify-content:space-between; margin-bottom:9px; }
.ta-reverse-app-cheat header span { color:#333; font-size:11px; font-weight:700; }
.ta-reverse-app-cheat header small { color:#aaa; font-size:9px; }
.ta-reverse-app-cheat > div { display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; }
.ta-reverse-app-cheat > div::-webkit-scrollbar { display:none; }
.ta-reverse-app-cheat button { flex:0 0 auto; min-height:29px; padding:0 10px; border:1px solid rgba(0,0,0,.1); border-radius:999px; background:#fff; color:#777; font:inherit; font-size:10px; cursor:pointer; }
.ta-reverse-app-cheat button.is-selected { border-color:#222; background:#222; color:#fff; }
.ta-reverse-cheat-phone { position:relative; overflow:hidden; margin:0 0 14px; padding:14px 13px 16px; border:1px solid rgba(0,0,0,.08); border-radius:24px; background-color:#eef1f5; background-position:center; background-size:cover; box-shadow:0 10px 28px rgba(0,0,0,.08); }
.ta-reverse-cheat-phone::before { position:absolute; inset:0; background:rgba(245,247,250,.78); content:""; }
.ta-reverse-cheat-phone > * { position:relative; }
.ta-reverse-cheat-phone header { display:flex; align-items:center; justify-content:space-between; margin-bottom:13px; }
.ta-reverse-cheat-phone header span { color:#333; font-size:11px; font-weight:700; }
.ta-reverse-cheat-phone header small { color:#888; font-size:9px; }
.ta-reverse-cheat-phone main { display:grid; grid-template-columns:repeat(5,1fr); gap:12px 7px; }
.ta-reverse-cheat-phone button { display:grid; place-items:center; gap:4px; min-width:0; padding:0; border:0; background:transparent; color:#444; font:inherit; cursor:pointer; }
.ta-reverse-cheat-phone button > i { display:grid; place-items:center; width:38px; height:38px; overflow:hidden; border:2px solid transparent; border-radius:11px; background:#fff; transition:.15s ease; }
.ta-reverse-cheat-phone button > i img { width:100%; height:100%; object-fit:cover; }
.ta-reverse-cheat-phone button b { overflow:hidden; max-width:52px; font-size:8px; font-weight:500; text-overflow:ellipsis; white-space:nowrap; }
.ta-reverse-cheat-phone button.is-selected > i { border-color:#ff4d5e; box-shadow:0 0 0 3px rgba(255,77,94,.2); transform:scale(1.06); }
.ta-reverse-user-phone.is-thinking .ta-reverse-desktop-pages article,
.ta-reverse-user-phone.is-thinking .ta-reverse-desktop-pages article[data-ta-reverse-prefer] { cursor:pointer; }
.ta-reverse-user-phone.is-thinking .ta-reverse-desktop-pages article[data-ta-reverse-prefer].is-selected > i { outline:3px solid #ff4d5e; box-shadow:0 0 0 5px rgba(255,77,94,.22),0 7px 15px rgba(57,45,51,.12); transform:scale(1.06); }
.ta-refresh-sheet main > button > i.ta-refresh-builtin-icon { padding:0; overflow:hidden; border-radius:12px; background:transparent; }
.ta-refresh-sheet .ta-refresh-builtin-icon .ta-default-ios-icon { display:block; width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.doubao-answer-actions button > img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover;
  border-radius: inherit;
}
.doubao-answer-actions button > img { display:block; width:100%; height:100%; border-radius:inherit; object-fit:cover; }
/* 覆盖旧整图精灵的高权重规则，保证每张独立裁图居中且真正响应屏宽。 */
.doubao-app .doubao-answer-actions button,
.ta-role-doubao-page .doubao-answer-actions button {
  flex: 0 0 clamp(30px, 9vw, 36px) !important;
  width: clamp(30px, 9vw, 36px) !important;
  min-width: clamp(30px, 9vw, 36px) !important;
  height: clamp(30px, 9vw, 36px) !important;
  min-height: clamp(30px, 9vw, 36px) !important;
  border-radius: clamp(9px, 2.8vw, 12px) !important;
  background-position: 50% 50% !important;
  background-size: 100% 100% !important;
  background-repeat: no-repeat !important;
}
.doubao-app .doubao-answer-actions button:nth-child(1), .ta-role-doubao-page .doubao-answer-actions button:nth-child(1) { background-image: url("assets/ui/doubao-action-copy.jpeg") !important; }
.doubao-app .doubao-answer-actions button:nth-child(2), .ta-role-doubao-page .doubao-answer-actions button:nth-child(2) { background-image: url("assets/ui/doubao-action-voice.jpeg") !important; }
.doubao-app .doubao-answer-actions button:nth-child(3), .ta-role-doubao-page .doubao-answer-actions button:nth-child(3) { background-image: url("assets/ui/doubao-action-like.jpeg") !important; }
.doubao-app .doubao-answer-actions button:nth-child(4), .ta-role-doubao-page .doubao-answer-actions button:nth-child(4) { background-image: url("assets/ui/doubao-action-dislike.jpeg") !important; }
.doubao-app .doubao-answer-actions button:nth-child(5), .ta-role-doubao-page .doubao-answer-actions button:nth-child(5) { background-image: url("assets/ui/doubao-action-share.jpeg") !important; }
.doubao-app .doubao-answer-actions button:nth-child(6), .ta-role-doubao-page .doubao-answer-actions button:nth-child(6) { background-image: url("assets/ui/doubao-action-retry.jpeg") !important; }
.ifspace-detail > header > button[data-if-delete] { font-size:12px !important; }
.ifspace-detail > header > button[data-if-delete]::after { content:none !important; }
.shop-role-list button.is-selected { border-color:#222; background:#f2f2f2; }
@media not all { .shop-role-list button.is-selected { border-color:#eee; background:rgba(255,255,255,.16); } }

/* Magazine editorial studio refinements */
.magazine-publication-card { padding-top:20px; }
.magazine-publication-card .magazine-form-title { padding-right:105px; }
.magazine-random-button { position:absolute; top:17px; right:17px; min-height:31px; padding:0 10px; border:1px solid rgba(159,111,78,.25); border-radius:10px; background:rgba(255,247,239,.75); color:#8b6044; font:inherit; font-size:8px; cursor:pointer; }
.magazine-random-button:hover { background:#f1e1d4; }
.magazine-panel-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.magazine-panel-actions button.is-secondary { border:1px solid rgba(159,111,78,.28); background:rgba(255,255,255,.6); color:#8b6044; }
.magazine-panel-actions button:disabled { opacity:.5; cursor:wait; }
.magazine-interview-panel { padding:18px; }
.magazine-interview-intro { display:flex; align-items:flex-end; justify-content:space-between; gap:14px; margin-bottom:18px; padding:18px; border-radius:18px; background:linear-gradient(135deg,#332c27,#514137); color:#fff8ef; box-shadow:0 12px 26px rgba(57,43,32,.14); }
.magazine-interview-intro > div { display:grid; gap:6px; }
.magazine-interview-intro span,.magazine-interview-room > header span,.magazine-interview-input > span,.magazine-interview-roles-label span { color:#cba27e; font-size:7px; font-weight:800; letter-spacing:.2em; }
.magazine-interview-intro h2 { font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:22px; }
.magazine-interview-intro p { max-width:360px; color:rgba(255,248,239,.65); font-size:9px; line-height:1.6; }
.magazine-interview-article-button { flex:0 0 auto; min-height:34px; padding:0 11px; border:1px solid rgba(255,255,255,.2); border-radius:10px; background:rgba(255,255,255,.1); color:#fff8ef; font:inherit; font-size:8px; cursor:pointer; }
.magazine-interview-article-button span { margin-left:5px; color:inherit; font-size:14px; }
.magazine-interview-layout { grid-template-columns:145px minmax(0,1fr); gap:12px; min-height:540px; }
.magazine-interview-roles { align-content:start; gap:8px; padding:12px 8px 8px; border:1px solid rgba(60,49,39,.08); border-radius:18px; background:rgba(255,255,255,.34); }
.magazine-interview-roles-label { display:grid; gap:4px; padding:1px 5px 8px; border-bottom:1px solid rgba(60,49,39,.08); }
.magazine-interview-roles-label b { font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:13px; }
.magazine-interview-roles button { grid-template-columns:34px minmax(0,1fr); gap:3px 8px; min-height:54px; padding:9px 7px; border-radius:13px; background:rgba(255,255,255,.5); }
.magazine-interview-roles button.is-active { border-color:#a36f4e; background:#f0e0d3; box-shadow:0 5px 12px rgba(105,73,50,.08); }
.magazine-interview-roles button > span { width:34px; height:34px; }
.magazine-interview-roles b { font-size:10px; }
.magazine-interview-roles small { font-size:7px; }
.magazine-interview-room { min-height:540px; border:1px solid rgba(91,66,48,.13); border-radius:21px; background:linear-gradient(180deg,rgba(255,252,247,.82),rgba(247,240,231,.62)); box-shadow:0 12px 25px rgba(70,50,35,.07); }
.magazine-interview-room > header { min-height:76px; padding:14px 16px; background:rgba(255,255,255,.42); }
.magazine-interview-room-avatar { flex:0 0 42px; width:42px; height:42px; overflow:hidden; border:2px solid rgba(255,255,255,.9); border-radius:50%; background:#d8cec2; box-shadow:0 4px 10px rgba(57,43,32,.1); }
.magazine-interview-room-avatar .magazine-role-avatar { width:100%; height:100%; border:0; }
.magazine-interview-room > header > div:nth-child(2) { display:grid; flex:1; gap:4px; min-width:0; }
.magazine-interview-room > header b { font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:15px; }
.magazine-interview-room > header small { max-width:310px; font-size:8px; }
.magazine-interview-room > header em { align-self:flex-start; padding:5px 7px; border-radius:8px; background:rgba(157,110,77,.1); color:#9d6e4d; font-size:7px; font-style:normal; white-space:nowrap; }
.magazine-interview-room > main { gap:13px; min-height:390px; max-height:430px; padding:18px 16px; background:radial-gradient(circle at 50% 0,rgba(255,255,255,.5),transparent 42%); }
.magazine-interview-empty { display:grid; justify-items:center; align-content:center; gap:8px; min-height:300px; padding:30px; }
.magazine-interview-empty i { display:grid; place-items:center; width:38px; height:38px; border:1px solid rgba(159,111,78,.3); border-radius:50%; color:#a17453; font:italic 20px Georgia,serif; }
.magazine-interview-empty b { color:#6f5949; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:13px; }
.magazine-interview-empty p { color:#a1978d; font-size:8px; }
.magazine-interview-turn { display:flex; align-items:flex-start; gap:8px; max-width:88%; padding:0; border-radius:0; background:transparent; }
.magazine-interview-turn.is-editor { justify-self:end; flex-direction:row-reverse; }
.magazine-interview-turn-avatar { display:grid; flex:0 0 30px; place-items:center; width:30px; height:30px; overflow:hidden; border-radius:50%; background:#ded1c4; color:#8a654c; font:italic 13px Georgia,serif; }
.magazine-interview-turn-avatar .magazine-role-avatar { width:100%; height:100%; border:0; }
.magazine-interview-turn-body { min-width:0; padding:10px 12px; border:1px solid rgba(88,64,46,.08); border-radius:4px 15px 15px 15px; background:rgba(255,255,255,.77); box-shadow:0 4px 10px rgba(73,52,37,.035); }
.magazine-interview-turn.is-editor .magazine-interview-turn-body { border:0; border-radius:15px 4px 15px 15px; background:#39312b; color:#fff; }
.magazine-interview-turn-body header { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.magazine-interview-turn-body header span { color:#9f6f4e; font-size:7px; font-weight:700; }
.magazine-interview-turn-body header small { color:#aaa096; font-size:7px; }
.magazine-interview-turn.is-editor .magazine-interview-turn-body header span,.magazine-interview-turn.is-editor .magazine-interview-turn-body header small { color:rgba(255,255,255,.52); }
.magazine-interview-turn-body p { margin:7px 0 0; font-size:10px; line-height:1.75; }
.magazine-interview-form { grid-template-columns:minmax(0,1fr) 82px; gap:9px; padding:12px; border-top:1px solid rgba(88,64,46,.09); background:rgba(255,255,255,.45); }
.magazine-interview-input { display:grid; gap:5px; padding:8px 10px; border:1px solid rgba(88,64,46,.12); border-radius:12px; background:rgba(255,255,255,.72); }
.magazine-interview-input textarea { min-height:48px; padding:0; border:0; background:transparent; font-size:10px; line-height:1.55; }
.magazine-interview-form button { display:grid; place-items:center; align-content:center; gap:4px; width:auto; min-height:70px; border-radius:13px; background:#39312b; box-shadow:0 6px 14px rgba(57,43,32,.14); }
.magazine-interview-form button b { color:#cba27e; font-size:16px; font-weight:400; }
@media (max-width:600px) {
  .magazine-panel-actions { justify-content:stretch; width:100%; }
  .magazine-panel-actions button { flex:1; min-width:0; }
  .magazine-interview-intro { align-items:flex-start; flex-direction:column; padding:15px; }
  .magazine-interview-article-button { align-self:stretch; }
  .magazine-interview-layout { gap:9px; min-height:0; }
  .magazine-interview-roles { padding:8px; }
  .magazine-interview-roles-label { display:flex; align-items:baseline; justify-content:space-between; padding:0 3px 7px; }
  .magazine-interview-roles button { flex-basis:126px; min-height:58px; }
  .magazine-interview-room { min-height:500px; }
  .magazine-interview-room > main { min-height:345px; max-height:370px; padding:14px 11px; }
  .magazine-interview-form { grid-template-columns:minmax(0,1fr) 72px; padding:9px; }
}
@media not all {
  .magazine-random-button { border-color:rgba(203,162,126,.32); background:rgba(203,162,126,.12); color:#d8ae8d; }
  .magazine-panel-actions button.is-secondary { border-color:rgba(203,162,126,.3); background:rgba(255,255,255,.06); color:#d8ae8d; }
  .magazine-interview-intro { background:linear-gradient(135deg,#171513,#30251f); }
  .magazine-interview-roles { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.04); }
  .magazine-interview-roles-label { border-color:rgba(255,255,255,.09); }
  .magazine-interview-room { border-color:rgba(255,255,255,.1); background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.04)); }
  .magazine-interview-room > header,.magazine-interview-form { border-color:rgba(255,255,255,.09); background:rgba(255,255,255,.04); }
  .magazine-interview-turn-body { border-color:rgba(255,255,255,.08); background:rgba(255,255,255,.09); }
  .magazine-interview-input { border-color:rgba(255,255,255,.1); background:rgba(0,0,0,.16); }
}
.magazine-background-job { display:flex; align-items:center; gap:10px; margin-bottom:14px; padding:11px 13px; border:1px solid rgba(159,111,78,.18); border-radius:14px; background:rgba(255,250,244,.68); color:#6d5544; }
.magazine-background-job > i { display:grid; flex:0 0 25px; place-items:center; width:25px; height:25px; border-radius:50%; background:#ead7c8; color:#8c5e42; font-style:normal; font-size:12px; }
.magazine-background-job > div { display:grid; gap:3px; min-width:0; }
.magazine-background-job b { font-size:9px; }
.magazine-background-job small { color:#9a8b7e; font-size:8px; line-height:1.45; }
.magazine-background-job.is-running { border-color:rgba(159,111,78,.28); }
.magazine-background-job.is-running > i { animation:magazine-job-pulse 1.4s ease-in-out infinite; }
.magazine-background-job.is-error { border-color:rgba(176,88,74,.25); color:#8c4e46; }
.magazine-background-job.is-error > i { background:#f0d7d1; color:#a05248; }
.magazine-background-job.is-done { border-color:rgba(102,138,105,.25); }
.magazine-background-job.is-done > i { background:#dce9dc; color:#5e8564; }
@keyframes magazine-job-pulse { 50% { transform:scale(1.08); box-shadow:0 0 0 5px rgba(159,111,78,.08); } }
@media not all {
  .magazine-background-job { border-color:rgba(203,162,126,.24); background:rgba(255,255,255,.06); color:#e0c5ae; }
  .magazine-background-job > i { background:rgba(203,162,126,.2); color:#d8ae8d; }
  .magazine-background-job small { color:#aaa098; }
  .magazine-background-job.is-error { border-color:rgba(221,133,118,.3); color:#e4aaa1; }
  .magazine-background-job.is-done { border-color:rgba(134,179,140,.3); }
}

/* 杂志详情页：编辑部工作台布局 */
.magazine-page {
  background:
    radial-gradient(circle at 8% 8%, rgba(255,255,255,.8), transparent 28%),
    linear-gradient(145deg, #f6f2eb 0%, #e9e4da 100%);
}
.magazine-header {
  min-height: 76px;
  padding: max(12px, env(safe-area-inset-top)) 20px 11px;
  border-bottom-color: rgba(73,56,42,.12);
  background: rgba(247,244,238,.82);
  box-shadow: 0 5px 18px rgba(71,53,38,.04);
}
.magazine-header > div { display:grid; gap:2px; }
.magazine-header h1 { font-size:21px; letter-spacing:-.045em; }
.magazine-header p { color:#9b9084; font-size:8px; }
.magazine-round-button {
  width:36px;
  height:36px;
  border:1px solid rgba(92,71,55,.1);
  background:rgba(255,255,255,.62);
  color:#725b49;
  box-shadow:0 4px 12px rgba(71,53,38,.06);
}
.magazine-tabs {
  top:76px;
  gap:6px;
  padding:7px 12px;
  border-bottom:1px solid rgba(73,56,42,.1);
  background:rgba(239,234,225,.86);
}
.magazine-tabs button {
  height:42px;
  border:0;
  border-radius:12px;
  flex-direction:column;
  gap:2px;
  color:#a2978a;
  font-size:8px;
  transition:background .18s ease, color .18s ease, transform .18s ease;
}
.magazine-tabs button i { font-size:10px; }
.magazine-tabs button.is-active {
  border:0;
  background:#3d342d;
  color:#fff8ef;
  box-shadow:0 6px 14px rgba(61,52,45,.16);
}
.magazine-tabs button:active { transform:scale(.97); }
.magazine-studio-main {
  padding:24px clamp(16px, 4vw, 30px) 60px;
}
.magazine-panel-head {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:end;
  gap:18px;
  margin-bottom:18px;
}
.magazine-panel-head > div { gap:6px; }
.magazine-panel-head h2 {
  color:#302821;
  font-size:27px;
  letter-spacing:-.065em;
}
.magazine-panel-head p { max-width:390px; line-height:1.65; }
.magazine-panel-actions {
  display:grid;
  grid-template-columns:repeat(2, minmax(110px, 1fr));
  gap:7px;
  min-width:230px;
}
.magazine-panel-head > button,
.magazine-panel-actions button {
  min-height:38px;
  padding:0 13px;
  border:0;
  border-radius:11px;
  background:#3d342d;
  color:#fff8ef;
  font-size:9px;
  box-shadow:0 6px 14px rgba(61,52,45,.12);
}
.magazine-panel-actions button.is-secondary {
  border:1px solid rgba(143,103,73,.24);
  background:rgba(255,255,255,.58);
  color:#875d42;
  box-shadow:none;
}
.magazine-overview {
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:14px 16px;
  margin:0 0 18px;
  padding:22px;
  border:1px solid rgba(91,69,51,.1);
  border-radius:24px;
  background:rgba(255,255,255,.58);
  box-shadow:0 12px 28px rgba(73,55,39,.055), inset 0 1px 0 rgba(255,255,255,.75);
}
.magazine-overview > label:nth-child(1),
.magazine-overview > label:nth-child(2),
.magazine-overview > div:not(.magazine-participant-chips),
.magazine-overview > .magazine-participant-chips,
.magazine-overview > .magazine-participant-manager {
  grid-column:1 / -1;
}
.magazine-overview > label,
.magazine-overview > div > label {
  margin-top:0;
  gap:7px;
  color:#837468;
  font-size:9px;
}
.magazine-overview input,
.magazine-overview textarea,
.magazine-overview select {
  border-color:rgba(100,77,58,.13);
  border-radius:13px;
  background:rgba(255,255,255,.74);
  box-shadow:inset 0 1px 2px rgba(75,53,37,.025);
}
.magazine-overview input,
.magazine-overview select { height:43px; padding:0 12px; }
.magazine-overview textarea { min-height:88px; padding:12px; line-height:1.6; }
.magazine-participant-chips {
  margin-top:2px;
  padding-top:14px;
  border-top:1px solid rgba(91,69,51,.09);
}
.magazine-participant-chips b { color:#625143; }
.magazine-participant-chips span { padding:6px 9px; border-radius:999px; background:#e9ddd1; color:#76563f; }
.magazine-participant-manager { margin-top:0; padding-top:13px; }
.magazine-section-list { gap:11px; }
.magazine-section-card {
  grid-template-columns:34px minmax(0,1fr) 126px;
  gap:14px;
  padding:18px 16px;
  border:1px solid rgba(91,69,51,.1);
  border-left:4px solid #b78562;
  border-radius:18px;
  background:rgba(255,255,255,.62);
  box-shadow:0 8px 20px rgba(73,55,39,.045);
}
.magazine-section-card > span { padding-top:2px; color:#a67350; font-size:14px; }
.magazine-section-card > div { gap:7px; }
.magazine-section-card select { font-size:9px; font-weight:700; }
.magazine-section-card input { padding:4px 0 7px; font-size:15px; }
.magazine-section-card textarea { min-height:48px; font-size:9px; line-height:1.6; }
.magazine-section-card aside { gap:7px; }
.magazine-section-card aside b { padding-bottom:2px; font-size:8px; }
.magazine-section-card aside button {
  min-height:32px;
  border:1px solid rgba(143,103,73,.14);
  border-radius:10px;
  background:#eee4d9;
  color:#76563f;
  font-size:8px;
}
.magazine-section-card aside button:last-child { background:transparent; }
.magazine-add-section {
  min-height:42px;
  margin-top:12px;
  border-color:rgba(143,103,73,.3);
  border-radius:13px;
  color:#8b6247;
  font-size:9px;
}
.magazine-article-editor,
.magazine-cover-settings {
  border-color:rgba(91,69,51,.1);
  border-radius:20px;
  background:rgba(255,255,255,.62);
  box-shadow:0 8px 20px rgba(73,55,39,.045);
}
.magazine-design-layout { gap:20px; }
.magazine-cover-stage { border-radius:22px; background:linear-gradient(145deg,#ded3c5,#cbb9a8); box-shadow:inset 0 1px 0 rgba(255,255,255,.55); }

@media (max-width:600px) {
  .magazine-header { min-height:72px; padding-right:14px; padding-left:14px; }
  .magazine-header h1 { font-size:19px; }
  .magazine-tabs { top:72px; padding:7px 9px; }
  .magazine-studio-main { padding:19px 13px 52px; }
  .magazine-panel-head { display:block; margin-bottom:15px; }
  .magazine-panel-head h2 { font-size:24px; }
  .magazine-panel-actions { grid-template-columns:1fr 1fr; min-width:0; margin-top:14px; }
  .magazine-panel-actions button { min-height:39px; padding:0 8px; }
  .magazine-overview { grid-template-columns:1fr; gap:13px; padding:17px; border-radius:20px; }
  .magazine-overview > label:nth-child(1),
  .magazine-overview > label:nth-child(2),
  .magazine-overview > div:not(.magazine-participant-chips),
  .magazine-overview > .magazine-participant-chips,
  .magazine-overview > .magazine-participant-manager { grid-column:auto; }
  .magazine-overview > div:not(.magazine-participant-chips) { display:grid; grid-template-columns:1fr 1fr; gap:11px; }
  .magazine-overview input,
  .magazine-overview select { height:41px; }
  .magazine-section-card { grid-template-columns:29px minmax(0,1fr); gap:10px; padding:15px 13px; }
  .magazine-section-card aside { grid-column:2; display:grid; grid-template-columns:1fr 1fr; gap:7px; }
  .magazine-section-card aside b { grid-column:1 / -1; text-align:left; }
  .magazine-section-card aside button { min-height:34px; }
  .magazine-section-card aside button:last-child { grid-column:auto; }
  .magazine-pending-drafts { grid-template-columns:1fr; }
}

@media not all {
  .magazine-page { background:linear-gradient(145deg,#292722,#211f1b); }
  .magazine-header { border-bottom-color:rgba(255,255,255,.1); background:rgba(39,37,33,.84); }
  .magazine-header p { color:#aaa098; }
  .magazine-round-button { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.09); color:#eee; }
  .magazine-tabs { border-bottom-color:rgba(255,255,255,.1); background:rgba(39,37,33,.86); }
  .magazine-tabs button.is-active { background:#e0c5ae; color:#30251f; }
  .magazine-panel-head h2 { color:#f0e8df; }
  .magazine-panel-actions button.is-secondary { border-color:rgba(203,162,126,.3); background:rgba(255,255,255,.07); color:#d8ae8d; }
  .magazine-overview,.magazine-section-card,.magazine-article-editor,.magazine-cover-settings { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); box-shadow:none; }
  .magazine-overview > label,.magazine-overview > div > label { color:#c0b1a3; }
  .magazine-overview input,.magazine-overview textarea,.magazine-overview select { border-color:rgba(255,255,255,.13); background:rgba(0,0,0,.18); color:#eee; }
  .magazine-participant-chips { border-color:rgba(255,255,255,.1); }
  .magazine-participant-chips b { color:#d7c8ba; }
  .magazine-participant-chips span,.magazine-section-card aside button { background:rgba(203,162,126,.16); color:#e0c5ae; }
  .magazine-section-card aside button:last-child { background:transparent; color:#b8aa9d; }
  .magazine-add-section { border-color:rgba(203,162,126,.3); color:#d8ae8d; }
  .magazine-cover-stage { background:#39342e; }
}

/* 杂志社采访页：连续页眉 + 现场感采访台 */
.magazine-header {
  border-bottom:0;
  background:rgba(247,244,238,.9);
  box-shadow:none;
}
.magazine-tabs {
  border-top:1px solid rgba(73,56,42,.07);
  border-bottom:1px solid rgba(73,56,42,.1);
  background:rgba(247,244,238,.9);
  box-shadow:0 8px 20px rgba(71,53,38,.055);
}
.magazine-interview-panel {
  padding:0;
}
.magazine-interview-intro {
  position:relative;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:18px;
  min-height:132px;
  margin:0 0 16px;
  padding:24px 25px 22px;
  overflow:hidden;
  border-radius:24px;
  background:
    radial-gradient(circle at 88% 16%, rgba(191,137,98,.24), transparent 24%),
    linear-gradient(125deg,#342b26 0%,#4d3b31 58%,#604838 100%);
  color:#fff8ef;
  box-shadow:0 14px 28px rgba(61,47,37,.16);
}
.magazine-interview-intro::after {
  position:absolute;
  right:26px;
  bottom:20px;
  width:92px;
  height:1px;
  background:rgba(228,190,158,.64);
  box-shadow:-21px -7px 0 rgba(228,190,158,.34), -42px -14px 0 rgba(228,190,158,.18);
  content:"";
  transform:rotate(-18deg);
  transform-origin:right center;
}
.magazine-interview-intro > div {
  position:relative;
  z-index:1;
}
.magazine-interview-intro span {
  color:#d9ae8d;
  font-size:8px;
  font-weight:800;
  letter-spacing:.22em;
}
.magazine-interview-intro h2 {
  margin-top:10px;
  color:#fff8ef;
  font-family:"Songti SC","Noto Serif CJK SC",serif;
  font-size:29px;
  letter-spacing:-.06em;
}
.magazine-interview-intro p {
  margin-top:8px;
  color:rgba(255,248,239,.66);
  font-size:9px;
  line-height:1.6;
}
.magazine-interview-article-button {
  position:relative;
  z-index:1;
  flex:0 0 auto;
  min-height:36px;
  padding:0 12px;
  border:1px solid rgba(231,194,164,.38);
  border-radius:12px;
  background:rgba(255,255,255,.1);
  color:#fff8ef;
  font:inherit;
  font-size:9px;
  cursor:pointer;
}
.magazine-interview-article-button span { margin-left:5px; font-size:14px; letter-spacing:0; }
.magazine-interview-layout {
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  min-height:0;
}
.magazine-interview-roles {
  display:flex;
  align-items:stretch;
  gap:8px;
  min-width:0;
  padding:10px;
  overflow-x:auto;
  border:1px solid rgba(91,69,51,.1);
  border-radius:19px;
  background:rgba(255,255,255,.52);
  box-shadow:0 8px 18px rgba(73,55,39,.045);
  scrollbar-width:none;
}
.magazine-interview-roles::-webkit-scrollbar { display:none; }
.magazine-interview-roles-label {
  display:grid;
  flex:0 0 91px;
  align-content:center;
  gap:5px;
  padding:0 10px 0 3px;
  border-right:1px solid rgba(91,69,51,.1);
}
.magazine-interview-roles-label span {
  color:#a67350;
  font-size:8px;
  font-weight:800;
  letter-spacing:.2em;
}
.magazine-interview-roles-label b {
  color:#5d4b3d;
  font-family:"Songti SC","Noto Serif CJK SC",serif;
  font-size:12px;
}
.magazine-interview-roles button {
  display:grid;
  flex:0 0 151px;
  grid-template-columns:34px minmax(0,1fr);
  align-content:center;
  align-items:center;
  gap:2px 8px;
  min-height:66px;
  padding:9px 10px;
  border:1px solid transparent;
  border-radius:14px;
  background:rgba(247,242,235,.72);
  color:#463a31;
  font:inherit;
  text-align:left;
  cursor:pointer;
  transition:border-color .18s ease, background .18s ease, transform .18s ease;
}
.magazine-interview-roles button:hover { transform:translateY(-1px); }
.magazine-interview-roles button.is-active {
  border-color:#af7955;
  background:#f0e0d3;
  box-shadow:0 5px 12px rgba(139,94,65,.1);
}
.magazine-interview-roles button > span {
  grid-row:1/3;
  width:34px;
  height:34px;
  overflow:hidden;
  border:2px solid rgba(255,255,255,.7);
  border-radius:50%;
  background:#d8cec2;
  box-shadow:0 3px 7px rgba(73,55,39,.11);
}
.magazine-interview-roles button > span img,
.magazine-interview-room-avatar img,
.magazine-interview-turn-avatar img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.magazine-interview-roles b {
  overflow:hidden;
  color:#44362d;
  font-family:"Songti SC","Noto Serif CJK SC",serif;
  font-size:12px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.magazine-interview-roles small {
  color:#9b8778;
  font-size:7px;
}
.magazine-interview-room {
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  min-height:610px;
  overflow:hidden;
  border:1px solid rgba(91,69,51,.12);
  border-radius:25px;
  background:linear-gradient(150deg,rgba(255,255,255,.86),rgba(246,239,231,.78));
  box-shadow:0 14px 32px rgba(73,55,39,.08), inset 0 1px 0 rgba(255,255,255,.8);
}
.magazine-interview-room > header {
  display:flex;
  align-items:center;
  gap:12px;
  min-height:91px;
  padding:15px 18px;
  border-bottom:1px solid rgba(91,69,51,.1);
  background:rgba(255,255,255,.48);
}
.magazine-interview-room-avatar {
  display:grid;
  flex:0 0 48px;
  place-items:center;
  width:48px;
  height:48px;
  overflow:hidden;
  border:3px solid #fff8ed;
  border-radius:50%;
  background:linear-gradient(145deg,#f5c45c,#dd9b4d);
  color:#fff;
  font-family:"Songti SC","Noto Serif CJK SC",serif;
  font-size:16px;
  box-shadow:0 6px 13px rgba(117,83,52,.16);
}
.magazine-interview-room > header > div:not(.magazine-interview-room-avatar) {
  display:grid;
  min-width:0;
  gap:4px;
}
.magazine-interview-room > header > div > span {
  color:#b67d58;
  font-size:8px;
  font-weight:800;
  letter-spacing:.2em;
}
.magazine-interview-room > header b {
  overflow:hidden;
  color:#3f3128;
  font-family:"Songti SC","Noto Serif CJK SC",serif;
  font-size:18px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.magazine-interview-room > header small {
  max-width:390px;
  overflow:hidden;
  color:#9b897d;
  font-size:8px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.magazine-interview-room > header em {
  margin-left:auto;
  padding:7px 9px;
  border-radius:999px;
  background:#f1e4d8;
  color:#9a694b;
  font-size:8px;
  font-style:normal;
  white-space:nowrap;
}
.magazine-interview-room > main {
  display:grid;
  align-content:start;
  gap:16px;
  min-height:420px;
  max-height:none;
  padding:22px 20px;
  overflow-y:auto;
  background:
    linear-gradient(rgba(166,125,94,.08) 1px, transparent 1px) 0 0 / 100% 29px,
    radial-gradient(circle at 82% 20%, rgba(218,181,148,.16), transparent 31%);
}
.magazine-interview-turn {
  display:flex;
  align-items:flex-start;
  gap:9px;
  max-width:78%;
  padding:0;
  border-radius:0;
  background:transparent;
}
.magazine-interview-turn.is-editor {
  justify-self:end;
  flex-direction:row-reverse;
  background:transparent;
  color:inherit;
}
.magazine-interview-turn-avatar {
  display:grid;
  flex:0 0 27px;
  place-items:center;
  width:27px;
  height:27px;
  overflow:hidden;
  border:1px solid rgba(171,121,84,.26);
  border-radius:50%;
  background:#e1cbb9;
  color:#956646;
  font-size:8px;
  font-weight:800;
}
.magazine-interview-turn.is-editor .magazine-interview-turn-avatar {
  border-color:#4c4037;
  background:#3d342d;
  color:#e7c5a6;
}
.magazine-interview-turn-body {
  min-width:0;
  padding:11px 13px 10px;
  border:1px solid rgba(112,82,60,.1);
  border-radius:4px 16px 16px 16px;
  background:rgba(255,255,255,.8);
  box-shadow:0 4px 10px rgba(73,55,39,.045);
}
.magazine-interview-turn.is-editor .magazine-interview-turn-body {
  border-color:#3d342d;
  border-radius:16px 4px 16px 16px;
  background:#3d342d;
  color:#fff8ef;
}
.magazine-interview-turn-body header {
  display:flex;
  align-items:center;
  gap:9px;
}
.magazine-interview-turn-body header span {
  display:block;
  color:#a36e4c;
  font-size:8px;
  font-weight:700;
}
.magazine-interview-turn-body header small {
  display:block;
  color:#b0a097;
  font-size:7px;
}
.magazine-interview-turn.is-editor .magazine-interview-turn-body header span { color:#e1b691; }
.magazine-interview-turn.is-editor .magazine-interview-turn-body header small { color:rgba(255,248,239,.5); }
.magazine-interview-turn p {
  margin:6px 0 0;
  color:#493b31;
  font-size:10px;
  line-height:1.75;
}
.magazine-interview-turn.is-editor p { color:#fff8ef; }
.magazine-interview-empty {
  display:grid;
  justify-items:center;
  align-content:center;
  min-height:310px;
  padding:30px 15px;
  color:#9d8d81;
  text-align:center;
}
.magazine-interview-empty i {
  display:grid;
  place-items:center;
  width:47px;
  height:47px;
  margin-bottom:15px;
  border:1px solid #c99b79;
  border-radius:50%;
  color:#a9704d;
  font-family:Georgia,serif;
  font-size:21px;
  font-style:normal;
}
.magazine-interview-empty b {
  color:#735844;
  font-family:"Songti SC","Noto Serif CJK SC",serif;
  font-size:15px;
}
.magazine-interview-empty p {
  max-width:230px;
  margin-top:9px;
  color:#aa9b90;
  font-size:9px;
  line-height:1.7;
}
.magazine-interview-form {
  display:grid;
  grid-template-columns:minmax(0,1fr) 112px;
  gap:9px;
  padding:12px;
  border-top:1px solid rgba(91,69,51,.1);
  background:rgba(255,255,255,.5);
}
.magazine-interview-input {
  display:grid;
  gap:6px;
  padding:10px 12px 7px;
  border:1px solid rgba(112,82,60,.13);
  border-radius:15px;
  background:rgba(255,255,255,.76);
}
.magazine-interview-input > span {
  color:#b17a56;
  font-size:8px;
  font-weight:800;
  letter-spacing:.18em;
}
.magazine-interview-form textarea {
  min-height:45px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  color:#40342c;
  font-size:10px;
  line-height:1.55;
}
.magazine-interview-form textarea::placeholder { color:#b2a49a; }
.magazine-interview-form button {
  display:grid;
  place-items:center;
  align-content:center;
  gap:4px;
  width:auto;
  min-height:78px;
  border:0;
  border-radius:15px;
  background:#3d342d;
  color:#fff8ef;
  font-size:10px;
  box-shadow:0 7px 14px rgba(61,52,45,.16);
}
.magazine-interview-form button b { color:#dfb38f; font-size:19px; line-height:1; }

@media (max-width:600px) {
  .magazine-header { border-bottom:0; background:rgba(247,244,238,.92); }
  .magazine-tabs { top:72px; border-top-color:rgba(73,56,42,.07); background:rgba(247,244,238,.92); }
  .magazine-interview-intro { min-height:124px; padding:20px 18px 19px; border-radius:20px; }
  .magazine-interview-intro h2 { margin-top:8px; font-size:25px; }
  .magazine-interview-intro p { max-width:225px; }
  .magazine-interview-article-button { padding:0 9px; font-size:8px; }
  .magazine-interview-roles { padding:8px; border-radius:16px; }
  .magazine-interview-roles-label { flex-basis:78px; padding-right:8px; }
  .magazine-interview-roles-label b { font-size:10px; }
  .magazine-interview-roles button { flex-basis:136px; min-height:61px; padding:8px; }
  .magazine-interview-room { min-height:calc(100dvh - 305px); border-radius:21px; }
  .magazine-interview-room > header { min-height:79px; padding:12px; }
  .magazine-interview-room-avatar { flex-basis:40px; width:40px; height:40px; }
  .magazine-interview-room > header b { font-size:16px; }
  .magazine-interview-room > header em { padding:6px 7px; font-size:7px; }
  .magazine-interview-room > main { min-height:320px; padding:16px 13px; }
  .magazine-interview-turn { max-width:88%; }
  .magazine-interview-turn p { font-size:9px; }
  .magazine-interview-form { grid-template-columns:minmax(0,1fr) 80px; padding:9px; }
  .magazine-interview-form button { min-height:70px; }
}

@media not all {
  .magazine-header { border-bottom:0; background:rgba(39,37,33,.92); }
  .magazine-tabs { border-top-color:rgba(255,255,255,.07); background:rgba(39,37,33,.92); }
  .magazine-interview-intro { background:linear-gradient(125deg,#29231f,#49362c); }
  .magazine-interview-roles,.magazine-interview-room { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); }
  .magazine-interview-roles-label { border-color:rgba(255,255,255,.1); }
  .magazine-interview-roles-label b,.magazine-interview-roles b,.magazine-interview-room > header b { color:#f1e6dc; }
  .magazine-interview-roles button { background:rgba(255,255,255,.06); color:#eee; }
  .magazine-interview-roles button.is-active { background:rgba(176,126,89,.2); }
  .magazine-interview-room { background:linear-gradient(150deg,rgba(255,255,255,.1),rgba(255,255,255,.05)); }
  .magazine-interview-room > header,.magazine-interview-form { border-color:rgba(255,255,255,.09); background:rgba(0,0,0,.08); }
  .magazine-interview-room > header small { color:#b7aaa0; }
  .magazine-interview-room > header em { background:rgba(203,162,126,.16); color:#e0b898; }
  .magazine-interview-room > main { background:linear-gradient(rgba(203,162,126,.08) 1px, transparent 1px) 0 0 / 100% 29px, radial-gradient(circle at 82% 20%, rgba(176,126,89,.15), transparent 31%); }
  .magazine-interview-turn-body { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.1); }
  .magazine-interview-turn p { color:#eee5dc; }
  .magazine-interview-empty b { color:#e0c5ae; }
  .magazine-interview-input { border-color:rgba(255,255,255,.12); background:rgba(0,0,0,.15); }
  .magazine-interview-form textarea { color:#eee; }
}

/* 进入刊物后的四步工作流，始终告诉用户现在该做什么。 */
.magazine-process-guide {
  display:grid;
  grid-template-columns:minmax(185px,.8fr) minmax(0,1.6fr);
  align-items:center;
  gap:18px;
  margin:0 0 22px;
  padding:14px 16px;
  border:1px solid rgba(91,69,51,.1);
  border-radius:18px;
  background:rgba(255,255,255,.48);
  box-shadow:0 7px 16px rgba(73,55,39,.04);
}
.magazine-process-copy {
  display:grid;
  gap:4px;
  padding-right:14px;
  border-right:1px solid rgba(91,69,51,.1);
}
.magazine-process-copy span {
  color:#ab7653;
  font-size:7px;
  font-weight:800;
  letter-spacing:.18em;
}
.magazine-process-copy b {
  color:#49382e;
  font-family:"Songti SC","Noto Serif CJK SC",serif;
  font-size:13px;
}
.magazine-process-copy small {
  color:#9d8d81;
  font-size:8px;
}
.magazine-process-guide ol {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:6px;
  margin:0;
  padding:0;
  list-style:none;
}
.magazine-process-guide li {
  position:relative;
  min-width:0;
}
.magazine-process-guide li:not(:last-child)::after {
  position:absolute;
  top:19px;
  right:-5px;
  width:10px;
  height:1px;
  background:#d2b7a1;
  content:"";
}
.magazine-process-guide button {
  display:flex;
  align-items:center;
  gap:7px;
  width:100%;
  min-height:42px;
  padding:5px 6px;
  border:1px solid transparent;
  border-radius:11px;
  background:transparent;
  color:#978a80;
  font:inherit;
  text-align:left;
  cursor:pointer;
}
.magazine-process-guide button i {
  display:grid;
  flex:0 0 26px;
  place-items:center;
  width:26px;
  height:26px;
  border:1px solid #d6c2b2;
  border-radius:50%;
  color:#a27455;
  font:italic 9px Georgia,serif;
}
.magazine-process-guide button span {
  display:grid;
  min-width:0;
  gap:2px;
}
.magazine-process-guide button b {
  overflow:hidden;
  color:#705b4c;
  font-size:10px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.magazine-process-guide button small {
  overflow:hidden;
  color:#a5988e;
  font-size:7px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.magazine-process-guide li.is-active button,
.magazine-process-guide li.is-next button {
  border-color:rgba(166,112,77,.2);
  background:#f1e3d7;
}
.magazine-process-guide li.is-active button i {
  border-color:#9f6f4e;
  background:#9f6f4e;
  color:#fff8ef;
}
.magazine-process-guide li.is-active button b { color:#70462f; }

/* 策划动作改成编辑部主操作，而不是普通的 API 按钮。 */
.magazine-panel-actions {
  grid-template-columns:minmax(170px,1.2fr) minmax(145px,1fr);
  align-items:stretch;
}
.magazine-panel-actions .magazine-ai-action,
.magazine-panel-actions .magazine-batch-action {
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:9px;
  min-height:52px;
  padding:8px 12px;
  text-align:left;
}
.magazine-panel-actions .magazine-ai-action {
  border:1px solid #3d342d;
  background:#3d342d;
}
.magazine-panel-actions .magazine-ai-action > i,
.magazine-panel-actions .magazine-batch-action > i {
  flex:0 0 22px;
  color:#e3b58f;
  font-size:18px;
  font-style:normal;
  text-align:center;
}
.magazine-panel-actions .magazine-batch-action > i { color:#a97958; font-size:14px; }
.magazine-panel-actions .magazine-ai-action > span,
.magazine-panel-actions .magazine-batch-action > span {
  display:grid;
  gap:3px;
  min-width:0;
}
.magazine-panel-actions .magazine-ai-action b,
.magazine-panel-actions .magazine-batch-action b {
  overflow:hidden;
  font-size:9px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.magazine-panel-actions .magazine-ai-action small,
.magazine-panel-actions .magazine-batch-action small {
  overflow:hidden;
  color:rgba(255,248,239,.58);
  font-size:7px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.magazine-panel-actions .magazine-batch-action small { color:#a18e80; }

@media (max-width:600px) {
  .magazine-process-guide { grid-template-columns:1fr; gap:10px; padding:13px; }
  .magazine-process-copy { padding:0 0 10px; border-right:0; border-bottom:1px solid rgba(91,69,51,.1); }
  .magazine-process-guide ol { gap:3px; }
  .magazine-process-guide button { display:grid; justify-items:center; gap:3px; padding:5px 2px; text-align:center; }
  .magazine-process-guide button span { justify-items:center; }
  .magazine-process-guide button small { max-width:62px; }
  .magazine-process-guide li:not(:last-child)::after { top:16px; right:-3px; width:6px; }
  .magazine-panel-actions { grid-template-columns:1fr; }
  .magazine-panel-actions .magazine-ai-action,
  .magazine-panel-actions .magazine-batch-action { min-height:50px; }
}

@media not all {
  .magazine-process-guide { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); }
  .magazine-process-copy { border-color:rgba(255,255,255,.1); }
  .magazine-process-copy b,.magazine-process-guide button b { color:#eaded4; }
  .magazine-process-guide button small,.magazine-process-copy small { color:#b9aaa0; }
  .magazine-process-guide li.is-active button,.magazine-process-guide li.is-next button { border-color:rgba(203,162,126,.3); background:rgba(176,126,89,.2); }
  .magazine-panel-actions .magazine-batch-action { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); color:#eee; }
}

/* 发布后的刊物进入只读翻页阅读器。 */
.magazine-flipbook-reader {
  display:grid;
  justify-items:center;
  gap:13px;
  min-height:calc(100% - 1px);
  padding:25px clamp(14px,4vw,34px) 54px;
  background:
    radial-gradient(circle at 18% 8%,rgba(255,255,255,.82),transparent 25%),
    linear-gradient(145deg,#eee8de,#e1d9cd);
}
.magazine-flipbook {
  width:min(100%,560px);
  perspective:1300px;
}
.magazine-flipbook-page {
  box-sizing:border-box;
  min-height:min(690px,calc(100vh - 190px));
  padding:20px;
  overflow:hidden;
  border:1px solid rgba(91,69,51,.14);
  border-radius:4px 17px 17px 4px;
  background:linear-gradient(135deg,#fffdf8,#f4eee5);
  box-shadow:12px 14px 0 -7px rgba(171,142,116,.2),0 18px 36px rgba(73,55,39,.13),inset 7px 0 rgba(112,81,58,.07),inset 0 1px rgba(255,255,255,.9);
  transform-origin:left center;
  backface-visibility:hidden;
}
.magazine-flipbook-page.from-right { animation:magazine-page-from-right .34s cubic-bezier(.22,.68,.24,1); }
.magazine-flipbook-page.from-left { animation:magazine-page-from-left .34s cubic-bezier(.22,.68,.24,1); }
@keyframes magazine-page-from-right {
  from { opacity:.25; transform:rotateY(-78deg) translateX(12px); }
  to { opacity:1; transform:rotateY(0) translateX(0); }
}
@keyframes magazine-page-from-left {
  from { opacity:.25; transform:rotateY(78deg) translateX(-12px); }
  to { opacity:1; transform:rotateY(0) translateX(0); }
}
.magazine-flip-cover {
  display:grid;
  min-height:min(650px,calc(100vh - 230px));
  place-items:center;
}
.magazine-flip-cover > .magazine-cover {
  width:min(100%,390px);
  height:min(610px,calc(100vh - 260px));
  margin:0 auto;
  border-radius:4px 10px 10px 4px;
  box-shadow:10px 13px 20px rgba(55,41,31,.2);
}
.magazine-flipbook-page > .magazine-toc {
  display:grid;
  align-content:center;
  min-height:min(650px,calc(100vh - 230px));
  margin:0;
  padding:30px 35px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.magazine-flipbook-page > .magazine-toc h2 {
  margin-top:10px;
  color:#3d3027;
  font-size:31px;
}
.magazine-flipbook-page > .magazine-toc ol { margin-top:28px; }
.magazine-flipbook-page > .magazine-toc li { padding:15px 0; border-color:rgba(91,69,51,.12); }
.magazine-flipbook-page > .magazine-toc li b { color:#4c3b30; font-family:"Songti SC","Noto Serif CJK SC",serif; font-size:13px; }
.magazine-flipbook-page > .magazine-reading-page {
  min-height:min(650px,calc(100vh - 230px));
  margin:0;
  padding:32px 35px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.magazine-flipbook-page > .magazine-reading-page h2 { color:#3b2e26; font-size:29px; }
.magazine-flipbook-page > .magazine-reading-page > div { color:#4d4037; font-size:13px; line-height:2.05; }
.magazine-page-controls {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:18px;
}
.magazine-page-controls button {
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  border:1px solid rgba(116,83,59,.22);
  border-radius:50%;
  background:rgba(255,255,255,.6);
  color:#74523b;
  font:inherit;
  font-size:22px;
  cursor:pointer;
}
.magazine-page-controls button:disabled { opacity:.3; cursor:default; }
.magazine-page-controls span { color:#8e7868; font-size:9px; letter-spacing:.08em; }
.magazine-reader-tip { color:#a29183; font-size:8px; }

@media (max-width:600px) {
  .magazine-flipbook-reader { padding:17px 10px 40px; }
  .magazine-flipbook-page { min-height:calc(100dvh - 210px); padding:13px; }
  .magazine-flip-cover { min-height:calc(100dvh - 250px); }
  .magazine-flip-cover > .magazine-cover { height:min(540px,calc(100dvh - 285px)); }
  .magazine-flipbook-page > .magazine-toc,
  .magazine-flipbook-page > .magazine-reading-page { min-height:calc(100dvh - 250px); padding:22px 18px; }
  .magazine-flipbook-page > .magazine-toc h2 { font-size:26px; }
  .magazine-flipbook-page > .magazine-reading-page h2 { font-size:24px; }
  .magazine-flipbook-page > .magazine-reading-page > div { font-size:11px; }
}

@media not all {
  .magazine-flipbook-reader { background:linear-gradient(145deg,#292521,#211e1b); }
  .magazine-flipbook-page { border-color:rgba(255,255,255,.1); background:linear-gradient(135deg,#302c27,#282420); box-shadow:12px 14px 0 -7px rgba(203,162,126,.1),0 18px 36px rgba(0,0,0,.25),inset 7px 0 rgba(0,0,0,.12); }
  .magazine-flipbook-page > .magazine-toc h2,.magazine-flipbook-page > .magazine-toc li b,.magazine-flipbook-page > .magazine-reading-page h2 { color:#f0e5db; }
  .magazine-flipbook-page > .magazine-reading-page > div { color:#ddd1c7; }
  .magazine-page-controls button { border-color:rgba(203,162,126,.3); background:rgba(255,255,255,.08); color:#e0b898; }
  .magazine-page-controls span,.magazine-reader-tip { color:#b9aaa0; }
}

/* 聊天中的实际图片只显示紧凑预览；点开仍使用原图。 */
.chat-app.is-chatting .chat-message .chat-bubble.image:not(.sticker) img {
  width:auto !important;
  height:auto !important;
  max-width:min(170px, calc(100vw - 132px)) !important;
  max-height:190px !important;
  object-fit:contain;
}

.album-chat-picker-panel { height:66.67dvh; max-height:66.67dvh; }
.album-chat-picker-panel .album-picker-grid { overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
.chat-message .chat-bubble.image-stack,
.chat-message.is-user .chat-bubble.image-stack,
.chat-message.is-character .chat-bubble.image-stack { flex:0 1 auto; width:auto; max-width:calc(100% - 40px) !important; padding:0 !important; border:0 !important; background:transparent !important; background-image:none !important; box-shadow:none !important; }
.chat-image-stack { display:flex; align-items:center; justify-content:flex-end; gap:10px; width:min(320px, calc(100vw - 112px)); min-height:250px; padding:0 !important; border:0; border-radius:14px; background:transparent !important; color:inherit; cursor:pointer; }
.chat-image-stack-layers { position:relative; order:2; flex:0 0 min(218px, calc(100vw - 142px)); height:250px; }
.chat-image-stack-photo { position:absolute; top:0; left:0; width:min(184px, calc(100vw - 190px)) !important; height:230px !important; max-width:none !important; max-height:none !important; border:0; border-radius:14px; object-fit:cover !important; box-shadow:0 5px 14px rgba(0,0,0,.12); }
.chat-image-stack-photo.is-layer-0 { z-index:3; top:0; left:0; transform:rotate(-1deg); }
.chat-image-stack-photo.is-layer-1 { z-index:2; top:9px; left:17px; opacity:.62; transform:rotate(2.5deg); }
.chat-image-stack-photo.is-layer-2 { z-index:1; top:20px; left:32px; opacity:.46; transform:rotate(5deg); }
.chat-image-stack-expand { order:1; flex:0 0 auto; padding:8px 12px; border-radius:999px; background:#e4e4e4 !important; color:#666 !important; font-size:12px; white-space:nowrap; }
.chat-bubble.image-stack-expanded { display:flex; align-items:center; gap:12px; padding:0 !important; border:0 !important; background:transparent !important; box-shadow:none !important; }
.chat-image-stack-collapse { flex:0 0 auto; padding:11px 17px; border:0; border-radius:999px; background:#e4e4e4; color:#666; font:inherit; font-size:14px; cursor:pointer; }
.chat-message[data-chat-image-batch-id] .chat-bubble.image:not(.sticker) img { max-width:min(280px, calc(100vw - 142px)) !important; max-height:360px !important; }
.chat-image-stack-viewer { position:fixed; inset:0; z-index:95; display:grid; align-items:end; }
.chat-image-stack-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(0,0,0,.4); }
.chat-image-stack-viewer > section { position:relative; display:flex; flex-direction:column; height:min(76dvh,720px); border-radius:22px 22px 0 0; background:#f7f7f7; }
.chat-image-stack-viewer header { display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid rgba(0,0,0,.08); }
.chat-image-stack-viewer header b { font-size:15px; }
.chat-image-stack-viewer header button { width:28px; height:28px; border:0; border-radius:50%; background:#e9e9e9; font-size:18px; }
.chat-image-stack-viewer main { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-content:start; gap:8px; min-height:0; padding:12px; overflow:auto; }
.chat-image-stack-viewer main img { display:block; width:100%; aspect-ratio:1; border-radius:11px; object-fit:cover; }
.chat-image-batch-card { width:min(92vw, 520px); }
.chat-image-batch-carousel { display:flex; gap:14px; min-height:0; padding:14px; overflow-x:scroll; overflow-y:hidden; scroll-snap-type:x mandatory; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; scrollbar-width:none; touch-action:pan-x; }
.chat-image-batch-carousel::-webkit-scrollbar { display:none; }
.chat-image-batch-carousel figure { display:grid; flex:0 0 100%; min-width:0; margin:0; place-items:center; scroll-snap-align:center; }
.chat-image-batch-carousel img { display:block; width:100%; max-width:100%; height:min(58dvh, 460px); border-radius:14px; object-fit:contain; }
.chat-image-batch-carousel figcaption { margin-top:8px; color:#888; font-size:11px; }
.chat-image-batch-nav { position:absolute; top:50%; z-index:2; display:grid; place-items:center; width:30px; height:30px; margin-top:-15px; padding:0; border:0; border-radius:50%; background:rgba(0,0,0,.28); color:#fff; font:26px/1 sans-serif; cursor:pointer; }
.chat-image-batch-nav.is-prev { left:10px; }
.chat-image-batch-nav.is-next { right:10px; }

/* iOS Safari：壁纸取色完成后，具体聊天页的非气泡文字和控件也同步切换。 */
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-messages { color:#fff; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person { border-bottom-color:rgba(255,255,255,.26); }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person b,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person small,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-hint { color:#fff !important; text-shadow:0 1px 3px rgba(0,0,0,.58); }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person small { color:rgba(255,255,255,.72) !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person button { border-color:rgba(255,255,255,.34); background:rgba(0,0,0,.3); color:#fff; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-message > small { color:rgba(255,255,255,.78) !important; text-shadow:0 1px 2px rgba(0,0,0,.5); }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-bubble.image-desc { border-color:rgba(255,255,255,.3) !important; background:rgba(12,15,20,.48) !important; color:#fff !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-voice-text { background:rgba(12,15,20,.42); color:#fff; }
.chat-app.is-chatting.chat-wallpaper-light .chat-header { border-bottom-color:rgba(255,255,255,.58) !important; background:rgba(248,248,246,.46) !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-header .chat-top-name { color:#222 !important; text-shadow:0 1px 2px rgba(255,255,255,.42); }
.chat-app.is-chatting.chat-wallpaper-light .chat-header .chat-top-back,
.chat-app.is-chatting.chat-wallpaper-light .chat-header .chat-top-settings { background:rgba(255,255,255,.42) !important; color:#222 !important; border-color:rgba(255,255,255,.5) !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap { border-color:rgba(255,255,255,.68) !important; background:rgba(255,255,255,.22) !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose input { border-color:rgba(0,0,0,.1) !important; background:rgba(255,255,255,.72) !important; color:#222 !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose input::placeholder { color:#777 !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose button { color:#555 !important; filter:none; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation .chat-message > small { color:#aaa !important; text-shadow:none; }

/* 线下页不依赖系统深色模式，直接使用实际壁纸取色结果。 */
.chat-offline-modal[data-offline-contrast="dark"] {
  --offline-ink:#f7f7f7;
  --offline-muted:rgba(255,255,255,.75);
  --offline-line:rgba(255,255,255,.26);
  --offline-glass:rgba(12,15,20,.28);
  --offline-glass-strong:rgba(12,15,20,.42);
  --offline-shadow:0 18px 46px rgba(0,0,0,.3);
}
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-topbar,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-presence,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-summary,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-message-body > span,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-message-text,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-message-text > p { color:var(--offline-ink) !important; }
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene-copy > span,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-scene-copy p,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-presence small,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock input::placeholder,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock textarea::placeholder { color:var(--offline-muted) !important; }
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock form button,
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-settings-actions button { color:var(--offline-ink) !important; }
.chat-offline-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-v2-dock form button[type="submit"] { color:#fff !important; }

/* 壁纸取色最终覆盖：文字、控件和图标一起适配，不只改变毛玻璃边框。 */
.chat-app.is-chatting.chat-wallpaper-dark .chat-header,
.chat-app.is-chatting.chat-wallpaper-dark .chat-header *,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person *,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-messages > .chat-hint,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-message > small,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose input,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose button,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-tools button,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-tools button span,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-emoji-panel,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-emoji-panel button { color:#fff !important; text-shadow:0 1px 3px rgba(0,0,0,.58); }
.chat-app.is-chatting.chat-wallpaper-dark .chat-header { border-bottom-color:rgba(255,255,255,.38) !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person { border-bottom-color:rgba(255,255,255,.38) !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-header button,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation .chat-person button,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose button { border-color:rgba(255,255,255,.34) !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose input { -webkit-text-fill-color:#fff !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose input::placeholder { color:rgba(255,255,255,.72) !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap svg { color:#fff !important; stroke:currentColor; fill:none; }

.chat-app.is-chatting.chat-wallpaper-light .chat-header,
.chat-app.is-chatting.chat-wallpaper-light .chat-header *,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation .chat-person,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation .chat-person *,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation .chat-messages > .chat-hint,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation .chat-message > small,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose input,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose button,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-tools button,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-tools button span,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-emoji-panel,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-emoji-panel button { color:#171717 !important; text-shadow:0 1px 2px rgba(255,255,255,.56); }
.chat-app.is-chatting.chat-wallpaper-light .chat-header { border-bottom-color:rgba(17,17,17,.2) !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation .chat-person { border-bottom-color:rgba(17,17,17,.2) !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-header button,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation .chat-person button,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose button { border-color:rgba(17,17,17,.18) !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose input { -webkit-text-fill-color:#171717 !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose input::placeholder { color:rgba(17,17,17,.58) !important; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap svg { color:#171717 !important; stroke:currentColor; fill:none; }

.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="light"] {
  --offline-ink:#171717 !important;
  --offline-muted:rgba(23,23,23,.68) !important;
  --offline-line:rgba(23,23,23,.24) !important;
  --offline-glass:rgba(255,255,255,.34) !important;
  --offline-glass-strong:rgba(255,255,255,.56) !important;
  --offline-shadow:0 18px 46px rgba(0,0,0,.16) !important;
}
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] {
  --offline-ink:#f7f7f7 !important;
  --offline-muted:rgba(255,255,255,.78) !important;
  --offline-line:rgba(255,255,255,.3) !important;
}
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 * { color:var(--offline-ink) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-scene-copy > span,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-scene-copy p,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-presence small,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-message-body > span,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-empty,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-dock input::placeholder,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-dock textarea::placeholder,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-settings > p,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-settings label small { color:var(--offline-muted) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-messages article.is-character:not(.is-thinking) .chat-offline-v2-message-text > p { color:var(--offline-ink) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="light"] .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="light"] .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text > p { color:#171717 !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast="dark"] .offline-meeting-v2 .chat-offline-messages article.is-user .chat-offline-v2-message-text > p { color:#fff !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 .chat-offline-v2-dock form button[type="submit"] { color:#fff !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 input,
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 textarea { color:var(--offline-ink) !important; caret-color:var(--offline-ink); -webkit-text-fill-color:var(--offline-ink) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 select { color:var(--offline-ink) !important; caret-color:var(--offline-ink); -webkit-text-fill-color:var(--offline-ink) !important; }
.chat-offline-modal.is-fullscreen-modal[data-offline-contrast] .offline-meeting-v2 svg { color:var(--offline-ink) !important; stroke:currentColor; }

/* 聊天 dock：使用微信式线稿图标，当前页面的图标保持灰色。 */
.chat-tabs button { color:#202020 !important; }
.chat-tabs button.is-active .chat-tab-icon { color:#8b8b8b !important; }
.chat-tabs .chat-tab-icon { width:30px; height:30px; stroke-width:1.9; }
.chat-tabs .chat-tab-compass-outline { fill:none; }
.chat-tabs .chat-tab-compass-fill { display:none; fill:currentColor; stroke:none; }
.chat-tabs .chat-tab-compass-needle { fill:currentColor; stroke:none; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-outline { display:none; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-fill { display:block; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-needle { fill:#fff; }
.chat-tabs button[data-chat-tab="chat"] { position:relative; }
.chat-tab-unread-badge { position:absolute; top:-1px; right:1px; z-index:2; display:grid; place-items:center; min-width:18px; height:18px; padding:0 5px; border:2px solid rgba(248,248,246,.9); border-radius:999px; background:#222; color:#fff; font-size:9px; font-style:normal; font-weight:700; line-height:1; }
@media not all { .chat-tab-unread-badge { border-color:rgba(35,35,35,.9); background:#f2f2f2; color:#222; } }

/* 微信式聊天 dock：当前页只使用灰色，不使用绿色强调色。 */
.chat-tabs button,
.chat-tabs button.is-active,
.chat-tabs button.is-active small,
.chat-tabs button.is-active .chat-tab-icon { color:#8b8b8b !important; }
.chat-tabs button:not(.is-active) .chat-tab-icon { color:#202020 !important; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-fill { fill:#8b8b8b !important; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-needle { fill:#fff !important; }
.chat-tabs .chat-tab-icon-wrap { position:relative; display:grid; flex:0 0 32px; place-items:center; width:32px; height:32px; margin:0 auto; }
.chat-tabs .chat-tab-icon-wrap .chat-tab-icon { margin:0; }
.chat-tabs .chat-tab-icon-wrap .chat-tab-unread-badge {
  top:-7px;
  right:-9px;
  min-width:21px;
  height:21px;
  box-sizing:border-box;
  padding:0 4px;
  border:2px solid #fff;
  background:#202020;
  color:#fff;
  font-size:11px;
  pointer-events:none;
}
@media not all { .chat-tabs .chat-tab-icon-wrap .chat-tab-unread-badge { border-color:#333; background:#202020; color:#fff; } }
.chat-tabs button:not(.is-active) .chat-tab-icon,
.chat-tabs button:not(.is-active) .chat-tab-icon * { stroke:#202020 !important; }
.chat-tabs button.is-active .chat-tab-icon,
.chat-tabs button.is-active .chat-tab-icon * { stroke:#8b8b8b !important; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-fill,
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-needle { stroke:none !important; }
.chat-tabs button:not(.is-active),
.chat-tabs button:not(.is-active) small { color:#202020 !important; }
.chat-tabs .chat-tab-icon { width:32px; height:32px; stroke-width:2.2; }
.chat-tabs button:not(.is-active) .chat-tab-shape { fill:none !important; }
.chat-tabs button.is-active .chat-tab-shape { fill:#8b8b8b !important; stroke:#8b8b8b !important; }
.chat-tabs button .chat-tab-detail { fill:none !important; }
.chat-tabs button:not(.is-active) .chat-tab-compass-needle { fill:#202020 !important; stroke:none !important; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-outline { display:none; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-fill { display:block; fill:#8b8b8b !important; }
.chat-tabs button[data-chat-tab="moments"].is-active .chat-tab-compass-needle { fill:#fff !important; }

/* 多图消息不使用外层气泡底色；只保留图片叠放和“展开”按钮。 */
.chat-bubble.image-stack,
.chat-message.is-user .chat-bubble.image-stack,
.chat-message.is-character .chat-bubble.image-stack {
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  background-image:none !important;
  box-shadow:none !important;
}
.chat-image-stack { background:transparent !important; background-image:none !important; }
.chat-message[data-chat-image-stack-collapsed] .chat-message-line > small { display:none !important; }
.chat-image-stack { touch-action:pan-y; -webkit-user-select:none; user-select:none; }
.chat-image-stack-photo { pointer-events:none; -webkit-user-drag:none; }

/* 一起聊聊：顶部空白区域用于拖动面板。 */
.chat-reading-mini > header { cursor:grab; touch-action:none; -webkit-user-select:none; user-select:none; }
.chat-reading-mini > header:active { cursor:grabbing; }
.chat-reading-mini > header button { cursor:pointer; touch-action:auto; }

/* 多图消息：按参考图 3 做成紧凑的右侧叠放，给头像和时间留出固定空间。 */
.chat-image-stack {
  width:min(292px, calc(100vw - 132px)) !important;
  min-height:214px !important;
  gap:8px !important;
  overflow:visible !important;
}
.chat-image-stack-layers {
  flex-basis:min(178px, calc(100vw - 190px)) !important;
  height:214px !important;
}
.chat-image-stack-photo {
  width:min(154px, calc(100vw - 214px)) !important;
  height:198px !important;
  border-radius:12px !important;
}
.chat-image-stack-photo.is-layer-1 { top:9px !important; left:14px !important; }
.chat-image-stack-photo.is-layer-2 { top:18px !important; left:28px !important; }
.chat-image-stack-expand {
  padding:10px 14px !important;
  border-radius:999px !important;
  font-size:13px !important;
  line-height:1.2 !important;
}
.chat-image-stack-collapse {
  padding:8px 12px !important;
  font-size:12px !important;
}
.chat-message[data-chat-image-batch-id] .chat-bubble.image:not(.sticker) img {
  max-width:min(250px, calc(100vw - 150px)) !important;
  max-height:300px !important;
}
.chat-music-message { display:flex; align-items:center; gap:10px; min-width:190px; max-width:280px; padding:2px 0; }
.chat-music-message { cursor:pointer; }
.chat-music-message > img, .chat-music-mark { display:grid; flex:0 0 48px; place-items:center; width:48px; height:48px; overflow:hidden; border-radius:9px; background:linear-gradient(145deg,#d8b4c4,#6c718b); color:#fff; font-size:25px; }
.chat-music-message > img { object-fit:cover; }
.chat-music-message > div { display:grid; gap:5px; min-width:0; }
.chat-music-message b, .chat-music-message small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.chat-music-message b { font-size:13px; }
.chat-music-message small { color:#888; font-size:10px; }
.chat-music-message { position:relative; padding-right:24px; }
.chat-music-add-playlist { position:absolute; right:0; bottom:0; display:grid; place-items:center; width:22px; height:22px; padding:0; border:1px solid rgba(0,0,0,.1); border-radius:50%; background:rgba(255,255,255,.82); color:#333; font-size:15px; line-height:1; cursor:pointer; }
.chat-music-add-playlist:hover { background:#222; color:#fff; }
.chat-music-share-backdrop { position:fixed; inset:0; z-index:40; background:rgba(0,0,0,.25); -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px); }
.chat-music-share-sheet { position:fixed; top:auto !important; right:0; bottom:0 !important; left:0; z-index:41; display:flex; flex-direction:column; width:100%; height:min(78vh,620px); height:min(78dvh,620px); max-height:calc(100dvh - max(12px, env(safe-area-inset-top))); min-height:260px; box-sizing:border-box; overflow:hidden; padding:18px 18px calc(18px + env(safe-area-inset-bottom)); border-radius:24px 24px 0 0; background:#fbfbfc; box-shadow:0 -12px 38px rgba(0,0,0,.18); color:#222; animation:chatMusicSheetUp .22s ease-out; }
.chat-music-share-sheet header { display:flex; align-items:center; justify-content:space-between; margin-bottom:15px; }
.chat-music-share-sheet header div { display:grid; gap:5px; }.chat-music-share-sheet header span { color:#999; font-size:9px; font-weight:700; letter-spacing:.16em; }.chat-music-share-sheet h2 { font-size:20px; }.chat-music-share-sheet header button { width:30px; height:30px; border:0; border-radius:50%; background:#eeeef1; color:#555; font-size:22px; line-height:1; }
.chat-music-share-search { display:flex; gap:8px; height:42px; margin-bottom:12px; }.chat-music-share-search select { flex:0 0 112px; min-width:0; padding:0 8px; border:0; border-radius:12px; outline:0; background:#eeeef1; color:#222; font:inherit; font-size:11px; }.chat-music-share-search input { flex:1; min-width:0; padding:0 13px; border:0; border-radius:12px; outline:0; background:#eeeef1; color:#222; font:inherit; font-size:12px; }.chat-music-share-search button { padding:0 15px; border:0; border-radius:12px; background:#222; color:#fff; font:inherit; font-size:11px; }
.chat-music-share-sheet main { flex:1; min-height:0; overflow:auto; }.chat-music-share-status { padding:46px 10px; color:#999; font-size:12px; text-align:center; }.chat-music-share-song { display:flex; align-items:center; gap:10px; width:100%; margin-bottom:8px; padding:9px; border:1px solid rgba(0,0,0,.07); border-radius:14px; background:#fff; color:#222; text-align:left; }.chat-music-share-cover { display:grid; flex:0 0 45px; place-items:center; width:45px; height:45px; overflow:hidden; border-radius:10px; background:linear-gradient(145deg,#d8b4c4,#6c718b); color:#fff; font-size:22px; }.chat-music-share-cover img { width:100%; height:100%; object-fit:cover; }.chat-music-share-song > span:nth-child(2) { display:grid; flex:1; gap:4px; min-width:0; }.chat-music-share-song b,.chat-music-share-song small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.chat-music-share-song b { font-size:12px; }.chat-music-share-song small { color:#999; font-size:10px; }.chat-music-share-song em { padding:7px 9px; border-radius:9px; background:#222; color:#fff; font-size:10px; font-style:normal; }
@keyframes chatMusicSheetUp { from { transform:translateY(100%); opacity:.7; } to { transform:translateY(0); opacity:1; } }
@media not all { .chat-music-share-sheet { background:#29292c; color:#eee; }.chat-music-share-sheet header button,.chat-music-share-search input,.chat-music-share-search select { background:rgba(255,255,255,.1); color:#eee; }.chat-music-share-search button,.chat-music-share-song em { background:#eee; color:#222; }.chat-music-share-song { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#eee; } }
.music-search-source { flex:0 0 auto; color:#555; font-size:10px; font-weight:600; white-space:nowrap; }
.chat-music-share-source { display:grid; flex:0 0 112px; place-items:center; border-radius:12px; background:#eeeef1; color:#555; font-size:11px; white-space:nowrap; }
@media not all { .music-search-source { color:#eee; } .chat-music-share-source { background:rgba(255,255,255,.1); color:#eee; } }
@media (max-width:600px) {
  .chat-music-share-sheet { height:min(70dvh,560px); max-height:calc(100dvh - max(12px, env(safe-area-inset-top))); }
  .chat-music-share-search { flex:0 0 42px; }
}

/* 黑胶唱片播放台：唱片只在播放时旋转，唱臂保持压在唱片上。 */
.music-turntable { position:relative; width:min(78vw,310px); aspect-ratio:1; margin:0 auto 4px; }
.music-turntable .music-disc { position:absolute; inset:17px 0 0; display:grid; place-items:center; width:calc(100% - 17px); height:calc(100% - 17px); margin:auto; padding:0; overflow:visible; border:1px solid rgba(0,0,0,.14); border-radius:50%; background:repeating-radial-gradient(circle at 50% 50%,#17181b 0 2px,#242529 2px 4px,#111216 4px 6px),radial-gradient(circle,#33343a 0 8%,#17181b 8% 100%); box-shadow:0 16px 30px rgba(0,0,0,.16),inset 0 0 0 7px rgba(255,255,255,.045),inset 0 0 0 11px rgba(0,0,0,.34); transform-origin:center; }
.music-turntable .music-disc.is-playing { animation:music-vinyl-spin 7s linear infinite; }
.music-turntable .music-disc>div { position:relative; width:68%; height:68%; overflow:hidden; border:5px solid #202125; border-radius:50%; background:#76767b; box-shadow:0 0 0 2px rgba(255,255,255,.14),0 3px 10px rgba(0,0,0,.32); }
.music-turntable .music-disc>div::after { position:absolute; top:50%; left:50%; width:9px; height:9px; border:2px solid rgba(255,255,255,.9); border-radius:50%; background:#25252a; content:""; transform:translate(-50%,-50%); }
.music-turntable .music-disc img { position:relative; z-index:0; }
.music-tonearm { position:absolute; inset:0; z-index:6; pointer-events:none; overflow:visible; filter:drop-shadow(0 3px 4px rgba(0,0,0,.2)); transform:translateY(var(--music-tonearm-y,0px)); transition:none; visibility:hidden; }
.music-tonearm.is-positioned { visibility:visible; }
.music-tonearm-image { position:absolute; top:-7%; left:26.5%; width:84%; height:auto; max-width:none; transform:rotate(-30deg); transform-origin:28.2% 24.2%; transition:transform .52s cubic-bezier(.22,.75,.18,1); }
.music-turntable.is-playing .music-tonearm-image { transform:rotate(18deg); }
.music-tonearm.is-lowering .music-tonearm-image { animation:music-tonearm-lower .52s cubic-bezier(.22,.75,.18,1) both; }
.music-tonearm.is-raising .music-tonearm-image { animation:music-tonearm-raise .52s cubic-bezier(.22,.75,.18,1) both; }
@keyframes music-tonearm-lower { from { transform:rotate(-30deg); } to { transform:rotate(18deg); } }
@keyframes music-tonearm-raise { from { transform:rotate(18deg); } to { transform:rotate(-30deg); } }
@keyframes music-vinyl-spin { to { transform:rotate(360deg); } }
@media not all { .music-turntable .music-disc { border-color:rgba(255,255,255,.16); box-shadow:0 16px 30px rgba(0,0,0,.34),inset 0 0 0 7px rgba(255,255,255,.04),inset 0 0 0 11px rgba(0,0,0,.42); }.music-turntable .music-disc>div { border-color:#24252a; } }

/* 播放/暂停使用黑色圆底，图标保持白色线条。 */
.music-player-controls .music-play-control,
.music-player-controls .music-play-control:hover,
.music-player-controls .music-play-control:active {
  background:#18181a;
  color:#fff;
  box-shadow:0 7px 17px rgba(0,0,0,.17);
}
.music-player-controls .music-play-control svg { fill:none; stroke:currentColor; }

/* 播放页主控件的最终覆盖：只有中间主按钮使用黑底。 */
.music-player .music-player-controls > .music-play-control,
.music-player .music-player-controls > .music-play-control:hover,
.music-player .music-player-controls > .music-play-control:active,
.music-player .music-player-controls > .music-play-control:focus,
.music-player .music-player-controls > .music-play-control:focus-visible {
  background-color:#18181a !important;
  background-image:none !important;
  border:0 !important;
  border-radius:50% !important;
  color:#fff !important;
  box-shadow:0 7px 17px rgba(0,0,0,.17) !important;
}
.music-player .music-player-controls > .music-play-control svg {
  fill:none !important;
  stroke:#fff !important;
}

/* 主按钮再用独立圆底兜底，避免 SVG 动态替换或旧 DOM 导致黑底消失。 */
.music-player .music-player-controls > .music-play-control {
  position:relative !important;
  isolation:isolate;
}
.music-player .music-player-controls > .music-play-control::before {
  position:absolute;
  inset:0;
  z-index:-1;
  border-radius:50%;
  background:#18181a !important;
  content:"";
  pointer-events:none;
}
.music-player .music-player-controls > .music-play-control svg {
  position:relative;
  z-index:1;
}

/* 完整歌词页也保持黑色圆底和白色播放/暂停线条。 */
.music-full-lyrics-controls button.is-primary,
.music-full-lyrics-controls button.is-primary:hover,
.music-full-lyrics-controls button.is-primary:active,
.music-full-lyrics-controls button.is-primary:focus,
.music-full-lyrics-controls button.is-primary:focus-visible {
  background:#18181a !important;
  background-color:#18181a !important;
  border-color:transparent !important;
  color:#fff !important;
}
.music-full-lyrics-controls button.is-primary svg {
  fill:none !important;
  stroke:#fff !important;
}

.music-player .music-primary-control-svg {
  display:block !important;
  width:56px !important;
  height:56px !important;
  overflow:visible !important;
}
.music-player .music-primary-control-svg .music-primary-control-bg {
  fill:#18181a !important;
  stroke:none !important;
}
.music-player .music-primary-control-svg .music-primary-control-icon {
  fill:none !important;
  stroke:#fff !important;
  stroke-width:2.1 !important;
  stroke-linecap:round;
  stroke-linejoin:round;
}

/* 播放页的单行歌词是信息预览：当前句直接使用黑色，不参与逐字高亮动画。
   逐字高亮只保留在完整歌词页。 */
.music-player .music-lyrics p[data-music-lyric-line].is-active,
.music-player .music-lyrics p[data-music-lyric-line].is-active .music-lyric-text,
.music-player .music-lyrics p[data-music-lyric-line].is-active .music-lyric-base,
.music-player .music-lyrics p[data-music-lyric-line].is-active .music-lyric-highlight {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  background:none !important;
}
.music-player .music-lyrics p[data-music-lyric-line].is-active .music-lyric-highlight {
  width:100% !important;
}

/* 跨浏览器/跨手机兜底：不使用桌面端专属选择器，也不让系统原生按钮皮肤覆盖播放器控件。 */
.music-app .music-player-controls .music-play-control,
.music-app .music-full-lyrics-controls .is-primary {
  appearance:none !important;
  -webkit-appearance:none !important;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
.music-app .music-player-controls .music-play-control {
  display:grid !important;
  place-items:center !important;
  width:56px !important;
  min-width:56px !important;
  height:56px !important;
  min-height:56px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:50% !important;
  background:#18181a !important;
  background-color:#18181a !important;
  color:#fff !important;
  opacity:1 !important;
  visibility:visible !important;
}
.music-app .music-player-controls .music-play-control > svg {
  display:block !important;
  width:24px !important;
  height:24px !important;
  fill:none !important;
  stroke:#fff !important;
}
.music-app .music-player-controls .music-play-control > svg.music-primary-control-svg {
  width:56px !important;
  height:56px !important;
}

/* 播放页桌面歌词开关：与进度条同宽区域的右端对齐。 */
.music-player .music-player-meta {
  position:relative;
  width:min(86vw,350px);
  box-sizing:border-box;
}
.music-player .music-desktop-lyrics-toggle {
  position:absolute;
  top:0;
  right:0;
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  padding:0;
  border:0;
  border-radius:8px;
  background:#b9b9bd;
  color:#fff;
  font:700 12px/1 inherit;
  cursor:pointer;
  transition:background .18s ease,transform .18s ease;
}
.music-player .music-desktop-lyrics-toggle.is-enabled {
  background:#18181a;
}
.music-player .music-desktop-lyrics-toggle:active {
  transform:scale(.94);
}
.music-player .music-player-meta h2[data-music-title] {
  display:block;
  width:100%;
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
  overflow:hidden;
  padding:0 38px;
  text-overflow:ellipsis;
  white-space:nowrap;
  transition:none;
}
.music-player .music-player-meta h2[data-music-title]:not(.is-fitted) { visibility:hidden; }
.music-player {
  min-width:0;
  max-width:100%;
  overflow:visible;
  touch-action:pan-y;
}
.music-desktop-lyrics {
  position:fixed;
  right:16px;
  bottom:max(18px,env(safe-area-inset-bottom));
  z-index:120;
  width:min(420px,calc(100vw - 32px));
  box-sizing:border-box;
  padding:13px 15px 12px;
  border:1px solid rgba(0,0,0,.1);
  border-radius:18px;
  background:rgba(250,250,252,.94);
  color:#1b1b1e;
  box-shadow:0 14px 38px rgba(0,0,0,.2);
  -webkit-backdrop-filter:blur(22px);
  backdrop-filter:blur(22px);
}
.music-desktop-lyrics header,
.music-desktop-lyrics-song,
.music-desktop-lyrics footer {
  display:flex;
  align-items:center;
}
.music-desktop-lyrics header { justify-content:space-between; }
.music-desktop-lyrics header span { color:#999; font-size:9px; font-weight:700; letter-spacing:.14em; }
.music-desktop-lyrics header button { width:24px; height:24px; border:0; border-radius:50%; background:rgba(0,0,0,.07); color:#555; font-size:17px; line-height:1; cursor:pointer; }
.music-desktop-lyrics-song { gap:7px; margin-top:8px; min-width:0; }
.music-desktop-lyrics-song b { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.music-desktop-lyrics-song small { overflow:hidden; color:#999; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.music-desktop-lyrics-line { min-height:28px; margin:12px 0 10px; overflow:hidden; font-size:16px; font-weight:650; line-height:1.6; text-overflow:ellipsis; white-space:nowrap; }
.music-desktop-lyrics footer { justify-content:center; gap:22px; }
.music-desktop-lyrics footer button { display:grid; place-items:center; width:34px; height:34px; padding:0; border:0; border-radius:50%; background:transparent; color:#35353a; cursor:pointer; }
.music-desktop-lyrics footer button.is-primary { width:40px; height:40px; background:#18181a; color:#fff; }
.music-desktop-lyrics footer svg { width:19px; height:19px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
@media (max-width:520px) {
  .music-desktop-lyrics { right:10px; bottom:max(10px,env(safe-area-inset-bottom)); left:10px; width:auto; }
}
@media (max-width:680px) {
  .music-desktop-lyrics:not(.is-orb) {
    -webkit-backdrop-filter:blur(12px) saturate(135%);
    backdrop-filter:blur(12px) saturate(135%);
  }
}
@media not all {
  .music-player .music-desktop-lyrics-toggle { background:#68686d; }
  .music-player .music-desktop-lyrics-toggle.is-enabled { background:#050506; }
  .music-desktop-lyrics { border-color:rgba(255,255,255,.12); background:rgba(35,35,39,.94); color:#f4f4f5; }
  .music-desktop-lyrics header button { background:rgba(255,255,255,.1); color:#ddd; }
  .music-desktop-lyrics footer button { color:#ddd; }
  .music-desktop-lyrics footer button.is-primary { background:#050506; color:#fff; }
}

/* 歌单面板：当前播放歌曲显示灰色条目，并把播放三角切换为暂停双竖线。 */
.music-queue-song.is-current {
  background:#e7e7ea;
  color:#222;
}
.music-queue-song.is-current > i {
  color:#222;
}
.music-queue-song.is-playing > i {
  display:grid;
  place-items:center;
}
@media not all {
  .music-queue-song.is-current {
    background:#4a4a50;
    color:#fff;
  }
  .music-queue-song.is-current > i {
    color:#fff;
  }
}

/* 歌词逐字高亮：每个字都有独立的底层文字和覆盖层，避免整句一次性变色。 */
.music-lyric-text { white-space: pre-wrap; }
.music-lyric-char { position:relative; display:inline-block; white-space:pre; }
.music-lyric-char > .music-lyric-base { display:block; }
.music-lyric-char > .music-lyric-highlight {
  position:absolute !important;
  inset:0 auto 0 0 !important;
  display:block !important;
  width:var(--char-progress,0%) !important;
  max-width:100% !important;
  overflow:hidden !important;
  white-space:pre !important;
  transition:width .08s linear;
  will-change:width;
}
.music-full-lyrics-scroll p:not(.is-active) .music-lyric-char > .music-lyric-highlight {
  width:0 !important;
}
.music-player .music-lyrics p.is-active .music-lyric-char > .music-lyric-highlight {
  width:100% !important;
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
}

/* 外卖页搜索与推荐操作。 */
.shop-section-head button:disabled {
  cursor:wait;
  opacity:.55;
}
.shop-takeaway-status {
  max-width:520px;
  margin:-3px auto 11px;
  color:#999;
  font-size:10px;
  text-align:center;
}

/* 桌面歌词：磨砂毛玻璃、可拖动、紧凑模式与最小化悬浮球。 */
.music-desktop-lyrics {
  background:rgba(255,255,255,.58);
  border-color:rgba(255,255,255,.72);
  box-shadow:0 16px 42px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.72);
  -webkit-backdrop-filter:blur(28px) saturate(165%);
  backdrop-filter:blur(28px) saturate(165%);
}
.music-desktop-lyrics-drag {
  touch-action:none;
  user-select:none;
  cursor:grab;
}
.music-desktop-lyrics-line,
.music-desktop-lyrics-song {
  touch-action:none;
  user-select:none;
  cursor:grab;
}
.music-desktop-lyrics.is-dragging,
.music-desktop-lyrics.is-dragging .music-desktop-lyrics-drag,
.music-desktop-lyrics.is-dragging .music-desktop-lyrics-line,
.music-desktop-lyrics.is-dragging .music-desktop-lyrics-song {
  cursor:grabbing;
  user-select:none;
}
.music-desktop-lyrics-actions {
  display:flex;
  align-items:center;
  gap:5px;
}
.music-desktop-lyrics-actions button {
  display:grid;
  place-items:center;
  width:24px;
  height:24px;
  padding:0;
  border:0;
  border-radius:50%;
  background:rgba(0,0,0,.07);
  color:#555;
  font:inherit;
  font-size:16px;
  line-height:1;
  cursor:pointer;
}
.music-desktop-lyrics-actions button:active {
  transform:scale(.92);
}
.music-desktop-lyrics.is-compact {
  width:min(330px,calc(100vw - 32px));
  padding:10px 12px 9px;
}
.music-desktop-lyrics.is-compact .music-desktop-lyrics-line {
  min-height:23px;
  margin:8px 0 7px;
  font-size:13px;
  line-height:1.45;
}
.music-desktop-lyrics.is-compact footer {
  gap:14px;
}
.music-desktop-lyrics.is-compact footer button {
  width:29px;
  height:29px;
}
.music-desktop-lyrics.is-compact footer button.is-primary {
  width:34px;
  height:34px;
}
.music-desktop-lyrics.is-orb {
  right:16px;
  left:auto;
  bottom:max(18px,env(safe-area-inset-bottom));
  width:58px;
  height:58px;
  padding:0;
  border:1px solid rgba(255,255,255,.72);
  border-radius:50%;
  background:rgba(255,255,255,.58);
}
.music-desktop-lyrics-orb {
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  padding:0;
  border:0;
  border-radius:50%;
  background:linear-gradient(145deg,rgba(255,255,255,.8),rgba(232,232,237,.44));
  color:#222;
  font-size:16px;
  font-weight:700;
  touch-action:none;
  cursor:pointer;
}
.music-desktop-lyrics-orb:active {
  transform:scale(.94);
}
@media (max-width:520px) {
  .music-desktop-lyrics.is-orb {
    right:10px;
    left:auto;
    bottom:max(10px,env(safe-area-inset-bottom));
  }
}
@media not all {
  .music-desktop-lyrics {
    background:rgba(40,40,45,.58);
    border-color:rgba(255,255,255,.2);
    box-shadow:0 16px 42px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.16);
  }
  .music-desktop-lyrics-actions button {
    background:rgba(255,255,255,.1);
    color:#ddd;
  }
  .music-desktop-lyrics.is-orb {
    background:rgba(40,40,45,.58);
  }
  .music-desktop-lyrics-orb {
    background:linear-gradient(145deg,rgba(75,75,82,.86),rgba(32,32,37,.62));
    color:#fff;
  }
}

/* 最小化桌面歌词：小圆球旁只保留当前一句歌词，不显示毛玻璃面板和播放控制。 */
.music-desktop-lyrics.is-orb {
  display:flex;
  align-items:center;
  gap:8px;
  width:auto;
  min-width:0;
  height:36px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.music-desktop-lyrics.is-orb .music-desktop-lyrics-orb {
  flex:0 0 36px;
  width:36px;
  height:36px;
  border:0;
  background:#17171a;
  color:#fff;
  font-size:13px;
  box-shadow:0 3px 10px rgba(0,0,0,.16);
}
.music-desktop-lyrics.is-orb .music-desktop-lyrics-line {
  display:block;
  flex:0 1 300px;
  width:auto;
  max-width:min(300px,calc(100vw - 58px));
  min-width:0;
  min-height:0;
  margin:0;
  overflow:hidden;
  color:#17171a;
  font-size:13px;
  font-weight:650;
  line-height:1.35;
  text-align:left;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-shadow:0 1px 2px rgba(255,255,255,.72);
}
.music-desktop-lyrics.is-orb[data-lyrics-side="right"] { flex-direction:row-reverse; }
.music-desktop-lyrics.is-orb[data-lyrics-side="right"] .music-desktop-lyrics-line { text-align:right; }
.music-desktop-lyrics.is-orb[data-lyrics-side="left"] { flex-direction:row; }
.music-desktop-lyrics.is-orb[data-lyrics-side="left"] .music-desktop-lyrics-line { text-align:left; }
.music-desktop-lyrics.is-orb[data-lyrics-tone="light"] .music-desktop-lyrics-orb { background:#17171a; color:#fff; }
.music-desktop-lyrics.is-orb[data-lyrics-tone="light"] .music-desktop-lyrics-line { color:#17171a; text-shadow:0 1px 2px rgba(255,255,255,.78); }
.music-desktop-lyrics.is-orb[data-lyrics-tone="dark"] .music-desktop-lyrics-orb { background:#fff; color:#17171a; }
.music-desktop-lyrics.is-orb[data-lyrics-tone="dark"] .music-desktop-lyrics-line { color:#fff !important; -webkit-text-fill-color:#fff !important; -webkit-text-stroke:0 !important; text-shadow:none !important; }

/* 展开的大面板左右各显示一句：左侧当前句，右侧下一句。 */
.music-desktop-lyrics:not(.is-orb) { width:min(540px,calc(100vw - 32px)); }
.music-desktop-lyrics-lines { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; align-items:center; }
.music-desktop-lyrics-lines .music-desktop-lyrics-line { min-height:28px; margin:12px 0 10px; }
.music-desktop-lyrics-lines .music-desktop-lyrics-line.is-next { color:#999; font-weight:500; }
.music-desktop-lyrics.is-compact .music-desktop-lyrics-lines { gap:12px; }
.music-desktop-lyrics.is-compact .music-desktop-lyrics-lines .music-desktop-lyrics-line { min-height:23px; margin:8px 0 7px; font-size:13px; line-height:1.45; }

/* 展开桌面歌词同样按面板所在位置自动切换文字明暗。 */
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="light"] { border-color:rgba(0,0,0,.1); background:rgba(250,250,252,.78) !important; color:#17171a; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="light"] header button { color:#35353a; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="light"] .music-desktop-lyrics-line.is-current,
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="light"] .music-desktop-lyrics-song b { color:#17171a; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] { border-color:rgba(255,255,255,.16); background:rgba(250,250,252,.78) !important; color:#fff; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] header span,
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] .music-desktop-lyrics-song small { color:rgba(255,255,255,.62); }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] header button { background:rgba(255,255,255,.1); color:#fff; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] .music-desktop-lyrics-line.is-current,
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] .music-desktop-lyrics-song b { color:#fff; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] .music-desktop-lyrics-line.is-next { color:#999; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="light"] footer button.is-primary { background:#18181a; color:#fff; }
.music-desktop-lyrics:not(.is-orb)[data-lyrics-tone="dark"] footer button.is-primary { background:#fff; color:#17171a; }
.music-desktop-lyrics:not(.is-orb).is-idle { border-color:transparent !important; background:transparent !important; box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; cursor:pointer; }
.music-desktop-lyrics:not(.is-orb).is-idle > header,
.music-desktop-lyrics:not(.is-orb).is-idle > footer { opacity:0; pointer-events:none; }
.music-desktop-lyrics:not(.is-orb).is-idle > header { height:0; margin:0; overflow:hidden; }
.music-desktop-lyrics:not(.is-orb).is-idle > footer { height:0; margin:0; overflow:hidden; }

/* 线下模式的关键操作也统一使用壁纸上的毛玻璃，不使用黑色实底。 */
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .offline-wallpaper-actions label,
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-shortcuts button[data-offline-finish],
.chat-offline-modal.is-fullscreen-modal .offline-meeting-v2 .chat-offline-v2-dock form button[type="submit"] {
  border:1px solid var(--offline-line) !important;
  background:var(--offline-glass) !important;
  color:var(--offline-ink) !important;
  box-shadow:var(--offline-shadow),inset 0 1px 0 rgba(255,255,255,.35) !important;
  -webkit-backdrop-filter:blur(24px) saturate(155%) !important;
  backdrop-filter:blur(24px) saturate(155%) !important;
  opacity:1;
}

/* 同人文、辩论、杂志社使用各自的浅色编辑界面，不随桌面壁纸明暗改变整页配色。
   同人文阅读器的独立壁纸和毛玻璃控件仍由下方专用规则处理。 */

:is(.debate-app.is-wallpaper-light,.fanfic-app.is-wallpaper-light,.magazine-app.is-wallpaper-light) {
  background:#f5f5f3 !important;
  color:#272727 !important;
  color-scheme:light;
}
:is(.debate-app.is-wallpaper-light,.fanfic-app.is-wallpaper-light,.magazine-app.is-wallpaper-light) :is(.debate-page,.fanfic-page,.magazine-page) {
  background:linear-gradient(155deg,#f8f8f6,#efefed) !important;
  color:#272727 !important;
}
:is(.debate-app.is-wallpaper-light,.fanfic-app.is-wallpaper-light,.magazine-app.is-wallpaper-light) :is(.debate-header,.fanfic-header,.magazine-header) {
  border-color:rgba(0,0,0,.08) !important;
  background:rgba(248,248,246,.88) !important;
  color:#272727 !important;
}
:is(.debate-app.is-wallpaper-light,.fanfic-app.is-wallpaper-light,.magazine-app.is-wallpaper-light) :is(.debate-header h1,.fanfic-header h1,.magazine-header h1) {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  text-shadow:none !important;
}
:is(.debate-app.is-wallpaper-light,.fanfic-app.is-wallpaper-light,.magazine-app.is-wallpaper-light) :is(.debate-header button,.fanfic-header button,.magazine-round-button) {
  background:rgba(0,0,0,.055) !important;
  color:#555 !important;
}
:is(.debate-app.is-wallpaper-light,.fanfic-app.is-wallpaper-light,.magazine-app.is-wallpaper-light) :is(input,textarea,select) {
  background:rgba(255,255,255,.7) !important;
  color:#333 !important;
  -webkit-text-fill-color:#333 !important;
}

/* 聊天页“十字”工具面板保持原有浅色，不跟随聊天壁纸切换文字颜色。 */
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap > .chat-tools,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap > .chat-tools {
  border-top-color:rgba(0,0,0,.08) !important;
  background:rgba(248,248,246,.94) !important;
  color:#555 !important;
  text-shadow:none !important;
}
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap > .chat-tools button,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap > .chat-tools button {
  border-color:rgba(0,0,0,.07) !important;
  background:rgba(255,255,255,.45) !important;
  color:#555 !important;
  -webkit-text-fill-color:#555 !important;
  text-shadow:none !important;
  filter:none !important;
}
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap > .chat-tools button span,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap > .chat-tools button span,
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap > .chat-tools .chat-tool-icon,
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap > .chat-tools .chat-tool-icon {
  background:transparent !important;
  color:#555 !important;
  -webkit-text-fill-color:#555 !important;
  text-shadow:none !important;
  filter:none !important;
  stroke:currentColor;
}

/* 表情包面板固定使用黑色按钮文字，不跟随聊天壁纸自动换色。 */
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap > .chat-emoji-panel,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap > .chat-emoji-panel button,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap > .chat-emoji-panel button span {
  color:#171717 !important;
  -webkit-text-fill-color:#171717 !important;
  text-shadow:none !important;
}
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap > .chat-emoji-panel .chat-emoji-groups button.is-active {
  border-color:rgba(0,0,0,.12) !important;
  background:#ededeb !important;
  color:#171717 !important;
  -webkit-text-fill-color:#171717 !important;
}

/* 浅色桌面壁纸：App 名称和小组件文字明确回到黑色，覆盖系统深色模式的默认白字。 */
.app-item.auto-dark .app-name,
.dock-item.auto-dark .dock-name,
.dock-bar.auto-dark .dock-name {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  text-shadow:0 1px 2px rgba(255,255,255,.28) !important;
}
.profile-card.auto-dark { color:#222 !important; text-shadow:0 1px 3px rgba(255,255,255,.24); }
.profile-card.auto-dark .nickname-text,
.profile-card.auto-dark .love-heart { color:#222 !important; -webkit-text-fill-color:#222 !important; }
.profile-card.auto-dark .sign-text { color:#777 !important; -webkit-text-fill-color:#777 !important; }
.todo-widget.auto-dark { color:#222 !important; text-shadow:0 1px 3px rgba(255,255,255,.24); }
.todo-widget.auto-dark .todo-title,
.todo-widget.auto-dark .todo-list { color:#222 !important; -webkit-text-fill-color:#222 !important; }
.todo-widget.auto-dark .todo-new-row { color:#777 !important; -webkit-text-fill-color:#777 !important; }
.search-input.auto-dark {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  text-shadow:0 1px 2px rgba(255,255,255,.24) !important;
}
.search-input.auto-dark::placeholder { color:rgba(34,34,34,.58) !important; }
.date-calendar-card.auto-dark .date-calendar-left,
.date-calendar-card.auto-dark .date-calendar-month-day,
.date-calendar-card.auto-dark .date-calendar-note,
.date-calendar-card.auto-dark .calendar-header,
.date-calendar-card.auto-dark .calendar-days,
.date-calendar-card.auto-dark .date-calendar-year,
.date-calendar-card.auto-dark .date-calendar-weekday {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  text-shadow:0 1px 2px rgba(255,255,255,.24) !important;
}
.date-calendar-card.auto-dark .date-calendar-note,
.date-calendar-card.auto-dark .date-calendar-year,
.date-calendar-card.auto-dark .date-calendar-weekday,
.date-calendar-card.auto-dark .calendar-header,
.date-calendar-card.auto-dark .calendar-days { color:#666 !important; -webkit-text-fill-color:#666 !important; }
.page-indicator.auto-dark .dot { background:rgba(0,0,0,.28); box-shadow:0 1px 3px rgba(255,255,255,.24); }
.page-indicator.auto-dark .dot.active { background:#222; box-shadow:0 1px 4px rgba(255,255,255,.28); }

/* Safari 对继承色和系统深色模式的处理更严格，补齐新增桌面小组件的壁纸色系覆盖。 */
.app-item.auto-light .app-name,
.dock-item.auto-light .dock-name {
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
  text-shadow:0 1px 4px rgba(0,0,0,.5) !important;
}
.app-item.auto-dark .app-name,
.dock-item.auto-dark .dock-name {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
}
:is(.contact-mini-widget,.daily-photo-widget,.relationship-mini-widget,.polaroid-mini-widget,.frost-profile-widget,.celestial-specimen-widget,.mist-rain-window-widget).auto-light {
  color:#fff !important;
  text-shadow:0 1px 4px rgba(0,0,0,.5) !important;
}
:is(.contact-mini-widget,.daily-photo-widget,.relationship-mini-widget,.polaroid-mini-widget,.frost-profile-widget,.celestial-specimen-widget,.mist-rain-window-widget).auto-dark {
  color:#222 !important;
  text-shadow:0 1px 3px rgba(255,255,255,.3) !important;
}
:is(.contact-mini-widget,.daily-photo-widget).auto-dark :is(.contact-mini-copy,.daily-photo-copy),
.polaroid-mini-widget.auto-dark > p,
.frost-profile-widget.auto-dark .frost-profile-body,
.frost-profile-widget.auto-dark .frost-profile-body > p,
.relationship-mini-widget.auto-dark .relationship-mini-names,
.relationship-mini-widget.auto-dark > small {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  text-shadow:0 1px 2px rgba(255,255,255,.3) !important;
}
:is(.contact-mini-widget,.daily-photo-widget).auto-light :is(.contact-mini-copy,.daily-photo-copy),
.polaroid-mini-widget.auto-light > p,
.frost-profile-widget.auto-light .frost-profile-body,
.frost-profile-widget.auto-light .frost-profile-body > p,
.relationship-mini-widget.auto-light .relationship-mini-names,
.relationship-mini-widget.auto-light > small {
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
  text-shadow:0 1px 4px rgba(0,0,0,.5) !important;
}

/* 手机端性能与触摸响应：主屏横向翻页，页面内部纵向滚动。 */
@media (max-width:680px) {
  .desktop-scroll-wrap {
    scroll-snap-type:x proximity;
    scroll-snap-stop:normal;
    -webkit-overflow-scrolling:touch;
  }
  .desktop-page {
    box-sizing:border-box;
    min-width:0;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior-y:contain;
    touch-action:pan-y;
    -webkit-overflow-scrolling:touch;
  }
  .desktop-page .app-item,
  .desktop-page .dock-item,
  .desktop-page button,
  .desktop-page a,
  .desktop-page [role="button"] {
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  /* iOS 对大面积 backdrop-filter 的重绘成本很高，手机端保留通透感但降低模糊半径。 */
  .desktop-page .profile-card,
  .desktop-page .todo-widget,
  .desktop-page .image-widget,
  .desktop-page .countdown-widget,
  .desktop-page .elapsed-days-widget,
  .desktop-page .shared-widget,
  .desktop-page .now-playing-widget,
  .desktop-page .search-input,
  .desktop-page .photo-card,
  .desktop-page .date-calendar-card,
  .desktop-page .dock-bar {
    -webkit-backdrop-filter:blur(10px) saturate(115%);
    backdrop-filter:blur(10px) saturate(115%);
    box-shadow:0 5px 16px rgba(0,0,0,.07),inset 0 1px 0 rgba(255,255,255,.62);
  }
  .desktop-page .app-icon,
  .desktop-page .dock-icon {
    -webkit-backdrop-filter:blur(7px) saturate(110%);
    backdrop-filter:blur(7px) saturate(110%);
  }
}

/* 主屏横向翻页与页面内部纵向滚动需要同时放行，不能让子页面的 pan-y 拦住外层横向滚动。 */
.desktop-scroll-wrap {
  height:calc(100dvh - 140px);
  min-height:0;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scroll-snap-stop:always;
  touch-action:pan-x pan-y;
  -webkit-overflow-scrolling:touch;
}
.desktop-page {
  min-height:0;
  overflow-y:hidden;
  overscroll-behavior-y:none;
  touch-action:pan-x pan-y;
}
@media (max-width:680px) {
  .desktop-page {
    overflow-x:hidden;
    overflow-y:hidden;
    touch-action:pan-x pan-y;
  }
}

/* 情侣空间新版首页：把它从功能入口改成双人关系仪表盘。 */
.couple-dashboard-hero,
.couple-today-card,
.couple-next-card,
.couple-question-teaser,
.couple-recent-section,
.couple-quick-section,
.couple-stat-grid { width:min(100%,540px); margin-right:auto; margin-left:auto; }
.couple-dashboard-hero { position:relative; display:grid; grid-template-columns:110px 1fr; gap:14px; align-items:center; padding:18px; border:1px solid rgba(0,0,0,.08); border-radius:24px; background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(250,244,241,.68)); box-shadow:0 12px 30px rgba(42,35,32,.06); }
.couple-dashboard-avatars { position:relative; display:flex; align-items:center; justify-content:center; }
.couple-dashboard-avatars > span { z-index:2; display:grid; place-items:center; width:22px; height:22px; margin:0 -7px; border:2px solid #f7f3f0; border-radius:50%; background:#282526; color:#fff; font-size:11px; }
.couple-dashboard-hero .couple-hero-avatar { width:58px; height:58px; border:3px solid rgba(255,255,255,.9); border-radius:19px; box-shadow:0 6px 14px rgba(0,0,0,.12); }
.couple-dashboard-copy { min-width:0; }
.couple-dashboard-copy > span,.couple-next-card > div > span,.couple-question-teaser > span { color:#a08d86; font-size:8px; font-weight:800; letter-spacing:.16em; }
.couple-dashboard-copy h2 { overflow:hidden; margin-top:7px; font-size:18px; text-overflow:ellipsis; white-space:nowrap; }
.couple-dashboard-copy h2 i { color:#b89b98; font-style:normal; }
.couple-dashboard-copy p { margin-top:7px; color:#8f8583; font-size:10px; line-height:1.5; }
.couple-ghost-action { grid-column:1 / -1; justify-self:start; min-height:29px; padding:0 11px; border:1px solid rgba(0,0,0,.11); border-radius:999px; background:rgba(255,255,255,.5); color:#665d5c; font:inherit; font-size:10px; cursor:pointer; }
.couple-today-card { margin-top:12px; padding:16px; border-radius:21px; background:#282526; color:#fff; box-shadow:0 12px 26px rgba(27,23,23,.14); }
.couple-card-kicker { display:flex; align-items:center; justify-content:space-between; color:rgba(255,255,255,.62); font-size:9px; }
.couple-card-kicker span { color:#fff; font-size:11px; font-weight:700; }
.couple-checkin-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:17px; }
.couple-checkin-row strong { display:block; font-size:18px; letter-spacing:-.04em; }
.couple-checkin-row p { margin-top:5px; color:rgba(255,255,255,.62); font-size:10px; }
.couple-checkin { flex:0 0 auto; min-height:36px; padding:0 12px; border:1px solid rgba(255,255,255,.25); border-radius:12px; background:#fff; color:#272324; font:inherit; font-size:10px; cursor:pointer; }
.couple-checkin.is-checked { background:rgba(255,255,255,.13); color:#fff; cursor:default; }
.couple-today-line { display:grid; grid-template-columns:auto 1fr; gap:6px 11px; align-items:center; margin-top:18px; padding-top:13px; border-top:1px solid rgba(255,255,255,.13); color:rgba(255,255,255,.62); font-size:10px; }
.couple-today-line button { justify-self:end; border:0; background:none; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.couple-today-line button b { margin-left:4px; color:rgba(255,255,255,.6); font-size:15px; }
.couple-today-line p { grid-column:1 / -1; overflow:hidden; color:rgba(255,255,255,.8); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.couple-stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:7px; margin-top:12px; }
.couple-stat-grid > div { display:grid; gap:3px; padding:12px 8px; border:1px solid rgba(0,0,0,.07); border-radius:15px; background:rgba(255,255,255,.68); text-align:center; }
.couple-stat-grid strong { font-size:18px; letter-spacing:-.05em; }
.couple-stat-grid span { color:#5f5857; font-size:10px; }
.couple-stat-grid small { color:#aaa; font-size:8px; }
.couple-quick-section { margin-top:24px; }
.couple-quick-section .couple-section-head { margin-bottom:10px; }
.couple-quick-section .couple-section-head > div > span,.couple-recent-section .couple-section-head > div > span { color:#a08d86; font-size:8px; font-weight:800; letter-spacing:.16em; }
.couple-quick-section .couple-section-head h2,.couple-recent-section .couple-section-head h2 { margin-top:5px; font-size:17px; }
.couple-quick-section .couple-section-head > small { color:#aaa; font-size:9px; }
.couple-quick-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.couple-quick-grid button { display:flex; align-items:center; gap:10px; min-height:62px; padding:11px; border:1px solid rgba(0,0,0,.07); border-radius:16px; background:rgba(255,255,255,.68); color:#2c2929; text-align:left; cursor:pointer; }
.couple-quick-grid button > i { display:grid; flex:0 0 28px; place-items:center; width:28px; height:28px; border-radius:10px; background:#eee7e3; color:#605350; font-size:17px; font-style:normal; }
.couple-quick-grid button > span { display:grid; min-width:0; gap:4px; }
.couple-quick-grid b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.couple-quick-grid small { overflow:hidden; color:#999; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.couple-next-card { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-top:12px; padding:16px; border:1px solid rgba(0,0,0,.08); border-radius:20px; background:linear-gradient(120deg,rgba(235,225,220,.78),rgba(255,255,255,.7)); }
.couple-next-card h2 { overflow:hidden; margin-top:6px; font-size:17px; text-overflow:ellipsis; white-space:nowrap; }
.couple-next-card p { margin-top:5px; color:#867b78; font-size:10px; }
.couple-next-card button,.couple-recent-section .couple-section-head > button,.couple-question-teaser button { flex:0 0 auto; border:0; background:none; color:#554b49; font:inherit; font-size:10px; cursor:pointer; }
.couple-next-card button b,.couple-question-teaser button b { margin-left:3px; font-size:15px; }
.couple-recent-section { margin-top:25px; }
.couple-recent-section .couple-section-head { margin-bottom:9px; }
.couple-recent-list { display:grid; gap:7px; }
.couple-recent-item { display:flex; align-items:center; gap:10px; width:100%; min-width:0; padding:10px 11px; border:1px solid rgba(0,0,0,.07); border-radius:14px; background:rgba(255,255,255,.58); color:#302c2c; text-align:left; cursor:pointer; }
.couple-recent-item > i { display:grid; flex:0 0 27px; place-items:center; width:27px; height:27px; border-radius:9px; background:#eeebe8; color:#786965; font-size:11px; font-style:normal; }
.couple-recent-item > span { display:grid; flex:1; min-width:0; gap:4px; }
.couple-recent-item b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.couple-recent-item small { color:#999; font-size:9px; }
.couple-recent-item em { color:#aaa; font-size:16px; font-style:normal; }
.couple-question-teaser { position:relative; margin-top:12px; padding:17px 16px; border-radius:20px; background:#eee8e4; }
.couple-question-teaser h2 { max-width:83%; margin-top:7px; font-size:15px; line-height:1.45; }
.couple-question-teaser p { max-width:83%; margin-top:6px; color:#8c817e; font-size:10px; line-height:1.5; }
.couple-question-teaser button { position:absolute; right:16px; bottom:16px; }
@media (max-width:360px) { .couple-dashboard-hero { grid-template-columns:92px 1fr; padding:14px; }.couple-dashboard-hero .couple-hero-avatar { width:50px; height:50px; }.couple-checkin-row strong { font-size:16px; }.couple-stat-grid > div { padding-right:4px; padding-left:4px; } }
@media not all {
  .couple-dashboard-hero { border-color:rgba(255,255,255,.12); background:linear-gradient(135deg,rgba(57,51,51,.92),rgba(38,35,36,.78)); box-shadow:none; }
  .couple-dashboard-avatars > span { border-color:#373233; background:#eee; color:#222; }
  .couple-dashboard-copy > span,.couple-next-card > div > span,.couple-question-teaser > span,.couple-quick-section .couple-section-head > div > span,.couple-recent-section .couple-section-head > div > span { color:#c0a9a2; }
  .couple-dashboard-copy p,.couple-next-card p,.couple-quick-section .couple-section-head > small { color:#aaa0a0; }
  .couple-ghost-action { border-color:rgba(255,255,255,.18); background:rgba(255,255,255,.08); color:#eee; }
  .couple-stat-grid > div,.couple-quick-grid button,.couple-recent-item { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#eee; }
  .couple-stat-grid span,.couple-recent-item small { color:#c5bdbd; }
  .couple-quick-grid button > i,.couple-recent-item > i { background:rgba(255,255,255,.12); color:#eee; }
  .couple-next-card { border-color:rgba(255,255,255,.12); background:linear-gradient(120deg,rgba(92,72,72,.72),rgba(43,40,41,.8)); }
  .couple-next-card button,.couple-recent-section .couple-section-head > button,.couple-question-teaser button { color:#eee; }
  .couple-question-teaser { background:rgba(255,255,255,.11); }
  .couple-question-teaser p { color:#c4bcbc; }
}

/* 一起玩：本地完成型玩法，API 只作为主动请求的补充。 */
.couple-play-intro,.couple-challenge-card,.couple-play-grid,.couple-progress-card,.couple-play-plans,.couple-play-api { width:min(100%,540px); margin-right:auto; margin-left:auto; }
.couple-play-intro { padding:4px 1px 17px; }
.couple-play-intro > span,.couple-challenge-top span,.couple-play-card > span,.couple-progress-card > div > span,.couple-play-plans .couple-section-head span { color:#a08d86; font-size:8px; font-weight:800; letter-spacing:.16em; }
.couple-play-intro h2 { margin-top:8px; font-size:24px; letter-spacing:-.06em; }
.couple-play-intro p { max-width:390px; margin-top:8px; color:#918684; font-size:11px; line-height:1.6; }
.couple-challenge-card { padding:18px; border-radius:22px; background:#292526; color:#fff; box-shadow:0 13px 30px rgba(38,31,31,.15); }
.couple-challenge-card.is-done { background:linear-gradient(135deg,#4a4746,#292526); }
.couple-challenge-top { display:flex; align-items:center; justify-content:space-between; }
.couple-challenge-top span { color:#d1b9b0; }
.couple-challenge-top small { color:rgba(255,255,255,.5); font-size:9px; }
.couple-challenge-card h2 { margin-top:18px; font-size:20px; letter-spacing:-.04em; }
.couple-challenge-card p { max-width:390px; margin-top:7px; color:rgba(255,255,255,.66); font-size:11px; line-height:1.6; }
.couple-challenge-button { min-height:35px; margin-top:17px; padding:0 13px; border:1px solid rgba(255,255,255,.23); border-radius:11px; background:#fff; color:#292526; font:inherit; font-size:10px; cursor:pointer; }
.couple-challenge-card.is-done .couple-challenge-button { background:rgba(255,255,255,.12); color:#fff; cursor:default; }
.couple-play-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:11px; }
.couple-play-card { min-width:0; min-height:157px; padding:15px; border:1px solid rgba(0,0,0,.08); border-radius:19px; background:rgba(255,255,255,.68); }
.couple-play-card h3 { margin-top:10px; font-size:16px; }
.couple-play-card p { min-height:39px; margin-top:8px; color:#8f8583; font-size:10px; line-height:1.55; }
.couple-play-card button { margin-top:8px; border:0; background:none; color:#554b49; font:inherit; font-size:10px; cursor:pointer; }
.couple-play-card button b { margin-left:4px; font-size:14px; }
.couple-play-card button:disabled { color:#bbb; cursor:not-allowed; }
.couple-progress-card { display:grid; grid-template-columns:1fr auto; gap:7px 14px; margin-top:11px; padding:16px; border:1px solid rgba(0,0,0,.08); border-radius:20px; background:linear-gradient(135deg,rgba(247,237,232,.9),rgba(255,255,255,.68)); }
.couple-progress-card h3 { margin-top:6px; font-size:17px; }
.couple-progress-number { display:flex; align-items:baseline; gap:4px; }
.couple-progress-number strong { font-size:28px; letter-spacing:-.08em; }
.couple-progress-number small { color:#918684; font-size:9px; }
.couple-progress-card p { grid-column:1 / -1; color:#827774; font-size:10px; line-height:1.6; }
.couple-progress-bar { grid-column:1 / -1; height:5px; overflow:hidden; border-radius:999px; background:rgba(90,70,65,.13); }
.couple-progress-bar i { display:block; height:100%; border-radius:inherit; background:#655653; }
.couple-play-plans { margin-top:25px; }
.couple-play-plans .couple-section-head { margin-bottom:10px; }
.couple-play-plans .couple-section-head > button { border:0; background:none; color:#675956; font:inherit; font-size:10px; cursor:pointer; }
.couple-plan-list { display:grid; gap:7px; }
.couple-plan-item { display:flex; align-items:center; gap:10px; width:100%; min-width:0; padding:11px 12px; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:rgba(255,255,255,.64); color:#2e2a2a; text-align:left; cursor:pointer; }
.couple-plan-item > i { display:grid; flex:0 0 22px; place-items:center; width:22px; height:22px; border:1px solid #b7aaa5; border-radius:50%; color:#7d6e69; font-size:12px; font-style:normal; }
.couple-plan-item > span { display:grid; min-width:0; gap:3px; }
.couple-plan-item b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.couple-plan-item small { color:#999; font-size:9px; }
.couple-plan-item.is-done b { color:#999; text-decoration:line-through; }
.couple-plan-item.is-done > i { border-color:#655653; background:#655653; color:#fff; }
.couple-play-api { min-height:35px; margin-top:12px; border:1px solid rgba(0,0,0,.1); border-radius:11px; background:rgba(255,255,255,.48); color:#8a7e7b; font:inherit; font-size:10px; cursor:pointer; }
@media (max-width:360px) { .couple-play-grid { gap:7px; }.couple-play-card { padding:12px; }.couple-play-card h3 { font-size:14px; } }
@media not all {
  .couple-play-intro p { color:#aaa0a0; }
  .couple-play-intro > span,.couple-challenge-top span,.couple-play-card > span,.couple-progress-card > div > span,.couple-play-plans .couple-section-head span { color:#c0a9a2; }
  .couple-play-card,.couple-progress-card,.couple-plan-item { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#eee; }
  .couple-play-card p,.couple-progress-card p,.couple-progress-number small,.couple-plan-item small { color:#bcb2b2; }
  .couple-play-card button,.couple-play-plans .couple-section-head > button { color:#eee; }
  .couple-progress-card { background:linear-gradient(135deg,rgba(85,67,67,.72),rgba(38,36,37,.78)); }
  .couple-progress-bar { background:rgba(255,255,255,.14); }.couple-progress-bar i { background:#eee; }
  .couple-plan-item > i { border-color:#aaa; color:#eee; }.couple-plan-item.is-done > i { border-color:#eee; background:#eee; color:#222; }
  .couple-play-api { border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.07); color:#c8bebe; }
}

/* 角色互动工作台：连续对话和现场生成内容。 */
.couple-ai-intro,.couple-live-play,.couple-ai-start,.couple-ai-plan-card,.couple-play-record { width:min(100%,540px); margin-right:auto; margin-left:auto; }
.couple-ai-intro { padding:3px 1px 17px; }
.couple-ai-intro > span,.couple-live-head span,.couple-ai-plan-card > div > span { color:#a08d86; font-size:8px; font-weight:800; letter-spacing:.16em; }
.couple-ai-intro h2 { margin-top:8px; font-size:23px; letter-spacing:-.06em; line-height:1.25; }
.couple-ai-intro p { max-width:410px; margin-top:9px; color:#8f8583; font-size:11px; line-height:1.65; }
.couple-ai-start { display:grid; place-items:center; padding:31px 20px 28px; border:1px solid rgba(0,0,0,.08); border-radius:23px; background:linear-gradient(145deg,rgba(255,255,255,.84),rgba(246,235,231,.8)); text-align:center; }
.couple-ai-orbit { display:grid; place-items:center; width:65px; height:65px; border:1px solid rgba(96,75,70,.18); border-radius:50%; background:rgba(255,255,255,.75); box-shadow:0 0 0 10px rgba(255,255,255,.3),0 11px 25px rgba(59,41,37,.12); }
.couple-ai-orbit i { color:#62514e; font:700 15px/1 Georgia,serif; font-style:normal; }
.couple-ai-start h2 { margin-top:24px; font-size:19px; }
.couple-ai-start p { max-width:330px; margin-top:8px; color:#8e8380; font-size:10px; line-height:1.65; }
.couple-ai-start button,.couple-play-send { min-height:38px; margin-top:18px; padding:0 16px; border:0; border-radius:12px; background:#292526; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.couple-ai-start button:disabled,.couple-play-send:disabled,.couple-ai-plan-card button:disabled { cursor:wait; opacity:.6; }
.couple-live-play { padding:17px; border-radius:22px; background:#292526; color:#fff; box-shadow:0 13px 30px rgba(38,31,31,.15); }
.couple-live-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.couple-live-head span { color:#d1b9b0; }.couple-live-head h2 { margin-top:7px; font-size:19px; }
.couple-live-head small { flex:0 0 auto; margin-top:3px; color:rgba(255,255,255,.58); font-size:9px; }
.couple-live-intro { margin-top:13px; color:rgba(255,255,255,.72); font-size:11px; line-height:1.65; white-space:pre-wrap; }
.couple-play-thread { display:grid; gap:8px; margin-top:17px; max-height:270px; overflow-y:auto; padding-right:3px; }
.couple-play-bubble { justify-self:start; max-width:88%; padding:10px 12px; border-radius:13px 13px 13px 4px; background:rgba(255,255,255,.1); }
.couple-play-bubble.is-user { justify-self:end; border-radius:13px 13px 4px 13px; background:#fff; color:#2b2728; }
.couple-play-bubble span { color:rgba(255,255,255,.5); font-size:9px; }.couple-play-bubble.is-user span { color:#9b8f8d; }
.couple-play-bubble p { margin-top:5px; font-size:11px; line-height:1.6; white-space:pre-wrap; }
.couple-live-prompt { margin-top:15px; padding-top:14px; border-top:1px solid rgba(255,255,255,.13); }
.couple-live-prompt > span { color:#d1b9b0; font-size:9px; }.couple-live-prompt > p { margin-top:6px; color:#fff; font-size:12px; line-height:1.6; }
.couple-live-prompt textarea { width:100%; min-height:76px; margin-top:10px; padding:10px; border:1px solid rgba(255,255,255,.17); border-radius:11px; outline:0; background:rgba(0,0,0,.18); color:#fff; font:inherit; font-size:11px; line-height:1.5; resize:vertical; }
.couple-live-prompt textarea::placeholder { color:rgba(255,255,255,.45); }
.couple-play-send { margin-top:9px; background:#fff; color:#292526; }
.couple-play-reset { display:block; margin:13px auto 0; border:0; background:none; color:rgba(255,255,255,.58); font:inherit; font-size:9px; cursor:pointer; }
.couple-ai-plan-card { margin-top:11px; padding:17px; border:1px solid rgba(0,0,0,.08); border-radius:21px; background:linear-gradient(140deg,rgba(242,230,225,.82),rgba(255,255,255,.7)); }
.couple-ai-plan-card h2 { margin-top:7px; font-size:17px; }
.couple-ai-plan-card > p { margin-top:11px; color:#7f7471; font-size:11px; line-height:1.7; white-space:pre-wrap; }
.couple-ai-plan-card button { margin-top:14px; border:0; background:none; color:#5b4d4a; font:inherit; font-size:10px; cursor:pointer; }
.couple-ai-plan-card button b { margin-left:4px; font-size:15px; }
.couple-play-record { min-height:36px; margin-top:11px; border:1px solid rgba(0,0,0,.1); border-radius:11px; background:rgba(255,255,255,.5); color:#827774; font:inherit; font-size:10px; cursor:pointer; }
@media not all {
  .couple-ai-intro > span,.couple-live-head span,.couple-ai-plan-card > div > span { color:#c0a9a2; }
  .couple-ai-intro p { color:#aaa0a0; }
  .couple-ai-start { border-color:rgba(255,255,255,.12); background:linear-gradient(145deg,rgba(57,51,51,.92),rgba(38,35,36,.8)); }
  .couple-ai-orbit { border-color:rgba(255,255,255,.2); background:rgba(255,255,255,.12); box-shadow:0 0 0 10px rgba(255,255,255,.04),0 11px 25px rgba(0,0,0,.2); }.couple-ai-orbit i { color:#eee; }
  .couple-ai-start p { color:#bcb2b2; }
  .couple-ai-start button { background:#eee; color:#222; }
  .couple-ai-plan-card { border-color:rgba(255,255,255,.12); background:linear-gradient(140deg,rgba(85,67,67,.72),rgba(38,36,37,.78)); }
  .couple-ai-plan-card > p { color:#c5baba; }.couple-ai-plan-card button { color:#eee; }
  .couple-play-record { border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.07); color:#c8bebe; }
}

/* TA 角色聊天与桌面聊天使用同一套图片/表情包预览尺寸。 */
.ta-role-conversation .ta-chat-message .ta-chat-bubble.image:not(.sticker) img {
  width:auto !important;
  height:auto !important;
  max-width:min(170px, calc(100vw - 132px)) !important;
  max-height:190px !important;
  object-fit:contain;
}
.ta-role-conversation .ta-chat-message .ta-chat-bubble.image.sticker img,
.ta-role-conversation .ta-chat-message .ta-chat-bubble.sticker img,
.ta-role-conversation .ta-chat-message .ta-chat-bubble img[data-sticker="true"] {
  width:auto !important;
  height:auto !important;
  max-width:150px !important;
  max-height:150px !important;
  object-fit:contain;
}

/* 群聊按微信式结构排列：头像与昵称同起点，气泡位于昵称下方。 */
.ta-role-conversation .ta-chat-message-line { align-items:flex-start; }
.ta-role-conversation .ta-chat-message-line > small { align-self:flex-end; margin-top:22px; }
.chat-group-conversation .chat-message-line { align-items:flex-start !important; }
.chat-group-conversation .chat-group-message-content { display:grid; flex:0 1 auto; gap:4px; min-width:0; max-width:calc(100% - 42px); }
.chat-group-conversation .chat-group-sender { display:flex; align-items:baseline; gap:5px; margin:0; color:#596576; font-size:11px; line-height:1.2; }
.chat-group-conversation .chat-group-sender b { padding:0; background:transparent; font-weight:750; }
.chat-group-conversation .chat-group-sender em { overflow:hidden; color:#8a95a5; font-size:9px; font-style:normal; text-overflow:ellipsis; white-space:nowrap; }
.chat-group-conversation .chat-group-message-content .chat-bubble { max-width:100%; }
.chat-group-conversation .chat-message-line > small { align-self:flex-end; margin-top:22px; }
.ta-chat-system-event,
.chat-group-system-event { display:flex; justify-content:center; margin:10px 0; color:#9aa4b2; font-size:10px; line-height:1.45; text-align:center; }
.ta-chat-system-event span,
.chat-group-system-event span { max-width:78%; padding:4px 9px; border-radius:7px; background:#e9edf3; }
@media not all {
  .ta-chat-system-event span,
  .chat-group-system-event span { background:#343d4c; color:#b8c1ce; }
}

/* 群聊消息统一为微信式消息行：头像在外侧，昵称在气泡上方，时间贴着气泡底部。 */
.chat-group-conversation .chat-message {
  display:flex;
  width:100%;
  max-width:none;
  margin-bottom:15px;
}
.chat-group-conversation .chat-message.is-character { align-items:flex-start; }
.chat-group-conversation .chat-message.is-user { align-items:flex-end; margin-left:0; }
.chat-group-conversation .chat-message-line {
  display:flex !important;
  align-items:flex-start !important;
  gap:8px;
  width:100%;
  max-width:100%;
}
.chat-group-conversation .chat-group-message-content {
  display:grid;
  flex:0 1 auto;
  width:fit-content;
  min-width:0;
  max-width:calc(100% - 52px);
  gap:4px;
  justify-items:start;
}
.chat-group-conversation .chat-group-sender {
  display:flex;
  align-items:baseline;
  gap:5px;
  width:fit-content;
  max-width:100%;
  margin:0;
  overflow:hidden;
  color:#596576;
  font-size:11px;
  line-height:1.2;
}
.chat-group-conversation .chat-group-sender b {
  max-width:100%;
  padding:0;
  overflow:hidden;
  background:transparent;
  font-weight:750;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.chat-group-conversation .chat-group-sender em {
  overflow:hidden;
  color:#8a95a5;
  font-size:9px;
  font-style:normal;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.chat-group-conversation .chat-group-message-content .chat-bubble {
  width:fit-content;
  min-width:0;
  max-width:100%;
}
.chat-group-conversation .chat-message.is-user .chat-group-message-content {
  justify-items:end;
}

/* 群聊时间戳与气泡绑定，避免时间作为第三个 flex 子项抢占气泡宽度。 */
.chat-group-conversation .chat-group-message-content {
  display:grid;
  flex:1 1 0;
  width:0;
  min-width:0;
  max-width:none;
  gap:4px;
}
.chat-group-conversation .chat-group-bubble-row {
  display:flex;
  align-items:flex-end;
  gap:8px;
  width:100%;
  min-width:0;
  max-width:100%;
  justify-content:flex-start;
}
.chat-group-conversation .chat-group-bubble-row > .chat-bubble {
  flex:0 1 auto;
  width:max-content;
  min-width:0;
  max-width:min(78%, 340px);
}
.chat-group-conversation .chat-message.is-character .chat-group-bubble-row > .chat-bubble {
  max-width:calc(100% - 48px);
}
.chat-group-conversation .chat-group-bubble-row > small {
  flex:0 0 auto;
  align-self:flex-end;
  margin:0 0 4px;
  color:#9ba4b2;
  font-size:9px;
  line-height:1;
  white-space:nowrap;
}
.chat-group-conversation .chat-message.is-user .chat-group-bubble-row {
  justify-content:flex-end;
}
.chat-group-conversation .chat-message.is-user .chat-group-sender {
  justify-content:flex-end;
  text-align:right;
}
.chat-group-conversation .chat-message-line > small {
  flex:0 0 auto;
  align-self:flex-end;
  margin:0 0 4px;
  color:#9ba4b2;
  font-size:9px;
  line-height:1;
  white-space:nowrap;
}
.chat-group-conversation .chat-message-line:not(:has(.chat-message-avatar)) .chat-group-message-content { max-width:calc(100% - 10px); }

/* 群聊只增加昵称这一层，气泡本身完全沿用单人聊天的外观。 */
.chat-group-conversation .chat-message .chat-bubble:not(.image):not(.transfer):not(.location):not(.tap):not(.image-desc):not(.image-stack) {
  box-sizing:border-box;
  padding:10px 13px;
  border:1px solid rgba(0,0,0,.07);
  border-radius:16px;
  font-size:13px;
  line-height:1.55;
}
.chat-group-conversation .chat-message.is-character .chat-bubble:not(.image):not(.transfer):not(.location):not(.tap):not(.image-desc):not(.image-stack) {
  border-bottom-left-radius:5px;
  background:var(--chat-character-bubble,#fff);
  color:var(--chat-character-text,#111);
}
.chat-group-conversation .chat-message.is-user .chat-bubble:not(.image):not(.transfer):not(.location):not(.tap):not(.image-desc):not(.image-stack) {
  border-bottom-right-radius:5px;
  background:var(--chat-user-bubble,#222);
  color:var(--chat-user-text,#fff);
}

/* TA 角色视角的群聊也使用同一套排列，避免时间戳脱离气泡。 */
.ta-role-conversation .ta-chat-message:has(.ta-chat-sender-name) {
  display:flex;
  width:100%;
  max-width:none;
  margin-bottom:15px;
}
.ta-role-conversation .ta-chat-message:has(.ta-chat-sender-name) .ta-chat-message-line {
  display:flex !important;
  align-items:flex-start !important;
  gap:8px;
  width:100%;
  max-width:100%;
}
.ta-role-conversation .ta-chat-message:has(.ta-chat-sender-name) .ta-chat-message-content {
  display:grid;
  flex:0 1 auto;
  width:fit-content;
  min-width:0;
  max-width:calc(100% - 52px);
  gap:4px;
  justify-items:start;
}
.ta-role-conversation .ta-chat-message:has(.ta-chat-sender-name) .ta-chat-sender-name {
  width:fit-content;
  max-width:100%;
  padding:0;
  overflow:hidden;
  border-radius:0;
  background:transparent;
  font-size:11px;
  line-height:1.2;
}
.ta-role-conversation .ta-chat-message:has(.ta-chat-sender-name) .ta-chat-bubble { width:fit-content; min-width:0; max-width:100%; }
.ta-role-conversation .ta-chat-message:has(.ta-chat-sender-name) .ta-chat-message-line > small {
  align-self:flex-end;
  margin:0 0 4px;
  line-height:1;
}
.ta-role-conversation .ta-chat-message:has(.ta-chat-sender-name) .ta-chat-message-line > i { align-self:flex-start; }

/* TA 角色视角中的特殊消息沿用桌面聊天 App 的卡片结构与尺寸。 */
.ta-role-conversation .ta-chat-bubble.transfer { min-width:224px; width:224px; max-width:calc(100% - 48px); padding:0; border:1px solid #111; border-radius:18px; background:#111; color:#fff; box-shadow:0 14px 30px rgba(0,0,0,.2); }
.ta-role-conversation .ta-chat-message.is-owner .ta-chat-bubble.transfer { border-color:#222; background:#fff; color:#111; }
.ta-role-conversation .ta-chat-bubble.location { box-sizing:border-box; width:220px; min-width:220px; max-width:220px; padding:13px 14px; border:1px solid rgba(0,0,0,.1); border-radius:15px !important; background:#f7f7f5 !important; color:#171717 !important; box-shadow:0 2px 8px rgba(0,0,0,.06); }
.ta-role-conversation .chat-location-message { box-sizing:border-box; width:100%; min-width:0; padding-right:72px; overflow:hidden; color:#171717; }
.ta-role-conversation .chat-location-message p { color:#555; }
.ta-role-conversation .chat-location-message small { color:#888; }
.ta-role-conversation .ta-chat-message.is-owner .chat-voice-bubble { background:#222; color:#fff; }
.ta-role-conversation .ta-chat-message.is-other .chat-voice-bubble { background:#fff; color:#222; }
.ta-role-conversation .chat-video-record-bubble { width:220px; margin:0; }
/* 跨天消息使用微信式日期分隔条，消息旁边只保留时分。 */
.chat-date-divider,
.ta-chat-date-divider { display:flex; justify-content:center; margin:14px 0 12px; }
.chat-date-divider span,
.ta-chat-date-divider span { padding:4px 9px; border-radius:6px; background:rgba(225,229,235,.82); color:#8b95a3; font-size:10px; line-height:1.35; }
@media not all {
  .chat-date-divider span,
  .ta-chat-date-divider span { background:rgba(62,70,82,.88); color:#c0c7d1; }
}
/* 视频通话提示沿用聊天 App：只有通话图标和文字，不使用普通消息气泡底色。 */
.ta-role-conversation .ta-chat-bubble.video,
.ta-role-conversation .ta-chat-message.is-owner .ta-chat-bubble.video,
.ta-role-conversation .ta-chat-message.is-other .ta-chat-bubble.video {
  width:fit-content;
  min-width:0;
  max-width:100%;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  color:#777 !important;
  box-shadow:none !important;
}
.ta-role-conversation .ta-chat-bubble.video .chat-video-record-bubble { background:rgba(255,255,255,.7); }
@media not all {
  .ta-role-conversation .ta-chat-message.is-other .chat-voice-bubble { background:#fff; color:#222; }
  .ta-role-conversation .ta-chat-bubble.location { background:#f7f7f5 !important; color:#171717 !important; }
  .ta-role-conversation .ta-chat-bubble.video,
  .ta-role-conversation .ta-chat-message.is-owner .ta-chat-bubble.video,
  .ta-role-conversation .ta-chat-message.is-other .ta-chat-bubble.video { background:transparent !important; color:#aaa !important; }
}

/* 手机界面不触发浏览器的长按选字；输入区域仍保持可编辑。 */
body,
body * { -webkit-touch-callout:none; }
body * { -webkit-user-select:none; user-select:none; }
input,
textarea,
select,
[contenteditable="true"] { -webkit-user-select:text; user-select:text; -webkit-touch-callout:default; }

/* 情侣空间：以关系叙事替代数据仪表盘，沿用整机的克制玻璃与暖灰体系。 */
.couple-app { background:radial-gradient(circle at 15% 4%,#f2e4e0 0,transparent 32%),linear-gradient(160deg,#f8f5f1 0%,#eeeae7 100%); }
.couple-header { border-bottom:0; background:rgba(248,245,241,.72); }
.couple-header > div > span { color:#a17e78; }
.couple-main { padding-top:9px; }
.couple-love-hero { display:grid; justify-items:center; max-width:540px; margin:0 auto; padding:17px 12px 26px; text-align:center; }
.couple-love-date { color:#9b8580; font-size:10px; letter-spacing:.08em; }
.couple-love-pair { display:flex; align-items:center; margin-top:20px; border:0; background:none; cursor:pointer; }
.couple-love-pair > div { width:67px; height:67px; overflow:hidden; border:3px solid rgba(255,255,255,.86); border-radius:50%; background:#ded6d2; box-shadow:0 10px 25px rgba(74,48,43,.13); }
.couple-love-pair img { width:100%; height:100%; object-fit:cover; }
.couple-love-pair > span { position:relative; z-index:1; display:grid; width:34px; height:34px; margin:0 -5px; place-items:center; border-radius:50%; background:#574745; box-shadow:0 5px 15px rgba(70,45,42,.2); }
.couple-love-pair > span i { width:8px; height:8px; border-radius:50%; background:#f6ece8; box-shadow:0 0 0 4px rgba(255,255,255,.12); }
.couple-love-hero > p { margin-top:12px; color:#8b7671; font-size:11px; }
.couple-love-hero > h2 { max-width:390px; margin-top:11px; color:#342b2b; font:500 25px/1.38 Georgia,"Songti SC",serif; letter-spacing:-.04em; }
.couple-moment-card { position:relative; max-width:540px; margin:0 auto; overflow:hidden; padding:22px; border:1px solid rgba(82,59,54,.1); border-radius:27px; background:rgba(255,255,255,.73); box-shadow:0 18px 50px rgba(73,49,45,.09); }
.couple-moment-card::after { position:absolute; top:-42px; right:-38px; width:130px; height:130px; border-radius:50%; background:rgba(211,177,168,.2); content:""; filter:blur(2px); }
.couple-moment-label { position:relative; z-index:1; display:flex; justify-content:space-between; color:#a17e78; font-size:9px; font-weight:700; letter-spacing:.12em; }
.couple-moment-label small { color:#a99b97; font-weight:500; letter-spacing:0; }
.couple-moment-card h3 { position:relative; z-index:1; margin-top:27px; color:#302727; font:500 22px/1.3 Georgia,"Songti SC",serif; }
.couple-moment-card > p { position:relative; z-index:1; margin-top:10px; color:#756966; font-size:12px; line-height:1.75; }
.couple-moment-card blockquote { position:relative; z-index:1; margin:17px 0 0; padding:13px 15px; border-left:2px solid #b98f87; border-radius:0 12px 12px 0; background:rgba(171,130,120,.08); color:#544744; font:500 13px/1.7 Georgia,"Songti SC",serif; }
.couple-moment-card > button:not(.couple-moment-reroll) { position:relative; z-index:1; min-height:39px; margin-top:19px; padding:0 16px; border:0; border-radius:13px; background:#443938; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.couple-moment-reroll { position:relative; z-index:1; margin-left:12px; border:0; background:none; color:#927c77; font:inherit; font-size:10px; cursor:pointer; }
.couple-love-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; max-width:540px; margin:13px auto 0; }
.couple-love-actions button { display:grid; justify-items:start; min-width:0; min-height:108px; padding:13px; border:1px solid rgba(82,59,54,.08); border-radius:19px; background:rgba(255,255,255,.55); color:#3f3534; text-align:left; cursor:pointer; }
.couple-love-actions i { color:#a17e78; font:400 18px/1 Georgia,serif; font-style:normal; }
.couple-love-actions span { display:grid; align-self:end; min-width:0; gap:4px; }
.couple-love-actions b,.couple-love-actions small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.couple-love-actions b { font-size:11px; }.couple-love-actions small { color:#9b8c88; font-size:8px; }
.couple-love-actions + .couple-recent-section { max-width:540px; margin-right:auto; margin-left:auto; }
@media (max-width:360px) { .couple-love-hero > h2 { font-size:22px; }.couple-love-actions { gap:6px; }.couple-love-actions button { padding:10px; } }
@media not all {
  .couple-app { background:radial-gradient(circle at 15% 4%,#483b3b 0,transparent 34%),linear-gradient(160deg,#282425,#1f1d1e); }
  .couple-header { background:rgba(35,31,32,.72); }
  .couple-love-hero > h2 { color:#f2e9e6; }.couple-love-hero > p,.couple-love-date { color:#bda9a3; }
  .couple-moment-card,.couple-love-actions button { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); color:#eee; }
  .couple-moment-card h3 { color:#f5eeec; }.couple-moment-card > p { color:#c5b9b5; }
  .couple-moment-card blockquote { background:rgba(255,255,255,.06); color:#eadfdb; }
  .couple-moment-card > button:not(.couple-moment-reroll) { background:#eee3df; color:#302727; }
  .couple-love-actions b { color:#eee; }.couple-love-actions small { color:#aaa0a0; }
}

/* 情侣空间 v2：真实恋爱生活流 */
.couple-tabs-four { justify-content:space-evenly; }
.couple-tabs-four { right:12px; bottom:18px; left:12px; height:72px; padding:8px 12px 6px; border:1px solid rgba(255,255,255,.66); border-radius:25px; background:rgba(248,247,245,.64); box-shadow:0 10px 28px rgba(35,35,33,.13),inset 0 1px 0 rgba(255,255,255,.78); -webkit-backdrop-filter:blur(24px) saturate(145%); backdrop-filter:blur(24px) saturate(145%); }
.couple-tabs-four button { gap:6px; min-width:58px; color:#aaa9a6; }.couple-tabs-four button small { font-size:10px; }.couple-tabs-four button.is-active { color:#252625; }
.couple-tabs-four .couple-tab-icon { width:23px; height:23px; stroke-width:1.35; }
.couple-tabs-five { justify-content:space-between; gap:2px; }
.couple-tabs-five button { flex:1 1 0; min-width:0; padding-right:3px; padding-left:3px; }
.couple-page-games,.couple-page-games .couple-header,.couple-page-games .couple-main { background:#fff; }
.couple-header-side { display:grid; justify-items:end; gap:7px; }
.couple-page-games .couple-header-side { display:flex; align-items:center; justify-content:flex-end; gap:7px; }
.couple-page-games .couple-game-api-button { width:auto; min-width:38px; height:30px; padding:0 10px; border-radius:15px; background:#f0ece9; color:#604d48; font-size:10px; font-weight:700; letter-spacing:.04em; }
.couple-mystery .couple-game-api-button,.love-letter-game .couple-game-api-button,.couple-flower-roulette .couple-game-api-button { display:none; }
.couple-game-api-layer { position:fixed; inset:0; z-index:200; display:grid; place-items:center; padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom)); background:rgba(39,29,27,.28); -webkit-backdrop-filter:blur(9px); backdrop-filter:blur(9px); }
.couple-game-api-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:transparent; cursor:default; }
.couple-game-api-sheet { position:relative; z-index:1; width:min(100%,430px); overflow:hidden; border:1px solid rgba(83,61,55,.12); border-radius:24px; background:#fffaf7; box-shadow:0 24px 70px rgba(50,31,26,.2); color:#3f3534; }
.couple-game-api-sheet header { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:22px 22px 16px; border-bottom:1px solid rgba(83,61,55,.09); }
.couple-game-api-sheet header small { color:#a17e78; font-size:9px; font-weight:700; letter-spacing:.16em; }
.couple-game-api-sheet header h2 { margin-top:7px; font-size:21px; letter-spacing:-.04em; }
.couple-game-api-sheet header p { margin-top:7px; color:#9b8c88; font-size:11px; line-height:1.5; }
.couple-game-api-sheet header button { flex:0 0 30px; width:30px; height:30px; border:0; border-radius:50%; background:#f0ece9; color:#665550; font-size:20px; cursor:pointer; }
.couple-game-api-sheet main { display:grid; gap:13px; max-height:min(52vh,460px); overflow-y:auto; padding:19px 22px 17px; }
.couple-game-api-source { display:grid; gap:5px; padding:12px 13px; border:1px solid rgba(83,61,55,.1); border-radius:13px; background:#f8f2ef; }
.couple-game-api-source span, .couple-game-api-section-title { color:#9b8179; font-size:10px; font-weight:700; letter-spacing:.04em; }
.couple-game-api-source b { overflow:hidden; color:#554440; font-size:11px; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
.couple-game-api-source small { color:#a39490; font-size:9px; line-height:1.45; }
.couple-game-api-models { display:grid; gap:7px; }
.couple-game-api-section-title { margin-bottom:1px; }
.couple-game-api-model { display:flex; align-items:center; gap:9px; min-height:38px; box-sizing:border-box; padding:0 11px; border:1px solid rgba(83,61,55,.11); border-radius:11px; background:#fff; color:#5d4d49; font-size:11px; cursor:pointer; }
.couple-game-api-model.is-selected { border-color:#9e7b73; background:#f8efec; color:#493936; }
.couple-game-api-model input { flex:0 0 auto; width:15px; height:15px; min-height:0; accent-color:#65504a; }
.couple-game-api-model span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.couple-game-api-select { display:grid; gap:7px; color:#796762; font-size:11px; font-weight:650; }
.couple-game-api-select select { width:100%; min-height:42px; box-sizing:border-box; padding:0 34px 0 12px; border:2px solid #c98700; border-radius:14px; outline:0; background:#fff; color:#3f3534; font:inherit; font-size:12px; }
.couple-game-api-select select:focus { box-shadow:0 0 0 3px rgba(201,135,0,.14); }
.couple-game-api-empty { margin:0; padding:12px; border:1px dashed rgba(83,61,55,.15); border-radius:11px; color:#a39490; font-size:10px; line-height:1.5; }
.couple-game-api-sheet label { display:grid; gap:6px; color:#796762; font-size:11px; font-weight:650; }
.couple-game-api-sheet input { width:100%; min-height:39px; box-sizing:border-box; padding:0 12px; border:1px solid rgba(83,61,55,.13); border-radius:11px; outline:0; background:#fff; color:#3f3534; font:inherit; font-size:12px; }
.couple-game-api-sheet input:focus { border-color:#a17e78; box-shadow:0 0 0 3px rgba(161,126,120,.12); }
.couple-game-api-hint { color:#a39490; font-size:10px; line-height:1.5; }
.couple-game-api-hint code { padding:2px 4px; border-radius:4px; background:#f1ebe8; color:#745c56; font-size:9px; }
.couple-game-api-status { margin:0; color:#b35e4e; font-size:10px; line-height:1.5; }
.couple-game-api-status.is-success { color:#648165; }
.couple-game-api-sheet footer { display:flex; align-items:center; gap:7px; padding:14px 22px 18px; border-top:1px solid rgba(83,61,55,.09); }
.couple-game-api-sheet footer span { flex:1; }
.couple-game-api-sheet footer button { min-height:34px; padding:0 11px; border:1px solid rgba(83,61,55,.12); border-radius:10px; background:#fff; color:#665550; font:inherit; font-size:10px; cursor:pointer; }
.couple-game-api-sheet footer button.is-muted { border-color:transparent; background:transparent; color:#a39490; }
.couple-game-api-sheet footer button.is-primary { border-color:#493936; background:#493936; color:#fff; }
.couple-game-api-sheet footer button:disabled { cursor:wait; opacity:.55; }
.couple-header-side .couple-games-avatar-pair { display:flex; align-items:center; justify-content:flex-end; width:54px; height:30px; padding:0; border:0; background:none; cursor:pointer; }
.couple-games-avatar-pair > span { display:grid; place-items:center; width:27px; height:27px; overflow:hidden; border:2px solid rgba(255,255,255,.9); border-radius:50%; background:#dfd6d3; box-shadow:0 3px 10px rgba(75,48,45,.12); color:#8c7772; font-size:10px; }
.couple-games-avatar-pair > span + span { margin-left:-8px; }
.couple-games-avatar-pair img { width:100%; height:100%; object-fit:cover; }
.couple-games-shell { max-width:540px; margin:0 auto; }
.couple-games-people { display:flex; align-items:center; justify-content:center; gap:22px; padding:2px 0 18px; }
.couple-games-people button { display:grid; justify-items:center; gap:6px; min-width:66px; padding:0; border:0; background:none; color:#3f3534; font:inherit; cursor:pointer; }
.couple-games-people button > span { display:grid; place-items:center; width:58px; height:58px; overflow:hidden; border:3px solid rgba(255,255,255,.9); border-radius:50%; background:#dfd6d3; box-shadow:0 8px 19px rgba(75,48,45,.12); color:#8c7772; font-size:14px; }
.couple-games-people button > span img { width:100%; height:100%; object-fit:cover; }
.couple-games-people button b { max-width:90px; overflow:hidden; font-size:10px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.couple-games-category-row { display:flex; gap:8px; overflow-x:auto; padding:2px 0 11px; scrollbar-width:none; }
.couple-games-category-row::-webkit-scrollbar { display:none; }
.couple-games-chip { display:flex; flex:0 0 96px; align-items:center; gap:8px; height:47px; padding:0 10px; border:1px solid rgba(82,59,54,.07); border-radius:15px; background:rgba(255,255,255,.7); box-shadow:0 8px 20px rgba(73,49,45,.06); }
.couple-games-chip:disabled { cursor:default; opacity:1; }
.couple-games-chip i { display:grid; place-items:center; width:25px; height:25px; border-radius:8px; background:rgba(139,119,113,.14); font-size:17px; font-style:normal; line-height:1; }
.couple-games-chip span { width:auto; height:auto; color:#3f3534; font-size:12px; font-weight:600; white-space:nowrap; }
.couple-games-chip i.couple-games-chip-icon { width:24px; height:24px; border-radius:7px; background-color:transparent; background-image:url('assets/ui/game-categories/category-icons.png'); background-image:image-set(url('assets/ui/game-categories/category-icons.webp') type('image/webp'),url('assets/ui/game-categories/category-icons.png') type('image/png')); background-repeat:no-repeat; background-size:500% auto; font-size:0; }
.couple-games-chip i.chip-icon-1 { background-position:0% 50%; }
.couple-games-chip i.chip-icon-2 { background-position:25% 50%; }
.couple-games-chip i.chip-icon-3 { background-position:50% 50%; }
.couple-games-chip i.chip-icon-4 { background-position:75% 50%; }
.couple-games-chip i.chip-icon-5 { background-position:100% 50%; }
.couple-games-installed-row { display:flex; gap:12px; overflow-x:auto; padding:3px 0 2px; scrollbar-width:none; }
.couple-games-installed-row::-webkit-scrollbar { display:none; }
.couple-games-installed-card { position:relative; flex:0 0 min(88%,470px); height:238px; overflow:hidden; border:1px solid rgba(82,59,54,.08); border-radius:22px; background:rgba(255,255,255,.68); box-shadow:0 15px 36px rgba(73,49,45,.08); }
.couple-games-installed-cover { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.couple-games-installed-image { position:absolute; inset:0 0 73px; background:linear-gradient(135deg,rgba(226,215,210,.42),rgba(245,240,237,.8)); }
.couple-games-installed-copy { position:absolute; right:0; bottom:0; left:0; display:grid; gap:8px; height:83px; padding:15px 16px; background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.88) 28%); }
.couple-games-installed-copy i { width:55px; height:8px; border-radius:99px; background:rgba(139,119,113,.14); }
.couple-games-installed-copy b { width:160px; height:14px; border-radius:99px; background:rgba(70,55,51,.13); }
.couple-games-installed-copy span { width:215px; height:8px; border-radius:99px; background:rgba(139,119,113,.12); }
.couple-games-installed-copy button { position:absolute; right:16px; bottom:17px; width:76px; min-width:76px; height:35px; box-sizing:border-box; padding:0 10px; border:0; border-radius:99px; background:rgba(226,226,226,.68); color:#1684e8; font:600 12px/1 inherit; cursor:pointer; -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); }
.couple-games-installed-card.is-filled .couple-games-installed-copy { height:105px; padding-top:28px; background:linear-gradient(180deg,rgba(15,10,20,0),rgba(15,10,20,.9) 50%); }
.couple-games-installed-card.is-filled .couple-games-installed-copy i { width:auto; height:auto; color:rgba(255,255,255,.76); background:none; font-size:9px; font-style:normal; letter-spacing:.08em; }
.couple-games-installed-card.is-filled .couple-games-installed-copy b { width:auto; height:auto; color:#fff; background:none; font:600 22px/1.1 Georgia,"Songti SC",serif; letter-spacing:-.04em; }
.couple-games-installed-card.is-filled .couple-games-installed-copy span { width:auto; height:auto; color:rgba(255,255,255,.76); background:none; font-size:10px; }
.stock-cover { background:#f6dca7; }
.stock-cover > .couple-games-installed-cover { object-position:center 8%; }
.stock-game { position:fixed; inset:0; z-index:140; overflow:hidden; background:#d7c4b5; color:#5d4d46; }
.stock-game-backdrop { position:absolute; inset:-28px; background:url("assets/ui/game-covers/stock-sort-shelf-v1.webp") center / cover no-repeat; filter:blur(18px) saturate(.86); opacity:.48; transform:scale(1.08); }
.stock-game-stage { position:absolute; top:0; left:50%; z-index:1; width:56.28vh; height:100%; overflow:hidden; background:#f7eee4; box-shadow:0 0 70px rgba(67,40,27,.25); isolation:isolate; transform:translateX(-50%); }
.stock-game-scene { position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:fill; }
.stock-game-stage::after { position:absolute; inset:0; z-index:1; background:linear-gradient(180deg,rgba(40,26,18,.16),transparent 24%,transparent 76%,rgba(40,26,18,.2)); content:''; pointer-events:none; }
.stock-game > header { position:fixed; top:0; right:0; left:0; z-index:5; display:flex; align-items:center; justify-content:flex-start; min-height:66px; box-sizing:border-box; padding:max(9px,env(safe-area-inset-top)) 72px 8px 20px; border-bottom:1px solid rgba(116,88,70,.2); background:rgba(247,238,228,.95); color:#6b5145; text-align:left; text-shadow:none; -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); }
.stock-game > header button { width:36px; height:36px; border:0; border-radius:50%; background:rgba(107,81,69,.14); color:#6b5145; font:26px/1 inherit; cursor:pointer; -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.stock-game > header button:last-child { position:absolute; top:50%; right:16px; font-size:20px; transform:translateY(-50%); }
.stock-game > header > div:not(.stock-game-progress) { display:grid; gap:2px; }
.stock-game > header small { font-size:8px; letter-spacing:.18em; }
.stock-game > header b { font:600 20px/1.15 Georgia,"Songti SC",serif; }
.stock-game-progress { justify-self:end; margin-right:10px; padding:7px 10px; border:1px solid rgba(255,255,255,.42); border-radius:999px; background:rgba(75,43,27,.22); font-size:10px; -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.stock-start-panel { position:absolute; top:39%; left:50%; z-index:4; display:grid; justify-items:center; gap:7px; width:74%; box-sizing:border-box; padding:20px 18px 17px; border:1px solid rgba(255,255,255,.76); border-radius:20px; background:rgba(255,249,239,.84); box-shadow:0 16px 38px rgba(91,57,33,.17),inset 0 1px 0 rgba(255,255,255,.82); color:#745849; text-align:center; transform:translateX(-50%); -webkit-backdrop-filter:blur(16px) saturate(120%); backdrop-filter:blur(16px) saturate(120%); }
.stock-start-panel small { color:#b47d59; font-size:8px; letter-spacing:.1em; }.stock-start-panel b { font:600 clamp(19px,4vh,28px)/1.15 Georgia,"Songti SC",serif; }.stock-start-panel p { margin:0; color:#9c7d70; font-size:10px; line-height:1.5; }.stock-start-panel button { min-height:39px; margin-top:5px; padding:0 23px; border:0; border-radius:999px; background:#6b5145; color:#fffaf3; font:600 12px/1 inherit; cursor:pointer; box-shadow:0 8px 16px rgba(76,49,35,.18); }
.stock-order-panel { position:absolute; top:21.4%; left:10%; z-index:3; display:grid; gap:4px; width:80%; height:14.8%; box-sizing:border-box; padding:4.5% 4%; background:transparent; }
.stock-order-heading { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.stock-order-heading small { color:#a77d60; font-size:7px; letter-spacing:.16em; }
.stock-order-heading b { color:#745849; font:600 clamp(11px,2.3vh,17px)/1.1 Georgia,"Songti SC",serif; white-space:nowrap; }
.stock-order-items { display:flex; min-width:0; gap:clamp(4px,1.1vw,10px); overflow:hidden; }
.stock-order-item { display:flex; flex:1 1 0; align-items:center; min-width:0; gap:3px; padding:2px 3px; border:0; border-radius:7px; background:transparent; }
.stock-order-item.is-done { opacity:.56; }
.stock-order-item img { flex:0 0 clamp(21px,4.4vh,40px); width:clamp(21px,4.4vh,40px); height:clamp(21px,4.4vh,40px); object-fit:contain; }
.stock-order-item > div { display:grid; min-width:0; gap:2px; }
.stock-order-item b { overflow:hidden; color:#71594e; font-size:clamp(7px,1.35vh,10px); font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.stock-order-item small { color:#b47d59; font-size:clamp(8px,1.5vh,11px); font-weight:700; }
.stock-shelf-items { position:absolute; inset:0; z-index:2; }
.stock-slot { position:absolute; display:grid; place-items:end center; width:17%; height:12.8%; padding:0; border:0; border-radius:14px; background:transparent; transform:translateX(-50%); filter:drop-shadow(0 8px 5px rgba(83,51,29,.2)); cursor:pointer; transition:filter .16s ease,transform .16s ease; -webkit-tap-highlight-color:transparent; }
.stock-slot:hover,.stock-slot:focus-visible { filter:drop-shadow(0 11px 8px rgba(83,51,29,.3)) brightness(1.04); transform:translateX(-50%) translateY(-3px) scale(1.03); outline:none; }
.stock-slot img { width:100%; height:100%; object-fit:contain; object-position:center bottom; pointer-events:none; }
.stock-slot-badge { position:absolute; top:3px; right:2px; min-width:18px; height:18px; padding:0 4px; box-sizing:border-box; border:1px solid rgba(255,255,255,.8); border-radius:999px; background:rgba(84,55,38,.58); color:#fff9f1; font-size:9px; line-height:16px; text-align:center; -webkit-backdrop-filter:blur(7px); backdrop-filter:blur(7px); }
.stock-slot-1 { top:40.5%; left:17%; }.stock-slot-2 { top:40.5%; left:39%; }.stock-slot-3 { top:40.5%; left:61%; }.stock-slot-4 { top:40.5%; left:83%; }
.stock-slot-5 { top:54%; left:17%; }.stock-slot-6 { top:54%; left:39%; }.stock-slot-7 { top:54%; left:61%; }.stock-slot-8 { top:54%; left:83%; }
.stock-slot.is-empty { pointer-events:none; }
.stock-tray { position:absolute; bottom:3.6%; left:15%; z-index:3; display:grid; grid-template-rows:auto 1fr; width:70%; height:14.2%; box-sizing:border-box; padding:4% 4% 2.5%; border:0; border-radius:0; background:transparent; box-shadow:none; }
.stock-tray-label { display:flex; align-items:baseline; gap:5px; color:#fffdf8; text-shadow:0 1px 4px rgba(80,47,27,.6); }
.stock-tray-label small { font-size:7px; letter-spacing:.16em; }.stock-tray-label b { font:600 clamp(10px,2vh,15px)/1 Georgia,"Songti SC",serif; }
.stock-tray-items { display:flex; align-items:end; justify-content:center; min-width:0; gap:1%; overflow:hidden; padding:0 1%; }
.stock-tray-empty { align-self:center; color:rgba(255,255,255,.84); font-size:clamp(8px,1.5vh,11px); text-shadow:0 1px 4px rgba(67,39,23,.5); white-space:nowrap; }
.stock-tray-item { position:relative; flex:0 1 22%; min-width:0; height:100%; }
.stock-tray-item img { width:100%; height:100%; object-fit:contain; object-position:center bottom; filter:drop-shadow(0 4px 3px rgba(61,37,24,.25)); }
.stock-tray-item b { position:absolute; top:0; right:0; padding:1px 4px; border-radius:999px; background:rgba(74,48,33,.66); color:#fff; font-size:8px; }
.stock-refill { position:absolute; top:-20px; right:3%; display:grid; place-items:center; min-width:72px; height:50px; padding:3px 11px; border:2px solid rgba(255,255,255,.94); border-radius:17px; background:rgba(255,249,237,.94); color:#5f4438; box-shadow:0 10px 23px rgba(65,40,26,.28),inset 0 1px 0 #fff; font:700 13px/1.05 inherit; cursor:pointer; -webkit-backdrop-filter:blur(10px) saturate(130%); backdrop-filter:blur(10px) saturate(130%); }
.stock-refill small { margin-top:2px; color:#9c796a; font-size:7px; font-weight:500; white-space:nowrap; }.stock-refill:disabled { cursor:default; opacity:.42; }
.stock-game-notice { position:fixed; bottom:12%; left:50%; z-index:8; margin:0; padding:8px 13px; border:1px solid rgba(255,255,255,.72); border-radius:999px; background:rgba(65,42,29,.62); color:#fffaf2; font-size:10px; white-space:nowrap; transform:translateX(-50%); -webkit-backdrop-filter:blur(13px); backdrop-filter:blur(13px); }
.stock-game-toast { position:fixed; top:52%; left:50%; z-index:8; padding:14px 18px; border:1px solid rgba(255,255,255,.78); border-radius:16px; background:rgba(255,250,241,.86); box-shadow:0 15px 40px rgba(70,42,25,.18); color:#745849; font:600 14px/1.2 Georgia,"Songti SC",serif; white-space:nowrap; transform:translate(-50%,-50%); -webkit-backdrop-filter:blur(15px); backdrop-filter:blur(15px); }
.stock-game-finish { position:fixed; top:50%; left:50%; z-index:9; display:grid; justify-items:center; gap:9px; width:min(84vw,360px); box-sizing:border-box; padding:26px 20px 22px; border:1px solid rgba(255,255,255,.82); border-radius:24px; background:rgba(255,249,240,.88); box-shadow:0 25px 70px rgba(70,42,25,.24); color:#745849; text-align:center; transform:translate(-50%,-50%); -webkit-backdrop-filter:blur(20px) saturate(120%); backdrop-filter:blur(20px) saturate(120%); }
.stock-game-finish small { color:#b47d59; font-size:8px; letter-spacing:.16em; }.stock-game-finish b { font:600 clamp(20px,4vh,28px)/1.2 Georgia,"Songti SC",serif; }.stock-game-finish button { min-height:38px; margin-top:6px; padding:0 18px; border:0; border-radius:999px; background:#6b5145; color:#fffaf3; font:600 11px/1 inherit; cursor:pointer; }
@media (max-height:650px) { .stock-game > header { min-height:66px; padding-top:max(9px,env(safe-area-inset-top)); }.stock-game > header b { font-size:16px; }.stock-order-panel { top:20.8%; height:15%; padding-top:3%; }.stock-slot { height:12.4%; }.stock-tray { height:15.5%; }.stock-refill { top:-16px; min-width:66px; height:44px; }.stock-tray-empty { font-size:8px; } }
@media (prefers-reduced-motion:reduce) { .stock-slot { transition:none; } }
.couple-games-feature-slot { position:relative; height:238px; overflow:hidden; border:1px solid rgba(82,59,54,.08); border-radius:22px; background:rgba(255,255,255,.68); box-shadow:0 15px 36px rgba(73,49,45,.08); }
.couple-games-feature-image { position:absolute; inset:0 0 73px; background:linear-gradient(135deg,rgba(226,215,210,.42),rgba(245,240,237,.8)); }
.couple-games-feature-copy { position:absolute; right:0; bottom:0; left:0; display:grid; gap:8px; height:83px; padding:15px 16px; background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.88) 28%); }
.couple-games-feature-copy i { width:55px; height:8px; border-radius:99px; background:rgba(139,119,113,.14); }
.couple-games-feature-copy b { width:160px; height:14px; border-radius:99px; background:rgba(70,55,51,.13); }
.couple-games-feature-copy span { width:215px; height:8px; border-radius:99px; background:rgba(139,119,113,.12); }
.couple-games-feature-copy em { position:absolute; right:16px; bottom:17px; width:76px; height:35px; border-radius:99px; background:rgba(139,119,113,.14); }
.couple-games-list-slot { margin-top:27px; }
.couple-games-list-slot > header { display:flex; align-items:flex-end; justify-content:space-between; padding-bottom:12px; border-bottom:1px solid rgba(82,59,54,.12); }
.couple-games-list-slot > header > div { display:grid; gap:5px; }
.couple-games-list-slot > header h2 { color:#342b2b; font:600 22px/1.1 Georgia,"Songti SC",serif; letter-spacing:-.04em; }
.couple-games-list-slot > header span { color:#a99b97; font-size:10px; }
.couple-games-list-slot > header button { border:0; background:none; color:#4b8ee8; font:inherit; font-size:13px; cursor:default; }
.couple-games-row { display:grid; grid-template-columns:54px minmax(0,1fr) 78px; align-items:center; gap:12px; min-height:81px; border-bottom:1px solid rgba(82,59,54,.09); }
.couple-games-row-icon { flex:0 0 54px; width:54px; height:54px; border-radius:14px; background:rgba(139,119,113,.13); }
.couple-games-row > div { display:grid; min-width:0; gap:8px; }
.couple-games-row > .couple-games-row-action { display:grid; width:78px; min-width:78px; justify-self:center; }
.couple-games-row > div b { width:145px; max-width:100%; box-sizing:border-box; height:12px; border-radius:99px; background:rgba(70,55,51,.12); }
.couple-games-row > div:not(.couple-games-row-action) > span { width:205px; max-width:78%; height:8px; border-radius:99px; background:rgba(139,119,113,.11); }
.couple-games-row-action { display:grid; flex:0 0 78px; justify-items:center; align-content:start; gap:4px; width:78px; }
.couple-games-row-action button { width:76px; min-width:76px; height:34px; box-sizing:border-box; padding:0 10px; border:0; border-radius:99px; background:rgba(226,226,226,.68); color:#1684e8; font:600 12px/1 inherit; cursor:pointer; -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); }
.couple-games-row-action small { color:#989898; font-size:8px; line-height:1; white-space:nowrap; }
.couple-game-action-slot { display:grid; place-items:center; width:76px; height:34px; }
.couple-game-action-slot > .couple-game-get-button { width:76px; min-width:76px; height:34px; box-sizing:border-box; }
.couple-love-letter-row .couple-love-letter-icon { display:grid; place-items:center; overflow:hidden; background:linear-gradient(145deg,#fff5f3,#f0a7a0 62%,#c85b68); box-shadow:0 7px 15px rgba(178,84,91,.2); color:#fff; font-size:25px; font-style:normal; }
.couple-love-letter-row .couple-love-letter-icon img { display:block; width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.couple-love-letter-row .couple-love-letter-icon span { display:block; transform:translateY(-1px); text-shadow:0 2px 5px rgba(142,47,62,.2); }
.couple-love-letter-row > div:not(.couple-games-row-action) { gap:6px; }
.couple-love-letter-row > div:not(.couple-games-row-action) b { width:auto; height:auto; color:#342b2b; background:none; font-size:15px; line-height:1.2; }
.couple-love-letter-row > div:not(.couple-games-row-action) span { width:auto; max-width:100%; height:auto; color:#9a8f8c; background:none; font-size:10px; line-height:1.3; }
.couple-games-row-action .couple-game-get-button { display:grid; place-items:center; }
.couple-games-row-action .couple-game-get-button.is-installing { width:34px; min-width:34px; height:34px; padding:0; border:0; background:transparent; box-shadow:none; cursor:default; }
/* Keep the download indicator independent of the list's placeholder bars. */
.couple-games-row-action .couple-game-get-button.is-installing { opacity:1; overflow:visible; backdrop-filter:none; -webkit-backdrop-filter:none; }
.couple-games-row-action svg.couple-game-install-ring { display:block; flex:none; width:28px; min-width:28px; max-width:28px; height:28px; min-height:28px; max-height:28px; margin:0; padding:0; border:0; background:none; transform:none; }
.couple-game-install-ring circle { fill:none; stroke:#e3e3e6; stroke-width:1.8; }
.couple-game-install-ring .couple-install-wait { stroke-dasharray:58 11.12; transform-origin:14px 14px; animation:couple-install-wait .65s linear forwards; }
.couple-game-install-ring .couple-install-download { animation:couple-install-reveal .65s step-end both; }
.couple-game-install-ring .couple-install-progress { stroke:#007aff; stroke-dasharray:100; stroke-dashoffset:100; animation:couple-install-fill 1.15s .65s linear forwards; }
.couple-game-install-ring rect { fill:#007aff; stroke:none; }
@keyframes couple-install-wait { 0% { transform:rotate(0deg); opacity:1; } 99% { opacity:1; } 100% { transform:rotate(360deg); opacity:0; } }
@keyframes couple-install-reveal { from { opacity:0; } to { opacity:1; } }
@keyframes couple-install-fill { from { stroke-dashoffset:100; } to { stroke-dashoffset:0; } }
@media not all {
  .couple-games-avatar-pair > span { border-color:rgba(38,38,36,.9); background:#4b4140; color:#d3c4c0; }
  .couple-games-people button { color:#eee; }
  .couple-games-people button > span { border-color:rgba(38,38,36,.9); background:#4b4140; color:#d3c4c0; }
  .couple-games-chip,.couple-games-feature-slot { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); box-shadow:0 12px 30px rgba(0,0,0,.18); }
  .couple-games-chip i { background:rgba(255,255,255,.13); }
  .couple-games-chip span,.couple-games-list-slot > header span { color:#c5b9b5; }
  .couple-games-feature-copy i,.couple-games-feature-copy span,.couple-games-feature-copy em,.couple-games-row > div:not(.couple-games-row-action) > span { background:rgba(255,255,255,.13); }
  .couple-games-feature-image,.couple-games-installed-image { background:linear-gradient(135deg,rgba(82,69,67,.45),rgba(48,43,43,.72)); }
  .couple-games-feature-copy { background:linear-gradient(180deg,rgba(38,36,36,.08),rgba(38,36,36,.88) 32%); }
  .couple-games-installed-card { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); box-shadow:0 12px 30px rgba(0,0,0,.18); }
  .couple-games-installed-copy { background:linear-gradient(180deg,rgba(38,36,36,.08),rgba(38,36,36,.88) 32%); }
  .couple-games-installed-copy i,.couple-games-installed-copy span { background:rgba(255,255,255,.13); }
  .couple-games-installed-copy b { background:rgba(255,255,255,.18); }
  .couple-games-installed-copy button { background:rgba(180,180,180,.2); color:#76b4ff; }
  .couple-games-feature-copy b,.couple-games-list-slot > header i:first-child,.couple-games-row > div b { background:rgba(255,255,255,.18); }
  .couple-games-list-slot > header h2 { color:#f2e9e6; }
  .couple-games-list-slot > header button { color:#76b4ff; }
  .couple-games-list-slot > header,.couple-games-row { border-color:rgba(255,255,255,.12); }
  .couple-games-row-icon { background:rgba(255,255,255,.12); }
  .couple-games-row-action button { background:rgba(180,180,180,.2); color:#76b4ff; }
  .couple-games-row-action small { color:#aaa; }
  .couple-love-letter-row > div:not(.couple-games-row-action) b { color:#f2e9e6; }
  .couple-love-letter-row > div:not(.couple-games-row-action) span { color:#b9adaa; }
  .couple-love-letter-row .couple-love-letter-icon { box-shadow:0 7px 15px rgba(0,0,0,.2); }
  .couple-games-row-action .couple-game-get-button.is-installing { background:transparent; }

}

/* Love Letter：情侣空间里的本地双人卡牌页。 */
.love-letter-game{position:fixed;inset:0;z-index:146;display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(circle at 50% 15%,#5a3040,#2a1827 48%,#160e19);color:#f8e9d8;font-family:inherit;isolation:isolate}.love-letter-game::before{position:absolute;inset:0;z-index:-1;opacity:.14;background-image:radial-gradient(circle at 20% 30%,#f5d9ad 0 1px,transparent 1.5px),radial-gradient(circle at 80% 70%,#f5d9ad 0 1px,transparent 1.5px);background-size:34px 34px,51px 51px;content:'';pointer-events:none}.love-letter-header{display:grid;grid-template-columns:42px 1fr auto;align-items:center;min-height:66px;padding:max(9px,env(safe-area-inset-top)) 16px 8px;border-bottom:1px solid rgba(242,211,174,.2);background:rgba(19,10,20,.34)}.love-letter-header>button{width:36px;height:36px;padding:0;border:1px solid rgba(250,225,194,.3);border-radius:50%;background:rgba(255,240,215,.1);color:#ffe7c2;font:28px/30px inherit;cursor:pointer}.love-letter-header>div:not(.love-letter-score){display:grid;gap:2px;justify-items:center;text-align:center}.love-letter-header small{color:#d7aa83;font-size:8px;letter-spacing:.2em}.love-letter-header b{color:#fff2df;font:600 20px/1.1 Georgia,"Songti SC",serif}.love-letter-score{display:flex;align-items:center;gap:5px;color:#f4c18f;font-weight:700}.love-letter-score i{color:#f4a3a3;font-style:normal;font-size:18px}.love-letter-board{display:grid;align-content:start;gap:13px;width:min(92vw,510px);flex:1;box-sizing:border-box;margin:0 auto;padding:18px 0 max(24px,env(safe-area-inset-bottom));overflow:auto}.love-letter-start{display:grid;justify-items:center;align-content:center;flex:1;width:min(86vw,370px);box-sizing:border-box;margin:0 auto;padding:28px 18px 42px;text-align:center}.love-letter-seal{display:grid;place-items:center;width:86px;height:86px;margin-bottom:17px;border:1px solid rgba(255,225,184,.6);border-radius:50%;background:linear-gradient(145deg,#a15159,#4d253a);box-shadow:0 15px 40px rgba(0,0,0,.3),inset 0 0 0 7px rgba(255,225,184,.08);color:#ffd8ad;font-size:42px}.love-letter-start>small,.love-letter-finish>small{color:#d9a77d;font-size:9px;letter-spacing:.2em}.love-letter-start h1{margin:8px 0 9px;color:#fff1dc;font:600 clamp(36px,10vw,56px)/1 Georgia,"Songti SC",serif}.love-letter-start p{max-width:290px;margin:0;color:rgba(255,235,211,.72);font-size:12px;line-height:1.7}.love-letter-rule-strip{display:flex;gap:8px;margin:22px 0 26px}.love-letter-rule-strip span{padding:7px 10px;border:1px solid rgba(255,223,184,.24);border-radius:99px;color:#edc293;font-size:10px}.love-letter-start>button,.love-letter-finish>button,.love-letter-draw{min-height:41px;padding:0 25px;border:1px solid rgba(255,229,192,.7);border-radius:99px;background:linear-gradient(135deg,#cf806c,#a34759);box-shadow:0 9px 20px rgba(0,0,0,.23);color:#fff4e4;font:600 13px/1 inherit;cursor:pointer}.love-letter-opponent,.love-letter-user{display:grid;gap:10px;padding:13px 15px;border:1px solid rgba(255,228,190,.17);border-radius:18px;background:rgba(255,245,225,.08);box-shadow:0 11px 26px rgba(0,0,0,.12)}.love-letter-player-line{display:flex;align-items:center;gap:9px}.love-letter-avatar{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border:1px solid rgba(255,235,206,.55);border-radius:50%;background:#7d4754;color:#ffe9c8;font-size:13px}.love-letter-avatar.is-user{background:#405a69}.love-letter-player-line>div{display:grid;flex:1;gap:3px;min-width:0}.love-letter-player-line b{overflow:hidden;color:#fff0dc;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.love-letter-player-line small{color:rgba(255,230,203,.62);font-size:9px}.love-letter-player-line strong{color:#f5c994;font-size:12px}.love-letter-hidden-card{display:grid;place-items:center;width:54px;height:70px;margin:0 auto;border:1px solid rgba(255,218,171,.42);border-radius:8px;background:repeating-linear-gradient(135deg,rgba(216,122,99,.7) 0 5px,rgba(100,43,62,.75) 5px 10px);box-shadow:0 8px 18px rgba(0,0,0,.24);color:rgba(255,236,208,.8);font:24px Georgia,serif}.love-letter-center{display:grid;gap:8px;justify-items:center;min-height:80px;padding:8px 14px;text-align:center}.love-letter-center-top{display:flex;gap:16px;color:#d4aa84;font-size:9px}.love-letter-center-top i{font-style:normal}.love-letter-message{color:#fff0db;font-size:12px;line-height:1.45}.love-letter-burned{color:rgba(255,226,194,.52);font-size:9px}.love-letter-burned b{color:#e9b67e;font-weight:500}.love-letter-hand{display:flex;justify-content:center;gap:10px;min-height:110px}.love-letter-card{position:relative;display:grid;align-content:center;justify-items:center;flex:0 1 118px;min-width:92px;min-height:104px;padding:12px 8px;border:1px solid rgba(255,228,188,.65);border-radius:12px;background:linear-gradient(145deg,#fff2db,#d99b7c);box-shadow:0 10px 22px rgba(0,0,0,.24);color:#502738;cursor:pointer;transition:transform .16s ease,filter .16s ease}.love-letter-card:hover:not(:disabled),.love-letter-card:focus-visible:not(:disabled){transform:translateY(-4px);filter:brightness(1.06);outline:none}.love-letter-card:disabled{cursor:default;opacity:1}.love-letter-card>span{display:grid;place-items:center;width:34px;height:34px;margin-bottom:8px;border:1px solid rgba(88,34,48,.25);border-radius:50%;background:rgba(255,255,255,.25);font:600 15px Georgia,serif}.love-letter-card b{font-size:12px}.love-letter-card small{position:absolute;top:7px;right:8px;color:rgba(80,39,56,.58);font-size:10px}.love-letter-card-princess{background:linear-gradient(145deg,#ffd8de,#d5798b)}.love-letter-card-king{background:linear-gradient(145deg,#f6d9a6,#ca875d)}.love-letter-draw{justify-self:center;min-height:35px;padding:0 20px;font-size:11px}.love-letter-choice,.love-letter-finish{display:grid;gap:9px;padding:14px;border:1px solid rgba(255,228,188,.35);border-radius:16px;background:rgba(22,10,20,.58);text-align:center}.love-letter-choice>small,.love-letter-finish>small{color:#e4b77f;font-size:9px;letter-spacing:.12em}.love-letter-choice>div{display:flex;flex-wrap:wrap;justify-content:center;gap:7px}.love-letter-choice button{min-height:31px;padding:0 10px;border:1px solid rgba(255,221,180,.32);border-radius:99px;background:rgba(255,232,201,.1);color:#ffe9ca;font:11px/1 inherit;cursor:pointer}.love-letter-choice button b{margin-right:4px;color:#f2bd85}.love-letter-finish{justify-items:center;padding:20px 14px}.love-letter-finish>b{color:#fff0d6;font:600 21px/1.25 Georgia,"Songti SC",serif}.love-letter-finish>p{margin:0;color:rgba(255,232,204,.72);font-size:10px;line-height:1.5}.love-letter-finish>button{min-height:35px;font-size:11px}
/* Card artwork and first-time rules sheet. */
.love-letter-card{height:165px;min-height:165px;overflow:hidden;background:#3b2630;color:#fff4df}.love-letter-card::after{position:absolute;inset:42% 0 0;background:linear-gradient(180deg,transparent,rgba(22,9,17,.88));content:'';pointer-events:none}.love-letter-card>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.love-letter-card>span,.love-letter-card>b,.love-letter-card>small{z-index:1}.love-letter-card>span{position:absolute;top:9px;left:9px;margin:0;border-color:rgba(255,255,255,.38);background:rgba(35,15,24,.48);color:#fff3dd}.love-letter-card>b{align-self:end;margin-top:auto;color:#fff3dd;text-shadow:0 1px 4px rgba(0,0,0,.6)}.love-letter-card>small{color:#ffe6bc;text-shadow:0 1px 4px rgba(0,0,0,.7)}.love-letter-rules-backdrop{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:18px;background:rgba(9,5,11,.68);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.love-letter-rules-modal{display:grid;gap:12px;width:min(91vw,430px);max-height:86vh;box-sizing:border-box;padding:20px 17px 16px;border:1px solid rgba(255,225,185,.46);border-radius:22px;background:linear-gradient(155deg,rgba(85,42,55,.98),rgba(28,14,25,.98));box-shadow:0 24px 70px rgba(0,0,0,.44);color:#fff0d7}.love-letter-rules-modal>header{display:grid;gap:4px;text-align:center}.love-letter-rules-modal>header small{color:#dfac79;font-size:8px;letter-spacing:.2em}.love-letter-rules-modal>header b{font:600 22px/1.2 Georgia,"Songti SC",serif}.love-letter-rules-modal>p{margin:0;color:rgba(255,232,201,.78);font-size:11px;line-height:1.6}.love-letter-rules-modal>ul{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0;padding:0;overflow:auto;list-style:none}.love-letter-rules-modal li{display:flex;align-items:center;gap:7px;min-width:0;padding:6px;border:1px solid rgba(255,226,190,.16);border-radius:10px;background:rgba(255,240,217,.08)}.love-letter-rules-modal li>img{flex:0 0 25px;width:25px;height:35px;object-fit:cover;border-radius:3px}.love-letter-rules-modal li>span{display:grid;gap:2px;min-width:0}.love-letter-rules-modal li b{color:#ffe0b5;font-size:10px}.love-letter-rules-modal li small{color:rgba(255,232,201,.68);font-size:8px;line-height:1.35}.love-letter-rules-modal>button{min-height:39px;border:1px solid rgba(255,225,184,.55);border-radius:99px;background:linear-gradient(135deg,#cf806c,#a34759);color:#fff3df;font:600 12px/1 inherit;cursor:pointer}.love-letter-rules-modal>button:disabled{cursor:default;opacity:.58}
/* Use the extracted full-card artwork without the old text overlay. */
.love-letter-card{padding:0;border:0;background:transparent;color:transparent}.love-letter-card::after{display:none}.love-letter-card>img{object-fit:fill;border-radius:inherit}.love-letter-card>span,.love-letter-card>b,.love-letter-card>small{display:none}.love-letter-hidden-card.is-revealed img{object-fit:fill !important}
/* Make the cards in the active game easier to read on the phone-sized board. */
.love-letter-hand{gap:12px;min-height:224px}.love-letter-card{flex-basis:150px;min-width:132px;height:215px;min-height:215px}.love-letter-hidden-card{width:68px;height:96px}
.love-letter-exposed-cards{display:flex;justify-content:center;gap:8px}.love-letter-exposed-cards img{width:64px;height:92px;object-fit:fill;border-radius:6px;box-shadow:0 6px 13px rgba(0,0,0,.28)}.love-letter-action-log{display:grid;gap:4px;width:100%;padding-top:3px;text-align:left}.love-letter-action-log>small{color:#d9a77d;font-size:8px;letter-spacing:.13em}.love-letter-action-log ol{display:grid;gap:2px;margin:0;padding-left:18px;color:rgba(255,232,204,.7);font-size:9px;line-height:1.35}.love-letter-action-log li::marker{color:#e4af7d}
.love-letter-log-button{display:grid;grid-template-columns:46px auto 22px;align-items:center;gap:6px;width:min(100%,210px);min-height:48px;padding:3px 8px 3px 4px;border:1px solid rgba(255,225,184,.27);border-radius:14px;background:rgba(255,239,215,.08);color:#ffe8c7;font:10px/1 inherit;cursor:pointer;transition:transform .16s ease,background .16s ease}.love-letter-log-button:hover,.love-letter-log-button:focus-visible{transform:translateY(-2px);background:rgba(255,239,215,.14);outline:none}.love-letter-log-button img{display:block;width:46px;height:32px;object-fit:contain;filter:drop-shadow(0 5px 8px rgba(0,0,0,.2))}.love-letter-log-button span{justify-self:start}.love-letter-log-button>b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:rgba(231,176,126,.23);color:#f7c993;font-size:9px}
.love-letter-modal-backdrop{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:18px;background:rgba(10,5,12,.58);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}.love-letter-choice-backdrop{z-index:31}.love-letter-finish-backdrop{z-index:32}.love-letter-log-backdrop{z-index:35}.love-letter-modal-backdrop .love-letter-choice{width:min(88vw,360px);box-sizing:border-box;box-shadow:0 24px 70px rgba(0,0,0,.42)}.love-letter-finish-backdrop .love-letter-finish{width:min(89vw,390px);box-sizing:border-box;box-shadow:0 24px 70px rgba(0,0,0,.46)}.love-letter-letter-paper{display:grid;gap:12px;width:min(90vw,430px);max-height:min(76vh,620px);box-sizing:border-box;padding:18px 17px 16px;border:1px solid rgba(151,104,95,.38);border-radius:5px;background:#f7ede3 url("assets/ui/game-cards/love-letter/action-log-paper.webp?v=20260928-love-letter-envelope-1") center/cover no-repeat;color:#704b49;box-shadow:0 24px 75px rgba(0,0,0,.46)}.love-letter-letter-paper>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid rgba(151,104,95,.24)}.love-letter-letter-paper>header>div{display:grid;gap:4px}.love-letter-letter-paper>header small{color:#a87572;font-size:8px;letter-spacing:.2em}.love-letter-letter-paper>header b{font:600 21px/1.2 Georgia,"Songti SC",serif}.love-letter-letter-paper>header button{display:grid;place-items:center;width:29px;height:29px;border:1px solid rgba(151,104,95,.22);border-radius:50%;background:rgba(255,255,255,.46);color:#855d5a;font:20px/1 inherit;cursor:pointer}.love-letter-letter-scroll{min-height:0;overflow:auto;padding:2px 7px 8px 2px;overscroll-behavior:contain}.love-letter-letter-scroll ol{display:grid;gap:9px;margin:0;padding-left:23px;color:#765452;font-size:10px;line-height:1.55}.love-letter-letter-scroll li{padding-bottom:8px;border-bottom:1px solid rgba(151,104,95,.16)}.love-letter-letter-scroll li::marker{color:#b07873;font:italic 11px Georgia,serif}.love-letter-letter-scroll p{margin:24px 0;color:#a37d78;font-size:11px;text-align:center}.love-letter-finish .love-letter-reveal{width:100%;box-sizing:border-box;background:rgba(255,243,224,.08)}
.love-letter-effect-box{display:grid;gap:4px;padding:9px 11px;border:1px solid rgba(255,225,184,.22);border-radius:10px;background:rgba(29,12,24,.38)}.love-letter-effect-box small{color:#d9a77d;font-size:8px;letter-spacing:.14em}.love-letter-effect-box span{color:#ffe9ca;font-size:10px;line-height:1.45}.love-letter-reveal{display:grid;gap:8px;padding:12px 14px;border:1px solid rgba(255,225,184,.3);border-radius:16px;background:rgba(35,15,28,.62);text-align:center}.love-letter-reveal>small{color:#e5b57e;font-size:9px;letter-spacing:.12em}.love-letter-reveal>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}.love-letter-reveal-player{display:grid;justify-items:center;gap:4px}.love-letter-reveal-player>b{color:#fff0d8;font-size:11px}.love-letter-reveal-player img{width:76px;height:110px;object-fit:fill;border-radius:7px;box-shadow:0 7px 14px rgba(0,0,0,.25)}.love-letter-reveal-player>span{color:#e8c49a;font-size:9px}.love-letter-no-card{padding:45px 0;color:rgba(255,232,204,.58)!important}
/* Love Letter：贴边可拖动的信封记录按钮与轻量信纸。 */
.love-letter-letter-paper{width:min(76vw,304px);height:min(68vh,430px);max-height:calc(100vh - 24px);background-size:100% 100%}
.love-letter-letter-scroll{max-height:none}
.love-letter-log-dock{position:fixed;top:50%;right:0;z-index:38;display:block;touch-action:none}.love-letter-log-dock.is-panel-right .love-letter-letter-paper{right:auto;left:calc(100% + 8px)}.love-letter-log-button{display:block;width:68px;height:48px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:transparent;cursor:grab;touch-action:none}.love-letter-log-button:active{cursor:grabbing}.love-letter-log-button:hover,.love-letter-log-button:focus-visible{transform:none;background:transparent;outline:none}.love-letter-log-button img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 8px rgba(0,0,0,.24))}.love-letter-log-button span,.love-letter-log-button>b{display:none}.love-letter-letter-paper{position:absolute;top:50%;right:calc(100% + 8px);width:min(72vw,300px);max-height:min(52vh,420px);box-sizing:border-box;display:grid;gap:7px;padding:10px 11px 9px;border:1px solid rgba(151,104,95,.28);border-radius:14px;background:#f7ede3 url("assets/ui/game-cards/love-letter/action-log-paper.webp?v=20260928-love-letter-envelope-2") center/cover no-repeat;color:#704b49;box-shadow:0 15px 35px rgba(0,0,0,.3);transform:translateY(-50%);pointer-events:auto}.love-letter-letter-paper>header{display:flex;justify-content:flex-end;padding:0;border:0}.love-letter-letter-paper>header button{display:grid;place-items:center;width:24px;height:24px;border:1px solid rgba(151,104,95,.2);border-radius:50%;background:rgba(255,255,255,.45);color:#855d5a;font:17px/1 inherit;cursor:pointer}.love-letter-letter-scroll{min-height:0;max-height:calc(min(52vh,420px) - 44px);overflow:auto;padding:0 5px 4px 1px;overscroll-behavior:contain}.love-letter-letter-scroll ol{display:grid;gap:7px;margin:0;padding-left:20px;color:#765452;font-size:9px;line-height:1.5}.love-letter-letter-scroll li{padding-bottom:6px;border-bottom:1px solid rgba(151,104,95,.16)}.love-letter-letter-scroll p{margin:18px 0;color:#a37d78;font-size:10px;text-align:center}
/* 信纸保持原图纵向比例，完整显示上下装饰。 */
.love-letter-letter-paper{width:min(68vw,292px);height:auto;aspect-ratio:1084 / 1459;max-height:calc(100vh - 24px);min-height:0;overflow:hidden;grid-template-rows:auto minmax(0,1fr);background-size:100% 100%}
.love-letter-letter-scroll{height:0;min-height:0;max-height:none;overflow:auto}
.love-letter-hand{justify-content:center;align-items:start;gap:12px;min-height:224px}
.love-letter-card{flex:0 1 150px;transform:none}
.love-letter-card:hover:not(:disabled),.love-letter-card:focus-visible:not(:disabled){transform:none}
.love-letter-choice button{width:max-content;min-width:0;max-width:100%;height:auto;min-height:32px;padding:7px 12px;flex:0 1 auto;white-space:nowrap}
.love-letter-log-dock.is-dragging{transition:none}.love-letter-user>.love-letter-choice{width:100%;box-sizing:border-box;margin-top:1px}.love-letter-choice{box-shadow:0 9px 20px rgba(0,0,0,.2)}.love-letter-result-reason{display:grid;gap:5px;width:100%;box-sizing:border-box;padding:10px 11px;border:1px solid rgba(255,225,184,.24);border-radius:12px;background:rgba(255,239,215,.08);text-align:left}.love-letter-result-reason>small{color:#e5b57e;font-size:8px;letter-spacing:.14em}.love-letter-result-reason>strong{color:#ffe9c9;font-size:10px;line-height:1.5}.love-letter-result-reason>p{margin:0;color:rgba(255,232,204,.78);font-size:10px;line-height:1.5}
.love-letter-log-dock .love-letter-letter-paper{z-index:2}
.love-letter-log-dock .love-letter-letter-scroll{height:auto;min-height:0;max-height:none;overflow-x:hidden;overflow-y:auto}
.love-letter-log-dock .love-letter-letter-scroll ol{min-width:0;overflow-wrap:anywhere;word-break:break-word}
/* 花朵轮盘：从游戏大厅进入的独立全屏页面，暂只提供页面壳。 */
.couple-mystery-cover { background:#120b0b; }
.couple-mystery-cover-art { position:absolute; inset:0; overflow:hidden; background:#120b0b; }
.couple-mystery-cover-art img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; }
.couple-mystery { position:fixed; inset:0; z-index:45; overflow-y:auto; background:#f3eee7; color:#302b2a; }
.couple-mystery-header { position:sticky; top:0; z-index:2; display:flex; align-items:center; gap:10px; padding:max(16px,env(safe-area-inset-top)) 20px 14px; background:#f3eee7ed; border-bottom:1px solid #ded0c1; backdrop-filter:blur(16px); }
.couple-mystery-header > div { flex:1; display:grid; gap:2px; }
.couple-mystery-header small { color:#96755f; font-size:9px; letter-spacing:.2em; }
.couple-mystery-header b { font:600 21px Georgia,"Songti SC",serif; }
.couple-mystery-header button { width:34px; height:34px; border:0; border-radius:50%; background:#e7ddd2; color:#483b37; font-size:24px; cursor:pointer; }
.couple-mystery-header button[hidden] { display:none; }
.couple-mystery-main { max-width:620px; margin:auto; padding:24px 20px 70px; }
.couple-mystery-nav { position:sticky; top:65px; z-index:2; display:flex; gap:4px; padding:8px 20px; background:#f3eee7ed; border-bottom:1px solid #ded0c1; backdrop-filter:blur(16px); }
.couple-mystery-nav button { flex:1; padding:9px 4px; border:0; border-radius:8px; background:transparent; color:#927b70; font-size:12px; cursor:pointer; }
.couple-mystery-nav button.is-active { background:#33252b; color:#f9eee4; }
.couple-mystery-case-summary { padding:23px; border:1px solid #dfd0c3; border-radius:14px; background:#fffbf5; }
.couple-mystery-case-summary > small { color:#9b715c; font-size:11px; letter-spacing:.08em; }
.couple-mystery-case-summary h2 { margin:11px 0 9px; font:600 25px/1.3 Georgia,"Songti SC",serif; }
.couple-mystery-case-summary > p { margin:0; color:#63534d; font-size:13px; line-height:1.8; }
.couple-mystery-summary-grid { display:grid; gap:18px; margin-top:21px; padding-top:17px; border-top:1px solid #e5d9cd; }
.couple-mystery-summary-grid > div { display:grid; gap:7px; }
.couple-mystery-summary-grid b { color:#8b5b4d; font-size:12px; }
.couple-mystery-summary-grid span { color:#64534d; font-size:12px; line-height:1.55; }
.couple-mystery-summary-grid strong { margin-right:7px; color:#3f322e; }
.couple-mystery-case-summary > button { margin-top:20px; padding:11px 17px; border:0; border-radius:8px; background:#7f4d47; color:#fff; cursor:pointer; }
.couple-mystery-investigations { display:grid; gap:10px; }
.couple-mystery-investigations button { display:grid; gap:6px; padding:16px; border:1px solid #dfd0c3; border-radius:12px; background:#fffbf5; color:#3d302d; text-align:left; cursor:pointer; }
.couple-mystery-investigations button i { color:#995e4f; font-size:10px; font-style:normal; letter-spacing:.1em; }
.couple-mystery-investigations button b { font:600 16px Georgia,"Songti SC",serif; }
.couple-mystery-investigations button small { color:#927d72; font-size:11px; }
.couple-mystery-investigations button.is-locked { opacity:.5; cursor:default; }
.couple-mystery-investigation-history { display:grid; gap:12px; margin-top:24px; }
.couple-mystery-investigation-history article { padding:17px; border-left:2px solid #a36e59; background:#fffaf3; }
.couple-mystery-investigation-history article small { color:#a36e59; font-size:10px; }
.couple-mystery-investigation-history article b { display:block; margin:6px 0; font-size:15px; }
.couple-mystery-investigation-history article p { margin:0; color:#63534d; font-size:12px; line-height:1.75; }
.couple-mystery-investigation-history article em { display:block; margin-top:8px; color:#8c6858; font-size:11px; font-style:normal; }
.couple-mystery-free-investigate { margin-top:24px; padding-top:17px; border-top:1px solid #ded0c1; }
.couple-mystery-free-investigate > small { color:#9b6c58; font-size:11px; letter-spacing:.08em; }
.couple-mystery-free-investigate p { margin:8px 0 11px; color:#927d72; font-size:11px; line-height:1.6; }
.couple-mystery-free-investigate > div { display:flex; gap:8px; }
.couple-mystery-free-investigate input { flex:1; min-width:0; padding:10px 11px; border:1px solid #d5c4b4; border-radius:8px; background:#fffaf3; color:#302b2a; font:inherit; font-size:12px; }
.couple-mystery-free-investigate button { padding:0 15px; border:0; border-radius:8px; background:#7f4d47; color:#fff; cursor:pointer; }
.couple-mystery-free-investigate button:disabled { opacity:.55; }
.couple-mystery-clue-grid { display:grid; gap:10px; }
.couple-mystery-clue-grid article { padding:16px; border:1px solid #dfd0c3; border-radius:12px; background:#fffbf5; }
.couple-mystery-clue-grid article small { color:#a36e59; font-size:10px; }
.couple-mystery-clue-grid article h3 { margin:7px 0; font:600 16px Georgia,"Songti SC",serif; }
.couple-mystery-clue-grid article p { margin:0; color:#63534d; font-size:12px; line-height:1.75; }
.couple-mystery-clue-grid article em { display:block; margin-top:9px; color:#927b70; font-size:11px; font-style:normal; }
.couple-mystery-related { margin-top:9px; color:#8f5d4d; font-size:11px; }
.couple-mystery-relation { margin-top:14px; padding:13px 15px; border:1px dashed #b88c77; border-radius:9px; color:#8b5a4c; background:#f8ece2; font-size:12px; line-height:1.65; }
.couple-mystery-talk-note { margin:0 0 12px; color:#927e74; font-size:11px; line-height:1.6; }
.couple-mystery-locked-message { padding:19px; border:1px dashed #c7aa94; border-radius:11px; color:#8b6e60; background:#fbf2e9; font-size:13px; line-height:1.7; }
.couple-mystery-hero,.couple-mystery-dossier { padding:27px 24px; border-radius:16px; background:#33252b; color:#f9f0e9; box-shadow:0 14px 34px #38241e21; }
.couple-mystery-hero span,.couple-mystery-dossier small { color:#d7b493; font-size:11px; letter-spacing:.08em; }
.couple-mystery-hero h2,.couple-mystery-dossier h2 { margin:15px 0; font:500 28px/1.35 Georgia,"Songti SC",serif; }
.couple-mystery-hero p,.couple-mystery-dossier p { margin:0; color:#e3d8d1; font-size:13px; line-height:1.75; }
.couple-mystery-dossier span { display:block; margin-top:18px; color:#d7b493; font-size:11px; }
.couple-mystery-section-title { display:flex; justify-content:space-between; align-items:center; margin:29px 2px 14px; }
.couple-mystery-section-title b { font:600 18px Georgia,"Songti SC",serif; }
.couple-mystery-section-title small { color:#967e70; font-size:11px; }
.couple-mystery-case-list { display:flex; gap:18px; overflow-x:auto; padding:8px 3px 23px; scroll-snap-type:x mandatory; scrollbar-width:none; }
.couple-mystery-case-list::-webkit-scrollbar { display:none; }
.couple-mystery-clues,.couple-mystery-options { display:grid; gap:10px; }
.couple-mystery-case-card { display:block; flex:0 0 146px; padding:0; border:0; background:none; color:inherit; text-align:center; cursor:pointer; scroll-snap-align:start; transition:flex-basis .75s cubic-bezier(.22,.61,.36,1); }
.couple-mystery-new-case { display:grid; align-content:center; gap:9px; flex:0 0 146px; min-height:240px; padding:18px 12px; border:1px dashed #aa8871; background:#f7eee4; color:#795747; text-align:center; cursor:pointer; scroll-snap-align:start; }
.couple-mystery-new-case b { font:600 15px Georgia,"Songti SC",serif; }
.couple-mystery-new-case small { color:#987c6e; font-size:11px; line-height:1.6; }
.couple-mystery-case-card.is-unrolling { flex-basis:min(86vw,430px); }
.couple-mystery-case-list.is-opening { scroll-snap-type:none; }
.couple-mystery-scroll-art { position:relative; display:block; width:100%; height:240px; overflow:hidden; }
.couple-mystery-scroll-art > img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:fill; clip-path:inset(0 15%); transform:scaleX(.03); transition:transform .8s cubic-bezier(.22,.61,.36,1); }
.couple-mystery-scroll-art::before,.couple-mystery-scroll-art::after { content:""; position:absolute; top:0; bottom:0; z-index:2; width:36px; background-image:url("assets/ui/game-covers/ancient-case-scroll-v1.png"); background-image:image-set(url("assets/ui/game-covers/ancient-case-scroll-v1.webp") type("image/webp"),url("assets/ui/game-covers/ancient-case-scroll-v1.png") type("image/png")); background-size:360px 240px; background-repeat:no-repeat; transition:left .8s cubic-bezier(.22,.61,.36,1),right .8s cubic-bezier(.22,.61,.36,1); }
.couple-mystery-scroll-art::before { left:calc(50% - 36px); background-position:-12px center; }
.couple-mystery-scroll-art::after { right:calc(50% - 36px); background-position:-310px center; }
.couple-mystery-case-card.is-unrolling .couple-mystery-scroll-art > img { transform:scaleX(1); }
.couple-mystery-case-card.is-unrolling .couple-mystery-scroll-art::before { left:4%; }
.couple-mystery-case-card.is-unrolling .couple-mystery-scroll-art::after { right:4%; }
.couple-mystery-scroll-writing { position:absolute; inset:23% 18% 24%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; color:#533629; opacity:0; transition:opacity .35s .45s; }
.couple-mystery-case-card.is-unrolling .couple-mystery-scroll-writing { opacity:1; }
.couple-mystery-closed-label { display:grid; gap:8px; padding:14px 5px; }
.couple-mystery-closed-label small { color:#987457; font-size:11px; }
.couple-mystery-closed-label b { font:600 16px/1.6 Georgia,"Songti SC",serif; }
.couple-mystery-closed-label em { font:11px Georgia,"Songti SC",serif; color:#94574a; }
@media (prefers-reduced-motion:reduce) { .couple-mystery-case-card,.couple-mystery-scroll-art > img,.couple-mystery-scroll-art::before,.couple-mystery-scroll-art::after,.couple-mystery-scroll-writing { transition:none; } }
.couple-mystery-scroll-writing small { font-size:10px; letter-spacing:.12em; color:#895d48; }
.couple-mystery-scroll-writing b { font:600 clamp(17px,4.8vw,24px)/1.5 Georgia,"Songti SC","STSong",serif; letter-spacing:.06em; }
.couple-mystery-scroll-writing i { font:11px Georgia,"Songti SC",serif; color:#81604a; }
.couple-mystery-scroll-writing em { margin-top:2px; padding:4px 9px; border:1px solid #9b5748; color:#8b3f32; font:11px Georgia,"Songti SC",serif; }
.couple-mystery-clues { grid-template-columns:repeat(2,minmax(0,1fr)); }
.couple-mystery-clues button { display:grid; gap:8px; padding:14px; min-height:86px; border:1px solid #e1d6c9; border-radius:12px; background:#fffcf7; color:#302b2a; text-align:left; cursor:pointer; }
.couple-mystery-clues button.is-selected { border-color:#a36e59; box-shadow:0 0 0 1px #a36e59; }
.couple-mystery-clues i { color:#af8b70; font:italic 12px Georgia,serif; }
.couple-mystery-clues b { font-size:14px; }
.couple-mystery-clues span { color:#947e72; font-size:10px; }
.couple-mystery-clue-detail,.couple-mystery-question { margin-top:14px; padding:20px; border:1px solid #e1d6c9; border-radius:13px; background:#fffcf7; }
.couple-mystery-clue-detail small { color:#a36e59; font-size:11px; }
.couple-mystery-clue-detail h3,.couple-mystery-question h3 { margin:8px 0 10px; font-size:17px; }
.couple-mystery-clue-detail p,.couple-mystery-truth p { margin:0; font-size:13px; line-height:1.8; }
.couple-mystery-options button { padding:13px 14px; border:1px solid #dfd0c3; border-radius:9px; background:#f8f2ea; color:#443733; text-align:left; font-size:13px; cursor:pointer; }
.couple-mystery-options button.is-selected { border-color:#995c51; background:#f0dfd4; }
.couple-mystery-options button:disabled { opacity:.55; cursor:default; }
.couple-mystery-submit { width:100%; margin-top:15px; padding:13px; border:0; border-radius:9px; background:#7f4d47; color:#fff; font-weight:600; cursor:pointer; }
.couple-mystery-submit:disabled { opacity:.45; cursor:default; }
.couple-mystery-feedback { color:#9a4f42; font-size:12px; line-height:1.6; }
.couple-mystery-truth { padding:16px; border-radius:9px; background:#eee1d3; }
.couple-mystery-truth b { display:block; margin-bottom:8px; color:#834f45; }
.couple-mystery-truth a { display:inline-block; margin-top:12px; color:#834f45; font-size:12px; }
.couple-mystery-source { color:#88766d; font-size:11px; line-height:1.6; }
.couple-mystery-preface { padding:26px 23px; border-radius:13px; background:#33252b; color:#f9f0e9; }
.couple-mystery-preface small { color:#d7b493; font-size:11px; letter-spacing:.1em; }
.couple-mystery-preface h2 { margin:13px 0; font:500 27px/1.4 Georgia,"Songti SC",serif; }
.couple-mystery-preface p { margin:0; color:#e4d7cf; font-size:13px; line-height:1.85; }
.couple-mystery-preface button { margin-top:23px; padding:11px 18px; border:1px solid #d7b493; border-radius:8px; background:#ead8c5; color:#3b2a29; cursor:pointer; }
.couple-mystery-discuss { margin-top:24px; }
.couple-mystery-dialogue { margin:10px 0; max-width:88%; padding:11px 13px; border-radius:12px; background:#fffaf3; color:#453834; font-size:12px; line-height:1.7; }
.couple-mystery-dialogue.is-user { margin-left:auto; background:#e9d8c8; }
.couple-mystery-dialogue b { display:block; margin-bottom:3px; color:#9a6457; font-size:11px; }
.couple-mystery-compose { display:flex; gap:8px; margin-top:13px; }
.couple-mystery-compose input { flex:1; min-width:0; padding:11px 12px; border:1px solid #d5c4b4; border-radius:9px; background:#fffaf3; color:#302b2a; font:inherit; font-size:12px; }
.couple-mystery-compose button { padding:0 16px; border:0; border-radius:9px; background:#7f4d47; color:#fff; cursor:pointer; }
.couple-mystery-compose button:disabled { opacity:.6; }

/* 古籍悬案：紧凑案卷排版 */
.couple-mystery-main { max-width:760px; }
.couple-mystery-case-list { display:grid; gap:0; overflow:visible; padding:0; }
.couple-mystery-case-card,.couple-mystery-new-case { display:grid; grid-template-columns:54px minmax(0,1fr) 24px; align-items:center; gap:14px; width:100%; min-height:86px; padding:15px 4px; border:0; border-bottom:1px solid #ded0c1; border-radius:0; background:transparent; color:#302b2a; text-align:left; cursor:pointer; transition:color .18s ease,border-color .18s ease,background-color .18s ease; }
.couple-mystery-case-card:hover,.couple-mystery-case-card:focus-visible,.couple-mystery-new-case:hover,.couple-mystery-new-case:focus-visible { background:#fbf4ec; color:#7f4d47; outline:none; }
.couple-mystery-case-index { align-self:start; padding-top:3px; color:#9c715c; font:11px Georgia,"Songti SC",serif; letter-spacing:.1em; white-space:nowrap; }
.couple-mystery-case-copy { display:grid; gap:4px; min-width:0; }
.couple-mystery-case-copy small { overflow:hidden; color:#987c6e; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.couple-mystery-case-copy b { overflow:hidden; font:600 18px/1.25 Georgia,"Songti SC",serif; text-overflow:ellipsis; white-space:nowrap; }
.couple-mystery-case-copy p { overflow:hidden; margin:0; color:#75635b; font-size:11px; line-height:1.55; text-overflow:ellipsis; white-space:nowrap; }
.couple-mystery-case-copy em { color:#9a5e50; font-size:10px; font-style:normal; }
.couple-mystery-case-arrow { color:#ad8b79; font-size:22px; text-align:right; }
.couple-mystery-new-case { border-bottom:0; color:#7f4d47; }
.couple-mystery-new-case > span:nth-child(2) { display:grid; gap:4px; }
.couple-mystery-new-case b { font:600 16px/1.3 Georgia,"Songti SC",serif; }
.couple-mystery-new-case small { color:#987c6e; font-size:10px; }
.couple-mystery-case-card.is-unrolling { flex-basis:auto; }
.couple-mystery-case-card.is-unrolling .couple-mystery-scroll-art,.couple-mystery-case-card .couple-mystery-scroll-art,.couple-mystery-case-card .couple-mystery-closed-label { display:none; }
.couple-mystery-layout { display:grid; grid-template-columns:176px minmax(0,1fr); align-items:start; max-width:980px; margin:0 auto; }
.couple-mystery-sidebar { position:sticky; top:72px; min-height:calc(100vh - 72px); padding:28px 16px 40px 22px; border-right:1px solid #ded0c1; }
.couple-mystery-sidebar-title { display:grid; gap:5px; padding-bottom:20px; border-bottom:1px solid #ded0c1; }
.couple-mystery-sidebar-title small { color:#9c715c; font-size:10px; letter-spacing:.1em; }
.couple-mystery-sidebar-title b { font:600 20px/1.3 Georgia,"Songti SC",serif; }
.couple-mystery-sidebar-title span { color:#927b70; font-size:10px; line-height:1.5; }
.couple-mystery-sidebar .couple-mystery-nav { position:static; display:grid; gap:2px; padding:16px 0; border-bottom:1px solid #ded0c1; background:none; backdrop-filter:none; }
.couple-mystery-sidebar .couple-mystery-nav button { padding:8px 9px; border-radius:0; color:#927b70; text-align:left; }
.couple-mystery-sidebar .couple-mystery-nav button.is-active { background:#33252b; color:#f9eee4; }
.couple-mystery-sidebar-progress { display:grid; gap:4px; padding-top:17px; }
.couple-mystery-sidebar-progress small { color:#9c715c; font-size:10px; }
.couple-mystery-sidebar-progress b { font:600 17px Georgia,"Songti SC",serif; }
.couple-mystery-sidebar-progress span { color:#927b70; font-size:10px; }
.couple-mystery-layout > .couple-mystery-main { width:auto; max-width:none; min-width:0; padding:28px 32px 70px; }
.couple-mystery-truth-block { margin-top:15px; padding-top:12px; border-top:1px solid #d7c4b4; }
.couple-mystery-truth-block small { color:#9a5e50; font-size:10px; letter-spacing:.1em; }
.couple-mystery-truth-block p { margin:7px 0 0; }
.couple-mystery-truth-block ol { margin:8px 0 0; padding-left:20px; color:#63534d; font-size:13px; line-height:1.8; }
.couple-mystery-clue-grid article { padding:12px 0; border:0; border-bottom:1px solid #ded0c1; border-radius:0; background:transparent; }
.couple-mystery-investigations button { padding:12px 3px; border:0; border-bottom:1px solid #ded0c1; border-radius:0; background:transparent; }
.couple-mystery-investigations button:hover:not(:disabled) { background:#fbf4ec; }
.couple-mystery-feedback { display:flex; align-items:center; gap:10px; margin:15px 0 0; padding:10px 0; border-top:1px solid #e5d9cd; color:#9a6254; font-size:11px; }
.couple-mystery-retry { padding:3px 8px; border:1px solid #b98772; border-radius:3px; background:transparent; color:#8b4e43; font:inherit; font-size:10px; cursor:pointer; }
.couple-mystery-retry:hover,.couple-mystery-retry:focus-visible { background:#f3e1d6; outline:none; }
@media (max-width:700px) {
  .couple-mystery-layout { display:block; }
  .couple-mystery-sidebar { position:static; min-height:0; padding:16px 16px 0; border-right:0; }
  .couple-mystery-sidebar-title { display:flex; align-items:baseline; gap:8px; padding-bottom:12px; }
  .couple-mystery-sidebar-title span { margin-left:auto; }
  .couple-mystery-sidebar .couple-mystery-nav { display:flex; gap:3px; overflow-x:auto; padding:8px 0; border-bottom:1px solid #ded0c1; }
  .couple-mystery-sidebar .couple-mystery-nav button { flex:0 0 auto; padding:7px 10px; text-align:center; }
  .couple-mystery-sidebar-progress { display:none; }
  .couple-mystery-layout > .couple-mystery-main { padding:18px 16px 54px; }
}
.couple-flower-roulette { position:fixed; inset:0; z-index:40; overflow-y:auto; background:#160d0d; color:#fff; }
.couple-flower-roulette-header { position:sticky; top:0; z-index:1; display:flex; align-items:center; justify-content:space-between; min-height:68px; padding:max(16px,env(safe-area-inset-top)) 22px 12px; background:rgba(22,13,13,.86); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); }
.couple-flower-roulette-header h1 { margin:0; color:#fff; font:600 22px/1.1 Georgia,"Songti SC",serif; letter-spacing:-.04em; }
.couple-flower-roulette-close { display:grid; place-items:center; width:30px; height:30px; border:0; border-radius:50%; background:rgba(255,255,255,.16); color:#fff; font-size:20px; cursor:pointer; }
.couple-flower-roulette { display:flex; flex-direction:column; overflow:hidden; }
.couple-flower-roulette-header { flex:0 0 auto; }
.couple-flower-table-scene { --flower-avatar-size:clamp(200px,44vw,260px); position:relative; flex:1; min-height:0; overflow:hidden; background:#e7ddd3 url("assets/flower-roulette/flower-roulette-room-background.png") center/cover no-repeat; background-image:image-set(url("assets/flower-roulette/flower-roulette-room-background.webp") type("image/webp"),url("assets/flower-roulette/flower-roulette-room-background.png") type("image/png")); }
.couple-flower-opponent { position:absolute; top:29%; left:50%; z-index:3; display:grid; place-items:center; width:var(--flower-avatar-size); aspect-ratio:1; transform:translateX(-50%); }
.couple-flower-opponent-avatar { display:grid; place-items:center; width:100%; height:100%; overflow:hidden; border-radius:24px; background:#8c6c5a; color:#fff; font:600 30px/1 Georgia,"Songti SC",serif; }
.couple-flower-opponent-avatar img { width:100%; height:100%; object-fit:cover; }
.couple-flower-controls { position:absolute; top:68%; right:16px; left:16px; z-index:4; display:grid; justify-items:center; gap:10px; pointer-events:auto; }
.couple-flower-round-status { display:grid; justify-items:center; gap:4px; min-height:18px; padding:8px 14px; border-radius:14px; background:rgba(255,248,238,.88); color:#171313; text-align:center; text-shadow:none; }
.couple-flower-round-status span { font-size:11px; }
.couple-flower-round-status small { color:#171313; font-size:10px; }
.couple-flower-round-status b { color:#171313; font-size:11px; font-weight:600; }
.couple-flower-round-status p { max-width:280px; color:#171313; font-size:10px; line-height:1.4; }
.couple-flower-action-buttons { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; width:min(100%,430px); }
.couple-flower-action-buttons button { min-height:42px; border:1px solid rgba(255,255,255,.72); border-radius:13px; background:rgba(255,255,255,.58); box-shadow:inset 0 1px 0 rgba(255,255,255,.78),0 5px 16px rgba(42,36,34,.1); color:#171313; font:600 11px/1 inherit; cursor:pointer; -webkit-backdrop-filter:blur(18px) saturate(130%); backdrop-filter:blur(18px) saturate(130%); }
.couple-flower-action-buttons button.is-probe { border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.58); color:#171313; }
.couple-flower-action-buttons button:disabled { cursor:default; opacity:.42; }
.couple-flower-controls-start { top:81%; }
.couple-flower-start { min-width:138px; min-height:46px; padding:0 25px; border:1px solid rgba(255,255,255,.76); border-radius:15px; background:rgba(255,255,255,.6); box-shadow:inset 0 1px 0 rgba(255,255,255,.82),0 6px 18px rgba(42,36,34,.11); color:#171313; font:600 13px/1 inherit; cursor:pointer; -webkit-backdrop-filter:blur(20px) saturate(130%); backdrop-filter:blur(20px) saturate(130%); }
.couple-flower-retry { min-height:36px; padding:0 16px; border:1px solid rgba(255,255,255,.72); border-radius:12px; background:rgba(255,255,255,.56); box-shadow:inset 0 1px 0 rgba(255,255,255,.76),0 5px 14px rgba(42,36,34,.1); color:#171313; font:600 11px/1 inherit; cursor:pointer; -webkit-backdrop-filter:blur(18px) saturate(130%); backdrop-filter:blur(18px) saturate(130%); }
.couple-flower-action-buttons button:active,.couple-flower-start:active,.couple-flower-retry:active { transform:scale(.98); }
.flower-gun-stage { position:absolute; top:58%; left:49%; z-index:3; width:clamp(165px,42vw,270px); aspect-ratio:1; pointer-events:none; }
.flower-gun-stage.is-user { transform:rotate(20deg); transform-origin:50% 50%; }
.flower-gun-stage.is-role { top:51%; left:50%; width:clamp(145px,36vw,230px); transform:translateX(-50%); }
.flower-gun-stage.is-user.is-flower-shot { transform:rotate(20deg) scale(1.2); }
.flower-gun-stage.is-role.is-flower-shot { transform:translateX(-50%) scale(1.2); }
.flower-gun { position:relative; width:100%; height:100%; filter:drop-shadow(6px 9px 5px rgba(0,0,0,.55)); }
.flower-gun > img { position:relative; z-index:1; display:block; width:100%; height:100%; object-fit:contain; user-select:none; }
.flower-barrel-bloom { position:absolute; bottom:65%; left:51%; z-index:0; display:block; width:58%; aspect-ratio:1; transform-origin:50% 100%; animation:flower-barrel-grow 1600ms both; animation-delay:var(--shot-delay); }
.flower-barrel-bloom img { display:block; width:100%; height:100%; object-fit:contain; }
.flower-gun-stage.is-role .flower-barrel-bloom { bottom:55%; left:50%; width:58%; }
@keyframes flower-barrel-grow { 0%,5% { opacity:0; transform:translateX(-50%) scale(.12); } 22%,85% { opacity:1; transform:translateX(-50%) scale(1); } 100% { opacity:0; transform:translateX(-50%) scale(1); } }
.flower-gun.is-firing { animation:flower-gun-recoil 1600ms both; animation-delay:var(--shot-delay); }
.flower-shot-effect { position:absolute; left:50%; top:58%; z-index:5; width:90px; height:120px; pointer-events:none; transform:translate(-50%,-50%); animation:flower-shot-away 1600ms both; animation-delay:var(--shot-delay); }
.flower-shot-effect > img { width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 4px 8px rgba(0,0,0,.25)); }
.flower-shot-effect.is-role { top:56%; animation-name:flower-shot-toward; }
.flower-shot-effect.is-empty { height:auto; width:auto; color:#e4cead; font-size:15px; letter-spacing:.12em; text-shadow:0 2px 6px #170b06; animation-name:flower-empty-click; }
@keyframes flower-gun-recoil { 0% { transform:translateY(0); } 8% { transform:translateY(12px) rotate(-3deg); } 22%,100% { transform:translateY(0); } }
@keyframes flower-shot-away { 0% { top:58%; opacity:0; transform:translate(-50%,-50%) scale(.2); } 12% { opacity:1; } 62%,85% { top:39%; opacity:1; transform:translate(-50%,-50%) scale(1.1) rotate(-12deg); } 100% { top:39%; opacity:0; transform:translate(-50%,-50%) scale(1.2) rotate(-16deg); } }
@keyframes flower-shot-toward { 0% { top:56%; opacity:0; transform:translate(-50%,-50%) scale(.2); } 12% { opacity:1; } 65%,85% { top:92%; opacity:1; transform:translate(-50%,-50%) scale(2.2) rotate(15deg); } 100% { top:96%; opacity:0; transform:translate(-50%,-50%) scale(2.5) rotate(20deg); } }
@keyframes flower-empty-click { 0% { opacity:0; } 15%,45% { opacity:1; } 100% { opacity:0; transform:translate(-50%,-100%); } }
@media (prefers-reduced-motion:reduce) { .flower-gun.is-firing,.flower-barrel-bloom { animation:none; }.flower-shot-effect { animation-name:flower-empty-click; } }
@media not all { .couple-tabs-four { border-color:rgba(255,255,255,.15); background:rgba(38,38,36,.66); box-shadow:0 10px 30px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.1); }.couple-tabs-four button { color:#898a87; }.couple-tabs-four button.is-active { color:#f3f3ef; } }
.couple-connection { max-width:540px; margin:3px auto 0; padding:15px 3px 7px; }
.couple-connection > button { display:grid; width:100%; border:0; background:none; color:inherit; cursor:pointer; }
.couple-widget-row { display:grid; grid-template-columns:minmax(0,1fr) 112px minmax(0,1fr); align-items:start; width:100%; }
.couple-person { display:grid; justify-items:center; min-width:0; gap:8px; }
.couple-person figure { display:grid; flex:0 0 66px; place-items:center; width:66px; height:66px; overflow:hidden; border:3px solid rgba(255,255,255,.9); border-radius:50%; background:#dfd6d3; box-shadow:0 7px 19px rgba(75,48,45,.12); }
.couple-person figure img { width:100%; height:100%; object-fit:cover; }
.couple-person b { max-width:90px; overflow:hidden; color:#2c2929; font-size:13px; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
.couple-heartline { position:relative; display:block; align-self:center; justify-self:center; width:112px; height:42px; margin-top:12px; color:#352f2f; animation:couple-widget-beat 1.25s ease-in-out infinite; transform-origin:50% 50%; }
.couple-heartline svg { position:absolute; top:7px; left:50%; width:104px; height:28px; overflow:visible; transform:translateX(-50%); }
.couple-heartline svg path { fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:58; stroke-dashoffset:58; animation:couple-widget-draw 1.25s linear infinite; }
.couple-heartline i { position:absolute; top:50%; left:50%; z-index:2; color:currentColor; font-size:25px; font-style:normal; line-height:1; transform:translate(-50%,-50%); text-shadow:0 2px 8px rgba(62,45,43,.12); }
@keyframes couple-widget-draw { 0% { stroke-dashoffset:58; opacity:.3; } 45%,75% { stroke-dashoffset:0; opacity:1; } 100% { stroke-dashoffset:-8; opacity:.3; } }
@keyframes couple-widget-beat { 0%,100% { transform:scale(1); } 14% { transform:scale(1.13); } 28% { transform:scale(1); } 42% { transform:scale(1.08); } 56% { transform:scale(1); } }
.couple-nowtime { margin:5px auto 20px; color:#9d8b87; font-size:9px; letter-spacing:.04em; text-align:center; }
.couple-day-note,.couple-day-stream,.couple-page-intro,.couple-date-dialogue,.couple-clean-list,.couple-secret-list,.couple-review,.couple-memory-ribbon { width:min(100%,540px); margin-right:auto; margin-left:auto; }
.couple-day-note { padding:23px 3px 24px; border-top:1px solid rgba(98,69,64,.1); border-bottom:1px solid rgba(98,69,64,.1); }
.couple-day-note > span,.couple-page-intro > span,.couple-review > span { color:#a57670; font-size:9px; font-weight:700; letter-spacing:.16em; }
.couple-day-note h2,.couple-page-intro h2,.couple-review h2 { max-width:440px; margin-top:10px; color:#332a29; font:500 24px/1.38 Georgia,"Songti SC",serif; letter-spacing:-.035em; }
.couple-day-note > p,.couple-page-intro > p,.couple-review > p { max-width:450px; margin-top:10px; color:#756865; font-size:11px; line-height:1.75; }
.couple-day-note blockquote { margin:19px 0 0; color:#4f4140; font:500 14px/1.75 Georgia,"Songti SC",serif; }
.couple-day-note > div { display:flex; gap:9px; margin-top:21px; }
.couple-day-note button,.couple-page-intro button,.couple-review > button { min-height:38px; padding:0 15px; border:0; border-radius:12px; background:#433837; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.couple-day-note button + button { border:1px solid rgba(67,56,55,.15); background:transparent; color:#675754; }
.couple-day-stream { margin-top:22px; padding:18px; border-radius:22px; background:rgba(255,255,255,.57); box-shadow:0 14px 35px rgba(76,52,48,.07); }
.couple-day-stream > header,.couple-clean-list > header,.couple-memory-ribbon > header { display:flex; align-items:center; justify-content:space-between; }
.couple-day-stream > header span { font:500 16px Georgia,"Songti SC",serif; }.couple-day-stream > header small { color:#a18d88; font-size:9px; }
.couple-day-stream > article { max-width:88%; margin-top:11px; padding:10px 12px; border-radius:4px 13px 13px 13px; background:#eee6e3; }
.couple-day-stream > article.is-user { margin-left:auto; border-radius:13px 4px 13px 13px; background:#443938; color:#fff; }
.couple-day-stream article b { font-size:9px; opacity:.6; }.couple-day-stream article p { margin-top:4px; font-size:11px; line-height:1.6; }
.couple-chapter-compose { margin-top:16px; padding-top:14px; border-top:1px solid rgba(80,55,50,.1); }
.couple-chapter-compose p { color:#776966; font-size:11px; line-height:1.55; }.couple-chapter-compose textarea { width:100%; min-height:76px; margin-top:10px; padding:11px; border:1px solid rgba(80,55,50,.12); border-radius:12px; outline:0; background:rgba(255,255,255,.7); color:#333; font:inherit; font-size:11px; resize:vertical; }.couple-chapter-compose button { min-height:34px; margin-top:8px; padding:0 14px; border:0; border-radius:11px; background:#443938; color:#fff; font:inherit; font-size:10px; }
.couple-page-intro { padding:14px 2px 25px; }.couple-page-intro button { margin-top:18px; }
.couple-date-dialogue { margin-bottom:24px; padding:19px; border-left:2px solid #b78780; background:rgba(255,255,255,.45); }.couple-date-dialogue span { color:#a17670; font-size:9px; }.couple-date-dialogue p { margin-top:9px; color:#554846; font-size:11px; line-height:1.75; white-space:pre-wrap; }.couple-date-dialogue button { margin-top:12px; border:0; background:none; color:#9b716b; font:inherit; font-size:9px; }
.couple-clean-list,.couple-memory-ribbon { margin-top:10px; }.couple-clean-list header h3,.couple-memory-ribbon header h3 { font:500 17px Georgia,"Songti SC",serif; }.couple-clean-list header button,.couple-memory-ribbon header button { border:0; background:none; color:#926e68; font:inherit; font-size:10px; }
.couple-clean-list article { display:grid; grid-template-columns:75px 1fr; gap:12px; padding:16px 0; border-bottom:1px solid rgba(90,65,60,.09); }.couple-clean-list time { color:#9c7771; font:500 10px Georgia,serif; }.couple-clean-list article div { display:grid; gap:5px; }.couple-clean-list b { font-size:12px; }.couple-clean-list small { color:#9b8d89; font-size:9px; }
.couple-secret-intro { min-height:215px; padding-top:32px; }.couple-secret-list { display:grid; gap:11px; }.couple-secret-list > button { display:grid; gap:8px; width:100%; padding:19px; border:1px solid rgba(92,65,60,.08); border-radius:2px 20px 20px 20px; background:rgba(255,255,255,.58); color:#392f2e; text-align:left; box-shadow:0 10px 28px rgba(72,48,45,.06); }.couple-secret-list small { color:#a3908c; font-size:8px; }.couple-secret-list b { font:500 17px Georgia,"Songti SC",serif; }.couple-secret-list p { overflow:hidden; color:#756865; font-size:10px; line-height:1.6; text-overflow:ellipsis; white-space:nowrap; }.couple-secret-list i { justify-self:end; color:#a27670; font-size:8px; font-style:normal; }
.couple-wish-wall { position:relative; width:min(100%,540px); min-height:320px; margin:4px auto 0; padding-top:30px; }
.couple-wish-rope { position:absolute; top:5px; right:2px; left:2px; height:32px; border-top:2px solid rgba(119,81,70,.38); border-radius:50%; transform:rotate(-1deg); }
.couple-wish-rope > i { position:absolute; top:-5px; width:8px; height:8px; border:2px solid rgba(133,88,76,.5); border-radius:50%; background:#f4ebe7; }
.couple-wish-rope > i:nth-child(1) { left:7%; }.couple-wish-rope > i:nth-child(2) { left:28%; }.couple-wish-rope > i:nth-child(3) { left:49%; }.couple-wish-rope > i:nth-child(4) { left:70%; }.couple-wish-rope > i:nth-child(5) { left:91%; }
.couple-hanging-wishes { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px 15px; padding:0 9px 24px; }
.couple-hanging-wish { position:relative; display:grid; min-height:178px; padding:27px 17px 18px; border:1px solid rgba(130,82,70,.13); border-radius:4px 4px 17px 17px; background:linear-gradient(165deg,rgba(255,250,247,.96),rgba(235,210,203,.9)); color:#493936; text-align:left; box-shadow:0 15px 32px rgba(87,54,47,.1); transform:rotate(var(--wish-tilt)); transform-origin:50% -26px; animation:couple-wish-sway 5.2s var(--wish-delay) ease-in-out infinite; cursor:pointer; }
.couple-hanging-wish::before { position:absolute; top:-29px; left:50%; width:1px; height:30px; background:rgba(119,76,65,.45); content:""; }
.couple-hanging-wish > span { position:absolute; top:-3px; left:50%; width:11px; height:11px; border:2px solid #a57568; border-radius:50%; background:#f5e8e3; transform:translate(-50%,-50%); }
.couple-hanging-wish > small { color:#a17e76; font-size:8px; letter-spacing:.04em; }
.couple-hanging-wish > b { align-self:end; margin-top:17px; font:500 17px/1.35 Georgia,"Songti SC",serif; }
.couple-hanging-wish > p { display:-webkit-box; margin-top:9px; overflow:hidden; color:#79645f; font-size:10px; line-height:1.65; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.couple-hanging-wish > i { align-self:end; justify-self:end; margin-top:13px; color:#a06c64; font-size:8px; font-style:normal; }
.couple-hanging-wish.wish-tone-1 { background:linear-gradient(165deg,rgba(255,252,246,.97),rgba(233,218,190,.88)); }.couple-hanging-wish.wish-tone-2 { background:linear-gradient(165deg,rgba(249,247,244,.97),rgba(215,213,209,.9)); }.couple-hanging-wish.wish-tone-3 { background:linear-gradient(165deg,rgba(254,247,244,.97),rgba(225,194,188,.88)); }
.couple-hanging-wish.is-blessing { z-index:3; animation:couple-wish-bless .72s ease both; }
.couple-bless-spark { position:absolute; bottom:42%; left:50%; z-index:4; width:5px; height:5px; border-radius:50%; background:#fff5cf; box-shadow:0 0 8px 3px rgba(255,209,131,.68); pointer-events:none; animation:couple-spark-rise .62s var(--spark-delay) ease-out both; }
.couple-wish-empty { display:grid; justify-items:center; padding:76px 20px; color:#9b827c; }.couple-wish-empty > i { display:grid; width:45px; height:45px; place-items:center; border:1px solid rgba(143,94,82,.28); border-radius:50%; font:500 16px Georgia,"Songti SC",serif; font-style:normal; }.couple-wish-empty p { margin-top:15px; font-size:10px; }
.couple-record-sheet.is-wish-record > section { background:linear-gradient(160deg,rgba(255,251,248,.98),rgba(241,225,220,.98)); }
@keyframes couple-wish-sway { 0%,100% { transform:rotate(var(--wish-tilt)); } 50% { transform:rotate(calc(var(--wish-tilt) + 1.3deg)); } }
@keyframes couple-wish-bless { 0% { transform:rotate(var(--wish-tilt)) scale(1); filter:brightness(1); } 36% { transform:rotate(0) scale(1.045); filter:brightness(1.09); box-shadow:0 18px 45px rgba(197,116,91,.28),0 0 32px rgba(255,214,154,.4); } 100% { transform:rotate(var(--wish-tilt)) scale(1); filter:brightness(1); } }
@keyframes couple-spark-rise { 0% { opacity:0; transform:translate(0,0) scale(.4); } 25% { opacity:1; } 100% { opacity:0; transform:translate(var(--spark-x),-70px) scale(1.1); } }
.couple-compact-actions { display:flex; align-items:center; gap:9px; width:min(100%,540px); margin:2px auto 20px; }
.couple-compact-actions > button { min-height:36px; padding:0 14px; border:1px solid rgba(82,58,54,.12); border-radius:11px; background:rgba(255,255,255,.56); color:#5b4946; font:inherit; font-size:10px; cursor:pointer; }
.couple-compact-actions > button:first-child { border-color:#433837; background:#433837; color:#fff; }.couple-compact-actions > button:disabled { opacity:.55; cursor:not-allowed; }
.couple-wish-actions { justify-content:space-between; margin-bottom:3px; }.couple-wish-actions small { color:#9a8884; font-size:9px; }
.couple-wish-deck { min-height:390px; overflow:hidden; touch-action:pan-y; }
.couple-wish-deck .couple-wish-rope { top:16px; right:12%; left:12%; height:34px; }
.couple-wish-deck .couple-wish-rope > i { top:-6px; left:50% !important; transform:translateX(-50%); }
.couple-wish-deck .couple-hanging-wishes { position:relative; display:block; width:100%; height:310px; padding:0; perspective:900px; }
.couple-wish-deck .couple-hanging-wish { position:absolute; top:18px; left:50%; z-index:var(--wish-z); width:min(68vw,270px); min-height:270px; padding:34px 23px 22px; opacity:var(--wish-opacity); transform:translateX(calc(-50% + var(--wish-x))) translateY(var(--wish-y)) rotate(var(--wish-rotate)) scale(var(--wish-scale)); transition:transform .34s cubic-bezier(.18,.82,.22,1),opacity .3s ease,filter .3s ease; animation:none; will-change:transform; }
.couple-wish-deck .couple-hanging-wish.is-active { transform:translateX(calc(-50% + var(--wish-x) + var(--deck-drag,0px))) translateY(var(--wish-y)) rotate(var(--wish-rotate)) scale(var(--wish-scale)); }
.couple-wish-deck.is-dragging .couple-hanging-wish { transition:none; }
.couple-wish-deck .couple-hanging-wish::before { top:-32px; height:33px; }
.couple-wish-deck .couple-hanging-wish.is-active { z-index:30; opacity:1; filter:none; }
.couple-wish-deck .couple-hanging-wish:not(.is-active) { pointer-events:auto; }
.couple-wish-deck .couple-hanging-wish > b { font-size:20px; }.couple-wish-deck .couple-hanging-wish > p { font-size:11px; -webkit-line-clamp:4; }
.couple-wish-dots { display:flex; justify-content:center; gap:6px; margin-top:2px; }
.couple-wish-dots i { width:5px; height:5px; border-radius:50%; background:rgba(108,78,72,.2); transition:width .25s ease,background .25s ease; }.couple-wish-dots i.is-active { width:16px; border-radius:999px; background:#9d6f68; }
.couple-wish-deck .couple-hanging-wish.is-blessing { animation:couple-deck-bless .72s ease both; }
@keyframes couple-deck-bless { 0%,100% { transform:translateX(calc(-50% + var(--wish-x))) translateY(var(--wish-y)) rotate(var(--wish-rotate)) scale(var(--wish-scale)); filter:brightness(1); } 38% { transform:translateX(calc(-50% + var(--wish-x))) translateY(calc(var(--wish-y) - 3px)) rotate(0) scale(1.04); filter:brightness(1.1); box-shadow:0 18px 45px rgba(197,116,91,.28),0 0 32px rgba(255,214,154,.4); } }
.couple-date-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; width:min(100%,540px); margin:0 auto 12px; }
.couple-date-options > button { display:grid; align-content:start; gap:7px; min-height:116px; padding:13px 11px; border:1px solid rgba(83,58,54,.1); border-radius:16px; background:rgba(255,255,255,.54); color:#493c3a; text-align:left; cursor:pointer; transition:transform .2s ease,border-color .2s ease,background .2s ease; }
.couple-date-options > button.is-selected { border-color:#8f6761; background:rgba(255,250,247,.9); transform:translateY(-3px); box-shadow:0 10px 25px rgba(82,53,48,.09); }
.couple-date-options small { color:#ad8880; font:500 9px Georgia,serif; }.couple-date-options b { font-size:11px; line-height:1.35; }.couple-date-options span { color:#8b7b77; font-size:8px; line-height:1.5; }
.couple-date-detail { width:min(100%,540px); margin:0 auto 22px; padding:18px; border-left:2px solid #a77770; background:rgba(255,255,255,.48); }
.couple-date-detail > span { color:#8e625c; font-size:10px; font-weight:700; }.couple-date-detail > p { margin-top:9px; color:#594b48; font-size:11px; line-height:1.75; white-space:pre-wrap; }
.couple-date-detail label { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:15px; color:#8c7c78; font-size:9px; }.couple-date-detail input { height:34px; padding:0 9px; border:1px solid rgba(83,58,54,.13); border-radius:9px; background:rgba(255,255,255,.7); color:#4b403e; font:inherit; font-size:10px; }.couple-date-detail > button { min-height:35px; margin-top:12px; padding:0 14px; border:0; border-radius:11px; background:#433837; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.couple-exchange-start,.couple-exchange-board { width:min(100%,540px); margin:17px auto 0; }
.couple-exchange-start { display:grid; justify-items:center; padding:31px 22px 27px; border:1px solid rgba(105,71,63,.1); border-radius:25px; background:linear-gradient(145deg,rgba(255,251,247,.78),rgba(237,218,211,.7)); box-shadow:0 17px 40px rgba(78,51,47,.08); }
.couple-exchange-mark { display:grid; width:54px; height:54px; place-items:center; border:1px solid rgba(140,91,80,.2); border-radius:50%; background:rgba(255,255,255,.65); color:#a06d64; font-size:25px; box-shadow:0 8px 20px rgba(99,63,56,.1); }
.couple-exchange-start label { display:grid; width:100%; gap:11px; margin-top:22px; color:#5d4c49; font-size:11px; text-align:center; }
.couple-exchange-start input { width:100%; height:43px; padding:0 13px; border:1px solid rgba(98,65,59,.13); border-radius:13px; outline:0; background:rgba(255,255,255,.8); color:#3f3432; font:inherit; font-size:12px; text-align:center; }
.couple-exchange-start button,.couple-exchange-board > button { min-height:38px; margin-top:14px; padding:0 16px; border:0; border-radius:12px; background:#453937; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.couple-exchange-start button:disabled { opacity:.58; cursor:wait; }
.couple-exchange-board { padding:20px 17px 22px; border:1px solid rgba(103,69,62,.1); border-radius:26px; background:rgba(255,255,255,.58); box-shadow:0 17px 42px rgba(77,49,45,.08); }
.couple-exchange-items { display:grid; grid-template-columns:1fr 52px 1fr; align-items:center; gap:8px; }
.couple-exchange-items > article { display:grid; justify-items:center; min-width:0; min-height:145px; padding:14px 10px; border-radius:18px; background:linear-gradient(155deg,#f5dedf,#efd0d1); text-align:center; }
.couple-exchange-items > article:last-child { background:linear-gradient(155deg,#f5e6d1,#edd5b4); }
.couple-exchange-items article small { color:#9a746e; font-size:8px; }.couple-exchange-items article > i,.couple-exchange-items article > img { display:grid; width:76px; height:76px; margin-top:10px; place-items:center; border-radius:16px; background:rgba(255,255,255,.68); color:#7f5d58; font:500 21px Georgia,"Songti SC",serif; font-style:normal; object-fit:cover; box-shadow:0 7px 16px rgba(94,57,50,.09); }.couple-exchange-items article b { align-self:end; max-width:100%; margin-top:11px; color:#5a4642; font-size:11px; line-height:1.4; overflow:visible; text-overflow:clip; white-space:normal; overflow-wrap:anywhere; }
.couple-exchange-image-toggle { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:9px; width:100%; margin-top:15px; padding:10px 12px; border:1px solid rgba(103,69,62,.12); border-radius:14px; background:rgba(255,255,255,.48); color:#5d4c49; text-align:left; }.couple-exchange-image-toggle input { position:absolute; opacity:0; pointer-events:none; }.couple-exchange-image-toggle > span { display:grid; gap:3px; min-width:0; }.couple-exchange-image-toggle b { font-size:10px; }.couple-exchange-image-toggle small { color:#9a8883; font-size:8px; line-height:1.4; }.couple-exchange-image-toggle > i { width:31px; height:18px; border-radius:99px; background:#d7cfcc; box-shadow:inset 0 0 0 1px rgba(80,53,48,.08); }.couple-exchange-image-toggle > i::after { display:block; width:14px; height:14px; margin:2px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(65,42,38,.18); content:""; transition:transform .2s ease; }.couple-exchange-image-toggle input:checked ~ i { background:#59433e; }.couple-exchange-image-toggle input:checked ~ i::after { transform:translateX(13px); }.couple-exchange-image-toggle.is-disabled { opacity:.72; }
.couple-exchange-items > span { display:grid; justify-items:center; gap:5px; color:#a06f67; }.couple-exchange-items > span i { font-size:22px; font-style:normal; }.couple-exchange-items > span small { font-size:7px; white-space:nowrap; }
.couple-exchange-reason { margin-top:15px; padding:13px 14px; border-left:2px solid #ae7a71; background:rgba(168,111,99,.06); }.couple-exchange-reason span,.couple-exchange-feelings small { color:#9f756e; font-size:8px; }.couple-exchange-reason p { margin-top:6px; color:#62524f; font-size:10px; line-height:1.65; }
.couple-exchange-feelings { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:11px; }.couple-exchange-feelings article { padding:13px; border-radius:15px; background:#f3e5e3; }.couple-exchange-feelings article:last-child { background:#f3e9db; }.couple-exchange-feelings p { margin-top:7px; color:#5e504d; font-size:10px; line-height:1.65; }
.couple-exchange-board blockquote { margin:17px 3px 0; color:#4e403e; font:500 13px/1.7 Georgia,"Songti SC",serif; text-align:center; }
.couple-date-activities { display:grid; gap:8px; margin-top:16px; }.couple-date-activities > button { display:grid; grid-template-columns:1fr auto; gap:5px 10px; width:100%; padding:13px; border:1px solid rgba(84,59,54,.1); border-radius:13px; background:rgba(255,255,255,.58); color:#493d3a; text-align:left; cursor:pointer; }.couple-date-activities b { font-size:11px; }.couple-date-activities small { color:#9c756e; font-size:8px; }.couple-date-activities span { grid-column:1 / -1; color:#847470; font-size:9px; line-height:1.55; }
.couple-date-live { width:min(100%,540px); margin:20px auto; padding:28px 22px; border-radius:25px; background:linear-gradient(145deg,#4b3d3c,#302a2a); color:#fff; box-shadow:0 18px 42px rgba(52,37,35,.2); }.couple-date-live > span { color:#d8aaa1; font-size:9px; letter-spacing:.12em; }.couple-date-live h2 { margin-top:12px; font:500 25px Georgia,"Songti SC",serif; }.couple-date-live > p { margin-top:8px; color:rgba(255,255,255,.7); font-size:11px; }.couple-date-live > div { display:flex; align-items:end; justify-content:space-between; margin-top:28px; }.couple-date-live strong { font-size:22px; }.couple-date-live small { color:rgba(255,255,255,.52); font-size:9px; }.couple-date-live > i { display:block; height:4px; margin-top:14px; overflow:hidden; border-radius:999px; background:rgba(255,255,255,.12); }.couple-date-live > i b { display:block; width:45%; height:100%; border-radius:inherit; background:#d7a69d; animation:couple-date-progress 3s ease-in-out infinite alternate; }.couple-date-live > button { min-height:37px; margin-top:22px; padding:0 14px; border:0; border-radius:11px; background:#f2e7e3; color:#3e3433; font:inherit; font-size:10px; }
@keyframes couple-date-progress { from { transform:translateX(-20%); } to { transform:translateX(140%); } }
.couple-date-history { width:min(100%,540px); margin:26px auto 0; }.couple-date-history h3 { font:500 17px Georgia,"Songti SC",serif; }.couple-date-history > article { margin-top:12px; padding:17px; border:1px solid rgba(82,57,52,.09); border-radius:17px; background:rgba(255,255,255,.5); }.couple-date-history article > small { color:#a08079; font-size:8px; }.couple-date-history article > b { display:block; margin-top:6px; font-size:12px; }.couple-date-history article > div { display:grid; gap:6px; margin-top:12px; }.couple-date-history article p { padding-left:10px; border-left:1px solid #b98a82; color:#6e5f5c; font-size:9px; line-height:1.55; }.couple-date-history blockquote { margin-top:12px; color:#564744; font:500 11px/1.65 Georgia,"Songti SC",serif; }
.couple-date-place-intro,.couple-date-plan { width:min(100%,540px); margin:17px auto 0; padding:22px 18px; border-top:1px solid rgba(92,65,60,.12); border-bottom:1px solid rgba(92,65,60,.12); background:rgba(255,255,255,.24); }
.couple-date-place-intro > span,.couple-date-plan header span,.couple-date-history header span { color:#a17770; font-size:8px; letter-spacing:.14em; text-transform:uppercase; }
.couple-date-place-intro h2 { margin-top:8px; color:#3f3432; font:500 24px Georgia,"Songti SC",serif; }
.couple-date-place-intro p { margin-top:11px; color:#6f605c; font-size:11px; line-height:1.8; }
.couple-date-place-intro > button { min-height:37px; margin-top:17px; padding:0 15px; border:0; border-radius:11px; background:#433837; color:#fff; font:inherit; font-size:10px; cursor:pointer; }
.couple-date-place-intro > button:disabled { opacity:.55; cursor:wait; }
.couple-date-plan { padding:20px 0 4px; border-top:0; background:transparent; }
.couple-date-plan header,.couple-date-history > header { display:flex; align-items:end; justify-content:space-between; gap:12px; }
.couple-date-plan h2 { margin-top:7px; color:#3f3432; font:500 20px Georgia,"Songti SC",serif; }
.couple-date-plan header > small,.couple-date-history > header > small { color:#a18d88; font-size:9px; }
.couple-date-plan .couple-date-activities { margin-top:15px; }
.couple-date-thought,.couple-date-archive-thought { margin-top:14px; padding:13px 14px; border-left:2px solid #b57973; border-radius:0 12px 12px 0; background:rgba(181,121,115,.08); }.couple-date-thought small,.couple-date-archive-thought b { display:block; color:#9b6e67; font-size:10px; font-weight:600; }.couple-date-thought p,.couple-date-archive-thought p { margin:6px 0 0; color:#594b48; font-size:12px; line-height:1.7; white-space:pre-wrap; }
.couple-date-history-item { margin-top:22px; padding:0 0 23px !important; border:0 !important; border-radius:0 !important; border-bottom:1px solid rgba(92,65,60,.1) !important; background:transparent !important; }
.couple-date-history-item > header { display:flex; align-items:end; justify-content:space-between; gap:12px; }
.couple-date-history-item > header span { color:#a18d88; font-size:9px; }
.couple-date-history-item > header h4 { margin-top:5px; color:#3f3432; font:500 17px Georgia,"Songti SC",serif; }
.couple-date-history-item > header small { color:#a18d88; font-size:9px; white-space:nowrap; }
.couple-date-history-route { margin-top:12px; padding-left:14px; border-left:2px solid #b57973; color:#6d5a56; font-size:10px; line-height:1.55; }
.couple-date-history-route b { font-weight:600; }
.couple-date-timeline { position:relative; display:grid; gap:17px; margin:18px 0 0 4px; }
.couple-date-timeline::before { position:absolute; top:4px; bottom:5px; left:13px; width:1px; background:rgba(166,119,112,.38); content:""; }
.couple-date-timeline-node { position:relative; display:grid; grid-template-columns:27px 1fr; gap:11px; align-items:start; }
.couple-date-timeline-node > i { z-index:1; display:grid; width:27px; height:27px; place-items:center; border:1px solid rgba(167,116,108,.42); border-radius:50%; background:#f7efeb; color:#a16f68; font:500 8px Georgia,serif; font-style:normal; }
.couple-date-timeline-node > div { padding-top:3px; }
.couple-date-timeline-node small { color:#a17770; font-size:9px; }
.couple-date-timeline-node p { margin-top:5px; padding:0 !important; border:0 !important; color:#635450 !important; font-size:10px !important; line-height:1.7 !important; }
.couple-date-history-item > footer { margin:19px 0 0 42px; padding-top:13px; border-top:1px dashed rgba(166,119,112,.3); }
.couple-date-history-item > footer span { color:#a17770; font-size:8px; letter-spacing:.1em; }
.couple-date-history-item > footer p { margin-top:6px; padding:0 !important; border:0 !important; color:#514342 !important; font:500 12px/1.7 Georgia,"Songti SC",serif !important; }
.couple-date-folder { position:relative; margin-top:24px; padding-top:9px; filter:drop-shadow(0 10px 16px rgba(77,49,45,.08)); }
.couple-date-folder > summary { position:relative; z-index:2; display:flex; align-items:center; justify-content:space-between; gap:15px; min-height:88px; padding:18px 17px 15px; border:1px solid rgba(126,88,81,.1); border-radius:10px 20px 18px 18px; background:linear-gradient(145deg,#ead6c8,#dfc0ae); color:#493b38; cursor:pointer; list-style:none; }
.couple-date-folder > summary::before { position:absolute; top:-10px; left:-1px; width:105px; height:16px; border:1px solid rgba(126,88,81,.08); border-bottom:0; border-radius:10px 13px 0 0; background:#dfc0ae; content:""; }
.couple-date-folder > summary::-webkit-details-marker { display:none; }
.couple-date-folder > summary > div { position:relative; z-index:1; min-width:0; }
.couple-date-folder > summary span { color:#8e635a; font-size:8px; letter-spacing:.1em; }
.couple-date-folder > summary h4 { margin-top:7px; font:500 17px Georgia,"Songti SC",serif; }
.couple-date-folder > summary p { margin-top:5px; overflow:hidden; color:#765f59; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.couple-date-folder > summary > i { z-index:1; display:grid; flex:0 0 27px; width:27px; height:27px; place-items:center; border:1px solid rgba(112,75,68,.2); border-radius:8px; background:rgba(255,250,245,.35); color:#8f6259; font-size:16px; font-style:normal; line-height:1; transition:transform .24s ease,background .2s ease; }
.couple-date-folder[open] > summary { border-radius:10px 20px 10px 10px; }
.couple-date-folder[open] > summary > i { background:rgba(255,250,245,.58); transform:rotate(45deg); }
.couple-date-folder-paper { position:relative; z-index:1; margin:-7px 9px 0; padding:18px 15px 20px; border:1px solid rgba(126,88,81,.11); border-top:0; border-radius:0 0 15px 15px; background:linear-gradient(180deg,#fffdf9,#f8f0e9); box-shadow:inset 0 10px 16px rgba(132,92,83,.04); }
.couple-date-folder-paper::before { position:absolute; top:7px; right:13px; left:13px; height:1px; background:repeating-linear-gradient(90deg,rgba(158,117,108,.22) 0 4px,transparent 4px 8px); content:""; }
.couple-date-folder-paper .couple-date-timeline { margin-top:12px; }
.couple-date-folder-paper > footer { margin:19px 0 0 38px; padding-top:13px; border-top:1px dashed rgba(166,119,112,.3); }
.couple-date-folder-paper > footer span { color:#a17770; font-size:8px; letter-spacing:.1em; }
.couple-date-folder-paper > footer p { margin-top:6px; color:#514342; font:500 12px/1.7 Georgia,"Songti SC",serif; }
.couple-archive-box > summary { display:grid; justify-items:center; gap:22px; padding:28px 0 18px; cursor:pointer; list-style:none; }
.couple-archive-box > summary::-webkit-details-marker { display:none; }
.couple-archive-object { position:relative; display:block; width:228px; height:118px; margin-inline:auto; border:1px solid #b6b6b3; border-radius:8px 8px 18px 18px; background:linear-gradient(155deg,#dededb,#b8b9b7); box-shadow:0 18px 30px #22222218,inset 0 1px 0 #ffffffb8; }
.couple-archive-object::before { position:absolute; z-index:4; top:-9px; left:-6px; right:-6px; height:22px; border:1px solid #c5c5c1; border-radius:7px; background:linear-gradient(#f0f0ed,#c9cac7); box-shadow:0 5px 8px #22222210; content:""; transition:transform .3s ease; }
.couple-archive-object i { position:absolute; top:4px; left:14px; right:14px; height:45px; border-radius:5px; background:#c7c7c3; transition:transform .3s ease; }
.couple-archive-object i:nth-child(2) { top:10px; left:20px; right:10px; background:#f3f3f0; }.couple-archive-object i:nth-child(3) { top:16px; left:10px; right:20px; background:#aeb0ae; }
.couple-archive-object::after { position:absolute; inset:20px 0 0; border-radius:0 0 17px 17px; background:linear-gradient(135deg,#d9d9d6,#b5b6b4); content:""; }
.couple-archive-object b { position:absolute; z-index:3; top:50px; left:89px; width:50px; padding:5px 0; border:1px solid #ffffff94; border-radius:5px; color:#4d4e4d; background:#eeeeebc7; text-align:center; font-size:18px; }
.couple-archive-box[open] .couple-archive-object::before { transform:translateY(-27px) rotate(-5deg); }.couple-archive-box[open] .couple-archive-object i { transform:translateY(-15px); }
.couple-archive-caption { display:grid; gap:7px; text-align:center; color:#404140; }.couple-archive-caption b { font-size:14px; font-weight:500; }.couple-archive-caption small,.couple-archive-inside > small { color:#858684; font-size:10px; }
.couple-archive-inside { min-width:0; padding-top:8px; }.couple-archive-inside > small { display:block; text-align:center; }
.couple-archive-files { display:flex; align-items:flex-start; gap:0; overflow-x:auto; padding:20px 0 24px; scroll-padding-inline:0; scroll-snap-type:x proximity; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; scrollbar-width:thin; scrollbar-color:#bcbdbb transparent; }
.couple-archive-files > .couple-date-folder { --folder-back:#161716; --folder-front:#303130; --folder-text:#f5f5f2; --folder-muted:#bfc0bc; --folder-lift:0px; position:relative; z-index:1; display:grid; flex:0 0 46%; align-content:end; gap:4px; width:46%; min-width:132px; min-height:116px; margin:9px -32.5% 0 0; padding:31px 12px 13px; border:0; border-radius:8px 8px 13px 13px; appearance:none; background:var(--folder-back); color:var(--folder-text); filter:drop-shadow(5px 8px 10px #22222225); isolation:isolate; text-align:left; transform:translateY(var(--folder-lift)); scroll-snap-align:start; cursor:pointer; transition:transform .18s ease,box-shadow .18s ease; }
.couple-archive-files > .couple-date-folder:nth-child(5n + 2),.couple-archive-files > .couple-date-folder:nth-child(5n + 4) { --folder-lift:4px; }
.couple-archive-files > .couple-date-folder:nth-child(5n + 3) { --folder-lift:1px; }
.couple-archive-files > .couple-date-folder:last-child { margin-right:0; }
.couple-archive-files > .couple-date-folder::before { position:absolute; z-index:-2; top:-9px; left:0; width:54%; height:25px; border-radius:7px 9px 0 0; background:var(--folder-back); content:""; }
.couple-archive-files > .couple-date-folder::after { position:absolute; z-index:-1; inset:13px 0 0; border-radius:8px 8px 13px 13px; background:linear-gradient(180deg,color-mix(in srgb,var(--folder-front),white 9%),var(--folder-front) 24%); box-shadow:inset 0 1px 0 #ffffff42; content:""; }
.couple-archive-files > .couple-date-folder:nth-child(3n + 2) { --folder-back:#d7d8d5; --folder-front:#f2f2ef; --folder-text:#292a29; --folder-muted:#797a77; }
.couple-archive-files > .couple-date-folder:nth-child(3n) { --folder-back:#7e807d; --folder-front:#aeb0ad; --folder-text:#252625; --folder-muted:#555754; }
.couple-archive-files > .couple-date-folder.is-selected { z-index:30; transform:translateY(-7px); box-shadow:0 11px 22px #2222222b,0 0 0 2px #ffffff,0 0 0 3px #555754; }
.couple-archive-files .couple-date-folder > span { position:absolute; z-index:2; top:17px; right:6px; color:var(--folder-muted); font-size:7px; }
.couple-archive-files .couple-date-folder > b { z-index:2; display:-webkit-box; overflow:hidden; color:var(--folder-text); font-size:9px; font-weight:600; line-height:1.25; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.couple-archive-files .couple-date-folder > small { z-index:2; overflow:hidden; color:var(--folder-muted); font-size:6px; text-overflow:ellipsis; white-space:nowrap; }
.couple-archive-detail { min-height:58px; margin:2px 0 12px; padding:16px; border:1px solid #5557541f; border-radius:16px; background:#f6f6f3; color:#3d3e3c; box-shadow:0 10px 24px #2222220a; }
.couple-archive-detail > p { color:#898a87; font-size:10px; text-align:center; }
.couple-archive-detail > header span,.couple-archive-detail > footer span { color:#747572; font-size:8px; letter-spacing:.1em; }.couple-archive-detail > header h4 { margin-top:5px; font:500 18px Georgia,"Songti SC",serif; }.couple-archive-detail > header p { margin-top:5px; color:#6d6e6b; font-size:9px; }
.couple-archive-detail .couple-date-timeline { margin-top:18px; }.couple-archive-detail .couple-date-timeline-node > i { background:#ececea; border-color:#a8aaa7; color:#666864; }.couple-archive-detail .couple-date-timeline::before { background:#c3c5c1; }
.couple-archive-detail > footer { margin:18px 0 0 38px; padding-top:12px; border-top:1px dashed #93959066; }.couple-archive-detail > footer p { margin-top:6px; color:#3f413f; font:500 12px/1.7 Georgia,"Songti SC",serif; }
.couple-wish-archive-box { width:min(100%,540px); margin:4px auto 24px; }
.couple-wish-archive-box .couple-archive-object { border-color:#cba9a0; background:linear-gradient(155deg,#f1dcd5,#d6b8ae); }
.couple-wish-archive-box .couple-archive-object::before { border-color:#dec2b8; background:linear-gradient(#fff4ed,#dfc5bb); }
.couple-wish-archive-box .couple-archive-object i:nth-child(1) { background:#efd8cd; }
.couple-wish-archive-box .couple-archive-object i:nth-child(2) { background:#fff8ef; }
.couple-wish-archive-box .couple-archive-object i:nth-child(3) { background:#d9b7ae; }
.couple-wish-archive-box .couple-archive-object::after { background:linear-gradient(135deg,#ecd2c8,#cdaaa0); }
.couple-wish-archive-box .couple-archive-object b { color:#8d5e58; background:#fff7f0d9; }
.couple-wish-archive-files { display:flex; gap:12px; overflow-x:auto; padding:20px 8px 24px; scroll-snap-type:x proximity; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; scrollbar-width:thin; scrollbar-color:#d1aaa0 transparent; }
.couple-wish-archive-paper { position:relative; display:grid; flex:0 0 min(42%,160px); align-content:space-between; min-height:154px; padding:22px 15px 15px; border:1px solid #c99f932e; border-radius:4px 4px 13px 13px; background:linear-gradient(160deg,#fffaf6,#edd5cc); color:#59413c; box-shadow:5px 9px 18px #613b341a; text-align:left; scroll-snap-align:start; cursor:pointer; }
.couple-wish-archive-paper::before { position:absolute; top:10px; left:50%; width:8px; height:8px; border:2px solid #b88a7c; border-radius:50%; background:#fff8f1; transform:translateX(-50%); content:""; }
.couple-wish-archive-paper.wish-tone-1 { background:linear-gradient(160deg,#fffdf6,#eadcbe); }.couple-wish-archive-paper.wish-tone-2 { background:linear-gradient(160deg,#faf8f5,#dcd7d1); }.couple-wish-archive-paper.wish-tone-3 { background:linear-gradient(160deg,#fff8f5,#e8c8c1); }
.couple-wish-archive-paper small { margin-top:7px; color:#9d7a73; font-size:8px; }.couple-wish-archive-paper b { display:-webkit-box; overflow:hidden; font:500 16px/1.35 Georgia,"Songti SC",serif; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow-wrap:anywhere; }.couple-wish-archive-paper span { color:#a2766e; font-size:8px; }
@media not all { .couple-archive-caption { color:#ddddda; }.couple-archive-detail { border-color:#ffffff14; background:#292a29; color:#eeeeea; }.couple-archive-detail > header p,.couple-archive-detail > p { color:#a9aaa6; }.couple-archive-detail > footer p { color:#e1e1dd; } }
@media not all { .couple-wish-archive-box .couple-archive-caption { color:#eee1dd; }.couple-wish-archive-box .couple-archive-object { border-color:#765955; background:linear-gradient(155deg,#82635f,#5c4949); }.couple-wish-archive-box .couple-archive-object::after { background:linear-gradient(135deg,#795b57,#544343); }.couple-wish-archive-paper,.couple-wish-archive-paper.wish-tone-1,.couple-wish-archive-paper.wish-tone-2,.couple-wish-archive-paper.wish-tone-3 { border-color:#ffffff1a; background:linear-gradient(160deg,#735956,#493c3d); color:#f1e5e1; }.couple-wish-archive-paper small,.couple-wish-archive-paper span { color:#d4b9b1; } }
@media(prefers-reduced-motion:reduce) { .couple-archive-object::before,.couple-archive-object i { transition:none; } }
.couple-date-live ~ .couple-compact-actions,.couple-date-live ~ .couple-date-options,.couple-date-live ~ .couple-date-place-intro,.couple-date-live ~ .couple-date-plan { display:none; }
.couple-review { margin-top:19px; padding:24px 0; border-top:1px solid rgba(92,65,60,.1); }.couple-review > div { display:grid; gap:9px; margin-top:18px; }.couple-review article { display:grid; grid-template-columns:8px 1fr; gap:9px; align-items:start; }.couple-review article i { width:5px; height:5px; margin-top:6px; border-radius:50%; background:#b57973; }.couple-review article p { color:#685b58; font-size:10px; line-height:1.6; }.couple-review > button { margin-top:20px; }
.couple-role-thought { padding:27px 5px 23px; }
.couple-role-thought > p { max-width:460px; margin-top:13px; color:#514342; font:500 15px/1.9 Georgia,"Songti SC",serif; }
.couple-role-thought > small { display:block; margin-top:11px; color:#a28e89; font-size:8px; }
.couple-role-thought > button { margin-top:18px; }
.couple-thought-reason { max-width:460px; margin-top:14px; padding:11px 13px; border-left:2px solid #bd8c82; background:rgba(255,255,255,.42); color:#806b65; font-size:10px; line-height:1.7; overflow-wrap:anywhere; }
.couple-thought-reason b { display:block; color:#9c6f66; font-size:9px; font-weight:600; }
.couple-thought-reason p { margin-top:6px; color:inherit; font:inherit; white-space:pre-wrap; }
.couple-thought-reason span { display:block; margin-top:9px; color:#654c47; font-size:11px; }
.couple-role-thought > .couple-thought-keep { display:block; margin-top:13px; padding:8px 13px; border:1px solid rgba(160,104,92,.26); border-radius:10px; background:rgba(255,255,255,.55); color:#855e57; font:inherit; font-size:10px; cursor:pointer; }
.couple-role-thought > .couple-thought-keep:disabled { opacity:.65; cursor:default; }
@media not all { .couple-thought-reason { background:rgba(255,255,255,.06); color:#d1bab4; }.couple-role-thought > .couple-thought-keep { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.07); color:#e8d5cf; } }
@media not all { .couple-thought-reason span { color:#ead1ca; } }
.couple-memory-ribbon { margin-top:18px; padding-top:18px; border-top:1px solid rgba(92,65,60,.1); }
.couple-memory-ribbon > header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.couple-memory-ribbon > header h3 { font:500 17px Georgia,"Songti SC",serif; }
.couple-memory-ribbon > header small { display:block; margin-top:5px; color:#a08f8b; font-size:9px; }
.couple-memory-ribbon > header button { border:0; background:none; color:#926e68; font:inherit; font-size:10px; cursor:pointer; }
.couple-memory-timeline { position:relative; display:grid; gap:15px; margin-top:25px; padding:4px 0 14px; }
.couple-memory-timeline::before { position:absolute; top:0; bottom:0; left:50%; width:1px; background:rgba(165,117,106,.35); content:""; transform:translateX(-50%); }
.couple-timeline-entry { display:grid; grid-template-columns:minmax(0,1fr) 82px minmax(0,1fr); align-items:start; position:relative; }
.couple-timeline-card { display:grid; align-content:space-between; justify-items:start; gap:5px; width:100%; aspect-ratio:1; min-width:0; padding:12px; border:1px solid rgba(144,101,92,.14); border-radius:18px; background:rgba(255,255,255,.65); color:#66524d; box-shadow:0 6px 18px rgba(85,54,47,.06); overflow:hidden; overflow-wrap:anywhere; text-align:left; cursor:pointer; }
.couple-timeline-entry.is-user .couple-timeline-card { grid-column:1; background:#f8f1ed; }
.couple-timeline-entry.is-role .couple-timeline-card { grid-column:3; background:#f3e9e5; }
.couple-timeline-entry.is-role .couple-timeline-card { aspect-ratio:1.55; }
.couple-timeline-card > small { display:block; color:#a17870; font-size:8px; }
.couple-timeline-card > i,.couple-timeline-card-title > i { color:#a77268; font:normal 19px Georgia,"Songti SC",serif; }
.couple-timeline-card > b,.couple-timeline-card-title > b { display:-webkit-box; overflow:hidden; color:#523e3a; font:500 11px/1.45 Georgia,"Songti SC",serif; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.couple-timeline-card-title { display:flex; align-items:center; gap:6px; min-width:0; }
.couple-timeline-card-title > b { -webkit-line-clamp:1; }
.couple-timeline-card > span { color:#a2776e; font-size:8px; }
.couple-timeline-card:focus-visible { outline:2px solid #b68379; outline-offset:3px; }
/* Photographic white paper assets retain real, irregular crumple shadows. */
.couple-paper-overlay { position:fixed; z-index:90; inset:0; display:grid; place-items:center; padding:24px; isolation:isolate; perspective:1000px; }
.couple-paper-backdrop { position:absolute; inset:0; width:100%; border:0; background:rgba(24,26,29,.58); opacity:0; cursor:pointer; transition:opacity .28s ease; }
.couple-paper-overlay.is-open .couple-paper-backdrop { opacity:1; }
.couple-paper-ball,.couple-paper-sheet { grid-area:1 / 1; }
.couple-paper-ball { position:relative; z-index:3; width:148px; height:148px; background:transparent url("assets/ui/couple-paper/white-paper-ball.png") center / contain no-repeat; background-color:transparent; background-image:image-set(url("assets/ui/couple-paper/white-paper-ball.webp") type("image/webp"),url("assets/ui/couple-paper/white-paper-ball.png") type("image/png")); filter:drop-shadow(0 18px 16px #00000038); opacity:0; pointer-events:none; }
.couple-paper-sheet { position:relative; z-index:2; box-sizing:border-box; width:min(100%,430px); min-height:min(430px,65vh); max-height:78vh; overflow-y:auto; overscroll-behavior:contain; padding:48px 32px 40px; clip-path:polygon(.6% 1.2%,15% .3%,32% .8%,50% 0,70% .7%,86% .2%,99% 1%,99.5% 20%,99% 43%,100% 64%,99.3% 84%,99.8% 99%,82% 99.5%,63% 99%,43% 100%,25% 99.3%,.5% 99.8%,0 78%,.7% 53%,0 30%); background:#fff url("assets/ui/couple-paper/white-crumpled-sheet.png") center / 100% 100% no-repeat; background-image:image-set(url("assets/ui/couple-paper/white-crumpled-sheet.webp") type("image/webp"),url("assets/ui/couple-paper/white-crumpled-sheet.png") type("image/png")); color:#353535; box-shadow:0 24px 56px #00000040; opacity:0; pointer-events:none; transform-origin:center; }
.couple-paper-overlay.is-open .couple-paper-ball { opacity:0; }
.couple-paper-overlay.is-open .couple-paper-sheet { opacity:1; pointer-events:auto; }
.couple-paper-sheet > * { position:relative; z-index:1; }
.couple-paper-overlay.is-open .couple-paper-sheet > * { animation:couple-paper-ink .3s ease both; }
.couple-paper-close { position:absolute; z-index:2; top:15px; right:15px; display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:50%; background:#ffffffb3; color:#666; font:normal 23px/1 Georgia,serif; cursor:pointer; }
.couple-paper-close:focus-visible { outline:2px solid #777; outline-offset:2px; }
.couple-paper-sheet > small { display:block; padding-right:20px; color:#727272; font-size:9px; line-height:1.6; letter-spacing:.04em; }
.couple-paper-sheet > h2 { margin:16px 0 24px; color:#303030; font:500 22px/1.4 Georgia,"Songti SC",serif; }
.couple-paper-words { margin:0; color:#333; font:500 15px/2.1 Georgia,"Songti SC",serif; white-space:pre-wrap; overflow-wrap:anywhere; }
.couple-paper-sheet > img { display:block; max-width:100%; max-height:230px; margin:0 0 15px; object-fit:contain; }
.couple-paper-sheet .couple-thought-reason { margin-top:25px; padding:16px 0 0; border:0; border-top:1px solid #55555530; background:transparent; color:#575757; }
.couple-paper-sheet .couple-thought-reason b { color:#666; }.couple-paper-sheet .couple-thought-reason span { color:#424242; }
.couple-paper-overlay.is-closing .couple-paper-backdrop { opacity:0; }
.couple-paper-overlay.is-open.is-closing .couple-paper-sheet { animation:couple-paper-fold-away .28s ease-in both; pointer-events:none; }
.couple-paper-overlay.is-closing .couple-paper-ball { animation:none; opacity:0; }
/* The textured mesh does the unfolding; the readable sheet takes over at identical bounds. */
.couple-paper-unfolding { position:absolute; z-index:2; inset:0; width:100%; height:100%; pointer-events:none; filter:drop-shadow(0 14px 20px #00000024); transition:opacity .16s ease; }
.couple-paper-unfolding.is-finished { opacity:0; }
.couple-paper-overlay.is-unfolding .couple-paper-sheet { opacity:0; pointer-events:none; }
.couple-paper-overlay.is-unfolding .couple-paper-sheet > * { animation:none; opacity:0; }
.couple-paper-overlay.is-unfolding .couple-paper-ball { opacity:1; }
.couple-paper-overlay.is-closing .couple-paper-unfolding { opacity:0; }
@keyframes couple-paper-ink { from { opacity:0; } to { opacity:1; } }
@keyframes couple-paper-fold-away { from { opacity:1; transform:scale(1); } to { opacity:0; transform:scale(.55,.35) rotate(8deg); } }
@media(prefers-reduced-motion:reduce) { .couple-paper-overlay.is-open .couple-paper-ball { animation:none; }.couple-paper-overlay.is-open .couple-paper-sheet,.couple-paper-overlay.is-open .couple-paper-sheet > * { animation:none; opacity:1; transform:none; }.couple-paper-overlay.is-open.is-closing .couple-paper-sheet { animation:none; opacity:0; } }
.couple-timeline-stamp { position:relative; z-index:1; display:grid; grid-column:2; grid-row:1; justify-items:center; gap:5px; padding-top:10px; color:#9b7770; text-align:center; }
.couple-timeline-stamp > i { width:10px; height:10px; border:2px solid #b6867b; border-radius:50%; background:#fff8f4; box-shadow:0 0 0 3px #f5eeea; }
.couple-timeline-stamp time { display:grid; gap:2px; font-size:8px; line-height:1.25; }
@media not all { .couple-memory-timeline::before { background:rgba(224,176,163,.3); }.couple-timeline-entry.is-user .couple-timeline-card,.couple-timeline-entry.is-role .couple-timeline-card { border-color:rgba(255,255,255,.1); background:#453838; color:#ebdcd7; }.couple-timeline-card > b { color:#ebdcd7; }.couple-timeline-stamp > i { background:#4b3b3a; box-shadow:0 0 0 3px #302829; } }
@media (max-width:380px) { .couple-widget-row { grid-template-columns:minmax(0,1fr) 92px minmax(0,1fr); }.couple-person { gap:7px; }.couple-person figure { flex-basis:56px; width:56px; height:56px; }.couple-person b { max-width:70px; font-size:12px; }.couple-heartline { width:92px; }.couple-heartline svg { width:88px; }.couple-heartline i { font-size:23px; } }
@media (prefers-reduced-motion:reduce) { .couple-heartline,.couple-heartline svg path,.couple-hanging-wish,.couple-bless-spark { animation:none; } }
@media not all { .couple-person b,.couple-heartline { color:#eee; }.couple-day-note h2,.couple-page-intro h2,.couple-review h2 { color:#f1e8e5; }.couple-day-note > p,.couple-page-intro > p,.couple-review > p { color:#b9aaa6; }.couple-day-note blockquote { color:#ebdeda; }.couple-day-note { border-color:rgba(255,255,255,.1); }.couple-day-note button + button { border-color:rgba(255,255,255,.14); color:#d2c1bc; }.couple-day-stream,.couple-date-dialogue,.couple-secret-list > button { border-color:rgba(255,255,255,.09); background:rgba(255,255,255,.07); color:#eee; }.couple-day-stream > article { background:rgba(255,255,255,.09); }.couple-day-stream > article.is-user { background:#eee3df; color:#2f2827; }.couple-chapter-compose textarea { border-color:rgba(255,255,255,.12); background:rgba(0,0,0,.16); color:#eee; }.couple-date-dialogue p,.couple-secret-list p,.couple-review article p,.couple-memory-ribbon p { color:#c0b2ae; } }
@media not all { .couple-wish-rope { border-color:rgba(221,169,153,.35); }.couple-wish-rope > i { border-color:rgba(225,165,149,.45); background:#312829; }.couple-hanging-wish,.couple-hanging-wish.wish-tone-1,.couple-hanging-wish.wish-tone-2,.couple-hanging-wish.wish-tone-3 { border-color:rgba(255,255,255,.1); background:linear-gradient(165deg,rgba(85,61,59,.95),rgba(48,40,41,.96)); color:#f0e6e3; }.couple-hanging-wish > p { color:#c9b8b3; }.couple-hanging-wish > span { background:#392f30; }.couple-record-sheet.is-wish-record > section { background:linear-gradient(160deg,rgba(55,46,47,.98),rgba(39,34,35,.98)); } }
@media not all { .couple-date-options > button,.couple-date-detail { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); color:#eee; }.couple-date-options > button.is-selected { border-color:#c89b92; background:rgba(255,255,255,.12); }.couple-date-options span,.couple-date-detail > p { color:#c3b4b0; }.couple-date-detail input { border-color:rgba(255,255,255,.12); background:rgba(0,0,0,.18); color:#eee; } }
@media not all { .couple-date-place-intro,.couple-date-plan { border-color:rgba(255,255,255,.12); background:rgba(255,255,255,.04); }.couple-date-place-intro h2,.couple-date-plan h2,.couple-date-history-item > header h4 { color:#f1e8e5; }.couple-date-place-intro p,.couple-date-timeline-node p { color:#c3b4b0 !important; }.couple-date-history-route { color:#d0bfba; }.couple-date-timeline-node > i { border-color:rgba(225,165,149,.45); background:#312829; }.couple-date-history-item > footer p { color:#dfd1cd !important; } }
@media not all { .couple-date-folder > summary,.couple-date-folder > summary::before { border-color:rgba(255,255,255,.08); background:#6a504a; color:#f1e8e5; }.couple-date-folder > summary p { color:#d0bbb5; }.couple-date-folder > summary span { color:#deb0a4; }.couple-date-folder > summary > i { border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.07); color:#ecc1b7; }.couple-date-folder-paper { border-color:rgba(255,255,255,.08); background:linear-gradient(180deg,#3b3232,#302a2b); }.couple-date-folder-paper > footer p { color:#dfd1cd; } }
@media not all { .couple-exchange-start,.couple-exchange-board { border-color:rgba(255,255,255,.1); background:linear-gradient(145deg,rgba(83,62,60,.75),rgba(42,36,37,.88)); }.couple-exchange-start label { color:#e5d8d4; }.couple-exchange-start input { border-color:rgba(255,255,255,.12); background:rgba(0,0,0,.18); color:#eee; }.couple-exchange-items > article { background:linear-gradient(155deg,#684b4d,#4c3d3f); }.couple-exchange-items > article:last-child { background:linear-gradient(155deg,#675643,#493f35); }.couple-exchange-reason,.couple-exchange-feelings article,.couple-exchange-feelings article:last-child { background:rgba(255,255,255,.06); }.couple-exchange-reason p,.couple-exchange-feelings p,.couple-exchange-board blockquote { color:#dfd1cd; } }

/* 聊天详情页：胶囊输入框 + 横向滑动的毛玻璃快捷工具。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap {
  overflow:visible !important;
  padding:18px 14px max(12px,env(safe-area-inset-bottom)) !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap {
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose {
  display:flex !important;
  position:relative;
  align-items:center;
  gap:9px !important;
  transform:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus {
  order:1;
  display:grid;
  place-items:center;
  flex:0 0 42px !important;
  width:42px !important;
  height:42px !important;
  min-height:42px !important;
  border:1px solid rgba(255,255,255,.82) !important;
  border-radius:50% !important;
  background:radial-gradient(circle at 28% 18%,rgba(255,255,255,.92),rgba(255,255,255,.34) 42%,rgba(211,220,232,.28) 100%) !important;
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.92),inset -1px -2px 4px rgba(116,132,153,.12),0 5px 14px rgba(40,49,62,.12) !important;
  -webkit-backdrop-filter:blur(24px) saturate(190%) contrast(105%);
  backdrop-filter:blur(24px) saturate(190%) contrast(105%);
}
.chat-app.is-chatting:not(.is-menu-open) .chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus .chat-action-icon {
  margin:0 !important;
  transform:translateY(-1px);
}
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus .chat-action-icon {
  display:none;
}
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus::before {
  content:"↻";
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  color:#7c838d;
  font-size:22px;
  font-weight:300;
  line-height:1;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > input {
  order:2;
  height:42px !important;
  padding:0 48px 0 16px !important;
  border:1px solid rgba(255,255,255,.84) !important;
  border-radius:23px !important;
  background:linear-gradient(135deg,rgba(255,255,255,.7),rgba(255,255,255,.35) 52%,rgba(220,229,239,.28)) !important;
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.92),inset -1px -2px 5px rgba(119,135,155,.1),0 5px 16px rgba(40,49,62,.1) !important;
  -webkit-backdrop-filter:blur(26px) saturate(190%) contrast(105%) !important;
  backdrop-filter:blur(26px) saturate(190%) contrast(105%) !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > input::placeholder {
  color:transparent !important;
  -webkit-text-fill-color:transparent !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji {
  order:3;
  z-index:2;
  display:grid !important;
  place-items:center;
  align-self:center;
  flex:0 0 38px !important;
  width:38px !important;
  height:38px !important;
  min-height:38px !important;
  padding:0 !important;
  margin-left:-56px;
  border:0 !important;
  border-radius:50% !important;
  background:transparent !important;
  box-shadow:none !important;
  transform:translateY(2px);
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-send { order:4; }
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply { order:5; }
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > :is(.chat-send,.chat-reply) {
  display:none !important;
  place-items:center;
  flex:0 0 42px !important;
  width:42px !important;
  min-width:42px !important;
  height:42px !important;
  min-height:42px !important;
  padding:0 !important;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.82) !important;
  border-radius:50% !important;
  background:radial-gradient(circle at 28% 18%,rgba(255,255,255,.92),rgba(255,255,255,.34) 43%,rgba(211,220,232,.28) 100%) !important;
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.92),inset -1px -2px 4px rgba(116,132,153,.12),0 5px 14px rgba(40,49,62,.12) !important;
  -webkit-backdrop-filter:blur(24px) saturate(190%) contrast(105%);
  backdrop-filter:blur(24px) saturate(190%) contrast(105%);
  color:transparent !important;
  font-size:0 !important;
  line-height:0 !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-send {
  margin-left:9px !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap:is(.has-input-focus,.is-chat-action-press) .chat-compose > :is(.chat-send,.chat-reply) {
  display:grid !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > :is(.chat-send,.chat-reply) .chat-action-icon {
  display:none;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-send::before {
  content:"↑";
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  color:#8d949d;
  font-size:23px;
  font-weight:400;
  line-height:1;
  transform:translateY(3px);
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply::before {
  content:"♡";
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  color:#8d949d;
  font-family:Arial,sans-serif;
  font-size:25px;
  font-weight:400;
  line-height:1;
  transform:translateY(3px);
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > :is(.chat-send,.chat-reply)::after {
  content:none !important;
  display:none !important;
}

.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools {
  position:absolute !important;
  z-index:18;
  right:12px !important;
  bottom:calc(100% - 36px) !important;
  left:12px !important;
  display:flex !important;
  grid-template-columns:none !important;
  align-items:center;
  width:auto !important;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  gap:8px !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  padding:8px 12px !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  opacity:1;
  transform:none !important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  scrollbar-width:none;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}

/* 全局悬浮工具 */
.ideal-floating-assist { --assist-size:60px; --assist-y:56vh; --assist-idle-opacity:.18; position:fixed; z-index:99990; inset:0; pointer-events:none; font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif; }
.ideal-floating-assist[hidden] { display:none !important; }
.ideal-assist-orb { position:absolute; top:var(--assist-y); left:var(--assist-x); display:grid; place-items:center; width:var(--assist-size); height:var(--assist-size); padding:0; border:0; border-radius:50%; outline:0; background:#202024; box-shadow:0 7px 18px rgba(0,0,0,.2); opacity:var(--assist-idle-opacity); pointer-events:auto; touch-action:none; transition:opacity .25s ease,transform .2s ease; }
.ideal-floating-assist.is-active .ideal-assist-orb { transition:opacity .25s ease,transform .2s ease; }
.ideal-floating-assist.is-snapping .ideal-assist-orb { transition:opacity .25s ease,transform .2s ease,left .28s cubic-bezier(.2,.75,.25,1),top .28s cubic-bezier(.2,.75,.25,1); }
.ideal-floating-assist[data-side="right"] .ideal-assist-orb { right:7px; }.ideal-floating-assist[data-side="left"] .ideal-assist-orb { left:7px; }
.ideal-floating-assist[data-edge="top"] .ideal-assist-orb { top:7px; right:auto; left:var(--assist-x); }
.ideal-floating-assist[data-edge="bottom"] .ideal-assist-orb { top:auto; right:auto; bottom:7px; left:var(--assist-x); }
.ideal-floating-assist.is-active[data-edge="top"] .ideal-assist-orb,.ideal-floating-assist.is-active[data-edge="bottom"] .ideal-assist-orb { top:var(--assist-y); bottom:auto; }
.ideal-assist-orb:hover,.ideal-floating-assist.is-open .ideal-assist-orb,.ideal-floating-assist.is-active .ideal-assist-orb { opacity:.96; transform:scale(1.04); }
.ideal-assist-orb-inner { position:relative; display:grid; place-items:center; width:70%; height:70%; border-radius:50%; background:#5b5b60; box-shadow:0 0 0 max(2px,calc(var(--assist-size) * .045)) #414146; }
.ideal-assist-orb-inner::after { display:block; width:57%; height:57%; border-radius:50%; background:#f4f4f4; box-shadow:0 0 0 max(2px,calc(var(--assist-size) * .055)) #a4a4a8; content:""; }
.ideal-assist-orb > img { display:none; width:100%; height:100%; border-radius:50%; object-fit:cover; }
.ideal-floating-assist.has-custom-orb .ideal-assist-orb-inner { display:none; }
.ideal-floating-assist.has-custom-orb .ideal-assist-orb > img { display:block; }
.ideal-assist-orb > i { position:absolute; top:-2px; right:-2px; display:none; place-items:center; min-width:17px; height:17px; padding:0 4px; border:2px solid #fff; border-radius:10px; color:#fff; font-size:9px; font-style:normal; }
.ideal-assist-orb > i.is-error,.ideal-assist-orb > i.is-api { display:grid; }.ideal-assist-orb > i.is-error { background:#d95757; }.ideal-assist-orb > i.is-api { background:#6976d9; animation:ideal-assist-pulse 1.2s ease-in-out infinite; }
@keyframes ideal-assist-pulse { 50% { transform:scale(1.13); } }
.ideal-assist-panel { position:absolute; top:clamp(12px,var(--assist-y),calc(100vh - 370px)); box-sizing:border-box; width:min(300px,calc(100vw - 78px)); max-height:min(360px,calc(100vh - 28px)); overflow:auto; border:1px solid rgba(255,255,255,.65); border-radius:24px; background:rgba(245,245,244,.88); color:#252525; box-shadow:0 18px 54px rgba(0,0,0,.22),inset 0 1px rgba(255,255,255,.75); pointer-events:auto; transform:translateY(-8px) scale(.96); transform-origin:right center; opacity:0; visibility:hidden; transition:opacity .18s ease,transform .18s ease,visibility .18s; -webkit-backdrop-filter:blur(28px) saturate(155%); backdrop-filter:blur(28px) saturate(155%); }
.ideal-floating-assist[data-side="right"] .ideal-assist-panel { right:calc(100vw - var(--assist-x) + 15px); width:min(300px,calc(var(--assist-x) - 23px)); }.ideal-floating-assist[data-side="left"] .ideal-assist-panel { left:calc(var(--assist-x) + var(--assist-size) + 15px); width:min(300px,calc(100vw - var(--assist-x) - var(--assist-size) - 23px)); transform-origin:left center; }
.ideal-assist-panel[aria-hidden="false"] { opacity:1; visibility:visible; transform:translateY(-8px) scale(1); }
.ideal-assist-panel header { position:sticky; z-index:2; top:0; display:flex; align-items:center; justify-content:space-between; min-height:44px; padding:0 13px; border-bottom:1px solid rgba(0,0,0,.07); background:rgba(245,245,244,.74); -webkit-backdrop-filter:blur(15px); backdrop-filter:blur(15px); }
.ideal-assist-panel header b { font-size:12px; }.ideal-assist-panel header button { min-width:27px; height:27px; padding:0 7px; border:0; border-radius:14px; background:rgba(0,0,0,.06); color:#555; font:inherit; font-size:11px; }
.ideal-assist-apps { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px 7px; padding:15px 12px 12px; }
.ideal-assist-app { display:grid; justify-items:center; gap:5px; min-width:0; padding:0; border:0; background:transparent; color:#444; font:inherit; font-size:9px; }
.ideal-assist-app img { width:40px; height:40px; border-radius:12px; object-fit:cover; box-shadow:0 4px 10px rgba(0,0,0,.1); }.ideal-assist-app span { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ideal-assist-tools { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:0 12px 13px; }.ideal-assist-tools button { display:grid; grid-template-columns:26px 1fr; align-items:center; gap:0 8px; min-width:0; min-height:49px; padding:7px 9px; border:1px solid rgba(0,0,0,.07); border-radius:14px; background:rgba(255,255,255,.62); color:#333; font:inherit; text-align:left; }.ideal-assist-tools i { grid-row:1/3; display:grid; place-items:center; width:26px; height:26px; border-radius:50%; color:#fff; font-style:normal; }.ideal-assist-tools i.is-error { background:#d96767; }.ideal-assist-tools i.is-api { background:#737dcc; }.ideal-assist-tools span { font-size:10px; }.ideal-assist-tools b { color:#999; font-size:8px; font-weight:500; }
.ideal-assist-list { padding:10px; }.ideal-assist-list details,.ideal-assist-list article { margin-bottom:7px; border:1px solid rgba(0,0,0,.07); border-radius:13px; background:rgba(255,255,255,.58); }.ideal-assist-list summary,.ideal-assist-list article { display:flex; align-items:center; gap:8px; min-height:42px; padding:7px 9px; list-style:none; }.ideal-assist-list summary::-webkit-details-marker { display:none; }.ideal-assist-list summary > i { display:grid; flex:0 0 22px; place-items:center; width:22px; height:22px; border-radius:50%; background:#d96767; color:#fff; font-size:10px; font-style:normal; }.ideal-assist-list span { display:grid; flex:1; min-width:0; gap:3px; }.ideal-assist-list span b { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.ideal-assist-list span small { overflow:hidden; color:#999; font-size:8px; text-overflow:ellipsis; white-space:nowrap; }.ideal-assist-list details p,.ideal-assist-list details code { display:block; margin:0 9px 9px; color:#555; font-size:9px; line-height:1.55; overflow-wrap:anywhere; }.ideal-assist-list details code { max-height:75px; overflow:auto; padding:7px; border-radius:8px; background:rgba(0,0,0,.05); font-family:ui-monospace,monospace; font-size:7px; }.ideal-assist-list article > i { width:8px; height:8px; border-radius:50%; background:#888; }.ideal-assist-list article > i.is-ok { background:#61a777; }.ideal-assist-list article > i.is-bad { background:#d96767; }.ideal-assist-list article time { flex:0 0 auto; color:#777; font-size:8px; white-space:nowrap; }.ideal-assist-empty { padding:35px 10px; color:#777; font-size:11px; line-height:1.7; text-align:center; }.ideal-assist-empty small { color:#aaa; }
.ideal-assist-list article .ideal-assist-call-meta { overflow:visible; line-height:1.55; text-overflow:clip; white-space:normal; overflow-wrap:anywhere; }
.ideal-assist-copy-error { display:block; margin:0 9px 9px; padding:5px 10px; border:1px solid rgba(0,0,0,.09); border-radius:8px; background:rgba(255,255,255,.7); color:#555; font:inherit; font-size:9px; cursor:pointer; }
@media not all { .ideal-assist-copy-error { border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.1); color:#eee; } }
.ideal-assist-api-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; margin:12px 10px 0; overflow:hidden; border-radius:13px; background:rgba(0,0,0,.07); }.ideal-assist-api-summary span { display:grid; justify-items:center; gap:3px; padding:10px 5px; background:rgba(255,255,255,.7); }.ideal-assist-api-summary b { font-size:17px; }.ideal-assist-api-summary small { color:#888; font-size:8px; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-panel:has(.ideal-assist-apps) { display:flex; align-items:center; gap:7px; width:auto; max-width:calc(100vw - 72px); min-height:66px; padding:9px 10px; overflow-x:auto; overflow-y:hidden; border-radius:34px; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-panel:has(.ideal-assist-apps) header { display:none; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-apps { display:flex; flex:0 0 auto; gap:6px; padding:0; overflow:visible; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-app { flex:0 0 46px; gap:3px; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-app img { width:36px; height:36px; border-radius:11px; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-app span { font-size:7px; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools { display:flex; flex:0 0 auto; gap:6px; padding:0 0 0 7px; border-left:1px solid rgba(0,0,0,.09); }.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools button { display:grid; place-items:center; width:42px; min-width:42px; height:42px; min-height:42px; padding:0; border-radius:50%; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools i { grid-row:auto; width:28px; height:28px; }.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools span,.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools b { display:none; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-panel:has(.ideal-assist-apps) { width:78px; }.ideal-floating-assist[data-mode="rail"] .ideal-assist-apps { display:grid; grid-template-columns:1fr; gap:12px; padding:12px 4px 10px; overflow:visible; }.ideal-floating-assist[data-mode="rail"] .ideal-assist-app { width:100%; }.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools { grid-template-columns:1fr; gap:8px; padding:0 4px 10px; }.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools button { grid-template-columns:1fr; place-items:center; justify-self:center; width:64px; height:64px; min-height:64px; aspect-ratio:1; box-sizing:border-box; padding:0; border-radius:16px; }.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools i { width:22px;height:22px; }.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools span,.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools b { display:none; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-panel header { min-height:56px; padding:0 6px; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-panel:has(.ideal-assist-apps) header { justify-content:center; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-panel header b { display:grid; gap:1px; line-height:1.05; text-align:center; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-panel header b span { display:block; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-panel:has(.ideal-assist-apps) header [data-assist-close] { display:none; }
.settings-floating-controls { display:grid; gap:10px; margin-top:10px; }.settings-floating-controls label { display:grid; gap:7px; color:#555; font-size:10px; }.settings-floating-mode > span { display:flex; justify-content:space-between; }.settings-floating-controls select,.settings-floating-number input { box-sizing:border-box; height:38px; padding:0 10px; border:1px solid rgba(0,0,0,.1); border-radius:10px; background:rgba(255,255,255,.65); color:#333; font:inherit; font-size:11px; }.settings-floating-number-row { display:grid; grid-template-columns:1fr 1fr; gap:9px; }.settings-floating-number { position:relative; display:block; }.settings-floating-number input { width:100%; padding-right:30px; }.settings-floating-number i { position:absolute; top:50%; right:10px; color:#999; font-size:10px; font-style:normal; transform:translateY(-50%); pointer-events:none; }.settings-floating-apps { margin-top:16px; }.settings-floating-apps > b { font-size:11px; }.settings-floating-apps > small { margin-left:7px; color:#999; font-size:9px; }.settings-floating-apps > div { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin-top:9px; }.settings-floating-apps label { box-sizing:border-box; display:grid; justify-items:center; align-content:center; gap:5px; width:100%; aspect-ratio:1; padding:7px 3px; border:1px solid rgba(0,0,0,.07); border-radius:14px; background:rgba(255,255,255,.48); color:#777; font-size:8px; cursor:pointer; }.settings-floating-apps label:has(input:checked) { border-color:#555; background:rgba(0,0,0,.07); color:#222; }.settings-floating-apps input { position:absolute; opacity:0; }.settings-floating-apps img { width:32px; height:32px; border-radius:10px; }
.settings-floating-disabled-panels { display:none; gap:10px; margin-top:12px; }
.settings-floating-section.is-disabled .settings-floating-config { display:none; }
.settings-floating-section.is-disabled .settings-floating-orb-style { display:none; }
.settings-floating-section.is-disabled .settings-floating-disabled-panels { display:grid; }
.settings-floating-panel-tabs { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:8px 8px 0; }
.settings-floating-panel-tabs button { min-height:32px; border:1px solid rgba(0,0,0,.08); border-radius:9px; background:rgba(255,255,255,.48); color:#888; font:inherit; font-size:10px; cursor:pointer; }
.settings-floating-panel-tabs button.is-active { border-color:rgba(0,0,0,.2); background:rgba(0,0,0,.08); color:#222; font-weight:700; }
.settings-floating-panel-host { min-width:0; overflow:hidden; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:rgba(255,255,255,.5); }
.settings-floating-disabled-panels > section { min-width:0; overflow:hidden; border:1px solid rgba(0,0,0,.08); border-radius:14px; background:rgba(255,255,255,.5); }
.settings-floating-disabled-panels header { display:flex; align-items:center; justify-content:space-between; min-height:36px; padding:0 10px; border-bottom:1px solid rgba(0,0,0,.07); }
.settings-floating-disabled-panels header b { font-size:11px; }.settings-floating-disabled-panels header > span { display:flex; align-items:center; gap:6px; }.settings-floating-disabled-panels header small { color:#999; font-size:9px; }.settings-floating-disabled-panels header button { padding:3px 6px; border:0; border-radius:7px; background:rgba(0,0,0,.06); color:#666; font:inherit; font-size:8px; }
.settings-floating-panel-list { display:grid; gap:6px; max-height:300px; overflow-y:auto; overscroll-behavior:contain; padding:8px; scrollbar-width:thin; }.settings-floating-panel-list article { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:3px 7px; padding:7px 8px; border-radius:10px; background:rgba(255,255,255,.58); }.settings-floating-panel-list article b,.settings-floating-panel-list article small { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.settings-floating-panel-list article b { grid-column:1/-1; font-size:9px; }.settings-floating-panel-list article small { color:#999; font-size:8px; }.settings-floating-panel-list article em { color:#61a777; font-size:8px; font-style:normal; }.settings-floating-panel-empty { padding:18px 10px; color:#999; font-size:10px; text-align:center; }
.settings-floating-panel-list details { padding:7px 8px; border-radius:10px; background:rgba(255,255,255,.58); }
.settings-floating-panel-list details summary { display:grid; gap:3px; cursor:pointer; list-style:none; }
.settings-floating-panel-list details summary::-webkit-details-marker { display:none; }
.settings-floating-panel-list details summary b,.settings-floating-panel-list details summary small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.settings-floating-panel-list details summary b { font-size:9px; }.settings-floating-panel-list details summary small { color:#999; font-size:8px; }
.settings-floating-panel-list details p,.settings-floating-panel-list details code { display:block; margin:7px 0; color:#666; font-size:8px; line-height:1.5; overflow-wrap:anywhere; white-space:pre-wrap; }.settings-floating-panel-list details code { max-height:80px; overflow:auto; padding:6px; border-radius:7px; background:rgba(0,0,0,.05); font-family:ui-monospace,monospace; }
.settings-floating-orb-style { display:grid; gap:8px; margin-top:16px; }.settings-floating-orb-style > b { font-size:11px; }.settings-floating-orb-style > small { color:#999; font-size:9px; line-height:1.45; }.settings-floating-orb-preview { display:flex; align-items:center; gap:9px; min-height:46px; }.settings-floating-orb-preview img { width:46px; height:46px; border-radius:50%; object-fit:cover; box-shadow:0 4px 10px rgba(0,0,0,.12); }.settings-floating-orb-preview img[hidden] { display:none; }.settings-floating-orb-preview span { color:#999; font-size:9px; }.settings-floating-orb-actions { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; }.settings-floating-orb-actions button,.settings-floating-orb-actions label { display:grid; place-items:center; min-height:32px; padding:4px 3px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:rgba(255,255,255,.58); color:#555; font:inherit; font-size:9px; text-align:center; cursor:pointer; }.settings-floating-orb-actions input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }.settings-floating-orb-url { display:flex; gap:6px; }.settings-floating-orb-url[hidden] { display:none; }.settings-floating-orb-url input { min-width:0; flex:1; height:32px; box-sizing:border-box; padding:0 8px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:rgba(255,255,255,.65); color:#333; font:inherit; font-size:9px; }.settings-floating-orb-url button { padding:0 9px; border:0; border-radius:9px; background:#222; color:#fff; font:inherit; font-size:9px; }
@media not all { .ideal-assist-panel { border-color:rgba(255,255,255,.15); background:rgba(32,32,34,.9); color:#eee; }.ideal-assist-panel header { border-color:rgba(255,255,255,.09); background:rgba(32,32,34,.75); }.ideal-assist-panel header button,.ideal-assist-list details code { background:rgba(255,255,255,.1); color:#ddd; }.ideal-assist-tools button,.ideal-assist-list details,.ideal-assist-list article { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.07); color:#eee; }.ideal-assist-list details p,.ideal-assist-list details code { color:#ccc; }.ideal-assist-api-summary { background:rgba(255,255,255,.08); }.ideal-assist-api-summary span { background:rgba(255,255,255,.07); }.settings-floating-controls select,.settings-floating-number input { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.22); color:#eee; }.settings-floating-controls label { color:#ccc; }.settings-floating-apps label { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.05); color:#aaa; }.settings-floating-apps label:has(input:checked) { border-color:#aaa; background:rgba(255,255,255,.13); color:#fff; } }
.settings-floating-apps img { width:48px; height:48px; border-radius:14px; object-fit:cover; box-shadow:0 5px 12px rgba(0,0,0,.11); }
.ideal-assist-app-icon { display:grid; place-items:center; width:40px; height:40px; overflow:hidden; border-radius:12px; }
.ideal-assist-app-icon img { width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.ideal-assist-app[data-assist-app="qinglvkongjian"] .ideal-assist-app-icon { background:#fff; box-shadow:none; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-app-icon { width:36px; height:36px; border-radius:11px; }
.settings-floating-app-icon { display:grid; place-items:center; width:48px; height:48px; overflow:hidden; border-radius:14px; }
.settings-floating-app-icon img { width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.settings-floating-apps label:has(input[value="qinglvkongjian"]) .settings-floating-app-icon { background:#fff; }
@media not all {
  .settings-floating-disabled-panels > section,.settings-floating-panel-host { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.05); }
  .settings-floating-panel-tabs button { border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.05); color:#aaa; }
  .settings-floating-panel-tabs button.is-active { border-color:rgba(255,255,255,.25); background:rgba(255,255,255,.13); color:#fff; }
  .settings-floating-disabled-panels header { border-color:rgba(255,255,255,.1); }
  .settings-floating-panel-list article,.settings-floating-panel-list details { background:rgba(255,255,255,.07); }
  .settings-floating-orb-actions button,.settings-floating-orb-actions label { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.08); color:#ddd; }
  .settings-floating-orb-url input { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.22); color:#eee; }
}
.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools button { grid-template-columns:1fr; grid-template-rows:1fr; place-items:center; gap:0; text-align:center; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools button > i { grid-column:1; grid-row:1; margin:0; justify-self:center; align-self:center; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-panel:has(.ideal-assist-apps) { width:calc(100vw - var(--assist-size) - 30px); max-width:300px; min-width:0; overflow-x:auto; overflow-y:hidden; touch-action:pan-x; overscroll-behavior-x:contain; scrollbar-width:none; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-panel:has(.ideal-assist-apps)::-webkit-scrollbar { display:none; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-panel:has(.ideal-assist-apps) { overflow:hidden; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-apps { min-width:0; flex:1 1 auto; overflow-x:auto; overflow-y:hidden; touch-action:pan-x; overscroll-behavior-x:contain; scrollbar-width:none; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-apps::-webkit-scrollbar { display:none; }
.ideal-floating-assist[data-mode="pill"] .ideal-assist-tools { flex:0 0 auto; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-panel:has(.ideal-assist-apps) { display:flex; flex-direction:column; overflow:hidden; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-apps { min-height:0; flex:1 1 auto; overflow-y:auto; overscroll-behavior-y:contain; scrollbar-width:none; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-apps::-webkit-scrollbar { display:none; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools { flex:0 0 auto; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools button { width:40px; height:40px; min-height:40px; border-radius:12px; }
.ideal-floating-assist[data-mode="rail"] .ideal-assist-tools i { width:24px; height:24px; font-size:12px; }
@media (max-width:430px) { .settings-floating-apps > div { grid-template-columns:repeat(3,1fr); } }
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools::-webkit-scrollbar { display:none; }
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools > button {
  display:grid;
  flex:0 0 50px;
  place-items:center;
  align-content:center;
  width:50px;
  height:50px;
  min-height:50px;
  aspect-ratio:1;
  gap:0;
  padding:7px !important;
  border:1px solid rgba(255,255,255,.84) !important;
  border-radius:50% !important;
  background:radial-gradient(circle at 28% 18%,rgba(255,255,255,.94),rgba(255,255,255,.36) 44%,rgba(210,220,233,.3) 100%) !important;
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.94),inset -1px -2px 4px rgba(111,129,151,.13),0 5px 14px rgba(39,48,61,.12) !important;
  scroll-snap-align:start;
  -webkit-backdrop-filter:blur(24px) saturate(190%) contrast(105%);
  backdrop-filter:blur(24px) saturate(190%) contrast(105%);
}
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools > button:active { transform:scale(.94); }
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools > button .chat-tool-icon {
  width:21px;
  height:21px;
  margin:0;
  fill:none;
  stroke:currentColor;
  stroke-width:3;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools > button span {
  display:none !important;
}
/* 聊天详情页固定纯白控件：不再使用毛玻璃、液态玻璃或壁纸取色。 */
.chat-app.is-chatting .chat-header,
.chat-app.is-chatting .chat-conversation > .chat-person,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-person {
  border-color:#e8e8e8 !important;
  background:#fff !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
  color:#222 !important;
  text-shadow:none !important;
}
.chat-app.is-chatting .chat-header *,
.chat-app.is-chatting .chat-conversation > .chat-person *,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header *,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-person * {
  color:#222 !important;
  text-shadow:none !important;
  filter:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap {
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > input,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > :is(.chat-plus,.chat-send,.chat-reply),
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools > button,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap .chat-compose > input,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap .chat-compose > :is(.chat-plus,.chat-send,.chat-reply),
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light).is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools > button {
  border-color:#dedede !important;
  background:#fff !important;
  background-image:none !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
  filter:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > input,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-conversation > .chat-compose-wrap .chat-compose > input {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  text-shadow:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap :is(.chat-plus,.chat-emoji,.chat-send,.chat-reply,.chat-tools button),
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap :is(.chat-plus,.chat-emoji,.chat-send,.chat-reply,.chat-tools button)::before,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap :is(.chat-plus,.chat-emoji,.chat-send,.chat-reply,.chat-tools button) svg {
  color:#858585 !important;
  text-shadow:none !important;
  filter:none !important;
}
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header .chat-top-name,
.chat-app.is-chatting .chat-header .chat-top-name {
  background:transparent !important;
  color:#111 !important;
  -webkit-text-fill-color:#111 !important;
  text-shadow:none !important;
  filter:none !important;
}
.chat-app.is-chatting .chat-header :is(.chat-top-back,.chat-top-settings),
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header :is(.chat-top-back,.chat-top-settings) {
  border:1px solid #dedede !important;
  background:#fff !important;
  background-image:none !important;
  box-shadow:none !important;
  color:#555 !important;
  -webkit-text-fill-color:#555 !important;
  text-shadow:none !important;
  filter:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-app.is-chatting .chat-header :is(.chat-top-back,.chat-top-settings) svg,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header :is(.chat-top-back,.chat-top-settings) svg {
  color:#555 !important;
  stroke:currentColor !important;
  filter:none !important;
}
.chat-app.is-chatting .chat-header .chat-top-back-wrap {
  display:flex;
  align-items:center;
  justify-self:start;
  gap:7px;
  min-width:0;
}
.chat-app.is-chatting .chat-header .chat-top-back-wrap .chat-top-back {
  flex:0 0 auto;
}
.chat-app.is-chatting .chat-header .chat-top-back-wrap .chat-back-unread-badge {
  position:static;
  flex:0 0 auto;
  width:auto;
  min-width:24px;
  height:24px;
  padding:0 7px;
  border:1px solid #dedede;
  border-radius:12px;
  background:#fff;
  color:#777;
  font-size:10px;
  line-height:1;
}

/* 聊天 App 首页 Dock：纯图标毛玻璃胶囊，清除各页面遗留的灰色按钮底。 */
.chat-app:not(.is-chatting) .chat-tabs {
  box-sizing:border-box !important;
  height:64px !important;
  padding:7px 14px !important;
  border:1px solid rgba(255,255,255,.78) !important;
  border-radius:32px !important;
  overflow:visible;
  background:rgba(255,255,255,.62) !important;
  background-image:none !important;
  box-shadow:0 6px 20px rgba(25,31,40,.1),inset 0 1px 0 rgba(255,255,255,.82) !important;
  -webkit-backdrop-filter:blur(22px) saturate(145%) !important;
  backdrop-filter:blur(22px) saturate(145%) !important;
}
.chat-app:not(.is-chatting) .chat-tabs small {
  display:none !important;
}
.chat-app:not(.is-chatting) .chat-tabs button,
.chat-app:not(.is-chatting) .chat-tabs button.is-active,
.chat-app:not(.is-chatting) .chat-tabs button::before,
.chat-app:not(.is-chatting) .chat-tabs button::after {
  width:48px !important;
  min-width:48px !important;
  height:48px !important;
  min-height:48px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:50% !important;
  background:transparent !important;
  background-image:none !important;
  box-shadow:none !important;
  filter:none !important;
}
.chat-app:not(.is-chatting) .chat-tabs button::before,
.chat-app:not(.is-chatting) .chat-tabs button::after {
  content:none !important;
  display:none !important;
}
.chat-app:not(.is-chatting) .chat-main {
  padding-bottom:0 !important;
  background:transparent !important;
}
.chat-app:not(.is-chatting) :is(.chat-launch-list,.chat-contact-list,.chat-profile-list,.chat-moments) {
  box-sizing:border-box;
  padding-bottom:120px !important;
}

/* 论坛、情侣空间、音乐、购物：统一纯图标毛玻璃胶囊 Dock。 */
:is(.forum-tabs,.couple-tabs,.music-tabs,.shop-tabs) {
  box-sizing:border-box !important;
  height:64px !important;
  padding:7px 14px !important;
  border:1px solid rgba(255,255,255,.78) !important;
  border-radius:32px !important;
  background:rgba(255,255,255,.62) !important;
  background-image:none !important;
  box-shadow:0 6px 20px rgba(25,31,40,.1),inset 0 1px 0 rgba(255,255,255,.82) !important;
  -webkit-backdrop-filter:blur(22px) saturate(145%) !important;
  backdrop-filter:blur(22px) saturate(145%) !important;
}
:is(.forum-tabs,.couple-tabs,.music-tabs,.shop-tabs) small {
  display:none !important;
}
:is(.forum-tabs,.couple-tabs,.music-tabs,.shop-tabs) > button,
:is(.forum-tabs,.couple-tabs,.music-tabs,.shop-tabs) > button.is-active,
.forum-tabs > .forum-tab-compose {
  display:grid !important;
  place-items:center !important;
  flex:0 1 48px !important;
  width:48px !important;
  min-width:0 !important;
  height:48px !important;
  min-height:48px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:50% !important;
  background:transparent !important;
  background-image:none !important;
  box-shadow:none !important;
  filter:none !important;
  color:#202020 !important;
}
:is(.forum-tabs,.couple-tabs,.music-tabs,.shop-tabs) > button.is-active {
  color:#8b8b8b !important;
}
:is(.forum-tabs,.couple-tabs,.music-tabs,.shop-tabs) > button svg {
  width:30px !important;
  height:30px !important;
  margin:0 !important;
  color:inherit !important;
  stroke:currentColor !important;
  filter:none !important;
}

/* 具体聊天输入栏贴底通栏；发送与回复仅在输入框获得焦点时出现。 */
.chat-conversation > .chat-compose-wrap {
  flex:0 0 auto !important;
  box-sizing:border-box !important;
  width:100% !important;
  height:auto !important;
  min-height:58px;
  margin:0 !important;
  padding:8px 10px max(10px,env(safe-area-inset-bottom)) !important;
  border:0 !important;
  border-top:1px solid rgba(0,0,0,.08) !important;
  border-radius:0 !important;
  background:rgba(248,248,246,.94) !important;
  box-shadow:none !important;
}
.chat-conversation > .chat-compose-wrap > .chat-tools,
.chat-conversation > .chat-compose-wrap > .chat-emoji-panel { border-radius:0 !important; }
.chat-conversation > .chat-compose-wrap .chat-compose { gap:5px !important; }
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply {
  display:none !important;
  flex:0 0 auto !important;
  width:auto !important;
  min-width:48px !important;
  height:32px !important;
  min-height:32px !important;
  padding:0 11px !important;
  border-radius:8px !important;
  font-size:11px !important;
  font-weight:650;
  line-height:1 !important;
}
.chat-conversation > .chat-compose-wrap.has-input-focus .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap.has-input-focus .chat-compose > .chat-reply,
.chat-conversation > .chat-compose-wrap.is-chat-action-press .chat-compose > .chat-send,
.chat-conversation > .chat-compose-wrap.is-chat-action-press .chat-compose > .chat-reply { display:inline-flex !important; align-items:center; justify-content:center; }

/* 群聊两侧文字气泡使用同一宽度边界：最长延伸到对侧头像内边线。 */
.chat-group-conversation .chat-group-bubble-row > .chat-bubble:not(.transfer):not(.location):not(.tap):not(.image):not(.image-stack):not(.image-desc) {
  width:max-content;
  max-width:calc(100% - 48px);
}

/* 群聊固定三列：左侧成员头像｜消息内容｜右侧用户头像。 */
.chat-group-conversation .chat-message-line {
  column-gap:8px;
}
.chat-group-conversation .chat-group-message-content {
  gap:4px;
}
.chat-group-conversation .chat-message.is-character .chat-group-message-content { justify-items:start; }
.chat-group-conversation .chat-message.is-user .chat-group-message-content { justify-items:end; }
.chat-group-conversation .chat-message-line > small {
  margin:0 0 4px;
  white-space:nowrap;
}

/* 群聊沿用单聊消息行：整条消息限宽，群聊只增加昵称层。 */
.chat-group-conversation .chat-message.is-character { align-items:flex-start !important; margin-right:auto !important; }
.chat-group-conversation .chat-message.is-user { align-items:flex-end !important; margin-left:auto !important; }
.chat-group-conversation .chat-message-line {
  gap:8px !important;
}
.chat-group-conversation .chat-message.is-user .chat-message-line { flex-direction:row-reverse !important; }
.chat-group-conversation .chat-message .chat-message-avatar,
.chat-group-conversation .chat-message .chat-group-message-content,
.chat-group-conversation .chat-message .chat-message-line > small {
  grid-column:auto !important;
  grid-row:auto !important;
}
.chat-group-conversation .chat-group-message-content {
  flex:1 1 0 !important;
  gap:4px;
}
.chat-group-conversation .chat-message-line > small {
  flex:0 0 auto !important;
  justify-self:auto !important;
  margin:0 0 4px !important;
}
.chat-conversation > .chat-compose-wrap.has-input-focus .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap.has-input-focus .chat-compose > .chat-plus,
.chat-conversation > .chat-compose-wrap.is-chat-action-press .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap.is-chat-action-press .chat-compose > .chat-plus { display:none !important; }

/* 群聊最终布局：时间使用对侧头像位，气泡独占两侧头像之间的完整宽度。 */
.chat-group-conversation .chat-message {
  display:flex !important;
  width:100% !important;
  max-width:100% !important;
  margin-right:0 !important;
  margin-left:0 !important;
}
.chat-group-conversation .chat-message-line,
.chat-group-conversation .chat-message.is-user .chat-message-line {
  display:grid !important;
  grid-template-columns:38px minmax(0,1fr) 38px !important;
  grid-template-rows:auto !important;
  column-gap:8px !important;
  align-items:start !important;
  width:100% !important;
  max-width:100% !important;
}
.chat-group-conversation .chat-message.is-character .chat-message-line > small {
  grid-column:3 !important;
  grid-row:1 !important;
  justify-self:start !important;
}
.chat-group-conversation .chat-message.is-user .chat-message-line > small {
  grid-column:1 !important;
  grid-row:1 !important;
  justify-self:end !important;
}
.chat-group-conversation .chat-group-message-content {
  flex:none !important;
}
.chat-group-conversation .chat-group-message-content > .chat-bubble {
  display:block;
  box-sizing:border-box !important;
  inline-size:fit-content !important;
  width:fit-content !important;
  min-width:0 !important;
  max-inline-size:100% !important;
  max-width:100% !important;
  overflow-wrap:anywhere !important;
  word-break:break-word !important;
}
.chat-group-conversation .chat-message-line > small {
  align-self:end !important;
  margin:0 0 4px !important;
}

/* 群聊镜像布局：头像位固定，气泡自适应，时间戳保持在气泡外侧。 */
.chat-group-conversation .chat-message-line {
  column-gap:8px !important;
}
.chat-group-conversation .chat-message.is-character .chat-group-message-content {
  grid-row:1 !important;
}
.chat-group-conversation .chat-message.is-user .chat-group-message-content {
  grid-row:1 !important;
}
.chat-group-conversation .chat-group-message-content {
  display:flex !important;
  flex-direction:column;
  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;
  gap:4px;
}
.chat-group-conversation .chat-group-sender {
  width:fit-content;
  max-width:100%;
}
.chat-group-conversation .chat-group-bubble-row {
  display:flex !important;
  align-items:flex-end !important;
  flex-wrap:nowrap !important;
  gap:6px;
  width:100%;
  min-width:0;
  max-width:100%;
}
.chat-group-conversation .chat-message.is-character .chat-group-bubble-row { justify-content:flex-start; }
.chat-group-conversation .chat-message.is-user .chat-group-bubble-row { justify-content:flex-end; }
.chat-group-conversation .chat-group-bubble-row > .chat-bubble {
  flex:0 1 auto;
  width:fit-content !important;
  min-width:0;
  max-width:100% !important;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.chat-group-conversation .chat-group-bubble-row > small {
  display:block !important;
  flex:0 0 auto !important;
  align-self:flex-end !important;
  margin:0 0 4px !important;
  color:#9ba4b2;
  font-size:9px;
  line-height:1;
  white-space:nowrap;
}

/* 群聊气泡宽度链路：父级占满双头像之间的轨道，气泡自身按内容收缩。 */
.chat-group-conversation .chat-messages > .chat-message {
  box-sizing:border-box;
  width:100% !important;
  max-width:none !important;
}
.chat-group-conversation .chat-messages > .chat-message > .chat-message-line {
  box-sizing:border-box;
  width:100% !important;
  max-width:none !important;
}
.chat-group-conversation .chat-message .chat-group-message-content {
  box-sizing:border-box;
  flex:none !important;
}
.chat-group-conversation .chat-message .chat-group-bubble-row {
  box-sizing:border-box;
}
.chat-group-conversation .chat-message .chat-group-bubble-row > .chat-bubble {
  box-sizing:border-box;
  flex:0 1 auto !important;
  inline-size:fit-content !important;
  width:fit-content !important;
  min-inline-size:0 !important;
  min-width:0 !important;
  max-inline-size:100% !important;
  max-width:100% !important;
  overflow-wrap:anywhere;
  word-break:break-word;
}

/* 群聊气泡对齐单聊：昵称在气泡上方，时间戳紧跟在气泡旁边。 */
.chat-group-conversation .chat-message-line {
  display:grid !important;
  grid-template-columns:38px minmax(0,1fr) 38px !important;
  column-gap:8px !important;
  align-items:start !important;
  width:100% !important;
  max-width:100% !important;
}
.chat-group-conversation .chat-message.is-character .chat-message-avatar {  grid-row:1 !important; }
.chat-group-conversation .chat-message.is-user .chat-message-avatar {  grid-row:1 !important; }
.chat-group-conversation .chat-message .chat-group-message-content {
  grid-column:2 !important;
  grid-row:1 !important;
  display:flex !important;
  flex:none !important;
  flex-direction:column;
  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;
  gap:4px;
}
.chat-group-conversation .chat-message.is-character .chat-group-message-content { align-items:flex-start !important; }
.chat-group-conversation .chat-message.is-user .chat-group-message-content { align-items:flex-end !important; }
.chat-group-conversation .chat-message .chat-group-bubble-row {
  display:flex !important;
  align-items:flex-end !important;
  flex-wrap:nowrap !important;
  gap:6px !important;
  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;
}
.chat-group-conversation .chat-message.is-character .chat-group-bubble-row { justify-content:flex-start !important; }
.chat-group-conversation .chat-message.is-user .chat-group-bubble-row { justify-content:flex-end !important; }
.chat-group-conversation .chat-message .chat-group-bubble-row > .chat-bubble:not(.transfer):not(.location):not(.tap):not(.image):not(.image-stack):not(.image-desc) {
  display:block;
  flex:0 1 auto !important;
  width:fit-content !important;
  min-width:0 !important;
  max-width:calc(100% - 48px) !important;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.chat-group-conversation .chat-message .chat-group-bubble-row > small {
  position:static !important;
  display:block !important;
  flex:0 0 auto !important;
  align-self:flex-end !important;
  margin:0 0 4px !important;
  color:#9ba4b2;
  font-size:9px;
  line-height:1;
  white-space:nowrap;
}
.chat-group-conversation .chat-message-line > small { display:none !important; }
.chat-group-conversation .chat-message-line:not(:has(.chat-message-avatar)) {
  grid-template-columns:minmax(0,1fr) !important;
}
.chat-group-conversation .chat-message-line:not(:has(.chat-message-avatar)) .chat-group-message-content { grid-column:1 !important; }

/* 左右消息只占用自己一侧的头像栏，另一侧空间全部留给气泡和时间。 */
.chat-group-conversation .chat-message.is-character .chat-message-line {
  grid-template-columns:38px minmax(0,1fr) !important;
}
.chat-group-conversation .chat-message.is-character .chat-message-avatar { grid-column:1 !important; }
.chat-group-conversation .chat-message.is-character .chat-group-message-content { grid-column:2 !important; }
.chat-group-conversation .chat-message.is-user .chat-message-line {
  grid-template-columns:minmax(0,1fr) 38px !important;
}
.chat-group-conversation .chat-message.is-user .chat-group-message-content { grid-column:1 !important; }
.chat-group-conversation .chat-message.is-user .chat-message-avatar { grid-column:2 !important; }

/* 底部输入区与聊天顶栏使用同一套轻毛玻璃参数。 */
.chat-conversation > .chat-compose-wrap {
  border-color:rgba(0,0,0,.08) !important;
  background:rgba(248,248,246,.84) !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:blur(24px) !important;
  backdrop-filter:blur(24px) !important;
}
.chat-conversation > .chat-compose-wrap .chat-compose input {
  background:rgba(255,255,255,.65) !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:blur(14px) !important;
  backdrop-filter:blur(14px) !important;
}
@media not all {
  .chat-conversation > .chat-compose-wrap {
    border-color:rgba(255,255,255,.12) !important;
    background:rgba(28,28,28,.9) !important;
  }
  .chat-conversation > .chat-compose-wrap .chat-compose input {
    background:rgba(0,0,0,.22) !important;
  }
}

/* 输入区内边距；最终高度和位移统一在下方微调规则中设置。 */
.chat-conversation > .chat-compose-wrap {
  padding-top:20px !important;
  padding-bottom:8px !important;
}

/* 底部输入区毛玻璃层。 */
.chat-conversation > .chat-compose-wrap {
  border:1px solid rgba(255,255,255,.72) !important;
  background:rgba(255,255,255,.42) !important;
  box-shadow:0 -12px 34px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.72) !important;
  -webkit-backdrop-filter:blur(28px) saturate(160%) !important;
  backdrop-filter:blur(28px) saturate(160%) !important;
}
.chat-conversation > .chat-compose-wrap .chat-compose input {
  border-color:rgba(255,255,255,.78) !important;
  background:rgba(255,255,255,.62) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65), 0 4px 14px rgba(0,0,0,.05) !important;
  -webkit-backdrop-filter:blur(18px) saturate(145%) !important;
  backdrop-filter:blur(18px) saturate(145%) !important;
}
@media not all {
  .chat-conversation > .chat-compose-wrap {
    border-color:rgba(255,255,255,.22) !important;
    background:rgba(28,28,32,.5) !important;
    box-shadow:0 -12px 34px rgba(0,0,0,.26), inset 0 1px 0 rgba(255,255,255,.16) !important;
  }
  .chat-conversation > .chat-compose-wrap .chat-compose input {
    border-color:rgba(255,255,255,.26) !important;
    background:rgba(255,255,255,.12) !important;
  }
}

/* 输入区微调：顶部收低一点，输入控件整体下移 10px，并取消阴影。 */
.chat-conversation > .chat-compose-wrap {
  flex-basis:96px !important;
  height:96px !important;
  box-shadow:none !important;
}
.chat-conversation > .chat-compose-wrap .chat-compose {
  transform:translateY(-20px) !important;
}
.chat-conversation > .chat-compose-wrap .chat-compose input,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji,
.chat-conversation > .chat-compose-wrap .chat-compose > .chat-plus {
  box-shadow:none !important;
}

/* 输入框内的表情包按钮再放大一档，仍保持右侧垂直居中。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji {
  flex-basis:44px !important;
  width:44px !important;
  height:44px !important;
  min-height:44px !important;
  margin-left:-62px !important;
  transform:translateY(2px);
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji .chat-action-icon {
  width:23px !important;
  height:23px !important;
}

/* 回复按钮恢复为圆润、较厚的灰色爱心，避免图标被隐藏。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply::before {
  content:"♥" !important;
  display:grid !important;
  place-items:center !important;
  width:100% !important;
  height:100% !important;
  color:#8d949d !important;
  font-family:Arial,"Helvetica Neue",sans-serif !important;
  font-size:22px !important;
  font-weight:700 !important;
  line-height:1 !important;
  transform:translateY(1px) !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply .chat-action-icon {
  display:none !important;
}

/* 未读数与返回箭头组成“‹ 8”式纯文字组，不使用角标背景。 */
.chat-app.is-chatting .chat-header .chat-top-back-wrap {
  gap:2px !important;
}
.chat-app.is-chatting .chat-header .chat-back-unread-badge {
  position:static !important;
  display:inline-block !important;
  width:auto !important;
  min-width:0 !important;
  height:auto !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  background-image:none !important;
  color:#444 !important;
  -webkit-text-fill-color:#444 !important;
  box-shadow:none !important;
  text-shadow:none !important;
  font-size:13px !important;
  font-style:normal !important;
  font-weight:500 !important;
  line-height:1 !important;
}

/* 各 App Dock 的毛玻璃减淡：更通透、少一点白色遮挡和阴影。 */
.chat-app:not(.is-chatting) .chat-tabs,
:is(.forum-tabs,.couple-tabs,.music-tabs,.shop-tabs) {
  border-color:rgba(255,255,255,.58) !important;
  background:rgba(255,255,255,.42) !important;
  background-image:none !important;
  box-shadow:0 4px 14px rgba(25,31,40,.06),inset 0 1px 0 rgba(255,255,255,.58) !important;
  -webkit-backdrop-filter:blur(20px) saturate(125%) !important;
  backdrop-filter:blur(20px) saturate(125%) !important;
}

/* 论坛 Dock 的发布加号保留黑色圆形强调按钮。 */
.forum-tabs > .forum-tab-compose {
  width:48px !important;
  min-width:48px !important;
  height:48px !important;
  min-height:48px !important;
  border:0 !important;
  border-radius:50% !important;
  background:#222 !important;
  color:#fff !important;
  box-shadow:0 4px 10px rgba(0,0,0,.14) !important;
}
.forum-tabs > .forum-tab-compose svg {
  color:#fff !important;
  stroke:currentColor !important;
}

/* 群聊文字气泡始终按内容自适应高度，不裁切多行回复。 */
.chat-group-conversation .chat-message .chat-group-message-content,
.chat-group-conversation .chat-message .chat-group-bubble-row,
.chat-group-conversation .chat-message .chat-group-bubble-row > .chat-bubble:not(.transfer):not(.location):not(.tap):not(.image):not(.image-stack):not(.image-desc) {
  height:auto !important;
  max-height:none !important;
  overflow:visible !important;
}

/* 聊天详情页采用沉浸式顶栏：保留安全区域，但让聊天背景延伸到页面顶部。 */
.chat-app.is-chatting .chat-header,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header {
  position:absolute !important;
  top:0;
  right:0;
  left:0;
  z-index:20;
  box-sizing:border-box;
  display:grid !important;
  grid-template-columns:minmax(44px,1fr) auto minmax(44px,1fr) !important;
  align-items:center !important;
  min-height:48px !important;
  height:calc(48px + env(safe-area-inset-top)) !important;
  padding:env(safe-area-inset-top) 14px 0 !important;
  border:0 !important;
  background:transparent !important;
  background-image:none !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-app.is-chatting .chat-main {
  position:relative;
  z-index:1;
  height:100%;
  min-height:0;
}
.chat-app.is-chatting .chat-conversation > .chat-messages {
  margin-top:calc(48px + env(safe-area-inset-top)) !important;
  padding-top:17px !important;
}
.chat-app.is-chatting .chat-header .chat-top-name {
  align-self:center;
  max-width:min(62vw,260px) !important;
  margin:0 !important;
  font-size:17px !important;
  line-height:1.2 !important;
  font-weight:650 !important;
  background:transparent !important;
  text-shadow:none !important;
}
.chat-app.is-chatting .chat-header > .chat-top-back,
.chat-app.is-chatting .chat-header > .chat-top-back-wrap,
.chat-app.is-chatting .chat-header > .chat-top-name,
.chat-app.is-chatting .chat-header > .chat-top-settings {
  transform:none !important;
}
.chat-app.is-chatting .chat-header :is(.chat-top-back,.chat-top-settings),
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header :is(.chat-top-back,.chat-top-settings) {
  width:30px !important;
  height:30px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
  color:#222 !important;
}
.chat-app.is-chatting .chat-header :is(.chat-top-back,.chat-top-settings) svg,
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header :is(.chat-top-back,.chat-top-settings) svg {
  width:20px !important;
  height:20px !important;
  stroke:currentColor !important;
  stroke-width:2 !important;
  fill:none !important;
}
.chat-app.is-chatting.chat-wallpaper-dark .chat-header,
.chat-app.is-chatting.chat-wallpaper-dark .chat-header * {
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
}
.chat-app.is-chatting.chat-wallpaper-dark .chat-header :is(.chat-top-back,.chat-top-settings) svg {
  color:#fff !important;
  stroke:currentColor !important;
}

.fanfic-style-detail {
  display:grid;
  gap:7px;
  margin-top:11px;
  padding:11px;
  border:1px solid rgba(84,60,94,.1);
  border-radius:11px;
  background:rgba(255,255,255,.42);
  color:#918494;
  font-size:9px;
}
.fanfic-style-detail textarea {
  box-sizing:border-box;
  width:100%;
  min-height:150px;
  padding:10px;
  border:1px solid rgba(84,60,94,.1);
  border-radius:9px;
  outline:0;
  background:rgba(255,255,255,.72);
  color:#54465a;
  font:inherit;
  font-size:10px;
  line-height:1.65;
  resize:vertical;
}
.fanfic-style-detail small { color:#a79aa9; font-size:8px; line-height:1.45; }
.fanfic-style-detail button { justify-self:end; min-height:30px; padding:0 12px; border:0; border-radius:8px; background:#654f6b; color:#fff; font:inherit; font-size:9px; cursor:pointer; }
.fanfic-style-detail > [data-fanfic-add-style] { justify-self:start; }
.fanfic-style-new { display:grid; gap:8px; margin-top:9px; padding-top:10px; border-top:1px solid rgba(84,60,94,.1); }
.fanfic-style-new label { display:grid; gap:5px; color:#918494; font-size:9px; }
.fanfic-style-new input,.fanfic-style-new textarea { box-sizing:border-box; width:100%; border:1px solid rgba(84,60,94,.1); border-radius:9px; outline:0; background:rgba(255,255,255,.72); color:#54465a; font:inherit; font-size:10px; }
.fanfic-style-new input { height:34px; padding:0 9px; }
.fanfic-style-new textarea { min-height:105px; padding:9px; line-height:1.55; resize:vertical; }
.fanfic-style-new > div { display:flex; justify-content:flex-end; gap:6px; }
.fanfic-style-new > div button { justify-self:auto; }
.fanfic-style-actions { display:flex; gap:6px; }
.fanfic-style-actions button { justify-self:auto; }
.fanfic-style-manager { display:grid; gap:6px; margin-top:8px; padding-top:9px; border-top:1px solid rgba(84,60,94,.1); }
.fanfic-style-manager[hidden] { display:none; }
.fanfic-style-manager-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.fanfic-style-manager-head b { color:#76617b; font-size:9px; }
.fanfic-style-manager-head button { min-height:23px; padding:0 7px; border:1px solid rgba(84,60,94,.16); border-radius:7px; background:transparent; color:#806b85; font:inherit; font-size:8px; cursor:pointer; }
.fanfic-style-manager > small { color:#a79aa9; font-size:8px; }
.fanfic-style-manager > label { display:flex; align-items:center; gap:7px; min-height:28px; padding:0 7px; border-radius:8px; background:rgba(255,255,255,.45); cursor:pointer; }
.fanfic-style-manager > label input { margin:0; accent-color:#654f6b; }
.fanfic-style-manager > label span { overflow:hidden; color:#806b85; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.fanfic-generation-preset { margin-top:14px; padding:14px; border:1px solid rgba(84,60,94,.1); border-radius:16px; background:rgba(255,255,255,.46); }
.fanfic-generation-preset > label { display:grid; gap:8px; color:#918494; font-size:10px; }
.fanfic-generation-preset > label > div { display:grid; grid-template-columns:minmax(0,1fr); gap:6px; }
.fanfic-generation-preset select,.fanfic-generation-preset button { width:100%; min-height:32px; box-sizing:border-box; border:1px solid rgba(84,60,94,.1); border-radius:9px; background:rgba(255,255,255,.72); color:#765f7c; font:inherit; font-size:9px; cursor:pointer; }
.fanfic-generation-preset textarea { width:100%; min-height:180px; box-sizing:border-box; padding:10px; border:1px solid rgba(84,60,94,.1); border-radius:10px; outline:0; background:rgba(255,255,255,.72); color:#54465a; font:inherit; font-size:10px; line-height:1.6; resize:vertical; }
.fanfic-preset-variable-guide { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px 8px; padding:9px; border:1px solid rgba(84,60,94,.08); border-radius:9px; background:rgba(255,255,255,.3); color:#998d9d; font-size:8px; line-height:1.45; }
.fanfic-preset-variable-guide b { grid-column:1 / -1; color:#76617b; font-size:9px; }
.fanfic-preset-variable-guide code { color:#806b85; font:600 8px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace; }
.fanfic-generation-preset-editor { display:grid; gap:8px; margin-top:10px; padding:13px; border:1px solid rgba(84,60,94,.1); border-radius:14px; background:rgba(255,255,255,.5); }
.fanfic-generation-preset-editor[hidden] { display:none; }
.fanfic-generation-preset-editor > div:first-child { display:flex; align-items:center; justify-content:space-between; }
.fanfic-generation-preset-editor > div:first-child span { color:#76617b; font-size:9px; font-weight:700; }
.fanfic-generation-preset-editor > div:first-child button { width:25px; min-height:25px; padding:0; border:0; background:transparent; color:#806b85; font-size:16px; }
.fanfic-generation-preset-editor label { display:grid; gap:5px; color:#918494; font-size:9px; }
.fanfic-generation-preset-editor input,.fanfic-generation-preset-editor textarea { box-sizing:border-box; width:100%; border:1px solid rgba(84,60,94,.1); border-radius:9px; outline:0; background:rgba(255,255,255,.72); color:#54465a; font:inherit; font-size:10px; }
.fanfic-generation-preset-editor input { height:34px; padding:0 9px; }
.fanfic-generation-preset-editor textarea { min-height:120px; padding:9px; line-height:1.55; resize:vertical; }
.fanfic-generation-preset-editor > div:last-child { display:flex; justify-content:flex-end; gap:6px; }
.fanfic-generation-preset-editor > div:last-child button { min-height:30px; padding:0 10px; border:1px solid rgba(84,60,94,.1); border-radius:8px; background:rgba(255,255,255,.62); color:#765f7c; font:inherit; font-size:9px; cursor:pointer; }
.fanfic-generation-preset-editor > div:last-child button:last-child { border-color:#654f6b; background:#654f6b; color:#fff; }
@media not all {
  .fanfic-style-manager { border-color:rgba(255,255,255,.14); }
  .fanfic-style-manager-head b,.fanfic-generation-preset-editor > div:first-child span { color:#d0b9d4; }
  .fanfic-style-manager > small { color:#aaa; }
  .fanfic-style-manager-head button { border-color:rgba(255,255,255,.14); color:#d0b9d4; }
  .fanfic-style-manager > label { background:rgba(255,255,255,.08); }
  .fanfic-style-manager > label span { color:#d0b9d4; }
  .fanfic-generation-preset,.fanfic-generation-preset-editor { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.14); }
  .fanfic-generation-preset > label,.fanfic-generation-preset-editor label { color:#aaa; }
  .fanfic-generation-preset select,.fanfic-generation-preset button,.fanfic-generation-preset textarea,.fanfic-generation-preset-editor input,.fanfic-generation-preset-editor textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.2); color:#eee; }
  .fanfic-preset-variable-guide { border-color:rgba(255,255,255,.1); background:rgba(0,0,0,.12); }
  .fanfic-preset-variable-guide b,.fanfic-preset-variable-guide code { color:#d0b9d4; }
}
label.fanfic-setting-field:has(> select[data-fanfic-setting="style"]) { grid-column:1 / -1; }
.fanfic-style-detail { width:100%; box-sizing:border-box; }
.fanfic-wechat-share .fanfic-main { background:#f5f5f5; }
.fanfic-share-preview { display:grid; gap:6px; margin-bottom:14px; padding:16px; border-radius:15px; background:#fff; }
.fanfic-share-preview > span,.fanfic-contact-title small { color:#aaa; font-size:9px; }
.fanfic-share-preview b { color:#3f3544; font-size:15px; }
.fanfic-share-preview small { color:#999; font-size:9px; }
.fanfic-contact-picker { overflow:hidden; border-radius:15px; background:#fff; }
.fanfic-contact-title { display:flex; align-items:center; justify-content:space-between; padding:13px 14px 9px; }
.fanfic-contact-title b { color:#4d4053; font-size:12px; }
.fanfic-contact-option { display:flex; align-items:center; gap:10px; width:100%; min-height:58px; padding:8px 14px; border:0; border-top:1px solid #f0edf1; background:#fff; color:#493d50; font:inherit; text-align:left; cursor:pointer; }
.fanfic-contact-option > i { display:grid; flex:0 0 36px; place-items:center; width:36px; height:36px; overflow:hidden; border-radius:8px; background:#e8e0ea; color:#765f7c; font-style:normal; font-size:14px; }
.fanfic-contact-option > i img { width:100%; height:100%; object-fit:cover; }
.fanfic-contact-option > span { display:grid; flex:1; gap:3px; }
.fanfic-contact-option > span b { font-size:11px; font-weight:600; }
.fanfic-contact-option > span small { color:#aaa; font-size:9px; }
.fanfic-contact-option > em { color:#654f6b; font-size:16px; font-style:normal; }
.fanfic-contact-option.is-selected { background:#faf7fb; }
.fanfic-share-send { width:100%; min-height:40px; margin-top:15px; border:0; border-radius:10px; background:#654f6b; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
.fanfic-share-send:disabled { opacity:.4; cursor:not-allowed; }
@media not all {
  .fanfic-share-send { background:#eee; color:#222; }
  .fanfic-wechat-share .fanfic-main,.fanfic-share-preview,.fanfic-contact-picker,.fanfic-contact-option { background:#252326; color:#eee; }
  .fanfic-share-preview b,.fanfic-contact-title b,.fanfic-contact-option > span b { color:#eee; }
  .fanfic-share-preview > span,.fanfic-share-preview small,.fanfic-contact-title small,.fanfic-contact-option > span small { color:#aaa; }
  .fanfic-contact-option { border-color:#38343a; }
  .fanfic-contact-option.is-selected { background:#302b32; }
}
@media not all {
  .fanfic-style-detail { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.15); color:#aaa; }
  .fanfic-style-detail textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.2); color:#eee; }
  .fanfic-style-detail small { color:#aaa; }
  .fanfic-style-detail button { background:#806b83; }
  .fanfic-style-new { border-color:rgba(255,255,255,.14); }
  .fanfic-style-new label { color:#aaa; }
  .fanfic-style-new input,.fanfic-style-new textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.2); color:#eee; }
}

.ifspace-style-manager { display:grid; gap:6px; margin-top:8px; padding:9px; border:1px solid var(--if-line); background:var(--if-paper); }
.ifspace-style-manager[hidden] { display:none; }
.ifspace-style-manager-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ifspace-style-manager-head b { font:700 9px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace; }
.ifspace-style-manager-head button { min-height:23px; padding:0 7px; border:1px solid var(--if-line); background:transparent; color:var(--if-ink); font:inherit; font-size:8px; cursor:pointer; }
.ifspace-style-manager > small { color:var(--if-muted); font-size:9px; }
.ifspace-style-manager > label { display:flex; align-items:center; gap:7px; min-height:27px; padding:0 7px; border:1px solid var(--if-line); cursor:pointer; }
.ifspace-style-manager > label input { margin:0; accent-color:var(--if-ink); }
.ifspace-style-manager > label span { overflow:hidden; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.ifspace-space-actions { display:flex; align-items:center; gap:6px; }
.ifspace-space-actions button { min-height:24px; padding:0 7px; border:1px solid var(--if-ink); background:transparent; color:var(--if-ink); font:inherit; font-size:8px; cursor:pointer; }
.ifspace-space-card.is-managing { cursor:pointer; }
.ifspace-space-card.is-managing > input { flex:0 0 auto; width:15px; height:15px; margin:0 2px 0 0; accent-color:var(--if-ink); }
.ifspace-space-card.is-managing > em { font-size:11px; opacity:.35; }
.ifspace-generation-preset-field { display:grid; gap:8px; grid-column:1 / -1; margin-top:13px; color:var(--if-ink); font:700 10px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace; }
.ifspace-generation-preset-field > div { display:grid; gap:6px; }
.ifspace-generation-preset-field select,.ifspace-generation-preset-field button { box-sizing:border-box; width:100%; min-height:34px; padding:0 9px; border:1px solid var(--if-line); border-radius:0; background:var(--if-paper); color:var(--if-ink); font:inherit; font-size:9px; cursor:pointer; }
.ifspace-generation-preset-field textarea { box-sizing:border-box; width:100%; min-height:180px; padding:11px; border:1px solid var(--if-line); border-radius:0; background:var(--if-paper); color:var(--if-ink); font:400 10px/1.65 Arial,"PingFang SC",sans-serif; resize:vertical; }
.ifspace-preset-variable-guide { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px 8px; padding:9px; border:1px solid var(--if-line); color:var(--if-muted); font:400 8px/1.45 Arial,"PingFang SC",sans-serif; }
.ifspace-preset-variable-guide b { grid-column:1 / -1; color:var(--if-ink); font-weight:700; }
.ifspace-preset-variable-guide code { color:var(--if-ink); font:600 8px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace; }
.ifspace-generation-preset-editor { display:grid; gap:9px; margin-top:11px; padding:14px; border:1px solid var(--if-line); background:var(--if-paper); }
.ifspace-generation-preset-editor[hidden] { display:none; }
.ifspace-generation-preset-editor > div:first-child { display:flex; align-items:center; justify-content:space-between; }
.ifspace-generation-preset-editor > div:first-child span { font:700 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }
.ifspace-generation-preset-editor > div:first-child button { width:25px; min-height:25px; padding:0; border:1px solid var(--if-ink); background:transparent; color:var(--if-ink); cursor:pointer; }
.ifspace-generation-preset-editor label { display:grid; gap:6px; font-size:9px; }
.ifspace-generation-preset-editor input,.ifspace-generation-preset-editor textarea { box-sizing:border-box; width:100%; border:1px solid var(--if-line); border-radius:0; background:transparent; color:var(--if-ink); font:inherit; font-size:10px; }
.ifspace-generation-preset-editor input { height:34px; padding:0 9px; }
.ifspace-generation-preset-editor textarea { min-height:120px; padding:9px; line-height:1.55; resize:vertical; }
.ifspace-generation-preset-editor > div:last-child { display:flex; justify-content:flex-end; gap:6px; }
.ifspace-generation-preset-editor > div:last-child button { min-height:31px; padding:0 10px; border:1px solid var(--if-line); background:transparent; color:var(--if-ink); font:inherit; font-size:9px; cursor:pointer; }
.ifspace-generation-preset-editor > div:last-child button:last-child { background:var(--if-ink); color:var(--if-paper); }

/* 同人文用户绑定与正文排版。 */
.fanfic-chapter textarea { text-indent:2em; }
.fanfic-chapter-paragraphs { display:grid; gap:10px; margin-top:12px; }
.fanfic-chapter-paragraphs textarea { margin-top:0; }
.fanfic-reader-page { background:var(--fanfic-reader-background); color:var(--fanfic-reader-text); }
.fanfic-reader-page .fanfic-header { background:color-mix(in srgb, var(--fanfic-reader-background) 88%, transparent); color:var(--fanfic-reader-text); }
.fanfic-reader-page .fanfic-header h1,.fanfic-reader-page .fanfic-header p,.fanfic-reader-page .fanfic-header button { color:var(--fanfic-reader-text); }
.fanfic-reader-main { position:relative; min-height:calc(100% - 82px); padding:16px 20px 28px; background:var(--fanfic-reader-background); color:var(--fanfic-reader-text); }
.fanfic-reader-tools { display:flex; justify-content:flex-end; gap:6px; margin:0 auto 15px; max-width:660px; }
.fanfic-reader-tools button,.fanfic-reader-settings button { min-height:29px; padding:0 9px; border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 22%, transparent); border-radius:8px; background:transparent; color:var(--fanfic-reader-text); font:inherit; font-size:9px; cursor:pointer; }
.fanfic-reader-settings { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; max-width:660px; margin:0 auto 15px; padding:12px; border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 16%, transparent); border-radius:13px; background:color-mix(in srgb, var(--fanfic-reader-background) 88%, #888 12%); }
.fanfic-reader-settings label { display:grid; gap:5px; color:var(--fanfic-reader-text); font-size:9px; }
.fanfic-reader-settings select { min-height:30px; padding:0 7px; border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent); border-radius:7px; background:transparent; color:var(--fanfic-reader-text); font:inherit; font-size:9px; }
.fanfic-reader-font-size { display:flex; align-items:center; gap:7px; }
.fanfic-reader-font-size b { min-width:42px; text-align:center; font-size:9px; }
.fanfic-reader-night { grid-column:1 / -1; justify-self:start; }
.fanfic-reader-book { max-width:660px; min-height:calc(100vh - 285px); margin:0 auto; padding:26px clamp(18px,5vw,52px) 36px; background:var(--fanfic-reader-background); }
.fanfic-reader-chapter-mark { color:color-mix(in srgb, var(--fanfic-reader-text) 55%, transparent); font:700 9px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.18em; }
.fanfic-reader-book h2 { margin:12px 0 30px; color:var(--fanfic-reader-text); font-size:clamp(22px,5vw,31px); font-weight:600; line-height:1.35; }
.fanfic-reader-text { color:var(--fanfic-reader-text); font-family:Georgia,"Songti SC","Noto Serif CJK SC",serif; font-size:var(--fanfic-reader-size); line-height:2.05; }
.fanfic-reader-text p { margin:0 0 1.35em; text-indent:2em; }
.fanfic-reader-page-title { display:none; }
[data-reader-mode="page"] .fanfic-reader-book > h2 { display:none; }
[data-reader-mode="page"] .fanfic-reader-page-title {
  display:block;
  margin:0 0 30px;
  color:var(--fanfic-reader-text);
  font-family:inherit;
  font-size:clamp(22px,5vw,31px);
  font-weight:600;
  line-height:1.35;
}
[data-reader-mode="page"] .fanfic-reader-text { height:calc(100vh - 330px); overflow-x:auto; overflow-y:hidden; column-width:min(660px,calc(100vw - 80px)); column-gap:40px; column-fill:auto; scroll-snap-type:x mandatory; scrollbar-width:none; }
[data-reader-mode="page"] .fanfic-reader-text::-webkit-scrollbar { display:none; }
[data-reader-mode="page"] .fanfic-reader-text p { break-inside:auto; scroll-snap-align:start; }
.fanfic-reader-page-arrows { display:none; align-items:center; justify-content:space-between; max-width:660px; margin:0 auto 13px; }
[data-reader-mode="page"] .fanfic-reader-page-arrows { display:flex; }
.fanfic-reader-page-arrows button { display:grid; place-items:center; width:32px; height:32px; border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 25%, transparent); border-radius:50%; background:transparent; color:var(--fanfic-reader-text); font-size:21px; cursor:pointer; }
.fanfic-reader-page-arrows span { color:color-mix(in srgb, var(--fanfic-reader-text) 55%, transparent); font-size:9px; }
.fanfic-reader-progress { position:sticky; bottom:0; z-index:3; display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:10px; max-width:660px; margin:0 auto; padding:11px 0 3px; background:var(--fanfic-reader-background); }
.fanfic-reader-progress > button { min-height:28px; padding:0 8px; border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 24%, transparent); border-radius:7px; background:transparent; color:var(--fanfic-reader-text); font:inherit; font-size:9px; cursor:pointer; }
.fanfic-reader-progress > button:disabled { opacity:.35; cursor:not-allowed; }
.fanfic-reader-progress > div { display:grid; gap:5px; min-width:0; }
.fanfic-reader-progress-track { height:3px; overflow:hidden; border-radius:4px; background:color-mix(in srgb, var(--fanfic-reader-text) 14%, transparent); }
.fanfic-reader-progress-track i { display:block; height:100%; border-radius:inherit; background:var(--fanfic-reader-text); }
.fanfic-reader-progress small { color:color-mix(in srgb, var(--fanfic-reader-text) 60%, transparent); font-size:8px; text-align:center; }
.fanfic-reader-catalog { position:absolute; top:57px; right:20px; left:20px; z-index:5; display:grid; gap:5px; max-height:70vh; overflow-y:auto; padding:14px; border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent); border-radius:14px; background:var(--fanfic-reader-background); box-shadow:0 14px 35px rgba(40,30,20,.16); }
.fanfic-reader-catalog-head { display:flex; align-items:center; justify-content:space-between; padding-bottom:7px; border-bottom:1px solid color-mix(in srgb, var(--fanfic-reader-text) 13%, transparent); color:var(--fanfic-reader-text); }
.fanfic-reader-catalog-head button { width:25px; height:25px; border:0; background:transparent; color:var(--fanfic-reader-text); font-size:18px; cursor:pointer; }
.fanfic-reader-catalog > button { display:flex; align-items:center; gap:10px; width:100%; min-height:36px; padding:0 7px; border:0; background:transparent; color:var(--fanfic-reader-text); font:inherit; text-align:left; cursor:pointer; }
.fanfic-reader-catalog > button span { width:22px; color:color-mix(in srgb, var(--fanfic-reader-text) 48%, transparent); font:700 8px ui-monospace,SFMono-Regular,Menlo,monospace; }
.fanfic-reader-catalog > button b { min-width:0; font-size:10px; line-height:1.6; white-space:normal; overflow-wrap:anywhere; text-align:left; }
.fanfic-reader-catalog > button.is-current { background:color-mix(in srgb, var(--fanfic-reader-text) 10%, transparent); }
@media (max-width:520px) { .fanfic-reader-main { padding-right:14px; padding-left:14px; }.fanfic-reader-settings { grid-template-columns:1fr; }.fanfic-reader-night { grid-column:auto; }.fanfic-reader-book { padding-right:8px; padding-left:8px; }.fanfic-reader-catalog { right:14px; left:14px; } }

/* 阅读页：设置与进度固定在底栏。 */
.fanfic-reader-dock {
  position:sticky;
  bottom:0;
  z-index:4;
  max-width:660px;
  margin:0 auto;
  padding:10px 0 max(8px, env(safe-area-inset-bottom));
  background:var(--fanfic-reader-background);
  border-top:1px solid color-mix(in srgb, var(--fanfic-reader-text) 14%, transparent);
}
.fanfic-reader-dock .fanfic-reader-settings {
  grid-template-columns:repeat(4,minmax(0,1fr));
  max-width:none;
  margin:0;
  padding:0 0 9px;
  border:0;
  border-radius:0;
  background:transparent;
}
.fanfic-reader-dock .fanfic-reader-progress {
  position:static;
  max-width:none;
  margin:0;
  padding:0;
  background:transparent;
}
@media (max-width:520px) {
  .fanfic-reader-dock { padding-right:2px; padding-left:2px; }
  .fanfic-reader-dock .fanfic-reader-settings { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .fanfic-reader-dock .fanfic-reader-night { grid-column:1 / -1; }
}

/* 同人文首页与设定页统一为黑白灰，不使用紫色强调色。 */
.fanfic-app {
  background:#eeeeee;
  color:#2b2b2b;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) {
  background:linear-gradient(155deg,#fafafa 0%,#ededed 100%);
  color:#2b2b2b;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-header {
  border-color:rgba(0,0,0,.1);
  background:rgba(248,248,248,.94);
  color:#222;
  -webkit-backdrop-filter:blur(22px) saturate(100%);
  backdrop-filter:blur(22px) saturate(100%);
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-header h1,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-section-head h2,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setup-title h2,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-settings-head h2 {
  color:#222;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-header p,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-kicker,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setup-title > span,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-settings-head > div > span,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-section-head > div > span,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-section-head > b,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setup-title p,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-local-note,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-empty,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-details p,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-head small {
  color:#888;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-header button {
  background:rgba(0,0,0,.06);
  color:#555;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setup-card,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-settings,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter {
  border-color:rgba(0,0,0,.1);
  background:rgba(255,255,255,.78);
  color:#333;
  box-shadow:0 7px 18px rgba(0,0,0,.04);
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-character-chip,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-cast span,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setting-tags span,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setup-actions button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-settings-head button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter > button {
  border-color:rgba(0,0,0,.1);
  background:#e4e4e4;
  color:#555;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-empty { border-color:rgba(0,0,0,.16); }
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setting-field,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-details b { color:#666; }
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setting-field input,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setting-field select,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setting-field textarea,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-character-picker select,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter textarea {
  border-color:rgba(0,0,0,.14);
  background:rgba(255,255,255,.86);
  color:#333;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setting-field input::placeholder,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setting-field textarea::placeholder { color:#aaa; }
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-character-chip button {
  background:rgba(0,0,0,.08);
  color:#666;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-setup-actions .fanfic-primary-action,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapters .fanfic-section-head > button {
  background:#333;
  color:#fff;
  box-shadow:0 7px 15px rgba(0,0,0,.12);
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-add-chapter,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-title-tools button {
  border-color:rgba(0,0,0,.2);
  color:#555;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-title-tools > div button:first-child { background:#333; color:#fff; }
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-story-details { border-top-color:rgba(0,0,0,.1); }
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-title-tools input,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-title-tools textarea {
  border-color:rgba(0,0,0,.14);
  background:rgba(255,255,255,.86);
  color:#333;
}

/* 阅读页底部工具：默认只露出贴边毛玻璃圆，展开后再显示 Dock 与设置面板。 */
.fanfic-reader-dock {
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:0;
  padding:0;
  background:transparent;
  border:0;
  pointer-events:none;
}
.fanfic-reader-dock.is-open {
  align-items:stretch;
  gap:8px;
  padding:10px 0 max(8px,env(safe-area-inset-bottom));
  background:color-mix(in srgb, var(--fanfic-reader-background) 86%, transparent);
  border-top:1px solid color-mix(in srgb, var(--fanfic-reader-text) 14%, transparent);
  -webkit-backdrop-filter:blur(18px) saturate(115%);
  backdrop-filter:blur(18px) saturate(115%);
  pointer-events:auto;
}
.fanfic-reader-dock-toggle {
  display:grid;
  place-items:center;
  width:40px;
  height:40px;
  margin-left:auto;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 24%, transparent);
  border-radius:50%;
  background:color-mix(in srgb, var(--fanfic-reader-background) 58%, transparent);
  color:var(--fanfic-reader-text);
  box-shadow:0 5px 18px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.42);
  -webkit-backdrop-filter:blur(18px) saturate(135%);
  backdrop-filter:blur(18px) saturate(135%);
  font:inherit;
  font-size:18px;
  line-height:1;
  cursor:pointer;
  pointer-events:auto;
}
.fanfic-reader-dock.is-open .fanfic-reader-dock-toggle { align-self:flex-end; }
.fanfic-reader-dock-bar {
  display:flex;
  justify-content:flex-end;
  gap:6px;
  flex-wrap:wrap;
}
.fanfic-reader-dock-bar button {
  min-height:29px;
  padding:0 10px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 22%, transparent);
  border-radius:8px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 64%, transparent);
  color:var(--fanfic-reader-text);
  font:inherit;
  font-size:9px;
  cursor:pointer;
}
.fanfic-reader-dock .fanfic-reader-settings {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  max-width:none;
  margin:0;
  padding:11px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 17%, transparent);
  border-radius:14px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 62%, transparent);
  box-shadow:0 10px 28px rgba(0,0,0,.1),inset 0 1px 0 rgba(255,255,255,.35);
  -webkit-backdrop-filter:blur(20px) saturate(125%);
  backdrop-filter:blur(20px) saturate(125%);
}
.fanfic-reader-dock .fanfic-reader-settings .fanfic-reader-night { grid-column:1 / -1; }
@media (max-width:520px) {
  .fanfic-reader-dock-bar { justify-content:space-between; }
  .fanfic-reader-dock-bar button { flex:1; min-width:0; padding-right:6px; padding-left:6px; }
  .fanfic-reader-dock .fanfic-reader-settings { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* 阅读正文铺满页面，不显示左右翻页按钮和提示文字。 */
.fanfic-reader-page .fanfic-reader-page-arrows { display:none !important; }
.fanfic-reader-page .fanfic-reader-book {
  width:100%;
  max-width:none;
  min-height:calc(100vh - 190px);
  padding-right:clamp(18px,6vw,64px);
  padding-left:clamp(18px,6vw,64px);
}
.fanfic-reader-page .fanfic-reader-text { width:100%; max-width:none; }

/* Dock 从右侧圆钮向左横向展开：左右是圆端，中间是直栏。 */
.fanfic-reader-dock.is-open {
  display:grid;
  grid-template-columns:minmax(0,1fr) 40px;
  grid-template-rows:auto auto auto;
  align-items:end;
  gap:7px 0;
  padding:8px 0 max(8px,env(safe-area-inset-bottom));
  background:transparent;
  border:0;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
.fanfic-reader-dock.is-open .fanfic-reader-dock-toggle {
  grid-column:2;
  grid-row:1 / -1;
  align-self:end;
  margin-left:0;
}
.fanfic-reader-dock.is-open .fanfic-reader-dock-bar {
  grid-column:1;
  grid-row:1;
  justify-content:flex-end;
  min-height:40px;
  padding:5px 9px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent);
  border-right:0;
  border-radius:22px 0 0 22px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 62%, transparent);
  -webkit-backdrop-filter:blur(18px) saturate(125%);
  backdrop-filter:blur(18px) saturate(125%);
}
.fanfic-reader-dock.is-open .fanfic-reader-settings {
  grid-column:1;
  grid-row:2;
  width:100%;
  box-sizing:border-box;
}
.fanfic-reader-dock.is-open .fanfic-reader-progress {
  grid-column:1;
  grid-row:3;
  width:100%;
  box-sizing:border-box;
  padding:5px 9px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent);
  border-right:0;
  border-radius:22px 0 0 22px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 62%, transparent);
  -webkit-backdrop-filter:blur(18px) saturate(125%);
  backdrop-filter:blur(18px) saturate(125%);
}

/* 章节草稿：纯黑白灰，每个段落独立成框。 */
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-head > span,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-head small { color:#777; }
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-head input {
  border-bottom-color:rgba(0,0,0,.18);
  color:#222;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-paragraphs { gap:10px; }
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-paragraphs textarea {
  box-sizing:border-box;
  margin:0;
  border:1px solid rgba(0,0,0,.16);
  border-radius:10px;
  background:#fff;
  color:#2b2b2b;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 2px 7px rgba(0,0,0,.04);
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-actions button {
  border:1px solid rgba(0,0,0,.14);
  background:#e2e2e2;
  color:#444;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-actions button:first-child { background:#333; color:#fff; }

/* 阅读壁纸：图片铺在阅读页底层，正文与工具保持半透明毛玻璃。 */
.fanfic-reader-page {
  position:relative;
  overflow-anchor:none;
  background-color:transparent !important;
  background-image:linear-gradient(color-mix(in srgb, var(--fanfic-reader-background) 28%, transparent),color-mix(in srgb, var(--fanfic-reader-background) 28%, transparent)),var(--fanfic-reader-wallpaper-image,none) !important;
  background-position:center;
  background-size:cover;
  background-attachment:fixed;
}
.fanfic-reader-page::before {
  position:fixed;
  top:0;
  left:50%;
  width:min(100vw,720px);
  height:100vh;
  z-index:0;
  display:block;
  background:var(--fanfic-reader-wallpaper-image,none) center/cover no-repeat;
  opacity:.82;
  transform:translateX(-50%);
  content:'';
  pointer-events:none;
}
.fanfic-reader-page > .fanfic-header,
.fanfic-reader-page > .fanfic-reader-main { position:relative; z-index:1; }
.fanfic-reader-page .fanfic-reader-main,
.fanfic-reader-page .fanfic-reader-book {
  background:transparent !important;
}
.fanfic-reader-page .fanfic-reader-book {
  -webkit-backdrop-filter:blur(2px);
  backdrop-filter:blur(2px);
}
.fanfic-reader-page .fanfic-reader-main::before {
  display:none;
}
.fanfic-reader-wallpaper-field { grid-column:1 / -1; }
.fanfic-reader-wallpaper-controls {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  gap:6px;
}
.fanfic-reader-wallpaper-controls input {
  min-width:0;
  height:30px;
  padding:0 8px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent);
  border-radius:7px;
  outline:0;
  background:transparent;
  color:var(--fanfic-reader-text);
  font:inherit;
  font-size:9px;
}
.fanfic-reader-wallpaper-controls button,
.fanfic-reader-wallpaper-file {
  display:inline-grid;
  place-items:center;
  min-height:30px;
  padding:0 8px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 22%, transparent);
  border-radius:7px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 54%, transparent);
  color:var(--fanfic-reader-text);
  font:inherit;
  font-size:9px;
  white-space:nowrap;
  cursor:pointer;
}
.fanfic-reader-wallpaper-file input { display:none; }
.fanfic-reader-wallpaper-controls button:last-child { grid-column:1 / -1; justify-self:start; }
@media (max-width:520px) {
  .fanfic-reader-wallpaper-controls { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .fanfic-reader-wallpaper-controls input { grid-column:1 / -1; }
  .fanfic-reader-wallpaper-controls button:last-child { grid-column:auto; }
  .fanfic-reader-wallpaper-file { min-width:0; }
}

/* 阅读顶栏与展开后的 Dock 使用透出背景的强毛玻璃。 */
.fanfic-reader-page .fanfic-header {
  background:color-mix(in srgb, var(--fanfic-reader-background) 32%, transparent);
  border-bottom:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent);
  box-shadow:0 6px 20px rgba(0,0,0,.08),inset 0 1px 0 rgba(255,255,255,.42);
  -webkit-backdrop-filter:blur(24px) saturate(150%);
  backdrop-filter:blur(24px) saturate(150%);
}
.fanfic-reader-dock.is-open {
  display:block;
  max-width:none;
  padding:0 0 max(9px,env(safe-area-inset-bottom));
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
.fanfic-reader-dock:not(.is-open) { width:100%; max-width:none; }
.fanfic-reader-dock.is-open .fanfic-reader-dock-toggle { display:none; }
.fanfic-reader-dock.is-open .fanfic-reader-dock-bar,
.fanfic-reader-dock.is-open .fanfic-reader-settings,
.fanfic-reader-dock.is-open .fanfic-reader-progress {
  width:100%;
  box-sizing:border-box;
}
.fanfic-reader-dock.is-open .fanfic-reader-dock-bar {
  min-height:40px;
  padding:5px 8px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent);
  border-radius:18px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 34%, transparent);
  -webkit-backdrop-filter:blur(24px) saturate(145%);
  backdrop-filter:blur(24px) saturate(145%);
}
.fanfic-reader-progress[hidden] { display:none !important; }
.fanfic-reader-dock.is-open .fanfic-reader-settings {
  margin-top:8px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 34%, transparent);
}
.fanfic-reader-dock.is-open .fanfic-reader-progress {
  margin-top:8px;
  padding:5px 8px;
  border:1px solid color-mix(in srgb, var(--fanfic-reader-text) 18%, transparent);
  border-radius:18px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 34%, transparent);
  -webkit-backdrop-filter:blur(24px) saturate(145%);
  backdrop-filter:blur(24px) saturate(145%);
}

/* Dock 操作按钮：参考系统胶囊栏，图标在上、文字在下。 */
.fanfic-reader-dock.is-open .fanfic-reader-dock-bar {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:3px;
  min-height:82px;
  padding:8px 10px;
  border-radius:28px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 34%, transparent);
  box-shadow:0 10px 28px rgba(0,0,0,.08),inset 0 1px 0 rgba(255,255,255,.42);
  -webkit-backdrop-filter:blur(24px) saturate(145%);
  backdrop-filter:blur(24px) saturate(145%);
}
.fanfic-reader-dock.has-panel .fanfic-reader-dock-bar { display:none !important; }
.fanfic-reader-dock.has-panel .fanfic-reader-catalog {
  position:static;
  width:100%;
  max-height:60vh;
  box-sizing:border-box;
  margin:0 0 8px;
  background:color-mix(in srgb, var(--fanfic-reader-background) 34%, transparent);
  -webkit-backdrop-filter:blur(24px) saturate(145%);
  backdrop-filter:blur(24px) saturate(145%);
}
.fanfic-reader-dock-bar button {
  display:grid;
  place-items:center;
  align-content:center;
  gap:6px;
  min-width:0;
  min-height:66px;
  padding:5px 3px;
  border:0;
  border-radius:18px;
  background:transparent;
  color:color-mix(in srgb, var(--fanfic-reader-text) 58%, transparent);
  font:inherit;
  font-size:9px;
  cursor:pointer;
}
.fanfic-reader-dock-bar button:hover,
.fanfic-reader-dock-bar button[aria-pressed="true"] {
  background:color-mix(in srgb, var(--fanfic-reader-text) 8%, transparent);
  color:var(--fanfic-reader-text);
}
.fanfic-reader-dock-bar button svg {
  width:24px;
  height:24px;
  fill:none;
  stroke:currentColor;
  stroke-linecap:round;
  stroke-linejoin:round;
  stroke-width:1.65;
}
.fanfic-reader-dock-bar button span { line-height:1; }

/* 阅读 Dock 固定在视口底部，展开时不再改变正文流和壁纸位置。 */
.fanfic-reader-page .fanfic-reader-dock {
  position:fixed;
  right:auto;
  bottom:0;
  left:50%;
  width:100%;
  max-width:none;
  margin:0;
  transform:translateX(-50%);
}
.fanfic-reader-page .fanfic-reader-dock.is-open {
  width:calc(100% - 28px);
  max-width:520px;
}
.fanfic-reader-page .fanfic-reader-dock:not(.is-open) {
  left:auto;
  right:20px;
  bottom:84px;
  width:40px;
  transform:none;
}
.fanfic-reader-dock:not(.is-open) .fanfic-reader-dock-toggle { touch-action:none; }

/* 壁纸操作：输入框单独一行，四个操作按钮保持一排。 */
.fanfic-reader-wallpaper-controls {
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.fanfic-reader-wallpaper-controls input { grid-column:1 / -1; }
.fanfic-reader-wallpaper-controls button,
.fanfic-reader-wallpaper-file {
  min-width:0;
  padding-right:4px;
  padding-left:4px;
  overflow:hidden;
  text-overflow:ellipsis;
  font-size:8px;
}
.fanfic-reader-wallpaper-controls button:last-child {
  grid-column:auto;
  justify-self:stretch;
}
@media (max-width:520px) {
  .fanfic-reader-wallpaper-controls { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .fanfic-reader-wallpaper-controls input { grid-column:1 / -1; }
  .fanfic-reader-wallpaper-controls button:last-child { grid-column:auto; }
}

/* 章节草稿只保留可编辑文字，不给每段套圆角卡片。 */
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-chapter-paragraphs textarea {
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

/* 阅读正文不再被整屏最小高度撑出大片空白，只为底部固定 Dock 留出安全间距。 */
.fanfic-reader-page .fanfic-reader-main {
  min-height:0;
  padding-bottom:calc(70px + env(safe-area-inset-bottom));
}
.fanfic-reader-page .fanfic-reader-book {
  min-height:0;
  padding-bottom:28px;
}

/* 圆形 Dock 收起时，正文最后一段可以贴近页面底部；展开栏时再预留操作栏高度。 */
.fanfic-reader-page .fanfic-reader-main {
  padding-bottom:8px !important;
}
.fanfic-reader-page .fanfic-reader-book {
  padding-bottom:0 !important;
}
.fanfic-reader-page .fanfic-reader-text p:last-child {
  margin-bottom:0;
}
.fanfic-reader-page:has(.fanfic-reader-dock.is-open) .fanfic-reader-main {
  padding-bottom:110px !important;
}
.fanfic-reader-page .fanfic-reader-main { padding-right:0; padding-left:0; }
.fanfic-reader-page .fanfic-reader-book {
  padding-right:var(--fanfic-reader-margin,16px);
  padding-left:var(--fanfic-reader-margin,16px);
}
.fanfic-reader-page [data-reader-mode="page"] .fanfic-reader-text p {
  margin-bottom:.8em;
  break-before:auto;
  break-after:auto;
  break-inside:auto !important;
  -webkit-column-break-inside:auto;
  overflow-wrap:anywhere;
  orphans:1;
  widows:1;
}
.fanfic-reader-dock-bar button svg {
  width:23px;
  height:23px;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}

/* 翻页正文占满顶栏以下的可用屏幕，每次只展示一个整页列。 */
.fanfic-reader-page [data-reader-mode="page"].fanfic-reader-main { padding-top:0; }
.fanfic-reader-page [data-reader-mode="page"] .fanfic-reader-book { padding-top:16px; }
.fanfic-reader-page [data-reader-mode="page"] .fanfic-reader-text {
  height:calc(100dvh - 150px);
  min-height:240px;
  column-width:var(--fanfic-reader-page-width, 100vw);
  column-gap:0;
  overflow-x:hidden;
  touch-action:pan-y;
  scroll-snap-type:none;
}
.fanfic-reader-page [data-reader-mode="page"] .fanfic-reader-text p { scroll-snap-align:none; }

/* 有壁纸时，阅读层只模糊底图，不混入预设的白、绿等背景色。 */
.fanfic-reader-page.has-wallpaper { background-image:var(--fanfic-reader-wallpaper-image,none) !important; }
.fanfic-reader-page.has-wallpaper .fanfic-header,
.fanfic-reader-page.has-wallpaper .fanfic-reader-dock-toggle,
.fanfic-reader-page.has-wallpaper .fanfic-reader-dock.is-open .fanfic-reader-dock-bar,
.fanfic-reader-page.has-wallpaper .fanfic-reader-dock.is-open .fanfic-reader-settings,
.fanfic-reader-page.has-wallpaper .fanfic-reader-dock.is-open .fanfic-reader-progress,
.fanfic-reader-page.has-wallpaper .fanfic-reader-dock.has-panel .fanfic-reader-catalog {
  background:transparent;
  -webkit-backdrop-filter:blur(24px) saturate(135%);
  backdrop-filter:blur(24px) saturate(135%);
}
.fanfic-reader-page > .fanfic-header {
  position:sticky;
  top:0;
  z-index:6;
}
.fanfic-app .fanfic-reader-page.has-wallpaper > .fanfic-header {
  background:rgba(255,255,255,.08) !important;
  -webkit-backdrop-filter:blur(24px) saturate(135%);
  backdrop-filter:blur(24px) saturate(135%);
}
.fanfic-app.is-wallpaper-dark .fanfic-reader-page.has-wallpaper > .fanfic-header {
  background:rgba(0,0,0,.08) !important;
}
.fanfic-app .fanfic-reader-page.has-wallpaper .fanfic-reader-settings :is(select,input,button),
.fanfic-app .fanfic-reader-page.has-wallpaper .fanfic-reader-settings .fanfic-reader-wallpaper-file {
  background:transparent !important;
  color:var(--fanfic-reader-text) !important;
  -webkit-text-fill-color:var(--fanfic-reader-text) !important;
  box-shadow:none !important;
}
.fanfic-reader-page .fanfic-reader-catalog > button {
  display:grid;
  grid-template-columns:28px minmax(0,1fr);
  align-items:center;
  height:auto;
  min-height:34px;
  padding:8px 7px;
  white-space:normal;
}
.fanfic-reader-page .fanfic-reader-catalog {
  grid-auto-rows:min-content;
  align-content:start;
}
.fanfic-reader-page .fanfic-reader-catalog > button span {
  width:auto;
  font-size:10px;
  line-height:16px;
}
.fanfic-reader-page .fanfic-reader-catalog > button b {
  display:block;
  width:100%;
  overflow:visible;
  text-overflow:clip;
  white-space:normal;
  overflow-wrap:anywhere;
  line-height:16px;
}

/* 辩论记录管理 */
.debate-history-tools { display:flex; align-items:center; gap:7px; }
.debate-history-manage-actions { display:flex; align-items:center; gap:5px; }
.debate-history-manage-actions button, .debate-history-manage-button { min-height:27px; padding:0 8px; border:1px solid rgba(0,0,0,.1); border-radius:8px; background:rgba(255,255,255,.58); color:#666; font:inherit; font-size:9px; cursor:pointer; }
.debate-history-manage-actions button:last-child { border-color:rgba(150,60,60,.18); color:#9a4c4c; }
.debate-history-manage-actions button:disabled { opacity:.45; cursor:not-allowed; }
.debate-history-card.is-managing { cursor:pointer; }
.debate-history-card.is-selected { border-color:rgba(80,100,125,.5); background:rgba(225,232,240,.72); }
.debate-history-card.is-managing > input { flex:0 0 auto; width:16px; height:16px; margin:0 1px 0 0; accent-color:#586b82; }
.debate-history-card.is-managing > .debate-history-mark { flex:0 0 39px; }
.debate-history-card.is-managing > span:nth-of-type(2) { display:grid; flex:1; min-width:0; gap:5px; }
@media not all {
  .debate-history-manage-actions button, .debate-history-manage-button { border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.09); color:#ddd; }
  .debate-history-manage-actions button:last-child { border-color:rgba(220,130,130,.25); color:#e0a3a3; }
  .debate-history-card.is-selected { border-color:rgba(180,200,225,.55); background:rgba(90,110,135,.28); }
}

/* 聊天输入栏：发送与回复按钮默认隐藏，仅在输入框聚焦或按键交互期间出现。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-send,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply {
  display:none !important;
  place-items:center !important;
  flex:0 0 42px !important;
  width:42px !important;
  min-width:42px !important;
  height:42px !important;
  min-height:42px !important;
  padding:0 !important;
  border-radius:50% !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap:is(.has-input-focus,.is-chat-action-press) .chat-compose > .chat-send,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap:is(.has-input-focus,.is-chat-action-press) .chat-compose > .chat-reply {
  display:grid !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-send .chat-action-icon,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply .chat-action-icon {
  display:block !important;
  margin:0 !important;
  color:#8d949d !important;
  transform:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-send::before,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply::before {
  content:none !important;
  display:none !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-send .chat-action-icon {
  width:21px !important;
  height:21px !important;
  fill:none !important;
  stroke:currentColor !important;
  stroke-width:2.35 !important;
}
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-reply .chat-action-icon {
  width:20px !important;
  height:20px !important;
  fill:currentColor !important;
  stroke:none !important;
}

/* 聊天顶栏跟随当前壁纸明暗自动换色：返回、未读数、网名、更多按钮保持同一对比度。 */
.chat-app.is-chatting.chat-wallpaper-dark .chat-header :is(.chat-top-back,.chat-top-back-wrap,.chat-top-name,.chat-top-settings),
.chat-app.is-chatting.chat-wallpaper-dark .chat-header :is(.chat-top-back,.chat-top-settings) svg,
.chat-app.is-chatting.chat-wallpaper-dark .chat-header .chat-back-unread-badge {
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
  stroke:currentColor !important;
  text-shadow:0 1px 3px rgba(0,0,0,.5) !important;
}
.chat-app.is-chatting.chat-wallpaper-light .chat-header :is(.chat-top-back,.chat-top-back-wrap,.chat-top-name,.chat-top-settings),
.chat-app.is-chatting.chat-wallpaper-light .chat-header :is(.chat-top-back,.chat-top-settings) svg,
.chat-app.is-chatting.chat-wallpaper-light .chat-header .chat-back-unread-badge {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  stroke:currentColor !important;
  text-shadow:0 1px 2px rgba(255,255,255,.55) !important;
}

/* 消息选择/编辑状态：白色顶栏与操作条上下分层，退出状态后由原壁纸样式接管。 */
.chat-app.is-chatting.is-message-editing .chat-header,
.chat-app.is-chatting.is-message-editing:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header {
  background:#fff !important;
  background-image:none !important;
  box-shadow:none !important;
}
.chat-app.is-chatting.is-message-editing .chat-header :is(.chat-top-back,.chat-top-back-wrap,.chat-top-name,.chat-top-settings,.chat-back-unread-badge),
.chat-app.is-chatting.is-message-editing .chat-header :is(.chat-top-back,.chat-top-settings) svg {
  color:#222 !important;
  -webkit-text-fill-color:#222 !important;
  stroke:currentColor !important;
  text-shadow:none !important;
}
.chat-app.is-chatting.is-message-editing .chat-conversation > .chat-message-editbar {
  position:relative;
  z-index:19;
  order:-1;
  flex:0 0 auto;
  box-sizing:border-box;
  width:100%;
  min-height:44px;
  margin-top:calc(48px + env(safe-area-inset-top)) !important;
  border-top:1px solid #ededed;
  border-bottom:1px solid #e8e8e8;
  background:#fff !important;
  color:#666 !important;
}
.chat-app.is-chatting.is-message-editing .chat-conversation > .chat-messages {
  margin-top:0 !important;
}

/* 沉浸式聊天顶栏：图标随壁纸换色，但按钮本身始终完全透明。 */
.chat-app.is-chatting .chat-header :is(.chat-top-back,.chat-top-settings),
.chat-app.is-chatting:is(.chat-wallpaper-dark,.chat-wallpaper-light) .chat-header :is(.chat-top-back,.chat-top-settings),
.chat-app.is-chatting.is-message-editing .chat-header :is(.chat-top-back,.chat-top-settings) {
  border:0 !important;
  background:transparent !important;
  background-color:transparent !important;
  background-image:none !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}

/* 同人文阅读页 Dock：与聊天 App 首页统一为纯图标毛玻璃胶囊。 */
.fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) {
  right:auto !important;
  bottom:max(24px,env(safe-area-inset-bottom)) !important;
  left:50% !important;
  box-sizing:border-box !important;
  width:min(calc(100% - 24px),696px) !important;
  max-width:none !important;
  height:64px !important;
  margin:0 !important;
  padding:7px 14px !important;
  border:1px solid rgba(255,255,255,.58) !important;
  border-radius:999px !important;
  overflow:visible !important;
  background:rgba(255,255,255,.34) !important;
  background-image:none !important;
  box-shadow:0 8px 26px rgba(25,31,40,.14),inset 0 1px 0 rgba(255,255,255,.72) !important;
  transform:translateX(-50%) !important;
  -webkit-backdrop-filter:blur(28px) saturate(155%) !important;
  backdrop-filter:blur(28px) saturate(155%) !important;
}
.fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) .fanfic-reader-dock-bar {
  display:flex !important;
  align-items:center !important;
  justify-content:space-around !important;
  gap:0 !important;
  width:100% !important;
  height:48px !important;
  min-height:48px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) .fanfic-reader-dock-bar button,
.fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) .fanfic-reader-dock-bar button:hover,
.fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) .fanfic-reader-dock-bar button[aria-pressed="true"] {
  display:grid !important;
  place-items:center !important;
  flex:0 0 48px !important;
  width:48px !important;
  min-width:48px !important;
  height:48px !important;
  min-height:48px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:50% !important;
  background:transparent !important;
  background-image:none !important;
  color:#333 !important;
  box-shadow:none !important;
  filter:none !important;
}
.fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) .fanfic-reader-dock-bar button span {
  display:none !important;
}
.fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) .fanfic-reader-dock-bar button svg {
  width:25px !important;
  height:25px !important;
  stroke:currentColor !important;
  stroke-width:1.8 !important;
}
.fanfic-app.is-wallpaper-dark .fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) {
  border-color:rgba(255,255,255,.2) !important;
  background:rgba(28,28,30,.34) !important;
  box-shadow:0 6px 22px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.14) !important;
}
.fanfic-app.is-wallpaper-dark .fanfic-reader-page .fanfic-reader-dock.is-open:not(.has-panel) .fanfic-reader-dock-bar button {
  color:#fff !important;
}

/* Dock 展开面板与 Dock 本体使用完全一致的毛玻璃参数。 */
.fanfic-reader-page .fanfic-reader-dock.has-panel :is(.fanfic-reader-settings,.fanfic-reader-progress,.fanfic-reader-catalog) {
  border:1px solid rgba(255,255,255,.58) !important;
  background:rgba(255,255,255,.34) !important;
  box-shadow:0 8px 26px rgba(25,31,40,.14),inset 0 1px 0 rgba(255,255,255,.72) !important;
  -webkit-backdrop-filter:blur(28px) saturate(155%) !important;
  backdrop-filter:blur(28px) saturate(155%) !important;
}
.fanfic-app.is-wallpaper-dark .fanfic-reader-page .fanfic-reader-dock.has-panel :is(.fanfic-reader-settings,.fanfic-reader-progress,.fanfic-reader-catalog) {
  border-color:rgba(255,255,255,.2) !important;
  background:rgba(28,28,30,.34) !important;
  box-shadow:0 8px 26px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.14) !important;
}

/* 聊天输入框：输入框获得焦点时，表情按钮仍需保持可见、可点击。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > .chat-emoji,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap.has-input-focus .chat-compose > .chat-emoji,
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap.is-chat-action-press .chat-compose > .chat-emoji {
  display:grid !important;
  visibility:visible !important;
  pointer-events:auto !important;
}

/* 表情面板从底部升起，输入栏作为紧邻面板的上一行。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap > .chat-emoji-panel {
  position:relative !important;
  order:2 !important;
  right:0 !important;
  bottom:auto !important;
  left:0 !important;
  flex:0 0 300px !important;
  width:100% !important;
  height:300px !important;
  min-height:300px !important;
  margin:0 !important;
  transform:translateY(100%);
  z-index:6 !important;
  box-sizing:border-box !important;
  padding-bottom:12px !important;
  visibility:visible !important;
  opacity:1 !important;
  pointer-events:auto !important;
  animation:chat-emoji-panel-rise .22s ease-out both !important;
}
.chat-app.is-chatting.is-emoji-open .chat-conversation > .chat-compose-wrap .chat-compose {
  display:flex !important;
  position:relative !important;
  order:1 !important;
  right:0 !important;
  bottom:auto !important;
  left:0 !important;
  box-sizing:border-box !important;
  flex:0 0 72px !important;
  width:100% !important;
  min-height:72px !important;
  margin:0 !important;
  padding:12px 14px !important;
  border-bottom:1px solid rgba(0,0,0,.08) !important;
  background:transparent !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
  transform:none !important;
  z-index:8 !important;
  visibility:visible !important;
  pointer-events:auto !important;
}
.chat-app.is-chatting.is-emoji-open .chat-conversation > .chat-compose-wrap {
  display:flex !important;
  flex:0 0 auto !important;
  flex-direction:column !important;
  gap:0 !important;
  height:auto !important;
  min-height:0 !important;
  padding:0 !important;
  background:transparent !important;
  border-top:0 !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
@keyframes chat-emoji-panel-rise {
  from { transform:translateY(100%); }
  to { transform:translateY(0); }
}

/* 同人文 App 首页 / 作品库：安静的编辑型个人作品列表。 */
.fanfic-app .fanfic-home-page {
  position:relative;
  width:min(100%,720px);
  height:100%;
  overflow-y:auto;
  overscroll-behavior:contain;
  background:#fafaf8 !important;
  background-image:none !important;
  color:#1c1c1e !important;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Helvetica Neue",sans-serif;
  scrollbar-width:none;
}
.fanfic-app .fanfic-home-page::-webkit-scrollbar { display:none; }
.fanfic-app .fanfic-home-header {
  position:relative;
  z-index:3;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  min-height:118px;
  box-sizing:border-box;
  padding:max(28px,env(safe-area-inset-top)) 22px 18px;
  border:0 !important;
  background:#fafaf8 !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.fanfic-home-brand { min-width:0; padding-top:5px; }
.fanfic-home-brand h1 {
  margin:0;
  color:#1c1c1e !important;
  font-family:"Songti SC","STSong",serif;
  font-size:28px;
  font-weight:600;
  line-height:1.08;
  letter-spacing:.02em;
}
.fanfic-home-brand p {
  margin:8px 0 0;
  color:rgba(28,28,30,.42) !important;
  font-size:11px;
  line-height:1.4;
  letter-spacing:.08em;
}
.fanfic-home-actions { display:flex; flex:0 0 auto; align-items:center; gap:2px; }
.fanfic-home-actions button,
.fanfic-home-search > button {
  display:grid;
  place-items:center;
  width:44px;
  height:44px;
  padding:0;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  color:#1c1c1e !important;
  box-shadow:none !important;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.fanfic-home-actions svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.fanfic-home-controls {
  display:flex;
  align-items:flex-end;
  gap:16px;
  margin:0 22px;
  padding:0 0 10px;
  border-bottom:1px solid rgba(0,0,0,.065);
}
.fanfic-home-tabs {
  display:flex;
  align-items:center;
  flex:1;
  min-width:0;
  gap:30px;
  overflow-x:auto;
  scrollbar-width:none;
}
.fanfic-home-tabs::-webkit-scrollbar { display:none; }
.fanfic-home-tabs button {
  position:relative;
  flex:0 0 auto;
  min-height:38px;
  padding:0;
  border:0;
  background:transparent;
  color:rgba(28,28,30,.42);
  font:inherit;
  font-size:14px;
  font-weight:450;
  white-space:nowrap;
  cursor:pointer;
}
.fanfic-home-tabs button.is-active { color:#1c1c1e; font-weight:650; }
.fanfic-home-tabs button.is-active::after {
  position:absolute;
  right:1px;
  bottom:0;
  left:1px;
  height:2px;
  border-radius:1px;
  background:#1c1c1e;
  content:'';
}
.fanfic-home-manage-button {
  flex:0 0 auto;
  min-width:44px;
  min-height:38px;
  padding:0;
  border:0;
  background:transparent;
  color:rgba(28,28,30,.58);
  font:inherit;
  font-size:12px;
  cursor:pointer;
}
.fanfic-home-manage-button.is-active { color:#1c1c1e; font-weight:600; }
.fanfic-home-search {
  display:flex;
  align-items:center;
  flex:1;
  min-width:0;
  height:44px;
  margin-top:3px;
  padding:0 3px 0 13px;
  border:1px solid rgba(28,28,30,.09);
  border-radius:13px;
  background:#fff;
  animation:fanfic-home-search-in .2s ease both;
}
.fanfic-home-search > svg { flex:0 0 18px; width:18px; height:18px; fill:none; stroke:rgba(28,28,30,.46); stroke-width:1.8; stroke-linecap:round; }
.fanfic-home-search input {
  flex:1;
  min-width:0;
  height:100%;
  padding:0 9px;
  border:0;
  outline:0;
  background:transparent;
  color:#1c1c1e;
  font:inherit;
  font-size:14px;
}
.fanfic-home-search input::placeholder { color:rgba(28,28,30,.34); }
.fanfic-home-search > button { width:38px; height:38px; }
.fanfic-home-search > button svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; }
.fanfic-home-manage {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 22px;
  padding:0 0 12px;
  border-bottom:1px solid rgba(0,0,0,.06);
  color:rgba(28,28,30,.48);
  font-size:11px;
}
.fanfic-home-manage > div { display:flex; align-items:center; gap:7px; }
.fanfic-home-manage button {
  min-height:34px;
  padding:0 6px;
  border:0;
  background:transparent;
  color:#1c1c1e;
  font:inherit;
  font-size:11px;
  cursor:pointer;
}
.fanfic-home-manage button:first-child { color:#d44949; }
.fanfic-home-main { padding:0 22px calc(104px + env(safe-area-inset-bottom)); }
.fanfic-home-library { width:100%; max-width:620px; margin:0 auto; }
.fanfic-home-row {
  position:relative;
  display:flex;
  align-items:stretch;
  min-height:88px;
  border-bottom:1px solid rgba(0,0,0,.06);
  background:transparent !important;
  animation:fanfic-home-row-in .22s ease both;
}
.fanfic-home-row[hidden] { display:none !important; }
.fanfic-home-row-main {
  display:flex;
  align-items:center;
  flex:1;
  min-width:0;
  gap:13px;
  padding:10px 5px 10px 0;
  border:0;
  background:transparent !important;
  color:#242424;
  font:inherit;
  text-align:left;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
button.fanfic-home-row-main:active { opacity:.58; }
.fanfic-home-cover {
  display:block;
  flex:0 0 56px;
  width:56px;
  height:74px;
  border-radius:9px;
  object-fit:cover;
}
.fanfic-home-copy {
  display:flex;
  flex:1;
  min-width:0;
  flex-direction:column;
  justify-content:center;
  gap:7px;
}
.fanfic-home-copy > b {
  overflow:hidden;
  color:#242424 !important;
  font-family:"Songti SC","STSong",serif;
  font-size:16px;
  font-weight:600;
  line-height:1.25;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.fanfic-home-copy > small {
  display:flex;
  align-items:center;
  min-width:0;
  gap:7px;
  overflow:hidden;
  color:rgba(28,28,30,.5) !important;
  font-size:11px;
  font-weight:400;
  line-height:1.25;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.fanfic-home-copy > small i { color:rgba(28,28,30,.22); font-style:normal; }
.fanfic-home-copy > .fanfic-home-progress { color:rgba(28,28,30,.4) !important; }
.fanfic-home-row-more {
  display:grid;
  place-items:center;
  flex:0 0 44px;
  width:44px;
  min-height:44px;
  padding:0;
  align-self:center;
  border:0;
  border-radius:0;
  background:transparent !important;
  color:#1c1c1e;
  cursor:pointer;
}
.fanfic-home-row-more svg { width:22px; height:22px; fill:none; stroke:currentColor; }
.fanfic-home-row.is-managing { align-items:center; gap:12px; }
.fanfic-home-row.is-managing > input { flex:0 0 19px; width:19px; height:19px; margin:0; accent-color:#252525; }
.fanfic-home-row.is-managing .fanfic-home-row-main { cursor:default; }
.fanfic-home-empty,
.fanfic-home-search-empty {
  display:grid;
  place-items:center;
  align-content:center;
  min-height:390px;
  padding:20px;
  text-align:center;
}
.fanfic-home-search-empty[hidden] { display:none; }
.fanfic-home-empty svg { width:76px; height:76px; margin-bottom:22px; fill:none; stroke:rgba(28,28,30,.19); stroke-width:1.15; stroke-linecap:round; stroke-linejoin:round; }
.fanfic-home-empty h2,
.fanfic-home-search-empty h2 { margin:0; color:#242424; font-family:"Songti SC","STSong",serif; font-size:20px; font-weight:500; }
.fanfic-home-empty p,
.fanfic-home-search-empty p { max-width:260px; margin:10px 0 0; color:rgba(28,28,30,.42); font-size:12px; line-height:1.65; }
.fanfic-home-empty > button {
  min-width:150px;
  height:46px;
  margin-top:24px;
  padding:0 22px;
  border:0;
  border-radius:23px;
  background:#252525;
  color:#fff;
  font:inherit;
  font-size:13px;
  cursor:pointer;
}
.fanfic-home-create {
  position:fixed;
  right:max(22px,calc((100vw - 720px) / 2 + 22px));
  bottom:max(24px,calc(env(safe-area-inset-bottom) + 18px));
  z-index:8;
  display:grid;
  place-items:center;
  width:56px;
  height:56px;
  padding:0 0 3px;
  border:0;
  border-radius:50%;
  background:#252525 !important;
  color:#fff !important;
  box-shadow:0 4px 16px rgba(0,0,0,.1) !important;
  font:300 30px/1 -apple-system,BlinkMacSystemFont,sans-serif;
  cursor:pointer;
  transition:transform .18s ease,opacity .18s ease;
}
.fanfic-home-create:active { opacity:.82; transform:scale(.94); }
.fanfic-home-sheet-layer { position:fixed; inset:0; z-index:50; display:flex; align-items:flex-end; justify-content:center; }
.fanfic-home-sheet-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(0,0,0,.22); }
.fanfic-home-sheet {
  position:relative;
  z-index:1;
  display:grid;
  width:min(100%,720px);
  box-sizing:border-box;
  padding:9px 16px max(16px,env(safe-area-inset-bottom));
  border-radius:24px 24px 0 0;
  background:#f9f9f7;
  box-shadow:0 -10px 32px rgba(0,0,0,.1);
  animation:fanfic-home-sheet-in .22s ease-out both;
}
.fanfic-home-sheet-handle { justify-self:center; width:36px; height:4px; margin:0 0 12px; border-radius:2px; background:rgba(0,0,0,.16); }
.fanfic-home-sheet h2 { margin:0 8px 9px; overflow:hidden; color:#1c1c1e; font-size:13px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.fanfic-home-sheet > button:not(.fanfic-home-sheet-backdrop) {
  min-height:48px;
  padding:0 8px;
  border:0;
  border-top:1px solid rgba(0,0,0,.055);
  background:transparent;
  color:#1c1c1e;
  font:inherit;
  font-size:14px;
  text-align:left;
  cursor:pointer;
}
.fanfic-home-sheet > button.is-danger { color:#d33b3b; }
.fanfic-home-sheet > button:last-child { margin-top:7px; border-top:0; border-radius:12px; background:rgba(0,0,0,.045); text-align:center; }
@keyframes fanfic-home-row-in { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:none; } }
@keyframes fanfic-home-search-in { from { opacity:0; transform:translateY(-3px); } to { opacity:1; transform:none; } }
@keyframes fanfic-home-sheet-in { from { transform:translateY(100%); } to { transform:none; } }
@media (max-width:430px) {
  .fanfic-app .fanfic-home-header { min-height:112px; padding-right:18px; padding-left:20px; }
  .fanfic-home-main { padding-right:20px; padding-left:20px; }
  .fanfic-home-manage { margin-right:20px; margin-left:20px; }
  .fanfic-home-controls { margin-right:20px; margin-left:20px; }
  .fanfic-home-tabs { gap:25px; }
  .fanfic-home-copy > small { gap:5px; }
}
@media (prefers-reduced-motion:reduce) {
  .fanfic-home-row,.fanfic-home-search,.fanfic-home-sheet { animation:none; }
}

/* 杂志社首页：纸张式编辑台，只显示真实刊物与真实进度。 */
.magazine-app .magazine-home-page {
  position:relative;
  max-width:760px;
  padding-bottom:calc(88px + env(safe-area-inset-bottom));
  background:#f7f5f1 !important;
  color:#171717 !important;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC",sans-serif;
}
.magazine-home-header {
  position:relative;
  display:block;
  padding:78px 0 0;
  background:transparent;
}
.magazine-home-topbar { position:fixed; top:0; left:50%; z-index:8; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:18px 20px; width:min(100%,760px); box-sizing:border-box; padding:max(28px,env(safe-area-inset-top)) 38px 10px; background:rgba(247,245,241,.94); -webkit-backdrop-filter:blur(18px) saturate(125%); backdrop-filter:blur(18px) saturate(125%); transform:translateX(-50%); }
.magazine-home-brandline { display:flex; align-items:flex-start; gap:17px; color:#333; font:500 8px/1.5 Georgia,serif; letter-spacing:.22em; }
.magazine-home-brandline i { width:1px; height:32px; background:rgba(0,0,0,.13); }
.magazine-home-masthead { padding:0 38px 10px; }
.magazine-home-masthead h1 { margin:18px 0 9px; font-family:"Songti SC","STSong",serif; font-size:56px; font-weight:500; line-height:.95; letter-spacing:-.08em; }
.magazine-home-masthead p { margin:0; color:#5d5d5d; font-family:"Songti SC","STSong",serif; font-size:15px; line-height:1.65; letter-spacing:.18em; }
.magazine-home-actions { display:flex; align-self:start; align-items:center; gap:4px; }
.magazine-home-actions button {
  position:relative;
  display:grid;
  place-items:center;
  width:40px;
  height:40px;
  padding:0;
  border:0;
  background:transparent;
  color:#111;
  cursor:pointer;
}
.magazine-home-actions svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.magazine-home-header blockquote { position:absolute; top:max(82px,calc(env(safe-area-inset-top) + 54px)); right:38px; width:150px; margin:0; color:#777; font-family:"Songti SC","STSong",serif; font-size:12px; font-style:normal; line-height:1.7; letter-spacing:.08em; }
.magazine-home-header blockquote span { display:block; margin:8px 0 5px; }
.magazine-home-header blockquote small { color:#777; font:500 8px/1.55 Georgia,serif; letter-spacing:.22em; }
.magazine-home-search { display:flex; align-items:center; gap:8px; height:44px; margin:0 38px 14px; padding:0 11px 0 14px; border:1px solid rgba(0,0,0,.12); background:#fff; }
.magazine-home-search > span { display:grid; place-items:center; }
.magazine-home-search svg { width:18px; height:18px; fill:none; stroke:#333; stroke-width:1.7; }
.magazine-home-search input { flex:1; min-width:0; height:100%; padding:0; border:0; outline:0; background:transparent !important; color:#171717 !important; font:inherit; font-size:13px; }
.magazine-home-search button { width:32px; height:32px; border:0; background:transparent; color:#222; font-size:22px; cursor:pointer; }
.magazine-home-main { padding:0 38px 28px; }
.magazine-home-main > .magazine-background-job { margin:0 0 20px; border-radius:0; background:transparent; box-shadow:none; }
.magazine-home-current { display:grid; grid-template-columns:minmax(0,1.08fr) minmax(165px,.72fr); align-items:start; gap:0 30px; padding:4px 0 26px; border-bottom:1px solid rgba(0,0,0,.18); }
.magazine-home-current > .magazine-home-section-title { grid-column:1 / -1; margin-bottom:15px; }
.magazine-home-current-copy { min-width:0; }
.magazine-home-section-title { display:flex; align-items:center; gap:13px; min-height:28px; }
.magazine-home-section-title > span { flex:0 0 auto; font:500 11px/1 Georgia,serif; letter-spacing:.2em; }
.magazine-home-section-title > i { flex:1; height:1px; background:rgba(0,0,0,.36); }
.magazine-home-section-title > small { flex:0 0 auto; color:#343434; font:500 9px/1 Georgia,serif; letter-spacing:.15em; }
.magazine-home-section-title > div { display:flex; align-items:center; gap:8px; }
.magazine-home-section-title > div button { width:26px; height:30px; padding:0; border:0; background:transparent; color:#777; font:300 26px/1 Georgia,serif; cursor:pointer; }
.magazine-home-section-title > div b { font:400 30px/1 Georgia,serif; }
.magazine-home-section-title > div em,.magazine-home-section-title > div small { color:#aaa; font:400 15px/1 Georgia,serif; font-style:normal; }
.magazine-home-current-copy > h2 { position:relative; width:max-content; max-width:100%; margin:0 0 8px; color:#111; font-family:"Songti SC","STSong",serif; font-size:44px; font-weight:500; line-height:1.05; letter-spacing:-.06em; }
.magazine-home-current-copy > h2::after { position:absolute; top:1px; right:-12px; width:7px; height:7px; border-radius:50%; background:#a83931; content:""; }
.magazine-home-current-copy > strong { display:block; color:#5d5d5d; font:500 11px/1.4 Georgia,serif; letter-spacing:.18em; }
.magazine-home-current-copy > strong i { margin:0 8px; font-style:normal; }
.magazine-home-current-copy > p { max-width:330px; margin:22px 0 0; padding-left:15px; border-left:1px solid rgba(0,0,0,.2); color:#555; font-family:"Songti SC","STSong",serif; font-size:13px; line-height:1.7; }
.magazine-home-progress { display:grid; grid-template-columns:auto minmax(70px,1fr) auto; align-items:center; gap:10px; width:calc(100% - 14px); margin-top:24px; margin-left:-8px; }
.magazine-home-progress > b { font-family:"Songti SC","STSong",serif; font-size:11px; font-weight:600; }
.magazine-home-progress > i { height:4px; overflow:hidden; border-radius:2px; background:#ddd; }
.magazine-home-progress > i span { display:block; height:100%; border-radius:inherit; background:#161616; }
.magazine-home-progress > strong { font:400 17px/1 Georgia,serif; }
.magazine-home-metrics { display:grid; grid-template-columns:repeat(4,1fr); margin-top:20px; }
.magazine-home-metrics > span { display:grid; gap:4px; padding:0 11px; border-left:1px solid rgba(0,0,0,.12); }
.magazine-home-metrics > span:first-child { padding-left:0; border-left:0; }
.magazine-home-metrics b { font:400 24px/1 Georgia,serif; }
.magazine-home-metrics small { font-family:"Songti SC","STSong",serif; font-size:10px; }
.magazine-home-enter { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:48px; margin-top:24px; padding:0; border:0; border-top:1px solid rgba(0,0,0,.13); border-bottom:1px solid rgba(0,0,0,.13); background:transparent; color:#222; font:inherit; font-family:"Songti SC","STSong",serif; font-size:12px; cursor:pointer; }
.magazine-home-enter svg { width:19px; height:19px; fill:none; stroke:currentColor; stroke-width:1.4; }
.magazine-home-cover-button { align-self:start; width:100%; min-height:0; padding:0; border:0; background:transparent; cursor:pointer; }
.magazine-home-cover-button .magazine-cover.is-compact { width:100%; height:auto; min-height:0; aspect-ratio:.66; border-radius:0; box-shadow:0 10px 18px rgba(0,0,0,.2); }
.magazine-home-cover-button .magazine-cover-copy { padding:9%; }
.magazine-home-cover-button .magazine-cover-copy span { font-size:6px; }
.magazine-home-cover-button .magazine-cover-copy small { font-size:6px; }
.magazine-home-cover-button .magazine-cover-copy h2 { font-size:clamp(22px,5vw,36px); }
.magazine-home-cover-button .magazine-cover-copy p { font-size:6px; }
.magazine-home-empty { display:grid; justify-items:start; min-height:340px; align-content:center; padding:25px 0 45px; border-bottom:1px solid rgba(0,0,0,.18); }
.magazine-home-empty > span { font:500 10px/1 Georgia,serif; letter-spacing:.2em; }
.magazine-home-empty h2 { margin:36px 0 12px; font-family:"Songti SC","STSong",serif; font-size:31px; font-weight:500; }
.magazine-home-empty p { margin:0; color:#777; font-size:12px; }
.magazine-home-empty button { min-width:150px; height:44px; margin-top:26px; border:1px solid #222; background:transparent; color:#222; font:inherit; cursor:pointer; }
.magazine-home-desk,.magazine-home-index { padding:24px 0; border-bottom:1px solid rgba(0,0,0,.18); }
.magazine-home-desk > div:last-child { display:grid; grid-template-columns:repeat(4,1fr); margin-top:20px; }
.magazine-home-desk > div:last-child button { display:grid; min-width:0; gap:5px; padding:0 18px; border:0; border-left:1px solid rgba(0,0,0,.12); background:transparent; color:#161616; text-align:left; cursor:pointer; }
.magazine-home-desk > div:last-child button:first-child { padding-left:14px; }
.magazine-home-desk button > b { font:400 25px/1 Georgia,serif; }
.magazine-home-desk button > span { font-family:"Songti SC","STSong",serif; font-size:11px; white-space:nowrap; }
.magazine-home-desk button > small { color:#888; font:500 7px/1.2 Georgia,serif; letter-spacing:.15em; }
.magazine-home-index-list { display:flex; gap:30px; margin-top:19px; padding-bottom:5px; overflow-x:auto; scrollbar-width:none; }
.magazine-home-index-list::-webkit-scrollbar { display:none; }
.magazine-home-issue-card,.magazine-home-new-issue { position:relative; display:grid; flex:0 0 125px; min-width:0; padding:0; border:0; background:transparent; color:#181818; font:inherit; text-align:left; cursor:pointer; }
.magazine-home-issue-card + .magazine-home-issue-card::before,.magazine-home-issue-card ~ .magazine-home-new-issue::before { position:absolute; top:0; bottom:0; left:-15px; width:1px; background:rgba(0,0,0,.13); content:""; pointer-events:none; }
.magazine-home-index-cover { position:relative; display:block; height:190px; margin-bottom:9px; }
.magazine-home-index-cover .magazine-cover.is-compact { width:100%; height:100%; border-radius:0; box-shadow:0 5px 9px rgba(0,0,0,.18); }
.magazine-home-index-cover .magazine-cover-copy { padding:8%; }
.magazine-home-index-cover .magazine-cover-copy span,.magazine-home-index-cover .magazine-cover-copy small,.magazine-home-index-cover .magazine-cover-copy p { font-size:4px; }
.magazine-home-index-cover .magazine-cover-copy h2 { font-size:16px; }
.magazine-home-issue-card > b,.magazine-home-new-issue > b { font:400 17px/1.2 Georgia,serif; }
.magazine-home-issue-card > strong { overflow:hidden; margin-top:2px; font-family:"Songti SC","STSong",serif; font-size:12px; font-weight:500; text-overflow:ellipsis; white-space:nowrap; }
.magazine-home-issue-card > small,.magazine-home-new-issue > small { margin-top:7px; color:#777; font:500 8px/1 Georgia,serif; letter-spacing:.12em; }
.magazine-home-issue-card > em { margin-top:7px; color:#777; font-size:9px; font-style:normal; }
.magazine-home-issue-card > em::before { display:inline-block; width:5px; height:5px; margin-right:6px; border-radius:50%; background:#7e8987; vertical-align:1px; content:""; }
.magazine-home-issue-card > em.is-editing { color:#a83931; }
.magazine-home-issue-card > em.is-editing::before { background:#a83931; }
.magazine-home-issue-card.is-current .magazine-home-index-cover::after { position:absolute; z-index:3; inset:0; border:2px solid #222; content:""; pointer-events:none; }
.magazine-home-new-issue > i { display:grid; place-items:center; height:190px; margin-bottom:9px; background:#eeece8; color:#555; font:300 34px/1 Georgia,serif; font-style:normal; }
.magazine-home-new-issue > span { margin-top:2px; font-family:"Songti SC","STSong",serif; font-size:12px; }
.magazine-home-index > p { margin:26px 0 0; color:#777; font-size:11px; text-align:center; }
.magazine-home-index > p[hidden],.magazine-home-issue-card[hidden] { display:none; }
.magazine-home-dock { position:fixed; right:50%; bottom:max(12px,env(safe-area-inset-bottom)); z-index:12; display:grid; grid-template-columns:repeat(5,1fr); width:min(calc(100% - 32px),700px); padding:8px 18px; border:1px solid rgba(255,255,255,.7); border-radius:32px; background:rgba(255,255,255,.52); box-shadow:0 12px 32px rgba(42,35,29,.13),inset 0 1px 0 rgba(255,255,255,.82); transform:translateX(50%); -webkit-backdrop-filter:blur(22px) saturate(1.45); backdrop-filter:blur(22px) saturate(1.45); }
.magazine-home-dock button { display:grid; justify-items:center; gap:5px; min-height:48px; padding:0; border:0; background:transparent; color:#777; font:inherit; font-size:9px; cursor:pointer; }
.magazine-home-dock button.is-active { color:#111; }
.magazine-home-dock svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:1.45; stroke-linecap:round; stroke-linejoin:round; }
.magazine-home-dock button.is-active svg { fill:#111; stroke:#111; }
.magazine-dock-orb { position:fixed; right:max(18px,calc((100vw - 760px)/2 + 18px)); bottom:max(64px,calc(env(safe-area-inset-bottom) + 52px)); z-index:13; display:grid; place-items:center; width:54px; height:54px; padding:0; border:1px solid rgba(255,255,255,.76); border-radius:50%; background:rgba(255,255,255,.5); color:#222; box-shadow:0 12px 30px rgba(42,35,29,.15),inset 0 1px 0 rgba(255,255,255,.88); cursor:grab; touch-action:none; user-select:none; -webkit-backdrop-filter:blur(22px) saturate(1.45); backdrop-filter:blur(22px) saturate(1.45); }
.magazine-dock-orb:active { cursor:grabbing; }
.magazine-dock-orb svg { width:24px; height:24px; fill:currentColor; stroke:none; }

@media (max-width:560px) {
  .magazine-home-topbar { gap:12px; padding-right:20px; padding-bottom:10px; padding-left:20px; }
  .magazine-home-masthead { padding-right:20px; padding-left:20px; }
  .magazine-home-masthead h1 { font-size:45px; }
  .magazine-home-actions { gap:0; }
  .magazine-home-actions button { width:36px; }
  .magazine-home-header blockquote { top:max(76px,calc(env(safe-area-inset-top) + 48px)); right:20px; width:138px; font-size:11px; }
  .magazine-home-search { margin-right:20px; margin-left:20px; }
  .magazine-home-main { padding-right:20px; padding-left:20px; }
  .magazine-home-current { grid-template-columns:minmax(0,1fr) 125px; gap:17px; }
  .magazine-home-section-title { gap:8px; }
  .magazine-home-section-title > div { gap:4px; }
  .magazine-home-section-title > div button { width:20px; }
  .magazine-home-section-title > div b { font-size:24px; }
  .magazine-home-current-copy > h2 { font-size:31px; }
  .magazine-home-current-copy > p { margin-top:17px; font-size:11px; }
  .magazine-home-progress { gap:7px; margin-top:18px; }
  .magazine-home-metrics { margin-top:16px; }
  .magazine-home-metrics > span { padding:0 6px; }
  .magazine-home-metrics b { font-size:19px; }
  .magazine-home-metrics small { font-size:8px; }
  .magazine-home-desk > div:last-child button { padding:0 10px; }
  .magazine-home-desk button > b { font-size:21px; }
  .magazine-home-dock { padding-right:12px; padding-left:12px; }
}
@media (max-width:380px) {
  .magazine-home-current { grid-template-columns:minmax(0,1fr) 104px; gap:13px; }
  .magazine-home-current-copy > h2 { font-size:27px; }
  .magazine-home-current-copy > p { display:none; }
  .magazine-home-section-title > div button { display:none; }
  .magazine-home-desk > div:last-child { grid-template-columns:repeat(2,1fr); gap:18px 0; }
  .magazine-home-desk > div:last-child button:nth-child(3) { border-left:0; }
}

/* 具体聊天页：输入与操作区略微降低不透明度。 */
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose input { border-color:#dedede !important; background:#fff !important; box-shadow:none !important; opacity:.76; }
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap .chat-compose > :is(.chat-emoji,.chat-plus,.chat-send,.chat-reply) { opacity:.76; }
.chat-app.is-chatting .chat-conversation > .chat-compose-wrap > .chat-tools button { border-color:rgba(0,0,0,.055) !important; background:rgba(255,255,255,.32) !important; opacity:.84; }
.chat-app.is-chatting.chat-wallpaper-light .chat-conversation > .chat-compose-wrap .chat-compose input { border-color:#dedede !important; background:#fff !important; box-shadow:none !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose input { border-color:#dedede !important; background:#fff !important; color:#333 !important; caret-color:#333 !important; text-shadow:none !important; box-shadow:none !important; }
.chat-app.is-chatting.chat-wallpaper-dark .chat-conversation > .chat-compose-wrap .chat-compose input::placeholder { color:#777 !important; text-shadow:none !important; }
.chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools {
  bottom:var(--chat-tools-bottom,calc(100% - 20px)) !important;
}
@media (max-width:600px) {
  .chat-app.is-chatting.is-menu-open .chat-conversation > .chat-compose-wrap > .chat-tools { flex-wrap:nowrap !important; }
}

/* Ta 各页面改用紧凑列表，去掉占据大面积的主卡片外框，内容与点击操作保持不变。 */
.ta-role-app-main > .ta-role-intro,
.ta-role-app-main > .ta-role-card {
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.ta-role-app-main > .ta-role-intro {
  margin-bottom:14px;
  padding:0 0 12px;
  border-bottom:1px solid #e5e8ed;
}
.ta-role-app-main > .ta-role-card {
  margin-bottom:0;
  padding:11px 0 12px;
  border-bottom:1px solid #e5e8ed;
}
.ta-role-app-main > .ta-day-plan .ta-day-timeline article > div {
  margin-bottom:0;
  padding:8px 0 12px;
  border:0;
  border-bottom:1px solid #e5e8ed;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.ta-role-app-main > .ta-day-plan .ta-day-timeline article:last-child > div { border-bottom:0; }
.ta-role-app-main > .ta-recent-playlist > div {
  overflow:visible;
  border:0;
  border-radius:0;
  background:transparent;
}
.ta-role-app-main > .ta-order-list > article {
  overflow:visible;
  border:0;
  border-bottom:1px solid #e5e8ed;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.ta-role-app-main > .ta-order-list > article:last-child { border-bottom:0; }
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance {
  min-height:0;
  margin-bottom:0;
  padding:0 0 14px !important;
  border:0 !important;
  border-bottom:1px solid #e5e8ed !important;
  border-radius:0 !important;
  background:transparent !important;
  color:#202734 !important;
  box-shadow:none !important;
}
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance::before,
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance::after { display:none; }
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance > small { color:#8993a2 !important; }
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance > strong { color:#202734 !important; text-shadow:none; }
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance > div { margin-bottom:0; color:#8993a2 !important; }
.ta-role-app-main > .ta-wallet-page .ta-wallet-list { gap:0; }
.ta-role-app-main > .ta-wallet-page .ta-wallet-list article {
  padding:10px 0;
  border:0;
  border-bottom:1px solid #e5e8ed;
  border-radius:0;
  background:transparent;
}
.ta-role-app-main > .ta-wallet-page .ta-wallet-list article:last-child { border-bottom:0; }

@media not all {
  .ta-role-app-main > .ta-role-intro,
  .ta-role-app-main > .ta-role-card,
  .ta-role-app-main > .ta-day-plan .ta-day-timeline article > div,
  .ta-role-app-main > .ta-order-list > article,
  .ta-role-app-main > .ta-wallet-page .ta-wallet-balance,
  .ta-role-app-main > .ta-wallet-page .ta-wallet-list article { border-color:#353e4c !important; }
  .ta-role-app-main > .ta-recent-playlist > div { background:transparent; }
  .ta-role-app-main > .ta-wallet-page .ta-wallet-balance,
  .ta-role-app-main > .ta-wallet-page .ta-wallet-balance > strong { color:#f1f3f7 !important; }
  .ta-role-app-main > .ta-wallet-page .ta-wallet-balance > div,
  .ta-role-app-main > .ta-wallet-page .ta-wallet-balance > small { color:#aeb8c6 !important; }
}

/* Ta 的“TA 看我”页面同样不使用整块主卡片，改为页面内分隔区。 */
.ta-reverse-page > main > .ta-reverse-hero {
  max-width:none;
  padding:0 0 14px;
  border:0;
  border-bottom:1px solid rgba(0,0,0,.1);
  border-radius:0;
  background:transparent;
  color:inherit;
  box-shadow:none;
}
.ta-reverse-page > main > .ta-reverse-hero small { color:#927f89; }
.ta-reverse-page > main > .ta-reverse-hero p { color:#777078; }
.ta-reverse-page > main > .ta-reverse-hero > button { background:#30272d; color:#fff; }
.ta-reverse-page > main > .ta-reverse-caught {
  width:100%;
  margin:28px auto 0;
  padding:18px 0;
  border:0;
  border-bottom:1px solid rgba(0,0,0,.1);
  border-radius:0;
  background:transparent;
  color:inherit;
  box-shadow:none;
}
.ta-reverse-page > main > .ta-reverse-caught p { color:#777078; }
.ta-reverse-page > main > .ta-reverse-caught b { color:#8d6574; }
.ta-reverse-page > main > .ta-reverse-result article {
  padding:11px 0;
  border:0;
  border-bottom:1px solid rgba(0,0,0,.1);
  border-radius:0;
  background:transparent;
}
.ta-reverse-page > main > .ta-reverse-result article:last-child { border-bottom:0; }
.ta-reverse-page > main > .ta-reverse-result > footer,
.ta-reverse-page > main > .ta-reverse-final {
  padding:12px 0;
  border:0;
  border-top:1px solid rgba(0,0,0,.1);
  border-radius:0;
  background:transparent;
}
.ta-reverse-page > main > .ta-reverse-browser,
.ta-reverse-page.is-live > main > .ta-reverse-browser {
  width:100%;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.ta-reverse-page > main > .ta-reverse-browser > header { background:transparent; }
.ta-reverse-page > main > .ta-reverse-browser > main { background:transparent; }
@media not all {
  .ta-reverse-page > main > .ta-reverse-hero,
  .ta-reverse-page > main > .ta-reverse-caught,
  .ta-reverse-page > main > .ta-reverse-result article,
  .ta-reverse-page > main > .ta-reverse-result > footer,
  .ta-reverse-page > main > .ta-reverse-final { border-color:rgba(255,255,255,.14); }
  .ta-reverse-page > main > .ta-reverse-hero small,
  .ta-reverse-page > main > .ta-reverse-hero p,
  .ta-reverse-page > main > .ta-reverse-caught p { color:#b9adb4; }
  .ta-reverse-page > main > .ta-reverse-hero > button { background:#eee; color:#222; }
}

/* 钱包页保留银行卡卡片，其他 Ta 页面仍使用紧凑列表。 */
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance {
  position:relative;
  isolation:isolate;
  min-height:190px;
  overflow:hidden;
  padding:24px !important;
  border:0 !important;
  border-radius:22px !important;
  background:linear-gradient(135deg,#17191f 0%,#303747 58%,#15171c 100%) !important;
  color:#fff !important;
  box-shadow:0 15px 34px rgba(20,24,32,.24) !important;
}
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance::before {
  display:block;
  width:40px;
  height:29px;
  margin-bottom:15px;
  border:1px solid rgba(255,255,255,.38);
  border-radius:7px;
  background:linear-gradient(135deg,#e8d9a3,#aa9360);
  box-shadow:inset 0 0 0 5px rgba(255,255,255,.13);
  content:"";
}
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance::after {
  position:absolute;
  right:22px;
  bottom:19px;
  color:rgba(255,255,255,.7);
  font:600 10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;
  letter-spacing:.13em;
  content:attr(data-card-number);
}
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance > small { color:rgba(255,255,255,.68) !important; }
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance > strong { color:#fff !important; text-shadow:0 2px 8px rgba(0,0,0,.2); }
.ta-role-app-main > .ta-wallet-page .ta-wallet-balance > div { margin-bottom:25px; color:rgba(255,255,255,.78) !important; }

/* TA 手机中的论坛沿用论坛 App 帖子外观，帖子可打开阅读，统计仅作展示。 */
.ta-role-app-main > .ta-role-forum-feed {
  width:auto;
  margin:-18px -20px;
  padding:18px 16px calc(30px + env(safe-area-inset-bottom));
}
.ta-role-app-main > .ta-role-chat-moments {
  height:auto;
  min-height:100%;
  margin:-18px -20px;
  padding-bottom:calc(120px + env(safe-area-inset-bottom));
  background:#fff;
}
.ta-role-chat-moments .chat-moments-body { min-height:0; padding-top:0; background:transparent; }
.ta-role-chat-moments .chat-moments { height:auto; overflow:visible; padding:0; }
.ta-chat-moments-heading { display:flex; align-items:baseline; justify-content:space-between; padding:20px 20px 12px; }
.ta-chat-moments-heading b { color:#333; font-size:15px; }
.ta-chat-moments-heading span { color:#999; font-size:10px; }
.ta-role-chat-moments .ta-role-chat-moment { cursor:pointer; }
.ta-role-chat-moments .ta-role-chat-moment:focus-visible { outline:2px solid #8aa6c7; outline-offset:-2px; }
.ta-role-chat-moments .chat-moment-footer > span { color:#888; font-size:10px; }
.ta-role-chat-moments .ta-moment-readmore { margin-left:auto; }
.ta-role-chat-moments .chat-moment-comments { pointer-events:none; }
.ta-moment-detail-layer { position:fixed; }
.ta-moment-detail-sheet { max-height:88%; }
.ta-moment-detail-sheet > main { padding:0; background:transparent; }
.ta-chat-moment-detail { margin:0; padding:0; border:0; background:transparent; }
.ta-chat-moment-detail > p { margin:0; }
.ta-chat-moment-detail > img { display:block; max-width:100%; max-height:360px; margin-top:12px; border-radius:10px; object-fit:contain; }
.ta-chat-moment-detail .chat-moment-visibility-label { display:block; margin:10px 0 0; }
.ta-chat-moment-detail .chat-moment-footer { margin-left:0; padding-top:10px; border-top:1px solid rgba(0,0,0,.08); }
.ta-chat-moment-detail .chat-moment-footer > span { color:#888; font-size:10px; }
.ta-moment-comments { margin-top:18px; }
.ta-moment-comments h3 { color:#444; font-size:13px; font-weight:650; }
.ta-moment-comments > .chat-moment-comments { margin:10px 0 0; }
.ta-moment-comments .chat-moment-comment { cursor:default; }
.ta-role-forum-feed .ta-forum-post { cursor:pointer; }
.ta-role-forum-feed .ta-forum-post:focus-visible { outline:2px solid #8aa6c7; outline-offset:-2px; }
.ta-role-forum-feed .ta-forum-post footer { max-width:330px; }
.ta-role-forum-feed .ta-forum-post footer > span { display:inline-flex; align-items:center; justify-content:center; gap:4px; min-width:42px; padding:3px 5px; color:#999; font-size:11px; }
.ta-role-forum-feed .ta-forum-post footer > span .forum-post-icon { width:18px; height:18px; }
.ta-role-forum-feed .ta-forum-post footer > span:last-child .forum-post-icon { fill:none; }
.ta-forum-detail-layer { position:fixed; }
.ta-forum-detail-sheet { max-height:88%; }
.ta-forum-detail-sheet > main { padding:0; background:transparent; }
.ta-forum-detail-sheet > main > .forum-post-text { margin-top:0; color:#292929; font-size:var(--forum-font-size,13px); line-height:1.7; }
.ta-forum-detail-counts { display:flex; gap:22px; margin-top:16px; padding:12px 0; border-top:1px solid rgba(0,0,0,.08); border-bottom:1px solid rgba(0,0,0,.08); color:#888; font-size:11px; }
.ta-forum-comments { margin-top:16px; }
.ta-forum-comments h3 { color:#444; font-size:13px; font-weight:650; }
.ta-forum-comments .forum-post-replies { margin-top:10px; }
.ta-forum-comments .forum-post-replies article { cursor:default; }
.ta-forum-comments .forum-post-replies p time { display:block; margin-top:4px; color:#aaa; font-size:9px; }
.ta-forum-no-comments { padding:22px 0; color:#999; font-size:11px; text-align:center; }
.ta-chat-dock {
  position:absolute !important;
  right:12px !important;
  bottom:max(24px,env(safe-area-inset-bottom)) !important;
  left:12px !important;
  z-index:8 !important;
  display:flex !important;
  height:64px !important;
  box-sizing:border-box !important;
  margin:0 !important;
  padding:7px 14px !important;
  border:1px solid rgba(255,255,255,.78) !important;
  border-radius:32px !important;
  background:rgba(255,255,255,.62) !important;
  background-image:none !important;
  box-shadow:0 6px 20px rgba(25,31,40,.1),inset 0 1px 0 rgba(255,255,255,.82) !important;
  -webkit-backdrop-filter:blur(22px) saturate(145%) !important;
  backdrop-filter:blur(22px) saturate(145%) !important;
}
.ta-role-app-page.is-ta-chat-app .ta-role-app-main { padding-bottom:120px !important; }
.ta-role-app-page .ta-chat-dock small { display:none !important; }
.ta-role-app-page .ta-chat-dock > button,
.ta-role-app-page .ta-chat-dock > button.is-active {
  display:grid !important;
  place-items:center !important;
  width:48px !important;
  min-width:48px !important;
  height:48px !important;
  min-height:48px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:50% !important;
  background:transparent !important;
  background-image:none !important;
  box-shadow:none !important;
}
.ta-role-app-page .ta-chat-dock .chat-tab-icon { width:32px !important; height:32px !important; margin:0; stroke-width:2.2; }

/* 聊天设置折叠项：把箭头区域横向放宽，但不额外绘制按钮边框。 */
.chat-memory-settings-head > i,
.chat-tap-settings-head > i,
.character-setting-head > i {
  display:grid;
  flex:0 0 52px;
  place-items:center;
  width:52px;
  min-width:52px;
  height:36px;
  box-sizing:border-box;
  color:#777;
  font-size:22px;
  line-height:1;
  transform:scaleX(1.32) scaleY(.9);
  transform-origin:center;
}
/* 互动设置卡片比外层记忆卡片多一层 18px 内缩，补回这段距离让箭头列重合。 */
.chat-interaction-settings > .chat-tap-settings > .chat-tap-settings-head > i,
.chat-interaction-settings > .character-setting-item > .character-setting-head > i {
  margin-right:-18px;
}
.chat-memory-settings-head > i { margin-right:-6px; }
.chat-memory-settings-head > i.is-open,
.chat-tap-settings-head > i.is-open,
.character-setting-head > i.is-open {
  transform:rotate(180deg) scaleX(1.32) scaleY(.9);
}
.ideal-chat-bilingual-original,
.ideal-chat-bilingual-translation {
  display:block;
  white-space:pre-wrap;
}
.ideal-chat-bilingual-original { opacity:.72; cursor:pointer; }
.ideal-chat-bilingual-translation {
  display:none;
  margin-top:7px;
  padding-top:7px;
  border-top:1px solid rgba(0,0,0,.12);
}
.ideal-chat-bilingual-open .ideal-chat-bilingual-translation { display:block; }
.chat-settings-page .ideal-chat-bilingual-settings { margin:0 !important; padding:0 !important; border:0 !important; border-radius:0 !important; background:transparent !important; box-shadow:none !important; }
.chat-settings-page .ideal-chat-bilingual-settings.is-enabled { padding-bottom:13px !important; border-bottom:1px dashed rgba(0,0,0,.18) !important; }
.ideal-chat-bilingual-toggle { display:flex; align-items:center; justify-content:space-between; gap:14px; }
.ideal-chat-bilingual-toggle > span,
.ideal-chat-bilingual-fields label > span { display:grid; gap:4px; }
.ideal-chat-bilingual-toggle b { color:#555; font-size:12px; font-weight:500; }
.ideal-chat-bilingual-fields b { color:#262626; font-size:12px; font-weight:650; }
.ideal-chat-bilingual-toggle small,
.ideal-chat-bilingual-fields small { color:#999; font-size:10px; line-height:1.45; }
.ideal-chat-bilingual-toggle input,
.ideal-chat-bilingual-auto input { flex:0 0 auto; width:18px; height:18px; accent-color:#222; }
.ideal-chat-bilingual-fields[hidden] { display:none; }
.ideal-chat-bilingual-fields { display:grid; gap:13px; margin-top:13px; padding:0 0 0 2px; }
.ideal-chat-bilingual-language-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.ideal-chat-bilingual-language-grid label { display:grid; gap:6px; color:#777; font-size:11px; }
.ideal-chat-bilingual-fields select { width:100%; min-height:36px; border:1px solid rgba(0,0,0,.12); border-radius:10px; padding:0 9px; background:rgba(255,255,255,.8); color:#222; font:inherit; font-size:11px; }
.ideal-chat-bilingual-auto { padding-top:12px; }
@media not all {
  .ideal-chat-bilingual-translation { border-color:rgba(255,255,255,.2); }
  .chat-settings-page .ideal-chat-bilingual-settings.is-enabled { border-bottom-color:rgba(255,255,255,.25) !important; }
  .ideal-chat-bilingual-toggle b { color:#ccc; font-weight:500; }
  .ideal-chat-bilingual-fields b { color:#eee; }
  .ideal-chat-bilingual-fields { border-color:rgba(255,255,255,.1); }
  .ideal-chat-bilingual-fields select { border-color:rgba(255,255,255,.18); background:#222; color:#eee; }
}

/* 深色系统下，小组件库仍展示浅色磨砂预览，不让组件自己的暗色主题把玻璃底透成黑色。 */
@media not all {
  .desktop-widget-library > section {
    border-color:rgba(255,255,255,.72) !important;
    background:rgba(248,248,246,.9) !important;
    color:#222 !important;
  }
  .desktop-widget-library header,
  .desktop-widget-library > section > .desktop-widget-library-tabs {
    border-color:rgba(0,0,0,.07) !important;
    background:rgba(248,248,246,.72) !important;
  }
  .desktop-widget-library header h2,
  .desktop-widget-library-label b,
  .desktop-widget-option footer b { color:#222 !important; }
  .desktop-widget-library header span,
  .desktop-widget-library header p,
  .desktop-widget-library-label small,
  .desktop-widget-option footer small { color:#777 !important; }
  .desktop-widget-library header > button {
    background:#fff !important;
    color:#333 !important;
  }
  .desktop-widget-library .desktop-widget-real-preview:is(.profile-card,.todo-widget,.countdown-widget,.elapsed-days-widget,.shared-widget,.now-playing-widget,.date-calendar-card) {
    border-color:rgba(255,255,255,.78) !important;
    background-color:rgba(255,255,255,.76) !important;
    color:#303236 !important;
    box-shadow:0 8px 26px rgba(0,0,0,.08),inset 0 1px 0 rgba(255,255,255,.82) !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.celestial-specimen-widget {
    border-color:rgba(255,255,255,.76) !important;
    background:radial-gradient(circle at 68% 42%,rgba(255,255,255,.62),transparent 29%),linear-gradient(135deg,rgba(255,255,255,.72),rgba(225,229,232,.56) 54%,rgba(255,255,255,.52)) !important;
    color:#34363a !important;
    box-shadow:0 10px 28px rgba(39,43,50,.1),inset 0 1px 0 rgba(255,255,255,.78) !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.frost-profile-widget {
    border-color:rgba(255,255,255,.58) !important;
    background:rgba(255,255,255,.56) !important;
    box-shadow:0 15px 34px rgba(31,34,39,.12),inset 0 1px 0 rgba(255,255,255,.62) !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.frost-profile-widget .frost-profile-body {
    border-color:rgba(255,255,255,.65) !important;
    background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(239,242,244,.62)) !important;
    color:#303033 !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.frost-profile-widget .frost-profile-body > p { color:rgba(48,48,52,.64) !important; }
}

/* 商品代付：聊天中的精品商场电子小票 */
.chat-bubble.shopping-request { width:min(100%, 370px); max-width:min(100%, 370px); padding:0 !important; border:0 !important; border-radius:22px !important; background:transparent !important; box-shadow:none !important; color:#191919 !important; }
.chat-message.is-user .chat-bubble.shopping-request { background:transparent !important; color:#191919 !important; }
.shop-product-cover img,.shop-detail-cover img { display:block; width:100%; height:100%; object-fit:cover; }
.chat-shopping-receipt { width:100%; overflow:hidden; padding:19px 18px 13px; border:1px solid rgba(25,25,25,.09); border-radius:22px; background:#f8f8f6; box-shadow:0 8px 24px rgba(25,25,25,.07); color:#191919; text-align:left; }
.chat-shopping-receipt-head { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:12px; align-items:start; }
.chat-shopping-receipt-head > div { display:grid; gap:7px; min-width:0; }
.chat-shopping-receipt-head b { font-size:11px; font-weight:750; letter-spacing:.17em; }
.chat-shopping-receipt-head span,.chat-shopping-receipt-head em { color:#9a9a96; font-size:7px; font-style:normal; font-weight:650; letter-spacing:.14em; line-height:1.45; }
.chat-shopping-receipt-head > i { padding-top:1px; color:#777; font-size:18px; font-style:normal; line-height:1; }
.chat-shopping-receipt-head > em { padding-top:20px; text-align:right; }
.chat-shopping-receipt-rule { height:1px; margin:15px 0 14px; background:rgba(25,25,25,.12); }
.chat-shopping-receipt-title { display:flex; align-items:flex-end; justify-content:space-between; gap:15px; }
.chat-shopping-receipt-title h3 { font-size:20px; font-weight:650; letter-spacing:-.04em; }
.chat-shopping-receipt-title span { display:block; margin-top:5px; color:#a0a09c; font-size:8px; letter-spacing:.2em; }
.chat-shopping-receipt-title > div:last-child { display:grid; flex:0 0 auto; gap:5px; color:#898985; font-size:8px; text-align:right; }
.chat-shopping-receipt-title time { font-variant-numeric:tabular-nums; }
.chat-shopping-receipt-product { display:grid; grid-template-columns:62px minmax(0,1fr) auto; gap:10px; align-items:center; margin-top:16px; padding:10px; border-radius:14px; background:rgba(255,255,255,.5); }
.chat-shopping-receipt-product.is-multiple { margin-top:8px; padding:8px; border-radius:12px; }
.chat-shopping-receipt-title + .chat-shopping-receipt-product.is-multiple { margin-top:16px; }
.chat-shopping-receipt-media { width:62px; aspect-ratio:1; overflow:hidden; border-radius:12px; background:#e7e7e3; }
.chat-shopping-receipt-media img { display:block; width:100%; height:100%; object-fit:cover; }
.chat-shopping-receipt-media.is-empty { display:grid; place-items:center; color:#aaa; font-size:18px; font-weight:500; }
.chat-shopping-receipt-product-copy { display:grid; min-width:0; }
.chat-shopping-receipt-product-copy b { overflow-wrap:anywhere; font-size:13px; font-weight:650; line-height:1.25; }
.chat-shopping-receipt-product-price { display:grid; align-self:end; gap:5px; min-width:60px; text-align:right; }
.chat-shopping-receipt-product-price b { font-size:14px; font-weight:650; white-space:nowrap; }
.chat-shopping-receipt-product-price small { color:#969691; font-size:9px; white-space:nowrap; }
.chat-shopping-receipt-summary { display:grid; gap:7px; margin-top:15px; padding:12px 1px 0; border-top:1px solid rgba(25,25,25,.08); }
.chat-shopping-receipt-summary > div { display:flex; justify-content:space-between; gap:15px; color:#898985; font-size:10px; }
.chat-shopping-receipt-summary b { color:#41413e; font-weight:550; white-space:nowrap; }
.chat-shopping-receipt-summary hr { width:100%; margin:3px 0 2px; border:0; border-top:1px dashed rgba(25,25,25,.18); }
.chat-shopping-receipt-summary .is-total { align-items:end; margin-top:1px; color:#30302d; font-size:13px; }
.chat-shopping-receipt-summary .is-total b { color:#161614; font-size:28px; font-weight:650; letter-spacing:-.05em; line-height:1; }
.chat-shopping-receipt-meta { display:grid; gap:6px; margin:17px 1px 0; }
.chat-shopping-receipt-meta > div { display:grid; grid-template-columns:52px minmax(0,1fr); gap:9px; min-width:0; font-size:9px; line-height:1.35; }
.chat-shopping-receipt-meta dt { color:#a0a09c; }
.chat-shopping-receipt-meta dd { min-width:0; overflow-wrap:anywhere; color:#555550; font-variant-numeric:tabular-nums; }
.chat-shopping-receipt-pay { display:flex; align-items:center; justify-content:center; gap:12px; width:100%; height:50px; margin-top:17px; border:0; border-radius:999px; background:#191919; color:#fff; font:inherit; font-size:12px; font-weight:600; cursor:pointer; transition:background .18s ease, transform .18s ease; }
.chat-shopping-receipt-pay:hover { background:#30302f; transform:translateY(-1px); }
.chat-shopping-receipt-pay b { font-size:17px; font-weight:400; }
.chat-shopping-receipt-pay.is-paid,.chat-shopping-receipt-pay:disabled { background:#deded9; color:#73736e; cursor:default; transform:none; }
.chat-shopping-receipt footer { display:grid; justify-items:center; gap:4px; margin-top:12px; color:#a2a29d; }
.chat-shopping-receipt footer b { font-size:8px; letter-spacing:.18em; }
.chat-shopping-receipt footer span { font-size:7px; letter-spacing:.08em; }
@media (max-width:390px) {
  .chat-shopping-receipt { padding-right:16px; padding-left:16px; }
  .chat-shopping-receipt-product { grid-template-columns:56px minmax(0,1fr) auto; gap:8px; padding:9px; }
  .chat-shopping-receipt-media { width:56px; }
  .chat-shopping-receipt-title h3 { font-size:19px; }
  .chat-shopping-receipt-summary .is-total b { font-size:26px; }
}
@media not all {
  .chat-bubble.shopping-request,.chat-message.is-user .chat-bubble.shopping-request { color:#f3f3ef !important; }
  .chat-shopping-receipt { border-color:rgba(255,255,255,.12); background:#252523; color:#f3f3ef; box-shadow:0 8px 24px rgba(0,0,0,.18); }
  .chat-shopping-receipt-rule { background:rgba(255,255,255,.14); }
  .chat-shopping-receipt-summary { border-color:rgba(255,255,255,.12); }
  .chat-shopping-receipt-product { background:rgba(255,255,255,.07); }
  .chat-shopping-receipt-head span,.chat-shopping-receipt-head em,.chat-shopping-receipt-title span,.chat-shopping-receipt-title > div:last-child,.chat-shopping-receipt-product-copy span,.chat-shopping-receipt-product-copy small,.chat-shopping-receipt-product-price small,.chat-shopping-receipt-summary > div,.chat-shopping-receipt-meta dt,.chat-shopping-receipt footer { color:#a5a59f; }
  .chat-shopping-receipt-product-price b,.chat-shopping-receipt-summary b,.chat-shopping-receipt-meta dd { color:#e8e8e2; }
  .chat-shopping-receipt-summary .is-total { color:#f3f3ef; }
  .chat-shopping-receipt-summary .is-total b { color:#fff; }
  .chat-shopping-receipt-pay { background:#f2f2ee; color:#181817; }
  .chat-shopping-receipt-pay:hover { background:#fff; }
  .chat-shopping-receipt-pay.is-paid,.chat-shopping-receipt-pay:disabled { background:#4a4a47; color:#bcbcb5; }
}

/* 购物车勾选与付款方式 */
.shop-cart-toolbar { display:flex; align-items:center; justify-content:space-between; max-width:520px; margin:0 auto 9px; color:#777; font-size:11px; }
.shop-cart-toolbar label { display:flex; align-items:center; gap:7px; cursor:pointer; }
.shop-cart-toolbar input,.shop-cart-check input { accent-color:#222; }
.shop-cart-toolbar small { color:#aaa; font-size:10px; }
.shop-cart-list article { display:grid !important; grid-template-columns:20px 48px minmax(0,1fr) auto; align-items:center; gap:9px; min-height:74px; padding:9px; }
.shop-cart-list article.is-selected { border-color:rgba(25,25,25,.18); }
.shop-cart-check { display:grid; place-items:center; width:20px; height:34px; cursor:pointer; }
.shop-cart-check input { width:15px; height:15px; margin:0; }
.shop-cart-check i { display:none; }
.shop-mini-cover { width:48px; height:48px; overflow:hidden; border-radius:12px; }
.shop-mini-cover img { display:block; width:100%; height:100%; object-fit:cover; }
.shop-mini-cover span { display:grid; width:100%; height:100%; place-items:center; }
.shop-cart-list article > div:nth-of-type(2) { min-width:0; }
.shop-cart-list article > div:nth-of-type(2) b { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.shop-checkout { display:flex !important; align-items:center; justify-content:space-between; gap:14px; }
.shop-cart-total { display:grid; flex:1 1 auto; min-width:0; align-content:center; gap:3px; }
.shop-cart-total span { color:#999; font-size:10px; }
.shop-cart-total b { font-size:18px; }
.shop-checkout-actions { display:grid; flex:0 0 auto; justify-items:end; gap:8px; width:min(100%, 230px); min-width:0; }
.shop-cart-payer { display:flex; align-items:stretch; gap:14px; width:100%; box-sizing:border-box; padding:2px 4px; }
.shop-cart-payer button { flex:1 1 0; min-width:0 !important; height:34px; border:1px solid rgba(0,0,0,.1) !important; border-radius:10px !important; background:#fff !important; color:#666 !important; font-size:10px !important; }
.shop-cart-payer button.is-active { border-color:#222 !important; background:#222 !important; color:#fff !important; }
.shop-cart-payer button:disabled { opacity:.5; cursor:not-allowed; }
.shop-cart-settle { width:auto; min-width:92px; min-height:40px !important; }
@media (max-width:390px) {
  .shop-cart-list article { grid-template-columns:20px 44px minmax(0,1fr) auto; gap:7px; padding:8px; }
  .shop-mini-cover { width:44px; height:44px; }
}

/* 深色系统下，小组件库仍展示浅色磨砂预览，不让组件自己的暗色主题把玻璃底透成黑色。 */
@media not all {
  .desktop-widget-library > section {
    border-color:rgba(255,255,255,.72) !important;
    background:rgba(248,248,246,.9) !important;
    color:#222 !important;
  }
  .desktop-widget-library header,
  .desktop-widget-library > section > .desktop-widget-library-tabs {
    border-color:rgba(0,0,0,.07) !important;
    background:rgba(248,248,246,.72) !important;
  }
  .desktop-widget-library header h2,
  .desktop-widget-library-label b,
  .desktop-widget-option footer b { color:#222 !important; }
  .desktop-widget-library header span,
  .desktop-widget-library header p,
  .desktop-widget-library-label small,
  .desktop-widget-option footer small { color:#777 !important; }
  .desktop-widget-library header > button {
    background:#fff !important;
    color:#333 !important;
  }
  .desktop-widget-library .desktop-widget-real-preview:is(.profile-card,.todo-widget,.countdown-widget,.elapsed-days-widget,.shared-widget,.now-playing-widget,.date-calendar-card) {
    border-color:rgba(255,255,255,.78) !important;
    background-color:rgba(255,255,255,.76) !important;
    color:#303236 !important;
    box-shadow:0 8px 26px rgba(0,0,0,.08),inset 0 1px 0 rgba(255,255,255,.82) !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.celestial-specimen-widget {
    border-color:rgba(255,255,255,.76) !important;
    background:radial-gradient(circle at 68% 42%,rgba(255,255,255,.62),transparent 29%),linear-gradient(135deg,rgba(255,255,255,.72),rgba(225,229,232,.56) 54%,rgba(255,255,255,.52)) !important;
    color:#34363a !important;
    box-shadow:0 10px 28px rgba(39,43,50,.1),inset 0 1px 0 rgba(255,255,255,.78) !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.frost-profile-widget {
    border-color:rgba(255,255,255,.58) !important;
    background:rgba(255,255,255,.56) !important;
    box-shadow:0 15px 34px rgba(31,34,39,.12),inset 0 1px 0 rgba(255,255,255,.62) !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.frost-profile-widget .frost-profile-body {
    border-color:rgba(255,255,255,.65) !important;
    background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(239,242,244,.62)) !important;
    color:#303033 !important;
  }
  .desktop-widget-library .desktop-widget-real-preview.frost-profile-widget .frost-profile-body > p { color:rgba(48,48,52,.64) !important; }
}
/* Reveal the opponent card only after a round is resolved. */
.love-letter-hidden-card.is-revealed{overflow:hidden;background:#3b2630}
.love-letter-hidden-card.is-revealed img{display:block;width:100%;height:100%;object-fit:cover}

.chat-subhead-actions { display: flex; align-items: center; gap: 7px; }
.chat-subhead-actions .chat-page-beauty-trigger { border-color: rgba(0,0,0,.08); background: rgba(0,0,0,.035); color: #777; }
.chat-page-beauty-editor { position: fixed; inset: 0; z-index: 41; display: none; align-items: center; justify-content: center; padding: 18px; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.chat-page-beauty-editor.is-open { display: flex; }
.chat-page-beauty-sheet { display: flex; flex-direction: column; width: min(100%, 560px); max-height: 92vh; overflow: hidden; border: 1px solid rgba(255,255,255,.72); border-radius: 24px; background: rgba(248,248,246,.96); color: #222; box-shadow: 0 20px 60px rgba(0,0,0,.22); }
.chat-page-beauty-sheet > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 22px; border-bottom: 1px solid rgba(0,0,0,.08); }
.chat-page-beauty-sheet > header h2 { margin-top: 6px; font-size: 21px; }
.chat-page-beauty-sheet > header small { display: block; margin-top: 5px; color: #999; font-size: 10px; }
.chat-page-beauty-sheet > header button { width: 30px; height: 30px; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: #555; font-size: 21px; cursor: pointer; }
.chat-page-beauty-sheet > main { min-height: 0; overflow-y: auto; padding: 18px 22px; }
.chat-page-beauty-tabs { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-bottom: 14px; padding: 4px; border-radius: 12px; background: rgba(0,0,0,.045); }
.chat-page-beauty-tabs button { min-height: 34px; border: 0; border-radius: 9px; background: transparent; color: #888; font: inherit; font-size: 11px; cursor: pointer; }
.chat-page-beauty-tabs button.is-active { background: #222; color: #fff; box-shadow: 0 4px 10px rgba(0,0,0,.12); }
.chat-page-beauty-current { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.chat-page-beauty-current b { font-size: 14px; }
.chat-page-beauty-current span { color: #999; font-size: 10px; }
.chat-page-beauty-hint { max-height: 150px; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; margin: 0 0 9px; padding: 9px 10px; border: 1px solid rgba(0,0,0,.08); border-radius: 10px; background: rgba(0,0,0,.025); color: #999; font-size: 10px; line-height: 1.7; }
.chat-page-beauty-hint code { color: #777; font: 10px ui-monospace, SFMono-Regular, Menlo, monospace; }
.chat-page-beauty-hint-line { display: block; }
.chat-page-beauty-hint-line code { display: inline-block; margin-right: 5px; }
.chat-page-beauty-hint-line > span { color: #888; }
.chat-css-hint-note { display: block; margin-top: 7px; color: #a47777; }
.chat-css-hint-note code { color: #9b5c5c; }
.chat-page-beauty-sheet textarea { display: block; width: 100%; min-height: 230px; padding: 12px; border: 1px solid rgba(0,0,0,.11); border-radius: 12px; outline: 0; background: #fafaf8; color: #222; font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; resize: vertical; }
.chat-page-beauty-sheet > footer { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 14px 22px 20px; border-top: 1px solid rgba(0,0,0,.08); }
.chat-page-beauty-sheet > footer button { min-height: 36px; padding: 0 13px; border: 1px solid rgba(0,0,0,.11); border-radius: 10px; background: #f1f1ef; color: #555; font: inherit; font-size: 11px; cursor: pointer; }
.chat-page-beauty-sheet > footer input { display: none; }
.chat-page-beauty-sheet > footer button.is-primary { background: #222; color: #fff; }
@media not all {
  .chat-subhead-actions .chat-page-beauty-trigger { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.07); color: #ccc; }
  .chat-page-beauty-sheet { border-color: rgba(255,255,255,.15); background: #242424; color: #eee; }
  .chat-page-beauty-sheet > header { border-color: rgba(255,255,255,.12); }
  .chat-page-beauty-sheet > header small, .chat-page-beauty-current span { color: #999; }
  .chat-page-beauty-sheet > header button, .chat-page-beauty-sheet > footer button { border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.08); color: #ddd; }
  .chat-page-beauty-tabs { background: rgba(255,255,255,.07); }
  .chat-page-beauty-tabs button { color: #aaa; }
  .chat-page-beauty-tabs button.is-active, .chat-page-beauty-sheet > footer button.is-primary { background: #eee; color: #111; }
  .chat-page-beauty-hint { border-color: rgba(255,255,255,.12); background: rgba(255,255,255,.06); }
  .chat-page-beauty-hint code { color: #bbb; }
  .chat-page-beauty-sheet textarea { border-color: rgba(255,255,255,.14); background: #1c1c1c; color: #eee; }
  .chat-page-beauty-sheet > footer { border-color: rgba(255,255,255,.12); }
}

/* 聊天首页：搜索区域与下方会话列表统一为浅灰底，避免主题覆盖成深色胶囊。 */
.chat-app:not(.is-chatting) .chat-launch-list .chat-message-search,
.chat-app:not(.is-chatting) .chat-launch-list .chat-message-search > label {
  background:#e5e5e5 !important;
  background-image:none !important;
}
.chat-app:not(.is-chatting) .chat-launch-list .chat-message-search {
  box-shadow:none !important;
}
.chat-app:not(.is-chatting) .chat-launch-list .chat-message-search > label {
  border-color:#c9c9c9 !important;
}
.chat-app:not(.is-chatting) .chat-launch-list .chat-message-search input {
  background:transparent !important;
}

/* 聊天首页：搜索框外侧要与会话列表所在的浅灰页面底色一致；圆角输入框单独保留一档浅灰。 */
.chat-app:not(.is-chatting) .chat-launch-list .chat-message-search {
  background:transparent !important;
  background-image:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.chat-app:not(.is-chatting) .chat-launch-list .chat-message-search > label {
  background:#e5e5e5 !important;
}

/* 页面美化：本页保存放在关闭键左侧；添加、清空与选择方案放在保存全部左侧。 */
.chat-page-beauty-header-actions,
.forum-page-beauty-header-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex:0 0 auto;
}
.chat-page-beauty-sheet > header .chat-page-beauty-header-actions > button:first-child,
.forum-page-beauty-sheet > header .forum-page-beauty-header-actions > button:first-child {
  width:auto;
  min-width:64px;
  height:30px;
  padding:0 10px;
  border:1px solid rgba(0,0,0,.11);
  border-radius:9px;
  background:#f1f1ef;
  color:#555;
  font-size:10px;
}
.chat-page-beauty-sheet > footer select,
.forum-page-beauty-sheet > footer select {
  min-width:118px;
  min-height:36px;
  padding:0 9px;
  border:1px solid rgba(0,0,0,.11);
  border-radius:10px;
  outline:0;
  background:#f1f1ef;
  color:#555;
  font:inherit;
  font-size:11px;
}
@media not all {
  .chat-page-beauty-sheet > header .chat-page-beauty-header-actions > button:first-child,
  .forum-page-beauty-sheet > header .forum-page-beauty-header-actions > button:first-child,
  .chat-page-beauty-sheet > footer select,
  .forum-page-beauty-sheet > footer select {
    border-color:rgba(255,255,255,.13);
    background:rgba(255,255,255,.08);
    color:#ddd;
  }
}

/* 所有 App 的预设变量说明：内容较多时固定高度并支持上下滑动。 */
.chat-offline-preset-controls .offline-preset-variable-guide,
.fanfic-preset-variable-guide,
.ifspace-preset-variable-guide {
  max-height:150px;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  -webkit-overflow-scrolling:touch;
  align-content:start;
}

/* 同人文新建故事页的预设与样式管理统一使用黑白灰，阅读页保留原阅读配色。 */
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-detail,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-new,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager {
  border-color:rgba(0,0,0,.13);
  background:rgba(255,255,255,.76);
  color:#333;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset > label,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor label,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-new label {
  color:#666;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset select,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor > div:last-child button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-detail button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-new button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager-head button {
  border-color:rgba(0,0,0,.15);
  background:#f1f1f1;
  color:#444;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset textarea,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor input,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor textarea,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-detail textarea,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-new input,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-new textarea {
  border-color:rgba(0,0,0,.15);
  background:#fff;
  color:#333;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-preset-variable-guide {
  border-color:rgba(0,0,0,.12);
  background:#f5f5f5;
  color:#777;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-preset-variable-guide b,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-preset-variable-guide code,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor > div:first-child span,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager-head b,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager > label span {
  color:#555;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor > div:first-child button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager-head button {
  color:#555;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-generation-preset-editor > div:last-child button:last-child,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-detail button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-new > div button:last-child {
  border-color:#333;
  background:#333;
  color:#fff;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager > small,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-detail small {
  color:#888;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-character-picker button,
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager > label {
  border-color:rgba(0,0,0,.12);
  background:#e4e4e4;
  color:#555;
}
.fanfic-app .fanfic-page:not(.fanfic-reader-page) .fanfic-style-manager > label input {
  accent-color:#555;
}
.love-letter-header { grid-template-columns:42px minmax(0,1fr) auto auto; }
.love-letter-header .couple-game-api-button { width:auto; min-width:38px; height:30px; padding:0 10px; border:0; border-radius:15px; background:rgba(255,240,215,.14); color:#ffe7c2; font:700 10px/1 inherit; letter-spacing:.04em; }
.couple-mystery-header .couple-game-api-button { width:auto; min-width:38px; height:30px; padding:0 10px; border-radius:15px; font-size:10px; }
.couple-flower-roulette-header > div { display:flex; align-items:center; gap:8px; }
.couple-flower-roulette-header .couple-game-api-button { min-width:38px; height:30px; padding:0 10px; border-radius:15px; background:rgba(255,255,255,.16); color:#fff; font-size:10px; font-weight:700; letter-spacing:.04em; }
.love-letter-log-dock:not(.is-positioned) { transform:translateY(-50%); }
.love-letter-log-dock.is-positioned { transform:none; }
.love-letter-log-dock .love-letter-letter-paper { max-height:calc(100vh - 32px); max-height:calc(100dvh - 32px); }
.love-letter-log-dock .love-letter-letter-paper { overflow:visible; background-color:#f7ede3; background-size:calc(100% - 18px) calc(100% - 18px); background-position:center; background-repeat:no-repeat; }
.love-letter-log-dock .love-letter-letter-paper { border:0; border-radius:0; background-color:#f7ede3; background-size:calc(100% - 18px) calc(100% - 18px); box-shadow:none; }

/* Keep editing surfaces and their scroll areas above the mobile keyboard. */
body.ideal-keyboard-open .beauty-modal.is-open,
body.ideal-keyboard-open .world-editor.is-open,
body.ideal-keyboard-open > [data-chat-offline-modal].is-open {
  top:var(--ideal-keyboard-viewport-top, 0px);
  right:0;
  bottom:auto;
  left:0;
  height:var(--ideal-keyboard-viewport-height, 100dvh);
}
/* The chat app is position:fixed, so resizing body alone does not move its
   composer above iOS's visual keyboard viewport. Resize the app itself while
   the keyboard is open; the conversation flex layout then keeps its composer
   at the viewport bottom, including when a quote preview is present. */
body:is(.ideal-keyboard-transition,.ideal-keyboard-open):has(.chat-app.is-open, .chat-offline-modal.is-open, .beauty-sheet, .world-editor-sheet) {
  background-color:#f5f5f3 !important;
  background-image:none !important;
}
body:is(.ideal-keyboard-transition,.ideal-keyboard-open):has(.chat-app.is-open, .chat-offline-modal.is-open, .beauty-sheet, .world-editor-sheet)::before {
  position:fixed;
  z-index:28;
  inset:-100vh 0;
  content:"";
  background:#f5f5f3;
  pointer-events:none;
}
html:has(body:is(.ideal-keyboard-transition,.ideal-keyboard-open):has(.chat-app.is-open, .chat-offline-modal.is-open, .beauty-sheet, .world-editor-sheet)) {
  background-color:#f5f5f3 !important;
  background-image:none !important;
}
body.ideal-keyboard-open .chat-app.is-open.is-chatting {
  top:0;
  right:0;
  bottom:auto;
  left:0;
  height:var(--ideal-app-height, var(--ideal-keyboard-viewport-height, 100dvh));
  background-color:#f5f5f3 !important;
}
body.ideal-keyboard-open .chat-app.is-open.is-chatting .chat-conversation > .chat-compose-wrap.has-chat-quote {
  background-color:transparent !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
/* 键盘打开时，普通输入行与引用状态使用相同的 8px 底部间距。
   覆盖历史上的 96px 输入区和 -20px 上移，避免输入框悬在键盘上方。 */
body.ideal-keyboard-open .chat-app.is-open.is-chatting .chat-conversation > .chat-compose-wrap.has-input-focus:not(.has-chat-quote) {
  flex-basis:62px !important;
  height:62px !important;
  padding:10px 14px 8px !important;
}
body.ideal-keyboard-open .chat-app.is-open.is-chatting .chat-conversation > .chat-compose-wrap.has-input-focus:not(.has-chat-quote) > .chat-compose {
  flex:0 0 44px !important;
  height:44px !important;
  min-height:44px !important;
  transform:none !important;
}
body.ideal-keyboard-open .beauty-sheet { min-height:0; }
body.ideal-keyboard-open .beauty-content {
  min-height:0;
  flex:1 1 0;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
body.ideal-keyboard-open .world-editor-sheet {
  max-height:calc(var(--ideal-keyboard-viewport-height, 100dvh) - 24px);
}
body.ideal-keyboard-open .world-editor-sheet #worldEditorForm {
  min-height:0;
  flex:1 1 auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
body.ideal-keyboard-open .chat-offline-modal .offline-meeting-v2 {
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
body.ideal-keyboard-open .chat-offline-modal .offline-meeting-v2 > .chat-offline-messages {
  flex:0 0 auto;
  min-height:max(230px,38vh);
  overflow:visible;
}
body.ideal-keyboard-open .chat-offline-modal .offline-meeting-v2 > .chat-offline-v2-dock {
  position:sticky;
  bottom:0;
  z-index:2;
}
.chat-transfer-message > .chat-transfer-cny {
  display:block;
  margin-top:3px;
  color:inherit;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;
  font-size:11px;
  font-weight:500;
  letter-spacing:0;
  line-height:1.35;
  opacity:.68;
  text-align:center;
}

/* Desktop icon collections: the list stays in flow so mobile scrolling cannot clip it. */
.beauty-icon-sets { margin:10px 0; padding:5px; max-height:220px; overflow-y:auto; border:1px solid #ddd; border-radius:12px; background:#fafafa; }

/* 聊天设置里的固定外貌需要能完整展开编辑，输入框也要给足多行高度。 */
.chat-image-appearance-settings { gap:12px; }
.chat-image-appearance-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.chat-image-appearance-heading h3 { margin:0; }
.chat-image-appearance-heading small { display:block; margin-top:5px; color:#999; font-size:10px; line-height:1.5; }
.chat-image-appearance-heading button { flex:0 0 auto; min-height:32px; padding:0 11px; border:1px solid rgba(0,0,0,.11); border-radius:10px; background:#fff; color:#555; font:inherit; font-size:11px; cursor:pointer; }
.chat-image-appearance-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(145px,1fr)); gap:10px; }
.chat-image-appearance-field { display:grid; gap:6px; color:#666; font-size:11px; }
.chat-image-appearance-field.is-other { grid-column:1 / -1; }
.chat-image-appearance-field textarea { width:100%; min-height:76px; padding:9px; border:1px solid rgba(0,0,0,.12); border-radius:9px; outline:0; background:#fff; color:#222; font:inherit; font-size:12px; line-height:1.5; resize:vertical; }
.chat-image-appearance-field.is-other textarea { min-height:92px; }
.chat-image-appearance-settings:not(.is-expanded) .chat-image-appearance-field.is-other textarea { min-height:76px; }
.chat-image-appearance-settings.is-expanded .chat-image-appearance-grid { grid-template-columns:1fr; }
.chat-image-appearance-settings.is-expanded .chat-image-appearance-field textarea { min-height:112px; }
.chat-image-appearance-settings.is-expanded .chat-image-appearance-field.is-other textarea { min-height:180px; }
@media not all {
  .chat-image-appearance-heading button,
  .chat-image-appearance-field textarea { border-color:rgba(255,255,255,.14); background:rgba(0,0,0,.2); color:#eee; }
}

/* 设置页也是 fixed 层；键盘出现时同步到 visual viewport，避免编辑文字被底部遮住。 */
body.ideal-keyboard-open .chat-settings.is-open {
  top:var(--ideal-keyboard-viewport-top,0px);
  right:0;
  bottom:auto;
  left:0;
  height:var(--ideal-keyboard-viewport-height,100dvh);
}
body.ideal-keyboard-open .chat-settings-page > main { padding-bottom:calc(24px + env(safe-area-inset-bottom)); }
body.ideal-keyboard-open .chat-image-appearance-field textarea { scroll-margin-bottom:120px; }
.beauty-icon-sets[hidden] { display:none; }
.beauty-icon-set-row { display:flex; align-items:center; gap:6px; min-height:40px; border-radius:9px; }
.beauty-icon-set-row.is-active { background:#ededed; }
.beauty-icon-set-row button { min-height:36px; border:0; background:transparent; color:#333; font:inherit; font-size:12px; cursor:pointer; border-radius:7px; }
.beauty-icon-set-row button:hover { background:#eee; }
.beauty-icon-set-row [data-icon-set-pick] { flex:1; min-width:0; text-align:left; padding:8px 10px; overflow-wrap:anywhere; }
.beauty-icon-set-row .beauty-icon-set-delete { flex:0 0 auto; min-width:48px; margin-left:auto; padding:8px 10px; background:#ffe9e9; color:#d92332; font-size:11px; font-weight:650; }
.beauty-icon-set-row .beauty-icon-set-delete:hover { background:#ffd4d8; color:#b81022; }
.beauty-icon-set-row .beauty-icon-set-delete:disabled { cursor:default; opacity:.38; }
.beauty-icon-section-actions [data-icon-set-toggle] { max-width:clamp(90px,22vw,180px); min-width:0; overflow:hidden; text-overflow:ellipsis; }
.beauty-icon-section-actions [data-icon-set-add] { flex:0 0 auto; width:clamp(27px,3vw,34px); padding:0; font-size:clamp(15px,2vw,18px); }
@media (max-width:520px) {
  .beauty-icon-section-actions [data-icon-set-toggle] { max-width:none; }
  .beauty-icon-section-actions [data-icon-set-add] { width:clamp(27px,8vw,32px); font-size:clamp(14px,4.5vw,18px); }
}
[data-icon-set-editor] .beauty-input { box-sizing:border-box; width:100%; margin:8px 0 16px; }

/* Ideal Machine music playlists stay compact and share the existing music rows. */
.music-ideal-playlists { max-width:580px; margin:0 auto 16px; padding:14px; border:1px solid rgba(0,0,0,.07); border-radius:17px; background:#fff; box-shadow:0 9px 24px rgba(0,0,0,.035); }
.music-ideal-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
.music-ideal-head>div { display:grid; gap:4px; min-width:0; }
.music-ideal-head span { color:#999; font-size:8px; font-weight:700; letter-spacing:.12em; }
.music-ideal-head b { overflow:hidden; font-size:15px; text-overflow:ellipsis; white-space:nowrap; }
.music-ideal-head small,.music-ideal-subhead small { color:#999; font-size:10px; }
.music-ideal-head button,.music-role-favorite-toggle { flex:0 0 auto; min-height:30px; padding:0 10px; border:1px solid rgba(0,0,0,.1); border-radius:9px; background:#f4f4f5; color:#333; font:inherit; font-size:10px; cursor:pointer; }
.music-role-favorite-delete { border-color:rgba(190,40,40,.24) !important; background:#fff0f0 !important; color:#bd3030 !important; }
.music-ideal-head > .music-role-favorite-actions { display:flex; flex-direction:row; align-items:center; gap:6px; flex:0 0 auto; margin-left:auto; white-space:nowrap; }
.music-ideal-list,.music-ideal-favorites,.music-ideal-track-list { display:grid; gap:7px; }
.music-ideal-favorites { margin-top:15px; padding-top:12px; border-top:1px solid rgba(0,0,0,.06); }
.music-ideal-subhead { display:flex; align-items:center; justify-content:space-between; margin-bottom:2px; color:#444; font-size:11px; }
.music-ideal-row { display:flex; align-items:center; gap:9px; width:100%; min-width:0; padding:9px 8px; border:0; border-radius:11px; background:#f6f6f7; color:#333; text-align:left; cursor:pointer; }
.music-ideal-row span { display:grid; flex:1; gap:3px; min-width:0; }
.music-ideal-row b,.music-ideal-row small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.music-ideal-row b { font-size:11px; }.music-ideal-row small { color:#999; font-size:9px; }.music-ideal-row em { color:#aaa; font-size:18px; font-style:normal; }
.music-ideal-list>p,.music-ideal-favorites>p { margin:4px 0; color:#999; font-size:10px; }
.music-ideal-track-list .music-song { padding:7px; }.music-ideal-track-list .music-song>button.music-ideal-remove { background:#fbe9e9; color:#c33; font-size:16px; }.music-ideal-add { display:grid; place-items:center; flex:0 0 31px; width:31px; height:31px; border:1px solid rgba(0,0,0,.1); border-radius:50%; background:#fff; color:#333; font-size:17px; line-height:1; cursor:pointer; }
.music-role-playlist header { display:flex; align-items:center; gap:10px; }.music-role-playlist header .music-role-favorite-toggle { margin-left:auto; }.music-role-playlist header>div { min-width:0; }
[data-music-playlist-picker] { position:fixed; inset:0; z-index:80; display:grid; place-items:center; padding:18px; }.music-playlist-picker-mask { position:absolute; inset:0; background:rgba(0,0,0,.28); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }.music-playlist-picker-sheet { position:relative; width:min(100%,390px); max-height:78vh; overflow:auto; padding:18px; border-radius:22px; background:#fbfbfc; box-shadow:0 20px 60px rgba(0,0,0,.2); }.music-playlist-picker-sheet header { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }.music-playlist-picker-sheet header>div { display:grid; gap:5px; min-width:0; }.music-playlist-picker-sheet header span { color:#999; font-size:8px; font-weight:700; letter-spacing:.12em; }.music-playlist-picker-sheet h2 { font-size:18px; }.music-playlist-picker-sheet header small { overflow:hidden; color:#888; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.music-playlist-picker-sheet header button { width:30px; height:30px; border:0; border-radius:50%; background:#eee; color:#555; font-size:20px; cursor:pointer; }.music-playlist-picker-list { display:grid; gap:7px; margin:16px 0 10px; }.music-playlist-picker-list button { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:11px; border:1px solid rgba(0,0,0,.08); border-radius:11px; background:#fff; color:#333; text-align:left; cursor:pointer; }.music-playlist-picker-list button span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.music-playlist-picker-list button small,.music-playlist-picker-list p { color:#999; font-size:10px; }.music-playlist-picker-new { width:100%; min-height:38px; border:1px solid rgba(0,0,0,.12); border-radius:11px; background:#222; color:#fff; font:inherit; font-size:11px; cursor:pointer; }
[data-music-toast] { position:fixed; left:50%; bottom:calc(24px + env(safe-area-inset-bottom)); z-index:90; max-width:calc(100% - 40px); padding:9px 14px; border-radius:999px; background:rgba(30,30,30,.92); color:#fff; font-size:11px; opacity:0; pointer-events:none; transform:translate(-50%,8px); transition:opacity .16s ease,transform .16s ease; }
[data-music-toast].is-visible { opacity:1; transform:translate(-50%,0); }
@media not all { .music-ideal-playlists,.music-playlist-picker-sheet { background:#2a2a2d; color:#eee; }.music-ideal-row,.music-playlist-picker-list button { background:rgba(255,255,255,.08); color:#eee; border-color:rgba(255,255,255,.14); }.music-ideal-head button,.music-role-favorite-toggle,.music-ideal-add { background:rgba(255,255,255,.1); color:#eee; border-color:rgba(255,255,255,.14); }.music-playlist-picker-sheet header button { background:rgba(255,255,255,.1); color:#eee; } }
.music-playlist-name-dialog { position:fixed; inset:0; z-index:82; display:grid; place-items:center; padding:18px; }
.music-playlist-name-mask { position:absolute; inset:0; background:rgba(0,0,0,.28); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.music-playlist-name-sheet { position:relative; width:min(100%,360px); padding:18px; border-radius:22px; background:#fbfbfc; box-shadow:0 20px 60px rgba(0,0,0,.2); }
.music-playlist-name-sheet header { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:18px; }
.music-playlist-name-sheet header > div { display:grid; gap:5px; }
.music-playlist-name-sheet header span { color:#999; font-size:8px; font-weight:700; letter-spacing:.12em; }
.music-playlist-name-sheet h2 { margin:0; font-size:18px; }
.music-playlist-name-sheet header button { width:30px; height:30px; border:0; border-radius:50%; background:#eee; color:#555; font-size:20px; cursor:pointer; }
.music-playlist-name-sheet label { display:grid; gap:7px; color:#666; font-size:11px; }
.music-playlist-name-sheet input { width:100%; min-height:42px; padding:0 12px; border:1px solid rgba(0,0,0,.12); border-radius:12px; outline:0; background:#fff; color:#222; font:inherit; font-size:13px; }
.music-playlist-name-sheet input:focus { border-color:#555; box-shadow:0 0 0 3px rgba(0,0,0,.06); }
.music-playlist-name-error { min-height:17px; margin:7px 0 0; color:#c53b3b; font-size:10px; }
.music-playlist-name-sheet footer { display:flex; gap:8px; margin-top:7px; }
.music-playlist-name-sheet footer button { flex:1; min-height:40px; border:1px solid rgba(0,0,0,.12); border-radius:11px; background:#fff; color:#555; font:inherit; font-size:11px; cursor:pointer; }
.music-playlist-name-sheet footer button[data-music-playlist-name-create] { border-color:#222; background:#222; color:#fff; }
.music-playlist-name-sheet footer button:disabled { cursor:default; opacity:.55; }
.music-sheet { z-index:20; }
.music-page.is-invite-open .music-tonearm { visibility:hidden !important; }

/* Ta 情侣空间沿用独立情侣空间的收纳盒、横向文件夹和心愿纸。 */
.ta-couple-archive-box { width:min(100%,540px); margin:6px auto 18px; }
.ta-couple-archive-box .couple-archive-files,
.ta-couple-archive-box .couple-wish-archive-files { width:100%; }
.ta-couple-archive-box .couple-wish-archive-paper.is-selected { outline:2px solid #a2766e; outline-offset:2px; transform:translateY(-4px); }
.ta-couple-archive-detail { box-sizing:border-box; min-width:0; }
.ta-couple-archive-record { display:grid; gap:9px; min-width:0; }
.ta-couple-archive-record > small { color:#858684; font-size:10px; }
.ta-couple-archive-record > h4 { margin:0 0 2px; color:#3d3e3c; font:500 17px/1.4 Georgia,"Songti SC",serif; overflow-wrap:anywhere; }
.ta-couple-archive-record > p { margin:0; color:#5c625f; font-size:11px; line-height:1.65; white-space:pre-wrap; overflow-wrap:anywhere; }
.ta-couple-archive-record > p strong { display:block; margin-bottom:2px; color:#444845; font-size:10px; }
.ta-couple-archive-record .ta-couple-reply-wish { margin-top:5px; }

/* iOS 键盘打开时引用栏外围只保留聊天壁纸，不叠加输入区的灰色毛玻璃底。 */
body:is(.ideal-keyboard-transition,.ideal-keyboard-open) .chat-app.is-open.is-chatting .chat-conversation > .chat-compose-wrap.has-chat-quote,
body:is(.ideal-keyboard-transition,.ideal-keyboard-open) .chat-app.is-open.is-chatting .chat-conversation.has-chat-quote > .chat-compose-wrap {
  background:transparent !important;
  background-color:transparent !important;
  background-image:none !important;
  border-color:transparent !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
