/**
 * Wency 安全日志分析平台 - 全局样式系统
 * 统一的设计规范、页面主题和暗色模式
 */

/* ==================== 设计令牌 (Design Tokens) ==================== */
:root {
    /* 主色调 - 品牌蓝 */
    --primary-900: #1E3A8A;
    --primary-800: #1E40AF;
    --primary-700: #1D4ED8;
    --primary-600: #2563EB;
    --primary-500: #3B82F6;
    --primary-400: #60A5FA;
    --primary-300: #93C5FD;
    --primary-200: #BFDBFE;
    --primary-100: #DBEAFE;
    --primary-50: #EFF6FF;
    
    /* 成功色 - 绿色 */
    --success-600: #059669;
    --success-500: #10B981;
    --success-100: #D1FAE5;
    --success-50: #ECFDF5;
    
    /* 警告色 - 黄色 */
    --warning-600: #D97706;
    --warning-500: #F59E0B;
    --warning-100: #FEF3C7;
    --warning-50: #FFFBEB;
    
    /* 危险色 - 红色 */
    --danger-600: #DC2626;
    --danger-500: #EF4444;
    --danger-100: #FEE2E2;
    --danger-50: #FEF2F2;
    
    /* 中性色 */
    --gray-900: #0F172A;
    --gray-800: #1E293B;
    --gray-700: #334155;
    --gray-600: #475569;
    --gray-500: #64748B;
    --gray-400: #94A3B8;
    --gray-300: #CBD5E1;
    --gray-200: #E2E8F0;
    --gray-100: #F1F5F9;
    --gray-50: #F8FAFC;
    
    /* 语义化变量 */
    --primary: var(--primary-900);
    --primary-light: var(--primary-500);
    --bg: var(--gray-50);
    --card-bg: #FFFFFF;
    --text: var(--gray-800);
    --text-light: var(--gray-500);
    --success: var(--success-500);
    --warning: var(--warning-500);
    --danger: var(--danger-500);
    --purple: #7C3AED;
    
    /* 间距系统 */
    --space-xs: 4px;
    --space-sm: 8px;
    --space-md: 12px;
    --space-lg: 16px;
    --space-xl: 24px;
    --space-2xl: 32px;
    --space-3xl: 48px;
    
    /* 圆角 */
    --radius-sm: 6px;
    --radius-md: 8px;
    --radius-lg: 12px;
    --radius-xl: 16px;
    --radius-full: 9999px;
    
    /* 阴影 */
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
    --shadow-md: 0 1px 3px rgba(0, 0, 0, 0.1);
    --shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.1);
    --shadow-xl: 0 10px 15px rgba(0, 0, 0, 0.1);
    
    /* 过渡动画 */
    --transition-fast: 150ms ease;
    --transition-base: 200ms ease;
    --transition-slow: 300ms ease;
    
    /* 字体 */
    --font-family: 'PingFang SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --font-mono: 'SF Mono', 'Fira Code', 'Consolas', monospace;
}

/* ==================== 基础重置 ==================== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    background-color: var(--bg);
}

body {
    font-family: var(--font-family);
    background-color: var(--bg);
    color: var(--text);
    line-height: 1.6;
    min-height: 100vh;
    transition: opacity 180ms ease, background-color var(--transition-base), color var(--transition-base);
}

html.page-transition-pending body {
    opacity: 0;
}

body.page-ready {
    opacity: 1;
}

a {
    color: inherit;
}

/* ==================== 页面主题 ==================== */
body.page-alerts {
    --primary-900: #7F1D1D;
    --primary-800: #991B1B;
    --primary-700: #B91C1C;
    --primary-600: #DC2626;
    --primary-500: #EF4444;
    --primary-400: #F87171;
    --primary-300: #FCA5A5;
    --primary-200: #FECACA;
    --primary-100: #FEE2E2;
    --primary-50: #FEF2F2;
}

body.page-dashboard {
    --primary-900: #164E63;
    --primary-800: #155E75;
    --primary-700: #0F766E;
    --primary-600: #0891B2;
    --primary-500: #06B6D4;
    --primary-400: #22D3EE;
    --primary-300: #67E8F9;
    --primary-200: #A5F3FC;
    --primary-100: #CFFAFE;
    --primary-50: #ECFEFF;
}

body.page-history {
    --primary-900: #134E4A;
    --primary-800: #115E59;
    --primary-700: #0F766E;
    --primary-600: #0D9488;
    --primary-500: #14B8A6;
    --primary-400: #2DD4BF;
    --primary-300: #5EEAD4;
    --primary-200: #99F6E4;
    --primary-100: #CCFBF1;
    --primary-50: #F0FDFA;
}

body.page-profile,
body.page-login,
body.page-register,
body.page-forgot-password {
    --primary-900: #78350F;
    --primary-800: #92400E;
    --primary-700: #B45309;
    --primary-600: #D97706;
    --primary-500: #F59E0B;
    --primary-400: #FBBF24;
    --primary-300: #FCD34D;
    --primary-200: #FDE68A;
    --primary-100: #FEF3C7;
    --primary-50: #FFFBEB;
}

body.page-ssh {
    --primary-900: #312E81;
    --primary-800: #3730A3;
    --primary-700: #4338CA;
    --primary-600: #4F46E5;
    --primary-500: #6366F1;
    --primary-400: #818CF8;
    --primary-300: #A5B4FC;
    --primary-200: #C7D2FE;
    --primary-100: #E0E7FF;
    --primary-50: #EEF2FF;
}

body.page-local {
    --primary-900: #581C87;
    --primary-800: #6B21A8;
    --primary-700: #7E22CE;
    --primary-600: #9333EA;
    --primary-500: #A855F7;
    --primary-400: #C084FC;
    --primary-300: #D8B4FE;
    --primary-200: #E9D5FF;
    --primary-100: #F3E8FF;
    --primary-50: #FAF5FF;
}

body.page-upload {
    --primary-900: #14532D;
    --primary-800: #166534;
    --primary-700: #15803D;
    --primary-600: #16A34A;
    --primary-500: #22C55E;
    --primary-400: #4ADE80;
    --primary-300: #86EFAC;
    --primary-200: #BBF7D0;
    --primary-100: #DCFCE7;
    --primary-50: #F0FDF4;
}

body.page-sample {
    --primary-900: #7C2D12;
    --primary-800: #9A3412;
    --primary-700: #C2410C;
    --primary-600: #EA580C;
    --primary-500: #F97316;
    --primary-400: #FB923C;
    --primary-300: #FDBA74;
    --primary-200: #FED7AA;
    --primary-100: #FFEDD5;
    --primary-50: #FFF7ED;
}

body.page-blocked-ips {
    --primary-900: #7F1D1D;
    --primary-800: #991B1B;
    --primary-700: #B91C1C;
    --primary-600: #DC2626;
    --primary-500: #EF4444;
    --primary-400: #F87171;
    --primary-300: #FCA5A5;
    --primary-200: #FECACA;
    --primary-100: #FEE2E2;
    --primary-50: #FEF2F2;
}

/* ==================== 暗色模式 ==================== */
body.theme-dark {
    color-scheme: dark;
    --bg: #08111F;
    --card-bg: #0F172A;
    --text: #E2E8F0;
    --text-light: #94A3B8;
    --gray-900: #F8FAFC;
    --gray-800: #E2E8F0;
    --gray-700: #CBD5E1;
    --gray-600: #94A3B8;
    --gray-500: #64748B;
    --gray-400: #475569;
    --gray-300: #334155;
    --gray-200: #243244;
    --gray-100: #162132;
    --gray-50: #0B1424;
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
    --shadow-md: 0 8px 24px rgba(2, 6, 23, 0.42);
    --shadow-lg: 0 16px 36px rgba(2, 6, 23, 0.5);
    --shadow-xl: 0 24px 48px rgba(2, 6, 23, 0.58);
}

