:root {
    --bg: #08111f;
    --bg-soft: #0f1729;
    --panel: rgba(11, 20, 35, 0.82);
    --panel-solid: #101b31;
    --panel-strong: #15233f;
    --border: rgba(148, 163, 184, 0.18);
    --text: #e5eefc;
    --muted: #8fa3c7;
    --primary: #6ea8fe;
    --primary-strong: #4f7cff;
    --success: #34d399;
    --warning: #fbbf24;
    --danger: #fb7185;
    --info: #38bdf8;
    --shadow: 0 24px 80px rgba(3, 9, 21, 0.45);
    --radius-xl: 28px;
    --radius-lg: 20px;
    --radius-md: 14px;
    --radius-sm: 10px;
}

* {
    box-sizing: border-box;
}

html,
body {
    min-height: 100%;
}

body {
    margin: 0;
    font-family: Inter, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    color: var(--text);
    background:
        radial-gradient(circle at top left, rgba(79, 124, 255, 0.18), transparent 32%),
        radial-gradient(circle at right top, rgba(56, 189, 248, 0.12), transparent 28%),
        linear-gradient(180deg, #08111f 0%, #091523 100%);
}

.app-bg {
    position: fixed;
    inset: 0;
    pointer-events: none;
    background:
        radial-gradient(circle at 15% 10%, rgba(110, 168, 254, 0.18), transparent 24%),
        radial-gradient(circle at 85% 15%, rgba(52, 211, 153, 0.12), transparent 20%),
        radial-gradient(circle at 50% 90%, rgba(251, 113, 133, 0.08), transparent 28%);
}

.hidden {
    display: none !important;
}

.screen-center {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
}

.login-shell,
.page-shell {
    position: relative;
    z-index: 1;
}

.login-card {
    width: min(560px, 100%);
    display: grid;
    grid-template-columns: 1fr;
    background: rgba(8, 16, 30, 0.84);
    border: 1px solid var(--border);
    border-radius: var(--radius-xl);
    overflow: hidden;
    box-shadow: var(--shadow);
    backdrop-filter: blur(20px);
}

.login-hero,
.login-panel {
    padding: 26px 28px;
}

.login-hero {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    gap: 10px;
    background:
        linear-gradient(135deg, rgba(79, 124, 255, 0.18), rgba(11, 20, 35, 0.55)),
        linear-gradient(180deg, rgba(56, 189, 248, 0.12), transparent 60%);
    border-bottom: 1px solid rgba(148, 163, 184, 0.12);
}

.eyebrow,
.pill,
.badge,
.tag,
.mini-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border-radius: 999px;
    border: 1px solid transparent;
    white-space: nowrap;
}

.eyebrow {
    padding: 6px 10px;
    margin-bottom: 10px;
    background: rgba(110, 168, 254, 0.12);
    border-color: rgba(110, 168, 254, 0.22);
    color: #d3e2ff;
    font-size: 12px;
    letter-spacing: 0.04em;
}

.login-title,
.hero-title {
    margin: 0;
    font-weight: 700;
    line-height: 1.08;
}

.login-title {
    font-size: clamp(28px, 4vw, 36px);
}

.login-subtitle,
.hero-subtitle,
.muted {
    color: var(--muted);
}

.login-subtitle {
    margin: 0;
    max-width: 420px;
    font-size: 14px;
    line-height: 1.6;
}

.feature-list {
    display: grid;
    gap: 14px;
}

.feature-item {
    padding: 14px 16px;
    background: rgba(13, 24, 43, 0.48);
    border: 1px solid rgba(148, 163, 184, 0.12);
    border-radius: var(--radius-md);
    color: #d6e3fb;
    font-size: 14px;
}

.feature-item strong {
    display: block;
    margin-bottom: 4px;
}

.login-panel {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    gap: 16px;
}

.login-panel .btn {
    width: 100%;
}

.panel-title {
    margin: 0;
    font-size: 24px;
}

.panel-copy {
    margin: 0;
    color: var(--muted);
    font-size: 14px;
    line-height: 1.6;
}

.page-shell {
    max-width: 1380px;
    margin: 0 auto;
    padding: 28px 20px 40px;
}

