/* 买手协作工作台 —— 与 fynd MarketDesk 同一套版面语言:
   瓷白底、纸色卡、衬线标题、等宽小字做标签。只有浅色。
   桌面是卡片网格或密排行表,700px 以下一律退回单列卡片。 */

:root{
  color-scheme:light;

  /* fynd tokens */
  --porcelain:#f3f5f2;--paper:#fbfcf9;--ink:#182228;--muted:#66747b;--line:#cfd8d9;
  --cobalt:#245c7a;--oxide:#a84e39;--moss:#456457;--brass:#9b7b38;
  --shadow:0 12px 32px rgba(28,48,57,.09);
  --display:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Songti SC","STSong",serif;
  --body:"Avenir Next",Avenir,"Segoe UI","PingFang SC","Hiragino Sans GB",sans-serif;
  --utility:"SFMono-Regular",Consolas,"Liberation Mono",monospace;

  /* 旧组件沿用的别名 */
  --bg:var(--porcelain);--surface:var(--paper);--rule:var(--line);--rule-strong:#b3c0c2;
  --hover:#eef1ef;--accent:var(--cobalt);--accent-ink:#1c4c66;--accent-soft:#e6edf1;
  --ochre:var(--brass);--ochre-soft:#f3ecdc;--moss-soft:#e4ece7;--clay:var(--oxide);
  --clay-soft:#f4e3de;--code-bg:#eef1ef;
  --sans:var(--body);--mono:var(--utility);
  --gutter:16px;
}

