/* ============================================
   Portmaster 深色主题 - 组件样式
   Design Tokens 已迁移至 utils.css
   这里是仅为公共组件样式
   ============================================ */

/* 进度条动画 */
#global-progress-bar {
    position: fixed;
    top: 0;
    left: 0;
    height: 2px;
    background: var(--color-light);
    box-shadow: 0 0 8px var(--color-light);
    z-index: 9999;
    transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    opacity: 1;
}

#global-progress-bar.hide {
    opacity: 0;
    transition: opacity 0.3s ease-out;
}

/* 进度条动画（复用 utils.css 的 @keyframes progress-shimmer） */

/* ===================
   骨架屏（动画在 utils.css）
   =================== */

.skeleton-item {
    padding: 10px 12px;
    margin-bottom: 8px;
}

/* ===================
   生成状态指示器
   =================== */

/* 生成状态指示器（文字前的小圆点） */
.gen-indicator {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--color-primary);
    font-size: var(--font-size-xxs);
    margin-right: 6px;
}

/* 生成状态小圆点（纯绿色实心呼吸绿点） */
.gen-dot {
    width: 8px;
    height: 8px;
    background: #00ff00;
    border-radius: 50%;
    animation: pulse 1.5s ease-in-out infinite;
    box-shadow: 0 0 4px #00ff00;
}

/* ===================
   右键菜单组件
   =================== */
.context-menu {
    position: fixed;
    z-index: 99999;
    min-width: 160px;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.7);
    padding: 6px;
    animation: contextMenuFadeIn 0.15s ease-out;
}

.context-menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    border-radius: var(--radius-xs);
    cursor: pointer;
    font-size: var(--font-size-xxs);
    color: var(--color-text-primary);
    transition: all var(--motion-fast) var(--ease-smooth);
}

.context-menu-item:hover {
    background: var(--color-bg-quaternary);
}

.context-menu-item.context-menu-danger {
    color: var(--color-danger-primary);
}

.context-menu-divider {
    height: 1px;
    background: var(--color-border);
    margin: 6px 0;
}

/* ===================
   代码块组件
   =================== */
.code-block {
    margin: 12px 0;
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: #1e1e1e;
    border: 1px solid var(--color-border);
}

.code-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 12px;
    background: #2d2d2d;
    border-bottom: 1px solid var(--color-border);
}

.code-lang {
    font-size: 11px;
    color: var(--color-text-quaternary);
    text-transform: uppercase;
    font-weight: 500;
    letter-spacing: 0.5px;
}

.code-copy-btn {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    font-size: 11px;
    color: var(--color-text-tertiary);
    background: transparent;
    border: none;
    border-radius: var(--radius-xs);
    cursor: pointer;
    transition: all 0.15s ease;
}

.code-copy-btn:hover {
    background: rgba(255, 255, 255, 0.1);
    color: var(--color-text-primary);
}

.code-copy-btn.copied {
    color: var(--color-success);
}

.code-copy-btn svg {
    flex-shrink: 0;
}

.code-block pre {
    margin: 0;
    padding: 14px;
    background: transparent;
    border-radius: 0;
}

.code-block code {
    font-size: 13px;
    line-height: 1.5;
    font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', 'Monaco', monospace;
}

/* Prism.js 样式覆盖（适配深色主题） */
.code-block pre[class*="language-"],
.code-block code[class*="language-"] {
    background: transparent;
    text-shadow: none;
}

.code-block .token.comment,
.code-block .token.prolog,
.code-block .token.doctype,
.code-block .token.cdata {
    color: #6a9955;
}

.code-block .token.punctuation {
    color: #d4d4d4;
}

.code-block .token.property,
.code-block .token.tag,
.code-block .token.boolean,
.code-block .token.number,
.code-block .token.constant,
.code-block .token.symbol {
    color: #b5cea8;
}

.code-block .token.selector,
.code-block .token.attr-name,
.code-block .token.string,
.code-block .token.char,
.code-block .token.builtin {
    color: #ce9178;
}

.code-block .token.operator,
.code-block .token.entity,
.code-block .token.url,
.code-block .token.variable {
    color: #d4d4d4;
}

.code-block .token.atrule,
.code-block .token.attr-value,
.code-block .token.function,
.code-block .token.class-name {
    color: #dcdcaa;
}

.code-block .token.keyword {
    color: #569cd6;
}

.code-block .token.regex,
.code-block .token.important {
    color: #d16969;
}

/* 公共提示样式 — Portmaster 深色主题适配 */
.input-hint {
    font-size: var(--font-size-xxs);
    margin-top: 8px;
    padding: 8px;
    border-radius: var(--radius-xs);
    border: 1px dashed var(--color-text-quaternary);
    display: flex;
    align-items: center;
    gap: 6px;
}

.input-hint.info {
    color: var(--color-text-quaternary);
    border: none;
}

.input-hint.success {
    color: var(--color-light);
    background: var(--color-primary-200);
    border-left: 3px solid var(--color-primary);
    border-color: var(--color-primary);
}

.input-hint.warning {
    color: var(--color-warning-primary);
    background: var(--color-warning-tertiary);
    border-left: 3px solid var(--color-warning-secondary);
    border-color: var(--color-warning-secondary);
}

.input-hint.error {
    color: var(--color-danger-primary);
    background: var(--color-danger-tertiary);
    border-left: 3px solid var(--color-danger-primary);
    border-color: var(--color-danger-primary);
}

.input-hint i {
    color: inherit;
    flex-shrink: 0;
}

/* =================================================================
   非阻塞提示（Toast）— 全站统一组件
   
   使用方法：
   1. 页面中添加容器：<div id="toast-container" class="u-toast-container"></div>
   2. 引入 JS：<script src="{% static 'js/common/toast.js' %}"></script>
   3. 调用：showToast('消息', 'success') 或 showSuccess('消息')
   
   类型：info(默认) | success | warning | error
   动画依赖：utils.css 的 @keyframes toast-in / toast-out
   ================================================================= */

.u-toast-container {
    position: fixed;
    top: 60px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10000; /* 高于所有元素（包括弹窗、下拉菜单等） */
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    pointer-events: none; /* 容器不接收点击，避免遮挡页面 */
    width: 100%;
    max-width: 600px;
}

.u-toast {
    min-width: 280px;
    max-width: 480px;
    padding: 10px 16px;
    border-radius: var(--radius-sm);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
    font-size: var(--font-size-sm);
    line-height: var(--line-height-base);
    background: var(--color-card-primary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border);
    text-align: center;
    pointer-events: auto; /* 单个 toast 可接收点击（如需可关闭） */
    animation: toast-in var(--motion-normal) var(--motion-ease);
}

.u-toast.removing {
    animation: toast-out 400ms ease-out forwards;
}

/* Toast 类型变体 */
.u-toast--info {
    border-color: var(--color-border-light);
}

.u-toast--success {
    border-color: var(--color-primary);
    background: var(--color-tertiary);
    color: var(--color-light);
}

.u-toast--warning {
    border-color: var(--color-warning-secondary);
    background: var(--color-warning-tertiary);
    color: var(--color-warning-primary);
}

.u-toast--error {
    border-color: var(--color-danger-secondary);
    background: var(--color-danger-tertiary);
    color: var(--color-danger-primary);
}

/* Toast 动画定义在 utils.css (@keyframes toast-in / toast-out) */

/* 模态对话框（基础）— 深色主题 */
.c-modal {
    position: fixed;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 1100;
}

.c-modal.is-open {
    display: flex;
}

.c-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(18, 18, 19, 0.75);
    backdrop-filter: blur(4px);
}

.c-modal__dialog {
    position: relative;
    width: 420px;
    max-width: 90vw;
    background: var(--color-card-primary);
    border-radius: var(--radius-md);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4), 0 0 1px rgba(255, 255, 255, 0.1);
    padding: 0;
    border: 1px solid var(--color-border);
    overflow: hidden;
    animation: modalSlideIn 0.2s ease-out;
}

@keyframes modalSlideIn {
    from {
        opacity: 0;
        transform: translateY(-20px) scale(0.96);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* 确认弹窗专用样式 - 小尺寸 */
.c-modal__dialog--confirm {
    width: 380px;
    text-align: center;
}

/* 输入弹窗专用样式 */
.c-modal__dialog--prompt {
    width: 440px;
    text-align: left;
}

/* 弹窗头部 - 图标区域 */
.c-modal__header {
    padding: 28px 28px 0;
    text-align: center;
}

.c-modal__icon {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
}

.c-modal__icon--info {
    background: rgba(59, 130, 246, 0.15);
    color: var(--color-info);
}

.c-modal__icon--success {
    background: rgba(16, 185, 129, 0.15);
    color: var(--color-success-primary);
}

.c-modal__icon--warning {
    background: rgba(245, 158, 11, 0.15);
    color: var(--color-warning);
}

.c-modal__icon--danger {
    background: rgba(239, 68, 68, 0.15);
    color: var(--color-danger-primary);
}

.c-modal__icon i {
    font-size: 28px;
}

/* 弹窗标题 */
.c-modal__title {
    font-size: var(--font-size-md);
    color: var(--color-text-primary);
    margin: 0 0 8px;
    font-weight: var(--font-weight-semibold);
    line-height: 1.4;
}

/* 弹窗内容区域 */
.c-modal__body {
    padding: 0 28px 24px;
}

.c-modal__content {
    font-size: var(--font-size-xs);
    color: var(--color-text-secondary);
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-word;
}

/* 弹窗文本描述的精细呈现 */
.c-modal__content p {
    margin: 0 0 8px;
}

.c-modal__content p:last-child {
    margin-bottom: 0;
}

.c-modal__content strong {
    color: var(--color-text-primary);
    font-weight: var(--font-weight-medium);
}

.c-modal__content code {
    background: var(--color-bg-tertiary);
    padding: 2px 6px;
    border-radius: var(--radius-xs);
    font-family: var(--font-family-mono);
    font-size: 0.9em;
}

/* 弹窗操作按钮区域 */
.c-modal__actions {
    display: flex;
    gap: 10px;
    justify-content: center;
    padding: 20px 28px;
    background: var(--color-bg-secondary);
    border-top: 1px solid var(--color-border);
}

.c-modal__actions--end {
    justify-content: flex-end;
}

/* 弹窗按钮样式增强 */
.c-modal__actions .btn {
    min-width: 80px;
    padding: 10px 20px;
}

/* 头像尺寸 */
.avatar {
    border-radius: 50%;
    display: flex;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    background: var(--color-bg-quaternary);
    overflow: hidden;
    flex-shrink: 0;
}

.avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.avatar-xl {
    width: 100px;
    height: 100px;
    font-size: var(--font-size-lg);
}

/* 用户档案页面的大头像 */
.avatar-lg {
    width: 60px;
    height: 60px;
    font-size: var(--font-size-md);
}

/* 组织头部头像 */
.avatar-square {
    width: 60px;
    height: 60px;
    font-size: var(--font-size-md);
    border-radius: var(--radius-sm);
    background: var(--color-primary-200);
}

/* 供应商卡片列表头像 */
.avatar-md {
    width: 48px;
    height: 48px;
    font-size: var(--font-size-sm);
}

/* 成员管理列表、供应商左侧列表图标 */
.avatar-sm {
    width: 32px;
    height: 32px;
    font-size: var(--font-size-xxs);
}

/* 部门、岗位列表上的小图标 */
.avatar-icon {
    width: 20px;
    height: 20px;
    padding: 3px;
}

/* 布局：工作台整体 — Portmaster 深色主题 */
body {
    font-family: var(--font-family-base);
    font-weight: var(--font-weight-base);
    font-size: var(--font-size-xxs);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    overflow: hidden;
    line-height: var(--line-height-base);
}

.workspace {
    display: flex;
    height: 100vh;
    padding-left: 75px; /* 为 fixed 定位的 main-nav 留出空间 */
}

.sub-sidebar {
    width: 240px;
    background: #22222220;
    color: var(--color-text-primary);
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--color-border);
    position: relative;
    z-index: 101;
}

/* ★ 桌面端：半透明背景让流光透出，移动端不启用（避免 backdrop-filter 性能问题） */
@media (min-width: 769px) {
    .sub-sidebar {
        backdrop-filter: blur(6px);
        -webkit-backdrop-filter: blur(6px);
    }
}

/* ══ 页面级流光背景（CSS Blob） ══
   替代 main-nav canvas 粒子系统，通过模糊色块 + JS 漂移实现流光动效
   HTML 组件：components/blob_glow.html
   引入位置：workspace.html / public_left_sidebar.html / user_space_base.html
*/
.blob-glow {
    position: fixed;
    top: -20vh;                        /* 向上溢出，让流光中心偏左上 */
    left: calc(-10vw - 250px);         /* 向左溢出，确保流光重心在导航区域 */
    width: 65vw;
    height: 80vh;
    z-index: 0;
    pointer-events: none;
    /* 双方向 mask 渐变：从左上角向右下角自然消散
       水平方向：0%~40% 实→半透明→0% 渐变消失
       垂直方向：0%~50% 实→半透明→0% 渐变消失
       mask-composite: intersect 取交集，形成左上角集中、向右下渐隳的效果 */
    -webkit-mask-image:
        linear-gradient(to right, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 40%, transparent 100%),
        linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.5) 50%, transparent 100%);
    mask-image:
        linear-gradient(to right, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 40%, transparent 100%),
        linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.5) 50%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-composite: intersect;
}

/* 单个色块基础样式：圆形 + 模糊 + GPU 加速 */
.blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(60px);             /* 核心效果：60px 高斯模糊，产生柔和发光感 */
    will-change: transform;           /* 提升 GPU 合成层，避免重绘 */
    opacity: 0.35;                    /* 基础透明度，避免过亮影响内容可读性 */
}

/* blob-1~6 尺寸：必须与 blob_glow.html JS 中 blobSizes 数组一致
   背景色 CSS 变量 --blob-c1~c6 由 blob_glow.html JS 动态写入，
   此处 hsl() 为初始/回退色（JS 未加载时显示） */
.blob-1 { width: 350px; height: 350px; background: var(--blob-c1, hsl(160, 85%, 45%)); }
.blob-2 { width: 280px; height: 280px; background: var(--blob-c2, hsl(200, 80%, 50%)); }
.blob-3 { width: 230px; height: 230px; background: var(--blob-c3, hsl(280, 75%, 48%)); }
.blob-4 { width: 400px; height: 400px; background: var(--blob-c4, hsl(120, 80%, 42%)); }
.blob-5 { width: 200px; height: 200px; background: var(--blob-c5, hsl(50, 90%, 50%)); }
.blob-6 { width: 300px; height: 300px; background: var(--blob-c6, hsl(320, 70%, 45%)); }

/* 移动端隐藏 blob 流光（省电 + 避免小屏横向溢出） */
@media (max-width: 768px) {
    .blob-glow { display: none; }
}

/* Logo 区域 */
.sub-sidebar-logo {
    padding: 30px;
    display: flex;
    align-items: center;
    gap: 10px;
    border-bottom: 0px solid var(--color-border);
    background: transparent;
}