.topbar,
.section-card,
.metric-card,
.chart-card,
.profile-card,
.activity-card,
.modal-card {
    background: var(--panel);
    border: 1px solid var(--border);
    box-shadow: var(--shadow);
    backdrop-filter: blur(18px);
}

.topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 24px 28px;
    border-radius: var(--radius-xl);
    margin-bottom: 22px;
}

.hero-subtitle {
    margin: 10px 0 0;
    max-width: 720px;
    font-size: 14px;
    line-height: 1.7;
}

.toolbar,
.button-row,
.chip-row,
.form-grid,
.stats-grid,
.grid-two,
.profiles-grid,
.activity-list,
.legend-list {
    display: grid;
}

.toolbar {
    grid-auto-flow: column;
    gap: 10px;
    align-items: center;
}

.section-card,
.chart-card,
.activity-card {
    border-radius: var(--radius-lg);
    padding: 22px;
}

.section-card {
    margin-bottom: 22px;
}

.notice {
    margin-bottom: 22px;
    padding: 16px 18px;
    border-radius: var(--radius-lg);
    background: rgba(56, 189, 248, 0.08);
    border: 1px solid rgba(56, 189, 248, 0.16);
    color: #d8e9ff;
    line-height: 1.7;
}

.stats-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 16px;
    margin-bottom: 22px;
}

.metric-card {
    border-radius: var(--radius-lg);
    padding: 18px;
}

.metric-label {
    color: var(--muted);
    font-size: 13px;
}

.metric-value {
    margin-top: 10px;
    font-size: 34px;
    font-weight: 700;
}

