html { background: var(--sycm-bg-page); font-size: 12px; } body { position: relative; isolation: isolate; min-width: 320px; min-height: 100vh; margin: 0; background: transparent; color: var(--sycm-text-primary); font-family: var(--sycm-font-family); font-size: var(--sycm-font-size-caption); line-height: var(--sycm-line-height-normal); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } body::before, body::after { position: fixed; pointer-events: none; content: ''; } body::before { inset: 0; z-index: -2; background: var(--sycm-bg-page-image) top center / 100% auto no-repeat; } body::after { inset: 0; z-index: -1; background: var(--sycm-bg-page-overlay); } * { box-sizing: border-box; } #root { position: relative; z-index: 0; min-height: 100vh; } .app-shell-loading { display: flex; min-height: 100vh; background: var(--sycm-bg-page-surface); color: var(--sycm-text-primary); font-family: var(--sycm-font-family); } .auth-page-loading { display: flex; min-height: 100vh; align-items: center; justify-content: flex-end; padding: 112px clamp(112px, 9.2vw, 176px) 58px clamp(64px, 6vw, 112px); background: linear-gradient(90deg, rgba(232, 248, 255, 0.04), rgba(236, 249, 255, 0.22)), url('/login-hero-blue.jpg') left center / cover no-repeat, var(--sycm-bg-page); box-sizing: border-box; } .auth-page-loading__card { display: grid; width: min(405px, calc(100vw - 40px)); min-height: 520px; align-content: start; gap: var(--sycm-space-md); padding: var(--sycm-space-xl) var(--sycm-module-padding); border: var(--sycm-line-width-base) solid var(--sycm-border-card); border-radius: var(--sycm-radius-xl); background: var(--sycm-bg-container); box-shadow: var(--sycm-shadow-modal); box-sizing: border-box; } .auth-page-loading__title { width: 140px; height: 22px; margin-bottom: 18px; } .auth-page-loading__input { height: 40px; border-radius: var(--sycm-radius-md); } .auth-page-loading__button { height: 40px; margin-top: 8px; border-radius: var(--sycm-radius-md); } .auth-page-loading__meta { width: 82%; height: 14px; } .app-shell-loading__sidebar { position: sticky; top: 0; display: flex; width: var(--sycm-sidebar-width); height: 100vh; flex: 0 0 var(--sycm-sidebar-width); flex-direction: column; gap: var(--sycm-space-sm); padding: var(--sycm-space-md) var(--sycm-space-xs) var(--sycm-space-sm); border-right: 1px solid var(--sycm-sidebar-border); background: var(--sycm-sidebar-bg); box-shadow: var(--sycm-shadow-card); } .app-shell-loading__brand, .app-shell-loading__nav-item, .app-shell-loading__user { display: flex; align-items: center; gap: 10px; } .app-shell-loading__brand { min-height: 52px; padding: 0 10px; } .app-shell-loading__brand-text { width: 152px; } .app-shell-loading__nav { display: flex; min-height: 0; flex: 1; flex-direction: column; gap: 8px; padding-top: 4px; } .app-shell-loading__nav-item { height: 36px; padding: 0 10px; } .app-shell-loading__nav-item .app-loading-line { width: 74%; } .app-shell-loading__nav-item:nth-child(3n) .app-loading-line { width: 56%; } .app-shell-loading__nav-item:nth-child(4n) .app-loading-line { width: 68%; } .app-shell-loading__user { min-height: var(--sycm-control-height); border-top: 1px solid var(--sycm-border-light); padding: var(--sycm-space-sm) 8px 0; } .app-shell-loading__user .app-loading-line { width: 118px; } .app-shell-loading__content { min-width: 0; height: 100vh; flex: 1; overflow: hidden; background: var(--sycm-bg-page-surface); } .app-page-loading { min-height: 100%; padding: var(--sycm-page-padding-y) var(--sycm-page-padding-x); background: transparent; } .app-page-loading__panel { display: grid; gap: var(--sycm-space-md); width: 100%; min-height: 360px; border: 1px solid var(--sycm-border-card); border-radius: var(--sycm-radius-xl); padding: var(--sycm-space-lg); background: rgba(255, 255, 255, 0.92); box-shadow: var(--sycm-shadow-card); } .app-page-loading__title { width: 180px; height: 24px; } .app-page-loading__toolbar { width: min(520px, 62%); height: var(--sycm-control-height); } .app-page-loading__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sycm-space-md); } .app-page-loading__card { display: grid; gap: var(--sycm-space-sm); min-height: 126px; border: 1px solid var(--sycm-border-light); border-radius: var(--sycm-radius-lg); padding: var(--sycm-space-md); background: var(--sycm-bg-container); } .app-page-loading__card-title { width: 46%; height: 16px; } .app-page-loading__card-value { width: 62%; height: 28px; } .app-page-loading__card-meta { width: 74%; height: 14px; } .app-loading-line, .app-loading-dot { position: relative; overflow: hidden; background: linear-gradient(90deg, #eef1f5 0%, #f7f8fb 44%, #eef1f5 100%); } .app-loading-line { height: 16px; border-radius: var(--sycm-radius-pill); } .app-loading-dot { width: 24px; height: 24px; flex: 0 0 24px; border-radius: var(--sycm-radius-md); } .app-loading-dot.is-small { width: 17px; height: 17px; flex-basis: 17px; } .app-loading-line::after, .app-loading-dot::after { position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.72), transparent); content: ""; transform: translateX(-100%); animation: app-loading-shimmer 1.4s ease-in-out infinite; } @keyframes app-loading-shimmer { 100% { transform: translateX(100%); } } @media (max-width: 900px) { .app-shell-loading__sidebar { width: var(--sycm-sidebar-collapsed-width); flex-basis: var(--sycm-sidebar-collapsed-width); align-items: center; } .app-shell-loading__brand-text, .app-shell-loading__nav-item .app-loading-line, .app-shell-loading__user .app-loading-line { display: none; } .app-page-loading__grid { grid-template-columns: 1fr; } } a { color: var(--sycm-color-primary-link); text-decoration: none; transition: color 0.2s ease; } a:hover { color: var(--sycm-color-primary-hover); } ::selection { color: var(--sycm-text-inverse); background: var(--sycm-color-primary); } ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #d3d5da; border: 2px solid transparent; border-radius: var(--sycm-radius-pill); background-clip: content-box; } ::-webkit-scrollbar-thumb:hover { background-color: #b8bec8; } .ant-app, .ant-layout, .ant-layout-content, .ant-pro-layout-bg-list { background: var(--sycm-bg-page-surface) !important; color: var(--sycm-text-primary); font-family: var(--sycm-font-family); } .planning-subsystem-content .ant-pro-page-container-children-container { padding: var(--sycm-page-padding-y) var(--sycm-page-padding-x) !important; } @media (max-width: 767px) { .planning-subsystem-content .ant-pro-page-container-children-container { padding: var(--sycm-space-lg) var(--sycm-space-md) !important; } } .ant-typography, .ant-btn, .ant-input, .ant-input-affix-wrapper, .ant-select, .ant-picker, .ant-table, .ant-form, .ant-modal, .ant-dropdown, .ant-segmented, .ant-tag, .ant-tabs { font-family: var(--sycm-font-family); } .ant-typography { color: var(--sycm-text-primary); } .ant-btn { height: var(--sycm-control-height); border-radius: var(--sycm-radius-md); font-size: var(--sycm-font-size-body); font-weight: var(--sycm-font-weight-medium); box-shadow: none; transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; } .ant-btn-sm { font-size: var(--sycm-font-size-caption); } .ant-btn-primary { background: var(--sycm-color-primary); border-color: var(--sycm-color-primary); color: var(--sycm-text-inverse); } .ant-btn-primary:not(:disabled):not(.ant-btn-disabled):hover, .ant-btn-primary:not(:disabled):not(.ant-btn-disabled):focus { background: var(--sycm-color-primary-hover); border-color: var(--sycm-color-primary-hover); color: var(--sycm-text-inverse); } .ant-btn-default:not(:disabled):not(.ant-btn-disabled):hover, .ant-btn-default:not(:disabled):not(.ant-btn-disabled):focus, .ant-btn-text:not(:disabled):not(.ant-btn-disabled):hover, .ant-btn-text:not(:disabled):not(.ant-btn-disabled):focus { color: var(--sycm-color-primary); border-color: var(--sycm-color-primary-border); background: var(--sycm-bg-control-hover); } .ant-btn-link { color: var(--sycm-color-primary-link); font-weight: var(--sycm-font-weight-medium); } .ant-btn-lg { height: var(--sycm-action-height); border-radius: var(--sycm-action-radius); padding-inline: 18px; font-size: var(--sycm-font-size-body); } .ant-input, .ant-input-number, .ant-input-affix-wrapper, .ant-picker, .ant-select-single .ant-select-selector, .ant-select-multiple .ant-select-selector, .ant-cascader-picker, .ant-mentions, .ant-input-search .ant-input { min-height: var(--sycm-control-height); border-color: var(--sycm-border-base) !important; border-radius: var(--sycm-radius-sm) !important; background: var(--sycm-bg-control) !important; color: var(--sycm-text-primary); font-size: var(--sycm-font-size-caption); box-shadow: none !important; } .ant-input:not(textarea), .ant-input-number, .ant-input-affix-wrapper, .ant-picker, .ant-select-single, .ant-select-single .ant-select-selector, .ant-cascader-picker, .ant-input-search .ant-input { height: var(--sycm-control-height); } .ant-input-affix-wrapper > input.ant-input { height: auto !important; min-height: 0 !important; } .ant-input-sm:not(textarea), .ant-input-number-sm, .ant-input-affix-wrapper-sm, .ant-picker-small, .ant-select-sm.ant-select-single, .ant-select-sm.ant-select-single .ant-select-selector { height: var(--sycm-control-height-sm) !important; min-height: var(--sycm-control-height-sm) !important; } .ant-input-lg, .ant-input-number-lg, .ant-input-affix-wrapper-lg, .ant-picker-large, .ant-select-lg.ant-select-single, .ant-select-lg.ant-select-single .ant-select-selector { height: var(--sycm-control-height-lg) !important; min-height: var(--sycm-action-height) !important; border-radius: var(--sycm-radius-sm) !important; } .ant-input:hover, .ant-input-number:hover, .ant-input-affix-wrapper:hover, .ant-picker:hover, .ant-select:not(.ant-select-disabled):hover .ant-select-selector { border-color: #0d0c0c !important; } .ant-input:focus, .ant-input-focused, .ant-input-number-focused, .ant-input-affix-wrapper-focused, .ant-picker-focused, .ant-select-focused .ant-select-selector { border-color: #4987f2 !important; box-shadow: 0 0 0 2px rgba(32, 98, 230, 0.2) !important; } .ant-form-item-label > label { color: var(--sycm-text-secondary); font-size: var(--sycm-font-size-caption); font-weight: var(--sycm-font-weight-medium); } .ant-form-item-explain, .ant-form-item-extra { font-size: var(--sycm-font-size-caption); } .ant-card, .ant-pro-card, .ant-modal-content, .ant-drawer-content, .ant-popover-inner, .ant-dropdown-menu { border-radius: var(--sycm-radius-xl); } .ant-card, .ant-pro-card { box-shadow: var(--sycm-shadow-card); } .ant-modal-content, .ant-drawer-content { box-shadow: var(--sycm-shadow-modal); } .ant-popover-inner, .ant-dropdown-menu { box-shadow: var(--sycm-shadow-popover); } .ant-card, .ant-pro-card { border: var(--sycm-line-width-base) solid var(--sycm-border-card); border-radius: var(--sycm-radius-xl); background: var(--sycm-bg-container); transition: box-shadow 0.15s ease-in-out; } .ant-card:hover, .ant-pro-card:hover { box-shadow: var(--sycm-shadow-hover); } .ant-card-head, .ant-pro-card-header { min-height: 44px; border-bottom-color: var(--sycm-border-light); color: var(--sycm-text-strong); } .ant-card-head-title, .ant-pro-card-title { color: var(--sycm-text-strong); font-size: var(--sycm-font-size-title); font-weight: var(--sycm-font-weight-semibold); } .ant-table-wrapper .ant-table, .ant-table-wrapper .ant-table-container { border-radius: var(--sycm-radius-lg); } .ant-table-wrapper .ant-table-container { border: var(--sycm-line-width-base) solid var(--sycm-border-light); overflow: hidden; } .ant-table-wrapper .ant-table-content, .ant-table-wrapper .ant-table-body { overflow-x: scroll !important; scrollbar-color: var(--sycm-text-placeholder) var(--sycm-bg-subtle); scrollbar-width: auto; } .ant-table-wrapper .ant-table-content::-webkit-scrollbar, .ant-table-wrapper .ant-table-body::-webkit-scrollbar { height: 10px; } .ant-table-wrapper .ant-table-content::-webkit-scrollbar-track, .ant-table-wrapper .ant-table-body::-webkit-scrollbar-track { background: var(--sycm-bg-subtle); } .ant-table-wrapper .ant-table-content::-webkit-scrollbar-thumb, .ant-table-wrapper .ant-table-body::-webkit-scrollbar-thumb { min-width: 56px; border: 2px solid var(--sycm-bg-subtle); border-radius: var(--sycm-radius-pill); background: var(--sycm-text-placeholder); } .ant-table-wrapper .ant-table-content::-webkit-scrollbar-thumb:hover, .ant-table-wrapper .ant-table-body::-webkit-scrollbar-thumb:hover { background: var(--sycm-text-tertiary); } .ant-table-wrapper .ant-table-thead > tr > th, .ant-table-wrapper .ant-table-thead > tr > td { padding: var(--sycm-table-header-padding-y) var(--sycm-table-header-padding-x) !important; background: var(--sycm-bg-table-head) !important; border-bottom: var(--sycm-line-width-base) solid var(--sycm-border-light) !important; color: var(--sycm-text-secondary) !important; font-size: var(--sycm-font-size-caption) !important; font-weight: var(--sycm-font-weight-medium) !important; line-height: var(--sycm-line-height-tight); white-space: nowrap !important; } .ant-table-wrapper .ant-table-tbody > tr > td { padding: var(--sycm-table-cell-padding-y) var(--sycm-table-cell-padding-x) !important; border-bottom: var(--sycm-line-width-base) solid var(--sycm-border-light) !important; color: var(--sycm-text-primary) !important; font-size: var(--sycm-font-size-caption) !important; line-height: var(--sycm-line-height-normal); } .ant-table-wrapper .ant-table-tbody > tr > td.ant-table-cell-row-hover { background: var(--sycm-bg-table-hover) !important; } .ant-checkbox .ant-checkbox-inner { width: 14px; height: 14px; border-radius: var(--sycm-radius-xs); border-color: var(--sycm-border-base); } .ant-checkbox-checked .ant-checkbox-inner { background: var(--sycm-color-primary) !important; border-color: var(--sycm-color-primary) !important; box-shadow: var(--sycm-shadow-card); } .ant-checkbox-checked .ant-checkbox-inner::after { inset-inline-start: 50%; top: 50%; box-sizing: border-box; width: 4px; height: 7px; border-width: 0 2px 2px 0; transform: translate(-50%, -50%) rotate(45deg); transform-origin: center; } .ant-table-wrapper .ant-table-tbody > tr:hover > td, .ant-table-wrapper .ant-table-tbody > tr.ant-table-row:hover > td { background: var(--sycm-bg-table-hover) !important; } .ant-table-wrapper .ant-table-tbody > tr:last-child > td { border-bottom: 0 !important; } .ant-table-column-sorters { gap: var(--sycm-space-xs); } .ant-pro-table-list-toolbar { padding-block: var(--sycm-space-md) var(--sycm-space-sm) !important; } .ant-pro-table-list-toolbar-title { color: var(--sycm-text-strong); font-size: var(--sycm-font-size-title); font-weight: var(--sycm-font-weight-semibold); } .ant-pagination { margin-top: var(--sycm-space-md) !important; font-size: var(--sycm-font-size-caption); } .ant-pagination .ant-pagination-item, .ant-pagination .ant-pagination-prev, .ant-pagination .ant-pagination-next { min-width: 28px; height: 28px; border-radius: var(--sycm-radius-md); line-height: 26px; } .ant-pagination .ant-pagination-item-active { border-color: var(--sycm-color-primary); background: var(--sycm-color-primary); } .ant-pagination .ant-pagination-item-active a { color: var(--sycm-text-inverse); } .ant-tag { margin-inline-end: var(--sycm-space-xxs); border-radius: var(--sycm-radius-xs); font-size: var(--sycm-font-size-caption); line-height: 18px; } .ant-tabs .ant-tabs-nav { margin-bottom: var(--sycm-space-md) !important; } .ant-tabs .ant-tabs-tab { padding: 8px 0; color: var(--sycm-text-strong); font-size: var(--sycm-font-size-body); font-weight: var(--sycm-font-weight-regular); } .ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn { color: var(--sycm-color-primary); font-weight: var(--sycm-font-weight-medium); } .ant-tabs .ant-tabs-ink-bar { height: var(--sycm-line-width-strong); background: var(--sycm-color-primary); } .ant-segmented { padding: 2px; border: var(--sycm-line-width-base) solid var(--sycm-border-base); border-radius: var(--sycm-radius-md); background: var(--sycm-bg-subtle); } .ant-segmented .ant-segmented-item { border-radius: var(--sycm-radius-sm); color: var(--sycm-text-secondary); font-size: var(--sycm-font-size-caption); } .ant-segmented .ant-segmented-item-selected { color: var(--sycm-color-primary); font-weight: var(--sycm-font-weight-medium); background: var(--sycm-bg-container); box-shadow: var(--sycm-shadow-card); } .ant-tooltip-inner, .ant-popover-inner { font-size: var(--sycm-font-size-caption); } .ant-tooltip .ant-tooltip-inner { border-radius: var(--sycm-radius-lg); background: var(--sycm-chart-tooltip-bg); color: var(--sycm-text-inverse); box-shadow: none; } .ant-tooltip .ant-tooltip-arrow::before { background: var(--sycm-chart-tooltip-bg); } .sycm-page { width: 100%; max-width: var(--sycm-page-max-width); min-width: 0; min-height: 100%; margin: 0 auto; padding: var(--sycm-page-padding-y) var(--sycm-page-padding-x); color: var(--sycm-text-primary); } .sycm-card { border: var(--sycm-line-width-base) solid var(--sycm-border-card); border-radius: var(--sycm-radius-xl); background: var(--sycm-bg-container); box-shadow: var(--sycm-shadow-card); transition: box-shadow 0.15s ease-in-out; } .sycm-card:hover { box-shadow: var(--sycm-shadow-hover); } .sycm-section-header { display: flex; align-items: center; justify-content: space-between; gap: var(--sycm-space-md); margin-bottom: var(--sycm-space-sm); } .sycm-section-header__title { margin: 0; color: var(--sycm-text-strong); font-size: var(--sycm-font-size-title); font-weight: var(--sycm-font-weight-semibold); line-height: var(--sycm-line-height-tight); } .sycm-section-header__desc { margin: var(--sycm-space-xxs) 0 0; color: var(--sycm-text-tertiary); font-size: var(--sycm-font-size-caption); line-height: var(--sycm-line-height-normal); } .sycm-toolbar { min-height: 44px; border-bottom: var(--sycm-line-width-base) solid var(--sycm-border-light); padding: 0 var(--sycm-space-md); }