.logo-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-primary), var(--color-info));
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 2px 8px rgba(8, 179, 116, 0.2);
}

.logo-svg {
    width: 24px;
    height: 24px;
    filter: brightness(0) saturate(100%) invert(100%);
}

.logo-text {
    font-size: 18px;
    font-weight: var(--font-weight-bold);
    color: var(--color-text-primary);
    letter-spacing: 0.5px;
}

/* 响应式适配 */
@media (max-width: 768px) {
    .sub-sidebar {
        width: 240px;
    }
    
    .sub-sidebar-logo {
        padding: 15px;
    }
    
    .logo-icon {
        width: 36px;
        height: 36px;
    }
    
    .logo-svg {
        width: 20px;
        height: 20px;
    }
    
    .logo-text {
        font-size: 16px;
    }
}

@media (max-width: 480px) {
    .sub-sidebar {
        width: 60px;
    }
    
    .sub-sidebar-logo {
        padding: 12px;
        justify-content: center;
    }
    
    .logo-text {
        display: none; /* 小屏幕隐藏文字 */
    }
    
    .logo-icon {
        width: 32px;
        height: 32px;
    }
    
    .logo-svg {
        width: 18px;
        height: 18px;
    }
}



/* =================================================================
   图标统一样式
   ================================================================= */

/* 1. 中等尺寸图标 (28px) - 供应商列表 */
.provider-management-loaded .provider-icon {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--color-card-secondary);
    border: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    overflow: hidden;
}

.provider-management-loaded .provider-icon img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* 2. 资源缩略图图标 (24px) */
.resource-thumbnail img {
    width: 24px;
    height: 24px;
}

/* 3. 常规尺寸图标 (16px) - 导航图标、TAB栏图标、按钮图标 */
.nav-item-icon {
    width: 20px;
    text-align: center;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 4. 最小图标 (14px) - 作者信息、统计数据 */
.resource-author img,
.resource-stats img {
    width: 14px;
    height: 14px;
}

/* 5. 特大空状态图标 (64px) */
.empty-icon img {
    width: 64px;
    height: 64px;
}

/* =================================================================
   图标样式统一结束
   ================================================================= */

.user-info {
    flex: 1;
    overflow: hidden;
}

.user-name {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-base);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-role {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 2px;
}

/* 搜索与导航 — Portmaster 深色主题 */
.sidebar-header {
    padding: 15px;
    background: var(--color-bg-tertiary);
    margin-bottom: 5px;
    border-radius: var(--radius-xs);
    border: 1px solid var(--color-border);
}

.sidebar-search {
    padding: 0px;
}

.search-box {
    position: relative;
}

.search-box input {
    width: 100%;
    padding: 0 35px 0 10px;
    height: var(--control-height-md);
    line-height: var(--control-height-md);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    color: var(--color-text-primary);
    font-size: var(--font-size-xxs);
    transition: all var(--motion-normal) var(--motion-ease);
    box-sizing: border-box;
}

.search-box input:hover {
    background: var(--color-bg-primary);
}

.search-box input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-200);
    background-color: var(--color-bg-primary);
}

.search-box input::placeholder {
    color: var(--color-text-tertiary);
}

.search-result-info {
    margin-top: 10px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.search-icon {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 16px;
    color: var(--color-text-tertiary);
    line-height: 1;
    pointer-events: none;
}

/* 兼容旧版 SVG 图标（仅保留尺寸） */
.search-icon img {
    width: 16px;
    height: 16px;
    display: block;
}

.sub-sidebar-nav {
    flex: 1;
    overflow-y: auto;
}

.sub-sidebar-nav::-webkit-scrollbar {
    width: 4px;
}

.sub-sidebar-nav::-webkit-scrollbar-thumb {
    background: var(--color-button-light);
    border-radius: var(--radius-xs);
}

.sub-sidebar-nav::-webkit-scrollbar-track {
    background: transparent;
}

.sub-sidebar-nav::-webkit-scrollbar-button {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
}

.nav-section {
    margin-bottom: 0px;
}

.nav-section-title {
    padding: 6px 16px;
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: .5px;
}

.nav-item {
    padding: 8px 15px;
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: var(--color-text-secondary);
    font-size: var(--font-size-xxs);
    transition: background var(--motion-normal) var(--motion-ease);
}

.nav-item:hover {
    background: #ffffff20;
}

.nav-item.active {
    background: #ffffff15;
    color: var(--color-text-primary);
}

.nav-item.active .nav-item-icon {
    color: var(--color-light);
}

.nav-item.nav-item-disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.nav-item.nav-item-disabled:hover {
    background: transparent;
}

.nav-item-text {
    flex: 1;
}

.nav-item-text:hover {
    color: var(--color-text-primary);
}

.nav-item-badge {
    background: var(--color-danger-primary);
    color: var(--color-text-primary);
    padding: 0;
    border-radius: 9px;
    font-size: 0.6rem;
    font-weight: var(--font-weight-base);
    min-width: 18px;
    height: 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.nav-item-arrow {
    width: 20px;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform var(--motion-normal) var(--motion-ease);
}

.nav-item.expanded .nav-item-arrow {
    transform: rotate(180deg);
}

.nav-subitems {
    display: none;
}

.nav-subitems.show {
    display: block;
}

.nav-subitem {
    margin: 2px 0px 2px 0px;
    padding: 6px 10px;
    padding-left: 55px;
    border-radius: var(--radius-xs);
    display: flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xxs);
    transition: background var(--motion-normal) var(--motion-ease);
}

.nav-subitem:hover {
    background: #222222;
    color: var(--color-text-secondary);
}

.nav-subitem.active {
    background: var(--color-bg-quaternary);
    color: var(--color-text-primary);
}

/* 导航栏组织角色胶囊标签 */
.nav-badge {
    margin-left: auto;
    padding: 4px 6px;
    font-size: var(--font-size-xxs);
    font-size: 10px;
    border-radius: var(--radius-full);
    line-height: 1;
    flex-shrink: 0;
}

.nav-badge-owner {
    background: var(--color-primary-200);
    color: var(--color-primary);
}

.nav-badge-admin {
    background: var(--color-success-tertiary);
    color: #34d399;
}

/* TAB 导航容器和内容统一样式 */
.tabs {
    display: flex;
    flex-direction: column;
}

.tab-header {
    display: flex;
    gap: 0px;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 0;
    margin-bottom: 20px;
}

/* TAB 导航容器统一样式 */
.tab-buttons {
    display: flex;
    align-items: center;
    gap: 0;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 0;
}

/* TAB 导航按钮统一样式 */
.tab-button, .chat-tab-button {
    padding: 12px 20px;
    background: none;
    border: none;
    border-bottom: 3px solid transparent;
    cursor: pointer;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-tertiary);
    transition: all var(--motion-slow) var(--motion-smooth);
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-bottom: -2px;
}



.tab-button:hover, .chat-tab-button:hover {
    color: var(--color-text-primary);
}

.tab-button.active, .chat-tab-button.active {
    color: var(--color-text-primary);
    border-bottom-color: var(--color-primary);
}

.tab-button:disabled, .chat-tab-button:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* TAB 内容区统一样式 */
.tab-content {
    display: none;
    padding: 0;
}

.tab-content.active {
    display: block;
}

/* 筛选胶囊按钮（提示词类型等场景） */
.prompt-type-btn {
    padding: 5px 14px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border);
    border-radius: 16px;
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    white-space: nowrap;
    line-height: 1.4;
}
.prompt-type-btn:hover {
    color: var(--color-text-primary);
    border-color: var(--color-text-tertiary);
    background: var(--color-bg-secondary);
}
.prompt-type-btn.active {
    color: var(--color-primary);
    border-color: var(--color-primary);
    background: color-mix(in srgb, var(--color-primary) 10%, transparent);
}

/* TAB 导航图标统一样式（已改用 icon font） */
.tab-button img {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

/* TAB 导航字体图标样式（RemixIcon 等） */
.tab-button i, .chat-tab-button i {
    color: var(--color-text-tertiary);
    transition: color var(--motion-normal) var(--motion-ease);
}

.tab-button:hover i, .chat-tab-button:hover i {
    color: var(--color-text-primary);
}

.tab-button.active i, .chat-tab-button.active i {
    color: var(--color-text-primary);
}

/* 工具栏样式 */
.toolbar {
    display: flex;
    gap: 15px;
    align-items: center;
    margin-bottom: 20px;
    justify-content: space-between;
}

.toolbar .search-input {
    flex: 0 0 auto;
    width: 400px;
    min-width: 300px;
}

.toolbar .filter-group {
    display: flex;
    gap: 5px;
    align-items: center;
    margin-left: auto;
}

/* 统计栏样式 */
.stats-bar {
    display: flex;
    gap: 20px;
    margin-bottom: 20px;
    padding: 16px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-xs);
    border: 1px solid var(--color-border);
}

.stat-item {
    display: flex;
    align-items: center;
    gap: 8px;
}

.stat-label {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-bottom: 8px;
}

/* stats-bar中的stat-label水平排列，无需下边距 */
.stats-bar .stat-label {
    margin-bottom: 0;
}

.stat-value {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    line-height: 1;
    margin: 0;
}

.stat-value-mini {
    font-size: var(--font-size-xxs);
    line-height: 1;
    margin: 0;
}

/* 资源网格和卡片样式 */
.resource-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
}

.resource-card {
    background: var(--color-card-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    overflow: hidden;
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
}

.resource-card:hover {
    box-shadow: none;
    transform: translateY(-2px);
    background: var(--color-card-primary);
}

.resource-thumbnail {
    width: 100%;
    height: 180px;
    background: var(--color-bg-tertiary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 48px;
    position: relative;
    color: var(--color-text-tertiary);
    border-bottom: 1px solid var(--color-border);
}

/* 资源缩略图 img 已在图标统一样式区定义 */

.resource-thumbnail-media {
    overflow: hidden;
}

.resource-thumbnail-media img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    border-radius: 0;
}

.resource-play-icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 36px;
    color: rgba(255, 255, 255, 0.85);
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    pointer-events: none;
}

.resource-type-badge {
    position: absolute;
    top: 12px;
    right: 12px;
    padding: 4px 10px;
    background: rgba(255, 255, 255, 0.10);
    border-radius: 12px;
    font-size: 0.65rem;
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    display: flex;
    align-items: center;
    line-height: 1;
}

.resource-content {
    padding: 15px;
}

