810 lines
19 KiB
CSS

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);
}