body.theme-dark .nav-bar {
    background: linear-gradient(135deg, #0F172A 0%, var(--primary-900) 100%);
    border-bottom: 1px solid rgba(148, 163, 184, 0.16);
}

body.theme-dark .nav-dropdown-menu {
    background: linear-gradient(180deg, rgba(2, 6, 23, 0.98) 0%, rgba(15, 23, 42, 0.99) 100%) !important;
    border-color: rgba(71, 85, 105, 0.72) !important;
    box-shadow: 0 28px 56px rgba(2, 6, 23, 0.62) !important;
}

body.theme-dark .nav-dropdown-group-label {
    color: rgba(148, 163, 184, 0.82);
}

body.theme-dark .nav-dropdown-item {
    color: rgba(255, 255, 255, 0.92);
    background: rgba(255, 255, 255, 0.03);
    border-color: transparent;
}

body.theme-dark .nav-dropdown-item > i {
    color: rgba(147, 197, 253, 0.94);
}

body.theme-dark .nav-dropdown-text {
    color: rgba(255, 255, 255, 0.94);
}

body.theme-dark .confirm-dialog {
    background: #0F172A;
    border-color: var(--gray-200);
}

body.theme-dark .confirm-danger .confirm-icon {
    background: rgba(239, 68, 68, 0.18);
    color: #FCA5A5;
}

body.theme-dark .confirm-primary .confirm-icon {
    background: rgba(59, 130, 246, 0.18);
    color: #93C5FD;
}

body.theme-dark .nav-dropdown-item:hover,
body.theme-dark .nav-dropdown-item.active {
    background: linear-gradient(180deg, rgba(30, 41, 59, 0.98) 0%, rgba(15, 23, 42, 1) 100%) !important;
    border-color: rgba(96, 165, 250, 0.22) !important;
    box-shadow: 0 10px 20px rgba(2, 6, 23, 0.26);
}

body.theme-dark .nav-dropdown-item:hover > i,
body.theme-dark .nav-dropdown-item.active > i,
body.theme-dark .nav-dropdown-item:hover .nav-dropdown-text,
body.theme-dark .nav-dropdown-item.active .nav-dropdown-text {
    color: white;
}

body.theme-dark .auth-sitebar-container {
    background: rgba(2, 6, 23, 0.82);
    border-color: rgba(148, 163, 184, 0.16);
}

body.theme-dark .nav-dropdown-menu,
body.theme-dark .auth-card,
body.theme-dark .workspace-side-card,
body.theme-dark .card,
body.theme-dark .table-container,
body.theme-dark .mode-switch-card,
body.theme-dark .flow-card,
body.theme-dark .operation-panel,
body.theme-dark .sidebar,
body.theme-dark .preview-panel,
body.theme-dark .overview-card,
body.theme-dark .summary-card,
body.theme-dark .filter-bar,
body.theme-dark .table-card,
body.theme-dark .side-card,
body.theme-dark .drawer-card,
body.theme-dark .panel,
body.theme-dark .chart-card,
body.theme-dark .runtime-card,
body.theme-dark .stat-card,
body.theme-dark .sample-card,
body.theme-dark .path-item,
body.theme-dark .sysinfo-group,
body.theme-dark .card,
body.theme-dark .ip-table,
body.theme-dark .modal-content {
    background: var(--card-bg) !important;
    border-color: var(--gray-200) !important;
    box-shadow: var(--shadow-md) !important;
}

body.theme-dark .auth-panel,
body.theme-dark .loading-overlay {
    background: rgba(2, 6, 23, 0.78) !important;
}

body.theme-dark .page-transition-overlay {
    background:
        radial-gradient(circle at top left, rgba(59, 130, 246, 0.12), transparent 32%),
        linear-gradient(180deg, rgba(8, 17, 31, 0.72) 0%, rgba(11, 20, 36, 0.84) 100%);
    backdrop-filter: blur(10px);
}

body.theme-dark .page-transition-indicator {
    border-color: rgba(148, 163, 184, 0.14);
    border-top-color: rgba(96, 165, 250, 0.92);
}

body.theme-dark .workspace-kicker,
body.theme-dark .auth-info-box,
body.theme-dark .panel-intro,
body.theme-dark .workspace-side-card,
body.theme-dark .upload-progress,
body.theme-dark .meta-item,
body.theme-dark .capability-item,
body.theme-dark .quick-chip,
body.theme-dark .role-chip,
body.theme-dark .source-badge {
    background: linear-gradient(180deg, rgba(15, 23, 42, 0.96) 0%, rgba(11, 20, 36, 0.98) 100%) !important;
    border-color: var(--gray-200) !important;
    color: var(--text) !important;
}

body.theme-dark .workspace-tag,
body.theme-dark .results-tag,
body.theme-dark .auth-checkbox,
body.theme-dark .btn-outline,
body.theme-dark .page-btn,
body.theme-dark .quick-time,
body.theme-dark .status-badge,
body.theme-dark .action-badge {
    background: #0B1424 !important;
    border-color: var(--gray-200) !important;
    color: var(--text) !important;
}

body.theme-dark .btn-outline:hover:not(:disabled),
body.theme-dark .page-btn:hover,
body.theme-dark .quick-time:hover,
body.theme-dark .quick-time.active,
body.theme-dark .path-item:hover,
body.theme-dark .sample-card:hover,
body.theme-dark .log-type-category > .cat-header:hover,
body.theme-dark .log-type-tree .type-leaf:hover,
body.theme-dark .file-item-v2:hover,
body.theme-dark .ssh-file-item:hover,
body.theme-dark .table tr:hover,
body.theme-dark .log-row:hover,
body.theme-dark .ip-table tr:hover {
    background: rgba(148, 163, 184, 0.08) !important;
}

body.theme-dark .page-with-source-main,
body.theme-dark .page-source-column {
    scrollbar-color: rgba(148, 163, 184, 0.38) transparent;
}

body.theme-dark .form-input,
body.theme-dark .form-select,
body.theme-dark .form-textarea,
body.theme-dark input,
body.theme-dark select,
body.theme-dark textarea,
body.theme-dark .ssh-browse-row input,
body.theme-dark .auth-toggle-group,
body.theme-dark .connect-field input,
body.theme-dark .form-input {
    background: #0B1424 !important;
    color: var(--text) !important;
    border-color: var(--gray-200) !important;
}

body.theme-dark .form-input::placeholder,
body.theme-dark input::placeholder,
body.theme-dark textarea::placeholder {
    color: var(--text-light) !important;
}

body.theme-dark .table th,
body.theme-dark .chart-card .chart-header,
body.theme-dark .preview-toolbar,
body.theme-dark .card-footer,
body.theme-dark .table-head,
body.theme-dark .ip-table th,
body.theme-dark .preview-header {
    background: #111B2C !important;
    border-color: var(--gray-200) !important;
}

body.theme-dark .file-list-panel,
body.theme-dark .ssh-file-list,
body.theme-dark .upload-zone,
body.theme-dark .sample-card.selected,
body.theme-dark .path-item.checked {
    background: #0B1424 !important;
    border-color: var(--gray-200) !important;
}

body.theme-dark .upload-zone:hover,
body.theme-dark .upload-zone.dragover,
body.theme-dark .mode-switch-card.active,
body.theme-dark .log-type-tree .type-leaf.active {
    background: rgba(59, 130, 246, 0.12) !important;
}

body.theme-dark .preview-body,
body.theme-dark .preview-placeholder,
body.theme-dark .preview-search-row {
    background: #020817 !important;
}

body.theme-dark .site-footer {
    border-top-color: var(--gray-200);
    color: var(--text-light);
}

body.theme-dark .type-brute-force { background: rgba(59, 130, 246, 0.18); color: #93C5FD; }
body.theme-dark .type-sql-injection { background: rgba(239, 68, 68, 0.18); color: #FCA5A5; }
body.theme-dark .type-xss { background: rgba(245, 158, 11, 0.18); color: #FCD34D; }
body.theme-dark .type-path-traversal { background: rgba(129, 140, 248, 0.18); color: #C7D2FE; }
body.theme-dark .type-dos-ddos { background: rgba(236, 72, 153, 0.18); color: #F9A8D4; }
body.theme-dark .btn-block { background: rgba(239, 68, 68, 0.18); color: #FCA5A5; }
body.theme-dark .btn-block:hover { background: rgba(239, 68, 68, 0.28); }
body.theme-dark .btn-delete { background: #111B2C; color: var(--text-light); }
body.theme-dark .btn-delete:hover { background: #162132; color: #FCA5A5; }
body.theme-dark .status-success { background: rgba(16, 185, 129, 0.18); color: #6EE7B7; }
body.theme-dark .status-failed { background: rgba(239, 68, 68, 0.18); color: #FCA5A5; }
body.theme-dark .action-badge { background: rgba(20, 184, 166, 0.16); color: #99F6E4; }
body.theme-dark .action-chip { background: rgba(59, 130, 246, 0.18); color: #93C5FD; }
body.theme-dark .drawer { background: rgba(2, 6, 23, 0.56); }
body.theme-dark .source-context-badge {
    background: rgba(59, 130, 246, 0.16);
    color: #93C5FD;
    border: 1px solid rgba(59, 130, 246, 0.2);
}

body.theme-dark .source-context-primary-value {
    background: rgba(11, 20, 36, 0.96);
    border-color: var(--gray-200);
    color: var(--text);
}

body.theme-dark .source-context-line {
    background: rgba(15, 23, 42, 0.94);
    border-color: var(--gray-200);
    color: var(--text-light);
}

body.theme-dark .site-footer .site-brand-mark {
    background: rgba(59, 130, 246, 0.14);
    border-color: rgba(96, 165, 250, 0.16);
    color: #93C5FD;
}

body.theme-dark .site-footer-brand-copy strong,
body.theme-dark .site-footer strong {
    color: var(--text);
}

body.theme-dark .site-footer-link-grid a:hover {
    color: #93C5FD;
}

body.theme-dark .source-context-meta,
body.theme-dark .source-context-primary-label {
    color: var(--text-light);
}

/* ==================== 导航栏组件 ==================== */
.nav-bar {
    background: linear-gradient(135deg, var(--primary-900) 0%, var(--primary-700) 42%, var(--primary-500) 100%);
    color: white;
    box-shadow: var(--shadow-md);
    position: sticky;
    top: 0;
    z-index: 100;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.nav-container {
    max-width: 1300px;
    margin: 0 auto;
    padding: 10px 20px;
}

.nav-shell {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
    min-height: 48px;
}

.nav-main {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    flex: 1 1 auto;
}

.nav-utility {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.site-brand {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    color: inherit;
    flex-shrink: 0;
    min-width: max-content;
}

.site-brand-mark {
    width: 42px;
    height: 42px;
    border-radius: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.14);
    border: 1px solid rgba(255, 255, 255, 0.12);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
    font-size: 18px;
}

.site-brand-copy {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: max-content;
    flex: 0 0 auto;
}

.site-brand-copy strong {
    display: block;
    font-size: 15px;
    font-weight: 800;
    line-height: 1.2;
    color: white;
    white-space: normal;
}

.site-brand-copy span {
    display: block;
    font-size: 11px;
    color: rgba(255, 255, 255, 0.72);
    line-height: 1.4;
    white-space: normal;
}

.nav-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: inherit;
    flex-shrink: 0;
    min-width: 0;
    max-width: 360px;
}

.nav-brand .site-brand-mark {
    width: 38px;
    height: 38px;
    border-radius: 12px;
    font-size: 16px;
}

.nav-brand-copy {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
}

.nav-brand-copy strong {
    display: block;
    font-size: 15px;
    font-weight: 800;
    line-height: 1.15;
    color: white;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nav-brand-copy span {
    display: block;
    font-size: 11px;
    line-height: 1.25;
    color: rgba(255, 255, 255, 0.68);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nav-links {
    display: flex;
    gap: 4px;
    align-items: center;
    flex-wrap: wrap;
    min-width: 0;
}

.nav-link {
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    padding: 7px 11px;
    border-radius: 10px;
    transition: all var(--transition-base);
    font-size: 12px;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid transparent;
    background: transparent;
    font-weight: 600;
}

.nav-link:hover {
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.1);
    color: white;
}

.nav-link.active {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.14);
    color: white;
    font-weight: 700;
}

.nav-dropdown {
    position: relative;
}

.nav-dropdown.active .nav-dropdown-toggle {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.14);
    color: white;
    font-weight: 700;
}

.nav-dropdown-toggle {
    border: none;
    background: transparent;
    font: inherit;
}

.nav-dropdown-toggle[aria-expanded="true"] {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.14);
    color: white;
}

.nav-dropdown-arrow {
    font-size: 11px;
    transition: transform var(--transition-base);
}

.nav-dropdown.is-open .nav-dropdown-arrow,
.nav-dropdown:focus-within .nav-dropdown-arrow {
    transform: rotate(180deg);
}

.nav-dropdown-menu {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    min-width: 250px;
    padding: 8px;
    border-radius: 18px;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(248, 250, 252, 0.98) 100%);
    border: 1px solid rgba(226, 232, 240, 0.9);
    box-shadow: 0 22px 44px rgba(15, 23, 42, 0.16);
    backdrop-filter: blur(18px);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px) scale(0.98);
    pointer-events: none;
    transition: opacity 180ms ease, transform 180ms ease, visibility 180ms ease;
    z-index: 120;
}

.nav-dropdown-menu-right {
    right: 0;
    left: auto;
}

.nav-user-label {
    display: inline-flex;
    align-items: center;
    min-width: 40px;
    justify-content: center;
    font-weight: 700;
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nav-dropdown-group-label {
    padding: 6px 10px 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-light);
}

.nav-dropdown::after {
    content: '';
    position: absolute;
    top: calc(100% - 2px);
    right: 0;
    width: 100%;
    height: 18px;
}

.nav-dropdown.is-open .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) scale(1);
    pointer-events: auto;
}

.nav-dropdown-item {
    color: var(--text);
    text-decoration: none;
    padding: 10px 11px;
    border-radius: 12px;
    font-size: 12px;
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid rgba(226, 232, 240, 0.65);
    background: rgba(255, 255, 255, 0.72);
    transition: all var(--transition-base);
    margin-bottom: 6px;
}

.nav-dropdown-item > i {
    font-size: 15px;
    color: var(--primary-700);
}

.nav-dropdown-text {
    font-weight: 700;
    line-height: 1.4;
    color: var(--text);
}

.nav-dropdown-item:hover,
.nav-dropdown-item.active {
    background: linear-gradient(180deg, var(--primary-50) 0%, #FFFFFF 100%);
    border-color: rgba(147, 197, 253, 0.9);
    color: var(--text);
    transform: translateX(2px);
    box-shadow: 0 10px 24px rgba(37, 99, 235, 0.08);
}

.nav-dropdown-item:hover > i,
.nav-dropdown-item.active > i {
    color: var(--primary-800);
}

.nav-dropdown-item.active {
    box-shadow: inset 0 0 0 1px rgba(96, 165, 250, 0.12), 0 10px 24px rgba(37, 99, 235, 0.08);
}

.nav-dropdown-item:last-child {
    margin-bottom: 0;
}

.nav-user {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.8);
}

.nav-theme-toggle {
    padding: 7px 10px;
}

.theme-fab {
    position: fixed;
    right: 20px;
    bottom: 20px;
    width: 46px;
    height: 46px;
    border: 1px solid var(--gray-200);
    border-radius: 9999px;
    background: var(--card-bg);
    color: var(--text);
    box-shadow: var(--shadow-lg);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    z-index: 1200;
    transition: transform var(--transition-base), background-color var(--transition-base), color var(--transition-base);
}

.theme-fab:hover {
    transform: translateY(-2px);
}

/* ==================== 认证页骨架 ==================== */
.auth-shell {
    min-height: 100vh;
    display: grid;
    grid-template-columns: minmax(320px, 460px) minmax(360px, 1fr);
    background:
        radial-gradient(circle at top left, rgba(147, 197, 253, 0.35), transparent 34%),
        linear-gradient(135deg, #0F172A 0%, #1E3A8A 45%, #2563EB 100%);
}

.auth-shell.auth-shell-single {
    grid-template-columns: minmax(0, 1fr);
}

.auth-sitebar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 90;
    padding: 18px 24px;
    background: transparent;
    pointer-events: none;
}

.auth-sitebar-container {
    max-width: 1300px;
    margin: 0 auto;
    padding: 12px 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    border-radius: 18px;
    background: rgba(15, 23, 42, 0.42);
    border: 1px solid rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    box-shadow: 0 14px 36px rgba(2, 6, 23, 0.22);
    color: white;
    pointer-events: auto;
}

.auth-sitebar-brand {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    color: inherit;
    flex-shrink: 0;
}

.auth-sitebar-brand-copy {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.auth-sitebar-brand-copy strong {
    display: block;
    font-size: 15px;
    font-weight: 800;
    line-height: 1.2;
    color: white;
    white-space: nowrap;
}

.auth-sitebar-brand-copy span {
    display: block;
    font-size: 11px;
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.7);
    white-space: nowrap;
}

.site-footer-brand-link {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    color: inherit;
    flex-shrink: 0;
}

.site-footer-brand-copy {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.auth-sitebar-links {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.auth-sitebar-links a {
    color: rgba(255, 255, 255, 0.84);
    text-decoration: none;
    font-size: 13px;
    font-weight: 700;
    padding: 8px 12px;
    border-radius: 10px;
    border: 1px solid transparent;
}

.auth-sitebar-links a:hover,
.auth-sitebar-links a.active {
    color: white;
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.14);
}

.auth-brand-panel {
    position: relative;
    padding: 56px 40px;
    color: white;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    overflow: hidden;
}

.auth-brand-panel::after {
    content: '';
    position: absolute;
    inset: auto -120px -120px auto;
    width: 320px;
    height: 320px;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.22), transparent 70%);
    pointer-events: none;
}

.auth-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 28px;
}

.auth-brand i {
    font-size: 24px;
}

.auth-hero {
    max-width: 420px;
}

.auth-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: var(--radius-full);
    background: rgba(255, 255, 255, 0.12);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
    margin-bottom: 16px;
}

.auth-hero-title {
    font-size: 38px;
    font-weight: 800;
    line-height: 1.15;
    margin-bottom: 12px;
}

.auth-hero-desc {
    color: rgba(255, 255, 255, 0.82);
    font-size: 15px;
    line-height: 1.8;
}

.auth-checklist,
.auth-milestones {
    display: grid;
    gap: 12px;
    margin-top: 24px;
}

.auth-check-item,
.auth-milestone {
    display: flex;
    gap: 12px;
    padding: 14px 16px;
    border-radius: var(--radius-lg);
    background: rgba(255, 255, 255, 0.09);
    border: 1px solid rgba(255, 255, 255, 0.1);
    backdrop-filter: blur(12px);
}

.auth-check-item i,
.auth-milestone i {
    font-size: 18px;
    color: #BFDBFE;
    margin-top: 2px;
}

.auth-check-item strong,
.auth-milestone strong {
    display: block;
    font-size: 14px;
    margin-bottom: 4px;
}

.auth-check-item span,
.auth-milestone span {
    font-size: 13px;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.75);
}

.auth-brand-footer {
    margin-top: 32px;
    font-size: 13px;
    color: rgba(255, 255, 255, 0.72);
}

.auth-panel {
    background: rgba(248, 250, 252, 0.96);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 28px;
}

.auth-card {
    width: 100%;
    max-width: 500px;
    background: white;
    border: 1px solid rgba(148, 163, 184, 0.16);
    border-radius: 28px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.14);
    overflow: hidden;
}

.auth-card-body {
    padding: 32px;
}

.auth-card-header {
    margin-bottom: 24px;
}

.auth-card-header h1 {
    font-size: 30px;
    font-weight: 800;
    line-height: 1.2;
    margin-bottom: 8px;
}

.auth-card-header p {
    color: var(--text-light);
    font-size: 14px;
    line-height: 1.7;
}

.auth-inline-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 20px;
}

.auth-inline-row-compact {
    align-items: center;
    margin-bottom: 6px;
}

.auth-inline-link {
    color: var(--primary-700);
    text-decoration: none;
    font-size: 13px;
    font-weight: 700;
}

.auth-inline-link:hover {
    text-decoration: underline;
}

.auth-checkbox {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border-radius: var(--radius-lg);
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
}

.auth-checkbox input {
    margin-top: 4px;
}

.auth-checkbox-flex {
    flex: 1;
}

.auth-checkbox strong {
    display: block;
    font-size: 14px;
    margin-bottom: 4px;
}

.auth-checkbox span {
    display: block;
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.6;
}

.auth-message {
    display: none;
    padding: 12px 16px;
    border-radius: var(--radius-md);
    font-size: 14px;
    margin-bottom: 18px;
}

.auth-message.show {
    display: block;
}

.auth-message.error {
    background: var(--danger-100);
    color: #991B1B;
}

.auth-message.success {
    background: var(--success-100);
    color: #065F46;
}

.auth-message.info {
    background: var(--primary-50);
    color: var(--primary-900);
}

.auth-message strong {
    display: block;
    font-size: 14px;
    margin-bottom: 4px;
}

.auth-message span {
    display: block;
    line-height: 1.7;
}

.auth-form fieldset {
    border: none;
    padding: 0;
    margin: 0;
    min-width: 0;
}

.auth-form-disabled .form-input,
.auth-form-disabled .form-select,
.auth-form-disabled .form-textarea {
    background: linear-gradient(180deg, #F8FAFC 0%, #F1F5F9 100%);
    border-color: var(--gray-200);
    color: var(--gray-500);
    cursor: not-allowed;
    box-shadow: none;
}

.auth-form-disabled .form-input::placeholder,
.auth-form-disabled .form-textarea::placeholder {
    color: var(--gray-400);
}

.auth-checkbox-disabled {
    background: linear-gradient(180deg, #F8FAFC 0%, #F1F5F9 100%);
    border-color: var(--gray-200);
    cursor: not-allowed;
}

.auth-checkbox-disabled strong,
.auth-checkbox-disabled span {
    color: var(--gray-500);
}

.auth-disabled-button,
.auth-disabled-button:hover,
.auth-disabled-button:focus {
    background: linear-gradient(180deg, #F8FAFC 0%, #E2E8F0 100%);
    color: var(--gray-500);
    border-color: var(--gray-300);
    box-shadow: none;
    transform: none;
}

.auth-actions {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.auth-actions-inline {
    flex-direction: row;
    flex-wrap: wrap;
    margin-top: 20px;
}

.auth-secondary-links {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: space-between;
    margin-top: 20px;
    font-size: 14px;
    color: var(--text-light);
}

.auth-secondary-links a {
    color: var(--primary-700);
    text-decoration: none;
    font-weight: 700;
}

.auth-secondary-links a:hover {
    text-decoration: underline;
}

.auth-info-box {
    margin-top: 20px;
    padding: 16px 18px;
    border-radius: var(--radius-lg);
    background: linear-gradient(180deg, #F8FAFC 0%, #EFF6FF 100%);
    border: 1px solid #DBEAFE;
}

.auth-info-box strong {
    display: block;
    font-size: 14px;
    margin-bottom: 6px;
}

.auth-info-box p,
.auth-info-box li {
    font-size: 13px;
    color: var(--text-light);
    line-height: 1.7;
}

.auth-info-box ul {
    margin: 10px 0 0 18px;
}

.auth-info-box-tight {
    margin-top: 0;
}

/* ==================== 工作台页面头部 ==================== */
.workspace-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 24px;
}

.workspace-header-main {
    flex: 1;
    min-width: 0;
}

.workspace-header-side {
    min-width: 260px;
    max-width: 320px;
}

.page-with-source {
    display: flex;
    gap: 18px;
    align-items: stretch;
    min-height: 0;
}

.page-source-column {
    flex: 0 0 280px;
    width: 280px;
    position: sticky;
    top: 92px;
    align-self: start;
    max-height: calc(100vh - 116px);
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-gutter: stable;
    padding-right: 4px;
    transition: width var(--transition-base), flex-basis var(--transition-base);
}

.page-with-source-main {
    flex: 1 1 auto;
    min-width: 0;
}

.workspace-kicker {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: var(--radius-full);
    background: var(--primary-50);
    color: var(--primary-800);
    font-size: 12px;
    font-weight: 700;
    margin-bottom: 12px;
}

.workspace-title {
    font-size: 30px;
    font-weight: 800;
    line-height: 1.2;
    margin-bottom: 8px;
}

.workspace-desc {
    color: var(--text-light);
    font-size: 14px;
    line-height: 1.75;
}

.workspace-tags,
.workspace-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 16px;
}

.workspace-tag {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: var(--radius-full);
    background: white;
    border: 1px solid var(--gray-200);
    color: var(--text);
    font-size: 12px;
    font-weight: 700;
}

.workspace-side-card {
    background: linear-gradient(180deg, #FFFFFF 0%, #F8FAFC 100%);
    border: 1px solid var(--gray-200);
    border-radius: 18px;
    padding: 18px;
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.05);
}

.workspace-side-card strong {
    display: block;
    font-size: 15px;
    margin-bottom: 6px;
}

.workspace-side-card p {
    font-size: 13px;
    color: var(--text-light);
    line-height: 1.7;
    margin-bottom: 14px;
}

.workspace-section {
    margin-bottom: 24px;
}

.workspace-section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}

.workspace-section-head h2 {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 4px;
}

.workspace-section-head p {
    margin: 0;
    font-size: 13px;
    color: var(--text-light);
    line-height: 1.7;
}

.workspace-section-note {
    font-size: 12px;
    color: var(--text-light);
    white-space: nowrap;
}

.workspace-link-list {
    display: grid;
    gap: 8px;
}

.workspace-link-list a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--primary-800);
    text-decoration: none;
    font-weight: 700;
}

.workspace-link-list a:hover {
    text-decoration: underline;
}

.source-context-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.source-context-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 8px;
}

