        /* ========== 全局样式 ========== */
        :root {
            --c-primary: #3b82f6;
            --c-primary-lt: #eff6ff;
            --c-primary-dk: #1d4ed8;
            --c-ok: #10b981;
            --c-warn: #f59e0b;
            --c-danger: #ef4444;
            --c-star: #eab308;
            --bg-page: #f0f2f5;
            --bg-card: #ffffff;
            --bg-bar: #ffffff;
            --bg-input: #f8fafc;
            --bg-hover: #f1f5f9;
            --bg-code: #1e293b;
            --bd: #e2e8f0;
            --bd2: #cbd5e1;
            --t1: #1e293b;
            --t2: #475569;
            --t3: #94a3b8;
            --shadow-s: 0 1px 3px rgba(0, 0, 0, 0.08);
            --shadow-m: 0 4px 12px rgba(0, 0, 0, 0.1);
            --shadow-l: 0 8px 24px rgba(0, 0, 0, 0.12);
            --r: 8px;
            --r2: 12px;
            --r3: 16px;
            --sidebar-w: 300px;
            --hdr-h: 56px;
            --anim: 0.2s ease;
        }

        /* 深色模式 */
        .dark-mode {
            --bg-page: #0f172a;
            --bg-card: #1e293b;
            --bg-bar: #1e293b;
            --bg-input: #334155;
            --bg-hover: #334155;
            --bg-code: #0f172a;
            --bd: #334155;
            --bd2: #475569;
            --t1: #f1f5f9;
            --t2: #cbd5e1;
            --t3: #64748b;
        }

        *,
        *::before,
        *::after {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        html {
            scroll-behavior: smooth;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
            background: var(--bg-page);
            color: var(--t1);
            line-height: 1.5;
            min-height: 100vh;
            transition: background var(--anim), color var(--anim);
        }

        #app {
            display: flex;
            flex-direction: column;
            min-height: 100vh;
        }

        /* ========== 头部 ========== */
        .hdr {
            height: var(--hdr-h);
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 16px;
            background: linear-gradient(135deg, #1e40af, #2563eb);
            color: #fff;
            z-index: 100;
            flex-shrink: 0;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
            gap: 8px;
        }

        .hdr-left {
            display: flex;
            align-items: center;
            gap: 10px;
            min-width: 0;
        }

        .hdr-logo {
            width: 32px;
            height: 32px;
            background: #fff;
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #1e40af;
            flex-shrink: 0;
        }

        .hdr-logo svg {
            width: 18px;
            height: 18px;
            fill: currentColor;
        }

        .hdr-info {
            min-width: 0;
        }

        .hdr-title {
            font-size: 1rem;
            font-weight: 700;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .hdr-sub {
            font-size: 0.7rem;
            opacity: 0.75;
            white-space: nowrap;
        }

        .hdr-right {
            display: flex;
            gap: 4px;
            flex-wrap: wrap;
            justify-content: flex-end;
            flex-shrink: 0;
        }

        .hdr-btn {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 5px 10px;
            border-radius: 6px;
            font-size: 0.78rem;
            cursor: pointer;
            border: 1px solid rgba(255, 255, 255, 0.25);
            background: transparent;
            color: #fff;
            transition: all var(--anim);
            white-space: nowrap;
            font-family: inherit;
            outline: none;
        }

        .hdr-btn:hover {
            background: rgba(255, 255, 255, 0.15);
            border-color: rgba(255, 255, 255, 0.5);
        }

        .hdr-btn.green {
            background: var(--c-ok);
            border-color: var(--c-ok);
        }

        .hdr-btn.green:hover {
            background: #059669;
        }

        .hdr-btn.blue {
            background: rgba(255, 255, 255, 0.15);
            border-color: rgba(255, 255, 255, 0.35);
        }

        .hdr-btn:disabled {
            opacity: 0.4;
            cursor: not-allowed;
        }

        .hdr-btn svg {
            width: 14px;
            height: 14px;
            fill: currentColor;
            flex-shrink: 0;
        }

        .hdr-btn .btn-label {
            display: inline;
        }

        /* ========== 主体布局 ========== */
        .body-wrap {
            display: flex;
            flex: 1;
            overflow: hidden;
        }

        /* 侧边栏 */
        .sidebar {
            width: var(--sidebar-w);
            flex-shrink: 0;
            background: var(--bg-card);
            border-right: 1px solid var(--bd);
            overflow-y: auto;
            overflow-x: hidden;
            transition: transform var(--anim);
            display: flex;
            flex-direction: column;
        }

        .sidebar.hide {
            transform: translateX(-100%);
            position: absolute;
            left: 0;
            top: var(--hdr-h);
            bottom: 0;
            z-index: 200;
            box-shadow: var(--shadow-l);
        }

        .sidebar.show {
            transform: translateX(0);
        }

        .sb-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.4);
            z-index: 199;
            backdrop-filter: blur(2px);
        }

        .sb-overlay.vis {
            display: block;
        }

        .sb-sec {
            padding: 14px;
            border-bottom: 1px solid var(--bd);
        }

        .sb-sec:last-child {
            border-bottom: none;
        }

        .sb-hd {
            font-size: 0.75rem;
            font-weight: 700;
            color: var(--t3);
            text-transform: uppercase;
            letter-spacing: 0.04em;
            margin-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .sb-hd svg {
            width: 14px;
            height: 14px;
            fill: var(--c-primary);
        }

        .sb-f {
            margin-bottom: 8px;
        }

        .sb-lb {
            font-size: 0.75rem;
            color: var(--t2);
            margin-bottom: 3px;
            display: flex;
            align-items: center;
            gap: 4px;
        }

        .sb-acts {
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
        }

        .sb-acts .el-button {
            flex: 1;
            min-width: 0;
        }

        /* 主区域 */
        .main-area {
            flex: 1;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            min-width: 0;
        }

        /* 工具栏 */
        .toolbar {
            padding: 8px 14px;
            background: var(--bg-bar);
            border-bottom: 1px solid var(--bd);
            display: flex;
            align-items: center;
            gap: 6px;
            flex-wrap: wrap;
            flex-shrink: 0;
        }

        .tb-grp {
            display: flex;
            align-items: center;
            gap: 4px;
        }

        .tb-sep {
            width: 1px;
            height: 22px;
            background: var(--bd);
            margin: 0 2px;
            flex-shrink: 0;
        }

        .tb-badge {
            display: inline-flex;
            align-items: center;
            gap: 3px;
            padding: 2px 8px;
            border-radius: 14px;
            font-size: 0.72rem;
            font-weight: 600;
            background: var(--bg-input);
            color: var(--t2);
            border: 1px solid var(--bd);
            white-space: nowrap;
            cursor: default;
        }

        .tb-badge.hi {
            background: var(--c-primary-lt);
            color: var(--c-primary-dk);
            border-color: var(--c-primary);
        }

        .tb-badge svg {
            width: 11px;
            height: 11px;
            fill: currentColor;
        }

        .ib {
            width: 30px;
            height: 30px;
            border-radius: var(--r);
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            color: var(--t2);
            border: 1px solid var(--bd);
            background: var(--bg-card);
            transition: all var(--anim);
            flex-shrink: 0;
        }

        .ib:hover {
            border-color: var(--c-primary);
            color: var(--c-primary);
            background: var(--c-primary-lt);
        }

        .ib.on {
            background: var(--c-primary);
            color: #fff;
            border-color: var(--c-primary);
        }

        .ib svg {
            width: 14px;
            height: 14px;
            fill: currentColor;
        }

        /* 筛选栏 */
        .sub-bar {
            padding: 6px 14px;
            background: var(--bg-input);
            border-bottom: 1px solid var(--bd);
            display: flex;
            align-items: center;
            gap: 6px;
            flex-wrap: wrap;
        }

        /* 批量操作栏 */
        .batch-bar {
            padding: 6px 14px;
            background: var(--c-primary-lt);
            border-bottom: 1px solid #bfdbfe;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 6px;
            flex-wrap: wrap;
        }

        .batch-info {
            font-size: 0.82rem;
            font-weight: 500;
            color: var(--c-primary-dk);
        }

        /* 内容滚动区 */
        .content-scroll {
            flex: 1;
            overflow-y: auto;
            padding: 14px;
        }

        /* 网格布局 */
        .dg {
            display: grid;
            gap: 10px;
        }

        .dg.gm {
            grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
        }

        .dg.lm {
            grid-template-columns: 1fr;
            gap: 3px;
        }

        /* 数据卡片 */
        .dc {
            background: var(--bg-card);
            border: 1px solid var(--bd);
            border-radius: var(--r2);
            padding: 12px;
            cursor: default;
            transition: all var(--anim);
            position: relative;
        }

        .dc:hover {
            border-color: var(--c-primary);
            box-shadow: var(--shadow-s);
        }

        .dc.sel {
            border-color: var(--c-primary);
            background: var(--c-primary-lt);
            box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.12);
        }

        .dark-mode .dc.sel {
            background: rgba(59, 130, 246, 0.1);
        }

        .dc-hd {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 8px;
            padding-bottom: 6px;
            border-bottom: 1px solid var(--bd);
        }

        .dc-hd-l {
            display: flex;
            align-items: center;
            gap: 5px;
        }

        .dh {
            color: var(--t3);
            cursor: move;
            display: flex;
            align-items: center;
        }

        .dh svg {
            width: 14px;
            height: 14px;
            fill: currentColor;
        }

        .dh:hover {
            color: var(--c-primary);
        }

        .cidx {
            width: 22px;
            height: 22px;
            border-radius: 5px;
            background: var(--bg-input);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 0.68rem;
            font-weight: 700;
            color: var(--t2);
            cursor: pointer;
        }

        .cidx:hover {
            background: var(--c-primary);
            color: #fff;
        }

        .dc-acts {
            display: flex;
            gap: 2px;
        }

        .dc-acts .el-button {
            padding: 3px;
        }

        .dc-body {
            display: flex;
            flex-direction: column;
            gap: 6px;
        }

        .fr {
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        .fk {
            font-size: 0.66rem;
            font-weight: 700;
            color: var(--t3);
            text-transform: uppercase;
            letter-spacing: 0.03em;
        }

        /* 列表模式 */
        .lm .dc {
            padding: 6px 12px;
            border-radius: var(--r);
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .lm .dc-hd {
            margin-bottom: 0;
            padding-bottom: 0;
            border-bottom: none;
            flex-shrink: 0;
        }

        .lm .dc-body {
            display: none;
        }

        .lm .ls {
            flex: 1;
            min-width: 0;
            display: flex;
            align-items: center;
            gap: 6px;
            overflow: hidden;
        }

        .gm .ls {
            display: none;
        }

        .ln {
            font-weight: 600;
            font-size: 0.85rem;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 160px;
            flex-shrink: 0;
        }

        .lt {
            display: flex;
            gap: 3px;
            overflow: hidden;
            flex-wrap: nowrap;
        }

        .lt .el-tag {
            max-width: 180px;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        /* 元数据网格 */
        .mg {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
            gap: 10px;
        }

        .mi {
            display: flex;
            flex-direction: column;
            gap: 3px;
        }

        .ml {
            font-size: 0.72rem;
            font-weight: 600;
            color: var(--t3);
            text-transform: uppercase;
        }

        /* 空状态 */
        .empty {
            text-align: center;
            padding: 50px 20px;
            color: var(--t3);
        }

        .empty svg {
            width: 48px;
            height: 48px;
            fill: currentColor;
            opacity: 0.3;
            margin-bottom: 10px;
        }

        /* 优选库和回收站 */
        .fav-wrap,
        .trash-wrap {
            border-top: 1px solid var(--bd);
            background: var(--bg-card);
        }

        .fav-hd,
        .trash-hd {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 14px;
            cursor: pointer;
            user-select: none;
            font-size: 0.85rem;
        }

        .fav-hd svg {
            width: 14px;
            height: 14px;
            fill: var(--c-star);
        }

        .trash-hd svg {
            width: 14px;
            height: 14px;
            fill: var(--c-danger);
        }

        .fav-bd,
        .trash-bd {
            padding: 0 14px 14px;
            max-height: 300px;
            overflow-y: auto;
        }

        .fav-it,
        .trash-it {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 4px 10px;
            background: var(--bg-input);
            border-radius: var(--r);
            margin-bottom: 3px;
            font-size: 0.82rem;
        }

        .fav-it {
            border-left: 3px solid var(--c-star);
        }

        .trash-nm,
        .fav-nm {
            flex: 1;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .bin-acts {
            display: flex;
            gap: 4px;
            flex-wrap: wrap;
            margin-bottom: 8px;
            padding: 6px 0;
            border-bottom: 1px solid var(--bd);
        }

        .bin-acts .el-button {
            padding: 4px 8px;
        }

        /* 状态栏 */
        .sbar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 4px 14px;
            background: var(--bg-card);
            border-top: 1px solid var(--bd);
            font-size: 0.72rem;
            color: var(--t3);
            flex-shrink: 0;
            flex-wrap: wrap;
            gap: 4px;
        }

        .sbar-l {
            display: flex;
            gap: 12px;
            flex-wrap: wrap;
        }

        /* 预览对话框 */
        .pv-dialog .el-dialog__body {
            padding: 0 !important;
        }

        .pv-dialog .el-dialog__header {
            padding: 10px 16px;
            border-bottom: 1px solid var(--bd);
        }

        .pv-wrap {
            display: flex;
            flex-direction: column;
            height: calc(85vh - 70px);
        }

        .pv-bar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 8px 16px;
            border-bottom: 1px solid var(--bd);
            background: var(--bg-input);
            flex-wrap: wrap;
            gap: 6px;
        }

        .pv-panels {
            display: flex;
            flex: 1;
            min-height: 0;
        }

        .pv-panel {
            flex: 1;
            display: flex;
            flex-direction: column;
            min-width: 0;
        }

        .pv-panel+.pv-panel {
            border-left: 2px solid var(--bd);
        }

        .pv-phd {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 6px 14px;
            background: var(--bg-input);
            border-bottom: 1px solid var(--bd);
            font-size: 0.82rem;
            font-weight: 600;
        }

        .pv-ta {
            flex: 1;
            width: 100%;
            border: none;
            outline: none;
            resize: none;
            padding: 14px;
            font-family: "Consolas", "Monaco", monospace;
            font-size: 12.5px;
            line-height: 1.6;
            background: var(--bg-code);
            color: #e2e8f0;
            overflow: auto;
        }

        /* JSON编辑对话框 */
        .nd .el-dialog {
            border-radius: var(--r3) !important;
            max-width: calc(100vw - 20px) !important;
        }

        .nd .el-dialog__header {
            border-bottom: 1px solid var(--bd);
        }

        .nd .el-dialog__body {
            padding: 16px;
            max-height: 75vh;
            overflow-y: auto;
        }

        .nd .el-dialog__footer {
            border-top: 1px solid var(--bd);
        }

        .je-ta {
            width: 100%;
            min-height: 300px;
            padding: 14px;
            background: var(--bg-code);
            color: #e2e8f0;
            font-family: "Consolas", "Monaco", monospace;
            font-size: 12.5px;
            line-height: 1.6;
            border: 1px solid var(--bd2);
            border-radius: var(--r);
            resize: vertical;
            outline: none;
        }

        /* 回到顶部 */
        .back-top {
            position: fixed;
            bottom: 16px;
            right: 16px;
            width: 36px;
            height: 36px;
            border-radius: 50%;
            background: var(--c-primary);
            color: #fff;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            box-shadow: var(--shadow-m);
            z-index: 100;
            transition: all var(--anim);
            opacity: 0;
            transform: translateY(12px);
            pointer-events: none;
        }

        .back-top.vis {
            opacity: 1;
            transform: translateY(0);
            pointer-events: auto;
        }

        .back-top:hover {
            transform: translateY(-2px);
            box-shadow: var(--shadow-l);
        }

        .back-top svg {
            width: 16px;
            height: 16px;
            fill: currentColor;
        }

        /* 滚动条 */
        ::-webkit-scrollbar {
            width: 7px;
            height: 7px;
        }

        ::-webkit-scrollbar-track {
            background: transparent;
        }

        ::-webkit-scrollbar-thumb {
            background: var(--bd2);
            border-radius: 4px;
        }

        ::-webkit-scrollbar-thumb:hover {
            background: var(--t3);
        }

        /* Element UI 覆盖 */
        .el-select-dropdown {
            max-width: calc(100vw - 20px) !important;
        }

        .el-select-dropdown__item {
            white-space: normal !important;
            word-break: break-all;
            line-height: 1.4;
            padding: 8px 16px;
            height: auto !important;
            min-height: 34px;
            display: flex;
            align-items: center;
        }

        .el-message {
            top: 8px !important;
            min-width: auto !important;
            padding: 8px 16px !important;
            z-index: 10000 !important;
        }

        .el-dialog__wrapper {
            overflow: auto !important;
        }

        .el-dialog {
            margin: 10px auto !important;
        }

        /* 自定义下拉组件 */
        .smart-select-wrap {
            position: relative;
            width: 100%;
        }

        .smart-select-wrap .el-input .el-input__inner {
            padding-right: 32px !important;
        }

        .smart-select-wrap .ss-arrow {
            position: absolute;
            right: 1px;
            top: 1px;
            bottom: 1px;
            width: 28px;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            color: var(--t3);
            border-left: 1px solid var(--bd);
            background: var(--bg-input);
            border-radius: 0 3px 3px 0;
            z-index: 2;
            transition: all 0.15s;
            user-select: none;
        }

        .smart-select-wrap .ss-arrow:hover {
            color: var(--c-primary);
            background: var(--c-primary-lt);
        }

        .smart-select-wrap .ss-arrow svg {
            width: 12px;
            height: 12px;
            fill: currentColor;
            transition: transform 0.2s;
        }

        .smart-select-wrap .ss-arrow.open svg {
            transform: rotate(180deg);
        }

        .smart-select-wrap .ss-dropdown {
            position: absolute;
            top: 100%;
            left: 0;
            right: 0;
            z-index: 2001;
            margin-top: 4px;
            background: var(--bg-card);
            border: 1px solid var(--bd);
            border-radius: var(--r);
            box-shadow: var(--shadow-m);
            max-height: 240px;
            overflow-y: auto;
            overflow-x: hidden;
        }

        .smart-select-wrap .ss-item {
            padding: 8px 12px;
            font-size: 0.82rem;
            cursor: pointer;
            color: var(--t1);
            word-break: break-all;
            line-height: 1.4;
            transition: background 0.1s;
        }

        .smart-select-wrap .ss-item:hover {
            background: var(--c-primary-lt);
            color: var(--c-primary-dk);
        }

        .smart-select-wrap .ss-item.active {
            background: var(--c-primary);
            color: #fff;
        }

        .smart-select-wrap .ss-empty {
            padding: 12px;
            text-align: center;
            font-size: 0.78rem;
            color: var(--t3);
        }

        .named-select-wrap {
            position: relative;
            width: 100%;
        }

        .named-select-wrap .el-input .el-input__inner {
            padding-right: 32px !important;
        }

        .named-select-wrap .ns-arrow {
            position: absolute;
            right: 1px;
            top: 1px;
            bottom: 1px;
            width: 28px;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            color: var(--t3);
            border-left: 1px solid var(--bd);
            background: var(--bg-input);
            border-radius: 0 3px 3px 0;
            z-index: 2;
            transition: all 0.15s;
            user-select: none;
        }

        .named-select-wrap .ns-arrow:hover {
            color: var(--c-primary);
            background: var(--c-primary-lt);
        }

        .named-select-wrap .ns-arrow svg {
            width: 12px;
            height: 12px;
            fill: currentColor;
            transition: transform 0.2s;
        }

        .named-select-wrap .ns-arrow.open svg {
            transform: rotate(180deg);
        }

        .named-select-wrap .ns-dropdown {
            position: absolute;
            top: 100%;
            left: 0;
            right: 0;
            z-index: 2001;
            margin-top: 4px;
            background: var(--bg-card);
            border: 1px solid var(--bd);
            border-radius: var(--r);
            box-shadow: var(--shadow-m);
            max-height: 240px;
            overflow-y: auto;
        }

        .named-select-wrap .ns-item {
            padding: 8px 12px;
            font-size: 0.82rem;
            cursor: pointer;
            color: var(--t1);
            line-height: 1.4;
            transition: background 0.1s;
        }

        .named-select-wrap .ns-item:hover {
            background: var(--c-primary-lt);
            color: var(--c-primary-dk);
        }

        .named-select-wrap .ns-item.active {
            background: var(--c-primary);
            color: #fff;
        }

        .named-select-wrap .ns-item .ns-desc {
            font-size: 0.7rem;
            color: var(--t3);
            margin-top: 2px;
        }

        .named-select-wrap .ns-item.active .ns-desc {
            color: rgba(255, 255, 255, 0.7);
        }

        /* GitHub选项卡 */
        .gh-tabs {
            display: flex;
            gap: 0;
            margin-bottom: 16px;
            border-bottom: 2px solid var(--bd);
        }

        .gh-tab {
            flex: 1;
            padding: 10px 16px;
            text-align: center;
            font-size: 0.88rem;
            font-weight: 600;
            cursor: pointer;
            color: var(--t3);
            border-bottom: 2px solid transparent;
            margin-bottom: -2px;
            transition: all 0.2s;
            user-select: none;
        }

        .gh-tab:hover {
            color: var(--t1);
            background: var(--bg-input);
        }

        .gh-tab.active {
            color: var(--c-primary);
            border-bottom-color: var(--c-primary);
        }

        .gh-card {
            background: var(--bg-input);
            border: 1px solid var(--bd);
            border-radius: var(--r2);
            padding: 16px;
        }

        .gh-card-title {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 12px;
            font-size: 0.85rem;
            font-weight: 600;
            color: var(--t1);
        }

        .gh-card-title svg {
            width: 18px;
            height: 18px;
            fill: var(--c-primary);
        }

        .gh-card-desc {
            font-size: 0.75rem;
            color: var(--t3);
            margin-bottom: 12px;
            padding: 8px 12px;
            background: var(--bg-card);
            border-radius: var(--r);
            border-left: 3px solid var(--c-primary);
        }

        .gh-url-bar {
            display: flex;
            gap: 4px;
            align-items: center;
        }

        .gh-url-bar .el-input {
            flex: 1;
        }

        .gh-url-btn {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 7px 12px;
            border-radius: 4px;
            font-size: 0.8rem;
            cursor: pointer;
            border: 1px solid var(--bd);
            background: var(--bg-card);
            color: var(--t1);
            transition: all 0.15s;
            white-space: nowrap;
            font-family: inherit;
        }

        .gh-url-btn:hover {
            border-color: var(--c-primary);
            color: var(--c-primary);
            background: var(--c-primary-lt);
        }

        .gh-url-btn.primary {
            background: var(--c-primary);
            color: #fff;
            border-color: var(--c-primary);
        }

        .gh-url-btn.primary:hover {
            background: var(--c-primary-dk);
        }

        .gh-url-btn svg {
            width: 14px;
            height: 14px;
            fill: currentColor;
        }

        /* 提示 */
        [data-hint] {
            position: relative;
        }

        [data-hint]:hover::after {
            content: attr(data-hint);
            position: absolute;
            bottom: calc(100% + 6px);
            left: 50%;
            transform: translateX(-50%);
            background: var(--t1);
            color: var(--bg-card);
            font-size: 0.7rem;
            padding: 4px 8px;
            border-radius: 4px;
            white-space: nowrap;
            z-index: 9999;
            pointer-events: none;
            box-shadow: var(--shadow-s);
        }

        /* 响应式 */
        @media (max-width: 1024px) {
            .sidebar {
                position: fixed;
                top: var(--hdr-h);
                bottom: 0;
                left: 0;
                z-index: 200;
                box-shadow: var(--shadow-l);
            }

            .sb-overlay.vis {
                display: block;
            }
        }

        @media (max-width: 640px) {
            :root {
                --sidebar-w: 88vw;
                --hdr-h: 48px;
            }

            .hdr {
                padding: 0 10px;
                gap: 6px;
            }

            .hdr-title {
                font-size: 0.88rem;
            }

            .hdr-sub {
                display: none;
            }

            .hdr-btn .btn-label {
                display: none;
            }

            .hdr-btn {
                padding: 5px 7px;
            }

            .toolbar {
                padding: 6px 10px;
                gap: 4px;
            }

            .content-scroll {
                padding: 8px;
            }

            .dg.gm {
                grid-template-columns: 1fr;
            }

            .pv-panels {
                flex-direction: column;
            }

            .pv-panel+.pv-panel {
                border-left: none;
                border-top: 2px solid var(--bd);
            }

            .mg {
                grid-template-columns: 1fr;
            }

            .sbar {
                justify-content: center;
            }

            .tb-sep {
                display: none;
            }

            .lt {
                display: none;
            }

            .el-dialog {
                width: calc(100vw - 16px) !important;
                margin: 8px auto !important;
            }

            [data-hint]:hover::after {
                display: none;
            }
        }

        /* 加载动画 */
        .loading-spinner {
            display: inline-block;
            width: 16px;
            height: 16px;
            border: 2px solid rgba(255,255,255,0.3);
            border-radius: 50%;
            border-top-color: #fff;
            animation: spin 0.6s linear infinite;
            margin-right: 4px;
        }

        @keyframes spin {
            to { transform: rotate(360deg); }
        }

        /* 错误提示样式 */
        .error-message {
            color: var(--c-danger);
            font-size: 0.75rem;
            margin-top: 4px;
            padding: 4px 8px;
            background: rgba(239, 68, 68, 0.1);
            border-radius: 4px;
            border-left: 2px solid var(--c-danger);
        }