*{
    box-sizing:border-box;
}

html,
body{
    margin:0;
    min-height:100%;
    font-family:
        "Microsoft YaHei",
        "Segoe UI",
        "PingFang SC",
        Arial,
        sans-serif;
    color:#1f2937;
}

body{
    background:
        radial-gradient(
            circle at 10% 10%,
            #e8f1ff 0,
            #f5f9ff 35%,
            #f8fbff 70%
        );
}

button,
input,
textarea,
select{
    font:inherit;
}

button{
    cursor:pointer;
}


/* =========================================================
   登录页面
========================================================= */

.login-page{
    min-height:100vh;

    display:grid;

    place-items:center;

    padding:20px;
}


.login-box{
    width:min(400px,92vw);

    background:#fff;

    border:1px solid #edf2f7;

    border-radius:22px;

    padding:34px 32px;

    box-shadow:
        0 15px 45px rgba(0,0,0,.07);
}


.login-box .logo{
    width:58px;
    height:58px;

    border-radius:16px;

    display:grid;
    place-items:center;

    margin:0 auto 16px;

    background:
        linear-gradient(
            135deg,
            #2563eb,
            #60a5fa
        );

    color:#fff;

    font-size:27px;

    box-shadow:
        0 8px 20px
        rgba(37,99,235,.21);
}


.login-box h1{
    margin:0 0 8px;

    text-align:center;

    font-size:25px;

    font-weight:700;

    color:#111827;
}


.login-sub{
    text-align:center;

    color:#7b8794;

    font-size:13px;

    margin-bottom:25px;
}


.field{
    margin-bottom:14px;
}


.field label{
    display:block;

    font-size:14px;

    font-weight:600;

    margin-bottom:7px;
}


.field input{
    width:100%;

    height:46px;

    padding:0 13px;

    border:1px solid #d8dee8;

    border-radius:10px;

    background:#fff;

    outline:0;

    transition:.2s;
}


.field input:focus{
    border-color:#2563eb;

    box-shadow:
        0 0 0 3px
        rgba(37,99,235,.08);
}


.login-btn{
    width:100%;

    height:46px;

    margin-top:6px;

    border:0;

    border-radius:10px;

    background:#2563eb;

    color:#fff;

    font-weight:600;

    transition:.2s;
}


.login-btn:hover{
    background:#1d4ed8;
}


.login-btn:disabled{
    opacity:.65;

    cursor:not-allowed;
}


.login-error{
    min-height:22px;

    margin-top:12px;

    color:#dc2626;

    text-align:center;

    font-size:13px;
}


.login-footer{
    margin-top:18px;

    color:#9ca3af;

    text-align:center;

    font-size:12px;
}


/* =========================================================
   主容器
========================================================= */

.wrap{
    width:94%;

    max-width:1400px;

    margin:28px auto 45px;
}


/* =========================================================
   卡片
========================================================= */

.card{
    background:
        rgba(255,255,255,.96);

    border:1px solid #e7edf5;

    border-radius:16px;

    box-shadow:
        0 8px 28px
        rgba(31,41,55,.07);

    margin-bottom:18px;
}


/* =========================================================
   顶部
========================================================= */

.header{
    padding:22px 26px;

    display:flex;

    align-items:center;

    justify-content:space-between;

    gap:20px;
}


.logo-area{
    display:flex;

    align-items:center;

    gap:15px;
}


.header .logo{
    width:48px;
    height:48px;

    border-radius:12px;

    display:flex;

    align-items:center;

    justify-content:center;

    background:
        linear-gradient(
            135deg,
            #2563eb,
            #3b82f6
        );

    color:#fff;

    font-size:25px;

    box-shadow:
        0 6px 16px
        rgba(37,99,235,.25);
}


.title h1{
    margin:0;

    font-size:24px;

    font-weight:700;

    color:#111827;
}


.title .sub{
    margin-top:5px;

    font-size:13px;

    color:#7b8794;
}


.header-right{
    display:flex;

    align-items:center;

    gap:10px;
}