.resource-title {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    margin-bottom: 8px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.resource-description {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    margin-bottom: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
}

.resource-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.resource-author {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* resource-author img 已在图标统一样式区定义 */

.resource-stats {
    display: flex;
    gap: 10px;
}

.resource-stats span {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

/* resource-stats img 已在图标统一样式区定义 */

/* 取消收藏 / 取消点赞按钮 */
.resource-action-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xxs);
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
    margin-left: auto;
}
.resource-action-btn:hover {
    background: var(--color-bg-tertiary);
    border-color: var(--color-text-tertiary);
    color: var(--color-text-secondary);
}

/* =================================================================
   文字型卡片（无缩略图）— prompt / skill / market 共用
   ================================================================= */
.market-card,
.prompt-card,
.skill-card {
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 20px;
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    text-decoration: none;
    color: inherit;
    display: block;
}

.market-card:hover,
.prompt-card:hover,
.skill-card:hover {
    border-color: var(--color-primary);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    transform: translateY(-2px);
}

/* 卡片价格标签 */
.card-price,
.skill-price,
.prompt-card-price {
    font-weight: var(--font-weight-semibold);
    color: var(--color-primary);
}

.card-price.free,
.skill-price.free,
.prompt-card-price.free {
    color: var(--color-success);
}

/* 提示词卡片子元素 */
.prompt-card-title {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    margin: 0 0 8px 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.prompt-card-desc {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    line-height: 1.5;
    margin-bottom: 12px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.prompt-card-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.prompt-card-author {
    display: flex;
    align-items: center;
    gap: 4px;
}

.prompt-card-stats {
    display: flex;
    gap: 10px;
}

.prompt-card-stat {
    display: flex;
    align-items: center;
    gap: 3px;
}

/* 技能卡片子元素 */
.skill-card-header {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
}

.skill-icon {
    width: 44px;
    height: 44px;
    border-radius: var(--radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    flex-shrink: 0;
    background: var(--color-bg-tertiary);
}

.skill-icon img {
    width: 100%;
    height: 100%;
    border-radius: var(--radius-md);
    object-fit: cover;
}

.skill-info {
    flex: 1;
    min-width: 0;
}

.skill-name {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    margin: 0 0 4px 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.skill-author {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.skill-desc {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    line-height: 1.5;
    margin-bottom: 12px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.skill-tags {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.skill-tag {
    padding: 2px 8px;
    font-size: 11px;
    border-radius: 10px;
    background: var(--color-bg-quinary);
    color: var(--color-text-secondary);
    transition: background 0.2s, color 0.2s;
}

.skill-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.skill-stats {
    display: flex;
    gap: 12px;
}

.skill-stat {
    display: flex;
    align-items: center;
    gap: 3px;
}

/* 渐变徽章：精选/推荐（橙色渐变） */
.badge-featured,
.badge-recommended {
    display: inline-block;
    padding: 2px 6px;
    font-size: 10px;
    font-weight: var(--font-weight-semibold);
    border-radius: var(--radius-md);
    background: linear-gradient(135deg, #f59e0b, #f97316);
    color: #fff;
    margin-left: 6px;
    vertical-align: middle;
}

/* 渐变徽章：官方（紫色渐变） */
.badge-official {
    display: inline-block;
    padding: 2px 6px;
    font-size: 10px;
    font-weight: var(--font-weight-semibold);
    border-radius: var(--radius-md);
    background: linear-gradient(135deg, #6366f1, #8b5cf6);
    color: #fff;
    margin-left: 6px;
    vertical-align: middle;
}

/* "查看全部"链接 */
.section-more {
    font-size: var(--font-size-xxs);
    color: var(--color-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.section-more:hover {
    opacity: 0.8;
}


/* =================================================================
   空状态组件 - 统一的"无内容"提示样式
   使用场景：空列表、空数据、功能未开发等
   ================================================================= */

/* 容器 */
.empty-state {
    text-align: center;
    padding: 80px 20px;
    color: var(--color-text-tertiary);
}

/* 图标区（emoji或图标） */
.empty-state-icon {
    font-size: 48px;
    margin-bottom: 15px;
    display: block;
    line-height: 1;
}

/* 主标题（核心提示信息） */
.empty-state-title {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    margin-bottom: 8px;
}

/* 副标题/说明文字 */
.empty-state-hint {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 8px;
    line-height: 1.6;
}

/* 操作按钮（可选） */
.empty-state-action {
    display: inline-block;
    margin-top: 20px;
    padding: 10px 20px;
    background: var(--color-primary);
    color: var(--color-on-primary);
    text-decoration: none;
    border-radius: var(--radius-xs);
    font-weight: var(--font-weight-base);
    font-size: var(--font-size-xxs);
    transition: background var(--motion-normal) var(--motion-ease);
}

.empty-state-action:hover {
    background: var(--color-tertiary);
}

/* 分页控件样式 */
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-top: 20px;
}

.pagination-btn {
    padding: 8px 16px;
    border: 1px solid var(--color-border);
    background: var(--color-card-tertiary);
    border-radius: var(--radius-xs);
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    font-size: var(--font-size-xxs);
    color: var(--color-text-primary);
}

.pagination-btn:hover:not(:disabled) {
    background: var(--color-button-dark);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.pagination-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

#page-info {
    padding: 8px 16px;
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xxs);
}

#page-info span {
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
}

/* 分页容器（列表页通用） */
.pagination-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    padding: 20px 0;
}

.pagination-info {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    padding: 0 8px;
}

/* 排序控件（列表页通用） */
.sort-bar {
    display: flex;
    gap: 12px;
    margin-bottom: 20px;
    align-items: center;
}

.sort-label {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.sort-btn {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    cursor: pointer;
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    background: none;
    border: none;
    transition: all var(--motion-normal) var(--motion-ease);
}

.sort-btn:hover,
.sort-btn.active {
    color: var(--color-primary);
    background: var(--color-primary-light, rgba(99, 102, 241, 0.1));
}

/* 技能卡片网格 */
.skill-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}

/* 标签交互态 */
.skill-tag:hover,
.prompt-card-tag:hover {
    background: var(--color-primary);
    color: var(--color-on-primary);
}

.skill-tag.current,
.prompt-card-tag.current {
    background: var(--color-primary);
    color: var(--color-on-primary);
}

/* 提示词卡片标签 */
.prompt-card-tags {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.prompt-card-tag {
    display: inline-block;
    padding: 2px 8px;
    font-size: 11px;
    border-radius: 10px;
    background: var(--color-bg-quinary);
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: background var(--motion-normal) var(--motion-ease);
}

/* 加载中占位 */
.section-loading {
    text-align: center;
    padding: 40px;
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xxs);
}

/* 评分星级 */
.rating-stars {
    color: #f59e0b;
    font-size: 11px;
}

/* =================================================================
   列表页通用布局（skills / prompts / mcp / tag 页面共用）
   顺序：广告 → 标题+按钮 → 搜索 → 分类 → 排序 → 内容 → 分页
   ================================================================= */

/* 页面容器 */
.list-page {
    max-width: 1200px;
    margin: 0 auto;
}

/* 标题行：左标题 + 右按钮 */
.list-page-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}

.list-page-header h2 {
    font-size: 20px;
    font-weight: 600;
    color: var(--color-text-primary);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.list-page-actions {
    display: flex;
    gap: 8px;
}

/* 搜索行（标题下方，独立一行）
   搜索框统一使用 class="search-input"（定义在 common.css 全局搜索框样式处） */
.list-page-search {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
    align-items: center;
}

/* 分类标签行 */
.category-chips {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}

.category-chip {
    padding: 6px 14px;
    font-size: 12px;
    border: 1px solid var(--color-border);
    border-radius: 20px;
    background: var(--color-bg-secondary);
    color: var(--color-text-secondary);
    cursor: pointer;
    transition: all 0.2s;
    text-decoration: none;
}

.category-chip:hover,
.category-chip.active {
    background: var(--color-primary);
    color: var(--color-on-primary);
    border-color: var(--color-primary);
}

/* 列表页操作按钮 */
.btn-primary-sm {
    padding: 8px 16px;
    font-size: 13px;
    font-weight: 500;
    border: none;
    border-radius: var(--radius-md);
    background: var(--color-primary);
    color: var(--color-on-primary);
    cursor: pointer;
    transition: opacity 0.2s;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}

.btn-primary-sm i {
    color: var(--color-on-primary);
}

.btn-primary-sm:hover { opacity: 0.9; }

.btn-secondary-sm {
    padding: 8px 16px;
    font-size: 13px;
    font-weight: 500;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
    cursor: pointer;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    transition: background 0.2s;
    white-space: nowrap;
}

.btn-secondary-sm:hover { background: var(--color-bg-tertiary); }

/* 标签徽章（tag 页面专用） */
.tag-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 14px;
    font-size: 14px;
    font-weight: 500;
    border-radius: 20px;
    background: var(--color-primary);
    color: var(--color-on-primary);
}

.tag-badge i {
    font-size: 14px; 
    color: var(--color-on-primary);
}

/* ===== 广告位公共样式（ad-slot） ===== */
.ad-slot-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 15px;
    text-decoration: none;
    color: var(--color-text-primary);
    transition: all var(--motion-normal) var(--motion-ease);
    cursor: pointer;
    margin-bottom: 6px;
}

.ad-slot-item:last-child {
    margin-bottom: 0;
}

.ad-slot-item:hover {
    opacity: 0.85;
}

.ad-slot-img {
    width: 100%;
    height: 130px;
    object-fit: cover;
    border-radius: var(--radius-xs);
}

/* 子导航栏广告位覆盖 */
.ad-slot-sub_nav_bar {
    overflow: hidden;
}

/* 子导航底部与升级卡 — Portmaster 深色主题 */
.sub-sidebar-footer {
    padding: 12px;
}

.upgrade-card {
    background: var(--color-card-secondary);
    padding: 14px;
    border-radius: var(--radius-sm);
    margin-bottom: 10px;
    border: 1px solid var(--color-border);
}

.upgrade-card h4 {
    font-size: var(--font-size-xs);
    margin-bottom: 6px;
    color: var(--color-text-primary);
    font-weight: var(--font-weight-base);
}

.upgrade-card p {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    opacity: .9;
    margin-bottom: 10px;
}

.upgrade-btn {
    width: 100%;
    padding: 8px;
    background: var(--color-primary-200);
    border: 1px solid var(--color-tertiary);
    border-radius: var(--radius-xs);
    color: var(--color-text-primary);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    cursor: pointer;
    transition: background var(--motion-normal) var(--motion-ease);
}

.upgrade-btn:hover {
    background: var(--color-tertiary);
}

/* 主内容区 — Portmaster 深色主题 */
.main-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--color-bg-primary);
}

.content-header {
    padding: 12px 25px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--color-border);
    background: #0a0a0a30;
}

/* 右侧操作区域 */
.header-right-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-left: auto;
}

/* 头部操作按钮 */
.header-action-btn {
    position: relative;
    padding: 6px;
    border-radius: var(--radius-sm);
    background: transparent;
    border: none;
    color: var(--color-text-tertiary);
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
}

.header-action-btn:hover {
    color: var(--color-text-primary);
    background: rgba(255, 255, 255, 0.05);
}

/* 消息通知徽章 */
.header-notification {
    position: relative;
}

.notification-badge {
    position: absolute;
    top: 3px;
    right: 3px;
    width: 8px;
    height: 8px;
    background: var(--color-danger-primary);
    border-radius: 50%;
    border: 2px solid var(--color-bg-primary);
    font-size: 0;
}

/* 头部能量余额显示 */
.header-energy-display {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    border-radius: var(--radius-sm);
    text-decoration: none;
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
}

.header-energy-display:hover {
    background: rgba(255, 255, 255, 0.05);
}

.header-energy-icon {
    font-size: 14px;
    color: #f0c040;
}

.header-energy-value {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    color: #f0c040;
    white-space: nowrap;
}

/* 分隔线 */
.header-separator {
    height: 24px;
    width: 1px;
    background: var(--color-border);
    margin: 0 4px;
}

/* 用户信息区域 */
.header-user-profile {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    padding-left: 8px;
    transition: all var(--motion-normal) var(--motion-ease);
}

.header-user-info {
    text-align: right;
    display: none; /* 默认隐藏，在 sm 断点以上显示 */
    line-height: 1.2; /* 减小行间距，让两行更紧凑 */
}

@media (min-width: 640px) {
    .header-user-info {
        display: block;
    }
}

.header-user-name {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    transition: color var(--motion-normal) var(--motion-ease);
    line-height: 1.2;
    margin-bottom: 2px; /* 减小与下一行的间距 */
}

.header-user-profile:hover .header-user-name {
    color: var(--color-primary);
}

.header-user-role {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    line-height: 1.2;
}

/* 头像容器 */
.header-user-avatar-wrapper {
    position: relative;
}

/* 头像光晕效果 */
.header-avatar-glow {
    position: absolute;
    inset: -2px;
    background: linear-gradient(to top right, var(--color-primary), var(--color-info));
    border-radius: 50%;
    opacity: 0;
    transition: opacity 300ms;
    filter: blur(2px);
}

.header-user-profile:hover .header-avatar-glow {
    opacity: 1;
}

/* 头像 */
.header-user-avatar {
    position: relative;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--color-bg-secondary);
    overflow: hidden;
    transition: all var(--motion-normal) var(--motion-ease);
    display: flex;
    align-items: center;
    justify-content: center;
}

.header-user-profile:hover .header-user-avatar {
    border-color: transparent;
}

.avatar-image {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background: var(--color-bg-secondary);
    object-fit: cover;
}

.avatar-placeholder {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    background: var(--color-primary-200);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 600;
    text-transform: uppercase;
}

/* TAB 角标样式 */
.tab-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    font-size: var(--font-size-xxs);
    border-radius: var(--radius-full);
    background: var(--color-bg-tertiary);
    color: var(--color-text-tertiary);
}

.tab-button.active .tab-badge {
    background: var(--color-tertiary);
    color: var(--color-light);
}

.tab-badge-warning {
    background: var(--color-warning) !important;
    color: #000 !important;
}

/* 头像图片 */
.avatar-img {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    object-fit: cover;
}

/* 组织链接 */
.org-link {
    color: var(--color-text-primary);
    text-decoration: none;
}

.org-link:hover {
    color: var(--color-primary);
    text-decoration: underline;
}

/* 筛选按钮计数 */
.filter-count {
    opacity: 0.7;
    font-size: 12px;
}

/* 高亮卡片 */
.stat-card-highlight {
    background: var(--color-primary-200);
    border: 1px solid var(--color-primary);
}

.stat-value-light {
    color: var(--color-light);
}

/* 在线状态指示器 */
/* 用户下拉菜单样式已迁移至 .global-user-menu 统一组件 */

.create-menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 30px;
    background: var(--color-bg-primary);
    border-radius: var(--radius-sm);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);
    min-width: 200px;
    z-index: 1000;
    overflow: hidden;
    border: 1px solid var(--color-primary);
}

.create-menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    text-decoration: none;
    color: var(--color-text-primary);
    transition: background var(--motion-normal) var(--motion-ease);
    border-bottom: 1px solid var(--color-border);
    font-size: var(--font-size-xxs);
}

.create-menu-item:last-child {
    border-bottom: none;
}

.create-menu-item:hover {
    background: #222222;
}

.create-icon {
    font-size: 18px;
    width: 20px;
    text-align: center;
}

.content-title {
    font-size: 22px;
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    margin-bottom: 6px;
}

.breadcrumb {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.breadcrumb-item {
    display: flex;
    align-items: center;
    gap: 8px;
}

.breadcrumb-separator {
    color: var(--color-border-light);
}

.breadcrumb-link {
    color: var(--color-text-tertiary);
    text-decoration: none;
    transition: color var(--motion-normal) var(--motion-ease);
}

.breadcrumb-link:hover {
    color: var(--color-text-secondary);
}

.content-body {
    flex: 1;
    overflow-y: auto;
    padding: 45px;
    background: var(--color-bg-primary);
}

.content-body::-webkit-scrollbar {
    width: 4px;
}

.content-body::-webkit-scrollbar-thumb {
    background: var(--color-button-light);
    border-radius: var(--radius-xs);
}

.content-body::-webkit-scrollbar-thumb:hover {
    background: var(--color-button-dark);
}

.content-body::-webkit-scrollbar-track {
    background: transparent;
}

.content-body::-webkit-scrollbar-button {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
}

.nav-separator {
    height: 1px;
    background: var(--color-border);
    margin: 10px 16px;
}

/* 首页仪表盘与欢迎区样式已迁移至 my.css（复用 my.css）*/

/* 保留 overview-card hover 效果（公共组件） */
.overview-card:hover {
    box-shadow: none;
    transform: translateY(0px);
    background: var(--color-card-primary);
}

/* 创作页 — Portmaster 深色主题 */
.search-input {
    position: relative;
    flex: 1;
    max-width: 400px;
    padding: 0 35px 0 10px;
    height: var(--control-height-md);
    line-height: var(--control-height-md);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xxs);
    background: var(--color-bg-primary) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="%23aaaaaa" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>') no-repeat right 12px center;
    background-size: 16px 16px;
    color: var(--color-text-primary);
}

.search-input:hover {
    background-color: var(--color-bg-primary);
}

.search-input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-200);
    background-color: var(--color-bg-primary);
}

.search-input::placeholder {
    color: var(--color-text-tertiary);
}

.filter-group {
    display: flex;
    gap: 10px;
}

.filter-select {
    padding: 10px 16px;
    border: none;
    border-radius: var(--radius-sm);
    background: var(--color-bg-tertiary);
    cursor: pointer;
    font-size: var(--font-size-xxs);
    color: var(--color-text-primary);
    transition: all var(--motion-normal) var(--motion-ease);
}

.filter-select:hover {
    color: var(--color-text-primary);
}

.filter-select:focus {
    outline: none;
}

.creation-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 20px;
}

.creation-card {
    background: var(--color-card-secondary);
    border-radius: var(--radius-sm);
    padding: 20px;
    box-shadow: none;
    transition: all var(--motion-normal) var(--motion-ease);
    cursor: pointer;
    position: relative;
    border: 1px solid var(--color-border);
}

/* 画布卡片（带封面图）*/
.creation-card.board-card {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.creation-card.board-card .board-card-body {
    padding: 12px 16px 16px;
}

.board-cover {
    width: 100%;
    height: 160px;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-bg-tertiary);
    cursor: pointer;
    position: relative;
}

.board-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.3s ease;
}

.creation-card.board-card:hover .board-cover img {
    transform: scale(1.03);
}

/* 封面 hover 遮罩层 + 操作按钮 */
.board-cover-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    opacity: 0;
    transition: opacity 0.2s ease;
    z-index: 1;
}

.board-cover:hover .board-cover-overlay {
    opacity: 1;
}

.board-cover-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 14px;
    font-size: 12px;
    font-weight: 500;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    white-space: nowrap;
    transition: opacity 0.15s, transform 0.15s;
    text-decoration: none;
    line-height: 1.4;
}

.board-cover-btn:hover {
    opacity: 0.9;
}

.board-cover-btn-primary {
    background: var(--color-primary);
    color: var(--color-on-primary);
}

.board-cover-btn-secondary {
    background: rgba(255, 255, 255, 0.3);
    color: var(--color-on-primary);
}

.board-cover-btn-secondary:hover {
    background: rgba(255, 255, 255, 0.5);
}

.board-cover-empty {
    background: var(--color-bg-tertiary);
}

