.tw-obligations{--ob-ink:#30445e;--ob-muted:#68788a;--ob-green:#22704e;--ob-orange:#9c4d15;--ob-line:#e6ebf0;--ob-blue:#245c91;font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.tw-obligations .ob-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 18px 16px}
.ob-toolbar strong{font-size:15px;font-weight:600;color:var(--ob-ink)}
.ob-toolbar b{font-variant-numeric:tabular-nums;margin:0 4px}
.ob-toolbar p{margin:6px 0 0;color:var(--ob-muted);font-size:12px}
.ob-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tw-obligations .ob-query{background:var(--ob-blue);color:#fff;border-color:var(--ob-blue);padding:9px 16px;font-weight:600}
.tw-obligations button:disabled{opacity:.5;cursor:default}
.ob-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:12px 18px;border-top:1px solid var(--ob-line);border-bottom:1px solid var(--ob-line);color:var(--ob-muted);font-size:12px;background:#f7f9fb}
.ob-scope{margin-left:auto}.ob-complete{color:var(--ob-green)}.ob-unfiled{color:var(--ob-orange)}
.ob-progress{margin:14px 18px;padding:12px 16px;background:#edf4fa;border-left:3px solid var(--ob-blue);color:var(--ob-ink)}
.ob-progress>div{display:flex;justify-content:space-between;gap:10px;font-size:13px;flex-wrap:wrap}
.ob-progress progress{display:block;width:100%;height:5px;margin:10px 0;accent-color:var(--ob-blue)}
.ob-progress small{color:var(--ob-muted);font-size:12px}
.tw-desk .tw-obligation-grid{min-width:960px}
.tw-desk .tw-obligation-grid th:first-child,.tw-desk .tw-obligation-grid td:first-child{width:30%;text-align:left}
.tw-desk .tw-obligation-grid th:nth-child(2){width:27%}.tw-desk .tw-obligation-grid th:nth-child(3){width:20%}.tw-desk .tw-obligation-grid th:nth-child(4){width:13%;text-align:center}.tw-desk .tw-obligation-grid th:nth-child(5){width:10%}
.tw-desk .tw-obligation-grid td{padding:20px 18px;vertical-align:middle;line-height:1.6;text-align:center;font-size:14px;height:104px;box-sizing:border-box;border-bottom:1px solid var(--ob-line)}
.tw-desk .tw-obligation-grid th{padding:14px 18px;font-size:13px;font-weight:500;text-align:center;color:#526377;background:#f6f8fb;border-bottom:1px solid #dce4ed}
.tw-desk .tw-obligation-grid small{color:var(--ob-muted);font-size:12px;line-height:1.6;margin-top:6px}
.tw-desk .tw-obligation-grid .tw-name{display:block;max-width:100%;color:var(--ob-ink);font-size:15px;font-weight:600;line-height:1.6;white-space:normal;overflow-wrap:anywhere}
.tw-obligations .ob-person{margin-top:6px;color:#44546a;font-size:13px;line-height:1.6}
.ob-person>span{margin-right:8px;color:var(--ob-muted);font-size:12px}
.tw-desk .tw-obligation-grid .ob-tax-id{font-size:11px;margin-top:4px;letter-spacing:.2px}
.tw-desk .tw-obligation-grid tbody>tr[data-ob-company]:hover{background:#f8fbfe}
.ob-status-line{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.ob-badge{display:inline-flex;align-items:center;gap:6px;border-radius:5px;padding:6px 9px;font-size:13px;font-weight:600;white-space:nowrap}
.ob-badge i{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid currentColor;border-radius:50%;font-style:normal;font-size:11px}
.ob-badge b{font-size:11px;font-weight:400;border-left:1px solid currentColor;padding-left:6px;margin-left:2px}
.ob-badge.ob-complete{background:#eaf5ef}.ob-badge.ob-unfiled{background:#fff1e6}.ob-badge.ob-unknown{color:var(--ob-muted);background:#f0f3f6}.ob-badge.ob-querying{color:var(--ob-blue);background:#eaf2fb}
.ob-badge.ob-future{color:var(--ob-blue);background:#eaf2fb}.ob-badge.ob-review{color:#725a32;background:#f4efe5}
.ob-item-label{display:block;font-size:11px;font-weight:600;margin-bottom:4px}.ob-item-label.ob-future{color:var(--ob-blue)}.ob-item-label.ob-review{color:#725a32}
.tw-desk .tw-obligation-grid .ob-items small{display:block}
.tw-obligations .ob-detail{background:none;border:0;color:var(--ob-blue);font:inherit;font-size:12px;padding:3px 0;cursor:pointer;text-decoration:none}
.ob-detail:hover{text-decoration:underline}
.tw-obligations .ob-cell-actions{display:flex;justify-content:center;align-items:center;gap:6px 16px;flex-wrap:wrap;margin-top:6px}
.tw-obligations .ob-cell-actions:empty{display:none}
.tw-obligations .ob-declare{display:inline-flex;align-items:center;justify-content:center;min-width:76px;min-height:36px;padding:0 16px;box-sizing:border-box;border:1px solid var(--ob-blue);border-radius:5px;background:var(--ob-blue);color:#fff;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap}
.tw-obligations .ob-declare:hover{background:#1c4d7b;border-color:#1c4d7b}
.ob-payment{font-size:13px}.tw-obligations .tw-number{font-variant-numeric:tabular-nums}
.tw-desk .tw-obligation-grid .tw-unpaid-amount{font-size:17px;font-weight:600}
.tw-obligations .tw-obligation-note{padding:0 18px 16px;line-height:1.7}
.tw-obligation-note summary{cursor:pointer;width:fit-content}
.tw-obligation-note p{margin:8px 0 0;max-width:1000px}
.tw-obligations summary:focus-visible{outline:2px solid var(--ob-blue);outline-offset:3px}
.tw-desk .tw-obligation-grid .ob-detail-row td{padding:0 18px 16px;background:#f7f9fb;width:auto}
.ob-items{padding:14px 16px;border-left:2px solid #d4dfe9}.ob-items>strong{font-size:12px;color:var(--ob-ink)}
.tw-desk .tw-obligation-grid .ob-items ul{list-style:none;padding:0;margin:12px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 24px}
.tw-desk .tw-obligation-grid .ob-items li{font-size:13px;margin:0}
.tw-obligations button:focus-visible,.tw-obligations a:focus-visible{outline:2px solid var(--ob-blue);outline-offset:3px}
@media(max-width:700px){.tw-obligations .ob-toolbar{align-items:flex-start;flex-direction:column;padding:16px 12px}.ob-tools{width:100%}.ob-query{flex:1}.ob-legend{gap:10px 14px;padding:12px}.ob-scope{margin-left:0;width:100%}.ob-progress{margin:12px}.tw-desk .tw-obligation-grid .ob-items ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* 2026-10-21: compact status cells. One time line, one short reason, details on demand; text never spills into the next column. */
.tw-desk .tw-obligation-grid td{height:auto;padding:14px 16px}
.tw-desk .tw-obligation-grid td small{display:block;max-width:none;white-space:normal;overflow-wrap:anywhere}
.tw-desk .tw-obligation-grid .ob-when{font-variant-numeric:tabular-nums;margin-top:6px}
.tw-obligations .ob-issue{display:inline-block;max-width:100%;margin-top:6px;text-align:left;font-size:12px}
.tw-obligations .ob-issue summary{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:#a14b12;background:#fff4ea;border:1px solid #f3d3b8;border-radius:999px;padding:2px 10px;list-style:none;white-space:nowrap}
.tw-obligations .ob-issue summary::-webkit-details-marker{display:none}
.tw-obligations .ob-issue summary::after{content:'详情';color:#8a96a6;font-size:11px}
.tw-obligations .ob-issue[open] summary::after{content:'收起'}
.tw-obligations .ob-issue p{margin:6px 0 0;padding:8px 10px;background:#f7f9fb;border-radius:6px;color:#526377;line-height:1.6;white-space:normal;overflow-wrap:anywhere;max-width:320px}
.tw-obligations .ob-cell-actions{margin-top:4px}
.tw-obligations .ob-payment{display:block}
/* 2026-10-21: 特殊类 and queue states */
.tw-obligations .ob-special{color:#725a32}
.tw-obligations .ob-querying{color:var(--ob-blue)}
.tw-obligations .ob-badge.ob-queued{color:#5b6b7c;background:#eef1f5}
.tw-obligations .ob-special-chip{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:11px;font-size:12px;color:#725a32;background:#f4efe5;white-space:nowrap}
.tw-obligations .ob-item-label.ob-special{color:#725a32}
.tw-obligations .ob-item-label.ob-unfiled{color:var(--ob-orange)}
/* 2026-10-21: legend works as a filter */
.tw-obligations .ob-legend .ob-filter{appearance:none;border:1px solid transparent;background:transparent;font:inherit;font-size:12px;color:var(--ob-muted);padding:3px 10px;border-radius:12px;cursor:pointer;line-height:1.4}
.tw-obligations .ob-legend .ob-filter.ob-complete{color:var(--ob-green)}
.tw-obligations .ob-legend .ob-filter.ob-unfiled{color:var(--ob-orange)}
.tw-obligations .ob-legend .ob-filter.ob-special{color:#725a32}
.tw-obligations .ob-legend .ob-filter.ob-querying{color:var(--ob-blue)}
.tw-obligations .ob-legend .ob-filter:hover{background:#fff;border-color:var(--ob-line)}
.tw-obligations .ob-legend .ob-filter[aria-pressed="true"]{background:#fff;border-color:currentColor;font-weight:600}
.tw-obligations .ob-legend .ob-filter:focus-visible{outline:2px solid var(--ob-blue);outline-offset:1px}