.server-status{
    display:flex;

    align-items:center;

    gap:8px;

    padding:8px 13px;

    border-radius:20px;

    background:#f0fdf4;

    color:#15803d;

    font-size:13px;

    white-space:nowrap;
}


.server-dot{
    width:8px;
    height:8px;

    background:#22c55e;

    border-radius:50%;

    flex:none;
}


.logout{
    height:36px;

    padding:0 14px;

    border:1px solid #d8e0ea;

    border-radius:8px;

    background:#fff;

    color:#374151;

    font-size:13px;

    transition:.18s;
}


.logout:hover{
    background:#f8fafc;

    transform:translateY(-1px);
}


/* =========================================================
   查询区域
========================================================= */

.search-card{
    padding:24px 26px 22px;
}


.section-title{
    display:flex;

    align-items:center;

    justify-content:space-between;

    margin-bottom:14px;
}


.section-title h3{
    margin:0;

    font-size:17px;

    color:#111827;
}


.section-title span{
    font-size:12px;

    color:#9ca3af;
}


/* =========================================================
   输入框
========================================================= */

textarea{
    display:block;

    width:100%;

    height:190px;

    padding:16px 17px;

    border:1px solid #d9e1eb;

    border-radius:11px;

    background:#fbfdff;

    color:#1f2937;

    font-family:inherit;

    font-size:15px;

    line-height:1.65;

    outline:none;

    resize:vertical;

    transition:.2s;
}


textarea:focus{
    border-color:#60a5fa;

    background:#fff;

    box-shadow:
        0 0 0 3px
        rgba(59,130,246,.10);
}


textarea::placeholder{
    color:#a4adba;
}


/* =========================================================
   提示
========================================================= */

.tip{
    margin-top:9px;

    color:#8a94a3;

    font-size:12px;

    line-height:1.6;
}


/* =========================================================
   控制栏
========================================================= */

.toolbar{
    margin-top:16px;

    padding:13px 14px;

    border:1px solid #e7ecf3;

    border-radius:11px;

    background:#f8fafc;

    display:flex;

    align-items:center;

    justify-content:space-between;

    gap:15px;

    flex-wrap:wrap;
}


.options{
    display:flex;

    align-items:center;

    gap:22px;

    flex-wrap:wrap;
}


.checkbox{
    display:flex;

    align-items:center;

    gap:7px;

    cursor:pointer;

    font-size:14px;

    color:#374151;
}


.checkbox input{
    width:16px;

    height:16px;

    cursor:pointer;
}


.limit-box{
    display:flex;

    align-items:center;

    gap:7px;

    font-size:14px;

    color:#4b5563;
}


.limit{
    width:72px;

    height:32px;

    padding:4px 8px;

    border:1px solid #d6dee8;

    border-radius:7px;

    background:#fff;

    text-align:center;

    outline:none;
}


.limit:focus{
    border-color:#60a5fa;
}


/* =========================================================
   按钮
========================================================= */

.buttons{
    display:flex;

    gap:8px;

    flex-wrap:wrap;
}


.buttons button{
    height:36px;

    padding:0 17px;

    border:0;

    border-radius:8px;

    font-family:inherit;

    font-size:14px;

    cursor:pointer;

    transition:.18s;
}


.buttons button:hover{
    transform:translateY(-1px);
}


.buttons button:active{
    transform:translateY(0);
}


.buttons button:disabled{
    opacity:.6;

    cursor:not-allowed;

    transform:none;
}


.btn-primary{
    background:#2563eb;

    color:#fff;

    box-shadow:
        0 3px 8px
        rgba(37,99,235,.18);
}


.btn-primary:hover{
    background:#1d4ed8;
}


.btn-normal{
    background:#fff;

    border:1px solid #d8e0ea !important;

    color:#374151;
}


.btn-normal:hover{
    background:#f8fafc;
}


.btn-green{
    background:#16a34a;

    color:#fff;
}


.btn-green:hover{
    background:#15803d;
}


/* =========================================================
   状态
========================================================= */

.status-bar{
    min-height:24px;

    margin-top:12px;

    display:flex;

    align-items:center;

    gap:8px;

    font-size:13px;

    color:#6b7280;
}