/* 画布更多菜单 */
.board-more-menu {
    position: absolute;
    top: 100%;
    right: 0;
    z-index: 100;
    min-width: 100px;
    background: var(--color-card-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xs);
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    padding: 4px 0;
}

.board-menu-item {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    padding: 6px 12px;
    border: none;
    background: transparent;
    color: var(--color-text-secondary);
    font-size: var(--font-size-xxs);
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s ease;
}

.board-menu-item:hover {
    background: var(--color-bg-tertiary);
    color: var(--color-text-primary);
}

.board-menu-item-danger:hover {
    color: var(--color-danger-primary);
}

.creation-card:hover {
    box-shadow: none;
    transform: translateY(-2px);
    background: var(--color-card-primary);
}

.creation-header {
    display: flex;
    justify-content: space-between;
    align-items: start;
    margin-bottom: 12px;
}

.creation-title {
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    margin-bottom: 8px;
    line-height: 1.4;
}

.creation-description {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    line-height: 1.6;
    margin-bottom: 15px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.creation-meta {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.creation-meta-item {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.creation-badges {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.badge {
    padding: 4px 10px;
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
}

.badge-status {
    background: var(--color-info);
    color: var(--color-text-primary);
    opacity: 0.9;
}

.badge-draft {
    background: var(--color-warning-tertiary);
    color: var(--color-warning-primary);
}

.badge-published {
    background: var(--color-tertiary);
    color: var(--color-light);
}

.badge-visibility {
    background: var(--color-primary-200);
    color: var(--color-primary);
}

.badge-private {
    background: var(--color-danger-tertiary);
    color: var(--color-danger-primary);
}

.badge-public {
    background: var(--color-tertiary);
    color: var(--color-light);
}

.creation-actions {
    position: absolute;
    top: 16px;
    right: 16px;
    display: flex;
    gap: 8px;
}

.action-btn {
    width: 32px;
    height: 32px;
    border-radius: var(--radius-xs);
    border: 1px solid var(--color-border);
    background: var(--color-button-dark);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    transition: all var(--motion-normal) var(--motion-ease);
}

.action-btn:hover {
    background: var(--color-button-light);
    border-color: var(--color-primary);
}

/* 空状态样式已在上方统一定义，此处删除重复 */

/* =================================================================
   按钮系统 - 三级层级体系
   ================================================================= */

/* 筛选按钮区域通用样式 - macOS 风格分段控件 */
.filter-buttons {
    display: inline-flex;
    gap: 0;
    margin-bottom: 15px;
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.filter-buttons > button,
.filter-buttons > .btn-secondary {
    border-radius: 0;
    border: none;
    margin: 0;
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
}

.filter-buttons > button:last-child,
.filter-buttons > .btn-secondary:last-child,
.filter-buttons > .btn-tertiary:last-child {
    border-right: none;
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}

.filter-buttons > button:first-child,
.filter-buttons > .btn-secondary:first-child,
.filter-buttons > .btn-tertiary:first-child {
    border-radius: var(--radius-sm) 0 0 var(--radius-sm);
}

.filter-buttons > button:only-child,
.filter-buttons > .btn-secondary:only-child,
.filter-buttons > .btn-tertiary:only-child {
    border-radius: var(--radius-sm);
    border-right: none;
}

/* 分段控件 hover 样式 - 不覆盖 active */
.filter-buttons > button:hover:not(.active),
.filter-buttons > .btn-secondary:hover:not(.active),
.filter-buttons > .btn-tertiary:hover:not(.active) {
    background: var(--color-button-light);
    color: var(--color-text-primary);
}

/* 分段控件 active 样式 - 最高优先级（含 hover 状态）*/
.filter-buttons > button.active,
.filter-buttons > .btn-secondary.active,
.filter-buttons > .btn-tertiary.active,
.filter-buttons > button.active:hover,
.filter-buttons > .btn-secondary.active:hover,
.filter-buttons > .btn-tertiary.active:hover {
    background: var(--color-button-light) !important;
    color: var(--color-text-primary) !important;
}

/* 操作按钮组 - 普通按钮排列（非分段控件） */
.action-buttons {
    display: flex;
    gap: 8px;
    align-items: center;
    margin-bottom: 15px;
    flex-wrap: wrap;
}

/* 通用按钮基础样式 */
.btn,
.btn-primary,
.btn-secondary,
.btn-tertiary {
    height: 34px;
    padding: 0 12px;
    border-radius: var(--radius-xs);
    font-weight: var(--font-weight-base);
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--font-size-xxs);
    transition: all var(--motion-normal) var(--motion-ease);
    text-decoration: none;
    box-sizing: border-box;
    line-height: 1;
}

/* 一级按钮 - 主操作按钮（主题色背景，最高视觉权重）*/
.btn-primary {
    background: var(--color-primary);
    color: var(--color-on-primary);
}

.btn-primary:hover {
    background: var(--color-light);
    color: var(--color-on-primary);
}

.btn-primary i{
    color: var(--color-on-primary);
}

/* 二级按钮 - 次要操作按钮（亮于背景的深色块）*/
.btn-secondary {
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
    border: 0px solid var(--color-border);
}

.btn-secondary.active {
    background: var(--color-secondary);
    color: var(--color-text-primary);
    border-color: var(--color-button-light);
}

.btn-secondary:hover {
    background: var(--color-button-light);
    color: var(--color-text-primary);
    border-color: var(--color-secondary);
}

.btn-secondary:pressed {
    background: var(--color-bg-dark);
    color: var(--color-text-primary);
    border-color: var(--color-secondary);
}

/* 三级按钮 - 辅助操作按钮（线框样式，最低视觉权重）*/
.btn-tertiary {
    background: var(--color-bg-quaternary);
    color: var(--color-text-secondary);
    border: 1px solid var(--color-border);
}

.btn-tertiary.active {
    background: var(--color-secondary);
    color: white;
    border-color: var(--color-secondary);
}

.btn-tertiary:hover {
    background: var(--color-button-light);
    color: var(--color-text-primary);
    border-color: var(--color-button-light);
}

/* 纯文字按钮 - 无背景，无边框*/
.btn-none-style {
    background: transparent;
    border: none;
}

.btn-none-style .active {
    background: transparent;
    border: none;
}

.btn-none-style:hover {
    background: transparent;
    border: none;
}

/* 尺寸体系：大(40px)、中(32px)、小(26px) */
.btn-lg {
    height: 40px;
    padding: 0 20px;
    border-radius: var(--radius-md);
}

.btn-md {
    height: 34px;
    padding: 0 15px;
}

.btn-sm {
    height: 26px;
    padding: 0 10px;
}

/* 文本链接按钮 - 仅文字，无背景：用于列表中的小型操作按钮  */
.btn-link {
    background: transparent;
    border: none;
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xxs);
    padding: 0 4px;
    height: auto;
    line-height: 1.4;
    cursor: pointer;
    text-decoration: none;
}

.btn-link:hover {
    color: var(--color-light);
    text-decoration: underline;
}

.btn-link.active {
    color: var(--color-text-primary);
}

/* 文本链接按钮 - 危险操作（删除等）红色显示 */
.btn-link-danger {
    color: var(--color-text-tertiary);
}

.btn-link-danger:hover {
    color: var(--color-danger-primary);
}

/* 按钮状态样式 */
.btn-success {
    background: var(--color-light);
    color: var(--color-text-primary);
}

.btn-danger {
    background: var(--color-danger-secondary);
    color: var(--color-text-primary);
}

.btn-danger:hover {
    background: var(--color-danger-primary);
}

.btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* 按钮图标统一样式（已改用 icon font） */
.btn .btn-icon,
.btn-primary .btn-icon,
.btn-secondary .btn-icon,
.btn-tertiary .btn-icon {
    width: 14px;
    height: 14px;
}

/* =================================================================
   按钮系统结束
   ================================================================= */

/* =================================================================
   Slider 滑块控件统一样式
   ================================================================= */

/* 重置浏览器默认样式 */
input[type="range"] {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: 4px;
    background: transparent;
    outline: none;
    cursor: pointer;
}

/* 轨道样式 - Webkit (Chrome, Safari, Edge) */
input[type="range"]::-webkit-slider-runnable-track {
    width: 100%;
    height: 4px;
    background: var(--color-card-tertiary);
    border-radius: 2px;
}

/* 轨道样式 - Firefox */
input[type="range"]::-moz-range-track {
    width: 100%;
    height: 4px;
    background: var(--color-card-tertiary);
    border-radius: 2px;
}

/* 已填充进度样式 - Webkit - 使用渐变色，值数越大颜色越艳丽 */
input[type="range"].has-progress::-webkit-slider-runnable-track {
    background: linear-gradient(
            to right,
            rgba(102, 126, 234, 0.1) 0%,
            var(--color-primary) var(--progress-percent, 50%),
            var(--color-card-tertiary) var(--progress-percent, 50%),
            var(--color-card-tertiary) 100%
    );
}

/* 手柄样式 - Webkit */
input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 16px;
    height: 16px;
    background: var(--color-primary);
    border-radius: 50%;
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    box-shadow: 0 0 0 0 var(--color-light);
    margin-top: -6px;
}

/* 手柄样式 - Firefox */
input[type="range"]::-moz-range-thumb {
    width: 16px;
    height: 16px;
    background: var(--color-primary);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

/* Firefox 进度填充 - 使用渐变色 */
input[type="range"].has-progress::-moz-range-progress {
    background: linear-gradient(
            to right,
            rgba(102, 126, 234, 0.1) 0%,
            rgba(102, 126, 234, 0.5) 30%,
            var(--color-primary) 100%
    );
    height: 4px;
    border-radius: 2px;
}

/* 手柄 hover 效果 */
input[type="range"]::-webkit-slider-thumb:hover {
    background: var(--color-tertiary);
    transform: scale(1.1);
    box-shadow: 0 0 0 2px var(--color-light);
}

input[type="range"]::-moz-range-thumb:hover {
    background: var(--color-tertiary);
    transform: scale(1.1);
    box-shadow: 0 0 0 2px var(--color-light);
}

/* 禁用状态 */
input[type="range"]:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

input[type="range"]:disabled::-webkit-slider-thumb {
    cursor: not-allowed;
}

input[type="range"]:disabled::-moz-range-thumb {
    cursor: not-allowed;
}

/* =================================================================
   Slider 滑块控件结束
   ================================================================= */

/* =================================================================
   通用工具类 - Portmaster 风格
   ================================================================= */

/* 1. 错误提示样式 */
.error-message {
    color: var(--color-danger-primary);
    font-size: var(--font-size-xs);
    padding: 12px 16px;
    background: var(--color-danger-tertiary);
    border-left: 3px solid var(--color-danger-secondary);
    border-radius: var(--radius-xs);
}

.error-detail {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 8px;
}

/* 2. 空状态样式 */
.empty-hint {
    color: var(--color-text-tertiary);
    text-align: center;
    font-size: var(--font-size-xs);
    padding: 40px 20px;
}

/* 3. 表单布局样式 */
.radio-group--vertical {
    flex-direction: column !important;
}

.u-hidden {
    display: none !important;
}

/* 5. 加载状态样式 - Portmaster 风格 */
.loading-container {
    text-align: center;
    padding: 60px 20px;
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xs);
}

.loading-icon {
    width: 40px;
    height: 40px;
    margin: 0 auto 12px;
    animation: spin 1s linear infinite;
}

/* 6. 按钮组样式 */
.button-group--right {
    justify-content: flex-end;
}

.button-group--center {
    justify-content: center;
}

/* 7. 表单提示文字 */
.hint-text {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 8px;
    line-height: var(--line-height-base);
}

/* 9. 其他工具类 */
.tags-wrapper {
    margin-top: 15px;
}

/* =================================================================
   通用工具类结束
   ================================================================= */


.toolbar__filters {
    display: flex;
    align-items: center;
    gap: 10px;
}

.toolbar__filters-group {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-right: 10px;
}

/* 内容区工具栏 - 统一结构（筛选按钮 + 操作按钮） */
.content-toolbar {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 15px;
}

.content-toolbar .filter-buttons {
    margin-bottom: 0;
}

/* 概览卡片 — Portmaster 深色主题 */
.overview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 10px;
}

.overview-card {
    position: relative;
    background: var(--color-card-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 20px;
    transition: background var(--motion-normal) var(--motion-ease);
    cursor: pointer;
    overflow: hidden;
    isolation: isolate;
}

/* 卡片背景模糊层 */
.overview-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-image: var(--card-bg-image);
    background-size: cover;
    background-position: center;
    filter: blur(50px) brightness(0.35) saturate(1.3);
    opacity: 0.4;
    z-index: -1;
    transition: opacity var(--motion-normal) var(--motion-ease);
}

.overview-card:hover {
    background: rgba(41, 41, 41, 0.688);
    box-shadow: none;
    border-color: var(--color-primary);
    transition: all var(--motion-normal) var(--motion-ease);
}

.overview-card:hover::before {
    opacity: 0.6;
    filter: blur(50px) brightness(0.45) saturate(1.7);
}

.overview-card-header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 15px;
}

.overview-card-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--color-card-tertiary);
    border: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    overflow: hidden;
}

.overview-card-icon img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.overview-card-title {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
}

.overview-card-desc {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    line-height: var(--line-height-base);
    margin-bottom: 12px;
}

.overview-card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 12px;
    border-top: 1px solid var(--color-border);
}

/* Models 模型卡片扩展 */
.model-card { display: flex; flex-direction: column; gap: 6px; }
.model-card-id {
    font-size: 11px; color: var(--color-text-tertiary);
    font-family: var(--font-mono, monospace); overflow: hidden;
    text-overflow: ellipsis; white-space: nowrap;
}
.model-card-caps { display: flex; flex-wrap: wrap; gap: 4px; margin: 2px 0; }
.model-cap-tag {
    font-size: 10px; padding: 1px 6px; border-radius: 3px;
    background: var(--color-bg-tertiary); color: var(--color-text-secondary);
    white-space: nowrap;
}
.model-type-badge {
    font-size: 11px; padding: 2px 8px; border-radius: var(--radius-sm);
    background: var(--color-primary-alpha, rgba(99,102,241,.15));
    color: var(--color-primary); white-space: nowrap;
}
.model-card-stats { display: flex; gap: 8px; align-items: center; font-size: 11px; color: var(--color-text-tertiary); }
.model-card-stat { display: flex; align-items: center; gap: 2px; }
.model-card-stat i { font-size: 12px; }
.model-card-provider {
    display: flex; align-items: center; gap: 4px; font-size: 11px;
    color: var(--color-text-tertiary); margin-top: auto; padding-top: 6px;
}
.model-provider-icon { width: 14px; height: 14px; border-radius: 2px; }

/* 详情区块与资料卡 — Portmaster 深色主题 */
.detail-section {
    background: var(--color-card-secondary);
    border-radius: var(--radius-sm);
    padding: 20px;
    margin-bottom: 20px;
    border: 1px solid var(--color-border);
    max-width: 100%;
    box-sizing: border-box;
}

