.appointmentPage { min-height: 100vh; background: #F4F4F4; display: flex; flex-direction: column; } .navbarWrap { position: relative; width: 100%; height: 60px; } .contentArea { flex: 1; width: 1400px; max-width: calc(100% - 80px); margin: 0 auto; padding: 16px 0 32px; } /* ===== Breadcrumb ===== */ .breadcrumb { padding: 12px 0; font-size: 14px; color: #999; } .breadcrumbItem { color: #999; cursor: pointer; &:hover { color: #666; } } .breadcrumbActive { color: #333; font-weight: 500; cursor: pointer; } .breadcrumbSep { margin: 0 8px; color: #ccc; } /* ===== Card ===== */ .card { width: 100%; min-height: 662px; background: #FFFFFF; border-radius: 16px; padding: 24px 32px; :global { .ant-input-affix-wrapper:hover, .ant-input:hover { border-color: #00A196; } .ant-input-affix-wrapper-focused, .ant-input:focus, .ant-input-affix-wrapper:focus { border-color: #00A196 !important; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1) !important; } .ant-input { caret-color: #00A196; } .ant-select:hover .ant-select-selector { border-color: #00A196 !important; } .ant-select-focused .ant-select-selector { border-color: #00A196 !important; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1) !important; } .ant-picker:hover { border-color: #00A196; } .ant-picker-focused { border-color: #00A196 !important; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1) !important; } /* Pagination styles */ .ant-pagination { .ant-pagination-item-active { background: #00A196 !important; border-color: #00A196 !important; a { color: #fff !important; } } .ant-pagination-item:hover:not(.ant-pagination-item-active) { background: #F2F7FF !important; border-color: #00A196; a { color: #00A196; } } .ant-pagination-prev:hover .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link { background: #F2F7FF !important; color: #00A196; border-color: #00A196; } .ant-pagination-options { .ant-select-selector { &:hover { border-color: #00A196 !important; } } .ant-select-focused .ant-select-selector { border-color: #00A196 !important; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1) !important; } } .ant-pagination-options-quick-jumper input:hover { border-color: #00A196; } .ant-pagination-options-quick-jumper input:focus { border-color: #00A196; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1); } } } } /* ===== Empty State ===== */ .emptyState { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 600px; width: 100%; } .emptyIcon { width: 120px; height: 120px; margin-bottom: 16px; display: flex; align-items: center; justify-content: center; font-size: 64px; color: #c0c0c0; } .emptyText { font-size: 14px; color: #999; font-weight: 500; } /* ===== Card Header ===== */ .cardHeader { display: flex; align-items: center; gap: 8px; margin-bottom: 20px; } .titleBar { width: 4px; height: 26px; background: #00A196; border-radius: 2px; } .cardTitle { font-family: HuXiaoBo-NanShen, HuXiaoBo-NanShen; font-weight: 400; font-size: 26px; color: #00A196; line-height: 1; text-align: left; font-style: normal; text-transform: none; margin: 0; } /* ===== Filter Row ===== */ .filterRow { display: flex; align-items: center; gap: 24px; margin-bottom: 16px; flex-wrap: wrap; } .filterItem { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; } .filterLabel { font-size: 14px; color: #333; white-space: nowrap; } .filterInput { flex: 1; min-width: 0; height: 32px; caret-color: #00A196; &:hover { border-color: #00A196 !important; } } .filterDatePicker { width: 200px; height: 32px; } .filterSelect { flex: 1 !important; min-width: 0 !important; height: 32px; } .filterBtns { display: flex; align-items: center; gap: 12px; } .searchBtn { min-width: 80px; height: 32px; background: #00A196 !important; border-color: #00A196 !important; border-radius: 4px; color: #fff !important; &:hover, &:focus, &:active { background: #009185 !important; border-color: #009185 !important; color: #fff !important; } } .resetBtn { min-width: 80px; height: 32px; border-radius: 4px; background: #E1E7EF !important; border-color: #E1E7EF !important; color: #333 !important; &:hover, &:focus, &:active { background: #d1d9e3 !important; border-color: #d1d9e3 !important; color: #333 !important; } } /* ===== Tabs ===== */ .tableTabs { border-bottom: 1px solid #e8e8e8; margin-bottom: 4px; :global { .ant-tabs-nav { margin-bottom: 0; } .ant-tabs-tab { font-size: 14px; color: #666; padding: 8px 0; &:hover { color: #00A196; } } .ant-tabs-tab-active .ant-tabs-tab-btn { color: #00A196 !important; font-weight: 500; } .ant-tabs-ink-bar { background: #00A196; } } } /* ===== Table ===== */ .dataTable { :global { .ant-table { border-radius: 0 !important; } .ant-table-container { border-radius: 0 !important; border-left: 1px solid #E1E7EF; border-top: 1px solid #E1E7EF; } .ant-table-thead > tr > th { height: 46px; background: #F1F5F9 !important; border-right: 1px solid #E1E7EF !important; border-bottom: 1px solid #E1E7EF !important; border-radius: 0 !important; font-weight: 500; color: #333; font-size: 14px; } .ant-table-tbody > tr > td { font-size: 14px; color: #333; border-right: 1px solid #E1E7EF; border-bottom: 1px solid #E1E7EF; } .ant-table-tbody > tr:hover > td { background: rgba(0, 161, 150, 0.05) !important; } .ant-table-cell { border-radius: 0 !important; } .ant-pagination { margin-top: 16px; } } } /* ===== Action Links ===== */ .actionLink { color: #00A196; font-size: 14px; cursor: pointer; &:hover { color: #009185; } } .actionDivider { margin: 0 8px; color: #ddd; } .actionDisabled { color: #999; font-size: 14px; cursor: not-allowed; } .actionBookLink { color: #00A196; font-size: 14px; cursor: pointer; padding: 4px 12px; border-radius: 2px; transition: all 0.2s; &:hover { color: #009185; } } /* ===== Status Tag (arrow shape) ===== */ .statusTag { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; padding: 2px 10px 2px 8px; border-radius: 2px; position: relative; clip-path: polygon(8px 0, 100% 0, 100% 100%, 8px 100%, 0 50%); padding-left: 16px; } .statusTagOngoing { background: #F0F9FF; color: #00A196; } .statusTagEnded { background: #C8D6E5; color: #999; } .statusTagNotStarted { background: #FEFCE7; color: #FA8C16; } .statusDot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; } /* ===== Booking Modal ===== */ .bookModal { :global { .ant-modal-header { text-align: center; border-bottom: 1px solid #f0f0f0; padding: 16px 24px; } .ant-modal-title { font-size: 16px; font-weight: 600; color: #333; } .ant-modal-close { color: #999; } .ant-modal-body { padding: 24px 32px; } .ant-input:hover, .ant-input-affix-wrapper:hover { border-color: #00A196; } .ant-input:focus, .ant-input-affix-wrapper-focused { border-color: #00A196 !important; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1) !important; } .ant-input { caret-color: #00A196; } .ant-select:hover .ant-select-selector { border-color: #00A196 !important; } .ant-select-focused .ant-select-selector { border-color: #00A196 !important; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1) !important; } .ant-picker:hover { border-color: #00A196; } .ant-picker-focused { border-color: #00A196 !important; box-shadow: 0 0 0 2px rgba(0, 161, 150, 0.1) !important; } } } .bookModalBody { display: flex; flex-direction: column; gap: 0; } .bookDesc { background: #F1F5F9; border-radius: 8px; padding: 16px 20px; margin-bottom: 24px; } .bookDescTitle { font-size: 15px; font-weight: 600; color: #2A3F54; margin-bottom: 8px; } .bookDescContent { font-size: 14px; color: #555; line-height: 1.6; } .bookField { margin-bottom: 20px; } .bookFieldLabel { font-size: 14px; color: #333; font-weight: 500; margin-bottom: 8px; } .bookFieldSelect { width: 100% !important; height: 40px; } .bookFieldDate { width: 100%; height: 40px; } .bookFieldInput { height: 40px; caret-color: #00A196; } .bookFooter { display: flex; justify-content: center; gap: 16px; margin-top: 8px; padding-top: 16px; } .bookConfirmBtn { min-width: 100px; height: 36px; background: #00A196 !important; border-color: #00A196 !important; border-radius: 4px; color: #fff !important; font-size: 14px; &:hover, &:focus, &:active { background: #009185 !important; border-color: #009185 !important; color: #fff !important; } } .bookCancelBtn { min-width: 100px; height: 36px; border-radius: 4px; border-color: #d9d9d9 !important; color: #333 !important; font-size: 14px; &:hover, &:focus, &:active { border-color: #bbb !important; color: #333 !important; background: #fafafa !important; } } /* ===== Select Dropdown (portal, must be standalone class) ===== */ .filterDropdown { :global { .ant-select-item-option { color: #333; font-size: 14px; } .ant-select-item-option-selected:not(.ant-select-item-option-disabled) { color: #00A196 !important; font-weight: 500; background: #fff !important; } .ant-select-item-option-active:not(.ant-select-item-option-disabled):not(.ant-select-item-option-selected) { background: #f5f5f5 !important; color: #333; } .ant-select-item-option-active.ant-select-item-option-selected { background: #f5f5f5 !important; color: #00A196 !important; } .ant-select-item-option-disabled { color: #c0c8d4 !important; cursor: not-allowed; } } } /* ===== Tablet ===== */ @media screen and (max-width: 1440px) { .contentArea { width: auto; max-width: calc(100% - 60px); } } /* ===== Mobile ===== */ @media screen and (max-width: 768px) { .navbarWrap { height: 52px; } .contentArea { width: auto; max-width: calc(100% - 24px); padding: 8px 0 20px; overflow-x: hidden; } .breadcrumb { padding: 8px 0; font-size: 13px; } .card { padding: 12px; min-height: auto; border-radius: 12px; max-width: 100%; overflow-x: hidden; box-sizing: border-box; } .cardHeader { margin-bottom: 12px; } .titleBar { height: 16px; } .cardTitle { font-size: 20px; } .filterRow { flex-direction: column; align-items: stretch; gap: 10px; } .filterItem { width: 100%; } .filterLabel { min-width: 60px; font-size: 13px; } .filterInput { flex: 1; width: auto !important; min-width: 0; } .filterDatePicker { flex: 1; width: auto !important; min-width: 0; } .filterBtns { justify-content: flex-end; margin-left: 0; } .dataTable { max-width: 100%; overflow: hidden; :global { .ant-table-wrapper { width: 100%; overflow: hidden; } .ant-table-container { overflow-x: auto; -webkit-overflow-scrolling: touch; } } } .actionLink { font-size: 13px; } .actionDivider { margin: 0 4px; } }