08_列表视图_卡片与表格.html 130 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433
  1. <!DOCTYPE html>
  2. <html lang="zh-CN" data-theme="light">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>列表视图 · 卡片与表格切换</title>
  7. <style>
  8. /* ============================================================
  9. 共赢票据投资者 APP — 深空蓝设计系统 (Deep-Space Blue)
  10. 双主题:data-theme="light" | "dark",可作用于 :root 或任意容器
  11. ============================================================ */
  12. /* ---------- 浅色(默认) ---------- */
  13. :root,
  14. [data-theme="light"]{
  15. --canvas:#E7ECF4; /* 图纸底 */
  16. --canvas-2:#F4F7FB; /* 图纸卡片 */
  17. --canvas-line:#D3DCE8;
  18. --canvas-ink:#0F1B33;
  19. --canvas-mute:#647591;
  20. --app-bg:#F6F8FB; /* App 页面底 */
  21. --surface:#FFFFFF; /* 卡片/导航 */
  22. --surface-2:#F1F4F9; /* 次级面/表头 */
  23. --surface-3:#E8EDF5; /* 三级面 */
  24. --line:#E3E9F1;
  25. --line-2:#CFD9E7;
  26. --ink-1:#0F1B33;
  27. --ink-2:#4C5C78;
  28. --ink-3:#8A99B2;
  29. --ink-4:#AEBACD;
  30. --brand:#1B4FD8;
  31. --brand-2:#123CAE;
  32. --brand-weak:#E7EEFF;
  33. --brand-line:#B9CDFF;
  34. --on-brand:#FFFFFF;
  35. --accent:#B4700E; /* 琥珀 强调 */
  36. --accent-weak:#FDF2DE;
  37. --accent-line:#EBCD97;
  38. --rise:#E5484D; /* 涨 / 盈利 */
  39. --fall:#12A594; /* 跌 / 亏损 */
  40. --rise-weak:#FDECEC;
  41. --fall-weak:#E3F7F3;
  42. --warn:#C2410C;
  43. --warn-weak:#FEF0E6;
  44. --danger:#DC2626;
  45. --danger-weak:#FDEBEB;
  46. --ok:#0F7B4F;
  47. --ok-weak:#E4F5EC;
  48. --shadow-card:0 1px 2px rgba(15,27,51,.05),0 8px 24px rgba(15,27,51,.06);
  49. --shadow-phone:0 18px 44px rgba(15,27,51,.16),0 2px 6px rgba(15,27,51,.08);
  50. --shadow-pop:0 12px 40px rgba(15,27,51,.20);
  51. --scrim:rgba(11,18,34,.42);
  52. --bezel:#C7D2E2;
  53. --glow:none;
  54. }
  55. /* ---------- 深色 ---------- */
  56. [data-theme="dark"]{
  57. --canvas:#060A14;
  58. --canvas-2:#0E1526;
  59. --canvas-line:#1E2A44;
  60. --canvas-ink:#E9EFFA;
  61. --canvas-mute:#8797B4;
  62. --app-bg:#0B1020;
  63. --surface:#131B2E;
  64. --surface-2:#18223A;
  65. --surface-3:#1E2A45;
  66. --line:#232F4B;
  67. --line-2:#32436A;
  68. --ink-1:#EAF0FA;
  69. --ink-2:#A5B4D0;
  70. --ink-3:#7486A5;
  71. --ink-4:#54658A;
  72. --brand:#5B8CFF;
  73. --brand-2:#7FA6FF;
  74. --brand-weak:rgba(91,140,255,.16);
  75. --brand-line:rgba(91,140,255,.42);
  76. --on-brand:#05122E;
  77. --accent:#F0A93B;
  78. --accent-weak:rgba(240,169,59,.15);
  79. --accent-line:rgba(240,169,59,.42);
  80. --rise:#FF6B6E;
  81. --fall:#2FD4B9;
  82. --rise-weak:rgba(255,107,110,.14);
  83. --fall-weak:rgba(47,212,185,.14);
  84. --warn:#F59E42;
  85. --warn-weak:rgba(245,158,66,.14);
  86. --danger:#FF6B6E;
  87. --danger-weak:rgba(255,107,110,.14);
  88. --ok:#2FD4B9;
  89. --ok-weak:rgba(47,212,185,.14);
  90. --shadow-card:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.34);
  91. --shadow-phone:0 20px 50px rgba(0,0,0,.6),0 0 0 1px rgba(91,140,255,.10);
  92. --shadow-pop:0 14px 44px rgba(0,0,0,.62);
  93. --scrim:rgba(2,6,16,.62);
  94. --bezel:#26324C;
  95. --glow:0 0 0 1px rgba(91,140,255,.14);
  96. }
  97. /* ---------- 基础 ---------- */
  98. *{box-sizing:border-box;margin:0;padding:0}
  99. html{-webkit-text-size-adjust:100%}
  100. body{
  101. background:var(--canvas);color:var(--canvas-ink);
  102. font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  103. -webkit-font-smoothing:antialiased;
  104. padding:44px 46px 110px;
  105. transition:background .28s ease,color .28s ease;
  106. }
  107. .mono{font-family:"SF Mono",ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace}
  108. .num{font-variant-numeric:tabular-nums;letter-spacing:.01em}
  109. /* ---------- 图纸头 ---------- */
  110. .sheet-head{
  111. display:flex;flex-wrap:wrap;gap:32px;align-items:flex-end;justify-content:space-between;
  112. padding-bottom:24px;margin-bottom:44px;border-bottom:1px solid var(--canvas-line);
  113. }
  114. .brandmark{display:flex;align-items:center;gap:14px}
  115. .brandmark .glyph{
  116. width:44px;height:44px;border-radius:12px;flex:none;position:relative;
  117. background:linear-gradient(145deg,var(--brand),var(--brand-2));
  118. box-shadow:0 6px 18px rgba(27,79,216,.28);
  119. }
  120. .brandmark .glyph::before{
  121. content:"";position:absolute;inset:12px 11px;border:1.6px solid rgba(255,255,255,.9);
  122. border-radius:2px;border-bottom-width:4px;
  123. }
  124. .brandmark .glyph::after{
  125. content:"";position:absolute;right:8px;top:8px;width:7px;height:7px;border-radius:50%;background:var(--accent);
  126. }
  127. .sheet-title{font-size:26px;font-weight:650;letter-spacing:.02em;line-height:1.2}
  128. .sheet-sub{margin-top:6px;font-size:12.5px;color:var(--canvas-mute);letter-spacing:.02em}
  129. .head-right{display:flex;align-items:center;gap:26px;flex-wrap:wrap}
  130. .meta{display:flex;gap:26px}
  131. .meta div{font-size:10.5px;color:var(--canvas-mute);letter-spacing:.1em;text-transform:uppercase}
  132. .meta b{display:block;margin-top:5px;font-size:12.5px;color:var(--canvas-ink);font-weight:550;letter-spacing:0;text-transform:none}
  133. /* 换肤开关 */
  134. .skin{
  135. display:flex;align-items:center;gap:0;padding:3px;border-radius:9px;
  136. background:var(--canvas-2);border:1px solid var(--canvas-line);
  137. }
  138. .skin button{
  139. border:0;background:transparent;cursor:pointer;font:inherit;
  140. padding:7px 13px;border-radius:6px;font-size:12px;color:var(--canvas-mute);
  141. display:flex;align-items:center;gap:6px;letter-spacing:.04em;transition:.2s;
  142. }
  143. .skin button.on{background:var(--brand);color:#fff;box-shadow:0 2px 8px rgba(27,79,216,.3)}
  144. [data-theme="dark"] .skin button.on{color:#04122F}
  145. .skin svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  146. /* ---------- 章节 ---------- */
  147. .sec{margin-bottom:60px}
  148. .sec-head{display:flex;align-items:baseline;gap:14px;margin-bottom:24px}
  149. .sec-num{
  150. font-family:"SF Mono",ui-monospace,Menlo,monospace;font-size:11px;color:var(--brand);
  151. letter-spacing:.12em;padding:3px 8px;border:1px solid var(--brand-line);border-radius:5px;background:var(--brand-weak);
  152. }
  153. .sec-name{font-size:17px;font-weight:600;letter-spacing:.04em}
  154. .sec-rule{flex:1;height:1px;background:var(--canvas-line)}
  155. .sec-note{font-size:12px;color:var(--canvas-mute)}
  156. /* ---------- 说明卡 ---------- */
  157. .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
  158. .card-x{background:var(--canvas-2);border:1px solid var(--canvas-line);border-radius:12px;padding:18px 20px}
  159. .card-x h4{font-size:11px;font-weight:600;letter-spacing:.14em;color:var(--canvas-mute);margin-bottom:14px;text-transform:uppercase}
  160. .kv{display:flex;flex-direction:column;gap:10px}
  161. .kv .r{display:flex;justify-content:space-between;gap:14px;font-size:12.5px;line-height:1.5}
  162. .kv .r span{color:var(--canvas-mute)}
  163. .kv .r b{font-weight:520;text-align:right;font-variant-numeric:tabular-nums}
  164. .bullets{display:flex;flex-direction:column;gap:9px}
  165. .bullets li{list-style:none;font-size:12.5px;line-height:1.65;color:var(--canvas-mute);padding-left:14px;position:relative}
  166. .bullets li::before{content:"";position:absolute;left:0;top:8px;width:6px;height:1.5px;background:var(--brand);border-radius:1px}
  167. .bullets b{color:var(--canvas-ink);font-weight:560}
  168. code{font-family:"SF Mono",ui-monospace,Menlo,monospace;font-size:11.5px;background:var(--surface-3);color:var(--canvas-ink);padding:1px 5px;border-radius:4px}
  169. /* ---------- 色板 ---------- */
  170. .pal{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
  171. .sw{border:1px solid var(--canvas-line);border-radius:10px;overflow:hidden;background:var(--canvas-2)}
  172. .sw .chip{height:56px;display:flex;align-items:flex-end;justify-content:flex-end;padding:7px 9px}
  173. .sw .chip i{font-style:normal;font-size:9.5px;color:rgba(255,255,255,.85);font-family:"SF Mono",monospace}
  174. .sw .lb{padding:9px 11px}
  175. .sw .lb b{display:block;font-size:12px;font-weight:560}
  176. .sw .lb em{font-style:normal;display:block;font-size:10.5px;color:var(--canvas-mute);margin-top:3px;font-family:"SF Mono",monospace}
  177. /* ---------- 表 ---------- */
  178. table.spec{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--canvas-2);border:1px solid var(--canvas-line);border-radius:12px;overflow:hidden}
  179. table.spec th{
  180. background:var(--surface-2);text-align:left;padding:11px 14px;font-size:10.5px;font-weight:600;
  181. letter-spacing:.1em;color:var(--canvas-mute);text-transform:uppercase;border-bottom:1px solid var(--canvas-line);
  182. }
  183. table.spec td{padding:11px 14px;border-bottom:1px solid var(--canvas-line);color:var(--canvas-mute);line-height:1.6;vertical-align:top}
  184. table.spec tr:last-child td{border-bottom:0}
  185. table.spec td b{color:var(--canvas-ink);font-weight:550}
  186. table.spec td.m{font-family:"SF Mono",ui-monospace,Menlo,monospace;color:var(--canvas-ink);font-size:11.5px}
  187. /* ---------- 画板 ---------- */
  188. .frames{display:grid;grid-template-columns:repeat(auto-fit,minmax(390px,390px));gap:52px 36px;justify-content:start}
  189. .frame{width:390px}
  190. .frame.w2{grid-column:span 2}
  191. .phone{
  192. width:390px;height:844px;border-radius:42px;overflow:hidden;position:relative;
  193. background:var(--app-bg);border:1px solid var(--bezel);box-shadow:var(--shadow-phone);
  194. font-size:15px;color:var(--ink-1);transition:background .28s ease,border-color .28s ease;
  195. isolation:isolate;
  196. }
  197. .cap{margin-top:18px;padding-left:13px;border-left:2px solid var(--brand)}
  198. .cap-num{font-family:"SF Mono",ui-monospace,Menlo,monospace;font-size:10.5px;color:var(--brand);letter-spacing:.12em}
  199. .cap-title{font-size:14.5px;font-weight:600;margin:5px 0 8px;letter-spacing:.02em}
  200. .cap ul{list-style:none;display:flex;flex-direction:column;gap:6px}
  201. .cap li{font-size:12px;line-height:1.62;color:var(--canvas-mute);padding-left:12px;position:relative}
  202. .cap li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:1px;background:var(--canvas-line)}
  203. .cap li b{color:var(--canvas-ink);font-weight:550}
  204. .cap code{font-size:11px;background:var(--surface-3)}
  205. /* ============================================================
  206. App 内部组件
  207. ============================================================ */
  208. .screen{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;background:var(--app-bg)}
  209. .statusbar{height:52px;flex:none;display:flex;align-items:flex-end;justify-content:space-between;padding:0 24px 6px;font-size:14.5px;font-weight:600;color:var(--ink-1)}
  210. .statusbar .ic{display:flex;gap:6px;align-items:center;opacity:.9}
  211. .statusbar svg{height:12px;fill:currentColor}
  212. .homebar{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:132px;height:5px;border-radius:3px;background:var(--ink-1);opacity:.26;z-index:60}
  213. /* 顶栏 */
  214. .navbar{height:46px;flex:none;display:flex;align-items:center;padding:0 16px;position:relative;background:var(--app-bg)}
  215. .navbar h2{position:absolute;left:0;right:0;text-align:center;font-size:16.5px;font-weight:600;letter-spacing:.03em}
  216. .navbar .bk,.navbar .rt{position:relative;z-index:2;color:var(--ink-2);display:flex;align-items:center;gap:5px;font-size:13px}
  217. .navbar .rt{margin-left:auto;color:var(--brand)}
  218. .icn{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
  219. .icn.sm{width:14px;height:14px}
  220. .icn.lg{width:22px;height:22px}
  221. .appbar{padding:4px 20px 0;flex:none}
  222. .appbar h1{font-size:22px;font-weight:650;letter-spacing:.02em;display:flex;align-items:center;gap:9px}
  223. .appbar h1 .tiny{font-size:11px;font-weight:500;color:var(--ink-3);letter-spacing:.1em;padding:3px 7px;border:1px solid var(--line-2);border-radius:5px}
  224. /* 分段控件 */
  225. .seg{display:flex;padding:3px;background:var(--surface-2);border-radius:9px;gap:2px}
  226. .seg span{flex:1;text-align:center;padding:7px 0;font-size:13.5px;color:var(--ink-3);border-radius:7px;transition:.2s}
  227. .seg span.on{background:var(--surface);color:var(--ink-1);font-weight:600;box-shadow:var(--shadow-card)}
  228. [data-theme="dark"] .seg span.on{background:var(--surface-3);color:var(--brand)}
  229. /* 下划线 tab */
  230. .tabs{display:flex;gap:24px;padding:0 20px;border-bottom:1px solid var(--line);flex:none;background:var(--app-bg)}
  231. .tabs span{padding:12px 1px 11px;font-size:14.5px;color:var(--ink-3);position:relative;white-space:nowrap}
  232. .tabs span.on{color:var(--ink-1);font-weight:600}
  233. .tabs span.on::after{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:-1px;width:22px;height:2.5px;border-radius:2px;background:var(--brand)}
  234. .tabs span .dot{position:absolute;top:9px;right:-7px;width:6px;height:6px;padding:0;font-size:0;border-radius:50%;background:var(--danger)}
  235. .tabs span em{font-style:normal;color:var(--danger)}
  236. /* 底部 tabbar */
  237. .tabbar{height:72px;flex:none;display:flex;background:var(--surface);border-top:1px solid var(--line);padding-bottom:10px}
  238. .tb{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:10.5px;color:var(--ink-3)}
  239. .tb.on{color:var(--brand)}
  240. .tb .icn{width:21px;height:21px;stroke-width:1.6}
  241. /* 滚动体 */
  242. .body{flex:1;overflow:hidden;position:relative}
  243. .pad{padding:0 16px}
  244. /* 卡片 */
  245. .card{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);overflow:hidden}
  246. [data-theme="dark"] .card{border:1px solid var(--line)}
  247. .card + .card:not(.pos):not(.qc){margin-top:11px}
  248. .card-hd{display:flex;align-items:center;justify-content:space-between;padding:13px 15px 0}
  249. .card-hd h3{font-size:14.5px;font-weight:600}
  250. .card-hd .more{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:2px}
  251. /* 资金看板 */
  252. .hero{
  253. margin:10px 16px 0;border-radius:16px;padding:18px 18px 16px;position:relative;overflow:hidden;
  254. background:linear-gradient(150deg,#1B4FD8 0%,#123CAE 58%,#0C2C86 100%);color:#fff;
  255. box-shadow:0 12px 30px rgba(18,60,174,.30);
  256. }
  257. [data-theme="dark"] .hero{background:linear-gradient(150deg,#1A2C5C 0%,#132347 55%,#101B39 100%);box-shadow:0 12px 30px rgba(0,0,0,.5);border:1px solid rgba(91,140,255,.24)}
  258. .hero::after{content:"";position:absolute;right:-40px;top:-52px;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,.07)}
  259. [data-theme="dark"] .hero::after{background:rgba(91,140,255,.10)}
  260. .hero .lb{display:flex;align-items:center;gap:6px;font-size:12.5px;color:rgba(255,255,255,.76)}
  261. .hero .lb .cur{display:flex;align-items:center;gap:3px;padding:2px 6px;border-radius:5px;background:rgba(255,255,255,.14);font-size:11.5px}
  262. .hero .amt{margin-top:7px;font-size:33px;font-weight:600;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px}
  263. .hero .amt .eye{opacity:.6}
  264. .hero .arrow{position:absolute;right:18px;top:20px;opacity:.75}
  265. .hero .grid3{display:flex;margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.16)}
  266. .hero .grid3 div{flex:1}
  267. .hero .grid3 span{display:block;font-size:11px;color:rgba(255,255,255,.7)}
  268. .hero .grid3 b{display:block;margin-top:5px;font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums}
  269. /* 币种表 */
  270. .fxtab{width:100%;border-collapse:collapse;font-size:12.5px}
  271. .fxtab th{padding:9px 15px;font-size:10.5px;font-weight:500;color:var(--ink-3);letter-spacing:.06em;text-align:right;background:var(--surface-2)}
  272. .fxtab th:first-child{text-align:left}
  273. .fxtab td{padding:10px 15px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-1);border-top:1px solid var(--line)}
  274. .fxtab td:first-child{text-align:left;font-family:"SF Mono",monospace;font-size:12px;color:var(--ink-2)}
  275. /* 快捷入口 */
  276. .quick{display:flex;gap:11px;margin:11px 16px 0}
  277. .qk{flex:1;background:var(--surface);border-radius:13px;padding:13px 12px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-card);position:relative}
  278. [data-theme="dark"] .qk{border:1px solid var(--line)}
  279. .qk .ib{width:32px;height:32px;border-radius:9px;background:var(--brand-weak);color:var(--brand);display:flex;align-items:center;justify-content:center;flex:none}
  280. .qk b{font-size:13.5px;font-weight:550}
  281. .qk .rd{position:absolute;top:9px;right:9px;width:7px;height:7px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--surface)}
  282. /* 列表行 */
  283. .row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 15px;border-bottom:1px solid var(--line);font-size:14.5px}
  284. .row:last-child{border-bottom:0}
  285. .row .k{color:var(--ink-2);display:flex;align-items:center;gap:7px;flex:none}
  286. .row .k .icn{color:var(--ink-3)}
  287. .row .v{color:var(--ink-1);font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:6px;text-align:right}
  288. .row .v.ph{color:var(--ink-4)}
  289. .row .v.m{font-family:"SF Mono",monospace;font-size:13.5px}
  290. .hint{width:13px;height:13px;border-radius:50%;border:1px solid var(--ink-4);color:var(--ink-3);font-size:8.5px;display:inline-flex;align-items:center;justify-content:center;font-style:normal;flex:none}
  291. /* 标签 / 徽标 */
  292. .tag{font-size:10.5px;padding:2px 6px;border-radius:4px;letter-spacing:.02em;font-weight:520;display:inline-flex;align-items:center;gap:3px;flex:none}
  293. .t-brand{background:var(--brand-weak);color:var(--brand)}
  294. .t-accent{background:var(--accent-weak);color:var(--accent)}
  295. .t-rise{background:var(--rise-weak);color:var(--rise)}
  296. .t-fall{background:var(--fall-weak);color:var(--fall)}
  297. .t-ok{background:var(--ok-weak);color:var(--ok)}
  298. .t-warn{background:var(--warn-weak);color:var(--warn)}
  299. .t-mute{background:var(--surface-3);color:var(--ink-3)}
  300. .t-solid{background:var(--brand);color:var(--on-brand)}
  301. .t-danger{background:var(--danger);color:#fff}
  302. .cmark{width:14px;height:14px;border-radius:50%;background:var(--brand);color:var(--on-brand);font-size:9px;display:inline-flex;align-items:center;justify-content:center;font-weight:600;flex:none;font-style:normal}
  303. .corner{position:absolute;left:0;top:0;padding:2px 9px 2px 7px;font-size:9.5px;color:#fff;background:var(--danger);border-radius:12px 0 12px 0;letter-spacing:.04em;z-index:3}
  304. .corner.due{background:var(--accent)}
  305. .corner.pend{background:var(--ink-3)}
  306. /* 状态点 */
  307. .st{display:inline-flex;align-items:center;gap:5px;font-size:12.5px}
  308. .st i{width:6px;height:6px;border-radius:50%;flex:none;background:currentColor}
  309. .st.wait{color:var(--ink-3)}
  310. .st.live{color:var(--accent)}
  311. .st.live i{background:transparent;border:1.6px solid currentColor}
  312. .st.done{color:var(--ok)}
  313. .st.rej{color:var(--danger)}
  314. .st.exp{color:var(--ink-4)}
  315. /* 按钮 */
  316. .btn{
  317. height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:6px;
  318. background:var(--brand);color:var(--on-brand);font-size:15.5px;font-weight:600;letter-spacing:.06em;
  319. box-shadow:0 6px 16px rgba(27,79,216,.24);
  320. }
  321. [data-theme="dark"] .btn{box-shadow:0 6px 18px rgba(91,140,255,.20)}
  322. .btn.sm{height:38px;font-size:14px;border-radius:10px;box-shadow:none}
  323. .btn.off{background:var(--surface-3);color:var(--ink-4);box-shadow:none}
  324. .btn.ghost{background:transparent;border:1px solid var(--line-2);color:var(--ink-2);box-shadow:none;font-weight:500}
  325. .btn.danger{background:var(--danger);box-shadow:none;color:#fff}
  326. .btn.wide{width:100%}
  327. .iconbtn{width:46px;height:46px;border-radius:12px;border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--ink-2);flex:none;background:var(--surface)}
  328. /* 输入 */
  329. .field{background:var(--surface);border:1px solid var(--line-2);border-radius:11px;height:44px;display:flex;align-items:center;gap:9px;padding:0 13px;font-size:14.5px;color:var(--ink-1)}
  330. .field.focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-weak)}
  331. .field.err{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-weak)}
  332. .field .ph{color:var(--ink-4)}
  333. .field .icn{color:var(--ink-3)}
  334. .field .unit{margin-left:auto;color:var(--ink-2);font-size:13.5px}
  335. .lbl{font-size:11.5px;color:var(--ink-3);letter-spacing:.06em;margin-bottom:7px;display:block}
  336. .errtip{font-size:11.5px;color:var(--danger);margin-top:6px;display:flex;align-items:center;gap:4px}
  337. /* chips */
  338. .chips{display:flex;gap:7px;flex-wrap:wrap}
  339. .chip{height:32px;padding:0 12px;border-radius:9px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:13px;display:flex;align-items:center;font-variant-numeric:tabular-nums}
  340. .chip.on{background:var(--brand-weak);border-color:var(--brand-line);color:var(--brand);font-weight:560}
  341. .chip.dash{border-style:dashed}
  342. /* 单选 / 复选 */
  343. .rad{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink-2)}
  344. .rad i{width:15px;height:15px;border-radius:50%;border:1.4px solid var(--line-2);position:relative;flex:none}
  345. .rad.on{color:var(--ink-1)}
  346. .rad.on i{border-color:var(--brand)}
  347. .rad.on i::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--brand)}
  348. .cb{width:16px;height:16px;border-radius:4.5px;border:1.4px solid var(--line-2);flex:none;display:flex;align-items:center;justify-content:center;color:transparent}
  349. .cb.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
  350. .cb .icn{width:11px;height:11px;stroke-width:2.6}
  351. /* 步进器 */
  352. .stepper{height:38px;border:1px solid var(--line-2);border-radius:10px;display:flex;align-items:center;overflow:hidden;background:var(--surface)}
  353. .stepper b{width:34px;text-align:center;font-weight:400;font-size:17px;color:var(--ink-3)}
  354. .stepper i{flex:1;text-align:center;font-style:normal;font-variant-numeric:tabular-nums;font-size:15px;border-left:1px solid var(--line);border-right:1px solid var(--line);line-height:36px}
  355. .stepper.err{border-color:var(--danger)}
  356. .stepper.err i{color:var(--danger)}
  357. /* 搜索 */
  358. .search{height:38px;border-radius:10px;background:var(--surface-2);display:flex;align-items:center;gap:8px;padding:0 12px;font-size:14px;color:var(--ink-4)}
  359. .search .icn{color:var(--ink-3)}
  360. .search b{color:var(--ink-1);font-weight:500}
  361. .sug{background:var(--surface);border-radius:12px;box-shadow:var(--shadow-pop);overflow:hidden;margin-top:6px}
  362. .sug div{padding:11px 13px;font-size:14px;border-bottom:1px solid var(--line);display:flex;gap:8px}
  363. .sug div:last-child{border-bottom:0}
  364. .sug em{font-style:normal;color:var(--brand)}
  365. .sug span{font-family:"SF Mono",monospace;font-size:12.5px;color:var(--ink-3)}
  366. /* 弹窗 */
  367. .scrim{position:absolute;inset:0;background:var(--scrim);z-index:40;display:flex;align-items:center;justify-content:center;padding:0 30px}
  368. .scrim.bottom{align-items:flex-end;padding:0}
  369. .dlg{width:100%;background:var(--surface);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-pop)}
  370. .dlg.sheet{border-radius:18px 18px 0 0;padding-bottom:22px}
  371. .dlg-hd{padding:18px 18px 0;text-align:center}
  372. .dlg-hd h3{font-size:16.5px;font-weight:600}
  373. .dlg-bd{padding:14px 18px 4px;font-size:14px;color:var(--ink-2);line-height:1.65}
  374. .dlg-ft{display:flex;border-top:1px solid var(--line);margin-top:16px}
  375. .dlg-ft span{flex:1;text-align:center;padding:14px 0;font-size:15.5px;color:var(--brand);font-weight:550}
  376. .dlg-ft span:first-child{color:var(--ink-2);border-right:1px solid var(--line)}
  377. .dlg-ft.single span{color:var(--brand)}
  378. .dlg-btns{display:flex;gap:11px;padding:16px 18px 0}
  379. .dlg-btns .btn{flex:1}
  380. /* toast */
  381. .toast{
  382. position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);z-index:50;
  383. background:rgba(15,25,45,.90);color:#fff;padding:12px 20px;border-radius:11px;font-size:14px;max-width:290px;text-align:center;line-height:1.55;
  384. }
  385. [data-theme="dark"] .toast{background:rgba(230,238,250,.94);color:#0B1020}
  386. /* 提示条 */
  387. .notice{display:flex;gap:8px;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.6}
  388. .notice.warn{background:var(--warn-weak);color:var(--warn)}
  389. .notice.info{background:var(--brand-weak);color:var(--brand)}
  390. .notice.danger{background:var(--danger-weak);color:var(--danger)}
  391. .notice .icn{flex:none;margin-top:1px}
  392. /* 空态 */
  393. .empty{padding:44px 0;text-align:center;color:var(--ink-4);font-size:13.5px}
  394. .empty .icn{width:34px;height:34px;stroke-width:1.2;margin-bottom:10px;color:var(--ink-4)}
  395. /* 分组标题 */
  396. .gtitle{padding:16px 16px 8px;font-size:12px;color:var(--ink-3);letter-spacing:.06em}
  397. /* 骨架/遮罩说明用 */
  398. .dim{opacity:.45}
  399. /* ============================================================
  400. 业务组件
  401. ============================================================ */
  402. /* 筛选栏 */
  403. .filterbar{display:flex;gap:8px;padding:10px 16px;background:var(--app-bg);flex:none;align-items:center}
  404. .fb{height:34px;padding:0 11px;border-radius:9px;background:var(--surface-2);color:var(--ink-2);font-size:13px;display:flex;align-items:center;gap:5px;white-space:nowrap}
  405. .fb.on{background:var(--brand-weak);color:var(--brand);font-weight:550}
  406. .fb .icn{width:13px;height:13px}
  407. .fb.flex{flex:1;min-width:0}
  408. /* 筛选栏 v2 —— 搜索行 + 条件行(时间在左,筛选入口在右) */
  409. .fsearch{margin:10px 16px 0;height:40px;border-radius:12px;background:var(--surface-2);display:flex;align-items:center;gap:9px;padding:0 13px;font-size:14px;color:var(--ink-4);flex:none}
  410. .fsearch .icn{width:16px;height:16px;color:var(--ink-3);flex:none}
  411. .fsearch b{color:var(--ink-1);font-weight:500}
  412. .fsearch .clr{margin-left:auto;color:var(--ink-4)}
  413. .fcond{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;flex:none;background:var(--app-bg)}
  414. .fpill{height:34px;padding:0 14px;border-radius:17px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:13.5px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
  415. .fpill .icn{width:13px;height:13px;color:var(--ink-3)}
  416. .fpill.on{background:var(--brand-weak);border-color:var(--brand-line);color:var(--brand);font-weight:560}
  417. .fpill.on .icn{color:var(--brand)}
  418. .fmore{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink-2);position:relative;padding-right:2px}
  419. .fmore .icn{width:15px;height:15px;color:var(--ink-3)}
  420. .fmore.on{color:var(--brand);font-weight:560}
  421. .fmore.on .icn{color:var(--brand)}
  422. .fmore.on::after{content:"";position:absolute;right:-5px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--danger)}
  423. /* 筛选面板 —— 底部弹层 */
  424. .fsheet{padding-bottom:20px}
  425. .fsheet-hd{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 2px}
  426. .fsheet-hd b{font-size:17px;font-weight:600;letter-spacing:.02em}
  427. .fsheet-hd .icn{width:19px;height:19px;color:var(--ink-3)}
  428. .fsec{padding:16px 20px 0}
  429. .fsec .lbl{margin-bottom:10px}
  430. .optgrid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
  431. .opt{height:42px;border-radius:21px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:14px;display:flex;align-items:center;justify-content:center;white-space:nowrap;padding:0 10px}
  432. .opt.on{background:var(--brand-weak);border-color:var(--brand);color:var(--brand);font-weight:600}
  433. .opt.dis{background:var(--surface-2);border-color:var(--line);color:var(--ink-4)}
  434. .fline{height:1px;background:var(--line);margin:18px 20px 0}
  435. /* 自定义区间 · 日期段 + 滚轮 */
  436. .dtrow{display:flex;gap:11px}
  437. .dt{flex:1;min-width:0;background:var(--surface);border:1px solid var(--line-2);border-radius:12px;padding:8px 12px 10px}
  438. .dt em{display:block;font-style:normal;font-size:11px;color:var(--ink-3);letter-spacing:.04em}
  439. .dt b{display:block;margin-top:3px;font-size:16px;font-weight:600;color:var(--ink-1);font-variant-numeric:tabular-nums;font-family:"SF Mono",ui-monospace,Menlo,monospace}
  440. .dt.act{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-weak)}
  441. .dt.act em{color:var(--brand)}
  442. .dt.err{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-weak)}
  443. .wheel{position:relative;margin:14px 20px 0;padding:4px 8px;display:grid;grid-template-columns:repeat(3,1fr);text-align:center}
  444. .wheel .band{position:absolute;left:6px;right:6px;top:50%;height:40px;transform:translateY(-50%);background:var(--surface-2);border-radius:10px}
  445. .wcol{position:relative;z-index:1;display:flex;flex-direction:column}
  446. .wcol span{height:40px;line-height:40px;font-size:14px;color:var(--ink-2);font-variant-numeric:tabular-nums}
  447. .wcol span.far{color:var(--ink-4);opacity:.5}
  448. .wcol span.now{color:var(--ink-1);font-size:16px;font-weight:600}
  449. .fsheet-ft{display:flex;gap:12px;padding:20px 20px 0}
  450. .fsheet-ft .btn{flex:1.18}
  451. .fsheet-ft .btn.ghost{flex:.82;background:var(--surface-2);border:0;color:var(--ink-2);font-weight:600}
  452. /* 持仓卡片 */
  453. .pos{position:relative;margin:0 16px 11px;padding:13px 0 0}
  454. .pos-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:0 14px}
  455. .pos-name{font-size:15.5px;font-weight:600;display:flex;align-items:center;gap:6px}
  456. .pos-code{font-size:11px;color:var(--ink-3);margin-top:4px;letter-spacing:.02em;font-family:"SF Mono",monospace}
  457. .pos-val{text-align:right;flex:none}
  458. .pos-val b{display:block;font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
  459. .pos-val span{display:block;font-size:10.5px;color:var(--ink-3);margin-top:3px}
  460. .pos-pl{display:flex;justify-content:flex-end;gap:9px;padding:6px 14px 0;font-size:12.5px;font-variant-numeric:tabular-nums}
  461. .up{color:var(--rise)} .down{color:var(--fall)} .flat{color:var(--ink-3)}
  462. .pos-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 6px;padding:12px 14px 13px;margin-top:10px;border-top:1px solid var(--line)}
  463. .pos-grid div span{display:block;font-size:10px;color:var(--ink-3);letter-spacing:.02em}
  464. .pos-grid div b{display:block;margin-top:4px;font-size:12.5px;font-weight:550;font-variant-numeric:tabular-nums;white-space:nowrap}
  465. .pos-grid div b em{font-style:normal;color:var(--ink-3);font-weight:400;font-size:11px}
  466. .pos-ops{display:flex;border-top:1px solid var(--line);background:var(--surface-2)}
  467. .pos-ops span{flex:1;text-align:center;padding:11px 0;font-size:13.5px;color:var(--ink-2);border-right:1px solid var(--line)}
  468. .pos-ops span:last-child{border-right:0}
  469. .pos-ops span.pri{color:var(--brand);font-weight:550}
  470. .pos-ops span.hot{color:var(--danger);font-weight:550}
  471. .pos-ops span.off{color:var(--ink-4)}
  472. /* 冻结列表格(数据模式) */
  473. .gridtab{display:flex;font-size:12px;overflow:hidden}
  474. .gt-fix{flex:none;width:118px;border-right:1px solid var(--line-2);background:var(--surface);position:relative;z-index:2;box-shadow:4px 0 10px rgba(15,27,51,.06)}
  475. [data-theme="dark"] .gt-fix{box-shadow:4px 0 10px rgba(0,0,0,.35)}
  476. .gt-scroll{flex:1;overflow:hidden;background:var(--surface)}
  477. .gt-h{height:36px;display:flex;align-items:center;background:var(--surface-2);color:var(--ink-3);font-size:10.5px;letter-spacing:.02em;padding:0 10px;border-bottom:1px solid var(--line);white-space:nowrap;gap:14px}
  478. .gt-r{height:52px;display:flex;align-items:center;padding:0 10px;border-bottom:1px solid var(--line);white-space:nowrap;gap:14px;font-variant-numeric:tabular-nums}
  479. .gt-fix .gt-r{flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;position:relative;padding-left:14px}
  480. .gt-fix .gt-h{padding-left:14px}
  481. /* 表格形式的「新报价」角标:斜切丝带,带 NEW 文案;冻结列左内边距统一 14px 给丝带让位,行内文字不被压 */
  482. .gt-new{position:absolute;left:0;top:0;width:34px;height:34px;overflow:hidden;z-index:3;pointer-events:none}
  483. .gt-new::before{content:"NEW";position:absolute;left:-17px;top:1px;width:48px;padding:1px 0;transform:rotate(-45deg);background:var(--danger);color:#fff;font-size:7.5px;font-weight:600;font-style:normal;letter-spacing:.04em;text-align:center;line-height:1.35}
  484. .gt-r i{font-style:normal;display:inline-block;text-align:right}
  485. .gt-h i{display:inline-block;text-align:right}
  486. /* 询价 / 订单卡片 */
  487. .qc{margin:0 16px 10px;padding:13px 14px;position:relative}
  488. .qc-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
  489. .qc-name{font-size:15px;font-weight:600;display:flex;align-items:center;gap:6px}
  490. .qc-sub{font-size:11px;color:var(--ink-3);margin-top:4px;font-family:"SF Mono",monospace}
  491. .qc-r{text-align:right;flex:none}
  492. .qc-time{font-size:10.5px;color:var(--ink-3);margin-top:5px;font-family:"SF Mono",monospace}
  493. .qc-meta{display:flex;gap:16px;margin-top:10px;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
  494. .qc-meta em{font-style:normal;color:var(--ink-3);font-size:11px;margin-right:4px}
  495. .qc-open{margin-top:12px;border-top:1px dashed var(--line-2);padding-top:10px}
  496. .qt{display:grid;grid-template-columns:1.1fr .8fr .8fr .9fr;font-size:12px;font-variant-numeric:tabular-nums;align-items:center}
  497. .qt.h{color:var(--ink-3);font-size:10.5px;padding-bottom:7px}
  498. .qt.r{padding:9px 8px;margin:0 -8px;border-radius:8px}
  499. .qt.r:hover,.qt.r.hl{background:var(--brand-weak)}
  500. .qt .p{color:var(--brand);font-weight:600}
  501. .qt .t{color:var(--ink-3);font-size:10.5px;text-align:right}
  502. /* 「新」标记分工:卡片/行角标表明本单有新报价,行内红点指出具体是哪一条 */
  503. .qt span:first-child{position:relative;padding-left:12px}
  504. .qt .newdot{position:absolute;left:0;top:50%;margin:0;transform:translateY(-50%);vertical-align:0}
  505. .newdot{width:6px;height:6px;border-radius:50%;background:var(--danger);display:inline-block;margin-right:5px;vertical-align:1px}
  506. /* 时间线(流水) */
  507. .tl{padding:0 16px}
  508. .tl-i{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
  509. .tl-i .dot{width:9px;height:9px;border-radius:50%;background:var(--brand);flex:none;margin-top:5px;box-shadow:0 0 0 3px var(--brand-weak)}
  510. .tl-i .dot.out{background:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}
  511. .tl-i .c{flex:1}
  512. .tl-i .c b{font-size:14.5px;font-weight:550}
  513. .tl-i .c span{display:block;font-size:11px;color:var(--ink-3);margin-top:4px;font-family:"SF Mono",monospace}
  514. .tl-i .amt{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
  515. /* 设置项列表 */
  516. .menu{background:var(--surface);border-radius:14px;overflow:hidden;margin:0 16px 12px;box-shadow:var(--shadow-card)}
  517. [data-theme="dark"] .menu{border:1px solid var(--line)}
  518. .mi{display:flex;align-items:center;gap:12px;padding:15px 15px;border-bottom:1px solid var(--line);font-size:15px}
  519. .mi:last-child{border-bottom:0}
  520. .mi .ib{width:30px;height:30px;border-radius:9px;background:var(--brand-weak);color:var(--brand);display:flex;align-items:center;justify-content:center;flex:none}
  521. .mi .ib.am{background:var(--accent-weak);color:var(--accent)}
  522. .mi .tx{flex:1}
  523. .mi .tx em{font-style:normal;display:block;font-size:11.5px;color:var(--ink-3);margin-top:3px}
  524. .mi .rv{color:var(--ink-3);font-size:13.5px;display:flex;align-items:center;gap:4px}
  525. /* 开关 */
  526. .sw2{width:44px;height:26px;border-radius:14px;background:var(--line-2);position:relative;flex:none;transition:.2s}
  527. .sw2::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.2s}
  528. .sw2.on{background:var(--brand)}
  529. .sw2.on::after{left:21px}
  530. /* ============================================================
  531. 消息中心
  532. ============================================================ */
  533. /* 未读徽标 */
  534. .nbadge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;font-weight:600;
  535. display:inline-flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;flex:none;letter-spacing:0}
  536. .nbadge.dot{min-width:8px;width:8px;height:8px;padding:0;border-radius:50%}
  537. /* 分类聚合行 */
  538. .mcat{display:flex;align-items:center;gap:12px;padding:13px 15px;border-bottom:1px solid var(--line)}
  539. .mcat:last-child{border-bottom:0}
  540. .mcat .ic{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex:none}
  541. .mcat .ic .icn{width:20px;height:20px;stroke-width:1.8}
  542. .mcat .ic.c-brand{background:var(--brand-weak);color:var(--brand)}
  543. .mcat .ic.c-ok{background:var(--ok-weak);color:var(--ok)}
  544. .mcat .ic.c-accent{background:var(--accent-weak);color:var(--accent)}
  545. .mcat .ic.c-mute{background:var(--surface-3);color:var(--ink-3)}
  546. .mcat .ic.c-danger{background:var(--danger-weak);color:var(--danger)}
  547. .mcat .c{flex:1;min-width:0}
  548. .mcat .c b{display:block;font-size:15px;font-weight:600;letter-spacing:.02em}
  549. .mcat .c span{display:block;margin-top:4px;font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  550. .mcat .r{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:8px;flex:none;align-self:stretch;padding-top:2px}
  551. .mcat .r em{font-style:normal;font-size:11px;color:var(--ink-4);white-space:nowrap;font-variant-numeric:tabular-nums}
  552. /* 分类内消息卡 */
  553. .msg{background:var(--surface);border-radius:12px;box-shadow:var(--shadow-card);padding:13px 15px 14px;margin:0 16px 10px}
  554. [data-theme="dark"] .msg{border:1px solid var(--line)}
  555. .msg .h{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
  556. .msg .h b{font-size:14.5px;font-weight:600;letter-spacing:.02em}
  557. .msg .h em{font-style:normal;font-size:11px;color:var(--ink-4);white-space:nowrap;flex:none;font-variant-numeric:tabular-nums}
  558. .msg p{margin-top:7px;font-size:13px;line-height:1.62;color:var(--ink-2);
  559. display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  560. .msg.unread .h b{padding-left:13px;position:relative}
  561. .msg.unread .h b::before{content:"";position:absolute;left:0;top:6px;width:6px;height:6px;border-radius:50%;background:var(--danger)}
  562. .msg.read .h b,.msg.read p{color:var(--ink-3)}
  563. /* 消息详情 */
  564. .msgd{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);margin:12px 16px 0;overflow:hidden}
  565. [data-theme="dark"] .msgd{border:1px solid var(--line)}
  566. .msgd .hd{padding:18px 18px 0}
  567. .msgd .hd h3{font-size:17px;font-weight:600;line-height:1.45;letter-spacing:.02em}
  568. .msgd .hd .t{margin-top:9px;font-size:11.5px;color:var(--ink-4);font-variant-numeric:tabular-nums;letter-spacing:.04em}
  569. .msgd .bd{padding:14px 18px 18px;font-size:14px;line-height:1.78;color:var(--ink-2)}
  570. .msgd .bd b{color:var(--ink-1);font-weight:600}
  571. .msgd .ft{border-top:1px solid var(--line);padding:14px 18px;display:flex;align-items:center;justify-content:space-between;font-size:14px;color:var(--brand);font-weight:600}
  572. /* 空态占位(与 05 / 02 同一套组件) */
  573. .emptyslot{flex:1;display:flex;align-items:center;justify-content:center;padding:0 0 204px}
  574. .emptybox{--il-a:#E7EDF6;--il-b:#D8E0EC;--il-c:#F8FAFE;
  575. display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 32px}
  576. [data-theme="dark"] .emptybox{--il-a:#1F2A45;--il-b:#161F38;--il-c:#28355A}
  577. .emptybox .illu{width:120px;height:104px;display:block}
  578. .emptybox .etxt{margin-top:16px;font-size:14px;color:var(--ink-3);letter-spacing:.1em}
  579. .emptybox .esub{margin-top:8px;font-size:12px;line-height:1.65;color:var(--ink-4);max-width:236px}
  580. /* 数据表(App 内) */
  581. .dt{width:100%;border-collapse:collapse;font-size:12.5px}
  582. .dt th{background:var(--surface-2);color:var(--ink-3);font-size:10.5px;font-weight:500;padding:9px 10px;text-align:right;letter-spacing:.02em}
  583. .dt th:first-child{text-align:left}
  584. .dt td{padding:10px;text-align:right;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
  585. .dt td:first-child{text-align:left;color:var(--ink-2)}
  586. /* 键盘 */
  587. .kbd{background:var(--surface-2);padding:8px 6px 26px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
  588. .kbd span{height:44px;border-radius:8px;background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:21px;font-weight:500;box-shadow:0 1px 2px rgba(15,27,51,.10)}
  589. [data-theme="dark"] .kbd span{box-shadow:none;border:1px solid var(--line)}
  590. .kbd span.fn{background:transparent;box-shadow:none;font-size:15px;color:var(--ink-2)}
  591. .kbd span.ok{background:var(--brand);color:var(--on-brand);font-size:16px}
  592. /* 对照页专用 */
  593. .pair{display:grid;grid-template-columns:390px 390px;gap:36px;justify-content:start}
  594. .pair-lb{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--canvas-mute);margin-bottom:12px;letter-spacing:.08em}
  595. .pair-lb i{width:12px;height:12px;border-radius:3px;border:1px solid var(--canvas-line);flex:none}
  596. /* 角标占位:有角标的卡片顶部让出空间,避免压住标的名 */
  597. .pos:has(.corner) .pos-hd{padding-top:15px}
  598. .qc:has(.corner){padding-top:26px}
  599. /* ============================================================
  600. 本图纸新增:列表视图切换(卡片 / 表格)
  601. ============================================================ */
  602. .viewtog{display:inline-flex;padding:2px;background:var(--surface-2);border-radius:8px;gap:2px;flex:none;position:relative}
  603. .viewtog.sep{margin-left:4px}
  604. .viewtog.sep::before{content:"";position:absolute;left:-7px;top:2px;bottom:2px;width:1px;background:var(--line-2)}
  605. .viewtog span{width:28px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:var(--ink-3)}
  606. .viewtog span.on{background:var(--surface);color:var(--brand);box-shadow:var(--shadow-card)}
  607. [data-theme="dark"] .viewtog span.on{background:var(--surface-3)}
  608. .viewtog span.press{background:var(--surface-3)}
  609. .viewtog .icn{width:15px;height:15px;stroke-width:1.8}
  610. .fright{display:flex;align-items:center;gap:12px}
  611. /* 与 02 / 03 / 04 同步的页面骨架件 */
  612. .bellwrap{position:relative;display:inline-flex;flex:none}
  613. .bellwrap .rd{position:absolute;top:-1px;right:0;width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--app-bg);font-style:normal}
  614. /* 两行顶栏(标题 + 分段控件)的标题行:标题左、铃铛右 */
  615. .apphd{display:flex;align-items:center;justify-content:space-between}
  616. .fbscroll{display:flex;gap:8px;align-items:center;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
  617. .fbscroll::-webkit-scrollbar{display:none}
  618. /* 表格模式:表头可排序 */
  619. .gt-h i.sortable{color:var(--ink-2)}
  620. .gt-h i .sar{display:inline-block;margin-left:2px;color:var(--brand)}
  621. /* 组件规格卡 */
  622. .spec-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;align-items:start}
  623. .specbox{background:var(--canvas-2);border:1px solid var(--canvas-line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
  624. .specbox h5{font-size:11px;font-weight:600;letter-spacing:.14em;color:var(--canvas-mute);padding:16px 18px 0;text-transform:uppercase}
  625. .specbox .stage{margin:13px 13px 0;padding:13px 0;border-radius:12px;background:var(--app-bg);border:1px dashed var(--canvas-line)}
  626. .specbox .stage.tight{padding:0;overflow:hidden}
  627. .specbox .dims{display:flex;gap:7px;flex-wrap:wrap;padding:13px 18px 0}
  628. .specbox .dims span{font-size:10.5px;padding:3px 8px;border-radius:5px;background:var(--surface-3);color:var(--canvas-mute);font-family:"SF Mono",ui-monospace,Menlo,monospace}
  629. .specbox .note{padding:12px 18px 16px;margin-top:auto;font-size:11.5px;line-height:1.72;color:var(--canvas-mute)}
  630. .specbox .note b{color:var(--canvas-ink);font-weight:550}
  631. .stlabel{font-size:10.5px;color:var(--canvas-mute);letter-spacing:.06em;padding:0 16px 6px}
  632. /* ==== v1.3 · 08 专用 BEGIN ==== */
  633. /* 通用表格(ptab)在 08 的补充:无冻结列的满宽表、两行时间、状态点、类型标签 */
  634. .ptab .r{position:relative}
  635. .ptab .r.fit .sc{flex:1;padding:0 10px}
  636. .ptab.wcorner .r.fit .sc{padding-left:14px}
  637. .ptab .r>.gt-new{position:absolute;left:0;top:0}
  638. .card-hd h3 .cnt{color:var(--ink-3);font-weight:400;font-size:12.5px;margin-left:6px}
  639. .card-hd .more .icn{width:13px;height:13px}
  640. .ptab .r.fit .sc .c{flex:1}
  641. .ptab .t2{display:block;font-family:var(--font-num);font-size:10.5px;color:var(--ink-3);margin-top:2px;line-height:1.35;text-align:right}
  642. .ptab .st{font-size:12px}
  643. .ptab .tg{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
  644. .ptab .tg .tag{font-size:10px;padding:1px 5px}
  645. .ptab .lr{text-align:right;line-height:1.35}
  646. .ptab .lr small{display:block;font-size:10.5px;color:var(--ink-3)}
  647. .ptab .cfd b{display:block;font-family:var(--font-num);font-size:12px;font-weight:600}
  648. .ptab .cfd span{display:block;font-size:11px;color:var(--ink-2);margin-top:3px}
  649. .ptab .am.o{color:var(--ink-2)} .ptab .am.h{color:var(--danger)}
  650. .ptab .xrow .ops{display:flex;gap:10px;justify-content:flex-end;padding:11px 12px}
  651. .ptab .xrow .ops .chip.dg{color:var(--danger);border-color:var(--danger)}
  652. .ptab .xrow .qbox{padding:0 0 0 0}
  653. .ptab .cb20{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--line-2);display:flex;align-items:center;justify-content:center;background:var(--surface);flex:none}
  654. .ptab .cb20.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
  655. .ptab .cb20 .icn{width:13px;height:13px;stroke-width:2.6}
  656. .listhd{display:flex;align-items:center;justify-content:space-between;padding:13px 16px 9px}
  657. .listhd h3{font-size:13px;color:var(--ink-3);font-weight:500}
  658. /* 报价子表(今日询价展开) */
  659. .qtab{background:var(--surface-2)}
  660. .qtab>div{display:flex;align-items:center;gap:8px;padding:0 10px 0 14px;border-top:1px solid var(--line)}
  661. .qtab .qh{height:36px;font-size:10.5px;color:var(--ink-3)}
  662. .qtab .qr{height:36px;font-size:12px}
  663. .qtab>div>span{flex:1;text-align:right;font-family:var(--font-num);white-space:nowrap}
  664. .qtab>div>span:first-child{text-align:left;font-family:var(--font-mono)}
  665. .qtab .qh>span{font-family:inherit}
  666. .qtab>div>span:last-child{flex:none;width:46px}
  667. .qtab .p{color:var(--brand);font-weight:600}
  668. .qtab .t{color:var(--ink-3);font-size:10.5px}
  669. .mbtn{display:flex;align-items:center;justify-content:center;width:46px;height:26px;border-radius:8px;background:var(--brand);color:var(--on-brand);font-size:12.5px;font-weight:600;font-family:"PingFang SC",system-ui,sans-serif}
  670. .mbtn.dis{opacity:.45}
  671. /* 规格示意 */
  672. .vtspec{display:flex;gap:26px;align-items:center;flex-wrap:wrap}
  673. .vtspec .viewtog{transform:scale(1.4);transform-origin:left center;margin-right:24px}
  674. .vtspec em{font-style:normal;font-size:11.5px;color:var(--canvas-mute)}
  675. /* ==== v1.3 · 08 专用 END ==== */
  676. /* ==== v1.3 公共覆盖 BEGIN · 2026-10-14 按代码现状对齐(同一段注入全部图纸,改动从清单目录的 common-v13.css 同步) ==== */
  677. /* 字体:数值走 Inter(代码 NumText),代码 / 编号走 iOS 的 Menlo(代码 MonoText),正文仍是系统字 */
  678. @font-face{font-family:"Inter";src:url("assets/fonts/Inter-Regular.subset.otf") format("opentype");font-weight:400}
  679. @font-face{font-family:"Inter";src:url("assets/fonts/Inter-Medium.subset.otf") format("opentype");font-weight:500}
  680. @font-face{font-family:"Inter";src:url("assets/fonts/Inter-SemiBold.subset.otf") format("opentype");font-weight:600}
  681. @font-face{font-family:"Inter";src:url("assets/fonts/Inter-Bold.subset.otf") format("opentype");font-weight:700}
  682. :root{--font-num:"Inter","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;--font-mono:Menlo,"SF Mono",ui-monospace,monospace}
  683. .phone .num,.hero .amt,.hero .grid3 b,.fxtab td,.pos-val b,.pos-pl,.pos-grid div b,.qt,.gt-r,.stepper i,.kbd span,.tl-i .amt{font-family:var(--font-num)}
  684. .statusbar .num{font-family:inherit}
  685. .phone .mono,.pos-code,.qc-sub,.qc-time,.fxtab td:first-child,.sug span,.tl-i .c span,.row .v.m{font-family:var(--font-mono)}
  686. /* 底栏:四个 Tab(票据 / 账户 / 消息 / 我的);消息 Tab 只有红点,后端不给条数 */
  687. .tb .tbi{position:relative;display:inline-flex;flex:none}
  688. .tb .tbi .rdot{position:absolute;top:-2px;left:14px;width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--surface)}
  689. /* 二级页导航栏:iOS 系统导航栏,表面色底、居中 17 / 600 标题、品牌色返回箭头、无分隔线(H5 标题靠左,见 00 规范) */
  690. .navbar{height:44px;background:var(--surface)}
  691. .statusbar:has(+ .navbar){background:var(--surface)}
  692. .navbar h2{font-size:17px;font-weight:600;letter-spacing:0}
  693. .navbar .bk{color:var(--brand)}
  694. .navbar .bk .icn{width:22px;height:22px;stroke-width:2.1}
  695. /* 图注里的身份标记:本期未上线 / v1.3 新增 / 平台限定 */
  696. .cap-flags{display:inline-flex;gap:6px;margin-left:8px;vertical-align:1px}
  697. .cap-flag{font-family:"PingFang SC",system-ui,sans-serif;font-size:10px;letter-spacing:.04em;padding:1px 6px;border-radius:4px;border:1px solid var(--canvas-line);color:var(--canvas-mute);background:var(--canvas-2)}
  698. .cap-flag.off{color:var(--accent);border-color:var(--accent-line);background:var(--accent-weak)}
  699. .cap-flag.new{color:var(--brand);border-color:var(--brand-line);background:var(--brand-weak)}
  700. .cap-flag.plat{color:var(--ok);border-color:rgba(15,123,79,.35);background:var(--ok-weak)}
  701. /* 实心底上的文字(角标 / 实心标签 / 危险按钮):浅色白字,深色下底色被提亮、改配近黑字(代码 $onFill / $onDanger) */
  702. [data-theme="dark"] .corner,[data-theme="dark"] .t-danger,[data-theme="dark"] .btn.danger,[data-theme="dark"] .mb,[data-theme="dark"] .gt-new::before{color:#05122E}
  703. /* 表格首列的迷你角标(代码 CornerBadge variant="mini"):9 / 600、左右 4 */
  704. .mb{display:inline-flex;align-items:center;font-size:9px;font-weight:600;line-height:12px;padding:1px 4px;border-radius:4px;color:#fff;background:var(--ink-3);white-space:nowrap}
  705. .mb.d{background:var(--danger)} .mb.a{background:var(--accent)} .mb.m{background:var(--ink-3)} .mb.b{background:var(--brand)}
  706. /* Toast:按内容定宽、最宽 290(代码 maxW 290),单行放得下就不折行;位置 top 76% */
  707. .toast{width:max-content;max-width:290px}
  708. /* ---- 通用组件(代码 components/ 的对应件) ---- */
  709. /* 资金看板右上「>」用 lg 档 */
  710. .hero .arrow{width:22px;height:22px}
  711. /* 只读行:InfoRow(无分隔线)/ FieldRow(带分隔线,.frow),左 ink2 右 Inter */
  712. .irow{display:flex;justify-content:space-between;align-items:center;padding:14px 15px;font-size:14.5px}
  713. .irow span{color:var(--ink-2)}
  714. .irow b{font-weight:400;font-family:var(--font-num);font-variant-numeric:tabular-nums}
  715. .irow b.dg{color:var(--danger)}
  716. .frow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 15px;border-bottom:1px solid var(--line);font-size:14.5px}
  717. .frow>span{color:var(--ink-2);display:flex;align-items:center;gap:6px}
  718. .frow>b{font-weight:400;font-family:var(--font-num);font-variant-numeric:tabular-nums;text-align:right}
  719. .frow.hl{background:var(--brand-weak)}
  720. .frow.hl>span,.frow.hl>b{color:var(--brand)}
  721. .frow.hl>b{font-weight:600}
  722. .frow.last,.frow:last-child{border-bottom:0}
  723. /* 字段说明 ⓘ(代码 IconButton name="info",ink4 14) */
  724. .xi{width:14px;height:14px;color:var(--ink-4);flex:none}
  725. /* 弹窗里的证券行(代码在前)与行情行 */
  726. .secl{display:flex;align-items:center;gap:7px}
  727. .secl .mono{font-size:12px;color:var(--ink-3)}
  728. .secl b{font-size:14.5px;font-weight:600}
  729. .phint{display:flex;gap:14px;margin-top:9px;font-size:12px;color:var(--ink-3)}
  730. .phint b{font-weight:400;font-family:var(--font-num);font-variant-numeric:tabular-nums}
  731. .field .num{font-family:var(--font-num)}
  732. .errtip .icn{width:13px;height:13px}
  733. .errtip.r{justify-content:flex-end}
  734. /* 时间片块(代码 TradingWindowDialog) */
  735. .twin{border-radius:10px;background:var(--surface-2);padding:13px 0;display:flex;flex-direction:column;align-items:center;gap:5px}
  736. .twin span{font-size:13px;color:var(--ink-3)}
  737. .twin b{font-size:17px;font-weight:600;font-family:var(--font-num)}
  738. /* 弹窗标题区(代码 DialogHeading):图标圆 44 + 标题 16.5 / 600 + 说明 14 / ink2 / 行高 23 */
  739. .dicon{width:44px;height:44px;border-radius:22px;display:flex;align-items:center;justify-content:center;margin:0 auto 6px}
  740. .dicon.warn{background:var(--warn-weak);color:var(--warn)}
  741. .dicon.danger{background:var(--danger-weak);color:var(--danger)}
  742. .dicon.ok{background:var(--ok-weak);color:var(--ok)}
  743. .dicon.brand{background:var(--brand-weak);color:var(--brand)}
  744. .dlg-hd .dsc{margin-top:6px;font-size:14px;color:var(--ink-2);line-height:23px}
  745. .dlg-ft span{font-weight:500}
  746. .dlg-ft span.off{color:var(--brand);opacity:.4}
  747. .dlg-ft span.dg{color:var(--danger)}
  748. /* 底部面板标题行(代码 SheetFrame 的四套头):select 左标题 + 右 × / centered 居中无关闭 / centered-close 居中 + 右 × / filter 左大标题 + 右 × */
  749. .shd{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 6px}
  750. .shd b{font-size:15.5px;font-weight:600}
  751. .shd .icn{color:var(--ink-3)}
  752. .shd-c{padding:16px 18px 4px;text-align:center;position:relative}
  753. .shd-c b{font-size:16.5px;font-weight:600}
  754. .shd-c .icn{position:absolute;right:18px;top:17px;color:var(--ink-3)}
  755. /* 单选面板的选项行(代码 SelectSheet) */
  756. .opt-row{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-size:14.5px;color:var(--ink-2)}
  757. .opt-row .icn{width:14px;height:14px;color:var(--brand)}
  758. .opt-row b{font-weight:400;color:var(--ink-1)}
  759. .opt-row.sel b{font-weight:600}
  760. .opt-row:last-child{border-bottom:0}
  761. /* 叠在另一层弹窗之上的第二层遮罩 */
  762. .scrim.top2{z-index:45}
  763. /* 列表尾的文字入口(历史票据 > 等) */
  764. .listfoot{display:flex;justify-content:center;align-items:center;gap:3px;padding:12px 0;font-size:13px;color:var(--brand)}
  765. .listfoot .icn{width:13px;height:13px}
  766. /* 分组标题(代码 Section 的标题:12 / ink3,上 16 下 8) */
  767. .gtitle{padding:16px 16px 8px}
  768. /* 转圈(代码 ProgressRing,下拉刷新 / 上拉加载 / 检索在搜共用) */
  769. @keyframes hh-spin{from{transform:rotate(-90deg)}to{transform:rotate(270deg)}}
  770. .ring{width:16px;height:16px;position:relative;flex:none;display:inline-block}
  771. .ring>svg{width:100%;height:100%;transform:rotate(-90deg);display:block}
  772. .ring .trk{fill:none;stroke:var(--line-2);stroke-width:2.8}
  773. .ring .bar{fill:none;stroke:var(--brand);stroke-width:2.8;stroke-linecap:round}
  774. .spin{animation:hh-spin .9s linear infinite}
  775. .ring.lg{width:24px;height:24px}
  776. .ring.lg .trk,.ring.lg .bar{stroke-width:2.2}
  777. /* 空态(代码 EmptyState):整页 120×104 / sm 72×62 / row 30×26 三档,插画取色走 --il-* */
  778. .emptyslot{flex:1;display:flex;align-items:center;justify-content:center;padding:0 0 204px}
  779. .emptybox{--il-a:#E7EDF6;--il-b:#D8E0EC;--il-c:#F8FAFE;display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 32px}
  780. [data-theme="dark"] .emptybox{--il-a:#1F2A45;--il-b:#161F38;--il-c:#28355A}
  781. .emptybox .illu{width:120px;height:104px;display:block}
  782. .emptybox .etxt{margin-top:16px;font-size:14px;color:var(--ink-3);letter-spacing:.1em}
  783. .emptybox .esub{margin-top:8px;font-size:12px;line-height:1.65;color:var(--ink-4);max-width:236px}
  784. .emptybox .eact{margin-top:20px}
  785. .emptybox.sm{padding:26px 20px}
  786. .emptybox.sm .illu{width:72px;height:62px}
  787. .emptybox.sm .etxt{margin-top:11px;font-size:12.5px;letter-spacing:.08em}
  788. .emptybox.row{flex-direction:row;align-items:center;justify-content:center;gap:10px;padding:9px 0}
  789. .emptybox.row .illu{width:30px;height:26px}
  790. .emptybox.row .etxt{margin-top:0;font-size:12.5px;letter-spacing:.06em}
  791. /* 状态点「已提交」档(代码 StatusSemantic submitted:未报 / 待报 / 待审批):品牌色空心 */
  792. .st.sub{color:var(--brand)}
  793. .st.sub i{background:transparent;border:1.6px solid currentColor}
  794. /* ---- 持仓卡片(代码 PositionCard)与通用表格(代码 DataTable) ---- */
  795. /* 持仓卡片:多枚角标并排;有角标时顶部只让到 15;估值后的币种小一号 */
  796. .pos .corners{position:absolute;left:0;top:0;display:flex;z-index:3}
  797. .pos .corners .corner{position:static}
  798. .pos:has(.corners) .pos-hd{padding-top:2px}
  799. .pos-val b small{font-size:13.5px;font-weight:400;color:var(--ink-2)}
  800. .pos-code b{font-weight:400;color:var(--accent)}
  801. /* 信息格五项一行:整行按宽度降档 12.5 / 11.5 / 10.5,最小档仍放不下时成对的值拆成两行(i) */
  802. .pos-grid.f5{display:flex;flex-wrap:wrap;column-gap:6px;row-gap:10px}
  803. .pos-grid.f5>div{flex:1 0 auto}
  804. .pos-grid.f5 div span{font-size:10px;letter-spacing:.02em}
  805. .pos-grid.f5 div b{font-size:12.5px;font-weight:500}
  806. .pos-grid.f5 div b em{font-size:11px;font-weight:400}
  807. .pos-grid.f5 div i{display:block;font-style:normal;font-size:11px;color:var(--ink-3);font-family:var(--font-num);font-variant-numeric:tabular-nums;white-space:nowrap}
  808. .pos-grid.f5.s115 div b{font-size:11.5px}.pos-grid.f5.s115 div b em{font-size:10px}
  809. .pos-grid.f5.s105 div b{font-size:10.5px}.pos-grid.f5.s105 div b em{font-size:9px}
  810. .pos-ops span.pri,.pos-ops span.hot{font-weight:500}
  811. /* 表格模式(DataTable):表头 36 / 行 52、单元格 12、列距 14,前两列冻结带右投影 */
  812. .ptab{background:var(--surface);overflow:hidden}
  813. .ptab .r{display:flex;align-items:stretch;height:52px;border-bottom:1px solid var(--line);font-size:12px;white-space:nowrap}
  814. .ptab .r.h{height:36px;background:var(--surface-2);font-size:10.5px;letter-spacing:.02em;color:var(--ink-3)}
  815. .ptab .fz,.ptab .sc{display:flex;align-items:center;gap:14px;flex:none}
  816. .ptab .fz{padding:0 14px 0 10px;background:var(--surface);position:relative;z-index:2;box-shadow:4px 0 10px rgba(15,27,51,.06)}
  817. [data-theme="dark"] .ptab .fz{box-shadow:4px 0 10px rgba(0,0,0,.35)}
  818. .ptab .r.h .fz{background:var(--surface-2)}
  819. .ptab .c{flex:none}
  820. .ptab .c.n{text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums}
  821. .ptab .r.h .c.n{font-family:inherit}
  822. .ptab .c.n .sub{display:block;font-size:11px;color:var(--ink-3);margin-top:2px}
  823. .ptab .cat b{display:block;font-size:12px;font-weight:600}
  824. .ptab .cat b.db{color:var(--accent)}
  825. .ptab .cat .mbs{display:flex;gap:3px;margin-top:3px}
  826. .ptab .scd b{display:block;font-size:12px;font-weight:400}
  827. .ptab .scd span{display:flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:11px;color:var(--ink-3);margin-top:3px}
  828. .ptab .scd .cmark{width:13px;height:13px;font-size:8.5px}
  829. .ptab .opsrow{border-bottom:1px solid var(--line)}
  830. .ptab .opsrow .pos-ops{border-top:0}
  831. .ptab .r.sel,.ptab .r.sel .fz{background:var(--brand-weak)}
  832. .ptab .xrow{background:var(--surface-2);border-bottom:1px solid var(--line)}
  833. /* ---- 卡片 / 表格切换(代码 ViewModeToggle) ---- */
  834. .viewtog{display:inline-flex;padding:2px;background:var(--surface-2);border-radius:8px;gap:2px;flex:none;position:relative}
  835. .viewtog.sep{margin-left:4px}
  836. .viewtog.sep::before{content:"";position:absolute;left:-7px;top:2px;bottom:2px;width:1px;background:var(--line-2)}
  837. .viewtog span{width:28px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:var(--ink-3)}
  838. .viewtog span.on{background:var(--surface);color:var(--brand);box-shadow:var(--shadow-card)}
  839. [data-theme="dark"] .viewtog span.on{background:var(--surface-3)}
  840. .viewtog .icn{width:15px;height:15px;stroke-width:1.8}
  841. /* ==== v1.3 公共覆盖 END ==== */
  842. </style>
  843. </head>
  844. <body>
  845. <svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs>
  846. <g id="i-back"><polyline points="15 4 7 12 15 20"/></g>
  847. <g id="i-right"><polyline points="9 4 17 12 9 20"/></g>
  848. <g id="i-down"><polyline points="5 9 12 16 19 9"/></g>
  849. <g id="i-up"><polyline points="5 15 12 8 19 15"/></g>
  850. <g id="i-search"><circle cx="11" cy="11" r="6.5"/><line x1="16" y1="16" x2="21" y2="21"/></g>
  851. <g id="i-x"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></g>
  852. <g id="i-check"><polyline points="4 12.5 9.5 18 20 6"/></g>
  853. <g id="i-plus"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></g>
  854. <g id="i-minus"><line x1="5" y1="12" x2="19" y2="12"/></g>
  855. <g id="i-eye"><path d="M2 12s3.6-6.5 10-6.5S22 12 22 12s-3.6 6.5-10 6.5S2 12 2 12z"/><circle cx="12" cy="12" r="2.6"/></g>
  856. <g id="i-eyeoff"><path d="M4 5l16 14"/><path d="M9.5 6.2A9.7 9.7 0 0 1 12 5.5c6.4 0 10 6.5 10 6.5a17 17 0 0 1-3.3 4"/><path d="M6.2 8.3A16.6 16.6 0 0 0 2 12s3.6 6.5 10 6.5a10 10 0 0 0 3.3-.55"/></g>
  857. <g id="i-clock"><circle cx="12" cy="12" r="8.5"/><polyline points="12 7 12 12 15.5 14"/></g>
  858. <g id="i-history"><path d="M3.5 12a8.5 8.5 0 1 0 2.6-6.1"/><polyline points="3 4 3 9 8 9"/><polyline points="12 7.5 12 12 15.5 14"/></g>
  859. <g id="i-filter"><path d="M4 6h16l-6.2 7.4V19l-3.6-2v-3.6z"/></g>
  860. <g id="i-calendar"><rect x="3.5" y="5" width="17" height="15.5" rx="2.5"/><line x1="3.5" y1="9.5" x2="20.5" y2="9.5"/><line x1="8" y1="3" x2="8" y2="6.5"/><line x1="16" y1="3" x2="16" y2="6.5"/></g>
  861. <g id="i-note"><path d="M6 3h8l4.5 4.5V21H6z"/><polyline points="14 3 14 8 18.5 8"/><line x1="9" y1="13" x2="15" y2="13"/><line x1="9" y1="17" x2="13" y2="17"/></g>
  862. <g id="i-wallet"><rect x="3" y="6" width="18" height="14" rx="3"/><path d="M3 10h18"/><circle cx="16.5" cy="15" r="1.3" fill="currentColor" stroke="none"/></g>
  863. <g id="i-user"><circle cx="12" cy="8.5" r="3.8"/><path d="M4.5 20.5a7.5 7.5 0 0 1 15 0"/></g>
  864. <g id="i-transfer"><polyline points="7 7 4 10 7 13"/><path d="M4 10h12a4 4 0 0 1 0 8h-3"/><polyline points="17 17 20 14 17 11" opacity="0"/></g>
  865. <g id="i-swap"><polyline points="8 5 4.5 8.5 8 12"/><line x1="4.5" y1="8.5" x2="19" y2="8.5"/><polyline points="16 19 19.5 15.5 16 12"/><line x1="19.5" y1="15.5" x2="5" y2="15.5"/></g>
  866. <g id="i-refresh"><path d="M20 12a8 8 0 1 1-2.4-5.7"/><polyline points="20 4 20 9 15 9"/></g>
  867. <g id="i-help"><circle cx="12" cy="12" r="8.6"/><path d="M9.6 9.6a2.5 2.5 0 1 1 3.2 2.4c-.6.2-.9.7-.9 1.4v.5"/><circle cx="11.9" cy="16.6" r=".9" fill="currentColor" stroke="none"/></g>
  868. <g id="i-info"><circle cx="12" cy="12" r="8.6"/><line x1="12" y1="11" x2="12" y2="16.5"/><circle cx="12" cy="7.8" r=".9" fill="currentColor" stroke="none"/></g>
  869. <g id="i-alert"><path d="M12 4.5 21 19.5H3z"/><line x1="12" y1="10" x2="12" y2="14.5"/><circle cx="12" cy="17" r=".9" fill="currentColor" stroke="none"/></g>
  870. <g id="i-lock"><rect x="5" y="10.5" width="14" height="10" rx="2.5"/><path d="M8.2 10.5V8a3.8 3.8 0 0 1 7.6 0v2.5"/></g>
  871. <g id="i-key"><circle cx="8" cy="14" r="4"/><path d="M11 11.5 20 3"/><line x1="17" y1="6" x2="19" y2="8"/></g>
  872. <g id="i-shield"><path d="M12 3.5 19 6v6c0 4.2-2.9 7.2-7 8.5-4.1-1.3-7-4.3-7-8.5V6z"/><polyline points="9 12 11.3 14.3 15.3 10.3"/></g>
  873. <g id="i-font"><path d="M4 19 10 5l6 14"/><line x1="6.2" y1="14.5" x2="13.8" y2="14.5"/><path d="M17 19l3-8 3 8" transform="scale(.72) translate(6.5 5)"/></g>
  874. <g id="i-doc"><rect x="4.5" y="3.5" width="15" height="17" rx="2.5"/><line x1="8" y1="9" x2="16" y2="9"/><line x1="8" y1="13" x2="16" y2="13"/><line x1="8" y1="17" x2="12.5" y2="17"/></g>
  875. <g id="i-logout"><path d="M14 5H6.5A2.5 2.5 0 0 0 4 7.5v9A2.5 2.5 0 0 0 6.5 19H14"/><polyline points="16.5 8 20.5 12 16.5 16"/><line x1="20.5" y1="12" x2="10" y2="12"/></g>
  876. <g id="i-fee"><circle cx="12" cy="12" r="8.5"/><path d="M9.5 9h5M9.5 12h5M12 9v8"/></g>
  877. <g id="i-theme"><circle cx="12" cy="12" r="7.5"/><path d="M12 4.5v15a7.5 7.5 0 0 0 0-15z" fill="currentColor" stroke="none"/></g>
  878. <g id="i-lang"><path d="M2.8 6.1h8.4"/><path d="M7 4.2v1.9"/><path d="M9.4 6.1c-.4 4.1-2.6 6.9-6.2 8.4"/><path d="M5.4 9.4c1 2.2 2.7 3.8 5.1 4.7"/><path d="M12.4 20.2 16.4 9.6l4 10.6"/><line x1="13.7" y1="16.9" x2="19.1" y2="16.9"/></g>
  879. <g id="i-sun"><circle cx="12" cy="12" r="4.2"/><line x1="12" y1="2.5" x2="12" y2="5"/><line x1="12" y1="19" x2="12" y2="21.5"/><line x1="2.5" y1="12" x2="5" y2="12"/><line x1="19" y1="12" x2="21.5" y2="12"/><line x1="5.4" y1="5.4" x2="7.1" y2="7.1"/><line x1="16.9" y1="16.9" x2="18.6" y2="18.6"/><line x1="5.4" y1="18.6" x2="7.1" y2="16.9"/><line x1="16.9" y1="7.1" x2="18.6" y2="5.4"/></g>
  880. <g id="i-moon"><path d="M20 14.2A8.4 8.4 0 0 1 9.8 4 8.6 8.6 0 1 0 20 14.2z"/></g>
  881. <g id="i-bell"><path d="M18 16V11a6 6 0 1 0-12 0v5l-1.6 2.5h15.2z"/><path d="M9.8 21a2.4 2.4 0 0 0 4.4 0"/></g>
  882. <g id="i-list"><line x1="4" y1="7" x2="20" y2="7"/><line x1="4" y1="12" x2="20" y2="12"/><line x1="4" y1="17" x2="20" y2="17"/></g>
  883. <g id="i-sort"><polyline points="7 9 10 6 13 9"/><polyline points="7 15 10 18 13 15"/></g>
  884. <g id="i-trend"><polyline points="3 16 9 10 13 14 21 6"/><polyline points="15.5 6 21 6 21 11.5"/></g>
  885. <g id="i-img"><rect x="3.5" y="5" width="17" height="14" rx="2.5"/><circle cx="9" cy="10" r="1.6"/><polyline points="5 17 10 12 13.5 15.5 16.5 13 19.5 16"/></g>
  886. <g id="i-upload"><path d="M12 16V5"/><polyline points="7.5 9.5 12 5 16.5 9.5"/><path d="M4 15v3.5A2.5 2.5 0 0 0 6.5 21h11a2.5 2.5 0 0 0 2.5-2.5V15"/></g>
  887. <g id="i-megaphone"><path d="M4 10.2v3.6a1.8 1.8 0 0 0 1.8 1.8H8l6.6 3.9a1 1 0 0 0 1.5-.86V5.36a1 1 0 0 0-1.5-.86L8 8.4H5.8A1.8 1.8 0 0 0 4 10.2Z"/><path d="M19 9.6a3.6 3.6 0 0 1 0 4.8"/><path d="M8 15.6v2.6a2 2 0 0 0 2 2h.4"/></g>
  888. <g id="i-faceid"><path d="M4 9.2V6.6A2.6 2.6 0 0 1 6.6 4H9.2"/><path d="M14.8 4h2.6A2.6 2.6 0 0 1 20 6.6v2.6"/><path d="M20 14.8v2.6a2.6 2.6 0 0 1-2.6 2.6h-2.6"/><path d="M9.2 20H6.6A2.6 2.6 0 0 1 4 17.4v-2.6"/><line x1="9.1" y1="9.6" x2="9.1" y2="11.2"/><line x1="14.9" y1="9.6" x2="14.9" y2="11.2"/><path d="M12 9.4v3.9a.9.9 0 0 1-.9.9h-.5"/><path d="M9.3 15.9c1.7 1.4 3.7 1.4 5.4 0"/></g>
  889. <g id="i-touchid"><path d="M2.9 9.9A9.7 9.7 0 0 1 12 3.2a9.7 9.7 0 0 1 9.1 6.7"/><path d="M5.9 13.1a6.1 6.1 0 0 1 12.2 0v1.3"/><path d="M9 13.1a3 3 0 0 1 6 0v2.6a7.4 7.4 0 0 1-.5 2.7"/><path d="M12 13v3.9a10 10 0 0 1-.9 4.1"/><path d="M6 17.9A9.6 9.6 0 0 1 5.9 16.4"/><path d="M18 16.5a11.6 11.6 0 0 1-.6 3.2"/></g>
  890. <g id="i-face"><rect x="4" y="4" width="16" height="16" rx="4"/><circle cx="9.3" cy="10.5" r=".9" fill="currentColor" stroke="none"/><circle cx="14.7" cy="10.5" r=".9" fill="currentColor" stroke="none"/><path d="M9 15c1.8 1.5 4.2 1.5 6 0"/></g>
  891. <g id="i-cardview"><rect x="3.5" y="4" width="17" height="7" rx="2"/><rect x="3.5" y="13" width="17" height="7" rx="2"/></g>
  892. <g id="i-tableview"><rect x="3.5" y="4.5" width="17" height="15" rx="2"/><line x1="3.5" y1="9.5" x2="20.5" y2="9.5"/><line x1="3.5" y1="14.5" x2="20.5" y2="14.5"/><line x1="9.6" y1="4.5" x2="9.6" y2="19.5"/></g>
  893. </defs></svg>
  894. <div class="sheet-head">
  895. <div class="brandmark">
  896. <div class="glyph"></div>
  897. <div>
  898. <div class="sheet-title">列表视图 · 卡片与表格切换</div>
  899. <div class="sheet-sub">票据投资者 APP / 全站数据型列表统一双视图 · 控件规格 · 列定义 · 交互与边界</div>
  900. </div>
  901. </div>
  902. <div class="head-right">
  903. <div class="meta">
  904. <div>模块<b>通用能力 LIST VIEW</b></div>
  905. <div>规格<b>iOS 390 &times; 844 @3x</b></div>
  906. <div>覆盖<b>10 个数据型列表</b></div>
  907. <div>版本<b>v1.3 · 2026-10-14</b></div>
  908. </div>
  909. <div class="skin" role="group" aria-label="主题切换">
  910. <button data-set="light" class="on"><svg viewBox="0 0 24 24"><use href="#i-sun"/></svg>浅色</button>
  911. <button data-set="dark"><svg viewBox="0 0 24 24"><use href="#i-moon"/></svg>深色</button>
  912. </div>
  913. </div>
  914. </div>
  915. <div class="sec">
  916. <div class="sec-head"><span class="sec-num">01</span><span class="sec-name">适用范围 · 控件落点 · 机制</span><span class="sec-rule"></span><span class="sec-note">v1.3 按代码现状重画</span></div>
  917. <div class="cards">
  918. <div class="card-x">
  919. <h4>适用范围 SCOPE 10 个列表</h4>
  920. <div class="bullets">
  921. <li><b>票据</b>:今日询价、A 类订单、B 类订单(本期未上线)、历史订单、历史询价</li>
  922. <li><b>账户</b>:持仓票据</li>
  923. <li><b>二级页</b>:资金流水、划转记录(本期未上线)、展期记录、历史票据</li>
  924. <li><b>不适用</b>:消息中心、帮助中心、费用信息(本身是表格)、检索联想与单选面板</li>
  925. </div>
  926. </div>
  927. <div class="card-x">
  928. <h4>控件落点 PLACEMENT</h4>
  929. <div class="bullets">
  930. <li><b>A 标题行最右</b>:持仓(左邻排序,画竖线)、今日询价(左边只有标题,不画)</li>
  931. <li><b>B 筛选栏最右</b>:A / B 类订单——胶囊横滑,历史图标与切换固定、永远滑不走</li>
  932. <li><b>C 条件行最右</b>:六个历史类列表,与「筛选」同组(画竖线);历史票据没有筛选,不画;不放在搜索行</li>
  933. </div>
  934. </div>
  935. <div class="card-x">
  936. <h4>机制 MECHANISM</h4>
  937. <div class="bullets">
  938. <li>偏好 <code>views[key]</code> 按列表分别记在本机(十个键),缺省全部卡片</li>
  939. <li>切换只换渲染层:不重新请求,筛选、排序、已加载分页保留</li>
  940. <li>两种视图字段集一致;表格行操作为<b>行下原地展开</b>(单行手风琴)或整行直达详情</li>
  941. </div>
  942. </div>
  943. </div>
  944. </div>
  945. <div class="sec">
  946. <div class="sec-head"><span class="sec-num">02</span><span class="sec-name">界面与状态</span><span class="sec-rule"></span><span class="sec-note">9 帧 · 同一份数据、两种密度</span></div>
  947. <div class="frames">
  948. <!-- ===== V1 卡片模式 · 控件落点 A(卡片头) ===== -->
  949. <div class="frame">
  950. <div class="phone">
  951. <div class="screen">
  952. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  953. <div class="appbar"><h1>资金账户</h1></div>
  954. <div class="body">
  955. <div class="card-hd" style="padding:12px 16px 9px">
  956. <h3>持仓票据<span class="cnt">8</span></h3>
  957. <div class="fright"><span class="more">默认排序(创建时间倒序)<svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="viewtog sep"><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></div>
  958. </div>
  959. <div class="card pos">
  960. <div class="corners"><span class="corner">增额</span><span class="corner due">到期</span></div>
  961. <div class="pos-hd">
  962. <div><div class="pos-name">贵州茅台 <i class="cmark">C</i></div><div class="pos-code">600519.SH · Delta A</div></div>
  963. <div class="pos-val"><b class="num">221,234.00<small> HKD</small></b><span>票据估值</span></div>
  964. </div>
  965. <div class="pos-pl"><span class="down">-178,766.00 HKD</span><span class="down">-89.38%</span></div>
  966. <div class="pos-grid f5"><div><span>名义/冻结名义</span><b>200万 CNY</b><i>20万 CNY</i></div><div><span>票据面值</span><b>20万 HKD</b></div><div><span>现价/期初价</span><b>1,234.56</b><i>1,204.56</i></div><div><span>强平价</span><b style="color:var(--danger)">1,000.00</b></div><div><span>到期日</span><b>12/16</b></div></div>
  967. <div class="pos-ops"><span class="pri">详情</span><span>卖出</span><span>增额</span><span class="hot">展期</span></div>
  968. </div>
  969. <div class="card pos">
  970. <div class="corners"><span class="corner due">到期</span></div>
  971. <div class="pos-hd">
  972. <div><div class="pos-name">贵州茅台 <i class="cmark">C</i></div><div class="pos-code">600519.SH · Delta A</div></div>
  973. <div class="pos-val"><b class="num">161,234.00<small> HKD</small></b><span>票据估值</span></div>
  974. </div>
  975. <div class="pos-pl"><span class="down">-38,766.00 HKD</span><span class="down">-19.38%</span></div>
  976. <div class="pos-grid f5 s105"><div><span>名义/冻结名义</span><b>200万<em> / 0 CNY</em></b></div><div><span>票据面值</span><b>20万 HKD</b></div><div><span>现价/期初价</span><b>1,234.56<em> / 1,204.56</em></b></div><div><span>强平价</span><b style="color:var(--danger)">1,000.00</b></div><div><span>到期日</span><b>12/16</b></div></div>
  977. <div class="pos-ops"><span class="pri">详情</span><span>卖出</span><span>增额</span><span class="hot">展期</span></div>
  978. </div>
  979. </div>
  980. <div class="tabbar"><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
  981. <div class="homebar"></div>
  982. </div>
  983. </div>
  984. <div class="cap">
  985. <div class="cap-num">V1</div>
  986. <div class="cap-title">卡片模式 · 控件落点 A(卡片头)</div>
  987. <ul>
  988. <li>切换控件是二段式(两枚图标常驻,<b>亮的是当前视图</b>),贴在列表标题行最右;左邻排序下拉时画 1px 竖线分组</li>
  989. <li>十个列表缺省都是卡片;视图按列表分别记忆(持仓切表格不影响订单)</li>
  990. <li>控件不进导航栏,只作用于下方这一个列表</li>
  991. </ul>
  992. </div>
  993. </div>
  994. <!-- ===== V2 表格模式 · 冻结列横滑表 ===== -->
  995. <div class="frame">
  996. <div class="phone">
  997. <div class="screen">
  998. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  999. <div class="appbar"><h1>资金账户</h1></div>
  1000. <div class="body">
  1001. <div class="card-hd" style="padding:12px 16px 9px">
  1002. <h3>持仓票据<span class="cnt">8</span></h3>
  1003. <div class="fright"><span class="more">默认排序(创建时间倒序)<svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="viewtog sep"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></div>
  1004. </div>
  1005. <div class="ptab">
  1006. <div class="r h">
  1007. <div class="fz"><div class="c" style="width:57px">票据类型</div><div class="c" style="width:79px">名称代码/方向</div></div>
  1008. <div class="sc"><div class="c n" style="width:92px">名义/冻结名义</div><div class="c n" style="width:59px">票据面值</div><div class="c n" style="width:66px">现价/期初价</div><div class="c n" style="width:52px">强平价</div></div>
  1009. </div>
  1010. <div class="r">
  1011. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b><span class="mbs"><span class="mb d">增额</span><span class="mb a">到期</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1012. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">20万 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1013. </div>
  1014. <div class="r">
  1015. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b><span class="mbs"><span class="mb a">到期</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1016. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1017. </div>
  1018. <div class="r">
  1019. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b><span class="mbs"><span class="mb m">待生效</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1020. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1021. </div>
  1022. <div class="r">
  1023. <div class="fz"><div class="c cat" style="width:57px"><b class="db">Delta B</b><span class="mbs"><span class="mb a">到期</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1024. <div class="sc"><div class="c n" style="width:92px">1,999,999 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1025. </div>
  1026. <div class="r">
  1027. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州燃气</b><span>600903.SH <i class="cmark">C</i></span></div></div>
  1028. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">--<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1029. </div>
  1030. <div class="r">
  1031. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1032. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1033. </div>
  1034. <div class="r">
  1035. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1036. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1037. </div>
  1038. <div class="r">
  1039. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1040. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1041. </div>
  1042. </div>
  1043. </div>
  1044. <div class="tabbar"><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
  1045. <div class="homebar"></div>
  1046. </div>
  1047. </div>
  1048. <div class="cap">
  1049. <div class="cap-num">V2</div>
  1050. <div class="cap-title">表格模式 · 冻结列横滑表</div>
  1051. <ul>
  1052. <li>在原页面<b>原地切换</b>:控件坐标不变,标题行、页面头部与表一起滚</li>
  1053. <li>持仓表前两列「票据类型」「名称代码/方向」冻结、带右投影;其余列横滑,<b>列宽按内容自适应</b>(不是固定 118)</li>
  1054. <li>表头 36 / 行 52、单元格 12、表头 10.5;成对的值两行(主值 + 小一号灰参照值);随「字体大小」三档放大</li>
  1055. </ul>
  1056. </div>
  1057. </div>
  1058. <!-- ===== V3 今日询价 · 表格模式 ===== -->
  1059. <div class="frame">
  1060. <div class="phone">
  1061. <div class="screen">
  1062. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  1063. <div class="appbar"><h1>共赢票据</h1></div>
  1064. <div class="tabs" style="margin-top:12px"><span class="on">询价</span><span>订单</span></div>
  1065. <div class="body">
  1066. <div class="listhd"><h3>今日询价 · 倒序</h3><span class="viewtog"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></div>
  1067. <div class="ptab wcorner"><div class="r h fit"><div class="sc"><div class="c" style="width:96px">名称代码/方向</div><div class="c" style="width:40px">周期</div><div class="c n" style="width:70px">名义本金</div><div class="c n" style="width:92px">状态/时间</div></div></div><div class="r fit"><span class="gt-new"></span><div class="sc"><div class="c" style="width:96px"><div class="scd"><b style="display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="c" style="width:40px">1M</div><div class="c n" style="width:70px">200万</div><div class="c n" style="width:92px"><span class="st done"><i></i>已完成</span><span class="t2">11:15:15</span></div></div></div><div class="xrow"><div class="qtab">
  1068. <div class="qh"><span>报价名义本金</span><span>收益比例</span><span>报价</span><span>时间</span><span></span></div>
  1069. <div class="qr"><span>100万 CNY</span><span>70.00%</span><span class="p">11.23%</span><span class="t">13:30:45</span><span><b class="mbtn">下单</b></span></div>
  1070. <div class="qr"><span>200万 CNY</span><span>68.50%</span><span class="p">11.05%</span><span class="t">13:29:15</span><span><b class="mbtn">下单</b></span></div>
  1071. <div class="qr"><span>50万 CNY</span><span>66.00%</span><span class="p">10.84%</span><span class="t">13:28:02</span><span><b class="mbtn dis">下单</b></span></div>
  1072. </div></div><div class="r fit"><div class="sc"><div class="c" style="width:96px"><div class="scd"><b style="display:flex;align-items:center;gap:4px">贵州燃气 <i class="cmark">C</i></b><span>600903.SH</span></div></div><div class="c" style="width:40px">1M</div><div class="c n" style="width:70px">100万</div><div class="c n" style="width:92px"><span class="st live"><i></i>询价中</span><span class="t2">11:42:40</span></div></div></div><div class="r fit"><div class="sc"><div class="c" style="width:96px"><div class="scd"><b style="display:flex;align-items:center;gap:4px">贵州三力 <i class="cmark">C</i></b><span>603439.SH</span></div></div><div class="c" style="width:40px">1M</div><div class="c n" style="width:70px">500万</div><div class="c n" style="width:92px"><span class="st live"><i></i>待处理</span><span class="t2">10:49:41</span></div></div></div><div class="r fit"><div class="sc"><div class="c" style="width:96px"><div class="scd"><b style="display:flex;align-items:center;gap:4px">平安银行 <i class="cmark">C</i></b><span>000001.SZ</span></div></div><div class="c" style="width:40px">1M</div><div class="c n" style="width:70px">100万</div><div class="c n" style="width:92px"><span class="st rej"><i></i>已拒绝</span><span class="t2">09:40:12</span></div></div></div><div class="r fit"><div class="sc"><div class="c" style="width:96px"><div class="scd"><b style="display:flex;align-items:center;gap:4px">上海凯宝 <i class="cmark">C</i></b><span>300039.SZ</span></div></div><div class="c" style="width:40px">1M</div><div class="c n" style="width:70px">300万</div><div class="c n" style="width:92px"><span class="st rej"><i></i>已拒绝</span><span class="t2">09:20:00</span></div></div></div><div class="r fit"><div class="sc"><div class="c" style="width:96px"><div class="scd"><b style="display:flex;align-items:center;gap:4px">上海钢联 <i class="cmark">C</i></b><span>300226.SZ</span></div></div><div class="c" style="width:40px">1M</div><div class="c n" style="width:70px">200万</div><div class="c n" style="width:92px"><span class="st exp"><i></i>已失效</span><span class="t2">09:05:00</span></div></div></div></div>
  1073. </div>
  1074. <div class="tabbar"><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
  1075. <div class="homebar"></div>
  1076. </div>
  1077. </div>
  1078. <div class="cap">
  1079. <div class="cap-num">V3</div>
  1080. <div class="cap-title">今日询价 · 表格模式</div>
  1081. <ul>
  1082. <li>四列:名称代码/方向 · 周期 · 名义本金 · 状态/时间;放得下就<b>不冻结、铺满全宽</b></li>
  1083. <li>有新报价的行首挂 34×34 斜切「NEW」丝带;点行原地展开报价子表(同卡片模式,每行一个「下单」键)</li>
  1084. <li>落点 A 但左边只有标题,切换控件不画竖线</li>
  1085. </ul>
  1086. </div>
  1087. </div>
  1088. <!-- ===== V4 A 类订单 · 表格模式(落点 B) ===== -->
  1089. <div class="frame">
  1090. <div class="phone">
  1091. <div class="screen">
  1092. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  1093. <div class="appbar"><h1>共赢票据</h1></div>
  1094. <div class="tabs" style="margin-top:12px"><span>询价</span><span class="on">订单</span></div>
  1095. <div class="body">
  1096. <div class="filterbar"><div class="fbscroll"><span class="fb on" style="gap:0">全部<em style="font-style:normal;color:var(--ink-3);font-weight:400">(50)</em></span><span class="fb" style="gap:0">可撤<em style="font-style:normal;color:var(--ink-3)">(20)</em></span><span class="fb" style="gap:0">已完成<em style="font-style:normal;color:var(--ink-3)">(19)</em></span></div><span style="flex:none;color:var(--ink-2);display:flex"><svg class="icn" viewBox="0 0 24 24"><use href="#i-history"/></svg></span><span class="viewtog sep"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></div>
  1097. <div class="ptab"><div class="r h"><div class="fz"><div class="c" style="width:72px">名称代码/方向</div></div><div class="sc"><div class="c n" style="width:72px">名义本金</div><div class="c n" style="width:50px">价格要求</div><div class="c" style="width:62px">状态</div><div class="c n" style="width:44px">类型/时间</div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">100万 CNY</div><div class="c n" style="width:50px"><div class="lr">限价<br>11.23</div></div><div class="c" style="width:62px"><span class="st live"><i></i>待处理</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-brand">买入</span><span class="t2">13:31</span></div></div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州燃气 <i class="cmark">C</i></b><span>600903.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">200万 CNY</div><div class="c n" style="width:50px">市价</div><div class="c" style="width:62px"><span class="st live"><i></i>执行中</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-brand">买入</span><span class="t2">12:20</span></div></div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">100万 CNY</div><div class="c n" style="width:50px"><div class="lr">限价<br>11.23</div></div><div class="c" style="width:62px"><span class="st live"><i></i>待撤</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-brand">买入</span><span class="t2">11:50</span></div></div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">100万 CNY</div><div class="c n" style="width:50px"><div class="lr">限价<br>11.23</div></div><div class="c" style="width:62px"><span class="st live"><i></i>撤单中</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-brand">买入</span><span class="t2">11:30</span></div></div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">100万 CNY</div><div class="c n" style="width:50px"><div class="lr">限价<br>11.23</div></div><div class="c" style="width:62px"><span class="st done"><i></i>已完成</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-brand">买入</span><span class="t2">10:12</span></div></div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">100万 CNY</div><div class="c n" style="width:50px"><div class="lr">限价<br>11.23</div></div><div class="c" style="width:62px"><span class="st rej"><i></i>已拒绝</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-brand">买入</span><span class="t2">09:40</span></div></div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">100万 CNY</div><div class="c n" style="width:50px"><div class="lr">限价<br>11.23</div></div><div class="c" style="width:62px"><span class="st done"><i></i>已结算</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-brand">买入</span><span class="t2">09:20</span></div></div></div></div><div class="r"><div class="fz"><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:72px">100万 CNY</div><div class="c n" style="width:50px"><div class="lr">限价<br>11.23</div></div><div class="c" style="width:62px"><span class="st done"><i></i>已完成</span></div><div class="c" style="width:44px"><div class="tg"><span class="tag t-danger">卖出</span><span class="t2">09:10</span></div></div></div></div></div>
  1098. </div>
  1099. <div class="tabbar"><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
  1100. <div class="homebar"></div>
  1101. </div>
  1102. </div>
  1103. <div class="cap">
  1104. <div class="cap-num">V4</div>
  1105. <div class="cap-title">A 类订单 · 表格模式(落点 B)</div>
  1106. <ul>
  1107. <li>落点 B:筛选胶囊横滑,历史图标与切换控件固定在右、永远滑不走</li>
  1108. <li>列:名称代码/方向(冻结)· 名义本金(带币种)· 价格要求(限价两行)· 状态 · 类型/时间;到期 / 强平卖出为危险实心「卖出」</li>
  1109. <li>历史订单表名义本金一列成对「订单 / 执行」,时间带年月日</li>
  1110. </ul>
  1111. </div>
  1112. </div>
  1113. <!-- ===== V5 B 类订单 · 表格模式(批量态) ===== -->
  1114. <div class="frame">
  1115. <div class="phone">
  1116. <div class="screen">
  1117. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  1118. <div class="appbar"><h1>共赢票据</h1></div>
  1119. <div class="seg" style="margin:14px 20px 0;width:150px"><span>A类</span><span class="on">B类</span></div>
  1120. <div class="body" style="padding-top:10px">
  1121. <div class="filterbar"><div class="fbscroll"><span class="fb" style="gap:0">全部</span><span class="fb on" style="gap:0">买入待处理<em style="font-style:normal;color:var(--danger)">(14)</em></span><span class="fb">已完成</span></div><span style="flex:none;color:var(--ink-2);display:flex"><svg class="icn" viewBox="0 0 24 24"><use href="#i-history"/></svg></span><span class="viewtog sep"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></div>
  1122. <div style="display:flex;justify-content:flex-end;padding:0 16px 10px"><span class="chip on">退出批量处理</span></div>
  1123. <div class="ptab"><div class="r h"><div class="fz"><div class="c" style="width:20px"></div><div class="c" style="width:64px">名称代码/方向</div></div><div class="sc"><div class="c n" style="width:70px">名义本金</div><div class="c n" style="width:44px">成交均价</div><div class="c n" style="width:70px">报价/结算币种</div><div class="c" style="width:50px">状态</div></div></div><div class="r"><div class="fz"><div class="c" style="width:20px"><span class="cb20"></span></div><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:70px">100万 CNY</div><div class="c n" style="width:44px">10.35</div><div class="c n" style="width:70px"><div class="lr">限价 11.23<small>HKD</small></div></div><div class="c" style="width:50px"><span class="st live"><i></i>待处理</span></div></div></div><div class="r sel"><div class="fz"><div class="c" style="width:20px"><span class="cb20 on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-check"/></svg></span></div><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州燃气 <i class="cmark">C</i></b><span>600903.SH</span></div></div><div class="sc"><div class="c n" style="width:70px">200万 CNY</div><div class="c n" style="width:44px">9.88</div><div class="c n" style="width:70px"><div class="lr">限价 11.23<small>USD</small></div></div><div class="c" style="width:50px"><span class="st live"><i></i>待处理</span></div></div></div><div class="r sel"><div class="fz"><div class="c" style="width:20px"><span class="cb20 on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-check"/></svg></span></div><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">平安银行 <i class="cmark">C</i></b><span>000001.SZ</span></div></div><div class="sc"><div class="c n" style="width:70px">150万 CNY</div><div class="c n" style="width:44px">10.02</div><div class="c n" style="width:70px"><div class="lr">限价 11.23<small>HKD</small></div></div><div class="c" style="width:50px"><span class="st live"><i></i>待处理</span></div></div></div><div class="r"><div class="fz"><div class="c" style="width:20px"><span class="cb20"></span></div><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">平安银行 <i class="cmark">C</i></b><span>000001.SZ</span></div></div><div class="sc"><div class="c n" style="width:70px">50万 CNY</div><div class="c n" style="width:44px">11.20</div><div class="c n" style="width:70px"><div class="lr">限价 11.23<small>HKD</small></div></div><div class="c" style="width:50px"><span class="st live"><i></i>待处理</span></div></div></div><div class="r"><div class="fz"><div class="c" style="width:20px"><span class="cb20"></span></div><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">贵州茅台 <i class="cmark">C</i></b><span>600519.SH</span></div></div><div class="sc"><div class="c n" style="width:70px">100万 CNY</div><div class="c n" style="width:44px">11.20</div><div class="c n" style="width:70px"><div class="lr">市价<small>HKD</small></div></div><div class="c" style="width:50px"><span class="st live"><i></i>待处理</span></div></div></div><div class="r"><div class="fz"><div class="c" style="width:20px"><span class="cb20"></span></div><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">招商银行 <i class="cmark">C</i></b><span>600036.SH</span></div></div><div class="sc"><div class="c n" style="width:70px">300万 CNY</div><div class="c n" style="width:44px">11.20</div><div class="c n" style="width:70px"><div class="lr">限价 11.23<small>HKD</small></div></div><div class="c" style="width:50px"><span class="st live"><i></i>待处理</span></div></div></div><div class="r"><div class="fz"><div class="c" style="width:20px"><span class="cb20"></span></div><div class="c scd"><b style="font-weight:600;display:flex;align-items:center;gap:4px">平安银行 <i class="cmark">C</i></b><span>000001.SZ</span></div></div><div class="sc"><div class="c n" style="width:70px">50万 CNY</div><div class="c n" style="width:44px">11.20</div><div class="c n" style="width:70px"><div class="lr">限价 11.23<small>HKD</small></div></div><div class="c" style="width:50px"><span class="st live"><i></i>待处理</span></div></div></div></div>
  1124. </div>
  1125. <div style="padding:12px 16px 30px;display:flex;gap:11px;align-items:center;border-top:1px solid var(--line);background:var(--surface)"><span style="display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink-2)"><span class="cb20" style="width:20px;height:20px;border-radius:6px;border:1.5px solid var(--line-2);display:inline-block"></span>全选</span><span class="btn ghost" style="flex:1">拒绝</span><span class="btn" style="flex:1.4">确认买入 (2)</span></div>
  1126. <div class="tabbar"><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
  1127. <div class="homebar"></div>
  1128. </div>
  1129. </div>
  1130. <div class="cap">
  1131. <div class="cap-num">V5</div>
  1132. <div class="cap-title">B 类订单 · 表格模式(批量态)<span class="cap-flags"><span class="cap-flag off">本期未上线 · 仅 mock</span></span></div>
  1133. <ul>
  1134. <li>批量态勾选框进冻结列首位(20px);选中行整行铺 brand-weak,冻结块与滚动区同时高亮</li>
  1135. <li>列:名称代码/方向 · 名义本金 · 成交均价 · 报价/结算币种 · 状态 · 类型/时间;非批量态点行直达订单详情</li>
  1136. <li>底栏沿用卡片模式那条(全选 · 拒绝 · 确认买入 N)</li>
  1137. </ul>
  1138. </div>
  1139. </div>
  1140. <!-- ===== V6 资金流水 · 表格模式(落点 C) ===== -->
  1141. <div class="frame">
  1142. <div class="phone">
  1143. <div class="screen">
  1144. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  1145. <div class="navbar"><span class="bk"><svg class="icn" viewBox="0 0 24 24"><use href="#i-back"/></svg></span><h2>资金流水</h2></div>
  1146. <div class="body">
  1147. <div class="fcond"><span class="fpill on">近三月 <svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="fright"><span class="fmore">筛选 <svg class="icn" viewBox="0 0 24 24"><use href="#i-filter"/></svg></span><span class="viewtog sep"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></span></div>
  1148. <div class="ptab"><div class="r h fit"><div class="sc"><div class="c" style="width:160px">日期/类型</div><div class="c n" style="width:170px">金额</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-11 22:25:15</b><span>入金</span></div><div class="c n am" style="width:170px">36.78 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-10 18:02:41</b><span>转入</span></div><div class="c n am" style="width:170px">120,000.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-09 21:31:02</b><span>买入票据</span></div><div class="c n am o" style="width:170px">-11,237,000.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-09 22:00:00</b><span>入金</span></div><div class="c n am" style="width:170px">1,296.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-09 15:00:00</b><span>转入</span></div><div class="c n am" style="width:170px">1,333.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-09 08:00:00</b><span>买入票据</span></div><div class="c n am o" style="width:170px">-1,370.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-09 01:00:00</b><span>展期费</span></div><div class="c n am h" style="width:170px">-1,407.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-08 18:00:00</b><span>卖出票据</span></div><div class="c n am" style="width:170px">1,444.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-08 11:00:00</b><span>转出</span></div><div class="c n am o" style="width:170px">-1,481.00 HKD</div></div></div><div class="r fit"><div class="sc"><div class="c cfd" style="width:160px"><b>2025-12-08 04:00:00</b><span>增额</span></div><div class="c n am o" style="width:170px">-1,518.00 HKD</div></div></div></div>
  1149. </div>
  1150. <div class="homebar"></div>
  1151. </div>
  1152. </div>
  1153. <div class="cap">
  1154. <div class="cap-num">V6</div>
  1155. <div class="cap-title">资金流水 · 表格模式(落点 C)</div>
  1156. <ul>
  1157. <li>落点 C:条件行最右、与「筛选」同组(左侧竖线);资金流水没有搜索行</li>
  1158. <li>只有两列:日期/类型(时间 + 业务类型两行)· 金额(带币种);放得下就不冻结</li>
  1159. <li>金额不参与涨跌配色:流入正文色、流出次级色、展期费等标红;不带正号</li>
  1160. </ul>
  1161. </div>
  1162. </div>
  1163. <!-- ===== V7 历史票据 · 表格模式 ===== -->
  1164. <div class="frame">
  1165. <div class="phone">
  1166. <div class="screen">
  1167. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  1168. <div class="navbar"><span class="bk"><svg class="icn" viewBox="0 0 24 24"><use href="#i-back"/></svg></span><h2>历史票据</h2></div>
  1169. <div class="body">
  1170. <div class="fsearch"><svg class="icn" viewBox="0 0 24 24"><use href="#i-search"/></svg>股票代码/拼音/名称</div>
  1171. <div class="fcond"><span class="fpill on">近三月 <svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="fright"><span class="viewtog"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></span></div>
  1172. <div class="ptab"><div class="r h"><div class="fz"><div class="c" style="width:44px">类型</div><div class="c" style="width:64px">名称代码/方向</div></div><div class="sc"><div class="c n" style="width:92px">名义/票面</div><div class="c n" style="width:76px">发行日/到期日</div><div class="c n" style="width:100px">合计卖出盈亏</div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b>Delta A</b></div><div class="c scd"><b style="font-weight:400">平安银行</b><span>000001.SZ <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">3,000,000 CNY<span class="sub">300,000 HKD</span></div><div class="c n" style="width:76px">2025-12-10<span class="sub">2026-01-10</span></div><div class="c n" style="width:100px"><span class="up">+15,000.00 HKD</span></div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b>Delta A</b></div><div class="c scd"><b style="font-weight:400">上海凯宝</b><span>300039.SZ <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">1,999,999 CNY<span class="sub">199,999.90 HKD</span></div><div class="c n" style="width:76px">2025-12-07<span class="sub">2026-01-07</span></div><div class="c n" style="width:100px"><span class="down">-121,234.00 HKD</span></div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b class="db">Delta B</b></div><div class="c scd"><b style="font-weight:400">上海钢联</b><span>300226.SZ <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">5,000,000 CNY<span class="sub">500,000 USD</span></div><div class="c n" style="width:76px">2025-12-04<span class="sub">2026-01-04</span></div><div class="c n" style="width:100px"><span class="up">+330,000.25 USD</span></div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b>Delta A</b></div><div class="c scd"><b style="font-weight:400">贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">1,000,000 CNY<span class="sub">100,000 HKD</span></div><div class="c n" style="width:76px">2025-12-01<span class="sub">2026-01-01</span></div><div class="c n" style="width:100px"><span class="up">+221,234.00 HKD</span></div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b>Delta A</b></div><div class="c scd"><b style="font-weight:400">贵州燃气</b><span>600903.SH <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">2,000,000 CNY<span class="sub">200,000 HKD</span></div><div class="c n" style="width:76px">2025-11-28<span class="sub">2025-12-28</span></div><div class="c n" style="width:100px"><span class="down">-98,760.50 HKD</span></div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b class="db">Delta B</b></div><div class="c scd"><b style="font-weight:400">贵州三力</b><span>603439.SH <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">500,000 CNY<span class="sub">50,000 HKD</span></div><div class="c n" style="width:76px">2025-11-25<span class="sub">2025-12-25</span></div><div class="c n" style="width:100px"><span class="flat">0.00 HKD</span></div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b>Delta A</b></div><div class="c scd"><b style="font-weight:400">平安银行</b><span>000001.SZ <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">3,000,000 CNY<span class="sub">300,000 USD</span></div><div class="c n" style="width:76px">2025-11-22<span class="sub">2025-12-22</span></div><div class="c n" style="width:100px"><span class="up">+15,000.00 USD</span></div></div></div><div class="r"><div class="fz"><div class="c cat" style="width:44px"><b>Delta A</b></div><div class="c scd"><b style="font-weight:400">上海凯宝</b><span>300039.SZ <i class="cmark">C</i></span></div></div><div class="sc"><div class="c n" style="width:92px">1,999,999 CNY<span class="sub">199,999.90 HKD</span></div><div class="c n" style="width:76px">2025-11-19<span class="sub">2025-12-19</span></div><div class="c n" style="width:100px"><span class="down">-121,234.00 HKD</span></div></div></div></div>
  1173. </div>
  1174. <div class="homebar"></div>
  1175. </div>
  1176. </div>
  1177. <div class="cap">
  1178. <div class="cap-num">V7</div>
  1179. <div class="cap-title">历史票据 · 表格模式</div>
  1180. <ul>
  1181. <li>冻结「类型」「名称代码/方向」,横滑:名义/票面 · 发行日/到期日 · 合计卖出盈亏(按涨跌色)</li>
  1182. <li>历史票据没有筛选面板,切换控件左侧不画竖线;点行直达票据详情</li>
  1183. <li>展期记录表:票据类型 · 名称代码/方向(冻结)· Delta A名义本金 · 发行日/到期日 · 状态/申请时间</li>
  1184. </ul>
  1185. </div>
  1186. </div>
  1187. <!-- ===== V8 表格模式 · 行操作 ===== -->
  1188. <div class="frame">
  1189. <div class="phone">
  1190. <div class="screen">
  1191. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  1192. <div class="appbar"><h1>资金账户</h1></div>
  1193. <div class="body">
  1194. <div class="card-hd" style="padding:12px 16px 9px">
  1195. <h3>持仓票据<span class="cnt">8</span></h3>
  1196. <div class="fright"><span class="more">默认排序(创建时间倒序)<svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="viewtog sep"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></div>
  1197. </div>
  1198. <div class="ptab">
  1199. <div class="r h">
  1200. <div class="fz"><div class="c" style="width:57px">票据类型</div><div class="c" style="width:79px">名称代码/方向</div></div>
  1201. <div class="sc"><div class="c n" style="width:92px">名义/冻结名义</div><div class="c n" style="width:59px">票据面值</div><div class="c n" style="width:66px">现价/期初价</div><div class="c n" style="width:52px">强平价</div></div>
  1202. </div>
  1203. <div class="r">
  1204. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b><span class="mbs"><span class="mb d">增额</span><span class="mb a">到期</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1205. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">20万 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1206. </div>
  1207. <div class="r">
  1208. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b><span class="mbs"><span class="mb a">到期</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1209. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1210. </div><div class="opsrow"><div class="pos-ops"><span class="pri">详情</span><span>卖出</span><span>增额</span><span class="hot">展期</span></div></div>
  1211. <div class="r">
  1212. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b><span class="mbs"><span class="mb m">待生效</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1213. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1214. </div>
  1215. <div class="r">
  1216. <div class="fz"><div class="c cat" style="width:57px"><b class="db">Delta B</b><span class="mbs"><span class="mb a">到期</span></span></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1217. <div class="sc"><div class="c n" style="width:92px">1,999,999 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1218. </div>
  1219. <div class="r">
  1220. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州燃气</b><span>600903.SH <i class="cmark">C</i></span></div></div>
  1221. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">--<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1222. </div>
  1223. <div class="r">
  1224. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1225. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1226. </div>
  1227. <div class="r">
  1228. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1229. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1230. </div>
  1231. <div class="r">
  1232. <div class="fz"><div class="c cat" style="width:57px"><b>Delta A</b></div><div class="c scd" style="width:79px"><b>贵州茅台</b><span>600519.SH <i class="cmark">C</i></span></div></div>
  1233. <div class="sc"><div class="c n" style="width:92px">200万 CNY<span class="sub">0 CNY</span></div><div class="c n" style="width:59px">20万 HKD</div><div class="c n" style="width:66px">1,234.56<span class="sub">1,204.56</span></div><div class="c n" style="width:52px">1,000.00</div></div>
  1234. </div>
  1235. </div>
  1236. </div>
  1237. <div class="tabbar"><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-note"/></svg></span>票据</div><div class="tb on"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-wallet"/></svg></span>账户</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-bell"/></svg><i class="rdot"></i></span>消息</div><div class="tb"><span class="tbi"><svg class="icn" viewBox="0 0 24 24"><use href="#i-user"/></svg></span>我的</div></div>
  1238. <div class="homebar"></div>
  1239. </div>
  1240. </div>
  1241. <div class="cap">
  1242. <div class="cap-num">V8</div>
  1243. <div class="cap-title">表格模式 · 行操作</div>
  1244. <ul>
  1245. <li><b>点行在该行下方原地展开操作条</b>(不是底部操作条):持仓为「详情 · 卖出 · 增额 · 展期」,与卡片的操作条同一份、置灰规则相同</li>
  1246. <li>同时只展开一行,再点收起;订单表展开为「详情 · 撤单 · 改价」三枚 chip</li>
  1247. <li>B 类持仓、历史类、展期记录、划转记录点行直达详情,不展开</li>
  1248. </ul>
  1249. </div>
  1250. </div>
  1251. <!-- ===== V9 表格模式 · 空态与筛选无结果 ===== -->
  1252. <div class="frame">
  1253. <div class="phone">
  1254. <div class="screen">
  1255. <div class="statusbar"><span class="num">9:41</span><span class="ic"><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><rect x="1" y="14" width="3.4" height="6" rx="1"/><rect x="6.4" y="10" width="3.4" height="10" rx="1"/><rect x="11.8" y="6" width="3.4" height="14" rx="1"/><rect x="17.2" y="3" width="3.4" height="17" rx="1" opacity=".35"/></svg><svg class="icn sm" viewBox="0 0 24 24" style="fill:currentColor;stroke:none"><path d="M12 19.5 2 9a14 14 0 0 1 20 0z" opacity=".95"/></svg><svg class="icn" viewBox="0 0 30 24" style="fill:none;stroke:currentColor;stroke-width:1.5;width:24px"><rect x="1.5" y="7" width="21" height="11" rx="3"/><rect x="3.6" y="9.1" width="14" height="6.8" rx="1.6" fill="currentColor" stroke="none"/><path d="M24.5 11v6a3.2 3.2 0 0 0 0-6z" fill="currentColor" stroke="none"/></svg></span></div>
  1256. <div class="navbar"><span class="bk"><svg class="icn" viewBox="0 0 24 24"><use href="#i-back"/></svg></span><h2>展期记录</h2></div>
  1257. <div class="body">
  1258. <div class="fsearch"><svg class="icn" viewBox="0 0 24 24"><use href="#i-search"/></svg><b>平安银行</b><span class="clr"><svg class="icn sm" viewBox="0 0 24 24"><use href="#i-x"/></svg></span></div>
  1259. <div class="fcond"><span class="fpill on">近三月 <svg class="icn" viewBox="0 0 24 24"><use href="#i-down"/></svg></span><span class="fright"><span class="fmore">筛选 <svg class="icn" viewBox="0 0 24 24"><use href="#i-filter"/></svg></span><span class="viewtog sep"><span><svg class="icn" viewBox="0 0 24 24"><use href="#i-cardview"/></svg></span><span class="on"><svg class="icn" viewBox="0 0 24 24"><use href="#i-tableview"/></svg></span></span></span></div>
  1260. <div class="ptab"><div class="r h"><div class="fz"><div class="c" style="width:48px">票据类型</div><div class="c" style="width:64px">名称代码/方向</div></div><div class="sc"><div class="c n" style="width:84px">Delta A名义本金</div><div class="c n" style="width:76px">发行日/到期日</div><div class="c n" style="width:80px">状态/申请时间</div></div></div></div>
  1261. <div class="emptyslot" style="padding:90px 0 0;flex:none"><div class="emptybox"><svg class="illu" viewBox="0 0 120 104" fill="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="il1b" x1="10" y1="14" x2="104" y2="90" gradientUnits="userSpaceOnUse"><stop stop-color="var(--il-a)"/><stop offset="1" stop-color="var(--il-b)"/></linearGradient><linearGradient id="il1f" x1="18" y1="42" x2="98" y2="94" gradientUnits="userSpaceOnUse"><stop stop-color="var(--il-c)"/><stop offset="1" stop-color="var(--il-a)"/></linearGradient></defs><path d="M12 86V22q0-8 8-8h24q4.2 0 6.8 3.3L56 23.4q2.4 3 6.2 3H100q8 0 8 8V86q0 8-8 8H20q-8 0-8-8Z" fill="url(#il1b)"/><path d="M8.6 42h102.8q4.8 0 3.9 4.7l-7.6 41q-.9 5-6 5H18.3q-5.1 0-6-5l-7.6-41Q3.8 42 8.6 42Z" fill="url(#il1f)"/></svg><div class="etxt">暂无数据</div><div class="esub">「平安银行」在近三月条件下没有记录</div><div class="eact"><span class="chip" style="height:36px;padding:0 20px;color:var(--brand);border-color:var(--brand-line)">重置筛选</span></div></div></div>
  1262. </div>
  1263. <div class="homebar"></div>
  1264. </div>
  1265. </div>
  1266. <div class="cap">
  1267. <div class="cap-num">V9</div>
  1268. <div class="cap-title">表格模式 · 空态与筛选无结果</div>
  1269. <ul>
  1270. <li>表头保留、行区走通用空态(与卡片模式同一个组件);筛选无结果带「重置筛选」</li>
  1271. <li>视图偏好不因空态回退</li>
  1272. </ul>
  1273. </div>
  1274. </div>
  1275. </div>
  1276. </div>
  1277. <div class="sec">
  1278. <div class="sec-head"><span class="sec-num">03</span><span class="sec-name">组件与表格规格</span><span class="sec-rule"></span><span class="sec-note">数值取自代码(ViewModeToggle · DataTable)</span></div>
  1279. <table class="spec">
  1280. <tr><th style="width:150px">组件</th><th style="width:380px">规格</th><th>说明</th></tr>
  1281. <tr><td><b>A · 视图切换</b></td><td class="m">轨道内边距 2、格间距 2、轨道圆角 8 · 单格 28×24 r6 · 图标 15 / 描边 1.8 · 滑块 200ms · 竖线 1×16</td><td>亮的是当前视图;读屏「卡片模式 / 表格模式」+ 已选中(<code>aria-selected</code>);纵向热区补到 44</td></tr>
  1282. <tr><td><b>B · 冻结列</b></td><td class="m">按列声明 frozen · 列宽按表头与内容估宽自适应(上限 220)· 冻结块右投影</td><td>放得下的表(询价、流水、划转)不冻结、铺满;冻结的只放「这一行是谁」</td></tr>
  1283. <tr><td><b>C · 表头与数值</b></td><td class="m">表头 36(三档 36 / 39 / 42)· 行 52(52 / 56 / 60)· 表头 10.5 ink-3 · 单元格 12 · 列距 14 · 左右 10</td><td>数值右对齐 + Inter 等宽数字;可排序列表头带排序图标(持仓:票据估值 · 参考浮动盈亏 · 到期日)</td></tr>
  1284. <tr><td><b>D · 行操作</b></td><td class="m">点行在下方展开一条 surface-2 操作区,同时只开一行</td><td>持仓:详情 · 卖出 · 增额 · 展期;订单:详情 · 撤单 · 改价;询价:报价子表</td></tr>
  1285. <tr><td><b>E · 新报价</b></td><td class="m">卡片左上丝带 · 表格行首 34×34 斜切丝带(7.5 / 600)· 报价行红点 6</td><td>同一危险色、同一语义;有丝带的表左内边距让到 14</td></tr>
  1286. </table>
  1287. </div>
  1288. <div class="sec">
  1289. <div class="sec-head"><span class="sec-num">04</span><span class="sec-name">各列表列定义</span><span class="sec-rule"></span><span class="sec-note">表格模式下的冻结列与横滑列顺序(代码各 *Grid 组件)</span></div>
  1290. <table class="spec">
  1291. <tr><th style="width:110px">列表</th><th style="width:60px">落点</th><th style="width:190px">冻结列</th><th style="width:330px">横滑列(左 → 右)</th><th>行点击</th></tr>
  1292. <tr><td><b>今日询价</b></td><td>A</td><td>—(铺满)</td><td>名称代码/方向 · 周期 · 名义本金 · 状态/时间</td><td>展开报价子表</td></tr>
  1293. <tr><td><b>历史询价</b></td><td>C</td><td>—(铺满)</td><td>同上,状态/时间带年月日</td><td>展开报价子表(无下单键)</td></tr>
  1294. <tr><td><b>A 类订单</b></td><td>B</td><td>名称代码/方向</td><td>名义本金 · 价格要求 · 状态 · 类型/时间</td><td>展开 详情 · 撤单 · 改价</td></tr>
  1295. <tr><td><b>B 类订单</b></td><td>B</td><td>(批量态勾选框)名称代码/方向</td><td>名义本金 · 成交均价 · 报价/结算币种 · 状态 · 类型/时间</td><td>直达订单详情;批量态 = 勾选</td></tr>
  1296. <tr><td><b>历史订单</b></td><td>C</td><td>名称代码/方向</td><td>名义本金(订单 / 执行)· 价格要求或成交均价 · 状态 · 类型/时间</td><td>直达订单详情</td></tr>
  1297. <tr><td><b>持仓票据</b></td><td>A</td><td>票据类型 · 名称代码/方向</td><td>名义/冻结名义 · 票据面值 · 现价/期初价 · 强平价 · 票据估值 · 参考浮动盈亏 · 到期日</td><td>A 类展开操作条;B 类直达详情</td></tr>
  1298. <tr><td><b>资金流水</b></td><td>C</td><td>—(铺满)</td><td>日期/类型 · 金额</td><td>—</td></tr>
  1299. <tr><td><b>划转记录</b></td><td>C</td><td>—(铺满)</td><td>日期/方向 · 币种 · 金额 · 状态</td><td>直达划转详情</td></tr>
  1300. <tr><td><b>展期记录</b></td><td>C</td><td>票据类型 · 名称代码/方向</td><td>Delta A名义本金 · 发行日/到期日 · 状态/申请时间</td><td>直达展期详情</td></tr>
  1301. <tr><td><b>历史票据</b></td><td>C</td><td>类型 · 名称代码/方向</td><td>名义/票面 · 发行日/到期日 · 合计卖出盈亏</td><td>直达票据详情</td></tr>
  1302. </table>
  1303. </div>
  1304. <div class="sec" style="margin-bottom:20px">
  1305. <div class="sec-head"><span class="sec-num">05</span><span class="sec-name">规则与边界</span><span class="sec-rule"></span><span class="sec-note">开发与测试的验收口径</span></div>
  1306. <table class="spec">
  1307. <tr><th style="width:120px">项目</th><th style="width:260px">规格</th><th>说明 / 边界</th></tr>
  1308. <tr><td><b>记忆粒度</b></td><td>按列表分别记忆(十个键)</td><td>本机偏好,不经后端</td></tr>
  1309. <tr><td><b>默认视图</b></td><td>全部卡片</td><td>持仓按原型画的是表格,用户拍板缺省仍为卡片</td></tr>
  1310. <tr><td><b>切换开销</b></td><td>只换渲染层</td><td>不重新请求;筛选、排序、分页保留</td></tr>
  1311. <tr><td><b>排序</b></td><td>持仓:标题行下拉七档 = 表头三列排序,同一份偏好</td><td>表头三态:默认 → 正序 → 倒序</td></tr>
  1312. <tr><td><b>空态</b></td><td>保留表头,行区走通用空态</td><td>筛选无结果带「重置筛选」;视图偏好不回退</td></tr>
  1313. <tr><td><b>下拉 / 上拉</b></td><td>与卡片模式相同</td><td>见 <code>05</code> 第 03 节</td></tr>
  1314. <tr><td><b>字号联动</b></td><td>跟随「我的 → 字体大小」</td><td>行高 52 / 56 / 60、表头 36 / 39 / 42,列宽等比放大;H5 恒标准档</td></tr>
  1315. <tr><td><b>无障碍</b></td><td>切换格读屏名 + <code>aria-selected</code></td><td>表格选中行整行 brand-weak</td></tr>
  1316. </table>
  1317. </div>
  1318. <script>
  1319. (function(){
  1320. var root=document.documentElement,btns=document.querySelectorAll('.skin button');
  1321. document.querySelectorAll('[data-clone]').forEach(function(el){
  1322. var src=document.querySelector(el.getAttribute('data-clone'));
  1323. if(src) el.innerHTML=src.innerHTML;
  1324. });
  1325. function set(t){
  1326. root.setAttribute('data-theme',t);
  1327. btns.forEach(function(b){b.classList.toggle('on',b.dataset.set===t)});
  1328. document.querySelectorAll('.phone:not([data-lock])').forEach(function(p){p.setAttribute('data-theme',t)});
  1329. try{localStorage.setItem('hh-skin',t)}catch(e){}
  1330. }
  1331. btns.forEach(function(b){b.addEventListener('click',function(){set(b.dataset.set)})});
  1332. document.body.setAttribute('data-h',String(document.body.scrollHeight));
  1333. var hash=(location.hash||'').replace('#','');
  1334. var saved=null;try{saved=localStorage.getItem('hh-skin')}catch(e){}
  1335. set(hash==='dark'||hash==='light'?hash:(saved||'light'));
  1336. })();
  1337. </script>
  1338. </body>
  1339. </html>