*{box-sizing:border-box}
html{color-scheme:light;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--porcelain);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.5}
a{color:var(--cobalt)}
code{font-family:var(--utility);font-size:12.5px;background:var(--code-bg);padding:1px 5px;border-radius:3px}
.money,.n,.when,td.idc{font-family:var(--utility);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.grow{flex:1 1 auto}

/* ------------------------------------------------------------ 版心 */
.shell{width:min(1600px,100%);margin:0 auto;padding:22px 28px 110px}

.navrow{display:flex;align-items:center;gap:16px;flex-wrap:wrap;
        font:700 11px/1.2 var(--utility);letter-spacing:.13em;text-transform:uppercase}
.navrow a{color:var(--muted);text-decoration:none;white-space:nowrap}
.navrow a:hover{color:var(--ink)}
.navrow a.on{color:var(--cobalt)}
.navrow .whoami{color:var(--muted);letter-spacing:.08em}
.navrow form{margin:0}
.navrow .linkish{font:inherit;letter-spacing:.13em;text-transform:uppercase;
  background:none;border:0;color:var(--muted);cursor:pointer;padding:0;height:auto;min-height:0}
.navrow .linkish:hover{color:var(--oxide)}

/* ------------------------------------------------------------ 报头 */
.masthead{display:flex;align-items:flex-end;gap:10px 30px;flex-wrap:wrap;
          margin:18px 0 0;padding-bottom:16px;border-bottom:1px solid var(--ink)}
.mast-text{min-width:0;flex:0 0 auto}
.eyebrow{margin:0 0 10px;font:700 11px/1.2 var(--utility);letter-spacing:.13em;
         text-transform:uppercase;color:var(--cobalt)}
h1{margin:0;font:500 clamp(32px,4vw,58px)/.92 var(--display);letter-spacing:-.045em}
h1 small,h1 .dim{font:400 13px/1 var(--utility);color:var(--muted);letter-spacing:.04em;margin-left:10px}
.thesis{flex:1 1 300px;margin:0 0 7px;font-size:14px;color:#435158;max-width:62ch}
.live-mark{margin:0 0 7px auto;display:flex;align-items:center;gap:8px;
           font:700 11px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
.live-mark i{width:7px;height:7px;border-radius:50%;background:var(--moss);display:inline-block}

/* ------------------------------------------------------------ 工作条 */
.workbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
         margin:0 -28px;padding:12px 28px;background:#eef1ef;border-bottom:1px solid var(--line)}
.tabs{display:flex;align-items:center;gap:4px;flex-wrap:wrap;min-width:0}
.tab{display:inline-flex;align-items:baseline;gap:6px;padding:9px 12px;border-radius:99px;
     font-size:13px;color:var(--muted);text-decoration:none;white-space:nowrap}
.tab:hover{background:rgba(24,34,40,.06);color:var(--ink)}
.tab b{font:400 10px/1 var(--utility);font-variant-numeric:tabular-nums;color:var(--muted)}
.tab.on{background:var(--ink);color:#fff}
.tab.on b{color:rgba(255,255,255,.72)}

.searchbox{position:relative;margin-left:auto;display:flex;align-items:center}
.searchbox .glyph{position:absolute;left:12px;color:var(--muted);font-size:15px;pointer-events:none}
.searchbox input{height:42px;min-height:42px;width:min(340px,60vw);padding:0 12px 0 32px;
  border:1px solid var(--line);border-radius:4px;background:var(--paper);font-size:13px}

/* ------------------------------------------------------------ 筛选面板 */
.filter-panel{border-bottom:1px solid var(--line);margin:0 -28px;padding:0 28px;background:var(--porcelain)}
.filter-panel summary{list-style:none;cursor:pointer;padding:11px 0;
  font:700 11px/1 var(--utility);letter-spacing:.13em;text-transform:uppercase;color:var(--cobalt)}
.filter-panel summary::-webkit-details-marker{display:none}
.filter-panel[open] summary{border-bottom:1px dashed var(--line)}
.filter-body{padding:12px 0 16px;display:flex;flex-direction:column;gap:10px}
.filter-group{display:grid;grid-template-columns:76px 1fr;gap:10px;align-items:start}
.filter-label{font:700 10px/2.4 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
.chip-line{display:flex;flex-wrap:wrap;gap:6px}
.source-chip{display:inline-block;padding:7px 10px;border:1px solid var(--line);background:var(--paper);
  border-radius:3px;font:600 11px/1 var(--utility);color:var(--muted);text-decoration:none;white-space:nowrap}
.source-chip:hover{color:var(--ink);border-color:var(--rule-strong)}
.source-chip.on{background:var(--ink);border-color:var(--ink);color:var(--paper);box-shadow:none}
.source-chip.on b{font-weight:700;opacity:.65;margin-left:2px}
.source-chip.on:hover{background:var(--oxide);border-color:var(--oxide);color:#fff}
.source-chip.on:hover b{opacity:1}

/* 已选条件 */
.active-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 -28px;padding:10px 28px;
  background:#eef1ef;border-bottom:1px solid var(--line)}
.active-filters .filter-label{line-height:1}
.active-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;background:var(--ink);color:var(--paper);
  font:600 11px/1 var(--utility);text-decoration:none;border:1px solid var(--ink)}
.active-pill i{font-style:normal;opacity:.6;letter-spacing:.06em}
.active-pill b{font-weight:700;opacity:.7}
.active-pill:hover{background:var(--oxide);border-color:var(--oxide);color:#fff}
.active-pill:hover b{opacity:1}
.clear-all{font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--cobalt);
  text-decoration:none;margin-left:2px}
.clear-all:hover{color:var(--oxide);text-decoration:underline}
.filter-panel summary b{font-weight:700;color:var(--cobalt)}
.customer-pick{display:flex;gap:6px;align-items:center}
.customer-pick input[type=search]{height:30px;min-height:30px;width:180px;font-size:12px}

/* ------------------------------------------------------------ 结果头 */
.summary{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;
         margin:20px 0 14px}
.summary-text{margin:0;display:flex;align-items:baseline;gap:8px}
.summary strong{font:500 28px/1 var(--display);letter-spacing:-.03em}
.summary span{font-size:12px;color:var(--muted)}
.modes{display:flex;gap:6px}
.mode{padding:7px 11px;border:1px solid var(--line);background:var(--paper);text-decoration:none;
  font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
.mode:hover{color:var(--ink)}
.mode.on{background:var(--ink);border-color:var(--ink);color:#fff}

/* ------------------------------------------------------------ 批次分组 */
.group{margin:0 0 30px}
.group-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;
            padding-bottom:8px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.group-head h2{margin:0;font:500 22px/1.1 var(--display);letter-spacing:-.02em}
.group-head h2 a{color:inherit;text-decoration:none}
.group-head h2 a:hover{color:var(--cobalt)}
.group-note{font:400 11px/1 var(--utility);letter-spacing:.06em;color:var(--muted)}
.group-head{cursor:pointer;user-select:none}
.group-head:focus-visible{outline:2px solid var(--cobalt);outline-offset:3px}
.chev{flex:none;align-self:center;width:0;height:0;border:5px solid transparent;
  border-top-color:var(--muted);margin:3px 2px 0 0;transition:transform .12s}
.folded .chev,tr.group-row.folded .chev{transform:rotate(-90deg)}
.fold{margin-left:auto;font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;
  color:var(--cobalt);opacity:0}
.group-head:hover .fold,.group-head:focus-visible .fold,tr.group-row:hover .fold{opacity:1}
.group.folded .card-grid{display:none}
.group.folded .group-head{margin-bottom:0;border-bottom-color:var(--line)}
tr.group-row{cursor:pointer;user-select:none}
tr.group-row .chev{display:inline-block;vertical-align:middle;margin:0 6px 2px 0}
tr.group-row .fold{margin-left:10px;display:inline-block;vertical-align:middle}
button.mode.fold-all{font-family:var(--utility);height:auto;min-height:0;border-radius:0}
button.mode.fold-all:hover{background:var(--ink);border-color:var(--ink);color:#fff}

/* ------------------------------------------------------------ 卡片 */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}
.listing-card{position:relative;display:flex;flex-direction:column;background:var(--paper);
  border:1px solid var(--line);cursor:pointer}
.listing-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--muted)}
.listing-card.se::before{background:var(--cobalt)}
.listing-card.cn::before{background:var(--brass)}
.listing-card.settled::before{background:var(--moss)}
.listing-card.branch::before{background:var(--oxide)}
.listing-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.image-stage{position:relative;aspect-ratio:4/3;background:#e5e9e7;overflow:hidden;margin-left:5px}
.image-stage img{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;
  display:block;background:#e5e9e7}
.image-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font:700 30px/1 var(--utility);letter-spacing:.06em;color:#9aa8ac}
.badges{position:absolute;right:8px;bottom:8px;display:flex;align-items:center;gap:4px;flex-wrap:wrap;
  justify-content:flex-end;max-width:calc(100% - 16px)}
.badges .badge{position:static;right:auto;bottom:auto}
.cat-chip{display:inline-block;padding:2px 5px;margin-right:4px;border:1px solid var(--line);
  background:var(--porcelain);color:var(--muted);font:600 10px/1.4 var(--utility);white-space:nowrap}
.listing-card .cat-chip{margin-right:4px}
.rows-table td.cats{white-space:normal}
.panel .cat-chip{font-size:11px}
.tag-chip{display:inline-block;padding:4px 6px;border:1px solid var(--oxide);background:rgba(251,252,249,.92);
  color:var(--oxide);font:700 9px/1 var(--utility);letter-spacing:.07em;white-space:nowrap}
.rows-table .tag-chip{margin-left:4px;padding:3px 5px;background:transparent}
.badge{position:absolute;right:8px;bottom:8px;padding:5px 7px;background:rgba(24,34,40,.88);color:#fff;
  font:700 9px/1 var(--utility);letter-spacing:.07em;text-transform:uppercase}
.card-body{padding:12px 14px 14px 18px;flex:1 1 auto;display:flex;flex-direction:column;gap:6px}
.source-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.source-name{font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--cobalt);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.source-note{font:400 10px/1 var(--utility);letter-spacing:.06em;color:var(--muted);white-space:nowrap}
.listing-title{margin:0;font:500 20px/1.15 var(--display);letter-spacing:-.018em}
.listing-title a{color:inherit;text-decoration:none}
.listing-title a:hover{color:var(--cobalt)}
.description{margin:0;font-size:12px;line-height:1.45;color:#5d696e;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:1em}
.listing-card .facts{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:baseline;margin:2px 0 0}
.price{font:650 17px/1 var(--body);font-variant-numeric:tabular-nums}
.accent{text-align:right;font:600 11px/1.3 var(--utility);color:var(--oxide);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.accent.muted{color:var(--muted);font-weight:400}
.meta{margin:0;font-size:11px;color:var(--muted);min-height:1em}
.card-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));border-top:1px solid var(--line);
  margin-left:5px}
.card-actions .act{display:flex;align-items:center;justify-content:center;height:40px;margin:0;
  font-size:11px;color:var(--muted);text-decoration:none;border-left:1px solid var(--line)}
.card-actions .act:first-child{border-left:0}
.card-actions .act:hover{background:var(--hover);color:var(--ink)}
.card-actions form.act{padding:0}
.card-actions form.act button{width:100%;height:40px;min-height:40px;border:0;border-radius:0;background:none;
  font:inherit;font-size:11px;color:var(--cobalt);cursor:pointer}
.card-actions form.act button:hover{background:var(--hover)}

/* ------------------------------------------------------------ 行视图 */
.rows-table{width:100%;border-collapse:collapse;background:var(--paper);border:1px solid var(--line);
  font-size:13px;table-layout:fixed}
.rows-table.continued{border-top:0}
.rows-table th{text-align:left;padding:8px 10px;background:var(--porcelain);border-bottom:1px solid var(--line);
  font:700 10px/1 var(--utility);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.rows-table td{padding:0 10px;height:40px;border-bottom:1px solid var(--line);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rows-table th.n,.rows-table td.n{text-align:right;font-family:var(--utility);font-variant-numeric:tabular-nums}
.rows-table tbody tr{cursor:pointer}
.rows-table tr:hover{background:#eef1ef}
.rows-table tr.group-row,.rows-table tr.group-row:hover{background:var(--porcelain);cursor:default}
.rows-table tr.group-row td{height:34px;border-bottom:1px solid var(--line)}
.rows-table tr.group-row b{font:500 15px/1 var(--display);letter-spacing:-.01em;margin-right:10px}
.rows-table tr.group-row b a{color:inherit;text-decoration:none}
.rows-table tr.group-row span{font:400 10px/1 var(--utility);letter-spacing:.06em;color:var(--muted)}
.rows-table td.thumb,.rows-table th.thumb{width:48px;padding:0 6px}
.rows-table td.thumb .shot{position:relative;display:block;width:36px;height:36px;background:#e5e9e7;overflow:hidden}
.rows-table td.thumb .shot i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font:700 11px/1 var(--utility);font-style:normal;letter-spacing:.06em;color:#9aa8ac}
.rows-table td.thumb img{position:absolute;inset:0;z-index:1;width:36px;height:36px;object-fit:cover;
  display:block;background:#e5e9e7}
.rows-table td.title a{color:var(--ink);text-decoration:none;font-weight:600}
.rows-table td.title a:hover{color:var(--cobalt)}
.rows-table td.title i{font-style:normal;color:var(--muted)}
.rows-table td.note{color:var(--muted)}
.rows-table td.pos{color:var(--moss)}
.rows-table td.neg{color:var(--oxide)}
.rows-table td.next a,.rows-table td.next .linkish{font-size:12px;color:var(--cobalt);text-decoration:none}
.rows-table td.next form{margin:0}
.rows-table col,.rows-table th:nth-child(2){width:18%}
.rows-table th:nth-child(3){width:14%}
.rows-table th:nth-child(4){width:72px}
.rows-table th:nth-child(5){width:96px}
.rows-table th:nth-child(6){width:52px}
.rows-table th:nth-child(7),.rows-table th:nth-child(8),.rows-table th:nth-child(9){width:80px}
.rows-table th:nth-child(10){width:62px}
.rows-table th:nth-child(11){width:92px}
.rows-table th:nth-child(12){width:86px}
.badge.flat{position:static;display:inline-block;background:transparent;color:var(--muted);
  border:1px solid var(--line);padding:3px 6px}
.badge.flat.se{color:var(--cobalt);border-color:rgba(36,92,122,.4)}
.badge.flat.cn{color:var(--brass);border-color:rgba(155,123,56,.4)}
.badge.flat.settled{color:var(--moss);border-color:rgba(69,100,87,.4)}
.badge.flat.branch{color:var(--oxide);border-color:rgba(168,78,57,.4)}

/* ------------------------------------------------------------ 再看 / 空 */
.more-line{display:flex;justify-content:center;margin:26px 0 0}
.load-more{border:1px solid var(--ink);padding:11px 20px;font-size:12px;background:var(--paper);
  color:var(--ink);height:auto;min-height:0;border-radius:0;cursor:pointer;letter-spacing:.04em}
.load-more:hover{background:var(--ink);color:#fff}
.empty{color:var(--muted);background:var(--paper);border:1px dashed var(--line);padding:22px 20px;margin:16px 0;
  font-size:13px}

/* ------------------------------------------------------------ 提示条 */
.flash{background:var(--accent-soft);color:var(--accent-ink);padding:9px 14px;margin:14px 0 0;font-size:13px}
.flash.bad{background:var(--clay-soft);color:var(--oxide)}
.warnbox{background:var(--ochre-soft);padding:12px 16px}
.warnbox h2{font-size:15px;color:var(--brass)}
.warnbox ul{margin:4px 0 0;padding-left:20px;font-size:13px}

/* ------------------------------------------------------------ 通用排版 */
h2{font:500 20px/1.2 var(--display);margin:0 0 10px;letter-spacing:-.02em}
h3{font-size:14px;margin:18px 0 6px;font-weight:600}
h4{margin:0 0 6px;font-size:13px;font-weight:600}
section{margin-bottom:30px}
small.dim,.dim{color:var(--muted);font-weight:400}
.hint{font-size:12.5px;color:var(--muted)}

/* ------------------------------------------------------------ 药丸 */
.pill{display:inline-block;font:600 11px/1.7 var(--utility);padding:1px 8px;border-radius:99px;
      border:1px solid var(--line);white-space:nowrap;vertical-align:middle;text-decoration:none;
      color:var(--muted);background:var(--paper)}
.pill b{font-weight:500;margin-left:2px}
.pill.se,.pill.accent{color:var(--cobalt);border-color:rgba(36,92,122,.35);background:var(--accent-soft)}
.pill.cn{color:var(--brass);border-color:rgba(155,123,56,.35);background:var(--ochre-soft)}
.pill.settled,.pill.moss{color:var(--moss);border-color:rgba(69,100,87,.35);background:var(--moss-soft)}
.pill.branch,.pill.clay{color:var(--oxide);border-color:rgba(168,78,57,.35);background:var(--clay-soft)}
.pill.zero{opacity:.45}
a.pill{min-height:26px;line-height:24px;padding:0 10px}
.pillrow{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.statusline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0}

/* ------------------------------------------------------------ 数字块 */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:14px 0}
.fact{background:var(--paper);border:1px solid var(--line);padding:12px 14px;text-decoration:none;color:inherit;display:block}
a.fact:hover{border-color:var(--cobalt)}
.fact b{display:block;font:500 26px/1.1 var(--display);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.fact b.pos{color:var(--moss)}.fact b.neg{color:var(--oxide)}
.fact span{font:400 11px/1.4 var(--utility);letter-spacing:.06em;color:var(--muted)}

/* ------------------------------------------------------------ 卡片(详情页) */
.card{background:var(--paper);border:1px solid var(--line);padding:14px 16px;margin:0 0 14px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:16px 0}
.card dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:0;font-size:13px}
.card dl dt{color:var(--muted);white-space:nowrap}
.card dl dd{margin:0;overflow-wrap:anywhere}
.card dl.inline{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(110px,1fr);
  grid-template-rows:auto auto;margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
.card.settlement dl.inline{display:grid}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}

/* ------------------------------------------------------------ 客人与订单 */
.order-tools{margin:14px 0 0}
.order-actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:12px 0 0}
.order-actions form{margin:0;display:flex;gap:8px;align-items:center}
.order-actions input[type=file]{display:none}
.order-actions .hint{margin:0}
.order-card{background:var(--paper);border:1px solid var(--line);margin:0 0 14px}
.order-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:10px 14px;
  border-bottom:1px solid var(--line);font:400 11px/1.6 var(--utility);color:var(--muted)}
.order-head .oid{font:600 13px/1 var(--utility);color:var(--ink);letter-spacing:.02em}
.order-head .buyer{font-family:var(--body);font-size:13px;color:var(--ink);text-decoration:none;font-weight:600}
a.buyer:hover{color:var(--cobalt)}
.order-head .paid{color:var(--ink)}
.order-head .placed{margin-left:auto}
.order-lines{border:0}
.order-lines td{border-bottom:1px solid var(--line)}
.order-lines tr:last-child td{border-bottom:0}
.order-lines td.match{width:42%;white-space:normal;text-align:right}
.order-lines td.match form{display:inline-flex;margin-left:8px}
.line-picker{display:flex;flex-direction:column;gap:4px;text-align:left}
.line-picker button.pick{display:flex;align-items:center;gap:8px;width:100%;height:auto;min-height:0;
  padding:5px 7px;background:var(--porcelain);border:1px solid var(--line);border-radius:0;cursor:pointer;
  font-family:var(--body);font-size:12px;color:var(--ink);text-align:left}
.line-picker button.pick:hover{background:var(--hover);border-color:var(--cobalt);color:var(--ink)}
.line-picker .shot{width:28px;height:28px;flex:none;background:#e5e9e7;overflow:hidden;
  display:flex;align-items:center;justify-content:center}
.line-picker .shot img{width:28px;height:28px;object-fit:cover}
.line-picker .shot i{font-style:normal;font:700 9px/1 var(--utility);color:#9aa8ac}
.line-picker .what{flex:1 1 auto;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.line-picker .what i{font-style:normal;color:var(--muted)}
.line-picker .pick-id{display:flex;gap:6px;margin-top:4px}
.line-picker .pick-id input{height:28px;min-height:28px;font-size:12px}

/* ------------------------------------------------------------ 总览 */
.task-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.task-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--paper);
  border:1px solid var(--line);text-decoration:none;color:inherit}
.task-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.task-card strong{font:500 34px/1 var(--display);letter-spacing:-.04em}
.task-card .what{font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--cobalt)}
.task-card p{margin:2px 0 0;font-size:12px;color:#5d696e;line-height:1.45}
.task-card .go{margin-top:8px;font:700 10px/1 var(--utility);letter-spacing:.09em;color:var(--muted)}
.task-card:hover .go{color:var(--oxide)}
.timeline.wide{max-height:none}
.timeline.wide .what a{color:var(--ink);font-weight:600;text-decoration:none}
.timeline.wide .what a:hover{color:var(--cobalt)}
.timeline.wide .what i{font-style:normal;color:var(--muted);margin:0 4px}
.flowline{list-style:none;margin:0;padding:0}
.flowline li a{display:flex;align-items:center;gap:9px;padding:4px 0;text-decoration:none;color:inherit;font-size:12.5px}
.flowline li a:hover .what{color:var(--cobalt)}
.flowline .dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--line)}
.flowline .dot.se{background:var(--cobalt)}
.flowline .dot.cn{background:var(--brass)}
.flowline .dot.settled{background:var(--moss)}
.flowline .what{flex:1 1 auto}
.flowline b{font:400 11px/1 var(--utility);font-variant-numeric:tabular-nums;color:var(--muted)}
.mini-list{list-style:none;margin:8px 0 0;padding:0;font-size:12.5px}
.mini-list li{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid var(--line)}
.mini-list li:last-child{border-bottom:0}
.mini-list li span{color:var(--muted);font:400 11px/1.6 var(--utility)}
.mini-list li a{color:var(--ink);text-decoration:none;font-weight:600}
.mini-list li a:hover{color:var(--cobalt)}
.mini-more{margin:10px 0 0;font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase}
.mini-more a{color:var(--cobalt);text-decoration:none}

/* ------------------------------------------------------------ 候选 */
.paste-box{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:20px 0 0;
  padding:14px 16px;background:var(--paper);border:1px solid var(--ink)}
.paste-box input[type=url]{flex:1 1 320px;height:42px;min-height:42px;font-size:14px}
.paste-box input[name=max_bid_sek]{width:110px}
.paste-box input[name=note]{width:170px}
.paste-box select{width:110px}
.paste-box .primary{height:42px;min-height:42px}
.wish-form input{flex:1 1 130px;min-width:0}
.wish-form input[name=description]{flex:2 1 220px}
.wish-form label.btn{flex:none}
.wish-form label.btn input[type=file]{display:none}
.calcbox{margin-left:10px;border-top:0;padding-top:0}
.calcbox[open]{position:relative}
.calcbox .calc{position:absolute;right:0;top:26px;z-index:30;width:min(420px,85vw);
  background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);padding:12px 14px}
.source-note.soon{color:var(--oxide);font-weight:700}
.description .warn{font-style:normal;color:var(--oxide)}
.card-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 14px 10px 18px;
  border-top:1px solid var(--line);font-size:11px}
.card-tools form{margin:0}
.card-tools .inline-edit{display:flex;gap:4px;align-items:center}
.card-tools .inline-edit input{width:74px;height:26px;min-height:26px;font-size:12px;padding:0 6px}
.card-actions button.act{height:40px;min-height:40px;padding:0;border:0;border-left:1px solid var(--line);
  border-radius:0;background:none;font:inherit;font-size:11px;color:var(--cobalt);cursor:pointer}
.card-actions button.act:first-child{border-left:0}
.card-actions button.act:hover{background:var(--hover)}

/* ------------------------------------------------------------ 分账 */
.settle-summary{display:flex;align-items:flex-end;gap:28px;flex-wrap:wrap;margin:20px 0 18px;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.settle-summary .big{display:flex;flex-direction:column;gap:5px}
.settle-summary .big strong{font:500 30px/1 var(--display);letter-spacing:-.03em}
.settle-summary .big strong.pos{color:var(--moss)}
.settle-summary .big strong.neg{color:var(--oxide)}
.settle-summary .big span{font:400 10px/1 var(--utility);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.payer-split{list-style:none;margin:0 0 0 auto;padding:0;font:400 11px/1.8 var(--utility);color:var(--muted)}
.payer-split i{font-style:normal;color:var(--ink);font-weight:700}
.settle-month .group-head h2{font-size:19px}
.month-go{margin-left:10px}
.month-off{margin-left:10px;font:400 10px/1 var(--utility);letter-spacing:.06em;color:var(--oxide)}
.settle-table td{vertical-align:middle}
.settle-table tr.needs td{background:rgba(168,78,57,.05)}
.settle-table .warn{color:var(--oxide);font:600 11px/1 var(--utility)}
.settle-table form.fix{display:inline-flex;gap:4px;align-items:center;margin:0}
.settle-table form.fix input{width:96px;height:28px;min-height:28px;font-size:12px;padding:0 6px}
.settle-table .shot{position:relative;display:block;width:36px;height:36px;background:#e5e9e7;overflow:hidden}
.settle-table .shot img{width:36px;height:36px;object-fit:cover;display:block}
.settle-table .shot i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font:700 11px/1 var(--utility);font-style:normal;color:#9aa8ac}
.settle-bar label{color:rgba(251,252,249,.7)}
.settle-bar input{width:120px}
.run-actions{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;margin:0 0 18px}
.run-actions details.mini{margin:0;border-top:0;padding-top:0}

/* ------------------------------------------------------------ 批次 */
.newbatch{margin-left:auto}
.rows-table .batch-name a{font:500 16px/1.2 var(--display);letter-spacing:-.015em;color:var(--ink);text-decoration:none}
.rows-table .batch-name a:hover{color:var(--cobalt)}
.rows-table td.track{font-family:var(--utility);font-size:11px;color:var(--muted);
  max-width:150px;overflow:hidden;text-overflow:ellipsis}
.rows-table i.est{font-style:normal;font:700 9px/1 var(--utility);letter-spacing:.06em;color:var(--brass);
  border:1px solid rgba(155,123,56,.45);padding:2px 3px}
.rows-table td i{font-style:normal;color:var(--muted);font-size:11px}
.rows-table .ok{color:var(--moss);font-weight:700}
.group.folded .box-body{display:none}
.group-head.plain{cursor:default}
.boxes .group{margin-bottom:18px}
.pending-pack{margin-bottom:26px}
.pack-search{margin:0 0 12px}
.pack-search input{height:36px;min-height:36px;max-width:340px;font-size:13px}
.rows-table td.pick,.rows-table th.pick{width:34px;padding-left:10px}
.select-box,.select-all{width:17px;height:17px;min-height:17px;margin:0;accent-color:var(--cobalt);cursor:pointer}
.group-head .select-all{flex:none;align-self:center;margin-right:2px}
.bulk-bar{position:sticky;bottom:14px;z-index:20;display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  margin-top:14px;padding:11px 14px;background:var(--ink);color:var(--paper);box-shadow:var(--shadow)}
.bulk-bar .picked{font:700 11px/1 var(--utility);letter-spacing:.09em}
.bulk-bar .picked b{font-size:14px}
.bulk-bar label{flex-direction:row;align-items:center;gap:6px;color:rgba(251,252,249,.7);
  font:400 10px/1 var(--utility);letter-spacing:.09em;text-transform:uppercase}
.bulk-bar input{width:66px;height:30px;min-height:30px;background:var(--paper);border-color:var(--paper)}
.bulk-bar .btn{border-color:var(--paper);background:var(--paper);color:var(--ink);height:32px;min-height:32px}
.bulk-bar .btn:hover{background:var(--cobalt);border-color:var(--cobalt);color:#fff}
.bulk-bar .btn.quiet{background:transparent;color:var(--paper);border-color:rgba(251,252,249,.5)}
.bulk-bar .btn.quiet:hover{background:var(--oxide);border-color:var(--oxide);color:#fff}
.bulk-bar .linkish{color:rgba(251,252,249,.75);font-size:11px}
.bulk-bar .linkish:hover{color:#fff}
.checklist.tight{margin:0;padding-left:18px;font-size:12px;color:var(--muted)}
.checklist.tight li{margin:3px 0}

.unpack-list{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.unpack-row{display:flex;align-items:center;gap:8px;padding:5px 4px;border-bottom:1px solid var(--line);
  font-size:12.5px;color:var(--ink);cursor:pointer}
.unpack-row input{width:16px;height:16px;min-height:16px;flex:none;accent-color:var(--oxide)}
.unpack-row .shot{width:28px;height:28px;flex:none;background:#e5e9e7;overflow:hidden}
.unpack-row .shot img{width:28px;height:28px;object-fit:cover;display:block}
.unpack-row .what{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.unpack-row .what i{font-style:normal;color:var(--muted)}
.unpack-row .mark{font:700 9px/1 var(--utility);letter-spacing:.07em;color:var(--oxide);flex:none}
.unpack-list button{margin-top:10px}

/* ------------------------------------------------------------ 详情页 */
.mast-badges{margin:0 0 6px auto;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.mast-badges .badge.flat.tag{color:var(--oxide);border-color:rgba(168,78,57,.45)}
.detail{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.8fr);gap:28px;margin-top:22px;
  align-items:start}
.detail-main{min-width:0}
.detail-side{position:sticky;top:24px;display:flex;flex-direction:column;gap:16px;
  max-height:calc(100vh - 48px);overflow-y:auto}
.detail-main section{margin-bottom:26px}

.panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.panel{background:var(--paper);border:1px solid var(--line);padding:14px 16px;margin:0}
.panel header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px;
  padding-bottom:7px;border-bottom:1px solid var(--line)}
.panel h3{margin:0;font:500 17px/1 var(--display);letter-spacing:-.015em}
.panel dl{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;margin:0;font-size:13px}
.panel dl dt{font:400 10px/1.7 var(--utility);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);
  white-space:nowrap}
.panel dl dd{margin:0;overflow-wrap:anywhere}
/* 面板右上角那颗「编辑」:它只负责打开对话框,自己不摊开。 */
button.panel-edit{font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;
  color:var(--cobalt);background:none;border:0;padding:0;min-height:0;cursor:pointer}
button.panel-edit:hover{color:var(--oxide);background:none}

.side-card{background:var(--paper);border:1px solid var(--line);padding:14px 16px;margin:0}
.side-card h3{margin:0 0 10px;font:500 17px/1 var(--display);letter-spacing:-.015em;
  display:flex;align-items:baseline;gap:8px}
.side-card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:13px}
.side-card dl dt{font:400 10px/1.7 var(--utility);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.side-card dl dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.side-card .big-number{margin:0 0 10px;font:500 32px/1 var(--display);letter-spacing:-.03em}
.side-card .big-number small{display:block;margin-top:5px;font:400 10px/1.4 var(--utility);
  letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.side-card .big-number.pos{color:var(--moss)}
.side-card .big-number.neg{color:var(--oxide)}

.lifeline{list-style:none;margin:0;padding:0}
.lifeline li{position:relative;display:flex;align-items:center;gap:10px;padding:3px 0 3px 2px;font-size:12.5px}
.lifeline li::before{content:"";position:absolute;left:5px;top:0;bottom:0;width:1px;background:var(--line)}
.lifeline li:first-child::before{top:50%}
.lifeline li:last-child::before{bottom:50%}
.lifeline .dot{position:relative;z-index:1;width:11px;height:11px;flex:none;border-radius:50%;
  background:var(--porcelain);border:1px solid var(--line)}
.lifeline .step-done .dot{background:var(--moss);border-color:var(--moss)}
.lifeline .step-done .what{color:var(--moss)}
.lifeline .step-now .dot{background:var(--ink);border-color:var(--ink);box-shadow:0 0 0 3px rgba(24,34,40,.12)}
.lifeline .step-now .what{font-weight:600}
.lifeline .step-todo .what{color:var(--muted)}
.terminal-note{margin:10px 0 0;padding-top:9px;border-top:1px solid var(--line);
  font:700 10px/1.4 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--oxide)}

button.primary.big,.btn.big{width:100%;height:44px;min-height:44px;font-size:14px}
.back-moves{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.back-moves form{margin:0}
.btn.quiet{border-color:var(--line);color:var(--muted);background:var(--paper)}
.btn.quiet:hover{background:var(--hover);color:var(--ink);border-color:var(--rule-strong)}
details.mini{margin-top:10px;border-top:1px solid var(--line);padding-top:9px}
details.mini summary{list-style:none;cursor:pointer;font:700 10px/1 var(--utility);letter-spacing:.11em;
  text-transform:uppercase;color:var(--cobalt)}
details.mini summary::-webkit-details-marker{display:none}
details.mini.danger summary{color:var(--oxide)}
.btn.danger{border-color:var(--oxide);color:var(--oxide);background:var(--paper)}
.btn.danger:hover{background:var(--oxide);border-color:var(--oxide);color:#fff}
.btn.danger.solid{background:var(--oxide);border-color:var(--oxide);color:#fff}
.btn.danger.solid:hover{filter:brightness(1.08)}
details.kill{margin-top:10px}
details.kill summary{list-style:none;cursor:pointer;height:36px;min-height:36px;width:100%}
details.kill summary::-webkit-details-marker{display:none}
details.kill .kill-body{margin-top:9px;padding-top:9px;border-top:1px solid var(--line)}
details.kill p{font-size:12.5px;margin:0 0 9px}
.mini-off{margin:10px 0 0;padding-top:9px;border-top:1px solid var(--line);
  font:700 10px/1.4 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);opacity:.7}
.mini-off i{font-style:normal;letter-spacing:.04em;text-transform:none;font-weight:400}
details.mini p{margin:8px 0;font-size:12.5px}
.stackform{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.advance-inline{margin:0}
.advance-inline .grid2{grid-template-columns:1fr}

.tag-toggles{display:flex;flex-wrap:wrap;gap:6px}
.tag-toggles form{margin:0}
.tag-toggles button.source-chip{height:auto;min-height:0;cursor:pointer}
.tag-toggles .source-chip.on{border-color:var(--oxide);color:var(--oxide);box-shadow:inset 0 -2px 0 var(--oxide)}
.tag-toggles button.source-chip:hover{background:var(--hover);color:var(--ink)}
.tag-add{display:flex;gap:6px;margin-top:10px}
.tag-add input{height:30px;min-height:30px;font-size:12px}

.timeline{list-style:none;margin:0;padding:0;max-height:340px;overflow-y:auto}
.timeline li{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;padding:7px 0;
  border-bottom:1px solid var(--line);font-size:12.5px}
.timeline li:last-child{border-bottom:0}
.timeline .when{font:400 10px/1.6 var(--utility);color:var(--muted);white-space:nowrap}
.timeline .what{font-weight:500}
.timeline .who,.timeline .note{grid-column:2;color:var(--muted);font-size:11.5px}
.timeline li.undone .what{color:var(--oxide)}

.photo-lead{background:#e5e9e7;border:1px solid var(--line);aspect-ratio:4/3;display:flex;
  align-items:center;justify-content:center;overflow:hidden}
.photo-lead img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
.photo-lead.empty-shot span{font:700 11px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:#9aa8ac}
.photo .cover{font:700 9px/1 var(--utility);letter-spacing:.09em;text-transform:uppercase;color:var(--moss)}

@media (max-width:900px){
  .detail{grid-template-columns:1fr}
  .detail-side{position:static}
}

/* ------------------------------------------------------------ 照片 */
.photos{margin-bottom:24px}
.photo-strip{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;margin:10px 0 14px}
.photo{margin:0;background:var(--paper);border:1px solid var(--line);padding:6px}
.photo img{display:block;width:96px;height:96px;object-fit:cover;background:#e5e9e7}
.photo.lead img{width:min(420px,72vw);height:auto;max-height:420px;object-fit:contain}
.photo figcaption{display:flex;gap:10px;align-items:center;justify-content:center;
  margin-top:5px;font:400 10px/1.6 var(--utility);letter-spacing:.06em;color:var(--muted)}
.photo figcaption form{margin:0}
.photo-upload{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.photo-upload input[type=file]{display:none}
.photo-upload .hint{flex:1 1 260px;margin:0}
.card-actions form.shoot{display:flex}
.card-actions form.shoot label{display:flex;align-items:center;justify-content:center;width:100%;height:40px;
  font:inherit;font-size:11px;color:var(--cobalt);cursor:pointer;border-left:1px solid var(--line)}
.card-actions form.shoot label:hover{background:var(--hover)}
.card-actions form.shoot input[type=file]{display:none}

/* ------------------------------------------------------------ 生命周期 */
.flow{overflow-x:auto;padding:6px 0 10px;-webkit-overflow-scrolling:touch}
.lane{display:flex;align-items:center;min-width:max-content}
.step{background:var(--paper);border:1px solid var(--line);padding:6px 10px;font-size:12.5px;
      line-height:1.3;min-width:92px;color:var(--muted)}
.step small{display:block;color:var(--muted);font-size:10px;font-family:var(--utility);opacity:.7}
.step.se{border-color:var(--cobalt)}.step.cn{border-color:var(--brass)}
.step.settled{background:var(--moss-soft);border-color:rgba(69,100,87,.35)}
.step.done{opacity:.5}
.step.now{color:var(--ink);font-weight:600;box-shadow:0 0 0 2px var(--accent-soft)}
.arrow{width:18px;height:1px;background:var(--line);position:relative;flex:none}
.arrow::after{content:"";position:absolute;right:-1px;top:-3px;border:3.5px solid transparent;border-left-color:var(--muted)}

/* ------------------------------------------------------------ 旧表格 */
.tablewrap{overflow-x:auto;margin:12px 0;-webkit-overflow-scrolling:touch}
table.rows{border-collapse:collapse;width:100%;font-size:13px;background:var(--paper);border:1px solid var(--line)}
table.rows th,table.rows td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top}
table.rows th{font:700 10px/1 var(--utility);letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);background:var(--porcelain);white-space:nowrap}
table.rows td.n,table.rows th.n{text-align:right;font-variant-numeric:tabular-nums}
table.rows tfoot td{font-weight:600;background:var(--porcelain)}
table.rows tbody tr:hover{background:#eef1ef}
td.title a{text-decoration:none;font-weight:600;color:var(--ink)}
td.title a:hover{color:var(--cobalt)}
td.title small{display:block;color:var(--muted);font-size:12px;line-height:1.45}
td.pick,th.pick{width:34px}
td.pick input{width:20px;height:20px}
td.note,td.when{color:var(--muted)}

/* ------------------------------------------------------------ 表单 */
label{display:flex;flex-direction:column;gap:3px;font:400 11px/1.4 var(--utility);
      letter-spacing:.06em;color:var(--muted)}
input,select,textarea,output.calcout{font:inherit;font-family:var(--body);font-size:13.5px;padding:0 9px;
  height:36px;min-height:36px;border:1px solid var(--line);border-radius:3px;background:var(--paper);
  color:var(--ink);width:100%}
select{padding-right:4px}
textarea{min-height:66px;height:auto;padding:8px 9px;line-height:1.5}
output.calcout{display:flex;align-items:center;font-family:var(--utility);color:var(--muted);background:var(--code-bg)}
input:hover,select:hover{border-color:var(--rule-strong)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--cobalt);outline-offset:1px}
label.check{flex-direction:row;align-items:center;gap:8px;min-height:36px;font-size:13px;font-family:var(--body)}
label.check input{width:18px;height:18px;min-height:18px;flex:none}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 14px}
.grid2 .wide{grid-column:1/-1}
.form{margin:12px 0}
.formactions{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap}
.inline-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.inline-form label{flex:1 1 180px}
.rowform{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.rowform select{min-width:96px;flex:0 1 auto}
.rowform input.tiny{width:88px;min-width:88px;flex:none}
i.req{font-style:normal;color:var(--oxide);font-size:11px}

button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;min-height:36px;
  padding:0 14px;font-family:var(--body);font-size:13px;border-radius:0;border:1px solid var(--ink);
  background:var(--paper);color:var(--ink);cursor:pointer;text-decoration:none;white-space:nowrap}
button:hover,.btn:hover{background:var(--ink);color:#fff}
.primary{background:var(--ink);border-color:var(--ink);color:#fff}
.primary:hover{background:var(--cobalt);border-color:var(--cobalt)}
.btn.ghost{background:transparent;border-color:var(--line);color:var(--cobalt)}
.btn.ghost:hover{background:var(--hover);color:var(--ink);border-color:var(--rule-strong)}
.btn.small{height:30px;min-height:30px;padding:0 11px;font-size:12px}
.btn.disabled{opacity:.4;pointer-events:none}
.btn small{color:inherit;opacity:.7;font-size:11px}
.linkish{background:none;border:0;color:var(--cobalt);font:inherit;font-size:12px;cursor:pointer;
         min-height:0;height:auto;padding:0}
.linkish:hover{background:none;color:var(--oxide)}

/* ------------------------------------------------------------ 对话框 */
dialog.deskdialog{width:min(420px,calc(100vw - 32px));max-width:420px;max-height:calc(100vh - 48px);
  padding:0;overflow:hidden;border:1px solid var(--ink);border-radius:0;background:var(--paper);
  color:var(--ink);box-shadow:var(--shadow)}
dialog.deskdialog::backdrop{background:rgba(24,34,40,.45)}
dialog.deskdialog h2{margin:0;font:500 24px/1.2 var(--display);letter-spacing:-.02em;color:var(--ink)}
/* 标题与提示钉在上面,字段区自己滚,取消/创建 永远在视线里。 */
dialog.deskdialog .dialog-form{display:flex;flex-direction:column;gap:0;max-height:calc(100vh - 48px);
  min-height:0;overflow:hidden}
dialog.deskdialog .dialog-form > h2{flex:none;padding:20px 24px 0}
dialog.deskdialog .dialog-form > .dialog-hint{flex:none;margin:0;padding:6px 24px 0}
dialog.deskdialog .dialog-form > .nb-error{flex:none;padding:10px 24px 0}
.dialog-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;min-height:0;
  overflow-y:auto;padding:16px 24px 20px}
.make-row{display:flex;justify-content:flex-end;margin:0 0 14px}
/* 共用对话框顶上那行「说的是哪一条」。空着就不占地方。 */
.dialog-subject{flex:none;margin:0;padding:6px 24px 0;font:400 12.5px/1.5 var(--body);color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dialog-subject:empty{display:none}
.dialog-body > .unpack-list{margin-top:0}
.dialog-body > .unpack-list button{margin-top:0}
/* 侧栏里一排打开对话框的按钮:结案、预售、撤销…… */
.side-moves{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.side-card > .card-tools{padding:10px 0 0;margin-top:10px;border-top:1px solid var(--line)}

/* ------------------------------------------------------------ 在售链接 */
.sale-links{margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line)}
.sale-links h4{margin:0 0 8px;display:flex;align-items:baseline;gap:10px;
  font:700 10px/1.4 var(--utility);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.sale-links .link-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.sale-links .link-list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
.sale-links .link-list form{margin:0}
.sale-links .plat{font:700 9px/1.6 var(--utility);letter-spacing:.09em;color:var(--cobalt);
  border:1px solid rgba(36,92,122,.4);padding:1px 5px;white-space:nowrap}
.sale-links .plat.taobao{color:var(--brass);border-color:rgba(155,123,56,.45)}
.sale-links .plat.wechat{color:var(--moss);border-color:rgba(69,100,87,.45)}
.sale-links .plat.other{color:var(--muted);border-color:var(--line)}
.sale-links .link-list i{font-style:normal;color:var(--muted);font-size:12px}
.sale-links .hint,.order-actions .hint{font:400 12px/1.5 var(--body);color:var(--muted);margin:8px 0 0}
.plat-badge{display:inline-block;font:700 9px/1.5 var(--utility);letter-spacing:.09em;
  color:var(--cobalt);border:1px solid rgba(36,92,122,.35);padding:0 4px;text-decoration:none;
  vertical-align:middle}
.plat-badge:hover{background:var(--cobalt);color:#fff;border-color:var(--cobalt)}
dialog.deskdialog.wide{width:min(560px,calc(100vw - 32px));max-width:560px}
.dialog-form{display:flex;flex-direction:column;gap:12px;margin:0}
.dialog-form label{gap:5px;font:400 10px/1.3 var(--utility);letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted)}
/* 标签一行:文字 + 小小的 必填/选填 标记,别撑成一条空输入框。 */
.dialog-form .lab{display:flex;flex-direction:row;align-items:center;gap:6px;flex-wrap:wrap;
  font:400 10px/1.4 var(--utility);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.dialog-form i.req,.dialog-form i.opt{display:inline-block;flex:0 0 auto;width:auto;align-self:center;
  font-style:normal;font:700 10px/1.4 var(--utility);letter-spacing:.1em;text-transform:uppercase}
.dialog-form i.req{color:var(--oxide);border:1px solid rgba(168,78,57,.45);padding:1px 5px}
.dialog-form i.opt{color:var(--muted);border:0;padding:0}
.dialog-hint{margin:-2px 0 2px;font:400 11.5px/1.5 var(--body);color:var(--muted)}
.dialog-split{display:flex;align-items:center;gap:10px;margin:4px 0 0;
  font:700 9px/1.4 var(--utility);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.dialog-split::after{content:"";flex:1 1 auto;height:1px;background:var(--line)}
.dialog-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.dialog-grid .wide{grid-column:1/-1}
.dialog-form input.bad,.dialog-form select.bad,.dialog-form textarea.bad{border-color:var(--oxide)}
.field-err{margin:2px 0 0;font:400 12px/1.4 var(--body);color:var(--oxide)}
.nb-preview{margin:-4px 0 0;font:400 12px/1.6 var(--utility);color:var(--muted)}
.nb-preview b{color:var(--ink);font-size:13px;letter-spacing:.02em}
.nb-preview span{display:block;font-size:11px;color:var(--muted)}
.nb-error{margin:0;font:400 12.5px/1.5 var(--body);color:var(--oxide)}
.nb-error a{color:var(--cobalt)}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px;flex:none;position:sticky;bottom:0;
  padding:12px 24px;background:var(--paper);border-top:1px solid var(--line)}
.card.dialog-form .dialog-actions{position:static;padding:0;border-top:0}
.filepick input[type=file]{font-family:var(--body);font-size:12px;height:auto;min-height:0;padding:6px 0;
  border:0;background:none}
.thumb-picks{display:flex;flex-wrap:wrap;gap:8px}
.thumb-picks:empty{display:none}
.thumb-pick{position:relative;display:block;width:64px;height:64px;background:var(--hover);
  border:1px solid var(--line);overflow:hidden}
.thumb-pick img{width:100%;height:100%;object-fit:cover;display:block}
.thumb-pick i{position:absolute;left:0;right:0;bottom:0;font-style:normal;text-align:center;
  font:700 9px/14px var(--utility);letter-spacing:.08em;color:#fff;background:rgba(24,34,40,.62)}
.thumb-kill{position:absolute;top:0;right:0;width:18px;height:18px;min-height:0;padding:0;
  border:0;border-radius:0;background:rgba(24,34,40,.62);color:#fff;font-size:13px;line-height:1}
.thumb-kill:hover{background:var(--oxide);color:#fff}

/* ------------------------------------------------------------ 旧筛选块 */
.filters{background:var(--paper);border:1px solid var(--line);padding:12px 14px;margin:0 0 14px}
.filters fieldset{border:0;margin:0 0 10px;padding:0}
.filters legend{font-size:12px;color:var(--muted);padding:0}
.chips{display:block}
.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;margin:4px 6px 0 0;
      border:1px solid var(--line);font:600 11px/1 var(--utility);color:var(--muted);
      background:var(--porcelain);cursor:pointer}
.chip input{width:15px;height:15px;min-height:15px;margin:0;flex:none}
.chip:has(input:checked){border-color:var(--cobalt);color:var(--cobalt)}
.filtergrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px 14px;align-items:end}
.filteractions{display:flex;gap:8px;align-items:center}

/* ------------------------------------------------------------ 推进 */
.advance{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start}
details.move,details.editbox{flex:0 0 auto}
details.move summary,details.editbox summary{list-style:none;cursor:pointer}
details.move summary::-webkit-details-marker,details.editbox summary::-webkit-details-marker{display:none}
details[open] .card{margin-top:10px;min-width:min(520px,calc(100vw - 2*var(--gutter)))}
details.move[open]{flex:1 1 100%}

/* ------------------------------------------------------------ 计算器 */
.calc{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 14px;align-items:end}
.calc .out{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;
  border-top:1px dashed var(--line);padding-top:10px;margin-top:2px}
.calc .out div{font:400 11px/1.4 var(--utility);color:var(--muted)}
.calc .out b{display:block;font:500 20px/1.2 var(--display);color:var(--ink);font-variant-numeric:tabular-nums}

/* ------------------------------------------------------------ 时间线与评论 */
.feed{list-style:none;padding:0;margin:8px 0}
.feed li{padding:8px 0;border-bottom:1px solid var(--line);font-size:13px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.feed .when{font-family:var(--utility);font-size:11px;color:var(--muted);flex:none}
.comments{list-style:none;padding:0;margin:8px 0}
.comment{background:var(--paper);border:1px solid var(--line);padding:9px 12px;margin-bottom:8px}
.comment .who{font-weight:600;font-size:13px;margin-right:8px}
.comment .when{font-family:var(--utility);font-size:11px;color:var(--muted)}
.comment p{margin:4px 0 0;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}
.comment .mention{font-weight:600;color:var(--cobalt);text-decoration:none}
a.mention:hover{text-decoration:underline}
.comments.mentioned .comment{background:transparent;border-style:dashed}
.commentform{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.commentform textarea{flex:1 1 240px}
.commentform .mention-wrap{flex:1 1 240px}
.commentform .mention-wrap textarea{width:100%}
.mention-hint{flex:1 1 100%;margin:2px 0 0;font:400 11px/1.4 var(--utility);letter-spacing:.06em;color:var(--muted)}

/* @ 补全菜单 */
.mention-wrap{position:relative;display:block}
.mention-pop{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:40}
.mention-menu{list-style:none;margin:0;padding:4px 0;max-height:260px;overflow-y:auto;
  background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow)}
.mention-menu li{display:flex;align-items:baseline;gap:10px;padding:7px 10px;font-size:13px;cursor:pointer}
.mention-menu li b{flex:none;width:30px;font:700 10px/1.4 var(--utility);letter-spacing:.09em;
  text-transform:uppercase;color:var(--cobalt)}
.mention-menu li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mention-menu li.on,.mention-menu li:hover{background:#eef1ef}

/* ------------------------------------------------------------ 其它 */
.checklist{margin:8px 0;padding-left:20px;font-size:13px}
.checklist li{margin:4px 0}
.pager{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:16px 0;flex-wrap:wrap}
.stickyactions{position:sticky;bottom:0;background:var(--paper);border-top:1px solid var(--line);
  padding:10px var(--gutter);margin:0 calc(-1*var(--gutter));display:flex;justify-content:flex-end;
  padding-bottom:calc(10px + env(safe-area-inset-bottom,0))}
.login{max-width:380px;margin:10vh auto 0}
.login h1{font-size:44px}
.login .stack{display:flex;flex-direction:column;gap:12px;margin-top:18px}
.login .hint{font-size:12px;color:var(--muted);margin-top:20px}

/* ------------------------------------------------------------ 窄屏 */
@media (max-width:999px){
  .shell{padding:16px var(--gutter) 80px}
  .workbar,.filter-panel,.active-filters{margin:0 calc(-1*var(--gutter));padding-left:var(--gutter);padding-right:var(--gutter)}
  .searchbox{margin-left:0;width:100%}
  .searchbox input{width:100%}
}

@media (max-width:700px){
  button,.btn{height:40px;min-height:40px;font-size:14px}
  .btn.small{height:34px;min-height:34px}
  input,select,textarea,output.calcout{height:42px;min-height:42px;font-size:15px}
  textarea{height:auto}
  label.check{min-height:42px}
  label.check input{width:22px;height:22px;min-height:22px}
  .card-grid{grid-template-columns:1fr}
  .filter-group{grid-template-columns:1fr;gap:4px}
  /* 行视图在手机上塌成卡片。 */
  .rows-table,.rows-table tbody,.rows-table tr,.rows-table td{display:block;width:100%}
  .rows-table{border:0;background:transparent}
  .rows-table thead{display:none}
  .rows-table tbody tr{background:var(--paper);border:1px solid var(--line);margin-bottom:10px;padding:8px 12px}
  .rows-table tbody tr.group-row{background:transparent;border:0;padding:0;margin:18px 0 8px}
  .rows-table td{border:0;padding:3px 0;height:auto;white-space:normal;text-align:left}
  .rows-table td.n{text-align:left}
  .rows-table td:empty{display:none}
  table.rows,table.rows tbody,table.rows tr,table.rows td{display:block;width:100%}
  table.rows thead,table.rows tfoot{display:none}
  table.rows tr{background:var(--paper);border:1px solid var(--line);margin-bottom:10px;padding:8px 12px}
  table.rows td{border:0;padding:3px 0;display:flex;gap:12px;justify-content:space-between;align-items:baseline}
  table.rows td::before{content:attr(data-label);color:var(--muted);font-size:12px;flex:none}
  table.rows td.title{display:block}
  table.rows td.title::before{display:none}
  table.rows td:empty{display:none}
  .tablewrap{overflow:visible}
}

@media (prefers-reduced-motion:no-preference){
  a,.step,.btn,button,.listing-card{transition:color .15s,border-color .15s,background .15s,transform .15s,box-shadow .15s}
}

/* ------------------------------------------------------------ settlement v2 */
/* 分账页 2.0:左边一张结算单 + 一张可勾的表,右边两块说明。
   数字全在浏览器里现算,所以这里只管排版。 */

.settle-bar2 .months{margin-left:auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.settle-bar2 .months-lab{font:700 10px/1 var(--utility);letter-spacing:.11em;
  text-transform:uppercase;color:var(--muted);margin-right:2px}
.mchip{display:inline-flex;align-items:baseline;gap:5px;height:30px;min-height:30px;padding:0 10px;
  border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:0;
  font:600 12px var(--utility);letter-spacing:.03em;cursor:pointer}
.mchip:hover{background:var(--hover);color:var(--ink);border-color:var(--rule-strong)}
.mchip b{font:400 10px/1 var(--utility);opacity:.7}
.mchip.on,.mchip.on:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.mchip.on b{opacity:.72}

.settle-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,300px);gap:26px;margin-top:20px;align-items:start}
.settle-main{min-width:0}
.settle-side{display:flex;flex-direction:column;gap:14px;position:sticky;top:14px}
.settle-side .panel h2{margin:0 0 8px;font:500 17px/1.15 var(--display);letter-spacing:-.015em}

/* 结算单面板 */
.panel.statement{padding:18px 20px}
.panel.statement h2{margin:0 0 12px;font:500 21px/1.2 var(--display);letter-spacing:-.02em}
.panel.statement .state{display:inline-block;vertical-align:middle;margin-left:8px;padding:4px 7px;
  border:1px solid var(--brass);color:var(--brass);
  font:700 10px/1 var(--utility);letter-spacing:.08em}
.statement .pay{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 20px;align-items:end}
.statement .eyebrow.soft{margin:0 0 4px;color:var(--muted)}
.statement .big{margin:0;font:500 clamp(34px,4.6vw,54px)/1 var(--display);
  letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.statement .big small{font:400 14px var(--body);color:var(--muted);letter-spacing:0;margin-left:6px}
.statement .facts{margin:0 0 6px;display:flex;flex-wrap:wrap;gap:4px 14px;
  justify-content:flex-end;max-width:360px;color:var(--muted);font-size:12.5px}
.statement .facts b{color:var(--ink);font-family:var(--utility);font-weight:600;
  font-variant-numeric:tabular-nums}
.statement .break{margin:14px 0 0;padding:0;list-style:none;border-top:1px solid var(--line)}
.statement .break li{display:flex;justify-content:space-between;gap:16px;align-items:baseline;
  padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}
.statement .break li span:last-child{font-family:var(--utility);font-variant-numeric:tabular-nums}
.statement .break li em{font-style:normal;color:var(--muted);font-size:11.5px;margin-left:8px}
.settle-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 12px;
  margin-top:16px;padding-top:14px;border-top:1px solid var(--ink)}
.settle-fields label.wide{grid-column:1/-1}
.settle-go{margin-top:12px}
.settle-go .primary[disabled]{opacity:.42;cursor:not-allowed;background:var(--ink);border-color:var(--ink)}
.settle-go .mini-off{margin-top:9px}

/* 表格上方的小工具条 */
.settle-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:22px 0 0}
.settle-tools input[type=search]{width:min(280px,70vw)}
.settle-tools .check{margin:0}

/* 待结表 */
table.settle2{table-layout:auto}
table.settle2 th,table.settle2 td{white-space:nowrap}
table.settle2 th.pick,table.settle2 td.pick{width:34px;padding:0 4px;text-align:center}
table.settle2 td.pick input,table.settle2 td.pick input[type=checkbox]{width:17px;height:17px;min-height:17px;margin:0;cursor:pointer}
table.settle2 th.thumb,table.settle2 td.thumb{width:50px;padding:0 6px}
table.settle2 td.thumb .shot,table.settle2 td.thumb .shot img{width:38px;height:38px}
table.settle2 td.thumb .shot{position:relative;display:block;background:#e5e9e7;overflow:hidden}
table.settle2 td.thumb .shot img{object-fit:cover;display:block}
table.settle2 td.thumb .shot i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font:700 10px var(--utility);color:#7b898e;font-style:normal}
table.settle2 td{height:46px}
table.settle2 th.zy,table.settle2 td.zy{font-weight:700}
table.settle2 th:nth-child(n),table.settle2 td:nth-child(n){width:auto}
table.settle2 tr.srow.picked td{background:rgba(36,92,122,.07)}
table.settle2 tr.srow.picked:hover td{background:rgba(36,92,122,.11)}
table.settle2 tr.unpriced td{color:var(--muted);background:rgba(24,34,40,.02)}
table.settle2 tr.unpriced td.title a{color:var(--muted)}
table.settle2 .warn{color:var(--oxide);font:600 11px/1 var(--utility)}
table.settle2 tr[hidden]{display:none}
table.runs2 th:nth-child(n),table.runs2 td:nth-child(n){width:auto}
table.runs2 td.zy{font-weight:700}
.settle-summary .big strong.stamp{font:600 20px/1.4 var(--utility);letter-spacing:.01em}

/* 要先处理:一行一个输入框,填完回车跳下一行 */
.panel.fixlist{padding:16px 18px}
.panel.fixlist h2{margin:0 0 4px;font:500 19px/1.2 var(--display);letter-spacing:-.02em}
.panel.fixlist > p.dim{margin:0 0 12px;font-size:12.5px}
.fixrows{display:flex;flex-direction:column;border-top:1px solid var(--line)}
form.fixrow,p.fixrow{display:flex;align-items:center;gap:10px;margin:0;padding:7px 0;
  border-bottom:1px solid var(--line)}
form.fixrow .bulk-pick{width:17px;height:17px;min-height:17px;flex:none;margin:0;cursor:pointer}
form.fixrow .shot{position:relative;display:block;width:38px;height:38px;flex:none;background:#e5e9e7;overflow:hidden}
form.fixrow .shot img{width:38px;height:38px;object-fit:cover;display:block}
form.fixrow .shot i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font:700 10px var(--utility);color:#7b898e;font-style:normal}
form.fixrow .who{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
form.fixrow .who a{color:var(--ink);text-decoration:none;font-weight:600}
form.fixrow .who a:hover{color:var(--cobalt)}
form.fixrow .who i{font-style:normal;color:var(--muted)}
form.fixrow .cust{flex:0 0 auto;color:var(--muted);font-size:12.5px;max-width:140px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
form.fixrow .fixin{flex:0 0 auto;width:140px;height:34px;min-height:34px;font-size:13px}
p.fixrow.done{color:var(--moss);font-size:13px}
p.fixrow.done b{font-weight:700;margin-right:4px}
details.bulkdate{margin:0 0 14px;border:1px solid var(--line);background:var(--porcelain);padding:0 12px}
details.bulkdate summary{list-style:none;cursor:pointer;padding:10px 0;
  font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--cobalt)}
details.bulkdate summary::-webkit-details-marker{display:none}
details.bulkdate form{margin:0;padding:0 0 12px}
details.bulkdate p{margin:0 0 10px;font-size:13px}
details.bulkdate input[type=month]{width:150px;height:32px;min-height:32px;margin:0 3px}

.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

@media (max-width:1080px){
  .settle-grid{grid-template-columns:1fr}
  .settle-side{position:static}
  .statement .pay{grid-template-columns:1fr}
  .statement .facts{justify-content:flex-start;max-width:none}
}
@media (max-width:700px){
  .settle-bar2 .months{margin-left:0;width:100%}
  form.fixrow{flex-wrap:wrap}
  form.fixrow .fixin{width:100%}
  /* 待结表在手机上塌成卡片时,勾选框要留在最上面。 */
  table.settle2,table.settle2 tbody,table.settle2 tr,table.settle2 td{display:block;width:100%}
  table.settle2 thead{display:none}
  table.settle2 tbody.mgroup tr.srow{background:var(--paper);border:1px solid var(--line);
    margin-bottom:10px;padding:8px 12px}
  table.settle2 td{height:auto;padding:3px 0;border:0;white-space:normal;text-align:left}
  table.settle2 td.n{text-align:left}
}

/* ------------------------------------------------------------ 回收站 / 软删除 */
/* 删除是「这条记录不该存在」,和结案是两回事。所以用氧化红做记号,
   但都做得很安静:一条横幅、一颗链接按钮,不抢主流程的位置。 */

.binned{margin:14px 0 0;padding:12px 16px;background:var(--clay-soft);
  border:1px solid var(--oxide);display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap}
.binned-line{margin:0;font:600 13px/1.4 var(--body);color:var(--oxide)}
.binned-line b{font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;
  padding:4px 7px;border:1px solid var(--oxide);margin-right:6px;vertical-align:middle}
.binned-note{margin:0;flex:1 1 320px;min-width:0;font-size:12.5px;color:#6a4f47}
.binned form{margin:0}
.binned .btn{border-color:var(--oxide);color:var(--oxide);background:var(--paper)}
.binned .btn:hover{background:var(--oxide);border-color:var(--oxide);color:#fff}

.linkish.danger{color:var(--oxide)}
.linkish.danger:hover{color:var(--ink)}
.btn.small.danger{border-color:var(--oxide);color:var(--oxide);background:var(--paper)}
.btn.small.danger:hover{background:var(--oxide);color:#fff}

/* 动作卡底下那一行「删除…」 */
.mini-off.bin-off{display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.mini-off.bin-off .linkish{font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;padding:0}

/* 候选 / 求购卡片上的行内删除 */
details.bin-inline{margin:0}
details.bin-inline summary{list-style:none;cursor:pointer;
  font:700 10px/1 var(--utility);letter-spacing:.11em;text-transform:uppercase;color:var(--oxide)}
details.bin-inline summary::-webkit-details-marker{display:none}
details.bin-inline p.dim{margin:8px 0 6px;font-size:12px}
details.bin-inline form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:8px 0 4px}
details.bin-inline input{flex:1 1 150px;height:30px;min-height:30px;font-size:12.5px}

/* 回收站列表 */
table.trash-table th:nth-child(n),table.trash-table td:nth-child(n){width:auto}
table.trash-table td.note{color:var(--muted);white-space:normal}
table.trash-table tbody tr{cursor:default}
table.trash-table td.thumb .shot{position:relative;display:block;width:36px;height:36px;
  background:#e5e9e7;overflow:hidden}
table.trash-table td.thumb .shot img{width:36px;height:36px;object-fit:cover;display:block}
table.trash-table td.thumb .shot i{position:absolute;inset:0;display:flex;align-items:center;
  justify-content:center;font:700 10px var(--utility);color:#7b898e;font-style:normal}
table.trash-table td.next form{margin:0}

/* ---------------------------------------------------------- 成交历史 / 退货 */

.sales-history { margin-top: 1.5rem; }
.sale-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.sale-list .sale { padding: .5rem .7rem; border: 1px solid var(--line); border-radius: 10px; }
.sale-list .sale.refunded { opacity: .62; }
.sale-line { margin: 0; display: flex; flex-wrap: wrap; gap: .5rem; align-items: baseline; }
.sale-refund { margin: .25rem 0 0; font-size: .86em; }
.badge.flat.refunded { background: var(--clay-soft, #f3e3e0); }
.mini-note { display: block; font-size: .72em; opacity: .65; font-style: normal; }
/* 一批同款:一笔成交卖了几片 */
.pieces { margin-left: .4rem; font-size: .78em; font-weight: 600; opacity: .72; }
.badge.flat.manual { background: var(--sand-soft, #efe7d8); }
.lot-note { display: block; font-size: .78em; opacity: .72; margin: .2rem 0 0; }
.lot-note.match { opacity: .9; font-weight: 600; }
.tag-chip.warn { background: var(--clay-soft, #f3e3e0); color: var(--clay, #8a3d2c); }
tr.muted td { opacity: .6; }
.points-field .hint { display: block; font-size: .78em; opacity: .7; }

/* ------------------------------------------------- 详情页:按行对齐的版面
   整页只有一个滚动条。没有粘住的侧栏,也没有自己会滚的格子 —— 每一行的
   左右两格等高,边缘对齐;900px 以下按 DOM 顺序塌成一列,照片下面紧跟
   「状态」。 */

.rows{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.8fr);
  gap:22px 28px;align-items:stretch;margin-top:18px}
.rows .cell{min-width:0;display:flex;flex-direction:column}
.rows .cell.full{grid-column:1/-1}
.rows .cell>section,.rows .cell>.panels{flex:1 1 auto}
.rows .side-card,.rows .panel{margin:0}
.rows .stack{gap:22px}
.rows .stack>section:first-child{flex:0 0 auto}
.rows .stack>section:last-child{flex:1 1 auto}

/* 第一行左边那张主图:右边的卡片定下行高,图在瓷灰底上按比例铺满。 */
.rows .c-photo .photos{display:flex;flex-direction:column;height:100%;margin:0}
.rows .c-photo .photo-lead{flex:1 1 0;min-height:180px;height:auto;max-height:none;
  aspect-ratio:auto;position:relative;overflow:hidden}
.rows .c-photo .photo-lead>a{position:absolute;inset:0;display:flex;
  align-items:center;justify-content:center}
.rows .c-photo .photo-lead>a>img{width:100%;height:100%;max-width:100%;max-height:100%;
  object-fit:contain}
.rows .c-photo .photo-strip{flex:0 0 auto}
.rows .c-photo .photo-upload{flex:0 0 auto}

.rows .c-facts .sec-head{margin-top:0}
.rows .c-facts .panels{flex:1 1 auto}
.rows .c-sales .sales-history{margin:0}

.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 10px}
.sec-head h2{margin:0}

/* 四张资料面板永远是 2×2,高度拉齐。 */
.rows .panels{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:stretch}
.rows .panels .panel{margin:0;height:100%}

/* 整页一个滚动:格子里的东西自己不许再开一条滚动条。 */
.rows .timeline{max-height:none;overflow:visible}
.rows .detail-side,.rows .side-card{position:static;max-height:none;overflow:visible}

.lifeline small.dim{font:400 10px/1.4 var(--utility);letter-spacing:.04em;white-space:nowrap}
.spread-note{margin:10px 0 0;padding-top:9px;border-top:1px dashed var(--line);
  font-size:12.5px;color:var(--muted)}
.side-moves+.side-moves{margin-top:8px}

/* 结算信息:未结算 | 已结算 两列对齐。空的那一列写「—」。 */
table.money-split{width:100%;border-collapse:collapse;margin:6px 0 10px;
  font-variant-numeric:tabular-nums}
table.money-split th,table.money-split td{padding:6px 0;border-bottom:1px solid #e4e8e7;
  text-align:right;font-family:var(--utility);font-size:13px}
table.money-split tbody th,table.money-split thead th:first-child{text-align:left;
  font-family:var(--body);font-weight:400;color:var(--muted)}
table.money-split thead th{font:700 10px/1.3 var(--utility);letter-spacing:.1em;color:var(--ink);
  border-bottom:1px solid var(--ink);padding-bottom:7px}
table.money-split thead small{display:block;font-weight:500;letter-spacing:0;color:var(--muted)}
table.money-split tr.sum th,table.money-split tr.sum td{font-weight:700;color:var(--ink);
  border-bottom-color:var(--ink)}
table.money-split td.pos{color:var(--moss)}
table.money-split td.neg{color:var(--oxide)}

/* 一批同款卖超了:红字提醒,但不拦着保存。 */
.hint.over{color:var(--oxide);font-weight:600}

@media (max-width:900px){
  .rows{grid-template-columns:1fr;gap:20px}
  .rows .c-photo .photo-lead{flex:0 0 auto;aspect-ratio:4/3;min-height:0}
}
@media (max-width:700px){
  .rows .panels{grid-template-columns:1fr}
}

/* ------------------------------------------------- 讨论里的图
   最常见的用法是「截个图粘进来」:评论下面排一行 96px 的缩略图,点开是原图。
   写的时候选中的那几张摆成 56px 的小方块,× 拿掉一张。 */

.comment-shots{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
.comment-shots a{display:block;line-height:0}
.comment-shots img{display:block;width:96px;height:96px;object-fit:cover;
  background:#e5e9e7;border:1px solid var(--line)}
.comments.mentioned .shot-mark,.comment .shot-mark{font:700 10px/1.6 var(--utility);
  letter-spacing:.09em;color:var(--muted);border:1px solid var(--line);padding:1px 6px}

.commentform{align-items:flex-start}
.commentform .mention-wrap{flex:1 1 240px}
.commentform label.filepick-btn{flex:none;align-self:flex-start}
.commentform label.filepick-btn input[type=file]{display:none}
.commentform .thumb-picks{flex:1 1 100%;margin:2px 0 0}
.commentform .thumb-pick{width:56px;height:56px}
.commentform.dropping{outline:2px dashed var(--cobalt);outline-offset:6px}
dialog.deskdialog.dropping{outline:2px dashed var(--cobalt);outline-offset:-6px}
.paste-note:empty{display:none}
.paste-note{margin:4px 0 0}
