:root{
    --bg:#fbfcfe;
    --paper:#ffffff;
    --panel:#ffffff;
    --panel2:#fafcff;
    --line:#d9e2ec;
    --line2:#edf2f7;
    --text:#111827;
    --muted:#687386;
    --green:#15803d;
    --blue:#1d4ed8;
    --red:#b91c1c;
    --amber:#92400e;
    --shadow:0 6px 18px rgba(25,40,65,.06)
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
    margin:0;
    background:#fbfcfe;
    color:var(--text);
    font-family:Arial,Helvetica,sans-serif;
    font-size:14px;
}
a{color:#1d4ed8;text-decoration:none}
code{background:#f6f8fb;border:1px solid var(--line);padding:1px 5px;border-radius:6px}
.muted{color:var(--muted)}
.mono{font-family:Consolas,Menlo,monospace}
.nowrap{white-space:nowrap}

.topbar{
    position:sticky;
    top:0;
    z-index:20;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    padding:14px 22px;
    background:#ffffff;
    border-bottom:1px solid var(--line);
    box-shadow:0 2px 10px rgba(25,40,65,.04);
}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{
    width:40px;height:40px;border-radius:14px;
    background:linear-gradient(135deg,#e7f0ff,#dff8ed);
    border:1px solid #cbdff5;
}
.brand-title{font-size:20px;font-weight:900;color:#111827}
.brand-sub{font-size:12px;color:var(--muted);margin-top:2px}

.main-nav{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.main-nav a{
    padding:9px 12px;
    border:1px solid var(--line);
    border-radius:999px;
    background:#ffffff;
    color:#1f2937;
    font-weight:800;
    font-size:13px;
}
.main-nav a.active{
    background:#eaf2ff;
    border-color:#b9d3ff;
    color:#0f3f91;
}
.main-nav a.logout{
    border-color:#f3c7c7;
    background:#fffafa;
    color:#991b1b;
}

.layout{max-width:1500px;margin:0 auto;padding:20px;background-color: #444;}
.hero{
    border:1px solid var(--line);
    background:#f3f7fb;
    border-radius:18px;
    padding:22px;
    margin-bottom:18px;
    box-shadow:var(--shadow);
}
.hero h1{margin:0 0 8px;font-size:28px;color:#111827}
.hero p{margin:0;color:var(--muted);line-height:1.5}

.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;margin-bottom:16px}
.span3{grid-column:span 3}.span4{grid-column:span 4}.span6{grid-column:span 6}.span12{grid-column:span 12}

.card{
    background:#f8fafc;
    border:1px solid var(--line);
    border-radius:18px;
    box-shadow:var(--shadow);
    margin-bottom:16px;
    overflow:visible;
}
.card-head{
    padding:15px 17px;
    border-bottom:1px solid #d7e1ec;
    display:flex;
    justify-content:space-between;
    gap:12px;
    align-items:center;
    background:#bbddff;
    border-radius:18px 18px 0 0;
}
.card-head h2{margin:0;font-size:18px;color:#111827}
.card-head small{color:var(--muted)}
.card-body{padding:16px 17px;background:#ffffff;border-radius:0 0 18px 18px}

.kpi{
    grid-column:span 3;
    display:block;
    background:#f4f7fb;
    border:1px solid var(--line);
    border-radius:18px;
    padding:17px 18px;
    min-height:62px;
    box-shadow:var(--shadow);
    white-space:nowrap;
    text-align:center;
    font-size:20px;
    line-height:1.35;
    font-weight:500;
    color:#334155;
}
.kpi .kpi-label{font-weight:500;color:#334155}
.kpi strong{display:inline;font-size:21px;line-height:1.35;font-weight:900;color:#111827}

.notice{padding:12px 14px;border-radius:14px;margin-bottom:16px;border:1px solid}
.notice.ok{background:#f0fdf4;border-color:#bbf7d0;color:#14532d}
.notice.err{background:#fff5f5;border-color:#fecaca;color:#991b1b}

.btn,button{
    border:1px solid var(--line);
    background:#ffffff;
    color:#1f2937;
    padding:9px 12px;
    border-radius:12px;
    font-weight:800;
    cursor:pointer;
    margin: 10px 0;
}
.btn:hover,button:hover{border-color:#b9d3ff;background:#f4f8ff}
.btn.primary,button.primary{background:#eaf2ff;border-color:#b9d3ff;color:#0f3f91}
.btn.danger,button.danger{border-color:#fecaca;background:#fff5f5;color:#991b1b}
.btn.small{padding:5px 8px;font-size:12px;border-radius:9px}
.button-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

input,select,textarea{
    background:#ffffff;
    color:#111827;
    border:1px solid var(--line);
    border-radius:10px;
    padding:8px 10px;
    outline:none;
    min-height:38px;
}
label{display:flex;flex-direction:column;gap:6px;color:#4b5563;font-size:12px;font-weight:800}
.check{flex-direction:row;align-items:center;color:#111827;margin-top:18px}
.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}
.wide-form{grid-template-columns:repeat(6,minmax(0,1fr))}
.wide-form label:nth-child(5){grid-column:span 2}

.table-wrap{
    border:1px solid var(--line);
    border-radius:14px;
    background:#fff;
    overflow:visible;
}
table{
    width:100%;
    border-collapse:separate;
    border-spacing:0;
    font-size:13px;
    min-width:760px;
}
th,td{padding:9px 10px;border-bottom:1px solid #edf2f7;vertical-align:top}
th{
    background:#e9f0f7;
    color:#111827;
    text-align:left;
    user-select:none;
    cursor:pointer;
    resize:horizontal;
    overflow:visible;
    font-weight:900;
}
td{background:#ffffff;color:#111827}
tr:nth-child(even) td{background:#fbfcfe;color:#111827}
tr:hover td{background:#f4f8ff;color:#111827}

.badge{display:inline-flex;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:900;border:1px solid}
.badge.ok{background:#f0fdf4;border-color:#bbf7d0;color:#14532d}
.badge.err{background:#fff5f5;border-color:#fecaca;color:#991b1b}
.badge.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}

pre{
    white-space:pre-wrap;
    background:#ffffff;
    border:1px solid var(--line);
    border-radius:14px;
    padding:14px;
    color:#111827;
    overflow:visible;
    max-height:none;
}
.report-box{
    background:#f8fafc;
    border:1px solid var(--line);
    border-radius:14px;
    padding:14px;
}
.report-title{font-size:17px;font-weight:900;margin:0 0 10px;color:#111827}
.report-status{display:inline-block;border-radius:999px;padding:4px 10px;font-weight:900;font-size:12px;margin-bottom:10px}
.report-status.ok{background:#f0fdf4;color:#14532d;border:1px solid #bbf7d0}
.report-status.err{background:#fff5f5;color:#991b1b;border:1px solid #fecaca}
.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0}
.report-item{border:1px solid #dfe7f0;border-radius:12px;background:#ffffff;padding:10px}
.report-item b{display:block;font-size:18px;color:#111827}.report-item span{font-size:12px;color:#687386}
.report-list{margin:10px 0 0;padding-left:20px}
.report-list li{margin:4px 0}
.raw-json{margin-top:12px}
.raw-json summary{cursor:pointer;color:#4b5563;font-weight:800}

.inline{display:inline}.empty{border:1px dashed var(--line);border-radius:14px;padding:18px;color:var(--muted);background:#fbfcfe}
.login-page{min-height:100vh;display:grid;place-items:center;background:#fbfcfe}
.login-card{width:min(440px,92vw);background:#ffffff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:0 20px 50px rgba(25,40,65,.08)}
.login-card h1{margin:12px 0 6px}.login-card p{color:var(--muted);margin:0 0 18px}.login-card label{margin-top:12px}
.login-card button{width:100%;margin-top:18px;background:#eaf2ff;color:#0f3f91;border:1px solid #b9d3ff}
hr{border:0;border-top:1px solid var(--line2);margin:16px 0}
@media(max-width:980px){
    .topbar{align-items:flex-start;flex-direction:column}
    .span3,.span4,.span6,.kpi{grid-column:span 12}
    .form-grid,.wide-form{grid-template-columns:1fr}
    .main-nav{justify-content:flex-start}
    .report-grid{grid-template-columns:1fr}
}

.top-kpi-row{
    display:flex;
    flex-wrap:nowrap;
    gap:16px;
    margin-bottom:16px;
    width:100%;
    overflow-x:auto;
}
.top-kpi-row .kpi{
    grid-column:auto !important;
    flex:1 1 0;
    min-width:150px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    min-height:58px;
    padding:14px 12px;
    font-size:19px;
    line-height:1.2;
    font-weight:500;
}
.top-kpi-row .kpi .kpi-label{
    font-weight:400;
    color:#334155;
}
.top-kpi-row .kpi strong{
    display:inline;
    font-size:20px;
    line-height:1.2;
}

.token-status{
    display:inline-block;
    font-weight:900;
    letter-spacing:.4px;
    padding:2px 8px;
    border-radius:999px;
}
.token-status-var{
    color:#14532d;
    background:#f0fdf4;
    border:1px solid #bbf7d0;
}
.token-status-yok{
    color:#991b1b;
    background:#fff5f5;
    border:1px solid #fecaca;
}

.token-button-row{
    margin-top:12px;
}
.token-button-row .btn{
    width:100%;
}
.summary-card-row .summary-card{
    min-height:190px;
}
.summary-card .card-head{
    min-height:54px;
}
.summary-card .card-head h2{
    font-size:17px;
}
.summary-card .card-body p{
    margin:0 0 9px;
    line-height:1.35;
}
.empty-summary{
    min-height:120px;
    display:flex;
    align-items:center;
    justify-content:center;
    color:var(--muted);
}
@media(max-width:980px){
    .top-kpi-row{flex-wrap:nowrap}
    .top-kpi-row .kpi{grid-column:auto !important}
}