.status-icon{
    width:7px;

    height:7px;

    border-radius:50%;

    background:#22c55e;

    flex:none;
}


/* =========================================================
   统计
========================================================= */

.stats{
    display:grid;

    grid-template-columns:
        repeat(3,1fr);

    gap:16px;

    margin-bottom:18px;
}


.stat{
    padding:19px 22px;

    background:#fff;

    border:1px solid #e7edf5;

    border-radius:15px;

    box-shadow:
        0 6px 22px
        rgba(31,41,55,.055);
}


.stat-label{
    font-size:13px;

    color:#7b8794;
}


.num{
    margin-top:5px;

    font-size:28px;

    line-height:1.2;

    font-weight:700;

    color:#111827;
}


/* =========================================================
   结果区域
========================================================= */

.result-card{
    overflow:hidden;

    margin-top:20px;
}


.result-head{
    padding:19px 24px;

    display:flex;

    align-items:center;

    justify-content:space-between;

    border-bottom:1px solid #edf1f5;
}


.result-head h3{
    margin:0;

    font-size:17px;
}


.result-info{
    color:#9ca3af;

    font-size:12px;
}


.scroll{
    width:100%;

    max-height:560px;

    overflow:auto;
}


/* =========================================================
   表格
========================================================= */

table{
    width:100%;

    border-collapse:collapse;

    min-width:850px;
}


th,
td{
    padding:12px 15px;

    border-bottom:1px solid #edf1f5;

    text-align:left;

    white-space:nowrap;

    font-size:13px;
}


th{
    position:sticky;

    top:0;

    z-index:2;

    background:#f7f9fc;

    color:#4b5563;

    font-weight:600;
}


tbody tr:hover{
    background:#f8fbff;
}


td{
    color:#374151;
}


.ok{
    color:#16a34a !important;

    font-weight:600;
}


.no{
    color:#dc2626 !important;

    font-weight:600;
}


/* =========================================================
   空状态
========================================================= */

.empty{
    min-height:240px;

    display:flex;

    align-items:center;

    justify-content:center;

    flex-direction:column;

    color:#a0a8b4;

    font-size:14px;

    gap:9px;
}


.empty-icon{
    font-size:32px;

    opacity:.55;
}


/* =========================================================
   滚动条
========================================================= */

::-webkit-scrollbar{
    width:8px;

    height:8px;
}


::-webkit-scrollbar-track{
    background:#f3f5f8;
}


::-webkit-scrollbar-thumb{
    background:#cbd5e1;

    border-radius:10px;
}


::-webkit-scrollbar-thumb:hover{
    background:#94a3b8;
}


/* =========================================================
   手机
========================================================= */

@media(max-width:800px){

    .wrap{
        width:96%;

        margin-top:15px;
    }


    .header{
        padding:18px;
    }


    .header-right{
        flex-direction:column;

        align-items:flex-end;
    }


    .server-status{
        display:none;
    }


    .title h1{
        font-size:20px;
    }


    .title .sub{
        font-size:12px;
    }


    .search-card{
        padding:18px;
    }


    textarea{
        height:170px;
    }


    .toolbar{
        align-items:stretch;

        flex-direction:column;
    }


    .options{
        width:100%;

        justify-content:flex-start;
    }


    .buttons{
        width:100%;
    }


    .buttons button{
        flex:1;

        min-width:80px;
    }


    .stats{
        grid-template-columns:1fr;

        gap:10px;
    }


    .stat{
        padding:15px 18px;
    }


    .result-head{
        padding:16px 18px;
    }


    .logout{
        display:block;
    }

}


@media(max-width:500px){

    .logo-area{
        gap:10px;
    }


    .header .logo{
        width:42px;

        height:42px;

        font-size:22px;
    }


    .title h1{
        font-size:18px;
    }


    .title .sub{
        display:none;
    }


    .header-right{
        gap:0;
    }


    .logout{
        padding:0 11px;

        font-size:12px;
    }


    .options{
        gap:14px;
    }


    .limit-box{
        width:auto;
    }

}