.source-context-badge {
    display: inline-flex;
    align-items: center;
    padding: 5px 10px;
    border-radius: 999px;
    background: var(--primary-50);
    color: var(--primary-800);
    font-size: 11px;
    font-weight: 700;
}

.source-context-toolbar .source-context-btn {
    flex-shrink: 0;
}

.source-context-primary {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 10px;
}

.source-context-primary-label {
    font-size: 12px;
    color: var(--text-light);
    font-weight: 600;
}

.source-context-primary-value {
    display: block;
    width: 100%;
    padding: 10px 12px;
    border-radius: 12px;
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
    color: var(--text);
    font-family: var(--font-mono);
    font-size: 12px;
    word-break: break-all;
}

.source-context-meta {
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.6;
    margin-bottom: 10px;
}

.source-context-preview {
    display: grid;
    gap: 6px;
    margin-bottom: 10px;
}

.source-context-line {
    padding: 8px 10px;
    border-radius: 10px;
    background: rgba(248, 250, 252, 0.9);
    border: 1px solid var(--gray-200);
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.5;
    word-break: break-all;
}

.workflow-panel {
    padding: 18px 20px;
    margin-bottom: 20px;
}

.workflow-panel-head h3 {
    margin: 0 0 6px;
    font-size: 17px;
    font-weight: 800;
}

.workflow-panel-head p {
    margin: 0 0 14px;
    color: var(--text-light);
    font-size: 13px;
    line-height: 1.7;
}

.workflow-step-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.workflow-step-card {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    text-decoration: none;
    color: inherit;
    border: 1px solid var(--gray-200);
    border-radius: 16px;
    background: linear-gradient(180deg, #FFFFFF 0%, #F8FAFC 100%);
    padding: 14px 16px;
    transition: transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);
}

.workflow-step-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
    border-color: var(--primary-200);
}

.workflow-step-card.active {
    border-color: var(--primary-300);
    background: linear-gradient(180deg, var(--primary-50) 0%, #FFFFFF 100%);
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.08);
}

.workflow-step-card.muted {
    opacity: 0.74;
}

.workflow-step-index {
    width: 28px;
    height: 28px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: var(--primary-100);
    color: var(--primary-700);
    font-size: 12px;
    font-weight: 800;
}

.workflow-step-body {
    display: grid;
    gap: 4px;
}

.workflow-step-body strong {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 800;
}

.workflow-step-body span {
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.6;
}

.module-portal-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}

.module-portal-grid-secondary {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.module-portal-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-height: 100%;
    padding: 22px;
    border-radius: 18px;
    background: var(--card-bg);
    border: 1px solid var(--gray-200);
    box-shadow: var(--shadow-sm);
    text-decoration: none;
    color: inherit;
    overflow: hidden;
    transition: transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);
}

.module-portal-card::before {
    content: '';
    position: absolute;
    inset: 0 0 auto 0;
    height: 4px;
    transition: height var(--transition-base);
}

.module-portal-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-lg);
}

.module-portal-card:hover::before {
    height: 6px;
}

