/* CSS Reset */
        * { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; }

        :root {
            /* 初始壁纸：使用主题 UI 页面色，不使用渐变 */
            --bg-gradient: #FFFCFD;
            --app-page-gradient: #FFFCFD;
            --pink-light: #FFF0F5;
            --pink-border: #FCE8EF;
            --pink-text: #D4A5B9;
            --pink-dark: #A98796;
            --gray-text: #8A737E; /* 维持粉灰色图标线条 */
            --widget-bg: #FFFFFF;
            --dash-color: #EFDDE4;
        }

        html, body {
            width: 100%; height: 100%; /* 锁定屏幕高度 */
            background: var(--bg-gradient);
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
            color: #333; 
            /* 彻底禁止上下滚动及橡皮筋回弹效果 */
            overflow: hidden; 
            touch-action: none; 
            overscroll-behavior: none;
        }

        /* 移动端流式主容器 */
        .mobile-container {
            width: 100%; max-width: 428px; margin: 0 auto;
            position: relative; height: 100%; /* 适应无滚动模式 */
            padding-top: 60px;
        }

        .flex { display: flex; } .items-center { align-items: center; } .justify-between { justify-content: space-between; } .justify-center { justify-content: center; }

        /* Top Wide Widget */
        .top-widget-container { padding: 0 24px; position: relative; width: 100%; }
        .top-widget {
            width: 100%; background: rgba(255, 255, 255, 0.95); border-radius: 28px;
            padding: 18px 20px 14px; position: relative; box-shadow: 0 4px 16px rgba(0,0,0,0.02);
        }
        .avatar {
            width: 76px; height: 76px; border-radius: 50%;
            border: 3px solid #FFF; box-shadow: 0 4px 10px rgba(230,190,200,0.3);
            position: absolute; top: -38px; left: 50%; transform: translateX(-50%); object-fit: cover;
            cursor: pointer; /* 提示可点击 */
        }

        .bubble-dot-1 { position: absolute; top: -10px; left: 55%; width: 6px; height: 6px; background: #fff; border: 1.5px solid var(--pink-border); border-radius: 50%; }
        .bubble-dot-2 { position: absolute; top: -22px; left: 59%; width: 10px; height: 10px; background: #fff; border: 1.5px solid var(--pink-border); border-radius: 50%; }
        .speech-bubble { position: absolute; top: -46px; left: 63%; background: #fff; border: 1.5px solid var(--pink-border); color: var(--pink-dark); padding: 4px 10px; border-radius: 14px; font-size: 13px; font-weight: 600; }

        .top-row { display: flex; justify-content: space-between; align-items: flex-start; height: 26px; }
        .pill { background: var(--pink-light); color: var(--pink-dark); padding: 4px 10px; border-radius: 12px; font-size: 11px; font-weight: 600; }
        
        .top-right-icon-bg {
            width: 26px; height: 26px; background: var(--pink-light); border-radius: 50%;
            display: flex; align-items: center; justify-content: center; color: var(--pink-dark);
        }
        .top-right-icon-bg svg { width: 13px; height: 13px; stroke: currentColor; stroke-width: 2.5; fill: none; stroke-linecap: round; stroke-linejoin: round; }

        .user-name-row { margin-top: 10px; display: flex; justify-content: center; align-items: center; gap: 8px; }
        .dashed-divider { border-top: 1px dashed var(--pink-border); margin: 16px 0 12px; }

        .bottom-action { flex: 1; display: flex; align-items: center; justify-content: center; gap: 4px; color: var(--pink-dark); font-size: 11px; font-weight: 500; }
        .bottom-action svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 1.5; fill: none; stroke-linecap: round; stroke-linejoin: round; }

        /* ====== 终极防爆网格系统 ====== */
        .grid-container {
            display: grid; grid-template-columns: repeat(4, 1fr);
            gap: 22px; /* 强制统一横纵间距，这是对齐核心 */
            padding: 0 24px; margin-top: 36px;
        }

        /* 1x1 绝对正方形基底 */
        .cell-1x1 { position: relative; width: 100%; }
        .cell-1x1::before { content: ""; display: block; padding-bottom: 100%; } /* 黑科技：利用 padding 撑出完美正方形 */
        
        .cell-content-1x1 {
            position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); /* 绝对居中锁定尺寸 */
            width: 55px; height: 55px; /* 强制统一 55px */
            background: #FFFFFF; border-radius: 18px; /* 加大圆角 */
            display: flex; justify-content: center; align-items: center;
            border: none; /* 彻底清除描边 */
            box-shadow: none; /* 彻底清除阴影，实现纯白 */
            cursor: pointer;
        }
        .cell-content-1x1 svg { width: 45%; height: 45%; stroke: var(--gray-text); stroke-width: 1.5; fill: none; stroke-linecap: round; stroke-linejoin: round; }

        /* 2x2 绝对正方形基底 */
        .cell-2x2 { grid-column: span 2; grid-row: span 2; position: relative; width: 100%; }
        .cell-2x2::before { content: ""; display: block; padding-bottom: 100%; }
        .cell-content-2x2 { position: absolute; top: 0; left: 0; right: 0; bottom: 0; }

        /* 文本绝对定位脱离网格计算 */
        .app-name {
            position: absolute; top: calc(50% + 35px); left: 50%; transform: translateX(-50%); /* 锚定55px图标中心，保证距离统一 */
            font-size: 11px; color: #4A4A4A; font-weight: 500; white-space: nowrap;
        }

        /* ====== 重构左侧卡片 (彻底修复图片暴走) ====== */
        .left-widget-card {
            width: 100%; height: 100%; background: #FFFFFF; border-radius: 24px; padding: 12px;
            display: flex; flex-direction: column; box-shadow: 0 4px 12px rgba(0,0,0,0.03);
        }
        .lw-image-row {
            flex: 1; position: relative; margin: 6px 0; /* flex:1 确定高，内部绝对定位确定图，杜绝撑破 */
            display: flex; align-items: center; justify-content: space-between;
        }
        .lw-img-wrap {
            position: absolute; top: 0; bottom: 0; left: 22px; right: 22px; /* 给左右箭头留白 */
        }
        .lw-img-wrap img { width: 100%; height: 100%; object-fit: cover; border-radius: 12px; opacity: 0.85; cursor: pointer; }

        /* ====== 重构右侧卡片 ====== */
        .right-widget-border {
            width: 100%; height: 100%; border: 2px dashed var(--dash-color); border-radius: 24px; padding: 6px;
        }
        .right-widget-inner {
            width: 100%; height: 100%; background: #FFFFFF; border-radius: 18px; padding: 8px;
            display: flex; flex-direction: column; position: relative;
        }

        /* 重绘饱满猫爪 */
        .paw-circle {
            position: absolute; bottom: -14px; left: 50%; transform: translateX(-50%);
            width: 28px; height: 28px; background: #FFFFFF; border-radius: 50%; /* 外壳改为纯白 */
            display: flex; justify-content: center; align-items: center; z-index: 10;
        }

        /* ====== Search Bar (紧贴Dock并变小) ====== */
        .search-container { 
            position: absolute; bottom: 150px; left: 0; width: 100%; 
            display: flex; justify-content: center; z-index: 10; 
        }
        .search-bar { 
            background: rgba(0,0,0,0.05); color: #666; border-radius: 16px; 
            font-size: 11px; display: flex; align-items: center; justify-content: center; 
            gap: 4px; font-weight: 500; width: 70px; height: 26px; /* 更小更精致 */
        }

        /* ====== 底部Dock栏 (与主网格严格保持数学同源) ====== */
        .dock-wrapper {
            position: absolute; bottom: 25px; left: 50%; transform: translateX(-50%);
            width: 100%; max-width: 428px; padding: 0 24px; z-index: 100;
        }
        .dock-container {
            width: 100%; background: rgba(240, 238, 242, 0.85); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px);
            border-radius: 36px; padding: 16px;
            display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; /* 完全一样的等比结构 */
        }

        /* ================================ */
        /* ====== 全新精致弹窗样式 ====== */
        /* ================================ */
        .modal-overlay {
            position: fixed; top: 0; left: 0; right: 0; bottom: 0;
            background: rgba(0, 0, 0, 0.25); z-index: 9999;
            display: none; justify-content: center; align-items: center;
            backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
            animation: fadeIn 0.2s ease-out;
        }
        
        @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

        .modal-content {
            background: rgba(255, 255, 255, 0.98); width: 90%; max-width: 320px;
            border-radius: 32px; padding: 28px 24px 24px;
            display: flex; flex-direction: column; gap: 18px;
            box-shadow: 0 20px 40px rgba(0,0,0,0.1), inset 0 0 0 1px rgba(255,255,255,0.6);
            transform: scale(1); animation: popUp 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
        }
        
        @keyframes popUp {
            from { transform: scale(0.9); opacity: 0; }
            to { transform: scale(1); opacity: 1; }
        }

        .modal-content h3 { 
            text-align: center; color: var(--gray-text); font-size: 17px; 
            font-weight: 600; letter-spacing: 0.5px; margin-bottom: 2px; 
        }

        .input-group { display: flex; flex-direction: column; gap: 14px; }
        
        /* 柔和的单行输入框 */
        .modal-content input[type="text"], .modal-content input[type="password"] {
            padding: 14px 16px; background: #F6F2F4; border: 1.5px solid transparent; 
            border-radius: 16px; font-size: 13px; outline: none; width: 100%; 
            color: var(--gray-text); font-weight: 500; transition: all 0.2s;
        }
        .modal-content input[type="text"]::placeholder, .modal-content input[type="password"]::placeholder { color: #BDB2B7; font-weight: 400; }
        .modal-content input[type="text"]:focus, .modal-content input[type="password"]:focus { 
            background: #FFF; border-color: var(--pink-dark); 
            box-shadow: 0 0 0 3px rgba(169, 135, 150, 0.15); 
        }

        /* 纯文件上传按钮 (针对单图) */
        .file-input-wrapper { position: relative; width: 100%; }
        .file-btn {
            width: 100%; padding: 14px 16px; background: #FFF; 
            border: 1.5px dashed var(--pink-dark); color: var(--pink-dark);
            border-radius: 16px; font-size: 13px; font-weight: 600; cursor: pointer;
            display: flex; justify-content: center; align-items: center; gap: 8px; 
            transition: all 0.2s;
        }
        .file-btn:hover { background: var(--pink-light); }
        .file-input-wrapper input[type="file"] {
            position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer;
        }

        /* ====== 多图切换特定样式 ====== */
        .multi-img-row { display: flex; gap: 8px; align-items: center; width: 100%; }
        .multi-img-row input[type="text"] {
            flex: 1; padding: 12px 14px; border-radius: 14px; font-size: 12px;
        }
        .multi-img-row .file-input-wrapper { width: auto; }
        .multi-img-row .file-btn {
            padding: 10px; width: 75px; font-size: 11px; border-radius: 14px; height: 42px;
        }

        /* 底部操作按钮 */
        .modal-actions { display: flex; gap: 12px; margin-top: 4px; }
        .modal-actions button {
            flex: 1; padding: 14px; border: none; border-radius: 16px;
            font-size: 14px; font-weight: 600; cursor: pointer; transition: 0.2s;
        }
        .cancel-btn { background: #F2EBEE; color: var(--gray-text); }
        .cancel-btn:active { background: #E8DEE2; }
        .save-btn { 
            background: var(--pink-dark); color: #fff; 
            box-shadow: 0 4px 14px rgba(169, 135, 150, 0.35); 
        }
        .save-btn:active { transform: translateY(1px); box-shadow: 0 2px 6px rgba(169, 135, 150, 0.3); }

        /* 文案可点击状态指示 */
        .editable-text { cursor: pointer; transition: opacity 0.2s; display: inline-block; }
        .editable-text:active { opacity: 0.5; }

        /* ================================ */
        /* ====== 优化后设置面板专属样式 ====== */
        /* ================================ */
        .settings-page-overlay {
            position: absolute; top: 0; left: 0; right: 0; bottom: 0;
            background: var(--app-page-gradient) !important; z-index: 10000; display: none; flex-direction: column;
            animation: slideUp 0.35s cubic-bezier(0.175, 0.885, 0.32, 1);
        }
        @keyframes slideUp { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
        
        .settings-header {
            height: 60px; display: flex; align-items: center; padding: 0 20px;
            background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
            font-weight: 600; font-size: 16px; color: var(--gray-text);
            box-shadow: 0 2px 15px rgba(0,0,0,0.03); z-index: 10; flex-shrink: 0;
        }
        .settings-content {
            flex: 1; overflow-y: auto; padding: 20px; padding-bottom: 50px;
            overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
        }
        .settings-section {
            background: #ffffff; border-radius: 24px; padding: 20px; margin-bottom: 18px;
            box-shadow: 0 6px 20px rgba(230, 190, 200, 0.15); border: 1px solid rgba(255,255,255,0.8);
        }
        .settings-section h4 {
            margin-bottom: 16px; color: var(--pink-dark); font-size: 15px;
            display: flex; align-items: center; gap: 8px; font-weight: 600;
        }
        /* 帮助问号小图标 */
        .help-icon {
            display: inline-flex; align-items: center; justify-content: center;
            width: 18px; height: 18px; border-radius: 50%; background: #FFF0F5;
            color: var(--pink-dark); font-size: 11px; font-weight: bold; cursor: pointer;
            margin-left: auto; transition: 0.2s; border: 1px solid #FCE8EF;
        }
        .help-icon:active { transform: scale(0.9); background: var(--pink-dark); color: #fff; }

        .settings-row { margin-bottom: 14px; display: flex; flex-direction: column; gap: 8px; }
        .settings-row:last-child { margin-bottom: 0; }
        .settings-row-horizontal {
            display: flex; align-items: center; gap: 10px; justify-content: space-between; margin-bottom: 16px;
        }
        .settings-label { font-size: 12px; color: var(--gray-text); font-weight: 600; padding-left: 2px; }
        
        .settings-input, .settings-select {
            padding: 14px 16px; background: #FFF8FA; border: 1.5px solid #FCE8EF;
            border-radius: 14px; font-size: 13px; outline: none; width: 100%;
            color: var(--gray-text); font-weight: 500; transition: all 0.2s;
            -webkit-appearance: none;
        }
        .settings-select {
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238A737E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
            background-repeat: no-repeat; background-position: right 14px center; padding-right: 32px;
        }
        .settings-input:focus, .settings-select:focus { 
            background: #FFF; border-color: var(--pink-dark); 
            box-shadow: 0 0 0 3px rgba(169, 135, 150, 0.1); 
        }
        
        .icon-btn {
            display: flex; align-items: center; justify-content: center;
            background: var(--pink-light); color: var(--pink-dark);
            border: 1px solid #FCE8EF; border-radius: 14px; padding: 12px;
            cursor: pointer; transition: 0.2s; flex-shrink: 0;
            box-shadow: 0 2px 6px rgba(212, 165, 185, 0.15);
        }
        .icon-btn:active { transform: scale(0.95); box-shadow: none; }

        /* Range Slider */
        input[type=range] { -webkit-appearance: none; width: 100%; background: transparent; padding: 10px 0; margin: 0;}
        input[type=range]:focus { outline: none; }
        input[type=range]::-webkit-slider-thumb {
            -webkit-appearance: none; height: 22px; width: 22px; border-radius: 50%;
            background: #fff; border: 2.5px solid var(--pink-dark);
            box-shadow: 0 2px 6px rgba(169, 135, 150, 0.3);
            cursor: pointer; margin-top: -9px; transition: transform 0.1s;
        }
        input[type=range]::-webkit-slider-thumb:active { transform: scale(1.15); }
        input[type=range]::-webkit-slider-runnable-track {
            width: 100%; height: 5px; cursor: pointer; background: var(--dash-color); border-radius: 2.5px;
        }

        .action-btn {
            padding: 14px; border: 1.5px solid transparent; border-radius: 14px;
            background: #F6F2F4; color: var(--gray-text);
            font-size: 13px; font-weight: 600; cursor: pointer;
            width: 100%; text-align: center; transition: 0.2s;
        }
        .action-btn:active { background: #E8DEE2; transform: scale(0.98); }
        .action-btn.primary { background: var(--pink-light); color: var(--pink-dark); border-color: var(--pink-border); }
        .action-btn.danger { background: #FFF0F0; color: #E57373; border-color: #FFE0E0; }
        .action-btn.danger:active { background: #FFE0E0; }
        
        .code-block { background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 6px; font-family: monospace; color: var(--pink-dark); }
        .help-p { margin-top: 8px; }


        /* 帮助弹窗必须压过设置页，否则会出现退出设置后才显示 */
        #help-modal { z-index: 10060; }
        #help-modal .modal-content { position: relative; z-index: 10061; }
        .modal-confirm-btn {
            width: 100%; padding: 14px 16px; border: none; border-radius: 16px;
            font-size: 14px; font-weight: 600; cursor: pointer; transition: 0.2s;
            display: flex; align-items: center; justify-content: center;
        }
        .modal-confirm-btn:active { transform: translateY(1px) scale(0.99); }
        .hidden-file-input { position: fixed; width: 1px; height: 1px; opacity: 0; pointer-events: none; left: -9999px; top: -9999px; }


        /* ================================ */
        /* ====== 主题应用与全局外观 ====== */
        /* ================================ */
        #theme-wallpaper-video {
            position: fixed; inset: 0; width: 100%; height: 100%; object-fit: cover;
            z-index: 0; display: none; pointer-events: none; background: #000;
        }
        .mobile-container { z-index: 1; }
        body.theme-video-wallpaper { background: transparent !important; }
        body.theme-video-wallpaper #theme-wallpaper-video { display: block; }
        body.theme-status-hidden .top-row { visibility: hidden; }
        body.theme-ui-scaled .mobile-container {
            transform: scale(var(--theme-ui-scale, 1)); transform-origin: top center;
            height: calc(100% / var(--theme-ui-scale, 1));
        }
        .theme-page-overlay { z-index: 10020; }
        .theme-section-desc { font-size: 11px; color: #A99AA2; line-height: 1.55; margin: -6px 0 14px; }
        .theme-wallpaper-preview {
            width: 100%; height: 118px; border-radius: 20px; overflow: hidden;
            background: var(--bg-gradient); border: 1.5px solid #FCE8EF;
            display: flex; align-items: center; justify-content: center;
            color: var(--pink-dark); font-size: 12px; font-weight: 600;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,0.6);
        }
        .theme-wallpaper-preview video, .theme-wallpaper-preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .theme-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
        .theme-inline-row { display: flex; align-items: center; gap: 10px; }
        .theme-value-pill {
            min-width: 52px; padding: 9px 10px; border-radius: 12px;
            background: #FFF8FA; border: 1.5px solid #FCE8EF;
            color: var(--pink-dark); font-size: 12px; font-weight: 700; text-align: center;
        }
        .theme-icon-list { display: flex; flex-direction: column; gap: 10px; }
        .theme-icon-row {
            background: #FFF8FA; border: 1.5px solid #FCE8EF; border-radius: 18px;
            padding: 12px; display: grid; grid-template-columns: 42px 1fr; gap: 10px;
            align-items: start;
        }
        .theme-icon-preview {
            width: 42px; height: 42px; border-radius: 14px; background: #FFF;
            display: flex; align-items: center; justify-content: center; overflow: hidden;
            box-shadow: 0 2px 8px rgba(230,190,200,0.18);
        }
        .theme-icon-preview svg { width: 52%; height: 52%; stroke: var(--gray-text); stroke-width: 1.7; fill: none; stroke-linecap: round; stroke-linejoin: round; }
        .theme-icon-preview img, .cell-content-1x1 .theme-app-icon-img {
            width: 64%; height: 64%; object-fit: contain; border-radius: 12px; display: block;
        }
        .theme-icon-title { font-size: 12px; color: var(--gray-text); font-weight: 700; margin-bottom: 8px; }
        .theme-icon-actions { display: grid; grid-template-columns: 1fr 64px 64px; gap: 8px; align-items: center; }
        .theme-mini-btn {
            height: 38px; border: none; border-radius: 12px; background: var(--pink-light);
            color: var(--pink-dark); font-size: 11px; font-weight: 700; cursor: pointer;
            border: 1px solid var(--pink-border); display: flex; align-items: center; justify-content: center;
        }
        .theme-mini-btn.danger { background: #FFF0F0; color: #E57373; border-color: #FFE0E0; }
        .theme-hidden-file { position: fixed; width: 1px; height: 1px; opacity: 0; pointer-events: none; left: -9999px; top: -9999px; }
        body.theme-font-applied, body.theme-font-applied input, body.theme-font-applied button, body.theme-font-applied select, body.theme-font-applied textarea {
            font-family: var(--theme-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif) !important;
        }
        body.theme-font-applied .app-name,
        body.theme-font-applied .settings-label,
        body.theme-font-applied .action-btn,
        body.theme-font-applied .modal-content h3,
        body.theme-font-applied .pill,
        body.theme-font-applied .editable-text,
        body.theme-font-applied .bottom-action,
        body.theme-font-applied .theme-icon-title,
        body.theme-font-applied .theme-mini-btn {
            font-weight: var(--theme-font-weight, 500) !important;
        }
        body.theme-font-applied .app-name { font-size: calc(11px * var(--theme-font-scale, 1)) !important; }
        body.theme-font-applied .settings-label { font-size: calc(12px * var(--theme-font-scale, 1)) !important; }
        body.theme-font-applied .settings-input, body.theme-font-applied .settings-select { font-size: calc(13px * var(--theme-font-scale, 1)) !important; }

        /* ================================ */
        /* ====== 世界书应用 ====== */
        /* ================================ */
        .worldbook-page-overlay { z-index: 10018; }
        .worldbook-header-actions {
            margin-left: auto; display: flex; align-items: center; gap: 8px;
        }
        .worldbook-icon-btn {
            width: 34px; height: 34px; border: none; border-radius: 14px;
            background: var(--pink-light); color: var(--pink-dark);
            border: 1px solid var(--pink-border); display: flex; align-items: center; justify-content: center;
            cursor: pointer; transition: 0.2s; box-shadow: 0 2px 8px rgba(212, 165, 185, 0.14);
        }
        .worldbook-icon-btn svg { width: 17px; height: 17px; stroke: currentColor; fill: none; stroke-width: 2.3; stroke-linecap: round; stroke-linejoin: round; }
        .worldbook-icon-btn:active, .worldbook-icon-btn.active { transform: scale(0.94); background: var(--pink-dark); color: #fff; }
        .worldbook-list { display: flex; flex-direction: column; gap: 12px; }
        .worldbook-card {
            background: rgba(255,255,255,0.96); border: 1.5px solid rgba(252,232,239,0.95);
            border-radius: 24px; padding: 16px; box-shadow: 0 8px 24px rgba(230,190,200,0.16);
            display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center; cursor: pointer;
        }
        .worldbook-card:active { transform: scale(0.99); }
        .worldbook-card-title { color: var(--gray-text); font-size: 15px; font-weight: 700; margin-bottom: 6px; }
        .worldbook-card-meta { color: #B49FA9; font-size: 11px; line-height: 1.45; }
        .worldbook-delete-btn {
            width: 34px; height: 34px; border: none; border-radius: 14px; background: #FFF0F0; color: #E57373;
            border: 1px solid #FFE0E0; display: none; align-items: center; justify-content: center; cursor: pointer;
        }
        .worldbook-delete-btn svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
        .worldbook-manage .worldbook-delete-btn { display: flex; }
        .worldbook-empty {
            margin-top: 30px; padding: 28px 20px; border-radius: 26px;
            background: rgba(255,255,255,0.78); border: 1.5px dashed #FCE8EF;
            color: #A99AA2; font-size: 12px; line-height: 1.7; text-align: center;
        }
        .worldbook-entry-card {
            background: #FFFFFF; border-radius: 22px; padding: 15px; border: 1.5px solid #FCE8EF;
            box-shadow: 0 8px 22px rgba(230,190,200,0.13); cursor: pointer;
        }
        .worldbook-entry-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
        .worldbook-entry-name { color: var(--gray-text); font-size: 14px; font-weight: 700; line-height: 1.4; }
        .worldbook-entry-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
        .worldbook-badge {
            padding: 4px 8px; border-radius: 999px; background: #FFF8FA; color: var(--pink-dark);
            border: 1px solid #FCE8EF; font-size: 10px; font-weight: 700;
        }
        .worldbook-entry-content {
            margin-top: 10px; color: #897781; font-size: 12px; line-height: 1.6;
            display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
            white-space: pre-wrap; word-break: break-word;
        }
        .worldbook-segment {
            display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; background: #FFF8FA;
            border: 1.5px solid #FCE8EF; border-radius: 16px; padding: 6px;
        }
        .worldbook-segment.three { grid-template-columns: repeat(3, 1fr); }
        .worldbook-segment button {
            border: none; border-radius: 12px; background: transparent; color: #A99AA2;
            font-size: 12px; font-weight: 700; padding: 10px 6px; cursor: pointer; transition: 0.2s;
        }
        .worldbook-segment button.active { background: #FFFFFF; color: var(--pink-dark); box-shadow: 0 3px 10px rgba(230,190,200,0.18); }
        .worldbook-textarea {
            width: 100%; min-height: 170px; resize: vertical; border: 1.5px solid #FCE8EF; border-radius: 18px;
            background: #FFF8FA; padding: 14px 16px; outline: none; color: var(--gray-text);
            line-height: 1.65; font-size: 13px; font-family: inherit; font-weight: 500;
        }
        .worldbook-textarea:focus, .worldbook-keyword-input:focus {
            background: #FFF; border-color: var(--pink-dark); box-shadow: 0 0 0 3px rgba(169, 135, 150, 0.1);
        }
        .worldbook-position-help {
            margin-top: 8px; padding: 10px 12px; border-radius: 14px; background: rgba(255,248,250,0.92);
            color: #9A8992; font-size: 11px; line-height: 1.55; border: 1px dashed #FCE8EF;
        }
        .worldbook-editor-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }
        .worldbook-subtitle { color: #A99AA2; font-size: 11px; line-height: 1.6; margin: -4px 0 14px; }




        /* ================================ */
        /* ====== 聊天应用：消息 / 朋友圈 / 主页 ====== */
        /* ================================ */
        .chat-page-overlay {
            z-index: 10017; padding: 0; overflow: hidden;
            background: var(--app-page-gradient) !important;
        }
        .chat-view { display: none; flex: 1; min-height: 0; flex-direction: column; padding-bottom: 86px; }
        .chat-view.active { display: flex; }
        .chat-app-header {
            height: 60px; display: flex; align-items: center; justify-content: space-between;
            padding: 0 20px; background: rgba(255,255,255,0.86);
            backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
            box-shadow: 0 2px 15px rgba(230,190,200,0.1); flex-shrink: 0;
        }
        .chat-app-title { color: var(--gray-text); font-size: 17px; font-weight: 750; letter-spacing: .2px; }
        .chat-icon-btn {
            width: 34px; height: 34px; border: none; border-radius: 14px;
            display: flex; align-items: center; justify-content: center;
            background: var(--pink-light); color: var(--pink-dark); border: 1px solid var(--pink-border);
            cursor: pointer; box-shadow: 0 2px 8px rgba(212,165,185,.14); transition: .2s;
        }
        .chat-icon-btn:active { transform: scale(.94); background: var(--pink-dark); color: #fff; }
        .chat-icon-btn svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
        .chat-group-tabs {
            display: flex; gap: 9px; padding: 14px 20px 10px; overflow-x: auto; flex-shrink: 0;
            -webkit-overflow-scrolling: touch; scrollbar-width: none;
        }
        .chat-group-tabs::-webkit-scrollbar, .chat-list::-webkit-scrollbar, .moments-feed::-webkit-scrollbar { display: none; }
        .chat-group-chip {
            flex: 0 0 auto; padding: 9px 14px; border-radius: 999px;
            background: rgba(255,255,255,.88); border: 1.5px solid #FCE8EF;
            color: #9A8992; font-size: 12px; font-weight: 700; cursor: pointer;
            box-shadow: 0 4px 12px rgba(230,190,200,.11);
        }
        .chat-group-chip.active { background: var(--pink-dark); color: #fff; border-color: var(--pink-dark); }
        .chat-group-chip.add { min-width: 42px; text-align: center; color: var(--pink-dark); background: var(--pink-light); }
        .chat-group-chip-inner { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
        .chat-group-name { line-height: 1; }
        .chat-group-delete {
            width: 15px; height: 15px; border: none; border-radius: 50%; padding: 0;
            display: inline-flex; align-items: center; justify-content: center;
            background: rgba(169,135,150,.14); color: currentColor; cursor: pointer; flex: 0 0 auto;
        }
        .chat-group-delete svg { width: 9px; height: 9px; stroke: currentColor; fill: none; stroke-width: 2.6; stroke-linecap: round; }
        .chat-group-chip.active .chat-group-delete { background: rgba(255,255,255,.22); color: #fff; }
        .chat-list { flex: 1; overflow-y: auto; padding: 6px 20px 20px; scrollbar-width: none; }
        .chat-thread-card {
            display: grid; grid-template-columns: 52px 1fr auto; gap: 12px; align-items: center;
            padding: 14px 0; border-bottom: 1px solid rgba(252,232,239,.9); cursor: pointer;
        }
        .chat-thread-avatar {
            width: 52px; height: 52px; border-radius: 18px; overflow: hidden; background: #fff;
            box-shadow: 0 6px 18px rgba(230,190,200,.22); border: 2px solid rgba(255,255,255,.95);
        }
        .chat-thread-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .chat-thread-name { color: #5F5258; font-size: 14px; font-weight: 750; margin-bottom: 5px; }
        .chat-thread-snippet { color: #AA9DA4; font-size: 12px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 190px; }
        .chat-thread-time { color: #BEB1B7; font-size: 10px; white-space: nowrap; align-self: start; padding-top: 3px; }
        .chat-empty {
            margin-top: 42px; padding: 30px 20px; border-radius: 28px;
            background: rgba(255,255,255,.72); border: 1.5px dashed #FCE8EF;
            text-align: center; color: #A99AA2; font-size: 12px; line-height: 1.7;
        }
        .chat-bottom-dock {
            position: absolute; left: 20px; right: 20px; bottom: 18px; height: 58px;
            display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
            padding: 8px; border-radius: 26px; background: rgba(255,255,255,.82);
            backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
            box-shadow: 0 12px 30px rgba(230,190,200,.24); border: 1px solid rgba(255,255,255,.8);
            z-index: 30;
        }
        .chat-tab-btn {
            border: none; border-radius: 20px; background: transparent; color: #A99AA2;
            font-size: 12px; font-weight: 750; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 6px;
        }
        .chat-tab-btn svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
        .chat-tab-btn.active { background: var(--pink-light); color: var(--pink-dark); }
        .moments-view { padding-bottom: 86px; }
        .moments-hero {
            position: relative; height: 35%; min-height: 220px; flex-shrink: 0;
            background: url('https://picsum.photos/id/1056/600/400') center center / cover no-repeat;
        }
        .moments-hero::after {
            content: ''; position: absolute; inset: 0;
            background: linear-gradient(180deg, rgba(0,0,0,.18), rgba(0,0,0,.03) 52%, rgba(255,255,255,.18));
            pointer-events: none;
        }
        .moments-float-left, .moments-float-right {
            position: absolute; top: 18px; z-index: 4; display: flex; align-items: center; gap: 16px;
        }
        .moments-float-left { left: 18px; }
        .moments-float-right { right: 18px; }
        .moments-plain-btn {
            border: none; background: transparent; color: #fff; padding: 0; margin: 0; cursor: pointer;
            width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
            filter: drop-shadow(0 2px 6px rgba(0,0,0,.25));
        }
        .moments-plain-btn svg { width: 24px; height: 24px; stroke: currentColor; fill: none; stroke-width: 2.35; stroke-linecap: round; stroke-linejoin: round; }
        .moments-profile-wrap { position: relative; margin-top: -34px; padding: 0 22px 10px; z-index: 5; }
        .moments-profile-line { display: flex; align-items: flex-end; justify-content: flex-end; gap: 12px; }
        .moments-nickname { color: #554A50; font-size: 15px; font-weight: 800; padding-bottom: 10px; text-shadow: 0 1px 0 rgba(255,255,255,.8); }
        .moments-avatar-box {
            width: 78px; height: 64px; border-radius: 22px; background: #fff; overflow: hidden;
            box-shadow: 0 8px 24px rgba(0,0,0,.12); border: 3px solid rgba(255,255,255,.96);
        }
        .moments-avatar-box img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .moments-signature { text-align: right; color: #9B8C94; font-size: 12px; font-weight: 600; margin-top: 6px; }
        .moments-feed { flex: 1; overflow-y: auto; padding: 6px 20px 24px; scrollbar-width: none; }
        .moments-card {
            background: rgba(255,255,255,.9); border-radius: 24px; padding: 16px; margin-bottom: 14px;
            border: 1px solid rgba(252,232,239,.88); box-shadow: 0 8px 22px rgba(230,190,200,.13);
        }
        .moments-card-title { color: #5F5258; font-size: 13px; font-weight: 800; margin-bottom: 8px; }
        .moments-card-text { color: #87777F; font-size: 12px; line-height: 1.65; }
        .chat-home-scroll { flex: 1; overflow-y: auto; padding: 28px 22px 24px; }
        .chat-home-avatar {
            width: min(72vw, 230px); aspect-ratio: 1 / .82; border-radius: 36px; margin: 0 auto 18px;
            background: #fff; overflow: hidden; box-shadow: 0 16px 36px rgba(230,190,200,.25); border: 4px solid rgba(255,255,255,.95);
        }
        .chat-home-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .chat-home-name { text-align: center; color: #554A50; font-size: 20px; font-weight: 850; margin-bottom: 8px; }
        .chat-home-sign { text-align: center; color: #9A8992; font-size: 13px; font-weight: 600; margin-bottom: 24px; }
        .chat-home-actions { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
        .chat-home-action {
            min-height: 76px; border: 1.5px solid #FCE8EF; border-radius: 24px; background: rgba(255,255,255,.9);
            color: var(--gray-text); font-size: 13px; font-weight: 800; cursor: pointer;
            display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
            box-shadow: 0 8px 22px rgba(230,190,200,.13);
        }
        .chat-home-action svg { width: 22px; height: 22px; stroke: var(--pink-dark); fill: none; stroke-width: 2.3; stroke-linecap: round; stroke-linejoin: round; }
        .chat-home-action.wide { grid-column: span 2; }
        .chat-hidden-file { position: fixed; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; }


        /* 全局页面弹窗：替代浏览器 alert / confirm / prompt */
        #model-picker-modal { z-index: 10070; }
        #model-picker-modal .modal-content { position: relative; z-index: 10071; }
        .model-picker-content {
            width: 90%; max-width: 350px; max-height: 78dvh;
            padding: 24px 20px 20px; gap: 14px;
        }
        .model-picker-subtitle {
            margin: -4px 0 0; text-align: center; font-size: 11px;
            color: #A4949D; line-height: 1.55;
        }
        .model-picker-search {
            width: 100%; padding: 13px 15px; border-radius: 16px;
            border: 1.5px solid #F1DDE6; background: #FFF8FB;
            color: var(--gray-text); outline: none; font-size: 13px;
        }
        .model-picker-search:focus {
            background: #FFF; border-color: var(--pink-dark);
            box-shadow: 0 0 0 3px rgba(169, 135, 150, 0.14);
        }
        .model-picker-list {
            max-height: 48dvh; overflow-y: auto; display: flex; flex-direction: column;
            gap: 10px; padding: 2px 2px 4px; scrollbar-width: none; -ms-overflow-style: none;
        }
        .model-picker-list::-webkit-scrollbar { width: 0; height: 0; display: none; }
        .model-picker-item {
            width: 100%; border: 1.5px solid #F0DDE6; background: linear-gradient(135deg, #FFFBFD, #FFF4F8);
            color: #7F6E77; border-radius: 17px; padding: 13px 14px;
            text-align: left; font-size: 13px; font-weight: 600; line-height: 1.35;
            cursor: pointer; box-shadow: 0 6px 16px rgba(169, 135, 150, 0.08);
            word-break: break-all; transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
        }
        .model-picker-item:active {
            transform: scale(0.985); border-color: var(--pink-dark);
            box-shadow: 0 4px 12px rgba(169, 135, 150, 0.12);
        }
        .model-picker-empty {
            text-align: center; color: #AA99A2; font-size: 12px; padding: 18px 8px;
        }
        #global-dialog { z-index: 10080; }
        #global-dialog .modal-content { position: relative; z-index: 10081; gap: 14px; }
        .global-dialog-message {
            font-size: 13px; color: var(--gray-text); line-height: 1.65; text-align: center;
            padding: 4px 2px; white-space: pre-wrap; word-break: break-word;
        }
        .global-dialog-actions { display: flex; gap: 12px; margin-top: 8px; }
        .global-dialog-actions button {
            flex: 1; padding: 14px 16px; border: none; border-radius: 16px;
            font-size: 14px; font-weight: 600; cursor: pointer; transition: 0.2s;
            display: flex; align-items: center; justify-content: center;
        }
        .global-dialog-actions button:active { transform: translateY(1px) scale(0.99); }


        /* ===================================================== */
        /* ====== 全局自适应修正 + 全文件隐藏滚动条 ====== */
        /* ===================================================== */
        :root {
            --safe-top: env(safe-area-inset-top, 0px);
            --safe-bottom: env(safe-area-inset-bottom, 0px);
            --adaptive-scale: 1;
            --page-pad: clamp(16px, 5.6vw, 24px);
            --app-gap: clamp(14px, 5vw, 22px);
            --app-icon-size: clamp(46px, 14.1vw, 55px);
        }
        * { scrollbar-width: none !important; -ms-overflow-style: none !important; }
        *::-webkit-scrollbar { width: 0 !important; height: 0 !important; display: none !important; background: transparent !important; }
        html, body { width: 100vw; height: 100dvh; min-height: 100svh; overflow: hidden; }
        .mobile-container {
            width: 100vw; max-width: 428px; height: 100dvh; min-height: 100svh;
            padding-top: calc(60px * var(--adaptive-scale));
            overflow: hidden; isolation: isolate;
        }
        .top-widget-container { padding-left: var(--page-pad); padding-right: var(--page-pad); }
        .top-widget { border-radius: clamp(22px, 7.2vw, 28px); padding: calc(18px * var(--adaptive-scale)) calc(20px * var(--adaptive-scale)) calc(14px * var(--adaptive-scale)); }
        .avatar { width: calc(76px * var(--adaptive-scale)); height: calc(76px * var(--adaptive-scale)); top: calc(-38px * var(--adaptive-scale)); }
        .grid-container { gap: var(--app-gap); padding-left: var(--page-pad); padding-right: var(--page-pad); margin-top: clamp(24px, 4.5dvh, 36px); }
        .cell-content-1x1 { width: var(--app-icon-size); height: var(--app-icon-size); border-radius: calc(var(--app-icon-size) * .327); }
        .app-name { top: calc(50% + (var(--app-icon-size) / 2) + 8px); font-size: clamp(10px, 2.8vw, 11px); }
        .left-widget-card, .right-widget-border { border-radius: clamp(20px, 6vw, 24px); }
        .search-container { bottom: calc(118px + var(--safe-bottom)); }
        .dock-wrapper { bottom: max(14px, var(--safe-bottom)); padding-left: var(--page-pad); padding-right: var(--page-pad); }
        .dock-container { gap: var(--app-gap); padding: clamp(12px, 4vw, 16px); border-radius: clamp(28px, 9vw, 36px); }
        .settings-page-overlay, .theme-page-overlay, .worldbook-page-overlay, .chat-page-overlay {
            width: 100%; height: 100%; max-height: 100dvh; background: var(--app-page-gradient) !important;
        }
        .settings-content, #help-body, .worldbook-list, .worldbook-entry-list, .worldbook-editor-scroll,
        .chat-list, .chat-group-tabs, .moments-feed, .chat-home-scroll, .modal-content {
            scrollbar-width: none !important; -ms-overflow-style: none !important;
        }
        .settings-content, .worldbook-list, .worldbook-entry-list, .worldbook-editor-scroll,
        .chat-list, .moments-feed, .chat-home-scroll, #help-body { touch-action: pan-y; }
        .chat-group-tabs, .chat-home-actions { touch-action: pan-x; }

        /* ===================================================== */
        /* ====== 聊天应用视觉重修：不虚构对话、头像形状修正 ====== */
        /* ===================================================== */
        .chat-page-overlay { color: #4D454A; }
        .chat-view { padding-bottom: calc(86px + var(--safe-bottom)); }
        .chat-app-header {
            height: clamp(54px, 14vw, 62px); padding: 0 var(--page-pad);
            background: rgba(255,255,255,.72); box-shadow: none; border-bottom: 1px solid rgba(252,232,239,.72);
        }
        .chat-app-title { font-size: clamp(16px, 4.2vw, 18px); color: #4F454B; }
        .chat-icon-btn {
            width: clamp(32px, 9vw, 36px); height: clamp(32px, 9vw, 36px); border-radius: 50%;
            background: rgba(255,255,255,.78); border: 1px solid rgba(252,232,239,.9); box-shadow: 0 4px 14px rgba(230,190,200,.13);
        }
        .chat-group-tabs { padding: 12px var(--page-pad) 8px; gap: 8px; }
        .chat-group-chip {
            padding: 8px 14px; border-radius: 999px; background: rgba(255,255,255,.78);
            border: 1px solid rgba(252,232,239,.95); box-shadow: none; color: #8D7E86;
        }
        .chat-group-chip.active { background: #4F454B; color: #FFF; border-color: #4F454B; }
        .chat-group-chip.add { background: #FFF0F5; color: #A98796; min-width: 40px; }
        .chat-list { padding: 8px var(--page-pad) 20px; }
        .chat-thread-card {
            grid-template-columns: clamp(48px, 13vw, 54px) 1fr auto; gap: 12px;
            padding: 13px 14px; margin-bottom: 10px; border: 1px solid rgba(252,232,239,.9);
            border-radius: 22px; background: rgba(255,255,255,.8); box-shadow: 0 8px 24px rgba(230,190,200,.12);
        }
        .chat-thread-avatar { width: clamp(48px, 13vw, 54px); height: clamp(48px, 13vw, 54px); border-radius: 50%; }
        .chat-thread-name { font-size: 14px; color: #4F454B; }
        .chat-thread-snippet { max-width: min(52vw, 220px); color: #A99AA2; }
        .chat-empty {
            margin-top: clamp(36px, 10dvh, 70px); padding: 34px 22px; border-radius: 32px;
            background: linear-gradient(180deg, rgba(255,255,255,.82), rgba(255,248,250,.72));
            border: 1.5px dashed rgba(212,165,185,.45); box-shadow: 0 14px 36px rgba(230,190,200,.12);
            color: #9A8992; font-size: 12px; line-height: 1.8;
        }
        .chat-empty::before {
            content: ''; display: block; width: 52px; height: 52px; margin: 0 auto 14px; border-radius: 18px;
            background: linear-gradient(135deg, #FFF, #FFF0F5); border: 1px solid #FCE8EF;
            box-shadow: inset 0 0 0 8px rgba(255,255,255,.55), 0 8px 20px rgba(230,190,200,.16);
        }
        .chat-bottom-dock {
            left: var(--page-pad); right: var(--page-pad); bottom: max(14px, var(--safe-bottom));
            height: clamp(54px, 14vw, 60px); border-radius: 28px; background: rgba(255,255,255,.78);
            box-shadow: 0 12px 32px rgba(230,190,200,.20); border: 1px solid rgba(255,255,255,.82);
        }
        .chat-tab-btn { border-radius: 20px; font-size: 12px; }
        .chat-tab-btn.active { background: #4F454B; color: #FFF; }
        .moments-view { padding-bottom: calc(86px + var(--safe-bottom)); background: var(--app-page-gradient); }
        .moments-hero { height: 35dvh; min-height: 35dvh; max-height: 35dvh; flex: 0 0 35dvh; }
        .moments-profile-wrap { margin-top: -38px; padding: 0 var(--page-pad) 12px; }
        .moments-profile-line { align-items: flex-end; justify-content: flex-end; gap: 12px; }
        .moments-nickname { padding-bottom: 11px; font-size: 15px; color: #4F454B; }
        .moments-avatar-box {
            width: clamp(68px, 19vw, 78px); height: clamp(68px, 19vw, 78px);
            aspect-ratio: 1 / 1; border-radius: 20px;
            background: rgba(255,255,255,.96); border: 3px solid rgba(255,255,255,.98);
        }
        .moments-signature { margin-top: 4px; padding-right: 2px; color: #8F8088; }
        .moments-feed { padding: 8px var(--page-pad) 24px; }
        .moments-card { border-radius: 24px; box-shadow: 0 10px 26px rgba(230,190,200,.12); }
        .chat-home-scroll { padding: clamp(26px, 7dvh, 48px) var(--page-pad) 24px; }
        .chat-home-avatar {
            width: clamp(126px, 38vw, 168px); height: clamp(126px, 38vw, 168px); aspect-ratio: 1 / 1;
            border-radius: 50%; margin: 0 auto 18px; border: 4px solid rgba(255,255,255,.96);
            box-shadow: 0 16px 36px rgba(230,190,200,.24);
        }
        .chat-home-name { font-size: clamp(19px, 5vw, 22px); color: #4F454B; }
        .chat-home-sign { color: #8F8088; margin-bottom: 24px; }
        .chat-home-actions {
            display: flex; flex-wrap: nowrap; gap: 10px; overflow-x: auto; padding: 2px 2px 8px;
            justify-content: flex-start; -webkit-overflow-scrolling: touch;
        }
        .chat-home-action {
            flex: 0 0 clamp(76px, 22vw, 92px); min-height: clamp(74px, 20vw, 86px); border-radius: 24px;
            background: rgba(255,255,255,.82); box-shadow: 0 10px 24px rgba(230,190,200,.12);
            font-size: 12px; line-height: 1.15; padding: 10px 6px;
        }
        .chat-home-action.wide { grid-column: auto; }
        .chat-home-action svg { width: 21px; height: 21px; }


        /* ====== 占位态不显示外壳：聊天 / 朋友圈 / 世界书 ====== */
        .chat-empty, .worldbook-empty {
            margin: clamp(34px, 9dvh, 68px) auto 0 !important;
            padding: 0 !important;
            border: none !important;
            border-radius: 0 !important;
            background: transparent !important;
            box-shadow: none !important;
            color: #A99AA2 !important;
            font-size: 12px !important;
            line-height: 1.85 !important;
            text-align: center !important;
            max-width: 260px !important;
        }
        .chat-empty::before { display: none !important; content: none !important; }
        .moments-feed .chat-empty { margin-top: clamp(28px, 7dvh, 54px) !important; }

        /* ====== 朋友圈昵称固定在背景图内 ====== */
        .moments-hero { position: relative; }
        .moments-hero-name {
            position: absolute;
            right: calc(var(--page-pad) + clamp(68px, 19vw, 78px) + 12px);
            bottom: 14px;
            max-width: min(46vw, 190px);
            color: #fff;
            font-size: 16px;
            font-weight: 850;
            line-height: 1.2;
            text-align: right;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            text-shadow: 0 2px 8px rgba(0,0,0,.30);
            z-index: 4;
        }
        .moments-profile-line { justify-content: flex-end !important; }


        /* ===================================================== */
        /* ====== 本轮修正：无外壳导航 / 独立主页 / 精准占位 ====== */
        /* ===================================================== */
        .settings-header .icon-btn,
        .worldbook-icon-btn,
        .chat-icon-btn {
            background: transparent !important;
            border: none !important;
            box-shadow: none !important;
            border-radius: 0 !important;
            padding: 0 !important;
            color: var(--pink-dark) !important;
        }
        .settings-header .icon-btn:active,
        .worldbook-icon-btn:active, .worldbook-icon-btn.active,
        .chat-icon-btn:active {
            background: transparent !important;
            color: var(--pink-dark) !important;
            box-shadow: none !important;
            transform: scale(.92) !important;
        }
        .settings-header { box-shadow: none !important; border-bottom: 1px solid rgba(252,232,239,.68); }

        .worldbook-placeholder-mode .settings-section {
            background: transparent !important;
            border: none !important;
            box-shadow: none !important;
            padding-left: 0 !important;
            padding-right: 0 !important;
        }
        .worldbook-placeholder-mode .settings-section > h4,
        .worldbook-placeholder-mode .worldbook-subtitle { display: none !important; }
        .worldbook-placeholder-mode .worldbook-empty {
            margin-top: clamp(74px, 18dvh, 130px) !important;
            background: transparent !important;
            border: none !important;
            box-shadow: none !important;
            outline: none !important;
        }

        .chat-group-chip[data-fixed="true"] .chat-group-delete { display: none !important; }

        .chat-bottom-dock {
            left: 50% !important; right: auto !important; transform: translateX(-50%) !important;
            width: min(250px, calc(100% - (var(--page-pad) * 4))) !important;
            height: clamp(64px, 17vw, 72px) !important;
            padding: 10px 14px !important;
            border-radius: 32px !important;
        }
        .chat-tab-btn { font-size: 0 !important; gap: 0 !important; border-radius: 22px !important; }
        .chat-tab-btn svg { width: 22px !important; height: 22px !important; }

        .moments-nickname, .moments-signature, .moments-avatar-box,
        .chat-home-name, .chat-home-sign, .chat-home-avatar { cursor: pointer; }
        .moments-avatar-box { width: clamp(70px, 19vw, 80px) !important; height: clamp(70px, 19vw, 80px) !important; border-radius: 20px !important; }
        .chat-home-avatar { border-radius: 50% !important; }
        .chat-home-actions {
            display: flex !important; flex-direction: column !important; flex-wrap: nowrap !important;
            overflow-x: visible !important; overflow-y: visible !important; gap: 12px !important; padding: 0 !important;
        }
        .chat-home-action, .chat-home-action.wide {
            flex: none !important; width: 100% !important; min-height: 58px !important;
            display: grid !important; grid-template-columns: 30px 1fr !important; align-items: center !important;
            justify-content: start !important; text-align: left !important; padding: 0 18px !important;
            border-radius: 22px !important;
        }
        .chat-home-action svg { justify-self: center !important; }


        /* ====== 本次修正：主页功能图标重新绘制 + 选中态纯黑 ====== */
        .chat-group-chip.active {
            background: #000000 !important;
            color: #FFFFFF !important;
            border-color: #000000 !important;
        }
        .chat-tab-btn.active {
            background: #000000 !important;
            color: #FFFFFF !important;
        }
        .chat-home-action, .chat-home-action.wide {
            display: grid !important;
            grid-template-columns: 32px minmax(0, 1fr) 18px !important;
            grid-template-areas: "homeIcon homeText homeArrow" !important;
            align-items: center !important;
            min-height: 62px !important;
            padding: 0 18px !important;
            gap: 12px !important;
        }
        .chat-home-action .home-action-icon {
            grid-area: homeIcon !important;
            width: 32px !important;
            height: 32px !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            background: transparent !important;
            border: 0 !important;
            outline: 0 !important;
            box-shadow: none !important;
            border-radius: 0 !important;
            flex: none !important;
        }
        .chat-home-action .home-action-icon svg {
            width: 24px !important;
            height: 24px !important;
            display: block !important;
            stroke: #111111 !important;
            fill: none !important;
            stroke-width: 1.56 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
            vector-effect: non-scaling-stroke !important;
        }
        .chat-home-action > span:not(.home-action-icon):not(.home-action-arrow) {
            grid-area: homeText !important;
            display: block !important;
            min-width: 0 !important;
            color: #3F3940 !important;
            font-size: 13px !important;
            font-weight: 800 !important;
            line-height: 1 !important;
            white-space: nowrap !important;
            overflow: hidden !important;
            text-overflow: ellipsis !important;
        }
        .chat-home-action .home-action-arrow {
            grid-area: homeArrow !important;
            justify-self: end !important;
            width: 18px !important;
            height: 18px !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            color: #B0A5AB !important;
            opacity: 1 !important;
        }
        .chat-home-action .home-action-arrow svg {
            width: 16px !important;
            height: 16px !important;
            stroke: currentColor !important;
            fill: none !important;
            stroke-width: 1.95 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
            vector-effect: non-scaling-stroke !important;
        }


    
        /* ====== 主页头像 & 功能卡片修正 ====== */
        .chat-home-avatar {
            width: clamp(132px, 36vw, 156px) !important;
            height: clamp(132px, 36vw, 156px) !important;
            aspect-ratio: 1 / 1 !important;
            border-radius: 50% !important;
            overflow: hidden !important;
        }
        .chat-home-avatar img {
            width: 100% !important;
            height: 100% !important;
            aspect-ratio: 1 / 1 !important;
            object-fit: cover !important;
            object-position: center !important;
            border-radius: 50% !important;
            display: block !important;
        }
        .chat-home-action, .chat-home-action.wide {
            border: none !important;
            outline: none !important;
            box-shadow: 0 10px 26px rgba(230,190,200,.11) !important;
            background: rgba(255,255,255,.92) !important;
        }

        /* ====== 资产钱包页面 ====== */
        .chat-wallet-page {
            z-index: 10026;
            display: none;
            flex-direction: column;
            background: var(--app-page-gradient) !important;
        }
        .chat-wallet-header {
            box-shadow: none;
            border-bottom: 1px solid rgba(252,232,239,.72);
            background: rgba(255,255,255,.82);
        }
        .chat-wallet-close {
            margin-right: 12px;
            cursor: pointer;
            flex: 0 0 auto;
        }
        .wallet-balance-card {
            background: linear-gradient(180deg, rgba(255,255,255,.95), rgba(255,248,250,.92));
            border-radius: 28px;
            padding: 22px 20px 18px;
            box-shadow: 0 12px 30px rgba(230,190,200,.16);
        }
        .wallet-balance-label {
            color: #A99AA2;
            font-size: 12px;
            font-weight: 700;
            letter-spacing: .2px;
        }
        .wallet-balance-value {
            margin-top: 8px;
            color: #3F3940;
            font-size: 34px;
            font-weight: 850;
            line-height: 1;
        }
        .wallet-balance-desc {
            margin-top: 8px;
            color: #B6AAB0;
            font-size: 11px;
            line-height: 1.6;
        }
        .wallet-balance-actions {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 12px;
            margin-top: 18px;
        }
        .wallet-action-btn {
            height: 46px;
            border: none;
            border-radius: 18px;
            background: #000;
            color: #fff;
            font-size: 14px;
            font-weight: 700;
            cursor: pointer;
        }
        .wallet-action-btn.light {
            background: rgba(255,255,255,.96);
            color: #4D454A;
            box-shadow: inset 0 0 0 1px rgba(240,228,234,.9);
        }
        .wallet-bill-section {
            margin-top: 18px;
            background: rgba(255,255,255,.88);
            border-radius: 26px;
            padding: 18px 18px 16px;
            box-shadow: 0 10px 24px rgba(230,190,200,.11);
        }
        .wallet-section-title {
            color: #4F454B;
            font-size: 15px;
            font-weight: 800;
            margin-bottom: 14px;
        }
        .wallet-bill-list {
            display: flex;
            flex-direction: column;
            gap: 12px;
        }
        .wallet-bill-item {
            display: grid;
            grid-template-columns: 1fr auto;
            gap: 10px;
            align-items: center;
            padding: 14px 0;
            border-bottom: 1px solid rgba(252,232,239,.9);
        }
        .wallet-bill-item:last-child { border-bottom: none; }
        .wallet-bill-name {
            color: #4F454B;
            font-size: 13px;
            font-weight: 750;
            margin-bottom: 4px;
        }
        .wallet-bill-time {
            color: #B3A8AE;
            font-size: 11px;
        }
        .wallet-bill-amount {
            font-size: 14px;
            font-weight: 800;
            white-space: nowrap;
        }
        .wallet-bill-amount.income { color: #111111; }
        .wallet-bill-amount.expense { color: #90848B; }
        .wallet-bill-empty {
            padding: 30px 8px 26px;
            color: #AAA0A6;
            font-size: 12px;
            line-height: 1.8;
            text-align: center;
        }

        /* ====== 面具预设 / 添加好友补全 ====== */
        .chat-thread-avatar {
            border-radius: 15px !important;
            box-shadow: 0 6px 18px rgba(230,190,200,.18) !important;
        }
        .chat-thread-avatar img { border-radius: 15px !important; }
        .chat-add-panel {
            position: absolute;
            top: clamp(54px, 14vw, 62px);
            right: var(--page-pad);
            z-index: 45;
            width: 158px;
            padding: 8px;
            display: none;
            flex-direction: column;
            gap: 6px;
            background: rgba(255,255,255,.96);
            border: 1px solid rgba(252,232,239,.95);
            border-radius: 20px;
            box-shadow: 0 18px 42px rgba(130,96,112,.16);
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
        }
        .chat-add-panel.show { display: flex; }
        .chat-add-option {
            width: 100%;
            height: 42px;
            border: none;
            border-radius: 15px;
            background: transparent;
            color: #4F454B;
            font-size: 13px;
            font-weight: 750;
            display: grid;
            grid-template-columns: 24px 1fr;
            align-items: center;
            gap: 8px;
            cursor: pointer;
            text-align: left;
            padding: 0 10px;
        }
        .chat-add-option:active { background: #FFF0F5; }
        .chat-add-option svg { width: 19px; height: 19px; stroke: #111; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
        .chat-mask-page { z-index: 10027; display: none; flex-direction: column; background: var(--app-page-gradient) !important; }
        .chat-mask-header { box-shadow: none; border-bottom: 1px solid rgba(252,232,239,.72); background: rgba(255,255,255,.82); }
        .chat-mask-close { margin-right: 12px; cursor: pointer; flex: 0 0 auto; }
        .chat-mask-add-btn {
            margin-left: auto;
            width: 32px; height: 32px;
            border: none; background: transparent; color: var(--pink-dark);
            display: flex; align-items: center; justify-content: center; cursor: pointer;
        }
        .chat-mask-add-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.3; stroke-linecap: round; }
        .chat-mask-list { display: flex; flex-direction: column; gap: 12px; }
        .chat-mask-card {
            display: grid;
            grid-template-columns: 54px 1fr;
            gap: 12px;
            align-items: center;
            padding: 14px;
            background: rgba(255,255,255,.9);
            border-radius: 24px;
            box-shadow: 0 10px 26px rgba(230,190,200,.12);
            cursor: pointer;
        }
        .chat-mask-avatar {
            width: 54px; height: 54px; border-radius: 18px; overflow: hidden; background: #fff;
            box-shadow: 0 5px 14px rgba(230,190,200,.16);
        }
        .chat-mask-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .chat-mask-name { color: #4F454B; font-size: 14px; font-weight: 850; margin-bottom: 5px; }
        .chat-mask-desc { color: #A99AA2; font-size: 12px; line-height: 1.45; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
        .chat-form-modal .modal-content { max-width: 350px; width: 92%; max-height: 86dvh; overflow-y: auto; gap: 14px; }
        .chat-form-textarea {
            width: 100%; min-height: 106px; resize: vertical;
            padding: 14px 16px; border-radius: 16px; border: 1.5px solid transparent;
            background: #F6F2F4; outline: none; color: var(--gray-text);
            font-size: 13px; line-height: 1.6; font-family: inherit; font-weight: 500;
        }
        .chat-form-textarea:focus, .chat-form-select:focus {
            background: #FFF; border-color: var(--pink-dark); box-shadow: 0 0 0 3px rgba(169,135,150,.12);
        }
        .chat-form-select {
            width: 100%; padding: 14px 16px; border-radius: 16px; border: 1.5px solid transparent;
            background: #F6F2F4; color: var(--gray-text); font-size: 13px; font-weight: 600; outline: none;
            -webkit-appearance: none;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238A737E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
            background-repeat: no-repeat; background-position: right 14px center; padding-right: 34px;
        }
        .chat-avatar-preview {
            width: 78px; height: 78px; border-radius: 24px; overflow: hidden; background: #FFF;
            margin: 0 auto 2px; box-shadow: 0 8px 22px rgba(230,190,200,.16);
            border: 2px solid rgba(255,255,255,.96);
        }
        .chat-avatar-preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .chat-avatar-edit-row {
            display: grid;
            grid-template-columns: 96px minmax(0, 1fr);
            gap: 12px;
            align-items: center;
            width: 100%;
        }
        .chat-avatar-edit-row .chat-avatar-preview {
            width: 96px !important;
            height: 96px !important;
            margin: 0 !important;
            border-radius: 28px !important;
            justify-self: start !important;
        }
        .chat-avatar-edit-tools {
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 9px;
        }
        .chat-avatar-edit-tools input[type="text"] {
            padding: 13px 14px;
            background: #F6F2F4;
            border: 1.5px solid transparent;
            border-radius: 15px;
            font-size: 12px;
            outline: none;
            width: 100%;
            color: var(--gray-text);
            font-weight: 600;
        }
        .chat-avatar-edit-tools input[type="text"]:focus {
            background: #FFF;
            border-color: var(--pink-dark);
            box-shadow: 0 0 0 3px rgba(169,135,150,.12);
        }
        .chat-avatar-local-btn {
            width: 100%;
            height: 42px;
            border-radius: 15px;
            border: 1.5px dashed var(--pink-dark);
            background: #FFF;
            color: var(--pink-dark);
            font-size: 12px;
            font-weight: 800;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
        }
        .chat-avatar-local-btn:active { background: var(--pink-light); }
        .chat-avatar-local-btn input[type="file"] { display: none; }
        .chat-dual-avatar-wrap {
            display: flex;
            flex-direction: column;
            gap: 12px;
            width: 100%;
        }
        .chat-avatar-row-title {
            color: #8A737E;
            font-size: 12px;
            font-weight: 850;
            margin-bottom: -4px;
        }
        .chat-multi-select {
            width: 100%;
            min-height: 96px;
            padding: 10px 12px;
            border-radius: 16px;
            border: 1.5px solid transparent;
            background: #F6F2F4;
            color: var(--gray-text);
            font-size: 13px;
            font-weight: 600;
            outline: none;
        }
        .chat-multi-select:focus {
            background: #FFF;
            border-color: var(--pink-dark);
            box-shadow: 0 0 0 3px rgba(169,135,150,.12);
        }
        .chat-multi-help { color: #B49FA9; font-size: 10px; line-height: 1.45; margin-top: -6px; }
        .chat-form-danger { background: #FFF0F0 !important; color: #E57373 !important; box-shadow: none !important; }
        .chat-form-secondary-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }


        /* ====== Tutuwan 聊天页面 / 气泡样式：提取自上传聊天页并改为 Tutuwan 前缀 ====== */
        .Tutuwan-chat-room {
            position: absolute !important;
            inset: 0 !important;
            width: 100% !important;
            height: 100% !important;
            box-sizing: border-box !important;
            padding-top: var(--safe-top) !important;
            z-index: 10029 !important;
            background: var(--app-page-gradient) !important;
            display: none;
            flex-direction: column;
            overflow: hidden !important;
            overscroll-behavior: none;
        }
        .Tutuwan-chat-room.active { display: flex; }
        .Tutuwan-room-header {
            height: clamp(56px, 14vw, 64px);
            display: grid;
            grid-template-columns: 40px 1fr 40px;
            align-items: center;
            gap: 8px;
            padding: 0 var(--page-pad);
            background: rgba(255,255,255,.72);
            border-bottom: 1px solid rgba(252,232,239,.72);
            backdrop-filter: blur(12px);
            -webkit-backdrop-filter: blur(12px);
            flex-shrink: 0;
            color: #111;
        }
        .Tutuwan-room-back,
        .Tutuwan-room-more {
            width: 40px;
            height: 40px;
            border: none;
            background: transparent;
            color: #111;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            padding: 0;
        }
        .Tutuwan-room-back svg,
        .Tutuwan-room-more svg { width: 23px; height: 23px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
        .Tutuwan-room-title-wrap { min-width: 0; text-align: center; }
        .Tutuwan-room-title {
            display: block;
            color: #111;
            font-size: 16px;
            font-weight: 800;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .Tutuwan-room-subtitle {
            display: block;
            margin-top: 2px;
            color: #A99AA2;
            font-size: 10px;
            font-weight: 650;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .Tutuwan-title-thought-trigger {
            cursor: pointer;
            max-width: 100%;
            padding: 3px 10px;
            border-radius: 999px;
            transition: background .18s ease, transform .18s ease;
        }
        .Tutuwan-title-thought-trigger:active { transform: scale(.96); }
        .Tutuwan-title-thought-trigger:hover,
        .Tutuwan-title-thought-trigger:focus-visible {
            outline: none;
            background: rgba(0,0,0,.055);
        }
        .Tutuwan-room-content {
            flex: 1;
            min-height: 0;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
            overscroll-behavior-y: contain;
            padding: 16px 5px calc(88px + var(--safe-bottom));
            display: flex;
            flex-direction: column;
            gap: 0;
            background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,.80) 28%, rgba(255,255,255,0) 100%);
            border-top-left-radius: 0;
            border-top-right-radius: 20px;
            box-shadow: 2px -2px 10px rgba(0,0,0,.02);
            scrollbar-width: none !important;
            touch-action: pan-y;
        }
        .Tutuwan-room-content::-webkit-scrollbar { display: none !important; }
        .Tutuwan-date-divider {
            align-self: center;
            background: rgba(0,0,0,.10);
            color: #fff;
            padding: 4px 10px;
            border-radius: 12px;
            font-size: 11px;
            margin: 10px 0;
            line-height: 1;
        }
        .Tutuwan-empty-room {
            align-self: center;
            margin-top: 26px;
            color: #A99AA2;
            font-size: 12px;
            line-height: 1.8;
            text-align: center;
        }
        .Tutuwan {
            display: flex;
            width: 100%;
            padding: 0 10px;
            margin-bottom: 2px !important;
            overflow: visible !important;
            align-items: center !important;
        }
        .Tutuwan .bubble-wrapper {
            display: flex;
            align-items: flex-end;
            gap: 8px;
            max-width: 88%;
            position: relative;
            overflow: visible !important;
            margin-top: 6px !important;
        }
        .Tutuwan.user { justify-content: flex-end; }
        .Tutuwan.ai { justify-content: flex-start; }
        .Tutuwan.user .content,
        .Tutuwan.ai .content {
            --top-left: 18px;
            --top-right: 18px;
            --bottom-right: 18px;
            --bottom-left: 18px;
            padding: 8px 14px !important;
            font-size: 13px !important;
            line-height: 1.42;
            position: relative;
            word-wrap: break-word;
            overflow-wrap: break-word;
            z-index: 1;
            white-space: pre-wrap;
            max-width: min(78vw, 340px);
            min-width: 34px;
        }
        .Tutuwan.user .content {
            background-color: #929292;
            color: #fff;
            border-radius: var(--top-left) var(--top-right) var(--bottom-right) var(--bottom-left);
            box-shadow: none;
        }
        .Tutuwan.ai .content {
            background-color: #fff;
            color: #000;
            border-radius: var(--top-left) var(--top-right) var(--bottom-right) var(--bottom-left);
            box-shadow: none;
        }
        .Tutuwan.user .content::after {
            content: "";
            position: absolute;
            width: 12px;
            height: 15px;
            bottom: -15px;
            right: 6px;
            background-color: #929292;
            clip-path: path("M 15,13 Q 12,0 2,2 Q 7,3 5,22 L 13,12");
            z-index: 1;
            transform: rotate(-2deg) scale(-1);
            transform-origin: top right;
            box-sizing: border-box;
        }
        .Tutuwan.ai .content::before {
            content: "";
            position: absolute;
            width: 12px;
            height: 15px;
            bottom: -15px;
            left: -7px;
            background-color: #fff;
            clip-path: path("M 11,16 Q 10,0 1,1 Q 6.6,3 1,19 L 19,16");
            z-index: 1;
            transform: rotate(19deg) scaleY(-1);
            transform-origin: top left;
            box-sizing: border-box;
        }
        .Tutuwan .avatar-img {
            width: 35px;
            height: 35px;
            border-radius: 12px;
            margin-top: 0;
            flex-shrink: 0;
            object-fit: cover;
            background: #F2EEF1;
        }
        .Tutuwan.ai .avatar-img { margin-right: 0; }
        .Tutuwan.user .avatar-img { margin-left: 0; }
        .Tutuwan .time {
            font-size: 10px;
            color: #999;
            margin-bottom: 2px;
            white-space: nowrap;
        }
        /* 语音消息复用普通文本气泡外壳；voice-bubble 只作为 JS 行为钩子，不改外层气泡样式。 */
        .Tutuwan .content.image-bubble {
            padding: 0 !important;
            background: transparent !important;
            box-shadow: none !important;
            border-radius: 16px !important;
            overflow: visible !important;
        }
        .Tutuwan .content.image-bubble::before,
        .Tutuwan .content.image-bubble::after { display: none !important; content: none !important; }
        .Tutuwan-chat-image {
            display: block;
            max-width: min(58vw, 210px);
            max-height: 220px;
            border-radius: 16px;
            object-fit: cover;
            box-shadow: 0 8px 20px rgba(0,0,0,.08);
            background: #fff;
        }

        /* ===== 消息页左滑操作 / 气泡快捷功能增强 ===== */
        .chat-thread-swipe-wrap { position: relative; overflow: hidden; border-radius: 18px; margin: 0 12px 10px; }
        .chat-thread-swipe-wrap .chat-thread-card { margin: 0 !important; transition: transform .26s cubic-bezier(.22,.61,.36,1); will-change: transform; position: relative; z-index: 2; }
        .chat-thread-actions { position: absolute; right: 0; top: 0; bottom: 0; display: flex; align-items: stretch; z-index: 1; overflow: hidden; border-radius: 18px; }
        .chat-thread-action-btn { width: 58px; border: 0; color: #fff; font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; }
        .chat-thread-action-btn.pin { background: #FFB74D; }
        .chat-thread-action-btn.edit { background: #64B5F6; }
        .chat-thread-action-btn.delete { background: #EF5350; }
        .chat-thread-swipe-wrap.pinned .chat-thread-card::before { content: '置顶'; position: absolute; right: 10px; bottom: 8px; font-size: 10px; font-weight: 800; color: var(--pink-dark); background: #FFF0F6; border-radius: 999px; padding: 2px 7px; }
        .Tutuwan-msg-quote-box { background: rgba(0,0,0,.05); border-left: 3px solid rgba(0,0,0,.16); border-radius: 10px; padding: 6px 8px; margin-bottom: 6px; max-width: 100%; }
        .Tutuwan.user .Tutuwan-msg-quote-box { background: rgba(255,255,255,.18); border-left-color: rgba(255,255,255,.38); }
        .Tutuwan-quote-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 10px; font-weight: 900; opacity: .78; margin-bottom: 3px; }
        .Tutuwan-quote-text { font-size: 11px; line-height: 1.35; opacity: .82; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 230px; }
        .Tutuwan-msg-text { display: block; }
        .Tutuwan-bubble-toolbar { position: absolute; left: 50%; bottom: calc(100% + 10px); transform: translateX(-50%) translateY(8px); background: rgba(40,40,42,.94); color: #fff; border-radius: 18px; padding: 6px; display: flex; gap: 2px; z-index: 10060; opacity: 0; pointer-events: none; transition: opacity .18s ease, transform .18s ease; box-shadow: 0 10px 24px rgba(0,0,0,.18); white-space: nowrap; }
        .Tutuwan-bubble-toolbar.active { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0); }
        .Tutuwan-bubble-toolbar button { border: 0; background: transparent; color: #fff; font-size: 11px; font-weight: 750; padding: 7px 8px; border-radius: 12px; }
        .Tutuwan-bubble-toolbar button:active { background: rgba(255,255,255,.16); }
        .Tutuwan-multi-check { position: absolute; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; border-radius: 50%; border: 2px solid #D9CDD3; background: #fff; z-index: 3; display: none; align-items: center; justify-content: center; color: #fff; font-size: 14px; font-weight: 900; }
        .Tutuwan.ai .Tutuwan-multi-check { left: 6px; }
        .Tutuwan.user .Tutuwan-multi-check { right: 6px; }
        .Tutuwan-room-content.multi-mode .Tutuwan-multi-check { display: flex; }
        .Tutuwan.selected .Tutuwan-multi-check { background: var(--pink-dark); border-color: var(--pink-dark); }
        .Tutuwan.selected .Tutuwan-multi-check::after { content: '✓'; }
        .Tutuwan-room-content.multi-mode .Tutuwan .bubble-wrapper { transform: translateX(28px); transition: transform .2s ease; }
        .Tutuwan-room-content.multi-mode .Tutuwan.user .bubble-wrapper { transform: translateX(-28px); }
        .Tutuwan-quote-compose { position: absolute; left: 12px; right: 12px; bottom: calc(62px + var(--safe-bottom)); background: rgba(255,255,255,.92); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid rgba(0,0,0,.06); box-shadow: 0 8px 24px rgba(0,0,0,.08); border-radius: 16px; padding: 8px 38px 8px 12px; z-index: 10036; display: none; }
        .Tutuwan-quote-compose.active { display: block; animation: TutuwanQuoteIn .2s ease; }
        @keyframes TutuwanQuoteIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
        .Tutuwan-quote-compose-name { font-size: 11px; font-weight: 900; color: #5F5258; margin-bottom: 2px; }
        .Tutuwan-quote-compose-text { font-size: 12px; color: #8D7E86; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .Tutuwan-quote-compose-close { position: absolute; right: 8px; top: 8px; width: 24px; height: 24px; border: 0; border-radius: 50%; background: #F3EEF1; color: #6E6268; font-size: 16px; line-height: 24px; }
        .Tutuwan-msg-multi-bar { position: absolute; left: 12px; right: 12px; bottom: calc(64px + var(--safe-bottom)); height: 52px; background: rgba(255,255,255,.95); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-radius: 20px; box-shadow: 0 10px 30px rgba(0,0,0,.12); border: 1px solid rgba(0,0,0,.05); z-index: 10055; display: none; align-items: center; justify-content: space-around; padding: 6px; }
        .Tutuwan-msg-multi-bar.active { display: flex; animation: TutuwanQuoteIn .2s ease; }
        .Tutuwan-msg-multi-bar button { border: 0; border-radius: 15px; padding: 10px 14px; font-size: 12px; font-weight: 850; background: #F6F1F4; color: #5F5258; }
        .Tutuwan-msg-multi-bar button.danger { background: #FFE9ED; color: #D9415D; }

        .Tutuwan-room-footer {
            position: absolute !important;
            bottom: 0 !important;
            left: 0 !important;
            width: 100% !important;
            background: #fff;
            z-index: 10030 !important;
            display: flex;
            align-items: center;
            box-sizing: border-box;
            padding: 10px 15px;
            padding-bottom: max(12px, var(--safe-bottom)) !important;
            border-top: .5px solid #eee;
            gap: 10px;
        }
        .Tutuwan-footer-btn {
            width: 38px;
            height: 38px;
            border: none;
            background: transparent;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #333;
            border-radius: 50%;
            cursor: pointer;
            flex-shrink: 0;
            padding: 0;
        }
        .Tutuwan-footer-btn:active { background: #f5f5f5; }
        .Tutuwan-footer-btn svg { width: 23px; height: 23px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
        .Tutuwan-msg-input {
            flex: 1;
            min-width: 0;
            background: #f2f2f2;
            border: none;
            border-radius: 20px;
            padding: 10px 15px;
            font-size: 15px;
            color: #333;
            outline: none;
            min-height: 38px;
            max-height: 120px;
            overflow-y: auto;
            overflow-x: hidden;
            word-break: break-word;
            resize: none;
            box-sizing: border-box;
            font-family: inherit;
        }
        .Tutuwan-send-btn {
            min-width: 54px;
            height: 38px;
            border: none;
            border-radius: 19px;
            background: #111;
            color: #fff;
            font-size: 13px;
            font-weight: 800;
            cursor: pointer;
            padding: 0 14px;
        }
        .Tutuwan-tools-panel {
            position: absolute !important;
            bottom: 80px !important;
            left: 15px !important;
            right: 15px !important;
            width: auto !important;
            background: rgba(245,245,247,.65) !important;
            backdrop-filter: blur(15px) saturate(180%);
            -webkit-backdrop-filter: blur(15px) saturate(180%);
            border-radius: 24px !important;
            border: 1px solid rgba(255,255,255,.6);
            box-shadow: 0 10px 30px rgba(0,0,0,.08), inset 0 1px 2px rgba(255,255,255,.8);
            padding: 15px !important;
            z-index: 10030 !important;
            opacity: 0;
            visibility: hidden;
            transform: translateY(20px) scale(.95);
            transition: all .3s cubic-bezier(.34,1.56,.64,1) !important;
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 12px;
            overflow: hidden !important;
        }
        .Tutuwan-tools-panel.active { opacity: 1 !important; visibility: visible !important; transform: translateY(0) scale(1) !important; }
        .Tutuwan-tool-item {
            border: none;
            background: transparent;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 7px;
            color: #4F454B;
            font-size: 11px;
            font-weight: 750;
            cursor: pointer;
        }
        .Tutuwan-tool-icon {
            width: 46px;
            height: 46px;
            border-radius: 17px;
            background: rgba(255,255,255,.92);
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 6px 16px rgba(0,0,0,.05);
        }
        .Tutuwan-tool-icon svg { width: 22px; height: 22px; stroke: #111; fill: none; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
        .Tutuwan-hidden-file { position: fixed; width: 1px; height: 1px; opacity: 0; pointer-events: none; left: -9999px; top: -9999px; }


        /* ====== 本轮完善：Tutuwan 发送按钮 / 主题粉气泡 / 纯白导航 / 聊天设置 ====== */
        :root { --Tutuwan-user-bubble: var(--pink-light); --Tutuwan-user-text: #000000; }
        .Tutuwan-room-header,
        .Tutuwan-settings-header,
        .Tutuwan-css-header {
            background: #FFFFFF !important;
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            border-bottom: 1px solid #EFF0F2 !important;
            box-shadow: none !important;
        }
        .Tutuwan-chat-room.has-custom-bg .Tutuwan-room-content {
            background-image: var(--Tutuwan-chat-bg) !important;
            background-size: cover !important;
            background-position: center !important;
            background-repeat: no-repeat !important;
        }
        .Tutuwan.user .content {
            background-color: var(--Tutuwan-user-bubble) !important;
            color: var(--Tutuwan-user-text) !important;
        }
        .Tutuwan.user .content::after { background-color: var(--Tutuwan-user-bubble) !important; }
        .Tutuwan.ai .content { color: #000000 !important; }
        .Tutuwan-send-btn {
            min-width: 38px !important;
            width: 38px !important;
            height: 38px !important;
            padding: 0 !important;
            border-radius: 50% !important;
            background: transparent !important;
            color: #333333 !important;
            border: none !important;
            box-shadow: none !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            flex-shrink: 0 !important;
            cursor: pointer !important;
            transition: background .12s ease, transform .08s ease !important;
        }
        .Tutuwan-send-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; margin-left: 1px; }
        .Tutuwan-send-btn:active { background: #f5f5f5 !important; transform: scale(.94) !important; }
        .Tutuwan .content.card-bubble,
        .Tutuwan.user .content.card-bubble,
        .Tutuwan.ai .content.card-bubble {
            background: transparent !important;
            padding: 0 !important;
            box-shadow: none !important;
            border: none !important;
            border-radius: 0 !important;
            color: #111 !important;
            overflow: visible !important;
        }
        .Tutuwan .content.card-bubble::before,
        .Tutuwan .content.card-bubble::after { display: none !important; content: none !important; }
        .Tutuwan-message-card {
            width: min(236px, 62vw);
            border-radius: 17px;
            background: #FFFFFF;
            border: 1px solid #ECECEF;
            box-shadow: 0 6px 18px rgba(0,0,0,.045);
            overflow: hidden;
            text-align: left;
        }
        .Tutuwan-message-card .card-top { padding: 12px 13px; display: flex; align-items: center; gap: 10px; }
        .Tutuwan-message-card .card-icon { width: 34px; height: 34px; border-radius: 13px; background: #F7F7F8; display: flex; align-items: center; justify-content: center; color: #111; flex-shrink: 0; }
        .Tutuwan-message-card .card-icon svg { width: 19px; height: 19px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
        .Tutuwan-message-card .card-title { font-size: 13px; font-weight: 850; color: #111; line-height: 1.2; }
        .Tutuwan-message-card .card-sub { margin-top: 3px; color: #7E7E86; font-size: 11px; line-height: 1.35; word-break: break-word; }
        .Tutuwan-message-card .card-footer { padding: 8px 13px; background: #F7F7F8; color: #8A8A92; font-size: 10px; font-weight: 650; }
        .Tutuwan-message-card.red .card-icon { background: #FFF0F5; color: var(--pink-dark); }
        .Tutuwan-message-card.call .card-icon { background: #F4F7F9; color: #2C2C2E; }
        .Tutuwan-message-card.location .card-icon { background: #F5F5F5; color: #111; }
        .Tutuwan-tools-panel { grid-template-columns: repeat(4, 1fr) !important; }
        .Tutuwan-settings-page,
        .Tutuwan-css-page {
            position: absolute !important;
            inset: 0 !important;
            width: 100% !important;
            height: 100% !important;
            z-index: 10031 !important;
            background: #FFFFFF !important;
            display: none;
            flex-direction: column;
            overflow: hidden !important;
        }
        .Tutuwan-settings-page.active,
        .Tutuwan-css-page.active { display: flex !important; }
        .Tutuwan-settings-header,
        .Tutuwan-css-header {
            height: clamp(56px, 14vw, 64px);
            display: grid;
            grid-template-columns: 40px 1fr 40px;
            align-items: center;
            padding: 0 var(--page-pad);
            flex-shrink: 0;
        }
        .Tutuwan-settings-back,
        .Tutuwan-css-back {
            width: 40px; height: 40px; border: none; background: transparent; color: #111;
            display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0;
        }
        .Tutuwan-settings-back svg,
        .Tutuwan-css-back svg { width: 23px; height: 23px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
        .Tutuwan-settings-title,
        .Tutuwan-css-title { text-align: center; font-size: 16px; font-weight: 850; color: #111; }
        .Tutuwan-settings-content,
        .Tutuwan-css-content { flex: 1; overflow-y: auto; padding: 18px var(--page-pad) 34px; touch-action: pan-y; scrollbar-width: none !important; }
        .Tutuwan-settings-content::-webkit-scrollbar,
        .Tutuwan-css-content::-webkit-scrollbar { display: none !important; }
        .Tutuwan-avatar-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 18px; }
        .Tutuwan-setting-avatar-card { display: flex; flex-direction: column; align-items: center; gap: 8px; cursor: pointer; }
        .Tutuwan-setting-avatar-card img { width: 86px; height: 86px; border-radius: 24px; object-fit: cover; background: #F2F2F3; box-shadow: 0 8px 22px rgba(0,0,0,.07); }
        .Tutuwan-setting-avatar-card span { color: #4A4A4A; font-size: 12px; font-weight: 800; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .Tutuwan-settings-section { background: #F8F8F9; border: 1px solid #EFEFF1; border-radius: 22px; padding: 15px; margin-bottom: 14px; }
        .Tutuwan-settings-label { display: block; color: #55555A; font-size: 12px; font-weight: 850; margin-bottom: 9px; }
        .Tutuwan-settings-input,
        .Tutuwan-settings-textarea {
            width: 100%; border: 1px solid #E9E9EB; background: #FFFFFF; border-radius: 14px;
            padding: 12px 13px; outline: none; color: #222; font-size: 13px; font-weight: 600; font-family: inherit;
        }
        .Tutuwan-settings-textarea { min-height: 112px; resize: vertical; line-height: 1.55; }
        .Tutuwan-setting-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 5px 0; }
        .Tutuwan-toggle { width: 48px; height: 28px; border-radius: 999px; background: #D7D7DB; padding: 3px; flex-shrink: 0; transition: .2s; cursor: pointer; }
        .Tutuwan-toggle::before { content: ''; display: block; width: 22px; height: 22px; background: #fff; border-radius: 50%; transition: .2s; box-shadow: 0 2px 6px rgba(0,0,0,.15); }
        .Tutuwan-toggle.active { background: #111; }
        .Tutuwan-toggle.active::before { transform: translateX(20px); }
        .Tutuwan-settings-help { color: #999; font-size: 11px; line-height: 1.55; margin-top: 8px; }
        .Tutuwan-settings-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
        /* 聊天设置按钮直接复用文件内已有 .action-btn / .action-btn.primary / .action-btn.danger 样式，不二次创作 */
        .Tutuwan-setting-btn { all: unset; }
        .Tutuwan-threshold-panel { display: none; margin-top: 12px; padding-top: 12px; border-top: 1px dashed #DDD; }
        .Tutuwan-threshold-panel.active { display: block; }
        .Tutuwan-summary-list { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
        .Tutuwan-offline-panel { display: none; margin-top: 12px; }
        .Tutuwan-offline-panel.active { display: block; }
        .Tutuwan-perspective-select { margin-top: 8px; }
        .Tutuwan-summary-card { background: #fff; border: 1px solid #EDEDEF; border-radius: 14px; padding: 10px; color: #555; font-size: 12px; line-height: 1.55; }
        .Tutuwan-summary-card time { display: block; color: #999; font-size: 10px; margin-bottom: 4px; }
        .Tutuwan-css-textarea { width: 100%; min-height: 260px; border: 1px solid #E9E9EB; border-radius: 18px; padding: 14px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; line-height: 1.5; resize: vertical; outline: none; background: #FAFAFA; color: #333; }
        .Tutuwan-css-note { margin-top: 10px; color: #999; font-size: 11px; line-height: 1.6; }


        /* ====== 表情包库 / 聊天美化 / 聊天三页壁纸 ====== */
        :root {
            --Tutuwan-avatar-size: 35px;
            --Tutuwan-avatar-radius: 12px;
            --Tutuwan-user-bubble: #929292;
            --Tutuwan-ai-bubble: #ffffff;
            --Tutuwan-user-text: #ffffff;
            --Tutuwan-ai-text: #000000;
            --Tutuwan-user-frame: none;
            --Tutuwan-ai-frame: none;
            --Tutuwan-user-frame-img: none;
            --Tutuwan-ai-frame-img: none;
        }
        .Tutuwan .avatar-frame { position: relative; width: var(--Tutuwan-avatar-size); height: var(--Tutuwan-avatar-size); flex: 0 0 var(--Tutuwan-avatar-size); display: inline-flex; align-items: center; justify-content: center; }
        .Tutuwan .avatar-frame::after { content: ''; position: absolute; inset: -7px; background: var(--Tutuwan-frame-img, none) center center / contain no-repeat; pointer-events: none; z-index: 2; }
        .Tutuwan .avatar-img { width: var(--Tutuwan-avatar-size) !important; height: var(--Tutuwan-avatar-size) !important; border-radius: var(--Tutuwan-avatar-radius) !important; }
        .Tutuwan.user .avatar-frame { --Tutuwan-frame-img: var(--Tutuwan-user-frame-img); margin-left: 8px; }
        .Tutuwan.ai .avatar-frame { --Tutuwan-frame-img: var(--Tutuwan-ai-frame-img); margin-right: 8px; }
        .Tutuwan.user .avatar-img { outline: var(--Tutuwan-user-frame); outline-offset: 2px; }
        .Tutuwan.ai .avatar-img { outline: var(--Tutuwan-ai-frame); outline-offset: 2px; }
        .Tutuwan.user .content:not(.image-bubble):not(.card-bubble) { background-color: var(--Tutuwan-user-bubble) !important; color: var(--Tutuwan-user-text) !important; }
        .Tutuwan.ai .content:not(.image-bubble):not(.card-bubble) { background-color: var(--Tutuwan-ai-bubble) !important; color: var(--Tutuwan-ai-text) !important; }
        .Tutuwan.user .content::after { background-color: var(--Tutuwan-user-bubble) !important; }
        .Tutuwan.ai .content::before { background-color: var(--Tutuwan-ai-bubble) !important; }
        .chat-view[data-wallpaper] { background: var(--chat-view-wallpaper) center center / cover no-repeat !important; }
        .chat-view[data-wallpaper]::before { content: ''; position: absolute; inset: 0; background: rgba(255,255,255,.58); pointer-events: none; }
        .chat-view[data-wallpaper] > * { position: relative; z-index: 1; }
        .chat-feature-page { position: absolute !important; inset: 0 !important; z-index: 10028 !important; background: #fff !important; display: none; flex-direction: column; overflow: hidden; }
        .chat-feature-page.active { display: flex !important; }
        .chat-feature-header { height: clamp(56px, 14vw, 64px); display: grid; grid-template-columns: 40px 1fr auto; align-items: center; gap: 8px; padding: 0 var(--page-pad); border-bottom: 1px solid rgba(252,232,239,.72); background: rgba(255,255,255,.82); backdrop-filter: blur(14px); }
        .chat-feature-title { text-align: center; font-size: 16px; font-weight: 900; color: #111; }
        .chat-feature-actions { display: flex; align-items: center; gap: 4px; }
        .chat-feature-icon-btn { width: 38px; height: 38px; border: none !important; outline: none !important; background: transparent !important; box-shadow: none !important; padding: 0; display: inline-flex; align-items: center; justify-content: center; color: #111; border-radius: 999px; }
        .chat-feature-icon-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.35; stroke-linecap: round; stroke-linejoin: round; }
        .chat-feature-content { flex: 1; overflow-y: auto; padding: 14px var(--page-pad) 28px; scrollbar-width: none; }
        .chat-feature-content::-webkit-scrollbar { display: none; }
        .sticker-group-tabs { padding: 12px var(--page-pad) 8px; gap: 8px; background: rgba(255,255,255,.92); border-bottom: 1px solid rgba(252,232,239,.45); }
        .sticker-group-tabs .chat-group-chip { font-size: 11px; padding: 6px 11px; min-height: 26px; }
        .sticker-group-tabs .chat-group-chip.add { min-width: 40px; }
        .sticker-bottom-actions { position: absolute; left: 0; right: 0; bottom: 0; z-index: 4; display: none; grid-template-columns: 1fr 1fr 1fr; gap: 8px; padding: 10px var(--page-pad) max(10px, env(safe-area-inset-bottom)); background: rgba(255,255,255,.94); border-top: 1px solid rgba(252,232,239,.86); box-shadow: 0 -12px 28px rgba(47,21,34,.08); backdrop-filter: blur(16px); }
        .sticker-bottom-actions.active { display: grid; }
        .chat-feature-content.has-bottom-actions { padding-bottom: 82px; }
        .sticker-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
        .sticker-card { position: relative; border: 1px solid #F0E7EC; border-radius: 18px; background: linear-gradient(180deg,#fff,#fff8fb); padding: 8px; min-height: 116px; display: flex; flex-direction: column; gap: 7px; box-shadow: 0 8px 22px rgba(255,126,166,.08); }
        .sticker-card img { width: 100%; aspect-ratio: 1 / 1; border-radius: 14px; object-fit: cover; background: #F7F3F6; }
        .sticker-desc { font-size: 11px; font-weight: 800; color: #50464D; line-height: 1.25; word-break: break-word; }
        .sticker-check { position: absolute; top: 7px; right: 7px; width: 22px; height: 22px; border-radius: 999px; background: rgba(255,255,255,.9); border: 1px solid #F4C7D7; display: none; align-items: center; justify-content: center; color: #FF6E9D; font-size: 13px; font-weight: 900; }
        .sticker-multi .sticker-check { display: flex; }
        .sticker-card.selected { border-color: #FF7EA6; box-shadow: 0 10px 24px rgba(255,126,166,.18); }
        .sticker-empty { color: #A99AA2; font-size: 12px; text-align: center; padding: 50px 12px; line-height: 1.7; }
        .chat-modal-mask { position: absolute; inset: 0; z-index: 10060; display: none; align-items: center; justify-content: center; padding: 20px; background: rgba(20,16,18,.28); backdrop-filter: blur(8px); }
        .chat-modal-mask.active { display: flex; }
        .chat-modal-card { width: min(92vw, 430px); background: rgba(255,255,255,.96); border: 1px solid rgba(255,255,255,.9); border-radius: 28px; padding: 18px; box-shadow: 0 24px 70px rgba(43,22,33,.22); }
        .chat-modal-title { font-size: 17px; font-weight: 950; color: #111; margin-bottom: 8px; }
        .chat-modal-help { font-size: 11px; color: #9A8E95; line-height: 1.55; margin-bottom: 10px; }
        .chat-modal-textarea { width: 100%; min-height: 210px; border: 1px solid #EFE5EA; border-radius: 18px; padding: 13px; outline: none; resize: vertical; font-size: 12px; line-height: 1.55; font-family: inherit; background: #fff; }
        .chat-modal-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
        .beauty-preview { border-radius: 28px; background: linear-gradient(180deg,#FFF7FA,#F8FBFF); border: 1px solid #F1E7ED; padding: 16px 10px; margin-bottom: 14px; }
        .beauty-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
        .beauty-range-row { background: #F8F8F9; border: 1px solid #EFEFF1; border-radius: 18px; padding: 11px; }
        .beauty-range-row label { display: flex; justify-content: space-between; font-size: 11px; font-weight: 850; color: #555; margin-bottom: 8px; }
        .beauty-range-row input[type="range"] { width: 100%; }
        .beauty-color-row { display: grid; grid-template-columns: 1fr 44px; align-items: center; gap: 8px; background: #F8F8F9; border: 1px solid #EFEFF1; border-radius: 18px; padding: 10px; }
        .beauty-color-row span { font-size: 11px; font-weight: 850; color: #555; }
        .beauty-color-row input { width: 40px; height: 32px; border: none; background: transparent; }
        .beauty-css-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }
        .beauty-file-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
        .theme-chat-wallpaper-grid { display: grid; grid-template-columns: 1fr; gap: 10px; }
        .theme-chat-wallpaper-row { border: 1px solid #EFE6EB; background: #FFF; border-radius: 18px; padding: 12px; }
        .theme-chat-wallpaper-row .settings-label { margin-bottom: 8px; display: block; }
        .theme-chat-wallpaper-actions { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-top: 8px; }



        /* ====== 本轮修正：聊天头像不再被挤出屏幕 + 发送按钮沿用 zip 输入栏样式 ====== */
        .Tutuwan-room-content {
            padding-left: 8px !important;
            padding-right: 8px !important;
            overflow-x: hidden !important;
        }
        .Tutuwan {
            padding-left: 4px !important;
            padding-right: 4px !important;
            max-width: 100% !important;
            box-sizing: border-box !important;
        }
        .Tutuwan .bubble-wrapper {
            max-width: calc(100% - 4px) !important;
            min-width: 0 !important;
            box-sizing: border-box !important;
            flex-wrap: nowrap !important;
        }
        .Tutuwan .content {
            min-width: 0 !important;
            overflow-wrap: anywhere !important;
            word-break: break-word !important;
        }
        .Tutuwan.user .content:not(.card-bubble):not(.image-bubble),
        .Tutuwan.ai .content:not(.card-bubble):not(.image-bubble) {
            max-width: min(62vw, 236px) !important;
        }
        .Tutuwan.ai .content.group-offline-narrative-bubble:not(.card-bubble):not(.image-bubble) {
            max-width: min(78vw, 340px) !important;
            line-height: 1.68 !important;
        }
        .Tutuwan-group-sender.offline-narrative-label {
            color: #9b6b7c;
            font-weight: 900;
        }
        .Tutuwan-message-card {
            width: min(218px, 56vw) !important;
            max-width: 100% !important;
        }
        .Tutuwan .time {
            flex: 0 0 auto !important;
        }
        .Tutuwan .avatar-img {
            flex: 0 0 35px !important;
        }
        .Tutuwan.user .avatar-img {
            margin-left: 6px !important;
        }
        .Tutuwan.ai .avatar-img {
            margin-right: 6px !important;
        }
        .Tutuwan-room-footer .Tutuwan-send-btn {
            width: 38px !important;
            height: 38px !important;
            min-width: 38px !important;
            background: transparent !important;
            border: 0 !important;
        }



        /* ====== 从 miu(1).zip 提取的发送按钮样式：footer-btn-side send-btn ====== */
        .Tutuwan-room-footer .footer-btn-side,
        .Tutuwan-room-footer .Tutuwan-send-btn.footer-btn-side.send-btn {
            width: 38px !important;
            min-width: 38px !important;
            height: 38px !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            color: #333 !important;
            font-size: 22px !important;
            flex-shrink: 0 !important;
            border-radius: 50% !important;
            cursor: pointer !important;
            padding: 0 !important;
            border: 0 !important;
            background: transparent !important;
            box-shadow: none !important;
            appearance: none !important;
            -webkit-appearance: none !important;
            line-height: 1 !important;
        }
        .Tutuwan-room-footer .footer-btn-side:active,
        .Tutuwan-room-footer .Tutuwan-send-btn.footer-btn-side.send-btn:active {
            background: #f5f5f5 !important;
            transform: none !important;
        }
        .Tutuwan-room-footer .Tutuwan-send-btn.footer-btn-side.send-btn svg { display: none !important; }
        .Tutuwan-room-footer .Tutuwan-send-btn.footer-btn-side.send-btn i {
            color: #333 !important;
            font-size: 22px !important;
            line-height: 1 !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            width: 22px !important;
            height: 22px !important;
            margin-left: 1px !important;
            font-style: normal !important;
        }
        /* 独立内嵌 paper-plane，避免脱离 zip 后 FontAwesome 缺失导致空白 */
        .Tutuwan-room-footer .Tutuwan-send-btn.footer-btn-side.send-btn .fa-paper-plane::before {
            content: '';
            width: 22px;
            height: 22px;
            display: block;
            background: currentColor;
            -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M2.01 21L23 12 2.01 3 2 10l15 2-15 2z'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M2.01 21L23 12 2.01 3 2 10l15 2-15 2z'/%3E%3C/svg%3E") center / contain no-repeat;
        }


        /* ====== 最终修正：发送按钮严格按 miu(1).zip 的 footer-btn-side send-btn 还原 ====== */
        .Tutuwan-room-footer #Tutuwan-send-btn.footer-btn-side.send-btn {
            width: 38px !important;
            min-width: 38px !important;
            height: 38px !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            color: #333 !important;
            font-size: 22px !important;
            flex-shrink: 0 !important;
            border-radius: 50% !important;
            cursor: pointer !important;
            padding: 0 !important;
            margin: 0 !important;
            border: none !important;
            outline: none !important;
            background: transparent !important;
            box-shadow: none !important;
            appearance: none !important;
            -webkit-appearance: none !important;
            line-height: 1 !important;
            box-sizing: border-box !important;
            text-decoration: none !important;
            user-select: none !important;
            -webkit-user-select: none !important;
            transform: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-send-btn.footer-btn-side.send-btn:active {
            background: #f5f5f5 !important;
            transform: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-send-btn.footer-btn-side.send-btn i.fas.fa-paper-plane {
            width: 22px !important;
            height: 22px !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            color: #333 !important;
            font-size: 22px !important;
            line-height: 1 !important;
            margin: 0 !important;
            padding: 0 !important;
            font-style: normal !important;
            font-weight: normal !important;
            font-family: inherit !important;
            text-rendering: auto !important;
        }
        .Tutuwan-room-footer #Tutuwan-send-btn.footer-btn-side.send-btn i.fas.fa-paper-plane::before {
            content: '' !important;
            width: 22px !important;
            height: 22px !important;
            display: block !important;
            background: currentColor !important;
            -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='black' d='M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.5-6 23.6-5.5 34 1.4z'/%3E%3C/svg%3E") center / contain no-repeat !important;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='black' d='M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.5-6 23.6-5.5 34 1.4z'/%3E%3C/svg%3E") center / contain no-repeat !important;
        }



        /* ====== 最终补丁：气泡宽度 / 表情包输入按钮 / 悬浮表情包面板 / 快捷栏美化 ====== */
        .Tutuwan.user .content:not(.card-bubble):not(.image-bubble),
        .Tutuwan.ai .content:not(.card-bubble):not(.image-bubble) {
            max-width: min(82vw, 560px) !important;
            min-width: 46px !important;
            padding: 9px 15px !important;
            line-height: 1.5 !important;
            word-break: break-word !important;
            overflow-wrap: anywhere !important;
        }
        .Tutuwan .bubble-wrapper { max-width: calc(100% - 6px) !important; }
        .Tutuwan-chat-image,
        .sticker-card img,
        .Tutuwan-sticker-panel-grid img {
            object-fit: contain !important;
            background: rgba(255,255,255,.74) !important;
        }
        .Tutuwan-sticker-btn {
            width: 38px !important;
            min-width: 38px !important;
            height: 38px !important;
            border: 0 !important;
            outline: 0 !important;
            background: transparent !important;
            border-radius: 50% !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            color: #333 !important;
            padding: 0 !important;
            margin: 0 !important;
            flex-shrink: 0 !important;
        }
        .Tutuwan-sticker-btn svg { width: 23px; height: 23px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
        .Tutuwan-sticker-btn:active { background: rgba(0,0,0,.05) !important; transform: scale(.96); }
        .Tutuwan-sticker-float-panel {
            position: absolute;
            left: 10px;
            right: 10px;
            bottom: calc(66px + var(--safe-bottom));
            height: 268px;
            z-index: 10038;
            border-radius: 24px;
            border: 1px solid rgba(255,214,228,.86);
            background: rgba(255,255,255,.94);
            box-shadow: 0 18px 42px rgba(62,31,45,.14);
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            display: flex;
            flex-direction: column;
            overflow: hidden;
            opacity: 0;
            transform: translateY(16px) scale(.985);
            pointer-events: none;
            transition: opacity .28s ease, transform .28s cubic-bezier(.22,.61,.36,1);
        }
        .Tutuwan-sticker-float-panel.active { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }
        .Tutuwan-sticker-panel-tabs { display: flex; gap: 8px; overflow-x: auto; padding: 12px 12px 8px; scrollbar-width: none; flex: 0 0 auto; }
        .Tutuwan-sticker-panel-tabs::-webkit-scrollbar { display: none; }
        .Tutuwan-sticker-panel-tabs .chat-group-chip { min-height: 26px; padding: 5px 11px; font-size: 11px; flex: 0 0 auto; }
        .Tutuwan-sticker-panel-body { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 4px 12px 12px; }
        .Tutuwan-sticker-panel-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
        .Tutuwan-sticker-panel-item { border: 0; background: rgba(255,247,251,.86); border-radius: 16px; padding: 7px; min-height: 72px; display: flex; flex-direction: column; gap: 5px; align-items: center; justify-content: center; box-shadow: inset 0 0 0 1px rgba(255,220,232,.72); }
        .Tutuwan-sticker-panel-item img { width: 48px; height: 48px; border-radius: 12px; }
        .Tutuwan-sticker-panel-item span { max-width: 100%; color: #8B7E86; font-size: 10px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .Tutuwan-sticker-panel-empty { padding: 36px 12px; text-align: center; color: #A99AA2; font-size: 12px; line-height: 1.7; }
        .Tutuwan-bubble-toolbar {
            left: 50% !important;
            bottom: calc(100% + 10px) !important;
            top: auto !important;
            transform: translateX(-50%) translateY(8px) scale(.98) !important;
            background: rgba(255,255,255,.96) !important;
            color: #443840 !important;
            border: 1px solid rgba(238,218,228,.9) !important;
            border-radius: 20px !important;
            padding: 7px !important;
            gap: 4px !important;
            box-shadow: 0 14px 34px rgba(52,30,42,.16) !important;
            max-width: calc(100vw - 26px) !important;
            overflow-x: auto !important;
            -webkit-overflow-scrolling: touch !important;
        }
        .Tutuwan-bubble-toolbar.below { top: calc(100% + 10px) !important; bottom: auto !important; transform: translateX(-50%) translateY(-8px) scale(.98) !important; }
        .Tutuwan-bubble-toolbar.active { transform: translateX(-50%) translateY(0) scale(1) !important; }
        .Tutuwan-bubble-toolbar button { color: #443840 !important; background: #FFF3F7 !important; border: 0 !important; border-radius: 14px !important; padding: 7px 9px !important; font-size: 11px !important; font-weight: 900 !important; display: inline-flex; align-items: center; gap: 3px; }
        .Tutuwan-bubble-toolbar button::first-letter { font-size: 12px; }
        .Tutuwan-bubble-toolbar button:active { background: #FFDCE8 !important; transform: scale(.96); }
        .chat-thread-swipe-wrap { overflow: hidden !important; background: transparent !important; }
        .chat-thread-actions { width: 174px; right: 0; transform: translateX(0); }
        .chat-thread-swipe-wrap:not(.open) .chat-thread-actions { pointer-events: none; }
        .Tutuwan-img-error { padding: 18px 22px; border-radius: 16px; background: rgba(255,255,255,.84); color: #9B8F97; font-size: 12px; font-weight: 800; }

        /* ====== 修正：长按快捷面板由 JS 计算 fixed 坐标，避免旧 bottom/top 强制样式把面板挤出屏幕 ====== */
        .Tutuwan-bubble-toolbar {
            position: fixed !important;
            left: 0 !important;
            top: 0 !important;
            bottom: auto !important;
            transform: translate3d(0, 8px, 0) scale(.98) !important;
        }
        .Tutuwan-bubble-toolbar.below { bottom: auto !important; transform: translate3d(0, -8px, 0) scale(.98) !important; }
        .Tutuwan-bubble-toolbar.active { transform: translate3d(0, 0, 0) scale(1) !important; }

    

        /* ====== 0520 修正：输入栏按钮统一 / 去掉 Tutuwan Chat 副标题 / 表情按钮不违和 ====== */
        .Tutuwan-room-subtitle { display: none !important; }
        .Tutuwan-room-title-wrap { display: flex !important; align-items: center !important; justify-content: center !important; }
        .Tutuwan-room-footer { gap: 8px !important; }
        .Tutuwan-room-footer .Tutuwan-footer-btn,
        .Tutuwan-room-footer .Tutuwan-sticker-btn,
        .Tutuwan-room-footer .Tutuwan-send-btn.footer-btn-side.send-btn {
            width: 38px !important;
            min-width: 38px !important;
            height: 38px !important;
            border-radius: 50% !important;
            border: 0 !important;
            outline: 0 !important;
            background: transparent !important;
            box-shadow: none !important;
            color: #222 !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            padding: 0 !important;
            margin: 0 !important;
            flex-shrink: 0 !important;
            -webkit-tap-highlight-color: transparent !important;
        }
        .Tutuwan-room-footer .Tutuwan-sticker-btn svg,
        .Tutuwan-room-footer .Tutuwan-footer-btn svg {
            width: 22px !important;
            height: 22px !important;
            stroke: currentColor !important;
            stroke-width: 2.25 !important;
            fill: none !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }
        .Tutuwan-room-footer .Tutuwan-sticker-btn:active,
        .Tutuwan-room-footer .Tutuwan-footer-btn:active,
        .Tutuwan-room-footer .Tutuwan-send-btn.footer-btn-side.send-btn:active {
            background: rgba(0,0,0,.055) !important;
            transform: scale(.96) !important;
        }
        .Tutuwan-sticker-float-panel {
            bottom: calc(68px + var(--safe-bottom)) !important;
            border-color: rgba(232,232,235,.92) !important;
            background: rgba(255,255,255,.96) !important;
            box-shadow: 0 16px 42px rgba(0,0,0,.12) !important;
        }
        .Tutuwan-sticker-panel-item { background: #F7F7F8 !important; box-shadow: none !important; border-radius: 15px !important; }
        .Tutuwan-sticker-panel-item img { background: transparent !important; }

    

        /* ====== 0521 修正：空发送也触发回复；表情按钮放大并与发送按钮视觉统一 ====== */
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side,
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn {
            width: 42px !important;
            min-width: 42px !important;
            height: 42px !important;
            border-radius: 50% !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            padding: 0 !important;
            margin: 0 !important;
            flex-shrink: 0 !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg {
            width: 27px !important;
            height: 27px !important;
            stroke-width: 2.2 !important;
        }
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn i.fas.fa-paper-plane,
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn i.fas.fa-paper-plane::before {
            width: 26px !important;
            height: 26px !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side:active,
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn:active {
            background: rgba(0,0,0,.055) !important;
            transform: scale(.96) !important;
        }


        /* ====== 0522 修正：长按快捷功能面板最高层 / 发送与表情视觉统一 ====== */
        /* ====== 0527 iOS：更扁一点的横向短菜单 / 图标固定比例 ====== */
        .Tutuwan-bubble-toolbar {
            position: fixed !important;
            left: 14px !important;
            top: 90px !important;
            bottom: auto !important;
            transform: translateY(6px) scale(.985) !important;
            width: min(336px, calc(100vw - 28px)) !important;
            max-width: calc(100vw - 28px) !important;
            z-index: 2147483647 !important;
            display: flex !important;
            flex-direction: row !important;
            align-items: center !important;
            gap: 4px !important;
            padding: 6px !important;
            border-radius: 18px !important;
            border: 0 !important;
            background: rgba(248,248,248,.84) !important;
            color: #111 !important;
            box-shadow: 0 18px 42px rgba(0,0,0,.16), inset 0 0 0 .5px rgba(255,255,255,.72) !important;
            backdrop-filter: blur(28px) saturate(1.8) !important;
            -webkit-backdrop-filter: blur(28px) saturate(1.8) !important;
            opacity: 0 !important;
            pointer-events: none !important;
            overflow-x: auto !important;
            overflow-y: hidden !important;
            scrollbar-width: none !important;
            transition: opacity .16s ease, transform .20s cubic-bezier(.22,.61,.36,1) !important;
            white-space: nowrap !important;
        }
        .Tutuwan-bubble-toolbar::-webkit-scrollbar { display: none !important; }
        .Tutuwan-bubble-toolbar.active {
            opacity: 1 !important;
            pointer-events: auto !important;
            transform: translateY(0) scale(1) !important;
        }
        .Tutuwan-bubble-toolbar::after { display: none !important; content: none !important; }
        .Tutuwan-bubble-toolbar button {
            position: relative !important;
            min-width: 50px !important;
            width: 50px !important;
            height: 44px !important;
            min-height: 44px !important;
            border: 0 !important;
            outline: none !important;
            border-radius: 12px !important;
            background: transparent !important;
            color: #151316 !important;
            box-shadow: none !important;
            padding: 4px 3px !important;
            margin: 0 !important;
            font-size: 10px !important;
            font-weight: 500 !important;
            display: flex !important;
            flex-direction: column !important;
            align-items: center !important;
            justify-content: center !important;
            gap: 3px !important;
            line-height: 1 !important;
            transition: transform .12s ease, background .12s ease !important;
            -webkit-tap-highlight-color: transparent !important;
            appearance: none !important;
            -webkit-appearance: none !important;
            flex: 0 0 50px !important;
        }
        .Tutuwan-bubble-toolbar button:hover,
        .Tutuwan-bubble-toolbar button:focus,
        .Tutuwan-bubble-toolbar button:focus-visible {
            outline: none !important;
            box-shadow: none !important;
            background: transparent !important;
        }
        .Tutuwan-bubble-toolbar button:active {
            transform: scale(.97) !important;
            background: rgba(120, 120, 128, .14) !important;
            box-shadow: none !important;
        }
        .Tutuwan-bubble-toolbar button .panel-label {
            order: 2 !important;
            display: block !important;
            width: 100% !important;
            text-align: center !important;
            font-size: 9.5px !important;
            font-weight: 500 !important;
            letter-spacing: 0 !important;
            transform: none !important;
            color: inherit !important;
            overflow: hidden !important;
            text-overflow: ellipsis !important;
            white-space: nowrap !important;
            line-height: 1.05 !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico {
            order: 1 !important;
            width: 16px !important;
            height: 16px !important;
            min-width: 16px !important;
            min-height: 16px !important;
            line-height: 1 !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            flex: 0 0 16px !important;
            color: rgba(60,60,67,.72) !important;
            opacity: 1 !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico svg {
            display: block !important;
            width: 16px !important;
            height: 16px !important;
            min-width: 16px !important;
            min-height: 16px !important;
            aspect-ratio: 1 / 1 !important;
            overflow: visible !important;
            stroke: currentColor !important;
            fill: none !important;
            stroke-width: 1.85 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
            transform: none !important;
            transform-box: fill-box !important;
            transform-origin: center !important;
            flex: 0 0 auto !important;
            vector-effect: non-scaling-stroke !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico svg * {
            vector-effect: non-scaling-stroke !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side,
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn {
            width: 46px !important;
            min-width: 46px !important;
            height: 46px !important;
            border-radius: 50% !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            padding: 0 !important;
            flex: 0 0 46px !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg { width: 29px !important; height: 29px !important; }
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn i.fas.fa-paper-plane::before { width: 28px !important; height: 28px !important; }



        /* ====== 0528 精修：iOS 短快捷栏 / 撤回占位 / 100px 表情贴图 ====== */
        .Tutuwan-bubble-toolbar {
            width: min(320px, calc(100vw - 28px)) !important;
            max-width: calc(100vw - 28px) !important;
            height: 44px !important;
            min-height: 44px !important;
            padding: 5px 6px !important;
            border-radius: 999px !important;
            border: 0 !important;
            background: rgba(250,250,252,.88) !important;
            box-shadow: 0 14px 34px rgba(20,20,24,.14), inset 0 0 0 .5px rgba(255,255,255,.9) !important;
            backdrop-filter: blur(24px) saturate(1.65) !important;
            -webkit-backdrop-filter: blur(24px) saturate(1.65) !important;
            gap: 2px !important;
            align-items: center !important;
            justify-content: space-between !important;
            overflow: hidden !important;
        }
        .Tutuwan-bubble-toolbar button {
            width: auto !important;
            min-width: 48px !important;
            height: 34px !important;
            min-height: 34px !important;
            flex: 1 1 0 !important;
            padding: 0 4px !important;
            border: 0 !important;
            outline: 0 !important;
            border-radius: 999px !important;
            background: transparent !important;
            box-shadow: none !important;
            color: rgba(18,18,20,.92) !important;
            display: flex !important;
            flex-direction: row !important;
            align-items: center !important;
            justify-content: center !important;
            gap: 3px !important;
            line-height: 1 !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico {
            order: 1 !important;
            width: 15px !important;
            height: 15px !important;
            min-width: 15px !important;
            min-height: 15px !important;
            flex: 0 0 15px !important;
            color: rgba(60,60,67,.70) !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            transform: none !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico svg {
            width: 15px !important;
            height: 15px !important;
            min-width: 15px !important;
            min-height: 15px !important;
            aspect-ratio: 1 / 1 !important;
            display: block !important;
            stroke: currentColor !important;
            fill: none !important;
            stroke-width: 1.9 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
            transform: none !important;
            transform-origin: center !important;
            transform-box: fill-box !important;
            vector-effect: non-scaling-stroke !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico svg * { vector-effect: non-scaling-stroke !important; }
        .Tutuwan-bubble-toolbar button .panel-label {
            order: 2 !important;
            width: auto !important;
            max-width: 28px !important;
            display: inline-block !important;
            font-size: 10px !important;
            font-weight: 600 !important;
            line-height: 1 !important;
            letter-spacing: 0 !important;
            color: rgba(38,38,42,.92) !important;
            white-space: nowrap !important;
            overflow: hidden !important;
            text-overflow: clip !important;
            transform: none !important;
        }
        .Tutuwan-bubble-toolbar button:active {
            background: rgba(118,118,128,.12) !important;
            transform: scale(.96) !important;
        }
        .Tutuwan.withdrawn {
            justify-content: center !important;
            margin: 8px 0 12px !important;
            padding: 0 16px !important;
        }
        .Tutuwan-withdrawn-tip {
            border: 0 !important;
            outline: 0 !important;
            border-radius: 999px !important;
            background: rgba(120,120,128,.12) !important;
            color: rgba(88,82,87,.86) !important;
            padding: 6px 12px !important;
            font-size: 12px !important;
            font-weight: 700 !important;
            line-height: 1.2 !important;
            box-shadow: none !important;
            -webkit-tap-highlight-color: transparent !important;
        }
        .Tutuwan-withdrawn-tip:active { background: rgba(120,120,128,.18) !important; transform: scale(.98); }
        .Tutuwan .content.sticker-bubble {
            width: 100px !important;
            height: 100px !important;
            min-width: 100px !important;
            max-width: 100px !important;
            min-height: 100px !important;
            max-height: 100px !important;
            padding: 0 !important;
            border-radius: 18px !important;
            background: transparent !important;
            box-shadow: none !important;
            overflow: hidden !important;
        }
        .Tutuwan-chat-image.Tutuwan-chat-sticker {
            width: 100px !important;
            height: 100px !important;
            min-width: 100px !important;
            min-height: 100px !important;
            max-width: 100px !important;
            max-height: 100px !important;
            border-radius: 18px !important;
            object-fit: contain !important;
            background: transparent !important;
            box-shadow: none !important;
            display: block !important;
        }



        /* ====== 0529 精修：消息页返回按钮不发虚 / 快捷栏细线大图标 / 表情包按钮统一 ====== */
        .chat-page-overlay .chat-app-header .chat-icon-btn,
        .chat-page-overlay #chat-close-btn.chat-icon-btn,
        .chat-page-overlay #chat-add-thread-btn.chat-icon-btn {
            opacity: 1 !important;
            color: #111111 !important;
            background: transparent !important;
            border: 0 !important;
            box-shadow: none !important;
            width: 40px !important;
            height: 40px !important;
            min-width: 40px !important;
            border-radius: 50% !important;
            -webkit-tap-highlight-color: transparent !important;
        }
        .chat-page-overlay #chat-close-btn.chat-icon-btn svg {
            width: 26px !important;
            height: 26px !important;
            stroke-width: 2.65 !important;
            opacity: 1 !important;
        }
        .chat-page-overlay #chat-add-thread-btn.chat-icon-btn svg {
            width: 25px !important;
            height: 25px !important;
            stroke-width: 2.35 !important;
            opacity: 1 !important;
        }
        .chat-page-overlay .chat-app-header .chat-icon-btn:active {
            color: #111111 !important;
            background: rgba(0,0,0,.055) !important;
            transform: scale(.94) !important;
        }

        .Tutuwan-bubble-toolbar {
            height: 46px !important;
            min-height: 46px !important;
            width: min(324px, calc(100vw - 28px)) !important;
            padding: 5px 7px !important;
            gap: 2px !important;
            border-radius: 999px !important;
            background: rgba(250,250,252,.90) !important;
            box-shadow: 0 14px 32px rgba(20,20,24,.13), inset 0 0 0 .5px rgba(255,255,255,.95) !important;
        }
        .Tutuwan-bubble-toolbar button {
            height: 36px !important;
            min-height: 36px !important;
            min-width: 49px !important;
            padding: 0 3px !important;
            gap: 4px !important;
            border-radius: 999px !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico {
            width: 18px !important;
            height: 18px !important;
            min-width: 18px !important;
            min-height: 18px !important;
            flex: 0 0 18px !important;
            color: rgba(36,36,40,.88) !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico svg {
            width: 18px !important;
            height: 18px !important;
            min-width: 18px !important;
            min-height: 18px !important;
            stroke-width: 1.15 !important;
            vector-effect: non-scaling-stroke !important;
        }
        .Tutuwan-bubble-toolbar button .panel-ico svg * { vector-effect: non-scaling-stroke !important; }
        .Tutuwan-bubble-toolbar button .panel-label {
            max-width: 29px !important;
            font-size: 10px !important;
            font-weight: 520 !important;
            color: rgba(38,38,42,.86) !important;
        }

        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side {
            width: 40px !important;
            min-width: 40px !important;
            height: 40px !important;
            flex: 0 0 40px !important;
            border-radius: 50% !important;
            color: #222222 !important;
            background: transparent !important;
            border: 0 !important;
            box-shadow: none !important;
            padding: 0 !important;
            margin: 0 !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg {
            display: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side::before {
            content: '' !important;
            width: 24px !important;
            height: 24px !important;
            display: block !important;
            background: currentColor !important;
            -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.3 3.8h7.4L19 8.1v8.6a3.5 3.5 0 0 1-3.5 3.5H7.3a3.5 3.5 0 0 1-3.5-3.5V7.3a3.5 3.5 0 0 1 3.5-3.5Z'/%3E%3Cpath d='M14.7 3.9v3a1.2 1.2 0 0 0 1.2 1.2H19'/%3E%3Cpath d='M8.4 13.8c.9.95 2.1 1.42 3.6 1.42s2.7-.47 3.6-1.42'/%3E%3Cpath d='M9.1 10.2h.01M14.9 10.2h.01'/%3E%3C/svg%3E") center / contain no-repeat !important;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.3 3.8h7.4L19 8.1v8.6a3.5 3.5 0 0 1-3.5 3.5H7.3a3.5 3.5 0 0 1-3.5-3.5V7.3a3.5 3.5 0 0 1 3.5-3.5Z'/%3E%3Cpath d='M14.7 3.9v3a1.2 1.2 0 0 0 1.2 1.2H19'/%3E%3Cpath d='M8.4 13.8c.9.95 2.1 1.42 3.6 1.42s2.7-.47 3.6-1.42'/%3E%3Cpath d='M9.1 10.2h.01M14.9 10.2h.01'/%3E%3C/svg%3E") center / contain no-repeat !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side:active {
            background: rgba(0,0,0,.055) !important;
            transform: scale(.96) !important;
        }


        /* ====== 0520 修正：消息页对话入口右侧滑动按钮不再透出 ====== */
        .chat-thread-swipe-wrap {
            background: #fff !important;
            isolation: isolate !important;
            overflow: hidden !important;
        }
        .chat-thread-swipe-wrap .chat-thread-card {
            background: #fff !important;
            opacity: 1 !important;
            border-color: rgba(252,232,239,.96) !important;
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
            z-index: 3 !important;
        }
        .chat-thread-actions {
            width: 174px !important;
            z-index: 2 !important;
            background: #fff !important;
            opacity: 1 !important;
            border-radius: 0 22px 22px 0 !important;
            overflow: hidden !important;
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
        }
        .chat-thread-swipe-wrap:not(.open):not(.dragging) .chat-thread-actions {
            visibility: hidden !important;
        }
        .chat-thread-swipe-wrap.open .chat-thread-actions,
        .chat-thread-swipe-wrap.dragging .chat-thread-actions {
            visibility: visible !important;
        }
        .chat-thread-action-btn {
            width: 58px !important;
            opacity: 1 !important;
            color: #fff !important;
            font-size: 12px !important;
            font-weight: 900 !important;
            text-shadow: none !important;
            box-shadow: none !important;
            filter: none !important;
        }
        .chat-thread-action-btn.pin { background: #F0A93A !important; }
        .chat-thread-action-btn.edit { background: #49A9F2 !important; }
        .chat-thread-action-btn.delete { background: #EF4F55 !important; }


        /* ====== 0530 精修：左滑条目直角衔接 / 三按钮自然过渡 / 表情包填充图标 ====== */
        .chat-thread-swipe-wrap {
            border-radius: 22px !important;
            background: transparent !important;
            isolation: isolate !important;
            overflow: hidden !important;
        }
        .chat-thread-swipe-wrap .chat-thread-card {
            border-radius: 22px !important;
            overflow: hidden !important;
            transition:
                transform .30s cubic-bezier(.22,.61,.36,1),
                border-radius .22s ease,
                box-shadow .22s ease !important;
        }
        .chat-thread-swipe-wrap.open .chat-thread-card,
        .chat-thread-swipe-wrap.dragging .chat-thread-card {
            border-radius: 22px 0 0 22px !important;
            box-shadow: 0 8px 22px rgba(47,21,34,.045) !important;
        }
        .chat-thread-actions {
            width: 174px !important;
            height: 100% !important;
            background: transparent !important;
            border-radius: 0 22px 22px 0 !important;
            overflow: hidden !important;
            opacity: 0 !important;
            transform: translateX(14px) !important;
            transition:
                opacity .22s ease,
                transform .30s cubic-bezier(.22,.61,.36,1),
                visibility 0s linear .22s !important;
        }
        .chat-thread-swipe-wrap:not(.open):not(.dragging) .chat-thread-actions {
            visibility: hidden !important;
            opacity: 0 !important;
            transform: translateX(14px) !important;
            pointer-events: none !important;
        }
        .chat-thread-swipe-wrap.open .chat-thread-actions,
        .chat-thread-swipe-wrap.dragging .chat-thread-actions {
            visibility: visible !important;
            opacity: 1 !important;
            transform: translateX(0) !important;
            transition-delay: 0s !important;
            pointer-events: auto !important;
        }
        .chat-thread-action-btn {
            width: 58px !important;
            height: 100% !important;
            border-radius: 0 !important;
            opacity: 0 !important;
            transform: translateX(10px) !important;
            transition:
                opacity .20s ease,
                transform .28s cubic-bezier(.22,.61,.36,1) !important;
        }
        .chat-thread-swipe-wrap.open .chat-thread-action-btn,
        .chat-thread-swipe-wrap.dragging .chat-thread-action-btn {
            opacity: 1 !important;
            transform: translateX(0) !important;
        }
        .chat-thread-swipe-wrap.open .chat-thread-action-btn:nth-child(2),
        .chat-thread-swipe-wrap.dragging .chat-thread-action-btn:nth-child(2) { transition-delay: .025s !important; }
        .chat-thread-swipe-wrap.open .chat-thread-action-btn:nth-child(3),
        .chat-thread-swipe-wrap.dragging .chat-thread-action-btn:nth-child(3) { transition-delay: .045s !important; }
        .chat-thread-action-btn + .chat-thread-action-btn {
            box-shadow: inset .5px 0 rgba(255,255,255,.42) !important;
        }
        .chat-thread-action-btn.delete {
            border-radius: 0 22px 22px 0 !important;
        }

        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side,
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn {
            width: 46px !important;
            min-width: 46px !important;
            height: 46px !important;
            flex: 0 0 46px !important;
            border-radius: 50% !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            padding: 0 !important;
            margin: 0 !important;
            background: transparent !important;
            border: 0 !important;
            box-shadow: none !important;
            color: #222 !important;
            position: relative !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg {
            display: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side::before {
            content: '' !important;
            width: 28px !important;
            height: 28px !important;
            display: block !important;
            background: currentColor !important;
            -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7.1 2.8h7.55c.92 0 1.79.36 2.45 1l3.1 3.1c.64.66 1 1.53 1 2.45v7.55c0 2.37-1.93 4.3-4.3 4.3H7.1c-2.37 0-4.3-1.93-4.3-4.3V7.1c0-2.37 1.93-4.3 4.3-4.3Zm7.75 1.15v3.2c0 1.1.9 2 2 2h3.2L14.85 3.95Z'/%3E%3C/svg%3E") center / contain no-repeat !important;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7.1 2.8h7.55c.92 0 1.79.36 2.45 1l3.1 3.1c.64.66 1 1.53 1 2.45v7.55c0 2.37-1.93 4.3-4.3 4.3H7.1c-2.37 0-4.3-1.93-4.3-4.3V7.1c0-2.37 1.93-4.3 4.3-4.3Zm7.75 1.15v3.2c0 1.1.9 2 2 2h3.2L14.85 3.95Z'/%3E%3C/svg%3E") center / contain no-repeat !important;
        }
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn i.fas.fa-paper-plane::before {
            width: 28px !important;
            height: 28px !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side:active,
        .Tutuwan-room-footer #Tutuwan-send-btn.Tutuwan-send-btn.footer-btn-side.send-btn:active {
            background: rgba(0,0,0,.055) !important;
            transform: scale(.96) !important;
        }



        /* ====== 0531 精修：重绘表情包按钮 / 编辑对话资料补全 ====== */
        .chat-form-input {
            width: 100%;
            padding: 14px 16px;
            border-radius: 16px;
            border: 1.5px solid transparent;
            background: #F6F2F4;
            outline: none;
            color: var(--gray-text);
            font-size: 13px;
            line-height: 1.4;
            font-family: inherit;
            font-weight: 600;
        }
        .chat-form-input:focus {
            background: #FFF;
            border-color: var(--pink-dark);
            box-shadow: 0 0 0 3px rgba(169,135,150,.12);
        }
        #chat-friend-modal .chat-form-textarea {
            min-height: 132px;
            max-height: none;
            overflow: auto;
        }
        #chat-friend-modal .chat-avatar-row-title {
            margin: 4px 0 6px;
            color: #6D6268;
            font-size: 12px;
            font-weight: 850;
            letter-spacing: .2px;
        }
        #chat-friend-modal .chat-form-select[multiple] {
            min-height: 112px;
            background-image: none;
            padding-right: 16px;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side::before {
            display: none !important;
            content: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg {
            display: block !important;
            width: 31px !important;
            height: 31px !important;
            overflow: visible !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-base {
            fill: currentColor !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-fold {
            fill: rgba(255,255,255,.45) !important;
            stroke: rgba(255,255,255,.72) !important;
            stroke-width: 1.45 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-cut {
            fill: #fff !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-cut-line {
            fill: none !important;
            stroke: #fff !important;
            stroke-width: 2.15 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }


        .chat-worldbook-hidden-select {
            display: none !important;
        }
        .chat-worldbook-picker {
            width: 100%;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .chat-worldbook-field {
            width: 100%;
            min-height: 54px;
            padding: 14px 16px;
            border-radius: 16px;
            border: 1.5px solid transparent;
            background: #F6F2F4;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            cursor: pointer;
            color: var(--gray-text);
            box-shadow: none;
        }
        .chat-worldbook-field:focus,
        .chat-worldbook-field.open {
            background: #FFF;
            border-color: var(--pink-dark);
            box-shadow: 0 0 0 3px rgba(169,135,150,.12);
            outline: none;
        }
        .chat-worldbook-summary {
            min-width: 0;
            flex: 1 1 auto;
            color: var(--gray-text);
            font-size: 13px;
            font-weight: 700;
            line-height: 1.45;
            text-align: left;
            word-break: break-word;
        }
        .chat-worldbook-summary.chat-worldbook-placeholder {
            color: #B8AAB1;
            font-weight: 600;
        }
        .chat-worldbook-arrow {
            width: 18px;
            height: 18px;
            flex: 0 0 auto;
            stroke: #8A737E;
            fill: none;
            stroke-width: 2.2;
            stroke-linecap: round;
            stroke-linejoin: round;
            transition: transform .22s ease;
        }
        .chat-worldbook-field.open .chat-worldbook-arrow {
            transform: rotate(180deg);
        }
        .chat-worldbook-panel {
            display: none;
            flex-wrap: wrap;
            gap: 8px;
            padding-top: 2px;
        }
        .chat-worldbook-panel.active {
            display: flex;
        }
        .chat-worldbook-option {
            min-height: 34px;
            padding: 8px 12px;
            border-radius: 999px;
            border: 1.5px solid #E9D8E0;
            background: #FFF;
            color: #7A6871;
            font-size: 12px;
            font-weight: 800;
            line-height: 1.2;
            box-shadow: 0 4px 12px rgba(230,190,200,.12);
            cursor: pointer;
            transition: transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease, box-shadow .18s ease;
        }
        .chat-worldbook-option:active {
            transform: scale(.97);
        }
        .chat-worldbook-option.active {
            background: var(--pink-dark);
            border-color: var(--pink-dark);
            color: #FFF;
            box-shadow: 0 8px 18px rgba(169,135,150,.22);
        }
        .chat-worldbook-option.empty {
            cursor: default;
            background: #F6F2F4;
            color: #B49FA9;
            border-color: transparent;
            box-shadow: none;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg {
            display: block !important;
            width: 29px !important;
            height: 29px !important;
            overflow: visible !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-base {
            fill: currentColor !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-fold {
            fill: rgba(255,255,255,.36) !important;
            stroke: rgba(255,255,255,.78) !important;
            stroke-width: 1.4 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-cut {
            fill: #FFF !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg .sticker-cut-line {
            fill: none !important;
            stroke: #FFF !important;
            stroke-width: 1.9 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }


        /* ====== 0601 强制修正：表情包按钮完全重绘 + 发送按钮空内容也触发 char ====== */
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side::before {
            display: none !important;
            content: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon {
            display: block !important;
            width: 30px !important;
            height: 30px !important;
            overflow: visible !important;
            transform: translateX(.5px);
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-back {
            fill: currentColor !important;
            opacity: .22 !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-front {
            fill: currentColor !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-corner {
            fill: rgba(255,255,255,.42) !important;
            stroke: rgba(255,255,255,.78) !important;
            stroke-width: 1.45 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-spark,
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-dot {
            fill: #fff !important;
            stroke: none !important;
        }


        /* ====== 0533 修正：不要空发送自动回复 / 表情按钮加大同发送色无阴影 / 初始壁纸纯主题色 ====== */
        html, body {
            background: var(--app-page-gradient) !important;
        }
        body.theme-video-wallpaper {
            background: transparent !important;
        }
        .theme-wallpaper-preview {
            background: var(--app-page-gradient) !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side {
            width: 52px !important;
            min-width: 52px !important;
            height: 52px !important;
            flex: 0 0 52px !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            padding: 0 !important;
            margin: 0 !important;
            border: 0 !important;
            outline: 0 !important;
            border-radius: 50% !important;
            background: transparent !important;
            color: #333 !important;
            box-shadow: none !important;
            filter: none !important;
            transform: none !important;
            appearance: none !important;
            -webkit-appearance: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side::before {
            display: none !important;
            content: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side:active {
            background: #f5f5f5 !important;
            box-shadow: none !important;
            filter: none !important;
            transform: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon,
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side svg {
            display: block !important;
            width: 38px !important;
            height: 38px !important;
            overflow: visible !important;
            color: #333 !important;
            transform: none !important;
            filter: none !important;
            box-shadow: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-back {
            fill: currentColor !important;
            opacity: .18 !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-front {
            fill: currentColor !important;
            stroke: none !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-corner {
            fill: rgba(255,255,255,.40) !important;
            stroke: rgba(255,255,255,.76) !important;
            stroke-width: 1.45 !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-spark,
        .Tutuwan-room-footer #Tutuwan-sticker-toggle.Tutuwan-sticker-btn.footer-btn-side .Tutuwan-sticker-redraw-icon .sticker-dot {
            fill: #fff !important;
            stroke: none !important;
        }


        /* ====== 0601 精修：功能面板语音入口 / 功能按钮与表情包面板磨砂玻璃 ====== */
        .Tutuwan-tools-panel {
            background: rgba(255,255,255,.44) !important;
            -webkit-backdrop-filter: blur(28px) saturate(170%) !important;
            backdrop-filter: blur(28px) saturate(170%) !important;
            border: 1px solid rgba(255,255,255,.48) !important;
            box-shadow: none !important;
        }
        .Tutuwan-tool-item {
            border: 0 !important;
            background: transparent !important;
            box-shadow: none !important;
        }
        .Tutuwan-tool-icon {
            background: rgba(255,255,255,.34) !important;
            -webkit-backdrop-filter: blur(18px) saturate(155%) !important;
            backdrop-filter: blur(18px) saturate(155%) !important;
            border: 1px solid rgba(255,255,255,.36) !important;
            box-shadow: none !important;
        }
        .Tutuwan-tool-item span:last-child {
            color: #4F454B !important;
        }
        .Tutuwan-sticker-float-panel {
            background: rgba(255,255,255,.46) !important;
            -webkit-backdrop-filter: blur(30px) saturate(170%) !important;
            backdrop-filter: blur(30px) saturate(170%) !important;
            border: 1px solid rgba(255,255,255,.42) !important;
            box-shadow: none !important;
        }
        .Tutuwan-sticker-panel-tabs {
            background: transparent !important;
        }
        .Tutuwan-sticker-panel-tabs .chat-group-chip,
        .Tutuwan-sticker-panel-item {
            background: rgba(255,255,255,.32) !important;
            -webkit-backdrop-filter: blur(18px) saturate(150%) !important;
            backdrop-filter: blur(18px) saturate(150%) !important;
            border: 1px solid rgba(255,255,255,.34) !important;
            box-shadow: none !important;
        }
        .Tutuwan-sticker-panel-item span {
            color: #5A5257 !important;
        }



        /* ====== 0611 完善：语音气泡 / 支付卡片 / 音乐页面 ====== */
        /* 语音消息复用普通文本气泡：不覆盖 .content 的尺寸、padding、颜色、圆角。 */
        .Tutuwan-voice-body {
            display: inline-flex;
            align-items: center;
            justify-content: flex-start;
            gap: 6px;
            min-height: 0;
            min-width: 0;
            width: auto;
            max-width: 100%;
            line-height: inherit;
            vertical-align: baseline;
        }
        .Tutuwan-voice-waveform {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 2px;
            height: 18px;
            min-width: 0;
            padding: 0;
            cursor: pointer;
            -webkit-tap-highlight-color: transparent;
            color: currentColor !important;
            flex: 0 0 auto;
        }
        .Tutuwan-voice-waveform:active { transform: scale(.96); opacity: .72; }
        .Tutuwan-voice-bar {
            width: 2px;
            border-radius: 999px;
            background: currentColor;
            opacity: .9;
            transform-origin: center;
        }
        .Tutuwan-voice-bar:nth-child(1) { height: 6px; }
        .Tutuwan-voice-bar:nth-child(2) { height: 11px; }
        .Tutuwan-voice-bar:nth-child(3) { height: 16px; }
        .Tutuwan-voice-bar:nth-child(4) { height: 11px; }
        .Tutuwan-voice-bar:nth-child(5) { height: 6px; }
        @keyframes TutuwanVoicePulse {
            0%, 100% { transform: scaleY(.58); opacity: .62; }
            50% { transform: scaleY(1); opacity: 1; }
        }
        .Tutuwan-voice-waveform.playing .Tutuwan-voice-bar { animation: TutuwanVoicePulse .72s ease-in-out infinite; }
        .Tutuwan-voice-waveform.playing .Tutuwan-voice-bar:nth-child(2) { animation-delay: .08s; }
        .Tutuwan-voice-waveform.playing .Tutuwan-voice-bar:nth-child(3) { animation-delay: .16s; }
        .Tutuwan-voice-waveform.playing .Tutuwan-voice-bar:nth-child(4) { animation-delay: .24s; }
        .Tutuwan-voice-waveform.playing .Tutuwan-voice-bar:nth-child(5) { animation-delay: .32s; }
        .Tutuwan-voice-duration {
            margin-left: 0;
            color: currentColor !important;
            font-size: 13px !important;
            font-weight: 600 !important;
            line-height: inherit;
            white-space: nowrap;
            flex: 0 0 auto;
        }
        .Tutuwan-voice-transcript {
            width: 0;
            max-width: 0;
            max-height: 0;
            opacity: 0;
            overflow: hidden;
            margin-top: 0;
            padding-top: 0;
            border-top: 0 solid rgba(0,0,0,.08);
            color: currentColor !important;
            font-size: 12px;
            font-weight: 600;
            line-height: 1.55;
            white-space: pre-wrap;
            visibility: hidden;
            pointer-events: none;
            transition: max-height .28s cubic-bezier(.2,.8,.2,1), opacity .2s ease, margin-top .2s ease, padding-top .2s ease;
        }
        .Tutuwan .content.voice-bubble.expanded .Tutuwan-voice-transcript {
            width: auto;
            max-width: 100%;
            max-height: 180px;
            opacity: .92;
            margin-top: 8px;
            padding-top: 8px;
            border-top-width: 1px;
            visibility: visible;
            pointer-events: auto;
        }
        .Tutuwan.user .content.voice-bubble .Tutuwan-voice-transcript { border-top-color: rgba(255,255,255,.28); }
        .Tutuwan.ai .content.voice-bubble .Tutuwan-voice-transcript { border-top-color: rgba(0,0,0,.08); }
        .Tutuwan-voice-body { color: currentColor !important; }

        .Tutuwan-message-card.pay-redpacket,
        .Tutuwan-message-card.pay-transfer,
        .Tutuwan-message-card.music-share {
            width: min(252px, 66vw);
            border: 0;
            border-radius: 18px;
            overflow: hidden;
            box-shadow: 0 10px 26px rgba(70,45,20,.10);
        }
        .Tutuwan-message-card.pay-redpacket {
            background: linear-gradient(135deg, #E84D3D 0%, #C92E2E 100%);
            color: #fff;
            box-shadow: 0 10px 26px rgba(190,45,45,.16);
        }
        .Tutuwan-message-card.pay-redpacket.claimed {
            background: linear-gradient(135deg, #F4B7AD 0%, #E7978D 100%);
            color: #7D312B;
        }
        .Tutuwan-message-card.pay-transfer {
            background: linear-gradient(135deg, #FA9D3B 0%, #F27B36 100%);
            color: #fff;
        }
        .Tutuwan-message-card.pay-transfer.received {
            background: linear-gradient(135deg, #F8E1C2 0%, #F3D3A7 100%);
            color: #A36F36;
        }
        .Tutuwan-message-card.pay-redpacket .card-top,
        .Tutuwan-message-card.pay-transfer .card-top { padding: 13px 14px 12px; }
        .Tutuwan-message-card.pay-redpacket .card-icon { background: rgba(255,237,220,.24); color: #fff; border-radius: 14px; }
        .Tutuwan-message-card.pay-transfer .card-icon { background: rgba(255,255,255,.22); color: #fff; border-radius: 14px; }
        .Tutuwan-message-card.pay-redpacket.claimed .card-icon { background: rgba(255,255,255,.48); color: #A9473F; }
        .Tutuwan-message-card.pay-transfer.received .card-icon { background: rgba(255,255,255,.55); color: #C69355; }
        .Tutuwan-message-card.pay-redpacket .card-title,
        .Tutuwan-message-card.pay-transfer .card-title { color: currentColor; font-size: 14px; }
        .Tutuwan-message-card.pay-redpacket .card-sub,
        .Tutuwan-message-card.pay-transfer .card-sub { color: rgba(255,255,255,.88); font-size: 12px; font-weight: 700; }
        .Tutuwan-message-card.pay-redpacket.claimed .card-sub { color: rgba(125,49,43,.72); }
        .Tutuwan-message-card.pay-transfer.received .card-sub { color: rgba(129,82,35,.70); }
        .Tutuwan-message-card.pay-redpacket .card-footer { background: rgba(255,255,255,.14); color: rgba(255,255,255,.82); }
        .Tutuwan-message-card.pay-transfer .card-footer { background: rgba(255,255,255,.16); color: rgba(255,255,255,.78); }
        .Tutuwan-message-card.pay-redpacket.claimed .card-footer { background: rgba(255,255,255,.28); color: rgba(125,49,43,.68); }
        .Tutuwan-message-card.pay-transfer.received .card-footer { background: rgba(255,255,255,.32); color: rgba(129,82,35,.60); }
        .Tutuwan-message-card.music-share { background: linear-gradient(135deg, #FFFFFF, #FFF3F7); border: 1px solid rgba(255,214,226,.9); }
        .Tutuwan-message-card.music-share .card-icon { background: #111; color: #fff; border-radius: 50%; }
        .Tutuwan-message-card.music-share .card-title { color: #1d1d20; }
        .Tutuwan-message-card.music-share .card-sub { color: #8A7C84; }
        .Tutuwan-polaroid-card {
            width: min(220px, 58vw);
            aspect-ratio: 1 / 1;
            position: relative;
            overflow: hidden;
            border-radius: 18px;
            background: #F7F1F4;
            box-shadow: 0 10px 24px rgba(0,0,0,.08);
            cursor: pointer;
        }
        .Tutuwan-polaroid-card img {
            width: 100% !important;
            height: 100% !important;
            max-width: none !important;
            max-height: none !important;
            object-fit: cover;
            display: block;
        }
        .Tutuwan-polaroid-overlay {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: flex-end;
            background: linear-gradient(180deg, rgba(0,0,0,0) 38%, rgba(0,0,0,.52) 100%);
            opacity: 0;
            transition: opacity .22s ease;
            padding: 14px;
        }
        .Tutuwan-polaroid-card.active .Tutuwan-polaroid-overlay { opacity: 1; }
        .Tutuwan-polaroid-text {
            width: 100%;
            max-height: 48%;
            overflow: auto;
            color: #fff;
            font-size: 12px;
            line-height: 1.55;
            font-weight: 700;
            text-shadow: 0 1px 2px rgba(0,0,0,.25);
            white-space: pre-wrap;
        }
        .Tutuwan-message-card.location-card {
            width: min(248px, 66vw);
            border: 0;
            border-radius: 18px;
            overflow: hidden;
            background: #FFFFFF;
            box-shadow: 0 10px 24px rgba(0,0,0,.07);
            cursor: pointer;
        }
        .Tutuwan-message-card.location-card .loc-header { padding: 13px 14px 11px; }
        .Tutuwan-message-card.location-card .loc-name { font-size: 14px; font-weight: 900; color: #1E1D20; line-height: 1.25; }
        .Tutuwan-message-card.location-card .loc-addr { margin-top: 4px; font-size: 11px; color: #888089; line-height: 1.35; }
        .Tutuwan-message-card.location-card .loc-map-view {
            height: 76px;
            position: relative;
            overflow: hidden;
            background:
                linear-gradient(90deg, rgba(255,255,255,.25) 1px, transparent 1px) 0 0/28px 28px,
                linear-gradient(0deg, rgba(255,255,255,.25) 1px, transparent 1px) 0 0/28px 28px,
                linear-gradient(135deg, #EDEFF2, #DDE7E3);
        }
        .Tutuwan-message-card.location-card .loc-map-view::before {
            content: '';
            position: absolute;
            left: 50%; top: 50%;
            width: 18px; height: 18px;
            border-radius: 50% 50% 50% 0;
            background: #E84D3D;
            transform: translate(-50%, -70%) rotate(-45deg);
            box-shadow: 0 4px 12px rgba(232,77,61,.28);
        }
        .Tutuwan-message-card.location-card .loc-map-view::after {
            content: '';
            position: absolute;
            left: 50%; top: 50%;
            width: 6px; height: 6px;
            border-radius: 50%;
            background: #fff;
            transform: translate(-50%, -99%);
        }

        .Tutuwan-music-page {
            z-index: 10032;
            display: none;
            flex-direction: column;
            background: linear-gradient(180deg, #FFF9FB 0%, #FFFFFF 52%, #F7F7F9 100%) !important;
        }
        .Tutuwan-music-header {
            background: rgba(255,255,255,.78) !important;
            backdrop-filter: blur(18px) saturate(160%);
            -webkit-backdrop-filter: blur(18px) saturate(160%);
        }
        .Tutuwan-music-close { margin-right: 12px; cursor: pointer; flex: 0 0 auto; }
        .Tutuwan-music-content { padding: 24px 24px 36px !important; display: flex; flex-direction: column; align-items: center; }
        .Tutuwan-music-cover {
            width: min(72vw, 270px);
            aspect-ratio: 1 / 1;
            border-radius: 34px;
            background: radial-gradient(circle at 35% 28%, #fff 0 12%, #F8D5E1 13% 42%, #111 43% 44%, #F4A6C3 45% 100%);
            box-shadow: 0 24px 60px rgba(244,166,195,.26), inset 0 0 0 1px rgba(255,255,255,.7);
            display: flex;
            align-items: center;
            justify-content: center;
            color: rgba(255,255,255,.92);
            font-size: 44px;
            margin: 16px 0 22px;
        }
        .Tutuwan-music-cover.playing { animation: TutuwanMusicBreath 2.8s ease-in-out infinite; }
        @keyframes TutuwanMusicBreath { 0%,100% { transform: scale(1); } 50% { transform: scale(1.025); } }
        .Tutuwan-music-title { font-size: 22px; font-weight: 900; color: #272329; text-align: center; line-height: 1.25; }
        .Tutuwan-music-artist { margin-top: 6px; font-size: 13px; font-weight: 700; color: #A1949C; text-align: center; }
        .Tutuwan-music-listener { margin-top: 10px; min-height: 22px; font-size: 12px; font-weight: 800; color: #E56D9D; text-align: center; }
        .Tutuwan-music-progress { width: 100%; margin: 24px 0 8px; }
        .Tutuwan-music-track { height: 6px; border-radius: 999px; background: rgba(0,0,0,.08); overflow: hidden; }
        .Tutuwan-music-fill { height: 100%; width: 0%; border-radius: inherit; background: #111; transition: width .25s linear; }
        .Tutuwan-music-time { display: flex; justify-content: space-between; margin-top: 8px; color: #A49BA0; font-size: 11px; font-weight: 700; }
        .Tutuwan-music-controls { margin-top: 20px; display: flex; align-items: center; justify-content: center; gap: 18px; }
        .Tutuwan-music-btn { border: 0; width: 48px; height: 48px; border-radius: 50%; background: rgba(255,255,255,.92); color: #111; box-shadow: 0 8px 24px rgba(0,0,0,.07); display: flex; align-items: center; justify-content: center; cursor: pointer; }
        .Tutuwan-music-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
        .Tutuwan-music-btn.primary { width: 62px; height: 62px; background: #111; color: #fff; }
        .Tutuwan-music-actions { width: 100%; margin-top: 26px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
        .Tutuwan-music-action { height: 46px; border: 0; border-radius: 18px; background: #111; color: #fff; font-weight: 850; cursor: pointer; }
        .Tutuwan-music-action.light { background: #fff; color: #3B363A; box-shadow: inset 0 0 0 1px rgba(230,218,225,.9); }



        /* ============================================================
           [PATCH] 红包 / 转账卡片视觉分离 + 群聊 UI
           ============================================================ */
        .Tutuwan-message-card.pay-redpacket,
        .Tutuwan-message-card.pay-transfer {
            position: relative;
            width: min(246px, 64vw);
            border-radius: 16px !important;
            overflow: hidden;
            border: 1px solid rgba(255,255,255,.28) !important;
            box-shadow: 0 12px 28px rgba(82,36,30,.13) !important;
            isolation: isolate;
        }
        .Tutuwan-message-card.pay-redpacket::before,
        .Tutuwan-message-card.pay-transfer::before {
            content: '';
            position: absolute;
            inset: 0;
            pointer-events: none;
            background:
                radial-gradient(circle at 88% 14%, rgba(255,255,255,.22), transparent 28%),
                linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,0) 46%);
            z-index: -1;
        }
        .Tutuwan-message-card.pay-redpacket {
            background: linear-gradient(140deg, #F44F48 0%, #D9272C 48%, #A91924 100%) !important;
            color: #FFF7EF !important;
            box-shadow: 0 14px 30px rgba(205,39,44,.22) !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed {
            background: linear-gradient(140deg, #F8DDD3 0%, #F1B8A9 100%) !important;
            color: #84352F !important;
            box-shadow: 0 10px 24px rgba(132,53,47,.10) !important;
        }
        .Tutuwan-message-card.pay-transfer {
            background: linear-gradient(140deg, #FFB24E 0%, #F08A2F 46%, #D7681C 100%) !important;
            color: #FFFDF8 !important;
            box-shadow: 0 14px 30px rgba(215,104,28,.19) !important;
        }
        .Tutuwan-message-card.pay-transfer.received {
            background: linear-gradient(140deg, #FFF0D8 0%, #F3CB92 100%) !important;
            color: #8B5A21 !important;
            box-shadow: 0 10px 24px rgba(139,90,33,.10) !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-top,
        .Tutuwan-message-card.pay-transfer .card-top {
            display: grid !important;
            grid-template-columns: 42px minmax(0, 1fr);
            align-items: center;
            gap: 12px;
            padding: 14px 15px 13px !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-icon,
        .Tutuwan-message-card.pay-transfer .card-icon {
            width: 42px;
            height: 42px;
            border-radius: 14px !important;
            display: flex;
            align-items: center;
            justify-content: center;
            flex: 0 0 auto;
        }
        .Tutuwan-message-card.pay-redpacket .card-icon {
            background: rgba(255,241,205,.22) !important;
            color: #FFE7A3 !important;
            box-shadow: inset 0 0 0 1px rgba(255,231,163,.18);
        }
        .Tutuwan-message-card.pay-transfer .card-icon {
            background: rgba(255,255,255,.24) !important;
            color: #FFFFFF !important;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,.15);
        }
        .Tutuwan-message-card.pay-redpacket.claimed .card-icon {
            background: rgba(255,255,255,.58) !important;
            color: #B4473F !important;
        }
        .Tutuwan-message-card.pay-transfer.received .card-icon {
            background: rgba(255,255,255,.62) !important;
            color: #B27632 !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-title,
        .Tutuwan-message-card.pay-transfer .card-title {
            max-width: 170px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            font-size: 15px !important;
            font-weight: 800 !important;
            letter-spacing: .1px;
            color: currentColor !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-sub,
        .Tutuwan-message-card.pay-transfer .card-sub {
            margin-top: 3px;
            color: rgba(255,255,255,.88) !important;
            font-size: 12px !important;
            font-weight: 650 !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed .card-sub { color: rgba(132,53,47,.70) !important; }
        .Tutuwan-message-card.pay-transfer.received .card-sub { color: rgba(139,90,33,.70) !important; }
        .Tutuwan-message-card.pay-redpacket .card-footer,
        .Tutuwan-message-card.pay-transfer .card-footer {
            border-top: 1px solid rgba(255,255,255,.13);
            padding: 6px 15px !important;
            font-size: 11px !important;
            font-weight: 700;
            letter-spacing: .15px;
        }
        .Tutuwan-message-card.pay-redpacket .card-footer { background: rgba(102,0,0,.10) !important; color: rgba(255,247,239,.86) !important; }
        .Tutuwan-message-card.pay-transfer .card-footer { background: rgba(108,56,0,.10) !important; color: rgba(255,253,248,.82) !important; }
        .Tutuwan-message-card.pay-redpacket.claimed .card-footer { background: rgba(255,255,255,.34) !important; color: rgba(132,53,47,.70) !important; }
        .Tutuwan-message-card.pay-transfer.received .card-footer { background: rgba(255,255,255,.36) !important; color: rgba(139,90,33,.68) !important; }

        .chat-thread-avatar.group-avatar,
        .Tutuwan-group-avatar {
            position: relative;
            display: grid;
            grid-template-columns: 1fr 1fr;
            grid-template-rows: 1fr 1fr;
            gap: 2px;
            padding: 3px;
            background: linear-gradient(135deg, #FFF4F8, #F5D9E4);
            border-radius: 16px;
            overflow: hidden;
        }
        .chat-thread-avatar.group-avatar img,
        .Tutuwan-group-avatar img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            border-radius: 8px;
            display: block;
        }
        .chat-thread-name .group-count-pill {
            margin-left: 6px;
            padding: 1px 6px;
            border-radius: 999px;
            background: rgba(255,134,172,.16);
            color: #9B6677;
            font-size: 10px;
            font-weight: 800;
            vertical-align: middle;
        }
        .Tutuwan-group-sender {
            margin: 0 0 4px 3px;
            max-width: 210px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            color: rgba(126,105,114,.82);
            font-size: 11px;
            font-weight: 700;
            line-height: 1.1;
        }
        .Tutuwan.ai .bubble-wrapper.group-message-stack { align-items: flex-start; }
        .Tutuwan-group-create-list {
            max-height: 260px;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: 8px;
            padding: 2px 0;
        }
        .Tutuwan-group-member-option {
            display: grid;
            grid-template-columns: 32px 1fr auto;
            align-items: center;
            gap: 10px;
            padding: 9px 10px;
            border-radius: 16px;
            background: rgba(255,240,246,.74);
            border: 1px solid rgba(255,216,229,.75);
            color: var(--dark-text);
            font-size: 13px;
            font-weight: 750;
            cursor: pointer;
        }
        .Tutuwan-group-member-option img {
            width: 32px;
            height: 32px;
            border-radius: 11px;
            object-fit: cover;
        }
        .Tutuwan-group-member-option input { accent-color: var(--pink-dark); }
        .Tutuwan-group-empty-tip { color: var(--gray-text); font-size: 12px; line-height: 1.6; text-align: center; padding: 14px; }

    

        /* ============================================================
           [PATCH] 支付卡片柔和浅色皮肤：红包浅珊瑚红 / 转账浅橙金
           只覆盖视觉，不改支付与入账逻辑
           ============================================================ */
        .Tutuwan-message-card.pay-redpacket,
        .Tutuwan-message-card.pay-transfer {
            width: min(244px, 64vw) !important;
            border-radius: 18px !important;
            border: 1px solid rgba(255,255,255,.55) !important;
            box-shadow: 0 8px 18px rgba(90,52,38,.085) !important;
        }
        .Tutuwan-message-card.pay-redpacket::before,
        .Tutuwan-message-card.pay-transfer::before {
            background:
                radial-gradient(circle at 88% 10%, rgba(255,255,255,.38), transparent 30%),
                radial-gradient(circle at 8% 88%, rgba(255,255,255,.16), transparent 34%),
                linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,0) 52%) !important;
        }
        .Tutuwan-message-card.pay-redpacket {
            background: linear-gradient(142deg, #FFA19A 0%, #FF7E7E 52%, #F46D78 100%) !important;
            color: #FFFDFB !important;
            box-shadow: 0 9px 20px rgba(244,109,120,.16) !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed {
            background: linear-gradient(142deg, #FFE6DF 0%, #FFD2CC 100%) !important;
            color: #A95750 !important;
            box-shadow: 0 8px 18px rgba(169,87,80,.08) !important;
        }
        .Tutuwan-message-card.pay-transfer {
            background: linear-gradient(142deg, #FFE0A7 0%, #FFC77C 52%, #FFB266 100%) !important;
            color: #7E4E19 !important;
            box-shadow: 0 9px 20px rgba(255,178,102,.16) !important;
        }
        .Tutuwan-message-card.pay-transfer.received {
            background: linear-gradient(142deg, #FFF3DE 0%, #FFE2B8 100%) !important;
            color: #8A5B25 !important;
            box-shadow: 0 8px 18px rgba(138,91,37,.08) !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-top,
        .Tutuwan-message-card.pay-transfer .card-top {
            grid-template-columns: 40px minmax(0, 1fr) !important;
            gap: 11px !important;
            padding: 13px 14px 12px !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-icon,
        .Tutuwan-message-card.pay-transfer .card-icon {
            width: 40px !important;
            height: 40px !important;
            border-radius: 13px !important;
            box-shadow: none !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-icon {
            background: rgba(255,255,255,.26) !important;
            color: #FFF3D0 !important;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,.18) !important;
        }
        .Tutuwan-message-card.pay-transfer .card-icon {
            background: rgba(255,255,255,.34) !important;
            color: #9B641E !important;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,.22) !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed .card-icon {
            background: rgba(255,255,255,.62) !important;
            color: #BF625C !important;
        }
        .Tutuwan-message-card.pay-transfer.received .card-icon {
            background: rgba(255,255,255,.62) !important;
            color: #B77734 !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-title,
        .Tutuwan-message-card.pay-transfer .card-title {
            font-size: 14px !important;
            font-weight: 820 !important;
            color: currentColor !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-sub {
            color: rgba(255,255,255,.90) !important;
            font-weight: 650 !important;
        }
        .Tutuwan-message-card.pay-transfer .card-sub {
            color: rgba(126,78,25,.70) !important;
            font-weight: 680 !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed .card-sub { color: rgba(169,87,80,.72) !important; }
        .Tutuwan-message-card.pay-transfer.received .card-sub { color: rgba(138,91,37,.72) !important; }
        .Tutuwan-message-card.pay-redpacket .card-footer,
        .Tutuwan-message-card.pay-transfer .card-footer {
            border-top: 1px solid rgba(255,255,255,.20) !important;
            padding: 6px 14px !important;
            font-size: 11px !important;
            font-weight: 700 !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-footer {
            background: rgba(255,255,255,.16) !important;
            color: rgba(255,255,255,.86) !important;
        }
        .Tutuwan-message-card.pay-transfer .card-footer {
            background: rgba(255,255,255,.22) !important;
            color: rgba(126,78,25,.62) !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed .card-footer {
            background: rgba(255,255,255,.36) !important;
            color: rgba(169,87,80,.68) !important;
        }
        .Tutuwan-message-card.pay-transfer.received .card-footer {
            background: rgba(255,255,255,.36) !important;
            color: rgba(138,91,37,.68) !important;
        }


        /* ============================================================
           [PATCH] 支付卡片重新轻量化：缩小尺寸 + 低饱和浅色
           只覆盖视觉，不改红包/转账/钱包/入账逻辑
           ============================================================ */
        .Tutuwan-message-card.pay-redpacket,
        .Tutuwan-message-card.pay-transfer {
            position: relative !important;
            width: min(188px, 50vw) !important;
            min-width: 0 !important;
            border-radius: 12px !important;
            overflow: hidden !important;
            border: 1px solid rgba(45, 35, 30, .055) !important;
            box-shadow: 0 3px 10px rgba(40, 28, 22, .055) !important;
            isolation: isolate !important;
        }
        .Tutuwan-message-card.pay-redpacket::before,
        .Tutuwan-message-card.pay-transfer::before {
            background: linear-gradient(180deg, rgba(255,255,255,.40), rgba(255,255,255,0) 58%) !important;
            opacity: .55 !important;
            z-index: 0 !important;
        }
        .Tutuwan-message-card.pay-redpacket::after,
        .Tutuwan-message-card.pay-transfer::after {
            content: '' !important;
            position: absolute !important;
            left: 0 !important;
            top: 0 !important;
            bottom: 0 !important;
            width: 4px !important;
            pointer-events: none !important;
            z-index: 1 !important;
        }
        .Tutuwan-message-card.pay-redpacket {
            background: #FFF1EE !important;
            color: #55302B !important;
        }
        .Tutuwan-message-card.pay-redpacket::after { background: #FF7A70 !important; }
        .Tutuwan-message-card.pay-redpacket.claimed {
            background: #FFF7F5 !important;
            color: rgba(85,48,43,.66) !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed::after { background: #F5B1AB !important; }
        .Tutuwan-message-card.pay-transfer {
            background: #FFF7E9 !important;
            color: #5B3E19 !important;
        }
        .Tutuwan-message-card.pay-transfer::after { background: #F2AF54 !important; }
        .Tutuwan-message-card.pay-transfer.received {
            background: #FFFBF3 !important;
            color: rgba(91,62,25,.66) !important;
        }
        .Tutuwan-message-card.pay-transfer.received::after { background: #EAC891 !important; }
        .Tutuwan-message-card.pay-redpacket .card-top,
        .Tutuwan-message-card.pay-transfer .card-top {
            position: relative !important;
            z-index: 2 !important;
            display: grid !important;
            grid-template-columns: 28px minmax(0, 1fr) !important;
            gap: 8px !important;
            align-items: center !important;
            padding: 8px 10px 7px 12px !important;
            min-height: 44px !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-icon,
        .Tutuwan-message-card.pay-transfer .card-icon {
            width: 28px !important;
            height: 28px !important;
            border-radius: 9px !important;
            box-shadow: none !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-icon {
            background: rgba(255,122,112,.14) !important;
            color: #E65E55 !important;
        }
        .Tutuwan-message-card.pay-transfer .card-icon {
            background: rgba(242,175,84,.16) !important;
            color: #C9832E !important;
        }
        .Tutuwan-message-card.pay-redpacket.claimed .card-icon {
            background: rgba(245,177,171,.18) !important;
            color: rgba(151,81,75,.58) !important;
        }
        .Tutuwan-message-card.pay-transfer.received .card-icon {
            background: rgba(234,200,145,.20) !important;
            color: rgba(151,103,41,.58) !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-icon svg,
        .Tutuwan-message-card.pay-transfer .card-icon svg {
            width: 15px !important;
            height: 15px !important;
            stroke-width: 2.05 !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-title,
        .Tutuwan-message-card.pay-transfer .card-title {
            max-width: 130px !important;
            font-size: 12px !important;
            line-height: 1.18 !important;
            font-weight: 820 !important;
            letter-spacing: 0 !important;
            color: currentColor !important;
            white-space: nowrap !important;
            overflow: hidden !important;
            text-overflow: ellipsis !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-sub,
        .Tutuwan-message-card.pay-transfer .card-sub {
            margin-top: 2px !important;
            font-size: 10px !important;
            line-height: 1.18 !important;
            font-weight: 650 !important;
            white-space: nowrap !important;
            overflow: hidden !important;
            text-overflow: ellipsis !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-sub { color: rgba(214,76,68,.72) !important; }
        .Tutuwan-message-card.pay-transfer .card-sub { color: rgba(169,106,36,.74) !important; }
        .Tutuwan-message-card.pay-redpacket.claimed .card-sub { color: rgba(85,48,43,.46) !important; }
        .Tutuwan-message-card.pay-transfer.received .card-sub { color: rgba(91,62,25,.46) !important; }
        .Tutuwan-message-card.pay-redpacket .card-footer,
        .Tutuwan-message-card.pay-transfer .card-footer {
            position: relative !important;
            z-index: 2 !important;
            padding: 4px 10px 4px 12px !important;
            min-height: 18px !important;
            border-top: 1px solid rgba(60,45,36,.055) !important;
            background: rgba(255,255,255,.40) !important;
            font-size: 9px !important;
            line-height: 1.1 !important;
            font-weight: 650 !important;
            letter-spacing: 0 !important;
            white-space: nowrap !important;
            overflow: hidden !important;
            text-overflow: ellipsis !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-footer { color: rgba(142,67,61,.56) !important; }
        .Tutuwan-message-card.pay-transfer .card-footer { color: rgba(128,81,31,.56) !important; }
        .Tutuwan-message-card.pay-redpacket.claimed .card-footer { color: rgba(85,48,43,.40) !important; }
        .Tutuwan-message-card.pay-transfer.received .card-footer { color: rgba(91,62,25,.40) !important; }


        /* ============================================================
           [PATCH] 功能面板卡片尺寸统一：紧凑版整体放大 105%
           作用范围：红包、转账、电话、视频、一起听等功能卡片
           排除：照片/图片/表情包/定位
           ============================================================ */
        .Tutuwan-message-card:not(.location-card):not(.location) {
            width: min(197px, 52.5vw) !important;
            min-width: 0 !important;
            max-width: 100% !important;
            border-radius: 13px !important;
        }
        .Tutuwan-message-card:not(.location-card):not(.location) .card-top {
            min-height: 46px !important;
            padding: 8.5px 10.5px 7.5px 12.5px !important;
            gap: 8.5px !important;
            align-items: center !important;
        }
        .Tutuwan-message-card:not(.location-card):not(.location) .card-icon {
            width: 29.5px !important;
            height: 29.5px !important;
            min-width: 29.5px !important;
            border-radius: 9.5px !important;
        }
        .Tutuwan-message-card:not(.location-card):not(.location) .card-icon svg {
            width: 16px !important;
            height: 16px !important;
        }
        .Tutuwan-message-card:not(.location-card):not(.location) .card-title {
            max-width: 138px !important;
            font-size: 12.5px !important;
            line-height: 1.2 !important;
        }
        .Tutuwan-message-card:not(.location-card):not(.location) .card-sub {
            font-size: 10.5px !important;
            line-height: 1.2 !important;
            margin-top: 2px !important;
        }
        .Tutuwan-message-card:not(.location-card):not(.location) .card-footer {
            min-height: 19px !important;
            padding: 4.2px 10.5px 4.2px 12.5px !important;
            font-size: 9.5px !important;
            line-height: 1.1 !important;
        }
        .Tutuwan-message-card.pay-redpacket,
        .Tutuwan-message-card.pay-transfer {
            width: min(197px, 52.5vw) !important;
        }
        .Tutuwan-message-card.pay-redpacket::after,
        .Tutuwan-message-card.pay-transfer::after {
            width: 4.2px !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-top,
        .Tutuwan-message-card.pay-transfer .card-top {
            grid-template-columns: 29.5px minmax(0, 1fr) !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-title,
        .Tutuwan-message-card.pay-transfer .card-title {
            max-width: 138px !important;
        }



        /* ============================================================
           [PATCH] 支付卡片去掉左侧竖线 + Twitter/X APP
           ============================================================ */
        .Tutuwan-message-card.pay-redpacket::after,
        .Tutuwan-message-card.pay-transfer::after {
            content: none !important;
            display: none !important;
            width: 0 !important;
            opacity: 0 !important;
        }
        .Tutuwan-message-card.pay-redpacket .card-top,
        .Tutuwan-message-card.pay-transfer .card-top,
        .Tutuwan-message-card.pay-redpacket .card-footer,
        .Tutuwan-message-card.pay-transfer .card-footer {
            padding-left: 10.5px !important;
        }

        #twitter-app-page {
            position: absolute;
            inset: 0;
            z-index: 10034;
            display: none;
            flex-direction: column;
            background: #fff !important;
            color: #0f1419;
            overflow: hidden;
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
        }
        .twitter-header {
            height: calc(54px + var(--safe-top));
            padding: var(--safe-top) 12px 0;
            display: grid;
            grid-template-columns: 44px 1fr auto auto;
            align-items: center;
            gap: 4px;
            border-bottom: 1px solid #eff3f4;
            background: rgba(255,255,255,.86);
            backdrop-filter: blur(16px) saturate(180%);
            -webkit-backdrop-filter: blur(16px) saturate(180%);
            z-index: 3;
            flex: 0 0 auto;
        }
        .twitter-icon-btn {
            width: 42px;
            height: 42px;
            border-radius: 999px;
            border: 0;
            background: transparent;
            color: #0f1419;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
        }
        .twitter-icon-btn:active { background: #e7e7e8; transform: scale(.97); }
        .twitter-icon-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
        .twitter-title-stack { min-width: 0; display: flex; flex-direction: column; line-height: 1.1; }
        .twitter-title { font-size: 18px; font-weight: 850; color: #0f1419; }
        .twitter-subtitle { margin-top: 2px; font-size: 11px; font-weight: 650; color: #536471; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .twitter-content { flex: 1; min-height: 0; overflow: hidden; position: relative; background: #fff; }
        .twitter-tab-panel { position: absolute; inset: 0; overflow-y: auto; padding-bottom: 84px; display: none; background: #fff; }
        .twitter-tab-panel.active { display: block; }
        .twitter-bottom-nav {
            height: calc(56px + var(--safe-bottom));
            padding-bottom: var(--safe-bottom);
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            border-top: 1px solid #eff3f4;
            background: rgba(255,255,255,.94);
            backdrop-filter: blur(18px) saturate(160%);
            -webkit-backdrop-filter: blur(18px) saturate(160%);
            flex: 0 0 auto;
            z-index: 4;
        }
        .twitter-nav-btn {
            border: 0;
            background: transparent;
            color: #536471;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 2px;
            font-size: 10px;
            font-weight: 700;
            cursor: pointer;
        }
        .twitter-nav-btn svg { width: 24px; height: 24px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
        .twitter-nav-btn.active { color: #0f1419; }
        .twitter-compose-fab {
            position: absolute;
            right: 18px;
            bottom: calc(76px + var(--safe-bottom));
            width: 58px;
            height: 58px;
            border-radius: 999px;
            border: 0;
            background: #1d9bf0;
            color: #fff;
            box-shadow: 0 10px 24px rgba(29,155,240,.34);
            z-index: 5;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
        }
        .twitter-compose-fab:active { transform: scale(.94); }
        .twitter-compose-fab svg { width: 27px; height: 27px; stroke: currentColor; fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
        .twitter-pills { display: flex; overflow-x: auto; gap: 8px; padding: 10px 14px; border-bottom: 1px solid #eff3f4; }
        .twitter-pill { border: 1px solid #cfd9de; background: #fff; color: #0f1419; padding: 7px 13px; border-radius: 999px; font-size: 13px; font-weight: 800; white-space: nowrap; cursor: pointer; }
        .twitter-pill.active { background: #0f1419; color: #fff; border-color: #0f1419; }
        .twitter-inline-composer { display: grid; grid-template-columns: 42px 1fr; gap: 10px; padding: 13px 14px; border-bottom: 1px solid #eff3f4; cursor: pointer; }
        .twitter-avatar { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; background: #eff3f4; flex: 0 0 auto; }
        .twitter-avatar.small { width: 34px; height: 34px; }
        .twitter-avatar.big { width: 84px; height: 84px; border: 4px solid #fff; }
        .twitter-inline-placeholder { min-height: 42px; display: flex; align-items: center; color: #536471; font-size: 18px; }
        .twitter-tweet { display: grid; grid-template-columns: 42px 1fr; gap: 10px; padding: 12px 14px 8px; border-bottom: 1px solid #eff3f4; background: #fff; }
        .twitter-tweet:active { background: #f7f9f9; }
        .twitter-tweet-body { min-width: 0; }
        .twitter-tweet-head { display: flex; align-items: center; gap: 4px; min-width: 0; font-size: 14px; }
        .twitter-name { font-weight: 850; color: #0f1419; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 118px; }
        .twitter-verified { color: #1d9bf0; font-size: 12px; }
        .twitter-handle, .twitter-time { color: #536471; font-size: 13px; white-space: nowrap; }
        .twitter-text { margin-top: 3px; color: #0f1419; font-size: 15px; line-height: 1.42; white-space: pre-wrap; word-break: break-word; }
        .twitter-media { margin-top: 10px; border: 1px solid #cfd9de; border-radius: 16px; overflow: hidden; background: #f7f9f9; }
        .twitter-media img { width: 100%; max-height: 260px; object-fit: cover; display: block; }
        .twitter-actions { margin-top: 9px; display: grid; grid-template-columns: repeat(5, 1fr); color: #536471; max-width: 290px; }
        .twitter-action { border: 0; background: transparent; color: inherit; display: flex; align-items: center; gap: 4px; height: 30px; cursor: pointer; font-size: 12px; }
        .twitter-action svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
        .twitter-action.liked { color: #f91880; }
        .twitter-action.reposted { color: #00ba7c; }
        .twitter-action.bookmarked { color: #1d9bf0; }
        .twitter-action:active { transform: scale(.94); }
        .twitter-empty { padding: 46px 28px; text-align: center; color: #536471; font-size: 14px; line-height: 1.6; }
        .twitter-empty b { color: #0f1419; font-size: 19px; }
        .twitter-section-title { padding: 16px 14px 10px; font-size: 20px; font-weight: 900; border-bottom: 1px solid #eff3f4; }
        .twitter-search-wrap { padding: 10px 14px; border-bottom: 1px solid #eff3f4; position: sticky; top: 0; background: rgba(255,255,255,.94); backdrop-filter: blur(14px); z-index: 2; }
        .twitter-search { width: 100%; height: 42px; border: 0; outline: 0; border-radius: 999px; background: #eff3f4; padding: 0 16px; font-size: 15px; color: #0f1419; }
        .twitter-trend { padding: 12px 14px; border-bottom: 1px solid #eff3f4; cursor: pointer; }
        .twitter-trend-kicker { color: #536471; font-size: 12px; }
        .twitter-trend-title { margin-top: 2px; color: #0f1419; font-size: 15px; font-weight: 900; }
        .twitter-trend-count { margin-top: 3px; color: #536471; font-size: 12px; }
        .twitter-user-row, .twitter-dm-row, .twitter-notification { display: grid; grid-template-columns: 42px 1fr auto; gap: 10px; padding: 12px 14px; border-bottom: 1px solid #eff3f4; align-items: center; }
        .twitter-user-meta { min-width: 0; }
        .twitter-user-title { font-weight: 850; font-size: 15px; color: #0f1419; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .twitter-user-desc { margin-top: 2px; font-size: 12px; color: #536471; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
        .twitter-follow-btn { border: 0; background: #0f1419; color: #fff; height: 32px; padding: 0 14px; border-radius: 999px; font-size: 13px; font-weight: 850; cursor: pointer; }
        .twitter-follow-btn.following { background: #fff; color: #0f1419; border: 1px solid #cfd9de; }
        .twitter-profile-hero { height: 132px; background: linear-gradient(135deg, #d7efff, #f7d5e8); }
        .twitter-profile-main { padding: 0 14px 14px; border-bottom: 1px solid #eff3f4; }
        .twitter-profile-avatar-row { margin-top: -42px; display: flex; justify-content: space-between; align-items: flex-end; }
        .twitter-profile-edit { height: 34px; border: 1px solid #cfd9de; background: #fff; color: #0f1419; border-radius: 999px; padding: 0 14px; font-weight: 850; cursor: pointer; }
        .twitter-profile-name { margin-top: 8px; font-size: 21px; font-weight: 900; }
        .twitter-profile-handle { margin-top: 2px; color: #536471; font-size: 14px; }
        .twitter-profile-bio { margin-top: 10px; color: #0f1419; font-size: 14px; line-height: 1.45; white-space: pre-wrap; }
        .twitter-profile-stats { margin-top: 10px; display: flex; gap: 14px; color: #536471; font-size: 13px; }
        .twitter-profile-stats b { color: #0f1419; }
        .twitter-profile-tabs { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid #eff3f4; }
        .twitter-profile-tabs button { height: 44px; border: 0; background: #fff; color: #536471; font-weight: 850; cursor: pointer; position: relative; }
        .twitter-profile-tabs button.active { color: #0f1419; }
        .twitter-profile-tabs button.active::after { content: ''; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%); width: 34px; height: 4px; background: #1d9bf0; border-radius: 999px; }
        .twitter-modal { position: absolute; inset: 0; z-index: 10035; display: none; align-items: flex-end; background: rgba(0,0,0,.32); }
        .twitter-modal-card { width: 100%; max-height: 92%; background: #fff; border-radius: 24px 24px 0 0; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 -18px 50px rgba(0,0,0,.18); }
        .twitter-modal-header { height: 54px; padding: 0 14px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #eff3f4; flex: 0 0 auto; }
        .twitter-modal-title { font-weight: 900; font-size: 17px; }
        .twitter-modal-body { padding: 14px; overflow-y: auto; }
        .twitter-compose-area { display: grid; grid-template-columns: 42px 1fr; gap: 10px; }
        .twitter-compose-textarea { width: 100%; min-height: 120px; border: 0; outline: 0; resize: none; font-size: 18px; line-height: 1.45; color: #0f1419; font-family: inherit; }
        .twitter-compose-tools { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; border-top: 1px solid #eff3f4; padding-top: 12px; }
        .twitter-tool-row { display: flex; gap: 8px; }
        .twitter-tool-btn { width: 36px; height: 36px; border: 0; background: transparent; color: #1d9bf0; border-radius: 999px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
        .twitter-tool-btn svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 2.2; }
        .twitter-post-btn { border: 0; background: #1d9bf0; color: #fff; height: 36px; border-radius: 999px; padding: 0 18px; font-weight: 900; cursor: pointer; }
        .twitter-post-btn:disabled { opacity: .45; }
        .twitter-image-preview { display: none; position: relative; margin-top: 10px; border-radius: 18px; overflow: hidden; border: 1px solid #cfd9de; }
        .twitter-image-preview img { width: 100%; max-height: 240px; object-fit: cover; display: block; }
        .twitter-remove-image { position: absolute; top: 8px; right: 8px; width: 30px; height: 30px; border: 0; border-radius: 999px; background: rgba(15,20,25,.78); color: #fff; cursor: pointer; }
        .twitter-detail-modal .twitter-modal-card { height: 92%; }
        .twitter-detail-list { padding-bottom: 18px; }
        .twitter-reply-box { display: grid; grid-template-columns: 34px 1fr; gap: 10px; padding: 12px 14px; border-top: 1px solid #eff3f4; flex: 0 0 auto; }
        .twitter-reply-input { border: 0; outline: 0; resize: none; min-height: 42px; font-size: 16px; font-family: inherit; }
        .twitter-reply-send { justify-self: end; border: 0; background: #1d9bf0; color: #fff; border-radius: 999px; height: 32px; padding: 0 14px; font-weight: 850; cursor: pointer; }
        .twitter-settings-grid { display: grid; gap: 12px; }
        .twitter-settings-grid label { display: grid; gap: 6px; color: #536471; font-size: 12px; font-weight: 800; }
        .twitter-settings-grid input, .twitter-settings-grid textarea { width: 100%; border: 1px solid #cfd9de; border-radius: 16px; padding: 11px 12px; font-size: 14px; outline: none; font-family: inherit; }
        .twitter-settings-grid textarea { min-height: 88px; resize: vertical; }
        .twitter-save-settings { height: 42px; border: 0; border-radius: 999px; background: #0f1419; color: #fff; font-weight: 900; cursor: pointer; }
        .twitter-setting-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
        .twitter-lite-btn { height: 38px; border: 1px solid #cfd9de; border-radius: 999px; background: #fff; color: #0f1419; font-weight: 850; cursor: pointer; }
        .twitter-lite-btn:active { transform: scale(.97); background: #f7f9f9; }
        .twitter-cover-preview { height: 82px; border-radius: 18px; border: 1px solid #cfd9de; background: linear-gradient(135deg,#d7efff,#f7d5e8); background-size: cover; background-position: center; overflow: hidden; }
        .twitter-npc-hint { margin-top: -4px; color: #536471; font-size: 11px; line-height: 1.45; }
        .twitter-author-chip { display: inline-flex; align-items: center; height: 17px; margin-left: 4px; padding: 0 6px; border-radius: 999px; background: #eff3f4; color: #536471; font-size: 10px; font-weight: 850; vertical-align: middle; }
        .twitter-profile-hero { position: relative; background-size: cover !important; background-position: center !important; }
        .twitter-profile-cover-edit { position: absolute; right: 14px; bottom: 12px; height: 30px; padding: 0 12px; border: 1px solid rgba(255,255,255,.85); border-radius: 999px; background: rgba(15,20,25,.55); color: #fff; font-size: 12px; font-weight: 850; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); cursor: pointer; }
        .twitter-generating { padding: 22px 14px; color: #536471; text-align: center; border-bottom: 1px solid #eff3f4; font-size: 14px; }

    

        /* ============================================================
           [SHOP APP] 购物应用：独立新页面 / 分类 / 商品详情 / 购物车
           参考 qq.htm.txt 的交互层级，视觉与实现重新绘制，不照搬
           ============================================================ */
        #shop-app-page {
            position: absolute;
            inset: 0;
            z-index: 10033;
            display: none;
            flex-direction: column;
            overflow: hidden;
            background:
                radial-gradient(circle at 20% 0%, rgba(255, 223, 214, .72) 0, transparent 28%),
                linear-gradient(180deg, #FFF7F2 0%, #FFFDFB 46%, #F8F2EE 100%) !important;
            color: #261712;
            --shop-accent: #ff6a36;
            --shop-accent-2: #ff9f5a;
            --shop-ink: #261712;
            --shop-muted: #9b7a6b;
            --shop-card: rgba(255,255,255,.86);
            --shop-card-solid: #ffffff;
            --shop-line: rgba(92, 54, 38, .10);
            --shop-shadow: 0 14px 34px rgba(119, 61, 31, .10);
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
        }
        .shop-page-header {
            height: calc(60px + var(--safe-top));
            padding: var(--safe-top) 14px 0;
            display: grid;
            grid-template-columns: 44px 1fr 44px 44px;
            align-items: center;
            gap: 4px;
            flex: 0 0 auto;
            background: rgba(255, 250, 246, .74);
            border-bottom: 1px solid rgba(255,255,255,.55);
            box-shadow: 0 1px 0 rgba(120,70,45,.04);
            backdrop-filter: blur(18px) saturate(170%);
            -webkit-backdrop-filter: blur(18px) saturate(170%);
            z-index: 5;
        }
        .shop-icon-btn {
            width: 42px;
            height: 42px;
            border: 0;
            border-radius: 999px;
            background: rgba(255,255,255,.62);
            color: var(--shop-ink);
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            box-shadow: inset 0 0 0 1px rgba(90, 52, 32, .06);
        }
        .shop-icon-btn:active { transform: scale(.94); background: rgba(255, 238, 225, .9); }
        .shop-icon-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
        .shop-title-stack { min-width: 0; display: flex; flex-direction: column; line-height: 1.08; }
        .shop-title { font-size: 19px; font-weight: 920; letter-spacing: -.4px; color: var(--shop-ink); }
        .shop-subtitle { margin-top: 3px; font-size: 11px; font-weight: 760; color: var(--shop-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .shop-search-wrap { padding: 12px 16px 8px; flex: 0 0 auto; }
        .shop-search-box {
            height: 42px;
            border-radius: 999px;
            background: rgba(255,255,255,.78);
            box-shadow: inset 0 0 0 1px rgba(83, 45, 27, .06), 0 8px 20px rgba(92, 48, 25, .05);
            display: grid;
            grid-template-columns: 1fr 32px;
            align-items: center;
            padding: 0 8px 0 16px;
        }
        .shop-search-box input { width: 100%; height: 100%; border: 0; outline: 0; background: transparent; font-size: 14px; color: var(--shop-ink); font-weight: 650; }
        .shop-search-box input::placeholder { color: rgba(155,122,107,.72); }
        .shop-cat-strip { display: flex; gap: 9px; overflow-x: auto; padding: 2px 16px 12px; flex: 0 0 auto; touch-action: pan-x; }
        .shop-cat-pill {
            border: 0;
            border-radius: 999px;
            padding: 9px 14px;
            background: rgba(255,255,255,.56);
            color: #876251;
            font-size: 13px;
            font-weight: 850;
            white-space: nowrap;
            cursor: pointer;
            box-shadow: inset 0 0 0 1px rgba(90, 52, 32, .055);
        }
        .shop-cat-pill.active { background: var(--shop-ink); color: #fff; box-shadow: 0 9px 20px rgba(38,23,18,.17); }
        .shop-content { flex: 1; min-height: 0; position: relative; overflow: hidden; }
        .shop-panel { position: absolute; inset: 0; overflow-y: auto; display: none; padding: 0 16px calc(90px + var(--safe-bottom)); touch-action: pan-y; }
        .shop-panel.active { display: block; }
        .shop-hero-card {
            min-height: 132px;
            border-radius: 30px;
            padding: 18px;
            margin: 4px 0 15px;
            background:
                linear-gradient(135deg, rgba(255, 107, 54, .92), rgba(255, 171, 105, .84)),
                radial-gradient(circle at 84% 12%, rgba(255,255,255,.5) 0, transparent 32%);
            color: #fff;
            box-shadow: 0 16px 34px rgba(255, 106, 54, .22);
            position: relative;
            overflow: hidden;
        }
        .shop-hero-card::after { content: ''; position: absolute; right: -42px; bottom: -50px; width: 150px; height: 150px; border-radius: 50%; background: rgba(255,255,255,.20); }
        .shop-hero-kicker { position: relative; z-index: 1; font-size: 11px; font-weight: 900; letter-spacing: 1.6px; opacity: .82; text-transform: uppercase; }
        .shop-hero-title { position: relative; z-index: 1; margin-top: 8px; font-size: 27px; line-height: 1.05; font-weight: 950; letter-spacing: -.9px; }
        .shop-hero-desc { position: relative; z-index: 1; margin-top: 10px; width: 78%; font-size: 12px; line-height: 1.5; font-weight: 680; opacity: .88; }
        .shop-mini-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin-bottom: 15px; }
        .shop-mini-card { background: rgba(255,255,255,.75); border: 1px solid rgba(255,255,255,.75); border-radius: 20px; padding: 11px 12px; box-shadow: 0 8px 20px rgba(80, 41, 22, .055); }
        .shop-mini-card b { display: block; font-size: 16px; color: var(--shop-ink); }
        .shop-mini-card span { display: block; margin-top: 2px; color: var(--shop-muted); font-size: 10px; font-weight: 780; }
        .shop-product-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
        .shop-product-card {
            min-width: 0;
            border: 0;
            padding: 0;
            text-align: left;
            border-radius: 24px;
            background: var(--shop-card);
            overflow: hidden;
            box-shadow: var(--shop-shadow);
            cursor: pointer;
            display: flex;
            flex-direction: column;
            color: var(--shop-ink);
        }
        .shop-product-card:active { transform: scale(.975); }
        .shop-product-art { aspect-ratio: 1 / .86; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; background: linear-gradient(135deg, #fff0e4, #ffe6f0); }
        .shop-product-art::before { content: ''; position: absolute; inset: 18%; border-radius: 36px; background: rgba(255,255,255,.32); filter: blur(2px); transform: rotate(-8deg); }
        .shop-product-emoji { position: relative; z-index: 1; font-size: 46px; filter: drop-shadow(0 8px 14px rgba(74,37,20,.12)); }
        .shop-product-tag { position: absolute; left: 9px; top: 9px; z-index: 1; max-width: calc(100% - 18px); padding: 5px 8px; border-radius: 999px; background: rgba(255,255,255,.75); color: #8a5840; font-size: 10px; font-weight: 850; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .shop-product-info { padding: 10px 11px 12px; display: flex; flex-direction: column; gap: 7px; min-height: 116px; }
        .shop-product-title { min-height: 37px; font-size: 13px; font-weight: 900; line-height: 1.34; color: var(--shop-ink); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
        .shop-product-desc { color: var(--shop-muted); font-size: 11px; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .shop-product-row { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 6px; }
        .shop-price { color: var(--shop-accent); font-size: 16px; font-weight: 950; letter-spacing: -.3px; }
        .shop-price small { font-size: 10px; margin-right: 1px; }
        .shop-add-mini { width: 32px; height: 32px; border: 0; border-radius: 50%; background: var(--shop-ink); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 8px 16px rgba(38,23,18,.18); }
        .shop-add-mini svg { width: 17px; height: 17px; stroke: currentColor; fill: none; stroke-width: 2.6; }
        .shop-empty { grid-column: 1 / -1; padding: 56px 22px; text-align: center; color: var(--shop-muted); font-size: 13px; line-height: 1.7; }
        .shop-bottom-nav {
            position: absolute;
            left: 12px;
            right: 12px;
            bottom: max(12px, var(--safe-bottom));
            height: 62px;
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 4px;
            padding: 6px;
            border-radius: 26px;
            background: rgba(255,255,255,.82);
            border: 1px solid rgba(255,255,255,.78);
            box-shadow: 0 16px 36px rgba(92, 48, 25, .13);
            backdrop-filter: blur(20px) saturate(170%);
            -webkit-backdrop-filter: blur(20px) saturate(170%);
            z-index: 8;
        }
        .shop-nav-btn { position: relative; border: 0; border-radius: 20px; background: transparent; color: #9b7a6b; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; font-size: 10px; font-weight: 850; cursor: pointer; }
        .shop-nav-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
        .shop-nav-btn.active { background: #261712; color: #fff; }
        .shop-badge { position: absolute; top: 4px; right: 16px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 999px; background: #ff3b30; color: #fff; font-size: 10px; display: none; align-items: center; justify-content: center; font-weight: 950; box-shadow: 0 0 0 2px #fff; }
        .shop-list { display: grid; gap: 11px; }
        .shop-list-card { display: grid; grid-template-columns: 72px 1fr auto; gap: 12px; align-items: center; padding: 12px; border-radius: 22px; background: rgba(255,255,255,.82); box-shadow: var(--shop-shadow); }
        .shop-list-icon { width: 72px; height: 72px; border-radius: 18px; display: flex; align-items: center; justify-content: center; font-size: 34px; background: linear-gradient(135deg, #fff0e4, #ffe6f0); }
        .shop-list-name { font-size: 14px; font-weight: 900; line-height: 1.25; color: var(--shop-ink); }
        .shop-list-sub { margin-top: 4px; color: var(--shop-muted); font-size: 11px; line-height: 1.4; }
        .shop-stepper { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
        .shop-stepper button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: #f4e7dd; color: var(--shop-ink); font-weight: 950; cursor: pointer; }
        .shop-cart-footer { position: sticky; bottom: 0; display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 15px; padding: 13px; border-radius: 24px; background: rgba(255,255,255,.9); box-shadow: var(--shop-shadow); }
        .shop-main-btn, .shop-ghost-btn { border: 0; border-radius: 999px; height: 42px; padding: 0 18px; font-weight: 900; cursor: pointer; }
        .shop-main-btn { background: var(--shop-ink); color: #fff; }
        .shop-main-btn.orange { background: linear-gradient(135deg, var(--shop-accent), var(--shop-accent-2)); box-shadow: 0 10px 20px rgba(255,106,54,.22); }
        .shop-ghost-btn { background: #f6ebe3; color: var(--shop-ink); }
        .shop-section-head { display: flex; align-items: end; justify-content: space-between; gap: 10px; margin: 6px 0 13px; }
        .shop-section-head h2 { font-size: 24px; line-height: 1.05; color: var(--shop-ink); letter-spacing: -.7px; }
        .shop-section-head p { color: var(--shop-muted); font-size: 12px; font-weight: 760; }
        .shop-profile-card { border-radius: 30px; padding: 18px; margin: 4px 0 14px; background: rgba(255,255,255,.78); box-shadow: var(--shop-shadow); display: grid; grid-template-columns: 58px 1fr; gap: 13px; align-items: center; }
        .shop-profile-avatar { width: 58px; height: 58px; border-radius: 22px; background: linear-gradient(135deg,#ffe1d4,#fff4ec); display: flex; align-items: center; justify-content: center; font-size: 28px; }
        .shop-profile-name { font-size: 18px; font-weight: 950; color: var(--shop-ink); }
        .shop-profile-meta { margin-top: 4px; color: var(--shop-muted); font-size: 12px; font-weight: 720; }
        .shop-inventory-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
        .shop-inv-item { background: rgba(255,255,255,.78); border-radius: 20px; padding: 12px 8px; text-align: center; box-shadow: 0 8px 18px rgba(80,41,22,.05); }
        .shop-inv-emoji { font-size: 27px; }
        .shop-inv-name { margin-top: 7px; font-size: 11px; font-weight: 850; color: var(--shop-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .shop-inv-count { margin-top: 3px; font-size: 10px; color: var(--shop-muted); font-weight: 800; }
        .shop-modal { position: absolute; inset: 0; z-index: 10036; display: none; align-items: flex-end; background: rgba(31,19,14,.34); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
        .shop-modal-card { width: 100%; max-height: 88%; display: flex; flex-direction: column; overflow: hidden; background: #fffaf6; border-radius: 30px 30px 0 0; box-shadow: 0 -18px 50px rgba(38,23,18,.22); }
        .shop-detail-scroll { overflow-y: auto; padding: 14px 16px 16px; touch-action: pan-y; }
        .shop-detail-hero { height: 230px; border-radius: 26px; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; background: linear-gradient(135deg, #fff0e4, #ffe6f0); }
        .shop-detail-hero::after { content:''; position:absolute; inset: 18%; border-radius: 44px; background: rgba(255,255,255,.28); transform: rotate(-10deg); }
        .shop-detail-emoji { position: relative; z-index: 1; font-size: 90px; filter: drop-shadow(0 14px 20px rgba(74,37,20,.14)); }
        .shop-detail-title { margin-top: 16px; font-size: 22px; line-height: 1.22; font-weight: 950; color: var(--shop-ink); }
        .shop-detail-meta { margin-top: 8px; color: var(--shop-muted); font-size: 12px; font-weight: 780; }
        .shop-detail-desc { margin-top: 12px; color: #644436; font-size: 14px; line-height: 1.65; }
        .shop-review-box { margin-top: 14px; padding: 13px; border-radius: 20px; background: rgba(255,255,255,.72); }
        .shop-review-title { font-size: 13px; font-weight: 950; color: var(--shop-ink); margin-bottom: 8px; }
        .shop-review { padding: 8px 0; border-top: 1px dashed rgba(100,68,54,.14); color: #745446; font-size: 12px; line-height: 1.45; }
        .shop-detail-footer { flex: 0 0 auto; padding: 12px 16px calc(12px + var(--safe-bottom)); display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 10px; background: rgba(255,250,246,.92); border-top: 1px solid rgba(90,52,32,.08); }
        .shop-detail-close { position: absolute; top: 16px; right: 16px; width: 36px; height: 36px; border: 0; border-radius: 50%; background: rgba(38,23,18,.55); color: #fff; z-index: 3; cursor: pointer; }
        .shop-detail-close svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 2.4; }
        @media (max-width: 360px) {
            .shop-product-grid { gap: 10px; }
            .shop-product-emoji { font-size: 38px; }
            .shop-mini-stats { grid-template-columns: 1fr 1fr; }
            .shop-bottom-nav { left: 9px; right: 9px; }
        }


        /* ============================================================
           [SHOP PATCH V2] 购物应用：贴合兔兔丸主题 UI + 资产钱包联动
           ============================================================ */
        #shop-app-page {
            background: var(--app-page-gradient) !important;
            color: #3F3940 !important;
            --shop-accent: #000000;
            --shop-accent-2: #3F3940;
            --shop-ink: #3F3940;
            --shop-muted: #9B8D94;
            --shop-soft: var(--pink-light, #FFF0F5);
            --shop-line: var(--pink-border, #FCE8EF);
            --shop-card: rgba(255,255,255,.94);
            --shop-card-solid: #FFFFFF;
            --shop-shadow: 0 12px 28px rgba(230,190,200,.13);
            isolation: isolate;
        }
        #shop-app-page::before {
            content: '';
            position: absolute;
            inset: 0;
            pointer-events: none;
            background:
                radial-gradient(circle at 16% 8%, rgba(255,240,245,.96) 0, transparent 30%),
                radial-gradient(circle at 88% 16%, rgba(252,232,239,.7) 0, transparent 26%);
            opacity: .82;
            z-index: -1;
        }
        .shop-page-header {
            height: calc(62px + var(--safe-top, 0px)) !important;
            background: rgba(255,255,255,.86) !important;
            border-bottom: 1px solid rgba(252,232,239,.82) !important;
            box-shadow: none !important;
            backdrop-filter: blur(18px) saturate(170%) !important;
            -webkit-backdrop-filter: blur(18px) saturate(170%) !important;
        }
        .shop-icon-btn {
            background: rgba(255,255,255,.92) !important;
            color: var(--gray-text, #8A737E) !important;
            box-shadow: inset 0 0 0 1px rgba(252,232,239,.92) !important;
        }
        .shop-icon-btn:active { background: var(--pink-light, #FFF0F5) !important; }
        .shop-title { color: #3F3940 !important; font-size: 18px !important; font-weight: 850 !important; }
        .shop-subtitle { color: #A99AA2 !important; font-weight: 720 !important; }
        .shop-search-wrap { padding: 12px 18px 8px !important; }
        .shop-search-box {
            height: 40px !important;
            background: rgba(255,255,255,.92) !important;
            border: 1px solid rgba(252,232,239,.95) !important;
            box-shadow: none !important;
        }
        .shop-search-box input { color: #4D454A !important; font-weight: 650 !important; }
        .shop-search-box input::placeholder { color: #B6AAB0 !important; }
        .shop-cat-strip { padding: 2px 18px 12px !important; }
        .shop-cat-pill {
            background: rgba(255,255,255,.86) !important;
            color: #8A737E !important;
            box-shadow: inset 0 0 0 1px rgba(252,232,239,.9) !important;
            font-weight: 800 !important;
        }
        .shop-cat-pill.active {
            background: #000000 !important;
            color: #FFFFFF !important;
            box-shadow: none !important;
        }
        .shop-panel { padding: 0 18px calc(96px + var(--safe-bottom, 0px)) !important; }
        .shop-hero-card {
            min-height: 148px !important;
            border-radius: 30px !important;
            background: rgba(255,255,255,.92) !important;
            color: #3F3940 !important;
            border: 1px solid rgba(252,232,239,.86) !important;
            box-shadow: var(--shop-shadow) !important;
        }
        .shop-hero-card::after {
            right: -32px !important;
            bottom: -54px !important;
            background: var(--pink-light, #FFF0F5) !important;
        }
        .shop-hero-kicker { color: #B6AAB0 !important; opacity: 1 !important; }
        .shop-hero-title { color: #3F3940 !important; font-size: 26px !important; }
        .shop-hero-desc { color: #8A737E !important; opacity: 1 !important; }
        .shop-mini-stats { grid-template-columns: repeat(3, 1fr) !important; }
        .shop-mini-card, .shop-list-card, .shop-profile-card, .shop-inv-item, .shop-review-box, .shop-wallet-card {
            background: rgba(255,255,255,.92) !important;
            border: 1px solid rgba(252,232,239,.86) !important;
            box-shadow: var(--shop-shadow) !important;
        }
        .shop-mini-card { border-radius: 22px !important; }
        .shop-mini-card b, .shop-section-head h2, .shop-list-name, .shop-profile-name, .shop-detail-title, .shop-review-title { color: #3F3940 !important; }
        .shop-mini-card span, .shop-section-head p, .shop-list-sub, .shop-profile-meta, .shop-inv-count, .shop-detail-meta, .shop-detail-desc, .shop-review, .shop-empty { color: #9B8D94 !important; }
        .shop-product-card {
            border-radius: 26px !important;
            background: rgba(255,255,255,.94) !important;
            border: 1px solid rgba(252,232,239,.86) !important;
            box-shadow: var(--shop-shadow) !important;
        }
        .shop-product-art, .shop-list-icon, .shop-profile-avatar, .shop-detail-hero {
            background: linear-gradient(135deg, #FFF0F5 0%, #FFFFFF 100%) !important;
        }
        .shop-product-tag {
            background: rgba(255,255,255,.88) !important;
            color: #8A737E !important;
            box-shadow: inset 0 0 0 1px rgba(252,232,239,.9) !important;
        }
        .shop-product-title { color: #3F3940 !important; }
        .shop-product-desc { color: #A99AA2 !important; }
        .shop-price { color: #111111 !important; }
        .shop-add-mini, .shop-main-btn, .shop-nav-btn.active {
            background: #000000 !important;
            color: #FFFFFF !important;
            box-shadow: none !important;
        }
        .shop-main-btn.orange { background: #000000 !important; box-shadow: none !important; }
        .shop-ghost-btn {
            background: #FFFFFF !important;
            color: #4D454A !important;
            box-shadow: inset 0 0 0 1px rgba(252,232,239,.96) !important;
        }
        .shop-stepper button {
            background: var(--pink-light, #FFF0F5) !important;
            color: #4D454A !important;
        }
        .shop-bottom-nav {
            height: 66px !important;
            background: rgba(240,238,242,.86) !important;
            border: 1px solid rgba(255,255,255,.72) !important;
            box-shadow: 0 12px 30px rgba(230,190,200,.18) !important;
        }
        .shop-nav-btn { color: #8A737E !important; }
        .shop-nav-btn.active { border-radius: 22px !important; }
        .shop-badge { box-shadow: 0 0 0 2px rgba(240,238,242,.95) !important; }
        .shop-wallet-card {
            border-radius: 28px;
            padding: 16px;
            margin: 0 0 14px;
            display: grid;
            grid-template-columns: 1fr auto;
            gap: 12px;
            align-items: center;
        }
        .shop-wallet-label { color: #A99AA2; font-size: 11px; font-weight: 800; }
        .shop-wallet-amount { margin-top: 6px; color: #111; font-size: 28px; font-weight: 900; letter-spacing: -.6px; }
        .shop-wallet-tip { margin-top: 5px; color: #B6AAB0; font-size: 11px; line-height: 1.45; }
        .shop-wallet-actions { display: flex; flex-direction: column; gap: 8px; min-width: 92px; }
        .shop-wallet-actions .shop-main-btn, .shop-wallet-actions .shop-ghost-btn { height: 38px; padding: 0 12px; font-size: 12px; }
        .shop-modal { background: rgba(63,57,64,.26) !important; backdrop-filter: blur(10px) !important; -webkit-backdrop-filter: blur(10px) !important; }
        .shop-modal-card {
            background: var(--app-page-gradient) !important;
            border-radius: 32px 32px 0 0 !important;
            border: 1px solid rgba(255,255,255,.7) !important;
            box-shadow: 0 -16px 40px rgba(63,57,64,.14) !important;
        }
        .shop-detail-footer {
            background: rgba(255,255,255,.9) !important;
            border-top: 1px solid rgba(252,232,239,.9) !important;
        }
        .shop-detail-close { background: rgba(0,0,0,.68) !important; }
        .shop-inv-item { cursor: pointer; }
        .shop-inv-item:active { transform: scale(.98); }
        .shop-remove-link { margin-top:8px;text-align:right;color:#8A737E;font-size:11px;font-weight:800;cursor:pointer; }
        @media (max-width: 360px) {
            .shop-wallet-card { grid-template-columns: 1fr; }
            .shop-wallet-actions { flex-direction: row; }
        }


        /* ============================================================
           [SHOP PATCH V3] 完整购物应用：无 emoji / 两列商品卡 / 资产钱包联动
           ============================================================ */
        #shop-app-page {
            background: var(--app-page-gradient) !important;
            color: #3F3940 !important;
            --shop-accent: #A98796;
            --shop-accent-2: #D4A5B9;
            --shop-ink: #3F3940;
            --shop-muted: #9B8D94;
            --shop-soft: var(--pink-light, #FFF0F5);
            --shop-line: var(--pink-border, #FCE8EF);
            --shop-card: rgba(255,255,255,.94);
            --shop-card-solid: #FFFFFF;
            --shop-shadow: 0 12px 28px rgba(230,190,200,.13);
            isolation: isolate;
        }
        #shop-app-page::before {
            content: '';
            position: absolute;
            inset: 0;
            pointer-events: none;
            background:
                radial-gradient(circle at 16% 8%, rgba(255,240,245,.96) 0, transparent 30%),
                radial-gradient(circle at 88% 16%, rgba(252,232,239,.72) 0, transparent 26%);
            opacity: .86;
            z-index: -1;
        }
        .shop-page-header {
            height: calc(62px + var(--safe-top, 0px)) !important;
            padding: var(--safe-top, 0px) 14px 0 !important;
            grid-template-columns: 44px 1fr 44px 44px !important;
            background: rgba(255,255,255,.86) !important;
            border-bottom: 1px solid rgba(252,232,239,.82) !important;
            box-shadow: none !important;
            backdrop-filter: blur(18px) saturate(170%) !important;
            -webkit-backdrop-filter: blur(18px) saturate(170%) !important;
        }
        .shop-icon-btn {
            background: rgba(255,255,255,.92) !important;
            color: var(--gray-text, #8A737E) !important;
            box-shadow: inset 0 0 0 1px rgba(252,232,239,.92) !important;
        }
        .shop-icon-btn:active { background: var(--pink-light, #FFF0F5) !important; }
        .shop-title { color: #3F3940 !important; font-size: 18px !important; font-weight: 850 !important; }
        .shop-subtitle { color: #A99AA2 !important; font-weight: 720 !important; }
        .shop-search-wrap { padding: 12px 18px 8px !important; }
        .shop-search-box {
            height: 40px !important;
            background: rgba(255,255,255,.92) !important;
            border: 1px solid rgba(252,232,239,.95) !important;
            box-shadow: none !important;
        }
        .shop-search-box input { color: #3F3940 !important; font-weight: 650 !important; }
        .shop-search-box input::placeholder { color: #B6AAB0 !important; }
        .shop-search-box svg { stroke: #A99AA2 !important; }
        .shop-cat-strip { padding: 2px 18px 12px !important; gap: 8px !important; }
        .shop-cat-pill {
            background: rgba(255,255,255,.82) !important;
            color: #8A737E !important;
            box-shadow: inset 0 0 0 1px rgba(252,232,239,.95) !important;
            font-weight: 760 !important;
        }
        .shop-cat-pill.active {
            background: #3F3940 !important;
            color: #FFFFFF !important;
            box-shadow: 0 8px 18px rgba(63,57,64,.14) !important;
        }
        .shop-panel { padding: 0 18px calc(94px + var(--safe-bottom, 0px)) !important; }
        .shop-hero-card {
            min-height: 124px !important;
            border-radius: 30px !important;
            background:
                linear-gradient(135deg, rgba(255,255,255,.94), rgba(255,240,245,.9)),
                radial-gradient(circle at 80% 20%, rgba(212,165,185,.24), transparent 32%) !important;
            color: #3F3940 !important;
            border: 1px solid rgba(252,232,239,.92) !important;
            box-shadow: var(--shop-shadow) !important;
        }
        .shop-hero-card::after {
            background: rgba(212,165,185,.12) !important;
            right: -46px !important;
            bottom: -52px !important;
        }
        .shop-hero-kicker { color: #A98796 !important; opacity: .86 !important; }
        .shop-hero-title { color: #3F3940 !important; font-size: 25px !important; }
        .shop-hero-desc { color: #8A737E !important; opacity: .92 !important; }
        .shop-mini-stats { gap: 9px !important; margin-bottom: 15px !important; }
        .shop-mini-card, .shop-list-card, .shop-profile-card, .shop-inv-item, .shop-review-box, .shop-wallet-card, .shop-contact-item, .shop-action-panel {
            background: rgba(255,255,255,.92) !important;
            border: 1px solid rgba(252,232,239,.95) !important;
            box-shadow: var(--shop-shadow) !important;
        }
        .shop-mini-card b, .shop-section-head h2, .shop-list-name, .shop-profile-name, .shop-inv-name, .shop-review-title, .shop-detail-title { color: #3F3940 !important; }
        .shop-mini-card span, .shop-section-head p, .shop-list-sub, .shop-profile-meta, .shop-inv-count, .shop-detail-meta, .shop-detail-desc, .shop-review, .shop-empty { color: #9B8D94 !important; }
        .shop-product-grid {
            display: grid !important;
            grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
            gap: 12px !important;
            align-items: stretch !important;
        }
        .shop-product-card {
            position: relative !important;
            min-width: 0 !important;
            border-radius: 24px !important;
            background: rgba(255,255,255,.94) !important;
            border: 1px solid rgba(252,232,239,.95) !important;
            box-shadow: var(--shop-shadow) !important;
            overflow: hidden !important;
            color: #3F3940 !important;
        }
        .shop-product-art {
            aspect-ratio: 1 / .9 !important;
            background:
                radial-gradient(circle at 35% 24%, rgba(255,255,255,.78), transparent 35%),
                linear-gradient(135deg, #FFF8FA, #FCE8EF) !important;
        }
        .shop-product-art::before {
            inset: 18% !important;
            border-radius: 34px !important;
            background: rgba(255,255,255,.42) !important;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,.52) !important;
        }
        .shop-product-mark, .shop-list-mark, .shop-detail-mark, .shop-inv-mark, .shop-profile-mark {
            position: relative;
            z-index: 1;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border-radius: 22px;
            background: rgba(255,255,255,.72);
            color: #A98796;
            border: 1px solid rgba(252,232,239,.95);
            font-weight: 900;
            letter-spacing: -.04em;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,.64), 0 10px 20px rgba(212,165,185,.12);
        }
        .shop-product-mark { width: 62px; height: 62px; font-size: 22px; }
        .shop-list-mark { width: 72px; height: 72px; font-size: 20px; border-radius: 20px; }
        .shop-detail-mark { width: 112px; height: 112px; font-size: 34px; border-radius: 34px; }
        .shop-inv-mark { width: 44px; height: 44px; margin: 0 auto; font-size: 16px; border-radius: 16px; }
        .shop-profile-mark { width: 58px; height: 58px; font-size: 19px; border-radius: 22px; }
        .shop-product-tag {
            left: 9px !important;
            top: 9px !important;
            right: 46px !important;
            max-width: none !important;
            background: rgba(255,255,255,.82) !important;
            color: #8A737E !important;
        }
        .shop-product-info { padding: 10px 11px 13px !important; min-height: 112px !important; }
        .shop-product-title { min-height: 36px !important; color: #3F3940 !important; font-weight: 850 !important; }
        .shop-product-desc { color: #9B8D94 !important; }
        .shop-product-row { padding-right: 2px !important; }
        .shop-price { color: #A98796 !important; font-weight: 920 !important; }
        .shop-add-mini {
            position: absolute !important;
            top: 9px !important;
            right: 9px !important;
            z-index: 3 !important;
            width: 34px !important;
            height: 34px !important;
            border-radius: 50% !important;
            background: #3F3940 !important;
            color: #FFFFFF !important;
            box-shadow: none !important;
        }
        .shop-add-mini svg { width: 17px !important; height: 17px !important; }
        .shop-bottom-nav {
            left: 12px !important;
            right: 12px !important;
            height: 64px !important;
            background: rgba(255,255,255,.88) !important;
            border: 1px solid rgba(252,232,239,.92) !important;
            box-shadow: 0 14px 32px rgba(230,190,200,.18) !important;
        }
        .shop-nav-btn { color: #A99AA2 !important; }
        .shop-nav-btn.active { background: #3F3940 !important; color: #FFFFFF !important; }
        .shop-badge { background: #3F3940 !important; box-shadow: 0 0 0 2px #FFFFFF !important; }
        .shop-list-card { grid-template-columns: 72px 1fr auto !important; border-radius: 22px !important; }
        .shop-list-icon {
            width: 72px !important;
            height: 72px !important;
            border-radius: 20px !important;
            background: transparent !important;
            font-size: 0 !important;
        }
        .shop-stepper button { background: #FFF0F5 !important; color: #3F3940 !important; }
        .shop-cart-footer {
            background: rgba(255,255,255,.94) !important;
            border: 1px solid rgba(252,232,239,.95) !important;
            box-shadow: var(--shop-shadow) !important;
        }
        .shop-main-btn, .shop-ghost-btn { box-shadow: none !important; }
        .shop-main-btn, .shop-main-btn.orange {
            background: #3F3940 !important;
            color: #FFFFFF !important;
        }
        .shop-ghost-btn {
            background: #FFF0F5 !important;
            color: #8A737E !important;
            border: 1px solid rgba(252,232,239,.95) !important;
        }
        .shop-profile-card { grid-template-columns: 58px 1fr !important; }
        .shop-profile-avatar { background: transparent !important; font-size: 0 !important; }
        .shop-wallet-card {
            border-radius: 28px;
            padding: 16px;
            margin: 0 0 14px;
            display: grid;
            grid-template-columns: 1fr auto;
            gap: 12px;
            align-items: center;
        }
        .shop-wallet-label { color: #A99AA2; font-size: 11px; font-weight: 800; }
        .shop-wallet-amount { margin-top: 6px; color: #111; font-size: 28px; font-weight: 900; letter-spacing: -.6px; }
        .shop-wallet-tip { margin-top: 5px; color: #B6AAB0; font-size: 11px; line-height: 1.45; }
        .shop-wallet-actions { display: flex; flex-direction: column; gap: 8px; min-width: 92px; }
        .shop-wallet-actions .shop-main-btn, .shop-wallet-actions .shop-ghost-btn { height: 38px; padding: 0 12px; font-size: 12px; }
        .shop-inventory-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
        .shop-inv-item { cursor: pointer; }
        .shop-inv-item:active { transform: scale(.98); }
        .shop-inv-actions { display: grid; gap: 8px; margin-top: 14px; }
        .shop-modal { background: rgba(63,57,64,.26) !important; backdrop-filter: blur(10px) !important; -webkit-backdrop-filter: blur(10px) !important; }
        .shop-modal-card {
            background: var(--app-page-gradient) !important;
            border-radius: 32px 32px 0 0 !important;
            border: 1px solid rgba(255,255,255,.7) !important;
            box-shadow: 0 -16px 40px rgba(63,57,64,.14) !important;
        }
        .shop-detail-hero {
            background:
                radial-gradient(circle at 35% 24%, rgba(255,255,255,.78), transparent 35%),
                linear-gradient(135deg, #FFF8FA, #FCE8EF) !important;
        }
        .shop-detail-hero::after { background: rgba(255,255,255,.32) !important; }
        .shop-detail-footer {
            background: rgba(255,255,255,.9) !important;
            border-top: 1px solid rgba(252,232,239,.9) !important;
            grid-template-columns: 1fr auto auto auto !important;
        }
        .shop-detail-close { background: rgba(0,0,0,.68) !important; }
        .shop-contact-header { padding: 16px 16px 8px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
        .shop-contact-title { font-size: 18px; font-weight: 880; color: #3F3940; }
        .shop-contact-body { padding: 4px 16px 16px; overflow-y: auto; max-height: 56vh; display: grid; gap: 10px; }
        .shop-contact-item { width: 100%; border-radius: 20px; padding: 12px; display: grid; grid-template-columns: 44px 1fr; gap: 11px; align-items: center; text-align: left; cursor: pointer; }
        .shop-contact-avatar { width: 44px; height: 44px; border-radius: 16px; background-size: cover; background-position: center; background-color: #FFF0F5; border: 1px solid rgba(252,232,239,.95); }
        .shop-contact-name { font-size: 14px; font-weight: 850; color: #3F3940; }
        .shop-contact-sub { margin-top: 4px; font-size: 11px; color: #9B8D94; line-height: 1.35; }
        .shop-action-panel { border-radius: 24px; padding: 14px; }
        .shop-remove-link { margin-top:8px;text-align:right;color:#8A737E;font-size:11px;font-weight:800;cursor:pointer; }
        @media (max-width: 360px) {
            .shop-panel { padding-left: 14px !important; padding-right: 14px !important; }
            .shop-product-grid { gap: 10px !important; }
            .shop-product-mark { width: 54px; height: 54px; font-size: 19px; }
            .shop-mini-stats { grid-template-columns: 1fr 1fr !important; }
            .shop-wallet-card { grid-template-columns: 1fr; }
            .shop-wallet-actions { flex-direction: row; }
        }


        /* ============================================================
           [SHOP PATCH V4] 修复刷新空列表 / 非文字商品图 / 购物车底栏
           ============================================================ */
        .shop-product-grid {
            grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
            gap: 12px !important;
        }
        .shop-product-card { position: relative !important; }
        .shop-add-mini {
            position: absolute !important;
            top: 10px !important;
            right: 10px !important;
            z-index: 7 !important;
        }
        .shop-product-tag {
            left: 10px !important;
            top: 10px !important;
            right: 52px !important;
        }
        .shop-product-art {
            isolation: isolate;
            background:
                radial-gradient(circle at 20% 12%, rgba(255,255,255,.9) 0, transparent 33%),
                linear-gradient(135deg, var(--shop-art-a, #FFF0F5), var(--shop-art-b, #FCE8EF)) !important;
        }
        .shop-product-art::before {
            content: '' !important;
            position: absolute !important;
            inset: 20% 16% 14% !important;
            border-radius: 34px !important;
            background: rgba(255,255,255,.36) !important;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,.6) !important;
            transform: rotate(-7deg) !important;
            z-index: 0 !important;
        }
        .shop-art-tile {
            position: relative !important;
            z-index: 1 !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            overflow: hidden !important;
            color: transparent !important;
            font-size: 0 !important;
            line-height: 0 !important;
            text-indent: -9999px !important;
            background:
                radial-gradient(circle at 28% 22%, rgba(255,255,255,.95) 0, transparent 28%),
                linear-gradient(145deg, var(--shop-art-a, #FFF0F5), var(--shop-art-b, #FCE8EF)) !important;
            border: 1px solid rgba(255,255,255,.74) !important;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,.62), 0 12px 22px rgba(212,165,185,.16) !important;
        }
        .shop-product-mark.shop-art-tile { width: 70px !important; height: 70px !important; border-radius: 24px !important; }
        .shop-list-mark.shop-art-tile { width: 72px !important; height: 72px !important; border-radius: 20px !important; }
        .shop-detail-mark.shop-art-tile { width: 138px !important; height: 138px !important; border-radius: 38px !important; }
        .shop-inv-mark.shop-art-tile { width: 48px !important; height: 48px !important; margin: 0 auto !important; border-radius: 17px !important; }
        .shop-profile-mark.shop-art-tile, .shop-profile-mark { width: 58px !important; height: 58px !important; border-radius: 22px !important; }
        .shop-art-tile::before,
        .shop-art-tile::after,
        .shop-art-tile i,
        .shop-art-tile b {
            content: '' !important;
            position: absolute !important;
            display: block !important;
            text-indent: 0 !important;
        }
        .shop-art-tile::before {
            width: 54%; height: 42%; left: 23%; top: 31%;
            border-radius: 40% 40% 26% 26%;
            background: var(--shop-art-c, #D4A5B9);
            box-shadow: inset 0 -8px 14px rgba(63,57,64,.08);
        }
        .shop-art-tile::after {
            width: 30%; height: 30%; right: 15%; top: 17%;
            border-radius: 50%;
            background: rgba(255,255,255,.72);
            box-shadow: 0 0 0 8px rgba(255,255,255,.18);
        }
        .shop-art-tile i {
            width: 46%; height: 10%; left: 27%; top: 27%;
            border-radius: 999px;
            background: rgba(63,57,64,.18);
        }
        .shop-art-tile b {
            width: 20%; height: 20%; left: 19%; bottom: 17%;
            border-radius: 8px 12px 12px 8px;
            background: rgba(255,255,255,.7);
            transform: rotate(-12deg);
        }
        .shop-art-fashion::before { width: 48%; height: 56%; left: 26%; top: 23%; border-radius: 28px 28px 18px 18px; }
        .shop-art-fashion i { width: 26%; height: 18%; left: 37%; top: 17%; border-radius: 999px 999px 18px 18px; background: rgba(255,255,255,.72); }
        .shop-art-gift::before { width: 54%; height: 44%; left: 23%; top: 37%; border-radius: 16px; }
        .shop-art-gift i { width: 12%; height: 54%; left: 44%; top: 27%; background: rgba(255,255,255,.7); border-radius: 999px; }
        .shop-art-gift b { width: 58%; height: 10%; left: 21%; top: 45%; bottom: auto; transform: none; border-radius: 999px; }
        .shop-art-digital::before { width: 56%; height: 42%; left: 22%; top: 30%; border-radius: 15px; }
        .shop-art-digital i { width: 36%; height: 8%; left: 32%; top: 74%; background: rgba(63,57,64,.18); border-radius: 999px; }
        .shop-art-magic::before { width: 46%; height: 46%; left: 27%; top: 27%; border-radius: 50%; transform: rotate(12deg); }
        .shop-art-magic i { width: 14%; height: 14%; left: 25%; top: 22%; background: rgba(255,255,255,.86); border-radius: 50%; box-shadow: 26px 6px 0 rgba(255,255,255,.64), 16px 34px 0 rgba(255,255,255,.58); }
        .shop-list-icon, .shop-profile-avatar { background: transparent !important; }
        .shop-detail-hero { background: linear-gradient(135deg, var(--shop-art-a, #FFF8FA), var(--shop-art-b, #FCE8EF)) !important; }
        .shop-detail-hero::after { z-index: 0 !important; }
        #shop-view-cart.shop-panel.active {
            display: flex !important;
            flex-direction: column !important;
            overflow: hidden !important;
            padding-bottom: calc(92px + var(--safe-bottom, 0px)) !important;
        }
        #shop-view-cart .shop-section-head { flex: 0 0 auto !important; }
        #shop-view-cart .shop-list {
            flex: 1 1 auto !important;
            min-height: 0 !important;
            overflow-y: auto !important;
            display: grid !important;
            align-content: start !important;
            padding-bottom: 10px !important;
        }
        #shop-view-cart .shop-cart-footer {
            position: relative !important;
            bottom: auto !important;
            left: auto !important;
            right: auto !important;
            flex: 0 0 auto !important;
            margin-top: 10px !important;
            margin-bottom: 0 !important;
        }
        @media (max-width: 360px) {
            .shop-detail-footer { grid-template-columns: 1fr 1fr !important; }
            .shop-detail-footer .shop-price { grid-column: 1 / -1; }
        }

/* ===== 兔兔丸机 PWA / 激活锁 / 更新日志 ===== */
.tutuwan-app-body.activation-locked {
    overflow: hidden !important;
}
.tutuwan-app-body.activation-locked > *:not(#tutuwan-activation-gate) {
    filter: blur(10px);
    pointer-events: none !important;
    user-select: none !important;
}
.tutuwan-activation-gate {
    position: fixed;
    inset: 0;
    z-index: 2147483647;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background:
        radial-gradient(circle at 20% 10%, rgba(255,240,245,.95), transparent 32%),
        radial-gradient(circle at 80% 0%, rgba(252,232,239,.95), transparent 34%),
        rgba(255,252,253,.92);
    backdrop-filter: blur(22px);
    -webkit-backdrop-filter: blur(22px);
}
.tutuwan-activation-gate.is-hidden {
    display: none !important;
}
.tutuwan-activation-card {
    width: min(430px, 100%);
    border-radius: 30px;
    padding: 22px;
    color: #8A737E;
    background: linear-gradient(145deg, rgba(255,255,255,.94), rgba(255,240,245,.88));
    border: 1px solid rgba(252,232,239,.98);
    box-shadow: 0 24px 60px rgba(169,135,150,.22), inset 0 1px 0 rgba(255,255,255,.9);
}
.tutuwan-activation-brand {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-bottom: 20px;
}
.tutuwan-activation-icon {
    width: 62px;
    height: 62px;
    border-radius: 20px;
    box-shadow: 0 12px 26px rgba(169,135,150,.24);
}
.tutuwan-activation-title {
    color: #A98796;
    font-size: 20px;
    font-weight: 800;
    letter-spacing: .02em;
}
.tutuwan-activation-subtitle {
    margin-top: 5px;
    color: #9A828D;
    font-size: 12px;
    line-height: 1.45;
}
.tutuwan-device-box {
    margin: 14px 0 16px;
    padding: 14px;
    border-radius: 20px;
    background: rgba(255,255,255,.72);
    border: 1px solid rgba(252,232,239,.95);
}
.tutuwan-device-box label,
.tutuwan-activation-label {
    display: block;
    margin-bottom: 8px;
    color: #A98796;
    font-size: 12px;
    font-weight: 700;
}
.tutuwan-device-row {
    display: flex;
    align-items: center;
    gap: 8px;
}
.tutuwan-device-row code {
    flex: 1;
    min-width: 0;
    padding: 11px 12px;
    border-radius: 14px;
    color: #8A737E;
    background: #FFFCFD;
    border: 1px dashed #EFDDE4;
    font-size: 11px;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.tutuwan-device-row button,
.tutuwan-activation-button,
.tutuwan-changelog-button,
.tutuwan-generator-button,
.tutuwan-generator-mini-button {
    border: 0;
    outline: 0;
    cursor: pointer;
    border-radius: 999px;
    color: #fff;
    background: linear-gradient(135deg, #D4A5B9, #A98796);
    box-shadow: 0 10px 20px rgba(169,135,150,.18);
    font-weight: 800;
}
.tutuwan-device-row button {
    height: 38px;
    padding: 0 13px;
    font-size: 12px;
}
.tutuwan-activation-input {
    width: 100%;
    height: 48px;
    padding: 0 15px;
    border-radius: 18px;
    color: #8A737E;
    background: rgba(255,255,255,.82);
    border: 1px solid #FCE8EF;
    outline: none;
    font-size: 15px;
    letter-spacing: .04em;
}
.tutuwan-activation-input:focus {
    border-color: #D4A5B9;
    box-shadow: 0 0 0 4px rgba(212,165,185,.16);
}
.tutuwan-activation-button {
    width: 100%;
    height: 50px;
    margin-top: 14px;
    font-size: 15px;
}
.tutuwan-activation-button:disabled {
    opacity: .55;
    cursor: not-allowed;
}
.tutuwan-activation-message {
    min-height: 20px;
    margin-top: 12px;
    text-align: center;
    color: #A98796;
    font-size: 13px;
    line-height: 1.45;
}
.tutuwan-activation-message.is-error {
    color: #B56B7C;
}
.tutuwan-activation-message.is-ok {
    color: #7C9A82;
}
.tutuwan-activation-hint {
    margin-top: 14px;
    padding: 12px 14px;
    border-radius: 18px;
    color: #9A828D;
    background: rgba(255,252,253,.72);
    border: 1px solid rgba(252,232,239,.75);
    font-size: 12px;
    line-height: 1.6;
}
.tutuwan-changelog-mask {
    position: fixed;
    inset: 0;
    z-index: 2147483646;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 22px;
    background: rgba(255,252,253,.62);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}
.tutuwan-changelog-card {
    width: min(520px, 100%);
    max-height: min(82vh, 760px);
    display: flex;
    flex-direction: column;
    padding: 20px;
    border-radius: 30px;
    background: linear-gradient(145deg, rgba(255,255,255,.97), rgba(255,240,245,.91));
    border: 1px solid rgba(252,232,239,.98);
    box-shadow: 0 22px 55px rgba(169,135,150,.18);
    color: #8A737E;
    overflow: hidden;
}
.tutuwan-changelog-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
}
.tutuwan-changelog-kicker {
    margin-bottom: 4px;
    color: #C79AAD;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .08em;
}
.tutuwan-changelog-title {
    font-size: 21px;
    font-weight: 950;
    color: #A98796;
    letter-spacing: .02em;
}
.tutuwan-changelog-version {
    flex: 0 0 auto;
    display: inline-flex;
    margin-top: 2px;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(255,240,245,.96);
    color: #A98796;
    font-size: 11px;
    font-weight: 900;
    white-space: nowrap;
}
.tutuwan-changelog-summary {
    margin: 13px 0 12px;
    padding: 12px 14px;
    border-radius: 18px;
    color: #927A85;
    background: rgba(255,252,253,.7);
    border: 1px solid rgba(252,232,239,.82);
    font-size: 12px;
    line-height: 1.65;
}
.tutuwan-changelog-panel {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 2px 4px 2px 0;
    margin-right: -4px;
}
.tutuwan-changelog-section {
    margin: 0 0 10px;
    padding: 12px 13px;
    border-radius: 20px;
    background: rgba(255,255,255,.66);
    border: 1px solid rgba(252,232,239,.72);
}
.tutuwan-changelog-section h4 {
    margin: 0 0 8px;
    color: #A98796;
    font-size: 13px;
    font-weight: 950;
}
.tutuwan-changelog-section ul,
.tutuwan-changelog-list {
    margin: 0 0 0 17px;
    padding: 0;
    line-height: 1.72;
    font-size: 12px;
}
.tutuwan-changelog-section li {
    margin: 3px 0;
}
.tutuwan-changelog-button {
    flex: 0 0 auto;
    width: 100%;
    height: 46px;
    margin-top: 14px;
    font-size: 14px;
    border: 0 !important;
    outline: 0 !important;
}
@media (max-width: 430px) {
    .tutuwan-changelog-card { padding: 17px; max-height: 84vh; }
    .tutuwan-changelog-head { flex-direction: column; gap: 8px; }
    .tutuwan-changelog-version { align-self: flex-start; }
}

/* ===================================
   查岗 APP：虚拟手机页面
   =================================== */
.peep-check-overlay,
.peep-phone-page {
    position: fixed;
    inset: 0;
    z-index: 10090;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(70, 52, 61, 0.22);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}
.peep-picker-card {
    width: min(92vw, 380px);
    max-height: 82vh;
    overflow: hidden;
    border-radius: 34px;
    padding: 18px;
    background: rgba(255,255,255,0.96);
    box-shadow: 0 24px 60px rgba(88, 58, 72, 0.18), inset 0 0 0 1px rgba(255,255,255,0.7);
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.peep-picker-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 6px 4px 2px;
}
.peep-picker-title {
    color: #6c5360;
    font-size: 18px;
    font-weight: 900;
    letter-spacing: -0.3px;
}
.peep-picker-sub {
    margin-top: 5px;
    color: #a58d98;
    font-size: 12px;
    line-height: 1.35;
}
.peep-icon-btn,
.peep-nav-btn {
    border: 0;
    outline: 0;
    color: #8f7482;
    background: rgba(255, 240, 245, 0.95);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}
.peep-icon-btn {
    width: 38px;
    height: 38px;
    border-radius: 50%;
}
.peep-icon-btn svg,
.peep-nav-btn svg {
    width: 18px;
    height: 18px;
    stroke: currentColor;
    stroke-width: 2.3;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.peep-target-list {
    overflow-y: auto;
    padding: 2px 2px 6px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.peep-target-card {
    width: 100%;
    border: 0;
    background: rgba(255, 248, 251, 0.88);
    border-radius: 22px;
    padding: 12px;
    display: grid;
    grid-template-columns: 48px 1fr 18px;
    gap: 12px;
    align-items: center;
    color: #6c5360;
    text-align: left;
    cursor: pointer;
    box-shadow: inset 0 0 0 1px rgba(240, 220, 229, 0.72);
}
.peep-target-card:active { transform: scale(0.985); }
.peep-target-card img {
    width: 48px;
    height: 48px;
    border-radius: 17px;
    object-fit: cover;
    background: #fff;
}
.peep-target-card b {
    display: block;
    font-size: 14px;
    font-weight: 850;
    color: #5c4851;
    margin-bottom: 5px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-target-card small {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 11px;
    line-height: 1.35;
    color: #a58d98;
}
.peep-target-card i {
    width: 8px;
    height: 8px;
    border-top: 2px solid #c7a9b6;
    border-right: 2px solid #c7a9b6;
    transform: rotate(45deg);
}
.peep-phone-page { z-index: 10091; }
.peep-phone-stage {
    width: min(96vw, 428px);
    height: min(94vh, 850px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 12px;
}
.peep-phone-shell {
    width: min(365px, 100%);
    height: min(760px, 100%);
    border-radius: 46px;
    padding: 10px;
    background: #2a2529;
    box-shadow: 0 34px 80px rgba(45, 31, 39, 0.36), inset 0 0 0 2px rgba(255,255,255,0.08);
}
.peep-phone-screen {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
    border-radius: 38px;
    background: linear-gradient(180deg, #fff9fb 0%, #fff0f5 48%, #f9edf2 100%);
    display: flex;
    flex-direction: column;
    color: #5b4650;
}
.peep-phone-notch {
    position: absolute;
    left: 50%;
    top: 9px;
    transform: translateX(-50%);
    width: 92px;
    height: 24px;
    border-radius: 0 0 17px 17px;
    background: #2a2529;
    z-index: 5;
}
.peep-statusbar {
    height: 36px;
    padding: 10px 22px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 11px;
    font-weight: 800;
    color: #6e5661;
    flex-shrink: 0;
}
.peep-phone-nav {
    height: 56px;
    padding: 6px 14px 8px;
    display: grid;
    grid-template-columns: 38px 1fr 38px;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.peep-nav-btn {
    width: 36px;
    height: 36px;
    border-radius: 15px;
}
.peep-nav-btn.loading svg { animation: peepSpin 0.8s linear infinite; }
@keyframes peepSpin { to { transform: rotate(360deg); } }
.peep-nav-title-wrap { min-width: 0; text-align: center; }
.peep-phone-title {
    font-size: 15px;
    font-weight: 900;
    color: #5b4650;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-phone-subtitle {
    margin-top: 2px;
    font-size: 10px;
    color: #a58d98;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-owner-strip {
    margin: 0 14px 10px;
    padding: 10px;
    border-radius: 22px;
    background: rgba(255,255,255,0.7);
    display: grid;
    grid-template-columns: 42px 1fr;
    gap: 10px;
    align-items: center;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.6);
    flex-shrink: 0;
}
.peep-owner-strip img {
    width: 42px;
    height: 42px;
    border-radius: 15px;
    object-fit: cover;
    background: #fff;
}
.peep-owner-strip b,
.peep-owner-strip small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-owner-strip b { font-size: 13px; font-weight: 850; color: #5b4650; }
.peep-owner-strip small { margin-top: 3px; font-size: 10px; color: #9d8490; }
.peep-phone-content {
    flex: 1;
    overflow-y: auto;
    padding: 0 14px 94px;
    overscroll-behavior: contain;
}
.peep-phone-content::-webkit-scrollbar,
.peep-target-list::-webkit-scrollbar { width: 0; height: 0; }
.peep-phone-dock {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: 12px;
    min-height: 72px;
    border-radius: 28px;
    padding: 9px 8px 8px;
    background: rgba(255,255,255,0.74);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 4px;
    box-shadow: 0 18px 40px rgba(96, 68, 82, 0.12), inset 0 0 0 1px rgba(255,255,255,0.75);
}
.peep-dock-btn {
    border: 0;
    background: transparent;
    color: #8f7482;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-width: 0;
    cursor: pointer;
}
.peep-dock-btn span {
    width: 34px;
    height: 34px;
    border-radius: 13px;
    background: rgba(255, 240, 245, 0.92);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform .18s ease, background .18s ease;
}
.peep-dock-btn svg {
    width: 17px;
    height: 17px;
    stroke: currentColor;
    stroke-width: 1.9;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.peep-dock-btn b {
    font-size: 9px;
    line-height: 1;
    font-weight: 800;
    color: #8d7480;
    white-space: nowrap;
}
.peep-dock-btn.active span {
    background: #fff;
    transform: translateY(-3px);
    box-shadow: 0 8px 18px rgba(159, 122, 139, 0.16);
}
.peep-dock-btn.active b { color: #6d5360; }
.peep-section-title {
    margin: 14px 2px 9px;
    font-size: 12px;
    font-weight: 900;
    color: #6b5260;
    letter-spacing: 0.2px;
}
.peep-empty-card,
.peep-loading-card,
.peep-wechat-card,
.peep-note-card,
.peep-product-card,
.peep-video-card,
.peep-browser-list > div,
.peep-tab-grid article,
.peep-cart-list > div,
.peep-list-lines > div {
    background: rgba(255,255,255,0.72);
    border-radius: 22px;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.74);
}
.peep-empty-card {
    padding: 18px;
    text-align: center;
    color: #a58d98;
    font-size: 12px;
    line-height: 1.6;
}
.peep-loading-card {
    margin-top: 70px;
    padding: 28px 20px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}
.peep-loading-card span {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 3px solid rgba(166, 134, 149, .22);
    border-top-color: #9d7889;
    animation: peepSpin .8s linear infinite;
}
.peep-loading-card b { font-size: 13px; color: #5b4650; }
.peep-loading-card small { font-size: 11px; color: #a58d98; }
.peep-wechat-card { padding: 12px; margin-bottom: 10px; }
.peep-wechat-top {
    display: grid;
    grid-template-columns: 38px 1fr auto;
    gap: 10px;
    align-items: center;
}
.peep-avatar-letter {
    width: 38px;
    height: 38px;
    border-radius: 14px;
    background: #fff0f5;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #8f7482;
    font-size: 16px;
    font-weight: 900;
}
.peep-wechat-top b,
.peep-wechat-top small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-wechat-top b { font-size: 13px; font-weight: 850; }
.peep-wechat-top small { margin-top: 2px; font-size: 10px; color: #a58d98; }
.peep-wechat-top em {
    min-width: 19px;
    height: 19px;
    padding: 0 6px;
    border-radius: 999px;
    background: #eeb0c4;
    color: #fff;
    font-style: normal;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: 900;
}
.peep-preview {
    margin: 10px 0 0 48px;
    color: #806672;
    font-size: 12px;
    line-height: 1.45;
}
.peep-message-mini {
    margin-top: 10px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.peep-message-mini span {
    max-width: 86%;
    align-self: flex-start;
    padding: 8px 10px;
    border-radius: 15px 15px 15px 5px;
    background: #fff;
    color: #674f5b;
    font-size: 11px;
    line-height: 1.45;
}
.peep-message-mini span.mine {
    align-self: flex-end;
    border-radius: 15px 15px 5px 15px;
    background: #fff0f5;
}
.peep-message-mini i {
    display: block;
    margin-bottom: 3px;
    color: #ae8c9b;
    font-style: normal;
    font-size: 9px;
    font-weight: 850;
}
.peep-notes-grid,
.peep-product-grid,
.peep-tab-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.peep-note-card { padding: 13px; min-height: 126px; }
.peep-note-card.pinned { background: rgba(255,255,255,0.9); }
.peep-note-card div { display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; }
.peep-note-card b,
.peep-note-card small,
.peep-note-card p { display: block; }
.peep-note-card b { font-size: 13px; color: #5b4650; line-height: 1.25; }
.peep-note-card small { color: #ad93a0; font-size: 9px; white-space: nowrap; }
.peep-note-card p { margin-top: 9px; color: #7f6672; font-size: 11px; line-height: 1.55; white-space: pre-wrap; }
.peep-wallet-hero {
    padding: 18px;
    border-radius: 26px;
    color: #fff;
    background: linear-gradient(135deg, #8f7482, #c69aaa);
    box-shadow: 0 16px 34px rgba(143, 116, 130, .24);
}
.peep-wallet-hero small,
.peep-wallet-hero b,
.peep-wallet-hero span { display: block; }
.peep-wallet-hero small { opacity: .85; font-size: 11px; }
.peep-wallet-hero b { margin-top: 8px; font-size: 30px; letter-spacing: -.7px; }
.peep-wallet-hero span { margin-top: 8px; font-size: 11px; opacity: .88; }
.peep-card-stack { display: flex; flex-direction: column; gap: 10px; }
.peep-bank-card {
    min-height: 108px;
    padding: 16px;
    border-radius: 24px;
    color: #fff;
    background: linear-gradient(135deg, #5f4e58, #9c7b8a);
    box-shadow: 0 12px 26px rgba(84, 64, 74, .16);
}
.peep-bank-card span,
.peep-bank-card b,
.peep-bank-card small,
.peep-bank-card p { display: block; }
.peep-bank-card span { font-size: 12px; opacity: .85; }
.peep-bank-card b { margin-top: 9px; font-size: 22px; }
.peep-bank-card small { margin-top: 10px; font-size: 10px; opacity: .8; }
.peep-bank-card p { margin-top: 7px; font-size: 10px; line-height: 1.45; opacity: .82; }
.peep-list-lines,
.peep-cart-list,
.peep-browser-list { display: flex; flex-direction: column; gap: 8px; }
.peep-list-lines > div,
.peep-cart-list > div {
    padding: 11px 12px;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 10px;
    align-items: center;
}
.peep-list-lines b,
.peep-cart-list b { display: block; font-size: 12px; color: #5b4650; }
.peep-list-lines small,
.peep-cart-list small { display: block; margin-top: 3px; color: #9f8491; font-size: 10px; line-height: 1.35; }
.peep-list-lines strong,
.peep-cart-list strong { font-size: 12px; color: #7a5d69; white-space: nowrap; }
.peep-list-lines strong.income { color: #6f9b78; }
.peep-list-lines strong.expense { color: #b47786; }
.peep-product-card { min-height: 176px; padding: 10px; }
.peep-product-cover {
    height: 78px;
    border-radius: 17px;
    background:
        radial-gradient(circle at 30% 35%, rgba(255,255,255,.88) 0 18%, transparent 19%),
        linear-gradient(135deg, #f8dfe8, #fff8fb);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.68);
}
.peep-product-card b,
.peep-product-card small,
.peep-product-card p { display: block; }
.peep-product-card b { margin-top: 9px; font-size: 12px; color: #5b4650; line-height: 1.3; }
.peep-product-card small { margin-top: 4px; color: #aa7d90; font-weight: 850; font-size: 11px; }
.peep-product-card p { margin-top: 6px; color: #8d7380; font-size: 10px; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.peep-douyin-searches {
    display: flex;
    gap: 7px;
    overflow-x: auto;
    padding: 2px 0 10px;
}
.peep-douyin-searches span {
    flex: 0 0 auto;
    padding: 7px 10px;
    border-radius: 999px;
    background: rgba(255,255,255,.76);
    color: #8d7380;
    font-size: 10px;
    font-weight: 750;
}
.peep-video-feed { display: flex; flex-direction: column; gap: 12px; }
.peep-video-card { padding: 10px; }
.peep-video-screen {
    min-height: 188px;
    border-radius: 22px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    color: #fff;
    background: linear-gradient(160deg, #3e333a, #8b7180 52%, #dfb6c6);
    overflow: hidden;
}
.peep-video-screen b { font-size: 16px; line-height: 1.25; text-shadow: 0 2px 10px rgba(0,0,0,.22); }
.peep-video-screen p { margin-top: 7px; font-size: 12px; line-height: 1.45; opacity: .9; }
.peep-video-meta {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    margin-top: 9px;
    color: #6a535f;
    font-size: 11px;
}
.peep-video-meta strong { white-space: nowrap; color: #9d7889; }
.peep-video-card small { display: block; margin-top: 7px; color: #957986; font-size: 10px; line-height: 1.45; }
.peep-browser-bar {
    height: 42px;
    border-radius: 18px;
    background: rgba(255,255,255,.86);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 14px;
    color: #806672;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.66);
}
.peep-browser-bar span { font-size: 12px; font-weight: 850; }
.peep-browser-bar i { font-style: normal; font-size: 10px; color: #a58d98; }
.peep-browser-list > div { padding: 12px; }
.peep-browser-list b,
.peep-browser-list span,
.peep-browser-list p { display: block; }
.peep-browser-list b { color: #5b4650; font-size: 13px; }
.peep-browser-list span { margin-top: 4px; color: #9a808d; font-size: 10px; }
.peep-browser-list p { margin-top: 7px; color: #7f6672; font-size: 11px; line-height: 1.45; }
.peep-tab-grid article { padding: 12px; min-height: 108px; }
.peep-tab-grid b,
.peep-tab-grid small,
.peep-tab-grid p { display: block; }
.peep-tab-grid b { font-size: 12px; color: #5b4650; line-height: 1.35; }
.peep-tab-grid small { margin-top: 6px; color: #b08d9e; font-size: 9px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.peep-tab-grid p { margin-top: 7px; color: #806672; font-size: 10px; line-height: 1.45; }
.peep-dock-btn.messages span { background: linear-gradient(180deg, #5eef7f, #28c849); color: #fff; box-shadow: 0 8px 18px rgba(40, 200, 73, .2); }
.peep-dock-btn.messages.active span { background: linear-gradient(180deg, #64f48a, #22c44a); color: #fff; }
.peep-dock-btn.messages svg { stroke: currentColor; }
.peep-ios-messages { padding-bottom: 8px; }
.peep-ios-title-row { display: flex; align-items: center; justify-content: space-between; margin: 2px 2px 10px; }
.peep-ios-title-row > b { font-size: 28px; line-height: 1; letter-spacing: -1px; font-weight: 900; color: #17171a; }
.peep-ios-title-row > button { width: 32px; height: 32px; border: 0; border-radius: 50%; background: rgba(0,122,255,.1); color: #007aff; display: flex; align-items: center; justify-content: center; gap: 2px; }
.peep-ios-title-row > button i { width: 4px; height: 4px; border-radius: 50%; background: currentColor; display: block; }
.peep-ios-search { height: 34px; border-radius: 12px; background: rgba(118,118,128,.14); display: flex; align-items: center; gap: 7px; padding: 0 12px; color: rgba(60,60,67,.58); margin-bottom: 12px; }
.peep-ios-search span { width: 12px; height: 12px; border: 2px solid currentColor; border-radius: 50%; position: relative; display: block; }
.peep-ios-search span::after { content: ''; position: absolute; width: 5px; height: 2px; background: currentColor; border-radius: 999px; right: -5px; bottom: -3px; transform: rotate(45deg); }
.peep-ios-search b { font-size: 13px; font-weight: 700; }
.peep-ios-memory-card,
.peep-ios-chat-preview { border-radius: 22px; background: rgba(255,255,255,.86); box-shadow: inset 0 0 0 1px rgba(255,255,255,.78); padding: 13px; margin-bottom: 12px; }
.peep-ios-memory-card > div:first-child b,
.peep-ios-memory-card > div:first-child small { display: block; }
.peep-ios-memory-card > div:first-child b { font-size: 14px; color: #1c1c1e; font-weight: 900; }
.peep-ios-memory-card > div:first-child small { margin-top: 3px; color: #8e8e93; font-size: 10px; line-height: 1.35; }
.peep-ios-memory-list { display: flex; flex-direction: column; gap: 7px; margin-top: 10px; }
.peep-ios-memory-list span { padding: 8px 10px; border-radius: 14px; background: rgba(0,122,255,.08); color: #30445c; font-size: 11px; line-height: 1.45; }
.peep-ios-memory-empty { margin-top: 10px; padding: 10px; border-radius: 14px; background: rgba(118,118,128,.1); color: #8e8e93; font-size: 11px; line-height: 1.5; }
.peep-ios-chat-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 0 2px 10px; border-bottom: 1px solid rgba(60,60,67,.12); }
.peep-ios-chat-head span { font-size: 14px; font-weight: 900; color: #1c1c1e; }
.peep-ios-chat-head small { color: #8e8e93; font-size: 10px; white-space: nowrap; }
.peep-ios-bubbles { display: flex; flex-direction: column; gap: 7px; padding-top: 10px; }
.peep-ios-bubble { max-width: 82%; display: flex; flex-direction: column; gap: 3px; }
.peep-ios-bubble p { margin: 0; padding: 8px 11px; border-radius: 18px; font-size: 12px; line-height: 1.42; word-break: break-word; }
.peep-ios-bubble small { font-size: 9px; color: #8e8e93; padding: 0 4px; }
.peep-ios-bubble.theirs { align-self: flex-start; }
.peep-ios-bubble.theirs p { color: #111; background: #e9e9eb; border-bottom-left-radius: 5px; }
.peep-ios-bubble.mine { align-self: flex-end; align-items: flex-end; }
.peep-ios-bubble.mine p { color: #fff; background: #007aff; border-bottom-right-radius: 5px; }
.peep-ios-thread-list { overflow: hidden; border-radius: 22px; background: rgba(255,255,255,.84); box-shadow: inset 0 0 0 1px rgba(255,255,255,.72); }
.peep-ios-thread { min-height: 66px; display: grid; grid-template-columns: 43px 1fr auto; gap: 10px; align-items: center; padding: 10px 11px; border-bottom: 1px solid rgba(60,60,67,.1); }
.peep-ios-thread:last-child { border-bottom: 0; }
.peep-ios-thread.pinned { background: rgba(0,122,255,.035); }
.peep-ios-avatar { width: 43px; height: 43px; border-radius: 50%; background: linear-gradient(180deg, #c7c7cc, #8e8e93); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 17px; font-weight: 850; }
.peep-ios-thread-main { min-width: 0; }
.peep-ios-thread-main > div { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.peep-ios-thread-main b { color: #1c1c1e; font-size: 13px; font-weight: 850; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.peep-ios-thread-main time { color: #8e8e93; font-size: 10px; white-space: nowrap; }
.peep-ios-thread-main p { margin: 4px 0 0; color: #6b6b70; font-size: 11px; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.peep-ios-thread-main small { display: block; margin-top: 2px; color: #a0a0a5; font-size: 9px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.peep-ios-thread em { min-width: 19px; height: 19px; padding: 0 6px; border-radius: 999px; background: #007aff; color: #fff; font-style: normal; font-size: 10px; font-weight: 900; display: flex; align-items: center; justify-content: center; }
@media (max-width: 380px) {
    .peep-phone-stage { padding: 6px; }
    .peep-phone-shell { border-radius: 40px; padding: 8px; }
    .peep-phone-screen { border-radius: 33px; }
    .peep-phone-dock { grid-template-columns: repeat(6, 1fr); gap: 2px; left: 9px; right: 9px; }
    .peep-dock-btn span { width: 30px; height: 30px; border-radius: 12px; }
    .peep-dock-btn b { font-size: 8px; }
    .peep-notes-grid,
    .peep-product-grid,
    .peep-tab-grid { grid-template-columns: 1fr; }
}
#global-dialog { z-index: 10130; }

        /* ====== 桌面 Dock 信息 APP：短信与聊天互通 UI ====== */
        .desktop-message-icon {
            background: linear-gradient(180deg, #5AF06E 0%, #24C845 100%) !important;
            border-radius: 18px !important;
        }
        .desktop-message-icon svg { width: 58% !important; height: 58% !important; stroke: none !important; fill: #fff !important; }
        .desktop-messages-page {
            z-index: 10026;
            background: #F2F2F7 !important;
            color: #111;
            overflow: hidden;
            font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "PingFang SC", sans-serif;
        }
        .dm-ios-status {
            height: 34px;
            flex-shrink: 0;
            display: flex;
            justify-content: space-between;
            align-items: flex-end;
            padding: 0 22px 6px;
            color: #111;
            font-size: 12px;
            font-weight: 700;
            letter-spacing: .1px;
            background: rgba(242,242,247,.92);
        }
        .dm-view { display: none; flex: 1; min-height: 0; flex-direction: column; }
        .dm-view.active { display: flex; }
        .dm-nav {
            height: 44px;
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 12px;
            background: rgba(242,242,247,.86);
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            border-bottom: 0.5px solid rgba(60,60,67,.16);
        }
        .dm-list-nav { border-bottom: 0; }
        .dm-nav-btn {
            min-width: 34px;
            height: 34px;
            border: none;
            background: transparent;
            color: #007AFF;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 17px;
            cursor: pointer;
            padding: 0 6px;
        }
        .dm-nav-btn:active { background: rgba(0,122,255,.10); }
        .dm-nav-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
        .dm-back-text { gap: 1px; font-size: 16px; font-weight: 500; }
        .dm-detail-title {
            position: absolute;
            left: 72px;
            right: 72px;
            text-align: center;
            font-size: 16px;
            font-weight: 700;
            color: #111;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            pointer-events: none;
        }
        .dm-nav-spacer { width: 42px; }
        .dm-scroll {
            flex: 1;
            min-height: 0;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
            overscroll-behavior: contain;
        }
        .dm-list-scroll { padding: 0 16px 28px; }
        .dm-large-title {
            margin: 2px 2px 10px;
            color: #000;
            font-size: 34px;
            line-height: 1.1;
            font-weight: 800;
            letter-spacing: -.6px;
        }
        .dm-search {
            height: 36px;
            border-radius: 12px;
            background: #E4E4EA;
            display: flex;
            align-items: center;
            padding: 0 12px;
            gap: 7px;
            color: #8E8E93;
            margin-bottom: 14px;
        }
        .dm-search svg { width: 17px; height: 17px; stroke: currentColor; fill: none; stroke-width: 2.1; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
        .dm-search input {
            width: 100%;
            height: 100%;
            border: none;
            outline: none;
            background: transparent;
            color: #111;
            font: inherit;
            font-size: 16px;
            font-weight: 500;
        }
        .dm-search input::placeholder { color: #8E8E93; }
        .dm-memory-card {
            background: rgba(255,255,255,.96);
            border-radius: 22px;
            padding: 14px;
            margin-bottom: 12px;
            box-shadow: 0 10px 26px rgba(0,0,0,.045);
            border: 0.5px solid rgba(60,60,67,.10);
        }
        .dm-memory-head {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 12px;
            margin-bottom: 10px;
        }
        .dm-memory-head b { display: block; color: #111; font-size: 17px; line-height: 1.2; }
        .dm-memory-head span { display: block; margin-top: 3px; color: #8E8E93; font-size: 12px; font-weight: 600; }
        .dm-memory-head small { color: #007AFF; font-size: 12px; font-weight: 700; white-space: nowrap; }
        .dm-memory-list { display: flex; flex-direction: column; gap: 8px; }
        .dm-memory-chip {
            width: 100%;
            border: none;
            background: #F2F2F7;
            border-radius: 16px;
            padding: 10px 12px;
            display: grid;
            grid-template-columns: auto 1fr;
            gap: 8px;
            align-items: baseline;
            text-align: left;
            cursor: pointer;
            color: #111;
        }
        .dm-memory-chip:active { background: #E9E9EF; }
        .dm-memory-chip b { color: #007AFF; font-size: 12px; white-space: nowrap; }
        .dm-memory-chip span { color: #3A3A3C; font-size: 13px; line-height: 1.35; font-weight: 600; }
        .dm-empty-memory, .dm-empty-list {
            padding: 26px 16px;
            border-radius: 20px;
            background: rgba(255,255,255,.68);
            color: #8E8E93;
            text-align: center;
            font-size: 13px;
            line-height: 1.55;
            font-weight: 600;
        }
        .dm-empty-list { margin: 18px 0; display: flex; flex-direction: column; gap: 6px; }
        .dm-empty-list b { color: #111; font-size: 17px; }
        .dm-thread-list {
            background: rgba(255,255,255,.98);
            border-radius: 22px;
            overflow: hidden;
            border: 0.5px solid rgba(60,60,67,.10);
        }
        .dm-thread-card {
            min-height: 76px;
            display: grid;
            grid-template-columns: 54px 1fr auto;
            align-items: center;
            gap: 10px;
            padding: 10px 12px;
            cursor: pointer;
            position: relative;
        }
        .dm-thread-card + .dm-thread-card::before {
            content: "";
            position: absolute;
            top: 0;
            left: 76px;
            right: 0;
            height: 0.5px;
            background: rgba(60,60,67,.16);
        }
        .dm-thread-card:active { background: #F2F2F7; }
        .dm-avatar, .dm-chat-avatar {
            position: relative;
            width: 48px;
            height: 48px;
            border-radius: 50%;
            overflow: hidden;
            background: linear-gradient(180deg, #D8D8DE, #B9BBC6);
            display: flex;
            align-items: center;
            justify-content: center;
            color: #fff;
            font-size: 18px;
            font-weight: 800;
        }
        .dm-avatar img, .dm-chat-avatar img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; z-index: 1; }
        .dm-avatar span, .dm-chat-avatar span { position: relative; z-index: 0; }
        .dm-thread-main { min-width: 0; }
        .dm-thread-top { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: baseline; }
        .dm-thread-top b { color: #111; font-size: 16px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .dm-thread-top time { color: #8E8E93; font-size: 12px; font-weight: 600; white-space: nowrap; }
        .dm-thread-main p { margin: 4px 0 2px; color: #6E6E73; font-size: 13px; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .dm-thread-main small { display: block; color: #A1A1A6; font-size: 11px; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .dm-unread {
            min-width: 21px;
            height: 21px;
            padding: 0 6px;
            border-radius: 999px;
            background: #007AFF;
            color: #fff;
            font-size: 11px;
            font-weight: 800;
            display: flex;
            align-items: center;
            justify-content: center;
            font-style: normal;
        }
        .dm-chat-scroll { padding: 14px 12px 92px; background: #fff; }
        .dm-chat-profile {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 5px;
            padding: 8px 0 16px;
            color: #111;
        }
        .dm-chat-avatar { width: 64px; height: 64px; font-size: 24px; }
        .dm-chat-profile b { font-size: 17px; }
        .dm-chat-profile small { color: #8E8E93; font-size: 12px; font-weight: 600; }
        .dm-chat-memory {
            margin: 0 4px 14px;
            border-radius: 18px;
            background: #F2F2F7;
            padding: 12px 14px;
            color: #3A3A3C;
            font-size: 12px;
            line-height: 1.45;
            font-weight: 600;
        }
        .dm-chat-memory:empty { display: none; }
        .dm-chat-memory-title { color: #8E8E93; font-size: 11px; margin-bottom: 7px; font-weight: 800; }
        .dm-chat-memory p { margin: 7px 0 0; }
        .dm-bubble-list { display: flex; flex-direction: column; gap: 8px; }
        .dm-bubble-row {
            display: flex;
            align-items: flex-end;
            gap: 7px;
            max-width: 86%;
        }
        .dm-bubble-row.mine { align-self: flex-end; flex-direction: row-reverse; }
        .dm-bubble-row.other { align-self: flex-start; }
        .dm-bubble-row > img {
            width: 28px;
            height: 28px;
            border-radius: 50%;
            object-fit: cover;
            flex-shrink: 0;
            background: #D8D8DE;
        }
        .dm-bubble {
            padding: 9px 12px;
            border-radius: 18px;
            font-size: 15px;
            line-height: 1.38;
            word-break: break-word;
            white-space: pre-wrap;
        }
        .dm-bubble-row.mine .dm-bubble { background: #007AFF; color: #fff; border-bottom-right-radius: 5px; }
        .dm-bubble-row.other .dm-bubble { background: #E9E9EB; color: #111; border-bottom-left-radius: 5px; }
        .dm-bubble-row small {
            display: block;
            margin-top: 3px;
            color: #A1A1A6;
            font-size: 10px;
            padding: 0 4px;
        }
        .dm-bubble-row.mine small { text-align: right; }
        .dm-compose {
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            height: 78px;
            padding: 10px 12px calc(12px + var(--safe-bottom));
            background: rgba(255,255,255,.92);
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            border-top: 0.5px solid rgba(60,60,67,.16);
            display: grid;
            grid-template-columns: 36px 1fr 38px;
            gap: 8px;
            align-items: center;
        }
        .dm-compose button {
            width: 34px;
            height: 34px;
            border-radius: 50%;
            border: none;
            outline: none;
            box-shadow: none;
            background: #F2F2F7;
            color: #8E8E93;
            display: flex;
            align-items: center;
            justify-content: center;
            -webkit-tap-highlight-color: transparent;
        }
        .dm-compose button svg { width: 17px; height: 17px; stroke: currentColor; fill: none; stroke-width: 2.3; stroke-linecap: round; stroke-linejoin: round; }
        .dm-compose-send {
            background: #007AFF !important;
            color: #fff !important;
        }
        .dm-sms-input {
            width: 100%;
            height: 38px;
            min-width: 0;
            border-radius: 19px;
            border: 1px solid #D1D1D6;
            outline: none;
            color: #1C1C1E;
            display: flex;
            align-items: center;
            padding: 0 13px;
            font-size: 15px;
            font-weight: 500;
            background: #fff;
            font-family: inherit;
        }
        .dm-sms-input::placeholder { color: #A1A1A6; }
        .dm-sms-input:focus { border-color: rgba(0,122,255,.42); }

/* ===== 外卖 APP：真实外卖风格 / 商家 / 菜品 / 订单 / 钱包 ===== */
#food-app-page,
#food-store-layer {
    position: fixed;
    inset: 0;
    z-index: 9050;
    display: none;
    flex-direction: column;
    background: linear-gradient(180deg, #fff8f1 0%, #fffaf7 42%, #ffffff 100%);
    color: #24160f;
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", sans-serif;
    --food-orange: #ff7a1a;
    --food-orange-2: #ffb25e;
    --food-ink: #24160f;
    --food-muted: #927767;
    --food-line: rgba(112, 70, 42, .12);
    --food-card: rgba(255,255,255,.88);
    --food-shadow: 0 16px 38px rgba(128, 76, 32, .12);
}
#food-store-layer { z-index: 9100; background: #fffaf6; }
.food-page-header,
.food-store-header {
    flex: 0 0 auto;
    padding: calc(12px + var(--safe-top)) 14px 10px;
    display: grid;
    grid-template-columns: 42px 1fr 42px 42px;
    gap: 8px;
    align-items: center;
    background: rgba(255,250,246,.88);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    border-bottom: 1px solid rgba(116, 78, 47, .08);
}
.food-store-header { grid-template-columns: 42px 1fr 42px; }
.food-icon-btn {
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,.72);
    color: var(--food-ink);
    box-shadow: inset 0 0 0 1px rgba(105, 64, 37, .08);
    cursor: pointer;
}
.food-icon-btn:active { transform: scale(.96); background: rgba(255,237,221,.95); }
.food-icon-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
.food-title-stack { min-width: 0; line-height: 1.1; }
.food-title { font-size: 20px; font-weight: 950; letter-spacing: -.45px; color: var(--food-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.food-subtitle { margin-top: 4px; font-size: 11px; font-weight: 780; color: var(--food-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.food-search-wrap { flex: 0 0 auto; padding: 12px 16px 8px; }
.food-search-box {
    height: 42px;
    display: grid;
    grid-template-columns: 24px 1fr;
    gap: 8px;
    align-items: center;
    padding: 0 13px;
    border-radius: 17px;
    background: rgba(244, 236, 230, .92);
    box-shadow: inset 0 0 0 1px rgba(104, 72, 51, .07);
}
.food-search-box svg { width: 20px; height: 20px; stroke: #9b8c84; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.food-search-box input { width: 100%; height: 100%; border: 0; outline: 0; background: transparent; font-size: 14px; font-weight: 720; color: var(--food-ink); }
.food-search-box input::placeholder { color: rgba(146,119,103,.72); }
.food-content,
.food-store-scroll { flex: 1 1 auto; overflow-y: auto; padding: 0 16px calc(86px + var(--safe-bottom)); touch-action: pan-y; }
.food-panel { display: none; }
.food-panel.active { display: block; }
.food-hero-card {
    margin-top: 4px;
    border-radius: 28px;
    padding: 18px;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 12px;
    align-items: center;
    color: #fff;
    background: radial-gradient(circle at 10% 10%, rgba(255,255,255,.32), transparent 34%), linear-gradient(135deg, #ff8b25, #ff5d2a 55%, #ff964a);
    box-shadow: 0 18px 42px rgba(255, 111, 29, .24);
    overflow: hidden;
    position: relative;
}
.food-hero-card::after { content: ''; position: absolute; width: 150px; height: 150px; border-radius: 50%; right: -48px; bottom: -70px; background: rgba(255,255,255,.16); }
.food-hero-kicker { font-size: 10px; font-weight: 920; letter-spacing: 1px; opacity: .86; }
.food-hero-title { margin-top: 6px; font-size: 28px; font-weight: 980; letter-spacing: -.8px; }
.food-hero-desc { margin-top: 8px; font-size: 12px; font-weight: 740; opacity: .9; max-width: 210px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.food-hero-wallet { position: relative; z-index: 1; min-width: 88px; padding: 12px 10px; border-radius: 20px; background: rgba(255,255,255,.18); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); text-align: center; }
.food-hero-wallet span { display: block; font-size: 10px; font-weight: 800; opacity: .86; }
.food-hero-wallet b { display: block; margin-top: 5px; font-size: 15px; }
.food-filter-strip { display: flex; gap: 9px; overflow-x: auto; padding: 14px 0 10px; touch-action: pan-x; }
.food-filter-chip {
    flex: 0 0 auto;
    border: 0;
    border-radius: 999px;
    padding: 9px 13px;
    background: #fff;
    color: #8a6b59;
    font-size: 12px;
    font-weight: 880;
    box-shadow: inset 0 0 0 1px rgba(103,68,45,.08), 0 6px 18px rgba(120,70,32,.05);
    cursor: pointer;
}
.food-filter-chip.active { color: #fff; background: var(--food-orange); box-shadow: 0 10px 22px rgba(255,122,26,.25); }
.food-section-head { margin: 10px 0 10px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.food-section-head h2 { margin: 0; color: var(--food-ink); font-size: 18px; font-weight: 950; }
.food-section-head p { margin: 4px 0 0; color: var(--food-muted); font-size: 11px; font-weight: 720; }
.food-lite-btn,
.food-ghost-btn,
.food-main-btn {
    border: 0;
    border-radius: 15px;
    min-height: 38px;
    padding: 0 13px;
    font-size: 12px;
    font-weight: 900;
    cursor: pointer;
    white-space: nowrap;
}
.food-lite-btn { background: #fff; color: var(--food-orange); box-shadow: inset 0 0 0 1px rgba(255,122,26,.16); }
.food-ghost-btn { background: rgba(255,255,255,.88); color: #6d5140; box-shadow: inset 0 0 0 1px rgba(99,62,38,.1); }
.food-main-btn { background: linear-gradient(135deg, var(--food-orange), #ff5d22); color: #fff; box-shadow: 0 10px 24px rgba(255,106,31,.25); }
.food-main-btn.small { min-height: 34px; border-radius: 13px; padding: 0 12px; }
.food-merchant-list,
.food-order-list { display: grid; gap: 12px; }
.food-merchant-card {
    border-radius: 24px;
    background: var(--food-card);
    box-shadow: var(--food-shadow), inset 0 0 0 1px rgba(98,63,40,.07);
    padding: 12px;
    display: grid;
    grid-template-columns: 76px 1fr;
    gap: 12px;
    cursor: pointer;
}
.food-merchant-logo,
.food-dish-art,
.food-profile-icon,
.food-contact-avatar {
    border-radius: 22px;
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--food-a, #fff1dc), var(--food-b, #ffd39d));
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.7);
}
.food-merchant-logo { width: 76px; height: 76px; }
.food-merchant-logo::before,
.food-dish-art::before,
.food-profile-icon::before {
    content: '';
    position: absolute;
    inset: 17%;
    border-radius: 18px 18px 24px 24px;
    background: rgba(255,255,255,.58);
    transform: rotate(-6deg);
}
.food-merchant-logo::after,
.food-dish-art::after,
.food-profile-icon::after {
    content: '';
    position: absolute;
    width: 42%;
    height: 10%;
    left: 29%;
    top: 26%;
    border-radius: 99px;
    background: rgba(95, 55, 28, .22);
}
.food-merchant-main { min-width: 0; }
.food-merchant-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.food-merchant-name { font-size: 16px; font-weight: 960; color: var(--food-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.food-merchant-rate { flex: 0 0 auto; color: #ff7a1a; font-size: 12px; font-weight: 950; }
.food-merchant-meta { margin-top: 5px; color: #7f6658; font-size: 11px; font-weight: 760; display: flex; gap: 7px; flex-wrap: wrap; }
.food-merchant-notice { margin-top: 8px; color: #9b7b68; font-size: 11px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.food-tag-row { margin-top: 9px; display: flex; gap: 6px; flex-wrap: wrap; }
.food-tag { padding: 4px 7px; border-radius: 9px; background: rgba(255,122,26,.1); color: #d76113; font-size: 10px; font-weight: 900; }
.food-empty { padding: 28px 16px; border-radius: 22px; background: rgba(255,255,255,.72); color: #9b806d; text-align: center; font-size: 13px; line-height: 1.65; box-shadow: inset 0 0 0 1px rgba(103, 67, 41, .08); }
.food-store-scroll { padding-top: 12px; padding-bottom: calc(110px + var(--safe-bottom)); }
.food-store-hero {
    border-radius: 28px;
    padding: 18px;
    min-height: 142px;
    color: #fff;
    background: radial-gradient(circle at 18% 12%, rgba(255,255,255,.3), transparent 36%), linear-gradient(135deg, var(--food-a,#ff8b25), var(--food-b,#ff5d2a));
    box-shadow: 0 18px 40px rgba(255, 109, 28, .22);
}
.food-store-hero h1 { margin: 0; font-size: 26px; font-weight: 980; letter-spacing: -.6px; }
.food-store-hero p { margin: 9px 0 0; font-size: 12px; line-height: 1.45; font-weight: 760; opacity: .9; }
.food-store-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
.food-store-meta span { padding: 6px 8px; border-radius: 10px; background: rgba(255,255,255,.2); font-size: 11px; font-weight: 850; }
.food-menu-section-title { margin: 18px 0 10px; font-size: 17px; font-weight: 960; color: var(--food-ink); }
.food-dish-list { display: grid; gap: 10px; }
.food-dish-card {
    display: grid;
    grid-template-columns: 72px 1fr auto;
    gap: 12px;
    align-items: center;
    padding: 10px;
    border-radius: 22px;
    background: rgba(255,255,255,.88);
    box-shadow: inset 0 0 0 1px rgba(101,64,40,.07), 0 10px 26px rgba(109,66,35,.08);
}
.food-dish-art { width: 72px; height: 72px; border-radius: 20px; }
.food-dish-name { font-size: 14px; font-weight: 940; color: var(--food-ink); }
.food-dish-desc { margin-top: 4px; color: #8b7160; font-size: 11px; line-height: 1.38; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.food-dish-sub { margin-top: 6px; color: #ad8c75; font-size: 10px; font-weight: 800; }
.food-dish-price { margin-top: 5px; color: #ff5d22; font-size: 17px; font-weight: 980; }
.food-stepper { display: flex; align-items: center; justify-content: flex-end; gap: 7px; }
.food-stepper button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: var(--food-orange); color: #fff; font-size: 18px; font-weight: 900; cursor: pointer; }
.food-stepper button.minus { background: #fff; color: var(--food-orange); box-shadow: inset 0 0 0 1px rgba(255,122,26,.25); }
.food-stepper b { min-width: 16px; text-align: center; font-size: 13px; color: var(--food-ink); }
.food-cart-bar {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: calc(12px + var(--safe-bottom));
    z-index: 9130;
    min-height: 64px;
    display: none;
    grid-template-columns: 1fr auto auto auto auto;
    align-items: center;
    gap: 8px;
    padding: 10px;
    border-radius: 24px;
    background: rgba(35, 25, 18, .94);
    color: #fff;
    box-shadow: 0 18px 42px rgba(0,0,0,.22);
}
.food-cart-bar.active { display: grid; }
.food-cart-bar span { display: block; font-size: 11px; color: rgba(255,255,255,.68); font-weight: 800; }
.food-cart-bar b { display: block; margin-top: 3px; font-size: 20px; color: #fff; }
.food-cart-bar .food-ghost-btn { background: rgba(255,255,255,.12); color: #fff; box-shadow: none; min-height: 38px; padding: 0 10px; }
.food-cart-bar .food-main-btn { min-height: 40px; }
.food-order-card {
    border-radius: 23px;
    background: rgba(255,255,255,.9);
    padding: 14px;
    box-shadow: inset 0 0 0 1px rgba(102,65,42,.08), 0 12px 32px rgba(102,61,31,.08);
}
.food-order-head { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }
.food-order-shop { font-size: 15px; font-weight: 950; color: var(--food-ink); }
.food-order-status { color: #ff6b20; font-size: 12px; font-weight: 950; }
.food-order-items { margin-top: 8px; color: #765f51; font-size: 12px; line-height: 1.5; }
.food-order-foot { margin-top: 12px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.food-order-foot b { color: #24160f; font-size: 16px; }
.food-profile-card,
.food-address-card {
    margin-top: 14px;
    border-radius: 26px;
    padding: 16px;
    display: flex;
    gap: 13px;
    align-items: center;
    background: rgba(255,255,255,.88);
    box-shadow: var(--food-shadow), inset 0 0 0 1px rgba(98,63,40,.07);
}
.food-profile-icon { width: 58px; height: 58px; flex: 0 0 auto; --food-a:#fff0d9; --food-b:#ffc983; }
.food-profile-name { font-size: 17px; font-weight: 960; }
.food-profile-meta { margin-top: 5px; color: var(--food-muted); font-size: 12px; font-weight: 760; }
.food-address-card { justify-content: space-between; align-items: center; }
.food-address-card b { display: block; font-size: 14px; color: var(--food-ink); }
.food-address-card span { display: block; margin-top: 5px; color: var(--food-muted); font-size: 12px; }
.food-coupon-grid { margin-top: 12px; display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }
.food-coupon-grid div { padding: 14px 10px; border-radius: 20px; background: rgba(255,255,255,.86); text-align: center; box-shadow: inset 0 0 0 1px rgba(98,63,40,.07); }
.food-coupon-grid b { display: block; color: var(--food-orange); font-size: 19px; font-weight: 980; }
.food-coupon-grid span { display: block; margin-top: 4px; color: var(--food-muted); font-size: 11px; font-weight: 820; }
.food-profile-actions { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.food-bottom-nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    height: calc(68px + var(--safe-bottom));
    padding: 7px 22px calc(7px + var(--safe-bottom));
    background: rgba(255,255,255,.9);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    border-top: 1px solid rgba(102,65,42,.08);
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    z-index: 9070;
}
.food-nav-btn { border: 0; background: transparent; color: #9b826f; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; font-size: 11px; font-weight: 850; cursor: pointer; }
.food-nav-btn svg { width: 23px; height: 23px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
.food-nav-btn.active { color: var(--food-orange); }
.food-modal { position: fixed; inset: 0; z-index: 9200; display: none; align-items: flex-end; background: rgba(31,22,15,.38); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.food-modal-card { width: 100%; max-height: 74%; overflow: hidden; display: flex; flex-direction: column; border-radius: 28px 28px 0 0; background: #fffaf6; box-shadow: 0 -18px 46px rgba(39,25,17,.22); }
.food-modal-header { flex: 0 0 auto; padding: 16px; display: flex; align-items: center; justify-content: space-between; font-size: 17px; font-weight: 960; border-bottom: 1px solid rgba(102,65,42,.08); }
.food-contact-list { overflow-y: auto; padding: 12px 16px calc(16px + var(--safe-bottom)); display: grid; gap: 10px; }
.food-contact-item { width: 100%; border: 0; border-radius: 20px; background: rgba(255,255,255,.86); padding: 10px; display: grid; grid-template-columns: 50px 1fr; gap: 11px; align-items: center; text-align: left; box-shadow: inset 0 0 0 1px rgba(102,65,42,.08); cursor: pointer; }
.food-contact-avatar { width: 50px; height: 50px; background-size: cover; background-position: center; }
.food-contact-name { font-size: 14px; font-weight: 940; color: var(--food-ink); }
.food-contact-sub { margin-top: 4px; color: var(--food-muted); font-size: 11px; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 430px) {
    .food-cart-bar { grid-template-columns: 1fr auto auto; }
    .food-cart-bar #food-clear-cart-btn { display: none; }
    .food-cart-bar .food-ghost-btn { padding: 0 8px; font-size: 11px; }
    .food-dish-card { grid-template-columns: 64px 1fr auto; gap: 10px; }
    .food-dish-art { width: 64px; height: 64px; }
}

/* ===== 情侣空间 APP：完整页面 / MIU 逻辑重构版，未复用原代码 ===== */
#couple-app-page {
    position: fixed;
    inset: 0;
    z-index: 9160;
    display: none;
    overflow: hidden;
    background: linear-gradient(180deg, rgba(255,248,251,.98), rgba(246,241,244,.98));
    color: #4C4047;
    font-family: inherit;
}
#couple-app-page.active { display: block; }
#couple-app-page * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
#couple-app-page svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.3; stroke-linecap: round; stroke-linejoin: round; }
.couple-bg-soft { position:absolute; inset:0; background: radial-gradient(circle at 20% 0%, rgba(255,169,196,.28), transparent 32%), radial-gradient(circle at 92% 18%, rgba(210,226,255,.36), transparent 30%); pointer-events:none; }
.couple-app-shell { position: relative; height: 100%; width: 100%; max-width: 520px; margin: 0 auto; display: flex; flex-direction: column; overflow: hidden; }
.couple-header { height: calc(58px + env(safe-area-inset-top)); padding: calc(10px + env(safe-area-inset-top)) 14px 10px; display:flex; align-items:center; gap:10px; flex-shrink:0; background: rgba(255,255,255,.72); border-bottom:1px solid rgba(120,88,103,.12); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }
.couple-title-stack { flex:1; min-width:0; text-align:center; margin-left: 36px; }
.couple-title { font-size: 17px; font-weight: 800; color:#46343E; line-height: 1.2; white-space: nowrap; overflow:hidden; text-overflow:ellipsis; }
.couple-subtitle { font-size: 11px; color:#A28C98; margin-top: 2px; white-space: nowrap; overflow:hidden; text-overflow:ellipsis; }
.couple-icon-btn { width:36px; height:36px; border:0; border-radius: 14px; display:inline-flex; align-items:center; justify-content:center; color:#8B6476; background: rgba(255,255,255,.72); box-shadow: 0 8px 22px rgba(139,100,118,.12); flex:0 0 auto; }
.couple-icon-btn:active, .couple-small-btn:active, .couple-primary-btn:active, .couple-ghost-btn:active { transform: scale(.97); }
.couple-icon-btn.mini { width:32px; height:32px; border-radius: 12px; box-shadow:none; background: rgba(255,255,255,.86); }
.couple-selector-view, .couple-dashboard-view { position: relative; flex:1; overflow-y:auto; padding: 14px 14px calc(92px + env(safe-area-inset-bottom)); scrollbar-width:none; }
.couple-selector-view::-webkit-scrollbar, .couple-dashboard-view::-webkit-scrollbar { display:none; }
.couple-dashboard-view { display:none; }
.couple-dashboard-view.active { display:block; }
.couple-selector-view.hidden { display:none; }
.couple-selector-hero { padding:20px; border-radius: 30px; background: linear-gradient(135deg, rgba(255,255,255,.9), rgba(255,232,240,.78)); border: 1px solid rgba(255,255,255,.78); box-shadow: 0 20px 45px rgba(167,115,139,.16); }
.couple-kicker { font-size:10px; letter-spacing:.18em; color:#B5798F; font-weight:900; }
.couple-selector-hero h2 { margin:8px 0 8px; font-size:23px; line-height:1.2; color:#3E3239; }
.couple-selector-hero p { margin:0; color:#8E7783; font-size:12px; line-height:1.7; }
.couple-selector-list { margin-top: 16px; }
.couple-section-title { margin: 18px 3px 10px; color:#8A6676; font-size:12px; font-weight:800; letter-spacing:.06em; }
.couple-contact-grid { display:grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.couple-contact-card { border:0; min-height:118px; padding:14px; border-radius:26px; background: rgba(255,255,255,.82); box-shadow: 0 16px 34px rgba(125,97,109,.12); display:flex; flex-direction:column; align-items:flex-start; gap:10px; color:#4B3D45; text-align:left; overflow:hidden; position:relative; }
.couple-contact-card.opened { background: linear-gradient(135deg, rgba(255,255,255,.92), rgba(255,226,237,.82)); }
.couple-contact-card img { width:48px; height:48px; border-radius:18px; object-fit:cover; box-shadow: 0 8px 20px rgba(73,54,63,.13); }
.couple-contact-name { font-size:14px; font-weight:800; max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.couple-contact-hint { font-size:11px; color:#A38D98; line-height:1.35; }
.couple-open-pill { position:absolute; top:12px; right:12px; padding:5px 8px; border-radius:999px; background:rgba(185,99,130,.12); color:#A65372; font-size:10px; font-weight:800; }
.couple-empty-state { text-align:center; padding:42px 20px; color:#A996A0; font-size:13px; line-height:1.7; }
.couple-top-card { min-height: 250px; border-radius: 34px; padding:18px; position:relative; overflow:hidden; background: linear-gradient(145deg, rgba(255,255,255,.82), rgba(255,227,237,.76)); box-shadow: 0 24px 54px rgba(151,105,124,.18); background-size: cover; background-position: center; }
.couple-top-card::before { content:""; position:absolute; inset:0; background: linear-gradient(180deg, rgba(255,255,255,.34), rgba(255,255,255,.82)); pointer-events:none; }
.couple-pair-row { position:relative; display:flex; align-items:center; gap:14px; z-index:1; }
.couple-avatar-pair { width:96px; height:60px; position:relative; flex:0 0 auto; }
.couple-avatar-pair img { width:58px; height:58px; border-radius:22px; object-fit:cover; border:3px solid rgba(255,255,255,.88); box-shadow: 0 12px 30px rgba(97,74,84,.2); position:absolute; top:0; }
.couple-avatar-pair img:first-child { left:0; }
.couple-avatar-pair img:last-child { right:0; }
.couple-pair-meta { min-width:0; flex:1; }
.couple-pair-name { font-size:18px; font-weight:900; color:#3D3038; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.couple-pair-note { margin-top:5px; color:#846E79; font-size:12px; line-height:1.45; }
.couple-days-card { position:absolute; z-index:1; left:18px; right:18px; bottom:18px; min-height:112px; border:0; border-radius:28px; background: rgba(255,255,255,.72); display:flex; flex-direction:column; align-items:center; justify-content:center; color:#7B4C61; box-shadow: inset 0 0 0 1px rgba(255,255,255,.55); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.couple-days-card span:first-child { font-size:12px; font-weight:800; letter-spacing:.12em; }
.couple-days-card b { font-size:46px; line-height:.95; color:#B45C7C; margin:6px 0 7px; font-variant-numeric: tabular-nums; }
#couple-start-date-label { font-size:11px; color:#9E7E8D; }
.couple-hidden-date, .couple-hidden-file { display:none; }
.couple-tabbar { margin: 14px -2px 12px; display:flex; overflow-x:auto; gap:8px; padding: 2px; scrollbar-width:none; }
.couple-tabbar::-webkit-scrollbar { display:none; }
.couple-tabbar button { border:0; flex:0 0 auto; padding: 9px 13px; border-radius: 999px; background:rgba(255,255,255,.72); color:#9C8290; font-size:12px; font-weight:800; box-shadow: 0 8px 18px rgba(110,83,96,.08); }
.couple-tabbar button.active { background:#3F3038; color:#FFF; }
.couple-tab-content { display:none; }
.couple-tab-content.active { display:block; }
.couple-section-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin: 12px 1px 12px; }
.couple-section-head h3 { margin:0; font-size:17px; color:#3E333A; }
.couple-section-head p { margin:3px 0 0; font-size:11px; color:#A38D98; line-height:1.35; }
.couple-small-btn, .couple-primary-btn, .couple-ghost-btn { border:0; min-height:34px; padding: 8px 12px; border-radius:14px; font-size:12px; font-weight:800; }
.couple-small-btn { color:#8B5870; background:rgba(255,255,255,.82); box-shadow: 0 8px 18px rgba(112,82,97,.1); white-space:nowrap; }
.couple-primary-btn { color:#FFF; background: linear-gradient(135deg, #AD6680, #7F596D); }
.couple-ghost-btn { color:#7D6571; background:rgba(244,239,242,.95); }
.couple-ghost-btn.danger { color:#A7485B; background:rgba(255,229,234,.96); }
.couple-feed-list { display:flex; flex-direction:column; gap:12px; }
.couple-feed-card { border-radius:28px; background: rgba(255,255,255,.86); box-shadow: 0 14px 30px rgba(112,82,97,.1); padding:14px; overflow:hidden; }
.couple-feed-head { display:flex; align-items:center; gap:10px; }
.couple-feed-head img { width:40px; height:40px; border-radius:15px; object-fit:cover; }
.couple-feed-meta { flex:1; min-width:0; }
.couple-feed-name { font-size:13px; font-weight:900; color:#4B3B44; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.couple-feed-time { font-size:10px; color:#B09AA5; margin-top:2px; }
.couple-feed-text { font-size:14px; line-height:1.65; color:#5B4B54; margin-top:12px; white-space:pre-wrap; word-break:break-word; }
.couple-feed-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:10px; }
.couple-mini-action { border:0; border-radius:12px; min-height:30px; padding:6px 10px; background:rgba(247,241,244,.9); color:#8B6676; font-size:11px; font-weight:800; }
.couple-comments { margin-top:10px; border-radius:18px; padding:9px 10px; background:rgba(247,241,244,.78); }
.couple-comment { font-size:12px; line-height:1.55; color:#6D5964; padding:5px 0; border-bottom:1px solid rgba(150,124,136,.12); }
.couple-comment:last-child { border-bottom:0; }
.couple-comment b { color:#8E5770; }
.couple-album-grid { display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:9px; }
.couple-photo-card { position:relative; aspect-ratio:1; border-radius:22px; overflow:hidden; background:rgba(255,255,255,.7); box-shadow: 0 12px 26px rgba(112,82,97,.11); }
.couple-photo-card img { width:100%; height:100%; object-fit:cover; display:block; }
.couple-photo-del { position:absolute; top:7px; right:7px; width:24px; height:24px; border:0; border-radius:999px; background:rgba(255,255,255,.86); color:#A8475E; font-weight:900; }
.couple-cal-header { display:flex; align-items:center; justify-content:space-between; margin:10px 0 12px; }
.couple-calendar-title { font-size:16px; font-weight:900; color:#493840; }
.couple-week-row, .couple-calendar-grid { display:grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap:6px; }
.couple-week-row span { text-align:center; color:#A8939E; font-size:11px; font-weight:800; padding:4px 0; }
.couple-date-cell { min-height:44px; border:0; border-radius:16px; background:rgba(255,255,255,.76); color:#65545D; font-size:12px; font-weight:800; position:relative; box-shadow: 0 8px 18px rgba(112,82,97,.07); }
.couple-date-cell.today { outline:2px solid rgba(160,91,118,.28); color:#A75775; }
.couple-date-cell::after { content:""; position:absolute; left:50%; transform:translateX(-50%); bottom:7px; width:6px; height:6px; border-radius:999px; opacity:0; }
.couple-date-cell.period::after { opacity:1; background:#DF6E85; }
.couple-date-cell.predict::after { opacity:1; background:#EEB2C1; }
.couple-date-cell.ovulation::after { opacity:1; background:#91BFE7; }
.couple-date-cell.date::after { opacity:1; background:#9ACFAD; }
.couple-date-cell.special::after { opacity:1; background:#C79BE6; }
.couple-calendar-legend { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 0; }
.couple-calendar-legend span { font-size:11px; color:#8C7782; padding:6px 10px; border-radius:999px; background:rgba(255,255,255,.74); }
.couple-calendar-legend span::before { content:""; display:inline-block; width:7px; height:7px; border-radius:999px; margin-right:5px; vertical-align:middle; }
.couple-calendar-legend .period::before { background:#DF6E85; }
.couple-calendar-legend .predict::before { background:#EEB2C1; }
.couple-calendar-legend .ovulation::before { background:#91BFE7; }
.couple-calendar-legend .date::before { background:#9ACFAD; }
.couple-calendar-legend .special::before { background:#C79BE6; }
.couple-letter-list { position:relative; display:flex; flex-direction:column; gap:12px; padding-top:4px; }
.couple-letter-card { border:0; border-radius:26px; background:linear-gradient(135deg, rgba(255,255,255,.94), rgba(255,247,250,.86)); box-shadow: 0 14px 32px rgba(112,82,97,.11); padding:16px; text-align:left; color:#594A52; }
.couple-letter-no { font-size:10px; letter-spacing:.14em; color:#B2768D; font-weight:900; }
.couple-letter-title { font-size:16px; font-weight:900; color:#43373D; margin-top:7px; }
.couple-letter-content { margin-top:10px; font-size:13px; line-height:1.7; color:#6C5964; white-space:pre-wrap; display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; overflow:hidden; }
.couple-letter-footer { margin-top:12px; display:flex; justify-content:space-between; font-size:11px; color:#A28D98; }
.couple-question-list, .couple-mood-list { display:flex; flex-direction:column; gap:12px; }
.couple-question-card { border-radius:26px; background:rgba(255,255,255,.86); box-shadow: 0 14px 30px rgba(112,82,97,.1); padding:15px; }
.couple-question-title { color:#44373E; font-weight:900; font-size:14px; line-height:1.45; }
.couple-question-sub { font-size:10px; color:#AF99A4; margin-top:5px; }
.couple-answer-block { margin-top:12px; padding-top:12px; border-top:1px solid rgba(160,124,141,.14); display:flex; flex-direction:column; gap:8px; }
.couple-answer-row { font-size:12px; line-height:1.6; color:#65525C; }
.couple-answer-row b { color:#8F5870; }
.couple-inline-answer { display:flex; gap:7px; }
.couple-inline-answer input { flex:1; border:0; border-radius:14px; background:rgba(247,242,245,.96); padding:9px 11px; color:#5D4C55; min-width:0; }
.couple-mood-card { display:flex; gap:12px; align-items:flex-start; border-radius:26px; background:rgba(255,255,255,.86); box-shadow: 0 14px 30px rgba(112,82,97,.1); padding:14px; }
.couple-mood-symbol { width:46px; height:46px; border-radius:18px; background:linear-gradient(135deg,#FDE5EE,#EEE7FF); display:flex; align-items:center; justify-content:center; color:#9A5570; font-size:10px; font-weight:900; text-align:center; padding:4px; flex:0 0 auto; }
.couple-mood-body { min-width:0; flex:1; }
.couple-mood-top { display:flex; justify-content:space-between; gap:8px; font-size:11px; color:#A28D98; }
.couple-mood-name { font-weight:900; color:#674F5B; }
.couple-mood-text { margin-top:6px; font-size:13px; color:#5D4C55; line-height:1.55; white-space:pre-wrap; }
.couple-fab { position:absolute; z-index:4; right:18px; bottom:calc(22px + env(safe-area-inset-bottom)); width:58px; height:58px; border:0; border-radius:23px; color:#FFF; background:linear-gradient(135deg,#C56C8C,#7F596D); box-shadow:0 18px 38px rgba(133,83,105,.28); display:none; align-items:center; justify-content:center; }
.couple-fab.active { display:flex; }
.couple-modal { position:fixed; inset:0; z-index: 10220; display:none; align-items:center; justify-content:center; padding:18px; background:rgba(49,38,44,.28); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.couple-modal.active { display:flex; }
.couple-modal-card { width:min(420px, 100%); max-height: 88vh; overflow:auto; border-radius:30px; padding:18px; background:rgba(255,255,255,.95); box-shadow:0 30px 70px rgba(63,45,54,.26); }
.couple-modal-card.compact { max-width:340px; }
.couple-modal-card.settings { max-width:430px; }
.couple-modal-title { font-size:18px; font-weight:900; color:#44363E; margin-bottom:12px; }
.couple-input, .couple-textarea { width:100%; border:0; border-radius:18px; background:#F7F2F5; color:#574750; padding:12px 13px; outline:0; font-size:13px; margin-top:9px; }
.couple-textarea { min-height:128px; resize:none; line-height:1.6; }
.couple-textarea.small { min-height:86px; }
.couple-modal-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:14px; }
.couple-period-actions { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap:9px; }
.couple-period-actions button { border:0; border-radius:16px; background:#F7F2F5; color:#745D68; font-weight:800; padding:12px 10px; }
.couple-mood-options { display:grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap:8px; }
.couple-mood-option { border:0; border-radius:18px; background:#F7F2F5; min-height:58px; color:#745D68; font-size:11px; font-weight:900; padding:6px; }
.couple-mood-option.active { background:#3F3038; color:#FFF; }
.couple-field { display:block; margin-top:11px; }
.couple-field span { display:block; font-size:11px; color:#957F8A; margin-bottom:6px; font-weight:800; }
.couple-file-actions, .couple-danger-zone { display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; }
.couple-danger-zone { padding-top:12px; border-top:1px solid rgba(151,121,135,.14); }
.couple-preview-card { position:relative; width:min(92vw, 520px); max-height:86vh; border-radius:30px; overflow:hidden; background:#111; box-shadow:0 30px 80px rgba(0,0,0,.32); }
.couple-preview-card img { width:100%; max-height:75vh; object-fit:contain; display:block; background:#111; }
.couple-preview-close { position:absolute; top:10px; right:10px; z-index:2; width:34px; height:34px; border:0; border-radius:999px; background:rgba(255,255,255,.84); color:#3B3137; font-size:24px; line-height:1; }
.couple-preview-caption { padding:12px 14px; color:#FFF; font-size:12px; background:rgba(0,0,0,.82); }
.couple-empty { padding:42px 18px; text-align:center; color:#AA97A1; font-size:13px; line-height:1.7; }
.Tutuwan-message-card.couple-card { background: linear-gradient(135deg, #FFF4F8, #F8ECF2); border: 1px solid rgba(183,109,137,.18); color:#5C4450; }
.Tutuwan-message-card.couple-card.accepted { background: linear-gradient(135deg, #F3FFF7, #EEF8F2); border-color: rgba(92,157,112,.18); }
.Tutuwan-message-card.couple-card.rejected { background: linear-gradient(135deg, #FFF1F1, #F9E8EC); border-color: rgba(185,82,99,.18); }
@media (max-width: 360px) {
    .couple-contact-grid { grid-template-columns: 1fr; }
    .couple-mood-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .couple-top-card { min-height: 232px; }
}

/* ====== 聊天页面：心声 / 私密日记 ====== */
.chat-secret-page { z-index: 10055 !important; background: linear-gradient(180deg,#fffafc,#ffffff 52%,#f8fbff) !important; padding-top: var(--safe-top); }
.chat-secret-page .chat-feature-header { background: rgba(255,255,255,.78); -webkit-backdrop-filter: blur(20px) saturate(170%); backdrop-filter: blur(20px) saturate(170%); }
.chat-secret-page .chat-feature-icon-btn:disabled { opacity: .45; pointer-events: none; }
.chat-secret-hero { margin: 14px var(--page-pad) 6px; border-radius: 30px; padding: 20px 18px; background: radial-gradient(circle at 18% 12%, rgba(255,214,226,.96), transparent 42%), linear-gradient(135deg,#fff,#fff2f7 58%,#f2f8ff); border: 1px solid rgba(255,255,255,.9); box-shadow: 0 16px 38px rgba(222,102,142,.12); }
.chat-secret-hero.diary { background: radial-gradient(circle at 18% 12%, rgba(242,226,198,.9), transparent 42%), linear-gradient(135deg,#fff,#fffaf0 56%,#f7fbff); box-shadow: 0 16px 38px rgba(154,113,54,.10); }
.chat-secret-kicker { font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: #b78a9a; font-weight: 900; margin-bottom: 8px; }
.chat-secret-hero-title { font-size: 22px; line-height: 1.15; color: #21181d; font-weight: 950; letter-spacing: -.04em; }
.chat-secret-hero-sub { margin-top: 8px; color: #9a8790; font-size: 12px; line-height: 1.6; font-weight: 650; }
.chat-secret-list { padding-top: 10px !important; display: flex; flex-direction: column; gap: 12px; }
.chat-secret-empty { margin: 32px auto; width: min(86%, 360px); min-height: 150px; border-radius: 30px; border: 1px dashed #eddce4; background: rgba(255,255,255,.74); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: #b0a0a8; text-align: center; font-size: 12px; line-height: 1.65; padding: 24px; }
.chat-secret-empty b { color: #5d5057; font-size: 17px; }
.chat-secret-card { display: grid; grid-template-columns: 66px 1fr; gap: 12px; border-radius: 26px; padding: 13px; background: rgba(255,255,255,.86); border: 1px solid rgba(239,224,232,.82); box-shadow: 0 10px 30px rgba(65,35,49,.07); }
.chat-secret-card.thought-card { background: linear-gradient(180deg,rgba(255,255,255,.94),rgba(255,247,250,.92)); }
.chat-secret-card.diary-card { background: linear-gradient(180deg,rgba(255,255,255,.96),rgba(255,252,244,.94)); cursor: pointer; }
.chat-secret-date { min-height: 76px; border-radius: 20px; background: linear-gradient(180deg,#ffeff5,#fff); border: 1px solid #f4dce5; color: #7d5a66; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.chat-secret-date.diary { background: linear-gradient(180deg,#fff5df,#fff); border-color: #f2e2c4; color: #7b6545; }
.chat-secret-date b { font-size: 24px; line-height: 1; letter-spacing: -.04em; }
.chat-secret-date span { margin-top: 6px; font-size: 9px; font-weight: 850; line-height: 1.25; text-transform: uppercase; }
.chat-secret-main { min-width: 0; }
.chat-secret-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 7px; }
.chat-secret-card-top strong { color: #21181d; font-size: 14px; font-weight: 950; line-height: 1.35; }
.chat-secret-card-top button { border: none; background: rgba(255,226,235,.78); color: #d95f84; border-radius: 999px; padding: 5px 9px; font-size: 10px; font-weight: 900; }
.chat-secret-main p { margin: 0; white-space: pre-wrap; word-break: break-word; color: #594d54; font-size: 13px; line-height: 1.72; }
.chat-diary-card-meta { color: #a28d76; font-size: 11px; font-weight: 800; margin: -2px 0 8px; line-height: 1.45; }
.chat-diary-paper-card { background: linear-gradient(180deg,#fffdf8,#fffaf0) !important; border-radius: 30px !important; }
.chat-diary-paper-head { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 12px; color: #7b6545; }
.chat-diary-paper-head span { display: block; font-size: 38px; line-height: .9; font-weight: 950; letter-spacing: -.06em; }
.chat-diary-paper-head small { display: block; margin-top: 8px; font-size: 10px; letter-spacing: .11em; font-weight: 900; color: #b49a72; }
.chat-diary-paper-title { color: #231f20; font-size: 22px; line-height: 1.25; font-weight: 950; letter-spacing: -.04em; margin-bottom: 8px; }
.chat-diary-paper-meta { color: #a28d76; font-size: 11px; font-weight: 800; padding-bottom: 12px; border-bottom: 1px solid rgba(210,180,130,.26); margin-bottom: 12px; }
.chat-diary-paper-content { max-height: min(46vh, 360px); overflow-y: auto; white-space: pre-wrap; word-break: break-word; color: #4d443c; font-size: 14px; line-height: 1.9; padding-right: 4px; }
@media (max-width: 430px) {
  .chat-secret-card { grid-template-columns: 58px 1fr; gap: 10px; padding: 11px; border-radius: 23px; }
  .chat-secret-date b { font-size: 21px; }
  .chat-secret-hero-title { font-size: 20px; }
}

/* ===================================
   窥探 APP：角色房间搜查
   =================================== */
.peep-room-overlay,
.peep-room-page {
    position: fixed;
    inset: 0;
    z-index: 10105;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(70, 52, 61, 0.24);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}
.peep-room-page { z-index: 10106; }
.peep-room-picker-card {
    width: min(92vw, 390px);
    max-height: 82vh;
    overflow: hidden;
    border-radius: 34px;
    padding: 18px;
    background: rgba(255,255,255,0.96);
    box-shadow: 0 24px 60px rgba(88, 58, 72, 0.2), inset 0 0 0 1px rgba(255,255,255,0.72);
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.peep-room-shell {
    width: min(96vw, 430px);
    height: min(94vh, 830px);
    border-radius: 38px;
    overflow: hidden;
    background:
        radial-gradient(circle at 20% 0%, rgba(255,255,255,0.92), transparent 34%),
        linear-gradient(180deg, #fff9fb 0%, #fff1f6 52%, #f8edf2 100%);
    box-shadow: 0 34px 82px rgba(62, 42, 52, 0.28), inset 0 0 0 1px rgba(255,255,255,0.82);
    display: flex;
    flex-direction: column;
    color: #5c4650;
}
.peep-room-topbar {
    min-height: 68px;
    padding: 16px 16px 8px;
    display: grid;
    grid-template-columns: 42px 1fr 42px;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}
.peep-room-topbar > div {
    min-width: 0;
    text-align: center;
}
.peep-room-topbar b,
.peep-room-topbar small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-room-topbar b {
    font-size: 16px;
    font-weight: 900;
    color: #5a4450;
}
.peep-room-topbar small {
    margin-top: 3px;
    color: #a58b98;
    font-size: 10px;
    font-weight: 700;
}
.peep-room-nav-btn {
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: 16px;
    background: rgba(255,255,255,0.78);
    color: #8f7482;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: inset 0 0 0 1px rgba(240,220,230,0.68);
}
.peep-room-nav-btn:disabled { opacity: .58; }
.peep-room-nav-btn svg {
    width: 19px;
    height: 19px;
    stroke: currentColor;
    stroke-width: 2.35;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.peep-room-nav-btn.loading svg { animation: peepSpin .8s linear infinite; }
.peep-room-owner {
    margin: 0 16px 12px;
    padding: 11px;
    border-radius: 24px;
    background: rgba(255,255,255,0.7);
    display: grid;
    grid-template-columns: 46px 1fr;
    gap: 11px;
    align-items: center;
    flex-shrink: 0;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.72);
}
.peep-room-owner img {
    width: 46px;
    height: 46px;
    border-radius: 17px;
    object-fit: cover;
    background: #fff;
}
.peep-room-owner b,
.peep-room-owner small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-room-owner b {
    color: #5a4450;
    font-size: 13px;
    font-weight: 900;
}
.peep-room-owner small {
    margin-top: 3px;
    color: #9d8490;
    font-size: 10px;
}
.peep-room-tabs {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 0 16px 12px;
    flex-shrink: 0;
}
.peep-room-tabs::-webkit-scrollbar { width: 0; height: 0; }
.peep-room-tabs button {
    border: 0;
    min-width: 86px;
    padding: 10px 12px;
    border-radius: 18px;
    background: rgba(255,255,255,0.62);
    color: #8f7482;
    text-align: left;
    cursor: pointer;
    box-shadow: inset 0 0 0 1px rgba(241,221,230,0.7);
}
.peep-room-tabs button.active {
    background: linear-gradient(135deg, rgba(255,225,237,0.98), rgba(255,246,250,0.96));
    color: #6b4f5d;
    box-shadow: 0 12px 26px rgba(175, 121, 146, .13), inset 0 0 0 1px rgba(255,255,255,0.8);
}
.peep-room-tabs b,
.peep-room-tabs small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.peep-room-tabs b { font-size: 12px; font-weight: 900; }
.peep-room-tabs small { margin-top: 3px; font-size: 10px; opacity: .72; }
.peep-room-content {
    flex: 1;
    overflow-y: auto;
    padding: 0 16px 18px;
    overscroll-behavior: contain;
}
.peep-room-content::-webkit-scrollbar { width: 0; height: 0; }
.peep-room-current {
    position: relative;
    padding: 16px;
    border-radius: 26px;
    background: rgba(255,255,255,0.74);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.72), 0 16px 34px rgba(106, 76, 90, .09);
    margin-bottom: 12px;
    overflow: hidden;
}
.peep-room-current:before {
    content: '';
    position: absolute;
    right: -26px;
    top: -30px;
    width: 112px;
    height: 112px;
    border-radius: 50%;
    background: rgba(255, 218, 232, .42);
}
.peep-room-current > * { position: relative; z-index: 1; }
.peep-room-current b {
    display: block;
    color: #5a4450;
    font-size: 18px;
    font-weight: 950;
    letter-spacing: -0.3px;
}
.peep-room-current small {
    display: block;
    margin-top: 4px;
    color: #967b88;
    font-size: 11px;
    line-height: 1.35;
}
.peep-room-current p {
    margin: 11px 0 0;
    color: #7b626f;
    font-size: 12px;
    line-height: 1.55;
}
.peep-room-current span {
    display: inline-flex;
    margin-top: 12px;
    padding: 5px 9px;
    border-radius: 999px;
    color: #8b6175;
    background: rgba(255, 234, 242, .82);
    font-size: 10px;
    font-weight: 800;
}
.peep-room-item-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
}
.peep-room-item-card {
    border-radius: 26px;
    padding: 14px;
    background: rgba(255,255,255,0.74);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.76), 0 14px 30px rgba(105, 77, 90, .08);
}
.peep-room-item-card.searched {
    background: linear-gradient(180deg, rgba(255,255,255,.86), rgba(255,244,249,.82));
}
.peep-room-item-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
.peep-room-item-head span {
    order: 2;
    flex-shrink: 0;
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(255, 235, 243, .88);
    color: #9a7083;
    font-size: 10px;
    font-weight: 800;
}
.peep-room-item-head b {
    min-width: 0;
    color: #5a4450;
    font-size: 14px;
    font-weight: 900;
    line-height: 1.35;
}
.peep-room-item-card > p {
    margin: 8px 0 0;
    color: #765f6a;
    font-size: 12px;
    line-height: 1.55;
}
.peep-room-item-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 10px 0;
}
.peep-room-item-meta span {
    padding: 5px 8px;
    border-radius: 999px;
    background: rgba(245, 237, 241, .82);
    color: #927985;
    font-size: 10px;
    line-height: 1.25;
}
.peep-room-thought {
    border-radius: 18px;
    padding: 10px 11px;
    background: rgba(255, 242, 247, .9);
    box-shadow: inset 0 0 0 1px rgba(245, 220, 230, .6);
}
.peep-room-thought small {
    display: block;
    color: #a47488;
    font-size: 10px;
    font-weight: 900;
    margin-bottom: 4px;
}
.peep-room-thought p {
    margin: 0;
    color: #6c5360;
    font-size: 12px;
    line-height: 1.55;
}
.peep-room-result-mini {
    margin-top: 10px;
    border-radius: 18px;
    padding: 10px 11px;
    background: rgba(255,255,255,.76);
    box-shadow: inset 0 0 0 1px rgba(235, 218, 226, .72);
}
.peep-room-result-mini b,
.peep-room-result-mini small {
    display: block;
}
.peep-room-result-mini b {
    color: #5c4650;
    font-size: 12px;
    font-weight: 900;
}
.peep-room-result-mini small {
    margin-top: 4px;
    color: #846b77;
    font-size: 11px;
    line-height: 1.45;
}
.peep-room-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin-top: 12px;
}
.peep-room-actions button:only-child { grid-column: 1 / -1; }
.peep-room-actions button {
    border: 0;
    border-radius: 16px;
    padding: 10px 12px;
    background: #ffe2ee;
    color: #795261;
    font-size: 12px;
    font-weight: 900;
    cursor: pointer;
}
.peep-room-actions button + button {
    background: rgba(255,255,255,.82);
    color: #8a7180;
    box-shadow: inset 0 0 0 1px rgba(236, 218, 226, .86);
}
.peep-room-actions button:disabled {
    opacity: .6;
    cursor: default;
}
.peep-room-loading,
.peep-room-empty {
    min-height: 220px;
    border-radius: 28px;
    background: rgba(255,255,255,.72);
    color: #8f7482;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 24px;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.72);
}
.peep-room-loading span {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 3px solid rgba(170, 126, 148, .24);
    border-top-color: #b77894;
    animation: peepSpin .8s linear infinite;
    margin-bottom: 12px;
}
.peep-room-loading b {
    font-size: 14px;
    color: #684f5b;
}
.peep-room-loading small {
    margin-top: 6px;
    font-size: 11px;
    line-height: 1.45;
}
.Tutuwan-message-card.peep-result-card .card-footer {
    color: #8a6174;
}
@media (max-width: 430px) {
    .peep-room-shell {
        width: 100vw;
        height: 100vh;
        border-radius: 0;
    }
}

/* ====== Tutuwan 电话 / 视频电话完整通话层 ====== */
.Tutuwan-call-overlay,
.Tutuwan-call-page {
    position: fixed;
    inset: 0;
    z-index: 10050;
    display: none;
    align-items: center;
    justify-content: center;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
.Tutuwan-call-overlay.active,
.Tutuwan-call-page.active { display: flex; }
.Tutuwan-call-overlay {
    background: radial-gradient(circle at 50% 18%, rgba(255,255,255,.35), transparent 38%), linear-gradient(160deg, rgba(32,30,34,.92), rgba(105,88,100,.90));
    backdrop-filter: blur(24px) saturate(1.25);
    -webkit-backdrop-filter: blur(24px) saturate(1.25);
}
.Tutuwan-call-invite-card {
    width: min(340px, calc(100vw - 44px));
    border-radius: 34px;
    padding: 34px 24px 26px;
    background: rgba(255,255,255,.16);
    border: 1px solid rgba(255,255,255,.24);
    box-shadow: 0 28px 80px rgba(0,0,0,.30), inset 0 1px 0 rgba(255,255,255,.35);
    color: #fff;
    text-align: center;
}
.Tutuwan-call-pulse {
    position: relative;
    width: 116px;
    height: 116px;
    margin: 0 auto 18px;
    border-radius: 50%;
    display: grid;
    place-items: center;
}
.Tutuwan-call-pulse::before,
.Tutuwan-call-pulse::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 1px solid rgba(255,255,255,.50);
    animation: TutuwanCallPulse 1.8s ease-out infinite;
}
.Tutuwan-call-pulse::after { animation-delay: .7s; }
@keyframes TutuwanCallPulse { from { transform: scale(.82); opacity: .92; } to { transform: scale(1.42); opacity: 0; } }
.Tutuwan-call-pulse img,
.Tutuwan-call-visual img {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    object-fit: cover;
    background: rgba(255,255,255,.3);
    box-shadow: 0 12px 34px rgba(0,0,0,.20);
    position: relative;
    z-index: 1;
}
.Tutuwan-call-invite-name { font-size: 28px; font-weight: 850; letter-spacing: -.5px; }
.Tutuwan-call-invite-status { margin-top: 8px; font-size: 15px; font-weight: 700; color: rgba(255,255,255,.88); }
.Tutuwan-call-invite-reason { margin: 10px auto 0; max-width: 260px; color: rgba(255,255,255,.68); font-size: 12px; line-height: 1.45; }
.Tutuwan-call-invite-actions { margin-top: 28px; display: flex; justify-content: center; gap: 42px; }
.Tutuwan-call-round {
    width: 74px;
    height: 74px;
    border: 0;
    border-radius: 50%;
    color: #fff;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    font-size: 11px;
    font-weight: 760;
    box-shadow: 0 14px 30px rgba(0,0,0,.22);
    -webkit-tap-highlight-color: transparent;
}
.Tutuwan-call-round svg { width: 24px; height: 24px; stroke: currentColor; fill: none; stroke-width: 2.3; stroke-linecap: round; stroke-linejoin: round; }
.Tutuwan-call-round.decline { background: #ff4d57; }
.Tutuwan-call-round.accept { background: #34c759; }
.Tutuwan-call-round:active { transform: scale(.94); }
.Tutuwan-call-page {
    flex-direction: column;
    overflow: hidden;
    color: #fff;
    background: #1d1d20;
}
.Tutuwan-call-bg {
    position: absolute;
    inset: -30px;
    background-size: cover;
    background-position: center;
    filter: blur(28px) saturate(1.1) brightness(.62);
    opacity: .52;
    transform: scale(1.08);
}
.Tutuwan-call-page::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,.12), rgba(0,0,0,.36) 54%, rgba(0,0,0,.66));
    pointer-events: none;
}
.Tutuwan-call-topbar,
.Tutuwan-call-main,
.Tutuwan-call-compose,
.Tutuwan-call-controls { position: relative; z-index: 2; }
.Tutuwan-call-topbar {
    width: 100%;
    padding: calc(16px + env(safe-area-inset-top)) 18px 12px;
    display: grid;
    grid-template-columns: 46px 1fr 46px;
    align-items: center;
    gap: 10px;
}
.Tutuwan-call-title { text-align: center; font-size: 16px; font-weight: 850; }
.Tutuwan-call-status { text-align: center; margin-top: 3px; font-size: 12px; color: rgba(255,255,255,.72); font-weight: 700; }
.Tutuwan-call-top-btn {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 0;
    background: rgba(255,255,255,.15);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}
.Tutuwan-call-top-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.Tutuwan-call-main {
    width: 100%;
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 0 18px;
}
.Tutuwan-call-visual {
    margin: 6px auto 12px;
    width: min(360px, calc(100vw - 36px));
    min-height: 150px;
    border-radius: 32px;
    background: rgba(255,255,255,.13);
    border: 1px solid rgba(255,255,255,.17);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 9px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.20);
    overflow: hidden;
    position: relative;
}
.Tutuwan-call-page.video-mode .Tutuwan-call-visual {
    min-height: 230px;
    background: linear-gradient(145deg, rgba(20,20,24,.44), rgba(255,255,255,.13));
}
.Tutuwan-call-page.video-mode .Tutuwan-call-visual::before {
    content: '';
    position: absolute;
    inset: 12px;
    border-radius: 24px;
    border: 1px solid rgba(255,255,255,.16);
    background: radial-gradient(circle at 40% 15%, rgba(255,255,255,.20), transparent 40%);
}
.Tutuwan-call-page.camera-off .Tutuwan-call-visual { filter: grayscale(.35) brightness(.72); }
.Tutuwan-call-name { font-size: 20px; font-weight: 900; position: relative; z-index: 1; }
.Tutuwan-call-scene { max-width: 260px; text-align: center; color: rgba(255,255,255,.72); font-size: 12px; line-height: 1.4; position: relative; z-index: 1; }
.Tutuwan-call-log {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 6px 2px 14px;
    display: flex;
    flex-direction: column;
    gap: 9px;
    scrollbar-width: none;
}
.Tutuwan-call-log::-webkit-scrollbar { display: none; }
.Tutuwan-call-row { display: flex; width: 100%; }
.Tutuwan-call-row.user { justify-content: flex-end; }
.Tutuwan-call-row.char,
.Tutuwan-call-row.narrator,
.Tutuwan-call-row.thinking,
.Tutuwan-call-row.system { justify-content: flex-start; }
.Tutuwan-call-bubble {
    max-width: min(78%, 310px);
    border-radius: 18px;
    padding: 10px 13px;
    font-size: 14px;
    line-height: 1.5;
    background: rgba(255,255,255,.16);
    border: 1px solid rgba(255,255,255,.13);
    color: #fff;
    word-break: break-word;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}
.Tutuwan-call-row.user .Tutuwan-call-bubble { background: rgba(255,255,255,.90); color: #1d1d20; border-color: transparent; border-bottom-right-radius: 7px; }
.Tutuwan-call-row.char .Tutuwan-call-bubble { border-bottom-left-radius: 7px; }
.Tutuwan-call-row.narrator .Tutuwan-call-bubble,
.Tutuwan-call-row.system .Tutuwan-call-bubble { background: rgba(0,0,0,.18); color: rgba(255,255,255,.70); font-size: 12px; max-width: 90%; }
.Tutuwan-call-bubble.thinking { display: inline-flex; gap: 4px; align-items: center; padding: 12px 14px; }
.Tutuwan-call-bubble.thinking span { width: 6px; height: 6px; border-radius: 50%; background: rgba(255,255,255,.76); animation: TutuwanCallDots 1s ease-in-out infinite; }
.Tutuwan-call-bubble.thinking span:nth-child(2) { animation-delay: .16s; }
.Tutuwan-call-bubble.thinking span:nth-child(3) { animation-delay: .32s; }
@keyframes TutuwanCallDots { 0%, 80%, 100% { transform: translateY(0); opacity: .45; } 40% { transform: translateY(-4px); opacity: 1; } }
.Tutuwan-call-compose {
    width: calc(100% - 28px);
    max-width: 560px;
    display: flex;
    gap: 9px;
    align-items: center;
    padding: 9px;
    border-radius: 999px;
    background: rgba(255,255,255,.16);
    border: 1px solid rgba(255,255,255,.18);
    backdrop-filter: blur(22px) saturate(1.4);
    -webkit-backdrop-filter: blur(22px) saturate(1.4);
}
.Tutuwan-call-compose input {
    flex: 1;
    height: 38px;
    border: 0;
    outline: 0;
    border-radius: 999px;
    padding: 0 13px;
    background: rgba(255,255,255,.90);
    color: #1d1d20;
    font-size: 14px;
}
.Tutuwan-call-send {
    height: 38px;
    border: 0;
    border-radius: 999px;
    padding: 0 16px;
    background: #fff;
    color: #1d1d20;
    font-weight: 850;
}
.Tutuwan-call-controls {
    padding: 13px 18px calc(16px + env(safe-area-inset-bottom));
    width: 100%;
    display: flex;
    justify-content: center;
    gap: 16px;
}
.Tutuwan-call-control {
    width: 70px;
    height: 70px;
    border: 0;
    border-radius: 50%;
    background: rgba(255,255,255,.15);
    color: #fff;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    font-size: 10px;
    font-weight: 760;
}
.Tutuwan-call-control svg { width: 23px; height: 23px; stroke: currentColor; fill: none; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
.Tutuwan-call-control.hangup { background: #ff3b30; }
.Tutuwan-call-control.active { background: rgba(255,255,255,.92); color: #1d1d20; }
.Tutuwan-call-control#Tutuwan-call-camera { display: none; }
.Tutuwan-call-control#Tutuwan-call-camera.show { display: inline-flex; }
.Tutuwan-call-mini {
    position: fixed;
    right: 16px;
    top: calc(72px + env(safe-area-inset-top));
    z-index: 10060;
    min-width: 94px;
    height: 44px;
    border: 0;
    border-radius: 999px;
    padding: 0 14px;
    display: none;
    align-items: center;
    gap: 8px;
    background: rgba(30,30,34,.86);
    color: #fff;
    box-shadow: 0 12px 32px rgba(0,0,0,.26);
    backdrop-filter: blur(20px) saturate(1.4);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    font-size: 13px;
    font-weight: 850;
}
.Tutuwan-call-mini.active { display: inline-flex; }
.Tutuwan-call-mini svg { width: 17px; height: 17px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.Tutuwan-message-card.call-card { background: linear-gradient(135deg, #FFFFFF, #F7F8FA); border: 1px solid rgba(235,236,240,.94); }
.Tutuwan-message-card.call-card .card-icon { background: #1d1d20; color: #fff; border-radius: 50%; }
.Tutuwan-message-card.call-card.declined .card-icon,
.Tutuwan-message-card.call-card.missed .card-icon,
.Tutuwan-message-card.call-card.failed .card-icon { background: #ff4d57; }
.Tutuwan-message-card.call-card.connected .card-icon { background: #34c759; }
.Tutuwan-message-card.call-card.ended .card-icon { background: #2c2c2e; }
.Tutuwan-message-card.call-card .card-footer { background: rgba(246,247,249,.92); }

/* ====== 聊天美化完结：全局 / 专属分离 ====== */
:root {
    --Tutuwan-bubble-font-size: 14px;
    --Tutuwan-bubble-radius: 18px;
    --Tutuwan-bubble-max-width: min(62vw, 340px);
    --Tutuwan-message-gap: 6px;
    --Tutuwan-user-frame-scale: 1.35;
    --Tutuwan-ai-frame-scale: 1.35;
    --Tutuwan-user-frame-x: 0px;
    --Tutuwan-ai-frame-x: 0px;
    --Tutuwan-user-frame-y: 0px;
    --Tutuwan-ai-frame-y: 0px;
}
.Tutuwan { margin-bottom: var(--Tutuwan-message-gap) !important; }
.Tutuwan .bubble-wrapper { margin-top: var(--Tutuwan-message-gap) !important; }
.Tutuwan.user .content:not(.card-bubble):not(.image-bubble),
.Tutuwan.ai .content:not(.card-bubble):not(.image-bubble) {
    font-size: var(--Tutuwan-bubble-font-size) !important;
    max-width: var(--Tutuwan-bubble-max-width) !important;
    border-radius: var(--Tutuwan-bubble-radius) !important;
}
.Tutuwan.user .content:not(.card-bubble):not(.image-bubble) {
    background: var(--Tutuwan-user-bubble) !important;
    color: var(--Tutuwan-user-text) !important;
}
.Tutuwan.ai .content:not(.card-bubble):not(.image-bubble) {
    background: var(--Tutuwan-ai-bubble) !important;
    color: var(--Tutuwan-ai-text) !important;
}
.Tutuwan .avatar-frame::after {
    transform-origin: center center;
    transform: translate(var(--Tutuwan-frame-x, 0px), var(--Tutuwan-frame-y, 0px)) scale(var(--Tutuwan-frame-scale, 1));
}
.Tutuwan.user .avatar-frame {
    --Tutuwan-frame-scale: var(--Tutuwan-user-frame-scale);
    --Tutuwan-frame-x: var(--Tutuwan-user-frame-x);
    --Tutuwan-frame-y: var(--Tutuwan-user-frame-y);
}
.Tutuwan.ai .avatar-frame {
    --Tutuwan-frame-scale: var(--Tutuwan-ai-frame-scale);
    --Tutuwan-frame-x: var(--Tutuwan-ai-frame-x);
    --Tutuwan-frame-y: var(--Tutuwan-ai-frame-y);
}
.beauty-scope-card {
    border: 1px solid rgba(255, 213, 226, .92);
    background: linear-gradient(135deg, rgba(255,248,251,.98), rgba(247,251,255,.96));
    color: #3f3037;
    border-radius: 22px;
    padding: 12px 14px;
    margin-bottom: 12px;
    font-size: 12px;
    font-weight: 900;
    line-height: 1.55;
    box-shadow: 0 12px 30px rgba(255, 126, 166, .10);
}
#chat-beauty-page.specific-mode .beauty-scope-card {
    background: linear-gradient(135deg, rgba(255,241,247,.98), rgba(255,255,255,.96));
    border-color: rgba(255, 166, 194, .95);
}
.beauty-frame-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
    margin-top: 10px;
}
.beauty-preview {
    background-size: cover !important;
    background-position: center !important;
    overflow: hidden;
}
.beauty-preview .Tutuwan { padding-left: 4px !important; padding-right: 4px !important; }
.beauty-preview .Tutuwan .bubble-wrapper { max-width: 100% !important; }
.beauty-preview .Tutuwan.user .content:not(.card-bubble):not(.image-bubble),
.beauty-preview .Tutuwan.ai .content:not(.card-bubble):not(.image-bubble) {
    font-size: var(--Tutuwan-bubble-font-size) !important;
    max-width: var(--Tutuwan-bubble-max-width) !important;
    border-radius: var(--Tutuwan-bubble-radius) !important;
}
@media (max-width: 420px) {
    .beauty-form-grid,
    .beauty-frame-grid { grid-template-columns: 1fr; }
}

/* ===== 终局排查补齐：桌面搜索 / 顶部卡片动作 / 聊天CSS按钮 ===== */
.search-bar[role="button"], .bottom-action[role="button"], #left-widget-accept, #left-widget-reject { cursor: pointer; -webkit-tap-highlight-color: transparent; }
.search-bar[role="button"]:active, .bottom-action[role="button"]:active, #left-widget-accept:active, #left-widget-reject:active { transform: scale(.98); opacity: .86; }
.Tutuwan-css-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.Tutuwan-css-actions .action-btn { margin: 0 !important; min-height: 40px; }
#Tutuwan-css-scope { margin: 0 0 10px !important; color: #6F6470; font-weight: 700; }

/* ===== 主题 UI 总修复：外卖 / 查岗 / 窥探 / 情侣空间 / 信息图标统一兔兔丸桌面风格 ===== */
:root {
    --ttw-theme-bg: var(--app-page-gradient, #FFFCFD);
    --ttw-card-bg: rgba(255,255,255,.92);
    --ttw-card-bg-strong: rgba(255,255,255,.98);
    --ttw-soft-bg: rgba(255,240,245,.82);
    --ttw-line: rgba(252,232,239,.92);
    --ttw-line-strong: rgba(238,218,226,.96);
    --ttw-text-main: #4D454A;
    --ttw-text-soft: #8A737E;
    --ttw-text-faint: #A98796;
    --ttw-accent: var(--pink-dark, #A98796);
    --ttw-accent-soft: var(--pink-light, #FFF0F5);
    --ttw-glass-shadow: 0 14px 34px rgba(169,135,150,.10);
    --ttw-card-radius: 24px;
}

/* 桌面 Dock 信息图标恢复为统一白底线性图标，不再强行变成绿色 iMessage 图标 */
.dock-container .desktop-message-icon,
#btn-desktop-messages .desktop-message-icon {
    background: #FFFFFF !important;
    border-radius: calc(var(--app-icon-size, 55px) * .327) !important;
    box-shadow: none !important;
}
.dock-container .desktop-message-icon svg,
#btn-desktop-messages .desktop-message-icon svg {
    width: 45% !important;
    height: 45% !important;
    stroke: var(--gray-text, #8A737E) !important;
    fill: none !important;
    stroke-width: 1.5 !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
}
.dock-container .desktop-message-icon svg path,
#btn-desktop-messages .desktop-message-icon svg path {
    stroke: currentColor !important;
    fill: none !important;
}

/* 外卖：从橙色平台风改回兔兔丸粉白主题，同时保留真实外卖流程 */
#food-app-page,
#food-store-layer {
    --food-orange: var(--ttw-accent) !important;
    --food-orange-2: #D8B4C2 !important;
    --food-ink: var(--ttw-text-main) !important;
    --food-muted: var(--ttw-text-soft) !important;
    --food-line: var(--ttw-line) !important;
    --food-card: var(--ttw-card-bg) !important;
    --food-shadow: var(--ttw-glass-shadow) !important;
    background: var(--ttw-theme-bg) !important;
    color: var(--ttw-text-main) !important;
}
.food-page-header,
.food-store-header,
.food-bottom-nav {
    background: rgba(255,255,255,.86) !important;
    border-color: var(--ttw-line) !important;
    box-shadow: 0 8px 28px rgba(169,135,150,.08) !important;
}
.food-title,
.food-store-name,
.food-order-shop,
.food-profile-name,
.food-address-card b { color: var(--ttw-text-main) !important; }
.food-subtitle,
.food-store-meta,
.food-store-tags,
.food-profile-meta,
.food-address-card span,
.food-order-items { color: var(--ttw-text-soft) !important; }
.food-icon-btn,
.food-search-box,
.food-filter-chip,
.food-store-card,
.food-dish-card,
.food-order-card,
.food-profile-card,
.food-address-card,
.food-coupon-grid div,
.food-contact-item,
.food-modal-card {
    background: var(--ttw-card-bg) !important;
    border-color: var(--ttw-line) !important;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.74), var(--ttw-glass-shadow) !important;
}
.food-search-box input,
.food-search-box input::placeholder { color: var(--ttw-text-soft) !important; }
.food-hero-card {
    color: var(--ttw-text-main) !important;
    background:
        radial-gradient(circle at 92% 12%, rgba(255,255,255,.72), transparent 34%),
        linear-gradient(135deg, rgba(255,255,255,.96), rgba(255,240,245,.92)) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: var(--ttw-glass-shadow), inset 0 0 0 1px rgba(255,255,255,.72) !important;
}
.food-hero-card::after { background: rgba(255,240,245,.52) !important; }
.food-hero-kicker,
.food-hero-desc,
.food-hero-wallet span { color: var(--ttw-text-soft) !important; opacity: 1 !important; }
.food-hero-title,
.food-hero-wallet b { color: var(--ttw-text-main) !important; }
.food-hero-wallet {
    background: rgba(255,255,255,.76) !important;
    color: var(--ttw-text-main) !important;
    border: 1px solid var(--ttw-line) !important;
}
.food-store-cover,
.food-dish-art,
.food-profile-icon,
.food-contact-avatar {
    background:
        radial-gradient(circle at 32% 30%, rgba(255,255,255,.88) 0 16%, transparent 17%),
        linear-gradient(135deg, rgba(255,240,245,.98), rgba(255,255,255,.92)) !important;
    border: 1px solid rgba(255,255,255,.78) !important;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.62) !important;
}
.food-filter-chip.active,
.food-main-btn,
.food-stepper button,
.food-nav-btn.active,
.food-order-status,
.food-coupon-grid b {
    color: #fff !important;
    background: var(--ttw-accent) !important;
    box-shadow: 0 10px 22px rgba(169,135,150,.18) !important;
}
.food-nav-btn.active { color: var(--ttw-accent) !important; background: transparent !important; box-shadow: none !important; }
.food-ghost-btn,
.food-stepper button.minus {
    color: var(--ttw-accent) !important;
    background: rgba(255,255,255,.92) !important;
    box-shadow: inset 0 0 0 1px var(--ttw-line) !important;
}
.food-cart-bar {
    background: rgba(255,252,253,.94) !important;
    color: var(--ttw-text-main) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: 0 18px 42px rgba(169,135,150,.16) !important;
}
.food-cart-bar span { color: var(--ttw-text-soft) !important; }
.food-cart-bar b { color: var(--ttw-text-main) !important; }
.food-cart-bar .food-ghost-btn { background: var(--ttw-soft-bg) !important; color: var(--ttw-accent) !important; }
.food-modal { background: rgba(85,67,76,.28) !important; }
.food-modal-card { background: var(--ttw-theme-bg) !important; }
.food-modal-header { border-color: var(--ttw-line) !important; color: var(--ttw-text-main) !important; }

/* 查岗虚拟手机：保留仿真小手机，但外壳、卡片、Dock 改为兔兔丸粉白玻璃体系 */
.peep-check-overlay,
.peep-phone-page {
    background: rgba(255,252,253,.92) !important;
    color: var(--ttw-text-main) !important;
}
.peep-picker-card,
.peep-target-card {
    background: var(--ttw-card-bg) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: var(--ttw-glass-shadow), inset 0 0 0 1px rgba(255,255,255,.72) !important;
}
.peep-picker-title,
.peep-target-card b { color: var(--ttw-text-main) !important; }
.peep-picker-sub,
.peep-target-card small { color: var(--ttw-text-soft) !important; }
.peep-icon-btn,
.peep-nav-btn {
    background: rgba(255,255,255,.84) !important;
    border: 1px solid var(--ttw-line) !important;
    color: var(--ttw-accent) !important;
    box-shadow: none !important;
}
.peep-phone-shell {
    background: linear-gradient(145deg, #5E535A, #332D32) !important;
    box-shadow: 0 28px 68px rgba(77,62,70,.26), inset 0 0 0 2px rgba(255,255,255,.10) !important;
}
.peep-phone-screen {
    background:
        radial-gradient(circle at 20% 0%, rgba(255,240,245,.86), transparent 34%),
        var(--ttw-theme-bg) !important;
    color: var(--ttw-text-main) !important;
}
.peep-statusbar,
.peep-phone-title,
.peep-section-title,
.peep-wechat-top b,
.peep-note-card b,
.peep-product-card b,
.peep-browser-list b,
.peep-tab-grid b { color: var(--ttw-text-main) !important; }
.peep-phone-subtitle,
.peep-owner-strip small,
.peep-wechat-top small,
.peep-preview,
.peep-note-card p,
.peep-product-card p,
.peep-browser-list p,
.peep-tab-grid p { color: var(--ttw-text-soft) !important; }
.peep-owner-strip,
.peep-phone-dock,
.peep-empty-card,
.peep-loading-card,
.peep-wechat-card,
.peep-note-card,
.peep-product-card,
.peep-video-card,
.peep-browser-list > div,
.peep-tab-grid article,
.peep-cart-list > div,
.peep-list-lines > div,
.peep-ios-memory-card,
.peep-ios-chat-preview,
.peep-ios-thread-list {
    background: var(--ttw-card-bg) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.70), 0 10px 24px rgba(169,135,150,.08) !important;
}
.peep-dock-btn span {
    background: rgba(255,240,245,.88) !important;
    color: var(--ttw-accent) !important;
    box-shadow: none !important;
}
.peep-dock-btn.active span {
    background: #fff !important;
    box-shadow: 0 8px 18px rgba(169,135,150,.14) !important;
}
.peep-dock-btn b,
.peep-dock-btn.active b { color: var(--ttw-text-soft) !important; }
.peep-wallet-hero,
.peep-bank-card,
.peep-video-screen {
    background: linear-gradient(135deg, rgba(169,135,150,.92), rgba(216,180,194,.88)) !important;
    box-shadow: 0 14px 30px rgba(169,135,150,.16) !important;
}
.peep-ios-title-row > b,
.peep-ios-thread-main b { color: #1f1c20 !important; }
.peep-ios-title-row > button,
.peep-ios-thread em,
.peep-ios-bubble.mine p { background: var(--ttw-accent) !important; color: #fff !important; }
.peep-ios-search,
.peep-ios-memory-list span { background: rgba(255,240,245,.86) !important; color: var(--ttw-text-soft) !important; }

/* 窥探房间：移除突兀重渐变，统一成主题卡片；保留房间、物品、心声、转发动作 */
.peep-room-overlay,
.peep-room-page {
    background: rgba(255,252,253,.94) !important;
    color: var(--ttw-text-main) !important;
}
.peep-room-picker-card,
.peep-room-shell,
.peep-room-topbar,
.peep-room-owner,
.peep-room-current,
.peep-room-item-card,
.peep-room-thought,
.peep-room-result-mini,
.peep-room-loading,
.peep-room-empty {
    background: var(--ttw-card-bg) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: var(--ttw-glass-shadow), inset 0 0 0 1px rgba(255,255,255,.72) !important;
}
.peep-room-shell { background: var(--ttw-theme-bg) !important; }
.peep-room-topbar b,
.peep-room-owner b,
.peep-room-current b,
.peep-room-item-head b,
.peep-room-result-mini b { color: var(--ttw-text-main) !important; }
.peep-room-topbar small,
.peep-room-owner small,
.peep-room-current small,
.peep-room-current p,
.peep-room-item-card > p,
.peep-room-item-meta,
.peep-room-thought p,
.peep-room-result-mini small { color: var(--ttw-text-soft) !important; }
.peep-room-nav-btn,
.peep-room-tabs button,
.peep-room-actions button {
    background: rgba(255,255,255,.88) !important;
    border: 1px solid var(--ttw-line) !important;
    color: var(--ttw-accent) !important;
    box-shadow: none !important;
}
.peep-room-tabs button.active,
.peep-room-actions button + button {
    background: var(--ttw-accent) !important;
    color: #fff !important;
    box-shadow: 0 10px 24px rgba(169,135,150,.18) !important;
}
.peep-room-current:before { opacity: .42 !important; background: radial-gradient(circle at 18% 0%, rgba(255,240,245,.96), transparent 40%) !important; }
.peep-room-item-head span { background: var(--ttw-accent-soft) !important; color: var(--ttw-accent) !important; }

/* 情侣空间：保留 MIU 逻辑，但视觉回到主桌面同源粉白玻璃，不再单独跑偏 */
#couple-app-page {
    background: var(--ttw-theme-bg) !important;
    color: var(--ttw-text-main) !important;
}
.couple-bg-soft {
    background: radial-gradient(circle at 18% 0%, rgba(255,240,245,.88), transparent 34%), radial-gradient(circle at 92% 16%, rgba(255,255,255,.88), transparent 32%) !important;
}
.couple-header,
.couple-selector-hero,
.couple-contact-card,
.couple-card,
.couple-stat-card,
.couple-module-card,
.couple-post-card,
.couple-letter-card,
.couple-photo-card,
.couple-calendar-card,
.couple-question-card,
.couple-mood-card,
.couple-empty-state,
.couple-modal-card {
    background: var(--ttw-card-bg) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: var(--ttw-glass-shadow), inset 0 0 0 1px rgba(255,255,255,.72) !important;
}
.couple-contact-card.opened,
.couple-hero-card,
.couple-memory-card {
    background: linear-gradient(135deg, rgba(255,255,255,.98), rgba(255,240,245,.88)) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: var(--ttw-glass-shadow) !important;
}
.couple-title,
.couple-selector-hero h2,
.couple-contact-name,
.couple-section-title,
.couple-card b,
.couple-stat-card b,
.couple-module-card b,
.couple-post-card b,
.couple-letter-card b,
.couple-photo-card b,
.couple-calendar-card b,
.couple-question-card b,
.couple-mood-card b { color: var(--ttw-text-main) !important; }
.couple-subtitle,
.couple-selector-hero p,
.couple-contact-sub,
.couple-card small,
.couple-stat-card span,
.couple-module-card span,
.couple-post-card p,
.couple-letter-card p,
.couple-photo-card span,
.couple-calendar-card span,
.couple-question-card p,
.couple-mood-card p { color: var(--ttw-text-soft) !important; }
.couple-icon-btn,
.couple-small-btn,
.couple-ghost-btn {
    background: rgba(255,255,255,.88) !important;
    color: var(--ttw-accent) !important;
    border: 1px solid var(--ttw-line) !important;
    box-shadow: none !important;
}
.couple-primary-btn,
.couple-tab-btn.active,
.couple-action-btn.primary {
    background: var(--ttw-accent) !important;
    color: #fff !important;
    border-color: var(--ttw-accent) !important;
    box-shadow: 0 10px 24px rgba(169,135,150,.18) !important;
}
.couple-tab-btn,
.couple-action-btn {
    background: var(--ttw-card-bg) !important;
    color: var(--ttw-text-soft) !important;
    border: 1px solid var(--ttw-line) !important;
}

/* 2026-05-11 导航栏按钮修正：所有顶部/底部导航按钮去外轮廓，不再出现描边方框 */
.top-right-icon-bg,
.icon-btn,
.worldbook-icon-btn,
.chat-icon-btn,
.chat-feature-icon-btn,
.chat-tab-btn,
.shop-icon-btn,
.shop-nav-btn,
.food-icon-btn,
.food-nav-btn,
.twitter-icon-btn,
.twitter-nav-btn,
.dm-nav-btn,
.peep-icon-btn,
.peep-nav-btn,
.peep-room-nav-btn,
.peep-room-tabs button,
.couple-icon-btn,
.couple-icon-btn.mini,
.couple-tab-btn,
.Tutuwan-call-top-btn,
.chat-mask-add-btn,
.dm-compose button {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    -webkit-tap-highlight-color: transparent !important;
}
.top-right-icon-bg:focus,
.top-right-icon-bg:focus-visible,
.icon-btn:focus,
.icon-btn:focus-visible,
.worldbook-icon-btn:focus,
.worldbook-icon-btn:focus-visible,
.chat-icon-btn:focus,
.chat-icon-btn:focus-visible,
.chat-feature-icon-btn:focus,
.chat-feature-icon-btn:focus-visible,
.chat-tab-btn:focus,
.chat-tab-btn:focus-visible,
.shop-icon-btn:focus,
.shop-icon-btn:focus-visible,
.shop-nav-btn:focus,
.shop-nav-btn:focus-visible,
.food-icon-btn:focus,
.food-icon-btn:focus-visible,
.food-nav-btn:focus,
.food-nav-btn:focus-visible,
.twitter-icon-btn:focus,
.twitter-icon-btn:focus-visible,
.twitter-nav-btn:focus,
.twitter-nav-btn:focus-visible,
.dm-nav-btn:focus,
.dm-nav-btn:focus-visible,
.peep-icon-btn:focus,
.peep-icon-btn:focus-visible,
.peep-nav-btn:focus,
.peep-nav-btn:focus-visible,
.peep-room-nav-btn:focus,
.peep-room-nav-btn:focus-visible,
.peep-room-tabs button:focus,
.peep-room-tabs button:focus-visible,
.couple-icon-btn:focus,
.couple-icon-btn:focus-visible,
.couple-tab-btn:focus,
.couple-tab-btn:focus-visible,
.Tutuwan-call-top-btn:focus,
.Tutuwan-call-top-btn:focus-visible,
.chat-mask-add-btn:focus,
.chat-mask-add-btn:focus-visible {
    outline: 0 !important;
    box-shadow: none !important;
}
.peep-room-tabs button.active,
.food-nav-btn.active,
.shop-nav-btn.active,
.twitter-nav-btn.active,
.chat-tab-btn.active,
.couple-tab-btn.active {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
}

/* 信息 APP：发送短信输入栏，保持无外轮廓按钮 */
.dm-compose button,
.dm-compose button:focus,
.dm-compose button:focus-visible {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
}
