:root {
  font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;
  color:#17283f;
  background:#f4f7fb;
  font-size:14px;
  font-synthesis:none
}
* {
  box-sizing:border-box
}
body {
  margin:0
}
[hidden] {
  display:none!important
}
button,input,select {
  font:inherit
}
button {
  border:1px solid #dce3ee;
  background:#fff;
  color:#273d5b;
  padding:9px 17px;
  border-radius:6px;
  cursor:pointer;
  white-space:nowrap
}
button:hover:not(:disabled) {
  border-color:#2864ed;
  color:#2864ed
}
button:disabled {
  opacity:.48;
  cursor:default
}
button.primary {
  background:#2864ed;
  border-color:#2864ed;
  color:#fff
}
button.primary:hover:not(:disabled) {
  background:#1954db
}
button.quiet {
  border:0;
  background:none;
  padding:5px 8px
}
input,select {
  width:100%;
  border:1px solid #dce3ee;
  background:#fff;
  border-radius:6px;
  padding:10px 12px;
  min-height:40px;
  color:#263a56
}
input::placeholder {
  color:#8a99ae
}
input:focus,select:focus {
  outline:2px solid #aac7ff;
  outline-offset:1px
}
button:focus-visible {
  outline:2px solid #6b9eff;
  outline-offset:3px
}
h1,h2,h3,p {
  margin-top:0
}
h1 {
  font-size:27px;
  letter-spacing:-.5px;
  margin-bottom:8px
}
h2 {
  font-size:17px;
  margin:0
}
.muted {
  color:#8290a4
}
.shell {
  display:flex;
  min-height:100vh
}
.sidebar {
  width:220px;
  flex:none;
  background:#101c30;
  color:#e2eaf5;
  display:flex;
  flex-direction:column
}
.brand,.login-brand {
  display:flex;
  align-items:center;
  gap:14px;
  font-size:23px;
  font-weight:700;
  letter-spacing:1px
}
.brand {
  padding:24px 20px 26px;
  border-bottom:1px solid #243148
}
.brand small,.login-brand small {
  display:block;
  font-size:11px;
  color:#96a9c3;
  letter-spacing:1px;
  margin-top:6px;
  font-weight:400
}
.brand-mark {
  display:block;
  width:27px;
  height:27px;
  border:5px solid #2864ed;
  border-radius:4px;
  position:relative;
  flex:none
}
.brand-mark:after {
  content:"";
  position:absolute;
  left:9px;
  top:9px;
  width:18px;
  height:18px;
  border:4px solid #1ca7b9;
  border-radius:3px
}
.sidebar nav {
  padding:12px 10px
}
.nav-group {
  font-size:12px;
  color:#8fa7c6;
  padding:15px 12px 8px
}
.sidebar nav button {
  display:flex;
  align-items:center;
  gap:12px;
  width:100%;
  text-align:left;
  border:0;
  background:transparent;
  color:#dce6f5;
  border-radius:6px;
  margin:2px 0;
  padding:12px 14px
}
.sidebar nav button span {
  font-size:20px;
  width:21px;
  text-align:center;
  line-height:18px
}
.sidebar nav button small {
  font-size:10px;
  margin-left:auto
}
.sidebar nav button.active {
  background:#2864ed;
  color:#fff;
  opacity:1
}
.sidebar nav button:disabled {
  opacity:.62
}
.sidebar-footer {
  margin-top:auto;
  border-top:1px solid #2b3850;
  padding:18px 24px;
  font-size:12px;
  line-height:1.9
}
.sidebar-footer span {
  color:#8fa3bf;
  font-size:11px
}
.main-area {
  min-width:0;
  flex:1
}
.topbar {
  min-height:65px;
  background:#fff;
  border-bottom:1px solid #e4ebf4;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:14px 26px;
  flex-wrap:wrap
}
.breadcrumb {
  font-size:13px;
  color:#7283a0
}
.breadcrumb span {
  padding:0 13px;
  color:#a6b3c6
}
.breadcrumb strong {
  color:#273c5a;
  font-weight:500
}
.account-tools {
  display:flex;
  align-items:center;
  gap:14px;
  font-size:12px;
  flex-wrap:wrap
}
.scope-badge {
  background:#eaf1ff;
  color:#2864ed;
  border-radius:5px;
  padding:7px 10px
}
main {
  padding:27px 26px 20px;
  max-width:1900px;
  margin:auto
}
.page-heading {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:15px;
  margin-bottom:23px
}
.page-heading p {
  color:#71819a;
  margin-bottom:0;
  line-height:1.7
}
.panel {
  background:#fff;
  border:1px solid #e8edf5;
  border-radius:9px
}
.filters {
  padding:22px;
  display:grid;
  grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) 130px auto;
  gap:22px;
  align-items:end
}
.filters label {
  display:grid;
  gap:10px;
  font-size:13px;
  color:#40516b
}
.filter-actions {
  display:flex;
  gap:10px
}
.scope-note {
  display:flex;
  align-items:flex-start;
  gap:10px;
  border-radius:6px;
  background:#edf4ff;
  padding:12px 15px;
  font-size:12px;
  color:#47638b;
  line-height:1.8;
  margin:18px 0
}
.scope-note p {
  margin:0
}
.inventory {
  margin-top:18px;
  overflow:hidden
}
.table-toolbar {
  padding:20px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:15px;
  flex-wrap:wrap
}
.table-toolbar h2 span {
  font-size:12px;
  font-weight:400;
  color:#2864ed;
  margin-left:7px
}
.table-toolbar .muted {
  font-size:11px
}
.table-wrap {
  overflow-x:auto;
  padding:0 14px
}
table {
  width:100%;
  border-collapse:collapse;
  white-space:nowrap
}
th {
  text-align:left;
  font-weight:500;
  background:#f4f7fc;
  color:#627491;
  font-size:12px;
  padding:14px 12px;
  border-bottom:1px solid #e5ebf5
}
td {
  border-bottom:1px solid #edf1f7;
  padding:17px 12px;
  font-size:12px
}
tbody tr:hover {
  background:#f8faff
}
td:first-child {
  font-family:Consolas,monospace;
  color:#2864ed
}
.subline {
  display:block;
  font-size:11px;
  color:#8190a5;
  margin-top:6px;
  font-family:inherit
}
.tag {
  display:inline-block;
  border-radius:4px;
  padding:4px 7px;
  font-size:11px;
  white-space:nowrap
}
.tag.good {
  background:#e6f7ef;
  color:#118756
}
.tag.warn {
  background:#fff3dd;
  color:#b87810
}
.tag.bad {
  background:#feebec;
  color:#c64b55
}
.tag.unknown {
  background:#f0f3f8;
  color:#7b89a0
}
.row-link {
  border:0;
  background:none;
  padding:4px 0;
  color:#2864ed
}
.pagination {
  padding:18px 21px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:15px;
  font-size:12px;
  color:#71839e;
  flex-wrap:wrap
}
.pagination>div {
  display:flex;
  gap:16px;
  align-items:center
}
.pagination button {
  padding:7px 12px;
  font-size:12px
}
.footnote {
  font-size:11px;
  color:#8a98ac;
  line-height:1.9;
  margin:18px 0
}
.empty-state {
  text-align:center;
  padding:70px 25px;
  color:#7a8ca7
}
.empty-state h3 {
  color:#3d5474;
  font-size:17px;
  margin-bottom:12px
}
.empty-state p {
  line-height:1.8;
  font-size:13px
}
.empty-icon {
  font-size:45px;
  color:#a5bedf;
  margin-bottom:20px
}
.error {
  color:#ae394b;
  background:#fff3f4;
  padding:13px 16px;
  line-height:1.8;
  font-size:13px;
  margin:18px 0;
  overflow-wrap:anywhere
}
.login-view {
  min-height:100vh;
  background:radial-gradient(ellipse at 20% 10%,#e2edff,transparent 50%),#f4f7fb;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:35px 20px
}
.login-brand {
  margin-bottom:32px;
  color:#183252
}
.login-brand small {
  color:#788ba6
}
.login-card {
  max-width:430px;
  width:100%;
  background:#fff;
  padding:35px;
  border:1px solid #e1e9f5;
  border-radius:14px;
  box-shadow:0 20px 60px #243b6010
}
.eyebrow {
  color:#7790b6;
  font-size:10px;
  letter-spacing:1.7px;
  font-weight:600
}
.login-card h1 {
  font-size:24px;
  margin:14px 0
}
.login-card>p {
  color:#7b8da7;
  line-height:1.8;
  font-size:13px
}
.login-card label {
  display:block;
  font-size:13px;
  margin:23px 0 10px
}
.login-card button {
  width:100%;
  margin-top:25px;
  min-height:43px
}
.login-note {
  color:#95a0b3;
  font-size:11px;
  line-height:1.9;
  margin-top:23px
}
.login-footer {
  font-size:11px;
  color:#9aa8bc;
  margin:25px 0 0
}
dialog {
  border:1px solid #e0e7f1;
  border-radius:12px;
  width:min(640px,92vw);
  padding:28px;
  color:#233b5e;
  max-height:88vh
}
dialog::backdrop {
  background:#0b193b70
}
.dialog-heading {
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:25px
}
.dialog-heading h2 {
  font-size:21px;
  margin-top:9px
}
.dialog-heading button {
  font-size:20px;
  padding:3px 10px
}
dialog dl {
  margin:20px 0;
  display:grid;
  grid-template-columns:135px minmax(0,1fr);
  font-size:13px
}
dialog dt,dialog dd {
  padding:13px 8px;
  border-bottom:1px solid #ecf0f5;
  margin:0;
  overflow-wrap:anywhere
}
dialog dt {
  color:#8290a8
}
dialog dd {
  font-family:Consolas,"Microsoft YaHei",monospace
}
dialog .scope-note {
  display:block;
  margin-bottom:0
}
.dialog-heading+ p {
  color:#75869e;
  font-size:13px
}
@media(min-width:1500px) {
  .sidebar {
    width:235px
  }
  main {
    padding:30px
  }
  .filters {
    grid-template-columns:1fr 1fr 145px auto
  }
  td {
    padding-top:20px;
    padding-bottom:20px
  }
}
@media(max-width:1100px) {
  .sidebar {
    width:185px
  }
  .brand {
    font-size:18px;
    padding:22px 14px
  }
  .sidebar nav button {
    padding:10px
  }
  .filters {
    grid-template-columns:1fr 1fr;
    gap:16px
  }
  .filter-actions {
    justify-content:flex-end
  }
  .topbar {
    padding:14px 20px
  }
  main {
    padding:22px 18px
  }
  .scope-badge {
    display:none
  }
}
@media(max-width:680px) {
  .sidebar {
    width:64px
  }
  .brand {
    justify-content:center;
    padding:25px 14px
  }
  .brand>div,.sidebar-footer,.nav-group,.sidebar nav button:not(.active) {
    display:none
  }
  .sidebar nav {
    padding:14px 5px
  }
  .sidebar nav button.active {
    font-size:0;
    padding:14px;
    justify-content:center
  }
  .sidebar nav button.active span {
    font-size:21px
  }
  .topbar {
    padding:12px;
    gap:10px
  }
  .account-tools {
    gap:6px;
    font-size:11px
  }
  .breadcrumb {
    font-size:12px
  }
  .breadcrumb span {
    padding:0 6px
  }
  main {
    padding:21px 12px
  }
  .filters {
    padding:16px;
    grid-template-columns:minmax(0,1fr)
  }
  .filter-actions {
    justify-content:flex-start
  }
  .page-heading {
    flex-wrap:wrap
  }
  h1 {
    font-size:24px
  }
  .pagination>div {
    gap:8px
  }
  .login-card {
    padding:25px
  }
  dialog dl {
    grid-template-columns:100px minmax(0,1fr)
  }
}
/* Shared management shell and reusable page components. */
:root  {
  --console-brand: #2864ed;
  --console-border: #dce3ee;
  --console-muted: #8290a4;
}
a  {
  color: var(--console-brand);
  text-decoration: none;
}
a:hover  {
  text-decoration: underline;
}
a:focus-visible  {
  outline: 2px solid #6b9eff;
  outline-offset: 3px;
}
.sidebar .nav-link  {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  color: #dce6f5;
  border-radius: 6px;
  margin: 2px 0;
  padding: 12px 14px;
  text-decoration: none;
}
.sidebar .nav-link > span:first-child  {
  font-size: 20px;
  width: 21px;
  flex: none;
  text-align: center;
  line-height: 18px;
}
.sidebar .nav-link > .nav-label  {
  font-size: 14px;
}
.sidebar .nav-link small  {
  font-size: 10px;
  margin-left: auto;
  color: #a8b9d3;
  white-space: nowrap;
}
.sidebar .nav-link:hover  {
  background: #1b2d49;
}
.sidebar .nav-link.active  {
  background: var(--console-brand);
  color: #fff;
}
.sidebar .nav-link.not-permitted  {
  opacity: .55;
}
.filters  {
  grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) auto;
}
.pagination select  {
  width: 92px;
  min-height: 32px;
  padding: 6px;
  font-size: 12px;
}
.button-link  {
  display: inline-block;
  padding: 10px 17px;
  background: #fff;
  border: 1px solid var(--console-border);
  border-radius: 6px;
  color: #273d5b;
  white-space: nowrap;
}
.button-link:hover  {
  text-decoration: none;
  border-color: var(--console-brand);
}
.module-state  {
  padding: 55px 30px;
  max-width: 960px;
}
.module-state h2  {
  margin: 18px 0;
  font-size: 21px;
}
.module-state > p  {
  color: #71819a;
  line-height: 1.9;
}
.module-symbol  {
  display: block;
  font-size: 44px;
  color: #aac0df;
}
.module-state .scope-note  {
  margin-bottom: 0;
}
.module-state + button  {
  margin-top: 20px;
}
.detail-card  {
  padding: 8px 24px 24px;
  max-width: 1100px;
}
.detail-fields  {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  font-size: 13px;
}
.detail-fields dt, .detail-fields dd  {
  padding: 15px 12px;
  border-bottom: 1px solid #ecf0f5;
  margin: 0;
  overflow-wrap: anywhere;
}
.detail-fields dt  {
  color: var(--console-muted);
}
.detail-fields dd  {
  font-family: Consolas, 'Microsoft YaHei', monospace;
}
.skip-link  {
  position: absolute;
  top: -80px;
  left: 20px;
  padding: 12px 20px;
  z-index: 5;
  background: #fff;
}
.skip-link:focus  {
  top: 10px;
}
#page-outlet:focus  {
  outline: none;
}
#shell-error  {
  margin: 15px 26px;
}
@media (max-width: 1100px)  {
  .filters  {
    grid-template-columns: 1fr 1fr;
  }
  .sidebar .nav-link  {
    padding: 10px;
    gap: 8px;
  }
}
@media (max-width: 680px)  {
  .sidebar .nav-link  {
    justify-content: center;
    padding: 14px 8px;
  }
  .sidebar .nav-link .nav-label, .sidebar .nav-link small  {
    display: none;
  }
  .sidebar .nav-link > span:first-child  {
    font-size: 21px;
  }
  .filters  {
    grid-template-columns: minmax(0, 1fr);
  }
  .pagination select  {
    width: 80px;
  }
  .module-state  {
    padding: 30px 18px;
  }
  .detail-card  {
    padding: 8px 12px;
  }
  .detail-fields  {
    grid-template-columns: 100px minmax(0, 1fr);
  }
}
