#nprogress .bar {
    background: var(--td-brand-color-7) !important;
}

.color-warning {
    color: var(--td-warning-color);
}

.color-success {
    color: var(--td-success-color);
}

.color-error {
    color: var(--td-error-color);
}

.color-disabled {
    color: var(--td-text-color-disabled);
}

.grid-cols-auto-1 {
    grid-template-columns: auto minmax(0, 1fr);
}

.grid-rows-auto-1fr {
    grid-template-rows: auto minmax(0, 1fr);
}

.page-container {
    display: grid;
    grid-template-rows: minmax(0, 1fr);
    height: 100%;
    overflow: hidden;
    background-color: var(--td-bg-color-page);
}

.page-container > * {
    min-width: 0;
    min-height: 0;
}

.card {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    height: 100%;
    min-height: 0;
    overflow: hidden;
}

.card-body {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    overflow: hidden;
}

.card > .t-loading__parent {
    min-height: 0;
    overflow: hidden;
}

.card > .t-loading__parent > .t-card__body {
    height: 100%;
    min-height: 0;
    overflow: hidden;
}

.table-container {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.table-container > .t-table {
    display: flex;
    flex-direction: column;
    max-height: 100%;
    min-height: 0;
}

.pagination-wrapper {
    display: flex;
    flex-shrink: 0;
    justify-content: flex-end;
}

.dialog-form :where(.t-form__item) {
    margin-bottom: 16px;
}

.form-grid-2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 16px;
}

.form-hint {
    color: var(--td-text-color-placeholder);
    font-size: 12px;
}

.stat-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 100px;
}

.stat-value {
    font-size: 24px;
    font-weight: 600;
}

.stat-label {
    color: var(--td-text-color-secondary);
    font-size: 13px;
}

.section-card {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    height: 100%;
    min-height: 0;
}

.section-card > .t-loading__parent {
    min-height: 0;
    overflow: hidden;
}

.section-card > .t-loading__parent > .t-card__body {
    min-height: 0;
    overflow: auto;
}

.section-title {
    border-bottom: 2px solid var(--td-brand-color-7);
    color: var(--td-text-color-primary);
    font-size: 15px;
    font-weight: 600;
}

.section-title:has(> .t-button),
.section-title:has(> span) {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

/* ===== Split Panel (三栏布局) ===== */
.split-panel {
    display: grid;
    height: 100%;
    min-height: 0;
    overflow: hidden;
}

.split-panel-side {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    border: 1px solid var(--td-component-border);
    border-radius: var(--td-radius-default);
    background-color: var(--td-bg-color-container);
}

.split-panel-main {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    border: 1px solid var(--td-component-border);
    border-radius: var(--td-radius-default);
    background-color: var(--td-bg-color-container);
}

.split-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-shrink: 0;
    padding: 12px 16px;
    border-bottom: 1px solid var(--td-component-border);
}

.split-panel-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--td-text-color-primary);
}

.split-panel-content {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 12px;
}

.split-panel-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--td-text-color-placeholder);
    font-size: 14px;
}

.table-scroll-scope {
    padding: 0;
}

.table-scroll-scope > .t-table {
    height: 100%;
}

.table-column-layout {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1;
    overflow: hidden;
}

/* ===== 统计概览卡片 ===== */
.stats-overview {
    grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
    gap: 6px;
}

.stats-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    background: var(--td-bg-color-page);
    border: 1px solid var(--td-component-border);
    border-radius: 4px;
}

.stats-value {
    font-size: 14px;
    font-weight: 600;
    color: var(--td-brand-color);
}

.stats-value.text-primary {
    color: var(--td-brand-color);
}

.stats-value.text-success {
    color: var(--td-success-color);
}

.stats-value.text-danger {
    color: var(--td-error-color);
}

.stats-value.text-warning {
    color: var(--td-warning-color);
}

.stats-label {
    font-size: 12px;
    color: var(--td-text-color-secondary);
}

/* 地图标记点图标：字符串注入地图组件，须作为全局样式 */
.location-marker {
    width: 24px;
    height: 24px;
    position: relative;
    cursor: pointer;
}

.location-marker::before {
    content: "";
    position: absolute;
    width: 24px;
    height: 24px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230052d9'%3E%3Cpath d='M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z'/%3E%3C/svg%3E")
        no-repeat center center;
}
