/*
 * 忘了吗 · Web UI 3.0
 * 以 iPhone App 的 Material 3 / iOS 操控为基准，同时为桌面端提供同构工作台。
 * 本文件最后加载，用于收敛 assistant_web.py 中历史样式。
 */

:root {
    --ios-blue: #667eea;
    --ios-purple: #764ba2;
    --ios-red: #ff3b30;
    --ios-orange: #ff9500;
    --ios-label: #1c1c1e;
    --ios-secondary-label: #6e6e73;
    --ios-tertiary-label: #8e8e93;
    --ios-background: #f2f2f7;
    --ios-surface: #ffffff;
    --ios-secondary-background: #f7f7fa;
    --ios-fill: rgba(118, 118, 128, .12);
    --ios-separator: rgba(60, 60, 67, .16);
    --ios-hairline: rgba(60, 60, 67, .12);
    --ios-shadow: 0 12px 34px rgba(38, 45, 74, .10);
    --ios-ease: cubic-bezier(.22, .8, .24, 1);
    --mobile-safe-top: env(safe-area-inset-top, 0px);
    --mobile-safe-bottom: env(safe-area-inset-bottom, 0px);
    --mobile-header-height: calc(44px + var(--mobile-safe-top));
    color-scheme: light;
}

html {
    background: var(--ios-background);
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body {
    color: var(--ios-label) !important;
    background: var(--ios-background) !important;
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
    -webkit-font-smoothing: antialiased;
}

button, input, textarea, select { font: inherit; -webkit-tap-highlight-color: transparent; }
button, .nav-item, .drawer-item, .quick-category-chip, .app-list-action-btn { touch-action: manipulation; }

button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
    outline: 3px solid rgba(102, 126, 234, .32) !important;
    outline-offset: 2px;
}

#ai { min-width: 0; min-height: 0; }

#aiChatBox,
.chat-container {
    overscroll-behavior: contain;
    scrollbar-color: rgba(60, 60, 67, .25) transparent;
    scrollbar-width: thin;
}

#aiChatBox::-webkit-scrollbar,
.chat-container::-webkit-scrollbar { width: 6px; }

#aiChatBox::-webkit-scrollbar-thumb,
.chat-container::-webkit-scrollbar-thumb {
    border-radius: 999px;
    background: rgba(60, 60, 67, .22);
}

.message { animation: iosMessageIn .24s var(--ios-ease) both !important; }

