:root {
  --primary: #2563eb;
  --primary-dark: #1d4ed8;
  --bg: #f3f5f9;
  --card: #ffffff;
  --text: #1e293b;
  --muted: #64748b;
  --border: #e2e8f0;
  --danger: #dc2626;
  --success: #16a34a;
  --warning: #d97706;
  --sidebar: #0f172a;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif; background: var(--bg); color: var(--text); font-size: 14px; }
a { color: var(--primary); text-decoration: none; }
button { font-family: inherit; }

/* 登录页 */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 100%); }
.login-card { background: #fff; padding: 40px 44px; border-radius: 16px; width: 400px; box-shadow: 0 20px 60px rgba(0,0,0,.3); }
.login-card h1 { font-size: 22px; text-align: center; margin-bottom: 6px; }
.login-card .sub { text-align: center; color: var(--muted); margin-bottom: 28px; font-size: 13px; }
.login-tips { margin-top: 18px; font-size: 12px; color: var(--muted); background: #f8fafc; border: 1px dashed var(--border); border-radius: 8px; padding: 10px 12px; line-height: 1.8; }

/* 布局 */
.layout { display: flex; min-height: 100vh; }
.sidebar { width: 220px; background: var(--sidebar); color: #cbd5e1; flex-shrink: 0; display: flex; flex-direction: column; }
.sidebar .brand { padding: 20px 18px; font-size: 16px; font-weight: bold; color: #fff; border-bottom: 1px solid rgba(255,255,255,.08); }
.sidebar .brand small { display: block; font-weight: normal; font-size: 11px; color: #64748b; margin-top: 3px; }
.nav { flex: 1; padding: 12px 10px; overflow-y: auto; }
.nav a { display: flex; align-items: center; min-height: 40px; margin: 2px 0; padding: 9px 13px; color: #d5deeb; font-size: 14px; line-height: 1.4; font-weight: 500; letter-spacing: .15px; border-radius: 8px; transition: background .15s ease, color .15s ease, box-shadow .15s ease; }
.nav a:hover { background: rgba(255,255,255,.07); color: #fff; }
.nav a.active { background: rgba(59,130,246,.18); color: #fff; box-shadow: inset 3px 0 0 #60a5fa; }
.sidebar .userbox { padding: 14px 18px; border-top: 1px solid rgba(255,255,255,.08); font-size: 13px; }
.sidebar .userbox .role-tag { display: inline-block; margin-left: 6px; font-size: 11px; background: var(--primary); color: #fff; border-radius: 4px; padding: 1px 6px; }
.sidebar .userbox button { margin-top: 10px; width: 100%; }
.main { flex: 1; padding: 24px 28px; overflow-x: auto; }
.page-title { font-size: 20px; font-weight: bold; margin-bottom: 20px; }

/* 组件 */
.card { background: var(--card); border-radius: 12px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,.06); margin-bottom: 18px; }
.grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 18px; }
.stat { background: var(--card); border-radius: 12px; padding: 18px; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.stat-link { display:block; color:inherit; text-decoration:none; transition:transform .15s ease, box-shadow .15s ease; }
.stat-link:hover, .stat-link:focus-visible { transform:translateY(-2px); box-shadow:0 5px 16px rgba(0,0,0,.12); outline:2px solid var(--primary); outline-offset:2px; }
.dashboard-request { cursor:pointer; border-radius:6px; }
.dashboard-request:hover, .dashboard-request:focus-visible { background:var(--hover, rgba(37,99,235,.06)); outline:2px solid var(--primary); outline-offset:1px; }
.dashboard-upload-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.dashboard-upload-card { min-width:0; }
.dashboard-upload-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.dashboard-upload-head h3 { font-size:16px; }
.dashboard-upload-metrics { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin-top:14px; }
.dashboard-upload-metric { display:flex; min-width:0; flex-direction:column; gap:4px; padding:10px 8px; border-radius:8px; background:#f8fafc; text-align:center; }
.dashboard-upload-metric b { color:var(--primary); font-size:22px; }
.dashboard-upload-metric span { color:var(--muted); font-size:12px; white-space:nowrap; }
.stat .num { font-size: 28px; font-weight: bold; color: var(--primary); }
.stat .label { color: var(--muted); margin-top: 4px; font-size: 13px; }
.stat.warn .num { color: var(--warning); }
.stat.ok .num { color: var(--success); }

table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: middle; }
th { color: var(--muted); font-weight: 600; background: #f8fafc; white-space: nowrap; }
tr:hover td { background: #f8fafc; }
.tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; }
.tag.g { background: #dcfce7; color: #15803d; }
.tag.o { background: #ffedd5; color: #c2410c; }
.tag.r { background: #fee2e2; color: #b91c1c; }
.tag.b { background: #dbeafe; color: #1d4ed8; }
.tag.gray { background: #f1f5f9; color: #475569; }

.btn { display: inline-block; border: none; cursor: pointer; border-radius: 8px; padding: 8px 16px; font-size: 13px; background: var(--primary); color: #fff; }
.btn:hover { background: var(--primary-dark); }
.btn.plain { background: #fff; color: var(--text); border: 1px solid var(--border); }
.btn.plain:hover { background: #f8fafc; }
.btn.danger { background: #fff; color: var(--danger); border: 1px solid #fecaca; }
.btn.danger:hover { background: #fef2f2; }
.btn.sm { padding: 4px 10px; font-size: 12px; border-radius: 6px; }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.toolbar { display: flex; gap: 10px; align-items: center; margin-bottom: 14px; flex-wrap: wrap; }
.toolbar input, .toolbar select { margin: 0; }

input, select, textarea { width: 100%; padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; font-family: inherit; background: #fff; color: var(--text); }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--primary); }
input[type="datetime-local"] { cursor: pointer; }
input[type="datetime-local"]::-webkit-calendar-picker-indicator { display: none; }
textarea { resize: vertical; min-height: 70px; }
.datetime-picker { position: fixed; z-index: 150; padding: 12px; border: 1px solid var(--border); border-radius: 10px; background: #fff; box-shadow: 0 14px 32px rgba(15,23,42,.22); color: var(--text); }
.datetime-picker-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.datetime-picker-head b { font-size:14px; }
.datetime-picker-head button { width:30px; height:30px; border:0; border-radius:6px; background:#f1f5f9; color:var(--text); font-size:20px; cursor:pointer; }
.datetime-picker-calendar { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.datetime-picker-calendar button, .datetime-picker-weekday { display:flex; align-items:center; justify-content:center; min-width:0; height:31px; border:0; border-radius:6px; background:transparent; color:var(--text); font-size:12px; }
.datetime-picker-calendar button { cursor:pointer; }
.datetime-picker-calendar button:hover { background:#eff6ff; }
.datetime-picker-calendar button.selected { background:var(--primary); color:#fff; }
.datetime-picker-weekday { color:var(--muted); font-weight:600; }
.datetime-picker-time { display:flex; align-items:center; gap:7px; margin-top:10px; padding-top:10px; border-top:1px solid var(--border); }
.datetime-picker-time label { margin-right:auto; color:var(--muted); font-size:12px; }
.datetime-picker-time select { width:auto; min-width:82px; padding:7px 8px; font-size:13px; }
.datetime-picker-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
.datetime-picker-actions button { padding:7px 14px; border:1px solid var(--border); border-radius:7px; background:#fff; color:var(--text); cursor:pointer; }
.datetime-picker-actions button.confirm { border-color:var(--primary); background:var(--primary); color:#fff; }
.flow-field-row { display:grid; grid-template-columns:minmax(150px,1.2fr) minmax(110px,.8fr) minmax(150px,1.25fr) auto auto; gap:8px; align-items:center; margin-top:8px; }
.flow-field-row .ff-required { display:flex; align-items:center; gap:5px; white-space:nowrap; }
.flow-field-row .ff-required-check { width:auto; margin:0; }
@media (max-width:720px) { .flow-field-row { grid-template-columns:1fr 1fr; } .flow-field-row .ff-options { grid-column:1 / -1; } }

/* 弹窗 */
.modal-mask { position: fixed; inset: 0; background: rgba(15,23,42,.5); display: flex; align-items: flex-start; justify-content: center; z-index: 100; padding: 40px 20px; overflow-y: auto; }
.modal { background: #fff; border-radius: 14px; width: 640px; max-width: 100%; padding: 24px 26px; }
.modal h3 { margin-bottom: 18px; font-size: 17px; }
.approval-current { margin-top:16px; padding:12px 14px; border-left:3px solid var(--primary); border-radius:6px; background:#f8fafc; line-height:1.7; }
.approval-current b { display:block; margin-bottom:3px; font-size:13px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-item label { display: block; font-size: 13px; color: var(--muted); margin-bottom: 5px; }
.req-star { color: #dc2626; font-weight: 700; margin-left: 2px; }
.form-item.full { grid-column: 1 / -1; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 22px; }

.toast { position: fixed; top: 24px; left: 50%; transform: translateX(-50%); background: #0f172a; color: #fff; padding: 10px 22px; border-radius: 10px; font-size: 14px; opacity: 0; pointer-events: none; transition: opacity .25s; z-index: 200; max-width: 80vw; }
.toast.show { opacity: .95; }
.toast.err { background: var(--danger); }

.goal-row { display: grid; grid-template-columns: 1fr 80px 1fr 90px 90px; gap: 8px; margin-bottom: 8px; }
.goal-head { font-size: 12px; color: var(--muted); margin-bottom: 6px; display: grid; grid-template-columns: 1fr 80px 1fr 90px 90px; gap: 8px; }
.org-card { padding:18px; }
.org-toolbar { padding-bottom:12px; border-bottom:1px solid var(--border); }
.org-summary { color:var(--text); font-weight:600; font-size:13px; }
.orgtree { display:grid; gap:12px; padding:4px 0; }
.org-company { overflow:hidden; border:1px solid var(--border); border-radius:10px; background:#fff; }
.comp-row, .dept-row { display:flex; align-items:center; gap:9px; min-height:44px; padding:7px 12px; }
.comp-row { background:#fff; }
.org-company + .org-company { margin-top:0; }
.org-company-label { min-height:34px; }
.org-company-content { padding:4px 12px 12px; border-top:1px solid #f1f5f9; }
.org-toggle { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; flex:0 0 24px; padding:0; border:1px solid var(--border); border-radius:6px; background:#fff; color:var(--muted); font-size:16px; line-height:1; cursor:pointer; }
.org-toggle:hover:not(:disabled) { color:var(--primary); border-color:#bfdbfe; background:#eff6ff; }
.org-toggle:disabled { border-color:transparent; background:transparent; cursor:default; }
.org-node-label { display:inline-flex; align-items:center; gap:8px; min-width:0; padding:3px 0; border:0; background:transparent; color:var(--text); text-align:left; font:inherit; cursor:pointer; }
.org-node-label:hover b { color:var(--primary); }
.org-node-label b { font-size:13px; font-weight:600; }
.org-company-label b { font-size:14px; }
.org-count { padding:2px 7px; border-radius:999px; background:#f1f5f9; color:var(--muted); font-size:11px; white-space:nowrap; }
.org-dept { margin-left:calc(var(--org-depth, 0) * 18px); }
.dept-row { border-bottom:1px solid #f1f5f9; }
.org-dept-content { margin:0 0 0 11px; padding:8px 0 10px 21px; border-left:1px solid #e2e8f0; }
.org-members { display:flex; flex-wrap:wrap; gap:8px; }
.org-member { display:inline-flex; align-items:center; gap:8px; min-width:165px; max-width:250px; padding:6px 10px; border:1px solid #eef2f7; border-radius:8px; background:#fafbfc; color:var(--text); text-align:left; font:inherit; cursor:pointer; }
.org-member:hover, .org-member:focus-visible { border-color:#bfdbfe; background:#f8fbff; outline:none; }
.org-avatar { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; flex:0 0 26px; border-radius:50%; background:#eef2f7; color:#475569; font-size:12px; }
.org-member-copy { display:grid; min-width:0; gap:2px; }
.org-member-copy b { overflow:hidden; font-size:12px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.org-member-copy small { overflow:hidden; color:var(--muted); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.org-actions { display:inline-flex; gap:6px; margin-left:auto; }
.org-actions .btn { color:var(--muted); }
.org-actions .btn.danger { color:var(--danger); }
.org-empty { padding:10px 42px; color:var(--muted); font-size:12px; }
.org-unassigned { margin-top:4px; }
@media (max-width: 760px) {
  .dashboard-upload-grid { grid-template-columns:1fr; gap:0; }
  .dashboard-upload-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .org-card { padding:12px; }
  .comp-row, .dept-row { flex-wrap:wrap; }
  .org-actions { width:100%; margin-left:33px; }
  .org-company-label { flex-wrap:wrap; }
  .org-dept { margin-left:calc(var(--org-depth, 0) * 10px); }
}
.modal.perf-modal { width:min(1160px, calc(100vw - 40px)); }
.performance-sheet { color:#1f2937; }
.performance-sheet-title { padding:10px 14px; background:#315f9e; color:#fff; text-align:center; font-size:18px; font-weight:700; }
.performance-sheet-meta { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; padding:10px 8px; border:1px solid #cbd5e1; border-top:0; font-size:13px; }
.performance-sheet-meta b { color:#334155; }
.performance-sheet-scroll { overflow-x:auto; border:1px solid #b8cbe0; border-top:0; }
.performance-sheet-table { min-width:1080px; table-layout:fixed; }
.performance-sheet-table th, .performance-sheet-table td { padding:9px 8px; border:1px solid #c3d3e5; text-align:center; font-size:12px; }
.performance-sheet-table thead th { background:#0ea5e9; color:#fff; white-space:normal; line-height:1.45; }
.performance-sheet-table td { min-height:42px; }
.performance-sheet-table td:nth-child(2) { text-align:left; }
.performance-sheet-table td small { display:block; margin-top:4px; color:var(--muted); font-size:11px; }
.performance-sheet-table tfoot th, .performance-sheet-table tfoot td { background:#e2edf8; font-weight:700; }
.performance-sheet-table .performance-empty-row td { height:52px; text-align:center; color:var(--muted); background:#fff; }
.performance-sheet-footer { display:flex; justify-content:flex-end; gap:20px; padding:10px 4px 0; color:var(--muted); font-size:12px; }
.sheet-toolbar { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:9px; }
.sheet-formula-row { display:grid; grid-template-columns:58px minmax(0,1fr) auto; gap:8px; align-items:center; margin-bottom:7px; }
.sheet-formula-row b { padding:8px; border:1px solid var(--border); border-radius:6px; background:#f8fafc; text-align:center; font-size:12px; }
.sheet-formula-row input { min-width:0; padding:7px 9px; font-family:Consolas,monospace; font-size:12px; }
.sheet-help { margin-bottom:9px; color:var(--muted); font-size:11px; }
.perf-grid { min-width:1080px; table-layout:fixed; }
.perf-grid td { height:38px; padding:0; border:1px solid #c3d3e5; }
.perf-grid .sheet-cell-input { display:block; width:100%; height:100%; min-height:37px; padding:7px 8px; border:0; border-radius:0; background:transparent; font-size:12px; }
.perf-grid .sheet-cell-input:focus { outline:2px solid var(--primary); outline-offset:-2px; background:#eff6ff; }
.perf-grid .sheet-selected { outline:2px solid #2563eb; outline-offset:-2px; }
.perf-grid .sheet-selected .sheet-cell-input { background:#eff6ff; }
.perf-grid .sheet-formula .sheet-cell-input { color:#1d4ed8; font-weight:600; }
.perf-grid .sheet-title-row td { background:#315f9e; }
.perf-grid .sheet-title-row .sheet-cell-input { height:42px; color:#fff; text-align:center; font-size:16px; font-weight:700; }
.perf-grid .sheet-title-row .sheet-selected .sheet-cell-input { background:#315f9e; color:#fff; }
.perf-grid .sheet-meta-row td { background:#fff; }
.perf-grid .sheet-meta-row .sheet-cell-input { font-weight:500; }
.perf-grid .sheet-header-row td { background:#0ea5e9; }
.perf-grid .sheet-header-row .sheet-cell-input { color:#fff; text-align:center; font-weight:700; white-space:normal; }
.perf-grid .sheet-total-row td { background:#e2edf8; }
.perf-grid .sheet-total-row .sheet-cell-input { font-weight:700; }
.performance-sheet-editor .performance-sheet-scroll { max-height:62vh; overflow:auto; }
@media (max-width: 700px) {
  .performance-sheet-meta { grid-template-columns:1fr; gap:5px; }
  .performance-sheet-footer { justify-content:flex-start; flex-wrap:wrap; }
  .sheet-formula-row { grid-template-columns:48px minmax(0,1fr) auto; }
}
.bar-wrap { background: #f1f5f9; border-radius: 6px; height: 16px; position: relative; overflow: hidden; }
.bar { height: 100%; background: var(--primary); border-radius: 6px; }
.muted { color: var(--muted); }
.right { text-align: right; }
.mt { margin-top: 14px; }
.flex { display: flex; gap: 10px; align-items: center; }
/* 水印 */
.wm-wrap { position: relative; }
.wm-layer { position: absolute; inset: 0; pointer-events: none; z-index: 10; }
.modal .wm-layer { border-radius: 14px; }
.preview-box { max-height: 60vh; overflow: auto; }
.preview-box img { max-width: 100%; }
.preview-box iframe { width: 100%; height: 55vh; border: none; }
.preview-box pre { white-space: pre-wrap; font-family: inherit; line-height: 1.8; }
.preview-box > img { display:block; max-height:58vh; margin:auto; object-fit:contain; }
.docx-view { max-width:100%; min-height:260px; margin:auto; padding:28px 36px; background:#fff; color:#1f2937; line-height:1.8; box-shadow:0 1px 5px #0f172a18; overflow-wrap:anywhere; }
.docx-view p { margin:0 0 10px; white-space:pre-wrap; }
.docx-view .docx-title { margin:0 0 24px; text-align:center; font-size:22pt; font-weight:700; }
.docx-view .docx-heading { margin-top:18px; font-size:18px; font-weight:700; }
.docx-view .docx-heading-1 { font-size:20pt; }
.docx-view .docx-heading-2 { font-size:16pt; }
.docx-view .docx-blank { height:12px; margin:0; }
.docx-table { width:100%; margin:14px 0; border-collapse:collapse; }
.docx-table td { border:1px solid #94a3b8; padding:5px 8px; vertical-align:top; }
.docx-table p { margin:0; }
.docx-inline-image { display:inline-block; max-width:100%; max-height:70vh; object-fit:contain; vertical-align:middle; }
.doc-drop-zone { margin:0 0 12px; padding:12px; border:1px dashed #94a3b8; border-radius:8px; color:#64748b; background:#f8fafc; text-align:center; font-size:12px; cursor:pointer; }
.doc-drop-zone:hover, .doc-drop-zone.dragover { border-color:var(--primary); color:var(--primary); background:#eff6ff; }
.mat-preview-modal { width:min(1200px,96vw); }
.mat-preview-stage { display:flex; min-height:180px; max-height:76vh; align-items:center; justify-content:center; overflow:auto; background:#0f172a; border-radius:8px; }
.mat-preview-image { display:block; max-width:100%; max-height:76vh; object-fit:contain; }
.mat-preview-video { display:block; width:100%; max-height:76vh; background:#000; }
.mat-folder-row { cursor:pointer; }
.mat-folder-row:hover { background:#f8fafc; }
.mat-folder-hint { display:block; margin-top:3px; font-size:11px; }
.mat-upload-card { min-height:360px; }
.mat-upload-panel { max-width:760px; margin:26px auto; padding:24px; border:1px solid var(--border); border-radius:12px; background:#fff; }
.mat-upload-panel h3 { margin:0 0 6px; }
.mat-upload-panel > .btn { margin-left:10px; }
.mat-upload-drop { margin-top:18px; padding:34px 12px; }
.pptx-view { display:grid; gap:14px; padding:14px; background:#e2e8f0; }
.doc-slide { position:relative; width:min(100%,1600px); min-height:220px; overflow:hidden; margin:auto; background:#fff; color:#1f2937; box-shadow:0 2px 8px #0f172a20; }
.doc-slide-heading { position:absolute; top:8px; right:12px; color:#64748b; font-size:11px; }
.ppt-shape { position:absolute; box-sizing:border-box; overflow:hidden; }
.ppt-text-shape { white-space:pre-wrap; }
.ppt-shape-paragraph { flex:0 0 auto; min-height:1em; padding:0 2px; white-space:pre-wrap; }
.ppt-picture img { display:block; width:100%; height:100%; object-fit:contain; }
.doc-preview-message { padding:36px 24px; text-align:center; }
.attendance-tabs { margin-bottom:14px; }
.attendance-self { padding:18px 20px; }
.attendance-self-head, .attendance-card-title, .attendance-calendar-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; }
.attendance-clock-row { display:grid; grid-template-columns:minmax(150px,1fr) auto minmax(150px,1fr) auto; align-items:center; gap:14px; padding-top:18px; }
.attendance-clock-row > div { display:grid; gap:5px; }
.attendance-clock-row > div b { font-size:17px; }
.attendance-clock-row > div small { color:var(--muted); font-size:12px; }
.attendance-summary { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:18px; }
.attendance-summary-card { flex:1; min-width:180px; padding:14px 18px; border:1px solid var(--border); border-radius:10px; background:#fff; color:var(--muted); text-align:left; font-size:14px; cursor:pointer; }
.attendance-summary-card:hover { border-color:#93c5fd; background:#f8fbff; }
.attendance-summary-card.selected { border-color:var(--primary); box-shadow:0 0 0 2px #2563eb18; }
.attendance-summary b { margin-left:6px; color:var(--text); font-size:20px; }
.attendance-summary small { font-size:11px; }
.attendance-card-title { margin-bottom:12px; }
.attendance-table-scroll { overflow-x:auto; }
.att-mark { display:inline-flex; width:20px; height:20px; align-items:center; justify-content:center; margin-right:3px; border-radius:50%; font-weight:800; }
.att-done { color:#15803d; background:#dcfce7; }
.att-missed { color:#b91c1c; background:#fee2e2; font-size:18px; }
.attendance-calendar-card { padding:18px; }
.attendance-calendar-toolbar { margin-bottom:14px; }
.attendance-hint { margin-bottom:14px; font-size:12px; }
.attendance-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.attendance-weekday { padding:8px 4px; text-align:center; color:var(--muted); font-size:12px; font-weight:700; }
.attendance-day-empty { min-height:108px; }
.attendance-day { position:relative; min-width:0; min-height:108px; padding:9px; border:1px solid var(--border); border-radius:9px; text-align:left; color:var(--text); }
.attendance-day:disabled { cursor:default; }
.attendance-day:not(:disabled) { cursor:pointer; }
.attendance-day:not(:disabled):hover { border-color:var(--primary); box-shadow:0 2px 8px #2563eb20; }
.attendance-day.is-workday { background:#f0fdf4; border-color:#bbf7d0; }
.attendance-day.is-restday { background:#f8fafc; color:#64748b; }
.attendance-day.has-override { outline:2px solid #93c5fd; outline-offset:-2px; }
.attendance-day-num { position:absolute; top:7px; right:9px; color:#64748b; font-size:12px; }
.attendance-day b, .attendance-day small, .attendance-day em { display:block; }
.attendance-day b { margin:14px 0 5px; font-size:13px; }
.attendance-day small { font-size:11px; }
.attendance-day em { margin-top:8px; color:#475569; font-size:10px; font-style:normal; line-height:1.4; }
.attendance-weekday-picks { display:flex; flex-wrap:wrap; gap:9px 16px; }
.attendance-weekday-picks label { display:flex; align-items:center; gap:5px; white-space:nowrap; }
.attendance-weekday-picks input { width:auto; }
.doc-view-mode { height:100%; overflow:hidden; background:#dbe2ea; }
.doc-view-mode, .doc-view-mode * { -webkit-user-select:none !important; user-select:none !important; }
.doc-view-mode .doc-viewer-content img { -webkit-user-drag:none; user-select:none; pointer-events:none; }
.doc-view-mode #app { width:100%; height:100%; min-height:100vh; }
.doc-viewer-page { position:fixed; inset:0; z-index:50; display:flex; flex-direction:column; width:100vw; height:100dvh; background:#dbe2ea; }
.doc-viewer-toolbar { z-index:12; display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:58px; padding:9px 16px; background:#fff; border-bottom:1px solid var(--border); box-shadow:0 1px 4px #0f172a12; }
.doc-viewer-title { min-width:0; display:flex; align-items:center; gap:16px; }
.doc-viewer-title b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; }
.doc-viewer-title span { flex-shrink:0; color:var(--muted); font-size:12px; }
.doc-viewer-actions { display:flex; flex-shrink:0; gap:8px; }
.doc-viewer-stage { flex:1; min-height:0; width:100%; overflow:hidden; }
.doc-viewer-content { width:100%; height:100%; overflow:auto; display:flex; justify-content:center; align-items:flex-start; }
.doc-viewer-content.viewer-image { align-items:center; }
.doc-viewer-content.viewer-image img { display:block; width:100%; height:100%; max-width:100%; max-height:100%; object-fit:contain; }
.doc-viewer-content.viewer-pdf { display:block; }
.doc-viewer-content.viewer-pdf iframe { display:block; width:100%; height:100%; min-height:0; border:0; background:#64748b; }
.doc-viewer-content.viewer-docx { display:block; padding:clamp(8px,2vw,24px); background:#cbd5e1; }
.doc-viewer-content.viewer-docx .docx-view { width:min(100%,1100px); max-width:100%; margin:0 auto; padding:clamp(20px,4vw,56px); }
.doc-viewer-content.viewer-pptx { display:block; background:#cbd5e1; }
.doc-viewer-content.viewer-text { display:block; padding:clamp(14px,3vw,36px); }
.doc-viewer-content.viewer-text pre { max-width:1200px; min-height:100%; margin:auto; padding:clamp(18px,4vw,48px); background:#fff; white-space:pre-wrap; line-height:1.8; }
.doc-viewer-content .pptx-view { min-height:100%; padding:clamp(8px,1.5vw,22px); gap:clamp(10px,1.5vw,22px); }
.doc-viewer-content .doc-slide { min-height:0; }
@media (max-width:640px) {
  .doc-viewer-toolbar { align-items:flex-start; flex-direction:column; gap:8px; padding:8px 10px; }
  .doc-viewer-title { width:100%; justify-content:space-between; gap:8px; }
  .doc-viewer-title span { font-size:11px; }
  .doc-viewer-actions { width:100%; justify-content:flex-end; }
  .doc-viewer-content .doc-slide { aspect-ratio:4/3; }
  .attendance-clock-row { grid-template-columns:1fr auto; }
  .attendance-self-head, .attendance-calendar-toolbar { align-items:flex-start; flex-direction:column; }
  .attendance-calendar-grid { gap:3px; }
  .attendance-day, .attendance-day-empty { min-height:82px; padding:5px; }
  .attendance-day em { display:none; }
}
@media print {
  .doc-view-mode .doc-viewer-page { display:none !important; }
}


/* 工作汇报 */
.report-recipient-picker { position: relative; min-width: 220px; max-width: 380px; }
.report-recipient-picker summary { cursor: pointer; list-style: none; padding: 8px 11px; border: 1px solid var(--border); border-radius: 8px; background: #fff; color: var(--text); }
.report-recipient-picker summary::-webkit-details-marker { display: none; }
.report-recipient-picker summary::after { content: '⌄'; float: right; color: var(--muted); }
.report-recipient-options { position: absolute; z-index: 30; top: calc(100% + 4px); left: 0; width: 100%; max-height: 250px; overflow: auto; padding: 6px; border: 1px solid var(--border); border-radius: 8px; background: #fff; box-shadow: 0 8px 24px rgba(15,23,42,.14); }
.report-recipient-options label { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 5px; cursor: pointer; }
.report-recipient-options label:hover { background: #f1f5f9; }
.report-recipient-options input[type="checkbox"] { width: auto; margin: 0; flex: 0 0 auto; }
.report-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin: -2px 0 8px; }
.report-title-group { display: flex; flex-direction: column; gap: 3px; }
.report-heading h3 { margin: 0; font-size: 18px; font-weight: 650; line-height: 1.35; }
.report-heading select { width: 120px; flex: 0 0 auto; }
.report-period { color: var(--muted); font-size: 12px; }
.report-meta { display: flex; padding: 7px 0 9px; font-size: 13px; color: var(--text); border-bottom: 1px solid var(--border); }
.report-meta b { color: #475569; font-weight: 600; }
.report-accordion { margin: 9px 0; padding: 0 13px; border: 1px solid var(--border); border-radius: 10px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.report-accordion[open] { border-color: #cbd5e1; box-shadow: 0 2px 8px rgba(15,23,42,.04); }
.report-accordion summary { display: flex; align-items: center; gap: 9px; min-height: 54px; cursor: pointer; list-style: none; }
.report-accordion summary::-webkit-details-marker { display: none; }
.report-accordion summary::after { content: '⌄'; margin-left: 5px; color: var(--muted); font-size: 13px; }
.report-accordion[open] summary::after { content: '⌃'; }
.report-accordion summary time { margin-left: auto; color: var(--muted); font-size: 12px; white-space: nowrap; }
.report-accordion-body { padding: 5px 14px 10px; margin: 0 0 12px; background: #f8fafc; border-radius: 8px; }
.report-detail-section { padding: 10px 0; line-height: 1.75; font-size: 14px; }
.report-detail-section + .report-detail-section { border-top: 1px solid var(--border); }
.report-detail-section b { color: #334155; font-size: 13px; }
.report-detail-section > div { margin-top: 5px; white-space: pre-wrap; color: #334155; }

/* 月度绩效新版主页 */
.perf-toolbar-card { padding:16px 18px; }
.perf-filter-label { display:flex; align-items:center; gap:8px; color:var(--muted); white-space:nowrap; }
.perf-filter-label input { width:158px; }
.perf-template-note { margin-top:4px; font-size:12px; }
.perf-record-list { display:grid; gap:10px; }
.perf-record { overflow:hidden; border:1px solid var(--border); border-radius:12px; background:#fff; box-shadow:0 1px 3px rgba(15,23,42,.04); }
.perf-record[open] { border-color:#cbd5e1; box-shadow:0 3px 12px rgba(15,23,42,.06); }
.perf-record-summary { display:grid; grid-template-columns:minmax(150px,1.25fr) minmax(78px,.55fr) minmax(78px,.55fr) minmax(105px,.8fr) minmax(105px,.8fr) auto; align-items:center; gap:14px; min-height:74px; padding:13px 16px; cursor:pointer; list-style:none; }
.perf-record-summary::-webkit-details-marker { display:none; }
.perf-person { display:flex; flex-direction:column; gap:5px; min-width:0; }
.perf-person b { font-size:15px; }
.perf-person small,.perf-metric small,.perf-stage small { color:var(--muted); font-size:11px; }
.perf-metric,.perf-stage { display:flex; flex-direction:column; align-items:flex-start; gap:5px; }
.perf-metric b { color:#1e3a8a; font-size:17px; }
.perf-record-state { display:flex; align-items:center; gap:8px; }
.perf-chevron { color:var(--muted); transition:transform .15s; }
.perf-record[open] .perf-chevron { transform:rotate(180deg); }
.perf-record-detail { padding:0 16px 16px; border-top:1px solid var(--border); }
.perf-detail-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 0 12px; }
.perf-detail-heading > div:first-child { display:flex; flex-direction:column; gap:4px; }
.perf-detail-heading span { color:var(--muted); font-size:12px; }
.perf-detail-actions { display:flex; gap:7px; flex-wrap:wrap; justify-content:flex-end; }
.perf-rater-control { display:flex; align-items:center; gap:8px; margin-top:5px; }
.perf-rater-control label,.perf-rater-label { color:var(--muted); font-size:12px; }
.perf-rater-control select { min-width:220px; max-width:360px; height:32px; padding:0 9px; border:1px solid var(--border); border-radius:7px; background:#fff; color:var(--text); }
.perf-table-scroll { overflow:visible; width:100%; }
.perf-teacher-scroll { overflow-x:auto; width:100%; }
.perf-editor-scroll { overflow:auto; }
.perf-items-table { width:100%; min-width:0; table-layout:fixed; }
.perf-items-table th { background:#f1f5f9; }
.perf-items-table th,.perf-items-table td { padding:9px 10px; overflow-wrap:anywhere; }
.perf-items-table th { line-height:1.35; vertical-align:middle; }
.perf-items-table th:nth-child(1),.perf-items-table td:nth-child(1) { width:3%; text-align:center; }
.perf-items-table th:nth-child(2) { width:15%; }
.perf-items-table th:nth-child(3) { width:8%; }
.perf-items-table th:nth-child(4) { width:5%; }
.perf-items-table th:nth-child(5) { width:10%; }
.perf-items-table th:nth-child(6) { width:10%; }
.perf-items-table th:nth-child(7),.perf-items-table th:nth-child(8) { width:7%; }
.perf-items-table th:nth-child(9) { width:12%; }
.perf-items-table th:nth-child(10) { width:15%; }
.perf-items-table th:nth-child(11) { width:8%; }
.perf-items-table th:nth-child(1),.perf-items-table th:nth-child(4),.perf-items-table th:nth-child(5),.perf-items-table th:nth-child(6),.perf-items-table th:nth-child(7),.perf-items-table th:nth-child(8) { text-align:center; }
.perf-items-table.perf-teacher-table { width:max-content; min-width:100%; table-layout:auto; }
.perf-items-table.perf-teacher-table th:nth-child(1),.perf-items-table.perf-teacher-table td:nth-child(1) { width:44px; min-width:44px; text-align:center; }
.perf-items-table.perf-teacher-table th:nth-child(2),.perf-items-table.perf-teacher-table td:nth-child(2) { width:max-content; min-width:140px; white-space:nowrap; text-align:left; }
.perf-items-table.perf-teacher-table th:nth-child(3),.perf-items-table.perf-teacher-table td:nth-child(3) { width:max-content; min-width:max-content; white-space:pre; text-align:left; }
.perf-items-table.perf-teacher-table th:nth-child(4) { width:70px; min-width:70px; }
.perf-items-table.perf-teacher-table th:nth-child(5),.perf-items-table.perf-teacher-table th:nth-child(6) { width:120px; min-width:120px; }
.perf-items-table.perf-teacher-table th:nth-child(7),.perf-items-table.perf-teacher-table th:nth-child(8) { width:90px; min-width:90px; }
.perf-items-table.perf-teacher-table th:nth-child(9),.perf-items-table.perf-teacher-table td:nth-child(9) { width:max-content; min-width:max-content; white-space:nowrap; text-align:left; }
.perf-items-table.perf-teacher-table th:nth-child(10) { width:120px; min-width:120px; text-align:center; }
.perf-items-table.perf-teacher-table th:nth-child(1),.perf-items-table.perf-teacher-table th:nth-child(4),.perf-items-table.perf-teacher-table th:nth-child(5),.perf-items-table.perf-teacher-table th:nth-child(6),.perf-items-table.perf-teacher-table th:nth-child(7),.perf-items-table.perf-teacher-table th:nth-child(8) { text-align:center; }
.perf-items-table td:nth-child(4),.perf-items-table td:nth-child(5),.perf-items-table td:nth-child(6),.perf-items-table td:nth-child(7),.perf-items-table td:nth-child(8) { text-align:center; }
.perf-items-table.perf-teacher-table td:nth-child(10) { text-align:center; }
.perf-items-table td:nth-child(3),.perf-items-table td:nth-child(9) { white-space:pre-wrap; line-height:1.55; }
.perf-items-table td small { display:block; color:var(--muted); font-size:11px; }
.perf-inline-input { width:100%; min-width:0; box-sizing:border-box; padding:7px 9px; border:1px solid #d7e2ef; border-radius:7px; font-size:12px; }
.perf-explanation-input { width:100%; min-width:180px; min-height:48px; box-sizing:border-box; resize:vertical; padding:7px 9px; border:1px solid #d7e2ef; border-radius:7px; font:inherit; font-size:12px; line-height:1.45; }
.perf-items-table:not(.perf-deduction-table) th:nth-child(6),.perf-items-table:not(.perf-deduction-table) td:nth-child(6) { min-width:220px; text-align:left; white-space:normal; }
.perf-items-table.perf-deduction-table th:nth-child(7),.perf-items-table.perf-deduction-table td:nth-child(7) { min-width:220px; text-align:left; white-space:normal; }
.perf-record input[type="number"],.perf-editor-table input[type="number"],.perf-self-table input[type="number"] { -moz-appearance:textfield; appearance:textfield; }
.perf-record input[type="number"]::-webkit-inner-spin-button,.perf-record input[type="number"]::-webkit-outer-spin-button,.perf-editor-table input[type="number"]::-webkit-inner-spin-button,.perf-editor-table input[type="number"]::-webkit-outer-spin-button,.perf-self-table input[type="number"]::-webkit-inner-spin-button,.perf-self-table input[type="number"]::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.perf-percent-field { display:flex; align-items:center; gap:5px; min-width:0; }
.perf-percent-field .perf-inline-input { flex:1; }
.perf-percent-field i { flex:none; color:var(--muted); font-size:12px; font-style:normal; }
.perf-inline-input.perf-required-missing { border:2px solid #dc2626 !important; box-shadow:0 0 0 3px rgba(220,38,38,.14); background:#fff7f7; }
.perf-rule-input { min-width:0; }
.perf-money-input { min-width:100px; }
.perf-items-table td:nth-child(5),.perf-items-table td:nth-child(9),.perf-items-table td:nth-child(10) { white-space:normal; }
.perf-items-table.perf-teacher-table td:nth-child(9) { white-space:nowrap; line-height:1.55; }
.perf-items-table.perf-teacher-table.perf-columns-resizable { table-layout:fixed; width:max-content; }
.perf-items-table.perf-teacher-table.perf-columns-resizable th { position:relative; padding-right:14px; }
.perf-items-table.perf-teacher-table.perf-columns-resizable th:nth-child(2),.perf-items-table.perf-teacher-table.perf-columns-resizable td:nth-child(2),.perf-items-table.perf-teacher-table.perf-columns-resizable th:nth-child(3),.perf-items-table.perf-teacher-table.perf-columns-resizable td:nth-child(3),.perf-items-table.perf-teacher-table.perf-columns-resizable th:nth-child(9),.perf-items-table.perf-teacher-table.perf-columns-resizable td:nth-child(9) { width:auto; min-width:0; overflow:visible; overflow-wrap:anywhere; }
.perf-items-table.perf-teacher-table.perf-columns-resizable td:nth-child(2),.perf-items-table.perf-teacher-table.perf-columns-resizable td:nth-child(9) { white-space:normal; }
.perf-items-table.perf-teacher-table.perf-columns-resizable td:nth-child(3) { white-space:pre-wrap; line-height:1.55; }
.perf-col-resize-handle { position:absolute; z-index:3; top:0; right:-4px; bottom:0; width:8px; cursor:col-resize; touch-action:none; }
.perf-col-resize-handle::after { content:""; position:absolute; top:20%; bottom:20%; left:3px; width:2px; border-radius:2px; background:transparent; }
.perf-resize-tip { padding:5px 8px; border-radius:6px; background:#eff6ff; color:#315b9b; font-weight:600; }
.perf-col-resize-handle::after { background:rgba(59,130,246,.28); }
.perf-col-resize-handle:hover::after,.perf-col-resize-handle.dragging::after { background:#2563eb; width:3px; }
.perf-items-table.perf-deduction-table.perf-columns-resizable th:nth-child(2),.perf-items-table.perf-deduction-table.perf-columns-resizable td:nth-child(2),.perf-items-table.perf-deduction-table.perf-columns-resizable th:nth-child(3),.perf-items-table.perf-deduction-table.perf-columns-resizable td:nth-child(3),.perf-items-table.perf-deduction-table.perf-columns-resizable th:nth-child(4),.perf-items-table.perf-deduction-table.perf-columns-resizable td:nth-child(4) { overflow-wrap:anywhere; white-space:pre-wrap; line-height:1.5; }
.perf-items-table.perf-deduction-table td:nth-child(4) { text-align:left!important; }
.perf-col-resize-handle:hover::after,.perf-col-resize-handle.dragging::after { background:#3b82f6; }
.perf-column-resizing,.perf-column-resizing * { cursor:col-resize!important; user-select:none!important; }
.perf-resize-tip { margin:0 0 5px; color:var(--muted); font-size:11px; text-align:right; }
.perf-bonus-setup { display:flex; flex-wrap:wrap; justify-content:flex-start; align-items:center; gap:12px 32px; margin:0 0 12px; padding:13px 16px; border:1px solid #bfdbfe; border-radius:9px; background:#eff6ff; }
.perf-bonus-setup > label { display:flex; flex-direction:row; align-items:center; gap:10px; color:#1e3a8a; font-size:13px; font-weight:650; white-space:nowrap; }
.perf-bonus-setup input { width:100%; max-width:320px; background:#fff; }
.perf-money-entry { display:flex; align-items:center; gap:6px; width:100%; max-width:330px; }
.perf-money-entry i { color:#1e293b; font-style:normal; font-weight:700; }
.perf-money-entry input { flex:1; max-width:none; color:#1e293b; font-weight:650; }
.perf-bonus-value { color:#1e293b; font-size:13px; font-weight:700; }
.perf-job-template-control { display:flex; align-items:center; gap:9px; min-width:0; }
.perf-job-template-control label { flex:none; color:#1e3a8a; font-size:13px; font-weight:650; white-space:nowrap; }
.perf-job-template-value { min-width:0; color:#1e293b; font-size:13px; font-weight:600; white-space:nowrap; }
.perf-bonus-setup .perf-rater-control { display:flex; flex-direction:row; align-items:center; gap:9px; min-width:0; margin:0; white-space:nowrap; }
.perf-bonus-setup .perf-rater-control > label { flex:none; color:#1e3a8a; font-size:13px; font-weight:650; }
.perf-bonus-setup .perf-rater-control > b { overflow:hidden; color:#1e293b; font-size:13px; font-weight:600; text-overflow:ellipsis; }
.perf-rater-control-row { display:flex; flex:1; gap:8px; min-width:0; }
.perf-rater-control-row select { flex:1; min-width:0; height:34px; padding:0 10px; border:1px solid #d7e2ef; border-radius:7px; background:#fff; color:var(--text); }
.perf-bonus-setup > span { grid-column:1/-1; color:var(--muted); font-size:12px; }
.perf-auto-summary { margin-top:14px; padding:14px; border:1px solid #dbeafe; border-radius:10px; background:#f8fbff; }
.perf-auto-summary-head { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:12px; color:var(--muted); font-size:12px; }
.perf-auto-summary-head > b { color:#1e3a8a; font-size:14px; }
.perf-auto-summary-head label { display:flex; align-items:center; gap:7px; margin-left:auto; color:var(--text); }
.perf-auto-summary-head label .perf-inline-input { width:135px; }
.perf-score { font-weight:700; color:#1e3a8a; }
.perf-weight { font-weight:600; white-space:nowrap; }
.perf-review-notes { display:flex; flex-direction:column; gap:5px; margin-top:10px; color:var(--muted); font-size:12px; }
.perf-editor-help { margin-bottom:13px; line-height:1.7; }
.perf-editor-table,.perf-self-table { min-width:850px; }
.perf-editor-table th,.perf-self-table th { background:#f1f5f9; }
.perf-editor-table th:first-child,.perf-editor-table td:first-child,.perf-self-table th:first-child,.perf-self-table td:first-child { width:42px; text-align:center; }
.perf-editor-table td,.perf-self-table td { vertical-align:top; }
.perf-editor-table input,.perf-self-table input { min-width:95px; }
.perf-editor-table textarea { min-width:260px; min-height:54px; font-size:13px; }
.perf-self-table td:nth-child(3) { min-width:320px; white-space:pre-wrap; line-height:1.6; }
.perf-editor-footer { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-top:10px; color:var(--muted); font-size:13px; }
.perf-editor-footer b { color:var(--text); font-size:15px; }
@media(max-width:900px) {
  .perf-record-summary { grid-template-columns:minmax(135px,1fr) repeat(2,minmax(65px,.55fr)) repeat(2,minmax(96px,.8fr)); }
  .perf-record-state { grid-column:1/-1; justify-content:flex-end; }
  .perf-bonus-setup { gap:12px 24px; }
}
@media(max-width:620px) {
  .perf-record-summary { grid-template-columns:1fr 1fr; gap:12px; }
  .perf-person,.perf-record-state { grid-column:1/-1; }
  .perf-record-state { justify-content:flex-start; }
  .perf-detail-heading { align-items:flex-start; flex-direction:column; }
  .perf-detail-actions { justify-content:flex-start; }
  .perf-rater-control { flex-wrap:wrap; }
  .perf-rater-control select { min-width:180px; max-width:100%; }
  .perf-bonus-setup { flex-direction:column; align-items:flex-start; gap:14px; }
  .perf-bonus-setup > span { grid-column:auto; }
  .perf-filter-label { width:100%; }
}
/* 绩效奖金与等级汇总 */
.performance-summary-title { margin-top:14px; padding:10px 12px; border:1px solid #d7e2ef; border-bottom:0; border-radius:10px 10px 0 0; background:#f8fafc; color:#1e3a8a; font-size:14px; font-weight:700; }
.performance-summary-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border:1px solid #d7e2ef; border-radius:0 0 10px 10px; overflow:hidden; }
.performance-summary-grid > div { display:flex; flex-direction:column; gap:7px; min-height:72px; justify-content:center; padding:12px 14px; border-right:1px solid #e2e8f0; border-bottom:1px solid #e2e8f0; background:#fff; }
.performance-summary-grid > div:nth-child(3n) { border-right:0; }
.performance-summary-grid > div:nth-last-child(-n+3) { border-bottom:0; }
.performance-summary-grid small { color:var(--muted); font-size:12px; }
.performance-summary-grid b { color:#1e3a8a; font-size:18px; }
.performance-summary-grid .grade-s { color:#15803d; }.performance-summary-grid .grade-a { color:#2563eb; }.performance-summary-grid .grade-b { color:#0f766e; }.performance-summary-grid .grade-c { color:#d97706; }.performance-summary-grid .grade-d { color:#dc2626; }
.performance-summary-grid .performance-summary-pay { background:#eff6ff; }
.performance-summary-grid .performance-summary-pay b { color:#1d4ed8; font-size:21px; }
.performance-policy { margin-top:12px; padding:14px 16px; border:1px solid #e2e8f0; border-radius:10px; background:#f8fafc; color:#475569; font-size:12px; line-height:1.7; }
.performance-policy > b { display:block; margin-bottom:8px; color:#1e293b; font-size:13px; }
.performance-grade-rules { display:flex; flex-wrap:wrap; gap:7px; }
.performance-grade-rules span { padding:4px 8px; border-radius:6px; background:#fff; border:1px solid #e2e8f0; }
.performance-policy p { margin-top:8px; color:#b45309; }
@media(max-width:700px) { .performance-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .performance-summary-grid > div:nth-child(3n) { border-right:1px solid #e2e8f0; } .performance-summary-grid > div:nth-child(2n) { border-right:0; } .performance-summary-grid > div:nth-last-child(-n+3) { border-bottom:1px solid #e2e8f0; } .performance-summary-grid > div:last-child { border-bottom:0; } }
.performance-payout-formula { margin-bottom:8px; color:#334155; font-weight:600; }
