* { box-sizing: border-box; } html, body, #root { margin: 0; padding: 0; min-height: 100%; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif; } a { color: #1677ff; } /* ============ 后台主布局与侧边栏 ============ */ .app-shell { min-height: 100vh; } .app-main { min-width: 0; background: #f5f8fc; } .app-header { height: 50px !important; padding: 0 24px !important; line-height: 50px !important; background: #fff !important; border-bottom: 1px solid #edf1f7; display: flex; align-items: center; justify-content: flex-end; } .app-content { min-width: 0; margin: 16px; } .app-content__body { min-height: calc(100vh - 50px - 32px); padding: 20px; background: #fff; border: 1px solid #edf1f7; border-radius: 8px; } .app-main--flush .app-content { margin: 0; } .app-main--flush .app-content__body { height: calc(100vh - 50px); min-height: 0; padding: 0; border: 0; border-radius: 0; background: #fff; overflow: hidden; } .app-sidebar { position: relative; background: #f4f8fc !important; border-right: 1px solid #e3eaf2; box-shadow: inset -1px 0 0 rgba(225, 233, 242, 0.8); } .app-sidebar .ant-layout-sider-children { display: flex; flex-direction: column; min-height: 100%; } .app-sidebar__collapse { position: absolute; top: 42px; right: -18px; z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border: 1px solid #e8eef6; border-radius: 999px; background: #fff; color: #9aa4b2; box-shadow: 0 8px 18px rgba(42, 71, 105, 0.12); cursor: pointer; transition: color 0.16s ease, box-shadow 0.16s ease; } .app-sidebar__collapse:hover { color: #1677ff; box-shadow: 0 10px 22px rgba(22, 119, 255, 0.16); } .app-sidebar__brand { display: flex; align-items: center; gap: 10px; height: 50px; padding: 0 18px; color: #1f2329; font-size: 17px; font-weight: 800; } .app-sidebar__brand-mark { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 28px; width: 28px; height: 28px; border-radius: 8px; background: linear-gradient(135deg, #1677ff 0%, #39c5ff 100%); color: #fff; font-size: 15px; font-weight: 800; } .app-sidebar__brand-text { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .app-sidebar__nav { flex: 1; min-height: 0; padding: 8px 14px 24px; overflow-y: auto; } .app-sidebar__group { margin-bottom: 13px; } .app-sidebar__item, .app-sidebar__child { width: 100%; border: 0; background: transparent; color: #555f6d; cursor: pointer; font-family: inherit; text-align: left; transition: background 0.16s ease, color 0.16s ease; } .app-sidebar__item { display: flex; align-items: center; min-height: 42px; padding: 8px 12px; border-radius: 6px; font-size: 16px; font-weight: 650; } .app-sidebar__item:hover { color: #1677ff; background: #edf5ff; } .app-sidebar__item--active { color: #1677ff; } .app-sidebar__item--disabled { color: #9aa4b2; cursor: default; } .app-sidebar__icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 26px; margin-right: 10px; font-size: 18px; } .app-sidebar__label { min-width: 0; flex: 1; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .app-sidebar__arrow { margin-left: 8px; color: currentColor; font-size: 12px; transform: rotate(0deg); transition: transform 0.16s ease; } .app-sidebar__arrow--open { transform: rotate(180deg); } .app-sidebar__children { display: flex; flex-direction: column; gap: 5px; margin-top: 6px; padding-left: 44px; } .app-sidebar__child { min-height: 38px; padding: 8px 14px; border-radius: 6px; font-size: 15px; font-weight: 600; } .app-sidebar__child:hover:not(:disabled) { color: #1677ff; background: #eef6ff; } .app-sidebar__child--active { color: #1677ff; background: #dcecff; } .app-sidebar__child--disabled { color: #5f6875; cursor: default; } .app-sidebar__child:disabled { cursor: default; opacity: 1; } .app-sidebar--collapsed .app-sidebar__brand { justify-content: center; padding: 0; } .app-sidebar--collapsed .app-sidebar__nav { padding: 8px 10px 24px; } .app-sidebar--collapsed .app-sidebar__group { margin-bottom: 8px; } .app-sidebar--collapsed .app-sidebar__item { justify-content: center; min-height: 44px; padding: 8px 0; } .app-sidebar--collapsed .app-sidebar__icon { margin-right: 0; } /* ============ 开放 API 对接文档 ============ */ .api-docs { display: flex; align-items: stretch; width: 100%; height: 100%; min-height: 0; background: #fff; border-radius: 0; overflow: hidden; } /* 左侧目录 */ .api-docs__toc { flex: 0 0 240px; width: 240px; height: 100%; overflow-y: auto; border-right: 1px solid #e7edf5; background: #f8fbff; padding: 16px 12px 20px; } .api-docs__toc-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 16px; } .api-docs__toc-tab { height: 34px; border: 0; border-radius: 6px; background: transparent; color: #4e5969; font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.16s ease; } .api-docs__toc-tab:hover, .api-docs__toc-tab--active { color: #1677ff; background: #edf5ff; } .api-docs__nav { display: flex; flex-direction: column; gap: 16px; } .api-docs__nav-group { display: flex; flex-direction: column; gap: 2px; } .api-docs__nav-heading { padding: 0 10px 8px; font-size: 14px; font-weight: 700; color: #4e5969; letter-spacing: 0.5px; } .api-docs__nav-row { min-width: 0; } .api-docs__nav-item, .api-docs__nav-sub-item { display: block; min-height: 36px; padding: 8px 12px; font-size: 14px; color: #4e5969; cursor: pointer; border-radius: 5px; transition: all 0.15s; user-select: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .api-docs__nav-item:hover, .api-docs__nav-sub-item:hover { color: #1677ff; background: #f2f7ff; } .api-docs__nav-item--active { color: #1677ff; background: #edf5ff; font-weight: 600; } .api-docs__nav-sub { display: flex; flex-direction: column; margin: 2px 0 8px 12px; padding-left: 12px; border-left: 1px solid #e6edf6; } .api-docs__nav-sub-item { min-height: 32px; padding: 6px 10px; font-size: 13.5px; color: #5a6472; } .api-docs__nav-sub-item--active { color: #1677ff; font-weight: 600; background: #f4f8ff; } /* 右侧文档 */ .api-docs__content { flex: 1 1 auto; min-width: 0; height: 100%; overflow-y: auto; scroll-behavior: smooth; background: #fff; padding: 0; } .api-docs__inner { width: min(1120px, calc(100% - 48px)); max-width: 1120px; min-height: 100%; margin: 0 auto 0 0; padding: 28px 0 64px 32px; background: #fff; border: 0; border-radius: 0; box-shadow: none; } .api-docs__section { padding-top: 0; margin-top: 0; border-top: none; } .api-docs__section:first-child { padding-top: 0; margin-top: 0; border-top: none; } .api-docs__h2 { font-size: 20px; font-weight: 700; color: #1d2129; margin: 0 0 12px; scroll-margin-top: 24px; } .api-docs__summary { max-width: 1080px; margin: 0 0 16px !important; color: #4e5969 !important; line-height: 1.8; } .api-docs__endpoint-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 4px; } .api-docs__endpoint-meta { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; } .api-docs__endpoint { color: #1f2329; } .api-docs__notice { margin: 0 0 2px; padding: 13px 16px; border-left: 4px solid #1890ff; border-radius: 4px; background: #f1f7ff; color: #4e5969; line-height: 1.75; } .api-docs__notice-label { color: #1f2329; font-weight: 700; } /* EndpointDoc 子小节标题 */ .doc-section-title { font-size: 16px; font-weight: 700; color: #1d2129; margin: 22px 0 12px; scroll-margin-top: 24px; } .doc-subtitle { font-size: 14px; font-weight: 600; color: #4e5969; margin: 10px 0 10px; } .api-docs__param-group { margin-bottom: 18px; } .api-docs__card { margin-top: 16px; border-color: #eef1f5 !important; border-radius: 6px !important; box-shadow: none !important; } .api-docs__card .ant-card-head { min-height: 42px; border-bottom-color: #eef1f5; } .api-docs__card .ant-card-head-title { font-size: 14px; font-weight: 700; color: #1d2129; } .api-docs__common { margin-top: 18px; } .api-docs__pager { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 32px; padding-top: 20px; border-top: 1px solid #eef1f5; } .api-docs__pager-btn { min-height: 70px; padding: 12px 16px; border: 1px solid #e7edf5; border-radius: 6px; background: #fbfdff; color: #4e5969; text-align: left; cursor: pointer; transition: all 0.16s ease; } .api-docs__pager-btn:hover:not(:disabled) { border-color: #91caff; background: #f2f8ff; } .api-docs__pager-btn:disabled { cursor: not-allowed; opacity: 0.45; } .api-docs__pager-btn span { display: block; margin-bottom: 6px; font-size: 12px; color: #86909c; } .api-docs__pager-btn strong { display: block; color: #1d2129; font-size: 14px; } .api-docs__pager-btn--next { text-align: right; } .api-docs__alert { border-radius: 4px !important; } .api-docs__table { border-top: 1px solid #edf1f7; } .api-docs__table .ant-table { color: #1f2329; } .api-docs__table .ant-table-thead > tr > th { background: #fafcff !important; color: #1d2129 !important; font-weight: 700 !important; border-bottom: 1px solid #edf1f7 !important; border-right: 1px solid #f1f4f8 !important; } .api-docs__table .ant-table-tbody > tr > td { padding-top: 14px !important; padding-bottom: 14px !important; border-bottom: 1px solid #edf1f7 !important; border-right: 1px solid #f3f6fa !important; } .api-docs__table .ant-table-thead > tr > th:last-child, .api-docs__table .ant-table-tbody > tr > td:last-child { border-right: 0 !important; } .api-docs__table .ant-table-tbody > tr:hover > td { background: #fbfdff !important; } .api-docs__field { display: inline-block; max-width: 100%; overflow-wrap: anywhere; color: #2454a6 !important; background: transparent !important; border: 0 !important; padding: 0; font-weight: 700; font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 13px; } .api-docs__type { color: #1f2329; font-size: 13px; font-weight: 500; } .api-docs__inline-example { font-size: 12px; color: #2454a6 !important; background: transparent !important; border: 0 !important; padding: 0; font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-weight: 600; } .api-docs__required { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 22px; color: #cf1322; background: #fff1f0; border-radius: 4px; font-size: 13px; font-weight: 700; } .api-docs__pre { margin: 0; padding: 12px 14px; background: #f7f9fc; border: 1px solid #e7edf5; border-radius: 4px; font-size: 12.5px; line-height: 1.7; overflow: auto; white-space: pre-wrap; word-break: break-all; color: #1f2329; font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; } .api-docs__pre--plain { background: transparent; border: 0; padding: 0; } .api-docs__code, .api-docs__endpoint-line { margin: 0; padding: 17px 18px; background: #f7f9fc; border: 1px solid #e7edf5; border-radius: 4px; color: #1f2329; font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 13px; line-height: 1.75; overflow: auto; white-space: pre; } .api-docs__endpoint-line { min-height: 56px; display: flex; align-items: center; gap: 8px; } .api-docs__method { font-weight: 800; } .api-docs__path { color: #202632; font-weight: 700; } /* JSON 语法高亮配色 */ .json-key { color: #2454a6; font-weight: 600; } .json-string { color: #0f8a5f; } .json-number { color: #b86b00; } .json-boolean { color: #1677ff; } .json-null { color: #86909c; } @media (max-width: 1024px) { .api-docs { flex-direction: column; } .api-docs__toc { position: relative; flex: none; width: 100%; max-height: 320px; border-right: 0; border-bottom: 1px solid #e7edf5; } .api-docs__content { width: 100%; height: auto; min-height: calc(100vh - 50px - 320px); } .api-docs__inner { padding: 22px 18px 64px; } .api-docs__endpoint-head { align-items: flex-start; flex-direction: column; } .api-docs__pager { grid-template-columns: 1fr; } .api-docs__pager-btn--next { text-align: left; } }