.module-portal-card-alerts::before {
    background: linear-gradient(90deg, #B91C1C, #F87171);
}

.module-portal-card-dashboard::before {
    background: linear-gradient(90deg, #155E75, #06B6D4);
}

.module-portal-card-history::before {
    background: linear-gradient(90deg, #0F766E, #2DD4BF);
}

.module-portal-card-profile::before {
    background: linear-gradient(90deg, #B45309, #F59E0B);
}

.module-portal-card-wiki::before {
    background: linear-gradient(90deg, #1D4ED8, #60A5FA);
}

.module-portal-card-ssh::before {
    background: linear-gradient(90deg, #1E3A8A, #3B82F6);
}

.module-portal-card-upload::before {
    background: linear-gradient(90deg, #059669, #10B981);
}

.module-portal-card-local::before {
    background: linear-gradient(90deg, #7C3AED, #A78BFA);
}

.module-portal-card-sample::before {
    background: linear-gradient(90deg, #D97706, #FBBF24);
}

.module-portal-card:hover.module-portal-card-alerts { border-color: #EF4444; }
.module-portal-card:hover.module-portal-card-dashboard { border-color: #06B6D4; }
.module-portal-card:hover.module-portal-card-history { border-color: #14B8A6; }
.module-portal-card:hover.module-portal-card-profile { border-color: #F59E0B; }
.module-portal-card:hover.module-portal-card-wiki { border-color: #60A5FA; }
.module-portal-card:hover.module-portal-card-ssh { border-color: #3B82F6; }
.module-portal-card:hover.module-portal-card-upload { border-color: #10B981; }
.module-portal-card:hover.module-portal-card-local { border-color: #8B5CF6; }
.module-portal-card:hover.module-portal-card-sample { border-color: #F59E0B; }

.module-portal-icon {
    width: 54px;
    height: 54px;
    border-radius: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    color: white;
}

.module-portal-card-alerts .module-portal-icon { background: linear-gradient(135deg, #B91C1C, #F87171); }
.module-portal-card-dashboard .module-portal-icon { background: linear-gradient(135deg, #155E75, #06B6D4); }
.module-portal-card-history .module-portal-icon { background: linear-gradient(135deg, #0F766E, #2DD4BF); }
.module-portal-card-profile .module-portal-icon { background: linear-gradient(135deg, #B45309, #F59E0B); }
.module-portal-card-wiki .module-portal-icon { background: linear-gradient(135deg, #1D4ED8, #60A5FA); }
.module-portal-card-ssh .module-portal-icon { background: linear-gradient(135deg, #1E3A8A, #3B82F6); }
.module-portal-card-upload .module-portal-icon { background: linear-gradient(135deg, #059669, #10B981); }
.module-portal-card-local .module-portal-icon { background: linear-gradient(135deg, #7C3AED, #A78BFA); }
.module-portal-card-sample .module-portal-icon { background: linear-gradient(135deg, #D97706, #FBBF24); }

.module-portal-body {
    display: grid;
    gap: 6px;
}

.module-portal-body strong {
    font-size: 18px;
    font-weight: 800;
    line-height: 1.3;
}

.module-portal-body p {
    font-size: 13px;
    color: var(--text-light);
    line-height: 1.7;
    margin: 0;
}

.module-portal-footer {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.module-portal-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--primary-800);
    font-size: 13px;
    font-weight: 700;
}

.collapse-panel {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.collapse-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.collapse-panel-head strong {
    font-size: 14px;
    color: var(--text);
}

.collapse-toggle-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: 999px;
    border: 1px solid var(--gray-200);
    background: var(--gray-50);
    color: var(--text-light);
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: all var(--transition-base);
}

.collapse-toggle-btn:hover {
    border-color: var(--primary-200);
    background: var(--primary-50);
    color: var(--primary-700);
}

.collapse-panel-body[hidden] {
    display: none !important;
}

.page-source-column.is-collapsed {
    flex-basis: 0;
    width: 0;
    padding-right: 0;
    overflow: visible;
}

.page-source-column.is-collapsed .collapse-panel-head {
    width: 48px;
    min-height: 164px;
    padding: 12px 6px;
    border: 1px solid var(--gray-200);
    border-radius: 0 18px 18px 0;
    background: var(--card-bg);
    box-shadow: 0 14px 28px rgba(15, 23, 42, 0.14);
    justify-content: center;
    flex-direction: column;
    transform: translateX(calc(-100% - 6px));
    position: relative;
    z-index: 3;
}

.page-source-column.is-collapsed .collapse-panel-head strong {
    display: block;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    letter-spacing: 3px;
    font-size: 12px;
    color: var(--text);
}

.page-source-column.is-collapsed .collapse-toggle-btn {
    width: 32px;
    height: 32px;
    padding: 0;
    justify-content: center;
    border-radius: 999px;
}

.page-source-column.is-collapsed .collapse-toggle-btn span {
    display: none;
}

body.theme-dark .collapse-toggle-btn {
    background: #0B1424;
    border-color: var(--gray-200);
    color: var(--text-light);
}

body.theme-dark .collapse-toggle-btn:hover {
    background: rgba(59, 130, 246, 0.12);
    color: #93C5FD;
}

body.theme-dark .page-source-column.is-collapsed .collapse-panel-head,
body.theme-dark .side-column.is-collapsed .collapse-panel-head {
    background: rgba(15, 23, 42, 0.94);
    border-color: rgba(148, 163, 184, 0.24);
    box-shadow: 0 14px 30px rgba(2, 6, 23, 0.48);
}

.page-source-column,
.side-column {
    scrollbar-width: thin;
    scrollbar-color: rgba(148, 163, 184, 0.28) transparent;
}

.page-source-column::-webkit-scrollbar,
.side-column::-webkit-scrollbar {
    width: 8px;
}

.page-source-column::-webkit-scrollbar-thumb,
.side-column::-webkit-scrollbar-thumb {
    background: rgba(148, 163, 184, 0.28);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
}

.page-source-column::-webkit-scrollbar-track,
.side-column::-webkit-scrollbar-track {
    background: transparent;
}

/* ==================== 统一工作台组件 ==================== */
.metric-grid {
    display: grid;
    gap: 16px;
    margin-bottom: 24px;
}

.metric-grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.metric-grid-5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

.metric-card {
    background: var(--card-bg);
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
    padding: 18px;
    display: flex;
    align-items: center;
    gap: 14px;
    transition: transform var(--transition-base), box-shadow var(--transition-base);
}

.metric-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.metric-card-icon {
    width: 46px;
    height: 46px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 21px;
    flex-shrink: 0;
}

.metric-card-icon-primary {
    background: var(--primary-100);
    color: var(--primary-700);
}

.metric-card-icon-success {
    background: var(--success-100);
    color: var(--success-600);
}

.metric-card-icon-warning {
    background: var(--warning-100);
    color: var(--warning-600);
}

.metric-card-icon-danger {
    background: var(--danger-100);
    color: var(--danger-600);
}

.metric-card-icon-accent {
    background: #F3E8FF;
    color: #7C3AED;
}

.metric-card-icon-pink {
    background: #FCE7F3;
    color: #9D174D;
}

.metric-card-body {
    min-width: 0;
}

.metric-card-value {
    font-size: 26px;
    font-weight: 800;
    line-height: 1.15;
}

.metric-card-label {
    font-size: 12px;
    color: var(--text-light);
}

.metric-card-meta {
    margin-top: 4px;
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.5;
}

.surface-card {
    background: var(--card-bg);
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
}

.filter-toolbar {
    padding: 20px;
    margin-bottom: 20px;
}

.filter-grid {
    display: grid;
    gap: 14px;
}

.filter-grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.filter-grid-6 {
    grid-template-columns: repeat(6, minmax(0, 1fr));
}

.alert-filter-grid-compact {
    grid-template-columns: repeat(2, minmax(220px, 280px));
}

.task-filter-flow {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.task-filter-section {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.task-filter-head {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.task-filter-head strong {
    font-size: 14px;
    color: var(--text);
}

.task-filter-head span {
    font-size: 12px;
    color: var(--text-light);
}

.task-filter-presets {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.task-filter-grid {
    display: grid;
    gap: 12px;
    align-items: end;
}

.task-filter-grid-time {
    grid-template-columns: repeat(2, minmax(220px, 280px));
}

.task-filter-grid-alerts {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.task-filter-grid-alerts .task-filter-field-wide {
    grid-column: span 3;
}

.task-filter-grid-history-core {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.task-filter-grid-history-extra {
    grid-template-columns: minmax(180px, 220px) minmax(260px, 1fr) auto;
}

.task-filter-span-2 {
    grid-column: span 2;
}

.task-filter-actions {
    display: flex;
    align-items: stretch;
    gap: 8px;
    flex-wrap: nowrap;
    justify-content: flex-start;
}

.task-filter-grid-alerts .task-filter-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    width: 100%;
}

.task-filter-grid-alerts .task-filter-actions .btn {
    width: 100%;
    justify-content: center;
}

.task-filter-grid-history-extra .task-filter-actions {
    align-self: end;
}

.task-filter-grid-history-extra .task-filter-actions .btn {
    white-space: nowrap;
}

.task-filter-actions .btn {
    min-height: 44px;
}

.alert-time-flow {
    margin-top: 12px;
    padding-top: 4px;
}

.alert-time-flow-head {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.alert-time-flow-head strong {
    font-size: 14px;
    color: var(--text);
}

.alert-time-flow-head span {
    font-size: 12px;
    color: var(--text-light);
}

.alert-time-flow-row {
    margin-bottom: 12px;
}

.alert-time-step {
    min-width: 0;
}

.alert-time-chip-group {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.alert-time-step-index {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    margin-right: 6px;
    border-radius: 999px;
    background: var(--primary-100);
    color: var(--primary-700);
    font-size: 11px;
    font-weight: 700;
}

.filter-row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    align-items: end;
}

.filter-field label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--text-light);
    margin-bottom: 6px;
}

.quick-filter-row,
.action-row {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 14px;
}

.quick-chip,
.quick-time,
.page-btn,
.status-badge,
.action-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border-radius: 999px;
    border: 1px solid var(--gray-200);
    background: var(--gray-50);
    color: var(--text);
    font-size: 12px;
    font-weight: 700;
}

.quick-chip,
.quick-time {
    cursor: pointer;
    padding: 8px 12px;
}

.quick-chip:hover,
.quick-time:hover {
    background: var(--primary-50);
    border-color: var(--primary-200);
}

.quick-time.active {
    background: var(--primary);
    border-color: var(--primary);
    color: white;
}

.result-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-top: 12px;
    font-size: 14px;
}

.table-card {
    overflow: hidden;
}

.table-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--gray-200);
}

.table-head h3 {
    font-size: 18px;
    font-weight: 700;
    margin: 0;
}

.table-head span {
    color: var(--text-light);
    font-size: 13px;
}

.table-head-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
    margin-left: auto;
}

.btn-danger-ghost {
    color: var(--danger-600);
}

.btn-danger-ghost:hover {
    color: var(--danger-700);
}

.table-empty-row {
    text-align: center;
    padding: 48px;
    color: var(--text-light);
}

.log-table {
    overflow-x: auto;
}

.log-row {
    cursor: pointer;
}

.chart-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.chart-card {
    background: var(--card-bg);
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    transition: box-shadow var(--transition-base);
}

.chart-card:hover {
    box-shadow: var(--shadow-lg);
}

.chart-header {
    padding: 14px 18px;
    border-bottom: 1px solid var(--gray-100);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.chart-title {
    font-size: 14px;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.chart-title-meta {
    font-weight: 400;
    font-size: 12px;
    color: var(--text-light);
}

.chart-tone-primary { color: var(--primary-500); }
.chart-tone-danger { color: var(--danger-500); }
.chart-tone-warning { color: var(--warning-500); }
.chart-tone-success { color: var(--success-500); }
.chart-tone-accent { color: #7C3AED; }

.chart-container {
    width: 100%;
    height: 350px;
    position: relative;
    overflow: hidden;
}

.chart-container:empty::before {
    content: '';
    position: absolute;
    inset: 16px;
    border-radius: 12px;
    background: linear-gradient(90deg, #F8FAFC 0%, #EAF2FF 50%, #F8FAFC 100%);
    background-size: 200% 100%;
    animation: dashboardShimmer 1.4s linear infinite;
}

@keyframes dashboardShimmer {
    from { background-position: 200% 0; }
    to { background-position: -200% 0; }
}

.dashboard-time-range {
    display: flex;
    gap: 8px;
    margin: 16px 0 24px;
    flex-wrap: wrap;
}

.dashboard-time-btn {
    padding: 6px 14px;
    border-radius: 8px;
    border: 1px solid var(--gray-200);
    background: var(--card-bg);
    font-size: 13px;
    cursor: pointer;
    transition: all var(--transition-base);
}

.dashboard-time-btn:hover,
.dashboard-time-btn.active {
    background: var(--primary);
    color: white;
    border-color: var(--primary);
}

.history-layout {
    display: flex;
    gap: 20px;
}

.history-layout > main {
    flex: 1 1 auto;
    min-width: 0;
}

.side-column {
    flex: 0 0 320px;
    width: 320px;
    display: flex;
    flex-direction: column;
    gap: 20px;
    align-content: start;
    position: sticky;
    top: 92px;
    align-self: start;
    max-height: calc(100vh - 116px);
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-gutter: stable;
    padding-right: 4px;
    transition: width var(--transition-base), flex-basis var(--transition-base);
}

.side-column .collapse-panel-body {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.side-column.is-collapsed {
    flex-basis: 0;
    width: 0;
    overflow: visible;
}

.side-column.is-collapsed .collapse-panel-head {
    width: 48px;
    min-height: 164px;
    padding: 12px 6px;
    border: 1px solid var(--gray-200);
    border-radius: 18px 0 0 18px;
    background: var(--card-bg);
    box-shadow: 0 14px 28px rgba(15, 23, 42, 0.14);
    justify-content: center;
    flex-direction: column;
    transform: translateX(6px);
    position: relative;
    z-index: 3;
}

.side-column.is-collapsed .collapse-panel-head strong {
    display: block;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    letter-spacing: 3px;
    font-size: 12px;
    color: var(--text);
}

.side-column.is-collapsed .collapse-toggle-btn {
    width: 32px;
    height: 32px;
    padding: 0;
    justify-content: center;
    border-radius: 999px;
}

.side-column.is-collapsed .collapse-toggle-btn span {
    display: none;
}

.side-card,
.history-side-card {
    padding: 18px;
}

.side-card h3,
.history-side-card h3 {
    font-size: 17px;
    font-weight: 700;
    margin: 0 0 6px;
}

.side-card p,
.history-side-card p {
    color: var(--text-light);
    font-size: 13px;
    line-height: 1.6;
    margin: 0 0 14px;
}

.stat-list,
.failure-list,
.related-list,
.drawer-meta {
    display: grid;
    gap: 10px;
}

.stat-item,
.failure-item,
.related-item,
.drawer-meta-item {
    background: var(--gray-50);
    border-radius: 12px;
    padding: 12px 14px;
}

.stat-item strong,
.failure-item strong,
.related-item strong,
.drawer-meta-item strong {
    display: block;
    margin-bottom: 4px;
}

.stat-item span,
.failure-item span,
.related-item span,
.drawer-meta-item span,
.drawer-meta-item pre,
.detail-preview {
    color: var(--text-light);
    font-size: 13px;
    line-height: 1.6;
}

.detail-preview {
    max-width: 260px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.drawer {
    position: fixed;
    top: 0;
    right: 0;
    width: min(520px, 100%);
    height: 100vh;
    background: rgba(15, 23, 42, 0.24);
    display: none;
    justify-content: flex-end;
    z-index: 200;
}

.drawer.open {
    display: flex;
}

.drawer-card {
    width: min(520px, 100%);
    height: 100%;
    padding: 24px;
    border-radius: 20px 0 0 20px;
    overflow-y: auto;
}

.drawer-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}

.drawer-head h3 {
    font-size: 20px;
    font-weight: 800;
    margin: 0;
}

.drawer-close {
    border: none;
    background: var(--gray-100);
    width: 36px;
    height: 36px;
    border-radius: 999px;
    cursor: pointer;
    color: var(--text);
}

.pagination {
    display: flex;
    justify-content: center;
    gap: 8px;
    padding: 20px;
}

.page-btn {
    padding: 8px 12px;
    background: var(--card-bg);
    cursor: pointer;
}

.page-btn.active {
    background: var(--primary);
    border-color: var(--primary);
    color: white;
}

.page-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.status-success {
    background: var(--success-100);
    color: var(--success-600);
}

.status-failed {
    background: var(--danger-100);
    color: var(--danger-600);
}

.action-badge {
    background: var(--primary-50);
    color: var(--primary-700);
}

.attack-type-badge {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
}

.type-brute-force {
    background: #DBEAFE;
    color: #1E40AF;
}

.type-sql-injection {
    background: #FEE2E2;
    color: #991B1B;
}

.type-xss {
    background: #FEF3C7;
    color: #92400E;
}

.type-path-traversal {
    background: #E0E7FF;
    color: #3730A3;
}

.type-dos-ddos {
    background: #FCE7F3;
    color: #9D174D;
}

.risk-bar {
    display: block;
    width: 100%;
    height: 4px;
    border-radius: 999px;
    margin-top: 4px;
    overflow: hidden;
    background: var(--gray-100);
}

.risk-fill {
    height: 100%;
    border-radius: 999px;
    transition: width var(--transition-slow);
}

.action-stack,
.alert-row-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.alert-row-actions .btn {
    min-height: 34px;
    white-space: nowrap;
}

.action-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.action-chip {
    background: var(--primary-100);
    color: var(--primary-800);
}

.overview-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}

/* ==================== 响应式 ==================== */
@media (max-width: 1100px) {
    .auth-shell {
        grid-template-columns: 1fr;
    }

    .auth-brand-panel {
        padding: 36px 24px 28px;
    }

    .auth-hero-title {
        font-size: 30px;
    }

    .workspace-header {
        flex-direction: column;
    }

    .workspace-header-side {
        min-width: 0;
        max-width: none;
        width: 100%;
    }

    .page-with-source {
        flex-direction: column;
    }

    .page-source-column {
        position: static;
        max-height: none;
        overflow: visible;
        width: 100%;
        flex-basis: auto;
        padding-right: 0;
    }

    .metric-grid-5 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .workflow-step-grid,
    .module-portal-grid,
    .module-portal-grid-secondary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .history-layout {
        flex-direction: column;
    }

    .side-column,
    .side-column.is-collapsed,
    .page-source-column.is-collapsed {
        width: 100%;
        flex-basis: auto;
    }

    .page-source-column.is-collapsed,
    .side-column.is-collapsed {
        overflow: hidden;
    }

    .page-source-column.is-collapsed .collapse-panel-head,
    .side-column.is-collapsed .collapse-panel-head {
        width: auto;
        min-height: 0;
        padding: 0;
        border: none;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
        transform: none;
        flex-direction: row;
        justify-content: space-between;
    }

    .page-source-column.is-collapsed .collapse-panel-head strong,
    .side-column.is-collapsed .collapse-panel-head strong {
        writing-mode: initial;
        text-orientation: initial;
        letter-spacing: 0;
        font-size: 14px;
    }
}

@media (max-width: 768px) {
    .nav-container {
        padding: 12px 16px;
    }

    .auth-panel {
        padding: 18px 14px 28px;
    }

    .auth-card {
        border-radius: 22px;
    }

    .auth-card-body {
        padding: 24px 20px;
    }

    .auth-secondary-links {
        flex-direction: column;
        align-items: flex-start;
    }

    .auth-actions-inline,
    .filter-row {
        flex-direction: column;
    }

    .workflow-step-grid,
    .module-portal-grid,
    .chart-grid {
        grid-template-columns: 1fr;
    }

    .module-portal-grid-secondary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .workspace-section-head {
        flex-direction: column;
        align-items: flex-start;
    }

    .workspace-title {
        font-size: 24px;
    }

    .metric-grid-4,
    .metric-grid-5,
    .filter-grid-4,
    .filter-grid-6,
    .alert-filter-grid-compact,
    .task-filter-grid-alerts,
    .task-filter-grid-history-core,
    .task-filter-grid-history-extra {
        grid-template-columns: 1fr;
    }

    .alert-time-flow-head {
        flex-direction: column;
        align-items: flex-start;
    }

    .task-filter-grid-time {
        grid-template-columns: 1fr;
    }

    .task-filter-head {
        flex-direction: column;
        align-items: flex-start;
    }

    .task-filter-span-2 {
        grid-column: auto;
    }

    .task-filter-grid-alerts .task-filter-field-wide {
        grid-column: auto;
    }

    .task-filter-grid-alerts .task-filter-actions {
        grid-template-columns: 1fr;
    }

    .task-filter-actions,
    .table-head-actions {
        flex-wrap: wrap;
    }
}

/* ==================== 按钮组件 ==================== */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 24px;
    border-radius: var(--radius-md);
    border: none;
    cursor: pointer;
    font-size: 14px;
    font-weight: 600;
    transition: all var(--transition-base);
    white-space: nowrap;
    text-decoration: none;
    line-height: 1;
}

.btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-primary {
    background: linear-gradient(135deg, var(--primary-900), var(--primary-500));
    color: white;
}

.btn-primary:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(30, 58, 138, 0.25);
}

.btn-success {
    background: linear-gradient(135deg, var(--success-600), var(--success-500));
    color: white;
}

.btn-success:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(5, 150, 105, 0.25);
}

.btn-danger {
    background: linear-gradient(135deg, var(--danger-600), var(--danger-500));
    color: white;
}

.btn-danger:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(220, 38, 38, 0.25);
}

.btn-warning {
    background: linear-gradient(135deg, var(--warning-600), var(--warning-500));
    color: white;
}

.btn-outline {
    background: white;
    color: var(--text);
    border: 2px solid var(--gray-200);
}

.btn-outline:hover:not(:disabled) {
    border-color: var(--primary-light);
    color: var(--primary-light);
    background: var(--primary-50);
}

.btn-sm {
    padding: 8px 18px;
    font-size: 13px;
}

.btn-xs {
    padding: 6px 12px;
    font-size: 12px;
}

.btn-icon {
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: var(--radius-md);
}

/* ==================== 卡片组件 ==================== */
.card {
    background: var(--card-bg);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-md);
    overflow: hidden;
    transition: all var(--transition-base);
}

.card:hover {
    box-shadow: var(--shadow-lg);
}

.card-header {
    padding: 16px 20px;
    border-bottom: 1px solid var(--gray-100);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.card-title {
    font-size: 14px;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 8px;
}

.card-body {
    padding: 20px;
}

.card-footer {
    padding: 16px 20px;
    border-top: 1px solid var(--gray-100);
    background: var(--gray-50);
}

/* ==================== 表单组件 ==================== */
.form-group {
    margin-bottom: 16px;
}

.form-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 6px;
}

.form-input,
.form-select,
.form-textarea {
    width: 100%;
    padding: 10px 14px;
    border: 2px solid var(--gray-200);
    border-radius: var(--radius-md);
    font-size: 14px;
    background: white;
    outline: none;
    transition: all var(--transition-base);
    font-family: inherit;
}

.form-input:focus,
.form-select:focus,
.form-textarea:focus {
    border-color: var(--primary-light);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

.form-input::placeholder {
    color: var(--gray-400);
}

.form-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2364748B'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 16px;
    padding-right: 40px;
    cursor: pointer;
}

.form-textarea {
    min-height: 100px;
    resize: vertical;
}

.form-hint {
    font-size: 12px;
    color: var(--text-light);
    margin-top: 4px;
}

.form-error {
    font-size: 12px;
    color: var(--danger);
    margin-top: 4px;
}

/* ==================== 徽章组件 ==================== */
.badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    border-radius: var(--radius-full);
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}

.badge-primary {
    background: var(--primary-100);
    color: var(--primary-900);
}

.badge-success {
    background: var(--success-100);
    color: var(--success-600);
}

.badge-warning {
    background: var(--warning-100);
    color: var(--warning-600);
}

.badge-danger {
    background: var(--danger-100);
    color: var(--danger-600);
}

.badge-info {
    background: var(--gray-100);
    color: var(--gray-700);
}

/* ==================== 表格组件 ==================== */
.table-container {
    background: white;
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-md);
}

.table {
    width: 100%;
    border-collapse: collapse;
}

.table th {
    background-color: var(--gray-100);
    padding: 12px 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: var(--text-light);
    border-bottom: 2px solid var(--gray-200);
}

.table td {
    padding: 12px 16px;
    border-bottom: 1px solid var(--gray-200);
    font-size: 14px;
}

.table tr:hover {
    background-color: var(--gray-50);
}

.table tr:last-child td {
    border-bottom: none;
}

/* ==================== 加载状态 ==================== */
.spinner {
    display: inline-block;
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255, 255, 255, 0.3);
    border-top-color: white;
    border-radius: 50%;
    animation: spin 0.6s linear infinite;
}

.spinner-dark {
    border-color: var(--gray-200);
    border-top-color: var(--primary-light);
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

.loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

.page-transition-overlay {
    position: fixed;
    inset: 0;
    background:
        radial-gradient(circle at top left, rgba(147, 197, 253, 0.1), transparent 32%),
        linear-gradient(180deg, rgba(248, 250, 252, 0.7) 0%, rgba(241, 245, 249, 0.82) 100%);
    backdrop-filter: blur(6px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 180ms ease, visibility 180ms ease;
    z-index: 9998;
}

.page-transition-overlay.is-active {
    opacity: 1;
    visibility: visible;
}

.page-transition-indicator {
    width: 30px;
    height: 30px;
    border-radius: 9999px;
    border: 2px solid rgba(59, 130, 246, 0.08);
    border-top-color: rgba(59, 130, 246, 0.72);
    animation: spin 0.7s linear infinite;
}

.loading-content {
    text-align: center;
}

.loading-content .spinner {
    width: 40px;
    height: 40px;
    border-width: 4px;
    margin-bottom: 16px;
}

.confirm-overlay {
    position: fixed;
    inset: 0;
    background: rgba(2, 6, 23, 0.56);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 10000;
}

.confirm-dialog {
    width: min(460px, 100%);
    background: var(--card-bg);
    border: 1px solid var(--gray-200);
    border-radius: 18px;
    box-shadow: var(--shadow-xl);
    padding: 22px;
}

.confirm-icon {
    width: 48px;
    height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 14px;
    margin-bottom: 14px;
    font-size: 22px;
}

.confirm-danger .confirm-icon {
    background: var(--danger-100);
    color: var(--danger-600);
}

.confirm-primary .confirm-icon {
    background: var(--primary-100);
    color: var(--primary-700);
}

.confirm-body h3 {
    font-size: 20px;
    font-weight: 800;
    margin-bottom: 8px;
}

.confirm-body p {
    color: var(--text-light);
    font-size: 14px;
    line-height: 1.7;
}

.confirm-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
}

/* ==================== 提示消息 ==================== */
.toast {
    position: fixed;
    top: 80px;
    right: 24px;
    padding: 16px 20px;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 300px;
    max-width: 500px;
    z-index: 1000;
    animation: slideIn 0.3s ease;
}

@keyframes slideIn {
    from {
        transform: translateX(100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

.toast-success {
    background: var(--success-50);
    border-left: 4px solid var(--success-500);
    color: var(--success-600);
}

.toast-warning {
    background: var(--warning-50);
    border-left: 4px solid var(--warning-500);
    color: var(--warning-600);
}

.toast-error {
    background: var(--danger-50);
    border-left: 4px solid var(--danger-500);
    color: var(--danger-600);
}

/* ==================== 页脚 ==================== */
.site-footer {
    margin-top: 40px;
    padding: 0 24px 28px;
    color: var(--text-light);
    font-size: 13px;
}

.site-footer-container {
    max-width: 1300px;
    margin: 0 auto;
    padding: 24px 24px 26px;
    border-top: 1px solid var(--gray-200);
    display: grid;
    grid-template-columns: minmax(220px, 1.2fr) minmax(240px, 1fr) minmax(240px, 1fr);
    gap: 24px;
}

.site-footer-brand,
.site-footer-meta,
.site-footer-links {
    min-width: 0;
}

.site-footer .site-brand-mark {
    background: var(--primary-50);
    border-color: var(--primary-100);
    color: var(--primary-700);
    box-shadow: none;
}

.site-footer-brand-copy strong {
    color: var(--text);
    font-size: 15px;
    font-weight: 800;
    line-height: 1.2;
    white-space: nowrap;
}

.site-footer-brand-copy span {
    color: var(--text-light);
    font-size: 11px;
    line-height: 1.4;
    white-space: nowrap;
}

.site-footer strong {
    display: block;
    font-size: 13px;
    font-weight: 800;
    color: var(--text);
    margin-bottom: 8px;
}

.site-footer p {
    margin: 0;
    line-height: 1.7;
}

.site-footer-quote {
    margin-top: 10px;
    font-size: 12px;
    line-height: 1.9;
    color: var(--text-light);
}

.site-footer-link-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 14px;
}

.site-footer-link-grid a {
    color: var(--text-light);
    text-decoration: none;
    font-size: 13px;
}

.site-footer-link-grid a:hover {
    color: var(--primary-700);
    text-decoration: underline;
}

.toast-info {
    background: var(--primary-50);
    border-left: 4px solid var(--primary-500);
    color: var(--primary-900);
}

body.theme-dark .toast-success {
    background: rgba(6, 95, 70, 0.92);
    border-left-color: #34D399;
    color: #D1FAE5;
}

body.theme-dark .toast-warning {
    background: rgba(120, 53, 15, 0.92);
    border-left-color: #FBBF24;
    color: #FEF3C7;
}

body.theme-dark .toast-error {
    background: rgba(127, 29, 29, 0.94);
    border-left-color: #F87171;
    color: #FEE2E2;
}

body.theme-dark .toast-info {
    background: rgba(30, 58, 138, 0.92);
    border-left-color: #60A5FA;
    color: #DBEAFE;
}

/* ==================== 页面容器 ==================== */
.page-container {
    max-width: 1300px;
    margin: 0 auto;
    padding: 24px 24px 40px;
}

.page-header {
    margin-bottom: 24px;
}

.page-title {
    font-size: 24px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 8px;
}

.page-subtitle {
    font-size: 14px;
    color: var(--text-light);
}

/* ==================== 网格布局 ==================== */
.grid {
    display: grid;
    gap: 20px;
}

.grid-2 {
    grid-template-columns: repeat(2, 1fr);
}

.grid-3 {
    grid-template-columns: repeat(3, 1fr);
}

.grid-4 {
    grid-template-columns: repeat(4, 1fr);
}

/* ==================== 响应式设计 ==================== */
@media (max-width: 1024px) {
    .grid-4 {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .grid-3 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 768px) {
    .nav-container {
        padding: 10px 16px;
    }

    .nav-shell,
    .nav-main,
    .auth-sitebar-container {
        flex-direction: column;
        align-items: flex-start;
    }

    .nav-main,
    .nav-links,
    .nav-utility,
    .auth-sitebar-links {
        width: 100%;
    }

    .site-brand,
    .auth-sitebar-brand {
        min-width: 0;
    }

    .site-brand-copy,
    .auth-sitebar-brand .site-brand-copy {
        min-width: 0;
    }

    .nav-links,
    .nav-utility {
        gap: 6px;
    }

    .nav-link {
        padding: 8px 10px;
        font-size: 13px;
    }

    .nav-dropdown-menu {
        left: 0;
        right: auto;
        min-width: 240px;
    }

    .site-footer {
        padding: 0 16px 24px;
    }

    .site-footer-container {
        padding: 22px 0 0;
        grid-template-columns: 1fr;
        gap: 18px;
    }
    
    .page-container {
        padding: 16px;
    }
    
    .grid-2,
    .grid-3,
    .grid-4 {
        grid-template-columns: 1fr;
    }
    
    .toast {
        left: 16px;
        right: 16px;
        min-width: auto;
    }
}

@media (max-width: 480px) {
    .site-brand-copy span {
        display: none;
    }

    .nav-dropdown-menu {
        position: static;
        margin-top: 8px;
        min-width: auto;
        width: 100%;
        opacity: 1;
        visibility: visible;
        transform: none;
        pointer-events: auto;
        display: none;
    }

    .nav-dropdown.is-open .nav-dropdown-menu {
        display: block;
    }

    .nav-dropdown::after {
        display: none;
    }

    .site-footer-link-grid {
        grid-template-columns: 1fr;
    }
    
    .btn {
        padding: 8px 16px;
        font-size: 13px;
    }
}

/* ==================== 工具类 ==================== */
.text-center { text-align: center; }
.text-left { text-align: left; }
.text-right { text-align: right; }

.mt-1 { margin-top: var(--space-sm); }
.mt-2 { margin-top: var(--space-md); }
.mt-3 { margin-top: var(--space-lg); }
.mt-4 { margin-top: var(--space-xl); }

.mb-1 { margin-bottom: var(--space-sm); }
.mb-2 { margin-bottom: var(--space-md); }
.mb-3 { margin-bottom: var(--space-lg); }
.mb-4 { margin-bottom: var(--space-xl); }

.flex { display: flex; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.gap-1 { gap: var(--space-sm); }
.gap-2 { gap: var(--space-md); }
.gap-3 { gap: var(--space-lg); }

.hidden { display: none; }
.block { display: block; }
.inline-block { display: inline-block; }

.w-full { width: 100%; }
.h-full { height: 100%; }

.rounded { border-radius: var(--radius-md); }
.rounded-lg { border-radius: var(--radius-lg); }
.rounded-xl { border-radius: var(--radius-xl); }

.shadow { box-shadow: var(--shadow-md); }
.shadow-lg { box-shadow: var(--shadow-lg); }

.transition { transition: all var(--transition-base); }

/* ==================== IP 展示组件 ==================== */
.ip-display {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.ip-display-compact {
    gap: 3px;
}

.ip-main {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 700;
    color: var(--text);
    line-height: 1.35;
    word-break: break-all;
}

.ip-meta-line {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 12px;
    color: var(--text-light);
    line-height: 1.4;
}

.ip-meta-network {
    color: var(--gray-500);
}

.ip-scope-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    border: 1px solid var(--gray-200);
    background: var(--gray-100);
    color: var(--gray-600);
}

.ip-scope-loopback,
.ip-scope-private,
.ip-scope-reserved {
    background: var(--gray-100);
    color: var(--gray-600);
    border-color: var(--gray-200);
}

.ip-scope-invalid,
.ip-scope-unresolved {
    background: var(--warning-50);
    color: var(--warning-600);
    border-color: var(--warning-100);
}

.text-muted {
    color: var(--text-light);
}

/* ==================== Wiki 文档中心 ==================== */
.wiki-page-shell,
.wiki-preview-shell {
    display: flex;
    flex-direction: column;
    gap: var(--space-xl);
}

.wiki-source-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--space-lg);
}

.wiki-source-card,
.wiki-sidebar-card,
.wiki-browser-card,
.wiki-preview-card {
    border: 1px solid rgba(148, 163, 184, 0.18);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(248, 250, 252, 0.98));
    border-radius: 24px;
    box-shadow: var(--shadow-md);
}

.wiki-source-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 20px;
    text-decoration: none;
    color: var(--text);
    transition: transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);
}

.wiki-source-card:hover,
.wiki-source-card.active {
    transform: translateY(-2px);
    border-color: rgba(37, 99, 235, 0.28);
    box-shadow: var(--shadow-lg);
}

.wiki-source-card-top,
.wiki-panel-head,
.wiki-preview-head,
.wiki-filter-row,
.wiki-entry-card,
.wiki-preview-actions,
.wiki-preview-status,
.wiki-workspace {
    display: flex;
}

.wiki-source-card-top,
.wiki-panel-head,
.wiki-preview-status {
    align-items: center;
    justify-content: space-between;
}

.wiki-source-icon {
    width: 42px;
    height: 42px;
    border-radius: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(37, 99, 235, 0.1);
    color: var(--primary);
    font-size: 18px;
}

.wiki-source-role,
.wiki-source-meta,
.wiki-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
}

.wiki-source-role {
    background: rgba(148, 163, 184, 0.12);
    color: var(--text-light);
}

.wiki-source-card p,
.wiki-panel-head p,
.wiki-entry-body p,
.wiki-placeholder p {
    margin: 0;
    color: var(--text-light);
    word-break: break-word;
}

.wiki-workspace {
    gap: var(--space-lg);
    align-items: flex-start;
}

.wiki-sidebar-card {
    width: min(320px, 100%);
    flex-shrink: 0;
    padding: 24px;
}

.wiki-browser-card,
.wiki-preview-card {
    flex: 1;
    min-width: 0;
    padding: 24px;
}

.wiki-panel-head,
.wiki-preview-head {
    gap: var(--space-md);
    margin-bottom: var(--space-lg);
}

.wiki-recent-list,
.wiki-entry-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.wiki-recent-item,
.wiki-entry-title,
.wiki-breadcrumbs a {
    text-decoration: none;
}

.wiki-recent-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 16px;
    color: var(--text);
    background: rgba(241, 245, 249, 0.8);
    transition: background var(--transition-base), transform var(--transition-base);
}

.wiki-recent-item:hover {
    background: rgba(219, 234, 254, 0.7);
    transform: translateX(2px);
}

.wiki-recent-item i,
.wiki-entry-icon {
    color: var(--primary);
}

.wiki-recent-body,
.wiki-entry-body {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.wiki-recent-body strong,
.wiki-entry-title {
    color: var(--text);
    font-weight: 700;
}

.wiki-recent-body strong {
    display: block;
    line-height: 1.45;
    white-space: normal;
    word-break: break-word;
    overflow-wrap: anywhere;
}

.wiki-recent-body span {
    color: var(--text-light);
    font-size: 12px;
}

.wiki-toolbar {
    margin-bottom: var(--space-lg);
    display: grid;
    gap: 12px;
}

.wiki-breadcrumbs {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    font-size: 13px;
}

.wiki-breadcrumbs a {
    color: var(--primary);
}

.wiki-breadcrumbs a:not(:last-child)::after {
    content: "/";
    margin-left: 8px;
    color: var(--text-light);
}

.wiki-filter-row {
    gap: 12px;
}

.wiki-search-input,
.wiki-format-filter {
    border: 1px solid rgba(148, 163, 184, 0.25);
    border-radius: 14px;
    padding: 10px 14px;
    background: #fff;
    color: var(--text);
}

.wiki-search-input {
    flex: 1;
    min-width: 0;
}

.wiki-format-filter {
    width: 160px;
}

.wiki-entry-card {
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    border: 1px solid rgba(148, 163, 184, 0.14);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.82);
}

.wiki-entry-icon {
    width: 42px;
    font-size: 20px;
    text-align: center;
}

.wiki-entry-body {
    flex: 1;
}

.wiki-entry-actions,
.wiki-preview-actions {
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}

.wiki-placeholder,
.wiki-empty {
    min-height: 240px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    color: var(--text-light);
    text-align: center;
}

.wiki-placeholder i,
.wiki-empty i {
    font-size: 32px;
    color: var(--primary);
    opacity: 0.7;
}

.wiki-status-badge {
    background: rgba(37, 99, 235, 0.08);
    color: var(--primary);
}

.wiki-preview-status {
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: var(--space-lg);
}

.wiki-rendered-content {
    padding: 28px;
    border-radius: 20px;
    background: #fff;
    border: 1px solid rgba(148, 163, 184, 0.16);
    overflow-x: auto;
}

.wiki-rendered-content h1,
.wiki-rendered-content h2,
.wiki-rendered-content h3,
.wiki-rendered-content h4 {
    margin-top: 1.2em;
    margin-bottom: 0.5em;
    font-weight: 800;
    color: var(--text);
}

.wiki-rendered-content p,
.wiki-rendered-content li {
    color: var(--text);
    line-height: 1.75;
}

.wiki-rendered-content pre,
.wiki-rendered-content code {
    font-family: var(--font-mono);
}

.wiki-rendered-content pre {
    overflow-x: auto;
    padding: 16px;
    border-radius: 14px;
    background: #0f172a;
    color: #e2e8f0;
}

.wiki-rendered-content code {
    background: rgba(148, 163, 184, 0.12);
    padding: 2px 6px;
    border-radius: 6px;
}

.wiki-rendered-content table {
    width: 100%;
    border-collapse: collapse;
    margin: 16px 0;
}

.wiki-rendered-content th,
.wiki-rendered-content td {
    border: 1px solid rgba(148, 163, 184, 0.2);
    padding: 10px 12px;
    text-align: left;
}

.wiki-pdf-frame-wrap {
    width: 100%;
    min-height: 78vh;
    border-radius: 20px;
    overflow: hidden;
    border: 1px solid rgba(148, 163, 184, 0.16);
    background: rgba(15, 23, 42, 0.06);
}

.wiki-pdf-frame {
    width: 100%;
    min-height: 78vh;
    border: 0;
    background: #fff;
}

@media (max-width: 1024px) {
    .wiki-workspace {
        flex-direction: column;
    }

    .wiki-sidebar-card {
        width: 100%;
    }
}

@media (max-width: 768px) {
    .wiki-panel-head,
    .wiki-preview-head,
    .wiki-filter-row,
    .wiki-entry-card {
        flex-direction: column;
        align-items: stretch;
    }

    .wiki-format-filter {
        width: 100%;
    }

    .wiki-entry-actions,
    .wiki-preview-actions {
        width: 100%;
    }
}

/* ==================== Wiki 文档中心 v2 ==================== */
body.page-wiki {
    --wiki-panel-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.98));
    --wiki-panel-border: rgba(148, 163, 184, 0.18);
}

.wiki-shell {
    max-width: 1380px;
    padding-top: 18px;
    padding-bottom: 28px;
}

.wiki-shell-head {
    margin-bottom: 16px;
}

.wiki-shell-headline {
    margin-bottom: 12px;
}

.wiki-head-actions {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.wiki-source-strip {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.wiki-source-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: 999px;
    border: 1px solid var(--gray-200);
    background: var(--card-bg);
    text-decoration: none;
    font-size: 12px;
    font-weight: 700;
    color: var(--text);
    transition: all var(--transition-base);
}

.wiki-source-pill small {
    min-width: 22px;
    padding: 2px 6px;
    border-radius: 999px;
    background: var(--gray-100);
    color: var(--text-light);
    font-size: 11px;
    text-align: center;
}

.wiki-source-pill:hover,
.wiki-source-pill.active {
    color: var(--primary-800);
    border-color: rgba(96, 165, 250, 0.34);
    background: var(--primary-50);
}

.wiki-shell-body {
    display: flex;
    gap: 14px;
    align-items: stretch;
    transition: opacity 180ms ease, transform 220ms ease;
}

.wiki-shell-body.wiki-loading {
    opacity: 0.5;
    transform: translateY(4px);
}

.wiki-shell-head .workspace-title {
    font-size: 20px;
    line-height: 1.2;
    margin: 0 0 4px;
}

.wiki-left-column {
    flex: 0 0 376px;
    width: 376px;
    padding-right: 4px;
    scrollbar-gutter: stable;
}

.wiki-right-column {
    flex: 0 0 284px;
    width: 284px;
    padding-right: 4px;
    scrollbar-gutter: stable;
}

.wiki-main-column {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.wiki-sidebar-card,
.wiki-browser-card,
.wiki-preview-card,
.wiki-search-card {
    background: var(--wiki-panel-bg);
    border: 1px solid var(--wiki-panel-border);
    border-radius: 14px;
    box-shadow: var(--shadow-sm);
}

.wiki-sidebar-card,
.wiki-browser-card,
.wiki-preview-card {
    padding: 16px;
}

.wiki-preview-card-compact {
    min-height: 340px;
}

.wiki-panel-head-tight {
    margin-bottom: 12px;
}

.wiki-panel-head-tight h3 {
    font-size: 15px;
    line-height: 1.25;
}

.wiki-panel-head-tight p {
    font-size: 12px;
    line-height: 1.55;
}

.wiki-section-label {
    display: block;
    font-size: 12px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 8px;
}

.wiki-search-card,
.wiki-source-list-card,
.wiki-recent-card,
.wiki-meta-card,
.wiki-sibling-card,
.wiki-search-result-card {
    padding: 18px;
    border-radius: 14px;
}

.wiki-search-row,
.wiki-search-options,
.wiki-toolbar-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

.wiki-search-options {
    margin-top: 8px;
}

.wiki-left-column .collapse-panel-body {
    gap: 16px;
}

.wiki-right-column .collapse-panel-body {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.wiki-left-column .wiki-browser-card-sidebar {
    padding: 18px;
    border-radius: 14px;
    box-shadow: none;
}

.wiki-left-column .wiki-browser-card-sidebar .wiki-panel-head-tight {
    display: grid;
    gap: 10px;
}

.wiki-left-column .wiki-browser-card-sidebar .wiki-panel-head-tight .wiki-toolbar-actions {
    justify-content: flex-start;
}

.wiki-left-column .wiki-browser-card-sidebar .wiki-toolbar {
    margin-bottom: 12px;
}

.wiki-left-column .wiki-source-shortcuts {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    margin-bottom: 14px;
}

.wiki-left-column .wiki-source-shortcuts .wiki-source-list-item {
    min-height: 54px;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 12px;
    background: transparent;
}

.wiki-left-column .wiki-source-shortcuts .wiki-source-list-copy {
    align-items: flex-start;
    text-align: left;
}

.wiki-left-column .wiki-source-shortcuts .wiki-source-list-copy strong {
    font-size: 13px;
}

.wiki-left-column .wiki-source-shortcuts .wiki-source-list-copy span {
    font-size: 11px;
}

.wiki-left-column .wiki-source-shortcuts .wiki-source-list-item::after {
    content: attr(data-count);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    padding: 4px 8px;
    border-radius: 999px;
    background: var(--gray-100);
    color: var(--text-light);
    font-size: 11px;
    font-weight: 700;
}

.wiki-left-column .wiki-browser-card-sidebar .wiki-filter-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
}

.wiki-left-column .wiki-browser-card-sidebar .wiki-format-filter,
.wiki-left-column .wiki-browser-card-sidebar .wiki-filter-row .wiki-search-input {
    width: 100%;
}

.wiki-left-column .wiki-entry-list-sidebar {
    max-height: none;
    overflow: visible;
    padding-right: 0;
    gap: 10px;
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-card {
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr) auto;
    align-items: start;
    gap: 10px;
    padding: 12px;
    border-radius: 14px;
    transition: opacity 140ms ease, transform 140ms ease, border-color var(--transition-base), background-color var(--transition-base);
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-card-dimmed {
    opacity: 0.44;
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-icon {
    width: 24px;
    font-size: 16px;
    line-height: 1.4;
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-body {
    gap: 5px;
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-title {
    display: block;
    font-size: 13px;
    line-height: 1.45;
    white-space: normal;
    word-break: break-word;
    overflow-wrap: anywhere;
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-body p {
    font-size: 11px;
    line-height: 1.45;
    margin: 0;
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-actions {
    width: auto;
    justify-content: flex-end;
    align-self: center;
}

.wiki-left-column .wiki-entry-list-sidebar .wiki-entry-actions .btn {
    min-width: 58px;
    padding-left: 10px;
    padding-right: 10px;
}

.wiki-search-input,
.wiki-format-filter {
    min-height: 38px;
    padding: 8px 12px;
    font-size: 13px;
}

.wiki-search-row .wiki-search-input {
    flex: 1 1 auto;
}

.wiki-left-column .wiki-search-row,
.wiki-left-column .wiki-search-options {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
}

.wiki-right-column .wiki-search-row,
.wiki-right-column .wiki-search-options {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
}

.wiki-left-column .wiki-search-row .btn,
.wiki-left-column .wiki-search-options .btn,
.wiki-left-column .wiki-search-options .wiki-format-filter {
    width: 100%;
}

.wiki-right-column .wiki-search-row .btn,
.wiki-right-column .wiki-search-options .btn,
.wiki-right-column .wiki-search-options .wiki-format-filter {
    width: 100%;
}

.wiki-source-list,
.wiki-search-result-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.wiki-source-list-item,
.wiki-search-result-item,
.wiki-sibling-link {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 12px;
    border-radius: 14px;
    border: 1px solid rgba(226, 232, 240, 0.78);
    background: rgba(255, 255, 255, 0.76);
    text-decoration: none;
    transition: all var(--transition-base);
}

.wiki-source-list-item:hover,
.wiki-source-list-item.active,
.wiki-search-result-item:hover,
.wiki-sibling-link:hover {
    transform: translateY(-1px);
    border-color: rgba(96, 165, 250, 0.32);
    background: var(--primary-50);
}

.wiki-source-list-copy {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.wiki-source-list-copy strong,
.wiki-search-result-top strong,
.wiki-sibling-link strong {
    font-size: 13px;
    color: var(--text);
    line-height: 1.35;
}

.wiki-source-list-copy span,
.wiki-search-result-item p,
.wiki-search-result-item span,
.wiki-source-list-meta,
.wiki-sibling-link span,
.wiki-sibling-stat,
.wiki-meta-item span {
    font-size: 11px;
    color: var(--text-light);
    line-height: 1.45;
}

.wiki-source-list-meta {
    align-self: flex-end;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--gray-100);
}

.wiki-browser-card .wiki-toolbar {
    display: grid;
    gap: 10px;
    margin-bottom: 12px;
}

.wiki-breadcrumbs {
    min-height: 24px;
    gap: 6px;
}

.wiki-breadcrumbs a {
    font-size: 12px;
    font-weight: 700;
    line-height: 1.4;
    word-break: break-word;
}

.wiki-filter-row {
    gap: 8px;
}

.wiki-filter-row .wiki-search-input {
    flex: 1 1 auto;
}

.wiki-filter-row .wiki-format-filter {
    width: 148px;
}

.wiki-entry-list {
    display: grid;
    gap: 8px;
}

.wiki-entry-card {
    gap: 12px;
    padding: 12px 14px;
    border-radius: 16px;
}

.wiki-entry-title {
    font-size: 13px;
}

.wiki-entry-body p {
    font-size: 11px;
    line-height: 1.45;
}

.wiki-entry-actions .btn,
.wiki-preview-actions .btn,
.wiki-head-actions .btn,
.wiki-search-row .btn,
.wiki-search-options .btn,
.wiki-search-card .task-filter-actions .btn {
    min-height: 34px;
    padding-top: 7px;
    padding-bottom: 7px;
}

.wiki-search-card {
    margin-bottom: 0;
}

.wiki-search-card .task-filter-head {
    align-items: flex-start;
}

.wiki-search-card .filter-grid {
    gap: 12px;
}

.wiki-search-card .task-filter-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
}

.wiki-search-card .task-filter-actions .btn {
    width: 100%;
    justify-content: center;
    white-space: nowrap;
}

.wiki-preview-card .wiki-panel-head-tight {
    align-items: flex-start;
    flex-wrap: nowrap;
    gap: 14px;
}

.wiki-preview-card .wiki-panel-head-tight > div:first-child {
    min-width: 0;
}

.wiki-preview-actions {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    flex-wrap: nowrap;
    justify-content: flex-end;
}

.wiki-preview-nav-btn {
    width: 36px;
    min-width: 36px;
    padding-left: 0;
    padding-right: 0;
    font-size: 14px;
    font-weight: 800;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.wiki-preview-fullscreen-btn i {
    font-size: 13px;
}

.wiki-preview-status {
    margin-bottom: 12px;
}

.wiki-status-badge {
    padding: 5px 10px;
    font-size: 11px;
    font-weight: 700;
}

.wiki-preview-content {
    min-height: 220px;
}

.wiki-head-actions {
    justify-content: flex-end;
}

.wiki-shell-desc {
    margin: 0;
}

.wiki-rendered-content {
    padding: 18px 20px;
    border-radius: 16px;
}

.wiki-rendered-content h1 { font-size: 24px; }
.wiki-rendered-content h2 { font-size: 20px; }
.wiki-rendered-content h3 { font-size: 17px; }
.wiki-rendered-content p,
.wiki-rendered-content li,
.wiki-rendered-content td,
.wiki-rendered-content th {
    font-size: 13px;
    line-height: 1.7;
}

.wiki-slide-deck {
    display: grid;
    gap: 14px;
}

.wiki-slide-deck-intro {
    padding: 12px 14px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--primary-50), rgba(255, 255, 255, 0.96));
    border: 1px solid rgba(147, 197, 253, 0.32);
}

.wiki-slide-deck-intro h1 {
    font-size: 18px;
    font-weight: 800;
    margin-bottom: 4px;
}

.wiki-slide-card {
    padding: 16px;
    border-radius: 16px;
    border: 1px solid var(--gray-200);
    background: rgba(255, 255, 255, 0.82);
}

.wiki-slide-index {
    display: inline-flex;
    align-items: center;
    padding: 4px 8px;
    border-radius: 999px;
    background: var(--primary-50);
    color: var(--primary-800);
    font-size: 11px;
    font-weight: 700;
    margin-bottom: 8px;
}

.wiki-slide-card h2 {
    font-size: 16px;
    font-weight: 800;
    margin-bottom: 8px;
}

.wiki-slide-card ul {
    display: grid;
    gap: 6px;
    padding-left: 18px;
}

.wiki-meta-grid {
    display: grid;
    gap: 8px;
}

.wiki-meta-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 12px;
    background: rgba(248, 250, 252, 0.88);
    border: 1px solid rgba(226, 232, 240, 0.82);
}

.wiki-meta-item strong {
    font-size: 12px;
    font-weight: 700;
    color: var(--text);
    text-align: right;
}

.wiki-sibling-nav {
    display: grid;
    gap: 8px;
}

.wiki-sibling-stat {
    font-weight: 700;
}

.wiki-search-result-item p {
    margin: 0;
}

.wiki-search-result-top {
    display: flex;
    align-items: center;
    gap: 8px;
}

.wiki-search-result-top i {
    color: var(--primary-700);
}

.wiki-empty-compact {
    min-height: 120px;
}

.wiki-left-column.is-collapsed,
.wiki-right-column.is-collapsed {
    overflow: visible;
}

.wiki-left-column.is-collapsed .collapse-panel-head,
.wiki-right-column.is-collapsed .collapse-panel-head {
    width: 40px;
    min-height: 132px;
    padding: 8px 4px;
    border-radius: 14px;
    gap: 8px;
}

.wiki-left-column.is-collapsed .collapse-panel-head {
    border-radius: 0 14px 14px 0;
    transform: translateX(calc(-100% + 4px));
}

.wiki-right-column.is-collapsed .collapse-panel-head {
    border-radius: 14px 0 0 14px;
    transform: translateX(4px);
}

.wiki-left-column.is-collapsed .collapse-panel-head strong,
.wiki-right-column.is-collapsed .collapse-panel-head strong {
    font-size: 11px;
    letter-spacing: 2px;
    opacity: 0.82;
}

.wiki-left-column.is-collapsed .collapse-toggle-btn,
.wiki-right-column.is-collapsed .collapse-toggle-btn {
    width: 28px;
    height: 28px;
    min-width: 28px;
}

.wiki-left-column.is-collapsed .collapse-toggle-btn i,
.wiki-right-column.is-collapsed .collapse-toggle-btn i {
    font-size: 12px;
}

.wiki-left-column .collapse-panel-head,
.wiki-right-column .collapse-panel-head {
    align-items: center;
}

body.page-wiki.wiki-fullscreen-active .wiki-shell-head,
body.page-wiki.wiki-fullscreen-active .wiki-left-column,
body.page-wiki.wiki-fullscreen-active .wiki-right-column {
    display: none !important;
}

body.page-wiki.wiki-fullscreen-active .wiki-main-column {
    width: 100%;
    flex-basis: 100%;
}

body.page-wiki.wiki-fullscreen-active .wiki-preview-card {
    min-height: 100vh;
}

#wiki-preview-panel:fullscreen {
    width: 100%;
    height: 100%;
    max-width: none;
    margin: 0;
    padding: 18px;
    border-radius: 0;
    background: linear-gradient(180deg, #F8FAFC 0%, #EEF4FF 100%);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

#wiki-preview-panel:fullscreen .wiki-panel-head-tight {
    margin-bottom: 10px;
    gap: 10px;
    align-items: center;
    padding: 0 0 10px;
    border-bottom: 1px solid rgba(226, 232, 240, 0.92);
}

#wiki-preview-panel:fullscreen .wiki-panel-head-tight > div:first-child {
    flex: 1 1 auto;
    min-width: 0;
}

#wiki-preview-panel:fullscreen .wiki-panel-head-tight h3 {
    font-size: 18px;
    line-height: 1.2;
    margin: 0;
    color: #0F172A;
}

#wiki-preview-panel:fullscreen .wiki-panel-head-tight p,
#wiki-preview-panel:fullscreen .wiki-preview-status {
    display: none;
}

#wiki-preview-panel:fullscreen .wiki-preview-actions {
    gap: 8px;
}

#wiki-preview-panel:fullscreen .wiki-preview-actions .btn {
    box-shadow: none;
}

#wiki-preview-panel:fullscreen .wiki-preview-actions .btn-outline {
    background: rgba(255, 255, 255, 0.96);
    border-color: rgba(203, 213, 225, 0.96);
    color: #334155;
}

#wiki-preview-panel:fullscreen .wiki-preview-actions .btn-outline:hover {
    background: #F8FBFF;
    border-color: rgba(96, 165, 250, 0.42);
    color: #1D4ED8;
}

#wiki-preview-panel:fullscreen .wiki-preview-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding-right: 6px;
    scrollbar-color: rgba(148, 163, 184, 0.72) transparent;
}

#wiki-preview-panel:fullscreen .wiki-rendered-content,
#wiki-preview-panel:fullscreen .wiki-pdf-frame-wrap,
#wiki-preview-panel:fullscreen .wiki-placeholder-preview {
    min-height: 100%;
}

#wiki-preview-panel:fullscreen .wiki-rendered-content {
    background: rgba(255, 255, 255, 0.96);
    border: 1px solid rgba(226, 232, 240, 0.92);
    box-shadow: none;
}

#wiki-preview-panel:fullscreen .wiki-placeholder-preview {
    background: rgba(255, 255, 255, 0.72);
    border: 1px dashed rgba(191, 219, 254, 0.92);
}

#wiki-preview-panel:fullscreen .wiki-placeholder-preview,
#wiki-preview-panel:fullscreen .wiki-placeholder-preview h3 {
    color: #0F172A;
}

#wiki-preview-panel:fullscreen .wiki-placeholder-preview p {
    color: #64748B;
}

#wiki-preview-panel:fullscreen .wiki-pdf-frame-wrap {
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(226, 232, 240, 0.92);
}

#wiki-preview-panel:fullscreen .wiki-pdf-frame {
    min-height: calc(100vh - 170px);
}

body.theme-dark.page-wiki {
    --wiki-panel-bg: linear-gradient(180deg, rgba(15, 23, 42, 0.98), rgba(11, 20, 36, 0.98));
    --wiki-panel-border: rgba(71, 85, 105, 0.76);
}

body.theme-dark .wiki-source-pill,
body.theme-dark .wiki-search-card,
body.theme-dark .wiki-source-list-card,
body.theme-dark .wiki-recent-card,
body.theme-dark .wiki-meta-card,
body.theme-dark .wiki-sibling-card,
body.theme-dark .wiki-search-result-card,
body.theme-dark .wiki-entry-card,
body.theme-dark .wiki-source-list-item,
body.theme-dark .wiki-search-result-item,
body.theme-dark .wiki-sibling-link,
body.theme-dark .wiki-slide-card,
body.theme-dark .wiki-meta-item {
    background: rgba(11, 20, 36, 0.92);
    border-color: rgba(71, 85, 105, 0.76);
    box-shadow: none;
}

body.theme-dark .wiki-source-pill small,
body.theme-dark .wiki-source-list-meta {
    background: rgba(15, 23, 42, 0.96);
}

body.theme-dark .wiki-sidebar-card,
body.theme-dark .wiki-browser-card,
body.theme-dark .wiki-preview-card {
    background: var(--wiki-panel-bg);
    border-color: var(--wiki-panel-border);
}

body.theme-dark .wiki-source-pill:hover,
body.theme-dark .wiki-source-pill.active,
body.theme-dark .wiki-source-list-item:hover,
body.theme-dark .wiki-source-list-item.active,
.wiki-entry-card:hover,
body.theme-dark .wiki-search-result-item:hover,
body.theme-dark .wiki-sibling-link:hover {
    background: rgba(37, 99, 235, 0.12);
    border-color: rgba(96, 165, 250, 0.28);
    color: var(--text);
}

body.theme-dark .wiki-entry-card {
    background: rgba(11, 20, 36, 0.92);
    border-color: rgba(71, 85, 105, 0.76);
}

body.theme-dark .wiki-entry-title,
body.theme-dark .wiki-source-list-copy strong,
body.theme-dark .wiki-search-result-top strong,
body.theme-dark .wiki-sibling-link strong,
body.theme-dark .wiki-meta-item strong {
    color: var(--text);
}

body.theme-dark .wiki-entry-body p,
body.theme-dark .wiki-source-list-copy span,
body.theme-dark .wiki-search-result-item p,
body.theme-dark .wiki-search-result-item span,
body.theme-dark .wiki-sibling-link span,
body.theme-dark .wiki-sibling-stat,
body.theme-dark .wiki-meta-item span {
    color: var(--text-light);
}

body.theme-dark .wiki-search-input,
body.theme-dark .wiki-format-filter {
    background: #0B1424;
    border-color: rgba(71, 85, 105, 0.82);
    color: rgba(226, 232, 240, 0.96);
}

body.theme-dark .wiki-search-input::placeholder {
    color: rgba(148, 163, 184, 0.9);
}

body.theme-dark .wiki-left-column .wiki-panel-head-tight h3,
body.theme-dark .wiki-left-column .wiki-section-label,
body.theme-dark .wiki-left-column .wiki-recent-body strong,
body.theme-dark .wiki-left-column .wiki-recent-item,
body.theme-dark .wiki-left-column .wiki-empty,
body.theme-dark .wiki-left-column .wiki-empty-compact {
    color: rgba(226, 232, 240, 0.96);
}

body.theme-dark .wiki-left-column .wiki-panel-head-tight p,
body.theme-dark .wiki-left-column .wiki-recent-body span,
body.theme-dark .wiki-left-column .wiki-empty p,
body.theme-dark .wiki-left-column .wiki-empty-compact p {
    color: rgba(148, 163, 184, 0.94);
}

body.theme-dark .wiki-left-column .wiki-search-card,
body.theme-dark .wiki-left-column .wiki-recent-card,
body.theme-dark .wiki-left-column .wiki-browser-card-sidebar {
    background: linear-gradient(180deg, rgba(12, 20, 36, 0.98), rgba(9, 16, 29, 0.98));
    border-color: rgba(71, 85, 105, 0.82);
}

body.theme-dark .wiki-left-column .wiki-source-list-item,
body.theme-dark .wiki-left-column .wiki-recent-item {
    background: rgba(15, 23, 42, 0.86);
    border: 1px solid rgba(71, 85, 105, 0.64);
}

body.theme-dark .wiki-left-column .wiki-source-list-item:hover,
body.theme-dark .wiki-left-column .wiki-source-list-item.active,
body.theme-dark .wiki-left-column .wiki-recent-item:hover {
    background: rgba(37, 99, 235, 0.14);
    border-color: rgba(96, 165, 250, 0.32);
}

body.theme-dark .wiki-left-column .wiki-source-list-meta {
    background: rgba(30, 41, 59, 0.96);
    color: rgba(191, 219, 254, 0.96);
}

body.theme-dark .wiki-left-column .wiki-source-shortcuts .wiki-source-list-item {
    background: rgba(15, 23, 42, 0.94);
}

body.theme-dark .wiki-left-column .wiki-source-shortcuts .wiki-source-list-item::after {
    background: rgba(30, 41, 59, 0.96);
    color: rgba(191, 219, 254, 0.96);
}

body.theme-dark .wiki-left-column .btn-outline {
    border-color: rgba(71, 85, 105, 0.82);
    background: rgba(15, 23, 42, 0.94);
    color: rgba(226, 232, 240, 0.96);
}

body.theme-dark .wiki-left-column .btn-outline:hover {
    background: rgba(30, 41, 59, 0.98);
    border-color: rgba(96, 165, 250, 0.34);
}

body.theme-dark .wiki-right-column .wiki-panel-head-tight h3,
body.theme-dark .wiki-right-column .wiki-section-label,
body.theme-dark .wiki-right-column .wiki-recent-body strong,
body.theme-dark .wiki-right-column .wiki-empty,
body.theme-dark .wiki-right-column .wiki-empty-compact {
    color: rgba(226, 232, 240, 0.96);
}

body.theme-dark .wiki-right-column .wiki-panel-head-tight p,
body.theme-dark .wiki-right-column .wiki-recent-body span,
body.theme-dark .wiki-right-column .wiki-empty p,
body.theme-dark .wiki-right-column .wiki-empty-compact p {
    color: rgba(148, 163, 184, 0.94);
}

body.theme-dark .wiki-right-column .wiki-search-card,
body.theme-dark .wiki-right-column .wiki-meta-card,
body.theme-dark .wiki-right-column .wiki-recent-card,
body.theme-dark .wiki-right-column .wiki-search-result-card {
    background: linear-gradient(180deg, rgba(12, 20, 36, 0.98), rgba(9, 16, 29, 0.98));
    border-color: rgba(71, 85, 105, 0.82);
}

body.theme-dark .wiki-right-column .wiki-recent-item {
    background: rgba(15, 23, 42, 0.86);
    border: 1px solid rgba(71, 85, 105, 0.64);
}

body.theme-dark .wiki-right-column .wiki-recent-item:hover {
    background: rgba(37, 99, 235, 0.14);
    border-color: rgba(96, 165, 250, 0.32);
}

body.theme-dark .wiki-rendered-content,
body.theme-dark .wiki-slide-deck-intro {
    background: rgba(11, 20, 36, 0.96);
    border-color: rgba(71, 85, 105, 0.82);
}

body.theme-dark .wiki-slide-deck-intro {
    background: linear-gradient(135deg, rgba(30, 41, 59, 0.96), rgba(11, 20, 36, 0.98));
}

body.theme-dark .wiki-rendered-content code {
    background: rgba(30, 41, 59, 0.94);
}

body.theme-dark .wiki-rendered-content table th,
body.theme-dark .wiki-rendered-content table td {
    border-color: rgba(71, 85, 105, 0.76);
}

body.theme-dark .wiki-pdf-frame-wrap {
    background: rgba(2, 6, 23, 0.9);
    border-color: rgba(71, 85, 105, 0.76);
}

body.theme-dark #wiki-preview-panel:fullscreen {
    background: #0B1424;
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-panel-head-tight {
    border-bottom-color: rgba(51, 65, 85, 0.92);
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-panel-head-tight h3 {
    color: rgba(226, 232, 240, 0.96);
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-preview-actions .btn-outline {
    background: rgba(15, 23, 42, 0.94);
    border-color: rgba(71, 85, 105, 0.82);
    color: rgba(226, 232, 240, 0.96);
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-preview-actions .btn-outline:hover {
    background: rgba(30, 41, 59, 0.98);
    border-color: rgba(96, 165, 250, 0.38);
    color: #BFDBFE;
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-rendered-content,
body.theme-dark #wiki-preview-panel:fullscreen .wiki-pdf-frame-wrap {
    background: rgba(11, 20, 36, 0.96);
    border-color: rgba(71, 85, 105, 0.82);
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-placeholder-preview {
    background: rgba(11, 20, 36, 0.72);
    border-color: rgba(71, 85, 105, 0.82);
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-placeholder-preview,
body.theme-dark #wiki-preview-panel:fullscreen .wiki-placeholder-preview h3 {
    color: rgba(226, 232, 240, 0.96);
}

body.theme-dark #wiki-preview-panel:fullscreen .wiki-placeholder-preview p {
    color: rgba(148, 163, 184, 0.94);
}

body.theme-dark .wiki-left-column.is-collapsed .collapse-panel-head,
body.theme-dark .wiki-right-column.is-collapsed .collapse-panel-head {
    background: rgba(15, 23, 42, 0.96);
    border-color: rgba(71, 85, 105, 0.82);
    box-shadow: 0 14px 30px rgba(2, 6, 23, 0.48);
}

@media (max-width: 1180px) {
    .wiki-shell-body {
        flex-wrap: wrap;
    }

    .wiki-left-column,
    .wiki-right-column,
    .wiki-main-column {
        width: 100%;
        flex-basis: 100%;
    }
}

@media (max-width: 768px) {
    .wiki-shell {
        padding-top: 14px;
        padding-bottom: 20px;
    }

    .wiki-source-strip,
    .wiki-head-actions {
        width: 100%;
    }

    .wiki-filter-row,
    .wiki-search-row,
    .wiki-search-options {
        flex-direction: column;
        align-items: stretch;
    }

    .wiki-filter-row .wiki-format-filter {
        width: 100%;
    }
}
