/* 后台布局（AntDesign.Pro 风格） */
.adm-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 16px;
    background: #fff;
    box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
    position: sticky;
    top: 0;
    z-index: 9;
}

    .adm-header .adm-header-right {
        display: flex;
        align-items: center;
        gap: 10px;
    }

    .adm-header .adm-user {
        font-weight: 600;
        color: #1f2d3d;
    }

.adm-content {
    padding: 24px;
}

.logo {
    height: 56px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 800;
    letter-spacing: .5px;
    background: #001529;
    overflow: hidden;
    white-space: nowrap;
}

/* 页头 */
.page-head {
    margin-bottom: 16px;
}

.page-title {
    font-size: 20px;
    font-weight: 700;
    margin: 0;
}

.page-sub {
    color: #8c9bab;
    margin: 4px 0 0;
    font-size: 13px;
}

/* 统计卡片 */
.stat-card .stat-label {
    color: #8c9bab;
    font-size: 13px;
}

.stat-card .stat-value {
    font-size: 26px;
    font-weight: 800;
    margin-top: 6px;
}

.stat-card .stat-trend {
    font-size: 12px;
    margin-top: 4px;
}

.stat-card .stat-trend.up {
    color: #22B886;
}

.stat-card .stat-trend.down {
    color: #F5485F;
}

/* 统计卡片：图标 + 副标题（Dashboard 复用） */
.stat-card .stat-head {
    display: flex;
    align-items: center;
}

.stat-card .stat-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
    margin-right: 12px;
}

.stat-card .stat-icon .anticon {
    font-size: 22px;
}

.stat-card .stat-main {
    min-width: 0;
}

.stat-card .stat-sub {
    color: #8c9bab;
    font-size: 12px;
    margin-top: 4px;
}

/* 弹窗内空态提示（如一键填充报价） */
.fill-empty {
    padding: 28px 0;
    text-align: center;
    color: #bfbfbf;
    font-size: 13px;
}

.fill-summary {
    color: #8c8c8c;
    font-size: 12px;
}

/* 图表占位 */
.ph {
    height: 220px;
    display: grid;
    place-items: center;
    color: #b6c2cf;
    background: #fafbfc;
    border: 1px dashed #e6ebf2;
    border-radius: 8px;
}

/* 页面操作工具栏（替代 PageHeader 的 Extra 子内容） */
.adm-page-extra {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    margin: 0 0 16px;
}

