:root{--brand:#4f46e5;--brand-dark:#1e1b4b;--bg:#f5f7fb;--line:#eceef4;--muted:#8a8fa3}
body{background:var(--bg);font-family:'Segoe UI',system-ui,-apple-system,Roboto,sans-serif;color:#1c1f33;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
.app-nav{background:linear-gradient(90deg,#1e1b4b,#312e81);box-shadow:0 2px 10px rgba(30,27,75,.25)}
.app-nav .navbar-brand{font-weight:700;letter-spacing:.2px}
.app-nav .nav-link{color:#c7c9ee;font-weight:500;border-radius:8px;padding:.45rem .9rem;margin-left:.15rem}
.app-nav .nav-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.app-nav .nav-link.active{color:#fff;background:rgba(255,255,255,.16)}
.app-footer{background:#fff;border-top:1px solid var(--line);color:var(--muted);font-size:.85rem}
.page-title{font-size:1.9rem;font-weight:800;margin:0}
.card-soft{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 1px 3px rgba(20,20,60,.04)}
.filter-label{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
.btn-apply{background:#22c55e;border-color:#22c55e;color:#fff;font-weight:600}
.btn-apply:hover{background:#16a34a;border-color:#16a34a;color:#fff}
.btn-excel{background:#6366f1;border-color:#6366f1;color:#fff;font-weight:600}
.btn-excel:hover{background:#4f46e5;color:#fff}
.stat{padding:1rem 1.15rem}
.stat .k{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
.stat .v{font-size:1.55rem;font-weight:800}
.pivot-wrap{max-height:72vh;overflow:auto;border-radius:16px}
table.pivot{border-collapse:separate;border-spacing:0;width:100%;font-size:.92rem;white-space:nowrap;background:#fff}
table.pivot thead th{position:sticky;top:0;z-index:3;background:#fff;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:#3b3f57;font-weight:700;padding:.95rem .8rem;border-bottom:1px solid var(--line);text-align:center}
table.pivot thead th:first-child{text-align:left;left:0;z-index:5;min-width:420px}
table.pivot td{padding:.75rem .8rem;border-bottom:1px solid #f1f2f7;text-align:center;vertical-align:middle}
table.pivot td.name-cell{text-align:left;position:sticky;left:0;z-index:2;background:inherit;min-width:420px;border-right:1px solid var(--line)}
table.pivot tbody tr{background:#fff}
table.pivot tbody tr:nth-child(even){background:#fafbfe}
table.pivot tbody tr:hover{background:#eef2ff}
tr.lvl-0 .name{font-weight:700}
tr.lvl-1 .name{font-weight:600}
tr.lvl-2 .name{color:#3b3f57}
tr.lvl-3 .name{color:#6b7090;font-size:.88rem}
.toggle-btn{width:24px;height:24px;border:1px solid #d5d8e6;background:#fff;border-radius:6px;line-height:1;font-weight:700;margin-right:.6rem;padding:0;cursor:pointer}
.toggle-btn:hover{background:#eef2ff}
.toggle-spacer{display:inline-block;width:24px;margin-right:.6rem}
.pill{display:inline-block;padding:.18rem .65rem;border-radius:999px;font-weight:700;font-size:.8rem}
.pill.good{background:#dcfce7;color:#166534}
.pill.bad{background:#fee2e2;color:#991b1b}
td.num{font-variant-numeric:tabular-nums}
table.pivot tfoot td{position:sticky;bottom:0;background:#1e1b4b;color:#fff;font-weight:700;padding:.85rem .8rem;text-align:center}
table.pivot tfoot td:first-child{text-align:left;left:0;z-index:4}
.upload-card{height:100%}
.upload-icon{width:46px;height:46px;border-radius:12px;background:#eef2ff;color:var(--brand);display:flex;align-items:center;justify-content:center;font-size:1.4rem}
.step-badge{width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}
