report.css 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /* 门店检测工作台 —— 单店分析报告(A4 可打印)
  2. 独立样式表:屏幕上是弹层,打印/另存为 PDF 时只留报告正文。
  3. 下载成单文件 HTML 时本文件会被整段内联,所以这里不要引用外部资源。 */
  4. .rp{
  5. --rp-ink:#211a10; --rp-ink2:#5c5241; --rp-ink3:#93876f; --rp-line:#e8dcc0;
  6. --rp-line2:#f2e9d6; --rp-gold:#c8952c; --rp-gold-bg:#fbf4e2; --rp-brown:#a4761c;
  7. --rp-red:#b5563a; --rp-amber:#cd8a35; --rp-green:#5f8d72;
  8. font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  9. color:var(--rp-ink); font-size:12.5px; line-height:1.7;
  10. -webkit-font-smoothing:antialiased;
  11. }
  12. /* ================= 屏幕:弹层 ================= */
  13. .rpwrap{position:fixed;inset:0;z-index:60;display:none;overflow:auto;
  14. background:rgba(38,29,14,.42);backdrop-filter:blur(3px);padding:32px 20px 48px}
  15. .rpwrap.on{display:block}
  16. .rpcard{width:min(880px,100%);margin:0 auto;background:#fff;border-radius:14px;
  17. box-shadow:0 24px 70px rgba(60,44,12,.28);overflow:hidden;animation:rpin .22s ease}
  18. @keyframes rpin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  19. .rptoolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;
  20. padding:12px 20px;background:#fdf8ee;border-bottom:1px solid var(--rp-line)}
  21. .rptoolbar .rpname{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--rp-ink);
  22. overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  23. .rptoolbar .rpsub{font-size:11px;color:var(--rp-ink3);font-weight:400;margin-left:8px}
  24. .rpbtn{font-family:inherit;font-size:12px;padding:7px 14px;border-radius:8px;cursor:pointer;
  25. border:1px solid var(--rp-line);background:#fff;color:var(--rp-ink2);transition:.15s}
  26. .rpbtn:hover{border-color:var(--rp-gold);color:var(--rp-brown)}
  27. .rpbtn.primary{background:linear-gradient(135deg,#eab94e,#d29a29 48%,#b57e15);color:#fff;
  28. border-color:transparent;font-weight:600;box-shadow:0 3px 10px rgba(180,126,21,.26),
  29. inset 0 1px 0 rgba(255,255,255,.32)}
  30. .rpbtn.primary:hover{filter:brightness(1.04)}
  31. .rpbtn.x{width:32px;padding:7px 0;text-align:center;font-size:15px;line-height:1;color:var(--rp-ink3)}
  32. /* ================= 报告正文(屏幕 + 打印 + 下载共用) ================= */
  33. .rpdoc{padding:28px 40px 32px;background:#fff}
  34. /* 报告头:显式 block,避免被 style.css 里的全局 header{display:flex} 带跑偏 */
  35. .rphead{display:block;padding-bottom:16px;border-bottom:1.5px solid var(--rp-gold);position:relative}
  36. .rphead::after{display:none}
  37. .rphead .rpbrand{display:inline-block;background:linear-gradient(135deg,#eab94e,#c8952c 55%,#a4761c);
  38. color:#fff;font-size:10.5px;letter-spacing:1px;padding:3px 10px;border-radius:5px;font-weight:600}
  39. .rphead h1{font-size:20px;font-weight:600;letter-spacing:-.2px;margin:9px 0 6px;line-height:1.3}
  40. .rpmeta{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:11px;color:var(--rp-ink3);letter-spacing:.1px}
  41. .rpmeta b{font-weight:500;color:var(--rp-ink2)}
  42. /* 结论摘要 */
  43. .rpsum{display:flex;flex-wrap:wrap;gap:10px 18px;margin:16px 0 2px;padding:13px 17px;
  44. background:var(--rp-gold-bg);border:1px solid #f0e2c2;border-radius:10px}
  45. .rpsum .rplead{flex:0 0 auto;min-width:132px}
  46. .rpsum .rplead .k{font-size:11px;color:var(--rp-ink3);letter-spacing:.3px}
  47. .rpsum .rplead .v{font-size:26px;font-weight:600;line-height:1.2;margin:2px 0 4px;color:var(--rp-ink)}
  48. .rpsum .rplead .v .u{font-size:12px;font-weight:400;color:var(--rp-ink3);margin-left:6px}
  49. .rpsev{display:inline-block;font-size:11px;padding:2px 9px;border-radius:20px;font-weight:600}
  50. .rpsev.s3{background:#f7e0d7;color:#93401f}
  51. .rpsev.s2{background:#fae8d4;color:#9a5a1c}
  52. .rpsev.s1{background:#f8efd6;color:#8a6a2f}
  53. .rpsev.n{background:#efeade;color:#6b6150}
  54. .rpsev.s0{background:#e9f1ea;color:#4a7458}
  55. .rpstats{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;justify-content:flex-end;flex:1 1 auto}
  56. .rpstats div{text-align:center;min-width:62px}
  57. .rpstats b{display:block;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--rp-ink)}
  58. .rpstats span{font-size:10.5px;color:var(--rp-ink3)}
  59. /* 章节 */
  60. .rpdoc h2{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;
  61. margin:24px 0 12px;padding-left:11px;position:relative;letter-spacing:.1px;
  62. break-after:avoid;page-break-after:avoid;break-inside:avoid}
  63. .rpdoc h2::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;
  64. border-radius:2px;background:var(--rp-gold)}
  65. .rpdoc h2 .n{color:var(--rp-gold);font-weight:600}
  66. /* 指标条 */
  67. .rpmetrics{display:grid;grid-template-columns:1fr 1fr;gap:2px 30px}
  68. .rpbar{margin:7px 0;break-inside:avoid}
  69. .rpbar .lab{display:flex;justify-content:space-between;font-size:11px;color:var(--rp-ink3)}
  70. .rpbar .lab b{font-weight:500;color:var(--rp-ink2);font-variant-numeric:tabular-nums}
  71. .rpbar .track{position:relative;height:6px;background:#f5ecda;border-radius:4px;margin-top:6px}
  72. .rpbar .fill{height:100%;border-radius:4px}
  73. .rpbar .mk{position:absolute;top:-3px;width:1.5px;height:12px;background:#c6b48c}
  74. .rpbar .mk.t{background:var(--rp-green)}
  75. .rplegend{margin-top:12px;font-size:10.5px;color:var(--rp-ink3)}
  76. .rplegend i{display:inline-block;width:1.5px;height:10px;background:#c6b48c;margin:0 4px 0 12px;vertical-align:-1px}
  77. .rplegend i.t{background:var(--rp-green)}
  78. /* 风险条目(表格样式自带全,不依赖 style.css,保证下载的单文件 HTML 长得一样) */
  79. .rpflags{width:100%;border-collapse:collapse;font-size:11.5px}
  80. .rpflags th{text-align:left;font-weight:500;font-size:10.5px;color:#8a7548;letter-spacing:.3px;
  81. padding:6px 0 7px;background:#fdf9ee;border-bottom:1px solid #e8d8b2;border-radius:0;white-space:nowrap}
  82. .rpflags th:first-child{padding-left:2px}
  83. .rpflags th:last-child{padding-left:12px}
  84. .rpflags td{padding:7px 0;border-bottom:1px solid var(--rp-line2);vertical-align:top}
  85. .rpflags tr:last-child td{border-bottom:0}
  86. .rpflags td.no{width:26px;color:var(--rp-ink3);font-variant-numeric:tabular-nums}
  87. .rpflags td.act{color:var(--rp-ink2);width:44%;padding-left:12px}
  88. .rpdx{margin:0 0 11px;padding:10px 13px;background:#fdfaf3;border-left:3px solid var(--rp-gold);
  89. border-radius:0 8px 8px 0;font-size:11.5px;line-height:1.7;color:var(--rp-ink2)}
  90. .rpflag{display:inline-block;font-size:9.5px;color:#93401f;background:#f7e0d7;
  91. padding:1px 6px;border-radius:4px;margin-left:7px;vertical-align:1px;font-weight:600}
  92. .rptag{display:inline-block;padding:1px 7px;border-radius:5px;font-size:10.5px}
  93. .rptag.R3{background:#f7e0d7;color:#93401f}
  94. .rptag.R2{background:#fae8d4;color:#9a5a1c}
  95. .rptag.R1{background:#f8efd6;color:#8a6a2f}
  96. .rptag.B{background:#f0e6d0;color:#5f4b28}
  97. .rptag.T{background:#efeade;color:#6b6150}
  98. /* 数据小卡 */
  99. .rpgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
  100. .rpgrid div{padding:9px 11px;background:#fdfaf3;border:1px solid var(--rp-line2);border-radius:8px}
  101. .rpgrid .k{font-size:10.5px;color:var(--rp-ink3);letter-spacing:.2px}
  102. .rpgrid .v{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:2px}
  103. .rpgrid .v small{font-size:10.5px;font-weight:400;color:var(--rp-ink3);margin-left:3px}
  104. /* 洞察 / 动作 */
  105. .rpol{padding-left:0;margin:0}
  106. .rpol li{list-style:none;position:relative;padding:2px 0 6px 24px;font-size:11.5px;line-height:1.75;
  107. color:var(--rp-ink2);break-inside:avoid}
  108. .rpol li .idx{position:absolute;left:0;top:3px;width:17px;height:17px;border-radius:50%;
  109. background:var(--rp-gold-bg);color:var(--rp-brown);font-size:10px;font-weight:600;
  110. text-align:center;line-height:17px;font-variant-numeric:tabular-nums}
  111. .rpacts{margin:0;padding:0;background:#fdfaf3;border:1px solid var(--rp-line2);
  112. border-radius:9px;padding:13px 16px}
  113. .rpacts li{list-style:none;position:relative;padding:3px 0 8px 24px;font-size:11.5px;line-height:1.75;
  114. color:var(--rp-ink2);break-inside:avoid}
  115. .rpacts li:last-child{padding-bottom:2px}
  116. .rpacts li .ic{position:absolute;left:0;top:3px;font-size:11px;color:var(--rp-green)}
  117. .rpmuted{color:var(--rp-ink3);font-size:11.5px}
  118. .rpfoot{margin-top:28px;padding-top:12px;border-top:1px solid var(--rp-line2);
  119. font-size:10px;color:var(--rp-ink3);line-height:1.8;letter-spacing:.1px}
  120. /* ================= 打印 / 另存为 PDF ================= */
  121. @page{size:A4;margin:14mm}
  122. @media print{
  123. html,body{background:#fff !important}
  124. body.rp-on .wrap,
  125. body.rp-on .rail,
  126. body.rp-on .overlay,
  127. body.rp-on .drawer,
  128. body.rp-on .sidepanel,
  129. body.rp-on .toast,
  130. body.rp-on .pvwrap,
  131. body.rp-on .rptoolbar{display:none !important}
  132. body.rp-on .rpwrap{position:static !important;inset:auto;overflow:visible;
  133. background:#fff !important;padding:0;backdrop-filter:none;display:block !important}
  134. .rpcard{width:auto;max-width:none;box-shadow:none;border-radius:0;margin:0;animation:none}
  135. .rpdoc{padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  136. .rpdoc h2{margin-top:16px}
  137. .rpdoc h2 + *{break-before:avoid;page-break-before:avoid}
  138. .rpsum{margin-top:12px}
  139. .rpmetrics,.rpgrid{break-inside:avoid}
  140. }
  141. /* ================= 窄屏(手机上看报告) ================= */
  142. @media (max-width:640px){
  143. .rpwrap{padding:14px 10px 30px}
  144. .rpdoc{padding:22px 18px 26px}
  145. .rphead h1{font-size:18px}
  146. .rpmetrics{grid-template-columns:1fr}
  147. .rpgrid{grid-template-columns:1fr 1fr}
  148. .rpflags td.act{width:auto}
  149. .rptoolbar{padding:10px 12px;flex-wrap:wrap}
  150. .rptoolbar .rpname{flex:1 0 100%;margin-bottom:4px}
  151. }