/* 业务页公共基础；不修改门户尺寸。页面只使用自己的局部类。 */
.page-stack { min-height: 100%; display: flex; flex-direction: column; }
.page-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; border-bottom: 1px solid var(--line); margin-bottom: 1rem; }
.content-tabs { display: flex; align-self: stretch; gap: 1.25rem; min-width: 0; overflow-x: auto; }
.content-tab { padding: .625rem .625rem .875rem; white-space: nowrap; border-bottom: 2px solid transparent; }
.content-tab[aria-selected="true"] { color: var(--primary); border-bottom-color: var(--primary); font-weight: 600; }
.count { margin-left: .375rem; display: inline-flex; align-items: center; justify-content: center; min-width: 1.25rem; height: 1.25rem; padding: 0 .25rem; font-size: var(--small-text); border-radius: 1rem; background: #eef1f6; }
.content-tab[aria-selected="true"] .count { color: #fff; background: var(--primary); }
.button { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 2.25rem; padding: .375rem 1.125rem; border: 1px solid var(--control-line); border-radius: var(--radius); background: #fff; white-space: nowrap; }
.button:hover { color: var(--primary); border-color: #88b3ff; }
.button.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.button.primary:hover { background: var(--primary-hover); }
.page-toolbar > .button { margin-bottom: .5rem; }
.filters { display: grid; grid-template-columns: minmax(12rem, 1.2fr) minmax(10rem, 1fr) minmax(10rem, 1fr) auto auto; gap: .75rem; margin-bottom: 1rem; align-items: center; }
.search-control { display: flex; align-items: center; gap: .5rem; min-height: 2.5rem; border: 1px solid var(--control-line); border-radius: var(--radius); padding: .5rem .75rem; color: var(--muted); }
.search-control:focus-within { border-color: var(--primary); box-shadow: 0 0 0 2px var(--selected); }
.search-control input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text); }
.select-control { display: flex; align-items: center; gap: .25rem; min-height: 2.5rem; border: 1px solid var(--control-line); border-radius: var(--radius); padding: .375rem .625rem; }
.select-control > span { color: var(--muted); flex: 0 0 auto; }
.select-control select { min-width: 0; width: 100%; border: 0; background: #fff; padding: .125rem; }
.filters > .button { min-height: 2.5rem; min-width: 5rem; }
.table-scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); flex: 0 0 auto; }
.data-table { width: 100%; border-collapse: collapse; table-layout: fixed; min-width: 48rem; }
.data-table th { text-align: left; padding: .75rem 1rem; background: #f5f6f8; font-weight: 600; white-space: nowrap; }
.data-table td { padding: .875rem 1rem; border-top: 1px solid var(--line); vertical-align: middle; line-height: 1.55; overflow-wrap: anywhere; }
.data-table tr:hover td { background: #fbfcfe; }
.data-table .name-column { width: 23%; }
.data-table .work-column { width: 16%; }
.data-table .deadline-column { width: 15%; }
.data-table .action-column { width: 13%; min-width: 7rem; }
.data-table .record-name { font-weight: 500; }
.subtext { color: var(--muted); font-size: var(--small-text); margin-top: .125rem; }
.task-note { display: flex; align-items: baseline; gap: .625rem; }
.dot { display: inline-block; flex: 0 0 .5rem; height: .5rem; border-radius: 50%; background: #acb2c0; }
.dot.warning { background: #fa9b0a; }
.text-button { color: var(--primary); padding: .125rem 0; white-space: nowrap; }
.text-button:hover { text-decoration: underline; text-underline-offset: .1875rem; }
.section-heading { font-size: var(--section-size); line-height: 1.5; margin: 1.25rem 0 .75rem; font-weight: 600; }
.waiting-list { border: 1px solid var(--line); border-radius: var(--radius); }
.waiting-row { display: flex; gap: .75rem; align-items: center; min-height: 2.875rem; padding: .625rem 1rem; }
.waiting-row + .waiting-row { border-top: 1px solid var(--line); }
.waiting-row > .icon { color: var(--primary); }
.waiting-row > span { flex: 1; }
.page-note { display: flex; align-items: center; gap: .5rem; padding-top: 1.5rem; color: #8b94a5; font-size: var(--small-text); margin-top: auto; }
.page-note .icon { width: 1rem; height: 1rem; }
.result-summary { color: var(--muted); font-size: var(--small-text); margin: .625rem 0 0; }
.table-empty { text-align: center !important; color: var(--muted); height: 10rem; }
.placeholder-view { display: grid; place-items: center; align-content: center; gap: .75rem; min-height: 20rem; height: 100%; color: var(--muted); text-align: center; }
.placeholder-view > .icon { width: 2.5rem; height: 2.5rem; color: #b9c3d2; }
.placeholder-view p { margin: 0; }
.detail-summary { display: grid; grid-template-columns: 8rem minmax(0, 1fr); border-top: 1px solid var(--line); margin: 0; }
.detail-summary dt, .detail-summary dd { margin: 0; border-bottom: 1px solid var(--line); padding: 1rem; }
.detail-summary dt { color: var(--muted); background: #fafbfd; }
.detail-note { color: var(--muted); padding: 1rem 0; }
@media (max-width: 1200px) { .filters { grid-template-columns: minmax(10rem, 1.4fr) minmax(9rem, 1fr) minmax(9rem, 1fr) auto auto; gap: .5rem; } .filters > .button { min-width: 4rem; padding-inline: .75rem; } .content-tabs { gap: .625rem; } }
@media (max-width: 960px) { .filters { grid-template-columns: minmax(12rem, 1fr) minmax(9rem, 1fr) auto auto; } .filters > .search-control { grid-column: 1 / -1; } .data-table { min-width: 46rem; } .page-toolbar { gap: .5rem; flex-wrap: wrap; } }
@media (max-width: 520px) { .filters { grid-template-columns: 1fr 1fr; } .waiting-row { flex-wrap: wrap; } .waiting-row .text-button { margin-left: auto; } .content-tabs { gap: 0; } }
