/* 联桥 LinkBridge · 总控端页面级样式（admin 外壳，移植自 linkbridge-prototype.html:24-32/55-56/341-359） */

body {
  font-family: var(--font);
  background: var(--bg);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: -.005em;
  padding: 34px 32px 64px;
}
h1, h2, h3, h4, p { margin: 0 }
button { font-family: inherit; font-size: inherit; color: inherit; background: none; border: none; padding: 0; cursor: pointer }
input, select { font-family: inherit; font-size: inherit; color: inherit }
.ic { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto }
.ic.sm { width: 15px; height: 15px }
.ic.lg { width: 22px; height: 22px }
.mono { font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace; font-variant-numeric: tabular-nums }
.num { font-variant-numeric: tabular-nums }

/* ---- admin 外壳 ---- */
.adminwin { max-width: 1240px; margin: 0 auto; background: #fff; border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--sh-2); overflow: hidden }
.adminbody { display: grid; grid-template-columns: 224px minmax(0, 1fr); min-height: 700px }
.adm-side { background: #0F0F11; color: #EDEDF0; padding: 16px 12px; display: flex; flex-direction: column; gap: 2px }
.adm-side .brandrow { display: flex; align-items: center; gap: 9px; padding: 4px 8px 16px }
.adm-side .brandrow .bm { width: 26px; height: 26px; border-radius: 7px; background: #fff; display: grid; place-items: center }
.adm-side .brandrow b { font-size: 13px; font-weight: 600; letter-spacing: .005em }
.adm-side .brandrow span { display: block; font-size: 10.5px; color: rgba(255, 255, 255, .44); margin-top: 1px }
.adm-nav { display: flex; align-items: center; gap: 10px; height: 34px; padding: 0 9px; border-radius: 7px; font-size: 13px; color: rgba(255, 255, 255, .6); width: 100%; text-align: left }
.adm-nav:hover { background: rgba(255, 255, 255, .06); color: #fff }
.adm-nav.on { background: rgba(255, 255, 255, .12); color: #fff }
.adm-nav .badge { margin-left: auto; font-size: 10.5px; color: rgba(255, 255, 255, .4) }
.adm-main { background: #FAFAFC; padding: 20px 24px 26px; min-width: 0 }
.adm-main .phead h2 { font-size: 19px }
.kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 14px }
.kpi { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 13px 15px }
.kpi em { font-style: normal; font-size: 11.5px; color: var(--ink3); letter-spacing: .02em }
.kpi b { display: block; font-size: 23px; font-weight: 600; letter-spacing: -.02em; margin-top: 5px; font-variant-numeric: tabular-nums }
.kpi span { display: block; font-size: 11px; color: var(--ink3); margin-top: 3px }

.stage-note { max-width: 1240px; margin: 16px auto 0; color: var(--ink3); font-size: 12px; line-height: 1.7 }
.stage-note b { color: var(--ink2); font-weight: 500 }

/* ---- 页面辅助 ---- */
.msearch input { border: none; background: none; outline: none; font-size: 12px; width: 100%; color: var(--ink); min-width: 0 }
.msearch input::placeholder { color: var(--ink3) }
.lic-loading, .adm-empty { padding: 18px 14px; font-size: 12.5px; color: var(--ink3); text-align: center }
.lic-loading td { text-align: center }
.lic-status-normal { opacity: .8 }

/* ---- U 盘批次 · CSV 批量签发 ---- */
.csv-drop { display: flex; align-items: center; gap: 12px; border: 1.5px dashed var(--line); border-radius: 10px; padding: 16px 14px; cursor: pointer; color: var(--ink2); transition: border-color .15s, background .15s; margin-top: 8px }
.csv-drop:hover { border-color: var(--accent); background: var(--accent-soft) }
.csv-drop .csv-name { font-size: 12.5px; line-height: 1.7 }
.csv-result { margin-top: 18px }
.csv-result .csv-summary { font-size: 12.5px; color: var(--ink2); margin: 4px 0 10px }
.csv-result .csv-summary b { color: var(--ink); font-variant-numeric: tabular-nums }
.csv-result .tbl .acts { text-align: right; white-space: nowrap }
.csv-result .csv-err { font-size: 12px; color: var(--red); white-space: pre-wrap; margin-top: 8px }
.csv-result .csv-ok { font-size: 12px; color: var(--green); margin-top: 8px }
.hidden { display: none !important }