/* 登录页（高端大气） */
.user-layout {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 24px;
    overflow: hidden;
    background:
        radial-gradient(120% 120% at 0% 0%, #2b5cff 0%, transparent 55%),
        radial-gradient(120% 120% at 100% 0%, #0ea5a4 0%, transparent 50%),
        radial-gradient(140% 140% at 50% 120%, #1e3a8a 0%, transparent 60%),
        linear-gradient(135deg, #1e3a8a 0%, #2b5cff 50%, #0f766e 100%);
    background-size: 200% 200%, 200% 200%, 200% 200%, 200% 200%;
    animation: loginBgShift 18s ease infinite;
}

@keyframes loginBgShift {
    0%   { background-position: 0% 0%, 100% 0%, 50% 100%, 0% 50%; }
    50%  { background-position: 100% 50%, 0% 50%, 50% 0%, 100% 50%; }
    100% { background-position: 0% 0%, 100% 0%, 50% 100%, 0% 50%; }
}

/* 漂浮光团，增强层次与高端感 */
.user-layout::before,
.user-layout::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    filter: blur(70px);
    opacity: .55;
    pointer-events: none;
    z-index: 0;
}

.user-layout::before {
    width: 460px;
    height: 460px;
    left: -120px;
    top: -120px;
    background: radial-gradient(circle at 30% 30%, #5b8bff, transparent 70%);
    animation: loginFloatA 14s ease-in-out infinite;
}

.user-layout::after {
    width: 520px;
    height: 520px;
    right: -160px;
    bottom: -180px;
    background: radial-gradient(circle at 70% 70%, #14b8a6, transparent 70%);
    animation: loginFloatB 17s ease-in-out infinite;
}

@keyframes loginFloatA {
    0%, 100% { transform: translate(0, 0) scale(1); }
    50%      { transform: translate(60px, 40px) scale(1.08); }
}

@keyframes loginFloatB {
    0%, 100% { transform: translate(0, 0) scale(1); }
    50%      { transform: translate(-50px, -30px) scale(1.1); }
}

/* 内容浮于光团与网格之上 */
.user-layout > * {
    position: relative;
}

.user-layout .login-grid {
    z-index: 1;
}

.user-layout .user-layout-content,
.user-layout > footer {
    z-index: 2;
}

@media (prefers-reduced-motion: reduce) {
    .user-layout,
    .user-layout::before,
    .user-layout::after {
        animation: none;
    }
}

/* 首页配置 - 分区标题（左侧蓝条） */
.sec-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 18px 0 12px;
    font-size: 15px;
    font-weight: 600;
    color: #1f2d3d;
}

    .sec-bar::before {
        content: "";
        width: 4px;
        height: 16px;
        border-radius: 2px;
        background: #2b5cff;
    }

/* 首页配置 - 指标区 */
.hero-metrics {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 16px;
    background: #fafbfc;
    border: 1px solid #eef2f7;
    border-radius: 10px;
}

.metric-item {
    background: #fff;
    border: 1px solid #eef2f7;
    border-radius: 8px;
    padding: 12px 14px;
}

.metric-title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: #1f2d3d;
    margin-bottom: 10px;
}

.metric-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #2b5cff;
    color: #fff;
    font-size: 12px;
    font-weight: 700;
}

/* 首页配置 - 指标实时预览 */
.hero-metric-preview {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-top: 14px;
}

    .hero-metric-preview .stat-card {
        background: linear-gradient(135deg, #2b5cff 0%, #0ea5a4 100%);
        color: #fff;
        border-radius: 10px;
        padding: 16px 18px;
        box-shadow: 0 6px 18px rgba(43, 92, 255, .18);
    }

    .hero-metric-preview .stat-card .stat-label {
        color: rgba(255, 255, 255, .82);
    }

@media (max-width: 640px) {
    .hero-metric-preview {
        grid-template-columns: 1fr;
    }
}

/* 全屏 SVG 网格纹理 */
.login-grid {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='42' height='42'%3E%3Cpath d='M42 0H0V42' fill='none' stroke='%23ffffff' stroke-opacity='0.08' stroke-width='1'/%3E%3C/svg%3E");
    background-size: 42px 42px;
    -webkit-mask-image: radial-gradient(circle at 50% 40%, #000 35%, transparent 82%);
    mask-image: radial-gradient(circle at 50% 40%, #000 35%, transparent 82%);
}

/* 左右分栏布局（左品牌介绍 / 右登录卡） */
.login-split {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 60px;
    width: min(1000px, 92vw);
}

.login-aside {
    flex: 1 1 0;
    max-width: 480px;
    color: #fff;
}

.login-aside-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 30px;
}

.login-aside-logo {
    height: 44px;
}

.login-aside-title {
    font-size: 26px;
    font-weight: 800;
    letter-spacing: .5px;
}

.login-aside-headline {
    font-size: 34px;
    font-weight: 800;
    line-height: 1.28;
    margin: 0 0 16px;
}

.login-aside-headline .accent {
    color: #7dd3fc;
}

.login-aside-desc {
    font-size: 15px;
    line-height: 1.8;
    opacity: .82;
    margin: 0 0 30px;
}

.login-aside-feats {
    list-style: none;
    padding: 0;
    margin: 0 0 36px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.login-aside-feats li {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    opacity: .92;
}

.login-aside-feats svg {
    flex: 0 0 auto;
}

.login-aside-foot {
    font-size: 12px;
    opacity: .7;
    letter-spacing: .4px;
}

.login-panel {
    flex: 0 0 auto;
}

@media (max-width: 820px) {
    .login-split {
        flex-direction: column;
        gap: 28px;
    }

    .login-aside {
        max-width: 100%;
        text-align: center;
    }

    .login-aside-brand {
        justify-content: center;
    }

    .login-aside-feats li {
        justify-content: center;
    }

    .login-aside-headline {
        font-size: 26px;
    }

    .login-aside-desc br {
        display: none;
    }
}

.login-card {
    width: 380px;
    max-width: 92vw;
    padding: 36px 32px 26px;
    border-radius: 18px;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, .6);
    box-shadow: 0 24px 70px rgba(8, 22, 54, .35);
}

.login-card-head {
    text-align: center;
    margin-bottom: 22px;
}

.login-logo {
    height: 50px;
    margin-bottom: 12px;
}

.login-title {
    font-size: 22px;
    font-weight: 800;
    color: #1f2d3d;
    margin: 0;
}

.login-sub {
    margin: 6px 0 0;
    color: #8c9bab;
    font-size: 13px;
}

.login-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 2px 0 18px;
}

.login-forgot {
    color: #2b5cff;
    font-size: 13px;
    cursor: pointer;
}

.login-forgot:hover {
    text-decoration: underline;
}

.login-tip {
    margin-top: 16px;
    text-align: center;
    font-size: 12px;
    color: #b6c2cf;
}

.login-card .ant-input-affix-wrapper {
    padding-top: 7px;
    padding-bottom: 7px;
}

.login-card .ant-input,
.login-card .ant-input-affix-wrapper {
    font-size: 15px;
}

.login-foot {
    color: rgba(255, 255, 255, .8);
    font-size: 12px;
    letter-spacing: .4px;
}
