body { margin: 0; min-height: 100vh; font-family: "IBM Plex Sans", "Noto Sans SC", sans-serif; background: linear-gradient(180deg, rgba(235, 249, 250, 0.86) 0%, rgba(246, 251, 255, 0.98) 32%, #f7fbff 100%); color: #1f2937; } #root { min-height: 100vh; } .dashboard-layout { height: 100vh; overflow: hidden; background: radial-gradient(circle at top left, rgba(20, 184, 166, 0.12), transparent 28%), radial-gradient(circle at top right, rgba(59, 130, 246, 0.08), transparent 24%), linear-gradient(180deg, #f0fbff 0%, #f7fbff 100%); } .dashboard-sider { position: sticky !important; top: 0; left: 0; height: 100vh; overflow: hidden; z-index: 10; border-right: 1px solid rgba(148, 163, 184, 0.16); box-shadow: inset -1px 0 0 rgba(15, 23, 42, 0.03); display: flex; flex-direction: column; } .brand-panel { display: flex; align-items: center; gap: 16px; padding: 24px 20px 16px; } .brand-copy { transition: opacity 0.2s ease, width 0.2s ease; } .brand-copy-hidden { width: 0; opacity: 0; overflow: hidden; display: none; } .brand-mark { width: 54px; height: 54px; border-radius: 18px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.5rem; font-weight: 800; color: white; background: linear-gradient(135deg, #1d4ed8, #14b8a6); box-shadow: 0 12px 24px rgba(29, 78, 216, 0.18); } .dashboard-menu { border-inline-end: 0 !important; padding: 8px 12px 96px; background: transparent !important; flex: 0 0 auto; } .dashboard-menu .ant-menu-item { height: 48px; line-height: 48px; border-radius: 14px; margin-bottom: 10px; font-size: 0.98rem; } .dashboard-menu .ant-menu-item-selected { background: linear-gradient(135deg, rgba(20, 184, 166, 0.12), rgba(14, 165, 233, 0.08)) !important; color: #0f766e !important; } .dashboard-header { position: sticky; top: 0; z-index: 9; display: flex; align-items: center; justify-content: space-between; gap: 12px; height: auto; padding: 0px 24px; background: rgba(255, 255, 255, 0.74); backdrop-filter: blur(10px); border-bottom: 1px solid rgba(148, 163, 184, 0.14); } .dashboard-header-main { display: flex; align-items: center; gap: 12px; } .header-title-center { display: flex; justify-content: center; align-items: center; } .dashboard-header .ant-typography-secondary { font-size: 0.9rem; } .nav-toggle { width: 40px; height: 40px; border-radius: 12px !important; } .sider-footer { position: absolute; left: 0; right: 0; bottom: 30px; display: flex; justify-content: center; padding: 0; background: transparent; } .nav-toggle-sider { width: calc(100% - 24px); height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 14px !important; color: #475569 !important; } .nav-toggle-collapsed { width: 44px; min-width: 44px !important; padding-inline: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; } .dashboard-content { height: calc(100vh - 98px); overflow: auto; padding: 24px 28px 32px; } .dashboard-hero-card { background: linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(247, 252, 255, 0.94)); } .dashboard-hero-card .ant-card-body { padding-top: 18px !important; padding-bottom: 18px !important; } .stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; } .stats-card .ant-card-body { padding: 24px 26px !important; } .stats-card .ant-statistic { min-height: 84px; } .stats-card .ant-statistic-title { margin-bottom: 10px !important; color: #9aa4b2 !important; font-size: 0.85rem !important; font-weight: 600 !important; line-height: 1.2 !important; } .stats-card .ant-statistic-content { font-size: clamp(16px, 1.8vw, 16px) !important; word-break: break-all !important; line-height: 1.2; word-break: break-word; font-weight: 700 !important; color: #1f2937 !important; } .stats-card .ant-statistic-content-value { white-space: normal; } .stats-card .ant-statistic-content-suffix { font-size: 0.82em !important; color: #64748b !important; font-weight: 500 !important; } .stats-plain-title { color: #9aa4b2; font-size: 0.85rem; font-weight: 600; line-height: 1.2; } .stats-plain-value { margin-top: 12px; font-size: clamp(16px, 1.45vw, 16px); word-break: break-all !important; line-height: 1.45; font-weight: 700; color: #1f2937; word-break: break-word; } .stats-plain-value-single { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; word-break: normal !important; } .stats-extra { margin-top: 12px; color: #74839a; font-size: 0.82rem; line-height: 1.45; word-break: break-word; } .content-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr); gap: 20px; } .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; } .drawer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; } .config-switch-codearea { font-family: "SFMono-Regular", "JetBrains Mono", "Menlo", monospace; } .config-switch-codearea textarea { font-family: inherit; font-size: 13px; line-height: 1.65; } .config-switch-format-button { margin: -8px 0 20px; padding-inline: 0 !important; } .config-switch-targets { display: grid; gap: 8px; } .config-switch-target-label { color: #64748b; font-size: 12px; } .config-switch-target-path { font-family: "SFMono-Regular", "JetBrains Mono", "Menlo", monospace; font-size: 12px; line-height: 1.5; word-break: break-all; } .config-switch-confirm-paths { margin: 0; padding: 10px 12px; border-radius: 12px; background: rgba(241, 245, 249, 0.9); font-family: "SFMono-Regular", "JetBrains Mono", "Menlo", monospace; font-size: 12px; line-height: 1.6; white-space: pre-wrap; word-break: break-all; } .config-switch-diff-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .config-switch-diff-title { margin-bottom: 8px; color: #475569; font-weight: 600; } .config-switch-diff-box { min-height: 180px; max-height: 360px; overflow: auto; border-radius: 14px; background: rgba(241, 245, 249, 0.92); border: 1px solid rgba(226, 232, 240, 0.95); } .config-switch-diff-line { display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: start; font-family: "SFMono-Regular", "JetBrains Mono", "Menlo", monospace; font-size: 12px; line-height: 1.65; } .config-switch-diff-line + .config-switch-diff-line { border-top: 1px solid rgba(226, 232, 240, 0.75); } .config-switch-diff-line-number { padding: 8px 10px 8px 12px; color: #94a3b8; text-align: right; user-select: none; border-right: 1px solid rgba(226, 232, 240, 0.75); } .config-switch-diff-line-text { display: block; min-width: 0; padding: 8px 12px; white-space: pre-wrap; word-break: break-word; } .config-switch-diff-line-same { background: rgba(248, 250, 252, 0.78); } .config-switch-diff-line-added { background: rgba(220, 252, 231, 0.92); } .config-switch-diff-line-removed { background: rgba(254, 226, 226, 0.9); } .config-switch-diff-line-changed { background: rgba(254, 240, 138, 0.72); } .config-switch-diff-line-empty { background: rgba(248, 250, 252, 0.5); } .drawer-section-card { margin-top: 8px; } .terminal-card { background: linear-gradient(180deg, #0f172a, #111827); border-radius: 18px; padding: 14px; max-height: 380px; overflow: auto; color: #e5f7ff; font-family: "IBM Plex Mono", "Fira Code", monospace; font-size: 0.84rem; } .terminal-line { display: grid; grid-template-columns: 160px 72px 1fr; gap: 12px; padding: 4px 0; } .terminal-time, .terminal-stream { color: #93c5fd; } .terminal-stderr { color: #fecdd3; } .copy-value { display: flex; align-items: center; gap: 6px; min-width: 0; } .copy-value-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ant-card { border-radius: 24px !important; } .ant-table-wrapper .ant-table { border-radius: 18px !important; } .ant-table-wrapper .ant-table-thead > tr > th, .ant-table-wrapper .ant-table-tbody > tr > td { background: rgba(255, 255, 255, 0.96); } .ant-table-wrapper .ant-table-thead > tr > th { font-weight: 700; } .ant-table-wrapper .ant-table-tbody > tr:hover > td { background: #f2fbff !important; } .ant-table-wrapper .ant-table-cell-fix-left, .ant-table-wrapper .ant-table-cell-fix-right { background: rgba(255, 255, 255, 0.98) !important; } .ant-table-wrapper .ant-table-tbody > tr:hover > .ant-table-cell-fix-left, .ant-table-wrapper .ant-table-tbody > tr:hover > .ant-table-cell-fix-right { background: #f2fbff !important; } .ant-btn-primary { box-shadow: 0 10px 24px rgba(20, 184, 166, 0.22); } @media (max-width: 1200px) { .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .content-grid { grid-template-columns: 1fr; } } @media (max-width: 860px) { .dashboard-layout { height: auto; overflow: visible; } .dashboard-sider { position: relative !important; height: auto; overflow: visible; } .dashboard-header { padding: 20px 16px 14px; align-items: flex-start; flex-direction: column; } .dashboard-header-main { width: 100%; } .header-title-center { display: flex; justify-content: center; align-items: center; } .dashboard-content { height: auto; overflow: visible; padding: 16px; } .stats-grid, .form-grid, .drawer-grid { grid-template-columns: 1fr; } .config-switch-diff-grid { grid-template-columns: 1fr; } .terminal-line { grid-template-columns: 1fr; } }