bx-theme.scss 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738
  1. /* BX Fresh Mint — 备用金 list/apply/detail 所需样式(对齐 bx-mobile)
  2. * 在页面根节点加 class="bx-page",避免污染全局 .btn / .status-tag
  3. */
  4. .bx-page {
  5. --primary: #00c98d;
  6. --primary-dark: #00a874;
  7. --primary-darker: #008f62;
  8. --primary-bg: #eafff6;
  9. --primary-light: #f0fdf9;
  10. --success: #10b981;
  11. --success-bg: #ecfdf5;
  12. --success-border: #a7f3d0;
  13. --warning: #f59e0b;
  14. --warning-bg: #fffbeb;
  15. --warning-border: #fcd34d;
  16. --danger: #ef4444;
  17. --danger-bg: #fef2f2;
  18. --danger-border: #fecaca;
  19. --info: #3b82f6;
  20. --info-bg: #eff6ff;
  21. --info-border: #93c5fd;
  22. --processing: #6366f1;
  23. --processing-bg: #eef2ff;
  24. --processing-border: #a5b4fc;
  25. --text: #1a1a2e;
  26. --text-sec: #64748b;
  27. --text-muted: #94a3b8;
  28. --bg: #f8fafc;
  29. --surface: #fff;
  30. --border: #e2e8f0;
  31. --shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
  32. --r: 12px;
  33. --rs: 8px;
  34. --rl: 16px;
  35. --font: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
  36. --empty-fill-chrome: 230px;
  37. min-height: 100vh;
  38. padding-bottom: 80px;
  39. box-sizing: border-box;
  40. font-family: var(--font);
  41. font-size: 14px;
  42. color: var(--text);
  43. background: var(--bg);
  44. line-height: 1.5;
  45. }
  46. .bx-page.bx-page--form {
  47. padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px));
  48. }
  49. .bx-page .page-padded {
  50. padding: 0 16px;
  51. }
  52. .bx-page > .topbar + .page-padded {
  53. padding-top: 5px;
  54. }
  55. .bx-page .search-wrap + .page-padded {
  56. padding-top: 5px;
  57. }
  58. /* Topbar — 对齐仪表盘白底顶栏 */
  59. .bx-page .topbar {
  60. position: sticky;
  61. top: 0;
  62. z-index: 50;
  63. display: grid;
  64. grid-template-columns: minmax(0, 1fr) var(--sq-capsule-right-safe, 96px);
  65. align-items: center;
  66. height: var(--sq-header-height, calc(44px + 44px));
  67. padding: var(--sq-safe-top, 44px) 12px 0 8px;
  68. box-sizing: border-box;
  69. background: #fff;
  70. border-bottom: 1px solid #eee;
  71. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  72. }
  73. .bx-page .topbar-left {
  74. display: flex;
  75. align-items: center;
  76. justify-content: flex-start;
  77. gap: 8px;
  78. min-width: 0;
  79. }
  80. .bx-page .topbar-back {
  81. font-size: 20px;
  82. color: #333;
  83. padding: 4px 8px;
  84. flex-shrink: 0;
  85. line-height: 1;
  86. }
  87. .bx-page .topbar-back:active {
  88. opacity: 0.75;
  89. }
  90. .bx-page .topbar-title {
  91. text-align: left;
  92. font-size: 17px;
  93. font-weight: 700;
  94. color: #111827;
  95. max-width: 100%;
  96. overflow: hidden;
  97. text-overflow: ellipsis;
  98. white-space: nowrap;
  99. }
  100. .bx-page .topbar-right {
  101. min-width: 0;
  102. min-height: 1px;
  103. }
  104. /* Search */
  105. .bx-page .search-wrap {
  106. padding: 12px 16px;
  107. background: var(--surface);
  108. }
  109. .bx-page .search-box {
  110. display: flex;
  111. align-items: center;
  112. gap: 8px;
  113. background: var(--bg);
  114. border: 1.5px solid var(--border);
  115. border-radius: 20px;
  116. padding: 0 14px;
  117. height: 40px;
  118. }
  119. .bx-page .search-box input,
  120. .bx-page .search-box .search-input {
  121. flex: 1;
  122. border: none;
  123. outline: none;
  124. background: transparent;
  125. font-size: 14px;
  126. color: var(--text);
  127. height: 38px;
  128. }
  129. .bx-page .search-box__clear {
  130. flex-shrink: 0;
  131. width: 28px;
  132. height: 28px;
  133. display: flex;
  134. align-items: center;
  135. justify-content: center;
  136. color: var(--text-muted);
  137. font-size: 16px;
  138. }
  139. .bx-page .search-filter {
  140. display: flex;
  141. align-items: center;
  142. gap: 8px;
  143. padding: 8px 0 0;
  144. }
  145. .bx-page .search-filter--scroll {
  146. flex-wrap: nowrap;
  147. overflow-x: auto;
  148. white-space: nowrap;
  149. padding-bottom: 4px;
  150. }
  151. .bx-page .filter-tag {
  152. display: inline-flex;
  153. padding: 4px 12px;
  154. border-radius: 14px;
  155. font-size: 12px;
  156. font-weight: 500;
  157. border: 1px solid var(--border);
  158. color: var(--text-sec);
  159. background: var(--surface);
  160. white-space: nowrap;
  161. flex-shrink: 0;
  162. }
  163. .bx-page .filter-tag.active {
  164. background: var(--primary-bg);
  165. border-color: var(--primary);
  166. color: var(--primary-dark);
  167. }
  168. /* Expense card */
  169. .bx-page .expense-card {
  170. background: var(--surface);
  171. border-radius: var(--r);
  172. padding: 16px;
  173. margin-bottom: 10px;
  174. border: 1px solid var(--border);
  175. box-shadow: var(--shadow);
  176. }
  177. .bx-page .expense-card:active {
  178. opacity: 0.96;
  179. }
  180. .bx-page .ec-top {
  181. display: flex;
  182. justify-content: space-between;
  183. align-items: center;
  184. gap: 10px;
  185. margin-bottom: 8px;
  186. }
  187. .bx-page .ec-type {
  188. flex: 1;
  189. min-width: 0;
  190. font-size: 15px;
  191. font-weight: 600;
  192. line-height: 1.3;
  193. }
  194. .bx-page .advance-list-card__title,
  195. .bx-page .reimburse-list-card__title {
  196. display: block;
  197. overflow: hidden;
  198. text-overflow: ellipsis;
  199. white-space: nowrap;
  200. }
  201. .bx-page .status-tag {
  202. display: inline-flex;
  203. align-items: center;
  204. justify-content: center;
  205. padding: 2px 10px;
  206. border-radius: 10px;
  207. font-size: 11px;
  208. font-weight: 600;
  209. border: 1px solid var(--border);
  210. white-space: nowrap;
  211. line-height: 1.25;
  212. background: var(--bg);
  213. color: var(--text-sec);
  214. flex-shrink: 0;
  215. }
  216. .bx-page .status-tag.s-draft {
  217. background: #f1f5f9;
  218. color: #64748b;
  219. border-color: rgba(100, 116, 139, 0.15);
  220. }
  221. .bx-page .status-tag.s-pending {
  222. background: var(--warning-bg);
  223. color: var(--warning);
  224. border-color: var(--warning-border);
  225. }
  226. .bx-page .status-tag.s-approved {
  227. background: var(--primary-bg);
  228. color: var(--primary-dark);
  229. border-color: rgba(0, 201, 141, 0.2);
  230. }
  231. .bx-page .status-tag.s-rejected {
  232. background: #fef2f2;
  233. color: #ef4444;
  234. border-color: rgba(239, 68, 68, 0.2);
  235. }
  236. .bx-page .status-tag.s-withdrawn {
  237. background: #fffbeb;
  238. color: #d97706;
  239. border-color: rgba(245, 158, 11, 0.25);
  240. }
  241. .bx-page .status-tag.s-issued {
  242. background: #eef2ff;
  243. color: #6366f1;
  244. border-color: rgba(99, 102, 241, 0.25);
  245. }
  246. .bx-page .status-tag.s-paid,
  247. .bx-page .status-tag.s-processed {
  248. background: var(--primary-bg);
  249. color: var(--primary-dark);
  250. border-color: rgba(0, 201, 141, 0.2);
  251. }
  252. .bx-page .status-tag.s-offset {
  253. background: #fffbeb;
  254. color: #d97706;
  255. border-color: rgba(245, 158, 11, 0.25);
  256. }
  257. .bx-page .ec-amount-label {
  258. font-size: 11px;
  259. color: var(--text-muted);
  260. margin-bottom: 2px;
  261. }
  262. .bx-page .ec-amount {
  263. font-size: 24px;
  264. font-weight: 800;
  265. color: var(--primary-dark) !important;
  266. margin-bottom: 6px;
  267. font-variant-numeric: tabular-nums;
  268. }
  269. .bx-page .ec-amount::before {
  270. content: '¥';
  271. font-size: 14px;
  272. margin-right: 2px;
  273. }
  274. .bx-page .advance-card-subs,
  275. .bx-page .reimburse-card-subs {
  276. display: flex;
  277. flex-direction: column;
  278. gap: 6px;
  279. margin-bottom: 8px;
  280. padding: 8px 0 2px;
  281. border-top: 1px solid var(--border);
  282. }
  283. .bx-page .advance-card-sub-row,
  284. .bx-page .reimburse-card-sub-row {
  285. display: flex;
  286. justify-content: space-between;
  287. align-items: center;
  288. font-size: 13px;
  289. line-height: 1.35;
  290. }
  291. .bx-page .advance-card-sub-row .k,
  292. .bx-page .reimburse-card-sub-row .k {
  293. color: var(--text-sec);
  294. flex-shrink: 0;
  295. margin-right: 8px;
  296. }
  297. .bx-page .advance-card-sub-row .v,
  298. .bx-page .reimburse-card-sub-row .v {
  299. font-weight: 600;
  300. color: var(--text);
  301. font-variant-numeric: tabular-nums;
  302. text-align: right;
  303. }
  304. .bx-page .list-card-kv {
  305. margin-top: 10px;
  306. padding: 10px 12px;
  307. border-radius: var(--rs);
  308. background: var(--bg);
  309. border: 1px solid var(--border);
  310. display: flex;
  311. flex-direction: column;
  312. gap: 6px;
  313. font-size: 12px;
  314. }
  315. .bx-page .list-card-kv__row {
  316. display: flex;
  317. justify-content: space-between;
  318. align-items: flex-start;
  319. gap: 10px;
  320. line-height: 1.45;
  321. }
  322. .bx-page .list-card-kv__k {
  323. flex-shrink: 0;
  324. color: var(--text-muted);
  325. font-size: 11px;
  326. max-width: 42%;
  327. }
  328. .bx-page .list-card-kv__v {
  329. flex: 1;
  330. min-width: 0;
  331. text-align: right;
  332. color: var(--text);
  333. font-weight: 500;
  334. word-break: break-word;
  335. }
  336. .bx-page .ec-meta {
  337. display: flex;
  338. gap: 12px;
  339. font-size: 12px;
  340. color: var(--text-muted);
  341. margin-top: 8px;
  342. }
  343. .bx-page .ec-bottom {
  344. display: flex;
  345. justify-content: flex-end;
  346. align-items: center;
  347. gap: 10px;
  348. margin-top: 10px;
  349. padding-top: 10px;
  350. border-top: 1px dashed var(--border);
  351. }
  352. .bx-page .op-actions {
  353. display: flex;
  354. gap: 8px;
  355. flex-wrap: wrap;
  356. justify-content: flex-end;
  357. }
  358. /* Buttons(覆盖全局 .btn) */
  359. .bx-page .btn {
  360. display: inline-flex;
  361. align-items: center;
  362. justify-content: center;
  363. gap: 6px;
  364. height: 40px;
  365. padding: 0 20px;
  366. border-radius: var(--rs);
  367. font-size: 14px;
  368. font-weight: 600;
  369. font-family: var(--font);
  370. border: 1px solid transparent;
  371. line-height: 1;
  372. box-sizing: border-box;
  373. }
  374. .bx-page .btn::after {
  375. border: none;
  376. }
  377. .bx-page .btn-primary {
  378. background: var(--primary) !important;
  379. color: #fff !important;
  380. border-color: var(--primary);
  381. }
  382. .bx-page .btn-danger {
  383. background: var(--danger) !important;
  384. color: #fff !important;
  385. border-color: var(--danger);
  386. }
  387. .bx-page .btn-secondary {
  388. background: var(--text-sec) !important;
  389. color: #fff !important;
  390. border-color: var(--text-sec);
  391. }
  392. .bx-page .btn-block {
  393. width: 100%;
  394. }
  395. .bx-page .btn-sm,
  396. .bx-page .op-actions .btn {
  397. height: 32px;
  398. padding: 0 12px;
  399. font-size: 12px;
  400. border-radius: 8px;
  401. }
  402. .bx-page .btn[disabled],
  403. .bx-page .btn-loading {
  404. opacity: 0.65;
  405. }
  406. /* Form */
  407. .bx-page .form-card {
  408. background: var(--surface);
  409. border-radius: var(--r);
  410. padding: 16px;
  411. border: 1px solid var(--border);
  412. }
  413. .bx-page .form-card + .form-card {
  414. margin-top: 12px;
  415. }
  416. .bx-page .form-header {
  417. display: flex;
  418. align-items: center;
  419. gap: 8px;
  420. margin-bottom: 16px;
  421. }
  422. .bx-page .form-header h3,
  423. .bx-page .form-header .form-header-title {
  424. font-size: 16px;
  425. font-weight: 700;
  426. margin: 0;
  427. }
  428. .bx-page .form-badge {
  429. font-size: 11px;
  430. font-weight: 600;
  431. padding: 2px 8px;
  432. border-radius: 4px;
  433. background: var(--primary-bg);
  434. color: var(--primary-dark);
  435. }
  436. .bx-page .field {
  437. margin-bottom: 14px;
  438. }
  439. .bx-page .field-label {
  440. display: block;
  441. font-size: 13px;
  442. font-weight: 600;
  443. color: var(--text);
  444. margin-bottom: 6px;
  445. }
  446. .bx-page .field-label .req {
  447. color: var(--danger);
  448. margin-left: 2px;
  449. }
  450. .bx-page .form-input,
  451. .bx-page .form-textarea {
  452. width: 100%;
  453. padding: 0 12px;
  454. border: 1.5px solid var(--border);
  455. border-radius: var(--rs);
  456. font-size: 14px;
  457. font-family: var(--font);
  458. color: var(--text);
  459. background: var(--surface);
  460. box-sizing: border-box;
  461. }
  462. .bx-page .form-input {
  463. height: 42px;
  464. }
  465. .bx-page .form-textarea {
  466. min-height: 80px;
  467. padding: 10px 12px;
  468. }
  469. .bx-page .form-input.error,
  470. .bx-page .form-textarea.error {
  471. border-color: var(--danger);
  472. }
  473. .bx-page .form-input-prefix {
  474. position: relative;
  475. }
  476. .bx-page .form-input-prefix .form-input {
  477. padding-left: 28px;
  478. }
  479. .bx-page .form-input-prefix::before {
  480. content: '¥';
  481. position: absolute;
  482. left: 12px;
  483. top: 50%;
  484. transform: translateY(-50%);
  485. color: var(--text-sec);
  486. font-weight: 600;
  487. z-index: 1;
  488. }
  489. /* Attachments grid (images) */
  490. .bx-page .att-grid {
  491. display: flex;
  492. flex-wrap: wrap;
  493. gap: 8px;
  494. margin-top: 8px;
  495. }
  496. .bx-page .att-img {
  497. position: relative;
  498. width: 72px;
  499. height: 72px;
  500. border-radius: 8px;
  501. overflow: hidden;
  502. background: var(--bg);
  503. border: 1px solid var(--border);
  504. }
  505. .bx-page .att-img image {
  506. width: 100%;
  507. height: 100%;
  508. }
  509. .bx-page .att-img .del {
  510. position: absolute;
  511. top: 2px;
  512. right: 2px;
  513. width: 20px;
  514. height: 20px;
  515. border-radius: 50%;
  516. background: rgba(0, 0, 0, 0.55);
  517. color: #fff;
  518. font-size: 14px;
  519. line-height: 20px;
  520. text-align: center;
  521. }
  522. /* Empty / loading */
  523. .bx-page .empty-state {
  524. text-align: center;
  525. padding: 40px 20px;
  526. color: var(--text-muted);
  527. font-size: 15px;
  528. }
  529. .bx-page .empty-state--fill {
  530. min-height: 40vh;
  531. display: flex;
  532. align-items: center;
  533. justify-content: center;
  534. }
  535. .bx-page .page-body-loading {
  536. display: flex;
  537. align-items: center;
  538. justify-content: center;
  539. min-height: 40vh;
  540. color: var(--text-muted);
  541. font-size: 14px;
  542. }
  543. .bx-page .list-footer-tip {
  544. text-align: center;
  545. padding: 12px 0 24px;
  546. font-size: 12px;
  547. color: var(--text-muted);
  548. }
  549. /* FAB */
  550. .bx-page .fab-add {
  551. position: fixed;
  552. right: 16px;
  553. bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  554. z-index: 120;
  555. width: 48px;
  556. height: 48px;
  557. padding: 0;
  558. border: none;
  559. border-radius: 50%;
  560. background: var(--primary) !important;
  561. color: #fff !important;
  562. box-shadow: 0 3px 12px rgba(0, 201, 141, 0.38);
  563. display: flex;
  564. align-items: center;
  565. justify-content: center;
  566. font-size: 28px;
  567. line-height: 1;
  568. font-weight: 300;
  569. }
  570. .bx-page .fab-add::after {
  571. border: none;
  572. }
  573. /* Bottom bar */
  574. .bx-page .bottom-action-bar {
  575. position: fixed;
  576. bottom: 0;
  577. left: 0;
  578. right: 0;
  579. padding: 12px 16px;
  580. padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  581. background: var(--surface);
  582. box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.06);
  583. z-index: 100;
  584. display: flex;
  585. gap: 10px;
  586. }
  587. /* Ticket header */
  588. .bx-page .advance-ticket-shell {
  589. --ticket-bg: var(--primary);
  590. --ticket-skin: var(--primary-light);
  591. --ticket-dash: rgba(0, 201, 141, 0.45);
  592. width: 100%;
  593. box-sizing: border-box;
  594. padding: 10px 16px 14px;
  595. background: var(--ticket-bg);
  596. }
  597. .bx-page .advance-ticket-stack {
  598. width: 100%;
  599. filter: drop-shadow(0 10px 24px rgba(0, 168, 116, 0.3));
  600. }
  601. .bx-page .advance-ticket-top {
  602. display: flex;
  603. align-items: center;
  604. justify-content: space-between;
  605. gap: 10px;
  606. min-height: 48px;
  607. padding: 14px 16px 12px;
  608. background: var(--ticket-skin);
  609. border-radius: 14px 14px 0 0;
  610. }
  611. .bx-page .advance-ticket-code {
  612. flex: 1;
  613. min-width: 0;
  614. font-size: 13px;
  615. font-weight: 600;
  616. color: #475569;
  617. overflow: hidden;
  618. text-overflow: ellipsis;
  619. white-space: nowrap;
  620. }
  621. .bx-page .advance-ticket-status {
  622. flex-shrink: 0;
  623. padding: 4px 11px;
  624. border-radius: 8px;
  625. font-size: 12px;
  626. font-weight: 700;
  627. line-height: 1.25;
  628. white-space: nowrap;
  629. color: #fff;
  630. }
  631. .bx-page .advance-ticket-status--warn {
  632. background: #ea580c;
  633. }
  634. .bx-page .advance-ticket-status--done {
  635. background: #059669;
  636. }
  637. .bx-page .advance-ticket-status--err {
  638. background: #dc2626;
  639. }
  640. .bx-page .advance-ticket-status--info {
  641. background: #64748b;
  642. }
  643. .bx-page .advance-ticket-status--processing {
  644. background: #6366f1;
  645. }
  646. .bx-page .advance-ticket-tear {
  647. position: relative;
  648. height: 14px;
  649. background: var(--ticket-skin);
  650. }
  651. .bx-page .advance-ticket-tear::before,
  652. .bx-page .advance-ticket-tear::after {
  653. content: '';
  654. position: absolute;
  655. top: 50%;
  656. width: 14px;
  657. height: 14px;
  658. margin-top: -7px;
  659. border-radius: 50%;
  660. background: var(--ticket-bg);
  661. z-index: 1;
  662. }
  663. .bx-page .advance-ticket-tear::before {
  664. left: -7px;
  665. }
  666. .bx-page .advance-ticket-tear::after {
  667. right: -7px;
  668. }
  669. .bx-page .advance-ticket-tear__line {
  670. position: absolute;
  671. left: 14px;
  672. right: 14px;
  673. top: 50%;
  674. margin-top: -0.5px;
  675. border-top: 1px dashed var(--ticket-dash);
  676. }
  677. .bx-page .advance-ticket-bottom {
  678. padding: 10px 16px 20px;
  679. background: var(--ticket-skin);
  680. border-radius: 0 0 14px 14px;
  681. }
  682. .bx-page .advance-ticket-reason {
  683. margin: 0 0 10px;
  684. font-size: 13px;
  685. font-weight: 500;
  686. line-height: 1.45;
  687. color: #64748b;
  688. display: -webkit-box;
  689. -webkit-line-clamp: 2;
  690. -webkit-box-orient: vertical;
  691. overflow: hidden;
  692. word-break: break-word;
  693. }
  694. .bx-page .advance-ticket-amount {
  695. font-size: 36px;
  696. font-weight: 800;
  697. line-height: 1.05;
  698. color: #0f172a !important;
  699. font-variant-numeric: tabular-nums;
  700. }
  701. /* Detail cards / tabs */
  702. .bx-page .detail-tabs {
  703. display: flex;
  704. background: var(--surface);
  705. border-bottom: 1px solid var(--border);
  706. }
  707. .bx-page .detail-tab {
  708. flex: 1;
  709. text-align: center;
  710. padding: 12px 8px;
  711. font-size: 14px;
  712. font-weight: 600;
  713. color: var(--text-sec);
  714. position: relative;
  715. }
  716. .bx-page .detail-tab.active {
  717. color: var(--primary-dark);
  718. }
  719. .bx-page .detail-tab.active::after {
  720. content: '';
  721. position: absolute;
  722. left: 20%;
  723. right: 20%;
  724. bottom: 0;
  725. height: 2px;
  726. background: var(--primary);
  727. border-radius: 2px;
  728. }
  729. .bx-page .advance-detail-stack {
  730. display: flex;
  731. flex-direction: column;
  732. gap: 12px;
  733. padding-top: 12px;
  734. padding-bottom: 16px;
  735. }
  736. .bx-page .detail-info-card {
  737. background: var(--surface);
  738. border-radius: var(--r);
  739. border: 1px solid var(--border);
  740. box-shadow: var(--shadow);
  741. padding: 6px 16px 10px;
  742. }
  743. .bx-page .detail-info-card__title {
  744. margin: 6px 0 14px;
  745. padding-bottom: 12px;
  746. border-bottom: 1px solid var(--border);
  747. font-size: 13px;
  748. font-weight: 600;
  749. color: var(--text);
  750. }
  751. .bx-page .adv-field {
  752. display: flex;
  753. flex-direction: column;
  754. gap: 6px;
  755. padding: 12px 0;
  756. }
  757. .bx-page .adv-field + .adv-field {
  758. border-top: 1px solid var(--border);
  759. }
  760. .bx-page .adv-field__label {
  761. font-size: 12px;
  762. font-weight: 500;
  763. color: var(--text-muted);
  764. }
  765. .bx-page .adv-field__value {
  766. font-size: 15px;
  767. font-weight: 500;
  768. color: var(--text);
  769. word-break: break-word;
  770. }
  771. .bx-page .adv-field__value--multiline {
  772. font-size: 14px;
  773. font-weight: 400;
  774. white-space: pre-wrap;
  775. color: var(--text-sec);
  776. }
  777. .bx-page .adv-field__value--accent {
  778. color: var(--primary-dark) !important;
  779. font-weight: 700;
  780. font-size: 16px;
  781. }
  782. .bx-page .detail-section-empty {
  783. margin: 0;
  784. padding: 12px;
  785. font-size: 13px;
  786. color: var(--text-muted);
  787. text-align: center;
  788. background: var(--bg);
  789. border-radius: var(--rs);
  790. border: 1px dashed var(--border);
  791. }
  792. /* Approval flow */
  793. .bx-page .flow-step {
  794. display: flex;
  795. align-items: flex-start;
  796. gap: 12px;
  797. padding-bottom: 16px;
  798. position: relative;
  799. }
  800. .bx-page .flow-step:last-child {
  801. padding-bottom: 0;
  802. }
  803. .bx-page .flow-step:not(:last-child)::after {
  804. content: '';
  805. position: absolute;
  806. left: 15px;
  807. top: 32px;
  808. bottom: 0;
  809. width: 2px;
  810. background: var(--border);
  811. }
  812. .bx-page .flow-avatar {
  813. width: 32px;
  814. height: 32px;
  815. border-radius: 50%;
  816. display: flex;
  817. align-items: center;
  818. justify-content: center;
  819. font-size: 12px;
  820. font-weight: 700;
  821. color: #fff;
  822. flex-shrink: 0;
  823. }
  824. .bx-page .flow-avatar.av-done {
  825. background: var(--primary);
  826. }
  827. .bx-page .flow-avatar.av-current {
  828. background: var(--warning);
  829. }
  830. .bx-page .flow-avatar.av-reject {
  831. background: var(--danger);
  832. }
  833. .bx-page .flow-avatar.av-pending {
  834. background: var(--border);
  835. color: var(--text-muted);
  836. }
  837. .bx-page .flow-info {
  838. flex: 1;
  839. }
  840. .bx-page .flow-name {
  841. font-size: 13px;
  842. font-weight: 600;
  843. }
  844. .bx-page .flow-role,
  845. .bx-page .flow-time {
  846. font-size: 11px;
  847. color: var(--text-muted);
  848. }
  849. .bx-page .adv-flow-opinion {
  850. font-size: 12px;
  851. color: var(--text-sec);
  852. margin-top: 6px;
  853. line-height: 1.45;
  854. word-break: break-word;
  855. }
  856. /* Reimburse apply: detail lines + pickers */
  857. .bx-page .detail-line-no {
  858. font-weight: 500;
  859. color: var(--text-muted);
  860. font-size: 12px;
  861. }
  862. .bx-page .detail-line .detail-divider {
  863. height: 1px;
  864. background: var(--border);
  865. margin: 12px 0;
  866. }
  867. .bx-page .detail-line-actions {
  868. text-align: right;
  869. margin-top: 4px;
  870. }
  871. .bx-page .detail-actions {
  872. display: flex;
  873. justify-content: space-between;
  874. align-items: center;
  875. margin-top: 12px;
  876. padding-top: 12px;
  877. border-top: 1px dashed var(--border);
  878. gap: 8px;
  879. }
  880. .bx-page .total-amount {
  881. font-size: 14px;
  882. color: var(--text-sec);
  883. flex-shrink: 0;
  884. }
  885. .bx-page .total-amount b {
  886. color: var(--primary-dark);
  887. font-size: 16px;
  888. }
  889. .bx-page .picker-trigger {
  890. display: flex;
  891. align-items: center;
  892. justify-content: space-between;
  893. min-height: 42px;
  894. padding: 8px 12px;
  895. border: 1.5px solid var(--border);
  896. border-radius: var(--rs);
  897. background: var(--surface);
  898. box-sizing: border-box;
  899. }
  900. .bx-page .picker-trigger:active {
  901. background: var(--bg);
  902. }
  903. .bx-page .picker-trigger .value {
  904. font-size: 14px;
  905. font-weight: 600;
  906. color: var(--text);
  907. overflow: hidden;
  908. text-overflow: ellipsis;
  909. white-space: nowrap;
  910. }
  911. .bx-page .picker-trigger .ph {
  912. color: var(--text-muted);
  913. font-weight: 600;
  914. }
  915. .bx-page .picker-trigger .arrow {
  916. color: var(--text-muted);
  917. flex-shrink: 0;
  918. margin-left: 8px;
  919. font-size: 16px;
  920. }
  921. .bx-page .form-tip {
  922. font-size: 12px;
  923. color: var(--text-muted);
  924. margin: 8px 0 0;
  925. line-height: 1.45;
  926. }
  927. .bx-page .invoice-balance-tip {
  928. font-size: 13px;
  929. color: var(--text-sec);
  930. margin: 0 0 10px;
  931. line-height: 1.5;
  932. }
  933. .bx-page .invoice-balance-tip--warn {
  934. color: #dc2626;
  935. margin-left: 4px;
  936. }
  937. .bx-page .invoice-picked-row {
  938. margin-top: 12px;
  939. display: flex;
  940. flex-direction: column;
  941. gap: 8px;
  942. }
  943. .bx-page .invoice-picked-item {
  944. display: flex;
  945. align-items: center;
  946. justify-content: space-between;
  947. gap: 8px;
  948. padding: 10px 12px;
  949. border: 1px solid var(--border);
  950. border-radius: var(--rs);
  951. background: var(--bg);
  952. }
  953. .bx-page .invoice-picked-item__meta {
  954. flex: 1;
  955. min-width: 0;
  956. }
  957. .bx-page .invoice-picked-item__name {
  958. display: block;
  959. font-size: 13px;
  960. font-weight: 600;
  961. overflow: hidden;
  962. text-overflow: ellipsis;
  963. white-space: nowrap;
  964. }
  965. .bx-page .invoice-picked-item__amt {
  966. font-size: 12px;
  967. color: var(--text-sec);
  968. margin-top: 2px;
  969. }
  970. .bx-page .invoice-picked-item__remove {
  971. flex-shrink: 0;
  972. width: 28px;
  973. height: 28px;
  974. line-height: 28px;
  975. text-align: center;
  976. border-radius: 50%;
  977. background: rgba(15, 23, 42, 0.45);
  978. color: #fff;
  979. font-size: 16px;
  980. }
  981. .bx-page .bx-sheet-mask {
  982. position: fixed;
  983. inset: 0;
  984. z-index: 1000;
  985. background: rgba(15, 23, 42, 0.45);
  986. display: flex;
  987. align-items: flex-end;
  988. }
  989. .bx-page .bx-sheet {
  990. width: 100%;
  991. max-height: 70vh;
  992. background: var(--surface);
  993. border-radius: 16px 16px 0 0;
  994. display: flex;
  995. flex-direction: column;
  996. overflow: hidden;
  997. }
  998. .bx-page .bx-sheet__title {
  999. padding: 14px 16px;
  1000. font-size: 16px;
  1001. font-weight: 700;
  1002. border-bottom: 1px solid var(--border);
  1003. text-align: center;
  1004. }
  1005. .bx-page .bx-sheet__body {
  1006. flex: 1;
  1007. overflow-y: auto;
  1008. padding: 8px 0;
  1009. max-height: 50vh;
  1010. }
  1011. .bx-page .bx-sheet__item {
  1012. padding: 12px 16px;
  1013. font-size: 14px;
  1014. border-bottom: 1px solid var(--border);
  1015. display: flex;
  1016. align-items: center;
  1017. justify-content: space-between;
  1018. gap: 8px;
  1019. }
  1020. .bx-page .bx-sheet__item.is-selected {
  1021. background: var(--primary-bg);
  1022. color: var(--primary-dark);
  1023. font-weight: 600;
  1024. }
  1025. .bx-page .bx-sheet__item-sub {
  1026. font-size: 12px;
  1027. color: var(--text-muted);
  1028. margin-top: 2px;
  1029. }
  1030. .bx-page .bx-sheet__footer {
  1031. padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  1032. border-top: 1px solid var(--border);
  1033. }
  1034. .bx-page .bx-sheet__empty {
  1035. padding: 28px 16px;
  1036. text-align: center;
  1037. color: var(--text-muted);
  1038. font-size: 13px;
  1039. }
  1040. .bx-page .reimburse-detail-group + .reimburse-detail-group {
  1041. margin-top: 12px;
  1042. padding-top: 12px;
  1043. border-top: 1px dashed var(--border);
  1044. }
  1045. .bx-page .reimburse-detail-head {
  1046. font-size: 12px;
  1047. font-weight: 600;
  1048. color: var(--text-muted);
  1049. margin-bottom: 8px;
  1050. }
  1051. .bx-page .reimburse-detail-total-row {
  1052. margin-top: 12px;
  1053. padding-top: 12px;
  1054. border-top: 1px solid var(--border);
  1055. }
  1056. /* 我的/全部:业务类型切换卡片 */
  1057. .bx-page .mine-type-tabs.stat-scroll {
  1058. display: flex;
  1059. justify-content: center;
  1060. align-items: stretch;
  1061. gap: 12px;
  1062. padding: 10px 16px 8px;
  1063. overflow-x: visible;
  1064. }
  1065. .bx-page .mine-type-tabs .stat-card {
  1066. flex-shrink: 0;
  1067. width: auto;
  1068. min-width: 120px;
  1069. padding: 16px 22px;
  1070. border: none;
  1071. border-radius: var(--r);
  1072. background: var(--surface);
  1073. box-shadow: var(--shadow);
  1074. display: flex;
  1075. align-items: center;
  1076. justify-content: center;
  1077. }
  1078. .bx-page .mine-type-tabs--triple .stat-card {
  1079. min-width: 100px;
  1080. padding: 14px 14px;
  1081. }
  1082. .bx-page .mine-type-tabs .stat-card.active {
  1083. background: var(--primary-bg);
  1084. }
  1085. .bx-page .mine-type-tabs .stat-card .label {
  1086. font-size: 16px;
  1087. font-weight: 600;
  1088. color: var(--text);
  1089. }
  1090. .bx-page .mine-type-tabs--triple .stat-card .label {
  1091. font-size: 15px;
  1092. }
  1093. .bx-page .mine-type-tabs .stat-card.active .label {
  1094. color: var(--primary-dark);
  1095. }
  1096. .bx-page .all-list-card__bottom {
  1097. justify-content: flex-end;
  1098. }
  1099. /* —— 发票夹 wallet summary / cards —— */
  1100. .bx-page .wallet-summary.card,
  1101. .bx-page .wallet-summary {
  1102. margin: 12px 16px 8px;
  1103. padding: 14px 16px;
  1104. background: var(--surface);
  1105. border-radius: var(--r);
  1106. box-shadow: var(--shadow);
  1107. }
  1108. .bx-page .wallet-summary__row {
  1109. display: flex;
  1110. justify-content: space-between;
  1111. align-items: center;
  1112. padding: 4px 0;
  1113. font-size: 14px;
  1114. color: var(--text-sec);
  1115. }
  1116. .bx-page .wallet-summary__val {
  1117. font-weight: 700;
  1118. color: var(--text);
  1119. font-variant-numeric: tabular-nums;
  1120. }
  1121. .bx-page .wallet-summary__row--em .wallet-summary__val,
  1122. .bx-page .wallet-summary__row--em b {
  1123. color: var(--primary);
  1124. font-size: 18px;
  1125. }
  1126. .bx-page .wallet-summary__meta {
  1127. margin-top: 8px;
  1128. font-size: 12px;
  1129. color: var(--text-muted);
  1130. }
  1131. .bx-page .wallet-actions {
  1132. padding: 0 16px 8px;
  1133. }
  1134. .bx-page .wallet-list {
  1135. padding-top: 5px;
  1136. padding-bottom: 16px;
  1137. box-sizing: border-box;
  1138. }
  1139. .bx-page .invoice-wallet-card {
  1140. position: relative;
  1141. overflow: hidden;
  1142. padding-top: 20px;
  1143. }
  1144. .bx-page .invoice-wallet-card--static:active {
  1145. transform: none;
  1146. }
  1147. .bx-page .invoice-wallet-card__index {
  1148. position: absolute;
  1149. top: 0;
  1150. left: 0;
  1151. z-index: 1;
  1152. min-width: 28px;
  1153. height: 22px;
  1154. padding: 0 8px;
  1155. display: inline-flex;
  1156. align-items: center;
  1157. justify-content: center;
  1158. border-radius: 0 0 10px 0;
  1159. background: var(--primary-dark);
  1160. color: #fff;
  1161. font-size: 12px;
  1162. font-weight: 700;
  1163. line-height: 1;
  1164. font-variant-numeric: tabular-nums;
  1165. box-sizing: border-box;
  1166. }
  1167. .bx-page .invoice-wallet-card__subs {
  1168. display: flex;
  1169. flex-direction: column;
  1170. gap: 6px;
  1171. margin: 4px 0 10px;
  1172. }
  1173. .bx-page .invoice-wallet-card__sub {
  1174. display: flex;
  1175. justify-content: space-between;
  1176. gap: 12px;
  1177. font-size: 13px;
  1178. line-height: 1.4;
  1179. }
  1180. .bx-page .invoice-wallet-card__sub .k {
  1181. flex-shrink: 0;
  1182. color: var(--text-muted);
  1183. }
  1184. .bx-page .invoice-wallet-card__sub .v {
  1185. min-width: 0;
  1186. text-align: right;
  1187. color: var(--text);
  1188. word-break: break-word;
  1189. }
  1190. .bx-page .invoice-wallet-card__att-label {
  1191. margin-bottom: 6px;
  1192. font-size: 12px;
  1193. color: var(--text-muted);
  1194. }
  1195. .bx-page .invoice-wallet-card__att-empty {
  1196. margin: 0;
  1197. font-size: 12px;
  1198. color: var(--text-muted);
  1199. }
  1200. .bx-page .advance-att-grid {
  1201. margin-top: 0;
  1202. }
  1203. .bx-page .advance-att-tile:active {
  1204. opacity: 0.92;
  1205. }
  1206. .bx-page .att-preview-loading {
  1207. width: 100%;
  1208. height: 100%;
  1209. display: flex;
  1210. align-items: center;
  1211. justify-content: center;
  1212. background: var(--bg);
  1213. color: var(--text-muted);
  1214. font-size: 12px;
  1215. }
  1216. .bx-page .att-file-icon.att-doc-thumb {
  1217. width: 100%;
  1218. height: 100%;
  1219. display: flex;
  1220. flex-direction: column;
  1221. align-items: center;
  1222. justify-content: center;
  1223. gap: 4px;
  1224. padding: 6px 4px;
  1225. box-sizing: border-box;
  1226. }
  1227. .bx-page .att-doc-thumb__ext {
  1228. font-size: 11px;
  1229. font-weight: 800;
  1230. color: var(--primary-dark);
  1231. letter-spacing: 0.02em;
  1232. }
  1233. .bx-page .att-doc-thumb__name {
  1234. font-size: 10px;
  1235. color: var(--text-muted);
  1236. text-align: center;
  1237. line-height: 1.25;
  1238. overflow: hidden;
  1239. text-overflow: ellipsis;
  1240. display: -webkit-box;
  1241. -webkit-line-clamp: 2;
  1242. -webkit-box-orient: vertical;
  1243. word-break: break-word;
  1244. }
  1245. .bx-page .invoice-admin-card__bottom {
  1246. justify-content: flex-end;
  1247. margin-top: 10px;
  1248. }
  1249. .bx-page .empty-state--embed {
  1250. padding: 28px 16px;
  1251. min-height: 120px;
  1252. }
  1253. .bx-page .att-img.att-add {
  1254. display: flex;
  1255. align-items: center;
  1256. justify-content: center;
  1257. border-style: dashed;
  1258. color: var(--text-muted);
  1259. font-size: 28px;
  1260. line-height: 1;
  1261. }
  1262. .bx-page .form-hint {
  1263. display: block;
  1264. font-size: 11px;
  1265. color: var(--text-muted);
  1266. margin: 0 0 8px;
  1267. line-height: 1.4;
  1268. }
  1269. .bx-page .bx-upload-sheet .dialog-form-body {
  1270. padding: 8px 16px 4px;
  1271. }
  1272. .bx-page .bx-upload-sheet .form-item {
  1273. margin-bottom: 12px;
  1274. }
  1275. .bx-page .bx-upload-sheet .form-label {
  1276. display: block;
  1277. font-size: 13px;
  1278. color: var(--text-sec);
  1279. margin-bottom: 6px;
  1280. }
  1281. .bx-page .bx-upload-sheet .form-input {
  1282. width: 100%;
  1283. height: 40px;
  1284. padding: 0 12px;
  1285. border: 1px solid var(--border);
  1286. border-radius: var(--rs);
  1287. background: var(--bg);
  1288. box-sizing: border-box;
  1289. font-size: 14px;
  1290. }
  1291. .bx-page .bx-upload-sheet .form-input-prefix {
  1292. position: relative;
  1293. }
  1294. .bx-page .bx-upload-sheet .form-input-prefix .form-input {
  1295. padding-left: 28px;
  1296. }
  1297. /* ---- Batch6: expense tree + workflow config ---- */
  1298. .bx-page .section-title {
  1299. display: flex;
  1300. align-items: center;
  1301. gap: 8px;
  1302. margin: 14px 0 10px;
  1303. font-size: 14px;
  1304. font-weight: 800;
  1305. color: var(--text);
  1306. }
  1307. .bx-page .section-title::before {
  1308. content: '';
  1309. width: 3px;
  1310. height: 14px;
  1311. border-radius: 2px;
  1312. background: var(--primary);
  1313. flex-shrink: 0;
  1314. }
  1315. .bx-page .card-list {
  1316. display: flex;
  1317. flex-direction: column;
  1318. gap: 10px;
  1319. padding-bottom: 72px;
  1320. }
  1321. .bx-page .tree-card {
  1322. background: var(--surface);
  1323. border: 1px solid var(--border);
  1324. border-radius: var(--r);
  1325. box-shadow: var(--shadow);
  1326. overflow: hidden;
  1327. }
  1328. .bx-page .tree-head {
  1329. display: flex;
  1330. align-items: center;
  1331. justify-content: space-between;
  1332. gap: 8px;
  1333. padding: 12px 14px;
  1334. background: linear-gradient(135deg, var(--primary-bg), #fff);
  1335. }
  1336. .bx-page .tree-head__left {
  1337. display: flex;
  1338. align-items: center;
  1339. gap: 8px;
  1340. min-width: 0;
  1341. flex: 1;
  1342. }
  1343. .bx-page .tree-head__title {
  1344. font-size: 14px;
  1345. font-weight: 800;
  1346. color: var(--text);
  1347. overflow: hidden;
  1348. text-overflow: ellipsis;
  1349. white-space: nowrap;
  1350. }
  1351. .bx-page .tree-head__tags {
  1352. display: flex;
  1353. gap: 4px;
  1354. align-items: center;
  1355. flex-shrink: 0;
  1356. }
  1357. .bx-page .tree-twisty {
  1358. width: 22px;
  1359. height: 22px;
  1360. border-radius: 7px;
  1361. display: flex;
  1362. align-items: center;
  1363. justify-content: center;
  1364. background: rgba(16, 185, 129, 0.1);
  1365. color: var(--primary-dark);
  1366. font-size: 16px;
  1367. font-weight: 700;
  1368. line-height: 1;
  1369. transition: transform 0.15s;
  1370. flex-shrink: 0;
  1371. transform: rotate(0deg);
  1372. }
  1373. .bx-page .tree-twisty.expanded {
  1374. transform: rotate(90deg);
  1375. }
  1376. .bx-page .tree-body {
  1377. border-top: 1px solid var(--border);
  1378. }
  1379. .bx-page .tree-meta-grid {
  1380. display: grid;
  1381. grid-template-columns: repeat(3, 1fr);
  1382. gap: 6px;
  1383. padding: 8px 14px;
  1384. background: var(--bg);
  1385. }
  1386. .bx-page .tree-meta-cell .k {
  1387. display: block;
  1388. font-size: 11px;
  1389. color: var(--text-muted);
  1390. }
  1391. .bx-page .tree-meta-cell .v {
  1392. display: block;
  1393. font-size: 13px;
  1394. font-weight: 500;
  1395. color: var(--text);
  1396. margin-top: 2px;
  1397. word-break: break-all;
  1398. }
  1399. .bx-page .tree-child-card {
  1400. margin: 0 14px 10px;
  1401. border-left: 3px solid var(--primary);
  1402. }
  1403. .bx-page .op-card {
  1404. background: var(--surface);
  1405. border: 1px solid var(--border);
  1406. border-radius: var(--r);
  1407. box-shadow: var(--shadow);
  1408. padding: 14px;
  1409. }
  1410. .bx-page .op-card-head {
  1411. display: flex;
  1412. align-items: flex-start;
  1413. justify-content: space-between;
  1414. gap: 10px;
  1415. }
  1416. .bx-page .op-card-title {
  1417. font-size: 14px;
  1418. font-weight: 800;
  1419. line-height: 1.3;
  1420. flex: 1;
  1421. min-width: 0;
  1422. }
  1423. .bx-page .op-card-sub {
  1424. margin-top: 4px;
  1425. font-size: 12px;
  1426. color: var(--text-muted);
  1427. display: flex;
  1428. gap: 10px;
  1429. flex-wrap: wrap;
  1430. }
  1431. .bx-page .op-card-body {
  1432. padding: 10px 0 0;
  1433. }
  1434. .bx-page .tree-body > .op-card-body {
  1435. padding: 10px 14px;
  1436. }
  1437. .bx-page .tag {
  1438. display: inline-flex;
  1439. align-items: center;
  1440. padding: 2px 8px;
  1441. border-radius: 8px;
  1442. font-size: 11px;
  1443. font-weight: 600;
  1444. border: 1px solid transparent;
  1445. line-height: 1.25;
  1446. }
  1447. .bx-page .tag-neutral {
  1448. background: #f1f5f9;
  1449. color: #64748b;
  1450. border-color: rgba(100, 116, 139, 0.15);
  1451. }
  1452. .bx-page .detail-grid {
  1453. display: grid;
  1454. grid-template-columns: 1fr 1fr;
  1455. gap: 12px;
  1456. margin-bottom: 12px;
  1457. }
  1458. .bx-page .detail-item {
  1459. background: var(--surface);
  1460. border: 1px solid var(--border);
  1461. border-radius: var(--rs);
  1462. padding: 10px 12px;
  1463. }
  1464. .bx-page .detail-item .di-label {
  1465. font-size: 11px;
  1466. color: var(--text-muted);
  1467. margin-bottom: 2px;
  1468. }
  1469. .bx-page .detail-item .di-value {
  1470. font-size: 14px;
  1471. font-weight: 500;
  1472. color: var(--text);
  1473. word-break: break-all;
  1474. }
  1475. .bx-page .flow-card {
  1476. background: var(--surface);
  1477. border: 1px solid var(--border);
  1478. border-radius: var(--r);
  1479. padding: 16px;
  1480. margin-bottom: 72px;
  1481. }
  1482. .bx-page .flow-info__head {
  1483. display: flex;
  1484. align-items: center;
  1485. justify-content: space-between;
  1486. gap: 8px;
  1487. }
  1488. .bx-page .form-textarea-counter {
  1489. margin-top: 4px;
  1490. text-align: right;
  1491. font-size: 11px;
  1492. color: var(--text-muted);
  1493. }
  1494. .bx-page .switch-row {
  1495. display: flex;
  1496. align-items: center;
  1497. gap: 10px;
  1498. }
  1499. .bx-page .switch-row__label {
  1500. font-size: 13px;
  1501. color: var(--text-sec);
  1502. }
  1503. .bx-page .field-tip {
  1504. margin-top: 6px;
  1505. font-size: 11px;
  1506. color: var(--warning);
  1507. line-height: 1.4;
  1508. }
  1509. .bx-page .bx-sheet--tall {
  1510. max-height: 85vh;
  1511. }
  1512. .bx-page .bx-sheet__body--form {
  1513. padding: 8px 16px 4px;
  1514. max-height: 60vh;
  1515. }