/* Design v9 task list (boards AdminTasks and AdminTaskDetail, FE9-5b and
   FE9-5c): the page head (title and one line with the time zone), then one
   white card: the status tabs, the toolbar (the search, the filter chips of
   the shared controls, 清除筛选, and at the right the time range, 更新于 and
   refresh), the notes, the table and its foot (rows shown, page size,
   加载更多). A row opens the sheet at the right, non-modal, under the staff
   bar and its menus, with the task's detail in four tabs. From 1440px the table has nine columns; under 1440px
   the margin folds into the cost column (成本 / 毛利); under 1024px a row
   is the board's two-line row, and under 768px the sheet takes the screen.
   The card, tab, badge and glyph pieces are the staff ones of
   shared/base.css; this file places the parts. Local layout only; no
   outside assets. */
.tlist-list { display: flex; flex-direction: column; gap: 0; min-width: 0; margin: 0; }
/* The list and the sheet are sections of the page's stack, not boxes. */
body.admin-console main.admin-stack > section.tlist-list { gap: 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
body.admin-console main.admin-stack > section.tlist-detail { gap: 0; padding: 0; border: 0; }
.tlist-head { margin: 0 0 20px; }
.tlist-head .page-desc { display: flex; flex-wrap: wrap; gap: 0 6px; }
#tlist-zone:empty { display: none; }

/* The status tabs sit on the card's top edge, ink with a 2px bar. */
.tlist-tabs { border-radius: var(--r-12) var(--r-12) 0 0; }

/* The toolbar: the search and the chips at the left, the range, 更新于
   and refresh at the right; 56px high, wrapping on narrow screens. */
#tlist-filters { display: block; margin: 0; padding: 0; border: 0; }
.tlist-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; min-height: 56px; padding: 12px 20px; border-bottom: 1px solid var(--line-soft); }
.tlist-filters-row { display: flex; flex: 1 1 auto; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0; }
.tlist-tools-end { display: flex; flex: none; align-items: center; gap: 8px; margin-left: auto; }
.tlist-search { position: relative; flex: 0 1 280px; width: 280px; min-width: 200px; height: 32px; padding: 0 4px 0 4px; }
.tlist-search > input { font: 400 13px/20px var(--font-mono); }
.tlist-search > .btn.tlist-search-go { color: var(--text-3); }
.tlist-search > .btn.tlist-search-go:hover { color: var(--text-1); }
.tlist-search > .btn.tlist-search-go:disabled, .tlist-search > .btn.tlist-search-go:disabled:hover { background: transparent; color: var(--text-3); }
.tlist-ph { position: absolute; top: 5px; right: 36px; left: 32px; overflow: hidden; color: var(--text-3); font: 400 14px/20px var(--font-sans); white-space: nowrap; text-overflow: ellipsis; pointer-events: none; }
#tlist-task:not(:placeholder-shown) ~ .tlist-ph { display: none; }
.tlist-chips { display: contents; }
.tlist-range { display: inline-flex; flex: none; }
.tlist-reset.btn { flex: none; }
.tlist-reset[hidden] { display: none; }
#tlist-updated:empty { display: none; }
#tlist-refresh[aria-busy="true"] > .glyph { opacity: .5; }

/* Hints, failures, loading and notes sit between the toolbar and the
   table, inset like the rows. */
#tlist-filters > p { margin: 0; }
.tlist-hint:not([hidden]) { padding: 10px 20px 0; color: var(--danger-fg); font-size: 13px; line-height: 20px; }
#tlist-message:not(:empty) { margin: 12px 20px 0; padding: 10px 12px 10px 16px; border: 1px solid var(--danger-border); border-radius: var(--r-8); background: var(--danger-tint); color: var(--danger-fg); font-size: 14px; line-height: 20px; }
.tlist-progress:not(:empty) { position: relative; padding: 12px 20px; color: var(--text-3); font-size: 13px; line-height: 20px; }
.tlist-progress:not(:empty)::before { content: ""; position: absolute; top: -1px; right: 0; left: 0; height: 2px; background: var(--violet-500); animation: tlist-bar 1.4s var(--ease) infinite; transform-origin: left; }
@keyframes tlist-bar { 0% { transform: scaleX(.1); } 60% { transform: scaleX(.8); } 100% { transform: scaleX(1); opacity: 0; } }
.tlist-results { display: flex; flex-direction: column; gap: 0; min-width: 0; margin: 0; }
.tlist-results > .tlist-note { margin: 12px 20px 0; }
.tlist-results > .tlist-note[hidden] { display: none; }