.metric-value.success { color: #c8ffe8; }
.metric-value.info { color: #bfeeff; }
.metric-value.primary { color: #dbe7ff; }
.metric-value.danger { color: #ffc4d1; }

.metric-foot {
    margin-top: 10px;
    color: var(--muted);
    font-size: 12px;
}

.grid-two {
    grid-template-columns: 1.3fr 0.9fr;
    gap: 20px;
    margin-bottom: 22px;
}

.chart-card {
    min-height: 320px;
}

.card-head,
.profile-head,
.profile-footer,
.modal-head,
.modal-actions,
.activity-item,
.split-line {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.card-head {
    margin-bottom: 18px;
}

.card-title {
    margin: 0;
    font-size: 18px;
}

.card-copy {
    margin: 6px 0 0;
    color: var(--muted);
    font-size: 13px;
}

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

.profiles-grid {
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 16px;
}

.profile-card {
    border-radius: var(--radius-lg);
    padding: 20px;
}

.profile-head {
    align-items: flex-start;
    margin-bottom: 16px;
}

.profile-name {
    margin: 0;
    font-size: 18px;
}

.profile-meta {
    margin-top: 6px;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.6;
}

.chip-row {
    grid-auto-flow: column;
    justify-content: start;
    gap: 8px;
    margin: 14px 0;
}

.badge,
.tag,
.mini-tag {
    padding: 7px 12px;
    font-size: 12px;
}

.badge.success,
.tag.success {
    background: rgba(52, 211, 153, 0.12);
    border-color: rgba(52, 211, 153, 0.18);
    color: #baf6dd;
}

.badge.warning,
.tag.warning {
    background: rgba(251, 191, 36, 0.1);
    border-color: rgba(251, 191, 36, 0.18);
    color: #fde7aa;
}

.badge.danger,
.tag.danger {
    background: rgba(251, 113, 133, 0.1);
    border-color: rgba(251, 113, 133, 0.18);
    color: #ffc4d1;
}

.badge.info,
.tag.info,
.mini-tag.info {
    background: rgba(56, 189, 248, 0.1);
    border-color: rgba(56, 189, 248, 0.18);
    color: #bfeeff;
}

.badge.primary,
.tag.primary,
.mini-tag.primary {
    background: rgba(110, 168, 254, 0.12);
    border-color: rgba(110, 168, 254, 0.2);
    color: #dae7ff;
}

.detail-list {
    display: grid;
    gap: 10px;
    margin: 16px 0 18px;
}

.detail-item {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    color: var(--muted);
    font-size: 13px;
}

.detail-item span:last-child {
    color: var(--text);
    text-align: right;
    word-break: break-all;
}

.profile-footer {
    flex-wrap: wrap;
}

.button-row {
    grid-auto-flow: column;
    justify-content: start;
    gap: 8px;
}

.btn {
    appearance: none;
    border: 1px solid transparent;
    border-radius: 12px;
    padding: 11px 16px;
    font-size: 14px;
    font-weight: 600;
    color: var(--text);
    background: rgba(148, 163, 184, 0.08);
    cursor: pointer;
    transition: transform 0.16s ease, background 0.16s ease, border-color 0.16s ease;
}

.btn:hover:not(:disabled) {
    transform: translateY(-1px);
}

.btn:disabled {
    cursor: wait;
    opacity: 0.72;
}

.btn.primary {
    background: linear-gradient(135deg, var(--primary), var(--primary-strong));
    color: white;
}

.btn.success { background: rgba(52, 211, 153, 0.16); border-color: rgba(52, 211, 153, 0.22); color: #c8ffe8; }
.btn.warning { background: rgba(251, 191, 36, 0.14); border-color: rgba(251, 191, 36, 0.2); color: #fde7aa; }
.btn.danger { background: rgba(251, 113, 133, 0.14); border-color: rgba(251, 113, 133, 0.2); color: #ffc4d1; }
.btn.ghost { background: rgba(148, 163, 184, 0.08); border-color: rgba(148, 163, 184, 0.18); }
.btn.small { padding: 9px 12px; font-size: 13px; }

.field {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.field label {
    color: var(--muted);
    font-size: 13px;
}

.field input,
.field textarea {
    width: 100%;
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 12px;
    background: rgba(8, 17, 31, 0.82);
    color: var(--text);
    padding: 12px 14px;
    font-size: 14px;
    outline: none;
}

.field input:focus,
.field textarea:focus {
    border-color: rgba(110, 168, 254, 0.48);
    box-shadow: 0 0 0 3px rgba(79, 124, 255, 0.12);
}

.field textarea {
    min-height: 170px;
    resize: vertical;
    line-height: 1.6;
}

.field-hint {
    color: var(--muted);
    font-size: 12px;
    line-height: 1.6;
}

.switch {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 13px 14px;
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 12px;
    background: rgba(8, 17, 31, 0.82);
}

.switch input {
    accent-color: var(--primary-strong);
}

.chart-wrap {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.activity-bars {
    display: grid;
    grid-template-columns: repeat(24, minmax(0, 1fr));
    gap: 8px;
    align-items: end;
    min-height: 220px;
}

.activity-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.activity-stack {
    height: 180px;
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: end;
    gap: 4px;
}

.activity-bar {
    border-radius: 999px;
    min-height: 4px;
}

.activity-bar.success { background: linear-gradient(180deg, #5eead4, #34d399); }
.activity-bar.error { background: linear-gradient(180deg, #fda4af, #fb7185); }

.axis-label {
    color: var(--muted);
    font-size: 11px;
}

.donut-wrap {
    display: grid;
    gap: 18px;
    justify-items: center;
}

.donut {
    width: 170px;
    height: 170px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: rgba(148, 163, 184, 0.08);
}

.donut::after {
    content: "";
    width: 106px;
    height: 106px;
    border-radius: 50%;
    background: rgba(8, 17, 31, 0.94);
    border: 1px solid rgba(148, 163, 184, 0.12);
}

.donut-center {
    position: absolute;
    text-align: center;
}

.donut-value {
    font-size: 32px;
    font-weight: 700;
}

.legend-list,
.activity-list {
    gap: 12px;
}

.legend-item,
.activity-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 14px;
    background: rgba(8, 17, 31, 0.7);
    border: 1px solid rgba(148, 163, 184, 0.12);
}

.top-profile-list {
    display: grid;
    gap: 12px;
}


.status-ranking-shell {
    display: grid;
    grid-template-columns: minmax(220px, 0.82fr) minmax(280px, 1.18fr);
    gap: 16px;
    align-items: start;
}

.status-panel,
.ranking-list,
.data-list {
    display: grid;
}

.status-panel {
    gap: 14px;
}

.compact-donut-wrap {
    justify-items: center;
    padding: 8px 0 4px;
}

.compact-donut {
    width: 156px;
    height: 156px;
}

.status-summary-list,
.ranking-list,
.data-list {
    gap: 0;
}

.status-row,
.ranking-row,
.data-row {
    padding: 12px 0;
    border-bottom: 1px solid rgba(148, 163, 184, 0.12);
}

.status-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
}

.status-row-label {
    color: var(--muted);
    font-size: 13px;
}

.status-row-value {
    font-size: 24px;
    font-weight: 700;
}

.status-row.success .status-row-value { color: #baf6dd; }
.status-row.warning .status-row-value { color: #fde7aa; }
.status-row.primary .status-row-value { color: #dae7ff; }
.status-row.danger .status-row-value { color: #ffc4d1; }

.ranking-row {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
}

.ranking-index {
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.6;
}

.ranking-body {
    min-width: 0;
}

.ranking-progress {
    margin: 10px 0 8px;
}

.ranking-meta {
    font-size: 12px;
}

.data-row:last-child,
.ranking-row:last-child,
.status-row:last-child {
    border-bottom: none;
}


.progress-line {
    width: 100%;
    height: 8px;
    border-radius: 999px;
    overflow: hidden;
    background: rgba(148, 163, 184, 0.12);
}

.progress-fill {
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--primary), #8b5cf6);
}

.modal-layer {
    position: fixed;
    inset: 0;
    z-index: 30;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(2, 6, 15, 0.72);
    backdrop-filter: blur(8px);
}

.modal-card {
    width: min(760px, 100%);
    border-radius: 24px;
    padding: 24px;
}

.modal-head {
    align-items: flex-start;
    margin-bottom: 18px;
}

.modal-actions {
    justify-content: flex-end;
    margin-top: 24px;
}

.toast-stack {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 40;
    display: grid;
    gap: 10px;
}

.toast {
    min-width: 280px;
    padding: 14px 16px;
    border-radius: 14px;
    border: 1px solid rgba(148, 163, 184, 0.16);
    box-shadow: var(--shadow);
    background: rgba(9, 16, 28, 0.92);
}

.toast.success { border-color: rgba(52, 211, 153, 0.3); }
.toast.error { border-color: rgba(251, 113, 133, 0.34); }

.empty-state {
    padding: 42px 18px;
    text-align: center;
    color: var(--muted);
}


.notice-inline {
    margin-top: 8px;
    color: var(--muted);
    font-size: 13px;
}

.button-row.wrap-row,
.button-row.compact-row {
    display: flex;
    flex-wrap: wrap;
}

.compact-row {
    gap: 6px;
}

.chart-inner-grid {
    grid-template-columns: 0.9fr 1.1fr;
    gap: 18px;
    margin-bottom: 0;
}

.stack-list {
    display: grid;
    gap: 0;
}

.stack-item {
    padding: 14px 0;
    border-radius: 0;
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba(148, 163, 184, 0.12);
}

.subtle-progress {
    margin: 10px 0 8px;
}

.danger-fill {
    background: linear-gradient(90deg, #fb7185, #f43f5e);
}

.activity-stack.is-empty {
    border-radius: 12px;
    background: rgba(148, 163, 184, 0.05);
    border: 1px dashed rgba(148, 163, 184, 0.12);
}

@media (max-width: 1080px) {
    .stats-grid,
    .config-grid,
    .form-grid,
    .grid-two,
    .login-card {
        grid-template-columns: 1fr;
    }

    .toolbar,
    .button-row,
    .chip-row {
        grid-auto-flow: row;
    }

    .status-ranking-shell {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 720px) {
    .page-shell {
        padding: 20px 14px 28px;
    }

    .topbar,
    .section-card,
    .chart-card,
    .activity-card,
    .metric-card,
    .profile-card,
    .modal-card,
    .login-hero,
    .login-panel {
        padding: 18px;
    }

    .stats-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .activity-bars {
        gap: 5px;
    }

    .activity-stack {
        height: 150px;
    }
}

.status-summary-item:nth-last-child(-n + 2),
.ranking-card:last-child,
.stack-item:last-child {
    border-bottom: none;
}
