/* base-components.css v2 — Modern Components */
:root{--oc-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
input,select,textarea,button,table,th,td{font-family:var(--oc-font-family)}
input,select,textarea{font-size:13px}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 14px;height:38px;border-radius:10px;text-decoration:none;font-size:13px;font-weight:600;border:1px solid transparent;cursor:pointer;transition:all .15s ease;background:#2563eb;color:#fff;border-color:#2563eb;box-shadow:0 1px 3px rgba(37,99,235,.15)}
.btn:hover{background:#1d4ed8;border-color:#1d4ed8;box-shadow:0 4px 12px rgba(37,99,235,.25);transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-primary{background:#2563eb;color:#fff;border-color:#2563eb;box-shadow:0 1px 3px rgba(37,99,235,.15)}
.btn-primary:hover{background:#1d4ed8;border-color:#1d4ed8;box-shadow:0 4px 12px rgba(37,99,235,.25)}
.btn-secondary{background:#2563eb;color:#fff;border-color:#2563eb;box-shadow:0 1px 3px rgba(37,99,235,.15)}
.btn-secondary:hover{background:#1d4ed8;border-color:#1d4ed8;box-shadow:0 4px 12px rgba(37,99,235,.25)}
.btn-danger{background:#dc2626;color:#fff;border-color:#dc2626;box-shadow:0 1px 3px rgba(220,38,38,.15)}
.btn-danger:hover{background:#b91c1c;border-color:#b91c1c;box-shadow:0 4px 12px rgba(220,38,38,.2)}

/* ===== Inputs ===== */
.filters input,.filters select,.input,.oc-select{padding:0 12px;height:36px;border:1px solid #d0d5dd;border-radius:10px;font-size:13px;background:#fff;color:#344054;outline:none;transition:border-color .15s,box-shadow .15s}
.filters input:focus,.oc-select:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.1)}

.input-wrap{position:relative;display:inline-flex;align-items:center;max-width:100%}
.input-wrap .with-clear{width:100%;box-sizing:border-box;padding-right:30px}
.input-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:2;width:16px;height:16px;border:0;border-radius:999px;background:#e5e7eb;color:#667085;font-size:12px;line-height:16px;display:none;align-items:center;justify-content:center;cursor:pointer;padding:0}
.input-wrap.has-value .input-clear{display:inline-flex}

/* ===== Segment buttons ===== */
.seg{display:inline-flex;border:1px solid #d0d5dd;border-radius:10px;overflow:hidden;background:#fff;height:36px}
.seg button{padding:0 12px;display:inline-flex;align-items:center;text-decoration:none;color:#344054;font-size:13px;border:0;border-right:1px solid #e4e7ec;height:36px;background:#fff;cursor:pointer;transition:background .15s}
.seg button:last-child{border-right:none}
.seg button.active{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff}

/* ===== Tables ===== */
table{width:100%;border-collapse:collapse}
th,td{padding:10px 12px;border-bottom:1px solid #f2f4f7;font-size:13px;text-align:center;vertical-align:top}
th{background:#fafafa;color:#475467;font-weight:700}
th .thlink{color:#475467;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:4px;width:100%}
tbody tr{transition:background .12s}
tbody tr:hover{background:#f8faff}

/* ===== Pagination buttons ===== */
.page-btn{padding:6px 10px;height:32px;display:inline-flex;align-items:center;border:1px solid #d0d5dd;border-radius:8px;background:#fff;color:#344054;text-decoration:none;font-size:12px;font-weight:600;transition:all .15s}
.page-btn:hover{background:#f9fafb;border-color:#98a2b3}
.page-btn.active{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(37,99,235,.2)}
.page-btn.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}

/* ===== Page jump ===== */
.page-jump input{width:68px;height:32px;border:1px solid #d0d5dd;border-radius:8px;padding:0 8px;font-size:12px;text-align:center;outline:none}
.page-jump .jump-err{position:absolute;left:0;top:-42px;display:none;align-items:center;padding:6px 10px;border:1px solid #fde68a;border-radius:8px;background:#fffbeb;color:#92400e;font-size:12px;font-weight:500;white-space:nowrap;box-shadow:0 8px 20px rgba(16,24,40,.1);z-index:2400}
.page-jump button{height:32px;padding:0 10px;border:1px solid #d0d5dd;border-radius:8px;background:#fff;color:#344054;font-size:12px;font-weight:600;cursor:pointer}

/* ===== Tags / Badges ===== */
.tag,.chip,.role-pill{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:700;transition:all .15s}

/* ===== Action links (统一操作列文字按钮) ===== */
.op-link{display:inline-flex;align-items:center;height:26px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:600;color:#2563eb;text-decoration:none;cursor:pointer;border:0;background:transparent;white-space:nowrap}
.op-link:hover{background:#eff6ff;color:#1d4ed8}
.op-link.danger{color:#dc2626}
.op-link.danger:hover{background:#fef2f2;color:#b91c1c}
.op-link.warn{color:#d97706}
.op-link.warn{background:transparent}
.op-link.warn:hover{background:#fffbeb;color:#b45309}
.op-link.success{color:#16a34a}
.op-link.success:hover{background:#f0fdf4;color:#15803d}
.op-link:disabled,.op-link.is-disabled{opacity:.4;cursor:not-allowed;pointer-events:none;background:transparent}