.provider-profile-card {
    display: flex;
    align-items: center;
    gap: 15px;
}

.provider-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    color: var(--color-text-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    overflow: hidden;
}

.provider-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.provider-info {
    flex: 1;
}

.provider-name {
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
}

.provider-description {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    margin-top: 6px;
}

.provider-website {
    display: inline-block;
    margin-top: 8px;
    color: var(--color-primary);
}

/* 模型列表与标签 — Portmaster 深色主题 */
.model-list-table {
    width: 100%;
    border-collapse: collapse;
}

.model-list-table th, .model-list-table td {
    text-align: left;
    padding: 10px 8px;
    border-bottom: 1px solid var(--color-border);
    font-size: var(--font-size-xxs);
}

.model-list-table th {
    color: var(--color-text-secondary);
    font-weight: var(--font-weight-base);
}

.capability-icons {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}


/* 小图标徽章基础样式（圆形背景 + 白色图标） */
.icon-badge,
.capability-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    padding: 5px;
    width: 12px;
    height: 12px;
}

.icon-badge {
    cursor: help;
}

.icon-badge img {
    width: 100%;
    height: 100%;
}

/* 能力图标默认背景 */
.capability-badge {
    background: rgba(255, 255, 255, 0.2);
}

/* 信息图标（灰色背景） */
.icon-badge-info {
    background: rgba(170, 170, 170, 0.20);
}

.icon-badge-info:hover {
    background: rgba(37, 189, 108, 0.20);
}

/* 价格图标（灰色背景） */
.icon-badge-price {
    background: rgba(170, 170, 170, 0.20);
}

.icon-badge-price:hover {
    background: rgba(37, 189, 108, 0.20);
}

/* 主要能力 */
.capability-badge.capability-icon--chat {
    background: rgba(78, 151, 250, 0.20);
}

.capability-badge.capability-icon--completion {
    background: rgba(139, 92, 246, 0.20);
}

.capability-badge.capability-icon--embedding {
    background: rgba(236, 72, 153, 0.20);
}

.capability-badge.capability-icon--image {
    background: rgba(251, 146, 60, 0.20);
}

.capability-badge.capability-icon--video {
    background: rgba(234, 88, 12, 0.20);
}

.capability-badge.capability-icon--multimodal {
    background: rgba(168, 85, 247, 0.20);
}

/* 扩展能力 */
.capability-badge.capability-icon--reasoning {
    background: rgba(233, 216, 29, 0.20);
}

.capability-badge.capability-icon--mcp {
    background: rgba(37, 189, 108, 0.20);
}

.capability-badge.capability-icon--code {
    background: rgba(78, 151, 250, 0.20);
}

.capability-badge.capability-icon--skill {
    background: rgba(245, 158, 11, 0.20);
}

.capability-badge.capability-icon--analysis {
    background: rgba(78, 151, 250, 0.20);
}

.capability-badge.capability-icon--vision {
    background: rgba(255, 255, 255, 0.12);
}

.capability-badge.capability-icon--audio {
    background: rgba(255, 255, 255, 0.12);
}

.capability-badge.capability-icon--streaming {
    background: rgba(37, 189, 108, 0.20);
}

.capability-badge.capability-icon--json_mode {
    background: rgba(255, 255, 255, 0.12);
}

.capability-badge.capability-icon--function_calling {
    background: rgba(37, 189, 108, 0.20);
}

.capability-badge.capability-icon--web_search {
    background: rgba(59, 130, 246, 0.20);
}

.capability-badge.capability-icon--tools {
    background: rgba(37, 189, 108, 0.20);
}

/* 代码相关能力（可能的测试数据） */
.capability-badge.capability-icon--code_generation {
    background: rgba(78, 151, 250, 0.20);
}

.capability-badge.capability-icon--coding {
    background: rgba(78, 151, 250, 0.20);
}

.capability-badge.capability-icon--codding {
    background: rgba(78, 151, 250, 0.20);
}

.capability-badge.capability-icon--code_review {
    background: rgba(139, 92, 246, 0.20);
}

.capability-badge.capability-icon--debugging {
    background: rgba(239, 68, 68, 0.20);
}

.capability-badge.capability-icon--documentation {
    background: rgba(14, 165, 233, 0.20);
}

.capability-badge.capability-icon--translation {
    background: rgba(168, 85, 247, 0.20);
}

/* Tooltip 气泡样式（主色背景、白字、暗黑阴影） */
.has-tooltip {
    position: relative;
}

.has-tooltip:hover::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    background: var(--color-primary);
    color: var(--color-text-primary);
    padding: 6px 8px;
    border-radius: var(--radius-xs);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.55);
    white-space: pre-wrap;
    font-size: var(--font-size-xxs);
    z-index: 1000;
    min-width: max-content;
    max-width: 300px;
}

.has-tooltip[title]:hover::after {
    content: attr(title);
}

.has-tooltip:hover::before {
    content: '';
    position: absolute;
    bottom: calc(100% + 2px);
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border: 6px solid transparent;
    border-top-color: var(--color-primary);
    z-index: 1000;
}

/* ==================== 成员信息浮窗（全站统一）==================== */
.member-popover {
    position: fixed;
    z-index: 9999;
    min-width: 240px;
    max-width: 300px;
    background: var(--color-card-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    padding: 12px;
    display: none;
    animation: popoverFadeIn 0.15s ease-out;
}

.member-popover.active {
    display: block;
}

@keyframes popoverFadeIn {
    from {
        opacity: 0;
        transform: translateY(4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.member-popover__header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}

.member-popover__avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    font-weight: var(--font-weight-semibold);
    color: #fff;
    flex-shrink: 0;
}

.member-popover__avatar.color-1 { background: var(--color-gradient-red); }
.member-popover__avatar.color-2 { background: var(--color-gradient-blue); }
.member-popover__avatar.color-3 { background: var(--color-gradient-green); }
.member-popover__avatar.color-4 { background: linear-gradient(135deg, #fa709a 0%, #fee140 100%); }
.member-popover__avatar.color-5 { background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%); }
.member-popover__avatar.user-avatar { background: var(--color-secondary); }
.member-popover__avatar.assistant-avatar { background: var(--color-bg-wechat-list); }

.member-popover__title {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-primary);
    line-height: 1.3;
}

.member-popover__body {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.member-popover__row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: var(--font-size-xxs);
}

.member-popover__label {
    color: var(--color-text-tertiary);
    flex-shrink: 0;
    min-width: 42px;
}

.member-popover__value {
    color: var(--color-text-secondary);
    word-break: break-word;
    line-height: 1.4;
}

.member-popover__desc {
    color: var(--color-text-secondary);
    font-size: var(--font-size-xxs);
    line-height: 1.5;
    margin-top: 4px;
    padding-top: 8px;
    border-top: 1px solid var(--color-border);
}

/* 成员浮窗底部按钮区域 */
.member-popover__footer {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--color-border);
}

.member-popover__btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 6px 10px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xs);
    cursor: pointer;
    transition: all var(--motion-fast) var(--ease-smooth);
}

.member-popover__btn:hover {
    color: var(--color-text-primary);
    background: var(--color-bg-quaternary);
    border-color: var(--color-text-tertiary);
}

.member-popover__btn--primary {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-on-primary);
}

.member-popover__btn--primary:hover {
    background: var(--color-primary-dark);
    border-color: var(--color-primary-dark);
    color: var(--color-on-primary);
}

.member-popover__btn i {
    font-size: 14px;
}

/* @ 成员指示器 */
.at-member-indicator {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: var(--color-primary-200);
    border-radius: var(--radius-xs) var(--radius-xs) 0 0;
    font-size: var(--font-size-xxs);
}

.at-member-tag {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    background: var(--color-primary);
    color: var(--color-on-primary);
    border-radius: var(--radius-xs);
    font-weight: var(--font-weight-medium);
}

.at-member-tag i {
    font-size: 12px;
}

.at-member-clear {
    margin-left: 4px;
    padding: 0 2px;
    background: transparent;
    border: none;
    color: rgba(255, 255, 255, 0.7);
    cursor: pointer;
    font-size: 14px;
    line-height: 1;
}

.at-member-clear:hover {
    color: #fff;
}

.at-member-hint {
    color: var(--color-primary-dark);
    font-size: var(--font-size-xxs);
}

/* 表单：通用 — Portmaster 深色主题 */
.form-container {
    max-width: 900px;
    margin: 0 auto;
}

.form-card {
    background: var(--color-card-secondary);
    border-radius: var(--radius-sm);
    padding: 32px;
    box-shadow: none;
    border: 1px solid var(--color-border);
}

.form-section {
    margin-bottom: 30px;
}

.form-section:last-child {
    margin-bottom: 0;
}

.section-title {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.flex-between > .section-title {
    margin-bottom: 0;
}

.form-group {
    margin-bottom: 30px;
}

.form-label {
    display: block;
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-secondary);
    margin-bottom: 5px;
}

.form-label .required {
    color: var(--color-danger-primary);
    margin-left: 4px;
}

.form-label i {
    font-size: var(--font-size-sm);
}

.form-input,
.c-input {
    width: 100%;
    max-width: 100%;
    height: var(--control-height-md);
    padding: 0 12px;
    line-height: var(--control-height-md);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    font-family: var(--font-family-base);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    transition: all var(--motion-normal) var(--motion-ease);
    box-sizing: border-box;
    outline: none;
}

/* 下拉箭头仅用于 select 元素 */
select.form-input,
select.c-input {
    padding-right: 28px;
    background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="8" height="8" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1.5L6 6.5L11 1.5" stroke="%23aaaaaa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>');
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 8px 8px;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

.form-input:focus,
.c-input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-200);
    background-color: var(--color-bg-primary);
}


.form-input::placeholder,
.c-input::placeholder {
    color: var(--color-text-tertiary);
}

.form-textarea {
    width: 100%;
    max-width: 100%;
    min-height: 60px;
    padding: 10px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xxs);
    font-family: inherit;
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    resize: vertical;
    line-height: 1.5;
    transition: border-color var(--motion-normal) var(--motion-ease), box-shadow var(--motion-normal) var(--motion-ease);
    box-sizing: border-box;
}

.form-textarea:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-200);
}

.form-textarea::placeholder {
    color: var(--color-text-tertiary);
}

.form-textarea.large {
    min-height: 300px;
    font-family: 'Consolas', 'Monaco', monospace;
}

/* 统一的下拉列表样式 - 适用于所有 select 元素 */
.form-select,
.filter-select,
.config-select,
select {
    width: 100%;
    height: var(--control-height-md);
    padding: 0 24px 0 12px;
    line-height: var(--control-height-md);
    border: 0px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    color: var(--color-text-tertiary);
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="8" height="8" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1.5L6 6.5L11 1.5" stroke="%23aaaaaa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>');
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 8px 8px;
    outline: none;
}

.form-select:hover,
.filter-select:hover,
.config-select:hover,
select:hover {
    color: var(--color-text-primary);
}

.form-select:focus,
.filter-select:focus,
.config-select:focus,
select:focus {
    color: var(--color-light);
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-200);
}

/* 下拉选项样式 */
.form-select option,
.filter-select option,
.config-select option,
select option {
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    padding: 8px 14px;
}

.form-select option:hover,
.filter-select option:hover,
.config-select option:hover,
select option:hover,
.form-select option:checked,
.filter-select option:checked,
.config-select option:checked,
select option:checked {
    background: var(--color-primary) !important;
    color: var(--color-text-primary) !important;
}

/* 覆盖浏览器默认蓝色 */
select option:focus,
select option:active,
.form-select option:focus,
.filter-select option:focus,
.config-select option:focus {
    background: var(--color-primary) !important;
    color: var(--color-text-primary) !important;
}

/* ============================================================
   自定义下拉菜单组件 - 替代原生 select 弹出菜单
   由 custom-select.js 自动初始化，无需手动修改 HTML
   ============================================================ */
.custom-select-wrap {
    position: relative;
    display: flex;
    width: 100%;
}

.custom-select-wrap.custom-select-full {
    display: flex;
    width: 100%;
}

.custom-select-wrap .custom-select-trigger {
    display: flex;
    align-items: center;
    width: 100%;
    height: var(--control-height-md);
    padding: 0 24px 0 12px;
    line-height: var(--control-height-md);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    font-family: var(--font-family-base);
    background: var(--color-bg-primary);
    color: var(--color-text-tertiary);
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    white-space: nowrap;
    user-select: none;
    position: relative;
    outline: none;
}

.custom-select-wrap .custom-select-trigger::after {
    content: '';
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 8px;
    height: 8px;
    background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="8" height="8" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1.5L6 6.5L11 1.5" stroke="%23aaaaaa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>');
    background-size: 8px 8px;
    background-repeat: no-repeat;
    transition: transform var(--motion-normal) var(--motion-ease);
}

.custom-select-wrap.open .custom-select-trigger::after {
    transform: translateY(-50%) rotate(180deg);
}

.custom-select-wrap .custom-select-trigger:hover {
    color: var(--color-text-primary);
    border-color: var(--color-primary);
}

.custom-select-wrap.open .custom-select-trigger {
    color: var(--color-light);
    border-color: var(--color-primary);
}

.custom-select-wrap .custom-select-dropdown {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    min-width: 100%;
    width: 100%;
    z-index: 9999;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-tertiary);
    border-radius: var(--radius-sm);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.65);
    max-height: 240px;
    overflow-y: auto;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: all var(--motion-fast) var(--motion-ease);
}

.custom-select-wrap .custom-select-dropdown.drop-up {
    top: auto;
    bottom: calc(100% + 4px);
    transform: translateY(4px);
}

.custom-select-wrap.open .custom-select-dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.custom-select-wrap .custom-select-option {
    padding: 7px 12px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    cursor: pointer;
    transition: all var(--motion-fast) var(--motion-ease);
    white-space: nowrap;
}

.custom-select-wrap .custom-select-option:hover {
    background: var(--color-tertiary);
    color: var(--color-text-primary);
}

.custom-select-wrap .custom-select-option.selected {
    background: var(--color-primary);
    color: var(--color-on-primary);
}

.tag-input-container {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 8px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xs);
    min-height: 42px;
    cursor: text;
    background: var(--color-bg-tertiary);
}

.tag-input-container:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-200);
}

.tag-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    background: var(--color-primary);
    color: var(--color-on-primary);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-mini);
}

.tag-remove {
    cursor: pointer;
    font-weight: bold;
    opacity: 0.8;
}

.tag-remove:hover {
    opacity: 1;
}

.tag-input {
    flex: 1;
    min-width: 120px;
    border: none;
    outline: none;
    font-size: var(--font-size-xxs);
    padding: 4px;
    background: transparent;
    color: var(--color-text-primary);
}

/* 搜索结果下拉框 */
.search-results-dropdown {
    position: fixed;
    max-height: 200px;
    overflow-y: auto;
    background: var(--color-card-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xs);
    margin-top: 4px;
    z-index: 1300; /* 高于弹窗 */
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.search-result-item {
    padding: 10px 12px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-primary);
    cursor: pointer;
    border-bottom: 1px solid var(--color-border);
    transition: background var(--motion-fast);
}

