/* 紧凑蓝白企业界面；状态始终包含文字，不单靠颜色表达。 */
:root { --blue:#155baf; --blue-dark:#124c90; --blue-soft:#edf4fd; --ink:#202b3a; --muted:#536174; --line:#dbe2eb; --surface:#fff; --page:#f3f5f8; --focus:#176dcb; font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif; font-size:13px; color:var(--ink); background:var(--page); }
* { box-sizing:border-box; }
body { margin:0; }
button,input,select,textarea { font:inherit; }
button { min-height:32px; padding:5px 13px; border:1px solid #c8d2df; border-radius:3px; color:var(--ink); background:white; cursor:pointer; white-space:nowrap; }
button:hover { background:#f1f5fb; border-color:#9eafc5; }
button:disabled { opacity:.55; cursor:wait; }
button.primary { color:white; background:var(--blue); border-color:var(--blue); }
button.primary:hover { background:var(--blue-dark); }
button.link { padding:2px 4px; min-height:28px; border:0; color:#164e8c; background:transparent; text-decoration:underline; text-underline-offset:3px; white-space:normal; text-align:left; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:2px solid var(--focus); outline-offset:2px; }
h1 { font-size:20px; line-height:1.5; margin:0 0 14px; font-weight:600; }
h2 { font-size:15px; margin:0 0 14px; font-weight:600; }
h3 { font-size:14px; margin:0 0 10px; }
p { line-height:1.7; }
small { color:var(--muted); line-height:1.6; }
.hint { color:var(--muted); margin:8px 0; font-size:12px; line-height:1.7; }
.skip-link { position:fixed; top:-100px; left:12px; z-index:100; background:white; padding:10px; }
.skip-link:focus { top:8px; }
.topbar { min-height:58px; background:var(--blue); color:white; display:flex; justify-content:space-between; align-items:center; gap:20px; padding:0 24px; }
.brand { font-size:24px; font-weight:700; letter-spacing:1px; display:flex; align-items:center; gap:18px; }
.brand span { font-size:16px; letter-spacing:0; font-weight:500; }
.top-user { display:flex; align-items:center; gap:16px; font-size:12px; }
.top-button { color:white; border-color:#ffffff70; background:transparent; }
.top-button:hover { color:var(--ink); background:white; }
.workspace { display:flex; min-height:calc(100vh - 58px); }
.sidebar { width:184px; flex-shrink:0; background:white; border-right:1px solid var(--line); padding:12px 0; }
.sidebar button { width:100%; border:0; border-left:3px solid transparent; border-radius:0; padding:11px 22px; text-align:left; background:white; }
.sidebar button:hover,.sidebar button.active { background:var(--blue-soft); border-left-color:var(--blue); color:#173e6b; }
.nav-heading { padding:17px 24px 8px; color:var(--muted); font-size:11px; letter-spacing:1px; }
.workspace-main { min-width:0; flex:1; }
.tabs { background:white; display:flex; align-items:stretch; border-bottom:1px solid var(--line); min-height:42px; overflow:auto; }
.tab { display:flex; flex-shrink:0; border-right:1px solid var(--line); border-bottom:2px solid transparent; }
.tab button { background:transparent; border:0; padding:9px 15px; }
.tab.active { background:#f8fbff; border-bottom-color:var(--blue); }
.tab .close-tab { padding:5px 10px 5px 0; }
.content { padding:22px; max-width:1760px; margin:0 auto; }
.page-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:12px; }
.page-heading h1 { margin:0; }
.panel { background:white; border:1px solid var(--line); border-radius:3px; margin:16px 0; padding:18px; }
.panel > h2 { border-bottom:1px solid var(--line); padding-bottom:12px; }
.toolbar,.form-actions,.row-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.filters { display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px; background:white; border:1px solid var(--line); padding:15px; margin:14px 0; }
.filters .field { width:170px; }
.field { display:flex; flex-direction:column; gap:7px; min-width:0; }
.field > span { font-size:12px; font-weight:500; }
input:not([type=checkbox]):not([type=file]),select,textarea { border:1px solid #bdc9d8; border-radius:3px; padding:7px 9px; background:white; width:100%; min-height:34px; color:var(--ink); }
textarea { resize:vertical; line-height:1.6; }
input[readonly] { background:#f3f5f8 !important; }
input[type=checkbox] { width:16px; height:16px; accent-color:var(--blue); flex-shrink:0; }
input[type=file] { max-width:100%; }
.form-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; align-items:start; }
.form-grid .wide { grid-column:1 / -1; }
.form-actions { margin:18px 0 8px; }
.feedback:empty { display:none; }
.error { margin:12px 0; padding:12px 15px; border:1px solid #d6a5a5; border-left:4px solid #9f2929; color:var(--ink); background:#fff8f8; line-height:1.7; overflow-wrap:anywhere; }
.error small { display:block; }
.warning { border:1px solid #d7bf85; border-left:4px solid #9d751d; background:#fffbef; color:var(--ink); padding:12px 15px; line-height:1.7; margin:12px 0; }
.warning p { margin:5px 0 0; }
.empty,.loading { text-align:center; background:white; border:1px solid var(--line); padding:40px 15px; margin:12px 0; color:var(--muted); }
.table-wrap { width:100%; overflow:auto; border:1px solid var(--line); background:white; }
table { width:100%; border-collapse:collapse; text-align:left; font-size:12px; }
th { background:#f5f7fa; color:#344256; font-weight:600; white-space:nowrap; }
th,td { padding:10px 12px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); vertical-align:top; line-height:1.6; overflow-wrap:anywhere; min-width:70px; max-width:440px; }
th:last-child,td:last-child { border-right:0; }
tr:last-child td { border-bottom:0; }
tbody tr:hover { background:#fafcff; }
.status-tag { display:inline-block; white-space:nowrap; padding:2px 7px; border:1px solid #c8d2df; background:#f7f9fc; color:#26394f; border-radius:3px; font-size:12px; }
.pager { display:flex; align-items:center; justify-content:flex-end; gap:10px; margin:15px 0; }
.pager span { margin-right:10px; color:var(--muted); }
.facts { display:grid; grid-template-columns:120px minmax(0,1fr) 120px minmax(0,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line); background:white; margin:15px 0; }
.facts dt,.facts dd { margin:0; padding:10px 12px; border-bottom:1px solid var(--line); border-right:1px solid var(--line); line-height:1.6; overflow-wrap:anywhere; white-space:pre-wrap; }
.facts dt { background:#f7f9fb; color:var(--muted); }
.record { border:1px solid var(--line); margin:14px 0; padding:16px; background:#fff; }
.record-heading { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.record-heading h3 { margin:0; }
.association { display:flex; flex-wrap:wrap; gap:10px 18px; border:1px solid var(--line); padding:12px; margin:16px 0; }
.association legend { color:var(--muted); font-size:12px; padding:0 6px; }
.association label,.confirmation { display:flex; gap:7px; align-items:center; line-height:1.8; }
.confirmation { margin:14px 0; }
.upload-box { margin:16px 0 8px; padding:12px; background:#f7f9fc; border:1px dashed #bdc9d8; }
.attachments { padding:0; margin:8px 0; list-style:none; }
.attachments li { padding:5px 0; overflow-wrap:anywhere; }
.attachments li > small { margin-right:12px; }
.editor-fields { border:0; padding:0; margin:0; min-width:0; }
.sticky-actions { position:sticky; bottom:0; display:flex; gap:10px; background:#fff; border:1px solid var(--line); padding:12px 16px; box-shadow:0 -3px 12px #1e35500b; z-index:2; }
.stat-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin:20px 0 12px; }
.stat-card { border:1px solid var(--line); background:white; padding:20px; border-radius:3px; }
.stat-card h2 { font-size:13px; font-weight:400; color:var(--muted); margin:0 0 13px; }
.stat-card strong { color:var(--ink); font-size:30px; line-height:1.3; font-weight:600; font-variant-numeric:tabular-nums; }
.stat-card .hint { margin-bottom:0; }
.auth-layout { display:flex; min-height:100vh; align-items:center; justify-content:center; background:linear-gradient(145deg,#e9f1fa,#f5f7fa 60%); padding:24px; }
.auth-card { width:440px; max-width:100%; background:white; border:1px solid var(--line); border-top:4px solid var(--blue); padding:32px; box-shadow:0 12px 36px #173c6510; }
.auth-card .field { margin:18px 0; }
.auth-card .form-actions button { width:100%; }
.brand-mark { color:var(--blue-dark); font-weight:700; font-size:30px; margin-bottom:18px; }
.startup { max-width:700px; margin:100px auto; padding:30px; text-align:center; }
.modal { width:700px; max-width:calc(100vw - 32px); max-height:90vh; border:1px solid var(--line); border-radius:5px; padding:24px; color:var(--ink); }
.modal::backdrop { background:#16263f70; }
.modal-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; border-bottom:1px solid var(--line); margin-bottom:20px; padding-bottom:12px; }
.modal-heading h2 { margin:0; }
.modal .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
pre { max-width:450px; white-space:pre-wrap; overflow-wrap:anywhere; font-size:12px; }
[hidden] { display:none !important; }
@media(max-width:1000px) { .topbar { padding:12px 16px; flex-wrap:wrap; } .top-user { flex-wrap:wrap; gap:8px; } .sidebar { width:150px; } .sidebar button { padding-left:15px; } .content { padding:16px; } .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .facts { grid-template-columns:110px minmax(0,1fr); } }
@media(max-width:650px) { .workspace { display:block; } .sidebar { width:100%; display:flex; overflow:auto; padding:0; border-bottom:1px solid var(--line); } .sidebar button { width:auto; white-space:nowrap; border-left:0; border-bottom:3px solid transparent; padding:10px 14px; } .sidebar button.active { border-bottom-color:var(--blue); } .nav-heading { display:none; } .form-grid,.modal .form-grid { grid-template-columns:1fr; } .filters .field { width:calc(50% - 6px); } .stat-grid { gap:10px; } .stat-card { padding:14px; } .content { padding:12px; } .page-heading { flex-wrap:wrap; } .panel { padding:12px; } .record { padding:12px; } .pager { flex-wrap:wrap; } .brand span { font-size:14px; } }
@media(prefers-reduced-motion:reduce) { * { scroll-behavior:auto !important; } }
@media print { .topbar,.sidebar,.tabs,.toolbar,button,.filters { display:none !important; } .workspace,.workspace-main { display:block; } .content { padding:0; } .panel,.record { break-inside:avoid; } }