@keyframes iosMessageIn {
    from { opacity: 0; transform: translateY(7px) scale(.985); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.message-content,
.message-bubble {
    min-width: 0;
    overflow: hidden;
    font-size: 15px;
    line-height: 1.55;
    word-break: break-word;
    overflow-wrap: anywhere;
}

.message-content img,
.message-content video,
.message-content canvas,
.message-content iframe,
.message-bubble img,
.message-bubble video,
.message-bubble canvas,
.message-bubble iframe {
    max-width: 100% !important;
    height: auto;
}

.message-content pre,
.message-content table,
.message-bubble pre,
.message-bubble table {
    max-width: 100%;
    overflow-x: auto;
}

.message.assistant .message-content,
.message.assistant .message-bubble {
    color: var(--ios-label) !important;
    background: var(--ios-surface) !important;
    border: .5px solid var(--ios-hairline) !important;
    box-shadow: 0 5px 18px rgba(30, 36, 58, .07) !important;
}

.message.user .message-content,
.message.user .message-bubble {
    color: var(--mobile-user-text, #fff) !important;
    background: linear-gradient(135deg, var(--theme-accent, var(--ios-blue)), var(--theme-accent-2, var(--ios-purple))) !important;
    border: 0 !important;
    box-shadow: 0 7px 20px rgba(var(--theme-accent-rgb, 102, 126, 234), .20) !important;
}

.message-time {
    color: var(--ios-tertiary-label) !important;
    font-size: 11px !important;
    font-variant-numeric: tabular-nums;
}

.message.user .message-time { color: color-mix(in srgb, var(--mobile-user-text, #fff) 72%, transparent) !important; }

.message-delivery-state {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 5px;
    font-size: 12px;
    line-height: 1;
    opacity: .78;
}

.message-delivery-state.failed { color: #c62828; opacity: 1; }
.message-delivery-state button {
    min-height: 30px;
    padding: 0 10px;
    color: inherit;
    background: rgba(255, 255, 255, .72);
    border: 0;
    border-radius: 999px;
    font: inherit;
    font-weight: 700;
}

body[data-theme="dark"] {
    color-scheme: dark;
    --ios-label: #f2f2f7;
    --ios-secondary-label: #b7b7be;
    --ios-tertiary-label: #8e8e93;
    --ios-background: #1c1c1e;
    --ios-secondary-background: #2c2c2e;
    --ios-surface: #2c2c2e;
    --ios-fill: rgba(118, 118, 128, .30);
    --ios-separator: rgba(84, 84, 88, .65);
    --ios-hairline: rgba(84, 84, 88, .55);
}

.quick-category-bar {
    scrollbar-width: none;
    scroll-snap-type: x proximity;
}

.quick-category-bar::-webkit-scrollbar { display: none; }

.quick-category-chip {
    flex: 0 0 auto;
    min-height: 34px !important;
    padding: 0 15px !important;
    scroll-snap-align: start;
    border: .5px solid var(--ios-separator) !important;
    border-radius: 999px !important;
    color: var(--ios-secondary-label) !important;
    background: rgba(255, 255, 255, .90) !important;
    box-shadow: none !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    transition: color .18s ease, background .18s ease, transform .14s ease !important;
}

.quick-category-chip.active {
    color: var(--theme-accent, var(--ios-blue)) !important;
    background: rgba(var(--theme-accent-rgb, 102, 126, 234), .10) !important;
    border-color: rgba(var(--theme-accent-rgb, 102, 126, 234), .30) !important;
}

.quick-category-chip:active,
.plus-menu-trigger:active,
.send-button:active,
.mobile-header button:active,
.drawer-item:active,
.nav-item:active { transform: scale(.96) !important; }

.input-container { border-top: .5px solid var(--ios-hairline) !important; }

.input-dock {
    display: flex !important;
    align-items: flex-end !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

.plus-menu-trigger {
    color: var(--ios-secondary-label) !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.plus-menu-trigger span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: 1.5px solid currentColor;
    border-radius: 50%;
    line-height: 1;
}

.input-wrapper {
    background: var(--ios-fill) !important;
    border: .5px solid rgba(60, 60, 67, .08) !important;
    border-radius: 24px !important;
    box-shadow: none !important;
}

textarea#aiInput {
    color: var(--ios-label) !important;
    background: transparent !important;
    caret-color: var(--theme-accent, var(--ios-blue));
}

textarea#aiInput::placeholder { color: var(--ios-tertiary-label) !important; opacity: 1; }

.voice-inline-button {
    color: var(--ios-secondary-label) !important;
    background: transparent !important;
    box-shadow: none !important;
}

.voice-inline-button.listening,
.voice-inline-button.active {
    color: var(--ios-red) !important;
    background: rgba(255, 59, 48, .10) !important;
}

.send-button {
    background: linear-gradient(135deg, var(--theme-accent, var(--ios-blue)), var(--theme-accent-2, var(--ios-purple))) !important;
    border: 0 !important;
    box-shadow: 0 5px 14px rgba(var(--theme-accent-rgb, 102, 126, 234), .24) !important;
    transition: transform .14s ease, filter .14s ease !important;
}

.send-button:disabled { filter: grayscale(.55); opacity: .45; box-shadow: none !important; }

.plus-menu-panel {
    padding: 8px !important;
    border: .5px solid var(--ios-hairline) !important;
    border-radius: 18px !important;
    color: var(--ios-label) !important;
    background: rgba(255, 255, 255, .96) !important;
    box-shadow: var(--ios-shadow) !important;
    backdrop-filter: blur(28px) saturate(160%) !important;
    -webkit-backdrop-filter: blur(28px) saturate(160%) !important;
}

.plus-menu-item {
    min-height: 44px !important;
    color: var(--ios-label) !important;
    border-radius: 12px !important;
}

.plus-menu-item:hover { background: var(--ios-fill) !important; }

.modal {
    background: rgba(0, 0, 0, .28) !important;
    backdrop-filter: blur(7px) !important;
    -webkit-backdrop-filter: blur(7px) !important;
}

.modal-content {
    color: var(--ios-label) !important;
    background: rgba(255, 255, 255, .98) !important;
    border: .5px solid rgba(255, 255, 255, .7) !important;
    border-radius: 22px !important;
    box-shadow: 0 26px 70px rgba(15, 19, 34, .24) !important;
}

.modal-content input,
.modal-content textarea,
.modal-content select {
    color: var(--ios-label) !important;
    background: var(--ios-secondary-background) !important;
    border: .5px solid var(--ios-separator) !important;
    border-radius: 12px !important;
}

.modal-content button { min-height: 42px; border-radius: 12px; }

/* 设置页原先沿用了深色对话框的浅色文字；全局弹窗改为白底后，对比度不足。 */
.settings-dialog {
    color: #273044 !important;
    background: #f7f8fc !important;
    border-color: rgba(60, 72, 98, .12) !important;
}

.settings-dialog .settings-topbar {
    background: rgba(255, 255, 255, .78);
    border-bottom: 1px solid rgba(60, 72, 98, .12);
}

.settings-dialog .settings-dots,
.settings-dialog .settings-close {
    color: #5f6f8c !important;
}

.settings-dialog .settings-close:hover { color: #273044 !important; }

.settings-dialog .settings-group + .settings-group {
    border-top-color: rgba(60, 72, 98, .14) !important;
}

.settings-dialog .settings-row {
    color: #273044 !important;
    background: #fff !important;
    border: 1px solid rgba(60, 72, 98, .10) !important;
    border-radius: 16px !important;
    box-shadow: 0 6px 16px rgba(31, 41, 55, .08) !important;
}

.settings-dialog .settings-row:hover,
.settings-dialog .settings-row:focus-visible {
    background: #f4f6ff !important;
}

.settings-dialog .settings-row-label,
.settings-dialog .settings-panel-title,
.settings-dialog .settings-card-title {
    color: #273044 !important;
}

.settings-dialog .settings-row-desc,
.settings-dialog .settings-field-label,
.settings-dialog .settings-note,
.settings-dialog .settings-summary-label {
    color: #667085 !important;
}

.settings-dialog .settings-row-arrow {
    color: #7a869f !important;
}

.settings-dialog .settings-panel-header {
    border-bottom-color: rgba(60, 72, 98, .14) !important;
}

.settings-dialog .settings-back-btn,
.settings-dialog .settings-action-btn.secondary {
    color: #36445e !important;
    background: #e9edf7 !important;
}

.settings-dialog .settings-card {
    color: #273044 !important;
    background: #fff !important;
    border-color: rgba(60, 72, 98, .10) !important;
    box-shadow: 0 6px 16px rgba(31, 41, 55, .06) !important;
}

.settings-dialog .settings-input,
.settings-dialog .settings-select,
.settings-dialog .settings-textarea {
    color: #273044 !important;
    background: #f8faff !important;
    border-color: #c3ccdc !important;
}

.settings-dialog .settings-summary-item {
    color: #273044 !important;
    border-bottom-color: rgba(60, 72, 98, .12) !important;
}

.settings-dialog .settings-chip-btn {
    color: #36445e !important;
    background: #f5f7fc !important;
    border-color: #cbd3e2 !important;
}

.settings-dialog .settings-chip-btn.active {
    color: #364eb4 !important;
    background: #e6eaff !important;
    border-color: #667eea !important;
}

/* 桌面网页版：把 iPhone App 放大成高效双栏工作台。 */
@media (min-width: 769px) {
    body {
        min-width: 960px;
        min-height: 100vh;
        padding: 0 !important;
        gap: 0 !important;
        overflow: hidden !important;
    }

    body::before, body::after { display: none !important; }
    .mobile-header, .side-drawer, .drawer-overlay { display: none !important; }

    .sidebar {
        position: fixed !important;
        inset: 0 auto 0 0 !important;
        width: 280px !important;
        display: flex !important;
        color: var(--ios-label) !important;
        background: rgba(255, 255, 255, .92) !important;
        border: 0 !important;
        border-right: .5px solid var(--ios-separator) !important;
        border-radius: 0 !important;
        box-shadow: none !important;
        backdrop-filter: blur(30px) saturate(160%) !important;
        -webkit-backdrop-filter: blur(30px) saturate(160%) !important;
    }

    .sidebar-header { padding: 0 0 18px !important; background: transparent !important; border: 0 !important; }
    .quick-category-toggle { display: none !important; }

    .brand-mark {
        min-height: 118px;
        margin: 0 0 16px !important;
        padding: 30px 24px 22px;
        color: #fff;
        background: linear-gradient(135deg, var(--theme-accent, var(--ios-blue)), var(--theme-accent-2, var(--ios-purple)));
        border-radius: 0 0 26px 0;
    }

    .brand-mark-logo {
        width: 52px !important;
        height: 52px !important;
        border-radius: 16px !important;
        color: var(--theme-accent, var(--ios-blue)) !important;
        background: rgba(255, 255, 255, .94) !important;
        box-shadow: 0 8px 22px rgba(28, 28, 30, .14) !important;
    }

    .sidebar-title-wrap h2, .sidebar-title-wrap p { color: #fff !important; }
    .sidebar-title-wrap h2 { font-size: 20px !important; font-weight: 700 !important; }
    .sidebar-title-wrap p { margin-top: 4px !important; font-size: 12px !important; opacity: .80; }
    .sidebar-profile-card { display: none !important; }
    .sidebar-nav { padding: 0 12px !important; }

    .nav-section-label {
        display: block !important;
        padding: 8px 14px 9px !important;
        color: var(--ios-tertiary-label) !important;
        font-size: 12px !important;
        font-weight: 600 !important;
        letter-spacing: .02em !important;
        text-transform: none !important;
    }

    .nav-item {
        min-height: 48px;
        margin: 2px 0 !important;
        padding: 0 14px !important;
        gap: 12px !important;
        color: var(--ios-label) !important;
        background: transparent !important;
        border: 0 !important;
        border-radius: 12px !important;
        font-size: 15px !important;
        font-weight: 500 !important;
        transition: background .16s ease, transform .14s ease !important;
    }

    .nav-item:hover { background: var(--ios-fill) !important; }

    .nav-item.active {
        color: var(--theme-accent, var(--ios-blue)) !important;
        background: rgba(var(--theme-accent-rgb, 102, 126, 234), .11) !important;
        box-shadow: none !important;
    }

    .nav-item-icon { width: 28px !important; font-size: 20px !important; }
    .nav-item-badge { margin-left: auto !important; box-shadow: none !important; }

    .sidebar-footer {
        padding: 14px 16px 22px !important;
        background: transparent !important;
        border-top: .5px solid var(--ios-hairline) !important;
    }

    .sidebar-footer button {
        min-height: 46px;
        color: var(--ios-red) !important;
        background: rgba(255, 59, 48, .08) !important;
        border: 0 !important;
        border-radius: 12px !important;
        box-shadow: none !important;
    }

    .sidebar-footer button:hover { background: rgba(255, 59, 48, .13) !important; transform: none !important; }

    .container {
        position: fixed !important;
        inset: 0 0 0 280px !important;
        width: auto !important;
        height: 100vh !important;
        margin: 0 !important;
        overflow: hidden !important;
        border: 0 !important;
        border-radius: 0 !important;
        background: var(--ios-background) !important;
        box-shadow: none !important;
        backdrop-filter: none !important;
    }

    #aiChatBox, .chat-container {
        padding: 42px clamp(34px, 6vw, 92px) 28px !important;
        gap: 16px !important;
    }

    .message { max-width: min(72%, 760px) !important; }
    .message-content, .message-bubble { padding: 12px 16px !important; border-radius: 20px !important; }
    .message.assistant .message-content, .message.assistant .message-bubble { border-bottom-left-radius: 7px !important; }
    .message.user .message-content, .message.user .message-bubble { border-bottom-right-radius: 7px !important; }
    .message-avatar { width: 36px !important; height: 36px !important; border-radius: 50% !important; box-shadow: none !important; }

    .welcome-message.app-welcome {
        width: min(100%, 900px);
        max-width: 900px !important;
        align-self: center;
        margin: auto 0 !important;
        padding: 30px 0 !important;
        justify-content: center !important;
        text-align: center;
    }

    .welcome-message.app-welcome .message-avatar {
        width: 58px !important;
        height: 58px !important;
        flex: 0 0 58px;
        font-size: 28px;
        box-shadow: 0 10px 25px rgba(var(--theme-accent-rgb, 102, 126, 234), .20) !important;
    }

    .welcome-message.app-welcome .message-content {
        max-width: 640px !important;
        padding: 24px 28px !important;
        text-align: left;
        background: rgba(255, 255, 255, .88) !important;
        border-radius: 24px !important;
    }

    .welcome-card { padding: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; }
    .welcome-card h3 { margin: 8px 0 !important; color: var(--ios-label) !important; font-size: 27px !important; letter-spacing: -.02em !important; }
    .welcome-card p { color: var(--ios-secondary-label) !important; font-size: 15px !important; line-height: 1.6 !important; }

    .welcome-eyebrow {
        color: var(--theme-accent, var(--ios-blue)) !important;
        background: rgba(var(--theme-accent-rgb, 102, 126, 234), .10) !important;
        border-radius: 999px !important;
        font-size: 11px !important;
    }

    .input-container {
        padding: 9px clamp(28px, 5vw, 76px) 18px !important;
        background: rgba(255, 255, 255, .88) !important;
        backdrop-filter: blur(24px) saturate(150%) !important;
        -webkit-backdrop-filter: blur(24px) saturate(150%) !important;
    }

    .quick-category-bar {
        margin: 0 auto 8px !important;
        max-width: 960px;
        padding: 2px 52px 2px 0 !important;
        gap: 8px !important;
    }

    .input-dock { width: min(100%, 960px) !important; margin: 0 auto; gap: 8px !important; padding: 0 !important; }
    .plus-menu-trigger { width: 46px !important; height: 46px !important; font-size: 24px !important; }
    .input-wrapper { min-height: 46px !important; padding: 0 12px 0 16px !important; }

    textarea#aiInput {
        min-height: 24px !important;
        max-height: 132px !important;
        padding: 11px 0 !important;
        font-size: 15px !important;
        line-height: 1.5 !important;
    }

    .send-button { width: 46px !important; height: 46px !important; }
}

/* 手机网页版：尺寸和操控方式与 iPhone App 对齐。 */
@media (max-width: 768px) {
    :root { --mobile-composer-height: 106px; }

    html, body {
        width: 100%;
        height: 100%;
        margin: 0;
        overflow: hidden !important;
    }

    body::before, body::after, .sidebar { display: none !important; }

    .mobile-header {
        position: fixed !important;
        inset: 0 0 auto 0 !important;
        z-index: 10000 !important;
        display: grid !important;
        grid-template-columns: 44px 1fr 44px;
        align-items: end !important;
        height: var(--mobile-header-height) !important;
        padding: var(--mobile-safe-top) 8px 0 !important;
        color: var(--ios-label) !important;
        background: var(--mobile-header-surface, rgba(249, 249, 251, .90)) !important;
        border-bottom: .5px solid var(--ios-separator) !important;
        box-shadow: none !important;
        backdrop-filter: blur(26px) saturate(180%) !important;
        -webkit-backdrop-filter: blur(26px) saturate(180%) !important;
    }

    .mobile-header::after { display: none !important; }

    .menu-btn,
    .mobile-header-action {
        position: static !important;
        width: 44px !important;
        height: 44px !important;
        margin: 0 !important;
        padding: 0 !important;
        color: var(--theme-accent, var(--ios-blue)) !important;
        background: transparent !important;
        border: 0 !important;
        border-radius: 50% !important;
        box-shadow: none !important;
        transform: none !important;
    }

    .mobile-header-action { font-size: 29px !important; font-weight: 300 !important; justify-self: end; }

    .app-logo-text {
        position: static !important;
        min-width: 0;
        height: 44px;
        padding: 0 8px !important;
        display: flex;
        align-items: center;
        justify-content: center;
        color: var(--ios-label) !important;
        font-size: 17px !important;
        font-weight: 600 !important;
        letter-spacing: -.01em !important;
        transform: none !important;
    }

    .drawer-overlay {
        position: fixed !important;
        inset: 0 !important;
        z-index: 10001 !important;
        display: block !important;
        pointer-events: none;
        opacity: 0 !important;
        background: rgba(0, 0, 0, .25) !important;
        transition: opacity .28s var(--ios-ease), backdrop-filter .28s var(--ios-ease) !important;
    }

    .drawer-overlay.open {
        pointer-events: auto;
        opacity: 1 !important;
        backdrop-filter: blur(3px) !important;
        -webkit-backdrop-filter: blur(3px) !important;
    }

    .side-drawer {
        position: fixed !important;
        inset: 0 auto 0 0 !important;
        z-index: 10002 !important;
        display: flex !important;
        width: min(86vw, 340px) !important;
        height: 100dvh !important;
        color: var(--ios-label) !important;
        background: rgba(250, 250, 252, .98) !important;
        border: 0 !important;
        border-radius: 0 22px 22px 0 !important;
        box-shadow: 16px 0 44px rgba(25, 29, 45, .18) !important;
        overflow: hidden;
        transform: translate3d(-104%, 0, 0) !important;
        transition: transform .32s var(--ios-ease) !important;
        will-change: transform;
    }

    .side-drawer.active { left: 0 !important; transform: translate3d(0, 0, 0) !important; }
    .drawer-header { padding: 0 !important; border: 0 !important; }

    .drawer-hero {
        min-height: calc(188px + var(--mobile-safe-top)) !important;
        padding: calc(28px + var(--mobile-safe-top)) 24px 24px !important;
        justify-content: flex-end !important;
        color: #fff !important;
        background: linear-gradient(135deg, var(--theme-accent, var(--ios-blue)), var(--theme-accent-2, var(--ios-purple))) !important;
        border-radius: 0 0 28px 0 !important;
    }

    .drawer-avatar-large {
        width: 68px !important;
        height: 68px !important;
        color: #fff !important;
        background: rgba(255, 255, 255, .22) !important;
        border: 2px solid rgba(255, 255, 255, .42) !important;
        box-shadow: 0 8px 22px rgba(28, 28, 30, .12) !important;
    }

    .drawer-hero-name { margin-top: 12px !important; color: #fff !important; font-size: 22px !important; font-weight: 700 !important; }
    .drawer-content { padding: 12px 10px !important; background: transparent !important; }
    .drawer-section { padding: 4px 0 !important; }
    .drawer-divider { height: .5px !important; margin: 8px 14px !important; background: var(--ios-separator) !important; }

    .drawer-item {
        min-height: 50px;
        margin: 2px 0;
        padding: 0 14px !important;
        color: var(--ios-label) !important;
        background: transparent !important;
        border-radius: 12px;
        font-size: 16px !important;
        transition: background .14s ease, transform .14s ease !important;
    }

    .drawer-item:hover, .drawer-item:active { background: var(--ios-fill) !important; }

    .drawer-item-icon {
        width: 30px !important;
        height: 30px !important;
        color: var(--theme-accent, var(--ios-blue));
        background: rgba(var(--theme-accent-rgb, 102, 126, 234), .10) !important;
        border-radius: 9px !important;
        font-size: 16px !important;
    }

    .drawer-item-accent { color: var(--ios-orange) !important; }
    .drawer-item-arrow { color: #c7c7cc !important; font-size: 24px !important; font-weight: 300 !important; }

    .drawer-footer {
        padding: 10px 16px calc(12px + var(--mobile-safe-bottom)) !important;
        background: transparent !important;
        border-top: .5px solid var(--ios-separator) !important;
    }

    .drawer-logout-btn {
        min-height: 48px !important;
        color: var(--ios-red) !important;
        background: rgba(255, 59, 48, .08) !important;
        border: 0 !important;
        border-radius: 12px !important;
        box-shadow: none !important;
    }

    .container {
        position: fixed !important;
        inset: var(--mobile-header-height) 0 0 !important;
        width: 100% !important;
        height: calc(var(--app-visible-height, 100dvh) - var(--mobile-header-height)) !important;
        min-height: 0 !important;
        max-height: none !important;
        margin: 0 !important;
        overflow: hidden !important;
        background: var(--ios-background) !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }

    #ai { display: flex !important; flex-direction: column !important; height: 100% !important; }

    #aiChatBox, .chat-container {
        flex: 1 1 auto !important;
        width: 100% !important;
        max-width: 100% !important;
        min-height: 0 !important;
        padding: 14px 12px 12px !important;
        gap: 10px !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        scroll-padding-bottom: calc(var(--mobile-composer-height) + 18px);
        -webkit-overflow-scrolling: touch;
    }

    .message { min-width: 0 !important; max-width: 100% !important; margin: 0 0 8px !important; gap: 7px !important; align-items: flex-end !important; }
    .message.user { padding-left: 42px !important; }
    .message.assistant { padding-right: 42px !important; }

    .message-content,
    .message-bubble,
    .welcome-message.app-welcome .message-content {
        min-width: 0 !important;
        max-width: min(82vw, 430px) !important;
        overflow: hidden !important;
        padding: 10px 14px !important;
        border-radius: 19px !important;
    }

    .app-list-message-content {
        width: min(82vw, 430px) !important;
        min-width: 0 !important;
        max-width: min(82vw, 430px) !important;
        overflow: hidden !important;
    }

    .app-list-container,
    .app-list-content,
    .app-list-item,
    .app-list-item-main,
    .app-list-text {
        min-width: 0 !important;
        max-width: 100% !important;
        overflow-wrap: anywhere !important;
    }

    .message.assistant .message-content, .message.assistant .message-bubble { border-bottom-left-radius: 6px !important; }
    .message.user .message-content, .message.user .message-bubble { border-bottom-right-radius: 6px !important; }

    .message-avatar {
        width: 32px !important;
        height: 32px !important;
        flex: 0 0 32px !important;
        border-radius: 50% !important;
        box-shadow: none !important;
        font-size: 16px !important;
    }

    .welcome-message.app-welcome {
        align-items: flex-end !important;
        justify-content: flex-start !important;
        padding: 2px 0 8px !important;
        margin-bottom: 6px !important;
    }

    .welcome-message.app-welcome .message-content {
        width: auto !important;
        color: var(--ios-label) !important;
        text-align: left !important;
        background: var(--ios-surface) !important;
        border: .5px solid var(--ios-hairline) !important;
    }

    .welcome-card { width: auto !important; padding: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; }
    .welcome-eyebrow { display: none !important; }

    .welcome-card h3, .welcome-message h3 {
        margin: 0 0 5px !important;
        color: var(--ios-label) !important;
        font-size: 17px !important;
        line-height: 1.35 !important;
        letter-spacing: 0 !important;
    }

    .welcome-card p, .welcome-message p {
        min-height: 0 !important;
        margin: 0 !important;
        color: var(--ios-secondary-label) !important;
        font-size: 14px !important;
        line-height: 1.55 !important;
        text-align: left !important;
    }

    .input-container, .input-area {
        position: relative !important;
        inset: auto !important;
        flex: 0 0 auto !important;
        width: 100% !important;
        padding: 7px 8px calc(7px + var(--mobile-safe-bottom)) !important;
        background: var(--mobile-composer-surface, rgba(249, 249, 251, .94)) !important;
        backdrop-filter: blur(24px) saturate(170%) !important;
        -webkit-backdrop-filter: blur(24px) saturate(170%) !important;
    }

    .quick-category-bar {
        display: flex !important;
        gap: 7px !important;
        width: 100%;
        margin: 0 0 6px !important;
        padding: 0 2px 2px !important;
        overflow-x: auto;
        mask-image: none !important;
        -webkit-mask-image: none !important;
    }

    .quick-category-toggle {
        width: 44px !important;
        height: 44px !important;
        margin: 0 0 6px 2px !important;
        color: var(--theme-accent, var(--ios-blue)) !important;
        background: rgba(var(--theme-accent-rgb, 102, 126, 234), .10) !important;
        border: 0 !important;
        border-radius: 50% !important;
        box-shadow: none !important;
    }

    .quick-category-chip { min-height: 40px !important; padding: 0 16px !important; font-size: 13px !important; }
    .input-dock { width: 100% !important; gap: 4px !important; padding: 0 !important; }
    .plus-menu-trigger { width: 42px !important; height: 42px !important; padding: 0 !important; font-size: 22px !important; }
    .plus-menu-trigger span { width: 28px; height: 28px; }
    .input-wrapper { min-height: 42px !important; padding: 0 7px 0 14px !important; }

    textarea#aiInput,
    .input-container textarea,
    .input-area input {
        min-height: 22px !important;
        max-height: 112px !important;
        padding: 10px 0 !important;
        color: var(--ios-label) !important;
        background: transparent !important;
        border: 0 !important;
        border-radius: 0 !important;
        font-size: 16px !important;
        line-height: 1.4 !important;
        resize: none !important;
    }

    .voice-inline-button { width: 44px !important; height: 44px !important; flex: 0 0 44px !important; border-radius: 50% !important; }
    .send-button { width: 42px !important; height: 42px !important; flex: 0 0 42px !important; }

    .plus-menu-panel {
        position: fixed !important;
        left: 8px !important;
        right: 8px !important;
        bottom: calc(8px + var(--mobile-safe-bottom)) !important;
        width: auto !important;
        padding: 8px !important;
        border-radius: 18px !important;
    }

    body.keyboard-open .input-container,
    body.keyboard-open .input-area {
        position: fixed !important;
        left: 0 !important;
        right: 0 !important;
        top: var(--composer-top, auto) !important;
        bottom: auto !important;
        z-index: 12000 !important;
        padding-bottom: 7px !important;
    }

    body.keyboard-open .quick-category-bar { display: none !important; }

    /* chatBox 高度已经止于输入栏上沿，这里只保留气泡与输入栏之间的视觉间距。 */
    body.keyboard-open #aiChatBox,
    body.keyboard-open .chat-container {
        padding-bottom: 14px !important;
        scroll-padding-bottom: 14px !important;
    }

    /* 类似普通移动端表单的自然流：内容较短时靠近当前操作区，避免悬在屏幕顶部。 */
    body.keyboard-open #aiChatBox.keyboard-content-short {
        justify-content: flex-end !important;
    }

    /* 动态列表异步插入后，最后一条消息本身就是底部锚点。 */
    body.keyboard-open #aiChatBox .message.keyboard-latest-message {
        margin-top: auto !important;
    }

    .modal-content {
        width: calc(100% - 16px) !important;
        max-width: none !important;
        max-height: min(86dvh, 760px) !important;
        margin: max(10dvh, 54px) 8px 8px !important;
        padding: 20px 16px calc(16px + var(--mobile-safe-bottom)) !important;
        overflow-y: auto !important;
        border-radius: 22px !important;
    }

    .settings-dialog {
        width: 100% !important;
        height: 100dvh !important;
        max-height: none !important;
        margin: 0 !important;
        border-radius: 0 !important;
    }

    .app-task-sheet-overlay { padding: 8px !important; }
    .app-task-sheet { border-radius: 22px !important; }
}

@media (max-width: 390px) {
    .message.user { padding-left: 30px !important; }
    .message.assistant { padding-right: 30px !important; }
    .message-content, .message-bubble, .welcome-message.app-welcome .message-content { max-width: 84vw !important; }
    .input-container, .input-area { padding-left: 5px !important; padding-right: 5px !important; }
    .input-dock { gap: 2px !important; }
}

/* 文件管理：从对话页进入后保持同一套分组列表与操作层级。 */
.file-manager-page {
    display: block !important;
    min-width: 0 !important;
    min-height: 100vh;
    padding: 28px !important;
    overflow: auto !important;
    background: var(--ios-background) !important;
}

.file-manager-page .back-link {
    margin: 0 0 18px !important;
    padding: 10px 14px !important;
    color: var(--theme-accent, var(--ios-blue)) !important;
    background: rgba(255, 255, 255, .86) !important;
    border: .5px solid var(--ios-hairline) !important;
    border-radius: 12px !important;
    box-shadow: none !important;
}

.file-manager-page .container {
    position: relative !important;
    inset: auto !important;
    width: 100% !important;
    height: auto !important;
    margin: 0 !important;
    padding: 30px !important;
    overflow: visible !important;
    color: var(--ios-label);
    background: rgba(255, 255, 255, .92) !important;
    border: .5px solid var(--ios-hairline) !important;
    border-radius: 24px !important;
    box-shadow: var(--ios-shadow) !important;
}

.file-manager-page h1 {
    color: var(--ios-label) !important;
    background: none !important;
    -webkit-text-fill-color: currentColor !important;
    font-size: 28px !important;
    letter-spacing: -.02em;
}

.file-manager-page .subtitle { color: var(--ios-secondary-label) !important; }

.file-manager-page .toolbar { gap: 10px !important; }

.file-manager-page .btn {
    min-height: 42px;
    padding: 0 16px !important;
    border-radius: 12px !important;
    box-shadow: none !important;
}

.file-manager-page .btn-primary {
    background: linear-gradient(135deg, var(--theme-accent, var(--ios-blue)), var(--theme-accent-2, var(--ios-purple))) !important;
}

.file-manager-page .search-box {
    min-height: 42px;
    padding: 0 14px !important;
    color: var(--ios-label) !important;
    background: var(--ios-secondary-background) !important;
    border: .5px solid var(--ios-separator) !important;
    border-radius: 12px !important;
}

.file-manager-page .stats { gap: 12px !important; margin-bottom: 22px !important; }

.file-manager-page .stat-card {
    min-height: 112px;
    padding: 18px !important;
    border-radius: 18px !important;
    box-shadow: none !important;
}

.file-manager-page .category-tag {
    min-height: 36px;
    padding: 0 14px !important;
    color: var(--ios-secondary-label) !important;
    background: var(--ios-secondary-background) !important;
    border: .5px solid var(--ios-separator) !important;
    border-radius: 999px !important;
}

.file-manager-page .category-tag.active {
    color: #fff !important;
    background: var(--theme-accent, var(--ios-blue)) !important;
    border-color: transparent !important;
}

.file-manager-page .file-card,
.file-manager-page .file-list {
    overflow: hidden;
    background: #fff !important;
    border: .5px solid var(--ios-hairline) !important;
    border-radius: 16px !important;
    box-shadow: none !important;
}

.file-manager-page .file-card:hover { transform: translateY(-2px) !important; border-color: rgba(var(--theme-accent-rgb, 102, 126, 234), .42) !important; }
.file-manager-page .file-list-header { background: var(--ios-secondary-background) !important; border-bottom: .5px solid var(--ios-separator) !important; }
.file-manager-page .file-list-item:hover { background: rgba(var(--theme-accent-rgb, 102, 126, 234), .05) !important; }

/* 朋友页：桌面端使用与主工作台相同的导航与内容卡片。 */
.social-page .main-content {
    min-width: 0;
    background: var(--ios-background) !important;
}

.social-page .header {
    min-height: 72px;
    padding: 14px 28px !important;
    color: var(--ios-label);
    background: rgba(255, 255, 255, .90) !important;
    border-bottom: .5px solid var(--ios-separator) !important;
    box-shadow: none !important;
    backdrop-filter: blur(22px) saturate(160%);
    -webkit-backdrop-filter: blur(22px) saturate(160%);
}

.social-page .header h1 { color: var(--ios-label) !important; font-size: 24px !important; letter-spacing: -.02em; }
.social-page .content-area { padding: 22px 28px !important; }

.social-page .card {
    padding: 22px !important;
    color: var(--ios-label);
    background: rgba(255, 255, 255, .92) !important;
    border: .5px solid var(--ios-hairline) !important;
    border-radius: 18px !important;
    box-shadow: none !important;
}

.social-page .card-header { border-bottom: .5px solid var(--ios-separator) !important; }
.social-page .card-header h2 { color: var(--ios-label) !important; }

.social-page .btn {
    min-height: 40px;
    padding: 0 14px !important;
    border-radius: 12px !important;
    box-shadow: none !important;
}

.social-page .btn-primary { background: linear-gradient(135deg, var(--theme-accent, var(--ios-blue)), var(--theme-accent-2, var(--ios-purple))) !important; }
.social-page .btn-secondary { color: var(--theme-accent, var(--ios-blue)) !important; background: rgba(var(--theme-accent-rgb, 102, 126, 234), .10) !important; border: 0 !important; }

.social-page .friend-card,
.social-page .chat-list,
.social-page .chat-window {
    background: #fff !important;
    border: .5px solid var(--ios-hairline) !important;
    border-radius: 16px !important;
    box-shadow: none !important;
}

.social-page .friend-card:hover { background: rgba(var(--theme-accent-rgb, 102, 126, 234), .06) !important; transform: translateY(-1px) !important; }
.social-page .modal-content { color: var(--ios-label) !important; background: rgba(255, 255, 255, .98) !important; border-radius: 20px !important; }

@media (min-width: 769px) {
    .social-page .sidebar-header {
        min-height: 118px;
        margin: 0 0 12px !important;
        padding: 28px 24px !important;
        color: #fff !important;
        background: linear-gradient(135deg, var(--theme-accent, var(--ios-blue)), var(--theme-accent-2, var(--ios-purple))) !important;
        border-radius: 0 0 26px 0 !important;
    }

    .social-page .sidebar-header h2,
    .social-page .sidebar-header p { color: #fff !important; }
    .social-page .user-info { margin: 0 12px 14px; padding: 12px !important; color: var(--ios-label) !important; background: var(--ios-secondary-background) !important; border-radius: 14px; }
    .social-page .user-details h3 { color: var(--ios-label) !important; }
    .social-page .user-details p { color: var(--ios-secondary-label) !important; }
    .social-page .nav-section-title { color: var(--ios-tertiary-label) !important; }
    .social-page .sidebar-footer { background: transparent !important; }
    .social-page .main-content { margin-left: 280px; min-height: 100vh; }
}

@media (max-width: 768px) {
    .file-manager-page {
        min-height: 100dvh;
        padding: 0 0 calc(18px + var(--mobile-safe-bottom)) !important;
        overflow-y: auto !important;
    }

    .file-manager-page .back-link {
        display: block;
        min-height: 52px;
        margin: 0 !important;
        padding: calc(10px + var(--mobile-safe-top)) 16px 10px !important;
        border: 0 !important;
        border-bottom: .5px solid var(--ios-separator) !important;
        border-radius: 0 !important;
        background: rgba(249, 249, 251, .92) !important;
    }

    .file-manager-page .container {
        position: relative !important;
        inset: auto !important;
        height: auto !important;
        margin: 12px !important;
        padding: 18px !important;
        border-radius: 18px !important;
    }

    .file-manager-page h1 { font-size: 23px !important; }
    .file-manager-page .toolbar { align-items: stretch; }
    .file-manager-page .toolbar .btn { flex: 1 1 auto; }
    .file-manager-page .search-box { flex-basis: 100%; order: 3; }
    .file-manager-page .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px !important; margin-bottom: 16px !important; }
    .file-manager-page .stat-card { min-height: 78px; padding: 12px 8px !important; border-radius: 14px !important; }
    .file-manager-page .stat-card h3 { font-size: 12px !important; line-height: 1.25; }
    .file-manager-page .stat-card .value { margin-top: 7px !important; font-size: 18px !important; }
    .file-manager-page .category-filters { gap: 7px !important; }
    .file-manager-page .file-grid:not(:has(.file-list)) { grid-template-columns: 1fr !important; gap: 12px !important; }

    .social-page .main-content { min-height: 100dvh; }

    .social-page .header {
        min-height: var(--mobile-header-height) !important;
        height: var(--mobile-header-height) !important;
        flex: 0 0 var(--mobile-header-height) !important;
        padding: var(--mobile-safe-top) 12px 0 !important;
        justify-content: center !important;
        color: var(--ios-label) !important;
        background: rgba(249, 249, 251, .92) !important;
        border-bottom: .5px solid var(--ios-separator) !important;
    }

    .social-page .header > div:first-child { width: auto !important; }
    .social-page .header h1 { color: var(--ios-label) !important; font-size: 17px !important; font-weight: 600 !important; }
    .social-page .mobile-social-back { left: 8px !important; top: calc(var(--mobile-safe-top) + 4px) !important; width: 38px !important; height: 38px !important; color: var(--theme-accent, var(--ios-blue)) !important; font-size: 34px !important; }
    .social-page .header-actions { position: absolute; right: 8px; top: calc(var(--mobile-safe-top) + 4px); }
    .social-page .header-actions .btn { min-height: 36px; padding: 0 10px !important; font-size: 13px; }
    .social-page .content-area { padding: 12px !important; }
    .social-page .card { padding: 16px !important; border-radius: 16px !important; }
    .social-page .friends-grid { grid-template-columns: 1fr !important; }
    .social-page .friend-card { padding: 14px !important; }
    .social-page .modal-content { width: calc(100% - 24px) !important; padding: 20px 16px !important; }
}

/* 分类列表独立于聊天输入区。打开列表时不聚焦 textarea，因此移动端不会唤起键盘。 */
.category-list-panel {
    position: fixed;
    z-index: 13000;
    display: none;
    flex-direction: column;
    overflow: hidden;
    color: var(--ios-label);
    background: rgba(249, 249, 251, .98);
    border: .5px solid var(--ios-hairline);
    box-shadow: 0 18px 60px rgba(20, 24, 34, .20);
    backdrop-filter: blur(22px) saturate(160%);
    -webkit-backdrop-filter: blur(22px) saturate(160%);
}

.category-list-panel.open { display: flex; }

.category-list-panel-header {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
    min-height: 64px;
    padding: 10px 14px;
    background: rgba(255, 255, 255, .82);
    border-bottom: .5px solid var(--ios-separator);
}

.category-list-panel-heading { min-width: 0; }
.category-list-panel-heading h2 {
    margin: 0;
    overflow: hidden;
    color: var(--ios-label);
    font-size: 17px;
    font-weight: 700;
    letter-spacing: -.02em;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.category-list-panel-heading p {
    margin: 3px 0 0;
    overflow: hidden;
    color: var(--ios-secondary-label);
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.category-list-panel-close,
.category-list-panel-add {
    appearance: none;
    border: 0;
    cursor: pointer;
    font: inherit;
}
.category-list-panel-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    padding: 0;
    color: var(--theme-accent, var(--ios-blue));
    background: transparent !important;
    border-radius: 12px;
    box-shadow: none !important;
    line-height: 1;
}
.category-list-panel-close svg { width: 22px; height: 22px; }
.category-list-panel-add {
    min-height: 36px;
    padding: 0 12px;
    color: #fff;
    background: var(--theme-accent, var(--ios-blue));
    border-radius: 11px;
    font-size: 14px;
    font-weight: 650;
}
.category-list-panel-add:disabled {
    cursor: not-allowed;
    opacity: .42;
}
.category-list-panel-close:active { background: rgba(var(--theme-accent-rgb, 102, 126, 234), .12) !important; transform: scale(.92); }
.category-list-panel-add:active { opacity: .76; }

.category-list-panel-status {
    margin: 16px;
    padding: 14px;
    color: var(--ios-secondary-label);
    background: rgba(255, 255, 255, .75);
    border: .5px solid var(--ios-hairline);
    border-radius: 14px;
    text-align: center;
}
.category-list-panel-status.error { color: #c23b3b; }
.category-list-messages {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    overscroll-behavior: contain;
    padding: 16px;
    -webkit-overflow-scrolling: touch;
}
.category-list-messages .message {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
}
.category-list-messages .message-avatar { display: none !important; }
.category-list-messages .message-content,
.category-list-messages .app-list-message-content {
    box-sizing: border-box;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    color: var(--ios-label);
    background: #fff !important;
    border: .5px solid var(--ios-hairline) !important;
    border-radius: 16px !important;
    box-shadow: none !important;
}
.category-list-messages .list-container { max-height: none !important; }
.category-list-messages .message-time { display: none !important; }

.category-security-card {
    padding: 22px 20px;
    color: var(--ios-label);
    background: #fff;
    border: .5px solid var(--ios-hairline);
    border-radius: 18px;
    box-shadow: 0 12px 32px rgba(25, 36, 60, .07);
}
.category-security-card h3 {
    margin: 0 0 8px;
    font-size: 18px;
    font-weight: 720;
}
.category-security-card h3::before { content: '🔒'; margin-right: 8px; }
.category-security-card p {
    margin: 0;
    color: var(--ios-secondary-label);
    font-size: 15px;
    line-height: 1.55;
}
.category-security-action {
    width: 100%;
    min-height: 46px;
    margin-top: 18px;
    color: #fff;
    background: var(--theme-accent, var(--ios-blue));
    border: 0;
    border-radius: 13px;
    box-shadow: 0 8px 20px rgba(var(--theme-accent-rgb, 102, 126, 234), .22);
    font: inherit;
    font-size: 15px;
    font-weight: 700;
}
.category-security-action:disabled { opacity: .55; }

@media (min-width: 769px) {
    .category-list-panel {
        top: 24px;
        right: 24px;
        bottom: 24px;
        width: min(420px, calc(100vw - 48px));
        border-radius: 22px;
    }
}

@media (max-width: 768px) {
    body.quick-category-panel-open { overflow: hidden !important; }
    .category-list-panel {
        inset: 0;
        width: 100%;
        height: 100dvh;
        border: 0;
        border-radius: 0;
    }
    .category-list-panel-header {
        min-height: calc(58px + var(--mobile-safe-top));
        padding: calc(var(--mobile-safe-top) + 8px) 12px 8px;
    }
    .category-list-messages {
        padding: 12px 12px calc(20px + var(--mobile-safe-bottom));
    }
    .category-list-messages .app-list-header {
        align-items: flex-start;
        gap: 10px;
    }
    .category-list-messages .app-list-actions { flex-wrap: wrap; justify-content: flex-end; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}