.search-result-item:last-child {
    border-bottom: none;
}

.search-result-item:hover {
    background: var(--color-button-dark);
}

/* 已选中项目显示 */
.selected-item-display {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    background: var(--color-card-tertiary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xs);
    font-size: var(--font-size-xxs);
    color: var(--color-text-primary);
    margin-top: 8px;
}

.selected-item-display .btn-link {
    color: var(--color-danger-primary);
    font-size: var(--font-size-xxs);
}

.radio-group {
    display: flex;
    gap: 15px;
}

.radio-option {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xs);
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
    background: var(--color-bg-tertiary);
}

.radio-option:hover {
    border-color: var(--color-primary);
    background: var(--color-card-tertiary);
}

.radio-option.selected {
    border-color: var(--color-primary);
    background: var(--color-primary-200);
}

.radio-option.selected i {
    color: var(--color-primary);
}

.radio-option input[type="radio"] {
    cursor: pointer;
}

.radio-label {
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-base);
    cursor: pointer;
    color: var(--color-text-primary);
}

.radio-description {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 4px;
}

.help-text {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 6px;
}

.char-counter {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    text-align: right;
    margin-top: 4px;
}

/* 胶囊形状滑动开关 — 全局通用样式 */
.toggle-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    flex-shrink: 0;
}

.toggle-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.toggle-slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: var(--color-bg-secondary);
    transition: all var(--motion-normal) var(--motion-ease);
    border-radius: 20px;
}

.toggle-slider:before {
    position: absolute;
    content: "";
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background-color: var(--color-text-primary);
    transition: all var(--motion-normal) var(--motion-ease);
    border-radius: 50%;
}

.toggle-switch input:checked + .toggle-slider {
    background-color: var(--color-primary);
}

.toggle-switch input:checked + .toggle-slider:before {
    transform: translateX(20px);
}

.toggle-switch input:focus + .toggle-slider {
    box-shadow: 0 0 0 5px var(--color-primary-200);
}

.toggle-switch input:disabled + .toggle-slider {
    opacity: 0.5;
    cursor: not-allowed;
}

.toggle-slider:hover {
    background-color: var(--color-bg-primary);
}

.toggle-switch input:checked + .toggle-slider:hover {
    background-color: var(--color-secondary);
}

/* =====================================================
   组织详情页面样式 (org_detail.html)
   ===================================================== */
.org-header {
    background: transparent;
    padding-left: 0;
    border-radius: var(--radius-sm);
    margin-bottom: 20px;
    box-shadow: none;
    border: 0px solid var(--color-border);
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.org-info {
    display: flex;
    gap: 15px;
    align-items: center;
    justify-content: space-between;
}

.org-logo {
    width: 60px;
    height: 60px;
    border-radius: var(--radius-sm);
    background: var(--color-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 30px;
    flex-shrink: 0;
    color: var(--color-text-primary);
}

.org-logo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--radius-sm);
}

.org-details {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
}

.badge-tag-myorg {
    background: var(--color-tertiary);
    color: #fff;
    font-size: var(--font-size-xxs);
    padding: 2px 8px;
    border-radius: var(--radius-full);
}

.org-name {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-base);
    margin: 0;
    color: var(--color-text-primary);
    line-height: 1;
}

.org-description {
    color: var(--color-text-secondary);
    margin-bottom: 15px;
    line-height: 1.6;
    font-size: var(--font-size-xxs);
}

.org-meta {
    display: flex;
    flex-direction: column;
    gap: 5px;
    flex-wrap: nowrap;
    padding-left: 0;
}

/* 组织详情页元信息项样式（gap: 8px）*/
.org-meta-item {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xxs);
}

.meta-value {
    color: var(--color-text-primary);
    font-weight: var(--font-weight-base);
}

.meta-value .a {
    color: var(--color-text-quaternary);
}
.org-actions {
    display: flex;
    gap: 10px;
    flex-shrink: 0;
}

/* =====================================================
   概览统计卡片网格 (overview stats cards)
   ===================================================== */
.overview-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
    margin-bottom: 16px;
}

.overview-stat-card {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 15px;
    transition: border-color var(--motion-fast) var(--motion-ease),
                background var(--motion-fast) var(--motion-ease),
                box-shadow var(--motion-fast) var(--motion-ease);
    position: relative;
}

.overview-stat-clickable {
    cursor: pointer;
}

.overview-stat-clickable:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-secondary);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.overview-stat-clickable:hover .overview-stat-arrow {
    opacity: 1;
    color: var(--color-primary);
}

.overview-stat-icon {
    font-size: 18px;
    width: 24px;
    height: 24px;
    padding: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-full);
    background: var(--color-bg-secondary);
    flex-shrink: 0;
}

.overview-stat-body {
    flex: 1;
    min-width: 0;
}

.overview-stat-value {
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    line-height: 1.2;
}

.overview-stat-value-vip {
    color: var(--color-warning-primary);
}

.overview-stat-value-alert {
    color: var(--color-danger);
}

.overview-stat-label {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 2px;
}

.overview-stat-arrow {
    font-size: 16px;
    color: var(--color-text-quaternary);
    opacity: 0;
    transition: opacity var(--motion-fast) var(--motion-ease),
                color var(--motion-fast) var(--motion-ease);
    flex-shrink: 0;
}

.overview-stat-alert {
    border-color: var(--color-danger-primary);
}

/* 响应式：小屏幕改为2列 */
@media (max-width: 900px) {
    .overview-stats-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 520px) {
    .overview-stats-grid {
        grid-template-columns: 1fr;
    }
}

/* =====================================================
   全局列表样式标准（参考 Portmaster）
   - 列表容器-大 (list-container-l): 列表项高度50px
   - 列表容器-小 (list-container-m): 列表项高度40px
   - 统一无背景色、边距10px、无gap间隔
   ===================================================== */

/* 列表容器-大（通用） */
/* =====================================================
   列表系统 - 通用基类（提取公共样式）
   ===================================================== */

/* 列表容器通用基类 - 左侧侧边栏 */
.list-sidebar-container {
    width: 250px;
    min-width: 250px;
    max-width: 320px;
    overflow-y: auto;
    flex-shrink: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* 供应商列表容器（继承通用基类 .list-sidebar-container）
   完全复用 .list-sidebar-container 样式，无需重复定义 */

/* 侧边栏分栏标签（个人模式供应商列表分组标题） */
.sidebar-section-label {
    padding: 8px 12px 4px;
    font-size: 11px;
    font-weight: 600;
    color: var(--color-text-tertiary);
    letter-spacing: 0.3px;
    border-bottom: 1px solid var(--color-border);
    margin-bottom: 2px;
}

/* 供应商管理页面主容器 - 左右布局 */
.provider-management-loaded.container {
    display: flex;
    gap: 20px;
    height: 100%;
    padding: 0;
    margin: 0;
}

/* 个人模式 - 侧边栏移到右侧，隐藏搜索和筛选按钮 */
.provider-management-loaded.personal-mode {
    flex-direction: row-reverse;
}
.provider-management-loaded.personal-mode .sidebar-header {
    display: none;
}
.provider-management-loaded.personal-mode .content-toolbar {
    display: none;
}
.provider-management-loaded.personal-mode .content-body {
    padding: 0;
}

/* 供应商管理右侧内容区 */
.provider-management-loaded .content {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* 供应商管理右侧内容主体 */
.provider-management-loaded .content-body {
    flex: 1;
    overflow-y: auto;
    padding: 0;
}

/* 供应商管理顶部过滤按钮 - 继承 macOS 分段控件样式
   继承通用 .filter-buttons 样式，不覆盖 */

/* =====================================================
   供应商/成员列表样式已迁移至 utils.css .list-row-* 原子类
   ===================================================== */

/* 成员列表容器（继承通用基类 .list-sidebar-container）*/
.member-list-container {
    /* 复用基类样式，无宽度限制，使用 flex:1 占满父容器 */
    width: auto;
    min-width: 0;
    max-width: none;
}

/* 成员统计信息 - 固定宽度，避免错位 */
.member-stats {
    display: contents; /* 让子元素直接参与父级Grid布局 */
}

/* 统一文本样式 - 避免因内容长度导致对不齐 */
.member-stats > .badge-tag,
.member-stats > .meta-text,
.member-stats > .stat-item-inline {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* 部门和岗位文本固定宽度 */
.member-stats > .meta-text {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    text-align: left;
}

/* 单行统计项 */
.stat-item-inline {
    display: flex;
    align-items: center;
    column-gap: 6px;
    margin: 0;
}

/* =====================================================
   部门/邀请码等列表样式已迁移至 utils.css .list-row-* 原子类
   ===================================================== */

/* =====================================================
   Portmaster 风格胶囊标签（公共样式）
   - 圆角胶囊形状
   - 半透明彩色背景
   - 紧凑内边距
   ===================================================== */

.badge-tag {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: var(--font-weight-base);
    white-space: nowrap;
}

/* 拥有者：金色高亮 */
.badge-tag-owner,
.badge-tag-primary {
    background: var(--color-warning-tertiary);
    color: var(--color-warning-primary);
}

/* 待审核 / 提醒类：黄色 */
.badge-tag-pending {
    background: var(--color-warning-tertiary);
    color: var(--color-warning-primary);
}

/* 管理员 / 淡黄底白字 */
.badge-tag-admin {
    background: var(--color-warning-tertiary);
    color: var(--color-text-primary);
}

/* 普通成员：用淡主色背景蓝色字 */
.badge-tag-member {
    background: var(--color-primary-200);
    color: var(--color-primary);
}

/* 审核通过：成功绿色 */
.badge-tag-approved, .badge-tag-success {
    background: var(--color-tertiary);
    color: var(--color-light);
}

/* 完成状态：固定绿色（不随主题变化） */
.badge-tag-completed {
    background: rgba(40, 167, 69, 0.15);
    color: #28a745;
}

/* 审核拒绝 / 失败：危险红 */
.badge-tag-rejected {
    background: var(--color-danger-tertiary);
    color: var(--color-danger-primary);
}

/* 信息类标签：蓝色 */
.badge-tag-info {
    background: var(--color-info-tertiary);
    color: var(--color-info);
}

/* 私有标签：灰色固定色 */
.badge-tag-private {
    background: var(--color-bg-quinary);
    color: var(--color-text-tertiary);
}

/* 停用/无效标签：灰色 */
.badge-tag-inactive, .badge-tag-disabled {
    background: var(--color-bg-quinary);
    color: var(--color-text-tertiary);
    border: 1px solid var(--color-border);
}

/* 默认/弱化标签：灰色背景 + 次要文字色 */
.badge-tag-muted {
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
}

/* 成员操作按钮 - 靠右对齐 */
.member-actions {
    display: flex;
    gap: 10px;
    align-items: center;
    justify-self: end;
}

/* 统计网格布局 */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 5px;
    margin-bottom: 5px;
}

.stat-card {
    background: var(--color-bg-tertiary);
    padding: 12px 16px; /* 更紧凑 */
    border-radius: var(--radius-xs);
    border: 1px solid var(--color-border);
}

.stat-item-inline .stat-label {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-bottom: 0;
}

/* 额外的统计数值颜色变体 */
.stat-value-success {
    color: var(--color-light);
}

.stat-value-warning {
    color: var(--color-warning-primary);
}

.stat-value-info {
    color: var(--color-info);
}

/* 元信息文本样式 */
.meta-text {
    font-size: var(--font-size-xxs);
    color: var(--color-text-quaternary);
}

.meta-text.manager-text {
    font-size: var(--font-size-xxs);
    color: var(--color-text-primary);
    cursor: pointer;
}

.meta-text.manager-text:hover {
    color: var(--color-light);
}

.config-container {
    max-width: 800px;
    margin: 0 auto;
}

.config-title {
    margin-bottom: 20px;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
}

.config-section {
    background: var(--color-bg-tertiary);
    padding: 20px;
    border-radius: var(--radius-xs);
    margin-bottom: 20px;
    border: 1px solid var(--color-border);
}

.config-section-title {
    margin-bottom: 15px;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-base);
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--color-text-primary);
}

.config-desc {
    color: var(--color-text-secondary);
    font-size: var(--font-size-xxs);
    margin-bottom: 20px;
    line-height: 1.6;
}

.config-field {
    margin-bottom: 30px;
    padding-left: 20px;
}

.config-label {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    color: var(--color-text-primary);
    font-size: var(--font-size-xxs);
}

.config-label-text {
    display: block;
    margin-bottom: 8px;
    font-weight: var(--font-weight-base);
    color: var(--color-text-primary);
    font-size: var(--font-size-xxs);
}

/* config-range 已改用全局 input[type="range"] 样式 */

.config-range-labels {
    display: flex;
    justify-content: space-between;
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin-top: 4px;
}

.config-hint {
    color: var(--color-text-tertiary);
    font-size: var(--font-size-xxs);
    margin-top: 6px;
}

.config-actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--color-border);
}

.error-display {
    text-align: center;
    padding: 60px;
    color: var(--color-danger-primary);
}

/* =====================================================
   加入组织页面样式 (join_organization.html)
   ===================================================== */
.join-container {
    max-width: 600px;
    margin: 0 auto;
    margin-bottom: 20px;
}

.join-card {
    background: var(--color-card-secondary);
    border-radius: var(--radius-sm);
    padding: 32px;
    box-shadow: none;
    margin-bottom: 20px;
    border: 1px solid var(--color-border);
}

.code-input {
    display: none;
}

.code-input.active {
    display: block;
}

.preview-org {
    display: flex;
    gap: 15px;
    align-items: center;
    margin-bottom: 20px;
    padding: 15px;
    background: var(--color-card-secondary);
    border-radius: var(--radius-xs);
    border: 1px solid var(--color-border);
}

.preview-logo {
    width: 60px;
    height: 60px;
    border-radius: var(--radius-sm);
    background: var(--color-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    color: var(--color-text-primary);
}

.preview-info h3 {
    margin-bottom: 4px;
    color: var(--color-text-primary);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-base);
}

.preview-meta {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
}

.message {
    padding: 12px 16px;
    border-radius: var(--radius-xs);
    margin-top: 15px;
    font-size: var(--font-size-xxs);
}

.message-success {
    background: var(--color-primary-200);
    color: var(--color-text-primary);
    border: 1px solid var(--color-primary);
}

.message-error {
    background: var(--color-danger-tertiary);
    color: var(--color-danger-primary);
    border: 1px solid var(--color-danger-secondary);
}

.message-info {
    background: rgba(78, 151, 250, 0.15);
    color: var(--color-info);
    border: 1px solid var(--color-info);
}

/* ============================================
   响应式断点 - 多端兼容适配
   断点：1024px (平板)、768px (手机横屏)、640px (手机竖屏)
   ============================================ */