/* The table: fixed columns, the head sticky under the top bar on white (a
   staff head has no fill, so the rows would show through it); the region
   clips sideways instead of scrolling, so the head sticks to the page. The
   task column takes what the others leave: at 1440px about 250px, at
   1024px (the margin folded) about 220px. */
.tlist-scroll { overflow-x: clip; }
.tlist-results:has(> .tlist-empty:not([hidden])) > .tlist-scroll { display: none; }
.tlist-table { table-layout: fixed; width: 100%; }
.tlist-table > thead th { position: sticky; top: var(--topbar-height); z-index: var(--z-head); background: var(--gray-0); white-space: nowrap; }
.tlist-table > thead .tlist-c-status { width: 116px; }
.tlist-table > thead .tlist-c-team { width: 12%; }
.tlist-table > thead .tlist-c-channel { width: 16%; }
.tlist-table > thead .tlist-c-cost { width: 100px; }
.tlist-table > thead .tlist-c-charge { width: 100px; }
.tlist-table > thead .tlist-c-margin { width: 92px; }
.tlist-table > thead .tlist-c-time { width: 104px; }
.tlist-table > thead .tlist-c-menu { width: 48px; }
.tlist-table .tlist-narrow, .tlist-row .tlist-cost-margin { display: none; }
body.admin-console .tlist-row > td { height: 56px; padding: 8px 12px; color: var(--text-1); font-size: 13px; line-height: 20px; vertical-align: middle; overflow-wrap: normal; font-variant-numeric: tabular-nums; }
body.admin-console .tlist-row > td:first-child { padding-left: 20px; }
body.admin-console .tlist-row > td:last-child { padding-right: 12px; }
.tlist-row { cursor: pointer; }
.tlist-row:has(.tlist-pick[aria-pressed="true"]) > td { background: var(--violet-50); }
.tlist-row:has(.tlist-pick[aria-pressed="true"]) > td:first-child { box-shadow: inset 2px 0 0 var(--violet-600); }
.tlist-line { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tlist-sub { display: block; min-width: 0; margin-top: 2px; overflow: hidden; color: var(--text-3); font-size: 13px; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; }
.tlist-row code { font: 400 12px/20px var(--font-mono); }
.tlist-row code.tlist-sub { margin-top: 2px; line-height: 18px; }
.tlist-pick { display: block; max-width: 100%; min-height: 0; padding: 0; overflow: hidden; border: 0; background: none; box-shadow: none; color: var(--text-1); font: 500 13px/20px var(--font-mono); text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.tlist-pick:hover, .tlist-pick:focus-visible { border: 0; background: none; color: var(--violet-700); text-decoration: underline; text-underline-offset: 3px; }
.tlist-pick[aria-pressed="true"] { color: var(--violet-800); }
.tlist-team { font-size: 14px; }
/* The team and API key names of a row are buttons that filter the list:
   text that underlines on hover, never a box. */
button.tlist-filter { display: block; max-width: 100%; min-height: 0; padding: 0; overflow: hidden; border: 0; background: none; box-shadow: none; color: var(--text-1); font: inherit; text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
button.tlist-filter.tlist-team { font-size: 14px; }
button.tlist-filter.tlist-sub { color: var(--text-3); font-size: 13px; }
button.tlist-filter:hover, button.tlist-filter:focus-visible { border: 0; background: none; color: var(--violet-700); text-decoration: underline; text-underline-offset: 3px; }
.tlist-hop { margin-left: 6px; color: var(--text-3); font-size: 12px; }
.tlist-faint, .tlist-held { color: var(--text-3); }
.tlist-held .money, .tlist-held .money-tail { color: var(--text-3); }
.tlist-row .money, .tlist-row .tlist-amount { font-size: 14px; font-variant-numeric: tabular-nums; }
.tlist-row .tlist-sub .money { font-size: 13px; }
/* Lists round money once to cents (SHELL 6.2): the page passes the rounded
   amount, whose last four of six places are zeros, hidden here; the exact
   amount is the title, and the sheet shows every digit. */
.tlist-row .money-tail { display: none; }
.tlist-row .badge { max-width: 100%; }
.tlist-row > td:first-child > .badge { display: flex; width: fit-content; }
.tlist-flag { margin-top: 4px; }
.tlist-code { color: var(--text-2); }
.tlist-row time { white-space: nowrap; }
.tlist-menu-cell { text-align: right; }
.tlist-menu { position: relative; display: inline-block; }
.tlist-menu > summary { list-style: none; color: var(--gray-400); }
.tlist-menu > summary::-webkit-details-marker { display: none; }
.tlist-row:hover .tlist-menu > summary, .tlist-menu[open] > summary { color: var(--gray-700); }
.tlist-menu-panel { position: absolute; top: calc(100% + 4px); right: 0; z-index: var(--z-menu); width: 240px; text-align: left; cursor: default; }
.tlist-menu-panel > a.menu-item { color: var(--text-1); }
.tlist-menu-panel > a.menu-item:hover { color: var(--text-1); text-decoration: none; }
.tlist-menu-panel .glyph-copy-14 { color: var(--gray-700); }
.tlist-empty[hidden] { display: none; }

/* The foot: rows shown, the end, the page size and 加载更多. */
.tlist-foot { gap: 8px 16px; }
.tlist-foot > p { margin: 0; }
.tlist-count:empty, .tlist-summary:empty { display: none; }
.tlist-summary { margin-right: auto; color: var(--text-2); }
.tlist-count { color: var(--text-2); }
.tlist-size { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.tlist-size > label { color: var(--text-2); font-size: 13px; line-height: 20px; }
.tlist-size > .select { width: 76px; }
.tlist-more:has(> [hidden]) { display: none; }

/* The sheet: 640px at the right (560 under 1280px), 8px off the edges and
   under the top bar, non-modal; its head holds the task ID, the status,
   查看交换记录 and the close button; the summary line under it, then the
   detail, which scrolls. It stacks over the sticky table head (10) and the
   sidebar (20) but under the staff bar (25), whose bell, search and
   operator menus open over it, the filter panels (50) and the phone nav
   drawer (60). */
.tlist-detail { position: fixed; top: calc(var(--topbar-height) + 8px); right: 8px; bottom: 8px; z-index: 24; display: flex; flex-direction: column; width: 640px; max-width: calc(100% - 16px); margin: 0; overflow: hidden; border-radius: var(--r-12); background: var(--gray-0); box-shadow: var(--e3); }
.tlist-detail[hidden] { display: none; }
.tlist-sheet-head { display: flex; flex: none; align-items: center; gap: 12px; min-height: 56px; padding: 8px 12px 8px 20px; border-bottom: 1px solid var(--line-soft); }
.tlist-sheet-title { display: flex; flex: 1 1 auto; align-items: center; gap: 10px; min-width: 0; }
#tlist-detail-title { min-width: 0; margin: 0; overflow: hidden; color: var(--text-1); font: 500 14px/20px var(--font-mono); text-overflow: ellipsis; white-space: nowrap; }
#tlist-detail-status:empty { display: none; }
.tlist-sheet-actions { display: flex; flex: none; align-items: center; gap: 8px; }
.tlist-sheet-actions > .btn > .glyph { color: var(--gray-700); }
.tlist-detail-meta { flex: none; margin: 0; padding: 10px 20px; border-bottom: 1px solid var(--line-soft); color: var(--text-2); font-size: 13px; line-height: 20px; }
.tlist-detail-meta:empty { display: none; }
.tlist-detail-meta code { font: 400 12px/20px var(--font-mono); }
.tlist-detail-body { display: flex; flex: 1 1 auto; flex-direction: column; gap: 24px; min-height: 0; padding: 16px 20px 32px; overflow-y: auto; }
.tlist-detail-body > .module-status { margin: 0; color: var(--text-2); font-size: 14px; }
.tlist-detail-body code { font: 400 12px/20px var(--font-mono); overflow-wrap: anywhere; }
/* The sheet's tabs sit under its summary line; the body under them
   scrolls. A tab keeps no margin: the global [role="tab"] rule pulls it 1px
   under the strip, which then clips the current tab's 2px ink bar. */
body.admin-console .tlist-sheet-tabs { flex: none; padding: 0 20px; }
body.admin-console .tlist-sheet-tabs > .s-tab { height: 44px; margin: 0; }
/* A tab's head: what the tab shows and the link to the page with the rest. */
.tlist-tab-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; }
.tlist-tab-head > p { flex: 1 1 280px; margin: 0; color: var(--text-2); font-size: 13px; line-height: 20px; }
.tlist-full { flex: none; font-size: 13px; }
/* The board's facts: small labels over values, four to a row (two under
   768px). */
.dl.tlist-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px 20px; }
.dl.tlist-grid dd { overflow-wrap: anywhere; }
/* 概要 rounds money once to cents, as the list does (SHELL 6.2): the last
   four of the six places are zeros, hidden here; the exact amount is the
   title, and 账务 shows every digit. */
.dl.tlist-grid .money-tail { display: none; }
.dl.tlist-grid dd .tlist-sub { white-space: normal; }
.tlist-review { gap: 8px; }
.tlist-review > span:not(.glyph) { flex: 1 1 200px; min-width: 0; }
.tlist-section { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.tlist-section-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.tlist-section-head > h3 { margin: 0; color: var(--text-1); font: 600 14px/20px var(--font-sans); }
.tlist-section-head > p { margin: 0; color: var(--text-3); font-size: 13px; line-height: 20px; }
.tlist-attempts { overflow-x: auto; }
.tlist-attempt-table { width: 100%; }
body.admin-console .tlist-attempt-table > thead th { height: 32px; padding: 0 8px; font-size: 12px; white-space: nowrap; }
body.admin-console .tlist-attempt-table > tbody td { height: 40px; padding: 4px 8px; font-size: 13px; line-height: 20px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tlist-attempt-table th:first-child, .tlist-attempt-table td:first-child { padding-left: 0; }
.tlist-attempt-table th:last-child, .tlist-attempt-table td:last-child { padding-right: 0; }
.tlist-more-facts > summary { color: var(--text-2); font-size: 13px; line-height: 20px; cursor: pointer; }
.tlist-more-facts[open] > summary { margin-bottom: 8px; }
/* 账务: the four figures as the board's stat row. */
.tlist-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; border: 1px solid var(--line-soft); border-radius: var(--r-8); }
.tlist-stat { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 12px 14px; }
.tlist-stat + .tlist-stat { border-left: 1px solid var(--line-soft); }
.tlist-stat-value { font-size: 18px; line-height: 26px; overflow-wrap: anywhere; }
.tlist-stat-value .money-tail { color: var(--text-3); }
.tlist-stat-note { margin: 0; color: var(--text-3); font-size: 12px; line-height: 16px; }
.tlist-stat-note:empty { display: none; }
.tlist-fact-list { display: flex; flex-direction: column; margin: 0; }
.tlist-fact-list > div { display: grid; grid-template-columns: 168px minmax(0, 1fr); column-gap: 16px; padding: 8px 0; border-top: 1px solid var(--line-soft); }
.tlist-fact-list dt, .tlist-kv dt { color: var(--text-3); font-size: 13px; line-height: 20px; }
.tlist-fact-list dd { min-width: 0; margin: 0; color: var(--text-1); font-size: 13px; line-height: 20px; overflow-wrap: anywhere; }
.tlist-fact-list dd .tlist-sub { white-space: normal; }
.tlist-fact-list dd .tlist-line { white-space: normal; }
.tlist-steps { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; counter-reset: tlist-step; }
.tlist-step { position: relative; display: grid; grid-template-columns: 22px minmax(0, 1fr); column-gap: 12px; padding-bottom: 20px; counter-increment: tlist-step; }
.tlist-step:last-child { padding-bottom: 0; }
.tlist-step::before { content: counter(tlist-step); display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: var(--gray-100); color: var(--text-2); font: 500 12px/16px var(--font-sans); }
.tlist-step:not(:last-child)::after { content: ""; position: absolute; top: 26px; bottom: 4px; left: 10.5px; width: 1px; background: var(--line); }
.tlist-step-body { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.tlist-step-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 12px; min-height: 22px; }
.tlist-step-head > strong { color: var(--text-1); font: 500 14px/20px var(--font-sans); }
.tlist-step-head > :is(span:not(.badge), time) { color: var(--text-3); font-size: 13px; line-height: 20px; }
.tlist-kv { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 16px; margin: 0; }
.tlist-kv > div { display: flex; flex-direction: column; gap: 0; min-width: 0; }
.tlist-kv dt { font-size: 12px; line-height: 16px; }
.tlist-kv dd { min-width: 0; margin: 2px 0 0; color: var(--text-1); font-size: 13px; line-height: 20px; overflow-wrap: anywhere; }
.tlist-box { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 12px 0 0; border-top: 1px solid var(--line-soft); }
.tlist-box-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tlist-box-head > strong { color: var(--text-1); font: 500 13px/20px var(--font-sans); }
.tlist-empty-line, .tlist-box.tlist-empty { color: var(--text-3); font-size: 13px; line-height: 20px; }
.tlist-lines { display: block; }
.tlist-toast { position: fixed; right: 24px; bottom: 24px; z-index: var(--z-toast); width: auto; max-width: 360px; margin: 0; }
.tlist-toast[hidden] { display: none; }

@media (max-width: 1439px) {
  .tlist-table > thead .tlist-c-margin, body.admin-console .tlist-row > td.tlist-margin-cell { display: none; }
  .tlist-table .tlist-wide, .tlist-row .tlist-cost-usd { display: none; }
  .tlist-table .tlist-narrow { display: inline; }
  .tlist-row .tlist-cost-margin { display: block; }
}
@media (max-width: 1279px) {
  .tlist-detail { width: 560px; }
  .tlist-table > thead .tlist-c-status { width: 104px; }
  .tlist-table > thead .tlist-c-cost { width: 96px; }
  .tlist-table > thead .tlist-c-charge { width: 92px; }
  .tlist-table > thead .tlist-c-time { width: 88px; }
  .tlist-table > thead .tlist-c-menu { width: 44px; }
}
/* Under 1024px a row is the board's two-line row: the status and the time
   with the menu, the task and the revenue, the team and the channel; the
   cost and the margin are in the sheet, and the head row is for screen
   readers only. The two flexible columns share the width; the long cells
   span one of them, so they never widen the time and menu columns. */
@media (max-width: 1023px) {
  .tlist-table, .tlist-table > tbody { display: block; }
  .tlist-table > thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .tlist-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto auto; grid-template-areas: "status status time menu" "task task charge charge" "team channel channel channel"; column-gap: 16px; padding: 12px 12px 12px 20px; border-bottom: 1px solid var(--line-soft); }
  body.admin-console .tlist-row > td { display: block; height: auto; padding: 0; border: 0; }
  body.admin-console .tlist-row > td:first-child { padding-left: 0; }
  body.admin-console .tlist-row > td:nth-child(1) { grid-area: status; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
  .tlist-row > td:nth-child(1) > .tlist-sub, .tlist-row > td:nth-child(1) > .tlist-flag { margin: 0; }
  body.admin-console .tlist-row > td:nth-child(2) { grid-area: task; margin-top: 6px; }
  body.admin-console .tlist-row > td:nth-child(3) { grid-area: team; display: flex; gap: 0 4px; min-width: 0; margin-top: 2px; }
  .tlist-row > td:nth-child(3) > .tlist-line { flex: none; max-width: 50%; font-size: 13px; }
  .tlist-row > td:nth-child(3) > .tlist-sub { margin: 0; }
  .tlist-row > td:nth-child(3) > .tlist-sub::before { content: "· "; }
  body.admin-console .tlist-row > td:nth-child(4) { grid-area: channel; display: flex; justify-content: flex-end; gap: 0 6px; min-width: 0; margin-top: 2px; color: var(--text-3); }
  .tlist-row > td:nth-child(4) > .tlist-line { flex: none; max-width: 50%; }
  .tlist-row > td:nth-child(4) > .tlist-sub { margin: 0; }
  body.admin-console .tlist-row > td.tlist-cost-cell, body.admin-console .tlist-row > td.tlist-margin-cell { display: none; }
  body.admin-console .tlist-row > td:nth-child(6) { grid-area: charge; align-self: start; margin-top: 6px; }
  body.admin-console .tlist-row > td:nth-child(8) { grid-area: time; align-self: center; color: var(--text-2); }
  body.admin-console .tlist-row > td:nth-child(9) { grid-area: menu; align-self: center; }
  .tlist-row:has(.tlist-pick[aria-pressed="true"]) { background: var(--violet-50); box-shadow: inset 2px 0 0 var(--violet-600); }
  .tlist-row:has(.tlist-pick[aria-pressed="true"]) > td, .tlist-row:has(.tlist-pick[aria-pressed="true"]) > td:first-child { background: transparent; box-shadow: none; }
}
/* Under 768px the channel takes a line of its own under the team; fields
   are 16px (40px high) so a phone never zooms into them, and the items of
   the menus and panels are 44px high. */
@media (max-width: 767px) {
  .tlist-head { margin-bottom: 16px; }
  .tlist-tabs { gap: 20px; padding: 0 16px; }
  .tlist-toolbar { padding: 12px 16px; }
  .tlist-search { flex: 1 1 100%; width: auto; height: 40px; }
  .tlist-search > input { font-size: 16px; }
  .tlist-ph { top: 9px; font-size: 16px; }
  .tlist-tools-end { flex: 1 1 100%; justify-content: flex-end; }
  .tlist-size > .select { height: 40px; font-size: 16px; }
  .tlist-menu-panel > .menu-item { height: 44px; }
  .tlist-menu-panel { position: fixed; top: auto; right: 8px; bottom: 8px; left: 8px; width: auto; }
  #tlist-message:not(:empty), .tlist-results > .tlist-note { margin-right: 16px; margin-left: 16px; }
  .tlist-row { grid-template-areas: "status status time menu" "task task charge charge" "team team team team" "channel channel channel channel"; column-gap: 12px; padding: 12px 8px 12px 16px; }
  body.admin-console .tlist-row > td:nth-child(4) { justify-content: flex-start; }
  /* On a phone the card is one tap target that opens the task: the team
     and API key names are text there (a tap on them opens the task too),
     and their filters are in the row menu (只看…). */
  button.tlist-filter { pointer-events: none; }
  .tlist-foot { padding: 8px 16px; }
  .tlist-detail { top: var(--topbar-height); right: 0; bottom: 0; left: 0; width: 100%; max-width: none; border-radius: 0; }
  .tlist-fact-list > div { grid-template-columns: minmax(0, 1fr); row-gap: 2px; }
  .dl.tlist-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tlist-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tlist-stat:nth-child(3) { border-left: 0; }
  .tlist-stat:nth-child(n + 3) { border-top: 1px solid var(--line-soft); }
  body.admin-console .tlist-sheet-tabs { padding: 0 16px; }
  .tlist-detail-body { padding: 16px 16px 32px; }
  .tlist-toast { right: 16px; left: 16px; max-width: none; }
}
@media (prefers-reduced-motion: reduce) {
  .tlist-progress:not(:empty)::before { animation: none; }
}