/* 平板适配（iPad 竖屏、1024px以下）*/
@media (max-width: 1024px) {
    /* 侧边栏窄化 */
    .sidebar {
        width: 200px;
    }

    /* 内容区边距缩小 */
    .workspace-content {
        padding: 15px;
    }

    /* 统计卡片：2列布局 */
    .stats-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    /* 资源卡片：2列布局 */
    .resource-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* 手机横屏 + 小平板（768px以下）*/
@media (max-width: 768px) {
    /* 工作区改为垂直布局 */
    .workspace {
        flex-direction: column;
    }

    /* 侧边栏：全宽、自动高度、横向滚动 */
    .sidebar {
        width: 100%;
        height: auto;
        max-height: 60px;
        border-right: none;
        border-bottom: 1px solid var(--color-border);
    }

    /* 侧边栏导航：横向排列 */
    .sidebar-nav {
        flex-direction: row;
        overflow-x: auto;
        overflow-y: hidden;
        white-space: nowrap;
        padding: 0 10px;
    }

    /* 导航项：收窄宽度 */
    .nav-item {
        min-width: 120px;
        padding: 0 10px;
    }

    /* 统计卡片：单列布局 */
    .stats-grid {
        grid-template-columns: 1fr;
    }

    /* 资源卡片：单列布局 */
    .resource-grid {
        grid-template-columns: 1fr;
    }

    /* TAB按钮：横向滚动 */
    .tab-header {
        overflow-x: auto;
        white-space: nowrap;
        padding-bottom: 5px;
    }

    /* 供应商/成员列表：单列显示 */
    .provider-detail-container,
    .member-detail-container {
        flex-direction: column;
    }

    /* 右侧详情区：全宽 */
    .provider-detail-panel,
    .member-detail-panel {
        width: 100%;
        border-left: none;
        border-top: 1px solid var(--color-border);
    }

    /* 登录容器：适应小屏 */
    .login-container {
        width: 90%;
        max-width: 400px;
        padding: 24px;
    }
}

/* 手机竖屏（640px以下）*/
@media (max-width: 640px) {
    /* 内容区边距进一步缩小 */
    .workspace-content {
        padding: 12px;
    }

    /* 按钮：触控友好（最小44px）*/
    .btn,
    .c-btn,
    .btn-primary,
    .btn-secondary,
    .btn-tertiary {
        height: 44px;
        min-height: 44px;
        font-size: 14px;
        padding: 0 15px;
    }

    /* 导航项：触控友好 */
    .nav-item {
        height: 48px;
        min-height: 48px;
    }

    /* 列表项：触控友好 */
    .list-row-item,
    .list-item {
        height: 48px;
        min-height: 48px;
    }

    /* TAB按钮：触控友好 */
    .tab-button {
        height: 44px;
        min-height: 44px;
        padding: 0 12px;
        font-size: 13px;
    }

    /* 表单输入框：触控友好 */
    input[type="text"],
    input[type="tel"],
    input[type="email"],
    input[type="password"],
    textarea,
    select {
        height: 44px;
        min-height: 44px;
        font-size: 16px; /* 防止iOS自动缩放 */
    }

    textarea {
        min-height: 100px;
    }

    /* 组织头部：纵向堆叠 */
    .org-header {
        flex-direction: column;
    }

    .org-info {
        flex-direction: column;
        align-items: flex-start;
    }

    .org-actions {
        width: 100%;
        margin-top: 12px;
    }

    .org-actions .btn {
        flex: 1;
    }

    /* 统计卡片：更大间距 */
    .stat-card {
        padding: 15px;
    }

    /* 模态框：全屏显示 */
    .c-modal__dialog {
        width: 95vw;
        max-width: 95vw;
        margin: 10px;
    }

    /* 搜索框：全宽 */
    .search-wrapper,
    .search-input {
        width: 100%;
    }

    /* 标题字号缩小 */
    h1 {
        font-size: 1.5rem;
    }

    h2 {
        font-size: 1.25rem;
    }

    h3 {
        font-size: 1.1rem;
    }

    /* 登录容器：更紧凑 */
    .login-container {
        width: 95%;
        padding: 20px;
    }

    /* 创建菜单：适应小屏 */
    .create-menu {
        right: 10px;
        min-width: 180px;
    }
}

/* =================================================================
   模态框样式 - Modal
   ================================================================= */

/* 模态框背景遮罩 */
.modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.75);
    backdrop-filter: blur(10px);
    /* 使用 flexbox 居中，确保弹窗自适应高度 */
    justify-content: center;
    align-items: flex-start;
    padding: 8vh 0;
    box-sizing: border-box;
}

/* 显示时启用 flex */
.modal[style*="display: block"], .modal[style*="display:block"] {
    display: flex !important;
}

/* 模态框内容容器 */
.modal-content {
    background-color: var(--color-card-primary);
    margin: 0 auto;  /* flexbox 居中，不需要 margin-top */
    padding: 0;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    width: 500px;
    max-width: 90%;
    max-height: 84vh;  /* 最大高度限制，防止超出视口 */
    overflow-y: auto;
    box-shadow: 0 0px 0px 0px var(--color-bg-dark);
    animation: modalFadeIn 0.2s ease-out;
}

/* 大尺寸模态框 */
.modal-content-large {
    width: 700px;
    max-width: 95%;
}

/* 模态框头部 */
.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    border-bottom: 1px solid var(--color-border);
}

.modal-header h3 {
    margin: 0;
    font-size: var(--font-size-base);
    color: var(--color-text-primary);
}

/* 关闭按钮 */
.modal-header .close {
    color: var(--color-text-tertiary);
    font-size: 22px;
    font-weight: var(--font-weight-base);
    line-height: 1;
    cursor: pointer;
    transition: color var(--motion-normal) var(--motion-ease);
}

.modal-header .close:hover {
    color: var(--color-text-primary);
}

/* 模态框主体 */
.modal-body {
    padding: 24px;
}

.modal-body p {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
}

/* 表单样式 - 在模态框中 */
.modal-content form {
    padding: 24px;
}

/* 表单操作按钮组 */
.form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--color-border);
}

/* 表单操作按钮右侧容器（用于左右分布布局） */
.form-actions-right {
    display: flex;
    gap: 10px;
    align-items: center;
}

/* 模态框动画（复用 utils.css 的 @keyframes modalFadeIn） */

/* 详情面板样式 */
.detail-section {
    margin-bottom: 24px;
}

.detail-section:last-child {
    margin-bottom: 0;
}

.detail-title {
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    margin-bottom: 15px;
}

.section-title {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-secondary);
    margin-bottom: 12px;
}

.detail-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
}

.detail-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.detail-label {
    font-size: var(--font-size-xs);
    color: var(--color-text-tertiary);
    font-weight: var(--font-weight-base);
}

.detail-value {
    font-size: var(--font-size-sm);
    color: var(--color-text-primary);
    font-weight: var(--font-weight-medium);
}

/* =================================================================
   数字输入框箭头样式 - Number Input Spinners
   ================================================================= */

/* 数字输入框上下箭头统一样式 */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    appearance: none;
    margin: 0;
}

/* 为数字输入框添加自定义箭头容器 */
input[type="number"] {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* Firefox 的数字输入框箭头样式 */
input[type="number"]::-moz-inner-spin-button,
input[type="number"]::-moz-outer-spin-button {
    -moz-appearance: none;
    appearance: none;
}

/* 如果需要显示箭头，使用以下样式 */
input[type="number"].with-spinners::-webkit-inner-spin-button,
input[type="number"].with-spinners::-webkit-outer-spin-button {
    -webkit-appearance: inner-spin-button;
    opacity: 1;
    background: var(--color-bg-tertiary);
    border-left: 1px solid var(--color-border);
    cursor: pointer;
}

input[type="number"].with-spinners::-webkit-inner-spin-button:hover,
input[type="number"].with-spinners::-webkit-outer-spin-button:hover {
    background: var(--color-button-light);
}

/* ===== 6格分离式邀请码输入框 ===== */
.code-input-wrapper {
    display: flex;
    align-items: center;
    gap: 40px;
    justify-content: center;
}

.code-icon {
    font-size: 32px;
    line-height: 1;
    flex-shrink: 0;
    animation: bounce 2s infinite;
}

/* 弹跳动画（复用 utils.css 的 @keyframes bounce） */

.code-input-boxes {
    display: flex;
    gap: 10px;
    justify-content: center;
    margin-bottom: 8px;
}

.code-box {
    width: 50px;
    height: 56px;
    text-align: center;
    font-size: 24px;
    font-weight: var(--font-weight-semibold);
    background: var(--color-bg-primary);
    border: 2px solid var(--color-border);
    border-radius: var(--radius-sm);
    color: var(--color-text-primary);
    transition: all var(--motion-normal) var(--motion-ease);
    outline: none;
    letter-spacing: 0;
    text-transform: uppercase;
}

.code-box:hover {
    border-color: var(--color-border-light);
    background: var(--color-card-primary);
}

.code-box:focus {
    border-color: var(--color-light);
    background: var(--color-bg-primary);
    box-shadow: 0 0 0 5px rgba(42, 237, 139, 0.15);
}

/* 组织信息预览区（独立块） */
.org-preview-container {
    margin-top: 24px;
}

.org-info-card {
    background: var(--color-card-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 24px;
}

/* 组织信息预览样式 */
.preview-org {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-sm);
    margin-bottom: 20px;
}

.preview-logo {
    width: 64px;
    height: 64px;
    border-radius: var(--radius-sm);
    background: var(--color-card-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border);
    flex-shrink: 0;
    overflow: hidden;
}

.preview-logo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.preview-info {
    flex: 1;
}

.preview-info h3 {
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    margin: 0 0 8px 0;
}

.preview-meta {
    font-size: var(--font-size-xxs);
    color: var(--color-text-secondary);
    line-height: 1.6;
}

/* 注意：.form-group 已在第2599行定义，此处删除重复 */

/* =====================================================
   成员档案页面样式
   ===================================================== */

/* 卡片容器 */
.card {
    background: var(--color-card-primary);
    border-radius: var(--radius-sm);
    padding: 24px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
    border: 1px solid var(--color-border);
    margin-bottom: 20px;
}

.card-title {
    margin: 0 0 20px 0;
    font-size: 18px;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
}

/* 档案头部（头像+基本信息） */
.profile-header {
    display: flex;
    align-items: flex-start;
    gap: 24px;
}

.profile-info {
    flex: 1;
}

.profile-name {
    margin: 0 0 8px 0;
    font-size: 24px;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
}

.profile-meta {
    margin: 0;
    color: var(--color-text-secondary);
    font-size: 14px;
}

/* 信息网格（2列布局） */
.info-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 30px;
}

.info-item {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.info-item-full {
    grid-column: 1 / -1;
}

.info-label {
    font-size: var(--font-size-xs);
    color: var(--color-text-tertiary);
    font-weight: var(--font-weight-medium);
}

.info-value {
    font-size: var(--font-size-xs);
    color: var(--color-text-primary);
    word-break: break-word;
}

/* 区域分隔线 */
.section-divider {
    margin: 32px 0 24px 0;
    padding-top: 24px;
    border-top: 1px solid var(--color-border);
}

.section-title {
    margin: 0 0 15px 0;
    font-size: 15px;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
}

/* TAB 内容区（复用 utils.css 的 @keyframes fadeIn） */
.tab-content {
    animation: fadeIn 0.3s ease;
}

/* 响应式：小屏幕单列布局 */
@media (max-width: 768px) {
    .info-grid {
        grid-template-columns: 1fr;
    }
    
    .stats-grid {
        grid-template-columns: 1fr;
    }
    
    .profile-header {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }
}


/* ============================================
   用户空间专用样式
   ============================================ */

/* 顶部导航栏 */
.top-navbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 60px;
    background: var(--color-bg-secondary);
    border-bottom: 1px solid var(--color-border);
    z-index: 1000;
}

.navbar-container {
    max-width: 1400px;
    height: 100%;
    margin: 0 auto;
    padding: 0 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.navbar-brand {
    display: flex;
    align-items: center;
}

.brand-link {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: var(--color-text-primary);
}

.brand-logo {
    width: 32px;
    height: 32px;
}

.brand-name {
    font-size: 18px;
    font-weight: var(--font-weight-semibold);
    color: var(--color-primary);
}

.navbar-nav {
    display: flex;
    align-items: center;
    gap: 24px;
}

.navbar-nav .nav-link {
    color: var(--color-text-secondary);
    text-decoration: none;
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-medium);
    transition: color var(--motion-normal);
}

.navbar-nav .nav-link:hover {
    color: var(--color-primary);
}

.navbar-actions {
    display: flex;
    align-items: center;
    gap: 15px;
}

.user-menu {
    position: relative;
}

.user-dropdown {
    position: absolute;
    top: 45px;
    right: 0;
    min-width: 180px;
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    box-shadow: var(--shadow-low);
    overflow: hidden;
}

.user-dropdown .dropdown-item {
    display: block;
    padding: 10px 16px;
    color: var(--color-text-secondary);
    text-decoration: none;
    font-size: var(--font-size-sm);
    transition: background var(--motion-fast);
}

.user-dropdown .dropdown-item:hover {
    background: var(--color-bg-quinary);
    color: var(--color-text-primary);
}

.user-dropdown .dropdown-divider {
    height: 1px;
    background: var(--color-border);
    margin: 4px 0;
}

/* ===== 新的左右布局样式 ===== */

/* 主导航栏（main-nav）
   背景半透明，让 blob_glow 流光透出；颜色变化由 --nav-accent-* CSS 变量驱动 */
.main-nav {
    width: 75px;
    background: rgba(0, 3, 7, 0.45); /* 半透明，让 blob 流光透出 */
    color: var(--color-text-primary);
    display: flex;
    flex-direction: column;
    border-right: 0px solid var(--color-border);
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100;
    overflow: hidden;
}

/* 确保导航内容在流光层之上 */
.main-nav-logo,
.main-nav-nav,
.main-nav-footer {
    position: relative;
    z-index: 1;
}

/* Logo 区域 */
.main-nav-logo {
    padding: 20px 0px 60px 0px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-bottom: 0px solid var(--color-border);
    background: transparent;
}

.main-nav-logo-square {
    width: 60px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    color: #fff;
    border-radius: 0;
    box-shadow: none;
    /* 动态彩虹变色（由粒子动画 JS 实时驱动 --nav-accent-from/to） */
    background: linear-gradient(135deg, var(--nav-accent-from, var(--color-light)), var(--nav-accent-to, #439BE6));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    transition: background 0.3s ease;
}

.main-nav-logo-icon {
    font-size: 24px;
}

.main-nav-logo-text {
    font-size: var(--font-size-md);
    letter-spacing: 1.5px;
}

/* 导航菜单 */
.main-nav-nav {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 15px 0;
    overflow-y: auto;
}

.main-nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0px 0;
    text-decoration: none;
    color: var(--color-text-secondary);
    transition: all var(--motion-normal) var(--motion-ease);
    margin: 0 0 30px;
    border-bottom: 0px solid transparent;
    padding-bottom: 0px;
}

.main-nav-item:hover {
    color: var(--color-text-primary);
}

.main-nav-item.active .main-nav-item-icon i {
    color: var(--nav-accent-from, var(--color-light));
    transition: color 0.3s ease;
}

.main-nav-item.active {
    color: var(--nav-accent-from, var(--color-light));
    font-weight: var(--font-weight-medium);
    transition: color 0.3s ease;
}

.main-nav-item-icon {
    width: 18px;
    height: 18px;
    margin-bottom: 5px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.main-nav-item-icon img {
    width: 18px;
    height: 18px;
}

.main-nav-item-text {
    font-size: var(--font-size-xxs);
    font-size: 11px;
    text-align: center;
    line-height: 1.2;
    color: inherit;
}

.main-nav-item.active .main-nav-item-text {
    border-bottom: 0px solid var(--color-light);
    padding-bottom: 0px;
}

/* 主导航未启用状态 */
.main-nav-item.main-nav-disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.main-nav-item.main-nav-disabled:hover {
    opacity: 0.55;
}

/* 底部用户区域 */
.main-nav-footer {
    padding: 10px 0 30px 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    border-top: 0px solid var(--color-border);
    background: transparent;
}

.main-nav-icons {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.main-nav-icon {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
    transition: all var(--motion-normal) var(--motion-ease);
}

.main-nav-icon:hover {
    background: rgba(255, 255, 255, 0.1);
}

.main-nav-icon.active {
    background: var(--color-primary);
}

.main-nav-icon.active i{
    color: var(--color-on-primary);
}

.main-nav-icons {
    position: relative;
    z-index: 1;
}

.main-nav-icon img {
    width: 18px;
    height: 18px;
}

/* 用户头像包裹器 */
.user-avatar-wrapper {
    position: relative;
}

.user-avatar-trigger {
    overflow: hidden;
    width: 30px;
    height: 30px;
    border-radius: 50%;
}

.user-avatar-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

.user-avatar-letter {
    font-size: 12px;
    font-weight: normal;
    color: #ffffff;
    background: var(--color-primary-200);
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

/* 用户浮动菜单样式已迁移至 .global-user-menu 统一组件 */

/* 主内容区 */
.main-content-right-layout {
    margin-left: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: var(--color-bg-primary);
    overflow-y: auto;
}




/* 响应式适配 */
@media (max-width: 768px) {
    .main-nav {
        width: 75px;
    }
    
    .main-content-right-layout {
        margin-left: 0;
    }
    
    .main-nav-logo-square {
        width: 36px;
    }
    
    .main-nav-logo-icon {
        font-size: 20px;
    }
    
    .main-nav-logo-text {
        font-size: 8px;
    }
    
    .main-nav-item {
        padding: 10px 0;
    }
    
    .main-nav-item-icon {
        width: 20px;
        height: 20px;
        margin-bottom: 4px;
    }
    
    .main-nav-item-icon img {
        width: 16px;
        height: 16px;
    }
    
    .main-nav-item-text {
        font-size: var(--font-size-xxs);
    }
    
    .main-nav-icon {
        width: 24px;
        height: 24px;
    }
    
    .main-nav-icon img {
        width: 16px;
        height: 16px;
    }
}

/* =================================================================
   全局用户菜单组件 (.global-user-menu)
   公共组件，用于各页面的用户浮动菜单
   ================================================================= */

/* 菜单容器 */
.global-user-menu {
    position: absolute;
    min-width: 240px;
    max-width: 280px;
    background: var(--color-card-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
    z-index: 1100;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: all var(--motion-normal) var(--ease-smooth);
    padding: 10px;
}

.global-user-menu.is-visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* 定位变体：右上角弹出（用于header） */
.global-user-menu.gum-pos-top-right {
    top: calc(100% + 8px);
    right: 0;
}

/* 定位变体：左侧弹出（用于左侧栏）
   使用 fixed 定位，JS 会将菜单移至 body 以逃离 .main-nav 层叠上下文 */
.global-user-menu.gum-pos-left {
    position: fixed;
    margin-left: 0;
    transform: translateX(-12px);
}

.global-user-menu.gum-pos-left.is-visible {
    transform: translateX(0);
}

/* 用户头部信息区 */
.gum-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    cursor: default;
}

.gum-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    background: var(--color-bg-tertiary);
    cursor: default;
}

.gum-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gum-avatar-letter {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-size-md);
    font-weight: normal;
    background: var(--color-primary);
    color: var(--color-on-primary);
}

.gum-user-info {
    flex: 1;
    min-width: 0;
    cursor: default;
}

.gum-user-name {
    font-size: 11px;
    font-weight: 600;
    color: var(--color-text-primary);
    margin-bottom: 2px;
}

.gum-user-phone {
    font-size: 11px;
    color: var(--color-text-tertiary);
}

/* 分隔线 */
.gum-divider {
    height: 1px;
    background: var(--color-border);
    margin: 6px 0;
}

/* 信息行（等级、余额等） */
.gum-row {
    display: flex;
    align-items: center;
    padding: 8px 16px;
    cursor: default;
}

/* 能量区两行布局 */
.gum-energy-rows {
    flex-direction: column;
    gap: 2px;
}

.gum-energy-line {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}

.gum-label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    color: var(--color-text-secondary);
    cursor: default;
}

.gum-label i {
    font-size: 16px;
}

/* 升级会员按钮 */
.gum-action-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    font-size: 11px;
    color: var(--color-warning);
    background: var(--color-warning-tertiary);
    text-decoration: none;
    transition: all var(--motion-fast) var(--ease-smooth);
}

.gum-action-btn:hover {
    background: var(--color-warning-secondary);
    color: var(--color-text-primary);
}

.gum-action-btn i {
    font-size: 14px;
}

/* 充值图标按钮 */
.gum-action-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    color: var(--color-text-tertiary);
    border-radius: var(--radius-xs);
    text-decoration: none;
    transition: all var(--motion-fast) var(--ease-smooth);
}

.gum-action-icon:hover {
    background: var(--color-bg-primary);
    color: var(--color-light);
}

.gum-action-icon i {
    font-size: 18px;
}

/* 菜单项 */
.gum-menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    font-size: 11px;
    color: var(--color-text-secondary);
    border-radius: var(--radius-md);
    text-decoration: none;
    transition: all var(--motion-fast) var(--ease-smooth);
    cursor: pointer;
}

.gum-menu-item:hover {
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
}

.gum-menu-item i {
    font-size: 16px;
    width: 20px;
    text-align: center;
    color: var(--color-text-tertiary);
    transition: color var(--motion-fast) var(--ease-smooth);
}

.gum-menu-item:hover i {
    color: var(--color-text-primary);
}

/* 退出登录特殊样式 */
.gum-logout:hover {
    background: var(--color-danger-tertiary);
    color: var(--color-danger-primary);
}

.gum-logout:hover i {
    color: var(--color-danger-primary);
}

/* 触发器样式 */
.global-user-menu-trigger {
    cursor: pointer;
    position: relative;
}

/* 能量菜单项（免费能量 / 付费能量，全局组件） */
.quota-menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    font-size: 11px;
    color: var(--color-text-secondary);
    border-radius: var(--radius-md);
    text-decoration: none;
    transition: background var(--motion-fast) var(--ease-smooth),
                color var(--motion-fast) var(--ease-smooth);
    cursor: pointer;
}

.quota-menu-item:hover {
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
}

.quota-menu-item i {
    font-size: 16px;
    width: 20px;
    text-align: center;
    color: var(--color-text-tertiary);
    transition: color var(--motion-fast) var(--ease-smooth);
}

.quota-menu-item:hover i {
    color: var(--color-text-primary);
}

.quota-menu-label {
    flex: 1;
    font-size: 11px;
}

.quota-menu-value {
    font-weight: 500;
    font-size: 11px;
    color: var(--color-text-primary);
}

/* 响应式适配 */
@media (max-width: 480px) {
    .global-user-menu {
        min-width: 200px;
        max-width: 240px;
    }
    
    .gum-header {
        padding: 10px 12px;
    }
    
    .gum-avatar {
        width: 36px;
        height: 36px;
    }
    
    .gum-row,
    .gum-menu-item {
        padding: 8px 12px;
    }
}

/* ===================
   EasyMDE Markdown 编辑器 — 全站统一边框
   外层容器统一加边框 + 圆角，内部 toolbar / CodeMirror / statusbar 去掉各自边框
   =================== */
/* 注意：EasyMDE CDN CSS 通过 extra_css 加载在 common.css 之后，
   必须用 !important 确保此处规则优先于原生样式 */
.EasyMDEContainer {
    border: 1px solid var(--color-border) !important;
    border-radius: var(--radius-sm, 6px) !important;
}
.EasyMDEContainer .editor-toolbar {
    border: none !important;
    border-bottom: 1px solid var(--color-border) !important;
    border-radius: 0 !important;
    background: var(--color-bg-secondary) !important;
}
.EasyMDEContainer .editor-toolbar button {
    color: var(--color-text-secondary) !important;
}
.EasyMDEContainer .editor-toolbar button:hover,
.EasyMDEContainer .editor-toolbar button.active {
    background: var(--color-bg-tertiary) !important;
    color: var(--color-text-primary) !important;
}
.EasyMDEContainer .CodeMirror {
    border: none !important;
    border-radius: 0 !important;
    background: var(--color-bg-primary) !important;
    color: var(--color-text-primary) !important;
}
.EasyMDEContainer .editor-statusbar {
    border: none !important;
    border-top: 1px solid var(--color-border) !important;
    color: var(--color-text-tertiary) !important;
}

/* EasyMDE 全屏 / 分栏预览模式 — 必须高于 main-nav(z:100) 和 sub-sidebar(z:101)
   原生 CDN 默认 z-index:9，远低于导航层级，导致被遮挡 */
.editor-toolbar.fullscreen {
    z-index: 200 !important;
    background: var(--color-bg-secondary) !important;
    border-bottom: 1px solid var(--color-border) !important;
}
.CodeMirror-fullscreen {
    z-index: 200 !important;
    background: var(--color-bg-primary) !important;
    color: var(--color-text-primary) !important;
}
.editor-preview-side {
    z-index: 200 !important;
    background: var(--color-bg-primary) !important;
    color: var(--color-text-primary) !important;
    border-left: 1px solid var(--color-border) !important;
}
.editor-preview-active-side {
    z-index: 200 !important;
}

/* 加载更多按钮 */
.load-more-container {
    text-align: center;
    padding: 24px 0 40px;
}

.load-more-btn {
    padding: 8px 24px;
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 14px;
    color: var(--color-text-primary);
    transition: all 0.2s ease;
}

.load-more-btn:hover {
    background: var(--color-primary);
    color: var(--color-on-primary);
    border-color: var(--color-primary);
}

/* =================================================================
   资源市场 ALL 标签页 — 分类区块布局
   使用页面：resources/index.html
   ================================================================= */

/* 单个分类区块 */
.market-section {
    margin-bottom: 8px;
}

/* 区块头部：标题 + 查看更多 */
.market-section-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 4px;
}

.market-section-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--color-text-primary);
    margin: 0;
}

.market-section-subtitle {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    margin: 2px 0 12px 0;
}

.market-section-more {
    font-size: var(--font-size-xxs);
    color: var(--color-text-tertiary);
    text-decoration: none;
    cursor: pointer;
    white-space: nowrap;
    transition: opacity 0.2s;
}

.market-section-more:hover {
    opacity: 0.8;
    text-decoration: underline;
}

/* 区块卡片网格：固定4列 */
.market-section-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

@media (max-width: 1100px) {
    .market-section-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (max-width: 800px) {
    .market-section-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 500px) {
    .market-section-grid {
        grid-template-columns: 1fr;
    }
}

/* 装饰横幅占位（类型之间的分隔） */
.market-banner {
    position: relative;
    border-radius: var(--radius-lg);
    padding: 28px 32px;
    margin: 24px 0;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 100px;
}

.market-banner-text {
    position: relative;
    z-index: 1;
}

.market-banner-title {
    font-size: 18px;
    font-weight: 700;
    color: #fff;
    margin: 0 0 6px 0;
}

.market-banner-desc {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.82);
    margin: 0 0 12px 0;
}

.market-banner-btn {
    display: inline-block;
    padding: 6px 18px;
    background: rgba(255, 255, 255, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 20px;
    color: #fff;
    font-size: 13px;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.2s;
}

.market-banner-btn:hover {
    background: rgba(255, 255, 255, 0.35);
}

.market-banner-deco {
    position: relative;
    z-index: 1;
    font-size: 64px;
    opacity: 0.9;
    line-height: 1;
}

/* 不同配色的装饰横幅 */
.market-banner--green {
    background: linear-gradient(135deg, #0d7c3e 0%, #15a352 40%, #1ec466 100%);
}

.market-banner--blue {
    background: linear-gradient(135deg, #1a56db 0%, #2a6ff0 40%, #4d8df5 100%);
}

.market-banner--purple {
    background: linear-gradient(135deg, #6d28d9 0%, #8b5cf6 40%, #a78bfa 100%);
}

.market-banner--orange {
    background: linear-gradient(135deg, #c2410c 0%, #ea580c 40%, #fb923c 100%);
}

.market-banner--teal {
    background: linear-gradient(135deg, #0d7377 0%, #0fa5a9 40%, #2dd4bf 100%);
}

/* =================================================================
   骨架屏加载系统 (Skeleton Loading)
   使用页面：resources/index.html、skills/store.html 等列表页
   ================================================================= */

/* 骨架卡片容器 — 匹配真实卡片尺寸，避免布局偏移 */
.skel-card {
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-height: 140px;
}

.skel-row {
    display: flex;
    align-items: center;
    gap: 10px;
}

.skel-lines {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.skel-circle {
    width: 36px;
    height: 36px;
    border-radius: var(--radius-md);
    background: var(--color-bg-tertiary);
    flex-shrink: 0;
}

/* 骨架线条（带微光流动效果） */
.skel-line {
    height: 12px;
    border-radius: 6px;
    background: linear-gradient(90deg,
        var(--color-bg-tertiary) 25%,
        rgba(255,255,255,0.04) 50%,
        var(--color-bg-tertiary) 75%
    );
    background-size: 200% 100%;
    animation: skelShimmer 1.5s ease-in-out infinite;
}

.skel-line--sm { height: 10px; }
.skel-w-full { width: 100%; }
.skel-w-80 { width: 80%; }
.skel-w-60 { width: 60%; }
.skel-w-40 { width: 40%; }
.skel-w-30 { width: 30%; }

.skel-tag {
    width: 52px;
    height: 20px;
    border-radius: 10px;
    background: var(--color-bg-tertiary);
}

@keyframes skelShimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* =================================================================
   卡片逐条入场动画 (Stagger Fade-In)
   JS 通过 card.classList.add('card-stagger') + animationDelay 控制
   ================================================================= */
.card-stagger {
    opacity: 0;
    transform: translateY(14px);
    animation: cardFadeIn 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

@keyframes cardFadeIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
